ORIGIN 'guienv'; LIB_DEF 'guienvcontrols' '../lib'; BODY 'private/controlsbody'; (* * COPYRIGHT * Copyright (C) Mjolner Informatics, 1991-96 * All rights reserved. *) -- windowLib: attributes -- control: windowitem (* a control is a graphical object in the window that the user can * use to perform actions. All user interaction with the control * that can result in an action should give some kind of visual * feedback. *) (# <<SLOT controlLib: attributes>>; open::< (# create::< (# do ... #); do ... #); eventHandler::< (# onEnabledChanged::< (# ... #); #); close::< (# do ... #); private: @...; #) (* control *); scrollbar: control (* A scrollbar controls the scrolling of a textfield or picture * etc. *) (# <<SLOT scrollbarLib: attributes>>; eventhandler::< (# thumbMoved: event (* is called whenever a user has moved the thumb of * THIS(scrollbar) *) (# amount: @integer; enter amount do ...; #); onThumbMoved:< thumbMoved; pageDown: event (* called when the user clicks in the page down area *) (# do ...; #); onPageDown:< pageDown; pageUp: event (* called when the user clicks in the page up area *) (# do ... #); onPageUp:< pageUp; buttonDown: event (* called when the user clicks at the down button *) (# do ... #); onButtonDown:< buttonDown; buttonUp: event (* called when the user clicks at the up button *) (# do ... #); onButtonUp:< buttonUp; pageScrollAmountChanged: event (* called when the scrollamount is changed *) (# do INNER; #); onPageScrollAmountChanged:< pageScrollAmountChanged; scrollAmountChanged: event (* called when the scrollamount is changed *) (# do INNER; #); onScrollAmountChanged:< scrollAmountChanged; maxValueChanged: event (* called when the max value is changed *) (# do INNER; #); onMaxValueChanged:< maxValueChanged; valueChanged: event (* called when the value is changed *) (# do INNER; #); onValueChanged:< valueChanged; onFrameChanged::< (# do ... #); onRefresh::< (# do ... #); onMouseDown::< (# do ... #); onActivate::< (# do ... #); onDeactivate::< (# do ... #); #); vertical:< (* Specifies if THIS(scrollbar) is vertical, false is the * default value *) booleanValue; scrollAmount: (* scrollAmount is the amount the scrollbars thumb will move, * when the user clicks in the up button or in the down button *) (# value: @integer enter (# enter value do ... #) exit (# do ... exit value #) #); pageScrollAmount: (* pageScrollAmount is the amount the scrollbars thumb will * move, when the user clicks in the page down or page up area *) (# value: @integer; enter (# enter value do ... #) exit (# do ... exit value #) #); maxValue: (* this combines setMaxValue and getMaxValue. Evaluate the * enter part to set the maximum value and evaluate the exit * part to get the maximum value *) (# value: @integer enter (# enter value do ... #) exit (# do ... exit value #) #); value: (* evaluate the enter part to set the value and evaluate the * exit part to the maximum value. The thumb of the scrollbar * is drawn acording to maxValue and the current value. That * is, if maxValue is 100 and value is 50, the thumb will be * drawn in the middle of the scrollbar *) (# pos: @integer; enter (# enter pos do ... #) exit (# do ... exit pos #) #); length: (* the length is either the height or the width of the frame * depending of the orientation *) (# theLength: @integer; enter (# enter theLength do ... #) exit (# do ... exit theLength #) #); open::< (# create::< (# do ... #) do ... #); close::< (# do ...; #); private: @...; #) (* scrollbar *); button: control (* this is the abstract superpattern for all button-like controls *) (# <<SLOT buttonLib: attributes>>; eventhandler::< (# labelChanged: event (* is called whenever the label is changed *) (# do INNER; #); onLabelChanged:< labelChanged; styleChanged: event (* is called whenever the style is changed *) (# do INNER #); onStyleChanged:< styleChanged; onFrameChanged::< (# do ... #); onRefresh::< (# do ... #); onMouseDown::< (# do ... #); #); label: (* the label is the text displayed in THIS(button). The event * labelChanged is called, when the label is changed *) (# theLabel: ^text; enter (# enter theLabel[] do ... #) exit (# do ... exit theLabel[] #) #); style: (* the text style used for drawing the label *) (# theStyle: ^textStyle enter (# enter theStyle[] do ... #) exit (# do ... exit theStyle[] #) #); foregroundColor: (# c:@color enter c do ... #); open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* button *); pushButton: button (* this is a button like the OK and Cancel buttons in dialogs *) (# <<SLOT pushButtonLib: attributes>>; open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); eventHandler::< (# onMouseDown::< (# ... #); onRefresh::< (# ... #); onHiliteChanged::< (# ... #); #); private: @...; #) (* pushButton *); staticText: button (* normally a staticText is used to label editText fields *) (# <<SLOT staticTextLib: attributes>>; eventhandler::< (# onRefresh::< (# do ...#); #); open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* staticText *); iconButton: button (* an icon has a label, which is drawn centered just below the * image of the icon *) (# <<SLOT iconButtonLib: attributes>>; eventhandler::< (# showLabelChanged: event (* called when showLabel is changed *) (# do INNER #); onShowLabelChanged:< showLabelChanged; iconChanged: event (* Called when the icon is changed *) (# do INNER #); onIconChanged:< iconChanged; onRefresh::< (# do ... #); onHiliteChanged::< (# do ... #); onMouseDown::< (# ... #); #); showLabel: (* if true, the label is shown centered under the image of the * Icon *) (# doShow: @boolean enter (# enter doShow do ... #) exit (# do ... exit doShow #) #); icon: (# theIcon: ^pixmap; enter (# enter theIcon[] do ... #) exit (# do ...; exit theIcon[] #) #); open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* iconButton *); optionButton: button (* a optionButton has a menu, which pops up, when the user clicks * at the button. A normal way to use a optionButton is to set the * label of the button to the current selected item in the menu *) (# <<SLOT optionButtonLib: attributes>>; eventhandler::< (# currentItemChanged: event (* called when currentItem is changed *) (# do INNER #); onCurrentItemChanged:< currentItemChanged; popUpMenuChanged: event (* called when popUpMenu is changed *) (# do INNER #); onPopUpMenuChanged:< popUpMenuChanged; onLabelChanged::< (# do ... #); onStyleChanged::< (# do ... #); onRefresh:: (# ... #); #); currentItem: (* the current item is the number of the item, which name is * currently shown in the popup box. You can get a reference * to that item by calling: currentItem -> * theMenu.getItemByNumber -> theItem[]; *) (# itemNo: @integer enter (# enter itemNo do ... #) exit (# do ... exit itemNo #) #); popupMenu: (* evaluate the enter part to set the menu that pops up in * THIS(optionButton). And evaluate the exit part to get the * menu *) (# popupMenu: ^menu; enter (# enter popupMenu[] do ... #) exit (# do ... exit PopupMenu[] #) #); open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* optionButton *); toggleButton: button (* this is the abstract superpattern for all buttons that toggle * between two states (on/off buttons) *) (# <<SLOT toggleButtonLib: attributes>>; eventhandler::< (# stateChanged: event (* this event is called whenever the state of * THIS(toggleButton) is changed *) (# do INNER #); onStateChanged:< stateChanged; onMouseUp::< (# ... #); #); state: (# theState: @boolean; enter (# enter theState do ... #) exit (# do ... exit theState #) #); open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* toggleButton *); radioButton: toggleButton (* a radioButton is mostly used in a radiobutton cluster, where * only one radioButton is set at a time. A radioButton is thus * useful to let the user choose among different alternatives *) (# <<SLOT radioButtonLib: attributes>>; open::< (# create::< (# do ... #) do ... #); close::< (# do ... #); private: @...; #) (* radioButton *); checkBox: toggleButton (* this is useful for setting options in dialogs *) (# <<SLOT checkBoxLib: attributes>>; open::< (# create::< (# do ... #); do ... #); close::< (# do ... #); private: @...; #) (* checkBox *); editText: control (* this is a simple version of textField. Only one textStyle is * allowed. The purpose of this control is to build dialogs *) (# <<SLOT editTextLib: attributes>>; style: (* an editText can only have one textStyle. Evaluate the * enter part to set the textStyle. Evaluate the exit part to * get the textStyle *) (# txStyle: ^textStyle enter (# enter txStyle[] do ... #) exit (# do ... exit txStyle[] #) #); contents: (* the contents of an editText is text. Evaluate the enter * part to set the contents, and evaluate the exit part to get * the contents *) (# str: ^text enter (# enter str[] do ... #) exit (# do ... exit str[] #) #); eventhandler::< (# onFrameChanged::< (# do ... #); onKeyDown::< (# do ... #); onMouseDown::< (# do ... #); onRefresh::< (# do ... #); onEnableTarget::< (# do ... #); onDisableTarget::< (# do ... #); #); open::< (* the textStyle of THIS(editText) is initially set to the * system's textStyle *) (# create::< (# do ... #); do ... #); close::< (# do ... #); private: @...; #) (* editText *); defaultButton: (* the defaultButton in the window recieves a mouseUp event when * the user presses the return-key *) (# theButton: ^button enter (# enter theButton[] do ... #) exit (# do ... exit theButton[] #) #)
20.1 Controls Interface | © 1994-2002 Mjølner Informatics |
[Modified: Monday January 3rd 2000 at 12:28]
|