<<>> <> <> <> <> <> <> <<>> DIRECTORY IO USING [STREAM], PopUpButtons USING [ChoiceList, Class, Image], Rope USING [ROPE], ViewerEvents USING [EventRegistration], XNS USING [Address, unknownAddress], XNSCHACL USING [AccessList], XNSAuth USING [Identity], XNSCH USING [Item, Name]; MaintainDefs: CEDAR DEFINITIONS = { ROPE: TYPE = Rope.ROPE; Name: TYPE = XNSCH.Name; NameRef: TYPE = REF Name; NameList: TYPE = LIST OF NameRef; Item: TYPE = XNSCH.Item; AccessList: TYPE = XNSCHACL.AccessList; Identity: TYPE = XNSAuth.Identity; Class: TYPE = { individual, group, dead, any }; Level: TYPE = { normal, owner, admin, wizard }; Command: TYPE = { type, isMember, set, add, remove, misc, create, delete, nullCmd }; What: TYPE = { matches, members, summary, details, domains, organizations, finks, direct, extended, occurrences, password, simple, individualRemark, groupRemark, fileService, alias, self, member, owner, friend, mailbox, forwarding, createIndividual, createGroup, delete, domainsServed }; all: CARD32 ~ 0; nullProperty: CARD32 ~ 37777777777B; busyName: ROPE = "Maintain [Busy]"; busyLabel: ROPE = "Maintain Busy..."; doneName: ROPE = "Maintain"; doneLabel: ROPE = "Maintain"; MyData: TYPE = REF MyDataObject; MyDataObject: TYPE = MONITORED RECORD [ --new--parent: REF ANY ¬ NIL, --new--mainSubContainer: REF ANY ¬ NIL, flavor: ATOM, moreData: REF ANY ¬ NIL, cmdData: REF ANY ¬ NIL, in: IO.STREAM, out: IO.STREAM, destructionEvent: ViewerEvents.EventRegistration, level: Level ¬ normal, verify: REF ATOM ¬ NIL, quote: REF ATOM ¬ NIL, identity: Identity ¬ NIL, conversationAddress: XNS.Address ¬ XNS.unknownAddress, topChild, kids, groupT, dataGT, scratchGT, serverT, script: REF ANY ¬ NIL, scratchRope: ROPE, maxW: INTEGER, buttH: INTEGER, stop: BOOL ¬ FALSE, firstTime: BOOL ¬ TRUE, nArgs: CARD ¬ 0, argList: LIST OF ROPE, verbose: BOOL ¬ FALSE, autoDelete: BOOL ¬ FALSE, debugSwitch: BOOL ¬ FALSE, displayScratch: BOOL ¬ TRUE--, <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> ]; Part: TYPE ~ {height, width, x, y}; CmdButton: TYPE = RECORD [ doc: ROPE, cmd: Command, what: What, class: Class, level: Level, nextLine: BOOL ¬ FALSE, doEnumerate: BOOL ¬ TRUE, guarded: BOOL ¬ FALSE ]; CmdRef: TYPE = REF CmdRec; CmdRec: TYPE = RECORD [ d: MyData, cb: CmdButton ]; <> ClassList: TYPE = LIST OF PopUpButtons.Class; cmdButtons: ClassList; ImagedClassList: TYPE ~ LIST OF ImagedClass; ImagedClass: TYPE ~ RECORD [class: PopUpButtons.Class, normal, inverted: PopUpButtons.Image]; SelectorClass: TYPE = REF SelectorClassRec; SelectorClassRec: TYPE = RECORD[ name: ROPE, change: PROC [parent: REF ANY --Viewer--, clientData: REF, value: ATOM], classes: ImagedClassList, values: LIST OF ATOM ]; SelectorInstance: TYPE ~ REF SelectorInstanceRec; SelectorInstanceRec: TYPE ~ RECORD [ clientData: REF ANY, value: REF ATOM, buttons: LIST OF REF ANY, class: SelectorClass ]; matchesChoices: PopUpButtons.ChoiceList; membersChoices: PopUpButtons.ChoiceList; addMemberChoices: PopUpButtons.ChoiceList; deleteMemberChoices: PopUpButtons.ChoiceList; summaryChoices: PopUpButtons.ChoiceList; detailChoices: PopUpButtons.ChoiceList; createChoices: PopUpButtons.ChoiceList; setChoices: PopUpButtons.ChoiceList; removeChoices: PopUpButtons.ChoiceList; levelClass: SelectorClass; verifyClass: SelectorClass; quoteClass: SelectorClass; logName: ROPE; verboseClassLabel: ROPE; autoDeleteClassLabel: ROPE; debugSwitchClassLabel: ROPE; verboseClass: PopUpButtons.Class; autoDeleteClass: PopUpButtons.Class; debugSwitchClass: PopUpButtons.Class; setServerClass: PopUpButtons.Class; maintainDataProp: ATOM; RegisterProc: PROC[flavor: ATOM, procType: ATOM, proc: PROC ANY RETURNS ANY]; RetrieveProc: PROC[flavor: ATOM, procType: ATOM] RETURNS [PROC ANY RETURNS ANY]; }.