<> <> <> <> <> <<>> DIRECTORY AtomButtonsTypes, Buttons, Imager, Menus, Rope, TiogaButtons, ViewerClasses; AtomButtons: CEDAR DEFINITIONS = BEGIN HandleButtonProc: TYPE = AtomButtonsTypes.HandleButtonProc; UpdateProc: TYPE = AtomButtonsTypes.InitButtonProc; Viewer: TYPE = ViewerClasses.Viewer; ConfirmProc: TYPE = AtomButtonsTypes.ConfirmProc; InitButtonProc: TYPE = AtomButtonsTypes.InitButtonProc; <> <<>> Action: TYPE = LIST OF REF ANY; ButtonType: TYPE = {button, label, text, popUpButton}; PopUpChoices: TYPE = LIST OF PopUpChoice; PopUpChoice: TYPE = RECORD [action: LIST OF REF ANY, actionImage: Rope.ROPE, doc: Rope.ROPE, font: Imager.Font _ NIL]; <> ButtonLineEntry: TYPE = RECORD [ SELECT type: ButtonType FROM button => [name: Rope.ROPE, actions: LIST OF Action, wxRelative: INTEGER _ -1, border: BOOL _ FALSE, font: Imager.Font _ NIL, confirmProc: ConfirmProc _ NIL, initProc: InitButtonProc _ NIL, ww: NAT _ 0], popUpButton => [name: Rope.ROPE, choices: PopUpChoices, wxRelative: INTEGER _ -1, border: BOOL _ FALSE, font: Imager.Font _ NIL, confirmProc: ConfirmProc _ NIL, initProc: InitButtonProc _ NIL, ww: NAT _ 0], label => [name: Rope.ROPE, initProc: InitButtonProc _ NIL, ww: NAT _ 0, wxRelative: INTEGER _ -1, border: BOOL _ FALSE, font: Imager.Font _ NIL], text => [name: Rope.ROPE, initProc: InitButtonProc _ NIL, ww: NAT _ 0, wxRelative: INTEGER _ -1, border: BOOL _ FALSE, font: Imager.Font _ NIL], ENDCASE ]; <> UnQueuedButtonLineEntry: TYPE = RECORD [name: Rope.ROPE, type: ButtonType, clickProc: Menus.ClickProc, updateProc: UpdateProc _ NIL, ww: NAT _ 0, wxRelative: INTEGER _ -1, border: BOOL _ FALSE, confirmProc: ConfirmProc _ NIL, font: Imager.Font _ NIL]; BuildButtonLine: PROC [container: Viewer, x, y: NAT, clientData: REF ANY, handleProc: HandleButtonProc, entries: LIST OF ButtonLineEntry, horizontalSpace: INTEGER _ 2, lineHeight: INTEGER _ 15] RETURNS [nextX: INTEGER]; <> BuildUnQueuedButtonLine: PROC [container: Viewer, x, y: NAT, clientData: REF ANY, entries: LIST OF UnQueuedButtonLineEntry, horizontalSpace: INTEGER _ 2, lineHeight: INTEGER _ 15] RETURNS [nextX: INTEGER]; <> <> <<>> StateType: TYPE = AtomButtonsTypes.StateType; TwoState: TYPE = REF TwoStateObj; TwoStateObj: TYPE = AtomButtonsTypes.TwoStateObj; BuildTwoStateButton: PROC [viewer: Viewer, x, y: NAT _ 0, clientData: REF ANY, handleProc: HandleButtonProc, name: Rope.ROPE, border: BOOL _ TRUE, init: StateType _ off, action: LIST OF REF ANY, lineHeight: INTEGER _ 15] RETURNS [stateInfo: TwoState, nextX: INTEGER]; <> <<>> SetButtonState: PROC [twoState: TwoState, state: StateType]; GetButtonState: PROC [twoState: TwoState] RETURNS [state: StateType]; <> SwitchState: PROC [handle: TwoState]; ScalarButton: TYPE = RECORD [name: Rope.ROPE, value: REAL, action: LIST OF REF ANY, init: StateType]; ScalarButtonHandle: TYPE = REF ScalarButtonHandleObj; ScalarButtonHandleObj: TYPE = AtomButtonsTypes.ScalarButtonHandleObj; ScalarButtonClient: TYPE = REF ScalarButtonClientObj; ScalarButtonClientObj: TYPE = AtomButtonsTypes.ScalarButtonClientObj; << [Artwork node; type 'ArtworkInterpress on' to command tool] >> BuildScalarButtons: PROC [handle: ScalarButtonHandle, clientData: REF ANY, handleProc: HandleButtonProc, header: Rope.ROPE, scalarButtonList: LIST OF ScalarButton]; <> CreateScalarButtonViewer: PROC [container: Viewer, x, y: NAT, lineHeight: INTEGER _ 15] RETURNS [ScalarButtonHandle]; <> <> Order: TYPE = {incr, decr}; AddValueSorted: PROC [clientData: REF ANY, scalarButtonHandle: ScalarButtonHandle, value: ScalarButton, order: Order _ incr] RETURNS [oldFoundButton: ScalarButtonClient _ NIL]; <> RebuildScalarButtons: PROC [viewer: Viewer, headerButton: TiogaButtons.TiogaButton, clientData: REF ANY, handleProc: HandleButtonProc, scalarButtonList: LIST OF ScalarButton] RETURNS [buttons: ScalarButtonClient]; ButtonList: TYPE = AtomButtonsTypes.ButtonList; EnumTypeRef: TYPE = REF EnumTypeRec; EnumTypeRec: TYPE = AtomButtonsTypes.EnumTypeRec; StyleChoice: TYPE = AtomButtonsTypes.StyleChoice; DisplayStyle: TYPE = AtomButtonsTypes.DisplayStyle; BuildEnumTypeSelection: PROC [viewer: ViewerClasses.Viewer, x, y: NAT, maxWidth: NAT, clientData: REF ANY, handleProc: HandleButtonProc, title: Rope.ROPE, default: Rope.ROPE, borderOnButtons: BOOL, style: StyleChoice, allInOneRow: BOOL, buttonNames: ButtonList, atom: ATOM, horizontalSpace: INTEGER _ 2, lineHeight: INTEGER _ 15] RETURNS [EnumTypeRef]; TimeToFlipThru: PROC [event: LIST OF REF ANY]; END.