home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1990-04-11 | 3.8 KB | 152 lines |
- (* Copyright 1988 Michal Todorovic *)
-
-
- IMPLEMENTATION MODULE BatchIntuition;
-
-
- FROM Intuition IMPORT WindowPtr, IDCMPFlags,
- IDCMPFlagsSet, WindowFlags, WindowFlagsSet,
- GadgetPtr, CloseWindow, SimpleRefresh;
- FROM SYSTEM IMPORT ADR, BYTE, ADDRESS;
- FROM DosStuff IMPORT LongString, ShortString, MaxGadgets;
- FROM Strings IMPORT StringLength, ConcatString,
- InsertSubString;
- FROM SimpleGadgets IMPORT BeginGadgetList, AddGadgetString,
- AddGadgetTextButton, EndGadgetList;
- FROM SimpleWindows IMPORT CreateWindow, WindowMaxHeight,
- WindowMaxWidth, WindowDetailPen;
-
- VAR
- First : BOOLEAN;
-
-
- (**********************************************************)
- (* Puts spaces in an array. *)
- (**********************************************************)
- PROCEDURE CreateSpaces(VAR Info : ARRAY OF CHAR;
- Num : CARDINAL);
-
- VAR
- X : CARDINAL;
-
- BEGIN
- FOR X := 0 TO (Num - 1) DO
- Info[X] := ' '
- END;
- Info[Num] := 0C
- END CreateSpaces;
-
-
-
-
- (**********************************************************)
- (* Centers a gadget name in the gadget. *)
- (**********************************************************)
- PROCEDURE Center(VAR Info : ARRAY OF CHAR);
-
- VAR
- HowMany,
- Length : CARDINAL;
- Dum : ARRAY[0..7] OF CHAR;
-
- BEGIN
- Length := StringLength(Info);
- HowMany := (15 - Length) DIV 2;
- CreateSpaces(Dum, HowMany);
- InsertSubString(Info, Dum, 0);
- CreateSpaces(Dum, (15-HowMany-Length));
- ConcatString(Info, Dum)
- END Center;
-
-
-
- (**********************************************************)
- (* Opens a window. *)
- (**********************************************************)
- PROCEDURE OpenWin(VAR Win : WindowPtr; Gad : GadgetPtr;
- H : INTEGER);
- BEGIN
- (* Compensate for interlace screens. Won't hurt
- non-interlace screens. *)
- INC(WindowMaxHeight, WindowMaxHeight);
- WindowDetailPen := BYTE(2);
- Win := CreateWindow(0, 1, 640, H,
- IDCMPFlagsSet{Closewindow,GadgetUp,
- RefreshWindow},
- WindowFlagsSet{WindowClose, WindowDrag,
- WindowDepth, Activate, WindowSizing}
- + SimpleRefresh,
- Gad, NIL,
- ADR("BATCHMAN! by Michal Todorovic. V1.1"))
- END OpenWin;
-
-
-
-
- (**********************************************************)
- (* Closes a window. *)
- (**********************************************************)
- PROCEDURE CloseWin(VAR Win : WindowPtr);
-
- BEGIN
- IF Win <> NIL THEN
- CloseWindow(Win^)
- END
- END CloseWin;
-
-
-
-
- (**********************************************************)
- (* Creates all the gadgets. *)
- (**********************************************************)
- PROCEDURE SetUpGadgets(Num : INTEGER;
- VAR Info : ARRAY OF ShortString;
- VAR Top : INTEGER) : GadgetPtr;
- VAR
- Left,
- Mult,
- Length,
- Counter : INTEGER;
-
- BEGIN
- (* compensate for overscan. *)
- Mult := 163;
- Left := 10;
- Top := 15;
- BeginGadgetList();
-
- FOR Counter := 0 TO (Num - 1) DO
-
- IF First THEN
- Center(Info[Counter])
- END;
- AddGadgetTextButton(Left, Top, ADR(Info[Counter]));
-
- IF (((Counter + 1) MOD 4) = 0) THEN
- INC(Top, 15) (* go to new line *)
- END;
-
- (* decide how far left to go. *)
- Left := 10 + (((Counter + 1) MOD 4) * Mult)
- END;
-
- IF (Counter MOD 4) = 0 THEN
- INC(Top, 5)
- ELSE
- INC(Top, 20)
- END;
-
- AddGadgetString(10, Top, 75, 100, NIL);
-
- First := FALSE;
- RETURN EndGadgetList()
- END SetUpGadgets;
-
-
-
-
- BEGIN
- First := TRUE;
- END BatchIntuition.
-