home *** CD-ROM | disk | FTP | other *** search
- { Gadget-Demo.p ©1994 by Björn "BOMBER" Schotte }
- { written for MaxonPASCAL 3 (© by MAXON) }
- { }
- { C U in the next P.U.R.I.T.Y. ! }
- { }
- { Dieses Programm demonstriert das Kreieren von }
- { Gadgets unter der GadTools-Library. }
- { Es gibt noch viele andere Typen, dies sollte }
- { aber genügen. }
- { BS/26/07/94 }
-
- PROGRAM GadgetDemo;
-
- USES Intuition, Graphics, Exec;
-
- {$incl "gadtools.lib"}
-
- VAR
- wp : p_Window;
- t : ARRAY[1..11] OF TagItem;
- gad : ARRAY[1..4] OF p_Gadget;
- gl : p_Gadget;
- lib : p_Library;
- ps : p_Screen;
- vi : PTR;
- ng : NewGadget;
- tattr : TextAttr;
- xoff,yoff,
- i : INTEGER;
- CLabels : ARRAY[0..9] OF STR;
- MXLabels : ARRAY[1..3] OF STR;
- dstring : STRING;
- msg : p_IntuiMessage;
- class : LONG;
- act : INTEGER;
-
-
- { Sauberes Verlassen des Programms aus jeder Situation heraus. }
- PROCEDURE CleanUp(txt:STRING; rc:BYTE);
- BEGIN
- IF wp <> NIL THEN CloseWindow(wp); { Fenster schliessen }
- IF gl <> NIL THEN FreeGadgets(gl); { GadgetListe freigeben }
- IF vi <> NIL THEN FreeVisualInfo(vi); { VisualInfo freigeben }
- IF txt <> "" THEN Writeln(txt); { Text ausgeben }
- HALT(rc);
- END;
-
- BEGIN
- { Cycle- bzw. MX-Labels immer mit NIL abschliessen !!
- Labels müssen vom Typ STR sein !! }
- CLabels[0] := "Zustand 1";
- CLabels[1] := "Zustand 2";
- CLabels[2] := "Zustand 3";
- CLabels[3] := "Zustand 4";
- CLabels[4] := "Zustand 5";
- CLabels[5] := "Zustand 6";
- CLabels[6] := "Zustand 7";
- CLabels[7] := "Zustand 8";
- CLabels[8] := "Zustand 9";
- CLabels[9] := NIL;
- MXLabels[1] := "6 LPI";
- MXLabels[2] := "8 LPI";
- MXLabels[3] := NIL;
- act := 0;
- gl := NIL;
- wp := NIL;
- vi := NIL;
- tattr := TextAttr("topaz.font",8,0,0);
- lib := IntuitionBase;
- IF lib^.lib_Version < 36 THEN Error("Ich brauche mind. Kick 2.00 !!");
- OpenLib(GadToolsBase, "gadtools.library", 36);
- ps := LockPubScreen(NIL);
- IF ps = NIL THEN CleanUp("Kann den PublicScreen nicht locken !!",20);
- xoff := ps^.WBorLeft;
- yoff := ps^.BarHeight;
- vi := GetVisualInfoA(ps, NIL);
- UnLockPubScreen(NIL, ps);
- IF vi = NIL THEN CleanUp("Konnte keine VisualInfo bekommen !!",20);
-
- { Gadgets kreieren: }
- gl := NIL;
- gl := CreateContext(^gl);
- IF gl = NIL THEN CleanUp("Kein Speicher mehr frei für CreateContext !!",20);
- { Button-Gadget kreieren: }
- ng := NewGadget(xoff+1,yoff+2, { LeftEdge, TopEdge }
- 200,13, { Width, Height }
- "_Button-Gadget!",^tattr, { GadgetText, TextAttr }
- 1,PLACETEXT_IN, { GadgetNumber, Flags }
- vi,NIL); { VisualInfo, UserData }
- t[1] := TagItem(GT_Underscore, LONG("_"));
- t[2].ti_Tag := TAG_DONE;
- gad[1] := CreateGadgetA(BUTTON_KIND,gl,^ng,^t);
- IF gad[1] = NIL THEN CleanUp("Kein Speicher für CreateGadgetA frei !!",20);
- { Checkbox-Gadget kreieren: }
- ng := NewGadget(xoff+1,yoff+18,
- 26,11,
- "Dieses Proggy ist gut",^tattr,
- 2,PLACETEXT_RIGHT,
- vi,NIL);
- t[1] := TagItem(GTCB_Checked,1);
- t[2].ti_Tag := TAG_DONE;
- gad[2] := CreateGadgetA(CHECKBOX_KIND,gad[1],^ng,^t);
- IF gad[2] = NIL THEN CleanUp("Kein Speicher frei !!",20);
- { Cycle-Gadget kreieren: }
- ng := NewGadget(xoff+1,yoff+33,
- 200,13,
- NIL,^tattr,
- 3,0,
- vi,NIL);
- t[1] := TagItem(GTCY_Labels,LONG(^CLabels)); { Cycle-Texte }
- gad[3] := CreateGadgetA(CYCLE_KIND,gad[2],^ng,^t);
- IF gad[3] = NIL THEN CleanUp("Kein Speicher frei !!",20);
- { MX-Gadget kreieren: }
- ng := NewGadget(xoff+203,yoff+33,
- MX_WIDTH,MX_HEIGHT,
- NIL,^tattr,
- 4,PLACETEXT_RIGHT,
- vi,NIL);
- t[1] := TagItem(GTMX_Labels, LONG(^MXLabels)); { MX-Labels }
- gad[4] := CreateGadgetA(MX_KIND,gad[3],^ng,^t);
- IF gad[4] = NIL THEN CleanUp("Kein Speicher frei !!",20);
- { Window-Tags: }
- t[1] := TagItem(WA_InnerWidth, 400); { Breite ohne Fensterrahmen }
- t[2] := TagItem(WA_InnerHeight, 150); { Höhe ohne Fensterrahmen }
- t[3] := TagItem(WA_Flags, WFLG_ACTIVATE+WFLG_NOCAREREFRESH+
- WFLG_SMART_REFRESH+WFLG_CLOSEGADGET+WFLG_DRAGBAR+
- WFLG_DEPTHGADGET);
- t[4] := TagItem(WA_Idcmp, IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_GADGETDOWN);
- t[5].ti_Tag := WA_Title;
- t[5].ti_Data := "Gadget-Demo by Björn Schotte";
- t[6] := TagItem(WA_Gadgets, LONG(gl)); { Zeiger auf GadList }
- t[7].ti_Tag := TAG_DONE;
- wp := OpenWindowTagList(NIL, ^t); { Fenster öffnen }
- IF wp = NIL THEN CleanUp("Kann kein Fenster öffnen !!",20);
- { Warten ... Warten ... }
- REPEAT
- msg := p_IntuiMessage(WaitPort(wp^.UserPort));
- msg := GT_GetIMsg(wp^.UserPort);
- class := msg^.Class;
- GT_ReplyIMsg(msg);
- UNTIL class = IDCMP_CLOSEWINDOW;
- CleanUp("",0);
- END.
-