home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
dev
/
gui
/
mui
/
developer
/
oberon
/
txt
/
muibasics.mod
< prev
next >
Wrap
Text File
|
1994-07-02
|
73KB
|
2,031 lines
(*------------------------------------------
:Module. MuiBasics.mod
:Author. Albert Weinert [awn]
:Address. Adamsstr. 83; 51063 Köln, Germany
:EMail. a.weinert@darkness.gun.de
:Phone. +49-221-613100
:Revision. R.19
:Date. 02-Jul-1994
:Copyright. FreeWare.
:Language. Oberon-2
:Translator. AmigaOberon V3.11
:Contents. Die Makros die in "mui.h" definiert, waren als Prozeduren für Oberon
:Imports. <Importiertes, Name/ShortCut des Autors>
:Remarks. Bei VCenter, HCenter, Popup ist es etwas anders.
:Bugs. <Bekannte Fehler>
:Usage. <Angaben zur Anwendung>
:History. .1 [awn] 22-Aug-1993 : Die Prozeduren die in Mui.mod waren nun
:History. entfernt und ein seperates Modul daraus gemacht, so das
:History. man nicht darauf angewiesen dies in seinem Interfaces zu haben.
:History. .2 [awn] 24-Aug-1993 : Kräftig aufgeräumt um den erzeugten
:History. Maschinencode so kurz wie möglich zu halten.
:History. .3 [awn] 24-Aug-1993 : PopupEnd() so erweitert das nun ein
:History. Objekt mit angeben werden kann, dies ist dafür gedacht wenn
:History. man das Popup zu einem anderen Objekt anordnet (z.B String )
:History. .4 [awn] 24-Aug-1993 : Im Zuge der Popup Änderung wurde eine
:History. eigene Speziell auf Mui abgestimmte Hook Parameter übergabe
:History. erstellt (Allerdings OS Konform eingebettet). Der Parameter
:History. Deklaration der Hook-Prozedur muss nun so aussehen wie der
:History. Typ `HookDef'.
:History. .5 [awn] 25-Aug-1993 : Tipfehler bei TagItem2() und TagItem3()
:History. entfernt.
:History. .6 [awn] 25-Aug-1993 : Die Groups und Frames wieder mit der
:History. Möglichkeit versehen dort TagListen zu übergeben.
:History. .7 [awn] 30-Aug-1993 : PageGroup() hizugefügt.
:History. .8 [awn] 14-Sep-1993 : Fehler bei Strings() dort wurde in der
:History. Deklaration 2 mal A1 benutzt.
:History. .9 [awn] 03-Oct-1993 : Eine einfache Plausibiltätsprüfung eingebaut.
:History. Für jede #?Object() Prozedur gibt es nun ein End#?() Prozedure,
:History. wenn der Objekt Typ nicht übereinstimmt wird ein NIL zurückgeben.
:History. Dies ist dafür um während der Programmentwicklung Abstürze zu
:History. umgehen, wenn das Programm einmal steht sind diese nicht mehr
:History. notwendig, aber brauchen nicht entfernt zu werden.
:History. .10 [awn] 30-Oct-1993 : An MUI 1.4 angepasst, die neuen Objekte
:History. hinzugefügt (Coloradjust, Colorfield, Palette, Virtgroup, Scrollgroup
:History. und Scrmodelist), die Group Prozeduren gibt es nun auch für Virtgroups
:History. z.B. HGroupV(). Sonstige neue Prozeduren, KeyRadio(), Slider(), KeySlider(),
:History. LLabelX() und KeyLLabelX().
:History. .11 [awn] 31-Jan-1994 : Angepasst an MUI 1.5, Fehler bei SliderObject()
:History. entfernt (Rief RadioObject auf). Es gibt nun für *jede* Objekt ein
:History. passendes. Bei Popupend() wird nun auch das Background Image gesetzt.
:History. [Report: Peter Elzner]
:History. .12 [awn] 02-Feb-1994 : INewObject() und IEnd() aufgenommen, der Aufruf
:History. von INewObject() ist wie der von Intuition.NewObject() nur ohne
:History. Rückgabeparamter. INewObject() muss *anstatt* Intuition.NewObject()
:History. aufgerufen werden wenn die Objekte direkt mit ins Layout sollen.
:History. INewObject() *muss* ein IEnd() bzw. iEnd() folgen. siehe Class1.mod
:History. .13 [awn] 05-Feb-1994 : VSlider() und KeyVSlider() aufgenommen.
:History. .14 [awn] 17-Feb-1994 : Bei Checkmark(); KeyCheckmark(), String() und
:History. KeyString() ist es nun auch möglich Tags zu übergeben.
:History. KeyVSlider() ist nun wirklich ein VSlider. PopButton() hinzugefügt.
:History. Der Register.mui Support ist nun auch drin.
:History. HBar() und VBar() erstellt, erzeugen die entsprechenden Bars.
:History. .15 [awn] 22-Feb-1994 : Integer() und KeyInteger() für Integer-
:History. Objekte hinzugefügt.
:History. .16 [awn] 27-Feb-1994 : Bei etlichen Prozeduren habe ich vergessen
:History. die Register zu retten, so das CheckMark() und KeyCheckMark()
:History. nicht zufriedenstellend funktionierte [Report: Volker Rudolph]
:History. .17 [awn] 05-Apr-1994 : Bei CheckMark() funktioniert die Initiali-
:History. sierung jetzt. Scrollbar(), KeyScrollBar(), VScrollBar() usw.
:History. Prozeduren für die entsprechenden Objekte erstellt.
:History. .18 [awn] 15-May-1994 : Bei CheckMarkA() die Parameter etwas
:History. geändert, so das dieses nun auch richtig funktioniert.
:History. .19 [awn] 02-Jul-1994 : ClassTree overview updated, updated
:History. to MUI 2.1, major code cleanup (now, produces shorter code).
:History. In lack of time, i didn't optimize the label prozedures.
:History. The behavior fo the End#?() procedures changes, if the wrong
:History. object type, the programm terminates with an RC=100, also
:History. now there added end#?() proecedures, so that you don't must
:History. check the result if you want only have a little typeguard.
--------------------------------------------*)
MODULE MuiBasics;
IMPORT e * := Exec,
I * := Intuition,
m * := Mui,
u * := Utility,
y :=SYSTEM;
CONST ArrayAdd = 24;
TYPE
TagArray * = UNTRACED POINTER TO ARRAY OF u.TagItem;
Class * = UNTRACED POINTER TO ClassDesc;
Args * = UNTRACED POINTER TO ArgsDesc;
Hook * = UNTRACED POINTER TO HookDesc;
ClassDesc = STRUCT( n : e.Node );
name : ARRAY 32 OF CHAR;
iclass : I.IClassPtr;
tags : TagArray;
tagnum : LONGINT;
tagdata : BOOLEAN;
END;
ArgsDesc * = STRUCT END;
PopupArgs * = STRUCT ( d : ArgsDesc );
linkedObj : m.Object (* Das Objekt zu dem das Popup Object gelinkt ist *)
END;
HookDef * = PROCEDURE ( hook : Hook; object : m.Object; args : Args ):LONGINT;
(* Hook-Example.
*
* TYPE PopWindowArgs = STRUCT( d : MuiBasics.ArgsDesc );
* window : m.Object;
* END;
*
* VAR myHook : MuiBasics.Hook;
* button : m.Object;
* window : m.Object;
*
* PROCEDURE PopWindow( hook : Hook; object : m.Object; args : Args ) : LONGINT;
* BEGIN
* IF args # NIL THEN
* IF args(PopWindowArgs).window # NIL THEN
* m.DoMethod( args(PopWindowArgs).window, m.mWindowToFront );
* END;
* END;
* RETURN 0;
* END PopWindow;
*
* BEGIN
* [... create Application Windows ...]
*
* myHook := MuiBasics.MakeHook( PopWindow );
* IF myHook # NIL THEN
* m.DoMethod( button, m.mNotify, m.aPressed, e.false,
* button, 3, m.mCallHook, myHook, window );
* END;
* [... Do the other magic ...]
*
* Note: Typed on the fly, no warranty is given that this piece of code reallay work.
*)
HookDesc * = STRUCT( minNode : e.MinNode );
entry : PROCEDURE ( hook{8} : Hook;
object{10}: m.Object;
args{9}: Args ):LONGINT;
subEntry : HookDef;
a5 : e.APTR;
object : m.Object;
END;
VAR no * : e.List;
(* ---- MuiBasics Hook-Dispatcher ---- *)
PROCEDURE HookEntry*(hook{8}: Hook; (* $SaveRegs+ $StackChk- *)
object{10}: m.Object;
args{9}: Args): LONGINT;
(*
* Calls hook.subEntry. The contents of A5 have to be stored in hook.a5,
* else A5 would not be set correctly.
*)
BEGIN
y.SETREG(13,hook.a5);
RETURN hook.subEntry(hook,object,args);
END HookEntry;
PROCEDURE MakeHook* ( entry: HookDef ):Hook;
(*------------------------------------------
:Input. entry : Prozedure die gestartet werden soll, wenn der Hook
:Input. aufgerufen wird.
:Output. Hook der direkt einsatzfähig ist (oder NIL, falls es nicht
:Output. geklappt haben sollte).
:Semantic. Erstellt einen Hook und bindet die Prozedure ein.
:Note.
:Update. 24-Aug-1993 [awn] - erstellt.
--------------------------------------------*)
VAR hook : Hook;
BEGIN
NEW( hook );
IF hook # NIL THEN
hook.entry := HookEntry;
hook.subEntry := entry;
hook.a5 := y.REG(13);
END;
RETURN hook;
END MakeHook;
PROCEDURE SetHookObject*( hook : Hook; object : m.Object );
(*------------------------------------------
:Input. hook : Initialisierte Hook;
:Input. object : Das Object zu wem der Hook gelinkt ist.
:Output.
:Semantic. Trägt in die Hook-Struktur ein Object ein, so
:Semantic. das man später noch darauf zugreifen kann.
:Note.
:Update. 24-Aug-1993 [awn] - erstellt.
--------------------------------------------*)
BEGIN
IF hook # NIL THEN
hook.object := object;
END;
END SetHookObject;
PROCEDURE GetHookObject*( hook : Hook ):m.Object;
(*------------------------------------------
:Input. hook : Ein Hook
:Output. Das Objekt welches in der Hook Struktur eingetragen ist
:Semantic.
:Note.
:Update. 24-Aug-1993 [awn] - erstellt.
--------------------------------------------*)
BEGIN
IF hook # NIL THEN
RETURN hook.object;
END;
END GetHookObject;
PROCEDURE Init();
BEGIN
no.head := y.ADR( no.tail );
no.tail := NIL;
no.tailPred := y.ADR( no.head );
END Init;
PROCEDURE NewClass*();
(* $SaveRegs+ *)
VAR cl : Class;
BEGIN
NEW( cl );
(* $IF GarbageCollector *)
e.AddTail( no, cl );
(* $ELSE *)
IF cl # NIL THEN
e.AddTail( no, y.VAL( e.CommonNodePtr, cl ) );
cl.tagdata := FALSE;
END;
(* $END *)
END NewClass;
PROCEDURE CheckAndExpandTags( cl : Class; n : LONGINT);
(* $SaveRegs+ *)
VAR newtags : TagArray;
ShouldLen, MaxLen, i : LONGINT;
BEGIN
IF n = 0 THEN RETURN END;
IF cl.tags # NIL THEN
ShouldLen := cl.tagnum + n;
MaxLen := LEN( cl.tags^ )-1;
IF ShouldLen >= MaxLen THEN
INC( ShouldLen, ArrayAdd );
y.ALLOCATE( newtags, ShouldLen );
FOR i := 0 TO cl.tagnum-1 DO
newtags[i] := cl.tags[i];
END;
(* $IF GarbageCollector *)
cl.tags := newtags;
(* $ELSE *)
DISPOSE( cl.tags );
cl.tags := newtags;
(* $END *)
END;
ELSE
ShouldLen := ArrayAdd + n ;
NEW( cl.tags, ShouldLen );
cl.tagnum := 0;
END;
END CheckAndExpandTags;
PROCEDURE clTag ( cl : Class; tag : e.APTR );
(* $SaveRegs+ *)
BEGIN
CheckAndExpandTags( cl, 1 );
IF cl.tags # NIL THEN
IF cl.tagdata THEN
cl.tags[cl.tagnum].data := tag;
cl.tagdata := FALSE;
INC( cl.tagnum );
ELSE
cl.tags[cl.tagnum].tag := tag;
cl.tagdata := TRUE;
END;
END;
END clTag;
PROCEDURE clTagItem ( cl : Class; tag, data : e.APTR );
(* $SaveRegs+ *)
BEGIN
CheckAndExpandTags( cl, 1 );
IF cl.tags # NIL THEN
cl.tags[cl.tagnum].data := data;
cl.tags[cl.tagnum].tag := tag;
INC( cl.tagnum );
END;
END clTagItem;
PROCEDURE countTag( tags{9} : u.TagListPtr) : LONGINT;
(* $SaveRegs+ *)
VAR i, j : LONGINT;
BEGIN
i := 0; j := 0;
WHILE (tags # NIL) & (tags[j].tag # u.end) DO
IF tags[j].tag = u.more THEN
tags := tags[j].data;
j := 0;
ELSE
INC(i); INC(j);
END;
END;
RETURN i;
END countTag;
PROCEDURE clTagsA*( cl{8} : Class; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
VAR i : LONGINT;
BEGIN
IF tags = NIL THEN RETURN END;
CheckAndExpandTags( cl, countTag( tags ) );
i:=0;
IF cl.tags # NIL THEN
WHILE (tags#NIL) & (tags[i].tag # u.end) DO
IF tags[i].tag = u.more THEN
tags := tags[i].data;
i := 0;
ELSE
cl.tags[cl.tagnum] := tags[i];
INC(cl.tagnum); INC(i);
END;
END;
END;
END clTagsA;
PROCEDURE clTags{"MuiBasics.clTagsA"} ( cl{8} : Class; tags{9}.. : u.Tag );
PROCEDURE TagsA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
IF no.tailPred # y.ADR( no.head ) THEN;
clTagsA( y.VAL( Class, no.tailPred ), tags );
END;
END TagsA;
PROCEDURE Tags*{"MuiBasics.TagsA"} ( tags{9}.. : u.Tag );
PROCEDURE Tag*( tag : e.APTR );
(* $SaveRegs+ *)
BEGIN
IF no.tailPred # y.ADR( no.head ) THEN
clTag( y.VAL( Class, no.tailPred ), tag );
END;
END Tag;
PROCEDURE TagItem*( tag, data : e.APTR );
(* $SaveRegs+ *)
BEGIN
IF no.tailPred # y.ADR( no.head ) THEN
clTagItem( y.VAL( Class, no.tailPred ), tag, data );
END;
END TagItem;
PROCEDURE TagItem2*( tag1, data1, tag2, data2 : e.APTR );
(* $SaveRegs+ *)
BEGIN
IF no.tailPred # y.ADR( no.head ) THEN
clTagItem( y.VAL( Class, no.tailPred ), tag1, data1 );
clTagItem( y.VAL( Class, no.tailPred ), tag2, data2 );
END;
END TagItem2;
PROCEDURE TagItem3*( tag1, data1, tag2, data2, tag3, data3 : e.APTR );
(* $SaveRegs+ *)
BEGIN
IF no.tailPred # y.ADR( no.head ) THEN
clTagItem( y.VAL( Class, no.tailPred ), tag1, data1 );
clTagItem( y.VAL( Class, no.tailPred ), tag2, data2 );
clTagItem( y.VAL( Class, no.tailPred ), tag3, data3 );
END;
END TagItem3;
PROCEDURE DEnd(mui : BOOLEAN):m.Object;
(* $SaveRegs+ *)
VAR cl : e.NodePtr;
ret : e.APTR;
BEGIN
ret := NIL;
cl := no.tailPred;
WITH cl : Class DO
IF cl.tags # NIL THEN
cl.tags[cl.tagnum].tag:=u.end;
IF mui THEN
ret := m.NewObject( cl.name, u.more, y.ADR(cl.tags^) );
ELSE
IF cl.iclass # NIL THEN
ret := I.NewObject( cl.iclass, NIL, u.more, y.ADR(cl.tags^) );
ELSE
ret := I.NewObject( NIL, cl.name, u.more, y.ADR(cl.tags^) );
END;
END;
ELSE
IF mui THEN
ret := m.NewObject( cl.name );
ELSE
IF cl.iclass # NIL THEN
ret := I.NewObject( cl.iclass, NIL );
ELSE
ret := I.NewObject( NIL, cl.name );
END;
END;
END;
e.Remove( cl );
(* $IFNOT GarbageCollector *)
DISPOSE( cl.tags );
DISPOSE( cl );
(* $END *)
IF no.tailPred # y.ADR( no.head ) THEN
clTag( y.VAL( Class, no.tailPred ), ret );
END;
END;
RETURN ret;
END DEnd;
PROCEDURE End*():m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN DEnd( TRUE );
END End;
PROCEDURE end*();
(* $SaveRegs+ *)
BEGIN
y.SETREG( 0, End() );
END end;
PROCEDURE IEnd*():m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN DEnd( FALSE );
END IEnd;
PROCEDURE iEnd*();
(* $SaveRegs+ *)
BEGIN
y.SETREG( 0, IEnd() );
END iEnd;
PROCEDURE EndObject( objname : ARRAY OF CHAR ):m.Object;
BEGIN
IF m.cApplication # no.tailPred(Class).name THEN HALT(100) END;
RETURN End();
END EndObject;
PROCEDURE endFamily*{"MuiBasics.EndFamily"};
PROCEDURE EndFamily*():m.Object; BEGIN RETURN EndObject( m.cFamily ) END EndFamily;
PROCEDURE endMenustrip*{"MuiBasics.EndMenustrip"};
PROCEDURE EndMenustrip*():m.Object; BEGIN RETURN EndObject( m.cMenustrip ) END EndMenustrip;
PROCEDURE endMenu*{"MuiBasics.EndMenu"};
PROCEDURE EndMenu*():m.Object; BEGIN RETURN EndObject( m.cMenu ) END EndMenu;
PROCEDURE endMenuT*{"MuiBasics.EndMenuT"};
PROCEDURE EndMenuT*():m.Object; BEGIN RETURN EndObject( m.cMenu ) END EndMenuT;
PROCEDURE endMenuitem*{"MuiBasics.EndMenuitem"};
PROCEDURE EndMenuitem*():m.Object; BEGIN RETURN EndObject( m.cMenuitem ) END EndMenuitem;
PROCEDURE endWindow*{"MuiBasics.EndWindow"};
PROCEDURE EndWindow*():m.Object; BEGIN RETURN EndObject( m.cWindow ) END EndWindow;
PROCEDURE endImage*{"MuiBasics.EndImage"};
PROCEDURE EndImage*():m.Object; BEGIN RETURN EndObject( m.cImage ) END EndImage;
PROCEDURE endBitmap*{"MuiBasics.EndBitmap"};
PROCEDURE EndBitmap*():m.Object; BEGIN RETURN EndObject( m.cBitmap ) END EndBitmap;
PROCEDURE endBodychunk*{"MuiBasics.EndBodychunk"};
PROCEDURE EndBodychunk*():m.Object; BEGIN RETURN EndObject( m.cImage ) END EndBodychunk;
PROCEDURE endNotify*{"MuiBasics.EndNotify"};
PROCEDURE EndNotify*():m.Object; BEGIN RETURN EndObject( m.cNotify ) END EndNotify;
PROCEDURE endApplication*{"MuiBasics.EndApplication"};
PROCEDURE EndApplication*():m.Object; BEGIN RETURN EndObject( m.cApplication ) END EndApplication;
PROCEDURE endText*{"MuiBasics.EndText"};
PROCEDURE EndText*():m.Object; BEGIN RETURN EndObject( m.cText ) END EndText;
PROCEDURE endRectangle*{"MuiBasics.EndRectangle"};
PROCEDURE EndRectangle*():m.Object; BEGIN RETURN EndObject( m.cRectangle ) END EndRectangle;
PROCEDURE endList*{"MuiBasics.EndList"};
PROCEDURE EndList*():m.Object; BEGIN RETURN EndObject( m.cList ) END EndList;
PROCEDURE endProp*{"MuiBasics.EndProp"};
PROCEDURE EndProp*():m.Object; BEGIN RETURN EndObject( m.cProp ) END EndProp;
PROCEDURE endString*{"MuiBasics.EndString"};
PROCEDURE EndString*():m.Object; BEGIN RETURN EndObject( m.cString ) END EndString;
PROCEDURE endScrollbar*{"MuiBasics.EndScrollbar"};
PROCEDURE EndScrollbar*():m.Object; BEGIN RETURN EndObject( m.cScrollbar ) END EndScrollbar;
PROCEDURE endListview*{"MuiBasics.EndListview"};
PROCEDURE EndListview*():m.Object; BEGIN RETURN EndObject( m.cListview ) END EndListview;
PROCEDURE endRadio*{"MuiBasics.EndRadio"};
PROCEDURE EndRadio*():m.Object; BEGIN RETURN EndObject( m.cRadio ) END EndRadio;
PROCEDURE endVolumelist*{"MuiBasics.EndVolumelist"};
PROCEDURE EndVolumelist*():m.Object; BEGIN RETURN EndObject( m.cVolumelist ) END EndVolumelist;
PROCEDURE endFloattext*{"MuiBasics.EndFloattext"};
PROCEDURE EndFloattext*():m.Object; BEGIN RETURN EndObject( m.cFloattext ) END EndFloattext;
PROCEDURE endDirlist*{"MuiBasics.EndDirlist"};
PROCEDURE EndDirlist*():m.Object; BEGIN RETURN EndObject( m.cDirlist ) END EndDirlist;
PROCEDURE endSlider*{"MuiBasics.EndSlider"};
PROCEDURE EndSlider*():m.Object; BEGIN RETURN EndObject( m.cSlider ) END EndSlider;
PROCEDURE endCycle*{"MuiBasics.EndCycle"};
PROCEDURE EndCycle*():m.Object; BEGIN RETURN EndObject( m.cCycle ) END EndCycle;
PROCEDURE endGauge*{"MuiBasics.EndGauge"};
PROCEDURE EndGauge*():m.Object; BEGIN RETURN EndObject( m.cGauge ) END EndGauge;
PROCEDURE endScale*{"MuiBasics.EndScale"};
PROCEDURE EndScale*():m.Object; BEGIN RETURN EndObject( m.cScale ) END EndScale;
PROCEDURE endBoopsi*{"MuiBasics.EndBoopsi"};
PROCEDURE EndBoopsi*():m.Object; BEGIN RETURN EndObject( m.cBoopsi ) END EndBoopsi;
PROCEDURE endColorfield*{"MuiBasics.EndColorfield"};
PROCEDURE EndColorfield*():m.Object; BEGIN RETURN EndObject( m.cColorfield ) END EndColorfield;
PROCEDURE endColorpanel*{"MuiBasics.EndColorpanel"};
PROCEDURE EndColorpanel*():m.Object; BEGIN RETURN EndObject( m.cColorpanel ) END EndColorpanel;
PROCEDURE endColoradjust*{"MuiBasics.EndColoradjust"};
PROCEDURE EndColoradjust*():m.Object; BEGIN RETURN EndObject( m.cColoradjust ) END EndColoradjust;
PROCEDURE endPalette*{"MuiBasics.EndPalette"};
PROCEDURE EndPalette*():m.Object; BEGIN RETURN EndObject( m.cPalette ) END EndPalette;
PROCEDURE endGroup*{"MuiBasics.EndGroup"};
PROCEDURE EndGroup*():m.Object; BEGIN RETURN EndObject( m.cGroup ) END EndGroup;
PROCEDURE endRegister*{"MuiBasics.EndRegister"};
PROCEDURE EndRegister*():m.Object; BEGIN RETURN EndObject( m.cRegister ) END EndRegister;
PROCEDURE endVirtgroup*{"MuiBasics.EndVirtgroup"};
PROCEDURE EndVirtgroup*():m.Object; BEGIN RETURN EndObject( m.cVirtgroup ) END EndVirtgroup;
PROCEDURE endScrollgroup*{"MuiBasics.EndScrollgroup"};
PROCEDURE EndScrollgroup*():m.Object; BEGIN RETURN EndObject( m.cScrollgroup ) END EndScrollgroup;
PROCEDURE endPopstring*{"MuiBasics.EndPopstring"};
PROCEDURE EndPopstring*():m.Object; BEGIN RETURN EndObject( m.cPopstring ) END EndPopstring;
PROCEDURE endPopobject*{"MuiBasics.EndPopobject"};
PROCEDURE EndPopobject*():m.Object; BEGIN RETURN EndObject( m.cPopobject ) END EndPopobject;
PROCEDURE endPoplist*{"MuiBasics.EndPoplist"};
PROCEDURE EndPoplist*():m.Object; BEGIN RETURN EndObject( m.cPoplist ) END EndPoplist;
PROCEDURE endPopasl*{"MuiBasics.EndPopasl"};
PROCEDURE EndPopasl*():m.Object; BEGIN RETURN EndObject( m.cPopasl ) END EndPopasl;
PROCEDURE endScrmodelist*{"MuiBasics.EndScrmodelist"};
PROCEDURE EndScrmodelist*():m.Object; BEGIN RETURN EndObject( m.cScrmodelist ) END EndScrmodelist;
PROCEDURE endVGroup*{"MuiBasics.EndVGroup"};
PROCEDURE EndVGroup*():m.Object; BEGIN RETURN EndGroup(); END EndVGroup;
PROCEDURE endHGroup*{"MuiBasics.EndHGroup"};
PROCEDURE EndHGroup*():m.Object; BEGIN RETURN EndGroup(); END EndHGroup;
PROCEDURE endColGroup*{"MuiBasics.EndColGroup"};
PROCEDURE EndColGroup*():m.Object; BEGIN RETURN EndGroup(); END EndColGroup;
PROCEDURE endRowGroup*{"MuiBasics.EndRowGroup"};
PROCEDURE EndRowGroup*():m.Object; BEGIN RETURN EndGroup(); END EndRowGroup;
PROCEDURE endPageGroup*{"MuiBasics.EndPageGroup"};
PROCEDURE EndPageGroup*():m.Object; BEGIN RETURN EndGroup(); END EndPageGroup;
PROCEDURE endVGroupV*{"MuiBasics.EndVGroupV"};
PROCEDURE EndVGroupV*():m.Object; BEGIN RETURN EndVirtgroup(); END EndVGroupV;
PROCEDURE endHGroupV*{"MuiBasics.EndHGroupV"};
PROCEDURE EndHGroupV*():m.Object; BEGIN RETURN EndVirtgroup(); END EndHGroupV;
PROCEDURE endColGroupV*{"MuiBasics.EndColGroupV"};
PROCEDURE EndColGroupV*():m.Object; BEGIN RETURN EndVirtgroup(); END EndColGroupV;
PROCEDURE endRowGroupV*{"MuiBasics.EndRowGroupV"};
PROCEDURE EndRowGroupV*():m.Object; BEGIN RETURN EndVirtgroup(); END EndRowGroupV;
PROCEDURE endPageGroupV*{"MuiBasics.EndPageGroupV"};
PROCEDURE EndPageGroupV*():m.Object; BEGIN RETURN EndVirtgroup(); END EndPageGroupV;
PROCEDURE endRegisterGroup*{"MuiBasics.EndRegisterGroup"};
PROCEDURE EndRegisterGroup*():m.Object; BEGIN RETURN EndObject( m.cRegister ) END EndRegisterGroup;
PROCEDURE NewObjectA*( name{8} : e.STRPTR; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewClass();
COPY( name^, no.tailPred(Class).name );
TagsA( tags );
END NewObjectA;
PROCEDURE NewObject{"MuiBasics.NewObjectA"} ( name {8} : ARRAY OF CHAR; tags{9}.. : u.Tag );
PROCEDURE INewObjectA*( iclass{8} : I.IClassPtr; name{9}: e.STRPTR; tags{10} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewClass();
IF name # NIL THEN
COPY( name^, no.tailPred(Class).name );
END;
no.tailPred(Class).iclass := iclass;
TagsA( tags );
END INewObjectA;
PROCEDURE INewObject*{"MuiBasics.INewObjectA"}( iclass{8} : I.IClassPtr; name {9} : ARRAY OF CHAR; tags{10}.. : u.Tag );
(***************************************************************************
** Class Tree
****************************************************************************
**
** rootclass (B00PSI's base class)
** +--Notify (implements notification mechanism)
** +--Family (handles multiple children)
** ! +--Menustrip (describes a complete menu strip)
** ! +--Menu (describes a single menu)
** ! \--Menuitem (describes a single menu item)
** +--Application (main class for all applications)
** +--Window (handles intuition window related topics)
** +--Area (base class for all GUI elements)
** +--Rectangle (creates (empty) rectangles)
** +--Image (creates images)
** +--Text (creates some text)
** +--String (creates a string gadget)
** +--Prop (creates a proportional gadget)
** +--Gauge (creates a fule gauge)
** +--Scale (creates a percentage scale)
** +--Boopsi (interface to B00PSI gadgets)
** +--Colorfield (creates a field with changeable color)
** +--List (creates a line-oriented list)
** ! +--Floattext (special list with floating text)
** ! +--Volumelist (special list with volumes)
** ! +--Scrmodelist (special list with screen modes)
** ! \--Dirlist (special list with files)
** +--Group (groups other GUI elements)
** +--Register (handles page groups with titles)
** +--Virtgroup (handles virtual groups)
** +--Scrollgroup (handles virtual groups with scrollers)
** +--Scrollbar (creates a scrollbar)
** +--Listview (creates a listview)
** +--Radio (creates radio buttons)
** +--Cycle (creates cycle gadgets)
** +--Slider (creates slider gadgets)
** +--Coloradjust (creates some RGB sliders)
** +--Palette (creates a complete palette gadget)
** +--Colorpanel (creates a panel of colors)
** +--Popstring (base class for popups)
** +--Popobject(popup a MUI object in a window)
** \--Popasl (popup an asl requester)
**
**************************************************************)
(**************************************************************************
**
** Object Generation
** -----------------
**
** The xxxObject (and xChilds) procedures generate new instances of MUI classes.
** Every xxxObject can be followed by tagitems specifying initial create
** time attributes for the new object and must be terminated with the
** End macro:
**
** StringObject;
** TagItem2( m.aStringContents, "foo",
** m.aStringMaxLen , 40 );
** obj := End();
**
** With the Child, SubWindow and WindowContents shortcuts you can
** construct a complete GUI within one command:
**
** ApplicationObject;
**
** ...
**
** SubWindow; WindowObject;
** WindowContents; VGroup;
** Child; String("foo",40);
** Child; String("bar",50);
** Child; HGroup;
** Child; CheckMark(TRUE);
** Child; CheckMark(FALSE);
** end;
** end;
** end;
**
** SubWindow; WindowObject;
** WindowContents; HGroup;
** Child; ...;
** Child; ...;
** end;
** end;
**
** ...
**
** app := End();
**
***************************************************************************)
PROCEDURE FamilyObject*{"MuiBasics.FamilyObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE FamilyObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cFamily ), tags );
END FamilyObjectA;
PROCEDURE MenustripObject*{"MuiBasics.MenustripObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE MenustripObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cMenustrip ), tags );
END MenustripObjectA;
PROCEDURE MenuObject*{"MuiBasics.MenuObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE MenuObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cMenu ), tags );
END MenuObjectA;
PROCEDURE MenuObjectT*{"MuiBasics.MenuObjectTA"} ( name{8}:e.STRPTR; tags{9}.. : u.Tag);
PROCEDURE MenuObjectTA*( name{8}:e.STRPTR; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
MenuObject( m.aMenuTitle, name, u.done );
TagsA( tags );
END MenuObjectTA;
PROCEDURE MenuitemObject*{"MuiBasics.MenuitemObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE MenuitemObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cMenuitem ), tags );
END MenuitemObjectA;
PROCEDURE WindowObject*{"MuiBasics.WindowObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE WindowObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cWindow ), tags );
END WindowObjectA;
PROCEDURE ImageObject*{"MuiBasics.ImageObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ImageObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cImage ), tags );
END ImageObjectA;
PROCEDURE BitmapObject*{"MuiBasics.BitmapObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE BitmapObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cBitmap ), tags );
END BitmapObjectA;
PROCEDURE BodychunkObject*{"MuiBasics.BodychunkObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE BodychunkObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cBodychunk ), tags );
END BodychunkObjectA;
PROCEDURE NotifyObject*{"MuiBasics.NotifyObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE NotifyObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cNotify ), tags );
END NotifyObjectA;
PROCEDURE ApplicationObject*{"MuiBasics.ApplicationObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ApplicationObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cApplication ), tags );
END ApplicationObjectA;
PROCEDURE TextObject*{"MuiBasics.TextObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE TextObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cText ), tags );
END TextObjectA;
PROCEDURE RectangleObject*{"MuiBasics.RectangleObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE RectangleObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cRectangle ), tags );
END RectangleObjectA;
PROCEDURE ListObject*{"MuiBasics.ListObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ListObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cList ), tags );
END ListObjectA;
PROCEDURE PropObject*{"MuiBasics.PropObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PropObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cProp ), tags );
END PropObjectA;
PROCEDURE StringObject*{"MuiBasics.StringObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE StringObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cString ), tags );
END StringObjectA;
PROCEDURE ScrollbarObject*{"MuiBasics.ScrollbarObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ScrollbarObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cScrollbar ), tags );
END ScrollbarObjectA;
PROCEDURE ListviewObject*{"MuiBasics.ListviewObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ListviewObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cListview), tags );
END ListviewObjectA;
PROCEDURE RadioObject*{"MuiBasics.RadioObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE RadioObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cRadio ), tags );
END RadioObjectA;
PROCEDURE VolumelistObject*{"MuiBasics.VolumelistObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE VolumelistObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cVolumelist), tags );
END VolumelistObjectA;
PROCEDURE FloattextObject*{"MuiBasics.FloattextObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE FloattextObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cFloattext), tags );
END FloattextObjectA;
PROCEDURE DirlistObject*{"MuiBasics.DirlistObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE DirlistObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cDirlist ), tags );
END DirlistObjectA;
PROCEDURE SliderObject*{"MuiBasics.SliderObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE SliderObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cSlider ), tags );
END SliderObjectA;
PROCEDURE CycleObject*{"MuiBasics.CycleObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE CycleObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cCycle ), tags );
END CycleObjectA;
PROCEDURE GaugeObject*{"MuiBasics.GaugeObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE GaugeObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cGauge ), tags );
END GaugeObjectA;
PROCEDURE ScaleObject*{"MuiBasics.ScaleObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ScaleObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cScale ), tags );
END ScaleObjectA;
PROCEDURE BoopsiObject*{"MuiBasics.BoopsiObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE BoopsiObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cBoopsi ), tags );
END BoopsiObjectA;
PROCEDURE ColorfieldObject*{"MuiBasics.ColorfieldObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ColorfieldObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cColorfield ), tags );
END ColorfieldObjectA;
PROCEDURE ColorpanelObject*{"MuiBasics.ColorpanelObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ColorpanelObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cColorpanel ), tags );
END ColorpanelObjectA;
PROCEDURE ColoradjustObject*{"MuiBasics.ColoradjustObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ColoradjustObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cColoradjust ), tags );
END ColoradjustObjectA;
PROCEDURE PaletteObject*{"MuiBasics.PaletteObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PaletteObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cPalette ), tags );
END PaletteObjectA;
PROCEDURE GroupObject*{"MuiBasics.GroupObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE GroupObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cGroup), tags );
END GroupObjectA;
PROCEDURE RegisterObject*{"MuiBasics.RegisterObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE RegisterObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cRegister ), tags );
END RegisterObjectA;
PROCEDURE VirtgroupObject*{"MuiBasics.VirtgroupObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE VirtgroupObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cVirtgroup ), tags );
END VirtgroupObjectA;
PROCEDURE ScrollgroupObject*{"MuiBasics.ScrollgroupObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ScrollgroupObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cScrollgroup ), tags );
END ScrollgroupObjectA;
PROCEDURE PopstringObject*{"MuiBasics.PopstringObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PopstringObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cPopstring ), tags );
END PopstringObjectA;
PROCEDURE PopobjectObject*{"MuiBasics.PopobjectObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PopobjectObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cPopobject ), tags );
END PopobjectObjectA;
PROCEDURE PoplistObject*{"MuiBasics.PoplistObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PoplistObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cPoplist ), tags );
END PoplistObjectA;
PROCEDURE PopaslObject*{"MuiBasics.PopaslObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE PopaslObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cPopasl ), tags );
END PopaslObjectA;
PROCEDURE ScrmodelistObject*{"MuiBasics.ScrmodelistObjectA"} ( tags{9}.. : u.Tag);
PROCEDURE ScrmodelistObjectA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cScrmodelist ), tags );
END ScrmodelistObjectA;
PROCEDURE VGroup*{"MuiBasics.VGroupA"}( tags{9}.. : u.Tag );
PROCEDURE VGroupA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cGroup ), tags );
TagsA( tags );
END VGroupA;
PROCEDURE HGroup*{"MuiBasics.HGroupA"}( tags{9}.. : u.Tag );
PROCEDURE HGroupA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cGroup, m.aGroupHoriz, e.true, u.end );
TagsA( tags );
END HGroupA;
PROCEDURE ColGroup*{"MuiBasics.ColGroupA"} ( cols{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE ColGroupA*( cols{3} : LONGINT; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cGroup, m.aGroupColumns, cols, u.end );
TagsA( tags );
END ColGroupA;
PROCEDURE RowGroup*{"MuiBasics.RowGroupA"}( rows{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE RowGroupA*( rows{3} : LONGINT; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cGroup, m.aGroupRows, rows, u.end );
TagsA( tags );
END RowGroupA;
PROCEDURE PageGroup*{"MuiBasics.PageGroupA"}( tags{9}.. : u.Tag );
PROCEDURE PageGroupA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cGroup, m.aGroupPageMode, e.true, u.end );
TagsA( tags );
END PageGroupA;
PROCEDURE VGroupV*{"MuiBasics.VGroupAV"}( tags{9}.. : u.Tag );
PROCEDURE VGroupAV*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObjectA( y.ADR( m.cVirtgroup ), tags );
TagsA( tags );
END VGroupAV;
PROCEDURE HGroupV*{"MuiBasics.HGroupAV"}( tags{9}.. : u.Tag );
PROCEDURE HGroupAV*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cVirtgroup, m.aGroupHoriz, e.true, u.end );
TagsA( tags );
END HGroupAV;
PROCEDURE ColGroupV*{"MuiBasics.ColGroupAV"} ( cols{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE ColGroupAV*( cols{3} : LONGINT; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cVirtgroup, m.aGroupColumns, cols, u.end );
TagsA( tags );
END ColGroupAV;
PROCEDURE RowGroupV*{"MuiBasics.RowGroupAV"}( rows{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE RowGroupAV*( rows{3} : LONGINT; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cVirtgroup, m.aGroupRows, rows, u.end );
TagsA( tags );
END RowGroupAV;
PROCEDURE PageGroupV*{"MuiBasics.PageGroupAV"}( tags{9}.. : u.Tag );
PROCEDURE PageGroupAV*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cVirtgroup, m.aGroupPageMode, e.true, u.end );
TagsA( tags );
END PageGroupAV;
PROCEDURE RegisterGroup*{"MuiBasics.RegisterGroupA"}( t{8} : e.APTR; tags{9}.. : u.Tag );
PROCEDURE RegisterGroupA*( t{8} : e.APTR; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
NewObject( m.cRegister, m.aRegisterTitles, t, u.end );
TagsA( tags );
END RegisterGroupA;
PROCEDURE Child*();
(* $SaveRegs+ *)
BEGIN
Tag( m.aGroupChild );
END Child;
PROCEDURE SubWindow*();
(* $SaveRegs+ *)
BEGIN
Tag( m.aApplicationWindow );
END SubWindow;
PROCEDURE WindowContents*();
(* $SaveRegs+ *)
BEGIN
Tag( m.aWindowRootObject );
END WindowContents;
(***************************************************************************
**
** Frame Types
** -----------
**
** These procedures may be used to specify one of MUI's different frame types.
** Note that every procedure consists of one or more { ti_Tag, ti_Data }
** pairs.
**
** GroupFrameT() is a special kind of frame that contains a centered
** title text.
**
** HGroup; GroupFrameT("Horiz Groups");
** Child; RectangleObject; TextFrame ; end;
** Child; RectangleObject; StringFrame; end;
** Child; RectangleObject; ButtonFrame; end;
** Child; RectangleObject; ListFrame ; end;
** end;
**
***************************************************************************)
PROCEDURE NoFrame*{"MuiBasics.NoFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE NoFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameNone );
TagsA( tags );
END NoFrameA;
PROCEDURE ButtonFrame*{"MuiBasics.ButtonFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE ButtonFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameButton );
TagsA( tags );
END ButtonFrameA;
PROCEDURE ImageButtonFrame*{"MuiBasics.ImageButtonFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE ImageButtonFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameImageButton );
TagsA( tags );
END ImageButtonFrameA;
PROCEDURE TextFrame*{"MuiBasics.TextFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE TextFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameText );
TagsA( tags );
END TextFrameA;
PROCEDURE StringFrame*{"MuiBasics.StringFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE StringFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameString );
TagsA( tags );
END StringFrameA;
PROCEDURE ReadListFrame*{"MuiBasics.ReadListFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE ReadListFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameReadList );
TagsA( tags );
END ReadListFrameA;
PROCEDURE InputListFrame*{"MuiBasics.InputListFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE InputListFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameInputList );
TagsA( tags );
END InputListFrameA;
PROCEDURE PropFrame*{"MuiBasics.PropFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE PropFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameProp );
TagsA( tags );
END PropFrameA;
PROCEDURE SliderFrame*{"MuiBasics.SliderFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE SliderFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameSlider );
TagsA( tags );
END SliderFrameA;
PROCEDURE GaugeFrame*{"MuiBasics.GaugeFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE GaugeFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameGauge );
TagsA( tags );
END GaugeFrameA;
PROCEDURE VirtualFrame*{"MuiBasics.VirtualFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE VirtualFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameVirtual );
TagsA( tags );
END VirtualFrameA;
PROCEDURE GroupFrame*{"MuiBasics.GroupFrameA"} ( tags{9}.. : u.Tag );
PROCEDURE GroupFrameA*( tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aFrame , m.vFrameGroup );
TagsA( tags );
END GroupFrameA;
PROCEDURE GroupFrameT*{"MuiBasics.GroupFrameTA"}( s{8} : ARRAY OF CHAR; tags{9}.. : u.Tag );
PROCEDURE GroupFrameTA*( s{8} : e.STRPTR; tags{9} : u.TagListPtr );
(* $SaveRegs+ *)
BEGIN
TagItem2( m.aFrame, m.vFrameGroup, m.aFrameTitle, s );
TagsA( tags );
END GroupFrameTA;
(***************************************************************************
**
** Baring Procedures
** ------------------
**
***************************************************************************)
PROCEDURE HBar*();
BEGIN
Tag( m.NewObject( m.cRectangle,
m.aRectangleHBar, e.true,
m.aFixHeight, 2,
u.done ) );
END HBar;
PROCEDURE VBar*();
BEGIN
Tag( m.NewObject( m.cRectangle,
m.aRectangleVBar, e.true,
m.aFixWidth, 2,
u.done ) );
END VBar;
(***************************************************************************
**
** Spacing Procedures
** ------------------
**
***************************************************************************)
PROCEDURE GroupSpacing*( x: LONGINT );
(* $SaveRegs+ *)
BEGIN
TagItem( m.aGroupSpacing, x );
END GroupSpacing;
PROCEDURE HVSpace*();
(* $SaveRegs+ *)
BEGIN
Tag( m.NewObject( m.cRectangle, u.done ) );
END HVSpace;
PROCEDURE HSpace*( x : LONGINT );
(* $SaveRegs+ *)
VAR t : u.Tags3;
BEGIN
IF x # 0 THEN
t[0].tag := m.aFixWidth;
t[0].data := x;
ELSE
t[0].tag := u.ignore;
END;
t[1] := u.TagItem( m.aVertWeight, 0 );
t[2] := u.TagItem( u.done, 0 );
Tag( m.NewObjectA( m.cRectangle, t ) );
END HSpace;
PROCEDURE VSpace*( x : LONGINT );
(* $SaveRegs+ *)
VAR t : u.Tags3;
BEGIN
IF x # 0 THEN
t[0].tag := m.aFixHeight;
t[0].data := x;
ELSE
t[0].tag := u.ignore;
END;
t[1] := u.TagItem( m.aHorizWeight, 0 );
t[2] := u.TagItem( u.done, 0 );
Tag( m.NewObjectA( m.cRectangle, t ) );
END VSpace;
PROCEDURE HCenterBegin*();
(* $SaveRegs+ *)
BEGIN
HGroup; GroupSpacing( 0 );
Child; HSpace( 0 );
END HCenterBegin;
PROCEDURE HCenterEnd*();
(* $SaveRegs+ *)
BEGIN
Child; HSpace( 0 );
end;
END HCenterEnd;
PROCEDURE VCenterBegin*();
(* $SaveRegs+ *)
BEGIN
VGroup; GroupSpacing( 0 );
Child ; VSpace( 0 );
END VCenterBegin;
PROCEDURE VCenterEnd*();
(* $SaveRegs+ *)
BEGIN
Child ; VSpace( 0 );
end;
END VCenterEnd;
PROCEDURE InnerSpacing*( h, v : LONGINT );
(* $SaveRegs+ *)
BEGIN
Tags( m.aInnerLeft , h,
m.aInnerRight , h,
m.aInnerTop , v,
m.aInnerBottom , v,
u.end );
END InnerSpacing;
(***************************************************************************
**
** String-Object
** -------------
**
** The following procedure creates a simple string gadget.
**
***************************************************************************)
PROCEDURE String * {"MuiBasics.StringA"} ( contents{8} : e.STRPTR; maxlen{3} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE string * {"MuiBasics.StringA"} ( contents{8} : e.STRPTR; maxlen{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE StringA*( contents{8} : e.STRPTR; maxlen{3} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
StringObject; StringFrame;
TagItem2( m.aStringMaxLen, maxlen,
m.aStringContents, contents );
TagsA( tags );
RETURN End();
END StringA;
PROCEDURE KeyString * {"MuiBasics.KeyStringA"} ( contents{8} : e.STRPTR; maxlen{3} : LONGINT; controlchar{4}: CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyString * {"MuiBasics.KeyStringA"} ( contents{8} : e.STRPTR; maxlen{3} : LONGINT; controlchar{4}: CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyStringA*( contents{8} : e.STRPTR; maxlen{3} : LONGINT; controlchar{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN String( contents, maxlen, m.aControlChar, controlchar, u.more, tags );
END KeyStringA;
(***************************************************************************
**
** Integer-Object
** --------------
**
** The following procedure creates a simple integer string gadget.
**
***************************************************************************)
PROCEDURE Integer * {"MuiBasics.IntegerA"} ( contents{2} : LONGINT; maxlen{3} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE integer * {"MuiBasics.IntegerA"} ( contents{2} : LONGINT; maxlen{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE IntegerA*( contents{2} : e.STRPTR; maxlen{3} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
StringObject; StringFrame;
TagItem3( m.aStringMaxLen, maxlen,
m.aStringInteger, contents,
m.aStringAccept, y.ADR( "0123456789" ) );
TagsA( tags );
RETURN End();
END IntegerA;
PROCEDURE KeyInteger * {"MuiBasics.KeyIntegerA"} ( contents{2} : LONGINT; maxlen{3} : LONGINT; controlchar{4}: CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyInteger * {"MuiBasics.KeyIntegerA"} ( contents{2} : LONGINT; maxlen{3} : LONGINT; controlchar{4}: CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyIntegerA*( contents{2} : LONGINT; maxlen{3} : LONGINT; controlchar{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Integer( contents, maxlen, m.aControlChar, controlchar, u.more, tags );
END KeyIntegerA;
(***************************************************************************
**
** CheckMark-Object
** ----------------
**
** The following procedure creates a checkmark gadget.
**
***************************************************************************)
PROCEDURE CheckMark * {"MuiBasics.CheckMarkA"}( checked{4} : BOOLEAN; tags{9}.. : u.Tag ):m.Object;
PROCEDURE checkMark * {"MuiBasics.CheckMarkA"}( checked{4} : BOOLEAN; tags{9}.. : u.Tag );
PROCEDURE CheckMarkA*( checked{4} : e.LONGBOOL; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
ImageObject;
ImageButtonFrame;
Tags( m.aInputMode , m.vInputModeToggle,
m.aImageSpec , m.iCheckMark,
m.aImageFreeVert, e.true,
m.aSelected , checked,
m.aBackground , m.iButtonBack,
m.aShowSelState , e.false,
u.end );
TagsA( tags );
RETURN End();
END CheckMarkA;
PROCEDURE KeyCheckMark *{"MuiBasics.KeyCheckMarkA"}( checked{4} : e.LONGBOOL; key{3} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyCheckMark *{"MuiBasics.KeyCheckMarkA"}( checked{4} : e.LONGBOOL; key{3} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyCheckMarkA*( checked{4} : e.LONGBOOL; key{3} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN CheckMark( y.VAL( BOOLEAN, SHORT(SHORT(checked)) ), m.aControlChar, key, u.more, tags );
END KeyCheckMarkA;
(***************************************************************************
**
** Button-Objects
** --------------
**
** Note: Use small letters for KeyButtons, e.g.
** KeyButton("Cancel",'c') and not KeyButton("Cancel",'C') !!
**
***************************************************************************)
PROCEDURE SimpleButton * {"MuiBasics.SimpleButtonA"} ( name{8} : ARRAY OF CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE simpleButton * {"MuiBasics.SimpleButtonA"} ( name{8} : ARRAY OF CHAR; tags{9}.. : u.Tag );
PROCEDURE SimpleButtonA * ( name{8} : e.STRPTR; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
TextObject;
ButtonFrame;
Tags( m.aTextContents, name,
m.aTextPreParse, y.ADR("\033c"),
m.aTextSetMax , e.false,
m.aInputMode , m.vInputModeRelVerify,
m.aBackground , m.iButtonBack,
u.end );
TagsA( tags );
RETURN End();
END SimpleButtonA;
PROCEDURE KeyButton * {"MuiBasics.KeyButtonA"} ( name{8} : ARRAY OF CHAR; key{4} : CHAR; tags{9}.. : u.TagListPtr ):m.Object;
PROCEDURE keyButton * {"MuiBasics.KeyButtonA"} ( name{8} : ARRAY OF CHAR; key{4} : CHAR; tags{9}.. : u.TagListPtr );
PROCEDURE KeyButtonA * ( name{8} : e.STRPTR; key{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN SimpleButton( name^, m.aTextHiChar, key, m.aControlChar, key, u.more, tags );
END KeyButtonA;
(***************************************************************************
**
** Cycle-Object
** ------------
**
***************************************************************************)
PROCEDURE Cycle * {"MuiBasics.CycleA"} ( entries{10} : e.APTR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE cycle * {"MuiBasics.CycleA"} ( entries{10} : e.APTR; tags{9}.. : u.Tag );
PROCEDURE CycleA * ( entries{10} : e.APTR; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
CycleObject( m.aCycleEntries, entries, u.end );
TagsA( tags );
RETURN End();
END CycleA;
PROCEDURE KeyCycle * {"MuiBasics.KeyCycleA"} ( entries{10} : e.APTR; key{4} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyCycle * {"MuiBasics.KeyCycleA"} ( entries{10} : e.APTR; key{4} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyCycleA * ( entries{10} : e.APTR; key{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Cycle( entries, m.aControlChar, key, u.more, tags );
END KeyCycleA;
(***************************************************************************
**
** Radio-Object
** ------------
**
***************************************************************************)
PROCEDURE Radio * {"MuiBasics.RadioA"} ( name{8} : ARRAY OF CHAR; entries{10} : e.APTR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE radio * {"MuiBasics.RadioA"} ( name{8} : ARRAY OF CHAR; entries{10} : e.APTR; tags{9}.. : u.Tag );
PROCEDURE RadioA * ( name{8}: e.STRPTR; entries{10} : e.APTR; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RadioObject;
GroupFrameT( name^ );
TagItem( m.aRadioEntries, entries );
TagsA( tags );
RETURN End();
END RadioA;
PROCEDURE KeyRadio * {"MuiBasics.KeyRadioA"} ( name{8} : ARRAY OF CHAR; entries{10} : e.APTR; key{4} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyRadio * {"MuiBasics.KeyRadioA"} ( name{8} : ARRAY OF CHAR; entries{10} : e.APTR; key{4} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyRadioA * ( name{8}: e.STRPTR; entries{10} : e.APTR; key{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Radio(name^, entries, m.aControlChar, key, u.more, tags );
END KeyRadioA;
(***************************************************************************
**
** Slider-Object
** -------------
**
***************************************************************************)
PROCEDURE Slider * {"MuiBasics.SliderA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE slider * {"MuiBasics.SliderA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE SliderA * ( min{2}, max{3}, level{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
SliderObject( m.aSliderMin, min,
m.aSliderMax, max,
m.aSliderLevel, level,
u.end );
TagsA( tags );
RETURN End();
END SliderA;
PROCEDURE KeySlider * {"MuiBasics.KeySliderA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keySlider * {"MuiBasics.KeySliderA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeySliderA * ( min{2}, max{3}, level{4}, key{5} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Slider( min, max, level, m.aControlChar, key, u.more, tags );
END KeySliderA;
PROCEDURE VSlider * {"MuiBasics.VSliderA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE vSlider * {"MuiBasics.VSliderA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE VSliderA * ( min{2}, max{3}, level{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Slider( min, max, level, m.aGroupHoriz, e.false, u.more, tags );
END VSliderA;
PROCEDURE KeyVSlider * {"MuiBasics.KeyVSliderA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyVSlider * {"MuiBasics.KeyVSliderA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyVSliderA * ( min{2}, max{3}, level{4}, key{5} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN VSlider( min, max, level, m.aControlChar, key, u.more, tags );
END KeyVSliderA;
(***************************************************************************
**
** Scrollbar-Object
** -------------
**
***************************************************************************)
PROCEDURE Scrollbar * {"MuiBasics.ScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE scrollbar * {"MuiBasics.ScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE ScrollbarA * ( min{2}, max{3}, level{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
ScrollbarObject( m.aSliderMin, min,
m.aSliderMax, max,
m.aSliderLevel, level,
m.aGroupHoriz, e.true,
u.end );
TagsA( tags );
RETURN End();
END ScrollbarA;
PROCEDURE KeyScrollbar * {"MuiBasics.KeyScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyScrollbar * {"MuiBasics.KeyScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyScrollbarA * ( min{2}, max{3}, level{4}, key{5} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN Scrollbar( min, max, level, m.aControlChar, key, u.more, tags );
END KeyScrollbarA;
PROCEDURE VScrollbar * {"MuiBasics.VScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE vScrollbar * {"MuiBasics.VScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE VScrollbarA * ( min{2}, max{3}, level{4} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
ScrollbarObject(m.aSliderMin, min,
m.aSliderMax, max,
m.aSliderLevel, level,
u.end );
TagsA( tags );
RETURN End();
END VScrollbarA;
PROCEDURE KeyVScrollbar * {"MuiBasics.KeyVScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag ):m.Object;
PROCEDURE keyVScrollbar * {"MuiBasics.KeyVScrollbarA"} ( min{2}, max{3}, level{4} : LONGINT; key{5} : CHAR; tags{9}.. : u.Tag );
PROCEDURE KeyVScrollbarA * ( min{2}, max{3}, level{4}, key{5} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
RETURN VScrollbar( min, max, level, m.aControlChar, key, u.more, tags );
RETURN End();
END KeyVScrollbarA;
(***************************************************************************
**
** Button to be used for popup objects
**
***************************************************************************)
PROCEDURE PopButton* {"MuiBasics.PopButtonA"} ( img{3} : LONGINT; tags{9}.. : u.Tag ):m.Object;
PROCEDURE popButton* {"MuiBasics.PopButtonA"} ( img{3} : LONGINT; tags{9}.. : u.Tag );
PROCEDURE PopButtonA*( img{3} : LONGINT; tags{9} : u.TagListPtr ):m.Object;
(* $SaveRegs+ *)
BEGIN
ImageObject;
ImageButtonFrame( m.aImageSpec, img,
m.aImageFontMatchWidth, e.true,
m.aImageFreeVert, e.true,
m.aInputMode, m.vInputModeRelVerify,
m.aBackground, m.iBACKGROUND,
u.end );
TagsA( tags );
RETURN End();
END PopButtonA;
(***************************************************************************
**
** Popup-Object
** ------------
**
** An often needed GUI element is a string gadget with a little button
** that opens up a (small) window with a list containing possible entries
** for this gadget. Together with the Popup and the String macro,
** such a thing would look like
**
** VGroup;
** Child; PopupBegin;
** Child; STFont := String( "helvetica/13", 32 );
** PopupEnd( hook, m.iPopUp, STFont );
** ...;
**
** STFont will hold a pointer to the embedded string gadget and can
** be used to set and get its contents as with every other string object.
**
** For Hook description see below.
** The hook will be called with the string gadget as object whenever
** the user releases the popup button and could look like this:
**
** PROCEDURE FontReq( hook : Hook; obj : m.Object : args : Args) : LONGINT;
** VAR window : I.WindowPtr;
** l, t, w, h : LONGINT;
** req : ASL.AslRequesterPtr;
** BEGIN
** ...
**
** (* put our application to sleep while displaying the requester *)
** Set( Application, m.aApplicationSleep, e.true );
**
** (* get the calling objects window and position *)
** Get( obj, m.aWindow , window );
** Get( obj, m.aLeftEdge, l );
** Get( obj, m.aTopEdge , t );
** Get( obj, m.aWidth , w );
** Get( obj, m.aHeight , h );
**
** req := m.AllocAslRequestTags( ASL.fontRequest, u.done )
** IF req # NIL THEN
**
** IF (m.AslRequestTags(req,
** ASL.foWindow ,window,
** ASL.foPrivateIDCMP ,TRUE,
** ASL.foTitleText ,"Select Font",
** ASL.foInitialLeftEdge,window->LeftEdge + l,
** ASL.foInitialTopEdge ,window->TopEdge + t+h,
** ASL.foInitialWidth ,w,
** ASL.foInitialHeight ,250,
** u.done ) ) THEN
**
** (* set the new contents for our string gadget *)
** Set( args(PopupArgs).linkedObj, m.aStringContents, req(ASL.FontRequester).attr.name);
** END;
** m.FreeAslRequest( req );
** END;
**
** (* wake up our application again *)
** Set(Application, m.aApplicationSleep, e.false );
**
** RETURN( 0);
** END FontReq:
**
** Note: This Procedure is translated to Oberon on the fly, no warranty is given
** that this piece of code works.
**
***************************************************************************)
PROCEDURE PopupBegin * ();
(* $SaveRegs+ *)
VAR dummy : m.Object;
BEGIN
HGroup; GroupSpacing( 1 );
END PopupBegin;
PROCEDURE popupEnd * {"MuiBasics.PopupEnd"} ( hook : Hook; img : LONGINT; obj : m.Object );
PROCEDURE PopupEnd * ( hook : Hook; img : LONGINT; obj : m.Object ):m.Object;
(* $SaveRegs+ *)
VAR dummy : m.Object;
BEGIN
Child; ImageObject;
ImageButtonFrame;
Tags( m.aImageSpec, img,
m.aImageFontMatchWidth, e.true,
m.aImageFreeVert, e.true,
m.aInputMode, m.vInputModeRelVerify,
m.aBackground, m.iButtonBack,
u.end );
dummy := End();
IF (obj # NIL) & (dummy # NIL) & (hook # NIL) THEN
SetHookObject( hook, dummy );
m.DoMethod( dummy, m.mNotify, m.aPressed, e.false,
dummy, 3, m.mCallHook, hook, obj );
END;
end;
RETURN dummy;
END PopupEnd;
(***************************************************************************
**
** Labeling Objects
** ----------------
**
** Labeling objects, e.g. a group of string gadgets,
**
** Small: |foo |
** Normal: |bar |
** Big: |foobar|
** Huge: |barfoo|
**
** is done using a 2 column group:
**
** ColGroup(2);
** Child; Label2( "Small:" );
** Child; StringObject; end;
** Child; Label2( "Normal:" );
** Child; StringObject; end;
** Child; Label2( "Big:" );
** Child; StringObject; end;
** Child; Label2( "Huge:" );
** Child; StringObject; end;
** end;
**
** Note that we have three versions of the label procedure, depending on
** the frame type of the right hand object:
**
** Label1(): For use with standard frames (e.g. checkmarks).
** Label2(): For use with double high frames (e.g. string gadgets).
** Label() : For use with objects without a frame.
**
** These procedures ensure that your label will look fine even if the
** user of your application configured some strange spacing values.
** If you want to use your own labeling, you'll have to pay attention
** on this topic yourself.
**
***************************************************************************)
PROCEDURE Label * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
RETURN End();
END Label;
PROCEDURE Label1 * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
ButtonFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END Label1;
PROCEDURE Label2 * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
StringFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END Label2;
PROCEDURE LLabel * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
RETURN End();
END LLabel;
PROCEDURE LLabel1 * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
ButtonFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END LLabel1;
PROCEDURE LLabel2 * ( label : ARRAY OF CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
StringFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END LLabel2;
PROCEDURE KeyLabel * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
RETURN End();
END KeyLabel;
PROCEDURE KeyLabel1 * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
ButtonFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END KeyLabel1;
PROCEDURE KeyLabel2 * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextPreParse, y.ADR( "\033r" ),
m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
StringFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END KeyLabel2;
PROCEDURE KeyLLabel * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
RETURN End();
END KeyLLabel;
PROCEDURE KeyLLabel1 * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
ButtonFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END KeyLLabel1;
PROCEDURE KeyLLabel2 * ( label : ARRAY OF CHAR; hichar : CHAR ):m.Object;
(* $SaveRegs+ *)
(* $CopyArrays- *)
BEGIN
TextObject( m.aTextContents, y.ADR( label ),
m.aTextHiChar , ORD( hichar ),
m.aWeight , 0,
m.aInnerLeft , 0,
m.aInnerRight , 0,
u.end );
StringFrame;
TagItem( m.aFramePhantomHoriz, e.true );
RETURN End();
END KeyLLabel2;
PROCEDURE label * {"MuiBasics.Label"} ( lab : ARRAY OF CHAR );
PROCEDURE label1 * {"MuiBasics.Label1"} ( lab : ARRAY OF CHAR );
PROCEDURE label2 * {"MuiBasics.Label2"} ( lab : ARRAY OF CHAR );
PROCEDURE lLabel * {"MuiBasics.LLabel"} ( lab : ARRAY OF CHAR );
PROCEDURE lLabel1 * {"MuiBasics.LLabel1"} ( lab : ARRAY OF CHAR );
PROCEDURE lLabel2 * {"MuiBasics.LLabel2"} ( lab : ARRAY OF CHAR );
PROCEDURE keyLabel * {"MuiBasics.KeyLabel"} ( lab : ARRAY OF CHAR; hichar : CHAR );
PROCEDURE keyLabel1 * {"MuiBasics.KeyLabel1"} ( lab : ARRAY OF CHAR; hichar : CHAR );
PROCEDURE keyLabel2 * {"MuiBasics.KeyLabel2"} ( lab : ARRAY OF CHAR; hichar : CHAR );
PROCEDURE lKeyLabel * {"MuiBasics.LKeyLabel"} ( lab : ARRAY OF CHAR; hichar : CHAR );
PROCEDURE lKeyLabel1 * {"MuiBasics.LKeyLabel1"} ( lab : ARRAY OF CHAR; hichar : CHAR );
PROCEDURE lKeyLabel2 * {"MuiBasics.LKeyLabel2"} ( lab : ARRAY OF CHAR; hichar : CHAR );
(***************************************************************************
**
** Controlling Objects
** -------------------
**
** Set() and Get() are two short stubs for BOOPSI GetAttr() and SetAttrs()
** calls:
**
**
** VAR x : e.STRPTR;
**
** Set(obj,MUIA_String_Contents, y.ADR("foobar") );
** Get(obj,MUIA_String_Contents, x);
**
** Dos.PrintF( "gadget contains '%s'\n" , x );
**
** NNset() sets an attribute without triggering a possible notification.
**
**
***************************************************************************)
PROCEDURE Set*( obj : m.Object; attr, value : e.APTR );
BEGIN
IF I.SetAttrs( obj, attr, value, u.end ) = 0 THEN END
END Set;
PROCEDURE Get*( obj : m.Object; attr : LONGINT ; VAR store : ARRAY OF e.BYTE );
BEGIN
IF I.GetAttr( attr, obj, store) = 0 THEN END
END Get;
PROCEDURE NNSet( obj : m.Object; attr, value : e.APTR );
BEGIN
IF I.SetAttrs( obj, m.aNoNotify, e.LTRUE, attr, value, u.end ) = 0 THEN END
END NNSet;
PROCEDURE SetMutex * ( obj : m.Object; n : LONGINT );
BEGIN
Set( obj, m.aRadioActive, n );
END SetMutex;
PROCEDURE SetCycle * ( obj : m.Object; n : LONGINT );
BEGIN
Set( obj, m.aCycleActive, n );
END SetCycle;
PROCEDURE SetString * ( obj : m.Object; s : e.STRPTR );
BEGIN
Set( obj, m.aStringContents, s );
END SetString;
PROCEDURE SetCheckmark * ( obj : m.Object; b : BOOLEAN );
BEGIN
Set( obj, m.aSelected, y.VAL(SHORTINT,b) );
END SetCheckmark;
PROCEDURE SetSlider * ( obj : m.Object; l : LONGINT );
BEGIN
Set( obj, m.aSliderLevel, l );
END SetSlider;
BEGIN
Init();
END MuiBasics.