<> <> <> <> <> <> <<(Changed functionality and removed some unnecessary operations)>> DIRECTORY Menus USING [Menu, MenuProc], Rope USING [ROPE], TiogaButtons USING [TiogaButton], ViewerClasses USING [Viewer], ViewerEvents USING [EventRegistration], WalnutWindowInternal USING [MsgSetButton]; WalnutMsgSetDisplayerPrivate: CEDAR DEFINITIONS = BEGIN TiogaButton: TYPE = TiogaButtons.TiogaButton; Viewer: TYPE = ViewerClasses.Viewer; ROPE: TYPE = Rope.ROPE; MsgSetButton: TYPE = WalnutWindowInternal.MsgSetButton; displayerMenu: Menus.Menu; activeMenu: Menus.Menu; deletedMenu: Menus.Menu; buildingMenu: Menus.Menu; readOnlyMenu: Menus.Menu; MsgSetInfo: TYPE = REF MsgSetInfoRec; MsgSetInfoRec: TYPE = RECORD [ button: MsgSetButton, -- the message set button in the control panel that this message set is bound to tiogaViewer: Viewer, -- only child, $TiogaButton viewer container: Viewer, -- back pointer to msgSet viewer selected: MsgSetFieldHandle, lastMFH: MsgSetFieldHandle, destroyER: ViewerEvents.EventRegistration ]; MsgSetFieldHandle: TYPE = REF MsgSetFieldHandleRec; MsgSetFieldHandleRec: TYPE = RECORD[ next, prev: MsgSetFieldHandle, iButton: TiogaButton, -- the entire node, no length hbrButton: TiogaButton, -- HasBeenReadButton tocButton: TiogaButton, -- TableOfContentsButton container: Viewer, -- back pointer to msgSet viewewr msgInfo: MsgInfo -- constant for a message ]; MsgInfo: TYPE = REF MsgInfoRec; MsgInfoRec: TYPE = RECORD[ msg, tocName: ROPE, startOfSubject: INT, hasBeenRead: BOOL ]; <<>> <> <<>> AddProc: Menus.MenuProc; CategoriesProc: Menus.MenuProc; DeleteProc: Menus.MenuProc; DisplayProc: Menus.MenuProc; MoveToProc: Menus.MenuProc; NewMailProc: Menus.MenuProc; PrintSelectedProc: Menus.MenuProc; END.