| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- IMPLEMENTATION MODULE GtkDemo ;
- FROM DemoImpl IMPORT DoLinks, DoListBox, DoFlowBox, DoExpander, DoCss;
- FROM DemosBasic IMPORT DoSpinner, DoPanes, DoOverlay;
- FROM DemosLayout IMPORT DoSizeGroup, DoFixed2, DoLayoutManager;
- FROM DemosText IMPORT DoReadMore, DoRotatedText, DoTextMask, DoTextScroll, DoTextUndo;
- FROM DemosWindows IMPORT DoHeaderBar, DoInfoBar, DoTabs, DoAssistant;
- FROM DemosInput IMPORT DoPasswordEntry, DoSearchEntry, DoTaggedEntry, DoShortcutTriggers;
- FROM DemosChooser IMPORT DoComboBox, DoEntryCompletion, DoEntryUndo, DoDialog;
- FROM DemosCanvas IMPORT DoDrawingArea, DoGestures, DoMask, DoSnapping;
- FROM SYSTEM IMPORT ADDRESS;
- TYPE
- Demo = RECORD
- name: ARRAY [0..47] OF CHAR;
- build: BuildProc;
- END;
- VAR
- demos: ARRAY [0..255] OF Demo;
- n: CARDINAL;
- PROCEDURE Copy (VAR dst: ARRAY OF CHAR; src: ARRAY OF CHAR);
- VAR
- i: CARDINAL;
- BEGIN
- i := 0;
- WHILE (i < HIGH(dst)) AND (i <= HIGH(src)) AND (src[i] # 0C) DO
- dst[i] := src[i];
- INC(i)
- END;
- dst[i] := 0C
- END Copy;
- PROCEDURE Equal (a, b: ARRAY OF CHAR) : BOOLEAN;
- VAR
- i: CARDINAL;
- BEGIN
- i := 0;
- WHILE (a[i] # 0C) AND (b[i] # 0C) DO
- IF a[i] # b[i] THEN RETURN FALSE END;
- INC(i)
- END;
- RETURN a[i] = b[i]
- END Equal;
- PROCEDURE Register (name: ARRAY OF CHAR; build: BuildProc);
- BEGIN
- IF n <= HIGH(demos) THEN
- Copy(demos[n].name, name);
- demos[n].build := build;
- INC(n)
- END
- END Register;
- PROCEDURE Count () : CARDINAL;
- BEGIN
- RETURN n
- END Count;
- PROCEDURE NameOf (i: CARDINAL; VAR name: ARRAY OF CHAR);
- BEGIN
- IF i < n THEN Copy(name, demos[i].name) ELSE name[0] := 0C END
- END NameOf;
- PROCEDURE BuildByName (name: ARRAY OF CHAR; doWidget: ADDRESS) : ADDRESS;
- VAR
- i: CARDINAL;
- BEGIN
- i := 0;
- WHILE i < n DO
- IF Equal(demos[i].name, name) THEN
- RETURN demos[i].build(doWidget)
- END;
- INC(i)
- END;
- RETURN NIL
- END BuildByName;
- PROCEDURE IsPorted (name: ARRAY OF CHAR) : BOOLEAN;
- VAR
- i: CARDINAL;
- BEGIN
- i := 0;
- WHILE i < n DO
- IF Equal(demos[i].name, name) THEN RETURN TRUE END;
- INC(i)
- END;
- RETURN FALSE
- END IsPorted;
- BEGIN
- n := 0;
- Register("links", DoLinks);
- Register("listbox", DoListBox);
- Register("flowbox", DoFlowBox);
- Register("expander", DoExpander);
- Register("css_basics", DoCss);
- Register("spinner", DoSpinner);
- Register("panes", DoPanes);
- Register("overlay", DoOverlay);
- Register("sizegroup", DoSizeGroup);
- Register("fixed2", DoFixed2);
- Register("layoutmanager", DoLayoutManager);
- Register("read_more", DoReadMore);
- Register("rotated_text", DoRotatedText);
- Register("textmask", DoTextMask);
- Register("textscroll", DoTextScroll);
- Register("textundo", DoTextUndo);
- Register("headerbar", DoHeaderBar);
- Register("infobar", DoInfoBar);
- Register("tabs", DoTabs);
- Register("assistant", DoAssistant);
- Register("password_entry", DoPasswordEntry);
- Register("search_entry", DoSearchEntry);
- Register("tagged_entry", DoTaggedEntry);
- Register("shortcut_triggers", DoShortcutTriggers);
- Register("combobox", DoComboBox);
- Register("entry_completion", DoEntryCompletion);
- Register("entry_undo", DoEntryUndo);
- Register("dialog", DoDialog);
- Register("drawingarea", DoDrawingArea);
- Register("gestures", DoGestures);
- Register("mask", DoMask);
- Register("snapping", DoSnapping)
- END GtkDemo.
|