MODULE StdCFrames;
(**
project = "BlackBox"
organization = "www.oberon.ch"
contributors = "Oberon microsystems"
version = "System/Rsrc/About"
copyright = "System/Rsrc/About"
license = "Docu/BB-License"
changes = ""
issues = ""
**)
IMPORT Fonts, Ports, Views, Dates, Dialog;
CONST lineUp* = 0; lineDown* = 1; pageUp* = 2; pageDown* = 3;
TYPE
Frame* = POINTER TO ABSTRACT RECORD (Views.Frame)
disabled*, undef*, readOnly*, noRedraw*: BOOLEAN;
font*: Fonts.Font
END;
PushButton* = POINTER TO ABSTRACT RECORD (Frame)
label*: ARRAY 256 OF CHAR;
default*, cancel*: BOOLEAN;
Do*: PROCEDURE (f: PushButton)
END;
CheckBox* = POINTER TO ABSTRACT RECORD (Frame)
label*: ARRAY 256 OF CHAR;
Get*: PROCEDURE (f: CheckBox; OUT on: BOOLEAN);
Set*: PROCEDURE (f: CheckBox; on: BOOLEAN)
END;
RadioButton* = POINTER TO ABSTRACT RECORD (Frame)
label*: ARRAY 256 OF CHAR;
Get*: PROCEDURE (f: RadioButton; OUT on: BOOLEAN);
Set*: PROCEDURE (f: RadioButton; on: BOOLEAN)
END;
ScrollBar* = POINTER TO ABSTRACT RECORD (Frame)
Track*: PROCEDURE (f: ScrollBar; dir: INTEGER; VAR pos: INTEGER);
Get*: PROCEDURE (f: ScrollBar; OUT size, sect, pos: INTEGER);
Set*: PROCEDURE (f: ScrollBar; pos: INTEGER)
END;
Field* = POINTER TO ABSTRACT RECORD (Frame)
maxLen*: INTEGER; (* max num of characters in field (w/o 0X) *)
left*, right*, multiLine*, password*: BOOLEAN;
Get*: PROCEDURE (f: Field; OUT string: ARRAY OF CHAR);
Set*: PROCEDURE (f: Field; IN string: ARRAY OF CHAR);
Equal*: PROCEDURE (f: Field; IN s1, s2: ARRAY OF CHAR): BOOLEAN
END;
UpDownField* = POINTER TO ABSTRACT RECORD (Frame)
min*, max*, inc*: INTEGER;
Get*: PROCEDURE (f: UpDownField; OUT val: INTEGER);
Set*: PROCEDURE (f: UpDownField; val: INTEGER)
END;
DateField* = POINTER TO ABSTRACT RECORD (Frame)
Get*: PROCEDURE (f: DateField; OUT date: Dates.Date);
Set*: PROCEDURE (f: DateField; IN date: Dates.Date);
GetSel*: PROCEDURE (f: DateField; OUT sel: INTEGER);
SetSel*: PROCEDURE (f: DateField; sel: INTEGER)
END;
TimeField* = POINTER TO ABSTRACT RECORD (Frame)
Get*: PROCEDURE (f: TimeField; OUT date: Dates.Time);
Set*: PROCEDURE (f: TimeField; IN date: Dates.Time);
GetSel*: PROCEDURE (f: TimeField; OUT sel: INTEGER);
SetSel*: PROCEDURE (f: TimeField; sel: INTEGER)
END;
ColorField* = POINTER TO ABSTRACT RECORD (Frame)
Get*: PROCEDURE (f: ColorField; OUT col: INTEGER);
Set*: PROCEDURE (f: ColorField; col: INTEGER)
END;
ListBox* = POINTER TO ABSTRACT RECORD (Frame)
sorted*: BOOLEAN;
Get*: PROCEDURE (f: ListBox; OUT i: INTEGER);
Set*: PROCEDURE (f: ListBox; i: INTEGER);
GetName*: PROCEDURE (f: ListBox; i: INTEGER; VAR name: ARRAY OF CHAR)
END;
SelectionBox* = POINTER TO ABSTRACT RECORD (Frame)
sorted*: BOOLEAN;
Get*: PROCEDURE (f: SelectionBox; i: INTEGER; OUT in: BOOLEAN);
Incl*: PROCEDURE (f: SelectionBox; from, to: INTEGER);
Excl*: PROCEDURE (f: SelectionBox; from, to: INTEGER);
Set*: PROCEDURE (f: SelectionBox; from, to: INTEGER);
GetName*: PROCEDURE (f: SelectionBox; i: INTEGER; VAR name: ARRAY OF CHAR)
END;
ComboBox* = POINTER TO ABSTRACT RECORD (Frame)
sorted*: BOOLEAN;
Get*: PROCEDURE (f: ComboBox; OUT string: ARRAY OF CHAR);
Set*: PROCEDURE (f: ComboBox; IN string: ARRAY OF CHAR);
GetName*: PROCEDURE (f: ComboBox; i: INTEGER; VAR name: ARRAY OF CHAR)
END;
Caption* = POINTER TO ABSTRACT RECORD (Frame)
label*: ARRAY 256 OF CHAR;
left*, right*: BOOLEAN;
END;
Group* = POINTER TO ABSTRACT RECORD (Frame)
label*: ARRAY 256 OF CHAR
END;
TreeFrame* = POINTER TO ABSTRACT RECORD (Frame)
sorted*, haslines*, hasbuttons*, atroot*, foldericons*: BOOLEAN;
NofNodes*: PROCEDURE (f: TreeFrame): INTEGER;
Child*: PROCEDURE (f: TreeFrame; node: Dialog.TreeNode): Dialog.TreeNode;
Parent*: PROCEDURE (f: TreeFrame; node: Dialog.TreeNode): Dialog.TreeNode;
Next*:PROCEDURE (f: TreeFrame; node: Dialog.TreeNode): Dialog.TreeNode;
Select*:PROCEDURE (f: TreeFrame; node: Dialog.TreeNode);
Selected*:PROCEDURE (f: TreeFrame): Dialog.TreeNode;
SetExpansion*:PROCEDURE (f: TreeFrame; tn: Dialog.TreeNode; expanded: BOOLEAN)
END;
Directory* = POINTER TO ABSTRACT RECORD END;
VAR
setFocus*: BOOLEAN;
defaultFont*, defaultLightFont*: Fonts.Font;
dir-, stdDir-: Directory;
(** Frame **)
PROCEDURE (f: Frame) MouseDown* (x, y: INTEGER; buttons: SET), NEW, EMPTY;
PROCEDURE (f: Frame) WheelMove* (x, y: INTEGER; op, nofLines: INTEGER;
VAR done: BOOLEAN), NEW, EMPTY;
PROCEDURE (f: Frame) KeyDown* (ch: CHAR), NEW, EMPTY;
PROCEDURE (f: Frame) Restore* (l, t, r, b: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: Frame) UpdateList*, NEW, EMPTY;
PROCEDURE (f: Frame) Mark* (on, focus: BOOLEAN), NEW, EMPTY;
PROCEDURE (f: Frame) Edit* (op: INTEGER; VAR v: Views.View; VAR w, h: INTEGER;
VAR singleton, clipboard: BOOLEAN), NEW, EMPTY;
PROCEDURE (f: Frame) GetCursor* (x, y: INTEGER; modifiers: SET; VAR cursor: INTEGER), NEW, EMPTY;
PROCEDURE (f: Frame) Update*, NEW, EXTENSIBLE;
VAR l, t, r, b: INTEGER; root: Views.RootFrame;
BEGIN
l := f.l + f.gx; t := f.t + f.gy; r := f.r + f.gx; b := f.b + f.gy;
root := Views.RootOf(f);
Views.UpdateRoot(root, l, t, r, b, Views.keepFrames);
Views.ValidateRoot(root)
END Update;
PROCEDURE (f: Frame) DblClickOk* (x, y: INTEGER): BOOLEAN, NEW, EXTENSIBLE;
BEGIN
RETURN TRUE
END DblClickOk;
(** Field **)
PROCEDURE (f: Field) Idle* (), NEW, ABSTRACT;
PROCEDURE (f: Field) Select* (from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: Field) GetSelection* (OUT from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: Field) Length* (): INTEGER, NEW, ABSTRACT;
PROCEDURE (f: Field) GetCursor* (x, y: INTEGER; modifiers: SET; VAR cursor: INTEGER), EXTENSIBLE;
BEGIN
cursor := Ports.textCursor
END GetCursor;
(** UpDownField **)
PROCEDURE (f: UpDownField) Idle*, NEW, ABSTRACT;
PROCEDURE (f: UpDownField) Select* (from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: UpDownField) GetSelection* (OUT from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: UpDownField) GetCursor* (x, y: INTEGER; modifiers: SET;
VAR cursor: INTEGER), EXTENSIBLE;
BEGIN
cursor := Ports.textCursor
END GetCursor;
(** SelectionBox **)
PROCEDURE (f: SelectionBox) Select* (from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: SelectionBox) GetSelection* (OUT from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: SelectionBox) UpdateRange* (op, from, to: INTEGER), NEW, EXTENSIBLE;
BEGIN
f.Update
END UpdateRange;
(** ComboBox **)
PROCEDURE (f: ComboBox) Idle* (), NEW, ABSTRACT;
PROCEDURE (f: ComboBox) Select* (from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: ComboBox) GetSelection* (OUT from, to: INTEGER), NEW, ABSTRACT;
PROCEDURE (f: ComboBox) Length* (): INTEGER, NEW, ABSTRACT;
(* TreeFrame **)
PROCEDURE (f: TreeFrame) GetSize* (OUT w, h: INTEGER), NEW, ABSTRACT;
(** Directory **)
PROCEDURE (d: Directory) GetPushButtonSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetCheckBoxSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetRadioButtonSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetScrollBarSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetFieldSize* (max: INTEGER; VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetUpDownFieldSize* (max: INTEGER; VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetDateFieldSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetTimeFieldSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetColorFieldSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetListBoxSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetSelectionBoxSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetComboBoxSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetCaptionSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetGroupSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) GetTreeFrameSize* (VAR w, h: INTEGER), NEW, ABSTRACT;
PROCEDURE (d: Directory) NewPushButton* (): PushButton, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewCheckBox* (): CheckBox, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewRadioButton* (): RadioButton, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewScrollBar* (): ScrollBar, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewField* (): Field, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewUpDownField* (): UpDownField, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewDateField* (): DateField, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewTimeField* (): TimeField, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewColorField* (): ColorField, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewListBox* (): ListBox, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewSelectionBox* (): SelectionBox, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewComboBox* (): ComboBox, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewCaption* (): Caption, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewGroup* (): Group, NEW, ABSTRACT;
PROCEDURE (d: Directory) NewTreeFrame* (): TreeFrame, NEW, ABSTRACT;
PROCEDURE SetDir* (d: Directory);
BEGIN
ASSERT(d # NIL, 20); dir := d;
IF stdDir = NIL THEN stdDir := d END
END SetDir;
BEGIN
setFocus := FALSE
END StdCFrames.