From e392cd72c5e32c9aa73c0f91b69a7d939bb94214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Muszyn=CC=81ski?= Date: Sun, 14 Oct 2012 23:06:53 +0200 Subject: [PATCH] Initial load Final release from 1998/08/15. --- GadToolsBox/BCGen/SCOPTIONS | 22 + GadToolsBox/BCGen/c.generator.cd | 30 + GadToolsBox/BCGen/c.generator.ct | 42 + GadToolsBox/BCGen/funcs.c | 1117 ++++ GadToolsBox/BCGen/funcs.o | Bin 0 -> 40156 bytes GadToolsBox/BCGen/gadget.c | 1405 ++++ GadToolsBox/BCGen/gadtools.c | 581 ++ GadToolsBox/BCGen/gadtools.gtr | Bin 0 -> 4388 bytes GadToolsBox/BCGen/gadtools.h | 115 + GadToolsBox/BCGen/gadtools_cat.c | 18 + GadToolsBox/BCGen/gadtools_cat.h | 35 + GadToolsBox/BCGen/gadtools_img.c | 9 + GadToolsBox/BCGen/main.c | 1363 ++++ GadToolsBox/BCGen/main.h | 335 + GadToolsBox/BCGen/menu.c | 223 + GadToolsBox/BCGen/popupmenu.c | 62 + GadToolsBox/CGen/SCOPTIONS | 22 + GadToolsBox/CGen/c.generator.cd | 30 + GadToolsBox/CGen/c.generator.ct | 42 + GadToolsBox/CGen/funcs.c | 1418 ++++ GadToolsBox/CGen/gadget.c | 1410 ++++ GadToolsBox/CGen/gadtools.c | 581 ++ GadToolsBox/CGen/gadtools.gtr | Bin 0 -> 4388 bytes GadToolsBox/CGen/gadtools.h | 115 + GadToolsBox/CGen/gadtools_cat.c | 18 + GadToolsBox/CGen/gadtools_cat.h | 35 + GadToolsBox/CGen/gadtools_img.c | 9 + GadToolsBox/CGen/main.c | 1368 ++++ GadToolsBox/CGen/main.h | 335 + GadToolsBox/CGen/menu.c | 223 + GadToolsBox/CGen/popupmenu.c | 62 + GadToolsBox/GadToolsBox.cd | 2073 ++++++ GadToolsBox/GadToolsBox.ct | 2766 ++++++++ GadToolsBox/GadToolsBox.iff | Bin 0 -> 124396 bytes GadToolsBox/GadToolsBox.info | Bin 0 -> 835 bytes GadToolsBox/GadToolsBox5.iff | Bin 0 -> 24404 bytes GadToolsBox/Gadgets/SCOPTIONS | 21 + GadToolsBox/Gadgets/Test/SCOPTIONS | 15 + GadToolsBox/Gadgets/Test/imtoolbar.c | 138 + GadToolsBox/Gadgets/Test/listview.c | 182 + GadToolsBox/Gadgets/Test/register.c | 217 + GadToolsBox/Gadgets/Test/toolbar.c | 220 + GadToolsBox/Gadgets/listview.c | 1602 +++++ GadToolsBox/Gadgets/listview.fd | 17 + GadToolsBox/Gadgets/listview.gadget_rev.h | 6 + GadToolsBox/Gadgets/listview.gadget_rev.i | 14 + GadToolsBox/Gadgets/listview.gadget_rev.rev | 2 + GadToolsBox/Gadgets/page.c | 861 +++ GadToolsBox/Gadgets/page.fd | 4 + GadToolsBox/Gadgets/page.gadget_rev.h | 6 + GadToolsBox/Gadgets/page.gadget_rev.i | 14 + GadToolsBox/Gadgets/page.gadget_rev.rev | 1 + GadToolsBox/Gadgets/progress.c | 549 ++ GadToolsBox/Gadgets/progress.fd | 4 + GadToolsBox/Gadgets/progress.gadget_rev.h | 6 + GadToolsBox/Gadgets/progress.gadget_rev.i | 14 + GadToolsBox/Gadgets/progress.gadget_rev.rev | 1 + GadToolsBox/Gadgets/smakefile | 106 + GadToolsBox/Gadgets/smartbitmap.c | 534 ++ GadToolsBox/Gadgets/smartbitmap.fd | 4 + GadToolsBox/Gadgets/smartbitmap.image_rev.h | 6 + GadToolsBox/Gadgets/smartbitmap.image_rev.i | 14 + GadToolsBox/Gadgets/smartbitmap.image_rev.rev | 1 + GadToolsBox/Gadgets/smartbitmap_ic.src | 79 + GadToolsBox/Gadgets/toolimages.iff | Bin 0 -> 24706 bytes GadToolsBox/Gadgets/windowclass/SCOPTIONS | 10 + GadToolsBox/Gadgets/windowclass/WndTest.info | Bin 0 -> 822 bytes GadToolsBox/Gadgets/windowclass/amigaguide.c | 288 + GadToolsBox/Gadgets/windowclass/amigaguide.h | 20 + GadToolsBox/Gadgets/windowclass/arexx.c | 384 ++ GadToolsBox/Gadgets/windowclass/arexx.h | 41 + GadToolsBox/Gadgets/windowclass/commodities.c | 290 + GadToolsBox/Gadgets/windowclass/commodities.h | 28 + GadToolsBox/Gadgets/windowclass/gadgets.c | 173 + GadToolsBox/Gadgets/windowclass/gadgets.h | 13 + GadToolsBox/Gadgets/windowclass/gadgetsold.c | 206 + GadToolsBox/Gadgets/windowclass/gadgetsold.h | 8 + GadToolsBox/Gadgets/windowclass/gadtoolsbox.c | 177 + GadToolsBox/Gadgets/windowclass/gadtoolsbox.h | 92 + .../Gadgets/windowclass/gadtoolsbox.lib | Bin 0 -> 34388 bytes GadToolsBox/Gadgets/windowclass/main.c | 225 + GadToolsBox/Gadgets/windowclass/messages.c | 289 + GadToolsBox/Gadgets/windowclass/messages.h | 12 + GadToolsBox/Gadgets/windowclass/rxtest.wtest | 10 + GadToolsBox/Gadgets/windowclass/screen.c | 482 ++ GadToolsBox/Gadgets/windowclass/screen.h | 56 + GadToolsBox/Gadgets/windowclass/smakefile | 68 + GadToolsBox/Gadgets/windowclass/window.c | 964 +++ GadToolsBox/Gadgets/windowclass/window.h | 100 + GadToolsBox/PlugIns/button.c | 335 + GadToolsBox/PlugIns/button.h | 12 + GadToolsBox/PlugIns/checkbox.c | 276 + GadToolsBox/PlugIns/checkbox.h | 9 + GadToolsBox/PlugIns/colorwheel.c | 280 + GadToolsBox/PlugIns/colorwheel.h | 12 + GadToolsBox/PlugIns/cycle.c | 321 + GadToolsBox/PlugIns/cycle.h | 12 + GadToolsBox/PlugIns/datatype.c | 309 + GadToolsBox/PlugIns/datatype.h | 11 + GadToolsBox/PlugIns/gradientslider.c | 323 + GadToolsBox/PlugIns/gradientslider.h | 10 + GadToolsBox/PlugIns/integer.c | 300 + GadToolsBox/PlugIns/integer.h | 9 + GadToolsBox/PlugIns/listview.c | 357 + GadToolsBox/PlugIns/listview.h | 11 + GadToolsBox/PlugIns/mx.c | 415 ++ GadToolsBox/PlugIns/mx.h | 13 + GadToolsBox/PlugIns/number.c | 281 + GadToolsBox/PlugIns/number.h | 9 + GadToolsBox/PlugIns/page.c | 609 ++ GadToolsBox/PlugIns/page.h | 13 + GadToolsBox/PlugIns/palette.c | 371 + GadToolsBox/PlugIns/palette.h | 9 + GadToolsBox/PlugIns/popupmenu.c | 217 + GadToolsBox/PlugIns/popupmenu.h | 10 + GadToolsBox/PlugIns/progress.c | 280 + GadToolsBox/PlugIns/progress.h | 10 + GadToolsBox/PlugIns/scroller.c | 342 + GadToolsBox/PlugIns/scroller.h | 9 + GadToolsBox/PlugIns/slider.c | 406 ++ GadToolsBox/PlugIns/slider.h | 9 + GadToolsBox/PlugIns/string.c | 317 + GadToolsBox/PlugIns/string.h | 9 + GadToolsBox/PlugIns/tapedeck.c | 328 + GadToolsBox/PlugIns/tapedeck.h | 12 + GadToolsBox/PlugIns/text.c | 282 + GadToolsBox/PlugIns/text.h | 9 + GadToolsBox/PlugIns/textfield.c | 528 ++ GadToolsBox/PlugIns/textfield.h | 10 + GadToolsBox/PlugIns/treeview.c | 331 + GadToolsBox/PlugIns/treeview.h | 12 + GadToolsBox/SCOPTIONS | 24 + GadToolsBox/WinGen/SCOPTIONS | 21 + GadToolsBox/WinGen/gadget.c | 295 + GadToolsBox/WinGen/gadtools.c | 586 ++ GadToolsBox/WinGen/gadtools.gtr | Bin 0 -> 3658 bytes GadToolsBox/WinGen/gadtools.h | 111 + GadToolsBox/WinGen/gadtools_cat.c | 19 + GadToolsBox/WinGen/gadtools_cat.h | 37 + GadToolsBox/WinGen/gadtools_img.c | 9 + GadToolsBox/WinGen/main.c | 810 +++ GadToolsBox/WinGen/main.h | 334 + GadToolsBox/WinGen/menu.c | 64 + GadToolsBox/WinGen/win32resource.generator.cd | 33 + GadToolsBox/WinGen/win32resource.generator.ct | 46 + GadToolsBox/amigaguide.c | 289 + GadToolsBox/amigaguide.h | 35 + GadToolsBox/catalogs/polski/GadToolsBox.ct | 2766 ++++++++ GadToolsBox/defines.h | 222 + GadToolsBox/docs/fixed.txt | 24 + GadToolsBox/docs/iff-structure.txt | 160 + GadToolsBox/docs/todo.txt | 53 + GadToolsBox/draw.c | 937 +++ GadToolsBox/draw.h | 48 + GadToolsBox/frame.c | 447 ++ GadToolsBox/frame.h | 48 + GadToolsBox/gadget.c | 1175 ++++ GadToolsBox/gadget.h | 120 + GadToolsBox/gadtools.c | 5944 +++++++++++++++++ GadToolsBox/gadtools.gtr | Bin 0 -> 288466 bytes GadToolsBox/gadtools.h | 1876 ++++++ GadToolsBox/gadtools_cat.c | 699 ++ GadToolsBox/gadtools_cat.h | 1397 ++++ GadToolsBox/gadtools_img.c | 1656 +++++ GadToolsBox/guifunc.c | 2900 ++++++++ GadToolsBox/help/english/GadToolsBox.guide | 2521 +++++++ GadToolsBox/image.c | 1154 ++++ GadToolsBox/image.h | 69 + GadToolsBox/includes.h | 76 + GadToolsBox/inout.c | 788 +++ GadToolsBox/inout.h | 55 + GadToolsBox/main.c | 1266 ++++ GadToolsBox/main.h | 111 + GadToolsBox/memory.a | 25 + GadToolsBox/memory.h | 4 + GadToolsBox/menu.c | 1286 ++++ GadToolsBox/menu.h | 63 + GadToolsBox/objects.c | 882 +++ GadToolsBox/objects.h | 180 + GadToolsBox/screen.c | 600 ++ GadToolsBox/screen.h | 51 + GadToolsBox/smakefile | 89 + GadToolsBox/string.c | 523 ++ GadToolsBox/string.h | 38 + GadToolsBox/toolbar.c | 482 ++ GadToolsBox/toolbar.h | 34 + GadToolsBox/version.c | 211 + GadToolsBox/version.h | 29 + GadToolsBox/window.c | 1671 +++++ GadToolsBox/window.h | 95 + README.markdown | 19 + 191 files changed, 67373 insertions(+) create mode 100755 GadToolsBox/BCGen/SCOPTIONS create mode 100755 GadToolsBox/BCGen/c.generator.cd create mode 100755 GadToolsBox/BCGen/c.generator.ct create mode 100755 GadToolsBox/BCGen/funcs.c create mode 100755 GadToolsBox/BCGen/funcs.o create mode 100755 GadToolsBox/BCGen/gadget.c create mode 100755 GadToolsBox/BCGen/gadtools.c create mode 100755 GadToolsBox/BCGen/gadtools.gtr create mode 100755 GadToolsBox/BCGen/gadtools.h create mode 100755 GadToolsBox/BCGen/gadtools_cat.c create mode 100755 GadToolsBox/BCGen/gadtools_cat.h create mode 100755 GadToolsBox/BCGen/gadtools_img.c create mode 100755 GadToolsBox/BCGen/main.c create mode 100755 GadToolsBox/BCGen/main.h create mode 100755 GadToolsBox/BCGen/menu.c create mode 100755 GadToolsBox/BCGen/popupmenu.c create mode 100755 GadToolsBox/CGen/SCOPTIONS create mode 100755 GadToolsBox/CGen/c.generator.cd create mode 100755 GadToolsBox/CGen/c.generator.ct create mode 100755 GadToolsBox/CGen/funcs.c create mode 100755 GadToolsBox/CGen/gadget.c create mode 100755 GadToolsBox/CGen/gadtools.c create mode 100755 GadToolsBox/CGen/gadtools.gtr create mode 100755 GadToolsBox/CGen/gadtools.h create mode 100755 GadToolsBox/CGen/gadtools_cat.c create mode 100755 GadToolsBox/CGen/gadtools_cat.h create mode 100755 GadToolsBox/CGen/gadtools_img.c create mode 100755 GadToolsBox/CGen/main.c create mode 100755 GadToolsBox/CGen/main.h create mode 100755 GadToolsBox/CGen/menu.c create mode 100755 GadToolsBox/CGen/popupmenu.c create mode 100755 GadToolsBox/GadToolsBox.cd create mode 100755 GadToolsBox/GadToolsBox.ct create mode 100755 GadToolsBox/GadToolsBox.iff create mode 100755 GadToolsBox/GadToolsBox.info create mode 100755 GadToolsBox/GadToolsBox5.iff create mode 100755 GadToolsBox/Gadgets/SCOPTIONS create mode 100755 GadToolsBox/Gadgets/Test/SCOPTIONS create mode 100755 GadToolsBox/Gadgets/Test/imtoolbar.c create mode 100755 GadToolsBox/Gadgets/Test/listview.c create mode 100755 GadToolsBox/Gadgets/Test/register.c create mode 100755 GadToolsBox/Gadgets/Test/toolbar.c create mode 100755 GadToolsBox/Gadgets/listview.c create mode 100755 GadToolsBox/Gadgets/listview.fd create mode 100755 GadToolsBox/Gadgets/listview.gadget_rev.h create mode 100755 GadToolsBox/Gadgets/listview.gadget_rev.i create mode 100755 GadToolsBox/Gadgets/listview.gadget_rev.rev create mode 100755 GadToolsBox/Gadgets/page.c create mode 100755 GadToolsBox/Gadgets/page.fd create mode 100755 GadToolsBox/Gadgets/page.gadget_rev.h create mode 100755 GadToolsBox/Gadgets/page.gadget_rev.i create mode 100755 GadToolsBox/Gadgets/page.gadget_rev.rev create mode 100755 GadToolsBox/Gadgets/progress.c create mode 100755 GadToolsBox/Gadgets/progress.fd create mode 100755 GadToolsBox/Gadgets/progress.gadget_rev.h create mode 100755 GadToolsBox/Gadgets/progress.gadget_rev.i create mode 100755 GadToolsBox/Gadgets/progress.gadget_rev.rev create mode 100755 GadToolsBox/Gadgets/smakefile create mode 100755 GadToolsBox/Gadgets/smartbitmap.c create mode 100755 GadToolsBox/Gadgets/smartbitmap.fd create mode 100755 GadToolsBox/Gadgets/smartbitmap.image_rev.h create mode 100755 GadToolsBox/Gadgets/smartbitmap.image_rev.i create mode 100755 GadToolsBox/Gadgets/smartbitmap.image_rev.rev create mode 100755 GadToolsBox/Gadgets/smartbitmap_ic.src create mode 100755 GadToolsBox/Gadgets/toolimages.iff create mode 100755 GadToolsBox/Gadgets/windowclass/SCOPTIONS create mode 100755 GadToolsBox/Gadgets/windowclass/WndTest.info create mode 100755 GadToolsBox/Gadgets/windowclass/amigaguide.c create mode 100755 GadToolsBox/Gadgets/windowclass/amigaguide.h create mode 100755 GadToolsBox/Gadgets/windowclass/arexx.c create mode 100755 GadToolsBox/Gadgets/windowclass/arexx.h create mode 100755 GadToolsBox/Gadgets/windowclass/commodities.c create mode 100755 GadToolsBox/Gadgets/windowclass/commodities.h create mode 100755 GadToolsBox/Gadgets/windowclass/gadgets.c create mode 100755 GadToolsBox/Gadgets/windowclass/gadgets.h create mode 100755 GadToolsBox/Gadgets/windowclass/gadgetsold.c create mode 100755 GadToolsBox/Gadgets/windowclass/gadgetsold.h create mode 100755 GadToolsBox/Gadgets/windowclass/gadtoolsbox.c create mode 100755 GadToolsBox/Gadgets/windowclass/gadtoolsbox.h create mode 100755 GadToolsBox/Gadgets/windowclass/gadtoolsbox.lib create mode 100755 GadToolsBox/Gadgets/windowclass/main.c create mode 100755 GadToolsBox/Gadgets/windowclass/messages.c create mode 100755 GadToolsBox/Gadgets/windowclass/messages.h create mode 100755 GadToolsBox/Gadgets/windowclass/rxtest.wtest create mode 100755 GadToolsBox/Gadgets/windowclass/screen.c create mode 100755 GadToolsBox/Gadgets/windowclass/screen.h create mode 100755 GadToolsBox/Gadgets/windowclass/smakefile create mode 100755 GadToolsBox/Gadgets/windowclass/window.c create mode 100755 GadToolsBox/Gadgets/windowclass/window.h create mode 100755 GadToolsBox/PlugIns/button.c create mode 100755 GadToolsBox/PlugIns/button.h create mode 100755 GadToolsBox/PlugIns/checkbox.c create mode 100755 GadToolsBox/PlugIns/checkbox.h create mode 100755 GadToolsBox/PlugIns/colorwheel.c create mode 100755 GadToolsBox/PlugIns/colorwheel.h create mode 100755 GadToolsBox/PlugIns/cycle.c create mode 100755 GadToolsBox/PlugIns/cycle.h create mode 100755 GadToolsBox/PlugIns/datatype.c create mode 100755 GadToolsBox/PlugIns/datatype.h create mode 100755 GadToolsBox/PlugIns/gradientslider.c create mode 100755 GadToolsBox/PlugIns/gradientslider.h create mode 100755 GadToolsBox/PlugIns/integer.c create mode 100755 GadToolsBox/PlugIns/integer.h create mode 100755 GadToolsBox/PlugIns/listview.c create mode 100755 GadToolsBox/PlugIns/listview.h create mode 100755 GadToolsBox/PlugIns/mx.c create mode 100755 GadToolsBox/PlugIns/mx.h create mode 100755 GadToolsBox/PlugIns/number.c create mode 100755 GadToolsBox/PlugIns/number.h create mode 100755 GadToolsBox/PlugIns/page.c create mode 100755 GadToolsBox/PlugIns/page.h create mode 100755 GadToolsBox/PlugIns/palette.c create mode 100755 GadToolsBox/PlugIns/palette.h create mode 100755 GadToolsBox/PlugIns/popupmenu.c create mode 100755 GadToolsBox/PlugIns/popupmenu.h create mode 100755 GadToolsBox/PlugIns/progress.c create mode 100755 GadToolsBox/PlugIns/progress.h create mode 100755 GadToolsBox/PlugIns/scroller.c create mode 100755 GadToolsBox/PlugIns/scroller.h create mode 100755 GadToolsBox/PlugIns/slider.c create mode 100755 GadToolsBox/PlugIns/slider.h create mode 100755 GadToolsBox/PlugIns/string.c create mode 100755 GadToolsBox/PlugIns/string.h create mode 100755 GadToolsBox/PlugIns/tapedeck.c create mode 100755 GadToolsBox/PlugIns/tapedeck.h create mode 100755 GadToolsBox/PlugIns/text.c create mode 100755 GadToolsBox/PlugIns/text.h create mode 100755 GadToolsBox/PlugIns/textfield.c create mode 100755 GadToolsBox/PlugIns/textfield.h create mode 100755 GadToolsBox/PlugIns/treeview.c create mode 100755 GadToolsBox/PlugIns/treeview.h create mode 100755 GadToolsBox/SCOPTIONS create mode 100755 GadToolsBox/WinGen/SCOPTIONS create mode 100755 GadToolsBox/WinGen/gadget.c create mode 100755 GadToolsBox/WinGen/gadtools.c create mode 100755 GadToolsBox/WinGen/gadtools.gtr create mode 100755 GadToolsBox/WinGen/gadtools.h create mode 100755 GadToolsBox/WinGen/gadtools_cat.c create mode 100755 GadToolsBox/WinGen/gadtools_cat.h create mode 100755 GadToolsBox/WinGen/gadtools_img.c create mode 100755 GadToolsBox/WinGen/main.c create mode 100755 GadToolsBox/WinGen/main.h create mode 100755 GadToolsBox/WinGen/menu.c create mode 100755 GadToolsBox/WinGen/win32resource.generator.cd create mode 100755 GadToolsBox/WinGen/win32resource.generator.ct create mode 100755 GadToolsBox/amigaguide.c create mode 100755 GadToolsBox/amigaguide.h create mode 100755 GadToolsBox/catalogs/polski/GadToolsBox.ct create mode 100755 GadToolsBox/defines.h create mode 100755 GadToolsBox/docs/fixed.txt create mode 100755 GadToolsBox/docs/iff-structure.txt create mode 100755 GadToolsBox/docs/todo.txt create mode 100755 GadToolsBox/draw.c create mode 100755 GadToolsBox/draw.h create mode 100755 GadToolsBox/frame.c create mode 100755 GadToolsBox/frame.h create mode 100755 GadToolsBox/gadget.c create mode 100755 GadToolsBox/gadget.h create mode 100755 GadToolsBox/gadtools.c create mode 100755 GadToolsBox/gadtools.gtr create mode 100755 GadToolsBox/gadtools.h create mode 100755 GadToolsBox/gadtools_cat.c create mode 100755 GadToolsBox/gadtools_cat.h create mode 100755 GadToolsBox/gadtools_img.c create mode 100755 GadToolsBox/guifunc.c create mode 100755 GadToolsBox/help/english/GadToolsBox.guide create mode 100755 GadToolsBox/image.c create mode 100755 GadToolsBox/image.h create mode 100755 GadToolsBox/includes.h create mode 100755 GadToolsBox/inout.c create mode 100755 GadToolsBox/inout.h create mode 100755 GadToolsBox/main.c create mode 100755 GadToolsBox/main.h create mode 100755 GadToolsBox/memory.a create mode 100755 GadToolsBox/memory.h create mode 100755 GadToolsBox/menu.c create mode 100755 GadToolsBox/menu.h create mode 100755 GadToolsBox/objects.c create mode 100755 GadToolsBox/objects.h create mode 100755 GadToolsBox/screen.c create mode 100755 GadToolsBox/screen.h create mode 100755 GadToolsBox/smakefile create mode 100755 GadToolsBox/string.c create mode 100755 GadToolsBox/string.h create mode 100755 GadToolsBox/toolbar.c create mode 100755 GadToolsBox/toolbar.h create mode 100755 GadToolsBox/version.c create mode 100755 GadToolsBox/version.h create mode 100755 GadToolsBox/window.c create mode 100755 GadToolsBox/window.h create mode 100644 README.markdown diff --git a/GadToolsBox/BCGen/SCOPTIONS b/GadToolsBox/BCGen/SCOPTIONS new file mode 100755 index 0000000..e22116f --- /dev/null +++ b/GadToolsBox/BCGen/SCOPTIONS @@ -0,0 +1,22 @@ +NOSTACKCHECK +STRINGMERGE +NOCHECKABORT +ERRORREXX +MODIFIED +OPTIMIZE +LINK +OPTIMIZERSIZE +OPTIMIZERINLINELOCAL +SMALLCODE +SMALLDATA +VERBOSE +STRIPDEBUG +OPTIMIZERSCHEDULER +NOVERSION +UTILITYLIBRARY +MEMORYSIZE=HUGE +OPTIMIZERALIAS +PROGRAMNAME=c.generator +GLOBALSYMBOLTABLE=include:all.gst +PUBSCREEN=SASPRJ.1 +main gadget funcs menu gadtools gadtools_cat diff --git a/GadToolsBox/BCGen/c.generator.cd b/GadToolsBox/BCGen/c.generator.cd new file mode 100755 index 0000000..3301259 --- /dev/null +++ b/GadToolsBox/BCGen/c.generator.cd @@ -0,0 +1,30 @@ +; +; c.generator locale description file +; +MSG_SCREENTITLE_SCR (//) + +; +MSG_Prefs_WND (//) +Prefs: c.generator +; +MSG_TEMPLATE_GAD (//) +_Template: +; +MSG_GUIFUNCS_GAD (//) +_GUI functions: +; +MSG_LOCALIZE_GAD (//) +_Localize: +; +MSG_SAVE_GAD (//) +_Save +; +MSG_CANCEL_GAD (//) +_Cancel +; +MSG_USE_GAD (//) +_Use +; +MSG_SCREEN_GAD (//) +_Screen: +; diff --git a/GadToolsBox/BCGen/c.generator.ct b/GadToolsBox/BCGen/c.generator.ct new file mode 100755 index 0000000..bbe54c8 --- /dev/null +++ b/GadToolsBox/BCGen/c.generator.ct @@ -0,0 +1,42 @@ +## version $VER: c.generator.catalog 1.0 (xx.xx.xx) +## language +## codeset 0 +; +; c.generator locale translation file +; +MSG_SCREENTITLE_SCR + +; +; +MSG_Prefs_WND + +;Prefs: c.generator +; +MSG_TEMPLATE_GAD + +;_Template: +; +MSG_GUIFUNCS_GAD + +;_GUI functions: +; +MSG_LOCALIZE_GAD + +;_Localize: +; +MSG_SAVE_GAD + +;_Save +; +MSG_CANCEL_GAD + +;_Cancel +; +MSG_USE_GAD + +;_Use +; +MSG_SCREEN_GAD + +;_Screen: +; diff --git a/GadToolsBox/BCGen/funcs.c b/GadToolsBox/BCGen/funcs.c new file mode 100755 index 0000000..b33313d --- /dev/null +++ b/GadToolsBox/BCGen/funcs.c @@ -0,0 +1,1117 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; +extern BOOL OPT_ARexx,OPT_UseLocale,OPT_GUIFuncs,OPT_Screen; +extern struct Screen *Scr; +extern struct GTBSemaphore *GTBSem; + +void GADGET_GenerateOpenLib(BPTR,ULONG); +void GADGET_GenerateCloseLib(BPTR,ULONG); + +BOOL CheckPlugIn(ULONG); +BOOL CheckToolBarWindow(piObject *); +BOOL CheckToolBarWindows(void); +BOOL CheckBOOPSIWindow(piObject *); +BOOL CheckDataTypeWindow(piObject *); +BOOL CheckGadToolsWindow(piObject *); +BOOL CheckPlugInWindow(piObject *,ULONG); +BOOL CheckAppWindow(void); +BOOL CheckProjectWindow(void); + +//(APTR)GetTagData(GT_VisualInfo,0,tags);\n" + +/*TEXT gadgetfuncs[]="struct TagItem *GetTagItemNum(ULONG cnt,struct TagItem *tags)\n"\ +"{\n"\ +" ULONG lc,tc,*ti;\n\n ti=(ULONG *)tags;\n"\ +" for(lc=0,tc=0;lcta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;\n"\ +" Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;\n"\ +" FontX = Scr->RastPort.Font->tf_XSize;\n"\ +"\n"\ +" if(width && height)\n"\ +" if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz;\n"\ +" return;\n"\ +"\n"\ +"UseTopaz:\n"\ +" Font->ta_Name = (STRPTR)\"topaz.font\";\n"\ +" FontX = FontY = Font->ta_YSize = 8;\n"\ +"}\n\n"; + +TEXT gadgetfuncs[]="struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags)\n"\ +"{\n"\ +" struct Gadget *g;\n"\ +" struct NewGadget ng;\n"\ +" ULONG kind,flags,x,y,w,h;\n"\ +" BOOL rx=0,ry=0,rw=0,rh=0;\n"\ +" struct TagItem *ti;\n"\ +" \n"\ +" kind=tags[0].ti_Tag;\n"\ +" flags=tags[0].ti_Data;\n"\ +" tags=&tags[1];\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx;\n"\ +" else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy;\n"\ +" else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data);\n"\ +" else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data);\n"\ +" else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; }\n"\ +"\n"\ +" switch(kind)\n"\ +" {\n"; +TEXT gadtoolsfuncs[]=" case BUTTON_KIND:\n"\ +" case CHECKBOX_KIND:\n"\ +" case INTEGER_KIND:\n"\ +" case LISTVIEW_KIND:\n"\ +" case MX_KIND:\n"\ +" case NUMBER_KIND:\n"\ +" case CYCLE_KIND:\n"\ +" case PALETTE_KIND:\n"\ +" case SCROLLER_KIND:\n"\ +" case SLIDER_KIND:\n"\ +" case STRING_KIND:\n"\ +" case TEXT_KIND:\n"\ +" g=gtbCreateGadget(kind,NULL,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT colorwheelfuncs[]=" case COLORWHEEL_KIND:\n"\ +" FindTagItem(WHEEL_Screen,ti)->ti_Data=(ULONG) Scr;\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,NULL,\"colorwheel.gadget\",(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT gradientsliderfuncs[]=" case GRADIENTSLIDER_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,NULL,\"gradientslider.gadget\",(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT pagefuncs[]=" case PAGE_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,PageClass,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT popupmenufuncs[]=" case POPUPMENU_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,PopUpMenuClass,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT progressfuncs[]=" case PROGRESS_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,ProgressClass,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT tapedeckfuncs[]=" case TAPEDECK_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,NULL,\"tapedeck.gadget\",(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT textfieldfuncs[]=" case TEXTFIELD_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,TextFieldClass,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT treeviewfuncs[]=" case TREEVIEW_KIND:\n"\ +" g=gtbCreateGadget(BOOPSI_KIND,ListViewClass,NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT datatypefuncs[]=" case DATATYPE_KIND:\n"\ +" g=gtbCreateGadget(DATATYPE_KIND,(APTR)GetTagData(GA_Text,0,tags),NULL,(prev?GA_Previous:TAG_IGNORE),prev,GT_ScreenObj,MainScr,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT gadgetendfuncs[]=" }\n"\ +" return g;\n"\ +"}\n"\ +"\n"\ +"void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags)\n"\ +"{\n"\ +" DisposeObject(g);\n"\ +"}\n"\ +"\n"; +TEXT calcfuncs[]="void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags)\n"\ +"{\n"\ +" struct TagItem *ti;\n"\ +" BOOL bl;\n"\ +"\n"\ +" *offx=0;\n"\ +" *offy=0;\n"\ +"\n"\ +" if(ti=FindTagItem(WA_Borderless,tags))\n"\ +" bl=ti->ti_Data;\n"\ +" else\n"\ +" bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_ToolDragBar,tags))\n"\ +" {\n"\ +" if(ti->ti_Data==TOOL_HORIZ)\n"\ +" {\n"\ +" (*offy)+=8;\n"\ +" if(!bl) (*offx)+=Scr->WBorLeft;\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" (*offx)+=8;\n"\ +" if(!bl) (*offy)+=Scr->WBorTop;\n"\ +" }\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" if(!bl)\n"\ +" {\n"\ +" (*offx)+=Scr->WBorLeft;\n"\ +" if(GetTagData(WA_Title,NULL,tags))\n"\ +" (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1;\n"\ +" else\n"\ +" (*offy)+=Scr->WBorTop;\n"\ +" }\n"\ +" }\n"\ +"}\n"\ +"\n"\ +"void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags)\n"\ +"{\n"\ +" struct TagItem *ti;\n"\ +" BOOL bl,sg,sbb,sbr;\n"\ +" UWORD sw,sh;\n"\ +" struct Image *im;\n"\ +"\n"\ +" *offx=0;\n"\ +" *offy=0;\n"\ +"\n"\ +" if(ti=FindTagItem(WA_Borderless,tags))\n"\ +" bl=ti->ti_Data;\n"\ +" else\n"\ +" bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeGadget,tags))\n"\ +" sg=ti->ti_Data;\n"\ +" else\n"\ +" sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeBBottom,tags))\n"\ +" sbb=ti->ti_Data;\n"\ +" else\n"\ +" sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeBRight,tags))\n"\ +" sbr=ti->ti_Data;\n"\ +" else\n"\ +" sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT);\n"\ +"\n"\ +" if(im=(struct Image *)NewObject(NULL, SYSICLASS,\n"\ +" SYSIA_DrawInfo, DrawInfo,\n"\ +" SYSIA_Which, SIZEIMAGE,\n"\ +" SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES),\n"\ +" TAG_DONE))\n"\ +" {\n"\ +" sw=im->Width;\n"\ +" sh=im->Height;\n"\ +" DisposeObject((Object *)im);\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" sw=18;\n"\ +" sh=10;\n"\ +" }\n"\ +"\n"\ +" if(!bl)\n"\ +" {\n"\ +" if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; }\n"\ +" if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; }\n"\ +" if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; }\n"\ +" if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; }\n"\ +" }\n"\ +"}\n"; + + +void WriteIDCMPFlags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_IDCMP==NULL) FPuts(handle,"NULL, "); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) FPuts(handle,"IDCMP_CLOSEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) FPuts(handle,"IDCMP_MOUSEMOVE|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETDOWN) FPuts(handle,"IDCMP_GADGETDOWN|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETUP) FPuts(handle,"IDCMP_GADGETUP|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) FPuts(handle,"IDCMP_MENUVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) FPuts(handle,"IDCMP_SIZEVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) FPuts(handle,"IDCMP_REQVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) FPuts(handle,"IDCMP_REQSET|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) FPuts(handle,"IDCMP_REQCLEAR|"); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) FPuts(handle,"IDCMP_NEWSIZE|"); + GetFlag(nw->nw_IDCMP,IDCMP_REFRESHWINDOW) FPuts(handle,"IDCMP_REFRESHWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) FPuts(handle,"IDCMP_MOUSEBUTTONS|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) FPuts(handle,"IDCMP_MENUPICK|"); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) FPuts(handle,"IDCMP_RAWKEY|"); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) FPuts(handle,"IDCMP_VANILLAKEY|"); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) FPuts(handle,"IDCMP_INTUITICKS|"); + GetFlag(nw->nw_IDCMP,IDCMP_DELTAMOVE) FPuts(handle,"IDCMP_DELTAMOVE|"); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) FPuts(handle,"IDCMP_NEWPREFS|"); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) FPuts(handle,"IDCMP_ACTIVEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) FPuts(handle,"IDCMP_INACTIVEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) FPuts(handle,"IDCMP_DISKINSERTED|"); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) FPuts(handle,"IDCMP_DISKREMOVED|"); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) FPuts(handle,"IDCMP_IDCMPUPDATE|"); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) FPuts(handle,"IDCMP_CHANGEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) FPuts(handle,"IDCMP_MENUHELP|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) FPuts(handle,"IDCMP_GADGETHELP|"); + if(CheckPlugInWindow(wo,BUTTON_ID)) FPuts(handle,"BUTTONIDCMP|"); + if(CheckPlugInWindow(wo,CHECKBOX_ID)) FPuts(handle,"CHECKBOXIDCMP|"); + if(CheckPlugInWindow(wo,INTEGER_ID)) FPuts(handle,"INTEGERIDCMP|"); + if(CheckPlugInWindow(wo,LISTVIEW_ID)) FPuts(handle,"LISTVIEWIDCMP|"); + if(CheckPlugInWindow(wo,MX_ID)) FPuts(handle,"MXIDCMP|"); + if(CheckPlugInWindow(wo,NUMBER_ID)) FPuts(handle,"NUMBERIDCMP|"); + if(CheckPlugInWindow(wo,CYCLE_ID)) FPuts(handle,"CYCLEIDCMP|"); + if(CheckPlugInWindow(wo,PALETTE_ID)) FPuts(handle,"PALETTEIDCMP|"); + if(CheckPlugInWindow(wo,SCROLLER_ID)) FPuts(handle,"SCROLLERIDCMP|"); + if(CheckPlugInWindow(wo,SLIDER_ID)) FPuts(handle,"SLIDERIDCMP|"); + if(CheckPlugInWindow(wo,STRING_ID)) FPuts(handle,"STRINGIDCMP|"); + if(CheckPlugInWindow(wo,TEXT_ID)) FPuts(handle,"TEXTIDCMP|"); + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void WriteWindowFlags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_Flags==NULL) FPuts(handle,"NULL, "); + GetFlag(nw->nw_Flags,WFLG_CLOSEGADGET) FPuts(handle,"WFLG_CLOSEGADGET|"); + if((!(nw->nw_MyFlags&MYWA_DragToolHoriz)) && (!(nw->nw_MyFlags&MYWA_DragToolVert))) GetFlag(nw->nw_Flags,WFLG_DRAGBAR) FPuts(handle,"WFLG_DRAGBAR|"); + GetFlag(nw->nw_Flags,WFLG_DEPTHGADGET) FPuts(handle,"WFLG_DEPTHGADGET|"); + GetFlag(nw->nw_Flags,WFLG_SIZEGADGET) FPuts(handle,"WFLG_SIZEGADGET|"); + GetFlag(nw->nw_Flags,WFLG_SIZEBRIGHT) FPuts(handle,"WFLG_SIZEBRIGHT|"); + GetFlag(nw->nw_Flags,WFLG_SIZEBBOTTOM) FPuts(handle,"WFLG_SIZEBBOTTOM|"); + GetFlag(nw->nw_Flags,WFLG_GIMMEZEROZERO) FPuts(handle,"WFLG_GIMMEZEROZERO|"); + GetFlag(nw->nw_Flags,WFLG_SIMPLE_REFRESH) FPuts(handle,"WFLG_SIMPLE_REFRESH|"); + GetFlag(nw->nw_Flags,WFLG_SMART_REFRESH) FPuts(handle,"WFLG_SMART_REFRESH|"); + GetFlag(nw->nw_Flags,WFLG_SUPER_BITMAP) FPuts(handle,"WFLG_SUPER_BITMAP|"); + GetFlag(nw->nw_Flags,WFLG_BACKDROP) FPuts(handle,"WFLG_BACKDROP|"); + GetFlag(nw->nw_Flags,WFLG_REPORTMOUSE) FPuts(handle,"WFLG_REPORTMOUSE|"); + GetFlag(nw->nw_Flags,WFLG_BORDERLESS) FPuts(handle,"WFLG_BORDERLESS|"); + GetFlag(nw->nw_Flags,WFLG_ACTIVATE) FPuts(handle,"WFLG_ACTIVATE|"); + GetFlag(nw->nw_Flags,WFLG_NOCAREREFRESH) FPuts(handle,"WFLG_NOCAREREFRESH|"); + GetFlag(nw->nw_Flags,WFLG_NEWLOOKMENUS) FPuts(handle,"WFLG_NEWLOOKMENUS|"); + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void FUNC_GenerateWindowTags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPuts(handle," "); + switch(nw->nw_XPos) + { + case WPOS_CENTER: FPrintf(handle,"WIND_CenterX, TRUE, "); break; + case WPOS_REL_LEFT_TOP: FPrintf(handle,"WIND_Left, %ld, ",nw->nw_X); break; + case WPOS_REL_RIGHT_BOTTOM: FPrintf(handle,"WIND_RelRight, %ld, ",nw->nw_X); break; + } + switch(nw->nw_YPos) + { + case WPOS_CENTER: FPrintf(handle,"WIND_CenterY, TRUE, "); break; + case WPOS_REL_LEFT_TOP: FPrintf(handle,"WIND_Top, %ld, ",nw->nw_Y); break; + case WPOS_REL_RIGHT_BOTTOM: FPrintf(handle,"WIND_RelBottom, %ld, ",nw->nw_Y); break; + } + GetFlag(nw->nw_MyFlags,MYWA_InnerWidth) FPrintf(handle,"WIND_InnerWidth, %ld, ",nw->nw_Width); + else FPrintf(handle,"WIND_Width, %ld, ",nw->nw_Width); + GetFlag(nw->nw_MyFlags,MYWA_InnerWidth) FPrintf(handle,"WIND_InnerHeight, %ld, ",nw->nw_Height); + else FPrintf(handle,"WIND_Height, %ld, ",nw->nw_Height); + if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) + if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"WA_Title, (ULONG) MSG_%s_WND, ",nw->nw_Label); + if(nw->nw_MyFlags&MYWA_DragToolHoriz) FPuts(handle,"WIND_ToolDragBar, TOOL_HORIZ, "); + if(nw->nw_MyFlags&MYWA_DragToolVert) FPuts(handle,"WIND_ToolDragBar, TOOL_VERT, "); + if(nw->nw_ScreenTitle[0]) FPrintf(handle,"WIND_ScreenTitle, (ULONG) MSG_%s_ST_WND, ",nw->nw_Label); + if(!(nw->nw_MyFlags&MYWA_Project)){ FPuts(handle,"WIND_IDCMP, "); WriteIDCMPFlags(handle,wo); } + FPuts(handle,"WIND_Flags, "); WriteWindowFlags(handle,wo); + GetFlag(nw->nw_MyFlags,MYWA_AutoAdjust) FPuts(handle,"WIND_AutoAdjust, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_PubScreenFallBack) FPuts(handle,"WIND_PubScreenFallBack, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_RMBTrap) FPuts(handle,"WIND_RMBTrap, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_AutoAdjust) FPuts(handle, "WIND_AutoAdjust, TRUE, "); +// GetFlag(nw->nw_MyFlags,MYWA_FontAdaptive) FPuts(handle, "WIND_FontAdaptive, TRUE, "); + GetFlag(nw->nw_Flags,WFLG_SIZEGADGET) FPuts(handle,"WIND_MaxWidth,-1, WIND_MinWidth,100, WIND_MaxHeight,-1, WIND_MinHeight, 20, "); +} + +void FUNC_GenerateApplication(BPTR handle) +{ + struct Node_Version *nv; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + FPuts(handle,"/* Application functions */\n\n"); + if(OPT_UseLocale) + { + FPuts(handle,"UWORD InitApplication(STRPTR language)\n{\n"); + FPuts(handle, " if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE;\n"); + FPrintf(handle," Catalog=OpenCatalog(Locale,\"%s.catalog\",\n" \ + " OC_BuiltInLanguage,\"english\", OC_Version, VER_VERSION,\n" \ + " language?OC_Language:TAG_IGNORE, language, TAG_DONE);\n",nv->nv_ProgramName); + } + else + { + FPuts(handle,"UWORD InitApplication()\n{\n"); + } + FPuts(handle," if(!(AppObj=gtbNewApplication(TAG_DONE))) return GTBERR_OPENLIB;\n"); + if(CheckAppWindow()) FPuts(handle," if(!(AppMsgPort=NewObject(AppObj->MsgClass,NULL,\n"\ + MESG_Handler,(ULONG) Handle_AppMsgPort,\n"\ + TAG_DONE))) return GTBERR_CREATEAPPPORT;\n"); + if(CheckProjectWindow()) FPuts(handle," if(!(ProjectMsgPort=NewObject(AppObj->MsgClass,NULL,\n"\ + MESG_Handler,(ULONG) Handle_AppMsgPort,\n"\ + TAG_DONE))) return GTBERR_CREATEPROJECTPORT;\n"); + if(CheckPlugIn(COLORWHEEL_ID)) GADGET_GenerateOpenLib(handle,COLORWHEEL_ID); + if(CheckPlugIn(GRADIENTSLIDER_ID)) GADGET_GenerateOpenLib(handle,GRADIENTSLIDER_ID); + if(CheckPlugIn(PAGE_ID)) GADGET_GenerateOpenLib(handle,PAGE_ID); + if(CheckPlugIn(POPUPMENU_ID)) GADGET_GenerateOpenLib(handle,POPUPMENU_ID); + if(CheckPlugIn(PROGRESS_ID)) GADGET_GenerateOpenLib(handle,PROGRESS_ID); + if(CheckPlugIn(TAPEDECK_ID)) GADGET_GenerateOpenLib(handle,TAPEDECK_ID); + if(CheckPlugIn(TEXTFIELD_ID)) GADGET_GenerateOpenLib(handle,TEXTFIELD_ID); + if(CheckPlugIn(TREEVIEW_ID)) GADGET_GenerateOpenLib(handle,TREEVIEW_ID); + if(CheckToolBarWindows()) + { + FPuts(handle," if(!(SmartBitMapBase=OpenLibrary(\"images/smartbitmap.image\",39))) return GTBERR_OPENLIB_SMARTBITMAP;\n"); + FPuts(handle," SmartBitMapClass=GetSmartBitMapClass();\n"); + } + FPuts(handle," return GTBERR_OK;\n}\n\n"); + + FPuts(handle,"void FreeApplication()\n{\n"); + if(CheckToolBarWindows()) FPuts(handle," if(SmartBitMapBase) CloseLibrary(SmartBitMapBase); SmartBitMapBase=NULL; SmartBitMapClass=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) GADGET_GenerateCloseLib(handle,TREEVIEW_ID); + if(CheckPlugIn(TEXTFIELD_ID)) GADGET_GenerateCloseLib(handle,TEXTFIELD_ID); + if(CheckPlugIn(TAPEDECK_ID)) GADGET_GenerateCloseLib(handle,TAPEDECK_ID); + if(CheckPlugIn(PROGRESS_ID)) GADGET_GenerateCloseLib(handle,PROGRESS_ID); + if(CheckPlugIn(POPUPMENU_ID)) GADGET_GenerateCloseLib(handle,POPUPMENU_ID); + if(CheckPlugIn(PAGE_ID)) GADGET_GenerateCloseLib(handle,PAGE_ID); + if(CheckPlugIn(GRADIENTSLIDER_ID)) GADGET_GenerateCloseLib(handle,GRADIENTSLIDER_ID); + if(CheckPlugIn(COLORWHEEL_ID)) GADGET_GenerateCloseLib(handle,COLORWHEEL_ID); + if(CheckProjectWindow()) FPuts(handle," if(ProjectMsgPort) DisposeObject(ProjectMsgPort); ProjectMsgPort=NULL;\n"); + if(CheckAppWindow()) FPuts(handle," if(AppMsgPort) DisposeObject(AppMsgPort); AppMsgPort=NULL;\n"); + FPuts(handle," if(AppObj) gtbDisposeApplication(AppObj); AppObj=NULL: + if(OPT_UseLocale) + { + FPuts(handle," if(Catalog) CloseCatalog(Catalog); Catalog=NULL;\n"); + } + FPuts(handle,"}\n\n"); + + if(OPT_UseLocale) + { + FPuts(handle,"STRPTR GetCatString(APTR fcstr)\n{\n" \ + " STRPTR defaultstr;\n" \ + " LONG strnum;\n\n" \ + " strnum=((struct FC_Type *)fcstr)->ID;\n" \ + " defaultstr=((struct FC_Type *)fcstr)->Str;\n\n" \ + " return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr);\n" \ + "}\n\n"); + } + else + { + FPuts(handle,"STRPTR GetCatString(APTR fcstr)\n{\n" \ + " return ((struct FC_Type *)fcstr)->Str;\n" \ + "}\n\n"); + } + + if(OPT_GUIFuncs) + { + FPuts(handle,gadgetfuncs); + if(CheckToolBarWindows()) FPuts(handle,toolimagefuncs); + FPuts(handle,gadtoolsfuncs); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,colorwheelfuncs); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,datatypefuncs); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,gradientsliderfuncs); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,pagefuncs); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,popupmenufuncs); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,progressfuncs); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,tapedeckfuncs); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,textfieldfuncs); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,treeviewfuncs); + FPuts(handle,gadgetendfuncs); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,datatypeendfuncs); + FPuts(handle,gadgetendendfuncs); + FPuts(handle,windowfuncs); + FPuts(handle,calcfuncs); + FPrintf(handle,adaptivityfuncs,GTBSem->gs_FontTF->tf_XSize/2,GTBSem->gs_FontTF->tf_XSize,GTBSem->gs_FontTF->tf_YSize/2,GTBSem->gs_FontTF->tf_YSize); + } +} /* FUNC_GenerateApplication */ + +void FUNC_GenerateScreen(BPTR handle) +{ + piObject *mo,*wo,*wo2,*go,*io,*fo; + struct Node_Menu *nm; + struct Node_Window *nw,*nw2; + struct Node_Gadget *ng; + struct Node_Screen *ns; + struct Node_Image *ni; + struct Node *n; + ULONG cnt; + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + FPuts(handle,"/* Screen functions */\n\n"); + FPuts(handle,"UWORD SetupScreen(UBYTE Num)\n{\n UWORD OffX,OffY;\n\n"); + if(OPT_Screen) + { + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPrintf(handle," sprintf(ScrPubName,\"%s\",Num);\n",ns->ns_Public); + if(ns->ns_Type!=TYPE_WORKBENCH) FPrintf(handle," sprintf(ScrTitle,GetCatString(MSG_SCREENTITLE_SCR),Num);\n"); + FPrintf(handle," if(!(MainScr=NewObjectA(AppObj->ga_ScrClass,NULL,(struct TagItem *)ScrTags))) return GTBERR_OPENSCREEN;\n"); + FPuts(handle, GetAttr(SCRN_Screen,MainScr,(ULONG)&Scr);\n"); + } + if(OPT_GUIFuncs) + { + FPuts(handle," OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1;\n\n"); + FPuts(handle," CalcAdaptivity(0,0);\n"); + } + + if(CheckToolBarWindows()) + FPuts(handle," GetRGB32(Scr->ViewPort.ColorMap,DrawInfo->dri_Pens[BACKGROUNDPEN],1,&ToolBarPalette[0].R);\n\n"); + + for(mo=(piObject *)GetHead(&GUI->gui_List_Menu);GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle," if(!MenuLocaleDone[MN_%s]) FixMenus(%sNewMenu);\n",nm->nm_Label,nm->nm_Label); + FPrintf(handle," MenuLocaleDone[MN_%s]=TRUE;\n\n",nm->nm_Label); + FPrintf(handle," if(!(%sMenus=CreateMenus(%sNewMenu, GTMN_FrontPen, %s, ",nm->nm_Label,nm->nm_Label,nm->nm_Flags&MYMN_NewLookMenus?"DrawInfo->dri_Pens[BARDETAILPEN]":"0"); + GetFlag(nm->nm_Flags,MYMN_NewLookMenus) FPuts(handle,"GTMN_NewLookMenus, TRUE, "); + FPuts(handle,"TAG_DONE))) return GTBERR_CREATEMENUS;\n"); + FPrintf(handle," LayoutMenus(%sMenus, VisualInfo, TAG_DONE);\n\n",nm->nm_Label); + } + + if(OPT_GUIFuncs) + { + for(wo=(piObject *)GetHead(&GUI->gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(&nw->nw_List_Gadget);GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + { + FPrintf(handle," BBOX_%s.Left=AdaptX(BBOX_%s.Left)+OffX;\n" \ + " BBOX_%s.Top=AdaptY(BBOX_%s.Top)+OffY;\n" \ + " BBOX_%s.Width=AdaptX(BBOX_%s.Width);\n" \ + " BBOX_%s.Height=AdaptY(BBOX_%s.Height);\n" \ + " BBOX_%s.BoxShine=DrawInfo->dri_Pens[SHINEPEN];\n" \ + " BBOX_%s.BoxShadow=DrawInfo->dri_Pens[SHADOWPEN];\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label); + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + { + for(wo2=(piObject *)GetHead(&GUI->gui_List_Window);GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + if(!strcmp(nw2->nw_Label,n->ln_Name)) + for(cnt=0,fo=(piObject *)GetHead(List(&nw2->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo),cnt++) + { + FPrintf(handle," BBOX_%s_%s[%ld].Left=AdaptX(BBOX_%s_%s[%ld].Left)+OffX;\n" \ + " BBOX_%s_%s[%ld].Top=AdaptY(BBOX_%s_%s[%ld].Top)+OffY;\n" \ + " BBOX_%s_%s[%ld].Width=AdaptX(BBOX_%s_%s[%ld].Width);\n" \ + " BBOX_%s_%s[%ld].Height=AdaptY(BBOX_%s_%s[%ld].Height);\n" \ + " BBOX_%s_%s[%ld].BoxShine=DrawInfo->dri_Pens[SHINEPEN];\n" \ + " BBOX_%s_%s[%ld].BoxShadow=DrawInfo->dri_Pens[SHADOWPEN];\n", + ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt); + } + } + } + } + } + } + } + + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_POINTER: + FPrintf(handle," if(!(%sPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&%sBitMap,POINTERA_XOffset,%ld,POINTERA_YOffset,%ld,TAG_DONE))) return GTBERR_CREATEPOINTER;\n",ni->ni_Label,ni->ni_Label,-ni->ni_PointX,-ni->ni_PointY); + break; + case IMTYPE_NORMAL: + FPrintf(handle," if(!(%sImg=NewObject(SmartBitMapClass,NULL,IA_Width,%ld,SMBM_Border,FALSE,SMBM_BitMap,(ULONG)&%sBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)%sPalette,TAG_DONE))) return GTBERR_CREATEIMAGE;\n",ni->ni_Label,(ULONG)ni->ni_Width,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle," if(!(%sTbr=NewObject(SmartBitMapClass,NULL,IA_Width,%ld,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&%sBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE;\n",ni->ni_Label,(ULONG)ni->ni_Width,ni->ni_Label); + break; + } + } + + FPuts(handle," return GTBERR_OK;\n}\n\n"); + + FPuts(handle,"void CloseDownScreen()\n{\n"); + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_POINTER: + FPrintf(handle," if(%sPtr) DisposeObject(%sPtr);\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_NORMAL: + FPrintf(handle," if(%sImg) DisposeObject(%sImg);\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle," if(%sTbr) DisposeObject(%sTbr);\n",ni->ni_Label,ni->ni_Label); + break; + } + } + for(mo=(piObject *)GetHead(&GUI->gui_List_Menu);GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle," if(%sMenus) FreeMenus(%sMenus); %sMenus=NULL;\n",nm->nm_Label,nm->nm_Label,nm->nm_Label); + } + if(OPT_Screen) + { + FPuts(handle," if(Scr) DisposeObject(Scr); Scr=NULL;\n"); + } + FPuts(handle,"}\n\n"); +} /* FUNC_GenerateScreen */ + +void FUNC_GenerateCatalogUpdate(BPTR handle) +{ + if(OPT_GUIFuncs) + { + FPuts(handle,"void FixGadgetTags(struct TagItem *tags)\n" \ + "{\n" \ + " ULONG kind,a;\n" \ + " UBYTE **labels;\n" \ + " struct TagItem *ti;\n" \ + " struct Node *node;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle," struct Page *page;\n"); + FPuts(handle,"\n" \ + " kind=tags[0].ti_Tag;\n" \ + " tags=&tags[1];\n" \ + "\n" \ + " if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + "\n" \ + " switch(kind)\n" \ + " {\n" \ + " case LISTVIEW_KIND:\n" \ + " if(ti=FindTagItem(GTMX_Labels,tags))\n" \ + " for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ)\n" \ + " node->ln_Name=GetCatString((APTR)node->ln_Name);\n" \ + " break;\n" \ + " case MX_KIND:\n" \ + " if(ti=FindTagItem(GTMX_Labels,tags))\n" \ + " for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]);\n" \ + " break;\n" \ + " case NUMBER_KIND:\n" \ + " if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case CYCLE_KIND:\n" \ + " if(ti=FindTagItem(GTCY_Labels,tags))\n" \ + " for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]);\n" \ + " break;\n" \ + " case SLIDER_KIND:\n" \ + " if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case STRING_KIND:\n" \ + " if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case TEXT_KIND:\n" \ + " if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + if(CheckPlugIn(PAGE_ID)) + FPuts(handle," case PAGE_KIND:\n" \ + " if(ti=FindTagItem(PAGE_Pages,tags))\n" \ + " for(page=(struct Page *)ti->ti_Data;page;page=page->NextPage)\n" \ + " page->Name=GetCatString((APTR)page->Name);\n" \ + " break;\n"); + if(CheckPlugIn(POPUPMENU_ID)) + FPuts(handle," case POPUPMENU_KIND:\n" \ + " if(ti=FindTagItem(PUMG_Labels,tags))\n" \ + " for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ)\n" \ + " node->ln_Name=GetCatString((APTR)node->ln_Name);\n" \ + " break;\n"); + if(CheckPlugIn(PROGRESS_ID)) + FPuts(handle," case PROGRESS_KIND:\n" \ + " if(ti=FindTagItem(PROG_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + if(CheckPlugIn(TREEVIEW_ID)) + FPuts(handle," case TREEVIEW_KIND:\n" \ + " if(ti=FindTagItem(LIST_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + FPuts(handle," }\n" \ + "}\n\n"); + + FPuts(handle,"void FixWindowTags(struct TagItem *tags)\n" \ + "{\n" \ + " struct TagItem *ti;\n" \ + "\n" \ + " if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + "}\n\n"); + + FPuts(handle,"void FixMenus(struct NewMenu *menu)\n" \ + "{\n" \ + " ULONG a;\n" \ + "\n" \ + " for(a=0;menu[a].nm_Type!=NM_END;a++)\n" \ + " if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label))\n" \ + " {\n" \ + " menu[a].nm_CommKey=GetCatString(menu[a].nm_Label);\n" \ + " menu[a].nm_Label=menu[a].nm_CommKey+2;\n" \ + " if(menu[a].nm_CommKey[0]=='\\0') menu[a].nm_CommKey=NULL;\n" \ + " }\n" \ + "}\n\n"); + } +} + +void FUNC_GenerateWindow(BPTR handle,piObject *wo) +{ + struct Node_Window *nw,*nw2; + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node *n; + piObject *go,*wo2,*fo; + ULONG cnt,f; + BOOL rel=FALSE; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { +/* HandleIDCMP */ + FPrintf(handle,"ULONG Handler_%s(Object *WindowObj,ULONG type,APTR message)\n{\n",nw->nw_Label); + FPuts(handle, " struct IntuiMessage *m;\n"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) + FPuts(handle, " struct MenuItem *n;\n"); + FPuts(handle, " int (*func)(void);\n\n"); + + FPuts(handle," switch(type)\n {\n"\ + " case TYPE_INTUIMESSAGE:\n"\ + " m=(struct IntuiMessage *)message;\n"\ + " switch(m->Class)\n"\ + " {\n"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle," case IDCMP_MENUVERIFY:\n" \ + " running=FN_MenuVerify_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle," case IDCMP_SIZEVERIFY:\n" \ + " running=FN_SizeVerify_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle," case IDCMP_REQVERIFY:\n" \ + " running=FN_ReqVerify_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle," case IDCMP_REQSET:\n" \ + " running=FN_ReqSet_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle," case IDCMP_REQCLEAR:\n" \ + " running=FN_ReqClear_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle," case IDCMP_NEWSIZE:\n" \ + " running=FN_NewSize_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle," case IDCMP_NEWPREFS:\n" \ + " running=FN_NewPrefs_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle," case IDCMP_MENUHELP:\n" \ + " running=FN_MenuHelp_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle," case IDCMP_GADGETHELP:\n" \ + " running=FN_GadgetHelp_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle," case IDCMP_MOUSEMOVE:\n" \ + " running=FN_MouseMove_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle," case IDCMP_MOUSEBUTTONS:\n" \ + " running=FN_MouseButtons_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle," case IDCMP_RAWKEY:\n" \ + " running=FN_RawKey_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle," case IDCMP_VANILLAKEY:\n" \ + " running=FN_VanillaKey_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle," case IDCMP_INTUITICKS:\n" \ + " running=FN_IntuiTicks_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle," case IDCMP_IDCMPUPDATE:\n" \ + " running=FN_IDCMPUpdate_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REFRESHWINDOW) + { + FPrintf(handle," case IDCMP_REFRESHWINDOW:\n" \ + " GT_BeginRefresh(%sWnd);\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + FPrintf(handle," Render_%s();\n",nw->nw_Label); + FPrintf(handle," GT_EndRefresh(%sWnd,TRUE);\n" \ + " break;\n",nw->nw_Label); + } + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle," case IDCMP_CHANGEWINDOW:\n" \ + " running=FN_ChangeWindow_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle," case IDCMP_CLOSEWINDOW:\n" \ + " running=FN_CloseWindow_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle," case IDCMP_ACTIVEWINDOW:\n" \ + " running=FN_ActiveWindow_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle," case IDCMP_INACTIVEWINDOW:\n" \ + " running=FN_InActiveWindow_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle," case IDCMP_DISKREMOVED:\n" \ + " running=FN_DiskRemoved_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle," case IDCMP_DISKINSERTED:\n" \ + " running=FN_DiskInserted_%s();\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) + FPrintf(handle," case IDCMP_MENUPICK:\n" \ + " while(%sMsg.Code!=MENUNULL)\n" \ + " {\n" \ + " n=ItemAddress(%sMenus,%sMsg.Code);\n" \ + " func=(int (*)(void))(GTMENUITEM_USERDATA(n));\n" \ + " running=func();\n" \ + " %sMsg.Code=n->NextSelect;\n" \ + " }\n" \ + " break;\n",nw->nw_Label,nw->nw_MenuTitle,nw->nw_Label,nw->nw_Label); + if((!IsListEmpty(List(&nw->nw_List_Gadget))) && (nw->nw_IDCMP&IDCMP_GADGETUP || nw->nw_IDCMP&IDCMP_GADGETDOWN)) + { + GetFlag(nw->nw_IDCMP,IDCMP_GADGETUP) FPuts(handle," case IDCMP_GADGETUP:\n"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETDOWN) FPuts(handle," case IDCMP_GADGETDOWN:\n"); + FPrintf(handle," func=(int (*)(void))(( struct Gadget * )%sMsg.IAddress )->UserData;\n" \ + " running=func();\n" \ + " break;\n",nw->nw_Label); + } + FPuts(handle, " }\n" \ + " return(running);\n" \ + "}\n\n"); + +/* Render Window */ + if(!IsListEmpty(List(&nw->nw_List_Frame))) + { + FPrintf(handle,"void Render_%s()\n{\n",nw->nw_Label); + FPrintf(handle," UWORD OffX=%sWnd->BorderLeft, OffY=%sWnd->BorderTop;\n\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + for(fo=(piObject *)GetHead(&nw->nw_List_Frame);GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + nf=(struct Node_Frame *)OBJECT_DATA(fo); + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_ICONDROPBOX: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_ICONDROPBOX",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_RIDGE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_RIDGE",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_HORIZONTALLINE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,2); + break; + case FTYPE_VERTICALLINE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,2h,nf->nf_Height+1); + break; + } + GetFlag(nf->nf_Flags,MYFR_Recessed) FPuts(handle,", GTBB_Recessed, TRUE"); + FPuts(handle,", TAG_DONE);\n"); + } + FPuts(handle,"}\n\n"); + } + } + +/* OpenWindow */ + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_RelX || ng->ng_RelY || ng->ng_RelWidth || ng->ng_RelHeight) + { + rel=TRUE; + break; + } + } + + } + FPrintf(handle,"UWORD OpenWindow_%s()\n{\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPuts(handle," Object *g;\n" \ + " UWORD lc,tc;\n"\ + " UWORD OffX,OffY;\n"); + if(rel) FPuts(handle," UWORD OffR,OffB;\n"); + } + if(CheckPlugInWindow(wo,PAGE_ID)) FPuts(handle," UWORD retval;\n"); + + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"\n if(!(g=(Object *)CreateContext(&%sGList))) return GTBERR_CREATECONTEXT;\n\n",nw->nw_Label); + if(nw->nw_PageGadget) + { + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + for(cnt=0,go=(piObject *)GetHead(List(&nw2->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + if(!strcmp(nw->nw_Label,n->ln_Name)) + { + FPrintf(handle," CalcLeftTop(&OffX,&OffY,(struct TagItem *)%sWTags);\n",nw2->nw_Label); + if(rel) FPrintf(handle," CalcRightBottom(&OffR,&OffB,(struct TagItem *)%sWTags);\n",nw2->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + } + } + } + } + else + { + FPrintf(handle," CalcLeftTop(&OffX,&OffY,(struct TagItem *)%sWTags);\n",nw->nw_Label); + if(rel) FPrintf(handle," CalcRightBottom(&OffR,&OffB,(struct TagItem *)%sWTags);\n",nw->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + } + + /* Create gadgets on page.gadget */ + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + FPrintf(handle," if(retval=OpenWindow_%s()) return(retval);\n",n->ln_Name); + } + + /* Update tags for page.gadget */ + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(cnt=0,n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n),cnt++) + { + f=FALSE; + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + if(!strcmp(nw2->nw_Label,n->ln_Name)) + if(!IsListEmpty(List(&nw2->nw_List_Gadget))) + f=TRUE; + } + if(f) FPrintf(handle," PAGES_%s[%ld].FirstGadget=%sGList;\n",ng->ng_Label,cnt,n->ln_Name); + else FPrintf(handle," PAGES_%s[%ld].FirstGadget=NULL;\n",ng->ng_Label,cnt); + } + } + + /* Create Gadgets on this Window */ + FPrintf(handle,"\n for(lc=0,tc=0;lcnw_Label); + FPrintf(handle," if(!GadgetLocaleDone[WND_%s]) FixGadgetTags((struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label); + if(!rel) FPrintf(handle," %sGadgets[lc]=g=CreateGadgetExA(OffX,OffY,0,0,g,(struct TagItem *) &%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + else FPrintf(handle," %sGadgets[lc]=g=CreateGadgetExA(OffX,OffY,OffR,OffB,g,(struct TagItem *) &%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " if(!(g)) return GTBERR_CREATEGADGET;\n" \ + " }\n\n"); + FPrintf(handle," GadgetLocaleDone[WND_%s]=TRUE;\n\n",nw->nw_Label); + } + /* Open this Window */ + if(nw->nw_PageGadget==0) + { + FPrintf(handle," if(!WindowLocaleDone[WND_%s]) FixWindowTags((struct TagItem *)%sWTags);\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," WindowLocaleDone[WND_%s]=TRUE;\n\n",nw->nw_Label); + FPrintf(handle," if(!(%sWnd=NewObject(AppObj->ga_WndClass,NULL,\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle," WIND_Gadgets,%sGList,\n",nw->nw_Label); + FPuts(handle, " WIND_ScreenObject, MainScr,\n"); + FPrintf(handle," TAG_MORE, %sWTags ))) return GTBERR_OPENWINDOW;\n\n",nw->nw_Label); + + if(nw->nw_MenuTitle[0]) FPrintf(handle," SetMenuStrip(%sWnd,%sMenus);\n",nw->nw_Label,nw->nw_MenuTitle); + FPrintf(handle," GT_RefreshWindow(%sWnd,NULL);\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + FPrintf(handle," Render_%s();\n",nw->nw_Label); + if(CheckDataTypeWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==DATATYPE_KIND) RefreshDTObject((Object *)%sGadgets[lc],%sWnd,NULL,TAG_DONE);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + } + FPuts(handle,"\treturn GTBERR_OK;\n}\n\n"); + + FPrintf(handle,"void CloseWindow_%s()\n{\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + FPuts(handle," UWORD lc,tc;\n\n"); + if(nw->nw_PageGadget==0) + { + if(CheckPlugInWindow(wo,PAGE_ID)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==PAGE_KIND) RemoveGList(%sWnd,%sGadgets[lc],-1);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + if(nw->nw_MenuTitle[0]) + FPrintf(handle," if(%sWnd) ClearMenuStrip(%sWnd);\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," if(%sWnd) DisposeObject(%sWnd); %sWnd=NULL;\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + } + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle," if(%sGList)\n"\ + " {\n",nw->nw_Label); + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==TOOLIMAGE_KIND) DeleteGadgetExA(%sGadgets[lc],(struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + FPrintf(handle," gtbFreeGadgets(%sGList);\n",nw->nw_Label); + FPrintf(handle," %sGList=NULL;\n",nw->nw_Label); + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]!=TOOLIMAGE_KIND) DeleteGadgetExA(%sGadgets[lc],(struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + FPuts(handle, " }\n"); + } + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + FPrintf(handle," CloseWindow_%s();\n",n->ln_Name); + } + FPuts(handle,"}\n\n"); + +} /* FUNC_GenerateWindow */ + +void FUNC_GenerateErrors(BPTR handle) +{ + FPuts(handle,"#define GTBERR_OK 0\n"); + if(OPT_ARexx) FPuts(handle,"#define GTBERR_AREXX 11\n"); + if(OPT_UseLocale) FPuts(handle,"#define GTBERR_LOCALE 12\n"); + if(CheckAppWindow()) FPuts(handle,"#define GTBERR_CREATEAPPPORT 13\n"); + if(CheckProjectWindow()) FPuts(handle,"#define GTBERR_CREATEPROJECTPORT 14\n"); + FPuts(handle,"#define GTBERR_CREATEPOINTER 15\n"); + FPuts(handle,"#define GTBERR_CREATEIMAGE 16\n"); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#define GTBERR_OPENLIB_COLORWHEEL 100\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#define GTBERR_OPENLIB_GRADIENTSLIDER 101\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TAPEDECK 102\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#define GTBERR_OPENLIB_PAGE 103\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#define GTBERR_OPENLIB_POPUPMENU 104\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#define GTBERR_OPENLIB_PROGRESS 105\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TEXTFIELD 106\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TREEVIEW 107\n"); + if(CheckToolBarWindows()) FPuts(handle,"#define GTBERR_OPENLIB_SMARTBITMAP 150\n"); + FPuts(handle,"#define GTBERR_OPENSCREEN 200\n" \ + "#define GTBERR_VISUALINFO 201\n" \ + "#define GTBERR_SCRDRAWINFO 202\n" \ + "#define GTBERR_CREATECONTEXT 300\n" \ + "#define GTBERR_CREATEGADGET 301\n" \ + "#define GTBERR_CREATEMENUS 302\n" \ + "#define GTBERR_OPENWINDOW 303\n"); + if(CheckAppWindow()) FPuts(handle,"#define GTBERR_ADDAPPWINDOW 304\n"); + FPuts(handle,"\n"); +} /* FUNC_GenerateErrors */ + +void FUNC_GenerateTemplate(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle,"int FN_MenuVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle,"int FN_SizeVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle,"int FN_ReqVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle,"int FN_ReqSet_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle,"int FN_ReqClear_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle,"int FN_NewSize_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle,"int FN_NewPrefs_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle,"int FN_MenuHelp_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle,"int FN_GadgetHelp_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle,"int FN_MouseMove_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle,"int FN_MouseButtons_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle,"int FN_RawKey_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle,"int FN_VanillaKey_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle,"int FN_IntuiTicks_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle,"int FN_IDCMPUpdate_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle,"int FN_ChangeWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle,"int FN_CloseWindow_%s(void)\n{\n return 0;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle,"int FN_ActiveWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle,"int FN_InActiveWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle,"int FN_DiskRemoved_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle,"int FN_DiskInserted_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); +} /* FUNC_GenerateTemplate */ diff --git a/GadToolsBox/BCGen/funcs.o b/GadToolsBox/BCGen/funcs.o new file mode 100755 index 0000000000000000000000000000000000000000..5ce9479bf17aa8eadeb7d534e8ab4dd633719142 GIT binary patch literal 40156 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/GadToolsBox/BCGen/gadget.c b/GadToolsBox/BCGen/gadget.c new file mode 100755 index 0000000..8a28aee --- /dev/null +++ b/GadToolsBox/BCGen/gadget.c @@ -0,0 +1,1405 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; +extern struct Screen *Scr; + +void NWCalcLeftTop(UWORD *offx,UWORD *offy,struct Node_Window *nw) +{ + BOOL bl,aaa=FALSE; + + *offx=0; + *offy=0; + + if(nw->nw_Flags&WFLG_BORDERLESS) bl=TRUE; + else bl=FALSE; + + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + aaa=TRUE; + } + if(nw->nw_MyFlags&MYWA_DragToolVert) + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + aaa=TRUE; + } + if(!aaa) + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(nw->nw_WindowTitle[0]) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void NWCalcRightBottom(UWORD *offx,UWORD *offy,struct Node_Window *nw) +{ + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + struct DrawInfo *DrawInfo; + + *offx=0; + *offy=0; + + if(nw->nw_Flags&WFLG_BORDERLESS) bl=TRUE; + else bl=FALSE; + + if(nw->nw_Flags&WFLG_SIZEGADGET) sg=TRUE; + else sg=FALSE; + + if(nw->nw_Flags&WFLG_SIZEBBOTTOM) sbb=TRUE; + else sbb=FALSE; + + if(nw->nw_Flags&WFLG_SIZEBRIGHT) sbr=TRUE; + else sbr=FALSE; + + if((DrawInfo=GetScreenDrawInfo(Scr)) && (im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE))) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + FreeScreenDrawInfo(Scr,DrawInfo); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} + +void WriteNewGadgetFlags(BPTR handle,ULONG flags) +{ + GetFlag(flags,PLACETEXT_LEFT) FPuts(handle,"PLACETEXT_LEFT |"); + GetFlag(flags,PLACETEXT_RIGHT) FPuts(handle,"PLACETEXT_RIGHT |"); + GetFlag(flags,PLACETEXT_ABOVE) FPuts(handle,"PLACETEXT_ABOVE |"); + GetFlag(flags,PLACETEXT_BELOW) FPuts(handle,"PLACETEXT_BELOW |"); + GetFlag(flags,PLACETEXT_IN) FPuts(handle,"PLACETEXT_IN |"); + GetFlag(flags,NG_HIGHLABEL) FPuts(handle,"NG_HIGHLABEL |"); + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void GADGET_GenerateStruct(BPTR handle,piObject *go) +{ + struct Node_Frame *nf; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct TagItem *ti; + struct Node *n; + ULONG a,w,h; + piObject *wo,*fo; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case CYCLE_ID: + case MX_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"UBYTE *LABELS_%s[]=\n{\n",ng->ng_Label); + for(n=GetHead(ti->ti_Data),a=0;GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle," (UBYTE *)MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + FPuts(handle," NULL\n};\n"); + } + break; + case LISTVIEW_ID: + if(ti=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + FPrintf(handle,"extern struct MinList LABELS_%s;",ng->ng_Label); + FPrintf(handle,"struct Node NODES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + if(!GetSucc(GetSucc(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Tail, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a+1); + if(!GetPred(GetPred(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Head, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a-1); + FPrintf(handle,"0, 0, (STRPTR) MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + FPrintf(handle,"struct MinList LABELS_%s={\n (struct MinNode *)&NODES_%s[0], NULL, (struct MinNode *)&NODES_%s[%ld]\n};\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,a); + } + } + break; + case PAGE_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),GetHead(List(ti->ti_Data))->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + w=nw->nw_Width+10-Scr->WBorLeft-(nw->nw_Flags&WFLG_SIZEGADGET?18:Scr->WBorRight); + h=nw->nw_Height+Scr->WBorBottom-(Scr->RastPort.TxHeight+Scr->WBorTop+1)-4; + FPrintf(handle,"struct BevelBox BBOX_%s=\n{\n NULL, %ld, %ld, %ld, %ld, BBFLG_BACKFILL|BBFLG_FRAMEBUTTON, 0, 0, 0, 0\n};\n\n",ng->ng_Label,ng->ng_X-5,ng->ng_Y+ng->ng_Height,w,h); + } + for(n=GetHead(List(ti->ti_Data));GetSucc(n);n=GetSucc(n)) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + { + FPrintf(handle,"struct BevelBox BBOX_%s_%s[]=\n{\n",ng->ng_Label,n->ln_Name); + for(a=0,fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo),a++) + { + nf=(struct Node_Frame *)OBJECT_DATA(fo); + if(!GetSucc(GetSucc(fo))) FPuts(handle," NULL, "); + else FPrintf(handle," &BBOX_%s_%s[%ld], ",ng->ng_Label,n->ln_Name,a+1); + FPrintf(handle,"%ld, %ld, %ld, %ld, ",ng->ng_X+nf->nf_X,ng->ng_Y+nf->nf_Y+ng->ng_Height,(nf->nf_FrameType==FTYPE_VERTICALLINE)?1L:nf->nf_Width,(nf->nf_FrameType==FTYPE_HORIZONTALLINE)?1L:nf->nf_Height); + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + case FTYPE_RIDGE: FPuts(handle,"BBFLG_FRAMERIDGE"); break; + case FTYPE_HORIZONTALLINE: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + case FTYPE_VERTICALLINE: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + } + GetFlag(nf->nf_Flags,MYFR_Recessed) FPuts(handle,"|BBFLG_RECESSED, "); + else FPuts(handle,", "); + FPuts(handle,"0, 0, 0, 0,\n"); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + } + } + } + FPrintf(handle,"struct Page PAGES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(List(ti->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!GetSucc(GetSucc(n))) FPuts(handle," NULL, "); + else FPrintf(handle,"\t&PAGES_%s[%ld], ",ng->ng_Label,a+1); + FPrintf(handle,"(STRPTR) MSG_%s_L%ld_GAD, FS_NORMAL, NULL, NULL, ",ng->ng_Label,a); + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(IsListEmpty(List(&nw->nw_List_Frame))) FPuts(handle,"NULL, "); + else FPrintf(handle,"BBOX_%s_%s, ",ng->ng_Label,n->ln_Name); + } + } + FPuts(handle,"NULL, NULL,\n"); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + } + } + break; + case POPUPMENU_ID: + if(ti=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + FPrintf(handle,"extern struct MinList LABELS_%s;\n",ng->ng_Label); + FPrintf(handle,"struct Node NODES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + if(!GetSucc(GetSucc(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Tail, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a+1); + if(!GetPred(GetPred(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Head, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a-1); + FPrintf(handle,"0, 0, (STRPTR) MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + FPrintf(handle,"struct MinList LABELS_%s={\n (struct MinNode *)&NODES_%s[0], NULL, (struct MinNode *)&NODES_%s[%ld]\n};\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,a); + } + } + break; + } +} /* GADGET_GenerateStruct */ + +void GADGET_GenerateTags(BPTR handle,piObject *go) +{ + piObject *wo2,*go2; + struct Node_Gadget *ng,*ng2,*ngp=NULL; + struct Node_Window *nw,*nw2; + struct Node *n; + struct GadToolsData *gtd; + struct TagItem *t; + LONG x,y,w,h; + UWORD offl,offt,offr,offb; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + nw=(struct Node_Window *)OBJECT_DATA(ng->ng_Window); + gtd=(struct GadToolsData *)GadgetData(ng); + + if(nw->nw_PageGadget) + { + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + for(go2=(piObject *)GetHead(List(&nw2->nw_List_Gadget));GetSucc(go2);go2=(piObject *)GetSucc(go2)) + { + ng2=(struct Node_Gadget *)OBJECT_DATA(go2); + if(ng2->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng2->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + if(!strcmp(nw->nw_Label,n->ln_Name)) + { + ngp=ng2; + } + } + } + } + + FPuts(handle," "); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + FPuts(handle,"BUTTON_KIND, NULL,"); break; + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(TAG_USER+2,ng->ng_OwnTags)) FPrintf(handle,"GA_ToggleSelect, %s, ",t->ti_Data?"TRUE":"FALSE"); + switch(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data) + { + case 0: FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); break; + case 1: FPrintf(handle,"GA_LabelImage, (ULONG) &%sTbr, ",gtd->g_Text); break; + case 2: FPrintf(handle,"GA_LabelImage, (ULONG) &%sImg, ",gtd->g_Text); break; + } + break; + case CHECKBOX_ID: + FPuts(handle,"CHECKBOX_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTCB_Checked,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTCB_Checked, TRUE, "); + if(t=FindTagItem(GTCB_Scaled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTCB_Scaled, TRUE, "); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case COLORWHEEL_ID: + FPuts(handle,"COLORWHEEL_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_FollowMouse,ng->ng_Tags)) FPrintf(handle,"GA_FollowMouse, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(WHEEL_BevelBox,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"WHEEL_BevelBox, TRUE, "); + if(t=FindTagItem(WHEEL_Abbrv,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"WHEEL_Abbrv, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(WHEEL_MaxPens,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"WHEEL_MaxPens, %ld, ",t->ti_Data); + if(t=FindTagItem(WHEEL_GradientSlider,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"WHEEL_GradientSlider, %sGadgets[GA_%s], ",ng->ng_Label,t->ti_Data); + FPuts(handle,"WHEEL_Screen, NULL, "); + break; + case CYCLE_ID: + FPuts(handle,"CYCLE_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTCY_Active,ng->ng_Tags)) FPrintf(handle,"GTCY_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTCY_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case DATATYPE_ID: + FPuts(handle,"DATATYPE_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) + { + if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"GA_Text, \"%s\", ",t->ti_Data); + else FPuts(handle,"GA_Text, NULL, "); + } + else FPuts(handle,"GA_Text, NULL, "); + break; + case GRADIENTSLIDER_ID: + FPuts(handle,"GRADIENTSLIDER_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GRAD_MaxVal,ng->ng_Tags)) FPrintf(handle,"GRAD_MaxVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_CurVal,ng->ng_Tags)) FPrintf(handle,"GRAD_CurVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_SkipVal,ng->ng_Tags)) FPrintf(handle,"GRAD_SkipVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_KnobPixels,ng->ng_Tags)) FPrintf(handle,"GRAD_KnobPixels, %ld, ",t->ti_Data); + if(t=FindTagItem(GRAD_PenArray,ng->ng_Tags)) FPrintf(handle,"GRAD_PenArray, NULL, "); +// if(t=FindTagItem(GRAD_PenArray,ng->ng_Tags)) FPrintf(handle,"GRAD_PenArray, PENS_%s, ",ng->ng_Label); + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + break; + case INTEGER_ID: + FPuts(handle,"INTEGER_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTIN_Number,ng->ng_Tags)) FPrintf(handle,"GTIN_Number, %ld, ",t->ti_Data); + if(t=FindTagItem(GTIN_MaxChars,ng->ng_Tags)) FPrintf(handle,"GTIN_MaxChars, %ld, ",t->ti_Data); + if(t=FindTagItem(STRINGA_ExitHelp,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ExitHelp, TRUE, "); + if(t=FindTagItem(STRINGA_ReplaceMode,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ReplaceMode, TRUE, "); + if(t=FindTagItem(STRINGA_Justification,ng->ng_Tags)) + { + FPuts(handle,"STRINGA_Justification, "); + switch(t->ti_Data) + { + case STRINGLEFT: FPuts(handle,"STRINGLEFT"); break; + case STRINGCENTER: FPuts(handle,"STRINGCENTER"); break; + case STRINGRIGHT: FPuts(handle,"STRINGRIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case LISTVIEW_ID: + FPuts(handle,"LISTVIEW_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTLV_ReadOnly,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTLV_ReadOnly, TRUE, "); + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTLV_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(GTLV_ShowSelected,ng->ng_Tags)) FPuts(handle,"GTLV_ShowSelected, NULL, "); + if(t=FindTagItem(LAYOUTA_Spacing,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"LAYOUTA_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(GTLV_ScrollWidth,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTLV_ScrollWidth, %ld, ",t->ti_Data); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case MX_ID: + FPuts(handle,"MX_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTMX_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(GTMX_Active,ng->ng_Tags)) FPrintf(handle,"GTMX_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(GTMX_Scaled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTMX_Scaled, TRUE, "); + if(t=FindTagItem(GTMX_Spacing,ng->ng_Tags)) FPrintf(handle,"GTMX_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(GTMX_TitlePlace,ng->ng_Tags)) + { + FPuts(handle,"GTMX_TitlePlace, "); + switch(t->ti_Data) + { + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case NUMBER_ID: + FPuts(handle,"NUMBER_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTNM_Number,ng->ng_Tags)) FPrintf(handle,"GTNM_Number, %ld, ",t->ti_Data); + if(t=FindTagItem(GTNM_Border,ng->ng_Tags)) FPrintf(handle,"GTNM_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTNM_Clipped,ng->ng_Tags)) FPrintf(handle,"GTNM_Clipped, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) FPrintf(handle,"GTNM_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTNM_MaxNumberLen,ng->ng_Tags)) FPrintf(handle,"GTNM_MaxNumberLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTNM_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTNM_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case PAGE_ID: + FPuts(handle,"PAGE_KIND, NULL, "); + FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(PAGE_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PAGE_Pages,ng->ng_Tags)) FPrintf(handle,"PAGE_Pages, (ULONG) PAGES_%s, ",ng->ng_Label); + if(t=FindTagItem(PAGE_Active,ng->ng_Tags)) FPrintf(handle,"PAGE_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(PAGE_Layout,ng->ng_Tags)) + { + FPuts(handle,"PAGE_Layout, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"PGLYT_SIMPLE"); break; + case GTJ_CENTER: FPuts(handle,"PGLYT_MUISTYLE"); break; + case GTJ_RIGHT: FPuts(handle,"PGLYT_GADTOOLS"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(PAGE_ActiveStyle,ng->ng_Tags)) + { + FPuts(handle,"PAGE_ActiveStyle, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"PGAST_NORMAL"); break; + case GTJ_CENTER: FPuts(handle,"PGAST_HILIGHT"); break; + case GTJ_RIGHT: FPuts(handle,"PGAST_SHADOW"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"PAGE_ClearBBox, (ULONG) &BBOX_%s, ",ng->ng_Label); + break; + case PALETTE_ID: + FPuts(handle,"PALETTE_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTPA_Depth,ng->ng_Tags)) FPrintf(handle,"GTPA_Depth, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_Color,ng->ng_Tags)) FPrintf(handle,"GTPA_Color, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_ColorOffset,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_ColorOffset, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_IndicatorWidth,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_IndicatorWidth, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_IndicatorHeight,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_IndicatorHeight, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_NumColors,ng->ng_Tags)) FPrintf(handle,"GTPA_NumColors, %ld, ",t->ti_Data); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case POPUPMENU_ID: + FPuts(handle,"POPUPMENU_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"PUMG_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(PUMG_Active,ng->ng_Tags)) FPrintf(handle,"PUMG_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(PUMG_NewLook,ng->ng_Tags)) FPrintf(handle,"PUMG_NewLook, %s, ",t->ti_Data?"TRUE":"FALSE"); + break; + case PROGRESS_ID: + FPuts(handle,"PROGRESS_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PROG_MaxVal,ng->ng_Tags)) FPrintf(handle,"PROG_MaxVal, %ld, ",t->ti_Data); + if(t=FindTagItem(PROG_CurVal,ng->ng_Tags)) FPrintf(handle,"PROG_CurVal, %ld, ",t->ti_Data); + if(t=FindTagItem(PROG_ConvertToPercents,ng->ng_Tags)) FPrintf(handle,"PROG_ConvertToPercents, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) FPrintf(handle,"PROG_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(PROG_Border,ng->ng_Tags)) FPrintf(handle,"PROG_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(PROG_Placement,ng->ng_Tags)) + { + FPuts(handle,"PROG_Placement, "); + switch(t->ti_Data) + { + case PLACETEXT_IN: FPuts(handle,"PLACETEXT_IN"); break; + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + break; + case SCROLLER_ID: + FPuts(handle,"SCROLLER_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_RelVerify,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(GTSC_Top,ng->ng_Tags)) FPrintf(handle,"GTSC_Top, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSC_Total,ng->ng_Tags)) FPrintf(handle,"GTSC_Total, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSC_Visible,ng->ng_Tags)) FPrintf(handle,"GTSC_Visible, %ld, ",t->ti_Data); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + switch(t->ti_Data) + { + case 0: break; // None + case 1: if(t=FindTagItem(GTSC_Arrows,ng->ng_Tags)) if(t) FPrintf(handle,"GTSC_Arrows, %ld, ",t->ti_Data); break; + case 2: FPrintf(handle,"GTSC_Arrows, %ld, ",ng->ng_Height); break; + } + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case SLIDER_ID: + FPuts(handle,"SLIDER_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_RelVerify,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(GTSL_Min,ng->ng_Tags)) FPrintf(handle,"GTSL_Min, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_Max,ng->ng_Tags)) FPrintf(handle,"GTSL_Max, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_Level,ng->ng_Tags)) FPrintf(handle,"GTSL_Level, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_MaxLevelLen,ng->ng_Tags)) FPrintf(handle,"GTSL_MaxLevelLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_MaxPixelLen,ng->ng_Tags)) FPrintf(handle,"GTSL_MaxPixelLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) FPrintf(handle,"GTSL_LevelFormat, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTSL_LevelPlace,ng->ng_Tags)) + { + FPuts(handle,"GTSL_LevelPlace, "); + switch(t->ti_Data) + { + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(GTSL_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTSL_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case STRING_ID: + FPuts(handle,"STRING_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"GTST_String, (ULONG) MSG_%s_STRING_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTST_MaxChars,ng->ng_Tags)) FPrintf(handle,"GTST_MaxChars, %ld, ",t->ti_Data); + if(t=FindTagItem(STRINGA_ExitHelp,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ExitHelp, TRUE, "); + if(t=FindTagItem(STRINGA_ReplaceMode,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ReplaceMode, TRUE, "); + if(t=FindTagItem(STRINGA_Justification,ng->ng_Tags)) + { + FPuts(handle,"STRINGA_Justification, "); + switch(t->ti_Data) + { + case STRINGLEFT: FPuts(handle,"STRINGLEFT"); break; + case STRINGCENTER: FPuts(handle,"STRINGCENTER"); break; + case STRINGRIGHT: FPuts(handle,"STRINGRIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case TAPEDECK_ID: + FPuts(handle,"TAPEDECK_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TDECK_Paused,ng->ng_Tags)) FPrintf(handle,"TDECK_Paused, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TDECK_Tape,ng->ng_Tags)) FPrintf(handle,"TDECK_Tape, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TDECK_Tape,ng->ng_Tags)) + { + if(t=FindTagItem(TDECK_Frames,ng->ng_Tags)) FPrintf(handle,"TDECK_Frames, %ld, ",t->ti_Data); + if(t=FindTagItem(TDECK_CurrentFrame,ng->ng_Tags)) FPrintf(handle,"TDECK_CurrentFrame, %ld, ",t->ti_Data); + } + break; + case TEXT_ID: + FPuts(handle,"TEXT_KIND, NULL,"); + FPuts(handle,"GT_PlaceText, %s,\n",WriteNewGadgetFlags(handle,gtd->g_Flags)); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"GTTX_Text, (ULONG) MSG_%s_STRING_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTTX_Border,ng->ng_Tags)) FPrintf(handle,"GTTX_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_Clipped,ng->ng_Tags)) FPrintf(handle,"GTTX_Clipped, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_CopyText,ng->ng_Tags)) FPrintf(handle,"GTTX_CopyText, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTTX_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case TEXTFIELD_ID: + FPuts(handle,"TEXTFIELD_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) FPrintf(handle,"GA_Disabled, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_ReadOnly,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_ReadOnly, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Partial,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Partial, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_BlockCursor,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_BlockCursor, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_VCenter,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_VCenter, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_PassCommand,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_PassCommand, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_NonPrintChars,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_NonPrintChars, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_MaxSizeBeep,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_MaxSizeBeep, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_NoGhost,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_NoGhost, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Modified,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Modified, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_UserAlign,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_UserAlign, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_RuledPaper,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_RuledPaper, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Inverted,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Inverted, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_Delimiters, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_AcceptChars, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_RejectChars, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_BlinkRate,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_BlinkRate, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_MaxSize,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_MaxSize, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_TabSpaces,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_TabSpaces, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_Spacing,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_Border,ng->ng_Tags)) + { + FPuts(handle,"TEXTFIELD_Border, "); + switch(t->ti_Data) + { + case TEXTFIELD_BORDER_NONE: FPuts(handle,"TEXTFIELD_BORDER_NONE"); break; + case TEXTFIELD_BORDER_BEVEL: FPuts(handle,"TEXTFIELD_BORDER_BEVEL"); break; + case TEXTFIELD_BORDER_DOUBLEBEVEL: FPuts(handle,"TEXTFIELD_BORDER_DOUBLEBEVEL"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(TEXTFIELD_Alignment,ng->ng_Tags)) + { + FPuts(handle,"TEXTFIELD_Alignment, "); + switch(t->ti_Data) + { + case TEXTFIELD_ALIGN_LEFT: FPuts(handle,"TEXTFIELD_ALIGN_LEFT"); break; + case TEXTFIELD_ALIGN_RIGHT: FPuts(handle,"TEXTFIELD_ALIGN_RIGHT"); break; + case TEXTFIELD_ALIGN_CENTER: FPuts(handle,"TEXTFIELD_ALIGN_CENTER"); break; + } + FPuts(handle,", "); + } + break; + case TREEVIEW_ID: + FPuts(handle,"TREEVIEW_KIND, NULL, "); + FPuts(handle,"GA_RelVerify, TRUE, "); + FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(LIST_Labels,ng->ng_Tags)) FPrintf(handle,"LIST_Labels, NULL, "); + if(t=FindTagItem(LIST_ReadOnly,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"LIST_ReadOnly, TRUE, "); + if(t=FindTagItem(LIST_Border,ng->ng_Tags)) FPrintf(handle,"LIST_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_MultiSelect,ng->ng_Tags)) FPrintf(handle,"LIST_MultiSelect, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_ShowTreeLines,ng->ng_Tags)) FPrintf(handle,"LIST_ShowTreeLines, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_IsTree,ng->ng_Tags)) FPrintf(handle,"LIST_IsTree, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_Columns,ng->ng_Tags)) FPrintf(handle,"LIST_Columns, %ld, ",t->ti_Data); + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"LIST_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + break; + } + + NWCalcLeftTop(&offl,&offt,nw); + NWCalcRightBottom(&offr,&offb,nw); + + if(ng->ng_RelX) x=(LONG)((WORD)-(nw->nw_Width-offl-ng->ng_X-1)); + else x=(LONG)((WORD)ng->ng_X); + if(ng->ng_RelY) y=(LONG)((WORD)-(nw->nw_Height-offt-ng->ng_Y-1)); + else y=(LONG)((WORD)ng->ng_Y); + if(ng->ng_RelWidth) w=(LONG)((WORD)-(nw->nw_Width-ng->ng_Width-offl-offr-ng->ng_X-1)); + else w=(LONG)((WORD)ng->ng_Width+1); + if(ng->ng_RelHeight) h=(LONG)((WORD)-(nw->nw_Height-ng->ng_Height-offt-offb-ng->ng_Y-1)); + else h=(LONG)((WORD)ng->ng_Height+1); + if(ngp) + { + x+=(LONG)((WORD)ngp->ng_X); + y+=(LONG)((WORD)(ngp->ng_Y+ngp->ng_Height)); + } + + if(ng->ng_RelX) FPrintf(handle,"GA_Right, %ld, ",x); + else FPrintf(handle,"GA_Left, %ld, ",x); + if(ng->ng_RelY) FPrintf(handle,"GA_Bottom, %ld, ",y); + else FPrintf(handle,"GA_Top, %ld, ",y); + if(ng->ng_RelWidth) FPrintf(handle,"GA_RelWidth, %ld, ",w); + else FPrintf(handle,"GA_Width, %ld, ",w); + if(ng->ng_RelHeight) FPrintf(handle,"GA_RelHeight, %ld, ",h); + else FPrintf(handle,"GA_Height, %ld, ",h); + + if((ng->ng_PlugInID!=TEXT_ID) && (ng->ng_PlugInID!=NUMBER_ID) && (ng->ng_PlugInID!=PROGRESS_ID)) + FPrintf(handle,"GA_UserData, (ULONG) FN_%s_Clicked, ",ng->ng_Label); + + FPuts(handle,"TAG_DONE,\n"); +} /* GADGET_GenerateTags */ + +void GADGET_GenerateOpenLib(BPTR handle,ULONG id) +{ + switch(id) + { + case COLORWHEEL_ID: + FPuts(handle," if(!(ColorWheelBase=OpenLibrary(\"gadgets/colorwheel.gadget\",39))) return GTBERR_OPENLIB_COLORWHEEL;\n"); + break; + case GRADIENTSLIDER_ID: + FPuts(handle," if(!(GradientSliderBase=OpenLibrary(\"gadgets/gradientslider.gadget\",39))) return GTBERR_OPENLIB_GRADIENTSLIDER;\n"); + break; + case TAPEDECK_ID: + FPuts(handle," if(!(TapeDeckBase=OpenLibrary(\"gadgets/tapedeck.gadget\",39))) return GTBERR_OPENLIB_TAPEDECK;\n"); + break; + case PAGE_ID: + FPuts(handle," if(!(PageBase=OpenLibrary(\"gadgets/page.gadget\",1))) return GTBERR_OPENLIB_PAGE;\n"); + FPuts(handle," PageClass=PAGE_GetClass();\n"); + break; + case POPUPMENU_ID: + FPuts(handle," if(!(PopUpMenuClass=CreatePopUpMenuClass())) return GTBERR_OPENLIB_POPUPMENU;\n"); + break; + case PROGRESS_ID: + FPuts(handle," if(!(ProgressBase=OpenLibrary(\"gadgets/progress.gadget\",37))) return GTBERR_OPENLIB_PROGRESS;\n"); + FPuts(handle," ProgressClass=GetProgressClass();\n"); + break; + case TEXTFIELD_ID: + FPuts(handle," if(!(TextFieldBase=OpenLibrary(\"gadgets/textfield.gadget\",3))) return GTBERR_OPENLIB_TEXTFIELD;\n"); + FPuts(handle," TextFieldClass=TEXTFIELD_GetClass();\n"); + break; + case TREEVIEW_ID: + FPuts(handle," if(!(ListViewBase=OpenLibrary(\"gadgets/listview.gadget\",37))) return GTBERR_OPENLIB_TREEVIEW;\n"); + FPuts(handle," ListViewClass=GetListViewClass();\n"); + break; + } +} /* GADGET_GenerateOpenLib */ + +void GADGET_GenerateCloseLib(BPTR handle,ULONG id) +{ + switch(id) + { + case COLORWHEEL_ID: + FPuts(handle," if(ColorWheelBase) CloseLibrary(ColorWheelBase); ColorWheelBase=NULL;\n"); + break; + case GRADIENTSLIDER_ID: + FPuts(handle," if(GradientSliderBase) CloseLibrary(GradientSliderBase); GradientSliderBase=NULL;\n"); + break; + case TAPEDECK_ID: + FPuts(handle," if(TapeDeckBase) CloseLibrary(TapeDeckBase); TapeDeckBase=NULL;\n"); + break; + case PAGE_ID: + FPuts(handle," if(PageBase) CloseLibrary(PageBase); PageBase=NULL; PageClass=NULL;\n"); + break; + case POPUPMENU_ID: + FPuts(handle," if(PopUpMenuClass) DisposePopUpMenuClass(PopUpMenuClass); PopUpMenuClass=NULL;\n"); + break; + case PROGRESS_ID: + FPuts(handle," if(ProgressBase) CloseLibrary(ProgressBase); ProgressBase=NULL; ProgressClass=NULL;\n"); + break; + case TEXTFIELD_ID: + FPuts(handle," if(TextFieldBase) CloseLibrary(TextFieldBase); TextFieldBase=NULL; TextFieldClass=NULL;\n"); + break; + case TREEVIEW_ID: + FPuts(handle," if(ListViewBase) CloseLibrary(ListViewBase); ListViewBase=NULL; ListViewClass=NULL;\n"); + break; + } +} /* GADGET_GenerateCloseLib */ + +void GADGET_GenerateProtos(BPTR handle,piObject *go) +{ + struct Node_Gadget *ng; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case NUMBER_ID: + case TEXT_ID: + case PROGRESS_ID: + break; + default: + FPrintf(handle,"int FN_%s_Clicked(void);\n",ng->ng_Label); + break; + } +} /* GADGET_GenerateProtos */ + +void GADGET_GenerateTemplate(BPTR handle,piObject *go) +{ + struct Node_Gadget *ng; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case NUMBER_ID: + case TEXT_ID: + case PROGRESS_ID: + break; + default: + FPrintf(handle,"int FN_%s_Clicked()\n{\n return 1;\n}\n\n",ng->ng_Label); + break; + } +} /* GADGET_GenerateTemplate */ + +void GADGET_GenerateCatalogSource(BPTR handle,piObject *go,LONG *index) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + } + break; + case CHECKBOX_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++,(*index)++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case SCROLLER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case SLIDER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case STRING_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_STRING_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_STRING_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + } +} /* GADGET_GenerateCatalogSource */ + +void GADGET_GenerateCatalogHeader(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case CHECKBOX_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case NUMBER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case SCROLLER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case SLIDER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case STRING_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_STRING_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_STRING_GAD ((APTR) &_MSG_%s_STRING_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_STRING_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_STRING_GAD ((APTR) &_MSG_%s_STRING_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + } +} /* GADGET_GenerateCatalogHeader */ + +void GADGET_GenerateCatalogDescription(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case CHECKBOX_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case SCROLLER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case SLIDER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case STRING_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + } +} /* GADGET_GenerateCatalogDescription */ + +void GADGET_GenerateCatalogTranslation(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case CHECKBOX_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case SCROLLER_ID: + FPrintf(handle,"MSG_%s_GAD\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case SLIDER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case STRING_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + } +} /* GADGET_GenerateCatalogTranslation */ diff --git a/GadToolsBox/BCGen/gadtools.c b/GadToolsBox/BCGen/gadtools.c new file mode 100755 index 0000000..234c075 --- /dev/null +++ b/GadToolsBox/BCGen/gadtools.c @@ -0,0 +1,581 @@ +/* +** Source code generated by GadToolsBox 0.0 (c) by Tomasz Muszynski +** GUI designed by: Tomasz Muszynski +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtools.h" +#include"gadtools_cat.h" + +TEXT VER_STRING[]=VER_SVER; + +struct Screen *Scr=NULL; +struct DrawInfo *DrawInfo=NULL; +APTR VisualInfo=NULL; +TEXT ScrTitle[256]; +TEXT ScrPubName[30]; +struct Catalog *Catalog=NULL; +struct Locale *Locale=NULL; +struct TextAttr *Font, Attr; +UWORD FontX, FontY; +BOOL GadgetLocaleDone[CNTWND_WINDOWS]; +BOOL WindowLocaleDone[CNTWND_WINDOWS]; +BOOL MenuLocaleDone[CNTMN_MENUS]; + + +/* Prefs Window structures */ +struct Window *PrefsWnd=NULL; +struct Gadget *PrefsGList=NULL; +struct Gadget *PrefsGadgets[CNT_Prefs]; +struct IntuiMessage PrefsMsg; + + +/* Prefs Window tags */ +ULONG PrefsWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 281, WA_Height, 139, WA_Title, (ULONG) MSG_Prefs_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_RMBTrap, TRUE, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Prefs Gadget structures */ + +/* Prefs Gadget tags */ +ULONG PrefsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_TEMPLATE_GAD, GA_Left, 160, GA_Top, 4, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_TEMPLATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_GUIFUNCS_GAD, GA_Left, 160, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_GUIFUNCS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_LOCALIZE_GAD, GA_Left, 160, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_LOCALIZE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_SAVE_GAD, GA_Left, 8, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_SAVE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_CANCEL_GAD, GA_Left, 184, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_CANCEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_USE_GAD, GA_Left, 96, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_USE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_SCREEN_GAD, GA_Left, 160, GA_Top, 24, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_SCREEN_Clicked, TAG_DONE +}; + +/* Application functions */ + +UWORD InitApplication(STRPTR language) +{ + if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE; + Catalog=OpenCatalog(Locale,"c.generator.catalog", + OC_BuiltInLanguage,"english", OC_Version, VER_VERSION, + language?OC_Language:TAG_IGNORE, language, TAG_DONE); + return GTBERR_OK; +} + +void FreeApplication() +{ + if(Catalog) CloseCatalog(Catalog); Catalog=NULL; +} + +STRPTR GetCatString(APTR fcstr) +{ + STRPTR defaultstr; + LONG strnum; + + strnum=((struct FC_Type *)fcstr)->ID; + defaultstr=((struct FC_Type *)fcstr)->Str; + + return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr); +} + +struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags) +{ + struct Gadget *g; + struct NewGadget ng; + ULONG kind,flags,x,y,w,h; + BOOL rx=0,ry=0,rw=0,rh=0; + struct TagItem *ti; + + kind=tags[0].ti_Tag; + flags=tags[0].ti_Data; + tags=&tags[1]; + + if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx; + else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; } + + if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy; + else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; } + + if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data); + else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; } + + if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data); + else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; } + + switch(kind) + { + case BUTTON_KIND: + case CHECKBOX_KIND: + case INTEGER_KIND: + case LISTVIEW_KIND: + case MX_KIND: + case NUMBER_KIND: + case CYCLE_KIND: + case PALETTE_KIND: + case SCROLLER_KIND: + case SLIDER_KIND: + case STRING_KIND: + case TEXT_KIND: + ng.ng_LeftEdge=x; + ng.ng_TopEdge=y; + ng.ng_Width=w; + ng.ng_Height=h; + ng.ng_Flags=flags; + ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags); + ng.ng_GadgetID=GetTagData(GA_ID,0,tags); + ng.ng_GadgetText=(char *)GetTagData(GA_Text,0,tags); + ng.ng_VisualInfo=VisualInfo; + ng.ng_TextAttr=Font; + g=CreateGadgetA(kind,prev,&ng,tags); + if(!g) return g; + if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT; + if(rx) g->Flags|=GFLG_RELRIGHT; + if(ry) g->Flags|=GFLG_RELBOTTOM; + if(rw) g->Flags|=GFLG_RELWIDTH; + if(rh) g->Flags|=GFLG_RELHEIGHT; + break; + } + return g; +} + +void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags) +{ + switch(tags[0].ti_Tag) + { + case COLORWHEEL_KIND: + case GRADIENTSLIDER_KIND: + case PAGE_KIND: + case POPUPMENU_KIND: + case PROGRESS_KIND: + case TAPEDECK_KIND: + case TEXTFIELD_KIND: + case TREEVIEW_KIND: + DisposeObject(g); + break; + case TOOLIMAGE_KIND: + g->GadgetRender=g->SelectRender=NULL; + break; + } +} + +struct Window *OpenWindowTagsEx(ULONG tags,...) +{ + struct Gadget *g=NULL; + struct Window *win; + struct TagItem *ti,*clone=NULL; + BOOL tbg=FALSE,rx=FALSE,ry=FALSE,rw=FALSE,rh=FALSE; + ULONG left,top,width,height; + + clone=CloneTagItems((struct TagItem *)&tags); + if(ti=FindTagItem(WA_ToolDragBar,clone)) + { + if(g=AllocMem(sizeof(struct Gadget),MEMF_ANY|MEMF_CLEAR)) + { + g->LeftEdge=0; + g->TopEdge=0; + g->Flags=GFLG_GADGHNONE; + g->GadgetType=GTYP_WDRAGGING; + g->UserData=(APTR)DRAG_ID; + if(ti->ti_Data==TOOL_HORIZ) + { + g->Activation=GACT_TOPBORDER|GACT_BORDERSNIFF; + g->Width=32767; + g->Height=8; + } + else + { + g->Activation=GACT_LEFTBORDER|GACT_BORDERSNIFF; + g->Width=8; + g->Height=32767; + } + } + else return NULL; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_RelWidth,clone)) + { + rw=TRUE; + width=(Scr->Width)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelHeight,clone)) + { + rh=TRUE; + height=(Scr->Height)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_CenterX,clone)) + { + rx=TRUE; + left=(Scr->Width/2)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_CenterY,clone)) + { + ry=TRUE; + top=(Scr->Height/2)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelRight,clone)) + { + rx=TRUE; + left=(Scr->Width)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelBottom,clone)) + { + ry=TRUE; + top=(Scr->Height)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_Gadgets,clone)) + { + if(g) + { + g->NextGadget=(struct Gadget *)ti->ti_Data; + ti->ti_Data=(ULONG)g; + tbg=TRUE; + } + if(ti->ti_Data==NULL) ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_FontAdaptive,clone)) + { + width=AdaptX(width); + height=AdaptY(height); + ti->ti_Tag=TAG_IGNORE; + if(ti=FindTagItem(WA_Width,clone)) ti->ti_Data=AdaptX(ti->ti_Data); + if(ti=FindTagItem(WA_Height,clone)) ti->ti_Data=AdaptY(ti->ti_Data); + } + + if(!(win=OpenWindowTags(NULL, + rx?WA_Left:TAG_IGNORE,left, + ry?WA_Top:TAG_IGNORE,top, + rw?WA_Width:TAG_IGNORE,width, + rh?WA_Height:TAG_IGNORE,height, + TAG_MORE,(ULONG)clone))) + if(g) FreeMem(win,sizeof(struct Gadget)); + + if(clone) FreeTagItems(clone); + return win; +} + +void CloseWindowEx(struct Window *win) +{ + struct Gadget *g,*drag=NULL; + + g=win->FirstGadget; + while(g) + { + if(((ULONG)g->UserData)==DRAG_ID) { drag=g; break; } + g=g->NextGadget; + } + CloseWindow(win); + if(drag) FreeMem(drag,sizeof(struct Gadget)); +} + +void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE); + + if(ti=FindTagItem(WA_ToolDragBar,tags)) + { + if(ti->ti_Data==TOOL_HORIZ) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + } + else + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + } + } + else + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(GetTagData(WA_Title,NULL,tags)) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS); + + if(ti=FindTagItem(WA_SizeGadget,tags)) + sg=ti->ti_Data; + else + sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET); + + if(ti=FindTagItem(WA_SizeBBottom,tags)) + sbb=ti->ti_Data; + else + sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM); + + if(ti=FindTagItem(WA_SizeBRight,tags)) + sbr=ti->ti_Data; + else + sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT); + + if(im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE)) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} +UWORD AdaptX(UWORD value) +{ + return((UWORD)(((FontX*value)+3)/7)); +} + +UWORD AdaptY(UWORD value) +{ + return((UWORD)(((FontY*value)+6)/13)); +} + +void CalcAdaptivity(UWORD width, UWORD height) +{ + Font = &Attr; + Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name; + Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize; + FontX = Scr->RastPort.Font->tf_XSize; + + if(width && height) + if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz; + return; + +UseTopaz: + Font->ta_Name = (STRPTR)"topaz.font"; + FontX = FontY = Font->ta_YSize = 8; +} + +void FixGadgetTags(struct TagItem *tags) +{ + ULONG kind,a; + UBYTE **labels; + struct TagItem *ti; + struct Node *node; + + kind=tags[0].ti_Tag; + tags=&tags[1]; + + if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + + switch(kind) + { + case LISTVIEW_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ) + node->ln_Name=GetCatString((APTR)node->ln_Name); + break; + case MX_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case NUMBER_KIND: + if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case CYCLE_KIND: + if(ti=FindTagItem(GTCY_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case SLIDER_KIND: + if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case STRING_KIND: + if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case TEXT_KIND: + if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + } +} + +void FixWindowTags(struct TagItem *tags) +{ + struct TagItem *ti; + + if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); +} + +void FixMenus(struct NewMenu *menu) +{ + ULONG a; + + for(a=0;menu[a].nm_Type!=NM_END;a++) + if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label)) + { + menu[a].nm_CommKey=GetCatString(menu[a].nm_Label); + menu[a].nm_Label=menu[a].nm_CommKey+2; + if(menu[a].nm_CommKey[0]=='\0') menu[a].nm_CommKey=NULL; + } +} + +/* Screen functions */ + +UWORD SetupScreen(UBYTE Num) +{ + UWORD OffX,OffY; + + if(!(Scr=LockPubScreen(ScrPubName))) return GTBERR_OPENSCREEN; + OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1; + + CalcAdaptivity(0,0); + if(!(VisualInfo=GetVisualInfo(Scr,TAG_DONE))) return GTBERR_VISUALINFO; + + if(!(DrawInfo=GetScreenDrawInfo(Scr))) return GTBERR_SCRDRAWINFO; + + return GTBERR_OK; +} + +void CloseDownScreen() +{ + if(DrawInfo) FreeScreenDrawInfo(Scr,DrawInfo); DrawInfo=NULL; + if(VisualInfo) FreeVisualInfo(VisualInfo); VisualInfo=NULL; + if(Scr) UnlockPubScreen(NULL,Scr); Scr=NULL; +} + +int HandleIDCMP_Prefs() +{ + struct IntuiMessage *m; + int (*func)(); + BOOL running = TRUE; + + while(m=GT_GetIMsg(PrefsWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&PrefsMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(PrefsMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Prefs(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func = ( void * )(( struct Gadget * )PrefsMsg.IAddress )->UserData; + running = func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_Prefs() +{ + UWORD OffX=PrefsWnd->BorderLeft, OffY=PrefsWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( PrefsWnd->RPort, AdaptX(8)+OffX, AdaptY(88)+OffY, AdaptX(257), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_Prefs() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&PrefsGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PrefsWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lc%PRi zM4@jokI;AMrad<)#aOYr=%VHca4GfIo z%CH?m8c^uE!yF0#xJoW2-C^@q#9|p_$#O^Z=|gU^2-1}{yh~Rf6CrPBR;Vg_{=%0;Tyi7K3=!lyu;L96#R)6%;m zpL8X~19heb>e5$Wt}z^&9oN{5-npiZ#?~s@(j*W37tcBOugcuhxX|+~T}}x5?P%`l$=d8L4zqa@rvFsF0%ci!cRP{4O-j)HUPW$Qv}@`W6fFmZx= zAs5v(DeVlux&OM&z232O!#seWqq*0EI26$VPd?d@E$*k=+X=Se+-D{n2DMZ}DO(pxR +#include + +#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer ) +#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt ) +#define TOOL_HORIZ 0 +#define TOOL_VERT 1 + +#define DRAG_ID MAKE_ID('D','R','A','G') + +#define COLORWHEEL_KIND 10000 +#define DATATYPE_KIND 10001 +#define GRADIENTSLIDER_KIND 10002 +#define PAGE_KIND 10003 +#define POPUPMENU_KIND 10004 +#define PROGRESS_KIND 10005 +#define TAPEDECK_KIND 10006 +#define TEXTFIELD_KIND 10007 +#define TREEVIEW_KIND 10009 +#define TOOLIMAGE_KIND 10008 + +#define VER_PROGRAMNAME "c.generator" +#define VER_AUTHOR "Tomasz Muszynski" +#define VER_VERSION 1 +#define VER_REVISION 0 +#define VER_SVER "\0$VER: "VER_PROGRAMNAME" 1.0 "__AMIGADATE__"" + +#define WA_CenterX (WA_Dummy + 0x100) +#define WA_CenterY (WA_Dummy + 0x101) +#define WA_RelRight (WA_Dummy + 0x102) +#define WA_RelBottom (WA_Dummy + 0x103) +#define WA_RelWidth (WA_Dummy + 0x104) +#define WA_RelHeight (WA_Dummy + 0x105) +#define WA_ToolDragBar (WA_Dummy + 0x106) +#define WA_FontAdaptive (WA_Dummy + 0x107) +#define GTBERR_OK 0 +#define GTBERR_LOCALE 12 +#define GTBERR_CREATEPOINTER 15 +#define GTBERR_CREATEIMAGE 16 +#define GTBERR_OPENSCREEN 200 +#define GTBERR_VISUALINFO 201 +#define GTBERR_SCRDRAWINFO 202 +#define GTBERR_CREATECONTEXT 300 +#define GTBERR_CREATEGADGET 301 +#define GTBERR_CREATEMENUS 302 +#define GTBERR_OPENWINDOW 303 + +extern TEXT ScrTitle[]; +extern TEXT ScrPubName[]; +extern struct Screen *Scr; +extern struct DrawInfo *DrawInfo; +extern APTR VisualInfo; +extern struct TextAttr *Font, Attr; + +extern struct Window *PrefsWnd; +extern struct Gadget *PrefsGList; +extern ULONG PrefsWTags[]; +extern struct IntuiMessage PrefsMsg; +extern struct Gadget *PrefsGadgets[]; +#define WND_Prefs 0 + +#define CNTWND_WINDOWS 2 + +extern ULONG PrefsGTags[]; +extern struct SmartBitMapIRGB ToolBarPalette[]; +#define CNTMN_MENUS 1 + + +#define CNT_Prefs 7 +#define GD_TEMPLATE 0 +#define GD_GUIFUNCS 1 +#define GD_LOCALIZE 2 +#define GD_SAVE 3 +#define GD_CANCEL 4 +#define GD_USE 5 +#define GD_SCREEN 6 + +/* Prototypes */ +int FN_TEMPLATE_Clicked(void); +int FN_GUIFUNCS_Clicked(void); +int FN_LOCALIZE_Clicked(void); +int FN_SAVE_Clicked(void); +int FN_CANCEL_Clicked(void); +int FN_USE_Clicked(void); +int FN_SCREEN_Clicked(void); + +int HandleIDCMP_Prefs(void); +void Render_Prefs(void); +int FN_CloseWindow_Prefs(void); +UWORD OpenWindow_Prefs(void); +void CloseWindow_Prefs(void); + +UWORD SetupScreen(UBYTE); +void CloseDownScreen(void); +UWORD InitApplication(STRPTR); +void FreeApplication(void); + +struct Gadget *CreateGadgetExA(UWORD,UWORD,UWORD,UWORD,struct Gadget *,struct TagItem *); +void DeleteGadgetExA(struct Gadget *,struct TagItem *); +struct Window *OpenWindowTagsEx(ULONG, ...); +void CloseWindowEx(struct Window *); +void CalcLeftTop(UWORD *,UWORD *,struct TagItem *); +void CalcRightBottom(UWORD *,UWORD *,struct TagItem *); +STRPTR GetCatString(APTR); +UWORD AdaptX(UWORD); +UWORD AdaptY(UWORD); +void CalcAdaptivity(UWORD,UWORD); + +#endif /* gadtools_H */ diff --git a/GadToolsBox/BCGen/gadtools_cat.c b/GadToolsBox/BCGen/gadtools_cat.c new file mode 100755 index 0000000..5dbd5e6 --- /dev/null +++ b/GadToolsBox/BCGen/gadtools_cat.c @@ -0,0 +1,18 @@ +/* +** gadtools_cat.c Catalog File +*/ + +#include +#include"gadtools_cat.h" + +const struct FC_Type _MSG_SCREENTITLE_SCR = { 0, "" }; +const struct FC_Type _MSG_Prefs_WND = { 1, "Prefs: c.generator" }; +const struct FC_Type _MSG_TEMPLATE_GAD = { 2, "_Template:" }; +const struct FC_Type _MSG_GUIFUNCS_GAD = { 3, "_GUI functions:" }; +const struct FC_Type _MSG_LOCALIZE_GAD = { 4, "_Localize:" }; +const struct FC_Type _MSG_SAVE_GAD = { 5, "_Save" }; +const struct FC_Type _MSG_CANCEL_GAD = { 6, "_Cancel" }; +const struct FC_Type _MSG_USE_GAD = { 7, "_Use" }; +const struct FC_Type _MSG_SCREEN_GAD = { 8, "_Screen:" }; + + diff --git a/GadToolsBox/BCGen/gadtools_cat.h b/GadToolsBox/BCGen/gadtools_cat.h new file mode 100755 index 0000000..d79e937 --- /dev/null +++ b/GadToolsBox/BCGen/gadtools_cat.h @@ -0,0 +1,35 @@ +#ifndef gadtools_cat_H +#define gadtools_cat_H +/* +** gadtools_cat.h Catalog Header File +*/ + +#include + +struct FC_Type +{ + LONG ID; + STRPTR Str; +}; + +extern const struct FC_Type _MSG_SCREENTITLE_SCR; +#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR) +extern const struct FC_Type _MSG_Prefs_WND; +#define MSG_Prefs_WND ((APTR) &_MSG_Prefs_WND) +extern const struct FC_Type _MSG_TEMPLATE_GAD; +#define MSG_TEMPLATE_GAD ((APTR) &_MSG_TEMPLATE_GAD) +extern const struct FC_Type _MSG_GUIFUNCS_GAD; +#define MSG_GUIFUNCS_GAD ((APTR) &_MSG_GUIFUNCS_GAD) +extern const struct FC_Type _MSG_LOCALIZE_GAD; +#define MSG_LOCALIZE_GAD ((APTR) &_MSG_LOCALIZE_GAD) +extern const struct FC_Type _MSG_SAVE_GAD; +#define MSG_SAVE_GAD ((APTR) &_MSG_SAVE_GAD) +extern const struct FC_Type _MSG_CANCEL_GAD; +#define MSG_CANCEL_GAD ((APTR) &_MSG_CANCEL_GAD) +extern const struct FC_Type _MSG_USE_GAD; +#define MSG_USE_GAD ((APTR) &_MSG_USE_GAD) +extern const struct FC_Type _MSG_SCREEN_GAD; +#define MSG_SCREEN_GAD ((APTR) &_MSG_SCREEN_GAD) + + +#endif /* gadtools_cat_H */ diff --git a/GadToolsBox/BCGen/gadtools_img.c b/GadToolsBox/BCGen/gadtools_img.c new file mode 100755 index 0000000..e159dbc --- /dev/null +++ b/GadToolsBox/BCGen/gadtools_img.c @@ -0,0 +1,9 @@ +/* +** gadtools_img.c Images File +*/ + +#include +#include +#include"gadtools.h" + + diff --git a/GadToolsBox/BCGen/main.c b/GadToolsBox/BCGen/main.c new file mode 100755 index 0000000..806cb0e --- /dev/null +++ b/GadToolsBox/BCGen/main.c @@ -0,0 +1,1363 @@ +/* +** C Source code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" +#include"gadtools.h" +#include"gadtools_cat.h" + +#define Leave(x) { printf(x); goto end; } + +/* +** Protos +*/ + +void SavePrefs(STRPTR); +void LoadPrefs(STRPTR); +BOOL GenerateSourceCode(STRPTR); +void GenerateMainCode(BPTR); +void GenerateHeader(BPTR); +void GenerateImages(BPTR); +void GenerateTemplate(BPTR); +void GenerateCatalogSource(BPTR); +void GenerateCatalogHeader(BPTR); +void GenerateCatalogDescription(BPTR); +void GenerateCatalogTranslation(BPTR); +BOOL CheckPlugIn(ULONG); +BOOL CheckBOOPSIWindow(piObject *); +BOOL CheckDataTypeWindow(piObject *); +BOOL CheckGadToolsWindow(piObject *); +BOOL CheckPlugInWindow(piObject *,ULONG); +BOOL CheckAppWindow(void); +BOOL CheckToolBarWindows(void); +BOOL CheckToolBarWindow(piObject *); +BOOL CheckProjectWindow(void); + +void GADGET_GenerateStruct(BPTR,piObject *); +void GADGET_GenerateTags(BPTR,piObject *); +void GADGET_GenerateOpenLib(BPTR,ULONG); +void GADGET_GenerateCloseLib(BPTR,ULONG); +void GADGET_GenerateProtos(BPTR,piObject *); +void GADGET_GenerateTemplate(BPTR,piObject *); +void GADGET_GenerateCatalogSource(BPTR,piObject *,LONG *); +void GADGET_GenerateCatalogHeader(BPTR,piObject *); +void GADGET_GenerateCatalogDescription(BPTR,piObject *); +void GADGET_GenerateCatalogTranslation(BPTR,piObject *); + +void FUNC_GenerateWindowTags(BPTR,piObject *); +void FUNC_GenerateApplication(BPTR); +void FUNC_GenerateScreen(BPTR); +void FUNC_GenerateWindow(BPTR,piObject *); +void FUNC_GenerateErrors(BPTR); +void FUNC_GenerateTemplate(BPTR,piObject *); +void FUNC_GenerateCatalogUpdate(BPTR); + +void MENU_GenerateProtos(BPTR,piObject *); +void MENU_GenerateDefs(BPTR,piObject *); +void MENU_GenerateTemplate(BPTR,piObject *); +void MENU_GenerateCatalogSource(BPTR,piObject *,LONG *); +void MENU_GenerateCatalogHeader(BPTR,piObject *); +void MENU_GenerateCatalogDescription(BPTR,piObject *); +void MENU_GenerateCatalogTranslation(BPTR,piObject *); + +#define SetProgress(prg) SetGadgetAttrs(GTBSem->gs_Progress,GTBSem->gs_Window,NULL,PROG_CurVal,prg,TAG_DONE) +#define IFF_Error(num) \ + { \ + printf("IFFError #%d",num); \ + goto skip; \ + } + +/* +** Variables +*/ + +struct GTBSemaphore *GTBSem; +struct GUI *GUI; +extern struct Screen *Scr; +STRPTR BaseName; +BOOL OPT_ARexx,OPT_Template,OPT_Screen,OPT_UseLocale,OPT_GUIFuncs; +struct SavePrefs SP; + +#define TEMPLATE "FILE/K,SEMAPHORE/A,SETPREFS/S" +#define ARG_FILE 0 +#define ARG_SEMAPHORE 1 +#define ARG_SETPREFS 2 +#define ARG_COUNT 3 + +char DEF_FILE[]="\0"; +char DEF_SEMAPHORE[]="\0"; +ULONG DEF_SETPREFS=FALSE; + +BOOL setprefs=FALSE; +TEXT fn[256]; +TEXT semaphore[256]; + + +/* +** Main Code +*/ + +void main(int argc, char *argv[]) +{ + struct RDArgs *rdargs; + long *(opts[ARG_COUNT]); + int running=1; + + if(argc!=0) + { + opts[ARG_FILE]=(long *)DEF_FILE; + opts[ARG_SEMAPHORE]=(long *)DEF_SEMAPHORE; + opts[ARG_SETPREFS]=(long *)DEF_SETPREFS; + + if(rdargs=ReadArgs(TEMPLATE,(long *) opts, NULL)) + { + strcpy(fn,(char *)opts[ARG_FILE]); + strcpy(semaphore,(char *)opts[ARG_SEMAPHORE]); + setprefs=(ULONG)opts[ARG_SETPREFS]; + + FreeArgs(rdargs); + } + else + { + PrintFault(IoErr(),argv[0]); + exit(IoErr()); + } + } + + if(GTBSem=(struct GTBSemaphore *)FindSemaphore(semaphore)) ObtainSemaphoreShared(>BSem->gs_Semaphore); else Leave("GadToolsBox 3 is not running!\n"); + GUI=GTBSem->gs_GUI; + strcpy(ScrPubName,GUI->gui_PubScreenName); + + LoadPrefs("ENV:GadToolsBox/c.generator.prefs"); + + if(setprefs) + { + if(!InitApplication(NULL)) + { + if(!SetupScreen(0)) + { + if(!OpenWindow_Prefs()) + { + SetCheckMark(PrefsWnd,PrefsGadgets[GD_TEMPLATE],SP.spr_Flags&MYPR_Template); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_SCREEN],SP.spr_Flags&MYPR_Screen); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_LOCALIZE],SP.spr_Flags&MYPR_Localize); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_GUIFUNCS],SP.spr_Flags&MYPR_GUIFuncs); + while(running==1 || running==2) + { + Wait(1L<UserPort->mp_SigBit); + running=HandleIDCMP_Prefs(); + } + CloseWindow_Prefs(); + } + CloseDownScreen(); + } + FreeApplication(); + } + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); + exit(0); + } + + if(!(Scr=LockPubScreen(GUI->gui_PubScreenName))) Leave("Can't LockPubScreen\n"); + OPT_Template=SP.spr_Flags&MYPR_Template; + OPT_Screen=SP.spr_Flags&MYPR_Screen; + OPT_UseLocale=SP.spr_Flags&MYPR_Localize; + OPT_GUIFuncs=SP.spr_Flags&MYPR_GUIFuncs; + if(!IsListEmpty(((struct List *)&GUI->gui_List_Window))) { OPT_Screen=TRUE; OPT_GUIFuncs=TRUE; } + GenerateSourceCode(fn); +end: + if(Scr) UnlockPubScreen(NULL,Scr); + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); +} + +BOOL CheckPlugIn(ULONG id) +{ + piObject *wo,*go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==id) return TRUE; + } + } + return FALSE; +} + +BOOL CheckBOOPSIWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==COLORWHEEL_ID || + ng->ng_PlugInID==GRADIENTSLIDER_ID || + ng->ng_PlugInID==PAGE_ID || + ng->ng_PlugInID==POPUPMENU_ID || + ng->ng_PlugInID==PROGRESS_ID || + ng->ng_PlugInID==TAPEDECK_ID || + ng->ng_PlugInID==TEXTFIELD_ID || + ng->ng_PlugInID==TREEVIEW_ID) return TRUE; + } + return FALSE; +} + +BOOL CheckDataTypeWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==DATATYPE_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckPlugInWindow(piObject *wo,ULONG id) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==id ) return TRUE; + } + return FALSE; +} + +BOOL CheckGadToolsWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID || + ng->ng_PlugInID==CHECKBOX_ID || + ng->ng_PlugInID==CYCLE_ID || + ng->ng_PlugInID==INTEGER_ID || + ng->ng_PlugInID==LISTVIEW_ID || + ng->ng_PlugInID==NUMBER_ID || + ng->ng_PlugInID==MX_ID || + ng->ng_PlugInID==PALETTE_ID || + ng->ng_PlugInID==SCROLLER_ID || + ng->ng_PlugInID==SLIDER_ID || + ng->ng_PlugInID==STRING_ID || + ng->ng_PlugInID==TEXT_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckToolBarWindows() +{ + piObject *go,*wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + } + return FALSE; +} + +BOOL CheckToolBarWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + return FALSE; +} + +BOOL CheckAppWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_AppWindow) return TRUE; + } + return FALSE; +} + +BOOL CheckProjectWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_Project) return TRUE; + } + return FALSE; +} + +BOOL GenerateSourceCode(STRPTR basename) +{ + TEXT fname[108]; + BPTR file=NULL; + struct Node_Version *nv; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + BaseName=FilePart(basename); + + sprintf(fname,"%s.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateMainCode(file); + Close(file); + } + + sprintf(fname,"%s.h",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateHeader(file); + Close(file); + } + + if(!IsListEmpty(List(&GUI->gui_List_Image))) + { + sprintf(fname,"%s_img.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateImages(file); + Close(file); + } + } + + if(OPT_Template) + { + sprintf(fname,"%s_temp.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateTemplate(file); + Close(file); + } + SetProgress(85L); + } + + sprintf(fname,"%s_cat.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogSource(file); + Close(file); + } + + sprintf(fname,"%s_cat.h",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogHeader(file); + Close(file); + } + + SetProgress(90L); + + if(OPT_UseLocale) + { + strcpy(fname,basename); + sprintf(FilePart(fname),"%s.cd",nv->nv_ProgramName); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogDescription(file); + Close(file); + } + + SetProgress(95L); + + strcpy(fname,basename); + sprintf(FilePart(fname),"%s.ct",nv->nv_ProgramName); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogTranslation(file); + Close(file); + } + } + + SetProgress(100L); + + return TRUE; +} + +void GenerateMainCode(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Menu *nm; + struct Node_Screen *ns; + struct Node_Version *nv; + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + SetProgress(0L); + +/* Header */ + FPrintf(handle,"/*" \ + "\n** Source code generated by GadToolsBox %ld.%ld (c) by Tomasz Muszynski\n" \ + "** GUI designed by: %s\n" \ + "*/\n\n",GUI->gui_Version,GUI->gui_Revision,nv->nv_Author); + + SetProgress(2L); + +/* Includes */ + FPuts(handle,"#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n"); + FPuts(handle,"#include\n"); + if(OPT_UseLocale) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + if(CheckAppWindow()) FPuts(handle,"#include\n"); + if(CheckToolBarWindows()) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(TEXTFIELD_ID)){ FPuts(handle,"#include\n"); + FPuts(handle,"#include\n");} + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + FPuts(handle,"#include + FPrintf(handle,"#include\"%s.h\"\n",BaseName); + FPrintf(handle,"#include\"%s_cat.h\"\n",BaseName); + FPuts(handle,"\n"); + + SetProgress(5L); + + FPuts(handle,"TEXT VER_STRING[]=VER_SVER;\n\n"); + + SetProgress(10L); + +/* Global variables - available only if screen generation is on */ + if(OPT_Screen) + { + FPuts(handle,"Object *MainScr=NULL;\nstruct Screen *Scr=NULL;\n"); + FPuts(handle,"TEXT ScrTitle[256];\n"); + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPuts(handle,"TEXT ScrPubName[30];\n"); + if(ns->ns_Type==TYPE_WORKBENCH) + { + FPrintf(handle,"ULONG ScrTags[]=\n{\n"\ + " SCRN_LockPubName,%s,\n"\ + " TAG_DONE\n};\n",ns->ns_Public[0]?"ScrPubName","NULL"); + } + else + { + FPrintf(handle,"ULONG ScrTags[]=\n{\n"\ + " SCRN_Width, %ld,\n"\ + " SCRN_Height, %ld,\n"\ + " SCRN_Depth, %ld,\n"\ + " SCRN_Title, ScrTitle,\n"\ + " SCRN_DisplayID, 0x%lx,\n" + " SCRN_Type, %s,\n",ns->ns_Width,ns->ns_Height,ns->ns_Depth,ns->ns_MyFlags&MYSC_DefaultID?0x0:ns->ns_DisplayID, + (ns->ns_Type==TYPE_CUSTOMSCREEN)?"CUSTOMSCREEN","PUBLICSCREEN,\n SCRN_PubName, ScrPubName"); + GetFlag(ns->ns_MyFlags,MYSC_LikeWB) FPuts(handle," SCRN_LikeWorkbench, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_SharePens) FPuts(handle," SCRN_SharePens, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Behind) FPuts(handle," SCRN_Behind, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Quiet) FPuts(handle," SCRN_Quiet, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_AutoScroll) FPuts(handle," SCRN_AutoScroll, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_FullPalette) FPuts(handle," SCRN_FullPalette, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Exclusive) FPuts(handle," SCRN_Exclusive, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Interleaved) FPuts(handle," SCRN_Interleaved, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_MinimizeISG) FPuts(handle," SCRN_MinimizeISG, TRUE,\n"); + if(!(ns->ns_MyFlags&MYSC_ShowTitle)) FPuts(handle," SCRN_ShowTitle, FALSE,\n"); + if(!(ns->ns_MyFlags&MYSC_Draggable)) FPuts(handle," SCRN_Draggable, FALSE,\n"); + FPuts(handle," TAG_DONE\n};\n"); + } + } + if(OPT_UseLocale) + { + FPuts(handle,"struct Catalog *Catalog=NULL;\nstruct Locale *Locale=NULL;\n"); + } + + SetProgress(15L); + +/* Gadget library bases */ + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"struct Library *ColorWheelBase=NULL;\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"struct Library *GradientSliderBase=NULL;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"struct Library *PageBase=NULL;\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"struct Library *ProgressBase=NULL;\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"struct Library *TapeDeckBase=NULL;\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"struct Library *TextFieldBase=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"struct Library *ListViewBase=NULL;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"Class *PageClass=NULL;\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"Class *PopUpMenuClass=NULL;\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"Class *ProgressClass=NULL;\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"Class *TextFieldClass=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"Class *ListViewClass=NULL;\n"); + if(CheckToolBarWindows()) + { + FPuts(handle,"struct Library *SmartBitMapBase=NULL;\n"); + FPuts(handle,"Class *SmartBitMapClass=NULL;\n"); + } + +/* Message ports for App and Project windows */ + if(CheckProjectWindow()) FPuts(handle,"Object *ProjectMsgPort=NULL;\n"); + if(OPT_GUIFuncs) FPuts(handle,"struct TextAttr *Font, Attr;\nUWORD FontX, FontY;\n"); + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + FPuts(handle,"BOOL GadgetLocaleDone[CNTWND_WINDOWS];\n"); + FPuts(handle,"BOOL WindowLocaleDone[CNTWND_WINDOWS];\n"); + FPuts(handle,"BOOL MenuLocaleDone[CNTMN_MENUS];\n"); + } + FPuts(handle,"\n"); + + SetProgress(20L); + +/* Menu definitions */ + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"struct Menu *%sMenus=NULL;\n",nm->nm_Label); + } + } + + SetProgress(25L); + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + MENU_GenerateDefs(handle,mo); + } + } + + SetProgress(30L); + +/* Windows releated definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + + FPrintf(handle,"\n/* %s Window structures */\n",nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"Object *%sWnd=NULL;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"struct Gadget *%sGList=NULL;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"Object *%sGadgets[CNT_%s];\n",nw->nw_Label,nw->nw_Label); + } + FPuts(handle,"\n"); + + SetProgress(35L); + +/* Windows definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { + FPrintf(handle,"\n/* %s Window tags */\n",nw->nw_Label); + FPrintf(handle,"ULONG %sWTags[]=\n{\n",nw->nw_Label); + FUNC_GenerateWindowTags(handle,wo); + FPuts(handle,"TAG_DONE\n};\n"); + } + } + FPuts(handle,"\n"); + + SetProgress(40L); + +/* Gadget realeted structures (lists, tables, etc) */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"/* %s Gadget structures */\n",nw->nw_Label); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateStruct(handle,go); + } + FPuts(handle,"\n"); + } + + SetProgress(45L); + +/* Gadget definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"/* %s Gadget tags */\n",nw->nw_Label); + FPrintf(handle,"ULONG %sGTags[]=\n{\n",nw->nw_Label); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateTags(handle,go); + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n"); + FPuts(handle,"\n"); + } + } + + SetProgress(50L); + +/* Function definitions */ + FUNC_GenerateApplication(handle); + FUNC_GenerateCatalogUpdate(handle); + FUNC_GenerateScreen(handle); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + FUNC_GenerateWindow(handle,wo); +} + +void GenerateImages(BPTR handle) +{ + piObject *io; + struct Node_Image *ni; + ULONG a,b,*data; + UBYTE *datab; + + FPrintf(handle,"/*\n** %s_img.c Images File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\n#include\n#include\"%s.h\"\n\n",BaseName); + + if(CheckToolBarWindows()) + { + FPuts(handle,"#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24)))\n\n"); + FPrintf(handle,"struct SmartBitMapIRGB ToolBarPalette[]=" \ + "{\n" \ + " { 0,Bit32(189),Bit32(189),Bit32(189)}, // Background\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32( 0)}, // Black\n" \ + " {-1,Bit32(255),Bit32(255),Bit32(255)}, // White\n" \ + " {-1,Bit32(123),Bit32( 0),Bit32( 0)}, // Red 50%\n" \ + " {-1,Bit32( 0),Bit32(123),Bit32( 0)}, // Green 50%\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32(123)}, // Blue 50%\n" \ + " {-1,Bit32(123),Bit32(123),Bit32( 0)}, // Yellow 50%\n" \ + " {-1,Bit32( 0),Bit32(123),Bit32(123)}, // Cyan 50%\n" \ + " {-1,Bit32(123),Bit32( 0),Bit32(123)}, // Magenta 50%\n" \ + " {-1,Bit32(255),Bit32( 0),Bit32( 0)}, // Red 100%\n" \ + " {-1,Bit32( 0),Bit32(255),Bit32( 0)}, // Green 100%\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32(255)}, // Blue 100%\n" \ + " {-1,Bit32(255),Bit32(255),Bit32( 0)}, // Yellow 100%\n" \ + " {-1,Bit32( 0),Bit32(255),Bit32(255)}, // Cyan 100%\n" \ + " {-1,Bit32(255),Bit32( 0),Bit32(255)}, // Magenta 100%\n" \ + " {-1,Bit32(123),Bit32(123),Bit32(123)} // Dark Gray\n" \ + "};\n\n"); + } + +/* Image definitions */ + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + FPrintf(handle,"struct SmartBitMapIRGB %sPalette[]=\n{\n",ni->ni_Label); + for(a=0;a<(2<<(ni->ni_Depth-1));a++) + FPrintf(handle," {-1, Bit32(%3ld), Bit32(%3ld), Bit32(%3ld)},\n",Bit8(ni->ni_CT[a].cp_R),Bit8(ni->ni_CT[a].cp_G),Bit8(ni->ni_CT[a].cp_B)); + + FPrintf(handle,"};\n\nUBYTE __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;ani_Depth;a++) + { + datab=(UBYTE *)ni->ni_BitMap->Planes[a]; + for(b=0;b<(ni->ni_BitMap->BytesPerRow*ni->ni_BitMap->Rows);b++) + { + FPrintf(handle," 0x%lx,",datab[b]); + if(((b+1)%32)==0) FPuts(handle,"\n"); + } + FPrintf(handle,"\n"); + } + + FPrintf(handle,"};\n\nObject *%sImg=NULL;\nstruct BitMap %sBitMap = { %ld, %ld, NULL, %ld, NULL, {",ni->ni_Label,ni->ni_Label,ni->ni_BitMap->BytesPerRow,ni->ni_BitMap->Rows,ni->ni_BitMap->Depth); + for(a=0;ani_Depth;a++) + { + FPrintf(handle,"(PLANEPTR)&%sPlanes[%ld],",ni->ni_Label,a*(ni->ni_BitMap->BytesPerRow*ni->ni_BitMap->Rows)); + } + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,"} };\n\n"); + break; + case IMTYPE_POINTER: + FPrintf(handle,"ULONG __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;a<2;a++) + { + data=(ULONG *)ni->ni_BitMap->Planes[a]; + for(b=0;b<32;b+=8) FPrintf(handle," 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx,\n",data[b],data[b+1],data[b+2],data[b+3],data[b+4],data[b+5],data[b+6],data[b+7]); + } + FPrintf(handle,"};\nObject *%sPtr=NULL;\nstruct BitMap %sBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&%sPlanes[0],(PLANEPTR)&%sPlanes[32]} };\n\n",ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle,"UBYTE __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;a<4;a++) + { + datab=(UBYTE *)ni->ni_BitMap->Planes[a]; + for(b=0;b<(32/8)*20;b++) FPrintf(handle," 0x%lx,",datab[b]); + FPrintf(handle,"\n"); + } + FPrintf(handle,"};\nObject *%sTbr=NULL;\nstruct BitMap %sBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&%sPlanes[0],(PLANEPTR)&%sPlanes[80],(PLANEPTR)&%sPlanes[160],(PLANEPTR)&%sPlanes[240]} };\n\n",ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + } + } + FPuts(handle,"\n"); +} + +void GenerateHeader(BPTR handle) +{ + piObject *wo,*go,*mo,*io; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node_Menu *nm; + struct Node_Screen *ns; + struct Node_Version *nv; + struct Node_Image *ni; + ULONG cnt; + + SetProgress(55L); + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + FPrintf(handle,"#ifndef %s_H\n",BaseName); + FPrintf(handle,"#define %s_H\n",BaseName); + FPrintf(handle,"/*\n** %s.h Header File\n*/\n\n",BaseName); + + if(!IsListEmpty(List(&GUI->gui_List_Image))) + FPuts(handle,"#include\n\n"); + FPuts(handle,"#include\n#include\n\n"); + + FPuts(handle,"#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer )\n"); + FPuts(handle,"#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt )\n"); + +/* if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#define COLORWHEEL_KIND 10000\n"); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,"#define DATATYPE_KIND 10001\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#define GRADIENTSLIDER_KIND 10002\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#define PAGE_KIND 10003\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#define POPUPMENU_KIND 10004\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#define PROGRESS_KIND 10005\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#define TAPEDECK_KIND 10006\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"#define TEXTFIELD_KIND 10007\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#define TREEVIEW_KIND 10009\n"); +*/ + FPuts(handle,"#define COLORWHEEL_KIND 10000\n"); + FPuts(handle,"#define DATATYPE_KIND 10001\n"); + FPuts(handle,"#define GRADIENTSLIDER_KIND 10002\n"); + FPuts(handle,"#define PAGE_KIND 10003\n"); + FPuts(handle,"#define POPUPMENU_KIND 10004\n"); + FPuts(handle,"#define PROGRESS_KIND 10005\n"); + FPuts(handle,"#define TAPEDECK_KIND 10006\n"); + FPuts(handle,"#define TEXTFIELD_KIND 10007\n"); + FPuts(handle,"#define TOOLIMAGE_KIND 10008\n\n"); + FPuts(handle,"#define TREEVIEW_KIND 10009\n"); + + FPrintf(handle,"#define VER_PROGRAMNAME \"%s\"\n",nv->nv_ProgramName); + FPrintf(handle,"#define VER_AUTHOR \"%s\"\n",nv->nv_Author); + FPrintf(handle,"#define VER_VERSION %ld\n",nv->nv_Version); + FPrintf(handle,"#define VER_REVISION %ld\n",nv->nv_Revision); + FPrintf(handle,"#define VER_SVER \"\\0$VER: \"VER_PROGRAMNAME\" %ld.%ld \"__AMIGADATE__\"\"\n\n",nv->nv_Version,nv->nv_Revision); + FPrintf(handle,"#define VER_TITLE \"%s v%ld.%ld\"\n",nv->nv_ProgramName,nv->nv_Version,nv->nv_Revision); + FPrintf(handle,"#define VER_EXTENSION \"rx\"\n"); + FPrintf(handle,"#define VER_DESCRIPTION \"Not supported yet\"\n"); + FPrintf(handle,"#define VER_GUIDE \"%s.guide\"\n",nv->nv_ProgramName); + + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + FPuts(handle,"#define WA_FontAdaptive (WA_Dummy + 0x107)\n"); + } + + SetProgress(60L); + + FUNC_GenerateErrors(handle); + + SetProgress(64L); + + if(OPT_Screen) + { + FPuts(handle,"extern TEXT ScrTitle[];\n"); + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPuts(handle,"extern TEXT ScrPubName[];\n"); + if(ns->ns_Type!=TYPE_WORKBENCH); + FPuts(handle,"extern Object *Scr;\n"); + } + if(CheckProjectWindow()) FPuts(handle,"extern Object *ProjectMsgPort;\n"); + if(OPT_GUIFuncs) FPuts(handle,"extern struct TextAttr *Font, Attr;\n"); + FPuts(handle,"\n"); + + SetProgress(66L); + +/* Windows releated definitions */ + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + for(cnt=0,wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo),cnt++) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + + if(nw->nw_PageGadget==0) FPrintf(handle,"extern Object *%sWnd;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"extern struct Gadget *%sGList;\n",nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"extern ULONG %sWTags[];\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"extern Object *%sGadgets[];\n",nw->nw_Label); + FPrintf(handle,"#define WND_%s %ld\n",nw->nw_Label,cnt); + } + FPuts(handle,"\n"); + FPrintf(handle,"#define CNTWND_WINDOWS %ld\n\n",cnt+1); + } + + SetProgress(68L); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + FPrintf(handle,"extern ULONG %sGTags[];\n",nw->nw_Label); + } + + SetProgress(70L); + + FPuts(handle,"extern struct SmartBitMapIRGB ToolBarPalette[];"); + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + FPrintf(handle,"extern Object *%sImg;\nextern struct BitMap %sBitMap;\nextern struct SmartBitMapIRGB %sPalette[];\n",ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_POINTER: + FPrintf(handle,"extern Object *%sPtr;\nextern struct BitMap %sBitMap;\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle,"extern Object *%sTbr;\nextern struct BitMap %sBitMap;\n",ni->ni_Label,ni->ni_Label); + break; + } + } + FPuts(handle,"\n"); + + SetProgress(72L); + +// if(!IsListEmpty(List(&GUI->gui_List_Menu))) +// { + for(cnt=0,mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo),cnt++) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"extern struct Menu *%sMenus;\n",nm->nm_Label); + FPrintf(handle,"extern struct NewMenu %sNewMenu[];\n",nm->nm_Label); + FPrintf(handle,"#define MN_%s %ld\n",nm->nm_Label,cnt); + } + FPrintf(handle,"#define CNTMN_MENUS %ld\n\n",cnt+1); +// } + FPuts(handle,"\n"); + + SetProgress(75L); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(cnt=0,go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++); + if(cnt>0) FPrintf(handle,"#define CNT_%s %ld\n",nw->nw_Label,cnt); + for(cnt=0,go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + FPrintf(handle,"#define GD_%s %ld\n",ng->ng_Label,cnt); + } + FPuts(handle,"\n"); + } + + SetProgress(78L); + + FPuts(handle,"/* Prototypes */\n"); + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + GADGET_GenerateProtos(handle,go); + } + FPuts(handle,"\n"); + } + + SetProgress(80L); + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + MENU_GenerateProtos(handle,mo); + } + FPuts(handle,"\n"); + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { + FPrintf(handle,"ULONG HandleIDCMP_%s(Object *,ULONG,APTR);\n",nw->nw_Label); + FPrintf(handle,"void Render_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle,"int FN_MenuVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle,"int FN_SizeVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle,"int FN_ReqVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle,"int FN_ReqSet_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle,"int FN_ReqClear_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle,"int FN_NewSize_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle,"int FN_NewPrefs_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle,"int FN_MenuHelp_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle,"int FN_GadgetHelp)%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle,"int FN_MouseMove_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle,"int FN_MouseButtons_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle,"int FN_RawKey_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle,"int FN_VanillaKey_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle,"int FN_IntuiTicks_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle,"int FN_IDCMPUpdate_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle,"int FN_ChangeWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle,"int FN_CloseWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle,"int FN_ActiveWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle,"int FN_InActiveWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle,"int FN_DiskRemoved_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle,"int FN_DiskInserted_%s(void);\n",nw->nw_Label); + } + FPrintf(handle,"UWORD OpenWindow_%s(void);\n",nw->nw_Label); + FPrintf(handle,"void CloseWindow_%s(void);\n",nw->nw_Label); + FPuts(handle,"\n"); + } + + FPuts(handle,"UWORD SetupScreen(UBYTE);\nvoid CloseDownScreen(void);\n"); + if(OPT_UseLocale) FPuts(handle,"UWORD InitApplication(STRPTR);\n"); + else FPuts(handle,"UWORD InitApplication(void);\n"); + FPuts(handle,"void FreeApplication(void);\n\n"); + if(OPT_GUIFuncs) + { + FPuts(handle,"void CalcLeftTop(UWORD *,UWORD *,struct TagItem *);\n"); + FPuts(handle,"void CalcRightBottom(UWORD *,UWORD *,struct TagItem *);\n"); + FPuts(handle,"UWORD AdaptX(UWORD);\n"); + FPuts(handle,"UWORD AdaptY(UWORD);\n"); + FPuts(handle,"void CalcAdaptivity(UWORD,UWORD);\n"); + } + FPuts(handle,"STRPTR GetCatString(APTR);\n"); + + FPrintf(handle,"\n#endif /* %s_H */\n",BaseName); +} + +void GenerateTemplate(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + + FPrintf(handle,"/*\n** %s_temp.c Template File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\"%s.h\"\n\n",BaseName); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + FUNC_GenerateTemplate(handle,wo); + } + FPuts(handle,"\n"); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + GADGET_GenerateTemplate(handle,go); + } + FPuts(handle,"\n"); + } + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + MENU_GenerateTemplate(handle,mo); + } + FPuts(handle,"\n"); + } +} + +void GenerateCatalogSource(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + LONG a; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"/*\n** %s_cat.c Catalog File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\n"); + FPrintf(handle,"#include\"%s_cat.h\"\n\n",BaseName); + + a=0; + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogSource(handle,mo,&a); + + if(OPT_Screen) + { + FPrintf(handle,"const struct FC_Type _MSG_SCREENTITLE_SCR = { %ld, \"%s\" };\n",a,nsc->ns_Title); + a++; + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_WND = { %ld, \"%s\" };\n",nw->nw_Label,a,nw->nw_WindowTitle); + a++; + } + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_ST_WND = { %ld, \"%s\" };\n",nw->nw_Label,a,nw->nw_ScreenTitle); + a++; + } + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogSource(handle,go,&a); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd)),a++) + { + FPrintf(handle,"const struct FC_Type _MSG_%s = { %ld, \"%s\" };\n",nd->ns_Label,a,nd->ns_String); + } + FPuts(handle,"\n\n"); +} + +void GenerateCatalogHeader(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"#ifndef %s_cat_H\n",BaseName); + FPrintf(handle,"#define %s_cat_H\n",BaseName); + FPrintf(handle,"/*\n** %s_cat.h Catalog Header File\n*/\n\n",BaseName); + + FPuts(handle,"#include\n\n"); + + FPuts(handle,"struct FC_Type\n{\n LONG ID;\n STRPTR Str;\n};\n\n"); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogHeader(handle,mo); + + if(OPT_Screen) + { + FPrintf(handle,"extern const struct FC_Type _MSG_SCREENTITLE_SCR;\n"); + FPrintf(handle,"#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR)\n",nsc->ns_Title); + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_WND;\n",nw->nw_Label); + FPrintf(handle,"#define MSG_%s_WND ((APTR) &_MSG_%s_WND)\n",nw->nw_Label,nw->nw_Label); + } + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_ST_WND;\n",nw->nw_Label); + FPrintf(handle,"#define MSG_%s_ST_WND ((APTR) &_MSG_%s_ST_WND)\n",nw->nw_Label,nw->nw_Label); + } + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + GADGET_GenerateCatalogHeader(handle,go); + } + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s;\n",nd->ns_Label); + FPrintf(handle,"#define MSG_%s ((APTR) &_MSG_%s)\n",nd->ns_Label,nd->ns_Label); + } + FPuts(handle,"\n"); + + FPrintf(handle,"\n#endif /* %s_cat_H */\n",BaseName); +} + +void GenerateCatalogDescription(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,";\n; %s locale description file\n;\n",nv->nv_ProgramName); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogDescription(handle,mo); + + if(OPT_Screen) FPrintf(handle,"MSG_SCREENTITLE_SCR (//)\n%s\n;\n",nsc->ns_Title); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"MSG_%s_WND (//)\n%s\n;\n",nw->nw_Label,nw->nw_WindowTitle); + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) FPrintf(handle,"MSG_%s_ST_WND (//)\n%s\n;\n",nw->nw_Label,nw->nw_ScreenTitle); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogDescription(handle,go); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"MSG_%s (//)\n%s\n;\n",nd->ns_Label,nd->ns_String); + } +} + +void GenerateCatalogTranslation(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"## version $VER: %s.catalog %ld.%ld (xx.xx.xx)\n## language \n## codeset 0\n",nv->nv_ProgramName,nv->nv_Version,nv->nv_Revision); + FPrintf(handle,";\n; %s locale translation file\n;\n",nv->nv_ProgramName); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogTranslation(handle,mo); + + if(OPT_Screen) FPrintf(handle,"MSG_SCREENTITLE_SCR\n\n;%s\n;\n",nsc->ns_Title); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"MSG_%s_WND\n\n;%s\n;\n",nw->nw_Label,nw->nw_WindowTitle); + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) FPrintf(handle,"MSG_%s_ST_WND\n\n;%s\n;\n",nw->nw_Label,nw->nw_ScreenTitle); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogTranslation(handle,go); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"MSG_%s\n\n;%s\n;\n",nd->ns_Label,nd->ns_String); + } +} + + +int FN_TEMPLATE_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Template); + return 1; +} + +int FN_SCREEN_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Screen); + return 1; +} + +int FN_LOCALIZE_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Localize); + return 1; +} + +int FN_GUIFUNCS_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_GUIFuncs); + return 1; +} + +int FN_SAVE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/boopsi-c.generator.prefs"); + SavePrefs("ENVARC:GadToolsBox/boopsi-c.generator.prefs"); + return 0; +} + +int FN_USE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/boopsi-c.generator.prefs"); + return 0; +} + +int FN_CANCEL_Clicked(void) +{ + return 0; +} + +int FN_CloseWindow_Prefs(void) +{ + return 0; +} + +#define ID_CGEN MAKE_ID('B','C','G','E') + +void SavePrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct PrefHeader prefhdr={0,0,0}; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_NEWFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_WRITE)) + { + unless(PushChunk(iffh,ID_PREF,ID_FORM,IFFSIZE_UNKNOWN)) + { + if(error=PushChunk(iffh,NULL,ID_PRHD,sizeof(struct PrefHeader))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&prefhdr,sizeof(struct PrefHeader)); + if(error=PopChunk(iffh)) IFF_Error(error); + if(error=PushChunk(iffh,NULL,ID_CGEN,sizeof(struct SavePrefs))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + if(error=PopChunk(iffh)) IFF_Error(error); + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +void LoadPrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct ContextNode *cn; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_OLDFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_PREF,ID_CGEN)) IFF_Error(error); + while(1) + { + error=ParseIFF(iffh,IFFPARSE_SCAN); + if(error==IFFERR_EOC) continue; /* enter next context */ + else if(error) break; + if(cn=CurrentChunk(iffh)) + { + if(cn->cn_Type==ID_PREF) + { + switch(cn->cn_ID) + { + case ID_CGEN: + ReadChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + break; + } + } + } + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + else + { + SP.spr_Flags=NULL; + } + FreeIFF(iffh); + } +} diff --git a/GadToolsBox/BCGen/main.h b/GadToolsBox/BCGen/main.h new file mode 100755 index 0000000..7961344 --- /dev/null +++ b/GadToolsBox/BCGen/main.h @@ -0,0 +1,335 @@ +#include +#include +#include + +#define GadgetData(x) (((UBYTE *)x)+sizeof(struct Node_Gadget)) // Get Pointer to GadToolsData +#define OBJECT_DATA(o) (((UBYTE *)o)+sizeof(piObject)) +#define GetHead(x) (((struct List *)x)->lh_Head) +#define GetSucc(x) (x->ln_Succ) +#define GetPred(x) (x->ln_Pred) +#define Node(x) ((struct Node *)x) +#define List(x) ((struct List *)x) +#define SetFlag(x,f) x|=f +#define GetFlag(x,f) if(x&f) +#define ClearFlag(x,f) x&=(f^-1) +#define DoFlag(x,f) if(code) SetFlag(x,f); else ClearFlag(x,f); +#define ListEmpty(x) ((((struct List *)x)->lh_TailPred) == ((struct Node *)x)) +#define unless(x) if(!(x)) +#define SetCheckMark(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCB_Checked,a,TAG_DONE) +#define Bit8(x) ((UBYTE)((x&0xff000000)>>24)) + +typedef struct piClass piClass; +typedef struct piObject piObject; + +struct piClass +{ + ULONG (*Dispatcher)(piClass *s,piObject *o,Msg m); + piClass *Super; + ULONG Size; + ULONG Type; +}; + +struct piObject +{ + piObject *ln_Succ; + piObject *ln_Pred; + UWORD ln_pad; + STRPTR ln_Name; + piClass *piClass; +}; + +struct EditList +{ + struct List **List; + ULONG *Active; +}; + +struct ColorPalette +{ + ULONG cp_I,cp_R,cp_G,cp_B; +}; + +#define IMTYPE_NORMAL 0 +#define IMTYPE_TOOLBAR 1 +#define IMTYPE_POINTER 2 + +struct Node_Image +{ + ULONG ni_ID; + struct Window *ni_Window; + struct Page *ni_Pages; + Object *ni_Draw,*ni_Preview,*ni_UpButton,*ni_DownButton,*ni_VertProp,*ni_LeftButton,*ni_RightButton,*ni_HorizProp; + LONG ni_Top,ni_Left; + struct BitMap *ni_BitMap; + struct ColorPalette *ni_CT; + UBYTE *ni_Pens; + + UBYTE ni_Label[40]; + UBYTE ni_Type,ni_Depth; + UWORD ni_Width,ni_Height; + UWORD ni_PointX,ni_PointY; + ULONG ni_Flags; +}; + +struct Node_Gadget +{ + struct Gadget *ng_Gadget; + piObject *ng_Parent; // Parent Object (NULL or page.gadget) + piObject *ng_Window; // Parent Window + struct TagItem *ng_Tags; + struct TagItem *ng_OwnTags; + UBYTE *ng_TagTypes; + UBYTE *ng_OwnTagTypes; + struct Page *ng_Pages; + struct EditList ng_EditList; + + UWORD ng_X,ng_Y,ng_Width,ng_Height; + UBYTE ng_RelX,ng_RelY,ng_RelWidth,ng_RelHeight; + ULONG ng_PlugInID; + UBYTE ng_Selected; + UBYTE ng_Type; + TEXT ng_Label[40]; + UWORD ng_NumTags; + UWORD ng_NumOwnTags; +}; + +struct GadToolsData // GadTools has additional datas +{ + TEXT g_Text[256]; + ULONG g_Flags; + ULONG g_Kind; +}; + +#define MYFR_Recessed (1<<0) + +struct Node_Frame +{ + piObject *nf_Window; // Parent Window + struct Page *nf_Pages; + + UWORD nf_X,nf_Y,nf_Width,nf_Height; + UBYTE nf_RelX,nf_RelY,nf_RelWidth,nf_RelHeight; + UBYTE nf_FrameType; + UBYTE nf_Selected; + ULONG nf_Flags; +}; + +#define FTYPE_BUTTON 0 +#define FTYPE_ICONDROPBOX 1 +#define FTYPE_RIDGE 2 +#define FTYPE_HORIZONTALLINE 3 +#define FTYPE_VERTICALLINE 4 + +#define WPOS_REL_LEFT_TOP 0 +#define WPOS_REL_RIGHT_BOTTOM 1 +#define WPOS_CENTER 2 + +#define MYWA_FontAdaptive (1<<0) +#define MYWA_BRightSlider (1<<1) +#define MYWA_BBottomSlider (1<<2) +#define MYWA_InnerWidth (1<<3) +#define MYWA_InnerHeight (1<<4) +#define MYWA_MouseQueue (1<<5) +#define MYWA_RptQueue (1<<6) +#define MYWA_AutoAdjust (1<<7) +#define MYWA_PubScreenFallBack (1<<8) +#define MYWA_MenuHelp (1<<9) +#define MYWA_NotifyDepth (1<<10) +#define MYWA_PointerDelay (1<<11) +#define MYWA_RMBTrap (1<<12) +#define MYWA_Project (1<<13) +#define MYWA_Zoom (1<<14) +#define MYWA_AppWindow (1<<15) +#define MYWA_DragToolHoriz (1<<16) +#define MYWA_DragToolVert (1<<17) + +struct Node_Window +{ + ULONG nw_ID; + struct Window *nw_Window; + struct Gadget *nw_Gadgets; + Object *(nw_Object[6]); + struct MinList nw_List_Gadget; + struct MinList nw_List_Frame; + + UWORD nw_X,nw_Y,nw_Width,nw_Height; // saveable datas follows + UBYTE nw_XPos,nw_YPos; + UWORD nw_Zoom[4]; + TEXT nw_WindowTitle[256]; + TEXT nw_ScreenTitle[256]; + TEXT nw_Label[40]; + TEXT nw_MenuTitle[128]; + TEXT nw_FontName[30]; + UWORD nw_Dimensions[4]; // Mins, Maxs + UWORD nw_FontSize; + ULONG nw_IDCMP; // Standard IDCMP Flags + ULONG nw_MyFlags; // My Window Flags + ULONG nw_Flags; // Standard Window Flags + ULONG nw_MouseQueue; + ULONG nw_RptQueue; + ULONG nw_PageGadget; // LockCounter for PageGadget +}; + +#define MYMN_Toggle (1<<0) +#define MYMN_NewLookMenus (1<<1) +#define MYMN_Disabled (1<<2) +#define MYMN_Checked (1<<3) +#define MYMN_BarLabel (1<<4) +#define MYMN_PopUp (1<<5) + +struct Node_Menu +{ + ULONG nm_ID; + struct MinList nm_MenuItem; + struct Menu *nm_Menu; + struct NewMenu *nm_NewMenu; + struct Window *nm_Window; + struct Page *nm_Pages; + LONG nm_Top,nm_Visible,nm_Total; + Object *nm_LeftButton,*nm_RightButton,*nm_HorizProp; + + TEXT nm_Label[128]; + ULONG nm_Flags; +}; + +struct Node_MenuItem +{ + struct Node nm_Node; + UBYTE nm_Selected; + + TEXT nm_Label[128]; + TEXT nm_Title[128]; + UBYTE nm_Type; + ULONG nm_Flags; + ULONG nm_MutEx; + TEXT nm_Key[2]; +}; + +#define TYPE_WORKBENCH 0 +#define TYPE_CUSTOMSCREEN 1 +#define TYPE_PUBLICSCREEN 2 + +#define MYSC_MakePublic (1<<0) +#define MYSC_ShowTitle (1<<3) +#define MYSC_Behind (1<<4) +#define MYSC_Quiet (1<<5) +#define MYSC_AutoScroll (1<<6) +#define MYSC_FullPalette (1<<7) +#define MYSC_Draggable (1<<8) +#define MYSC_Exclusive (1<<9) +#define MYSC_SharePens (1<<10) +#define MYSC_Interleaved (1<<11) +#define MYSC_LikeWB (1<<12) +#define MYSC_MinimizeISG (1<<13) +#define MYSC_DefaultID (1<<14) + +struct Node_Screen +{ + UWORD ns_Width,ns_Height,ns_Depth; + ULONG ns_DisplayID; + UWORD ns_Type; + TEXT ns_Title[256]; + TEXT ns_Public[30]; + TEXT ns_FontName[30]; + UWORD ns_FontSize; + ULONG ns_MyFlags; +}; + +struct Node_Version +{ + ULONG nv_Version; + ULONG nv_Revision; + TEXT nv_ProgramName[256]; + TEXT nv_Author[256]; +}; + +struct Node_String +{ + struct LVList ns_Strings; + struct Page *ns_Pages; + struct Node_StringData *ns_Selected; +}; + +struct Node_StringData +{ + struct LVNode ns_Node; + STRPTR ns_GadString; + STRPTR ns_Label; + STRPTR ns_String; +}; + +#define MYPR_GUIFuncs (1<<0) +#define MYPR_Template (1<<1) +#define MYPR_Screen (1<<2) +#define MYPR_Localize (1<<3) + +struct Prefs +{ + ULONG pr_Flags; + ULONG pr_DisplayID; + UWORD pr_Width,pr_Height,pr_Depth; + TEXT pr_Generator[108]; + UWORD pr_Grid[2]; + BOOL pr_GridOn,pr_GridShow; + struct + { + UWORD X,Y; + } pr_WinPos[10]; +}; + +struct SavePrefs +{ + ULONG spr_Flags; +}; + +struct GUI +{ + UBYTE gui_Version,gui_Revision; + STRPTR gui_PubScreenName; + + UWORD gui_Grid[2]; + BOOL gui_GridOn,gui_GridShow; + + UBYTE gui_Mode; + struct Prefs *gui_Prefs; + + piObject *gui_Node_Version; // $VER string + piObject *gui_Node_Screen; // Screen + piObject *gui_Node_String; // List of locale strings + struct MinList gui_List_Window; // List of windows + struct MinList gui_List_Menu; // List of menus + struct MinList gui_List_Image; // List of mouse pointers + struct MinList gui_List_Binary; // List of binary data +}; + +struct GTBSemaphore +{ + struct SignalSemaphore gs_Semaphore; + struct GUI *gs_GUI; + struct Window *gs_Window; + struct Gadget *gs_Progress; + struct TextFont *gs_FontTF; +}; + +#define BUTTON_ID MAKE_ID('B','U','T','T') +#define CHECKBOX_ID MAKE_ID('C','B','O','X') +#define COLORWHEEL_ID MAKE_ID('C','W','H','L') +#define CYCLE_ID MAKE_ID('C','Y','C','E') +#define DATATYPE_ID MAKE_ID('D','T','Y','P') +#define GRADIENTSLIDER_ID MAKE_ID('G','R','S','L') +#define INTEGER_ID MAKE_ID('I','N','T','R') +#define LISTVIEW_ID MAKE_ID('L','V','I','E') +#define MX_ID MAKE_ID('M','X',' ',' ') +#define NUMBER_ID MAKE_ID('N','U','M','B') +#define PAGE_ID MAKE_ID('P','A','G','E') +#define PALETTE_ID MAKE_ID('P','A','L','T') +#define POPUPMENU_ID MAKE_ID('P','U','P','M') +#define PROGRESS_ID MAKE_ID('P','R','G','R') +#define SCROLLER_ID MAKE_ID('S','C','R','L') +#define SLIDER_ID MAKE_ID('S','L','I','R') +#define STRING_ID MAKE_ID('S','T','R','G') +#define TAPEDECK_ID MAKE_ID('T','D','E','K') +#define TEXT_ID MAKE_ID('T','E','X','T') +#define TEXTFIELD_ID MAKE_ID('T','F','L','D') +#define TREEVIEW_ID MAKE_ID('T','R','L','V') + diff --git a/GadToolsBox/BCGen/menu.c b/GadToolsBox/BCGen/menu.c new file mode 100755 index 0000000..09c0a9a --- /dev/null +++ b/GadToolsBox/BCGen/menu.c @@ -0,0 +1,223 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; + +void MENU_GenerateDefs(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT Title[256],Label[256],flagsstr[256]; + UBYTE orit; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"/* %s Menu defintion */\n",nm->nm_Label); + FPrintf(handle,"struct NewMenu %sNewMenu[]=\n{\n",nm->nm_Label); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + orit=FALSE; + if(ni->nm_Flags&MYMN_BarLabel) sprintf(Title,"NM_BARLABEL"); + else sprintf(Title,"MSG_%s%s_",nm->nm_Label,ni->nm_Label); + if((ni->nm_Flags&MYMN_PopUp) || (ni->nm_Flags&MYMN_BarLabel)) sprintf(Label,"NULL"); + else sprintf(Label,"FN_%s%s_Selected",nm->nm_Label,ni->nm_Label); + flagsstr[0]='\0'; + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MTITLE"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_MENUDISABLED"); orit=TRUE; } + FPuts(handle," NM_TITLE"); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MITEM"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_ITEMDISABLED"); orit=TRUE; } + FPuts(handle," NM_ITEM"); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MSUB"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_ITEMDISABLED"); orit=TRUE; } + FPuts(handle," NM_SUB"); + break; + } + + GetFlag(ni->nm_Flags,MYMN_Toggle) { if(orit) strcat(flagsstr,"|"); strcat(flagsstr,"CHECKIT"); orit=TRUE; } + GetFlag(ni->nm_Flags,MYMN_Checked) { if(orit) strcat(flagsstr,"|"); strcat(flagsstr,"CHECKED"); orit=TRUE; } + if(!orit) strcpy(flagsstr,"NULL"); + + FPrintf(handle,", %s, NULL, %s, NULL, %s,\n",Title,flagsstr,Label); + } + FPuts(handle," NM_END, NULL, NULL, NULL, NULL, NULL\n};\n"); +} + +void MENU_GenerateProtos(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Label[0]) FPrintf(handle,"int FN_%s%s_Selected(void);\n",nm->nm_Label,ni->nm_Label); + } +} + +void MENU_GenerateTemplate(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Label[0]) FPrintf(handle,"int FN_%s%s_Selected()\n{\n return 1;\n}\n\n",nm->nm_Label,ni->nm_Label); + } +} + +void MENU_GenerateCatalogSource(BPTR handle,piObject *mo,LONG *index) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MTITLE = { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MITEM= { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MSUB = { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + } + } +} + +void MENU_GenerateCatalogHeader(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MTITLE;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MTITLE ((APTR) &_MSG_%s%s_MTITLE)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MITEM;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MITEM ((APTR) &_MSG_%s%s_MITEM)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MSUB;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MSUB ((APTR) &_MSG_%s%s_MSUB)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + } + } +} + +void MENU_GenerateCatalogDescription(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MTITLE (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MITEM (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MSUB (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + } + } +} + +void MENU_GenerateCatalogTranslation(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MTITLE\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MITEM\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MSUB\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + } + } +} diff --git a/GadToolsBox/BCGen/popupmenu.c b/GadToolsBox/BCGen/popupmenu.c new file mode 100755 index 0000000..178b979 --- /dev/null +++ b/GadToolsBox/BCGen/popupmenu.c @@ -0,0 +1,62 @@ +struct PopupMenu *PM_CreateMenusA(struct NewMenu *menu,struct TagItem *tags) +{ + struct TagItem *ti; + struct PopupMenu *pm=NULL; + struct Menu *m; + ULONG NumMenus,a; + + for(NumMenus=0,n=menu;m->nm_Type!=NM_END;m+=(sizeof(struct Menu)),NumMenus++); + if(ti=AllocTagItems((NumMenus+10)*5)) + { + for(n=menu,a=0;m->nm_Type!=NM_END;m+=(sizeof(struct Menu)),NumMenus++) + { + switch(m->nm_Type) + { + case NM_TITLE: + ti[a].ti_Tag=PM_Title; ti[a].ti_Data=m->nm_Label; a++; + ti[a].ti_Tag=PM_NoSelect; ti[a].ti_Data=TRUE; a++; + ti[a].ti_Tag=PM_ShinePen; ti[a].ti_Data=TRUE; a++; + ti[a].ti_Tag=PM_Item; ti[a].ti_Data=PM_MakeItem(PM_WideTitleBar,TRUE,TAG_DONE); a++; + break; + case NM_ITEM: + ti[a].ti_Tag=PM_Item; + if(m->nm_Label==NM_BARLABEL) + { + ti[a].ti_Data=PM_MakeItem(PM_TitleBar,TRUE, + TAG_DONE); + } + else + { + ti[a].ti_Data=PM_MakeItem(PM_Title,m->nm_Label, + (m->nm_Flags&MENUTOGGLE)?PM_Checkit:TAG_IGNORE,TRUE, + (m->nm_Flags&CHECKED)?PM_Checked:TAG_IGNORE,TRUE, + (m->nm_Flags&NM_ITEMDISABLED)?PM_Disabled:TAG_IGNORE,TRUE, + PM_UserData,m->nm_UserData, + TAG_DONE); + } + a++; + break; + case NM_SUB: + // Not supported yet + break; + } + } + ti[a].ti_Tag=TAG_DONE; + pm=PM_MakeMenuA(ti); + FreeTagItems(ti); + } + return pm; +} + +void PM_FreeMenus(struct PopupMenu *pm) +{ + PM_FreePopupMenu(pm); +} + +ULONG PM_LayoutMenusA(struct Window *w,struct PopupMenu *pm,ULONG code) +{ + return PM_OpenPopupMenu(w, + PM_Menu,pm, + PM_Code,code, + TAG_DONE); +} diff --git a/GadToolsBox/CGen/SCOPTIONS b/GadToolsBox/CGen/SCOPTIONS new file mode 100755 index 0000000..e22116f --- /dev/null +++ b/GadToolsBox/CGen/SCOPTIONS @@ -0,0 +1,22 @@ +NOSTACKCHECK +STRINGMERGE +NOCHECKABORT +ERRORREXX +MODIFIED +OPTIMIZE +LINK +OPTIMIZERSIZE +OPTIMIZERINLINELOCAL +SMALLCODE +SMALLDATA +VERBOSE +STRIPDEBUG +OPTIMIZERSCHEDULER +NOVERSION +UTILITYLIBRARY +MEMORYSIZE=HUGE +OPTIMIZERALIAS +PROGRAMNAME=c.generator +GLOBALSYMBOLTABLE=include:all.gst +PUBSCREEN=SASPRJ.1 +main gadget funcs menu gadtools gadtools_cat diff --git a/GadToolsBox/CGen/c.generator.cd b/GadToolsBox/CGen/c.generator.cd new file mode 100755 index 0000000..3301259 --- /dev/null +++ b/GadToolsBox/CGen/c.generator.cd @@ -0,0 +1,30 @@ +; +; c.generator locale description file +; +MSG_SCREENTITLE_SCR (//) + +; +MSG_Prefs_WND (//) +Prefs: c.generator +; +MSG_TEMPLATE_GAD (//) +_Template: +; +MSG_GUIFUNCS_GAD (//) +_GUI functions: +; +MSG_LOCALIZE_GAD (//) +_Localize: +; +MSG_SAVE_GAD (//) +_Save +; +MSG_CANCEL_GAD (//) +_Cancel +; +MSG_USE_GAD (//) +_Use +; +MSG_SCREEN_GAD (//) +_Screen: +; diff --git a/GadToolsBox/CGen/c.generator.ct b/GadToolsBox/CGen/c.generator.ct new file mode 100755 index 0000000..bbe54c8 --- /dev/null +++ b/GadToolsBox/CGen/c.generator.ct @@ -0,0 +1,42 @@ +## version $VER: c.generator.catalog 1.0 (xx.xx.xx) +## language +## codeset 0 +; +; c.generator locale translation file +; +MSG_SCREENTITLE_SCR + +; +; +MSG_Prefs_WND + +;Prefs: c.generator +; +MSG_TEMPLATE_GAD + +;_Template: +; +MSG_GUIFUNCS_GAD + +;_GUI functions: +; +MSG_LOCALIZE_GAD + +;_Localize: +; +MSG_SAVE_GAD + +;_Save +; +MSG_CANCEL_GAD + +;_Cancel +; +MSG_USE_GAD + +;_Use +; +MSG_SCREEN_GAD + +;_Screen: +; diff --git a/GadToolsBox/CGen/funcs.c b/GadToolsBox/CGen/funcs.c new file mode 100755 index 0000000..fa15e4b --- /dev/null +++ b/GadToolsBox/CGen/funcs.c @@ -0,0 +1,1418 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; +extern BOOL OPT_ARexx,OPT_UseLocale,OPT_GUIFuncs,OPT_Screen; +extern struct Screen *Scr; +extern struct GTBSemaphore *GTBSem; + +void GADGET_GenerateOpenLib(BPTR,ULONG); +void GADGET_GenerateCloseLib(BPTR,ULONG); + +BOOL CheckPlugIn(ULONG); +BOOL CheckToolBarWindow(piObject *); +BOOL CheckToolBarWindows(void); +BOOL CheckBOOPSIWindow(piObject *); +BOOL CheckDataTypeWindow(piObject *); +BOOL CheckGadToolsWindow(piObject *); +BOOL CheckPlugInWindow(piObject *,ULONG); +BOOL CheckAppWindow(void); +BOOL CheckProjectWindow(void); + +//(APTR)GetTagData(GT_VisualInfo,0,tags);\n" + +/*TEXT gadgetfuncs[]="struct TagItem *GetTagItemNum(ULONG cnt,struct TagItem *tags)\n"\ +"{\n"\ +" ULONG lc,tc,*ti;\n\n ti=(ULONG *)tags;\n"\ +" for(lc=0,tc=0;lcta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;\n"\ +" Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;\n"\ +" FontX = Scr->RastPort.Font->tf_XSize;\n"\ +"\n"\ +" if(width && height)\n"\ +" if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz;\n"\ +" return;\n"\ +"\n"\ +"UseTopaz:\n"\ +" Font->ta_Name = (STRPTR)\"topaz.font\";\n"\ +" FontX = FontY = Font->ta_YSize = 8;\n"\ +"}\n\n"; + +TEXT gadgetfuncs[]="struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags)\n"\ +"{\n"\ +" struct Gadget *g;\n"\ +" struct NewGadget ng;\n"\ +" ULONG kind,flags,x,y,w,h;\n"\ +" BOOL rx=0,ry=0,rw=0,rh=0;\n"\ +" struct TagItem *ti;\n"\ +" \n"\ +" kind=tags[0].ti_Tag;\n"\ +" flags=tags[0].ti_Data;\n"\ +" tags=&tags[1];\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx;\n"\ +" else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy;\n"\ +" else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data);\n"\ +" else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; }\n"\ +"\n"\ +" if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data);\n"\ +" else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; }\n"\ +"\n"\ +" switch(kind)\n"\ +" {\n"; +TEXT toolimagefuncs[]=" case TOOLIMAGE_KIND:\n"\ +" ng.ng_LeftEdge=x;\n"\ +" ng.ng_TopEdge=y;\n"\ +" ng.ng_Width=w;\n"\ +" ng.ng_Height=h;\n"\ +" ng.ng_Flags=flags;\n"\ +" ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags);\n"\ +" ng.ng_GadgetID=GetTagData(GA_ID,0,tags);\n"\ +" ng.ng_GadgetText=NULL;\n"\ +" ng.ng_VisualInfo=VisualInfo;\n"\ +" ng.ng_TextAttr=Font;\n"\ +" g=CreateGadgetA(BUTTON_KIND,prev,&ng,tags);\n"\ +" if(!g) return g;\n"\ +" if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT;\n"\ +" if(rx) g->Flags|=GFLG_RELRIGHT;\n"\ +" if(ry) g->Flags|=GFLG_RELBOTTOM;\n"\ +" if(rw) g->Flags|=GFLG_RELWIDTH;\n"\ +" if(rh) g->Flags|=GFLG_RELHEIGHT;\n"\ +" g->Flags|=GFLG_GADGIMAGE|GFLG_GADGHIMAGE;\n"\ +" g->Activation|=GACT_RELVERIFY;\n"\ +" g->GadgetRender=g->SelectRender=*((ULONG **)GetTagData(GA_Text,0,tags));\n"\ +" break;\n"; +TEXT gadtoolsfuncs[]=" case BUTTON_KIND:\n"\ +" case CHECKBOX_KIND:\n"\ +" case INTEGER_KIND:\n"\ +" case LISTVIEW_KIND:\n"\ +" case MX_KIND:\n"\ +" case NUMBER_KIND:\n"\ +" case CYCLE_KIND:\n"\ +" case PALETTE_KIND:\n"\ +" case SCROLLER_KIND:\n"\ +" case SLIDER_KIND:\n"\ +" case STRING_KIND:\n"\ +" case TEXT_KIND:\n"\ +" ng.ng_LeftEdge=x;\n"\ +" ng.ng_TopEdge=y;\n"\ +" ng.ng_Width=w;\n"\ +" ng.ng_Height=h;\n"\ +" ng.ng_Flags=flags;\n"\ +" ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags);\n"\ +" ng.ng_GadgetID=GetTagData(GA_ID,0,tags);\n"\ +" ng.ng_GadgetText=(char *)GetTagData(GA_Text,0,tags);\n"\ +" ng.ng_VisualInfo=VisualInfo;\n"\ +" ng.ng_TextAttr=Font;\n"\ +" g=CreateGadgetA(kind,prev,&ng,tags);\n"\ +" if(!g) return g;\n"\ +" if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT;\n"\ +" if(rx) g->Flags|=GFLG_RELRIGHT;\n"\ +" if(ry) g->Flags|=GFLG_RELBOTTOM;\n"\ +" if(rw) g->Flags|=GFLG_RELWIDTH;\n"\ +" if(rh) g->Flags|=GFLG_RELHEIGHT;\n"\ +" break;\n"; +TEXT colorwheelfuncs[]=" case COLORWHEEL_KIND:\n"\ +" FindTagItem(WHEEL_Screen,ti)->ti_Data=(ULONG) Scr;\n"\ +" g=(struct Gadget *)NewObject(NULL,\"colorwheel.gadget\",\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT gradientsliderfuncs[]=" case GRADIENTSLIDER_KIND:\n"\ +" g=(struct Gadget *)NewObject(NULL,\"gradientslider.gadget\",\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT pagefuncs[]=" case PAGE_KIND:\n"\ +" g=(struct Gadget *)NewObject(PageClass,NULL,\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT popupmenufuncs[]=" case POPUPMENU_KIND:\n"\ +" g=(struct Gadget *)NewObject(PopUpMenuClass,NULL,\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT progressfuncs[]=" case PROGRESS_KIND:\n"\ +" g=(struct Gadget *)NewObject(ProgressClass,NULL,\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT tapedeckfuncs[]=" case TAPEDECK_KIND:\n"\ +" g=(struct Gadget *)NewObject(NULL,\"tapedeck.gadget\",\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT textfieldfuncs[]=" case TEXTFIELD_KIND:\n"\ +" g=(struct Gadget *)NewObject(TextFieldClass,NULL,\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT treeviewfuncs[]=" case TREEVIEW_KIND:\n"\ +" g=(struct Gadget *)NewObject(ListViewClass,NULL,\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT datatypefuncs[]=" case DATATYPE_KIND:\n"\ +" g=(struct Gadget *)NewDTObject((APTR)GetTagData(GA_Text,0,tags),\n"\ +" (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags);\n"\ +" break;\n"; +TEXT gadgetendfuncs[]=" }\n"\ +" return g;\n"\ +"}\n"\ +"\n"\ +"void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags)\n"\ +"{\n"\ +" switch(tags[0].ti_Tag)\n"\ +" {\n"\ +" case COLORWHEEL_KIND:\n"\ +" case GRADIENTSLIDER_KIND:\n"\ +" case PAGE_KIND:\n"\ +" case POPUPMENU_KIND:\n"\ +" case PROGRESS_KIND:\n"\ +" case TAPEDECK_KIND:\n"\ +" case TEXTFIELD_KIND:\n"\ +" case TREEVIEW_KIND:\n"\ +" DisposeObject(g);\n"\ +" break;\n"\ +" case TOOLIMAGE_KIND:\n"\ +//" DisposeObject(g->GadgetRender);\n" +" g->GadgetRender=g->SelectRender=NULL;\n"\ +" break;\n"; +TEXT datatypeendfuncs[]=" case DATATYPE_KIND:\n"\ +" DisposeDTObject((Object *)g);\n"\ +" break;\n"; +TEXT gadgetendendfuncs[]=" }\n"\ +"}\n"\ +"\n"; +TEXT windowfuncs[]="struct Window *OpenWindowTagsEx(ULONG tags,...)\n"\ +"{\n"\ +" struct Gadget *g=NULL;\n"\ +" struct Window *win;\n"\ +" struct TagItem *ti,*clone=NULL;\n"\ +" BOOL tbg=FALSE,rx=FALSE,ry=FALSE,rw=FALSE,rh=FALSE;\n"\ +" ULONG left,top,width,height;\n"\ +"\n"\ +" clone=CloneTagItems((struct TagItem *)&tags);\n"\ +" if(ti=FindTagItem(WA_ToolDragBar,clone))\n"\ +" {\n"\ +" if(g=AllocMem(sizeof(struct Gadget),MEMF_ANY|MEMF_CLEAR))\n"\ +" {\n"\ +" g->LeftEdge=0;\n"\ +" g->TopEdge=0;\n"\ +" g->Flags=GFLG_GADGHNONE;\n"\ +" g->GadgetType=GTYP_WDRAGGING;\n"\ +" g->UserData=(APTR)DRAG_ID;\n"\ +" if(ti->ti_Data==TOOL_HORIZ)\n"\ +" {\n"\ +" g->Activation=GACT_TOPBORDER|GACT_BORDERSNIFF;\n"\ +" g->Width=32767;\n"\ +" g->Height=8;\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" g->Activation=GACT_LEFTBORDER|GACT_BORDERSNIFF;\n"\ +" g->Width=8;\n"\ +" g->Height=32767;\n"\ +" }\n"\ +" }\n"\ +" else return NULL;\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +"\n"\ +" if(ti=FindTagItem(WA_RelWidth,clone))\n"\ +" {\n"\ +" rw=TRUE;\n"\ +" width=(Scr->Width)-ti->ti_Data;\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +" if(ti=FindTagItem(WA_RelHeight,clone))\n"\ +" {\n"\ +" rh=TRUE;\n"\ +" height=(Scr->Height)-ti->ti_Data;\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +"\n"\ +" if(ti=FindTagItem(WA_CenterX,clone))\n"\ +" {\n"\ +" rx=TRUE;\n"\ +" left=(Scr->Width/2)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone)/2);\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +" if(ti=FindTagItem(WA_CenterY,clone))\n"\ +" {\n"\ +" ry=TRUE;\n"\ +" top=(Scr->Height/2)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone)/2);\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +" if(ti=FindTagItem(WA_RelRight,clone))\n"\ +" {\n"\ +" rx=TRUE;\n"\ +" left=(Scr->Width)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone))-ti->ti_Data;\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +" if(ti=FindTagItem(WA_RelBottom,clone))\n"\ +" {\n"\ +" ry=TRUE;\n"\ +" top=(Scr->Height)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone))-ti->ti_Data;\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +"\n"\ +" if(ti=FindTagItem(WA_Gadgets,clone))\n"\ +" {\n"\ +" if(g)\n"\ +" {\n"\ +" g->NextGadget=(struct Gadget *)ti->ti_Data;\n"\ +" ti->ti_Data=(ULONG)g;\n"\ +" tbg=TRUE;\n"\ +" }\n"\ +" if(ti->ti_Data==NULL) ti->ti_Tag=TAG_IGNORE;\n"\ +" }\n"\ +"\n"\ +" if(ti=FindTagItem(WA_FontAdaptive,clone))\n"\ +" {\n"\ +" width=AdaptX(width);\n"\ +" height=AdaptY(height);\n"\ +" ti->ti_Tag=TAG_IGNORE;\n"\ +" if(ti=FindTagItem(WA_Width,clone)) ti->ti_Data=AdaptX(ti->ti_Data);\n"\ +" if(ti=FindTagItem(WA_Height,clone)) ti->ti_Data=AdaptY(ti->ti_Data);\n"\ +" }\n"\ +"\n"\ +" if(!(win=OpenWindowTags(NULL,\n"\ +" rx?WA_Left:TAG_IGNORE,left,\n"\ +" ry?WA_Top:TAG_IGNORE,top,\n"\ +" rw?WA_Width:TAG_IGNORE,width,\n"\ +" rh?WA_Height:TAG_IGNORE,height,\n"\ +" TAG_MORE,(ULONG)clone)))\n"\ +" if(g) FreeMem(win,sizeof(struct Gadget));\n"\ +"\n if(clone) FreeTagItems(clone);\n"\ +" return win;\n"\ +"}\n"\ +"\n"\ +"void CloseWindowEx(struct Window *win)\n"\ +"{\n"\ +" struct Gadget *g,*drag=NULL;\n"\ +"\n"\ +" g=win->FirstGadget;\n"\ +" while(g)\n"\ +" {\n"\ +" if(((ULONG)g->UserData)==DRAG_ID) { drag=g; break; }\n"\ +" g=g->NextGadget;\n"\ +" }\n"\ +" CloseWindow(win);\n"\ +" if(drag) FreeMem(drag,sizeof(struct Gadget));\n"\ +"}\n"\ +"\n"; +TEXT calcfuncs[]="void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags)\n"\ +"{\n"\ +" struct TagItem *ti;\n"\ +" BOOL bl;\n"\ +"\n"\ +" *offx=0;\n"\ +" *offy=0;\n"\ +"\n"\ +" if(ti=FindTagItem(WA_Borderless,tags))\n"\ +" bl=ti->ti_Data;\n"\ +" else\n"\ +" bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_ToolDragBar,tags))\n"\ +" {\n"\ +" if(ti->ti_Data==TOOL_HORIZ)\n"\ +" {\n"\ +" (*offy)+=8;\n"\ +" if(!bl) (*offx)+=Scr->WBorLeft;\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" (*offx)+=8;\n"\ +" if(!bl) (*offy)+=Scr->WBorTop;\n"\ +" }\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" if(!bl)\n"\ +" {\n"\ +" (*offx)+=Scr->WBorLeft;\n"\ +" if(GetTagData(WA_Title,NULL,tags))\n"\ +" (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1;\n"\ +" else\n"\ +" (*offy)+=Scr->WBorTop;\n"\ +" }\n"\ +" }\n"\ +"}\n"\ +"\n"\ +"void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags)\n"\ +"{\n"\ +" struct TagItem *ti;\n"\ +" BOOL bl,sg,sbb,sbr;\n"\ +" UWORD sw,sh;\n"\ +" struct Image *im;\n"\ +"\n"\ +" *offx=0;\n"\ +" *offy=0;\n"\ +"\n"\ +" if(ti=FindTagItem(WA_Borderless,tags))\n"\ +" bl=ti->ti_Data;\n"\ +" else\n"\ +" bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeGadget,tags))\n"\ +" sg=ti->ti_Data;\n"\ +" else\n"\ +" sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeBBottom,tags))\n"\ +" sbb=ti->ti_Data;\n"\ +" else\n"\ +" sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM);\n"\ +"\n"\ +" if(ti=FindTagItem(WA_SizeBRight,tags))\n"\ +" sbr=ti->ti_Data;\n"\ +" else\n"\ +" sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT);\n"\ +"\n"\ +" if(im=(struct Image *)NewObject(NULL, SYSICLASS,\n"\ +" SYSIA_DrawInfo, DrawInfo,\n"\ +" SYSIA_Which, SIZEIMAGE,\n"\ +" SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES),\n"\ +" TAG_DONE))\n"\ +" {\n"\ +" sw=im->Width;\n"\ +" sh=im->Height;\n"\ +" DisposeObject((Object *)im);\n"\ +" }\n"\ +" else\n"\ +" {\n"\ +" sw=18;\n"\ +" sh=10;\n"\ +" }\n"\ +"\n"\ +" if(!bl)\n"\ +" {\n"\ +" if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; }\n"\ +" if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; }\n"\ +" if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; }\n"\ +" if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; }\n"\ +" if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; }\n"\ +" }\n"\ +"}\n"; + + +void WriteIDCMPFlags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_IDCMP==NULL) FPuts(handle,"NULL, "); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) FPuts(handle,"IDCMP_CLOSEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) FPuts(handle,"IDCMP_MOUSEMOVE|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETDOWN) FPuts(handle,"IDCMP_GADGETDOWN|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETUP) FPuts(handle,"IDCMP_GADGETUP|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) FPuts(handle,"IDCMP_MENUVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) FPuts(handle,"IDCMP_SIZEVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) FPuts(handle,"IDCMP_REQVERIFY|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) FPuts(handle,"IDCMP_REQSET|"); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) FPuts(handle,"IDCMP_REQCLEAR|"); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) FPuts(handle,"IDCMP_NEWSIZE|"); + GetFlag(nw->nw_IDCMP,IDCMP_REFRESHWINDOW) FPuts(handle,"IDCMP_REFRESHWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) FPuts(handle,"IDCMP_MOUSEBUTTONS|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) FPuts(handle,"IDCMP_MENUPICK|"); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) FPuts(handle,"IDCMP_RAWKEY|"); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) FPuts(handle,"IDCMP_VANILLAKEY|"); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) FPuts(handle,"IDCMP_INTUITICKS|"); + GetFlag(nw->nw_IDCMP,IDCMP_DELTAMOVE) FPuts(handle,"IDCMP_DELTAMOVE|"); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) FPuts(handle,"IDCMP_NEWPREFS|"); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) FPuts(handle,"IDCMP_ACTIVEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) FPuts(handle,"IDCMP_INACTIVEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) FPuts(handle,"IDCMP_DISKINSERTED|"); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) FPuts(handle,"IDCMP_DISKREMOVED|"); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) FPuts(handle,"IDCMP_IDCMPUPDATE|"); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) FPuts(handle,"IDCMP_CHANGEWINDOW|"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) FPuts(handle,"IDCMP_MENUHELP|"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) FPuts(handle,"IDCMP_GADGETHELP|"); + if(CheckPlugInWindow(wo,BUTTON_ID)) FPuts(handle,"BUTTONIDCMP|"); + if(CheckPlugInWindow(wo,CHECKBOX_ID)) FPuts(handle,"CHECKBOXIDCMP|"); + if(CheckPlugInWindow(wo,INTEGER_ID)) FPuts(handle,"INTEGERIDCMP|"); + if(CheckPlugInWindow(wo,LISTVIEW_ID)) FPuts(handle,"LISTVIEWIDCMP|"); + if(CheckPlugInWindow(wo,MX_ID)) FPuts(handle,"MXIDCMP|"); + if(CheckPlugInWindow(wo,NUMBER_ID)) FPuts(handle,"NUMBERIDCMP|"); + if(CheckPlugInWindow(wo,CYCLE_ID)) FPuts(handle,"CYCLEIDCMP|"); + if(CheckPlugInWindow(wo,PALETTE_ID)) FPuts(handle,"PALETTEIDCMP|"); + if(CheckPlugInWindow(wo,SCROLLER_ID)) FPuts(handle,"SCROLLERIDCMP|"); + if(CheckPlugInWindow(wo,SLIDER_ID)) FPuts(handle,"SLIDERIDCMP|"); + if(CheckPlugInWindow(wo,STRING_ID)) FPuts(handle,"STRINGIDCMP|"); + if(CheckPlugInWindow(wo,TEXT_ID)) FPuts(handle,"TEXTIDCMP|"); + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void WriteWindowFlags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_Flags==NULL) FPuts(handle,"NULL, "); + GetFlag(nw->nw_Flags,WFLG_CLOSEGADGET) FPuts(handle,"WFLG_CLOSEGADGET|"); + if((!(nw->nw_MyFlags&MYWA_DragToolHoriz)) && (!(nw->nw_MyFlags&MYWA_DragToolVert))) GetFlag(nw->nw_Flags,WFLG_DRAGBAR) FPuts(handle,"WFLG_DRAGBAR|"); + GetFlag(nw->nw_Flags,WFLG_DEPTHGADGET) FPuts(handle,"WFLG_DEPTHGADGET|"); + GetFlag(nw->nw_Flags,WFLG_SIZEGADGET) FPuts(handle,"WFLG_SIZEGADGET|"); + GetFlag(nw->nw_Flags,WFLG_SIZEBRIGHT) FPuts(handle,"WFLG_SIZEBRIGHT|"); + GetFlag(nw->nw_Flags,WFLG_SIZEBBOTTOM) FPuts(handle,"WFLG_SIZEBBOTTOM|"); + GetFlag(nw->nw_Flags,WFLG_GIMMEZEROZERO) FPuts(handle,"WFLG_GIMMEZEROZERO|"); + GetFlag(nw->nw_Flags,WFLG_SIMPLE_REFRESH) FPuts(handle,"WFLG_SIMPLE_REFRESH|"); + GetFlag(nw->nw_Flags,WFLG_SMART_REFRESH) FPuts(handle,"WFLG_SMART_REFRESH|"); + GetFlag(nw->nw_Flags,WFLG_SUPER_BITMAP) FPuts(handle,"WFLG_SUPER_BITMAP|"); + GetFlag(nw->nw_Flags,WFLG_BACKDROP) FPuts(handle,"WFLG_BACKDROP|"); + GetFlag(nw->nw_Flags,WFLG_REPORTMOUSE) FPuts(handle,"WFLG_REPORTMOUSE|"); + GetFlag(nw->nw_Flags,WFLG_BORDERLESS) FPuts(handle,"WFLG_BORDERLESS|"); + GetFlag(nw->nw_Flags,WFLG_ACTIVATE) FPuts(handle,"WFLG_ACTIVATE|"); + GetFlag(nw->nw_Flags,WFLG_NOCAREREFRESH) FPuts(handle,"WFLG_NOCAREREFRESH|"); + GetFlag(nw->nw_Flags,WFLG_NEWLOOKMENUS) FPuts(handle,"WFLG_NEWLOOKMENUS|"); + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void FUNC_GenerateWindowTags(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPuts(handle," "); + switch(nw->nw_XPos) + { + case WPOS_CENTER: FPrintf(handle,"WA_CenterX, TRUE, "); break; + case WPOS_REL_LEFT_TOP: FPrintf(handle,"WA_Left, %ld, ",nw->nw_X); break; + case WPOS_REL_RIGHT_BOTTOM: FPrintf(handle,"WA_RelRight, %ld, ",nw->nw_X); break; + } + switch(nw->nw_YPos) + { + case WPOS_CENTER: FPrintf(handle,"WA_CenterY, TRUE, "); break; + case WPOS_REL_LEFT_TOP: FPrintf(handle,"WA_Top, %ld, ",nw->nw_Y); break; + case WPOS_REL_RIGHT_BOTTOM: FPrintf(handle,"WA_RelBottom, %ld, ",nw->nw_Y); break; + } + GetFlag(nw->nw_MyFlags,MYWA_InnerWidth) FPrintf(handle,"WA_InnerWidth, %ld, ",nw->nw_Width); + else FPrintf(handle,"WA_Width, %ld, ",nw->nw_Width); + GetFlag(nw->nw_MyFlags,MYWA_InnerWidth) FPrintf(handle,"WA_InnerHeight, %ld, ",nw->nw_Height); + else FPrintf(handle,"WA_Height, %ld, ",nw->nw_Height); + if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) + if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"WA_Title, (ULONG) MSG_%s_WND, ",nw->nw_Label); + if(nw->nw_MyFlags&MYWA_DragToolHoriz) FPuts(handle,"WA_ToolDragBar, TOOL_HORIZ, "); + if(nw->nw_MyFlags&MYWA_DragToolVert) FPuts(handle,"WA_ToolDragBar, TOOL_VERT, "); + if(nw->nw_ScreenTitle[0]) FPrintf(handle,"WA_ScreenTitle, (ULONG) MSG_%s_ST_WND, ",nw->nw_Label); + if(!(nw->nw_MyFlags&MYWA_Project)){ FPuts(handle,"WA_IDCMP, "); WriteIDCMPFlags(handle,wo); } + FPuts(handle,"WA_Flags, "); WriteWindowFlags(handle,wo); + GetFlag(nw->nw_MyFlags,MYWA_AutoAdjust) FPuts(handle,"WA_AutoAdjust, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_PubScreenFallBack) FPuts(handle,"WA_PubScreenFallBack, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_RMBTrap) FPuts(handle,"WA_RMBTrap, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_AutoAdjust) FPuts(handle, "WA_AutoAdjust, TRUE, "); + GetFlag(nw->nw_MyFlags,MYWA_FontAdaptive) FPuts(handle, "WA_FontAdaptive, TRUE, "); + GetFlag(nw->nw_Flags,WFLG_SIZEGADGET) FPuts(handle,"WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, "); +} + +void FUNC_GenerateApplication(BPTR handle) +{ + struct Node_Version *nv; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + FPuts(handle,"/* Application functions */\n\n"); + if(OPT_UseLocale) + { + FPuts(handle,"UWORD InitApplication(STRPTR language)\n{\n"); + FPuts(handle, " if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE;\n"); + FPrintf(handle," Catalog=OpenCatalog(Locale,\"%s.catalog\",\n" \ + " OC_BuiltInLanguage,\"english\", OC_Version, VER_VERSION,\n" \ + " language?OC_Language:TAG_IGNORE, language, TAG_DONE);\n",nv->nv_ProgramName); + } + else + { + FPuts(handle,"UWORD InitApplication()\n{\n"); + } + if(CheckAppWindow()) FPuts(handle," if(!(AppMsgPort=CreateMsgPort())) return GTBERR_CREATEAPPPORT;\n"); + if(CheckProjectWindow()) FPuts(handle," if(!(ProjectMsgPort=CreateMsgPort())) return GTBERR_CREATEPROJECTPORT;\n"); + if(CheckPlugIn(COLORWHEEL_ID)) GADGET_GenerateOpenLib(handle,COLORWHEEL_ID); + if(CheckPlugIn(GRADIENTSLIDER_ID)) GADGET_GenerateOpenLib(handle,GRADIENTSLIDER_ID); + if(CheckPlugIn(PAGE_ID)) GADGET_GenerateOpenLib(handle,PAGE_ID); + if(CheckPlugIn(POPUPMENU_ID)) GADGET_GenerateOpenLib(handle,POPUPMENU_ID); + if(CheckPlugIn(PROGRESS_ID)) GADGET_GenerateOpenLib(handle,PROGRESS_ID); + if(CheckPlugIn(TAPEDECK_ID)) GADGET_GenerateOpenLib(handle,TAPEDECK_ID); + if(CheckPlugIn(TEXTFIELD_ID)) GADGET_GenerateOpenLib(handle,TEXTFIELD_ID); + if(CheckPlugIn(TREEVIEW_ID)) GADGET_GenerateOpenLib(handle,TREEVIEW_ID); + if(CheckToolBarWindows()) + { + FPuts(handle," if(!(SmartBitMapBase=OpenLibrary(\"images/smartbitmap.image\",39))) return GTBERR_OPENLIB_SMARTBITMAP;\n"); + FPuts(handle," SmartBitMapClass=GetSmartBitMapClass();\n"); + } + FPuts(handle," return GTBERR_OK;\n}\n\n"); + + FPuts(handle,"void FreeApplication()\n{\n"); + if(CheckToolBarWindows()) FPuts(handle," if(SmartBitMapBase) CloseLibrary(SmartBitMapBase); SmartBitMapBase=NULL; SmartBitMapClass=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) GADGET_GenerateCloseLib(handle,TREEVIEW_ID); + if(CheckPlugIn(TEXTFIELD_ID)) GADGET_GenerateCloseLib(handle,TEXTFIELD_ID); + if(CheckPlugIn(TAPEDECK_ID)) GADGET_GenerateCloseLib(handle,TAPEDECK_ID); + if(CheckPlugIn(PROGRESS_ID)) GADGET_GenerateCloseLib(handle,PROGRESS_ID); + if(CheckPlugIn(POPUPMENU_ID)) GADGET_GenerateCloseLib(handle,POPUPMENU_ID); + if(CheckPlugIn(PAGE_ID)) GADGET_GenerateCloseLib(handle,PAGE_ID); + if(CheckPlugIn(GRADIENTSLIDER_ID)) GADGET_GenerateCloseLib(handle,GRADIENTSLIDER_ID); + if(CheckPlugIn(COLORWHEEL_ID)) GADGET_GenerateCloseLib(handle,COLORWHEEL_ID); + if(CheckProjectWindow()) FPuts(handle," if(ProjectMsgPort) DeleteMsgPort(ProjectMsgPort); ProjectMsgPort=NULL;\n"); + if(CheckAppWindow()) FPuts(handle," if(AppMsgPort) DeleteMsgPort(AppMsgPort); AppMsgPort=NULL;\n"); + if(OPT_UseLocale) + { + FPuts(handle," if(Catalog) CloseCatalog(Catalog); Catalog=NULL;\n"); + } + FPuts(handle,"}\n\n"); + + if(CheckProjectWindow()) + { + FPuts(handle,"void CloseWindowSafely(struct Window *win)\n" \ + "{\n" \ + " if(win)\n" \ + " {\n" \ + " Forbid();\n" \ + " StripIntuiMessages( win->UserPort, win );\n" \ + " win->UserPort = NULL;\n" \ + " ModifyIDCMP( win, 0L );\n" \ + " Permit();\n" \ + " CloseWindowEx( win );\n" \ + " }\n" \ + "}\n\n"); + + FPuts(handle,"void StripIntuiMessages(struct MsgPort *mp,struct Window *win)\n" \ + "{\n" \ + " struct IntuiMessage *msg;\n" \ + " struct Node *succ;\n" \ + " \n" \ + " msg = (struct IntuiMessage *) mp->mp_MsgList.lh_Head;\n" \ + " while( succ = msg->ExecMessage.mn_Node.ln_Succ )\n" \ + " {\n" \ + " if( msg->IDCMPWindow == win )\n" \ + " {\n" \ + " Remove((struct Node *)msg);\n" \ + " ReplyMsg((struct Message *)msg);\n" \ + " }\n" \ + " msg = (struct IntuiMessage *) succ;\n" \ + " }\n" \ + "}\n\n"); + } + + if(OPT_UseLocale) + { + FPuts(handle,"STRPTR GetCatString(APTR fcstr)\n{\n" \ + " STRPTR defaultstr;\n" \ + " LONG strnum;\n\n" \ + " strnum=((struct FC_Type *)fcstr)->ID;\n" \ + " defaultstr=((struct FC_Type *)fcstr)->Str;\n\n" \ + " return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr);\n" \ + "}\n\n"); + } + else + { + FPuts(handle,"STRPTR GetCatString(APTR fcstr)\n{\n" \ + " return ((struct FC_Type *)fcstr)->Str;\n" \ + "}\n\n"); + } + + if(OPT_GUIFuncs) + { + FPuts(handle,gadgetfuncs); + if(CheckToolBarWindows()) FPuts(handle,toolimagefuncs); + FPuts(handle,gadtoolsfuncs); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,colorwheelfuncs); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,datatypefuncs); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,gradientsliderfuncs); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,pagefuncs); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,popupmenufuncs); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,progressfuncs); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,tapedeckfuncs); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,textfieldfuncs); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,treeviewfuncs); + FPuts(handle,gadgetendfuncs); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,datatypeendfuncs); + FPuts(handle,gadgetendendfuncs); + FPuts(handle,windowfuncs); + FPuts(handle,calcfuncs); + FPrintf(handle,adaptivityfuncs,GTBSem->gs_FontTF->tf_XSize/2,GTBSem->gs_FontTF->tf_XSize,GTBSem->gs_FontTF->tf_YSize/2,GTBSem->gs_FontTF->tf_YSize); + } +} /* FUNC_GenerateApplication */ + +void FUNC_GenerateScreen(BPTR handle) +{ + piObject *mo,*wo,*wo2,*go,*io,*fo; + struct Node_Menu *nm; + struct Node_Window *nw,*nw2; + struct Node_Gadget *ng; + struct Node_Screen *ns; + struct Node_Image *ni; + struct Node *n; + ULONG cnt; + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + FPuts(handle,"/* Screen functions */\n\n"); + FPuts(handle,"UWORD SetupScreen(UBYTE Num)\n{\n UWORD OffX,OffY;\n\n"); + if(OPT_Screen) + { + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPrintf(handle," sprintf(ScrPubName,\"%s\",Num);\n",ns->ns_Public); + if(ns->ns_Type==TYPE_WORKBENCH) + { + if(ns->ns_Public[0]) FPuts(handle," if(!(Scr=LockPubScreen(ScrPubName))) return GTBERR_OPENSCREEN;\n"); + else FPuts(handle," if(!(Scr=LockPubScreen(NULL))) return GTBERR_OPENSCREEN;\n"); + } + else + { + FPrintf(handle," sprintf(ScrTitle,GetCatString(MSG_SCREENTITLE_SCR),Num);\n"); + FPuts(handle, " if(!(Scr=OpenScreenTags(NULL,\n" \ + " SA_Left, 0,\n" \ + " SA_Top, 0,\n" \ + " SA_Width, ScrWidth,\n" \ + " SA_Height, ScrHeight,\n" \ + " SA_Depth, ScrDepth,\n" \ + " SA_DisplayID, ScrDisplayID,\n"); + if(ns->ns_Type==TYPE_CUSTOMSCREEN) + { + FPuts(handle," SA_Type, CUSTOMSCREEN,\n"); + } + if(ns->ns_Type==TYPE_PUBLICSCREEN) + { + FPuts(handle," SA_Type, PUBLICSCREEN,\n"); + FPuts(handle," SA_PubName, ScrPubName,\n"); + } + GetFlag(ns->ns_MyFlags,MYSC_LikeWB) FPuts(handle," SA_LikeWorkbench, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_SharePens) FPuts(handle," SA_SharePens, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Behind) FPuts(handle," SA_Behind, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Quiet) FPuts(handle," SA_Quiet, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_AutoScroll) FPuts(handle," SA_AutoScroll, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_FullPalette) FPuts(handle," SA_FullPalette, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Exclusive) FPuts(handle," SA_Exclusive, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_Interleaved) FPuts(handle," SA_Interleaved, TRUE,\n"); + GetFlag(ns->ns_MyFlags,MYSC_MinimizeISG) FPuts(handle," SA_MinimizeISG, TRUE,\n"); + if(!(ns->ns_MyFlags&MYSC_ShowTitle)) FPuts(handle," SA_ShowTitle, FALSE,\n"); + if(!(ns->ns_MyFlags&MYSC_Draggable)) FPuts(handle," SA_Draggable, FALSE,\n"); + FPuts(handle," SA_Title, ScrTitle,\n"); + FPuts(handle," TAG_DONE))) return GTBERR_OPENSCREEN;\n"); + if(ns->ns_Type==TYPE_PUBLICSCREEN) + { + GetFlag(ns->ns_MyFlags,MYSC_MakePublic) FPuts(handle," PubScreenStatus(Scr,0);\n\n"); + else FPuts(handle," PubScreenStatus(Scr,PSNF_PRIVATE);\n\n"); + } + } + } + if(OPT_GUIFuncs) + { + FPuts(handle," OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1;\n\n"); + FPuts(handle," CalcAdaptivity(0,0);\n"); + } + if(OPT_Screen) + { + FPuts(handle," if(!(VisualInfo=GetVisualInfo(Scr,TAG_DONE))) return GTBERR_VISUALINFO;\n\n"); + FPuts(handle," if(!(DrawInfo=GetScreenDrawInfo(Scr))) return GTBERR_SCRDRAWINFO;\n\n"); + } + + if(CheckToolBarWindows()) + FPuts(handle," GetRGB32(Scr->ViewPort.ColorMap,DrawInfo->dri_Pens[BACKGROUNDPEN],1,&ToolBarPalette[0].R);\n\n"); + + for(mo=(piObject *)GetHead(&GUI->gui_List_Menu);GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle," if(!MenuLocaleDone[MN_%s]) FixMenus(%sNewMenu);\n",nm->nm_Label,nm->nm_Label); + FPrintf(handle," MenuLocaleDone[MN_%s]=TRUE;\n\n",nm->nm_Label); + FPrintf(handle," if(!(%sMenus=CreateMenus(%sNewMenu, GTMN_FrontPen, %s, ",nm->nm_Label,nm->nm_Label,nm->nm_Flags&MYMN_NewLookMenus?"DrawInfo->dri_Pens[BARDETAILPEN]":"0"); + GetFlag(nm->nm_Flags,MYMN_NewLookMenus) FPuts(handle,"GTMN_NewLookMenus, TRUE, "); + FPuts(handle,"TAG_DONE))) return GTBERR_CREATEMENUS;\n"); + FPrintf(handle," LayoutMenus(%sMenus, VisualInfo, TAG_DONE);\n\n",nm->nm_Label); + } + + if(OPT_GUIFuncs) + { + for(wo=(piObject *)GetHead(&GUI->gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(&nw->nw_List_Gadget);GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + { + FPrintf(handle," BBOX_%s.Left=AdaptX(BBOX_%s.Left)+OffX;\n" \ + " BBOX_%s.Top=AdaptY(BBOX_%s.Top)+OffY;\n" \ + " BBOX_%s.Width=AdaptX(BBOX_%s.Width);\n" \ + " BBOX_%s.Height=AdaptY(BBOX_%s.Height);\n" \ + " BBOX_%s.BoxShine=DrawInfo->dri_Pens[SHINEPEN];\n" \ + " BBOX_%s.BoxShadow=DrawInfo->dri_Pens[SHADOWPEN];\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label,ng->ng_Label); + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + { + for(wo2=(piObject *)GetHead(&GUI->gui_List_Window);GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + if(!strcmp(nw2->nw_Label,n->ln_Name)) + for(cnt=0,fo=(piObject *)GetHead(List(&nw2->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo),cnt++) + { + FPrintf(handle," BBOX_%s_%s[%ld].Left=AdaptX(BBOX_%s_%s[%ld].Left)+OffX;\n" \ + " BBOX_%s_%s[%ld].Top=AdaptY(BBOX_%s_%s[%ld].Top)+OffY;\n" \ + " BBOX_%s_%s[%ld].Width=AdaptX(BBOX_%s_%s[%ld].Width);\n" \ + " BBOX_%s_%s[%ld].Height=AdaptY(BBOX_%s_%s[%ld].Height);\n" \ + " BBOX_%s_%s[%ld].BoxShine=DrawInfo->dri_Pens[SHINEPEN];\n" \ + " BBOX_%s_%s[%ld].BoxShadow=DrawInfo->dri_Pens[SHADOWPEN];\n", + ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt,ng->ng_Label,nw2->nw_Label,cnt); + } + } + } + } + } + } + } + + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_POINTER: + FPrintf(handle," if(!(%sPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&%sBitMap,POINTERA_XOffset,%ld,POINTERA_YOffset,%ld,TAG_DONE))) return GTBERR_CREATEPOINTER;\n",ni->ni_Label,ni->ni_Label,-ni->ni_PointX,-ni->ni_PointY); + break; + case IMTYPE_NORMAL: + FPrintf(handle," if(!(%sImg=NewObject(SmartBitMapClass,NULL,IA_Width,%ld,SMBM_Border,FALSE,SMBM_BitMap,(ULONG)&%sBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)%sPalette,TAG_DONE))) return GTBERR_CREATEIMAGE;\n",ni->ni_Label,(ULONG)ni->ni_Width,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle," if(!(%sTbr=NewObject(SmartBitMapClass,NULL,IA_Width,%ld,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&%sBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE;\n",ni->ni_Label,(ULONG)ni->ni_Width,ni->ni_Label); + break; + } + } + + FPuts(handle," return GTBERR_OK;\n}\n\n"); + + FPuts(handle,"void CloseDownScreen()\n{\n"); + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_POINTER: + FPrintf(handle," if(%sPtr) DisposeObject(%sPtr);\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_NORMAL: + FPrintf(handle," if(%sImg) DisposeObject(%sImg);\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle," if(%sTbr) DisposeObject(%sTbr);\n",ni->ni_Label,ni->ni_Label); + break; + } + } + for(mo=(piObject *)GetHead(&GUI->gui_List_Menu);GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle," if(%sMenus) FreeMenus(%sMenus); %sMenus=NULL;\n",nm->nm_Label,nm->nm_Label,nm->nm_Label); + } + if(OPT_Screen) + { + FPuts(handle," if(DrawInfo) FreeScreenDrawInfo(Scr,DrawInfo); DrawInfo=NULL;\n"); + FPuts(handle," if(VisualInfo) FreeVisualInfo(VisualInfo); VisualInfo=NULL;\n"); + if(ns->ns_Type==TYPE_WORKBENCH) + FPuts(handle," if(Scr) UnlockPubScreen(NULL,Scr); Scr=NULL;\n"); + else + FPuts(handle," if(Scr) CloseScreen(Scr); Scr=NULL;\n"); + } + FPuts(handle,"}\n\n"); +} /* FUNC_GenerateScreen */ + +void FUNC_GenerateCatalogUpdate(BPTR handle) +{ + if(OPT_GUIFuncs) + { + FPuts(handle,"void FixGadgetTags(struct TagItem *tags)\n" \ + "{\n" \ + " ULONG kind,a;\n" \ + " UBYTE **labels;\n" \ + " struct TagItem *ti;\n" \ + " struct Node *node;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle," struct Page *page;\n"); + FPuts(handle,"\n" \ + " kind=tags[0].ti_Tag;\n" \ + " tags=&tags[1];\n" \ + "\n" \ + " if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + "\n" \ + " switch(kind)\n" \ + " {\n" \ + " case LISTVIEW_KIND:\n" \ + " if(ti=FindTagItem(GTMX_Labels,tags))\n" \ + " for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ)\n" \ + " node->ln_Name=GetCatString((APTR)node->ln_Name);\n" \ + " break;\n" \ + " case MX_KIND:\n" \ + " if(ti=FindTagItem(GTMX_Labels,tags))\n" \ + " for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]);\n" \ + " break;\n" \ + " case NUMBER_KIND:\n" \ + " if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case CYCLE_KIND:\n" \ + " if(ti=FindTagItem(GTCY_Labels,tags))\n" \ + " for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]);\n" \ + " break;\n" \ + " case SLIDER_KIND:\n" \ + " if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case STRING_KIND:\n" \ + " if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n" \ + " case TEXT_KIND:\n" \ + " if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + if(CheckPlugIn(PAGE_ID)) + FPuts(handle," case PAGE_KIND:\n" \ + " if(ti=FindTagItem(PAGE_Pages,tags))\n" \ + " for(page=(struct Page *)ti->ti_Data;page;page=page->NextPage)\n" \ + " page->Name=GetCatString((APTR)page->Name);\n" \ + " break;\n"); + if(CheckPlugIn(POPUPMENU_ID)) + FPuts(handle," case POPUPMENU_KIND:\n" \ + " if(ti=FindTagItem(PUMG_Labels,tags))\n" \ + " for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ)\n" \ + " node->ln_Name=GetCatString((APTR)node->ln_Name);\n" \ + " break;\n"); + if(CheckPlugIn(PROGRESS_ID)) + FPuts(handle," case PROGRESS_KIND:\n" \ + " if(ti=FindTagItem(PROG_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + if(CheckPlugIn(TREEVIEW_ID)) + FPuts(handle," case TREEVIEW_KIND:\n" \ + " if(ti=FindTagItem(LIST_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " break;\n"); + FPuts(handle," }\n" \ + "}\n\n"); + + FPuts(handle,"void FixWindowTags(struct TagItem *tags)\n" \ + "{\n" \ + " struct TagItem *ti;\n" \ + "\n" \ + " if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + " if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data);\n" \ + "}\n\n"); + + FPuts(handle,"void FixMenus(struct NewMenu *menu)\n" \ + "{\n" \ + " ULONG a;\n" \ + "\n" \ + " for(a=0;menu[a].nm_Type!=NM_END;a++)\n" \ + " if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label))\n" \ + " {\n" \ + " menu[a].nm_CommKey=GetCatString(menu[a].nm_Label);\n" \ + " menu[a].nm_Label=menu[a].nm_CommKey+2;\n" \ + " if(menu[a].nm_CommKey[0]=='\\0') menu[a].nm_CommKey=NULL;\n" \ + " }\n" \ + "}\n\n"); + } +} + +void FUNC_GenerateWindow(BPTR handle,piObject *wo) +{ + struct Node_Window *nw,*nw2; + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node *n; + piObject *go,*wo2,*fo; + ULONG cnt,f; + BOOL rel=FALSE; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { +/* HandleIDCMP */ + FPrintf(handle,"int HandleIDCMP_%s()\n{\n",nw->nw_Label); + FPuts(handle, " struct IntuiMessage *m;\n"); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) + FPuts(handle, " struct MenuItem *n;\n"); + FPuts(handle, " int (*func)(void);\n" \ + " BOOL running = TRUE;\n\n"); + FPrintf(handle," while(m=GT_GetIMsg(%sWnd->UserPort))\n" \ + " {\n" \ + " CopyMem((APTR)m,(APTR)&%sMsg,sizeof(struct IntuiMessage));\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," GT_ReplyIMsg(m);\n" \ + " switch(%sMsg.Class)\n" \ + " {\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle," case IDCMP_MENUVERIFY:\n" \ + " running=FN_MenuVerify_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle," case IDCMP_SIZEVERIFY:\n" \ + " running=FN_SizeVerify_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle," case IDCMP_REQVERIFY:\n" \ + " running=FN_ReqVerify_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle," case IDCMP_REQSET:\n" \ + " running=FN_ReqSet_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle," case IDCMP_REQCLEAR:\n" \ + " running=FN_ReqClear_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle," case IDCMP_NEWSIZE:\n" \ + " running=FN_NewSize_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle," case IDCMP_NEWPREFS:\n" \ + " running=FN_NewPrefs_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle," case IDCMP_MENUHELP:\n" \ + " running=FN_MenuHelp_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle," case IDCMP_GADGETHELP:\n" \ + " running=FN_GadgetHelp_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle," case IDCMP_MOUSEMOVE:\n" \ + " running=FN_MouseMove_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle," case IDCMP_MOUSEBUTTONS:\n" \ + " running=FN_MouseButtons_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle," case IDCMP_RAWKEY:\n" \ + " running=FN_RawKey_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle," case IDCMP_VANILLAKEY:\n" \ + " running=FN_VanillaKey_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle," case IDCMP_INTUITICKS:\n" \ + " running=FN_IntuiTicks_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle," case IDCMP_IDCMPUPDATE:\n" \ + " running=FN_IDCMPUpdate_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REFRESHWINDOW) + { + FPrintf(handle," case IDCMP_REFRESHWINDOW:\n" \ + " GT_BeginRefresh(%sWnd);\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + FPrintf(handle," Render_%s();\n",nw->nw_Label); + FPrintf(handle," GT_EndRefresh(%sWnd,TRUE);\n" \ + " break;\n",nw->nw_Label); + } + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle," case IDCMP_CHANGEWINDOW:\n" \ + " running=FN_ChangeWindow_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle," case IDCMP_CLOSEWINDOW:\n" \ + " running=FN_CloseWindow_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle," case IDCMP_ACTIVEWINDOW:\n" \ + " running=FN_ActiveWindow_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle," case IDCMP_INACTIVEWINDOW:\n" \ + " running=FN_InActiveWindow_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle," case IDCMP_DISKREMOVED:\n" \ + " running=FN_DiskRemoved_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle," case IDCMP_DISKINSERTED:\n" \ + " running=FN_DiskInserted_%s();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUPICK) + FPrintf(handle," case IDCMP_MENUPICK:\n" \ + " while(%sMsg.Code!=MENUNULL)\n" \ + " {\n" \ + " n=ItemAddress(%sMenus,%sMsg.Code);\n" \ + " func=(int (*)(void))(GTMENUITEM_USERDATA(n));\n" \ + " running=func();\n" \ + " if(running > 1) return running;\n" \ + " %sMsg.Code=n->NextSelect;\n" \ + " }\n" \ + " break;\n",nw->nw_Label,nw->nw_MenuTitle,nw->nw_Label,nw->nw_Label); + if((!IsListEmpty(List(&nw->nw_List_Gadget))) && (nw->nw_IDCMP&IDCMP_GADGETUP || nw->nw_IDCMP&IDCMP_GADGETDOWN)) + { + GetFlag(nw->nw_IDCMP,IDCMP_GADGETUP) FPuts(handle," case IDCMP_GADGETUP:\n"); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETDOWN) FPuts(handle," case IDCMP_GADGETDOWN:\n"); + FPrintf(handle," func=(int (*)(void))(( struct Gadget * )%sMsg.IAddress )->UserData;\n" \ + " running=func();\n" \ + " if(running > 1) return running;\n" \ + " break;\n",nw->nw_Label); + } + FPuts(handle, " }\n" \ + " }\n" \ + " return(running);\n" \ + "}\n\n"); + +/* Render Window */ + if(!IsListEmpty(List(&nw->nw_List_Frame))) + { + FPrintf(handle,"void Render_%s()\n{\n",nw->nw_Label); + FPrintf(handle," UWORD OffX=%sWnd->BorderLeft, OffY=%sWnd->BorderTop;\n\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + for(fo=(piObject *)GetHead(&nw->nw_List_Frame);GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + nf=(struct Node_Frame *)OBJECT_DATA(fo); + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_ICONDROPBOX: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_ICONDROPBOX",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_RIDGE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_RIDGE",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,nf->nf_Height+1); + break; + case FTYPE_HORIZONTALLINE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,nf->nf_Width+1,2); + break; + case FTYPE_VERTICALLINE: + FPrintf(handle," DrawBevelBox( %sWnd->RPort, AdaptX(%ld)+OffX, AdaptY(%ld)+OffY, AdaptX(%ld), AdaptY(%ld), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON",nw->nw_Label,nf->nf_X,nf->nf_Y,2h,nf->nf_Height+1); + break; + } + GetFlag(nf->nf_Flags,MYFR_Recessed) FPuts(handle,", GTBB_Recessed, TRUE"); + FPuts(handle,", TAG_DONE);\n"); + } + FPuts(handle,"}\n\n"); + } + } + +/* OpenWindow */ + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_RelX || ng->ng_RelY || ng->ng_RelWidth || ng->ng_RelHeight) + { + rel=TRUE; + break; + } + } + + } + FPrintf(handle,"UWORD OpenWindow_%s()\n{\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPuts(handle," struct Gadget *g;\n" \ + " UWORD lc,tc;\n"\ + " UWORD OffX,OffY;\n"); + if(rel) FPuts(handle," UWORD OffR,OffB;\n"); + } + if(CheckPlugInWindow(wo,PAGE_ID)) FPuts(handle," UWORD retval;\n"); + + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"\n if(!(g=CreateContext(&%sGList))) return GTBERR_CREATECONTEXT;\n\n",nw->nw_Label); + if(nw->nw_PageGadget) + { + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + for(cnt=0,go=(piObject *)GetHead(List(&nw2->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + if(!strcmp(nw->nw_Label,n->ln_Name)) + { + FPrintf(handle," CalcLeftTop(&OffX,&OffY,(struct TagItem *)%sWTags);\n",nw2->nw_Label); + if(rel) FPrintf(handle," CalcRightBottom(&OffR,&OffB,(struct TagItem *)%sWTags);\n",nw2->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,nw2->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + } + } + } + } + else + { + FPrintf(handle," CalcLeftTop(&OffX,&OffY,(struct TagItem *)%sWTags);\n",nw->nw_Label); + if(rel) FPrintf(handle," CalcRightBottom(&OffR,&OffB,(struct TagItem *)%sWTags);\n",nw->nw_Label); + FPrintf(handle," if(FindTagItem(WA_FontAdaptive,(struct TagItem *)%sWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)%sWTags),(struct TagItem *)%sWTags),(struct TagItem *)%sWTags)); else { FontX=%ld; FontY=%ld; }\n\n",nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,nw->nw_Label,Scr->RastPort.Font->tf_XSize,Scr->RastPort.Font->tf_YSize); + } + + /* Create gadgets on page.gadget */ + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + FPrintf(handle," if(retval=OpenWindow_%s()) return(retval);\n",n->ln_Name); + } + + /* Update tags for page.gadget */ + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(cnt=0,n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n),cnt++) + { + f=FALSE; + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + if(!strcmp(nw2->nw_Label,n->ln_Name)) + if(!IsListEmpty(List(&nw2->nw_List_Gadget))) + f=TRUE; + } + if(f) FPrintf(handle," PAGES_%s[%ld].FirstGadget=%sGList;\n",ng->ng_Label,cnt,n->ln_Name); + else FPrintf(handle," PAGES_%s[%ld].FirstGadget=NULL;\n",ng->ng_Label,cnt); + } + } + + /* Create Gadgets on this Window */ + FPrintf(handle,"\n for(lc=0,tc=0;lcnw_Label); + FPrintf(handle," if(!GadgetLocaleDone[WND_%s]) FixGadgetTags((struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label); + if(!rel) FPrintf(handle," %sGadgets[lc]=g=CreateGadgetExA(OffX,OffY,0,0,g,(struct TagItem *) &%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + else FPrintf(handle," %sGadgets[lc]=g=CreateGadgetExA(OffX,OffY,OffR,OffB,g,(struct TagItem *) &%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " if(!(g)) return GTBERR_CREATEGADGET;\n" \ + " }\n\n"); + FPrintf(handle," GadgetLocaleDone[WND_%s]=TRUE;\n\n",nw->nw_Label); + } + /* Open this Window */ + if(nw->nw_PageGadget==0) + { + FPrintf(handle," if(!WindowLocaleDone[WND_%s]) FixWindowTags((struct TagItem *)%sWTags);\n",nw->nw_Label,nw->nw_Label); + FPrintf(handle," WindowLocaleDone[WND_%s]=TRUE;\n\n",nw->nw_Label); + FPrintf(handle," if(!(%sWnd=OpenWindowTagsEx(\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle," WA_Gadgets,%sGList,\n",nw->nw_Label); + FPuts(handle, " WA_CustomScreen, Scr,\n"); + FPrintf(handle," TAG_MORE, %sWTags ))) return GTBERR_OPENWINDOW;\n\n",nw->nw_Label); + + GetFlag(nw->nw_MyFlags,MYWA_Project) + { + FPrintf(handle," %sWnd->UserPort=ProjectMsgPort;\n",nw->nw_Label); + FPrintf(handle," ModifyIDCMP(%sWnd,",nw->nw_Label); WriteIDCMPFlags(handle,wo); + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,");\n"); + } + + GetFlag(nw->nw_MyFlags,MYWA_AppWindow) + FPrintf(handle," if(!(%sWApp=AddAppWindow(WND_%s,NULL,%sWnd,AppMsgPort,TAG_DONE))) return GTBERR_ADDAPPWINDOW;\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + + if(nw->nw_MenuTitle[0]) FPrintf(handle," SetMenuStrip(%sWnd,%sMenus);\n",nw->nw_Label,nw->nw_MenuTitle); + FPrintf(handle," GT_RefreshWindow(%sWnd,NULL);\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + FPrintf(handle," Render_%s();\n",nw->nw_Label); + if(CheckDataTypeWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==DATATYPE_KIND) RefreshDTObject((Object *)%sGadgets[lc],%sWnd,NULL,TAG_DONE);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + } + FPuts(handle,"\treturn GTBERR_OK;\n}\n\n"); + + FPrintf(handle,"void CloseWindow_%s()\n{\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + FPuts(handle," UWORD lc,tc;\n\n"); + if(nw->nw_PageGadget==0) + { + if(CheckPlugInWindow(wo,PAGE_ID)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==PAGE_KIND) RemoveGList(%sWnd,%sGadgets[lc],-1);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + GetFlag(nw->nw_MyFlags,MYWA_AppWindow) + FPrintf(handle," if(%sWApp) RemoveAppWindow(%sAppWnd);\n",nw->nw_Label); + if(nw->nw_MenuTitle[0]) + FPrintf(handle," if(%sWnd) ClearMenuStrip(%sWnd);\n",nw->nw_Label,nw->nw_Label); + GetFlag(nw->nw_MyFlags,MYWA_Project) + FPrintf(handle," if(%sWnd) CloseWindowSafely(%sWnd); %sWnd=NULL;\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + else FPrintf(handle," if(%sWnd) CloseWindowEx(%sWnd); %sWnd=NULL;\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + } + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle," if(%sGList)\n"\ + " {\n",nw->nw_Label); + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]==TOOLIMAGE_KIND) DeleteGadgetExA(%sGadgets[lc],(struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + FPrintf(handle," FreeGadgets(%sGList);\n",nw->nw_Label); + FPrintf(handle," %sGList=NULL;\n",nw->nw_Label); + if(CheckBOOPSIWindow(wo) || CheckDataTypeWindow(wo) || CheckToolBarWindow(wo)) + { + FPrintf(handle," for(lc=0,tc=0;lcnw_Label); + FPuts(handle, " {\n"); + FPrintf(handle," if(%sGTags[tc]!=TOOLIMAGE_KIND) DeleteGadgetExA(%sGadgets[lc],(struct TagItem *)&%sGTags[tc]);\n",nw->nw_Label,nw->nw_Label,nw->nw_Label); + FPuts(handle, " tc+=2;\n"); + FPrintf(handle," while(%sGTags[tc]!=TAG_DONE) tc+=2;\n",nw->nw_Label); + FPuts(handle, " tc++;\n" \ + " }\n"); + } + FPuts(handle, " }\n"); + } + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + FPrintf(handle," CloseWindow_%s();\n",n->ln_Name); + } + FPuts(handle,"}\n\n"); + +} /* FUNC_GenerateWindow */ + +void FUNC_GenerateErrors(BPTR handle) +{ + FPuts(handle,"#define GTBERR_OK 0\n"); + if(OPT_ARexx) FPuts(handle,"#define GTBERR_AREXX 11\n"); + if(OPT_UseLocale) FPuts(handle,"#define GTBERR_LOCALE 12\n"); + if(CheckAppWindow()) FPuts(handle,"#define GTBERR_CREATEAPPPORT 13\n"); + if(CheckProjectWindow()) FPuts(handle,"#define GTBERR_CREATEPROJECTPORT 14\n"); + FPuts(handle,"#define GTBERR_CREATEPOINTER 15\n"); + FPuts(handle,"#define GTBERR_CREATEIMAGE 16\n"); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#define GTBERR_OPENLIB_COLORWHEEL 100\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#define GTBERR_OPENLIB_GRADIENTSLIDER 101\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TAPEDECK 102\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#define GTBERR_OPENLIB_PAGE 103\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#define GTBERR_OPENLIB_POPUPMENU 104\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#define GTBERR_OPENLIB_PROGRESS 105\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TEXTFIELD 106\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#define GTBERR_OPENLIB_TREEVIEW 107\n"); + if(CheckToolBarWindows()) FPuts(handle,"#define GTBERR_OPENLIB_SMARTBITMAP 150\n"); + FPuts(handle,"#define GTBERR_OPENSCREEN 200\n" \ + "#define GTBERR_VISUALINFO 201\n" \ + "#define GTBERR_SCRDRAWINFO 202\n" \ + "#define GTBERR_CREATECONTEXT 300\n" \ + "#define GTBERR_CREATEGADGET 301\n" \ + "#define GTBERR_CREATEMENUS 302\n" \ + "#define GTBERR_OPENWINDOW 303\n"); + if(CheckAppWindow()) FPuts(handle,"#define GTBERR_ADDAPPWINDOW 304\n"); + FPuts(handle,"\n"); +} /* FUNC_GenerateErrors */ + +void FUNC_GenerateTemplate(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle,"int FN_MenuVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle,"int FN_SizeVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle,"int FN_ReqVerify_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle,"int FN_ReqSet_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle,"int FN_ReqClear_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle,"int FN_NewSize_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle,"int FN_NewPrefs_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle,"int FN_MenuHelp_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle,"int FN_GadgetHelp_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle,"int FN_MouseMove_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle,"int FN_MouseButtons_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle,"int FN_RawKey_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle,"int FN_VanillaKey_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle,"int FN_IntuiTicks_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle,"int FN_IDCMPUpdate_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle,"int FN_ChangeWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle,"int FN_CloseWindow_%s(void)\n{\n return 0;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle,"int FN_ActiveWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle,"int FN_InActiveWindow_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle,"int FN_DiskRemoved_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle,"int FN_DiskInserted_%s(void)\n{\n return 1;\n}\n\n",nw->nw_Label); +} /* FUNC_GenerateTemplate */ diff --git a/GadToolsBox/CGen/gadget.c b/GadToolsBox/CGen/gadget.c new file mode 100755 index 0000000..525b65b --- /dev/null +++ b/GadToolsBox/CGen/gadget.c @@ -0,0 +1,1410 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; +extern struct Screen *Scr; + +void NWCalcLeftTop(UWORD *offx,UWORD *offy,struct Node_Window *nw) +{ + BOOL bl,aaa=FALSE; + + *offx=0; + *offy=0; + + if(nw->nw_Flags&WFLG_BORDERLESS) bl=TRUE; + else bl=FALSE; + + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + aaa=TRUE; + } + if(nw->nw_MyFlags&MYWA_DragToolVert) + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + aaa=TRUE; + } + if(!aaa) + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(nw->nw_WindowTitle[0]) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void NWCalcRightBottom(UWORD *offx,UWORD *offy,struct Node_Window *nw) +{ + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + struct DrawInfo *DrawInfo; + + *offx=0; + *offy=0; + + if(nw->nw_Flags&WFLG_BORDERLESS) bl=TRUE; + else bl=FALSE; + + if(nw->nw_Flags&WFLG_SIZEGADGET) sg=TRUE; + else sg=FALSE; + + if(nw->nw_Flags&WFLG_SIZEBBOTTOM) sbb=TRUE; + else sbb=FALSE; + + if(nw->nw_Flags&WFLG_SIZEBRIGHT) sbr=TRUE; + else sbr=FALSE; + + if((DrawInfo=GetScreenDrawInfo(Scr)) && (im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE))) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + FreeScreenDrawInfo(Scr,DrawInfo); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} + +void WriteNewGadgetFlags(BPTR handle,ULONG flags) +{ + GetFlag(flags,PLACETEXT_LEFT) FPuts(handle,"PLACETEXT_LEFT |"); + GetFlag(flags,PLACETEXT_RIGHT) FPuts(handle,"PLACETEXT_RIGHT |"); + GetFlag(flags,PLACETEXT_ABOVE) FPuts(handle,"PLACETEXT_ABOVE |"); + GetFlag(flags,PLACETEXT_BELOW) FPuts(handle,"PLACETEXT_BELOW |"); + GetFlag(flags,PLACETEXT_IN) FPuts(handle,"PLACETEXT_IN |"); + GetFlag(flags,NG_HIGHLABEL) FPuts(handle,"NG_HIGHLABEL |"); + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,", "); +} + +void GADGET_GenerateStruct(BPTR handle,piObject *go) +{ + struct Node_Frame *nf; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct TagItem *ti; + struct Node *n; + ULONG a,w,h; + piObject *wo,*fo; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case CYCLE_ID: + case MX_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"UBYTE *LABELS_%s[]=\n{\n",ng->ng_Label); + for(n=GetHead(ti->ti_Data),a=0;GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle," (UBYTE *)MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + FPuts(handle," NULL\n};\n"); + } + break; + case LISTVIEW_ID: + if(ti=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + FPrintf(handle,"extern struct MinList LABELS_%s;",ng->ng_Label); + FPrintf(handle,"struct Node NODES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + if(!GetSucc(GetSucc(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Tail, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a+1); + if(!GetPred(GetPred(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Head, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a-1); + FPrintf(handle,"0, 0, (STRPTR) MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + FPrintf(handle,"struct MinList LABELS_%s={\n (struct MinNode *)&NODES_%s[0], NULL, (struct MinNode *)&NODES_%s[%ld]\n};\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,a); + } + } + break; + case PAGE_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),GetHead(List(ti->ti_Data))->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + w=nw->nw_Width+10-Scr->WBorLeft-(nw->nw_Flags&WFLG_SIZEGADGET?18:Scr->WBorRight); + h=nw->nw_Height+Scr->WBorBottom-(Scr->RastPort.TxHeight+Scr->WBorTop+1)-4; + FPrintf(handle,"struct BevelBox BBOX_%s=\n{\n NULL, %ld, %ld, %ld, %ld, BBFLG_BACKFILL|BBFLG_FRAMEBUTTON, 0, 0, 0, 0\n};\n\n",ng->ng_Label,ng->ng_X-5,ng->ng_Y+ng->ng_Height,w,h); + } + for(n=GetHead(List(ti->ti_Data));GetSucc(n);n=GetSucc(n)) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Frame))) + { + FPrintf(handle,"struct BevelBox BBOX_%s_%s[]=\n{\n",ng->ng_Label,n->ln_Name); + for(a=0,fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo),a++) + { + nf=(struct Node_Frame *)OBJECT_DATA(fo); + if(!GetSucc(GetSucc(fo))) FPuts(handle," NULL, "); + else FPrintf(handle," &BBOX_%s_%s[%ld], ",ng->ng_Label,n->ln_Name,a+1); + FPrintf(handle,"%ld, %ld, %ld, %ld, ",ng->ng_X+nf->nf_X,ng->ng_Y+nf->nf_Y+ng->ng_Height,(nf->nf_FrameType==FTYPE_VERTICALLINE)?1L:nf->nf_Width,(nf->nf_FrameType==FTYPE_HORIZONTALLINE)?1L:nf->nf_Height); + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + case FTYPE_RIDGE: FPuts(handle,"BBFLG_FRAMERIDGE"); break; + case FTYPE_HORIZONTALLINE: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + case FTYPE_VERTICALLINE: FPuts(handle,"BBFLG_FRAMEBUTTON"); break; + } + GetFlag(nf->nf_Flags,MYFR_Recessed) FPuts(handle,"|BBFLG_RECESSED, "); + else FPuts(handle,", "); + FPuts(handle,"0, 0, 0, 0,\n"); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + } + } + } + FPrintf(handle,"struct Page PAGES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(List(ti->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!GetSucc(GetSucc(n))) FPuts(handle," NULL, "); + else FPrintf(handle,"\t&PAGES_%s[%ld], ",ng->ng_Label,a+1); + FPrintf(handle,"(STRPTR) MSG_%s_L%ld_GAD, FS_NORMAL, NULL, NULL, ",ng->ng_Label,a); + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(IsListEmpty(List(&nw->nw_List_Frame))) FPuts(handle,"NULL, "); + else FPrintf(handle,"BBOX_%s_%s, ",ng->ng_Label,n->ln_Name); + } + } + FPuts(handle,"NULL, NULL,\n"); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + } + } + break; + case POPUPMENU_ID: + if(ti=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + if(!IsListEmpty(List(ti->ti_Data))) + { + FPrintf(handle,"extern struct MinList LABELS_%s;\n",ng->ng_Label); + FPrintf(handle,"struct Node NODES_%s[]=\n{\n",ng->ng_Label); + for(a=0,n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + if(!GetSucc(GetSucc(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Tail, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a+1); + if(!GetPred(GetPred(n))) FPrintf(handle,"(struct Node *)&LABELS_%s.mlh_Head, ",ng->ng_Label); + else FPrintf(handle," &NODES_%s[%ld], ",ng->ng_Label,a-1); + FPrintf(handle,"0, 0, (STRPTR) MSG_%s_L%ld_GAD,\n",ng->ng_Label,a); + } + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n\n"); + FPrintf(handle,"struct MinList LABELS_%s={\n (struct MinNode *)&NODES_%s[0], NULL, (struct MinNode *)&NODES_%s[%ld]\n};\n",ng->ng_Label,ng->ng_Label,ng->ng_Label,a); + } + } + break; + } +} /* GADGET_GenerateStruct */ + +void GADGET_GenerateTags(BPTR handle,piObject *go) +{ + piObject *wo2,*go2; + struct Node_Gadget *ng,*ng2,*ngp=NULL; + struct Node_Window *nw,*nw2; + struct Node *n; + struct GadToolsData *gtd; + struct TagItem *t; + LONG x,y,w,h; + UWORD offl,offt,offr,offb; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + nw=(struct Node_Window *)OBJECT_DATA(ng->ng_Window); + gtd=(struct GadToolsData *)GadgetData(ng); + + if(nw->nw_PageGadget) + { + for(wo2=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo2);wo2=(piObject *)GetSucc(wo2)) + { + nw2=(struct Node_Window *)OBJECT_DATA(wo2); + for(go2=(piObject *)GetHead(List(&nw2->nw_List_Gadget));GetSucc(go2);go2=(piObject *)GetSucc(go2)) + { + ng2=(struct Node_Gadget *)OBJECT_DATA(go2); + if(ng2->ng_PlugInID==PAGE_ID) + for(n=GetHead(List(GetTagData(TAG_USER+1,0,ng2->ng_OwnTags)));GetSucc(n);n=GetSucc(n)) + if(!strcmp(nw->nw_Label,n->ln_Name)) + { + ngp=ng2; + } + } + } + } + + FPuts(handle," "); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + switch(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data) + { + case 0: FPuts(handle,"BUTTON_KIND, "); break; + case 1: + case 2: FPuts(handle,"TOOLIMAGE_KIND, "); break; + } + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(TAG_USER+2,ng->ng_OwnTags)) FPrintf(handle,"GA_ToggleSelect, %s, ",t->ti_Data?"TRUE":"FALSE"); + switch(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data) + { + case 0: FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); break; + case 1: FPrintf(handle,"GA_Text, (ULONG) &%sTbr, ",gtd->g_Text); break; + case 2: FPrintf(handle,"GA_Text, (ULONG) &%sImg, ",gtd->g_Text); break; + } + break; + case CHECKBOX_ID: + FPuts(handle,"CHECKBOX_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTCB_Checked,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTCB_Checked, TRUE, "); + if(t=FindTagItem(GTCB_Scaled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTCB_Scaled, TRUE, "); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case COLORWHEEL_ID: + FPuts(handle,"COLORWHEEL_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_FollowMouse,ng->ng_Tags)) FPrintf(handle,"GA_FollowMouse, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(WHEEL_BevelBox,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"WHEEL_BevelBox, TRUE, "); + if(t=FindTagItem(WHEEL_Abbrv,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"WHEEL_Abbrv, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(WHEEL_MaxPens,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"WHEEL_MaxPens, %ld, ",t->ti_Data); + if(t=FindTagItem(WHEEL_GradientSlider,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"WHEEL_GradientSlider, %sGadgets[GA_%s], ",ng->ng_Label,t->ti_Data); + FPuts(handle,"WHEEL_Screen, NULL, "); + break; + case CYCLE_ID: + FPuts(handle,"CYCLE_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTCY_Active,ng->ng_Tags)) FPrintf(handle,"GTCY_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTCY_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case DATATYPE_ID: + FPuts(handle,"DATATYPE_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) + { + if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"GA_Text, \"%s\", ",t->ti_Data); + else FPuts(handle,"GA_Text, NULL, "); + } + else FPuts(handle,"GA_Text, NULL, "); + break; + case GRADIENTSLIDER_ID: + FPuts(handle,"GRADIENTSLIDER_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GRAD_MaxVal,ng->ng_Tags)) FPrintf(handle,"GRAD_MaxVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_CurVal,ng->ng_Tags)) FPrintf(handle,"GRAD_CurVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_SkipVal,ng->ng_Tags)) FPrintf(handle,"GRAD_SkipVal, 0x%lx, ",t->ti_Data); + if(t=FindTagItem(GRAD_KnobPixels,ng->ng_Tags)) FPrintf(handle,"GRAD_KnobPixels, %ld, ",t->ti_Data); + if(t=FindTagItem(GRAD_PenArray,ng->ng_Tags)) FPrintf(handle,"GRAD_PenArray, NULL, "); +// if(t=FindTagItem(GRAD_PenArray,ng->ng_Tags)) FPrintf(handle,"GRAD_PenArray, PENS_%s, ",ng->ng_Label); + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + break; + case INTEGER_ID: + FPuts(handle,"INTEGER_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTIN_Number,ng->ng_Tags)) FPrintf(handle,"GTIN_Number, %ld, ",t->ti_Data); + if(t=FindTagItem(GTIN_MaxChars,ng->ng_Tags)) FPrintf(handle,"GTIN_MaxChars, %ld, ",t->ti_Data); + if(t=FindTagItem(STRINGA_ExitHelp,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ExitHelp, TRUE, "); + if(t=FindTagItem(STRINGA_ReplaceMode,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ReplaceMode, TRUE, "); + if(t=FindTagItem(STRINGA_Justification,ng->ng_Tags)) + { + FPuts(handle,"STRINGA_Justification, "); + switch(t->ti_Data) + { + case STRINGLEFT: FPuts(handle,"STRINGLEFT"); break; + case STRINGCENTER: FPuts(handle,"STRINGCENTER"); break; + case STRINGRIGHT: FPuts(handle,"STRINGRIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case LISTVIEW_ID: + FPuts(handle,"LISTVIEW_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTLV_ReadOnly,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTLV_ReadOnly, TRUE, "); + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTLV_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(GTLV_ShowSelected,ng->ng_Tags)) FPuts(handle,"GTLV_ShowSelected, NULL, "); + if(t=FindTagItem(LAYOUTA_Spacing,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"LAYOUTA_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(GTLV_ScrollWidth,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTLV_ScrollWidth, %ld, ",t->ti_Data); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case MX_ID: + FPuts(handle,"MX_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"GTMX_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(GTMX_Active,ng->ng_Tags)) FPrintf(handle,"GTMX_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(GTMX_Scaled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTMX_Scaled, TRUE, "); + if(t=FindTagItem(GTMX_Spacing,ng->ng_Tags)) FPrintf(handle,"GTMX_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(GTMX_TitlePlace,ng->ng_Tags)) + { + FPuts(handle,"GTMX_TitlePlace, "); + switch(t->ti_Data) + { + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case NUMBER_ID: + FPuts(handle,"NUMBER_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTNM_Number,ng->ng_Tags)) FPrintf(handle,"GTNM_Number, %ld, ",t->ti_Data); + if(t=FindTagItem(GTNM_Border,ng->ng_Tags)) FPrintf(handle,"GTNM_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTNM_Clipped,ng->ng_Tags)) FPrintf(handle,"GTNM_Clipped, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) FPrintf(handle,"GTNM_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTNM_MaxNumberLen,ng->ng_Tags)) FPrintf(handle,"GTNM_MaxNumberLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTNM_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTNM_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case PAGE_ID: + FPuts(handle,"PAGE_KIND, NULL, "); + FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(PAGE_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PAGE_Pages,ng->ng_Tags)) FPrintf(handle,"PAGE_Pages, (ULONG) PAGES_%s, ",ng->ng_Label); + if(t=FindTagItem(PAGE_Active,ng->ng_Tags)) FPrintf(handle,"PAGE_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(PAGE_Layout,ng->ng_Tags)) + { + FPuts(handle,"PAGE_Layout, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"PGLYT_SIMPLE"); break; + case GTJ_CENTER: FPuts(handle,"PGLYT_MUISTYLE"); break; + case GTJ_RIGHT: FPuts(handle,"PGLYT_GADTOOLS"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(PAGE_ActiveStyle,ng->ng_Tags)) + { + FPuts(handle,"PAGE_ActiveStyle, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"PGAST_NORMAL"); break; + case GTJ_CENTER: FPuts(handle,"PGAST_HILIGHT"); break; + case GTJ_RIGHT: FPuts(handle,"PGAST_SHADOW"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"PAGE_ClearBBox, (ULONG) &BBOX_%s, ",ng->ng_Label); + break; + case PALETTE_ID: + FPuts(handle,"PALETTE_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTPA_Depth,ng->ng_Tags)) FPrintf(handle,"GTPA_Depth, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_Color,ng->ng_Tags)) FPrintf(handle,"GTPA_Color, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_ColorOffset,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_ColorOffset, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_IndicatorWidth,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_IndicatorWidth, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_IndicatorHeight,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"GTPA_IndicatorHeight, %ld, ",t->ti_Data); + if(t=FindTagItem(GTPA_NumColors,ng->ng_Tags)) FPrintf(handle,"GTPA_NumColors, %ld, ",t->ti_Data); + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case POPUPMENU_ID: + FPuts(handle,"POPUPMENU_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) if(t->ti_Data) if(!IsListEmpty(List(t->ti_Data))) FPrintf(handle,"PUMG_Labels, (ULONG) &LABELS_%s, ",ng->ng_Label); + if(t=FindTagItem(PUMG_Active,ng->ng_Tags)) FPrintf(handle,"PUMG_Active, %ld, ",t->ti_Data); + if(t=FindTagItem(PUMG_NewLook,ng->ng_Tags)) FPrintf(handle,"PUMG_NewLook, %s, ",t->ti_Data?"TRUE":"FALSE"); + break; + case PROGRESS_ID: + FPuts(handle,"PROGRESS_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(PROG_MaxVal,ng->ng_Tags)) FPrintf(handle,"PROG_MaxVal, %ld, ",t->ti_Data); + if(t=FindTagItem(PROG_CurVal,ng->ng_Tags)) FPrintf(handle,"PROG_CurVal, %ld, ",t->ti_Data); + if(t=FindTagItem(PROG_ConvertToPercents,ng->ng_Tags)) FPrintf(handle,"PROG_ConvertToPercents, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) FPrintf(handle,"PROG_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(PROG_Border,ng->ng_Tags)) FPrintf(handle,"PROG_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(PROG_Placement,ng->ng_Tags)) + { + FPuts(handle,"PROG_Placement, "); + switch(t->ti_Data) + { + case PLACETEXT_IN: FPuts(handle,"PLACETEXT_IN"); break; + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + break; + case SCROLLER_ID: + FPuts(handle,"SCROLLER_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_RelVerify,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(GTSC_Top,ng->ng_Tags)) FPrintf(handle,"GTSC_Top, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSC_Total,ng->ng_Tags)) FPrintf(handle,"GTSC_Total, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSC_Visible,ng->ng_Tags)) FPrintf(handle,"GTSC_Visible, %ld, ",t->ti_Data); + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + switch(t->ti_Data) + { + case 0: break; // None + case 1: if(t=FindTagItem(GTSC_Arrows,ng->ng_Tags)) if(t) FPrintf(handle,"GTSC_Arrows, %ld, ",t->ti_Data); break; + case 2: FPrintf(handle,"GTSC_Arrows, %ld, ",ng->ng_Height); break; + } + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case SLIDER_ID: + FPuts(handle,"SLIDER_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_RelVerify,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_RelVerify, TRUE, "); + if(t=FindTagItem(GTSL_Min,ng->ng_Tags)) FPrintf(handle,"GTSL_Min, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_Max,ng->ng_Tags)) FPrintf(handle,"GTSL_Max, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_Level,ng->ng_Tags)) FPrintf(handle,"GTSL_Level, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_MaxLevelLen,ng->ng_Tags)) FPrintf(handle,"GTSL_MaxLevelLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_MaxPixelLen,ng->ng_Tags)) FPrintf(handle,"GTSL_MaxPixelLen, %ld, ",t->ti_Data); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) FPrintf(handle,"GTSL_LevelFormat, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTSL_LevelPlace,ng->ng_Tags)) + { + FPuts(handle,"GTSL_LevelPlace, "); + switch(t->ti_Data) + { + case PLACETEXT_LEFT: FPuts(handle,"PLACETEXT_LEFT"); break; + case PLACETEXT_RIGHT: FPuts(handle,"PLACETEXT_RIGHT"); break; + case PLACETEXT_ABOVE: FPuts(handle,"PLACETEXT_ABOVE"); break; + case PLACETEXT_BELOW: FPuts(handle,"PLACETEXT_BELOW"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(GTSL_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTSL_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"LORIENT_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"LORIENT_VERT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case STRING_ID: + FPuts(handle,"STRING_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GA_Immediate,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"GTST_String, (ULONG) MSG_%s_STRING_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTST_MaxChars,ng->ng_Tags)) FPrintf(handle,"GTST_MaxChars, %ld, ",t->ti_Data); + if(t=FindTagItem(STRINGA_ExitHelp,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ExitHelp, TRUE, "); + if(t=FindTagItem(STRINGA_ReplaceMode,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"STRINGA_ReplaceMode, TRUE, "); + if(t=FindTagItem(STRINGA_Justification,ng->ng_Tags)) + { + FPuts(handle,"STRINGA_Justification, "); + switch(t->ti_Data) + { + case STRINGLEFT: FPuts(handle,"STRINGLEFT"); break; + case STRINGCENTER: FPuts(handle,"STRINGCENTER"); break; + case STRINGRIGHT: FPuts(handle,"STRINGRIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case TAPEDECK_ID: + FPuts(handle,"TAPEDECK_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(TDECK_Paused,ng->ng_Tags)) FPrintf(handle,"TDECK_Paused, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TDECK_Tape,ng->ng_Tags)) FPrintf(handle,"TDECK_Tape, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TDECK_Tape,ng->ng_Tags)) + { + if(t=FindTagItem(TDECK_Frames,ng->ng_Tags)) FPrintf(handle,"TDECK_Frames, %ld, ",t->ti_Data); + if(t=FindTagItem(TDECK_CurrentFrame,ng->ng_Tags)) FPrintf(handle,"TDECK_CurrentFrame, %ld, ",t->ti_Data); + } + break; + case TEXT_ID: + FPuts(handle,"TEXT_KIND, "); + WriteNewGadgetFlags(handle,gtd->g_Flags); + if(t=FindTagItem(GT_Underscore,ng->ng_Tags)) FPuts(handle,"GT_Underscore, '_', "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"GTTX_Text, (ULONG) MSG_%s_STRING_GAD, ",ng->ng_Label); + if(t=FindTagItem(GTTX_Border,ng->ng_Tags)) FPrintf(handle,"GTTX_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_Clipped,ng->ng_Tags)) FPrintf(handle,"GTTX_Clipped, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_CopyText,ng->ng_Tags)) FPrintf(handle,"GTTX_CopyText, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GTTX_Justification,ng->ng_Tags)) + { + FPuts(handle,"GTTX_Justification, "); + switch(t->ti_Data) + { + case GTJ_LEFT: FPuts(handle,"GTJ_LEFT"); break; + case GTJ_CENTER: FPuts(handle,"GTJ_CENTER"); break; + case GTJ_RIGHT: FPuts(handle,"GTJ_RIGHT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"GA_Text, (ULONG) MSG_%s_GAD, ",ng->ng_Label); + break; + case TEXTFIELD_ID: + FPuts(handle,"TEXTFIELD_KIND, NULL, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) FPrintf(handle,"GA_Disabled, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_ReadOnly,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_ReadOnly, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Partial,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Partial, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_BlockCursor,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_BlockCursor, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_VCenter,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_VCenter, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_PassCommand,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_PassCommand, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_NonPrintChars,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_NonPrintChars, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_MaxSizeBeep,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_MaxSizeBeep, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_NoGhost,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_NoGhost, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Modified,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Modified, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_UserAlign,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_UserAlign, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_RuledPaper,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_RuledPaper, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Inverted,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Inverted, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(GA_TabCycle,ng->ng_Tags)) FPrintf(handle,"GA_TabCycle, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_Delimiters, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_AcceptChars, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)) if(((STRPTR)t->ti_Data)[0]) FPrintf(handle,"TEXTFIELD_RejectChars, (ULONG) \"%s\", ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_BlinkRate,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_BlinkRate, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_MaxSize,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_MaxSize, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_TabSpaces,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_TabSpaces, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_Spacing,ng->ng_Tags)) FPrintf(handle,"TEXTFIELD_Spacing, %ld, ",t->ti_Data); + if(t=FindTagItem(TEXTFIELD_Border,ng->ng_Tags)) + { + FPuts(handle,"TEXTFIELD_Border, "); + switch(t->ti_Data) + { + case TEXTFIELD_BORDER_NONE: FPuts(handle,"TEXTFIELD_BORDER_NONE"); break; + case TEXTFIELD_BORDER_BEVEL: FPuts(handle,"TEXTFIELD_BORDER_BEVEL"); break; + case TEXTFIELD_BORDER_DOUBLEBEVEL: FPuts(handle,"TEXTFIELD_BORDER_DOUBLEBEVEL"); break; + } + FPuts(handle,", "); + } + if(t=FindTagItem(TEXTFIELD_Alignment,ng->ng_Tags)) + { + FPuts(handle,"TEXTFIELD_Alignment, "); + switch(t->ti_Data) + { + case TEXTFIELD_ALIGN_LEFT: FPuts(handle,"TEXTFIELD_ALIGN_LEFT"); break; + case TEXTFIELD_ALIGN_RIGHT: FPuts(handle,"TEXTFIELD_ALIGN_RIGHT"); break; + case TEXTFIELD_ALIGN_CENTER: FPuts(handle,"TEXTFIELD_ALIGN_CENTER"); break; + } + FPuts(handle,", "); + } + break; + case TREEVIEW_ID: + FPuts(handle,"TREEVIEW_KIND, NULL, "); + FPuts(handle,"GA_RelVerify, TRUE, "); + FPuts(handle,"GA_Immediate, TRUE, "); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GA_Disabled, TRUE, "); + if(t=FindTagItem(LIST_Labels,ng->ng_Tags)) FPrintf(handle,"LIST_Labels, NULL, "); + if(t=FindTagItem(LIST_ReadOnly,ng->ng_Tags)) if(t->ti_Data) FPrintf(handle,"LIST_ReadOnly, TRUE, "); + if(t=FindTagItem(LIST_Border,ng->ng_Tags)) FPrintf(handle,"LIST_Border, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_MultiSelect,ng->ng_Tags)) FPrintf(handle,"LIST_MultiSelect, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_ShowTreeLines,ng->ng_Tags)) FPrintf(handle,"LIST_ShowTreeLines, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_IsTree,ng->ng_Tags)) FPrintf(handle,"LIST_IsTree, %s, ",t->ti_Data?"TRUE":"FALSE"); + if(t=FindTagItem(LIST_Columns,ng->ng_Tags)) FPrintf(handle,"LIST_Columns, %ld, ",t->ti_Data); + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) if(((char *)t->ti_Data)[0]) FPrintf(handle,"LIST_Format, (ULONG) MSG_%s_FORMAT_GAD, ",ng->ng_Label); + break; + } + + NWCalcLeftTop(&offl,&offt,nw); + NWCalcRightBottom(&offr,&offb,nw); + + if(ng->ng_RelX) x=(LONG)((WORD)-(nw->nw_Width-offl-ng->ng_X-1)); + else x=(LONG)((WORD)ng->ng_X); + if(ng->ng_RelY) y=(LONG)((WORD)-(nw->nw_Height-offt-ng->ng_Y-1)); + else y=(LONG)((WORD)ng->ng_Y); + if(ng->ng_RelWidth) w=(LONG)((WORD)-(nw->nw_Width-ng->ng_Width-offl-offr-ng->ng_X-1)); + else w=(LONG)((WORD)ng->ng_Width+1); + if(ng->ng_RelHeight) h=(LONG)((WORD)-(nw->nw_Height-ng->ng_Height-offt-offb-ng->ng_Y-1)); + else h=(LONG)((WORD)ng->ng_Height+1); + if(ngp) + { + x+=(LONG)((WORD)ngp->ng_X); + y+=(LONG)((WORD)(ngp->ng_Y+ngp->ng_Height)); + } + + if(ng->ng_RelX) FPrintf(handle,"GA_Right, %ld, ",x); + else FPrintf(handle,"GA_Left, %ld, ",x); + if(ng->ng_RelY) FPrintf(handle,"GA_Bottom, %ld, ",y); + else FPrintf(handle,"GA_Top, %ld, ",y); + if(ng->ng_RelWidth) FPrintf(handle,"GA_RelWidth, %ld, ",w); + else FPrintf(handle,"GA_Width, %ld, ",w); + if(ng->ng_RelHeight) FPrintf(handle,"GA_RelHeight, %ld, ",h); + else FPrintf(handle,"GA_Height, %ld, ",h); + + if((ng->ng_PlugInID!=TEXT_ID) && (ng->ng_PlugInID!=NUMBER_ID) && (ng->ng_PlugInID!=PROGRESS_ID)) + FPrintf(handle,"GA_UserData, (ULONG) FN_%s_Clicked, ",ng->ng_Label); + + FPuts(handle,"TAG_DONE,\n"); +} /* GADGET_GenerateTags */ + +void GADGET_GenerateOpenLib(BPTR handle,ULONG id) +{ + switch(id) + { + case COLORWHEEL_ID: + FPuts(handle," if(!(ColorWheelBase=OpenLibrary(\"gadgets/colorwheel.gadget\",39))) return GTBERR_OPENLIB_COLORWHEEL;\n"); + break; + case GRADIENTSLIDER_ID: + FPuts(handle," if(!(GradientSliderBase=OpenLibrary(\"gadgets/gradientslider.gadget\",39))) return GTBERR_OPENLIB_GRADIENTSLIDER;\n"); + break; + case TAPEDECK_ID: + FPuts(handle," if(!(TapeDeckBase=OpenLibrary(\"gadgets/tapedeck.gadget\",39))) return GTBERR_OPENLIB_TAPEDECK;\n"); + break; + case PAGE_ID: + FPuts(handle," if(!(PageBase=OpenLibrary(\"gadgets/page.gadget\",1))) return GTBERR_OPENLIB_PAGE;\n"); + FPuts(handle," PageClass=PAGE_GetClass();\n"); + break; + case POPUPMENU_ID: + FPuts(handle," if(!(PopUpMenuClass=CreatePopUpMenuClass())) return GTBERR_OPENLIB_POPUPMENU;\n"); + break; + case PROGRESS_ID: + FPuts(handle," if(!(ProgressBase=OpenLibrary(\"gadgets/progress.gadget\",37))) return GTBERR_OPENLIB_PROGRESS;\n"); + FPuts(handle," ProgressClass=GetProgressClass();\n"); + break; + case TEXTFIELD_ID: + FPuts(handle," if(!(TextFieldBase=OpenLibrary(\"gadgets/textfield.gadget\",3))) return GTBERR_OPENLIB_TEXTFIELD;\n"); + FPuts(handle," TextFieldClass=TEXTFIELD_GetClass();\n"); + break; + case TREEVIEW_ID: + FPuts(handle," if(!(ListViewBase=OpenLibrary(\"gadgets/listview.gadget\",37))) return GTBERR_OPENLIB_TREEVIEW;\n"); + FPuts(handle," ListViewClass=GetListViewClass();\n"); + break; + } +} /* GADGET_GenerateOpenLib */ + +void GADGET_GenerateCloseLib(BPTR handle,ULONG id) +{ + switch(id) + { + case COLORWHEEL_ID: + FPuts(handle," if(ColorWheelBase) CloseLibrary(ColorWheelBase); ColorWheelBase=NULL;\n"); + break; + case GRADIENTSLIDER_ID: + FPuts(handle," if(GradientSliderBase) CloseLibrary(GradientSliderBase); GradientSliderBase=NULL;\n"); + break; + case TAPEDECK_ID: + FPuts(handle," if(TapeDeckBase) CloseLibrary(TapeDeckBase); TapeDeckBase=NULL;\n"); + break; + case PAGE_ID: + FPuts(handle," if(PageBase) CloseLibrary(PageBase); PageBase=NULL; PageClass=NULL;\n"); + break; + case POPUPMENU_ID: + FPuts(handle," if(PopUpMenuClass) DisposePopUpMenuClass(PopUpMenuClass); PopUpMenuClass=NULL;\n"); + break; + case PROGRESS_ID: + FPuts(handle," if(ProgressBase) CloseLibrary(ProgressBase); ProgressBase=NULL; ProgressClass=NULL;\n"); + break; + case TEXTFIELD_ID: + FPuts(handle," if(TextFieldBase) CloseLibrary(TextFieldBase); TextFieldBase=NULL; TextFieldClass=NULL;\n"); + break; + case TREEVIEW_ID: + FPuts(handle," if(ListViewBase) CloseLibrary(ListViewBase); ListViewBase=NULL; ListViewClass=NULL;\n"); + break; + } +} /* GADGET_GenerateCloseLib */ + +void GADGET_GenerateProtos(BPTR handle,piObject *go) +{ + struct Node_Gadget *ng; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case NUMBER_ID: + case TEXT_ID: + case PROGRESS_ID: + break; + default: + FPrintf(handle,"int FN_%s_Clicked(void);\n",ng->ng_Label); + break; + } +} /* GADGET_GenerateProtos */ + +void GADGET_GenerateTemplate(BPTR handle,piObject *go) +{ + struct Node_Gadget *ng; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case NUMBER_ID: + case TEXT_ID: + case PROGRESS_ID: + break; + default: + FPrintf(handle,"int FN_%s_Clicked()\n{\n return 1;\n}\n\n",ng->ng_Label); + break; + } +} /* GADGET_GenerateTemplate */ + +void GADGET_GenerateCatalogSource(BPTR handle,piObject *go,LONG *index) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + } + break; + case CHECKBOX_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++,(*index)++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++,(*index)++) + FPrintf(handle,"const struct FC_Type _MSG_%s_L%ld_GAD = { %ld, \"%s\" };\n",ng->ng_Label,a,*index,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case SCROLLER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + break; + case SLIDER_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + break; + case STRING_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_STRING_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"const struct FC_Type _MSG_%s_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,gtd->g_Text); + (*index)++; + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_STRING_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_FORMAT_GAD = { %ld, \"%s\" };\n",ng->ng_Label,*index,t->ti_Data); + (*index)++; + } + } + break; + } +} /* GADGET_GenerateCatalogSource */ + +void GADGET_GenerateCatalogHeader(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case CHECKBOX_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case NUMBER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_L%ld_GAD;\n",ng->ng_Label,a); + FPrintf(handle,"#define MSG_%s_L%ld_GAD ((APTR) &_MSG_%s_L%ld_GAD)\n",ng->ng_Label,a,ng->ng_Label,a); + } + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case SCROLLER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + break; + case SLIDER_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + break; + case STRING_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_STRING_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_STRING_GAD ((APTR) &_MSG_%s_STRING_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"extern const struct FC_Type _MSG_%s_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_GAD ((APTR) &_MSG_%s_GAD)\n",ng->ng_Label,ng->ng_Label); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_STRING_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_STRING_GAD ((APTR) &_MSG_%s_STRING_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + { + if(((char *)t->ti_Data)[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_FORMAT_GAD;\n",ng->ng_Label); + FPrintf(handle,"#define MSG_%s_FORMAT_GAD ((APTR) &_MSG_%s_FORMAT_GAD)\n",ng->ng_Label,ng->ng_Label); + } + } + break; + } +} /* GADGET_GenerateCatalogHeader */ + +void GADGET_GenerateCatalogDescription(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case CHECKBOX_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD (//)\n%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case SCROLLER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case SLIDER_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case STRING_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"MSG_%s_GAD (//)\n%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD (//)\n%s\n;\n",ng->ng_Label,t->ti_Data); + break; + } +} /* GADGET_GenerateCatalogDescription */ + +void GADGET_GenerateCatalogTranslation(BPTR handle,piObject *go) +{ + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node *n; + struct TagItem *t; + LONG a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data==0) + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case CHECKBOX_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case LISTVIEW_ID: + if(t=FindTagItem(GTLV_Labels,ng->ng_Tags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case MX_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case NUMBER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTNM_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case PAGE_ID: + if(t=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n),a++) + { + if(wo=(piObject *)FindName(List(&GUI->gui_List_Window),n->ln_Name)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,nw->nw_WindowTitle); + } + } + } + break; + case PALETTE_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case POPUPMENU_ID: + if(t=FindTagItem(PUMG_Labels,ng->ng_Tags)) + { + for(a=0,n=GetHead(t->ti_Data);GetSucc(n);n=GetSucc(n),a++) + FPrintf(handle,"MSG_%s_L%ld_GAD\n\n;%s\n;\n",ng->ng_Label,a,n->ln_Name); + } + break; + case PROGRESS_ID: + if(t=FindTagItem(PROG_Format,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case SCROLLER_ID: + FPrintf(handle,"MSG_%s_GAD\n%s\n;\n",ng->ng_Label,gtd->g_Text); + break; + case SLIDER_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTSL_LevelFormat,ng->ng_Tags)) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case STRING_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTST_String,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"MSG_%s_GAD\n\n;%s\n;\n",ng->ng_Label,gtd->g_Text); + if(t=FindTagItem(GTTX_Text,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + case TEXTFIELD_ID: + break; + case TREEVIEW_ID: + if(t=FindTagItem(LIST_Format,ng->ng_Tags)) + if(((char *)t->ti_Data)[0]) + FPrintf(handle,"MSG_%s_FORMAT_GAD\n\n;%s\n;\n",ng->ng_Label,t->ti_Data); + break; + } +} /* GADGET_GenerateCatalogTranslation */ diff --git a/GadToolsBox/CGen/gadtools.c b/GadToolsBox/CGen/gadtools.c new file mode 100755 index 0000000..234c075 --- /dev/null +++ b/GadToolsBox/CGen/gadtools.c @@ -0,0 +1,581 @@ +/* +** Source code generated by GadToolsBox 0.0 (c) by Tomasz Muszynski +** GUI designed by: Tomasz Muszynski +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtools.h" +#include"gadtools_cat.h" + +TEXT VER_STRING[]=VER_SVER; + +struct Screen *Scr=NULL; +struct DrawInfo *DrawInfo=NULL; +APTR VisualInfo=NULL; +TEXT ScrTitle[256]; +TEXT ScrPubName[30]; +struct Catalog *Catalog=NULL; +struct Locale *Locale=NULL; +struct TextAttr *Font, Attr; +UWORD FontX, FontY; +BOOL GadgetLocaleDone[CNTWND_WINDOWS]; +BOOL WindowLocaleDone[CNTWND_WINDOWS]; +BOOL MenuLocaleDone[CNTMN_MENUS]; + + +/* Prefs Window structures */ +struct Window *PrefsWnd=NULL; +struct Gadget *PrefsGList=NULL; +struct Gadget *PrefsGadgets[CNT_Prefs]; +struct IntuiMessage PrefsMsg; + + +/* Prefs Window tags */ +ULONG PrefsWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 281, WA_Height, 139, WA_Title, (ULONG) MSG_Prefs_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_RMBTrap, TRUE, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Prefs Gadget structures */ + +/* Prefs Gadget tags */ +ULONG PrefsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_TEMPLATE_GAD, GA_Left, 160, GA_Top, 4, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_TEMPLATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_GUIFUNCS_GAD, GA_Left, 160, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_GUIFUNCS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_LOCALIZE_GAD, GA_Left, 160, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_LOCALIZE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_SAVE_GAD, GA_Left, 8, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_SAVE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_CANCEL_GAD, GA_Left, 184, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_CANCEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_USE_GAD, GA_Left, 96, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_USE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_SCREEN_GAD, GA_Left, 160, GA_Top, 24, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_SCREEN_Clicked, TAG_DONE +}; + +/* Application functions */ + +UWORD InitApplication(STRPTR language) +{ + if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE; + Catalog=OpenCatalog(Locale,"c.generator.catalog", + OC_BuiltInLanguage,"english", OC_Version, VER_VERSION, + language?OC_Language:TAG_IGNORE, language, TAG_DONE); + return GTBERR_OK; +} + +void FreeApplication() +{ + if(Catalog) CloseCatalog(Catalog); Catalog=NULL; +} + +STRPTR GetCatString(APTR fcstr) +{ + STRPTR defaultstr; + LONG strnum; + + strnum=((struct FC_Type *)fcstr)->ID; + defaultstr=((struct FC_Type *)fcstr)->Str; + + return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr); +} + +struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags) +{ + struct Gadget *g; + struct NewGadget ng; + ULONG kind,flags,x,y,w,h; + BOOL rx=0,ry=0,rw=0,rh=0; + struct TagItem *ti; + + kind=tags[0].ti_Tag; + flags=tags[0].ti_Data; + tags=&tags[1]; + + if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx; + else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; } + + if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy; + else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; } + + if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data); + else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; } + + if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data); + else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; } + + switch(kind) + { + case BUTTON_KIND: + case CHECKBOX_KIND: + case INTEGER_KIND: + case LISTVIEW_KIND: + case MX_KIND: + case NUMBER_KIND: + case CYCLE_KIND: + case PALETTE_KIND: + case SCROLLER_KIND: + case SLIDER_KIND: + case STRING_KIND: + case TEXT_KIND: + ng.ng_LeftEdge=x; + ng.ng_TopEdge=y; + ng.ng_Width=w; + ng.ng_Height=h; + ng.ng_Flags=flags; + ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags); + ng.ng_GadgetID=GetTagData(GA_ID,0,tags); + ng.ng_GadgetText=(char *)GetTagData(GA_Text,0,tags); + ng.ng_VisualInfo=VisualInfo; + ng.ng_TextAttr=Font; + g=CreateGadgetA(kind,prev,&ng,tags); + if(!g) return g; + if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT; + if(rx) g->Flags|=GFLG_RELRIGHT; + if(ry) g->Flags|=GFLG_RELBOTTOM; + if(rw) g->Flags|=GFLG_RELWIDTH; + if(rh) g->Flags|=GFLG_RELHEIGHT; + break; + } + return g; +} + +void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags) +{ + switch(tags[0].ti_Tag) + { + case COLORWHEEL_KIND: + case GRADIENTSLIDER_KIND: + case PAGE_KIND: + case POPUPMENU_KIND: + case PROGRESS_KIND: + case TAPEDECK_KIND: + case TEXTFIELD_KIND: + case TREEVIEW_KIND: + DisposeObject(g); + break; + case TOOLIMAGE_KIND: + g->GadgetRender=g->SelectRender=NULL; + break; + } +} + +struct Window *OpenWindowTagsEx(ULONG tags,...) +{ + struct Gadget *g=NULL; + struct Window *win; + struct TagItem *ti,*clone=NULL; + BOOL tbg=FALSE,rx=FALSE,ry=FALSE,rw=FALSE,rh=FALSE; + ULONG left,top,width,height; + + clone=CloneTagItems((struct TagItem *)&tags); + if(ti=FindTagItem(WA_ToolDragBar,clone)) + { + if(g=AllocMem(sizeof(struct Gadget),MEMF_ANY|MEMF_CLEAR)) + { + g->LeftEdge=0; + g->TopEdge=0; + g->Flags=GFLG_GADGHNONE; + g->GadgetType=GTYP_WDRAGGING; + g->UserData=(APTR)DRAG_ID; + if(ti->ti_Data==TOOL_HORIZ) + { + g->Activation=GACT_TOPBORDER|GACT_BORDERSNIFF; + g->Width=32767; + g->Height=8; + } + else + { + g->Activation=GACT_LEFTBORDER|GACT_BORDERSNIFF; + g->Width=8; + g->Height=32767; + } + } + else return NULL; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_RelWidth,clone)) + { + rw=TRUE; + width=(Scr->Width)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelHeight,clone)) + { + rh=TRUE; + height=(Scr->Height)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_CenterX,clone)) + { + rx=TRUE; + left=(Scr->Width/2)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_CenterY,clone)) + { + ry=TRUE; + top=(Scr->Height/2)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelRight,clone)) + { + rx=TRUE; + left=(Scr->Width)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelBottom,clone)) + { + ry=TRUE; + top=(Scr->Height)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_Gadgets,clone)) + { + if(g) + { + g->NextGadget=(struct Gadget *)ti->ti_Data; + ti->ti_Data=(ULONG)g; + tbg=TRUE; + } + if(ti->ti_Data==NULL) ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_FontAdaptive,clone)) + { + width=AdaptX(width); + height=AdaptY(height); + ti->ti_Tag=TAG_IGNORE; + if(ti=FindTagItem(WA_Width,clone)) ti->ti_Data=AdaptX(ti->ti_Data); + if(ti=FindTagItem(WA_Height,clone)) ti->ti_Data=AdaptY(ti->ti_Data); + } + + if(!(win=OpenWindowTags(NULL, + rx?WA_Left:TAG_IGNORE,left, + ry?WA_Top:TAG_IGNORE,top, + rw?WA_Width:TAG_IGNORE,width, + rh?WA_Height:TAG_IGNORE,height, + TAG_MORE,(ULONG)clone))) + if(g) FreeMem(win,sizeof(struct Gadget)); + + if(clone) FreeTagItems(clone); + return win; +} + +void CloseWindowEx(struct Window *win) +{ + struct Gadget *g,*drag=NULL; + + g=win->FirstGadget; + while(g) + { + if(((ULONG)g->UserData)==DRAG_ID) { drag=g; break; } + g=g->NextGadget; + } + CloseWindow(win); + if(drag) FreeMem(drag,sizeof(struct Gadget)); +} + +void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE); + + if(ti=FindTagItem(WA_ToolDragBar,tags)) + { + if(ti->ti_Data==TOOL_HORIZ) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + } + else + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + } + } + else + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(GetTagData(WA_Title,NULL,tags)) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS); + + if(ti=FindTagItem(WA_SizeGadget,tags)) + sg=ti->ti_Data; + else + sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET); + + if(ti=FindTagItem(WA_SizeBBottom,tags)) + sbb=ti->ti_Data; + else + sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM); + + if(ti=FindTagItem(WA_SizeBRight,tags)) + sbr=ti->ti_Data; + else + sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT); + + if(im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE)) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} +UWORD AdaptX(UWORD value) +{ + return((UWORD)(((FontX*value)+3)/7)); +} + +UWORD AdaptY(UWORD value) +{ + return((UWORD)(((FontY*value)+6)/13)); +} + +void CalcAdaptivity(UWORD width, UWORD height) +{ + Font = &Attr; + Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name; + Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize; + FontX = Scr->RastPort.Font->tf_XSize; + + if(width && height) + if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz; + return; + +UseTopaz: + Font->ta_Name = (STRPTR)"topaz.font"; + FontX = FontY = Font->ta_YSize = 8; +} + +void FixGadgetTags(struct TagItem *tags) +{ + ULONG kind,a; + UBYTE **labels; + struct TagItem *ti; + struct Node *node; + + kind=tags[0].ti_Tag; + tags=&tags[1]; + + if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + + switch(kind) + { + case LISTVIEW_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ) + node->ln_Name=GetCatString((APTR)node->ln_Name); + break; + case MX_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case NUMBER_KIND: + if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case CYCLE_KIND: + if(ti=FindTagItem(GTCY_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case SLIDER_KIND: + if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case STRING_KIND: + if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case TEXT_KIND: + if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + } +} + +void FixWindowTags(struct TagItem *tags) +{ + struct TagItem *ti; + + if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); +} + +void FixMenus(struct NewMenu *menu) +{ + ULONG a; + + for(a=0;menu[a].nm_Type!=NM_END;a++) + if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label)) + { + menu[a].nm_CommKey=GetCatString(menu[a].nm_Label); + menu[a].nm_Label=menu[a].nm_CommKey+2; + if(menu[a].nm_CommKey[0]=='\0') menu[a].nm_CommKey=NULL; + } +} + +/* Screen functions */ + +UWORD SetupScreen(UBYTE Num) +{ + UWORD OffX,OffY; + + if(!(Scr=LockPubScreen(ScrPubName))) return GTBERR_OPENSCREEN; + OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1; + + CalcAdaptivity(0,0); + if(!(VisualInfo=GetVisualInfo(Scr,TAG_DONE))) return GTBERR_VISUALINFO; + + if(!(DrawInfo=GetScreenDrawInfo(Scr))) return GTBERR_SCRDRAWINFO; + + return GTBERR_OK; +} + +void CloseDownScreen() +{ + if(DrawInfo) FreeScreenDrawInfo(Scr,DrawInfo); DrawInfo=NULL; + if(VisualInfo) FreeVisualInfo(VisualInfo); VisualInfo=NULL; + if(Scr) UnlockPubScreen(NULL,Scr); Scr=NULL; +} + +int HandleIDCMP_Prefs() +{ + struct IntuiMessage *m; + int (*func)(); + BOOL running = TRUE; + + while(m=GT_GetIMsg(PrefsWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&PrefsMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(PrefsMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Prefs(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func = ( void * )(( struct Gadget * )PrefsMsg.IAddress )->UserData; + running = func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_Prefs() +{ + UWORD OffX=PrefsWnd->BorderLeft, OffY=PrefsWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( PrefsWnd->RPort, AdaptX(8)+OffX, AdaptY(88)+OffY, AdaptX(257), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_Prefs() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&PrefsGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PrefsWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lc%PRi zM4@jokI;AMrad<)#aOYr=%VHca4GfIo z%CH?m8c^uE!yF0#xJoW2-C^@q#9|p_$#O^Z=|gU^2-1}{yh~Rf6CrPBR;Vg_{=%0;Tyi7K3=!lyu;L96#R)6%;m zpL8X~19heb>e5$Wt}z^&9oN{5-npiZ#?~s@(j*W37tcBOugcuhxX|+~T}}x5?P%`l$=d8L4zqa@rvFsF0%ci!cRP{4O-j)HUPW$Qv}@`W6fFmZx= zAs5v(DeVlux&OM&z232O!#seWqq*0EI26$VPd?d@E$*k=+X=Se+-D{n2DMZ}DO(pxR +#include + +#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer ) +#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt ) +#define TOOL_HORIZ 0 +#define TOOL_VERT 1 + +#define DRAG_ID MAKE_ID('D','R','A','G') + +#define COLORWHEEL_KIND 10000 +#define DATATYPE_KIND 10001 +#define GRADIENTSLIDER_KIND 10002 +#define PAGE_KIND 10003 +#define POPUPMENU_KIND 10004 +#define PROGRESS_KIND 10005 +#define TAPEDECK_KIND 10006 +#define TEXTFIELD_KIND 10007 +#define TREEVIEW_KIND 10009 +#define TOOLIMAGE_KIND 10008 + +#define VER_PROGRAMNAME "c.generator" +#define VER_AUTHOR "Tomasz Muszynski" +#define VER_VERSION 1 +#define VER_REVISION 0 +#define VER_SVER "\0$VER: "VER_PROGRAMNAME" 1.0 "__AMIGADATE__"" + +#define WA_CenterX (WA_Dummy + 0x100) +#define WA_CenterY (WA_Dummy + 0x101) +#define WA_RelRight (WA_Dummy + 0x102) +#define WA_RelBottom (WA_Dummy + 0x103) +#define WA_RelWidth (WA_Dummy + 0x104) +#define WA_RelHeight (WA_Dummy + 0x105) +#define WA_ToolDragBar (WA_Dummy + 0x106) +#define WA_FontAdaptive (WA_Dummy + 0x107) +#define GTBERR_OK 0 +#define GTBERR_LOCALE 12 +#define GTBERR_CREATEPOINTER 15 +#define GTBERR_CREATEIMAGE 16 +#define GTBERR_OPENSCREEN 200 +#define GTBERR_VISUALINFO 201 +#define GTBERR_SCRDRAWINFO 202 +#define GTBERR_CREATECONTEXT 300 +#define GTBERR_CREATEGADGET 301 +#define GTBERR_CREATEMENUS 302 +#define GTBERR_OPENWINDOW 303 + +extern TEXT ScrTitle[]; +extern TEXT ScrPubName[]; +extern struct Screen *Scr; +extern struct DrawInfo *DrawInfo; +extern APTR VisualInfo; +extern struct TextAttr *Font, Attr; + +extern struct Window *PrefsWnd; +extern struct Gadget *PrefsGList; +extern ULONG PrefsWTags[]; +extern struct IntuiMessage PrefsMsg; +extern struct Gadget *PrefsGadgets[]; +#define WND_Prefs 0 + +#define CNTWND_WINDOWS 2 + +extern ULONG PrefsGTags[]; +extern struct SmartBitMapIRGB ToolBarPalette[]; +#define CNTMN_MENUS 1 + + +#define CNT_Prefs 7 +#define GD_TEMPLATE 0 +#define GD_GUIFUNCS 1 +#define GD_LOCALIZE 2 +#define GD_SAVE 3 +#define GD_CANCEL 4 +#define GD_USE 5 +#define GD_SCREEN 6 + +/* Prototypes */ +int FN_TEMPLATE_Clicked(void); +int FN_GUIFUNCS_Clicked(void); +int FN_LOCALIZE_Clicked(void); +int FN_SAVE_Clicked(void); +int FN_CANCEL_Clicked(void); +int FN_USE_Clicked(void); +int FN_SCREEN_Clicked(void); + +int HandleIDCMP_Prefs(void); +void Render_Prefs(void); +int FN_CloseWindow_Prefs(void); +UWORD OpenWindow_Prefs(void); +void CloseWindow_Prefs(void); + +UWORD SetupScreen(UBYTE); +void CloseDownScreen(void); +UWORD InitApplication(STRPTR); +void FreeApplication(void); + +struct Gadget *CreateGadgetExA(UWORD,UWORD,UWORD,UWORD,struct Gadget *,struct TagItem *); +void DeleteGadgetExA(struct Gadget *,struct TagItem *); +struct Window *OpenWindowTagsEx(ULONG, ...); +void CloseWindowEx(struct Window *); +void CalcLeftTop(UWORD *,UWORD *,struct TagItem *); +void CalcRightBottom(UWORD *,UWORD *,struct TagItem *); +STRPTR GetCatString(APTR); +UWORD AdaptX(UWORD); +UWORD AdaptY(UWORD); +void CalcAdaptivity(UWORD,UWORD); + +#endif /* gadtools_H */ diff --git a/GadToolsBox/CGen/gadtools_cat.c b/GadToolsBox/CGen/gadtools_cat.c new file mode 100755 index 0000000..5dbd5e6 --- /dev/null +++ b/GadToolsBox/CGen/gadtools_cat.c @@ -0,0 +1,18 @@ +/* +** gadtools_cat.c Catalog File +*/ + +#include +#include"gadtools_cat.h" + +const struct FC_Type _MSG_SCREENTITLE_SCR = { 0, "" }; +const struct FC_Type _MSG_Prefs_WND = { 1, "Prefs: c.generator" }; +const struct FC_Type _MSG_TEMPLATE_GAD = { 2, "_Template:" }; +const struct FC_Type _MSG_GUIFUNCS_GAD = { 3, "_GUI functions:" }; +const struct FC_Type _MSG_LOCALIZE_GAD = { 4, "_Localize:" }; +const struct FC_Type _MSG_SAVE_GAD = { 5, "_Save" }; +const struct FC_Type _MSG_CANCEL_GAD = { 6, "_Cancel" }; +const struct FC_Type _MSG_USE_GAD = { 7, "_Use" }; +const struct FC_Type _MSG_SCREEN_GAD = { 8, "_Screen:" }; + + diff --git a/GadToolsBox/CGen/gadtools_cat.h b/GadToolsBox/CGen/gadtools_cat.h new file mode 100755 index 0000000..d79e937 --- /dev/null +++ b/GadToolsBox/CGen/gadtools_cat.h @@ -0,0 +1,35 @@ +#ifndef gadtools_cat_H +#define gadtools_cat_H +/* +** gadtools_cat.h Catalog Header File +*/ + +#include + +struct FC_Type +{ + LONG ID; + STRPTR Str; +}; + +extern const struct FC_Type _MSG_SCREENTITLE_SCR; +#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR) +extern const struct FC_Type _MSG_Prefs_WND; +#define MSG_Prefs_WND ((APTR) &_MSG_Prefs_WND) +extern const struct FC_Type _MSG_TEMPLATE_GAD; +#define MSG_TEMPLATE_GAD ((APTR) &_MSG_TEMPLATE_GAD) +extern const struct FC_Type _MSG_GUIFUNCS_GAD; +#define MSG_GUIFUNCS_GAD ((APTR) &_MSG_GUIFUNCS_GAD) +extern const struct FC_Type _MSG_LOCALIZE_GAD; +#define MSG_LOCALIZE_GAD ((APTR) &_MSG_LOCALIZE_GAD) +extern const struct FC_Type _MSG_SAVE_GAD; +#define MSG_SAVE_GAD ((APTR) &_MSG_SAVE_GAD) +extern const struct FC_Type _MSG_CANCEL_GAD; +#define MSG_CANCEL_GAD ((APTR) &_MSG_CANCEL_GAD) +extern const struct FC_Type _MSG_USE_GAD; +#define MSG_USE_GAD ((APTR) &_MSG_USE_GAD) +extern const struct FC_Type _MSG_SCREEN_GAD; +#define MSG_SCREEN_GAD ((APTR) &_MSG_SCREEN_GAD) + + +#endif /* gadtools_cat_H */ diff --git a/GadToolsBox/CGen/gadtools_img.c b/GadToolsBox/CGen/gadtools_img.c new file mode 100755 index 0000000..e159dbc --- /dev/null +++ b/GadToolsBox/CGen/gadtools_img.c @@ -0,0 +1,9 @@ +/* +** gadtools_img.c Images File +*/ + +#include +#include +#include"gadtools.h" + + diff --git a/GadToolsBox/CGen/main.c b/GadToolsBox/CGen/main.c new file mode 100755 index 0000000..3bdcdc8 --- /dev/null +++ b/GadToolsBox/CGen/main.c @@ -0,0 +1,1368 @@ +/* +** C Source code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" +#include"gadtools.h" +#include"gadtools_cat.h" + +#define Leave(x) { printf(x); goto end; } + +/* +** Protos +*/ + +void SavePrefs(STRPTR); +void LoadPrefs(STRPTR); +BOOL GenerateSourceCode(STRPTR); +void GenerateMainCode(BPTR); +void GenerateHeader(BPTR); +void GenerateImages(BPTR); +void GenerateTemplate(BPTR); +void GenerateCatalogSource(BPTR); +void GenerateCatalogHeader(BPTR); +void GenerateCatalogDescription(BPTR); +void GenerateCatalogTranslation(BPTR); +BOOL CheckPlugIn(ULONG); +BOOL CheckBOOPSIWindow(piObject *); +BOOL CheckDataTypeWindow(piObject *); +BOOL CheckGadToolsWindow(piObject *); +BOOL CheckPlugInWindow(piObject *,ULONG); +BOOL CheckAppWindow(void); +BOOL CheckToolBarWindows(void); +BOOL CheckToolBarWindow(piObject *); +BOOL CheckProjectWindow(void); + +void GADGET_GenerateStruct(BPTR,piObject *); +void GADGET_GenerateTags(BPTR,piObject *); +void GADGET_GenerateOpenLib(BPTR,ULONG); +void GADGET_GenerateCloseLib(BPTR,ULONG); +void GADGET_GenerateProtos(BPTR,piObject *); +void GADGET_GenerateTemplate(BPTR,piObject *); +void GADGET_GenerateCatalogSource(BPTR,piObject *,LONG *); +void GADGET_GenerateCatalogHeader(BPTR,piObject *); +void GADGET_GenerateCatalogDescription(BPTR,piObject *); +void GADGET_GenerateCatalogTranslation(BPTR,piObject *); + +void FUNC_GenerateWindowTags(BPTR,piObject *); +void FUNC_GenerateApplication(BPTR); +void FUNC_GenerateScreen(BPTR); +void FUNC_GenerateWindow(BPTR,piObject *); +void FUNC_GenerateErrors(BPTR); +void FUNC_GenerateTemplate(BPTR,piObject *); +void FUNC_GenerateCatalogUpdate(BPTR); + +void MENU_GenerateProtos(BPTR,piObject *); +void MENU_GenerateDefs(BPTR,piObject *); +void MENU_GenerateTemplate(BPTR,piObject *); +void MENU_GenerateCatalogSource(BPTR,piObject *,LONG *); +void MENU_GenerateCatalogHeader(BPTR,piObject *); +void MENU_GenerateCatalogDescription(BPTR,piObject *); +void MENU_GenerateCatalogTranslation(BPTR,piObject *); + +#define SetProgress(prg) SetGadgetAttrs(GTBSem->gs_Progress,GTBSem->gs_Window,NULL,PROG_CurVal,prg,TAG_DONE) +#define IFF_Error(num) \ + { \ + printf("IFFError #%d",num); \ + goto skip; \ + } + +/* +** Variables +*/ + +struct GTBSemaphore *GTBSem; +struct GUI *GUI; +extern struct Screen *Scr; +STRPTR BaseName; +BOOL OPT_ARexx,OPT_Template,OPT_Screen,OPT_UseLocale,OPT_GUIFuncs; +struct SavePrefs SP; + +#define TEMPLATE "FILE/K,SEMAPHORE/A,SETPREFS/S" +#define ARG_FILE 0 +#define ARG_SEMAPHORE 1 +#define ARG_SETPREFS 2 +#define ARG_COUNT 3 + +char DEF_FILE[]="\0"; +char DEF_SEMAPHORE[]="\0"; +ULONG DEF_SETPREFS=FALSE; + +BOOL setprefs=FALSE; +TEXT fn[256]; +TEXT semaphore[256]; + + +/* +** Main Code +*/ + +void main(int argc, char *argv[]) +{ + struct RDArgs *rdargs; + long *(opts[ARG_COUNT]); + int running=1; + + if(argc!=0) + { + opts[ARG_FILE]=(long *)DEF_FILE; + opts[ARG_SEMAPHORE]=(long *)DEF_SEMAPHORE; + opts[ARG_SETPREFS]=(long *)DEF_SETPREFS; + + if(rdargs=ReadArgs(TEMPLATE,(long *) opts, NULL)) + { + strcpy(fn,(char *)opts[ARG_FILE]); + strcpy(semaphore,(char *)opts[ARG_SEMAPHORE]); + setprefs=(ULONG)opts[ARG_SETPREFS]; + + FreeArgs(rdargs); + } + else + { + PrintFault(IoErr(),argv[0]); + exit(IoErr()); + } + } + + if(GTBSem=(struct GTBSemaphore *)FindSemaphore(semaphore)) ObtainSemaphoreShared(>BSem->gs_Semaphore); else Leave("GadToolsBox 3 is not running!\n"); + GUI=GTBSem->gs_GUI; + strcpy(ScrPubName,GUI->gui_PubScreenName); + + LoadPrefs("ENV:GadToolsBox/c.generator.prefs"); + + if(setprefs) + { + if(!InitApplication(NULL)) + { + if(!SetupScreen(0)) + { + if(!OpenWindow_Prefs()) + { + SetCheckMark(PrefsWnd,PrefsGadgets[GD_TEMPLATE],SP.spr_Flags&MYPR_Template); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_SCREEN],SP.spr_Flags&MYPR_Screen); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_LOCALIZE],SP.spr_Flags&MYPR_Localize); + SetCheckMark(PrefsWnd,PrefsGadgets[GD_GUIFUNCS],SP.spr_Flags&MYPR_GUIFuncs); + while(running==1 || running==2) + { + Wait(1L<UserPort->mp_SigBit); + running=HandleIDCMP_Prefs(); + } + CloseWindow_Prefs(); + } + CloseDownScreen(); + } + FreeApplication(); + } + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); + exit(0); + } + + if(!(Scr=LockPubScreen(GUI->gui_PubScreenName))) Leave("Can't LockPubScreen\n"); + OPT_Template=SP.spr_Flags&MYPR_Template; + OPT_Screen=SP.spr_Flags&MYPR_Screen; + OPT_UseLocale=SP.spr_Flags&MYPR_Localize; + OPT_GUIFuncs=SP.spr_Flags&MYPR_GUIFuncs; + if(!IsListEmpty(((struct List *)&GUI->gui_List_Window))) { OPT_Screen=TRUE; OPT_GUIFuncs=TRUE; } + GenerateSourceCode(fn); +end: + if(Scr) UnlockPubScreen(NULL,Scr); + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); +} + +BOOL CheckPlugIn(ULONG id) +{ + piObject *wo,*go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==id) return TRUE; + } + } + return FALSE; +} + +BOOL CheckBOOPSIWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==COLORWHEEL_ID || + ng->ng_PlugInID==GRADIENTSLIDER_ID || + ng->ng_PlugInID==PAGE_ID || + ng->ng_PlugInID==POPUPMENU_ID || + ng->ng_PlugInID==PROGRESS_ID || + ng->ng_PlugInID==TAPEDECK_ID || + ng->ng_PlugInID==TEXTFIELD_ID || + ng->ng_PlugInID==TREEVIEW_ID) return TRUE; + } + return FALSE; +} + +BOOL CheckDataTypeWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==DATATYPE_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckPlugInWindow(piObject *wo,ULONG id) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==id ) return TRUE; + } + return FALSE; +} + +BOOL CheckGadToolsWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID || + ng->ng_PlugInID==CHECKBOX_ID || + ng->ng_PlugInID==CYCLE_ID || + ng->ng_PlugInID==INTEGER_ID || + ng->ng_PlugInID==LISTVIEW_ID || + ng->ng_PlugInID==NUMBER_ID || + ng->ng_PlugInID==MX_ID || + ng->ng_PlugInID==PALETTE_ID || + ng->ng_PlugInID==SCROLLER_ID || + ng->ng_PlugInID==SLIDER_ID || + ng->ng_PlugInID==STRING_ID || + ng->ng_PlugInID==TEXT_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckToolBarWindows() +{ + piObject *go,*wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + } + return FALSE; +} + +BOOL CheckToolBarWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + return FALSE; +} + +BOOL CheckAppWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_AppWindow) return TRUE; + } + return FALSE; +} + +BOOL CheckProjectWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_Project) return TRUE; + } + return FALSE; +} + +BOOL GenerateSourceCode(STRPTR basename) +{ + TEXT fname[108]; + BPTR file=NULL; + struct Node_Version *nv; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + BaseName=FilePart(basename); + + sprintf(fname,"%s.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateMainCode(file); + Close(file); + } + + sprintf(fname,"%s.h",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateHeader(file); + Close(file); + } + + if(!IsListEmpty(List(&GUI->gui_List_Image))) + { + sprintf(fname,"%s_img.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateImages(file); + Close(file); + } + } + + if(OPT_Template) + { + sprintf(fname,"%s_temp.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateTemplate(file); + Close(file); + } + SetProgress(85L); + } + + sprintf(fname,"%s_cat.c",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogSource(file); + Close(file); + } + + sprintf(fname,"%s_cat.h",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogHeader(file); + Close(file); + } + + SetProgress(90L); + + if(OPT_UseLocale) + { + strcpy(fname,basename); + sprintf(FilePart(fname),"%s.cd",nv->nv_ProgramName); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogDescription(file); + Close(file); + } + + SetProgress(95L); + + strcpy(fname,basename); + sprintf(FilePart(fname),"%s.ct",nv->nv_ProgramName); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateCatalogTranslation(file); + Close(file); + } + } + + SetProgress(100L); + + return TRUE; +} + +void GenerateMainCode(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Menu *nm; + struct Node_Screen *ns; + struct Node_Version *nv; + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + SetProgress(0L); + +/* Header */ + FPrintf(handle,"/*" \ + "\n** Source code generated by GadToolsBox %ld.%ld (c) by Tomasz Muszynski\n" \ + "** GUI designed by: %s\n" \ + "*/\n\n",GUI->gui_Version,GUI->gui_Revision,nv->nv_Author); + + SetProgress(2L); + +/* Includes */ + FPuts(handle,"#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n" \ + "#include\n"); + FPuts(handle,"#include\n"); + if(OPT_UseLocale) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + if(CheckAppWindow()) FPuts(handle,"#include\n"); + if(CheckToolBarWindows()) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(TEXTFIELD_ID)){ FPuts(handle,"#include\n"); + FPuts(handle,"#include\n");} + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#include\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#include\n"); + FPuts(handle,"#include\n"); + FPrintf(handle,"#include\"%s.h\"\n",BaseName); + FPrintf(handle,"#include\"%s_cat.h\"\n",BaseName); + FPuts(handle,"\n"); + + SetProgress(5L); + + FPuts(handle,"TEXT VER_STRING[]=VER_SVER;\n\n"); + + SetProgress(10L); + +/* Global variables - available only if screen generation is on */ + if(OPT_Screen) + { + FPuts(handle,"struct Screen *Scr=NULL;\n" \ + "struct DrawInfo *DrawInfo=NULL;\n" \ + "APTR VisualInfo=NULL;\n"); + FPuts(handle,"TEXT ScrTitle[256];\n"); + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPuts(handle,"TEXT ScrPubName[30];\n"); + if(ns->ns_Type!=TYPE_WORKBENCH) + { + FPrintf(handle,"UWORD ScrWidth=%ld;\n",ns->ns_Width); + FPrintf(handle,"UWORD ScrHeight=%ld;\n",ns->ns_Height); + FPrintf(handle,"UWORD ScrDepth=%ld;\n",ns->ns_Depth); + GetFlag(ns->ns_MyFlags,MYSC_DefaultID) FPrintf(handle,"ULONG ScrDisplayID=0x0;\n",ns->ns_DisplayID); + else FPrintf(handle,"ULONG ScrDisplayID=0x%lx;\n",ns->ns_DisplayID); + } + } + if(OPT_UseLocale) + { + FPuts(handle,"struct Catalog *Catalog=NULL;\nstruct Locale *Locale=NULL;\n"); + } + + SetProgress(15L); + +/* Gadget library bases */ + if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"struct Library *ColorWheelBase=NULL;\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"struct Library *GradientSliderBase=NULL;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"struct Library *PageBase=NULL;\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"struct Library *ProgressBase=NULL;\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"struct Library *TapeDeckBase=NULL;\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"struct Library *TextFieldBase=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"struct Library *ListViewBase=NULL;\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"Class *PageClass=NULL;\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"Class *PopUpMenuClass=NULL;\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"Class *ProgressClass=NULL;\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"Class *TextFieldClass=NULL;\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"Class *ListViewClass=NULL;\n"); + if(CheckToolBarWindows()) + { + FPuts(handle,"struct Library *SmartBitMapBase=NULL;\n"); + FPuts(handle,"Class *SmartBitMapClass=NULL;\n"); + } + +/* Message ports for App and Project windows */ + if(CheckAppWindow()) FPuts(handle,"struct MsgPort *AppMsgPort=NULL;\n"); + if(CheckProjectWindow()) FPuts(handle,"struct MsgPort *ProjectMsgPort=NULL;\n"); + if(OPT_GUIFuncs) FPuts(handle,"struct TextAttr *Font, Attr;\nUWORD FontX, FontY;\n"); + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + FPuts(handle,"BOOL GadgetLocaleDone[CNTWND_WINDOWS];\n"); + FPuts(handle,"BOOL WindowLocaleDone[CNTWND_WINDOWS];\n"); + FPuts(handle,"BOOL MenuLocaleDone[CNTMN_MENUS];\n"); + } + FPuts(handle,"\n"); + + SetProgress(20L); + +/* Menu definitions */ + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"struct Menu *%sMenus=NULL;\n",nm->nm_Label); + } + } + + SetProgress(25L); + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + MENU_GenerateDefs(handle,mo); + } + } + + SetProgress(30L); + +/* Windows releated definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + + FPrintf(handle,"\n/* %s Window structures */\n",nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"struct Window *%sWnd=NULL;\n",nw->nw_Label); + GetFlag(nw->nw_MyFlags,MYWA_Project) FPrintf(handle,"APTR %sWApp;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"struct Gadget *%sGList=NULL;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"struct Gadget *%sGadgets[CNT_%s];\n",nw->nw_Label,nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"struct IntuiMessage %sMsg;\n",nw->nw_Label); + } + FPuts(handle,"\n"); + + SetProgress(35L); + +/* Windows definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { + FPrintf(handle,"\n/* %s Window tags */\n",nw->nw_Label); + FPrintf(handle,"ULONG %sWTags[]=\n{\n",nw->nw_Label); + FUNC_GenerateWindowTags(handle,wo); + FPuts(handle,"TAG_DONE\n};\n"); + } + } + FPuts(handle,"\n"); + + SetProgress(40L); + +/* Gadget realeted structures (lists, tables, etc) */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"/* %s Gadget structures */\n",nw->nw_Label); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateStruct(handle,go); + } + FPuts(handle,"\n"); + } + + SetProgress(45L); + +/* Gadget definitions */ + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPrintf(handle,"/* %s Gadget tags */\n",nw->nw_Label); + FPrintf(handle,"ULONG %sGTags[]=\n{\n",nw->nw_Label); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateTags(handle,go); + Seek(handle,-2,OFFSET_CURRENT); + FPuts(handle,"\n};\n"); + FPuts(handle,"\n"); + } + } + + SetProgress(50L); + +/* Function definitions */ + FUNC_GenerateApplication(handle); + FUNC_GenerateCatalogUpdate(handle); + FUNC_GenerateScreen(handle); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + FUNC_GenerateWindow(handle,wo); +} + +void GenerateImages(BPTR handle) +{ + piObject *io; + struct Node_Image *ni; + ULONG a,b,*data; + UBYTE *datab; + + FPrintf(handle,"/*\n** %s_img.c Images File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\n#include\n#include\"%s.h\"\n\n",BaseName); + + if(CheckToolBarWindows()) + { + FPuts(handle,"#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24)))\n\n"); + FPrintf(handle,"struct SmartBitMapIRGB ToolBarPalette[]=" \ + "{\n" \ + " { 0,Bit32(189),Bit32(189),Bit32(189)}, // Background\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32( 0)}, // Black\n" \ + " {-1,Bit32(255),Bit32(255),Bit32(255)}, // White\n" \ + " {-1,Bit32(123),Bit32( 0),Bit32( 0)}, // Red 50%\n" \ + " {-1,Bit32( 0),Bit32(123),Bit32( 0)}, // Green 50%\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32(123)}, // Blue 50%\n" \ + " {-1,Bit32(123),Bit32(123),Bit32( 0)}, // Yellow 50%\n" \ + " {-1,Bit32( 0),Bit32(123),Bit32(123)}, // Cyan 50%\n" \ + " {-1,Bit32(123),Bit32( 0),Bit32(123)}, // Magenta 50%\n" \ + " {-1,Bit32(255),Bit32( 0),Bit32( 0)}, // Red 100%\n" \ + " {-1,Bit32( 0),Bit32(255),Bit32( 0)}, // Green 100%\n" \ + " {-1,Bit32( 0),Bit32( 0),Bit32(255)}, // Blue 100%\n" \ + " {-1,Bit32(255),Bit32(255),Bit32( 0)}, // Yellow 100%\n" \ + " {-1,Bit32( 0),Bit32(255),Bit32(255)}, // Cyan 100%\n" \ + " {-1,Bit32(255),Bit32( 0),Bit32(255)}, // Magenta 100%\n" \ + " {-1,Bit32(123),Bit32(123),Bit32(123)} // Dark Gray\n" \ + "};\n\n"); + } + +/* Image definitions */ + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + FPrintf(handle,"struct SmartBitMapIRGB %sPalette[]=\n{\n",ni->ni_Label); + for(a=0;a<(2<<(ni->ni_Depth-1));a++) + FPrintf(handle," {-1, Bit32(%3ld), Bit32(%3ld), Bit32(%3ld)},\n",Bit8(ni->ni_CT[a].cp_R),Bit8(ni->ni_CT[a].cp_G),Bit8(ni->ni_CT[a].cp_B)); + + FPrintf(handle,"};\n\nUBYTE __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;ani_Depth;a++) + { + datab=(UBYTE *)ni->ni_BitMap->Planes[a]; + for(b=0;b<(ni->ni_BitMap->BytesPerRow*ni->ni_BitMap->Rows);b++) + { + FPrintf(handle," 0x%lx,",datab[b]); + if(((b+1)%32)==0) FPuts(handle,"\n"); + } + FPrintf(handle,"\n"); + } + + FPrintf(handle,"};\n\nObject *%sImg=NULL;\nstruct BitMap %sBitMap = { %ld, %ld, NULL, %ld, NULL, {",ni->ni_Label,ni->ni_Label,ni->ni_BitMap->BytesPerRow,ni->ni_BitMap->Rows,ni->ni_BitMap->Depth); + for(a=0;ani_Depth;a++) + { + FPrintf(handle,"(PLANEPTR)&%sPlanes[%ld],",ni->ni_Label,a*(ni->ni_BitMap->BytesPerRow*ni->ni_BitMap->Rows)); + } + Seek(handle,-1,OFFSET_CURRENT); + FPuts(handle,"} };\n\n"); + break; + case IMTYPE_POINTER: + FPrintf(handle,"ULONG __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;a<2;a++) + { + data=(ULONG *)ni->ni_BitMap->Planes[a]; + for(b=0;b<32;b+=8) FPrintf(handle," 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx, 0x%lx,\n",data[b],data[b+1],data[b+2],data[b+3],data[b+4],data[b+5],data[b+6],data[b+7]); + } + FPrintf(handle,"};\nObject *%sPtr=NULL;\nstruct BitMap %sBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&%sPlanes[0],(PLANEPTR)&%sPlanes[32]} };\n\n",ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle,"UBYTE __chip %sPlanes[] = {\n",ni->ni_Label); + for(a=0;a<4;a++) + { + datab=(UBYTE *)ni->ni_BitMap->Planes[a]; + for(b=0;b<(32/8)*20;b++) FPrintf(handle," 0x%lx,",datab[b]); + FPrintf(handle,"\n"); + } + FPrintf(handle,"};\nObject *%sTbr=NULL;\nstruct BitMap %sBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&%sPlanes[0],(PLANEPTR)&%sPlanes[80],(PLANEPTR)&%sPlanes[160],(PLANEPTR)&%sPlanes[240]} };\n\n",ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + } + } + FPuts(handle,"\n"); +} + +void GenerateHeader(BPTR handle) +{ + piObject *wo,*go,*mo,*io; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node_Menu *nm; + struct Node_Screen *ns; + struct Node_Version *nv; + struct Node_Image *ni; + ULONG cnt; + + SetProgress(55L); + + ns=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + FPrintf(handle,"#ifndef %s_H\n",BaseName); + FPrintf(handle,"#define %s_H\n",BaseName); + FPrintf(handle,"/*\n** %s.h Header File\n*/\n\n",BaseName); + + if(!IsListEmpty(List(&GUI->gui_List_Image))) + FPuts(handle,"#include\n\n"); + FPuts(handle,"#include\n#include\n\n"); + + FPuts(handle,"#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer )\n"); + FPuts(handle,"#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt )\n"); + + FPuts(handle,"#define TOOL_HORIZ 0\n" \ + "#define TOOL_VERT 1\n\n"); + + FPuts(handle,"#define DRAG_ID MAKE_ID('D','R','A','G')\n\n"); + +/* if(CheckPlugIn(COLORWHEEL_ID)) FPuts(handle,"#define COLORWHEEL_KIND 10000\n"); + if(CheckPlugIn(DATATYPE_ID)) FPuts(handle,"#define DATATYPE_KIND 10001\n"); + if(CheckPlugIn(GRADIENTSLIDER_ID)) FPuts(handle,"#define GRADIENTSLIDER_KIND 10002\n"); + if(CheckPlugIn(PAGE_ID)) FPuts(handle,"#define PAGE_KIND 10003\n"); + if(CheckPlugIn(POPUPMENU_ID)) FPuts(handle,"#define POPUPMENU_KIND 10004\n"); + if(CheckPlugIn(PROGRESS_ID)) FPuts(handle,"#define PROGRESS_KIND 10005\n"); + if(CheckPlugIn(TAPEDECK_ID)) FPuts(handle,"#define TAPEDECK_KIND 10006\n"); + if(CheckPlugIn(TEXTFIELD_ID)) FPuts(handle,"#define TEXTFIELD_KIND 10007\n"); + if(CheckPlugIn(TREEVIEW_ID)) FPuts(handle,"#define TREEVIEW_KIND 10009\n"); +*/ + FPuts(handle,"#define COLORWHEEL_KIND 10000\n"); + FPuts(handle,"#define DATATYPE_KIND 10001\n"); + FPuts(handle,"#define GRADIENTSLIDER_KIND 10002\n"); + FPuts(handle,"#define PAGE_KIND 10003\n"); + FPuts(handle,"#define POPUPMENU_KIND 10004\n"); + FPuts(handle,"#define PROGRESS_KIND 10005\n"); + FPuts(handle,"#define TAPEDECK_KIND 10006\n"); + FPuts(handle,"#define TEXTFIELD_KIND 10007\n"); + FPuts(handle,"#define TOOLIMAGE_KIND 10008\n\n"); + FPuts(handle,"#define TREEVIEW_KIND 10009\n"); + + FPrintf(handle,"#define VER_PROGRAMNAME \"%s\"\n",nv->nv_ProgramName); + FPrintf(handle,"#define VER_AUTHOR \"%s\"\n",nv->nv_Author); + FPrintf(handle,"#define VER_VERSION %ld\n",nv->nv_Version); + FPrintf(handle,"#define VER_REVISION %ld\n",nv->nv_Revision); + FPrintf(handle,"#define VER_SVER \"\\0$VER: \"VER_PROGRAMNAME\" %ld.%ld \"__AMIGADATE__\"\"\n\n",nv->nv_Version,nv->nv_Revision); + + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + FPuts(handle,"#define WA_CenterX (WA_Dummy + 0x100)\n"); + FPuts(handle,"#define WA_CenterY (WA_Dummy + 0x101)\n"); + FPuts(handle,"#define WA_RelRight (WA_Dummy + 0x102)\n"); + FPuts(handle,"#define WA_RelBottom (WA_Dummy + 0x103)\n"); + FPuts(handle,"#define WA_RelWidth (WA_Dummy + 0x104)\n"); + FPuts(handle,"#define WA_RelHeight (WA_Dummy + 0x105)\n"); + FPuts(handle,"#define WA_ToolDragBar (WA_Dummy + 0x106)\n"); + FPuts(handle,"#define WA_FontAdaptive (WA_Dummy + 0x107)\n"); + } + + SetProgress(60L); + + FUNC_GenerateErrors(handle); + + SetProgress(64L); + + if(OPT_Screen) + { + FPuts(handle,"extern TEXT ScrTitle[];\n"); + if(ns->ns_Type!=TYPE_CUSTOMSCREEN) FPuts(handle,"extern TEXT ScrPubName[];\n"); + if(ns->ns_Type!=TYPE_WORKBENCH) + { + FPuts(handle,"extern UWORD ScrWidth,ScrHeight,ScrDepth;\n"); + FPuts(handle,"extern ULONG ScrDisplayID;\n"); + } + FPuts(handle,"extern struct Screen *Scr;\n" \ + "extern struct DrawInfo *DrawInfo;\n" \ + "extern APTR VisualInfo;\n"); + } + if(CheckAppWindow()) FPuts(handle,"extern struct MsgPort *AppMsgPort;\n"); + if(CheckProjectWindow()) FPuts(handle,"extern struct MsgPort *ProjectMsgPort;\n"); + if(OPT_GUIFuncs) FPuts(handle,"extern struct TextAttr *Font, Attr;\n"); + FPuts(handle,"\n"); + + SetProgress(66L); + +/* Windows releated definitions */ + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + for(cnt=0,wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo),cnt++) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + + if(nw->nw_PageGadget==0) FPrintf(handle,"extern struct Window *%sWnd;\n",nw->nw_Label); + GetFlag(nw->nw_MyFlags,MYWA_Project) FPrintf(handle,"extern APTR %sWApp;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"extern struct Gadget *%sGList;\n",nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"extern ULONG %sWTags[];\n",nw->nw_Label); + if(nw->nw_PageGadget==0) FPrintf(handle,"extern struct IntuiMessage %sMsg;\n",nw->nw_Label); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) FPrintf(handle,"extern struct Gadget *%sGadgets[];\n",nw->nw_Label); + FPrintf(handle,"#define WND_%s %ld\n",nw->nw_Label,cnt); + } + FPuts(handle,"\n"); + FPrintf(handle,"#define CNTWND_WINDOWS %ld\n\n",cnt+1); + } + + SetProgress(68L); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + FPrintf(handle,"extern ULONG %sGTags[];\n",nw->nw_Label); + } + + SetProgress(70L); + + FPuts(handle,"extern struct SmartBitMapIRGB ToolBarPalette[];"); + for(io=(piObject *)GetHead(&GUI->gui_List_Image);GetSucc(io);io=(piObject *)GetSucc(io)) + { + ni=(struct Node_Image *)OBJECT_DATA(io); + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + FPrintf(handle,"extern Object *%sImg;\nextern struct BitMap %sBitMap;\nextern struct SmartBitMapIRGB %sPalette[];\n",ni->ni_Label,ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_POINTER: + FPrintf(handle,"extern Object *%sPtr;\nextern struct BitMap %sBitMap;\n",ni->ni_Label,ni->ni_Label); + break; + case IMTYPE_TOOLBAR: + FPrintf(handle,"extern Object *%sTbr;\nextern struct BitMap %sBitMap;\n",ni->ni_Label,ni->ni_Label); + break; + } + } + FPuts(handle,"\n"); + + SetProgress(72L); + +// if(!IsListEmpty(List(&GUI->gui_List_Menu))) +// { + for(cnt=0,mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo),cnt++) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"extern struct Menu *%sMenus;\n",nm->nm_Label); + FPrintf(handle,"extern struct NewMenu %sNewMenu[];\n",nm->nm_Label); + FPrintf(handle,"#define MN_%s %ld\n",nm->nm_Label,cnt); + } + FPrintf(handle,"#define CNTMN_MENUS %ld\n\n",cnt+1); +// } + FPuts(handle,"\n"); + + SetProgress(75L); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(cnt=0,go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++); + if(cnt>0) FPrintf(handle,"#define CNT_%s %ld\n",nw->nw_Label,cnt); + for(cnt=0,go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + FPrintf(handle,"#define GD_%s %ld\n",ng->ng_Label,cnt); + } + FPuts(handle,"\n"); + } + + SetProgress(78L); + + FPuts(handle,"/* Prototypes */\n"); + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + GADGET_GenerateProtos(handle,go); + } + FPuts(handle,"\n"); + } + + SetProgress(80L); + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + MENU_GenerateProtos(handle,mo); + } + FPuts(handle,"\n"); + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) + { + FPrintf(handle,"int HandleIDCMP_%s(void);\n",nw->nw_Label); + FPrintf(handle,"void Render_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUVERIFY) + FPrintf(handle,"int FN_MenuVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_SIZEVERIFY) + FPrintf(handle,"int FN_SizeVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQVERIFY) + FPrintf(handle,"int FN_ReqVerify_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQSET) + FPrintf(handle,"int FN_ReqSet_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_REQCLEAR) + FPrintf(handle,"int FN_ReqClear_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWSIZE) + FPrintf(handle,"int FN_NewSize_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_NEWPREFS) + FPrintf(handle,"int FN_NewPrefs_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MENUHELP) + FPrintf(handle,"int FN_MenuHelp_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_GADGETHELP) + FPrintf(handle,"int FN_GadgetHelp)%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEMOVE) + FPrintf(handle,"int FN_MouseMove_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_MOUSEBUTTONS) + FPrintf(handle,"int FN_MouseButtons_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_RAWKEY) + FPrintf(handle,"int FN_RawKey_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_VANILLAKEY) + FPrintf(handle,"int FN_VanillaKey_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INTUITICKS) + FPrintf(handle,"int FN_IntuiTicks_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_IDCMPUPDATE) + FPrintf(handle,"int FN_IDCMPUpdate_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CHANGEWINDOW) + FPrintf(handle,"int FN_ChangeWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_CLOSEWINDOW) + FPrintf(handle,"int FN_CloseWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_ACTIVEWINDOW) + FPrintf(handle,"int FN_ActiveWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_INACTIVEWINDOW) + FPrintf(handle,"int FN_InActiveWindow_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKREMOVED) + FPrintf(handle,"int FN_DiskRemoved_%s(void);\n",nw->nw_Label); + GetFlag(nw->nw_IDCMP,IDCMP_DISKINSERTED) + FPrintf(handle,"int FN_DiskInserted_%s(void);\n",nw->nw_Label); + } + FPrintf(handle,"UWORD OpenWindow_%s(void);\n",nw->nw_Label); + FPrintf(handle,"void CloseWindow_%s(void);\n",nw->nw_Label); + FPuts(handle,"\n"); + } + + FPuts(handle,"UWORD SetupScreen(UBYTE);\nvoid CloseDownScreen(void);\n"); + if(OPT_UseLocale) FPuts(handle,"UWORD InitApplication(STRPTR);\n"); + else FPuts(handle,"UWORD InitApplication(void);\n"); + FPuts(handle,"void FreeApplication(void);\n\n"); + if(CheckProjectWindow()) FPuts(handle,"void CloseWindowSafely(struct Window *);\nvoid StripIntuiMessages(struct MsgPort *,struct Window *);\n"); + if(OPT_GUIFuncs) + { + FPuts(handle,"struct Gadget *CreateGadgetExA(UWORD,UWORD,UWORD,UWORD,struct Gadget *,struct TagItem *);\n"); + FPuts(handle,"void DeleteGadgetExA(struct Gadget *,struct TagItem *);\n"); + FPuts(handle,"struct Window *OpenWindowTagsEx(ULONG, ...);\n"); + FPuts(handle,"void CloseWindowEx(struct Window *);\n"); + FPuts(handle,"void CalcLeftTop(UWORD *,UWORD *,struct TagItem *);\n"); + FPuts(handle,"void CalcRightBottom(UWORD *,UWORD *,struct TagItem *);\n"); + FPuts(handle,"UWORD AdaptX(UWORD);\n"); + FPuts(handle,"UWORD AdaptY(UWORD);\n"); + FPuts(handle,"void CalcAdaptivity(UWORD,UWORD);\n"); + } + FPuts(handle,"STRPTR GetCatString(APTR);\n"); + + FPrintf(handle,"\n#endif /* %s_H */\n",BaseName); +} + +void GenerateTemplate(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + + FPrintf(handle,"/*\n** %s_temp.c Template File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\"%s.h\"\n\n",BaseName); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + FUNC_GenerateTemplate(handle,wo); + } + FPuts(handle,"\n"); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + GADGET_GenerateTemplate(handle,go); + } + FPuts(handle,"\n"); + } + + if(!IsListEmpty(List(&GUI->gui_List_Menu))) + { + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + MENU_GenerateTemplate(handle,mo); + } + FPuts(handle,"\n"); + } +} + +void GenerateCatalogSource(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + LONG a; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"/*\n** %s_cat.c Catalog File\n*/\n\n",BaseName); + + FPrintf(handle,"#include\n"); + FPrintf(handle,"#include\"%s_cat.h\"\n\n",BaseName); + + a=0; + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogSource(handle,mo,&a); + + if(OPT_Screen) + { + FPrintf(handle,"const struct FC_Type _MSG_SCREENTITLE_SCR = { %ld, \"%s\" };\n",a,nsc->ns_Title); + a++; + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_WND = { %ld, \"%s\" };\n",nw->nw_Label,a,nw->nw_WindowTitle); + a++; + } + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) + { + FPrintf(handle,"const struct FC_Type _MSG_%s_ST_WND = { %ld, \"%s\" };\n",nw->nw_Label,a,nw->nw_ScreenTitle); + a++; + } + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogSource(handle,go,&a); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd)),a++) + { + FPrintf(handle,"const struct FC_Type _MSG_%s = { %ld, \"%s\" };\n",nd->ns_Label,a,nd->ns_String); + } + FPuts(handle,"\n\n"); +} + +void GenerateCatalogHeader(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"#ifndef %s_cat_H\n",BaseName); + FPrintf(handle,"#define %s_cat_H\n",BaseName); + FPrintf(handle,"/*\n** %s_cat.h Catalog Header File\n*/\n\n",BaseName); + + FPuts(handle,"#include\n\n"); + + FPuts(handle,"struct FC_Type\n{\n LONG ID;\n STRPTR Str;\n};\n\n"); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogHeader(handle,mo); + + if(OPT_Screen) + { + FPrintf(handle,"extern const struct FC_Type _MSG_SCREENTITLE_SCR;\n"); + FPrintf(handle,"#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR)\n",nsc->ns_Title); + } + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_WND;\n",nw->nw_Label); + FPrintf(handle,"#define MSG_%s_WND ((APTR) &_MSG_%s_WND)\n",nw->nw_Label,nw->nw_Label); + } + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s_ST_WND;\n",nw->nw_Label); + FPrintf(handle,"#define MSG_%s_ST_WND ((APTR) &_MSG_%s_ST_WND)\n",nw->nw_Label,nw->nw_Label); + } + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + GADGET_GenerateCatalogHeader(handle,go); + } + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s;\n",nd->ns_Label); + FPrintf(handle,"#define MSG_%s ((APTR) &_MSG_%s)\n",nd->ns_Label,nd->ns_Label); + } + FPuts(handle,"\n"); + + FPrintf(handle,"\n#endif /* %s_cat_H */\n",BaseName); +} + +void GenerateCatalogDescription(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,";\n; %s locale description file\n;\n",nv->nv_ProgramName); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogDescription(handle,mo); + + if(OPT_Screen) FPrintf(handle,"MSG_SCREENTITLE_SCR (//)\n%s\n;\n",nsc->ns_Title); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"MSG_%s_WND (//)\n%s\n;\n",nw->nw_Label,nw->nw_WindowTitle); + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) FPrintf(handle,"MSG_%s_ST_WND (//)\n%s\n;\n",nw->nw_Label,nw->nw_ScreenTitle); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogDescription(handle,go); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"MSG_%s (//)\n%s\n;\n",nd->ns_Label,nd->ns_String); + } +} + +void GenerateCatalogTranslation(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct Node_Screen *nsc; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + nsc=(struct Node_Screen *)OBJECT_DATA(GUI->gui_Node_Screen); + + FPrintf(handle,"## version $VER: %s.catalog %ld.%ld (xx.xx.xx)\n## language \n## codeset 0\n",nv->nv_ProgramName,nv->nv_Version,nv->nv_Revision); + FPrintf(handle,";\n; %s locale translation file\n;\n",nv->nv_ProgramName); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + MENU_GenerateCatalogTranslation(handle,mo); + + if(OPT_Screen) FPrintf(handle,"MSG_SCREENTITLE_SCR\n\n;%s\n;\n",nsc->ns_Title); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + if(nw->nw_PageGadget==0) if(!(nw->nw_MyFlags&MYWA_DragToolHoriz)) if(!(nw->nw_MyFlags&MYWA_DragToolVert)) + FPrintf(handle,"MSG_%s_WND\n\n;%s\n;\n",nw->nw_Label,nw->nw_WindowTitle); + if(nw->nw_PageGadget==0) if(nw->nw_ScreenTitle[0]) FPrintf(handle,"MSG_%s_ST_WND\n\n;%s\n;\n",nw->nw_Label,nw->nw_ScreenTitle); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateCatalogTranslation(handle,go); + } + + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle,"MSG_%s\n\n;%s\n;\n",nd->ns_Label,nd->ns_String); + } +} + + +int FN_TEMPLATE_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Template); + return 1; +} + +int FN_SCREEN_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Screen); + return 1; +} + +int FN_LOCALIZE_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_Localize); + return 1; +} + +int FN_GUIFUNCS_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_GUIFuncs); + return 1; +} + +int FN_SAVE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/c.generator.prefs"); + SavePrefs("ENVARC:GadToolsBox/c.generator.prefs"); + return 0; +} + +int FN_USE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/c.generator.prefs"); + return 0; +} + +int FN_CANCEL_Clicked(void) +{ + return 0; +} + +int FN_CloseWindow_Prefs(void) +{ + return 0; +} + +#define ID_CGEN MAKE_ID('C','G','E','N') + +void SavePrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct PrefHeader prefhdr={0,0,0}; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_NEWFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_WRITE)) + { + unless(PushChunk(iffh,ID_PREF,ID_FORM,IFFSIZE_UNKNOWN)) + { + if(error=PushChunk(iffh,NULL,ID_PRHD,sizeof(struct PrefHeader))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&prefhdr,sizeof(struct PrefHeader)); + if(error=PopChunk(iffh)) IFF_Error(error); + if(error=PushChunk(iffh,NULL,ID_CGEN,sizeof(struct SavePrefs))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + if(error=PopChunk(iffh)) IFF_Error(error); + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +void LoadPrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct ContextNode *cn; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_OLDFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_PREF,ID_CGEN)) IFF_Error(error); + while(1) + { + error=ParseIFF(iffh,IFFPARSE_SCAN); + if(error==IFFERR_EOC) continue; /* enter next context */ + else if(error) break; + if(cn=CurrentChunk(iffh)) + { + if(cn->cn_Type==ID_PREF) + { + switch(cn->cn_ID) + { + case ID_CGEN: + ReadChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + break; + } + } + } + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + else + { + SP.spr_Flags=NULL; + } + FreeIFF(iffh); + } +} diff --git a/GadToolsBox/CGen/main.h b/GadToolsBox/CGen/main.h new file mode 100755 index 0000000..7961344 --- /dev/null +++ b/GadToolsBox/CGen/main.h @@ -0,0 +1,335 @@ +#include +#include +#include + +#define GadgetData(x) (((UBYTE *)x)+sizeof(struct Node_Gadget)) // Get Pointer to GadToolsData +#define OBJECT_DATA(o) (((UBYTE *)o)+sizeof(piObject)) +#define GetHead(x) (((struct List *)x)->lh_Head) +#define GetSucc(x) (x->ln_Succ) +#define GetPred(x) (x->ln_Pred) +#define Node(x) ((struct Node *)x) +#define List(x) ((struct List *)x) +#define SetFlag(x,f) x|=f +#define GetFlag(x,f) if(x&f) +#define ClearFlag(x,f) x&=(f^-1) +#define DoFlag(x,f) if(code) SetFlag(x,f); else ClearFlag(x,f); +#define ListEmpty(x) ((((struct List *)x)->lh_TailPred) == ((struct Node *)x)) +#define unless(x) if(!(x)) +#define SetCheckMark(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCB_Checked,a,TAG_DONE) +#define Bit8(x) ((UBYTE)((x&0xff000000)>>24)) + +typedef struct piClass piClass; +typedef struct piObject piObject; + +struct piClass +{ + ULONG (*Dispatcher)(piClass *s,piObject *o,Msg m); + piClass *Super; + ULONG Size; + ULONG Type; +}; + +struct piObject +{ + piObject *ln_Succ; + piObject *ln_Pred; + UWORD ln_pad; + STRPTR ln_Name; + piClass *piClass; +}; + +struct EditList +{ + struct List **List; + ULONG *Active; +}; + +struct ColorPalette +{ + ULONG cp_I,cp_R,cp_G,cp_B; +}; + +#define IMTYPE_NORMAL 0 +#define IMTYPE_TOOLBAR 1 +#define IMTYPE_POINTER 2 + +struct Node_Image +{ + ULONG ni_ID; + struct Window *ni_Window; + struct Page *ni_Pages; + Object *ni_Draw,*ni_Preview,*ni_UpButton,*ni_DownButton,*ni_VertProp,*ni_LeftButton,*ni_RightButton,*ni_HorizProp; + LONG ni_Top,ni_Left; + struct BitMap *ni_BitMap; + struct ColorPalette *ni_CT; + UBYTE *ni_Pens; + + UBYTE ni_Label[40]; + UBYTE ni_Type,ni_Depth; + UWORD ni_Width,ni_Height; + UWORD ni_PointX,ni_PointY; + ULONG ni_Flags; +}; + +struct Node_Gadget +{ + struct Gadget *ng_Gadget; + piObject *ng_Parent; // Parent Object (NULL or page.gadget) + piObject *ng_Window; // Parent Window + struct TagItem *ng_Tags; + struct TagItem *ng_OwnTags; + UBYTE *ng_TagTypes; + UBYTE *ng_OwnTagTypes; + struct Page *ng_Pages; + struct EditList ng_EditList; + + UWORD ng_X,ng_Y,ng_Width,ng_Height; + UBYTE ng_RelX,ng_RelY,ng_RelWidth,ng_RelHeight; + ULONG ng_PlugInID; + UBYTE ng_Selected; + UBYTE ng_Type; + TEXT ng_Label[40]; + UWORD ng_NumTags; + UWORD ng_NumOwnTags; +}; + +struct GadToolsData // GadTools has additional datas +{ + TEXT g_Text[256]; + ULONG g_Flags; + ULONG g_Kind; +}; + +#define MYFR_Recessed (1<<0) + +struct Node_Frame +{ + piObject *nf_Window; // Parent Window + struct Page *nf_Pages; + + UWORD nf_X,nf_Y,nf_Width,nf_Height; + UBYTE nf_RelX,nf_RelY,nf_RelWidth,nf_RelHeight; + UBYTE nf_FrameType; + UBYTE nf_Selected; + ULONG nf_Flags; +}; + +#define FTYPE_BUTTON 0 +#define FTYPE_ICONDROPBOX 1 +#define FTYPE_RIDGE 2 +#define FTYPE_HORIZONTALLINE 3 +#define FTYPE_VERTICALLINE 4 + +#define WPOS_REL_LEFT_TOP 0 +#define WPOS_REL_RIGHT_BOTTOM 1 +#define WPOS_CENTER 2 + +#define MYWA_FontAdaptive (1<<0) +#define MYWA_BRightSlider (1<<1) +#define MYWA_BBottomSlider (1<<2) +#define MYWA_InnerWidth (1<<3) +#define MYWA_InnerHeight (1<<4) +#define MYWA_MouseQueue (1<<5) +#define MYWA_RptQueue (1<<6) +#define MYWA_AutoAdjust (1<<7) +#define MYWA_PubScreenFallBack (1<<8) +#define MYWA_MenuHelp (1<<9) +#define MYWA_NotifyDepth (1<<10) +#define MYWA_PointerDelay (1<<11) +#define MYWA_RMBTrap (1<<12) +#define MYWA_Project (1<<13) +#define MYWA_Zoom (1<<14) +#define MYWA_AppWindow (1<<15) +#define MYWA_DragToolHoriz (1<<16) +#define MYWA_DragToolVert (1<<17) + +struct Node_Window +{ + ULONG nw_ID; + struct Window *nw_Window; + struct Gadget *nw_Gadgets; + Object *(nw_Object[6]); + struct MinList nw_List_Gadget; + struct MinList nw_List_Frame; + + UWORD nw_X,nw_Y,nw_Width,nw_Height; // saveable datas follows + UBYTE nw_XPos,nw_YPos; + UWORD nw_Zoom[4]; + TEXT nw_WindowTitle[256]; + TEXT nw_ScreenTitle[256]; + TEXT nw_Label[40]; + TEXT nw_MenuTitle[128]; + TEXT nw_FontName[30]; + UWORD nw_Dimensions[4]; // Mins, Maxs + UWORD nw_FontSize; + ULONG nw_IDCMP; // Standard IDCMP Flags + ULONG nw_MyFlags; // My Window Flags + ULONG nw_Flags; // Standard Window Flags + ULONG nw_MouseQueue; + ULONG nw_RptQueue; + ULONG nw_PageGadget; // LockCounter for PageGadget +}; + +#define MYMN_Toggle (1<<0) +#define MYMN_NewLookMenus (1<<1) +#define MYMN_Disabled (1<<2) +#define MYMN_Checked (1<<3) +#define MYMN_BarLabel (1<<4) +#define MYMN_PopUp (1<<5) + +struct Node_Menu +{ + ULONG nm_ID; + struct MinList nm_MenuItem; + struct Menu *nm_Menu; + struct NewMenu *nm_NewMenu; + struct Window *nm_Window; + struct Page *nm_Pages; + LONG nm_Top,nm_Visible,nm_Total; + Object *nm_LeftButton,*nm_RightButton,*nm_HorizProp; + + TEXT nm_Label[128]; + ULONG nm_Flags; +}; + +struct Node_MenuItem +{ + struct Node nm_Node; + UBYTE nm_Selected; + + TEXT nm_Label[128]; + TEXT nm_Title[128]; + UBYTE nm_Type; + ULONG nm_Flags; + ULONG nm_MutEx; + TEXT nm_Key[2]; +}; + +#define TYPE_WORKBENCH 0 +#define TYPE_CUSTOMSCREEN 1 +#define TYPE_PUBLICSCREEN 2 + +#define MYSC_MakePublic (1<<0) +#define MYSC_ShowTitle (1<<3) +#define MYSC_Behind (1<<4) +#define MYSC_Quiet (1<<5) +#define MYSC_AutoScroll (1<<6) +#define MYSC_FullPalette (1<<7) +#define MYSC_Draggable (1<<8) +#define MYSC_Exclusive (1<<9) +#define MYSC_SharePens (1<<10) +#define MYSC_Interleaved (1<<11) +#define MYSC_LikeWB (1<<12) +#define MYSC_MinimizeISG (1<<13) +#define MYSC_DefaultID (1<<14) + +struct Node_Screen +{ + UWORD ns_Width,ns_Height,ns_Depth; + ULONG ns_DisplayID; + UWORD ns_Type; + TEXT ns_Title[256]; + TEXT ns_Public[30]; + TEXT ns_FontName[30]; + UWORD ns_FontSize; + ULONG ns_MyFlags; +}; + +struct Node_Version +{ + ULONG nv_Version; + ULONG nv_Revision; + TEXT nv_ProgramName[256]; + TEXT nv_Author[256]; +}; + +struct Node_String +{ + struct LVList ns_Strings; + struct Page *ns_Pages; + struct Node_StringData *ns_Selected; +}; + +struct Node_StringData +{ + struct LVNode ns_Node; + STRPTR ns_GadString; + STRPTR ns_Label; + STRPTR ns_String; +}; + +#define MYPR_GUIFuncs (1<<0) +#define MYPR_Template (1<<1) +#define MYPR_Screen (1<<2) +#define MYPR_Localize (1<<3) + +struct Prefs +{ + ULONG pr_Flags; + ULONG pr_DisplayID; + UWORD pr_Width,pr_Height,pr_Depth; + TEXT pr_Generator[108]; + UWORD pr_Grid[2]; + BOOL pr_GridOn,pr_GridShow; + struct + { + UWORD X,Y; + } pr_WinPos[10]; +}; + +struct SavePrefs +{ + ULONG spr_Flags; +}; + +struct GUI +{ + UBYTE gui_Version,gui_Revision; + STRPTR gui_PubScreenName; + + UWORD gui_Grid[2]; + BOOL gui_GridOn,gui_GridShow; + + UBYTE gui_Mode; + struct Prefs *gui_Prefs; + + piObject *gui_Node_Version; // $VER string + piObject *gui_Node_Screen; // Screen + piObject *gui_Node_String; // List of locale strings + struct MinList gui_List_Window; // List of windows + struct MinList gui_List_Menu; // List of menus + struct MinList gui_List_Image; // List of mouse pointers + struct MinList gui_List_Binary; // List of binary data +}; + +struct GTBSemaphore +{ + struct SignalSemaphore gs_Semaphore; + struct GUI *gs_GUI; + struct Window *gs_Window; + struct Gadget *gs_Progress; + struct TextFont *gs_FontTF; +}; + +#define BUTTON_ID MAKE_ID('B','U','T','T') +#define CHECKBOX_ID MAKE_ID('C','B','O','X') +#define COLORWHEEL_ID MAKE_ID('C','W','H','L') +#define CYCLE_ID MAKE_ID('C','Y','C','E') +#define DATATYPE_ID MAKE_ID('D','T','Y','P') +#define GRADIENTSLIDER_ID MAKE_ID('G','R','S','L') +#define INTEGER_ID MAKE_ID('I','N','T','R') +#define LISTVIEW_ID MAKE_ID('L','V','I','E') +#define MX_ID MAKE_ID('M','X',' ',' ') +#define NUMBER_ID MAKE_ID('N','U','M','B') +#define PAGE_ID MAKE_ID('P','A','G','E') +#define PALETTE_ID MAKE_ID('P','A','L','T') +#define POPUPMENU_ID MAKE_ID('P','U','P','M') +#define PROGRESS_ID MAKE_ID('P','R','G','R') +#define SCROLLER_ID MAKE_ID('S','C','R','L') +#define SLIDER_ID MAKE_ID('S','L','I','R') +#define STRING_ID MAKE_ID('S','T','R','G') +#define TAPEDECK_ID MAKE_ID('T','D','E','K') +#define TEXT_ID MAKE_ID('T','E','X','T') +#define TEXTFIELD_ID MAKE_ID('T','F','L','D') +#define TREEVIEW_ID MAKE_ID('T','R','L','V') + diff --git a/GadToolsBox/CGen/menu.c b/GadToolsBox/CGen/menu.c new file mode 100755 index 0000000..09c0a9a --- /dev/null +++ b/GadToolsBox/CGen/menu.c @@ -0,0 +1,223 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +extern struct GUI *GUI; + +void MENU_GenerateDefs(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT Title[256],Label[256],flagsstr[256]; + UBYTE orit; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"/* %s Menu defintion */\n",nm->nm_Label); + FPrintf(handle,"struct NewMenu %sNewMenu[]=\n{\n",nm->nm_Label); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + orit=FALSE; + if(ni->nm_Flags&MYMN_BarLabel) sprintf(Title,"NM_BARLABEL"); + else sprintf(Title,"MSG_%s%s_",nm->nm_Label,ni->nm_Label); + if((ni->nm_Flags&MYMN_PopUp) || (ni->nm_Flags&MYMN_BarLabel)) sprintf(Label,"NULL"); + else sprintf(Label,"FN_%s%s_Selected",nm->nm_Label,ni->nm_Label); + flagsstr[0]='\0'; + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MTITLE"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_MENUDISABLED"); orit=TRUE; } + FPuts(handle," NM_TITLE"); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MITEM"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_ITEMDISABLED"); orit=TRUE; } + FPuts(handle," NM_ITEM"); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) strcat(Title,"MSUB"); + GetFlag(ni->nm_Flags,MYMN_Disabled) { strcat(flagsstr,"MN_ITEMDISABLED"); orit=TRUE; } + FPuts(handle," NM_SUB"); + break; + } + + GetFlag(ni->nm_Flags,MYMN_Toggle) { if(orit) strcat(flagsstr,"|"); strcat(flagsstr,"CHECKIT"); orit=TRUE; } + GetFlag(ni->nm_Flags,MYMN_Checked) { if(orit) strcat(flagsstr,"|"); strcat(flagsstr,"CHECKED"); orit=TRUE; } + if(!orit) strcpy(flagsstr,"NULL"); + + FPrintf(handle,", %s, NULL, %s, NULL, %s,\n",Title,flagsstr,Label); + } + FPuts(handle," NM_END, NULL, NULL, NULL, NULL, NULL\n};\n"); +} + +void MENU_GenerateProtos(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Label[0]) FPrintf(handle,"int FN_%s%s_Selected(void);\n",nm->nm_Label,ni->nm_Label); + } +} + +void MENU_GenerateTemplate(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Label[0]) FPrintf(handle,"int FN_%s%s_Selected()\n{\n return 1;\n}\n\n",nm->nm_Label,ni->nm_Label); + } +} + +void MENU_GenerateCatalogSource(BPTR handle,piObject *mo,LONG *index) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MTITLE = { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MITEM= { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"const struct FC_Type _MSG_%s%s_MSUB = { %ld, \"%s\\000%s\" };\n",nm->nm_Label,ni->nm_Label,*index,CommKey,ni->nm_Title); + (*index)++; + } + break; + } + } +} + +void MENU_GenerateCatalogHeader(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MTITLE;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MTITLE ((APTR) &_MSG_%s%s_MTITLE)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MITEM;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MITEM ((APTR) &_MSG_%s%s_MITEM)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + { + FPrintf(handle,"extern const struct FC_Type _MSG_%s%s_MSUB;\n",nm->nm_Label,ni->nm_Label); + FPrintf(handle,"#define MSG_%s%s_MSUB ((APTR) &_MSG_%s%s_MSUB)\n",nm->nm_Label,ni->nm_Label,nm->nm_Label,ni->nm_Label); + } + break; + } + } +} + +void MENU_GenerateCatalogDescription(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MTITLE (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MITEM (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MSUB (//)\n%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + } + } +} + +void MENU_GenerateCatalogTranslation(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + TEXT CommKey[10]; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Key[0]==' ' || ni->nm_Key[0]=='\0') sprintf(CommKey,"\\000"); + else sprintf(CommKey,"%c",ni->nm_Key[0]); + switch(ni->nm_Type) + { + case NM_TITLE: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MTITLE\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_ITEM: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MITEM\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + case NM_SUB: + if(!(ni->nm_Flags&MYMN_BarLabel)) + FPrintf(handle,"MSG_%s%s_MSUB\n\n;%s\\000%s\n;\n",nm->nm_Label,ni->nm_Label,CommKey,ni->nm_Title); + break; + } + } +} diff --git a/GadToolsBox/CGen/popupmenu.c b/GadToolsBox/CGen/popupmenu.c new file mode 100755 index 0000000..178b979 --- /dev/null +++ b/GadToolsBox/CGen/popupmenu.c @@ -0,0 +1,62 @@ +struct PopupMenu *PM_CreateMenusA(struct NewMenu *menu,struct TagItem *tags) +{ + struct TagItem *ti; + struct PopupMenu *pm=NULL; + struct Menu *m; + ULONG NumMenus,a; + + for(NumMenus=0,n=menu;m->nm_Type!=NM_END;m+=(sizeof(struct Menu)),NumMenus++); + if(ti=AllocTagItems((NumMenus+10)*5)) + { + for(n=menu,a=0;m->nm_Type!=NM_END;m+=(sizeof(struct Menu)),NumMenus++) + { + switch(m->nm_Type) + { + case NM_TITLE: + ti[a].ti_Tag=PM_Title; ti[a].ti_Data=m->nm_Label; a++; + ti[a].ti_Tag=PM_NoSelect; ti[a].ti_Data=TRUE; a++; + ti[a].ti_Tag=PM_ShinePen; ti[a].ti_Data=TRUE; a++; + ti[a].ti_Tag=PM_Item; ti[a].ti_Data=PM_MakeItem(PM_WideTitleBar,TRUE,TAG_DONE); a++; + break; + case NM_ITEM: + ti[a].ti_Tag=PM_Item; + if(m->nm_Label==NM_BARLABEL) + { + ti[a].ti_Data=PM_MakeItem(PM_TitleBar,TRUE, + TAG_DONE); + } + else + { + ti[a].ti_Data=PM_MakeItem(PM_Title,m->nm_Label, + (m->nm_Flags&MENUTOGGLE)?PM_Checkit:TAG_IGNORE,TRUE, + (m->nm_Flags&CHECKED)?PM_Checked:TAG_IGNORE,TRUE, + (m->nm_Flags&NM_ITEMDISABLED)?PM_Disabled:TAG_IGNORE,TRUE, + PM_UserData,m->nm_UserData, + TAG_DONE); + } + a++; + break; + case NM_SUB: + // Not supported yet + break; + } + } + ti[a].ti_Tag=TAG_DONE; + pm=PM_MakeMenuA(ti); + FreeTagItems(ti); + } + return pm; +} + +void PM_FreeMenus(struct PopupMenu *pm) +{ + PM_FreePopupMenu(pm); +} + +ULONG PM_LayoutMenusA(struct Window *w,struct PopupMenu *pm,ULONG code) +{ + return PM_OpenPopupMenu(w, + PM_Menu,pm, + PM_Code,code, + TAG_DONE); +} diff --git a/GadToolsBox/GadToolsBox.cd b/GadToolsBox/GadToolsBox.cd new file mode 100755 index 0000000..8172ff8 --- /dev/null +++ b/GadToolsBox/GadToolsBox.cd @@ -0,0 +1,2073 @@ +; +; GadToolsBox locale description file +; +MSG_MainProject_MTITLE (//) +\000\000Project +; +MSG_MainProjectNew_MITEM (//) +N\000New +; +MSG_MainProjectOpen_MITEM (//) +O\000Open... +; +MSG_MainProjectSave_MITEM (//) +S\000Save +; +MSG_MainProjectSaveAs_MITEM (//) +A\000Save As... +; +MSG_MainProjectSaveSource_MITEM (//) +W\000Save Source... +; +MSG_MainProjectPreferences_MITEM (//) +P\000Preferences... +; +MSG_MainProjectAbout_MITEM (//) +?\000About... +; +MSG_MainProjectQuit_MITEM (//) +Q\000Quit +; +MSG_MainEdit_MTITLE (//) +\000\000Edit +; +MSG_MainEditUndo_MITEM (//) +U\000Undo +; +MSG_MainEditCut_MITEM (//) +X\000Cut +; +MSG_MainEditCopy_MITEM (//) +C\000Copy +; +MSG_MainEditPaste_MITEM (//) +V\000Paste +; +MSG_MainEditClear_MITEM (//) +B\000Clear +; +MSG_MainEditSelectAll_MITEM (//) +A\000Select All +; +MSG_MainEditGrid_MITEM (//) +G\000Grid... +; +MSG_MainEditAlign_MITEM (//) +\000\000Align +; +MSG_MainEditAlignToLeft_MSUB (//) +\000\000Left +; +MSG_MainEditAlignToHCenter_MSUB (//) +\000\000Width center +; +MSG_MainEditAlignToRight_MSUB (//) +\000\000Right +; +MSG_MainEditAlignToTop_MSUB (//) +\000\000Top +; +MSG_MainEditAlignToVCenter_MSUB (//) +\000\000Height center +; +MSG_MainEditAlignToBottom_MSUB (//) +\000\000Bottom +; +MSG_MainEditClone_MITEM (//) +\000\000Clone +; +MSG_MainEditCloneWidth_MSUB (//) +\000\000Width +; +MSG_MainEditCloneHeight_MSUB (//) +\000\000Height +; +MSG_MainEditCloneBoth_MSUB (//) +\000\000Both +; +MSG_MainEditSpread_MITEM (//) +\000\000Spread +; +MSG_MainEditSpreadHoriz_MSUB (//) +\000\000Horizontal +; +MSG_MainEditSpreadVertical_MSUB (//) +\000\000Vertical +; +MSG_MainObject_MTITLE (//) +\000\000Objects +; +MSG_MainObjWindow_MITEM (//) +\000\000Window +; +MSG_MainObjWindowNew_MSUB (//) +\000\000New... +; +MSG_MainObjWindowClose_MSUB (//) +\000\000Close +; +MSG_MainObjWindowDelete_MSUB (//) +\000\000Delete +; +MSG_MainObjWindowRefresh_MSUB (//) +R\000Refresh +; +MSG_MainObjMenu_MITEM (//) +\000\000Menu +; +MSG_MainObjMenuNew_MSUB (//) +\000\000New... +; +MSG_MainObjMenuClose_MSUB (//) +\000\000Close +; +MSG_MainObjMenuDelete_MSUB (//) +\000\000Delete +; +MSG_MainObjImage_MITEM (//) +\000\000Image +; +MSG_MainObjImageNew_MSUB (//) +\000\000New... +; +MSG_MainObjImageClose_MSUB (//) +\000\000Close +; +MSG_MainObjImageDelete_MSUB (//) +\000\000Delete +; +MSG_MainObjStrings_MITEM (//) +\000\000Strings +; +MSG_MainObjStringsOpen_MSUB (//) +\000\000Open +; +MSG_MainObjStringsClose_MSUB (//) +\000\000Close +; +MSG_MainObjScreen_MITEM (//) +\000\000Screen +; +MSG_MainObjScreenOpen_MSUB (//) +\000\000Open +; +MSG_MainObjScreenClose_MSUB (//) +\000\000Close +; +MSG_MainObjVersion_MITEM (//) +\000\000Version +; +MSG_MainObjVersionOpen_MSUB (//) +\000\000Open +; +MSG_MainObjVersionClose_MSUB (//) +\000\000Close +; +MSG_MainWindow_MTITLE (//) +\000\000Windows +; +MSG_MainWindowProperties_MITEM (//) +\000\000Properties +; +MSG_MainWindowObjects_MITEM (//) +\000\000Objects +; +MSG_MainWindowStatus_MITEM (//) +\000\000Status +; +MSG_MainWindowHideAll_MITEM (//) +\000\000Hide All +; +MSG_SCREENTITLE_SCR (//) +GadToolsBox v3 (GTB.%ld) +; +MSG_PGBO_LABEL_GAD (//) +_Label: +; +MSG_PGBO_X_GAD (//) + +; +MSG_PGBO_Y_GAD (//) + +; +MSG_PGBO_WIDTH_GAD (//) + +; +MSG_PGBO_HEIGHT_GAD (//) + +; +MSG_PGBO_REL_X_GAD (//) +_X Pos: +; +MSG_PGBO_REL_X_L0_GAD (//) +Left +; +MSG_PGBO_REL_X_L1_GAD (//) +Right +; +MSG_PGBO_REL_Y_GAD (//) +_Y Pos: +; +MSG_PGBO_REL_Y_L0_GAD (//) +Top +; +MSG_PGBO_REL_Y_L1_GAD (//) +Bottom +; +MSG_PGBO_REL_W_GAD (//) +_Width: +; +MSG_PGBO_REL_W_L0_GAD (//) +Normal +; +MSG_PGBO_REL_W_L1_GAD (//) +Window +; +MSG_PGBO_REL_H_GAD (//) +_Height: +; +MSG_PGBO_REL_H_L0_GAD (//) +Normal +; +MSG_PGBO_REL_H_L1_GAD (//) +Window +; +MSG_ABOUT_OK_GAD (//) +Ok +; +MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD (//) +_Immediate: +; +MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_BUTT_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_GAD (//) +Title Type: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD (//) +Text +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD (//) +Toolbar +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD (//) +Image +; +MSG_PG_BUTT_FLAGS_TOGGLE_GAD (//) +_Toggle: +; +MSG_PG_CBOX_FLAGS_SCALED_GAD (//) +_Scaled: +; +MSG_PG_CBOX_FLAGS_SCALED_L0_GAD (//) +None +; +MSG_PG_CBOX_FLAGS_SCALED_L1_GAD (//) +Normal +; +MSG_PG_CBOX_FLAGS_SCALED_L2_GAD (//) +Adaptive +; +MSG_PG_CBOX_FLAGS_CHECKED_GAD (//) +_Checked: +; +MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_CBOX_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_CWHL_FLAGS_MAXPENS_GAD (//) +MaxPens: +; +MSG_PG_CWHL_FLAGS_ABBRV_GAD (//) +Abbrv: +; +MSG_PG_CWHL_FLAGS_GSLIDER_GAD (//) +Grad-Slider: +; +MSG_PG_CWHL_FLAGS_BEVELBOX_GAD (//) +BevelBox: +; +MSG_PG_CWHL_FLAGS_DISABLED_GAD (//) +Disabled: +; +MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD (//) +FollowMouse: +; +MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD (//) +Highlabel: +; +MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD (//) +Underscore: +; +MSG_PG_CYCE_FLAGS_DISABLED_GAD (//) +Disabled: +; +MSG_PG_LISTS_EDIT_GAD (//) + +; +MSG_PG_LISTS_ACTIVE_GAD (//) + +; +MSG_PG_LISTS_LIST_GAD (//) + +; +MSG_PG_LISTS_UP_GAD (//) +_Up +; +MSG_PG_LISTS_DOWN_GAD (//) +D_own +; +MSG_PG_LISTS_ADD_GAD (//) +_Add +; +MSG_PG_LISTS_DEL_GAD (//) +_Del +; +MSG_PG_DTYP_FLAGS_OBJECT_GAD (//) +_File: +; +MSG_PG_DTYP_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD (//) +_Knob Pixels: +; +MSG_PG_GRSL_FLAGS_MAXVAL_GAD (//) +_MaxVal: +; +MSG_PG_GRSL_FLAGS_CURVAL_GAD (//) +_CurVal: +; +MSG_PG_GRSL_FLAGS_SKIPVAL_GAD (//) +_SkipVal: +; +MSG_PG_GRSL_FLAGS_PENS_GAD (//) +_Pens: +; +MSG_PG_GRSL_FLAGS_FREEDOM_GAD (//) +_Freedom: +; +MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD (//) +Horizontal +; +MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD (//) +Vertical +; +MSG_PG_GRSL_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_INTR_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_INTR_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_INTR_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_INTR_FLAGS_TABCYCLE_GAD (//) +_TabCycle: +; +MSG_PG_INTR_FLAGS_REPLACEMODE_GAD (//) +_ReplaceMode: +; +MSG_PG_INTR_FLAGS_EXITHELP_GAD (//) +_ExitHelp: +; +MSG_PG_INTR_VAR_MAXCHARS_GAD (//) +_MaxChars: +; +MSG_PG_INTR_VAR_NUMBER_GAD (//) +_Number: +; +MSG_PG_INTR_VAR_JUSTIFICATION_GAD (//) +_Justification: +; +MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD (//) +Left +; +MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD (//) +Right +; +MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD (//) +Center +; +MSG_PG_LVIE_FLAGS_ARROWS_GAD (//) +_Arrows: +; +MSG_PG_LVIE_FLAGS_SPACING_GAD (//) +S_pacing: +; +MSG_PG_LVIE_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_LVIE_FLAGS_READONLY_GAD (//) +_ReadOnly: +; +MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD (//) +_ShowSelected: +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD (//) + +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD (//) +None +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD (//) +Normal +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD (//) +Adaptive +; +MSG_PG_MX_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_MX_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_MX_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_MX_FLAGS_SCALED_GAD (//) +_Scaled: +; +MSG_PG_MX_FLAGS_SCALED_L0_GAD (//) +None +; +MSG_PG_MX_FLAGS_SCALED_L1_GAD (//) +Normal +; +MSG_PG_MX_FLAGS_SCALED_L2_GAD (//) +Adaptive +; +MSG_PG_MX_FLAGS_PLACEMENT_GAD (//) +_Placement: +; +MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD (//) +Left +; +MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD (//) +Right +; +MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD (//) +Above +; +MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD (//) +Below +; +MSG_PG_MX_FLAGS_SPACING_GAD (//) +Sp_acing: +; +MSG_PG_NUMB_FLAGS_FORMAT_GAD (//) +_Format: +; +MSG_PG_NUMB_FLAGS_DEFAULT_GAD (//) +D_efault: +; +MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD (//) +_MaxNumLen: +; +MSG_PG_NUMB_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_NUMB_FLAGS_BORDER_GAD (//) +_Border: +; +MSG_PG_NUMB_FLAGS_CLIPPED_GAD (//) +_Clipped: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD (//) +_Justification: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD (//) +Left +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD (//) +Right +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD (//) +Center +; +MSG_PGGT_LABEL_GAD (//) +_Label: +; +MSG_PGGT_TITLE_GAD (//) +_Title: +; +MSG_PGGT_X_GAD (//) + +; +MSG_PGGT_Y_GAD (//) + +; +MSG_PGGT_WIDTH_GAD (//) + +; +MSG_PGGT_HEIGHT_GAD (//) + +; +MSG_PGGT_PLACEMENT_GAD (//) +_Placement: +; +MSG_PGGT_PLACEMENT_L0_GAD (//) +In +; +MSG_PGGT_PLACEMENT_L1_GAD (//) +Left +; +MSG_PGGT_PLACEMENT_L2_GAD (//) +Right +; +MSG_PGGT_PLACEMENT_L3_GAD (//) +Above +; +MSG_PGGT_PLACEMENT_L4_GAD (//) +Below +; +MSG_PGGT_REL_X_GAD (//) +_X Pos: +; +MSG_PGGT_REL_X_L0_GAD (//) +Left +; +MSG_PGGT_REL_X_L1_GAD (//) +Right +; +MSG_PGGT_REL_Y_GAD (//) +_Y Pos: +; +MSG_PGGT_REL_Y_L0_GAD (//) +Top +; +MSG_PGGT_REL_Y_L1_GAD (//) +Bottom +; +MSG_PGGT_REL_W_GAD (//) +_Width: +; +MSG_PGGT_REL_W_L0_GAD (//) +Normal +; +MSG_PGGT_REL_W_L1_GAD (//) +Window +; +MSG_PGGT_REL_H_GAD (//) +_Height: +; +MSG_PGGT_REL_H_L0_GAD (//) +Normal +; +MSG_PGGT_REL_H_L1_GAD (//) +Window +; +MSG_PG_PAGE_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_PAGE_FLAGS_LAYOUT_GAD (//) +_Layout: +; +MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD (//) +Simple +; +MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD (//) +MUI Style +; +MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD (//) +GadTools +; +MSG_PG_PAGE_FLAGS_STYLE_GAD (//) +_Style: +; +MSG_PG_PAGE_FLAGS_STYLE_L0_GAD (//) +Normal +; +MSG_PG_PAGE_FLAGS_STYLE_L1_GAD (//) +Hilight +; +MSG_PG_PAGE_FLAGS_STYLE_L2_GAD (//) +Shadow +; +MSG_PG_PAGE_LISTS_LIST_GAD (//) + +; +MSG_PG_PAGE_LISTS_ADD_GAD (//) +< _Add +; +MSG_PG_PAGE_LISTS_DEL_GAD (//) +> _Del +; +MSG_PG_PAGE_LISTS_UP_GAD (//) +_Up +; +MSG_PG_PAGE_LISTS_DOWN_GAD (//) +D_own +; +MSG_PG_PAGE_LISTS_WINDOWS_GAD (//) + +; +MSG_PG_PAGE_LISTS_ACTIVE_GAD (//) + +; +MSG_PG_PALT_FLAGS_COLOR_GAD (//) + +; +MSG_PG_PALT_FLAGS_OFFSET_GAD (//) +_Offset: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD (//) + +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD (//) +: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD (//) +None +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD (//) +Width +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD (//) +Height +; +MSG_PG_PALT_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_PALT_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_PALT_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_PALT_FLAGS_TYPE_GAD (//) +: +; +MSG_PG_PALT_FLAGS_TYPE_L0_GAD (//) +Depth +; +MSG_PG_PALT_FLAGS_TYPE_L1_GAD (//) +Colors +; +MSG_PG_PALT_FLAGS_TYPE_L2_GAD (//) +Screen +; +MSG_PG_PUPM_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_PUPM_FLAGS_NEWLOOK_GAD (//) +_NewLook: +; +MSG_PG_PRGR_FLAGS_MAX_GAD (//) +_Max: +; +MSG_PG_PRGR_FLAGS_CURRENT_GAD (//) +_Current: +; +MSG_PG_PRGR_FLAGS_FORMAT_GAD (//) +_Format: +; +MSG_PG_PRGR_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_PRGR_FLAGS_BORDER_GAD (//) +_Border: +; +MSG_PG_PRGR_FLAGS_PERCENTS_GAD (//) +Show in _%: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_GAD (//) +_Placement: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD (//) +In +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD (//) +Left +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD (//) +Right +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD (//) +Above +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD (//) +Below +; +MSG_PG_SCRL_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD (//) +_Immediate: +; +MSG_PG_SCRL_FLAGS_RELVERIFY_GAD (//) +_RelVerify: +; +MSG_PG_SCRL_VAR_TOP_GAD (//) +_Top: +; +MSG_PG_SCRL_VAR_TOTAL_GAD (//) +T_otal: +; +MSG_PG_SCRL_VAR_VISIBLE_GAD (//) +_Visible: +; +MSG_PG_SCRL_VAR_FREEDOM_GAD (//) +_Freedom: +; +MSG_PG_SCRL_VAR_FREEDOM_L0_GAD (//) +Horizontal +; +MSG_PG_SCRL_VAR_FREEDOM_L1_GAD (//) +Vertical +; +MSG_PG_SCRL_VAR_ARROWS_GAD (//) + +; +MSG_PG_SCRL_VAR_ARROW_TYPE_GAD (//) +_Arrows: +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD (//) +None +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD (//) +Normal +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD (//) +Adaptive +; +MSG_PG_SLIR_FLAGS_FORMAT_GAD (//) +_Format: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD (//) +Max_PixelLen: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD (//) + +; +MSG_PG_SLIR_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD (//) +_Immediate: +; +MSG_PG_SLIR_FLAGS_RELVERIFY_GAD (//) +_RelVerify: +; +MSG_PG_SLIR_VAR_MIN_GAD (//) +_Min: +; +MSG_PG_SLIR_VAR_MAX_GAD (//) +M_ax: +; +MSG_PG_SLIR_VAR_LEVEL_GAD (//) +_Level: +; +MSG_PG_SLIR_VAR_MAXLEVLEN_GAD (//) +MaxLe_vLen: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_GAD (//) +_Justification: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD (//) +Left +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD (//) +Right +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD (//) +Center +; +MSG_PG_SLIR_VAR_FREEDOM_GAD (//) +_Freedom: +; +MSG_PG_SLIR_VAR_FREEDOM_L0_GAD (//) +Horizontal +; +MSG_PG_SLIR_VAR_FREEDOM_L1_GAD (//) +Vertical +; +MSG_PG_SLIR_VAR_LEVELPLACE_GAD (//) +Level _Place: +; +MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD (//) +Left +; +MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD (//) +Right +; +MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD (//) +Above +; +MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD (//) +Below +; +MSG_PG_STRG_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_STRG_FLAGS_UNDERSCORE_GAD (//) +_Underscore: +; +MSG_PG_STRG_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_STRG_FLAGS_TABCYCLE_GAD (//) +_TabCycle: +; +MSG_PG_STRG_FLAGS_REPLACEMODE_GAD (//) +_ReplaceMode: +; +MSG_PG_STRG_FLAGS_EXITHELP_GAD (//) +_ExitHelp: +; +MSG_PG_STRG_VAR_MAXCHARS_GAD (//) +MaxChars: +; +MSG_PG_STRG_VAR_STRING_GAD (//) +_String: +; +MSG_PG_STRG_VAR_JUSTIFICATION_GAD (//) +_Justification: +; +MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD (//) +Left +; +MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD (//) +Right +; +MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD (//) +Center +; +MSG_PG_TDEK_FLAGS_FRAMES_GAD (//) +_Frames: +; +MSG_PG_TDEK_FLAGS_CURRENT_GAD (//) +_Current: +; +MSG_PG_TDEK_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_TDEK_FLAGS_TAPE_GAD (//) +_Tape: +; +MSG_PG_TDEK_FLAGS_PAUSED_GAD (//) +_Paused: +; +MSG_PG_TEXT_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD (//) +_Highlabel: +; +MSG_PG_TEXT_FLAGS_BORDER_GAD (//) +_Border: +; +MSG_PG_TEXT_FLAGS_CLIPPED_GAD (//) +_Clipped: +; +MSG_PG_TEXT_FLAGS_COPYTEXT_GAD (//) +C_opyText: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD (//) +_Justification: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD (//) +Left +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD (//) +Right +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD (//) +Center +; +MSG_PG_TEXT_FLAGS_DEFAULT_GAD (//) +D_efault: +; +MSG_PG_TFLD_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_TFLD_FLAGS_TABCYCLE_GAD (//) +_TabCycle: +; +MSG_PG_TFLD_FLAGS_READONLY_GAD (//) +_Read Only: +; +MSG_PG_TFLD_FLAGS_INVERTED_GAD (//) +_Inverted: +; +MSG_PG_TFLD_FLAGS_PARTIAL_GAD (//) +_Partial: +; +MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD (//) +_BlockCursor +; +MSG_PG_TFLD_FLAGS_VCENTER_GAD (//) +_VCenter: +; +MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD (//) +Pass Command: +; +MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD (//) +_Clipboard: +; +MSG_PG_TFLD_FLAGS_UNDO_GAD (//) +_Undo: +; +MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD (//) +_NonPrintChars: +; +MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD (//) +_Max Size Beep: +; +MSG_PG_TFLD_FLAGS_NOGHOST_GAD (//) +No_Ghost: +; +MSG_PG_TFLD_FLAGS_MODIFIED_GAD (//) +M_odified: +; +MSG_PG_TFLD_FLAGS_USERALIGN_GAD (//) +_UserAlign: +; +MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD (//) +_RuledPaper: +; +MSG_PG_TFLD_FLAGS_BORDER_GAD (//) +_Border: +; +MSG_PG_TFLD_FLAGS_BORDER_L0_GAD (//) +None +; +MSG_PG_TFLD_FLAGS_BORDER_L1_GAD (//) +Bevel +; +MSG_PG_TFLD_FLAGS_BORDER_L2_GAD (//) +Double Bevel +; +MSG_PG_TFLD_FLAGS_ALIGN_GAD (//) +_Align: +; +MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD (//) +Left +; +MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD (//) +Right +; +MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD (//) +Center +; +MSG_PG_TFLD_VAR_BLINKRATE_GAD (//) +_BlinkRate: +; +MSG_PG_TFLD_VAR_MAXSIZE_GAD (//) +_MaxSize: +; +MSG_PG_TFLD_VAR_TABSPACES_GAD (//) +_TabSpaces: +; +MSG_PG_TFLD_VAR_SPACING_GAD (//) +_Spacing: +; +MSG_PG_TFLD_VAR_DELIMITERS_GAD (//) +_Delimiters: +; +MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD (//) +_AcceptChars: +; +MSG_PG_TFLD_VAR_REJECTCHARS_GAD (//) +_RejectChars: +; +MSG_Properties_WND (//) +Properties +; +MSG_PROPERTIES_LOCK_GAD (//) + +; +MSG_PROPERTIES_APPLY_GAD (//) +A +; +MSG_PROPERTIES_PAGES_L0_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L1_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L2_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L3_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L4_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L5_GAD (//) +Lists +; +MSG_PROPERTIES_PAGES_L6_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L7_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L8_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L9_GAD (//) +Var. +; +MSG_PROPERTIES_PAGES_L10_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L11_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L12_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L13_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L14_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L15_GAD (//) +Lists +; +MSG_PROPERTIES_PAGES_L16_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L17_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L18_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L19_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L20_GAD (//) +Var. +; +MSG_PROPERTIES_PAGES_L21_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L22_GAD (//) +Var. +; +MSG_PROPERTIES_PAGES_L23_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L24_GAD (//) +Var. +; +MSG_PROPERTIES_PAGES_L25_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L26_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L27_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L28_GAD (//) +Flags2 +; +MSG_PROPERTIES_PAGES_L29_GAD (//) +Var. +; +MSG_PROPERTIES_PAGES_L30_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L31_GAD (//) +Flags1 +; +MSG_PROPERTIES_PAGES_L32_GAD (//) +Style +; +MSG_PROPERTIES_PAGES_L33_GAD (//) +Flags2 +; +MSG_PROPERTIES_PAGES_L34_GAD (//) +Flags3 +; +MSG_PROPERTIES_PAGES_L35_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L36_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L37_GAD (//) + +; +MSG_PROPERTIES_PAGES_L38_GAD (//) +Item +; +MSG_PROPERTIES_PAGES_L39_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L40_GAD (//) +Flags +; +MSG_PROPERTIES_PAGES_L41_GAD (//) +General +; +MSG_PROPERTIES_PAGES_L42_GAD (//) +Tab Order +; +MSG_Edit_WND (//) + +; +MSG_Preferences_WND (//) +Preferences +; +MSG_PREFS_SAVE_GAD (//) +_Save +; +MSG_PREFS_USE_GAD (//) +_Use +; +MSG_PREFS_CANCEL_GAD (//) +_Cancel +; +MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD (//) +Auto_Backup: +; +MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD (//) +S_ize zoom: +; +MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD (//) +_Fast redraw: +; +MSG_PG_PREFS_GENERAL_GETSCREEN_GAD (//) +Screen _mode... +; +MSG_PG_PREFS_GENERAL_SCREENMODE_GAD (//) + +; +MSG_PG_PREFS_GEN_LIST_GAD (//) +_Generators: +; +MSG_PG_PREFS_GENERAL_FONTNAME_GAD (//) + +; +MSG_PG_PREFS_GENERAL_EDITFONT_GAD (//) +Editor _font... +; +MSG_Grid_WND (//) +Grid +; +MSG_GRID_X_GAD (//) +_X Size: +; +MSG_GRID_Y_GAD (//) +_Y Size: +; +MSG_GRID_SHOW_GAD (//) +_Show Grid: +; +MSG_GRID_SNAP_GAD (//) +S_nap To Grid: +; +MSG_GRID_OK_GAD (//) +_Ok +; +MSG_GRID_CANCEL_GAD (//) +_Cancel +; +MSG_PGWN_LABEL_GAD (//) +_Label: +; +MSG_PGWN_X_GAD (//) + +; +MSG_PGWN_Y_GAD (//) + +; +MSG_PGWN_WIDTH_GAD (//) + +; +MSG_PGWN_HEIGHT_GAD (//) + +; +MSG_PGWN_INNERHEIGHT_GAD (//) +Inner +; +MSG_PGWN_INNERWIDTH_GAD (//) +Inner +; +MSG_PGWN_REL_H_GAD (//) +_Height: +; +MSG_PGWN_REL_H_L0_GAD (//) +Normal +; +MSG_PGWN_REL_H_L1_GAD (//) +Screen +; +MSG_PGWN_REL_W_GAD (//) +_Width: +; +MSG_PGWN_REL_W_L0_GAD (//) +Normal +; +MSG_PGWN_REL_W_L1_GAD (//) +Screen +; +MSG_PGWN_REL_Y_GAD (//) +_Y Pos: +; +MSG_PGWN_REL_Y_L0_GAD (//) +Top +; +MSG_PGWN_REL_Y_L1_GAD (//) +Bottom +; +MSG_PGWN_REL_Y_L2_GAD (//) +Center +; +MSG_PGWN_REL_X_GAD (//) +_X Pos: +; +MSG_PGWN_REL_X_L0_GAD (//) +Left +; +MSG_PGWN_REL_X_L1_GAD (//) +Right +; +MSG_PGWN_REL_X_L2_GAD (//) +Center +; +MSG_PGWN_SCREEN_TITLE_GAD (//) +_Screen Title: +; +MSG_PGWN_WINDOW_TITLE_GAD (//) +_Window Title: +; +MSG_PGWN_PAGED_GAD (//) +Pa_ged: +; +MSG_PGWN_FONTADAPTIVE_GAD (//) +_Font Adaptive: +; +MSG_PGWN_APPWINDOW_GAD (//) +_App Window: +; +MSG_PGWN_PROJECT_GAD (//) +_Project: +; +MSG_PGWN_MENU_GET_GAD (//) +S +; +MSG_PGWN_MENU_GAD (//) +Menu: +; +MSG_PGWN_ZOOM_GAD (//) +_Zoom: +; +MSG_PGWN_BACKDROP_GAD (//) +B_ackdrop: +; +MSG_PGWN_BORDERLESS_GAD (//) +_Borderless: +; +MSG_PGWN_SIZEBBOTTOM_GAD (//) +Size B_Bottom: +; +MSG_PGWN_SIZEBRIGHT_GAD (//) +Size B_Right: +; +MSG_PGWN_CLOSEGADGET_GAD (//) +Close: +; +MSG_PGWN_DEPTHGADGET_GAD (//) +D_epth: +; +MSG_PGWN_SIZEGADGET_GAD (//) +_Size: +; +MSG_PGWN_DRAGGADGET_GAD (//) +_Drag: +; +MSG_PGWN_DRAGGADGET_L0_GAD (//) +None +; +MSG_PGWN_DRAGGADGET_L1_GAD (//) +Normal +; +MSG_PGWN_DRAGGADGET_L2_GAD (//) +Tool Horz. +; +MSG_PGWN_DRAGGADGET_L3_GAD (//) +Tool Vert. +; +MSG_PGWN_FALLBACK_GAD (//) +_FallBack: +; +MSG_PGWN_REPORTMOUSE_GAD (//) +Report_Mouse: +; +MSG_PGWN_AUTOADJUST_GAD (//) +A_utoAdjust: +; +MSG_PGWN_ACTIVATE_GAD (//) +_Activate: +; +MSG_PGWN_RMBTRAP_GAD (//) +RMB_Trap: +; +MSG_PGWN_NEWLOOKMENUS_GAD (//) +N_ewLookMenus: +; +MSG_PGWN_NOCAREREFRESH_GAD (//) +_NoCareRefresh: +; +MSG_PGWN_GZZ_GAD (//) +_GimmeZeroZero: +; +MSG_PGWN_REFRESH_GAD (//) +_Refresh: +; +MSG_PGWN_REFRESH_L0_GAD (//) +Simple +; +MSG_PGWN_REFRESH_L1_GAD (//) +Smart +; +MSG_PGWN_REFRESH_L2_GAD (//) +SuperBitmap +; +MSG_PGWN_MOUSEQUEUE_GAD (//) +_Mouse Queue: +; +MSG_PGWN_REPEATQUEUE_GAD (//) +_Repeat Queue: +; +MSG_PGWN_IDCMP_GAD (//) +_IDCMP Flags... +; +MSG_PGWN_REPEATQUEUE_SET_GAD (//) + +; +MSG_PGWN_MOUSEQUEUE_SET_GAD (//) + +; +MSG_PGWN_NOTIFYDEPTH_GAD (//) +_Notify Depth: +; +MSG_PGWN_MENUHELP_GAD (//) +_Menu Help: +; +MSG_PGWN_POINTERDELAY_GAD (//) +_PointerDelay: +; +MSG_WN_IDCMPFlags_WND (//) +IDCMP Flags +; +MSG_IDCMP_CANCEL_GAD (//) +_Cancel +; +MSG_IDCMP_OK_GAD (//) +_Ok +; +MSG_IDCMP_MENUPICK_GAD (//) +MenuPick: +; +MSG_IDCMP_GADGETHELP_GAD (//) +GadgetHelp: +; +MSG_IDCMP_MENUHELP_GAD (//) +MenuHelp: +; +MSG_IDCMP_IDCMPUPDATE_GAD (//) +IDCM_PUpdate: +; +MSG_IDCMP_DISKINSERTED_GAD (//) +Dis_kInserted: +; +MSG_IDCMP_DISKREMOVED_GAD (//) +_DiskRemoved: +; +MSG_IDCMP_INACTIVEWINDOW_GAD (//) +InActiveWin_dow: +; +MSG_IDCMP_ACTIVEWINDOW_GAD (//) +Ac_tiveWindow: +; +MSG_IDCMP_INTUITICKS_GAD (//) +_IntuiTicks: +; +MSG_IDCMP_CLOSEWINDOW_GAD (//) +C_loseWindow: +; +MSG_IDCMP_VANILLAKEY_GAD (//) +_VanillaKey: +; +MSG_IDCMP_RAWKEY_GAD (//) +R_AWKey: +; +MSG_IDCMP_GADGETDOWN_GAD (//) +Gadget_Down: +; +MSG_IDCMP_GADGETUP_GAD (//) +Gadget_Up: +; +MSG_IDCMP_MOUSEBUTTONS_GAD (//) +Mouse_Buttons: +; +MSG_IDCMP_NEWPREFS_GAD (//) +New_Prefs: +; +MSG_IDCMP_CHANGEWINDOW_GAD (//) +C_hangeWindow: +; +MSG_IDCMP_REFRESHWINDOW_GAD (//) +Re_freshWindow: +; +MSG_IDCMP_NEWSIZE_GAD (//) +_NewSize: +; +MSG_IDCMP_REQCLEAR_GAD (//) +ReqCl_ear: +; +MSG_IDCMP_REQSET_GAD (//) +Req_Set: +; +MSG_IDCMP_REQVERIFY_GAD (//) +_ReqVerify: +; +MSG_IDCMP_SIZEVERIFY_GAD (//) +_SizeVerify: +; +MSG_IDCMP_MENUVERIFY_GAD (//) +_MenuVerify: +; +MSG_IDCMP_MOUSEMOVE_GAD (//) +MouseMove +; +MSG_IDCMP_DELTAMOVE_GAD (//) +DeltaMove +; +MSG_PGMN_LABEL_GAD (//) +_Label: +; +MSG_PGMN_NEWLOOK_GAD (//) +_NewLook: +; +MSG_Working_WND (//) + +; +MSG_WORK_PROGRESS_FORMAT_GAD (//) +%ld%% +; +MSG_PGFR_X_GAD (//) +_X Pos: +; +MSG_PGFR_Y_GAD (//) +_Y Pos: +; +MSG_PGFR_WIDTH_GAD (//) +_Width: +; +MSG_PGFR_HEIGHT_GAD (//) +_Height: +; +MSG_PGFR_FRAME_GAD (//) +_Frame: +; +MSG_PGFR_FRAME_L0_GAD (//) +Button +; +MSG_PGFR_FRAME_L1_GAD (//) +IconDropBox +; +MSG_PGFR_FRAME_L2_GAD (//) +Ridge +; +MSG_PGFR_FRAME_L3_GAD (//) +Horiz. Line +; +MSG_PGFR_FRAME_L4_GAD (//) +Vert. Line +; +MSG_PGFR_RECESSED_GAD (//) +_Recessed: +; +MSG_EditMenu_WND (//) + +; +MSG_EditImage_WND (//) +Edit Image +; +MSG_List_WND (//) +Select... +; +MSG_LIST_GAD (//) + +; +MSG_PGMN_ITEM_LABEL_GAD (//) +_Label: +; +MSG_PGMN_ITEM_TITLE_GAD (//) +_Title: +; +MSG_PGMN_ITEM_COMMKEY_GAD (//) +Comm_Key: +; +MSG_PGMN_ITEM_POPUP_GAD (//) +_PopUp: +; +MSG_PGMN_ITEM_BARLABEL_GAD (//) +_BarLabel: +; +MSG_PGMN_ITEM_DISABLED_GAD (//) +_Disabled: +; +MSG_PGMN_ITEM_CHECKED_GAD (//) +_Checked: +; +MSG_PGMN_ITEM_TOGGLE_GAD (//) +Menu T_oggle: +; +MSG_PGPI_LABEL_GAD (//) +_Label: +; +MSG_PGPI_WIDTH_GAD (//) +_W: +; +MSG_PGPI_HEIGHT_GAD (//) +_H: +; +MSG_PGPI_DEPTH_GAD (//) +_D: +; +MSG_PGPI_TYPE_GAD (//) +_Type: +; +MSG_PGPI_TYPE_L0_GAD (//) +Normal image +; +MSG_PGPI_TYPE_L1_GAD (//) +Toolbar image +; +MSG_PGPI_TYPE_L2_GAD (//) +Pointer image +; +MSG_PGPI_SETPOINT_GAD (//) +_Set Point +; +MSG_PGPI_PALETTE_GAD (//) +Edit _Palette... +; +MSG_TBP_PALETTE_GAD (//) + +; +MSG_Screen_WND (//) +Screen Properties +; +MSG_SCREEN_PAGES_L0_GAD (//) +General +; +MSG_SCREEN_PAGES_L1_GAD (//) +Flags +; +MSG_PGSCR_WIDTH_GAD (//) +_Width: +; +MSG_PGSCR_HEIGHT_GAD (//) +_Height: +; +MSG_PGSCR_DEPTH_GAD (//) +_Depth: +; +MSG_PGSCR_TITLE_GAD (//) +_Title: +; +MSG_PGSCR_PUBNAME_GAD (//) +_PubName: +; +MSG_PGSCR_USE_GAD (//) +_Use: +; +MSG_PGSCR_USE_L0_GAD (//) +Workbench +; +MSG_PGSCR_USE_L1_GAD (//) +CustomScreen +; +MSG_PGSCR_USE_L2_GAD (//) +PublicScreen +; +MSG_PGSCR_MAKEPUBLIC_GAD (//) +_MakePublic: +; +MSG_PGSCR_MODEID_GAD (//) +ModeID: +; +MSG_PGSCR_MODEID_GET_GAD (//) +G +; +MSG_PGSCR_DEFAULTID_GAD (//) + +; +MSG_PGSCR_SHOWTITLE_GAD (//) +_ShowTitle: +; +MSG_PGSCR_BEHIND_GAD (//) +_Behind: +; +MSG_PGSCR_QUIET_GAD (//) +_Quiet: +; +MSG_PGSCR_AUTOSCROLL_GAD (//) +_AutoScroll: +; +MSG_PGSCR_FULLPALETTE_GAD (//) +_FullPalette: +; +MSG_PGSCR_DRAGGABLE_GAD (//) +_Draggable: +; +MSG_PGSCR_EXCLUSIVE_GAD (//) +_Exclusive: +; +MSG_PGSCR_SHAREPENS_GAD (//) +S_harePens: +; +MSG_PGSCR_INTERLEAVED_GAD (//) +_Interleaved: +; +MSG_PGSCR_LIKEWORKBENCH_GAD (//) +_Like Workbench: +; +MSG_PGSCR_MINIMIZEISG_GAD (//) +_Minimize ISG: +; +MSG_EditString_WND (//) +Edit Strings +; +MSG_PGSTR_STRINGS_FORMAT_GAD (//) +b2MSG ID|b2Type|b2String +; +MSG_PGSTR_ADD_GAD (//) +_Add +; +MSG_PGSTR_DELETE_GAD (//) +_Delete +; +MSG_PGSTR_EDIT_GAD (//) +_Edit +; +MSG_PGSTR_LABEL_GAD (//) +_Label: +; +MSG_PGSTR_STRING_GAD (//) +_String: +; +MSG_EditVersion_WND (//) +Edit Version +; +MSG_PGVER_PROGRAMNAME_GAD (//) +_ProgramName: +; +MSG_PGVER_AUTHOR_GAD (//) +_Author: +; +MSG_PGVER_VERSION_GAD (//) +_Version: +; +MSG_PGVER_DATE_GAD (//) +Date: +; +MSG_PGVER_REVISION_GAD (//) +_Revision: +; +MSG_PG_TRLV_FLAGS_COLUMNS_GAD (//) +_Columns: +; +MSG_PG_TRLV_FLAGS_FORMAT_GAD (//) +_Format: +; +MSG_PG_TRLV_FLAGS_DISABLED_GAD (//) +_Disabled: +; +MSG_PG_TRLV_FLAGS_MULTISELECT_GAD (//) +_MultiSelect: +; +MSG_PG_TRLV_FLAGS_BORDER_GAD (//) +_Border: +; +MSG_PG_TRLV_FLAGS_READONLY_GAD (//) +_ReadOnly: +; +MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD (//) +Show_TreeLines: +; +MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD (//) +_ShowSelected: +; +MSG_PG_TRLV_FLAGS_TREE_GAD (//) +Tr_ee: +; +MSG_Object_WND (//) +Objects +; +MSG_EditPalette_WND (//) +Edit Palette +; +MSG_PAL_PALETTE_GAD (//) + +; +MSG_PAL_GREEN_GAD (//) + +; +MSG_PAL_GREEN_FORMAT_GAD (//) +Green: %3ld +; +MSG_PAL_BLUE_GAD (//) + +; +MSG_PAL_BLUE_FORMAT_GAD (//) +Blue: %3ld +; +MSG_PAL_RED_GAD (//) + +; +MSG_PAL_RED_FORMAT_GAD (//) +Red: %3ld +; +MSG_PAL_CANCEL_GAD (//) +_Cancel +; +MSG_PAL_OK_GAD (//) +_Ok +; +MSG_PGWN_TABORDER_DOWN_GAD (//) +_Down +; +MSG_PGWN_TABORDER_UP_GAD (//) +_Up +; +MSG_PGWN_TABORDER_LIST_GAD (//) + +; +MSG_STATUS_CHANGED_GAD (//) + +; +MSG_STATUS_TEXT_GAD (//) + +; +MSG_CANTALLOCREQ (//) +Can't allocate asl requester +; +MSG_CANTALLOCOBJECT (//) +Can't create object +; +MSG_CANTOPENTOOLBAR (//) +Can't open toolbar window +; +MSG_CANTOPENOBJECTWINDOW (//) +Can't open object list window +; +MSG_CANTOPENCLIPBOARD (//) +Can't open clipboard +; +MSG_GAD_BUTTON (//) +Button +; +MSG_GAD_CHECKBOX (//) +CheckBox +; +MSG_GAD_COLORWHEEL (//) +ColorWheel +; +MSG_GAD_CYCLE (//) +Cycle +; +MSG_GAD_DATATYPE (//) +Datatype +; +MSG_GAD_GRADIENTSLIDER (//) +Gradientslider +; +MSG_GAD_INTEGER (//) +Integer +; +MSG_GAD_LISTVIEW (//) +Listview +; +MSG_GAD_MX (//) +MX +; +MSG_GAD_NUMBER (//) +Number +; +MSG_GAD_PAGE (//) +Page +; +MSG_GAD_PALETTE (//) +Palette +; +MSG_GAD_POPUPMENU (//) +PopupMenu +; +MSG_GAD_PROGRESS (//) +Progress +; +MSG_GAD_SCROLLER (//) +Scroller +; +MSG_GAD_SLIDER (//) +Slider +; +MSG_GAD_STRING (//) +String +; +MSG_GAD_TAPEDECK (//) +Tapedeck +; +MSG_GAD_TEXT (//) +Text +; +MSG_GAD_TEXTFIELD (//) +Textfield +; +MSG_GAD_TREEVIEW (//) +TreeView +; +MSG_NEW (//) +(new) +; +MSG_LOADING (//) +Loading... +; +MSG_SAVING (//) +Saving... +; +MSG_GENERATING (//) +Generating... +; +MSG_ABOUT (//) +GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nRegistered to:\n%s\n%s\n\nSerialNr: %s +; +MSG_ERROPENLIB_GRADIENTSLIDER (//) +Can't open gradientslider.gadget +; +MSG_NEWTITLE (//) +(new title) +; +MSG_NEWITEM (//) +(new item) +; +MSG_NEWSUB (//) +(new sub) +; +MSG_CHANGEME (//) +.%ld +; +MSG_EDITSTR_STRING (//) +%s\tString\t%s +; +MSG_UNNAMED (//) + +; +MSG_EMPTY (//) + +; +MSG_UNTITLED (//) + +; +MSG_UNKNOWN (//) + +; +MSG_OK (//) +Ok +; +MSG_ERROR (//) +Error +; +MSG_YOUNEEDNEWERVERSION (//) +You need at least GadToolsBox v%ld.%ld to open this resource file. +; +MSG_ERRCREATEPROJECTPORT (//) +Can't create IDCMP message port +; +MSG_ERRCREATEPOINTER (//) +Can't create pointer object +; +MSG_ERRCREATEIMAGE (//) +Can't create image object +; +MSG_PGDT_DTOBJ (//) +DT Obj +; +MSG_ERROPENLIB_COLORWHEEL (//) +Can't open colorwheel.gadget +; +MSG_ALIGNLEFT (//) +Align to left +; +MSG_ALIGNHCENTER (//) +Align width center +; +MSG_ALIGNRIGHT (//) +Align to right +; +MSG_ALIGNTOP (//) +Align to top +; +MSG_ALIGNVCENTER (//) +Align height center +; +MSG_ALIGNBOTTOM (//) +Align to bottom +; +MSG_SPREADHORIZ (//) +Spread horizontal +; +MSG_SPREADVERT (//) +Spread vertical +; +MSG_FRAMEOBJECT (//) +Frame object +; +MSG_GADGETOBJECT (//) +Gadget object +; +MSG_WINDOWOBJECT (//) +Window object +; +MSG_IMAGEOBJECT (//) +Image object +; +MSG_STRINGOBJECT (//) +String object +; +MSG_NOOBJECT (//) +No object properties +; +MSG_MENUOBJECT (//) +Menu object +; +MSG_CONFIRMATION (//) +Confirmation Request +; +MSG_REPLACEFILE (//) +File %s already exists. Replace? +; +MSG_YESNO (//) +Yes|No +; +MSG_CANTOPENSTATUSWINDOW (//) +Can't open status window +; +MSG_CANTOPENPROPERTIESWINDOW (//) +Can't open properties window +; +MSG_STATUS_RESLOADED (//) +Resource file loaded. +; +MSG_STATUS_RESSAVED (//) +Resource file saved. +; +MSG_STATUS_MOVINGOBJECT (//) +Moving object... +; +MSG_STATUS_RESIZINGOBJECT (//) +Resizing object... +; +MSG_STATUS_RESGENERATED (//) +Source code generated. +; +MSG_STATUS_CREATINGOBJECT (//) +Creating object... +; +MSG_STATUS_SELECTINGOBJECTS (//) +Selecting objects... +; +MSG_ERROPENLIB_PAGE (//) +Can't open page.gadget +; +MSG_ERROPENLIB_PROGRESS (//) +Can't open progress.gadget +; +MSG_ERROPENLIB_TEXTFIELD (//) +Can't open textfield.gadget +; +MSG_ERROPENLIB_TREEVIEW (//) +Can't open listview.gadget +; +MSG_ERROPENLIB_SMARTBITMAP (//) +Can't open smartbitmap.image +; +MSG_ERR_OPENSCREEN (//) +Can't open screen +; +MSG_ERR_VISUALINFO (//) +Can't alloc visual info +; +MSG_ERR_SCRDRAWINFO (//) +Can't alloc screen draw info +; +MSG_ERR_UNKNOWN (//) +Unknown error occured! +; +MSG_ERROPENLIB_TAPEDECK (//) +Can't open tapedeck.gadget +; +MSG_CANTCREATEPOPUPMENUS (//) +Can't create popup menus +; +MSG_ERROPENLIB_POPUPMENU (//) +Can't open popupmenu.library +; +MSG_CANTCREATEPOPUPMENUCLASS (//) +Can't create popupmenu class +; +MSG_CANTCREATEDRAWCLASS (//) +Can't create draw class +; +MSG_ABOUTUNREG (//) +GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nUnregistered version\nPlease register!\n +; +MSG_SELECTPROJECTFILE (//) +Select project file to open... +; +MSG_SAVEPROJECTAS (//) +Save project as... +; +MSG_ENTERBASENAME (//) +Enter base filename to generate... +; +MSG_NOTSAVED (//) +Project %s has been changed. Continue? +; diff --git a/GadToolsBox/GadToolsBox.ct b/GadToolsBox/GadToolsBox.ct new file mode 100755 index 0000000..27ee777 --- /dev/null +++ b/GadToolsBox/GadToolsBox.ct @@ -0,0 +1,2766 @@ +## version $VER: GadToolsBox.catalog 3.0 (xx.xx.xx) +## language +## codeset 0 +; +; GadToolsBox locale translation file +; +MSG_MainProject_MTITLE + +;\000\000Project +; +MSG_MainProjectNew_MITEM + +;N\000New +; +MSG_MainProjectOpen_MITEM + +;O\000Open... +; +MSG_MainProjectSave_MITEM + +;S\000Save +; +MSG_MainProjectSaveAs_MITEM + +;A\000Save As... +; +MSG_MainProjectSaveSource_MITEM + +;W\000Save Source... +; +MSG_MainProjectPreferences_MITEM + +;P\000Preferences... +; +MSG_MainProjectAbout_MITEM + +;?\000About... +; +MSG_MainProjectQuit_MITEM + +;Q\000Quit +; +MSG_MainEdit_MTITLE + +;\000\000Edit +; +MSG_MainEditUndo_MITEM + +;U\000Undo +; +MSG_MainEditCut_MITEM + +;X\000Cut +; +MSG_MainEditCopy_MITEM + +;C\000Copy +; +MSG_MainEditPaste_MITEM + +;V\000Paste +; +MSG_MainEditClear_MITEM + +;B\000Clear +; +MSG_MainEditSelectAll_MITEM + +;A\000Select All +; +MSG_MainEditGrid_MITEM + +;G\000Grid... +; +MSG_MainEditAlign_MITEM + +;\000\000Align +; +MSG_MainEditAlignToLeft_MSUB + +;\000\000Left +; +MSG_MainEditAlignToHCenter_MSUB + +;\000\000Width center +; +MSG_MainEditAlignToRight_MSUB + +;\000\000Right +; +MSG_MainEditAlignToTop_MSUB + +;\000\000Top +; +MSG_MainEditAlignToVCenter_MSUB + +;\000\000Height center +; +MSG_MainEditAlignToBottom_MSUB + +;\000\000Bottom +; +MSG_MainEditClone_MITEM + +;\000\000Clone +; +MSG_MainEditCloneWidth_MSUB + +;\000\000Width +; +MSG_MainEditCloneHeight_MSUB + +;\000\000Height +; +MSG_MainEditCloneBoth_MSUB + +;\000\000Both +; +MSG_MainEditSpread_MITEM + +;\000\000Spread +; +MSG_MainEditSpreadHoriz_MSUB + +;\000\000Horizontal +; +MSG_MainEditSpreadVertical_MSUB + +;\000\000Vertical +; +MSG_MainObject_MTITLE + +;\000\000Objects +; +MSG_MainObjWindow_MITEM + +;\000\000Window +; +MSG_MainObjWindowNew_MSUB + +;\000\000New... +; +MSG_MainObjWindowClose_MSUB + +;\000\000Close +; +MSG_MainObjWindowDelete_MSUB + +;\000\000Delete +; +MSG_MainObjWindowRefresh_MSUB + +;R\000Refresh +; +MSG_MainObjMenu_MITEM + +;\000\000Menu +; +MSG_MainObjMenuNew_MSUB + +;\000\000New... +; +MSG_MainObjMenuClose_MSUB + +;\000\000Close +; +MSG_MainObjMenuDelete_MSUB + +;\000\000Delete +; +MSG_MainObjImage_MITEM + +;\000\000Image +; +MSG_MainObjImageNew_MSUB + +;\000\000New... +; +MSG_MainObjImageClose_MSUB + +;\000\000Close +; +MSG_MainObjImageDelete_MSUB + +;\000\000Delete +; +MSG_MainObjStrings_MITEM + +;\000\000Strings +; +MSG_MainObjStringsOpen_MSUB + +;\000\000Open +; +MSG_MainObjStringsClose_MSUB + +;\000\000Close +; +MSG_MainObjScreen_MITEM + +;\000\000Screen +; +MSG_MainObjScreenOpen_MSUB + +;\000\000Open +; +MSG_MainObjScreenClose_MSUB + +;\000\000Close +; +MSG_MainObjVersion_MITEM + +;\000\000Version +; +MSG_MainObjVersionOpen_MSUB + +;\000\000Open +; +MSG_MainObjVersionClose_MSUB + +;\000\000Close +; +MSG_MainWindow_MTITLE + +;\000\000Windows +; +MSG_MainWindowProperties_MITEM + +;\000\000Properties +; +MSG_MainWindowObjects_MITEM + +;\000\000Objects +; +MSG_MainWindowStatus_MITEM + +;\000\000Status +; +MSG_MainWindowHideAll_MITEM + +;\000\000Hide All +; +MSG_SCREENTITLE_SCR + +;GadToolsBox v3 (GTB.%ld) +; +MSG_PGBO_LABEL_GAD + +;_Label: +; +MSG_PGBO_X_GAD + +; +; +MSG_PGBO_Y_GAD + +; +; +MSG_PGBO_WIDTH_GAD + +; +; +MSG_PGBO_HEIGHT_GAD + +; +; +MSG_PGBO_REL_X_GAD + +;_X Pos: +; +MSG_PGBO_REL_X_L0_GAD + +;Left +; +MSG_PGBO_REL_X_L1_GAD + +;Right +; +MSG_PGBO_REL_Y_GAD + +;_Y Pos: +; +MSG_PGBO_REL_Y_L0_GAD + +;Top +; +MSG_PGBO_REL_Y_L1_GAD + +;Bottom +; +MSG_PGBO_REL_W_GAD + +;_Width: +; +MSG_PGBO_REL_W_L0_GAD + +;Normal +; +MSG_PGBO_REL_W_L1_GAD + +;Window +; +MSG_PGBO_REL_H_GAD + +;_Height: +; +MSG_PGBO_REL_H_L0_GAD + +;Normal +; +MSG_PGBO_REL_H_L1_GAD + +;Window +; +MSG_ABOUT_OK_GAD + +;Ok +; +MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD + +;_Immediate: +; +MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_BUTT_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_GAD + +;Title Type: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD + +;Text +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD + +;Toolbar +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD + +;Image +; +MSG_PG_BUTT_FLAGS_TOGGLE_GAD + +;_Toggle: +; +MSG_PG_CBOX_FLAGS_SCALED_GAD + +;_Scaled: +; +MSG_PG_CBOX_FLAGS_SCALED_L0_GAD + +;None +; +MSG_PG_CBOX_FLAGS_SCALED_L1_GAD + +;Normal +; +MSG_PG_CBOX_FLAGS_SCALED_L2_GAD + +;Adaptive +; +MSG_PG_CBOX_FLAGS_CHECKED_GAD + +;_Checked: +; +MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_CBOX_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_CWHL_FLAGS_MAXPENS_GAD + +;MaxPens: +; +MSG_PG_CWHL_FLAGS_ABBRV_GAD + +;Abbrv: +; +MSG_PG_CWHL_FLAGS_GSLIDER_GAD + +;Grad-Slider: +; +MSG_PG_CWHL_FLAGS_BEVELBOX_GAD + +;BevelBox: +; +MSG_PG_CWHL_FLAGS_DISABLED_GAD + +;Disabled: +; +MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD + +;FollowMouse: +; +MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD + +;Highlabel: +; +MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD + +;Underscore: +; +MSG_PG_CYCE_FLAGS_DISABLED_GAD + +;Disabled: +; +MSG_PG_LISTS_EDIT_GAD + +; +; +MSG_PG_LISTS_ACTIVE_GAD + +; +; +MSG_PG_LISTS_LIST_GAD + +; +; +MSG_PG_LISTS_UP_GAD + +;_Up +; +MSG_PG_LISTS_DOWN_GAD + +;D_own +; +MSG_PG_LISTS_ADD_GAD + +;_Add +; +MSG_PG_LISTS_DEL_GAD + +;_Del +; +MSG_PG_DTYP_FLAGS_OBJECT_GAD + +;_File: +; +MSG_PG_DTYP_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD + +;_Knob Pixels: +; +MSG_PG_GRSL_FLAGS_MAXVAL_GAD + +;_MaxVal: +; +MSG_PG_GRSL_FLAGS_CURVAL_GAD + +;_CurVal: +; +MSG_PG_GRSL_FLAGS_SKIPVAL_GAD + +;_SkipVal: +; +MSG_PG_GRSL_FLAGS_PENS_GAD + +;_Pens: +; +MSG_PG_GRSL_FLAGS_FREEDOM_GAD + +;_Freedom: +; +MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD + +;Horizontal +; +MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD + +;Vertical +; +MSG_PG_GRSL_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_INTR_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_INTR_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_INTR_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_INTR_FLAGS_TABCYCLE_GAD + +;_TabCycle: +; +MSG_PG_INTR_FLAGS_REPLACEMODE_GAD + +;_ReplaceMode: +; +MSG_PG_INTR_FLAGS_EXITHELP_GAD + +;_ExitHelp: +; +MSG_PG_INTR_VAR_MAXCHARS_GAD + +;_MaxChars: +; +MSG_PG_INTR_VAR_NUMBER_GAD + +;_Number: +; +MSG_PG_INTR_VAR_JUSTIFICATION_GAD + +;_Justification: +; +MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD + +;Left +; +MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD + +;Right +; +MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD + +;Center +; +MSG_PG_LVIE_FLAGS_ARROWS_GAD + +;_Arrows: +; +MSG_PG_LVIE_FLAGS_SPACING_GAD + +;S_pacing: +; +MSG_PG_LVIE_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_LVIE_FLAGS_READONLY_GAD + +;_ReadOnly: +; +MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD + +;_ShowSelected: +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD + +; +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD + +;None +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD + +;Normal +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD + +;Adaptive +; +MSG_PG_MX_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_MX_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_MX_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_MX_FLAGS_SCALED_GAD + +;_Scaled: +; +MSG_PG_MX_FLAGS_SCALED_L0_GAD + +;None +; +MSG_PG_MX_FLAGS_SCALED_L1_GAD + +;Normal +; +MSG_PG_MX_FLAGS_SCALED_L2_GAD + +;Adaptive +; +MSG_PG_MX_FLAGS_PLACEMENT_GAD + +;_Placement: +; +MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD + +;Left +; +MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD + +;Right +; +MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD + +;Above +; +MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD + +;Below +; +MSG_PG_MX_FLAGS_SPACING_GAD + +;Sp_acing: +; +MSG_PG_NUMB_FLAGS_FORMAT_GAD + +;_Format: +; +MSG_PG_NUMB_FLAGS_DEFAULT_GAD + +;D_efault: +; +MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD + +;_MaxNumLen: +; +MSG_PG_NUMB_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_NUMB_FLAGS_BORDER_GAD + +;_Border: +; +MSG_PG_NUMB_FLAGS_CLIPPED_GAD + +;_Clipped: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD + +;_Justification: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD + +;Left +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD + +;Right +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD + +;Center +; +MSG_PGGT_LABEL_GAD + +;_Label: +; +MSG_PGGT_TITLE_GAD + +;_Title: +; +MSG_PGGT_X_GAD + +; +; +MSG_PGGT_Y_GAD + +; +; +MSG_PGGT_WIDTH_GAD + +; +; +MSG_PGGT_HEIGHT_GAD + +; +; +MSG_PGGT_PLACEMENT_GAD + +;_Placement: +; +MSG_PGGT_PLACEMENT_L0_GAD + +;In +; +MSG_PGGT_PLACEMENT_L1_GAD + +;Left +; +MSG_PGGT_PLACEMENT_L2_GAD + +;Right +; +MSG_PGGT_PLACEMENT_L3_GAD + +;Above +; +MSG_PGGT_PLACEMENT_L4_GAD + +;Below +; +MSG_PGGT_REL_X_GAD + +;_X Pos: +; +MSG_PGGT_REL_X_L0_GAD + +;Left +; +MSG_PGGT_REL_X_L1_GAD + +;Right +; +MSG_PGGT_REL_Y_GAD + +;_Y Pos: +; +MSG_PGGT_REL_Y_L0_GAD + +;Top +; +MSG_PGGT_REL_Y_L1_GAD + +;Bottom +; +MSG_PGGT_REL_W_GAD + +;_Width: +; +MSG_PGGT_REL_W_L0_GAD + +;Normal +; +MSG_PGGT_REL_W_L1_GAD + +;Window +; +MSG_PGGT_REL_H_GAD + +;_Height: +; +MSG_PGGT_REL_H_L0_GAD + +;Normal +; +MSG_PGGT_REL_H_L1_GAD + +;Window +; +MSG_PG_PAGE_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_PAGE_FLAGS_LAYOUT_GAD + +;_Layout: +; +MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD + +;Simple +; +MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD + +;MUI Style +; +MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD + +;GadTools +; +MSG_PG_PAGE_FLAGS_STYLE_GAD + +;_Style: +; +MSG_PG_PAGE_FLAGS_STYLE_L0_GAD + +;Normal +; +MSG_PG_PAGE_FLAGS_STYLE_L1_GAD + +;Hilight +; +MSG_PG_PAGE_FLAGS_STYLE_L2_GAD + +;Shadow +; +MSG_PG_PAGE_LISTS_LIST_GAD + +; +; +MSG_PG_PAGE_LISTS_ADD_GAD + +;< _Add +; +MSG_PG_PAGE_LISTS_DEL_GAD + +;> _Del +; +MSG_PG_PAGE_LISTS_UP_GAD + +;_Up +; +MSG_PG_PAGE_LISTS_DOWN_GAD + +;D_own +; +MSG_PG_PAGE_LISTS_WINDOWS_GAD + +; +; +MSG_PG_PAGE_LISTS_ACTIVE_GAD + +; +; +MSG_PG_PALT_FLAGS_COLOR_GAD + +; +; +MSG_PG_PALT_FLAGS_OFFSET_GAD + +;_Offset: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD + +; +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD + +;: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD + +;None +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD + +;Width +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD + +;Height +; +MSG_PG_PALT_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_PALT_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_PALT_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_PALT_FLAGS_TYPE_GAD + +;: +; +MSG_PG_PALT_FLAGS_TYPE_L0_GAD + +;Depth +; +MSG_PG_PALT_FLAGS_TYPE_L1_GAD + +;Colors +; +MSG_PG_PALT_FLAGS_TYPE_L2_GAD + +;Screen +; +MSG_PG_PUPM_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_PUPM_FLAGS_NEWLOOK_GAD + +;_NewLook: +; +MSG_PG_PRGR_FLAGS_MAX_GAD + +;_Max: +; +MSG_PG_PRGR_FLAGS_CURRENT_GAD + +;_Current: +; +MSG_PG_PRGR_FLAGS_FORMAT_GAD + +;_Format: +; +MSG_PG_PRGR_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_PRGR_FLAGS_BORDER_GAD + +;_Border: +; +MSG_PG_PRGR_FLAGS_PERCENTS_GAD + +;Show in _%: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_GAD + +;_Placement: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD + +;In +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD + +;Left +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD + +;Right +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD + +;Above +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD + +;Below +; +MSG_PG_SCRL_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD + +;_Immediate: +; +MSG_PG_SCRL_FLAGS_RELVERIFY_GAD + +;_RelVerify: +; +MSG_PG_SCRL_VAR_TOP_GAD + +;_Top: +; +MSG_PG_SCRL_VAR_TOTAL_GAD + +;T_otal: +; +MSG_PG_SCRL_VAR_VISIBLE_GAD + +;_Visible: +; +MSG_PG_SCRL_VAR_FREEDOM_GAD + +;_Freedom: +; +MSG_PG_SCRL_VAR_FREEDOM_L0_GAD + +;Horizontal +; +MSG_PG_SCRL_VAR_FREEDOM_L1_GAD + +;Vertical +; +MSG_PG_SCRL_VAR_ARROWS_GAD + +; +; +MSG_PG_SCRL_VAR_ARROW_TYPE_GAD + +;_Arrows: +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD + +;None +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD + +;Normal +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD + +;Adaptive +; +MSG_PG_SLIR_FLAGS_FORMAT_GAD + +;_Format: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD + +;Max_PixelLen: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD + +; +; +MSG_PG_SLIR_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD + +;_Immediate: +; +MSG_PG_SLIR_FLAGS_RELVERIFY_GAD + +;_RelVerify: +; +MSG_PG_SLIR_VAR_MIN_GAD + +;_Min: +; +MSG_PG_SLIR_VAR_MAX_GAD + +;M_ax: +; +MSG_PG_SLIR_VAR_LEVEL_GAD + +;_Level: +; +MSG_PG_SLIR_VAR_MAXLEVLEN_GAD + +;MaxLe_vLen: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_GAD + +;_Justification: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD + +;Left +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD + +;Right +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD + +;Center +; +MSG_PG_SLIR_VAR_FREEDOM_GAD + +;_Freedom: +; +MSG_PG_SLIR_VAR_FREEDOM_L0_GAD + +;Horizontal +; +MSG_PG_SLIR_VAR_FREEDOM_L1_GAD + +;Vertical +; +MSG_PG_SLIR_VAR_LEVELPLACE_GAD + +;Level _Place: +; +MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD + +;Left +; +MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD + +;Right +; +MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD + +;Above +; +MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD + +;Below +; +MSG_PG_STRG_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_STRG_FLAGS_UNDERSCORE_GAD + +;_Underscore: +; +MSG_PG_STRG_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_STRG_FLAGS_TABCYCLE_GAD + +;_TabCycle: +; +MSG_PG_STRG_FLAGS_REPLACEMODE_GAD + +;_ReplaceMode: +; +MSG_PG_STRG_FLAGS_EXITHELP_GAD + +;_ExitHelp: +; +MSG_PG_STRG_VAR_MAXCHARS_GAD + +;MaxChars: +; +MSG_PG_STRG_VAR_STRING_GAD + +;_String: +; +MSG_PG_STRG_VAR_JUSTIFICATION_GAD + +;_Justification: +; +MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD + +;Left +; +MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD + +;Right +; +MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD + +;Center +; +MSG_PG_TDEK_FLAGS_FRAMES_GAD + +;_Frames: +; +MSG_PG_TDEK_FLAGS_CURRENT_GAD + +;_Current: +; +MSG_PG_TDEK_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_TDEK_FLAGS_TAPE_GAD + +;_Tape: +; +MSG_PG_TDEK_FLAGS_PAUSED_GAD + +;_Paused: +; +MSG_PG_TEXT_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD + +;_Highlabel: +; +MSG_PG_TEXT_FLAGS_BORDER_GAD + +;_Border: +; +MSG_PG_TEXT_FLAGS_CLIPPED_GAD + +;_Clipped: +; +MSG_PG_TEXT_FLAGS_COPYTEXT_GAD + +;C_opyText: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD + +;_Justification: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD + +;Left +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD + +;Right +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD + +;Center +; +MSG_PG_TEXT_FLAGS_DEFAULT_GAD + +;D_efault: +; +MSG_PG_TFLD_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_TFLD_FLAGS_TABCYCLE_GAD + +;_TabCycle: +; +MSG_PG_TFLD_FLAGS_READONLY_GAD + +;_Read Only: +; +MSG_PG_TFLD_FLAGS_INVERTED_GAD + +;_Inverted: +; +MSG_PG_TFLD_FLAGS_PARTIAL_GAD + +;_Partial: +; +MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD + +;_BlockCursor +; +MSG_PG_TFLD_FLAGS_VCENTER_GAD + +;_VCenter: +; +MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD + +;Pass Command: +; +MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD + +;_Clipboard: +; +MSG_PG_TFLD_FLAGS_UNDO_GAD + +;_Undo: +; +MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD + +;_NonPrintChars: +; +MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD + +;_Max Size Beep: +; +MSG_PG_TFLD_FLAGS_NOGHOST_GAD + +;No_Ghost: +; +MSG_PG_TFLD_FLAGS_MODIFIED_GAD + +;M_odified: +; +MSG_PG_TFLD_FLAGS_USERALIGN_GAD + +;_UserAlign: +; +MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD + +;_RuledPaper: +; +MSG_PG_TFLD_FLAGS_BORDER_GAD + +;_Border: +; +MSG_PG_TFLD_FLAGS_BORDER_L0_GAD + +;None +; +MSG_PG_TFLD_FLAGS_BORDER_L1_GAD + +;Bevel +; +MSG_PG_TFLD_FLAGS_BORDER_L2_GAD + +;Double Bevel +; +MSG_PG_TFLD_FLAGS_ALIGN_GAD + +;_Align: +; +MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD + +;Left +; +MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD + +;Right +; +MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD + +;Center +; +MSG_PG_TFLD_VAR_BLINKRATE_GAD + +;_BlinkRate: +; +MSG_PG_TFLD_VAR_MAXSIZE_GAD + +;_MaxSize: +; +MSG_PG_TFLD_VAR_TABSPACES_GAD + +;_TabSpaces: +; +MSG_PG_TFLD_VAR_SPACING_GAD + +;_Spacing: +; +MSG_PG_TFLD_VAR_DELIMITERS_GAD + +;_Delimiters: +; +MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD + +;_AcceptChars: +; +MSG_PG_TFLD_VAR_REJECTCHARS_GAD + +;_RejectChars: +; +MSG_Properties_WND + +;Properties +; +MSG_PROPERTIES_LOCK_GAD + +; +; +MSG_PROPERTIES_APPLY_GAD + +;A +; +MSG_PROPERTIES_PAGES_L0_GAD + +;General +; +MSG_PROPERTIES_PAGES_L1_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L2_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L3_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L4_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L5_GAD + +;Lists +; +MSG_PROPERTIES_PAGES_L6_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L7_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L8_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L9_GAD + +;Var. +; +MSG_PROPERTIES_PAGES_L10_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L11_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L12_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L13_GAD + +;General +; +MSG_PROPERTIES_PAGES_L14_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L15_GAD + +;Lists +; +MSG_PROPERTIES_PAGES_L16_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L17_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L18_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L19_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L20_GAD + +;Var. +; +MSG_PROPERTIES_PAGES_L21_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L22_GAD + +;Var. +; +MSG_PROPERTIES_PAGES_L23_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L24_GAD + +;Var. +; +MSG_PROPERTIES_PAGES_L25_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L26_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L27_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L28_GAD + +;Flags2 +; +MSG_PROPERTIES_PAGES_L29_GAD + +;Var. +; +MSG_PROPERTIES_PAGES_L30_GAD + +;General +; +MSG_PROPERTIES_PAGES_L31_GAD + +;Flags1 +; +MSG_PROPERTIES_PAGES_L32_GAD + +;Style +; +MSG_PROPERTIES_PAGES_L33_GAD + +;Flags2 +; +MSG_PROPERTIES_PAGES_L34_GAD + +;Flags3 +; +MSG_PROPERTIES_PAGES_L35_GAD + +;General +; +MSG_PROPERTIES_PAGES_L36_GAD + +;General +; +MSG_PROPERTIES_PAGES_L37_GAD + +; +; +MSG_PROPERTIES_PAGES_L38_GAD + +;Item +; +MSG_PROPERTIES_PAGES_L39_GAD + +;General +; +MSG_PROPERTIES_PAGES_L40_GAD + +;Flags +; +MSG_PROPERTIES_PAGES_L41_GAD + +;General +; +MSG_PROPERTIES_PAGES_L42_GAD + +;Tab Order +; +MSG_Edit_WND + +; +; +MSG_Preferences_WND + +;Preferences +; +MSG_PREFS_SAVE_GAD + +;_Save +; +MSG_PREFS_USE_GAD + +;_Use +; +MSG_PREFS_CANCEL_GAD + +;_Cancel +; +MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD + +;Auto_Backup: +; +MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD + +;S_ize zoom: +; +MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD + +;_Fast redraw: +; +MSG_PG_PREFS_GENERAL_GETSCREEN_GAD + +;Screen _mode... +; +MSG_PG_PREFS_GENERAL_SCREENMODE_GAD + +; +; +MSG_PG_PREFS_GEN_LIST_GAD + +;_Generators: +; +MSG_PG_PREFS_GENERAL_FONTNAME_GAD + +; +; +MSG_PG_PREFS_GENERAL_EDITFONT_GAD + +;Editor _font... +; +MSG_Grid_WND + +;Grid +; +MSG_GRID_X_GAD + +;_X Size: +; +MSG_GRID_Y_GAD + +;_Y Size: +; +MSG_GRID_SHOW_GAD + +;_Show Grid: +; +MSG_GRID_SNAP_GAD + +;S_nap To Grid: +; +MSG_GRID_OK_GAD + +;_Ok +; +MSG_GRID_CANCEL_GAD + +;_Cancel +; +MSG_PGWN_LABEL_GAD + +;_Label: +; +MSG_PGWN_X_GAD + +; +; +MSG_PGWN_Y_GAD + +; +; +MSG_PGWN_WIDTH_GAD + +; +; +MSG_PGWN_HEIGHT_GAD + +; +; +MSG_PGWN_INNERHEIGHT_GAD + +;Inner +; +MSG_PGWN_INNERWIDTH_GAD + +;Inner +; +MSG_PGWN_REL_H_GAD + +;_Height: +; +MSG_PGWN_REL_H_L0_GAD + +;Normal +; +MSG_PGWN_REL_H_L1_GAD + +;Screen +; +MSG_PGWN_REL_W_GAD + +;_Width: +; +MSG_PGWN_REL_W_L0_GAD + +;Normal +; +MSG_PGWN_REL_W_L1_GAD + +;Screen +; +MSG_PGWN_REL_Y_GAD + +;_Y Pos: +; +MSG_PGWN_REL_Y_L0_GAD + +;Top +; +MSG_PGWN_REL_Y_L1_GAD + +;Bottom +; +MSG_PGWN_REL_Y_L2_GAD + +;Center +; +MSG_PGWN_REL_X_GAD + +;_X Pos: +; +MSG_PGWN_REL_X_L0_GAD + +;Left +; +MSG_PGWN_REL_X_L1_GAD + +;Right +; +MSG_PGWN_REL_X_L2_GAD + +;Center +; +MSG_PGWN_SCREEN_TITLE_GAD + +;_Screen Title: +; +MSG_PGWN_WINDOW_TITLE_GAD + +;_Window Title: +; +MSG_PGWN_PAGED_GAD + +;Pa_ged: +; +MSG_PGWN_FONTADAPTIVE_GAD + +;_Font Adaptive: +; +MSG_PGWN_APPWINDOW_GAD + +;_App Window: +; +MSG_PGWN_PROJECT_GAD + +;_Project: +; +MSG_PGWN_MENU_GET_GAD + +;S +; +MSG_PGWN_MENU_GAD + +;Menu: +; +MSG_PGWN_ZOOM_GAD + +;_Zoom: +; +MSG_PGWN_BACKDROP_GAD + +;B_ackdrop: +; +MSG_PGWN_BORDERLESS_GAD + +;_Borderless: +; +MSG_PGWN_SIZEBBOTTOM_GAD + +;Size B_Bottom: +; +MSG_PGWN_SIZEBRIGHT_GAD + +;Size B_Right: +; +MSG_PGWN_CLOSEGADGET_GAD + +;Close: +; +MSG_PGWN_DEPTHGADGET_GAD + +;D_epth: +; +MSG_PGWN_SIZEGADGET_GAD + +;_Size: +; +MSG_PGWN_DRAGGADGET_GAD + +;_Drag: +; +MSG_PGWN_DRAGGADGET_L0_GAD + +;None +; +MSG_PGWN_DRAGGADGET_L1_GAD + +;Normal +; +MSG_PGWN_DRAGGADGET_L2_GAD + +;Tool Horz. +; +MSG_PGWN_DRAGGADGET_L3_GAD + +;Tool Vert. +; +MSG_PGWN_FALLBACK_GAD + +;_FallBack: +; +MSG_PGWN_REPORTMOUSE_GAD + +;Report_Mouse: +; +MSG_PGWN_AUTOADJUST_GAD + +;A_utoAdjust: +; +MSG_PGWN_ACTIVATE_GAD + +;_Activate: +; +MSG_PGWN_RMBTRAP_GAD + +;RMB_Trap: +; +MSG_PGWN_NEWLOOKMENUS_GAD + +;N_ewLookMenus: +; +MSG_PGWN_NOCAREREFRESH_GAD + +;_NoCareRefresh: +; +MSG_PGWN_GZZ_GAD + +;_GimmeZeroZero: +; +MSG_PGWN_REFRESH_GAD + +;_Refresh: +; +MSG_PGWN_REFRESH_L0_GAD + +;Simple +; +MSG_PGWN_REFRESH_L1_GAD + +;Smart +; +MSG_PGWN_REFRESH_L2_GAD + +;SuperBitmap +; +MSG_PGWN_MOUSEQUEUE_GAD + +;_Mouse Queue: +; +MSG_PGWN_REPEATQUEUE_GAD + +;_Repeat Queue: +; +MSG_PGWN_IDCMP_GAD + +;_IDCMP Flags... +; +MSG_PGWN_REPEATQUEUE_SET_GAD + +; +; +MSG_PGWN_MOUSEQUEUE_SET_GAD + +; +; +MSG_PGWN_NOTIFYDEPTH_GAD + +;_Notify Depth: +; +MSG_PGWN_MENUHELP_GAD + +;_Menu Help: +; +MSG_PGWN_POINTERDELAY_GAD + +;_PointerDelay: +; +MSG_WN_IDCMPFlags_WND + +;IDCMP Flags +; +MSG_IDCMP_CANCEL_GAD + +;_Cancel +; +MSG_IDCMP_OK_GAD + +;_Ok +; +MSG_IDCMP_MENUPICK_GAD + +;MenuPick: +; +MSG_IDCMP_GADGETHELP_GAD + +;GadgetHelp: +; +MSG_IDCMP_MENUHELP_GAD + +;MenuHelp: +; +MSG_IDCMP_IDCMPUPDATE_GAD + +;IDCM_PUpdate: +; +MSG_IDCMP_DISKINSERTED_GAD + +;Dis_kInserted: +; +MSG_IDCMP_DISKREMOVED_GAD + +;_DiskRemoved: +; +MSG_IDCMP_INACTIVEWINDOW_GAD + +;InActiveWin_dow: +; +MSG_IDCMP_ACTIVEWINDOW_GAD + +;Ac_tiveWindow: +; +MSG_IDCMP_INTUITICKS_GAD + +;_IntuiTicks: +; +MSG_IDCMP_CLOSEWINDOW_GAD + +;C_loseWindow: +; +MSG_IDCMP_VANILLAKEY_GAD + +;_VanillaKey: +; +MSG_IDCMP_RAWKEY_GAD + +;R_AWKey: +; +MSG_IDCMP_GADGETDOWN_GAD + +;Gadget_Down: +; +MSG_IDCMP_GADGETUP_GAD + +;Gadget_Up: +; +MSG_IDCMP_MOUSEBUTTONS_GAD + +;Mouse_Buttons: +; +MSG_IDCMP_NEWPREFS_GAD + +;New_Prefs: +; +MSG_IDCMP_CHANGEWINDOW_GAD + +;C_hangeWindow: +; +MSG_IDCMP_REFRESHWINDOW_GAD + +;Re_freshWindow: +; +MSG_IDCMP_NEWSIZE_GAD + +;_NewSize: +; +MSG_IDCMP_REQCLEAR_GAD + +;ReqCl_ear: +; +MSG_IDCMP_REQSET_GAD + +;Req_Set: +; +MSG_IDCMP_REQVERIFY_GAD + +;_ReqVerify: +; +MSG_IDCMP_SIZEVERIFY_GAD + +;_SizeVerify: +; +MSG_IDCMP_MENUVERIFY_GAD + +;_MenuVerify: +; +MSG_IDCMP_MOUSEMOVE_GAD + +;MouseMove +; +MSG_IDCMP_DELTAMOVE_GAD + +;DeltaMove +; +MSG_PGMN_LABEL_GAD + +;_Label: +; +MSG_PGMN_NEWLOOK_GAD + +;_NewLook: +; +MSG_Working_WND + +; +; +MSG_WORK_PROGRESS_FORMAT_GAD + +;%ld%% +; +MSG_PGFR_X_GAD + +;_X Pos: +; +MSG_PGFR_Y_GAD + +;_Y Pos: +; +MSG_PGFR_WIDTH_GAD + +;_Width: +; +MSG_PGFR_HEIGHT_GAD + +;_Height: +; +MSG_PGFR_FRAME_GAD + +;_Frame: +; +MSG_PGFR_FRAME_L0_GAD + +;Button +; +MSG_PGFR_FRAME_L1_GAD + +;IconDropBox +; +MSG_PGFR_FRAME_L2_GAD + +;Ridge +; +MSG_PGFR_FRAME_L3_GAD + +;Horiz. Line +; +MSG_PGFR_FRAME_L4_GAD + +;Vert. Line +; +MSG_PGFR_RECESSED_GAD + +;_Recessed: +; +MSG_EditMenu_WND + +; +; +MSG_EditImage_WND + +;Edit Image +; +MSG_List_WND + +;Select... +; +MSG_LIST_GAD + +; +; +MSG_PGMN_ITEM_LABEL_GAD + +;_Label: +; +MSG_PGMN_ITEM_TITLE_GAD + +;_Title: +; +MSG_PGMN_ITEM_COMMKEY_GAD + +;Comm_Key: +; +MSG_PGMN_ITEM_POPUP_GAD + +;_PopUp: +; +MSG_PGMN_ITEM_BARLABEL_GAD + +;_BarLabel: +; +MSG_PGMN_ITEM_DISABLED_GAD + +;_Disabled: +; +MSG_PGMN_ITEM_CHECKED_GAD + +;_Checked: +; +MSG_PGMN_ITEM_TOGGLE_GAD + +;Menu T_oggle: +; +MSG_PGPI_LABEL_GAD + +;_Label: +; +MSG_PGPI_WIDTH_GAD + +;_W: +; +MSG_PGPI_HEIGHT_GAD + +;_H: +; +MSG_PGPI_DEPTH_GAD + +;_D: +; +MSG_PGPI_TYPE_GAD + +;_Type: +; +MSG_PGPI_TYPE_L0_GAD + +;Normal image +; +MSG_PGPI_TYPE_L1_GAD + +;Toolbar image +; +MSG_PGPI_TYPE_L2_GAD + +;Pointer image +; +MSG_PGPI_SETPOINT_GAD + +;_Set Point +; +MSG_PGPI_PALETTE_GAD + +;Edit _Palette... +; +MSG_TBP_PALETTE_GAD + +; +; +MSG_Screen_WND + +;Screen Properties +; +MSG_SCREEN_PAGES_L0_GAD + +;General +; +MSG_SCREEN_PAGES_L1_GAD + +;Flags +; +MSG_PGSCR_WIDTH_GAD + +;_Width: +; +MSG_PGSCR_HEIGHT_GAD + +;_Height: +; +MSG_PGSCR_DEPTH_GAD + +;_Depth: +; +MSG_PGSCR_TITLE_GAD + +;_Title: +; +MSG_PGSCR_PUBNAME_GAD + +;_PubName: +; +MSG_PGSCR_USE_GAD + +;_Use: +; +MSG_PGSCR_USE_L0_GAD + +;Workbench +; +MSG_PGSCR_USE_L1_GAD + +;CustomScreen +; +MSG_PGSCR_USE_L2_GAD + +;PublicScreen +; +MSG_PGSCR_MAKEPUBLIC_GAD + +;_MakePublic: +; +MSG_PGSCR_MODEID_GAD + +;ModeID: +; +MSG_PGSCR_MODEID_GET_GAD + +;G +; +MSG_PGSCR_DEFAULTID_GAD + +; +; +MSG_PGSCR_SHOWTITLE_GAD + +;_ShowTitle: +; +MSG_PGSCR_BEHIND_GAD + +;_Behind: +; +MSG_PGSCR_QUIET_GAD + +;_Quiet: +; +MSG_PGSCR_AUTOSCROLL_GAD + +;_AutoScroll: +; +MSG_PGSCR_FULLPALETTE_GAD + +;_FullPalette: +; +MSG_PGSCR_DRAGGABLE_GAD + +;_Draggable: +; +MSG_PGSCR_EXCLUSIVE_GAD + +;_Exclusive: +; +MSG_PGSCR_SHAREPENS_GAD + +;S_harePens: +; +MSG_PGSCR_INTERLEAVED_GAD + +;_Interleaved: +; +MSG_PGSCR_LIKEWORKBENCH_GAD + +;_Like Workbench: +; +MSG_PGSCR_MINIMIZEISG_GAD + +;_Minimize ISG: +; +MSG_EditString_WND + +;Edit Strings +; +MSG_PGSTR_STRINGS_FORMAT_GAD + +;b2MSG ID|b2Type|b2String +; +MSG_PGSTR_ADD_GAD + +;_Add +; +MSG_PGSTR_DELETE_GAD + +;_Delete +; +MSG_PGSTR_EDIT_GAD + +;_Edit +; +MSG_PGSTR_LABEL_GAD + +;_Label: +; +MSG_PGSTR_STRING_GAD + +;_String: +; +MSG_EditVersion_WND + +;Edit Version +; +MSG_PGVER_PROGRAMNAME_GAD + +;_ProgramName: +; +MSG_PGVER_AUTHOR_GAD + +;_Author: +; +MSG_PGVER_VERSION_GAD + +;_Version: +; +MSG_PGVER_DATE_GAD + +;Date: +; +MSG_PGVER_REVISION_GAD + +;_Revision: +; +MSG_PG_TRLV_FLAGS_COLUMNS_GAD + +;_Columns: +; +MSG_PG_TRLV_FLAGS_FORMAT_GAD + +;_Format: +; +MSG_PG_TRLV_FLAGS_DISABLED_GAD + +;_Disabled: +; +MSG_PG_TRLV_FLAGS_MULTISELECT_GAD + +;_MultiSelect: +; +MSG_PG_TRLV_FLAGS_BORDER_GAD + +;_Border: +; +MSG_PG_TRLV_FLAGS_READONLY_GAD + +;_ReadOnly: +; +MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD + +;Show_TreeLines: +; +MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD + +;_ShowSelected: +; +MSG_PG_TRLV_FLAGS_TREE_GAD + +;Tr_ee: +; +MSG_Object_WND + +;Objects +; +MSG_EditPalette_WND + +;Edit Palette +; +MSG_PAL_PALETTE_GAD + +; +; +MSG_PAL_GREEN_GAD + +; +; +MSG_PAL_GREEN_FORMAT_GAD + +;Green: %3ld +; +MSG_PAL_BLUE_GAD + +; +; +MSG_PAL_BLUE_FORMAT_GAD + +;Blue: %3ld +; +MSG_PAL_RED_GAD + +; +; +MSG_PAL_RED_FORMAT_GAD + +;Red: %3ld +; +MSG_PAL_CANCEL_GAD + +;_Cancel +; +MSG_PAL_OK_GAD + +;_Ok +; +MSG_PGWN_TABORDER_DOWN_GAD + +;_Down +; +MSG_PGWN_TABORDER_UP_GAD + +;_Up +; +MSG_PGWN_TABORDER_LIST_GAD + +; +; +MSG_STATUS_CHANGED_GAD + +; +; +MSG_STATUS_TEXT_GAD + +; +; +MSG_CANTALLOCREQ + +;Can't allocate asl requester +; +MSG_CANTALLOCOBJECT + +;Can't create object +; +MSG_CANTOPENTOOLBAR + +;Can't open toolbar window +; +MSG_CANTOPENOBJECTWINDOW + +;Can't open object list window +; +MSG_CANTOPENCLIPBOARD + +;Can't open clipboard +; +MSG_GAD_BUTTON + +;Button +; +MSG_GAD_CHECKBOX + +;CheckBox +; +MSG_GAD_COLORWHEEL + +;ColorWheel +; +MSG_GAD_CYCLE + +;Cycle +; +MSG_GAD_DATATYPE + +;Datatype +; +MSG_GAD_GRADIENTSLIDER + +;Gradientslider +; +MSG_GAD_INTEGER + +;Integer +; +MSG_GAD_LISTVIEW + +;Listview +; +MSG_GAD_MX + +;MX +; +MSG_GAD_NUMBER + +;Number +; +MSG_GAD_PAGE + +;Page +; +MSG_GAD_PALETTE + +;Palette +; +MSG_GAD_POPUPMENU + +;PopupMenu +; +MSG_GAD_PROGRESS + +;Progress +; +MSG_GAD_SCROLLER + +;Scroller +; +MSG_GAD_SLIDER + +;Slider +; +MSG_GAD_STRING + +;String +; +MSG_GAD_TAPEDECK + +;Tapedeck +; +MSG_GAD_TEXT + +;Text +; +MSG_GAD_TEXTFIELD + +;Textfield +; +MSG_GAD_TREEVIEW + +;TreeView +; +MSG_NEW + +;(new) +; +MSG_LOADING + +;Loading... +; +MSG_SAVING + +;Saving... +; +MSG_GENERATING + +;Generating... +; +MSG_ABOUT + +;GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nRegistered to:\n%s\n%s\n\nSerialNr: %s +; +MSG_ERROPENLIB_GRADIENTSLIDER + +;Can't open gradientslider.gadget +; +MSG_NEWTITLE + +;(new title) +; +MSG_NEWITEM + +;(new item) +; +MSG_NEWSUB + +;(new sub) +; +MSG_CHANGEME + +;.%ld +; +MSG_EDITSTR_STRING + +;%s\tString\t%s +; +MSG_UNNAMED + +; +; +MSG_EMPTY + +; +; +MSG_UNTITLED + +; +; +MSG_UNKNOWN + +; +; +MSG_OK + +;Ok +; +MSG_ERROR + +;Error +; +MSG_YOUNEEDNEWERVERSION + +;You need at least GadToolsBox v%ld.%ld to open this resource file. +; +MSG_ERRCREATEPROJECTPORT + +;Can't create IDCMP message port +; +MSG_ERRCREATEPOINTER + +;Can't create pointer object +; +MSG_ERRCREATEIMAGE + +;Can't create image object +; +MSG_PGDT_DTOBJ + +;DT Obj +; +MSG_ERROPENLIB_COLORWHEEL + +;Can't open colorwheel.gadget +; +MSG_ALIGNLEFT + +;Align to left +; +MSG_ALIGNHCENTER + +;Align width center +; +MSG_ALIGNRIGHT + +;Align to right +; +MSG_ALIGNTOP + +;Align to top +; +MSG_ALIGNVCENTER + +;Align height center +; +MSG_ALIGNBOTTOM + +;Align to bottom +; +MSG_SPREADHORIZ + +;Spread horizontal +; +MSG_SPREADVERT + +;Spread vertical +; +MSG_FRAMEOBJECT + +;Frame object +; +MSG_GADGETOBJECT + +;Gadget object +; +MSG_WINDOWOBJECT + +;Window object +; +MSG_IMAGEOBJECT + +;Image object +; +MSG_STRINGOBJECT + +;String object +; +MSG_NOOBJECT + +;No object properties +; +MSG_MENUOBJECT + +;Menu object +; +MSG_CONFIRMATION + +;Confirmation Request +; +MSG_REPLACEFILE + +;File %s already exists. Replace? +; +MSG_YESNO + +;Yes|No +; +MSG_CANTOPENSTATUSWINDOW + +;Can't open status window +; +MSG_CANTOPENPROPERTIESWINDOW + +;Can't open properties window +; +MSG_STATUS_RESLOADED + +;Resource file loaded. +; +MSG_STATUS_RESSAVED + +;Resource file saved. +; +MSG_STATUS_MOVINGOBJECT + +;Moving object... +; +MSG_STATUS_RESIZINGOBJECT + +;Resizing object... +; +MSG_STATUS_RESGENERATED + +;Source code generated. +; +MSG_STATUS_CREATINGOBJECT + +;Creating object... +; +MSG_STATUS_SELECTINGOBJECTS + +;Selecting objects... +; +MSG_ERROPENLIB_PAGE + +;Can't open page.gadget +; +MSG_ERROPENLIB_PROGRESS + +;Can't open progress.gadget +; +MSG_ERROPENLIB_TEXTFIELD + +;Can't open textfield.gadget +; +MSG_ERROPENLIB_TREEVIEW + +;Can't open listview.gadget +; +MSG_ERROPENLIB_SMARTBITMAP + +;Can't open smartbitmap.image +; +MSG_ERR_OPENSCREEN + +;Can't open screen +; +MSG_ERR_VISUALINFO + +;Can't alloc visual info +; +MSG_ERR_SCRDRAWINFO + +;Can't alloc screen draw info +; +MSG_ERR_UNKNOWN + +;Unknown error occured! +; +MSG_ERROPENLIB_TAPEDECK + +;Can't open tapedeck.gadget +; +MSG_CANTCREATEPOPUPMENUS + +;Can't create popup menus +; +MSG_ERROPENLIB_POPUPMENU + +;Can't open popupmenu.library +; +MSG_CANTCREATEPOPUPMENUCLASS + +;Can't create popupmenu class +; +MSG_CANTCREATEDRAWCLASS + +;Can't create draw class +; +MSG_ABOUTUNREG + +;GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nUnregistered version\nPlease register!\n +; +MSG_SELECTPROJECTFILE + +;Select project file to open... +; +MSG_SAVEPROJECTAS + +;Save project as... +; +MSG_ENTERBASENAME + +;Enter base filename to generate... +; +MSG_NOTSAVED + +;Project %s has been changed. Continue? +; diff --git a/GadToolsBox/GadToolsBox.iff b/GadToolsBox/GadToolsBox.iff new file mode 100755 index 0000000000000000000000000000000000000000..4753ebb3a775a8e64dd7f6339da4dfecfa086ad9 GIT binary patch literal 124396 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define unless(x) if(!(x)) +#define LEAVE goto end + +struct Library *SmartBitMapBase=NULL; +struct Window *MainWnd=NULL; +Object *Im=NULL; +Class *ImClass=NULL; +struct Screen *Scr=NULL; + +ULONG Size45UDPlanes[] = { + 0xF8000000, 0x88000000, 0x90000000, 0xA8000000, 0xD4000000, 0xA000000, 0x5000000, 0x2800000, + 0x1580000, 0xA80000, 0x480000, 0x880000, 0xF80000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF8000000, 0xF8000000, 0xF0000000, 0xF8000000, 0xDC000000, 0xE000000, 0x7000000, 0x3800000, + 0x1D80000, 0xF80000, 0x780000, 0xF80000, 0xF80000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +struct BitMap Size45UDBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&Size45UDPlanes[0],(PLANEPTR)&Size45UDPlanes[32]} }; + +UBYTE TBNEWPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF8, 0x0, 0x0, 0x8, 0xC, 0x0, 0x0, 0x8, 0xA, 0x0, 0x0, 0x8, 0xF, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xF4, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +struct BitMap TBNEWBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWPlanes[0],(PLANEPTR)&TBNEWPlanes[80],(PLANEPTR)&TBNEWPlanes[160],(PLANEPTR)&TBNEWPlanes[240]} }; + +UBYTE TBCOLORWHEELPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0xB, 0xFA, 0x0, 0x0, 0x11, 0x7D, 0x0, 0x0, 0x11, 0xB5, 0x0, 0x0, 0x20, 0x5C, 0x80, 0x0, 0x20, 0x0, 0x80, 0x0, 0x3D, 0x0, 0x80, 0x0, 0x3E, 0x80, 0x80, 0x0, 0x3B, 0x40, 0x80, 0x0, 0x1D, 0xB1, 0x0, 0x0, 0x1F, 0x61, 0x0, 0x0, 0xF, 0xFA, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xE, 0x80, 0x0, 0x0, 0xE, 0x48, 0x0, 0x0, 0x1F, 0xA0, 0x0, 0x0, 0x1F, 0xD4, 0x0, 0x0, 0x1F, 0xFF, 0x0, 0x0, 0x1F, 0xFF, 0x0, 0x0, 0x1F, 0xBF, 0x0, 0x0, 0xE, 0x4E, 0x0, 0x0, 0xE, 0x9E, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0xE, 0x2, 0x0, 0x0, 0xC, 0x2, 0x0, 0x0, 0x1F, 0x3, 0x0, 0x0, 0x1A, 0xAB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x1, 0xB0, 0x0, 0x0, 0x1, 0x60, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0xF, 0x62, 0x0, 0x0, 0xD, 0xA2, 0x0, 0x0, 0x1F, 0x43, 0x0, 0x0, 0x1A, 0xAB, 0x0, 0x0, 0x1D, 0x17, 0x0, 0x0, 0x1E, 0xAF, 0x0, 0x0, 0x1B, 0x5B, 0x0, 0x0, 0xD, 0xB6, 0x0, 0x0, 0xF, 0x6E, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +struct BitMap TBCOLORWHEELBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCOLORWHEELPlanes[0],(PLANEPTR)&TBCOLORWHEELPlanes[80],(PLANEPTR)&TBCOLORWHEELPlanes[160],(PLANEPTR)&TBCOLORWHEELPlanes[240]} }; + +#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24))) + +struct SmartBitMapIRGB pal[]= +{ + { 0,Bit32(189),Bit32(189),Bit32(189)}, // Background + {-1,Bit32( 0),Bit32( 0),Bit32( 0)}, // Black + {-1,Bit32(255),Bit32(255),Bit32(255)}, // White + {-1,Bit32(123),Bit32( 0),Bit32( 0)}, // Red 50% + {-1,Bit32( 0),Bit32(123),Bit32( 0)}, // Green 50% + {-1,Bit32( 0),Bit32( 0),Bit32(123)}, // Blue 50% + {-1,Bit32(123),Bit32(123),Bit32( 0)}, // Yellow 50% + {-1,Bit32( 0),Bit32(123),Bit32(123)}, // Cyan 50% + {-1,Bit32(123),Bit32( 0),Bit32(123)}, // Magenta 50% + {-1,Bit32(255),Bit32( 0),Bit32( 0)}, // Red 100% + {-1,Bit32( 0),Bit32(255),Bit32( 0)}, // Green 100% + {-1,Bit32( 0),Bit32( 0),Bit32(255)}, // Blue 100% + {-1,Bit32(255),Bit32(255),Bit32( 0)}, // Yellow 100% + {-1,Bit32( 0),Bit32(255),Bit32(255)}, // Cyan 100% + {-1,Bit32(255),Bit32( 0),Bit32(255)}, // Magenta 100% + {-1,Bit32(123),Bit32(123),Bit32(123)} // Dark Gray +}; + +void main() +{ + ULONG class,code; + struct Gadget *gadget; + struct IntuiMessage *message; + struct DrawInfo *dri; + BOOL running=TRUE; + + unless(Scr=LockPubScreen("Workbench")) LEAVE; + unless(dri=GetScreenDrawInfo(Scr)) LEAVE; + unless(SmartBitMapBase=OpenLibrary("images/smartbitmap.image",36L)) LEAVE; + unless(ImClass=GetSmartBitMapClass()) LEAVE; + + GetRGB32(Scr->ViewPort.ColorMap,0,1,&pal[0].R); + + unless(Im=NewObject(ImClass,NULL, + IA_Left,25, + IA_Top,25, + IA_Width,20, + SMBM_Border,FALSE, + SMBM_SelBorder,TRUE, + SMBM_Screen,Scr, + SMBM_BitMap,&TBCOLORWHEELBitMap, +// SMBM_BitMap,&Size45UDBitMap, + SMBM_Palette,pal, + TAG_DONE)) LEAVE; + unless(MainWnd=OpenWindowTags(NULL, + WA_Left,0, + WA_Top,0, + WA_Width,600, + WA_Height,200, + WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETUP, + WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_SIZEGADGET, + WA_CustomScreen,Scr, + TAG_DONE)) LEAVE; + + DrawImageState(MainWnd->RPort,(struct Image *)Im,0,0,IDS_NORMAL,dri); + + while(running) + { + Wait(1L<UserPort->mp_SigBit); + while(message=GT_GetIMsg(MainWnd->UserPort)) + { + class=message->Class; + code=message->Code; + gadget=(struct Gadget *)message->IAddress; + GT_ReplyIMsg(message); + switch(class) + { + case IDCMP_CLOSEWINDOW: + running=FALSE; + break; + } + } + } +end: + if(MainWnd) + { + CloseWindow(MainWnd); + } + if(Im) DisposeObject(Im); + if(SmartBitMapBase) CloseLibrary(SmartBitMapBase); + if(dri) FreeScreenDrawInfo(Scr,dri); + if(Scr) UnlockPubScreen(NULL,Scr); +} diff --git a/GadToolsBox/Gadgets/Test/listview.c b/GadToolsBox/Gadgets/Test/listview.c new file mode 100755 index 0000000..0a86c49 --- /dev/null +++ b/GadToolsBox/Gadgets/Test/listview.c @@ -0,0 +1,182 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define unless(x) if(!(x)) +#define LEAVE goto end + +struct Library *ListViewBase=NULL; +struct Window *MainWnd=NULL; +Object *LVGad=NULL; +Class *LVClass=NULL; +struct Screen *Scr=NULL; + +struct LVList list; +struct LVNode node[]= +{ + NULL,NULL,NULL,"Ble1|kupa",NULL,NULL,0, + NULL,NULL,0,"SubThere1|blada",NULL,NULL,0, + NULL,NULL,NULL,"sub1|is",NULL,NULL,0, + NULL,NULL,NULL,"sub2|there",NULL,NULL,0, + NULL,NULL,NULL,"sub3|for",NULL,NULL,0, + NULL,NULL,NULL,"Ble3|all",NULL,NULL,0, + NULL,NULL,0,"subthere4|the",NULL,NULL,0, + NULL,NULL,LV_OPEN,"sub5|years",NULL,NULL,0, + NULL,NULL,NULL,"sub6|forever",NULL,NULL,0, + NULL,NULL,NULL,"Ble7|and",NULL,NULL,0, + NULL,NULL,NULL,"Ble8|always",NULL,NULL,0, + NULL,NULL,NULL,"Ble9|will",NULL,NULL,0, + NULL,NULL,NULL,"Ble10|be",NULL,NULL,0, + NULL,NULL,NULL,"Ble11|with",NULL,NULL,0, + NULL,NULL,NULL,"Ble12|us",NULL,NULL,0, + NULL,NULL,NULL,"Ble13|isn't",NULL,NULL,0, + NULL,NULL,NULL,"Ble14|it",NULL,NULL,0, + NULL,NULL,NULL,"Ble15|?",NULL,NULL,0 +}; + +ULONG __saveds __asm showsub_func(register __a0 struct Hook *hook,register __a2 Object *object,register __a1 APTR msg) +{ + struct TLVSubMsg *tlvsm=msg; + struct TLVEditMsg *tlvem=msg; + + switch(tlvsm->tlvm_MethodID) + { + case TLV_OPENSUB: + DisplayBeep(Scr); + return TLVCB_OK; + case TLV_CLOSESUB: + return TLVCB_OK; + case TLV_DOEDIT: + if(tlvem->tlvm_Column!=0) return TLVCB_OK; + break; + case TLV_EDIT: + FreeVec(tlvem->tlvm_Node->ln_Name); + if(tlvem->tlvm_Node->ln_Name=AllocVec(strlen(tlvem->tlvm_String)+4,MEMF_ANY)) + sprintf(tlvem->tlvm_Node->ln_Name,"%s|or",tlvem->tlvm_String); + return TLVCB_OK; + } + return TLVCB_UNKNOWN; +} + +struct Hook showsub_hook={NULL,NULL,(HOOKFUNC)showsub_func,NULL,NULL}; + +void main() +{ + ULONG class,code,Top=0; + struct Gadget *gadget; + struct IntuiMessage *message; + struct DrawInfo *dri; + BOOL running=TRUE; + APTR VI=NULL; + + unless(ListViewBase=OpenLibrary("gadgets/listview.gadget",36L)) LEAVE; + unless(Scr=LockPubScreen("SASPRJ.1")) LEAVE; + unless(dri=GetScreenDrawInfo(Scr)) LEAVE; + unless(LVClass=GetListViewClass()) LEAVE; + unless(VI=GetVisualInfo(Scr,TAG_DONE)) LEAVE; + + node[0].ln_Name=AllocVec(11,MEMF_ANY); + strcpy(node[0].ln_Name,"Edit me|or"); + Tree_NewList(&list); + Tree_AddTail(&list,&node[0]); + Tree_AddTail(&list,&node[1]); + Tree_AddSubTail(&list,&node[1],&node[2]); + Tree_AddSubTail(&list,&node[1],&node[3]); + Tree_AddSubTail(&list,&node[1],&node[4]); + Tree_AddTail(&list,&node[5]); + Tree_AddTail(&list,&node[6]); + Tree_AddSubTail(&list,&node[6],&node[7]); + Tree_AddSubTail(&list,&node[7],&node[8]); + Tree_AddSubTail(&list,&node[6],&node[9]); + Tree_AddSubTail(&list,&node[6],&node[10]); + Tree_AddTail(&list,&node[11]); + Tree_AddTail(&list,&node[12]); + Tree_AddTail(&list,&node[13]); + Tree_AddTail(&list,&node[14]); + Tree_AddTail(&list,&node[15]); + Tree_AddTail(&list,&node[16]); + Tree_AddTail(&list,&node[17]); + + unless(MainWnd=OpenWindowTags(NULL, + WA_Left,0, + WA_Top,0, + WA_Width,600, + WA_Height,300, + WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETUP|IDCMP_MOUSEMOVE|IDCMP_GADGETDOWN|IDCMP_MOUSEBUTTONS, + WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_SIZEGADGET, + WA_CustomScreen,Scr, + WA_RMBTrap,TRUE, +// WA_Gadgets,LVGad, + TAG_DONE)) LEAVE; + unless(LVGad=NewObject(LVClass,NULL, + GA_Left,25, + GA_Top,25, + GA_Width,200, + GA_Height,200, + LIST_Border,TRUE, + LIST_Labels,&list, + LIST_ShowTreeLines,TRUE, + LIST_IsTree,TRUE, + LIST_Columns,2, + LIST_Format,"2bJeden|2brTekscior", + LIST_TabChar,"|", + LIST_HookSub,&showsub_hook, + LIST_HookEdit,&showsub_hook, + TAG_DONE)) LEAVE; + + AddGList(MainWnd,LVGad,-1,-1,NULL); + RefreshGList(LVGad,MainWnd,NULL,-1); + while(running) + { + Wait(1L<UserPort->mp_SigBit); + while(message=GT_GetIMsg(MainWnd->UserPort)) + { + class=message->Class; + code=message->Code; + gadget=(struct Gadget *)message->IAddress; + GT_ReplyIMsg(message); + switch(class) + { + case IDCMP_CLOSEWINDOW: + running=FALSE; + break; + case IDCMP_MOUSEBUTTONS: + switch(code) + { + case SELECTUP: + Top++; + SetGadgetAttrs((struct Gadget *)LVGad,MainWnd,NULL,LIST_Top,Top,TAG_DONE); + break; + case MENUUP: + if(Top>0) Top--; + SetGadgetAttrs((struct Gadget *)LVGad,MainWnd,NULL,LIST_Top,Top,TAG_DONE); + break; + } + break; + } + } + } +end: + RemoveGList(MainWnd,LVGad,-1); + if(MainWnd) + { + CloseWindow(MainWnd); + } + if(VI) FreeVisualInfo(VI); + if(LVGad) DisposeObject(LVGad); + if(ListViewBase) CloseLibrary(ListViewBase); + if(dri) FreeScreenDrawInfo(Scr,dri); + if(Scr) UnlockPubScreen(NULL,Scr); + FreeVec(node[0].ln_Name); +} diff --git a/GadToolsBox/Gadgets/Test/register.c b/GadToolsBox/Gadgets/Test/register.c new file mode 100755 index 0000000..1b98775 --- /dev/null +++ b/GadToolsBox/Gadgets/Test/register.c @@ -0,0 +1,217 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"register_pragmas.h" + +Class * __saveds __asm CreateRegisterClass(void); +BOOL __saveds __asm DisposeRegisterClass( register __a0 Class *); + +#define unless(x) if(!(x)) +#define LEAVE goto end + +struct Library *RegisterBase=NULL,*ColorWheelBase=NULL; +struct Window *MainWnd=NULL; +Object *RegiGad=NULL,*Gad1=NULL,*Gad2=NULL,*ble=NULL; +Class *RegisterClass=NULL; +struct Screen *Scr=NULL; +struct PageNode Page1,Page2; +struct MinList PageList; + +void main() +{ + ULONG class,code; + struct Gadget *gadget; + struct IntuiMessage *message; + struct DrawInfo *dri; + BOOL running=TRUE; + LONG sysgtype,qhelp,region,page; + + NewList((struct List *)&PageList); + + unless(ColorWheelBase=OpenLibrary("gadgets/colorwheel.gadget",39)) LEAVE; + unless(Scr=LockPubScreen(NULL)) LEAVE; + unless(dri=GetScreenDrawInfo(Scr)) LEAVE; + unless(RegisterBase=OpenLibrary("register.gadget",37L)) LEAVE; + unless(RegisterClass=CreateRegisterClass()) LEAVE; + + unless(Gad1=Page1.lnp_Gadgets=NewObject(NULL,"colorwheel.gadget", + GA_Left,30, + GA_Top,70, + GA_Width,100, + GA_Height,50, + GA_ID,6, + GA_GadgetHelp,TRUE, + GA_FollowMouse,TRUE, + WHEEL_Screen,Scr, + WHEEL_BevelBox,TRUE, + WHEEL_MaxPens,64, + TAG_DONE)) LEAVE; + + unless(ble=NewObject(NULL,FRBUTTONCLASS, + GA_Left,190, + GA_Top,70, + GA_Width,100, + GA_Height,11, + GA_Text,"Gadget 1", + GA_DrawInfo,dri, + GA_ID,1, + GA_GadgetHelp,TRUE, + GA_RelVerify,TRUE, + TAG_DONE)) LEAVE; + unless(Gad2=Page2.lnp_Gadgets=NewObject(NULL,FRBUTTONCLASS, + GA_Left,30, + GA_Top,30, + GA_Width,100, + GA_Height,11, + GA_Text,"Gadget 2", + GA_DrawInfo,dri, + GA_ID,2, + GA_GadgetHelp,TRUE, + GA_RelVerify,TRUE, + TAG_DONE)) LEAVE; + + Page1.lnp_Name="Strona 1"; + Page2.lnp_Name="Strona 2"; + + AddTail((struct List *)&PageList,(struct Node *)&Page1); + AddTail((struct List *)&PageList,(struct Node *)&Page2); + + unless(RegiGad=NewObject(RegisterClass,NULL, + GA_Width,170, + GA_Height,150, + GA_GadgetHelp,FALSE, + GA_RelVerify,TRUE, + GA_ID,0, + REGI_Border,TRUE, + REGI_Title,TRUE, + REGI_Pages,&PageList, + REGI_Page,0, + TAG_DONE)) LEAVE; + unless(MainWnd=OpenWindowTags(NULL, + WA_Left,0, + WA_Top,0, + WA_InnerWidth,400,//170, + WA_InnerHeight,150, + WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETHELP|IDCMP_MOUSEMOVE|IDCMP_GADGETUP, + WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE, + WA_CustomScreen,Scr, + TAG_DONE)) LEAVE; + SetAttrs(RegiGad,GA_Left,MainWnd->BorderLeft,GA_Top,MainWnd->BorderTop,TAG_DONE); + HelpControl(MainWnd, HC_GADGETHELP); + AddGadget(MainWnd,(struct Gadget *)RegiGad,-1); + AddGadget(MainWnd,(struct Gadget *)ble,-1); + RefreshGList((struct Gadget *)RegiGad,MainWnd,NULL,-1); + + while(running) + { + Wait(1L<UserPort->mp_SigBit); + while(message=GT_GetIMsg(MainWnd->UserPort)) + { + class=message->Class; + code=message->Code; + gadget=(struct Gadget *)message->IAddress; + GT_ReplyIMsg(message); + switch(class) + { + case IDCMP_CLOSEWINDOW: + running=FALSE; + break; + } + } + } + SetGadgetAttrs((struct Gadget *)RegiGad,MainWnd,NULL, + REGI_Page,1, + TAG_DONE); + RefreshGList((struct Gadget *)RegiGad,MainWnd,NULL,-1); + running=TRUE; + while(running) + { + Wait(1L<UserPort->mp_SigBit); + while(message=GT_GetIMsg(MainWnd->UserPort)) + { + class=message->Class; + code=message->Code; + gadget=(struct Gadget *)message->IAddress; + GT_ReplyIMsg(message); + switch(class) + { + case IDCMP_CLOSEWINDOW: + running=FALSE; + break; + case IDCMP_GADGETUP: + switch(gadget->GadgetID) + { + case 0: + GetAttr(REGI_Page,RegiGad,(ULONG *)&page); + printf("GadgetUp: %d, Page: %d\n",gadget->GadgetID,page); + break; + default: + printf("GadgetUp: %d, Code: %d\n",gadget->GadgetID,code); + break; + } + break; + case IDCMP_GADGETHELP: + qhelp=region=-1; + if(gadget==NULL) + { + printf("Not over our window\n"); + } + else + { + if(gadget==(struct Gadget *)MainWnd) + { + printf("Over window\n"); + qhelp=region=0; + } + else + { + sysgtype = gadget->GadgetType & 0xF0; + qhelp=(sysgtype>>4)+5; + region=HTFC_SYSGADS+sysgtype; + switch(sysgtype) + { + case GTYP_WDRAGGING: printf("GadgetHelp: DragBar\n"); break; + case GTYP_WUPFRONT: printf("GadgetHelp: Depth\n"); break; + case GTYP_CLOSE: printf("GadgetHelp: Close\n"); break; + case GTYP_SIZING: printf("GadgetHelp: Size\n"); break; + case GTYP_WZOOM: printf("GadgetHelp: Zoom\n"); break; + default: printf("GadgetHelp: Other\n"); break; + case 0: + printf("GadgetHelp: %d, SubID: %d\n",gadget->GadgetID,code); + qhelp=region=gadget->GadgetID; + break; + } + } + } + break; + } + } + } +end: + if(MainWnd) + { + RemoveGadget(MainWnd,(struct Gadget *)ble); + RemoveGadget(MainWnd,(struct Gadget *)RegiGad); + CloseWindow(MainWnd); + } + if(RegiGad) DisposeObject(RegiGad); + if(Gad2) DisposeObject(Gad2); + if(Gad1) DisposeObject(Gad1); + if(ble) DisposeObject(ble); + if(RegisterClass) DisposeRegisterClass(RegisterClass); + if(RegisterBase) CloseLibrary(RegisterBase); + if(dri) FreeScreenDrawInfo(Scr,dri); + if(Scr) UnlockPubScreen(NULL,Scr); + if(ColorWheelBase) CloseLibrary(ColorWheelBase); +} diff --git a/GadToolsBox/Gadgets/Test/toolbar.c b/GadToolsBox/Gadgets/Test/toolbar.c new file mode 100755 index 0000000..9743dcf --- /dev/null +++ b/GadToolsBox/Gadgets/Test/toolbar.c @@ -0,0 +1,220 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"toolbar/toolbar_pragmas.h" + +void __saveds __asm Toolbar_GetDimensions(register __a0 struct List *,register __a1 struct TagItem *); +Class * __saveds __asm CreateToolbarClass(void); +BOOL __saveds __asm DisposeToolbarClass( register __a0 Class *); + +void Toolbar_GetDimensionsTags(struct List *, ULONG, ...); + +#define unless(x) if(!(x)) +#define LEAVE goto end + +struct Library *ToolbarBase=NULL; +struct Window *MainWnd=NULL; +Object *ToolGad=NULL; +Class *ToolbarClass=NULL; +struct Screen *Scr=NULL; + +extern struct MinList TBARList; +extern struct TBARPPList TBARPPList; + +struct TBARNode TBARNodes[] = +{ + {{(struct MinNode *) &TBARNodes[1], (struct MinNode *) &TBARList.mlh_Head}, TID_NEW, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[2], (struct MinNode *) &TBARNodes[0]}, TID_OPEN, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[3], (struct MinNode *) &TBARNodes[1]}, TID_SAVE, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[4], (struct MinNode *) &TBARNodes[2]}, TID_PRINT, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[5], (struct MinNode *) &TBARNodes[3]}, TID_CUT, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[6], (struct MinNode *) &TBARNodes[4]}, TID_COPY, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[7], (struct MinNode *) &TBARNodes[5]}, TID_PASTE, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[8], (struct MinNode *) &TBARNodes[6]}, TID_UNDO, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[9], (struct MinNode *) &TBARNodes[7]}, TID_BOLD, TTYPE_Toggle, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[10], (struct MinNode *) &TBARNodes[8]}, TID_ITALIC, TTYPE_Toggle,IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[11], (struct MinNode *) &TBARNodes[9]}, TID_UNDERLINE, TTYPE_Toggle, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[12], (struct MinNode *) &TBARNodes[10]}, 2, TTYPE_PopUp, IDS_NORMAL, (UBYTE *)&TBARPPList}, + {{(struct MinNode *) &TBARNodes[13], (struct MinNode *) &TBARNodes[11]}, 1, TTYPE_TToggle, IDS_NORMAL, "Tekôcik"}, + {{(struct MinNode *) &TBARNodes[14], (struct MinNode *) &TBARNodes[12]}, TID_FIND, TTYPE_Normal, IDS_NORMAL, NULL}, + {{(struct MinNode *) &TBARNodes[15], (struct MinNode *) &TBARNodes[13]}, 0, TTYPE_Space, 0, NULL}, + {{(struct MinNode *) &TBARList.mlh_Tail, (struct MinNode *) &TBARNodes[14]}, TID_HELP, TTYPE_Normal, IDS_NORMAL, NULL} +}; + +struct MinList TBARList = { + ( struct MinNode * )&TBARNodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&TBARNodes[15] +}; + +struct TBARPPNode TBARPPNodes[] = +{ + {{(struct MinNode *) &TBARPPNodes[1], (struct MinNode *) &TBARPPList.tpl_List.mlh_Head}, "Linia 01"}, + {{(struct MinNode *) &TBARPPNodes[2], (struct MinNode *) &TBARPPNodes[0]}, "Linia 02"}, + {{(struct MinNode *) &TBARPPNodes[3], (struct MinNode *) &TBARPPNodes[1]}, "Linia 03"}, + {{(struct MinNode *) &TBARPPNodes[4], (struct MinNode *) &TBARPPNodes[2]}, "Linia 04"}, + {{(struct MinNode *) &TBARPPNodes[5], (struct MinNode *) &TBARPPNodes[3]}, "Linia 05"}, + {{(struct MinNode *) &TBARPPNodes[6], (struct MinNode *) &TBARPPNodes[4]}, "Linia 06"}, + {{(struct MinNode *) &TBARPPNodes[7], (struct MinNode *) &TBARPPNodes[5]}, "Linia 07"}, + {{(struct MinNode *) &TBARPPNodes[8], (struct MinNode *) &TBARPPNodes[6]}, "Linia 08"}, + {{(struct MinNode *) &TBARPPNodes[9], (struct MinNode *) &TBARPPNodes[7]}, "Linia 09"}, + {{(struct MinNode *) &TBARPPNodes[10], (struct MinNode *) &TBARPPNodes[8]}, "Linia 10"}, + {{(struct MinNode *) &TBARPPNodes[11], (struct MinNode *) &TBARPPNodes[9]}, "Linia 11"}, + {{(struct MinNode *) &TBARPPNodes[12], (struct MinNode *) &TBARPPNodes[10]}, "Linia 12"}, + {{(struct MinNode *) &TBARPPNodes[13], (struct MinNode *) &TBARPPNodes[11]}, "Linia 13"}, + {{(struct MinNode *) &TBARPPNodes[14], (struct MinNode *) &TBARPPNodes[12]}, "Linia 14"}, + {{(struct MinNode *) &TBARPPNodes[15], (struct MinNode *) &TBARPPNodes[13]}, "Linia 15"}, + {{(struct MinNode *) &TBARPPNodes[16], (struct MinNode *) &TBARPPNodes[14]}, "Linia 16"}, + {{(struct MinNode *) &TBARPPNodes[17], (struct MinNode *) &TBARPPNodes[15]}, "Linia 17"}, + {{(struct MinNode *) &TBARPPNodes[18], (struct MinNode *) &TBARPPNodes[16]}, "Linia 18"}, + {{(struct MinNode *) &TBARPPNodes[19], (struct MinNode *) &TBARPPNodes[17]}, "Linia 19"}, + {{(struct MinNode *) &TBARPPNodes[20], (struct MinNode *) &TBARPPNodes[18]}, "Linia 20"}, + {{(struct MinNode *) &TBARPPNodes[21], (struct MinNode *) &TBARPPNodes[19]}, "Linia 21"}, + {{(struct MinNode *) &TBARPPNodes[22], (struct MinNode *) &TBARPPNodes[20]}, "Linia 22"}, + {{(struct MinNode *) &TBARPPNodes[23], (struct MinNode *) &TBARPPNodes[21]}, "Linia 23"}, + {{(struct MinNode *) &TBARPPNodes[24], (struct MinNode *) &TBARPPNodes[22]}, "Linia 24"}, + {{(struct MinNode *) &TBARPPNodes[25], (struct MinNode *) &TBARPPNodes[23]}, "Linia 25"}, + {{(struct MinNode *) &TBARPPNodes[26], (struct MinNode *) &TBARPPNodes[24]}, "Linia 26"}, + {{(struct MinNode *) &TBARPPNodes[27], (struct MinNode *) &TBARPPNodes[25]}, "Linia 27"}, + {{(struct MinNode *) &TBARPPNodes[28], (struct MinNode *) &TBARPPNodes[26]}, "Linia 28"}, + {{(struct MinNode *) &TBARPPNodes[29], (struct MinNode *) &TBARPPNodes[27]}, "Linia 29"}, + {{(struct MinNode *) &TBARPPNodes[30], (struct MinNode *) &TBARPPNodes[28]}, "Linia 30"}, + {{(struct MinNode *) &TBARPPList.tpl_List.mlh_Tail, (struct MinNode *) &TBARPPNodes[29]}, "Linia 31"}, +}; + +struct TBARPPList TBARPPList = { + ( struct MinNode * )&TBARPPNodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&TBARPPNodes[30],100,TTYPEPP_String,0,0 +}; + +void main() +{ + ULONG Width=10,Height=10; + ULONG class,code; + struct Gadget *gadget; + struct IntuiMessage *message; + struct DrawInfo *dri; + BOOL running=TRUE; + LONG sysgtype,qhelp,region,id,state; + + unless(Scr=LockPubScreen(NULL)) LEAVE; + unless(dri=GetScreenDrawInfo(Scr)) LEAVE; + unless(ToolbarBase=OpenLibrary("toolbar.gadget",36L)) LEAVE; + unless(ToolbarClass=CreateToolbarClass()) LEAVE; + Toolbar_GetDimensionsTags((struct List *)&TBARList, + GA_Width,&Width, + GA_Height,&Height, + TBAR_Position,TPOS_HORIZ, + TBAR_Border,TRUE, + TBAR_Offset,TRUE, + TBAR_Font,dri->dri_Font, + TAG_DONE); + unless(ToolGad=NewObject(ToolbarClass,NULL, + GA_Width,Width, + GA_Height,Height, + GA_GadgetHelp,TRUE, + GA_RelVerify,TRUE, + TBAR_Screen,Scr, + TBAR_Gadgets,&TBARList, + TBAR_Position,TPOS_HORIZ, + TBAR_Border,TRUE, + TBAR_Offset,TRUE, + TAG_DONE)) LEAVE; + unless(MainWnd=OpenWindowTags(NULL, + WA_Left,0, + WA_Top,0, + WA_Width,600, + WA_Height,200, + WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETHELP|IDCMP_MOUSEMOVE|IDCMP_GADGETUP, + WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_SIZEGADGET, + WA_CustomScreen,Scr, + TAG_DONE)) LEAVE; + HelpControl(MainWnd, HC_GADGETHELP); + SetAttrs(ToolGad, + GA_Left,MainWnd->BorderLeft, + GA_Top,MainWnd->BorderTop, +// GA_LeftBorder,TRUE, +// GA_TopBorder,TRUE, + TAG_DONE); + AddGadget(MainWnd,(struct Gadget *)ToolGad,-1); + RefreshGList((struct Gadget *)ToolGad,MainWnd,NULL,-1); + + while(running) + { + Wait(1L<UserPort->mp_SigBit); + while(message=GT_GetIMsg(MainWnd->UserPort)) + { + class=message->Class; + code=message->Code; + gadget=(struct Gadget *)message->IAddress; + GT_ReplyIMsg(message); + switch(class) + { + case IDCMP_CLOSEWINDOW: + running=FALSE; + break; + case IDCMP_GADGETUP: + GetAttr(TBAR_ID,ToolGad,(ULONG *)&id); + GetAttr(TBAR_State,ToolGad,(ULONG *)&state); + printf("GadgetUp: %d, SubID: %d, State: %d\n",gadget->GadgetID,id,state); + break; + case IDCMP_GADGETHELP: + qhelp=region=-1; + if(gadget==NULL) + { + printf("Not over our window\n"); + } + else + { + if(gadget==(struct Gadget *)MainWnd) + { + printf("Over window\n"); + qhelp=region=0; + } + else + { + sysgtype = gadget->GadgetType & 0xF0; + qhelp=(sysgtype>>4)+5; + region=HTFC_SYSGADS+sysgtype; + switch(sysgtype) + { + case GTYP_WDRAGGING: printf("GadgetHelp: DragBar\n"); break; + case GTYP_WUPFRONT: printf("GadgetHelp: Depth\n"); break; + case GTYP_CLOSE: printf("GadgetHelp: Close\n"); break; + case GTYP_SIZING: printf("GadgetHelp: Size\n"); break; + case GTYP_WZOOM: printf("GadgetHelp: Zoom\n"); break; + default: printf("GadgetHelp: Other\n"); break; + case 0: + printf("GadgetHelp: %d, SubID: %d\n",gadget->GadgetID,code); + qhelp=region=gadget->GadgetID; + break; + } + } + } + break; + } + } + } +end: + if(MainWnd) + { + RemoveGadget(MainWnd,(struct Gadget *)ToolGad); + CloseWindow(MainWnd); + } + if(ToolGad) DisposeObject(ToolGad); + if(ToolbarClass) DisposeToolbarClass(ToolbarClass); + if(ToolbarBase) CloseLibrary(ToolbarBase); + if(dri) FreeScreenDrawInfo(Scr,dri); + if(Scr) UnlockPubScreen(NULL,Scr); +} + +void Toolbar_GetDimensionsTags(struct List *list, ULONG tag, ...) +{ + Toolbar_GetDimensions(list,(struct TagItem *)&tag); +} diff --git a/GadToolsBox/Gadgets/listview.c b/GadToolsBox/Gadgets/listview.c new file mode 100755 index 0000000..4568e8b --- /dev/null +++ b/GadToolsBox/Gadgets/listview.c @@ -0,0 +1,1602 @@ +/* +** ListView Class +** $VER: listview.c 37.1 (15.1.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"listview.gadget_rev.h" + +TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define abs(x) ((x)<0?-(x):(x)) +#define unless(x) if(!(x)) +#define LIST_SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define LISTVIEWGADGET "listview.gadget" + +/* +** Prototypes +*/ + +Class * ASMFUNC GetListViewClass(void); +ULONG ASMFUNC LIST_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG LIST_NEW(Class *,Object *,struct opSet *); +ULONG STRG_NEW(Class *,Object *,struct opSet *); +ULONG LIST_DISPOSE(Class *, Object *, Msg); +ULONG LIST_SET(Class *, Object *, struct opSet *); +ULONG LIST_GET(Class *,Object *,struct opGet *); +ULONG LIST_UPDATE(Class *,Object *,struct opUpdate *); +ULONG LIST_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG LIST_RENDER(Class *,Object *,struct gpRender *); +ULONG LIST_GOACTIVE(Class *,Object *,struct gpInput *); +ULONG LIST_HANDLEINPUT(Class *,Object *,struct gpInput *); +ULONG LIST_GOINACTIVE(Class *,Object *,struct gpGoInactive *); +ULONG STRG_GOINACTIVE(Class *,Object *,struct gpGoInactive *); +void LIST_GetGadgetRect( Object *,struct GadgetInfo *,struct Rectangle *); +void SPrintf(Class *,STRPTR buffer, STRPTR format, ...); +void TextColor(Class *,Object *,struct RastPort *,STRPTR,ULONG,struct DrawInfo *,struct IBox *); +void LineOut(Class *,Object *,struct RastPort *,struct LVNode *,struct IBox *,ULONG,struct DrawInfo *); + +/* +** Variables +*/ + +struct LISTData +{ + struct LVList *ld_Labels; + ULONG ld_OldTop,ld_Top; + ULONG ld_Columns; + ULONG ld_Visible; + BOOL ld_MakeVisible; + BOOL ld_Border; + BOOL ld_MultiSelect; + BOOL ld_ShowTreeLines; + BOOL ld_IsTree; + BOOL ld_ReadOnly; + STRPTR ld_TabChar; + Object *ld_FrameImage; + struct TextFont *ld_TextFont; + struct LVNode *ld_TopNode,*ld_ActualNode,*ld_PrevSelected; + BOOL ld_ActiveFromMouse; + BOOL ld_Do,ld_Init,ld_EditCol; + STRPTR ld_Format; + ULONG ld_Secs,ld_Mics,ld_Cnt; + UWORD *ld_ColPos,ld_SelCol,ld_SelColPos,ld_PrevColPos; + struct Hook *ld_HookSub,*ld_HookEdit,*ld_HookDraw; + Class *ld_StringClass; + Object *ld_StringObj; + ULONG ld_StringRedraw; + ULONG ld_StringColumn; + struct Window *ld_StringWnd; + TEXT ld_StringBuffer[256]; + Object *ld_ListViewObj; +}; + +struct STRGData +{ + struct LISTData *sd_LISTData; +}; + +Class *cl=NULL; + +/* +** Create Class +*/ + +int ASMFUNC __UserLibInit(REG(a6) struct MyLibrary *libbase) +{ + if(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",36L)) + { + if(UtilityBase=OpenLibrary("utility.library",36L)) + { + if(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",36L)) + { + if(GadToolsBase=OpenLibrary("gadtools.library",36L)) + { + if(LayersBase=OpenLibrary("layers.library",36L)) + { + if (cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct LISTData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) LIST_Dispatcher; + cl->cl_UserData = (ULONG) libbase; +// AddClass (cl); + return(FALSE); + } + CloseLibrary(LayersBase); + } + CloseLibrary(GadToolsBase); + } + CloseLibrary((struct Library *)GfxBase); + } + CloseLibrary(UtilityBase); + } + CloseLibrary((struct Library *)IntuitionBase); + } + return(TRUE); +} + +void ASMFUNC __UserLibCleanup(REG(a6) struct MyLibrary *libbase) +{ + FreeClass(cl); + if(IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); + if(UtilityBase) CloseLibrary(UtilityBase); + if(GfxBase) CloseLibrary((struct Library *)GfxBase); +} + + +Class * ASMFUNC GetListViewClass() +{ + return cl; +} + +void ASMFUNC Tree_NewList(REG(a0)struct LVList *list) +{ + NewList((struct List *)list); +// list->lh_Head=(struct LVNode *) &list->lh_Tail; +// list->lh_TailPred=(struct LVNode *)list; +} + +void ASMFUNC Tree_AddTail(REG(a0) struct LVList *list,REG(a1) struct LVNode *node) +{ + AddTail((struct List *)list,(struct Node *)node); + node->ln_Parent=NULL; +} + +void ASMFUNC Tree_AddHead(REG(a0) struct LVList *list,REG(a1) struct LVNode *node) +{ + AddHead((struct List *)list,(struct Node *)node); + node->ln_Parent=NULL; +} + +void ASMFUNC Tree_AddSubTail(REG(a0) struct LVList *list,REG(a1) struct LVNode *parentnode,REG(a2) struct LVNode *node) +{ + struct LVNode *parnode; + + if(parentnode) // not in sub + { + if(parentnode->ln_Sub) + { + parnode=parentnode->ln_Sub; + while(parnode->ln_Succ!=parentnode) parnode=parnode->ln_Succ; + node->ln_Succ=parnode->ln_Succ; + node->ln_Pred=parnode; + parnode->ln_Succ=node; + } + else + { + parentnode->ln_Sub=node; + node->ln_Succ=parentnode; + node->ln_Pred=parentnode; + } + node->ln_Indent=parentnode->ln_Indent+1; + node->ln_Parent=parentnode; + } + else + { + Tree_AddTail(list,node); + } +} + +void ASMFUNC Tree_AddSubHead(REG(a0) struct LVList *list,REG(a1) struct LVNode *parentnode,REG(a2) struct LVNode *node) +{ + struct LVNode *parnode; + + if(parentnode) // not in sub + { + if(parentnode->ln_Sub) + { + parnode=parentnode->ln_Sub; + parentnode->ln_Sub=node; + node->ln_Succ=parnode; + node->ln_Pred=parentnode; + } + else + { + parentnode->ln_Sub=node; + node->ln_Succ=parentnode; + node->ln_Pred=parentnode; + } + node->ln_Indent=parentnode->ln_Indent+1; + node->ln_Parent=parentnode; + } + else + { + Tree_AddHead(list,node); + } +} + +struct LVNode *Tree_WhileParent(struct LVNode *node) +{ + while(node->ln_Succ==node->ln_Parent) if(node) node=node->ln_Succ; else return NULL; + if(node) node=node->ln_Succ; + return node; +} + +struct LVNode *ASMFUNC Tree_NextNode(REG(a0)struct LVNode *node) +{ + if(node->ln_Succ) + return (((node->ln_Flags&LV_OPEN) && (node->ln_Sub)) ? (node->ln_Sub) : Tree_WhileParent(node)); + else return NULL; +} + +struct LVNode *ASMFUNC Tree_NextSubNode(REG(a0)struct LVNode *node) +{ + if(node->ln_Succ) + return ((node->ln_Sub) ? (node->ln_Sub) : Tree_WhileParent(node)); + else return NULL; +} + +struct LVNode *ASMFUNC Tree_RemHead(REG(a0)struct LVList *list) +{ + return (struct LVNode *)RemHead((struct List *)list); +} + +struct LVNode *ASMFUNC Tree_RemSubHead(REG(a0)struct LVNode *node) +{ + struct LVNode *parnode; + + if(node->ln_Sub) + { + parnode=node->ln_Sub; + node->ln_Sub=parnode->ln_Succ; + parnode->ln_Succ->ln_Pred=node; + return parnode; + } + return NULL; +} + +struct LVNode *ASMFUNC Tree_RemTail(REG(a0)struct LVList *list) +{ + return (struct LVNode *)RemTail((struct List *)list); +} + +struct LVNode *ASMFUNC Tree_RemSubTail(REG(a0)struct LVNode *node) +{ + struct LVNode *parnode; + + if(node->ln_Sub) + { + parnode=node->ln_Sub; + while(parnode->ln_Succ!=node) parnode=parnode->ln_Succ; + if(parnode->ln_Pred==parnode->ln_Succ) node->ln_Sub=NULL; + else parnode->ln_Pred->ln_Succ=parnode->ln_Succ; + return parnode; + } + return NULL; +} + + +void ASMFUNC Tree_Remove(REG(a0)struct LVNode *node) +{ + if(node->ln_Parent) // in sub + { + if((node->ln_Succ==node->ln_Parent) && (node->ln_Pred==node->ln_Parent)) // one node in the list + { + node->ln_Parent->ln_Sub=NULL; + } + else + if((node->ln_Succ==node->ln_Parent) && (node->ln_Pred!=node->ln_Parent)) // last node + { + node->ln_Pred->ln_Succ=node->ln_Succ; + } + else + if((node->ln_Succ!=node->ln_Parent) && (node->ln_Pred==node->ln_Parent)) // first node + { + node->ln_Parent->ln_Sub=node->ln_Succ; + node->ln_Succ->ln_Pred=node->ln_Parent; + } + else + if((node->ln_Succ!=node->ln_Parent) && (node->ln_Pred!=node->ln_Parent)) // middle node + { + Remove((struct Node *)node); + } + } + else + Remove((struct Node *)node); +} + +void ASMFUNC Tree_Insert(REG(a0)struct LVList *list,REG(a1)struct LVNode *node,REG(a2)struct LVNode *listNode) +{ + if(listNode) + { + if(listNode->ln_Parent) // in sub + { + node->ln_Succ=listNode->ln_Succ; + listNode->ln_Succ=node; + node->ln_Pred=listNode; + } + else + Insert((struct List *)list,(struct Node *)node,(struct Node *)listNode); + } + else + Insert((struct List *)list,(struct Node *)node,(struct Node *)listNode); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC STRG_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( msg->MethodID ) + { + case OM_NEW: + retval = STRG_NEW(cl, o, (struct opSet *)msg ); + break; + case GM_GOINACTIVE: + retval = STRG_GOINACTIVE(cl, o, (struct gpGoInactive *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +ULONG ASMFUNC LIST_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( msg->MethodID ) + { + case OM_NEW: + retval = LIST_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = LIST_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = LIST_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = LIST_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = LIST_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = LIST_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = LIST_RENDER(cl, o, (struct gpRender *)msg ); + break; + case GM_GOACTIVE: + retval = LIST_GOACTIVE(cl, o, (struct gpInput *)msg ); + break; + case GM_HANDLEINPUT: + retval = LIST_HANDLEINPUT(cl, o, (struct gpInput *)msg ); + break; + case GM_GOINACTIVE: + retval = LIST_GOINACTIVE(cl, o, (struct gpGoInactive *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS STRG_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct STRGData *SD; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + SD = INST_DATA( cl, object ); + SD->sd_LISTData = (struct LISTData *)GetTagData( TAG_USER+1, NULL, ops->ops_AttrList ); + } + return( (ULONG)object ); +} + +ULONG SAVEDS LIST_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct LISTData *LD; + UWORD *ColPos; + int a; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + LD = INST_DATA( cl, object ); + + if (LD->ld_StringClass = MakeClass (NULL, STRGCLASS, NULL, sizeof(struct STRGData), 0L)) + { + LD->ld_StringClass->cl_Dispatcher.h_Entry = (HookFunction) STRG_Dispatcher; + LD->ld_StringClass->cl_UserData = (ULONG) cl->cl_UserData; + } + LD->ld_StringObj=NULL; + LD->ld_ListViewObj=object; + LD->ld_OldTop = LD->ld_Top = GetTagData( LIST_Top, 0, ops->ops_AttrList ); + LD->ld_HookSub = (struct Hook *)GetTagData( LIST_HookSub, NULL, ops->ops_AttrList ); + LD->ld_HookEdit = (struct Hook *)GetTagData( LIST_HookEdit, NULL, ops->ops_AttrList ); + LD->ld_HookDraw = (struct Hook *)GetTagData( LIST_HookDraw, NULL, ops->ops_AttrList ); + LD->ld_MakeVisible = GetTagData( LIST_MakeVisible, FALSE, ops->ops_AttrList ); + LD->ld_Labels = (struct LVList *)GetTagData( LIST_Labels, NULL, ops->ops_AttrList ); + LD->ld_ReadOnly = GetTagData( LIST_ReadOnly, FALSE, ops->ops_AttrList ); + LD->ld_Border = GetTagData( LIST_Border, FALSE, ops->ops_AttrList ); + LD->ld_Columns = GetTagData( LIST_Columns, 1, ops->ops_AttrList ); + LD->ld_Format = (STRPTR) GetTagData( LIST_Format, NULL, ops->ops_AttrList ); + LD->ld_MultiSelect = GetTagData( LIST_MultiSelect, FALSE, ops->ops_AttrList ); + LD->ld_TextFont = (struct TextFont *)GetTagData( LIST_TextFont, NULL, ops->ops_AttrList); + LD->ld_ShowTreeLines= GetTagData( LIST_ShowTreeLines, FALSE, ops->ops_AttrList ); + LD->ld_IsTree = GetTagData( LIST_IsTree, FALSE, ops->ops_AttrList ); + LD->ld_TabChar = (STRPTR) GetTagData( LIST_TabChar, (ULONG) "\t", ops->ops_AttrList ); + if(ColPos = (UWORD *) GetTagData( LIST_ColumnsPos, NULL, ops->ops_AttrList )) + { + for(a=0;ald_Columns;a++) LD->ld_ColPos[a]=ColPos[a]; + LD->ld_Init = FALSE; + } + else LD->ld_Init = TRUE; + if(LD->ld_Labels) LD->ld_TopNode=LD->ld_Labels->lh_Head; else LD->ld_TopNode=NULL; + LD->ld_PrevSelected = NULL; + if(LD->ld_Columns==0) LD->ld_Columns=1; + unless(LD->ld_ColPos=AllocVec((LD->ld_Columns+1)*sizeof(UWORD),MEMF_ANY)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + return( (ULONG)object ); + } + LD->ld_SelCol=LD->ld_SelColPos=LD->ld_PrevColPos=0; + LD->ld_EditCol=FALSE; + + if(LD->ld_Border) + { + unless(LD->ld_FrameImage=NewObject(NULL,"frameiclass", + IA_Recessed, LD->ld_ReadOnly, + IA_EdgesOnly, TRUE, + IA_FrameType, FRAME_BUTTON, + TAG_END)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + return( (ULONG)object ); + } + } + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS LIST_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct LISTData *LD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + if(LD->ld_StringObj) + { + RemoveGadget(LD->ld_StringWnd,(struct Gadget *)LD->ld_StringObj); + DisposeObject(LD->ld_StringObj); + } + if(LD->ld_StringClass) FreeClass(LD->ld_StringClass); + if(LD->ld_FrameImage) DisposeObject(LD->ld_FrameImage); + if(LD->ld_ColPos) FreeVec(LD->ld_ColPos); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS LIST_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG retval,u=FALSE; + struct LISTData *LD = INST_DATA( cl, o ); + struct TagItem *tag, *tstate, notify; + struct RastPort *rp; + struct LVNode *node; + UWORD *ColPos; + int a; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case LIST_ColumnsPos: + ColPos=(UWORD *)tag->ti_Data; + for(a=0;ald_Columns;a++) LD->ld_ColPos[a]=ColPos[a]; + retval=FALSE; u=FALSE; + break; + case LIST_HookSub: + LD->ld_HookSub=(struct Hook *)tag->ti_Data; + retval=TRUE; u=FALSE; + break; + case LIST_HookDraw: + LD->ld_HookDraw=(struct Hook *)tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case LIST_HookEdit: + LD->ld_HookEdit=(struct Hook *)tag->ti_Data; + retval=TRUE; u=FALSE; + break; + case LIST_Labels: + LD->ld_Labels = (struct LVList *)tag->ti_Data; + LD->ld_Top = 0; LD->ld_OldTop=0; + retval = FALSE; u=FALSE; + break; + case LIST_Top: + LD->ld_OldTop=LD->ld_Top; + LD->ld_Top = tag->ti_Data; + if(LD->ld_Top<0) LD->ld_Top=0; + retval = FALSE; u=TRUE; + break; + case LIST_MakeVisible: + LD->ld_MakeVisible = tag->ti_Data; + retval = FALSE; u=TRUE; + break; + case LIST_Columns: + LD->ld_Columns = tag->ti_Data; + retval = FALSE; u=FALSE; + break; + case LIST_ShowTreeLines: + LD->ld_ShowTreeLines = tag->ti_Data; + retval = FALSE; u=FALSE; + break; + case LIST_IsTree: + LD->ld_IsTree = tag->ti_Data; + retval = FALSE; u=FALSE; + break; + case LIST_Selected: + for(node=LD->ld_Labels->lh_Head;Tree_NextNode(node);node=Tree_NextNode(node)) + { + if(node==(struct LVNode *)tag->ti_Data); + { + LD->ld_ActualNode = (struct LVNode *)tag->ti_Data; + break; + } + } + retval = FALSE; u=TRUE; + break; + } + } + LIST_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(!retval) + { + if(rp=ObtainGIRPort( ops->ops_GInfo )) + { + DoMethod(o,GM_RENDER,ops->ops_GInfo, rp, u?GREDRAW_UPDATE:GREDRAW_REDRAW); + ReleaseGIRPort(rp); + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS LIST_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval; + struct LISTData *LD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( opg->opg_AttrID ) + { + case LIST_ColumnsPos: + *opg->opg_Storage = (ULONG)LD->ld_ColPos; + break; + case LIST_HookSub: + *opg->opg_Storage = (ULONG)LD->ld_HookSub; + retval = TRUE; + break; + case LIST_HookEdit: + *opg->opg_Storage = (ULONG)LD->ld_HookEdit; + retval = TRUE; + break; + case LIST_HookDraw: + *opg->opg_Storage = (ULONG)LD->ld_HookDraw; + retval = TRUE; + break; + case LIST_Top: + *opg->opg_Storage = (ULONG)LD->ld_Top; + retval = TRUE; + break; + case LIST_Visible: + *opg->opg_Storage = (ULONG)LD->ld_Visible-(LD->ld_Columns>1?1:0); + retval = TRUE; + break; + case LIST_Labels: + *opg->opg_Storage = (ULONG)LD->ld_Labels; + retval = TRUE; + break; + case LIST_TextFont: + *opg->opg_Storage = (ULONG)LD->ld_TextFont; + retval = TRUE; + break; + case LIST_Border: + *opg->opg_Storage = (ULONG)LD->ld_Border; + retval = TRUE; + break; + case LIST_ReadOnly: + *opg->opg_Storage = (ULONG)LD->ld_ReadOnly; + retval = TRUE; + break; + case LIST_Columns: + *opg->opg_Storage = (ULONG)LD->ld_Columns; + retval = TRUE; + break; + case LIST_MultiSelect: + *opg->opg_Storage = (ULONG)LD->ld_MultiSelect; + retval = TRUE; + break; + case LIST_ShowTreeLines: + *opg->opg_Storage = (ULONG)LD->ld_ShowTreeLines; + retval = TRUE; + break; + case LIST_IsTree: + *opg->opg_Storage = (ULONG)LD->ld_IsTree; + retval = TRUE; + break; + case LIST_TabChar: + *opg->opg_Storage = (ULONG)LD->ld_TabChar; + retval = TRUE; + break; + case LIST_Selected: + *opg->opg_Storage = (ULONG)LD->ld_ActualNode; + retval = TRUE; + break; + default: + retval = DoSuperMethodA(cl, o, (Msg)opg); + break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS LIST_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval; + struct LISTData *LD = INST_DATA( cl, o ); + struct TagItem *tag, notify; + struct RastPort *rp; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) opu); + + if( opu->opu_AttrList ) + { + if(tag = FindTagItem( LIST_Top, opu->opu_AttrList )) + { + if( tag->ti_Data != LD->ld_Top) + { + LD->ld_OldTop = LD->ld_Top; + LD->ld_Top = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + LIST_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + if(tag = FindTagItem( LIST_MakeVisible, opu->opu_AttrList )) + { + if( tag->ti_Data != LD->ld_MakeVisible) + { + LD->ld_OldTop = LD->ld_Top; + LD->ld_Top = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + LIST_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } + return( retval ); +} + +ULONG SAVEDS LIST_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[4]; + struct LISTData *LD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + LIST_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + LIST_SetTagArg(tags[1], LIST_Top, LD->ld_Top); + LIST_SetTagArg(tags[2], LIST_MakeVisible, LD->ld_MakeVisible); + + if( opu->opu_AttrList == NULL ) + { + LIST_SetTagArg(tags[3], TAG_END, NULL); + } + else LIST_SetTagArg(tags[3], TAG_MORE, opu->opu_AttrList ); + + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS LIST_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval,State,a,c,b,w,len; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct DrawInfo *dri; + struct IBox container; + struct TextExtent temp_te; + struct RastPort *RP = gpr->gpr_RPort; + struct LISTData *LD = INST_DATA( cl, o ); + struct Region *region1=NULL,*oldregion; + struct Rectangle rectc; + UWORD patterndata[2] = { 0x2222, 0x8888 }; + ULONG TextPen, FillPen, BackgroundPen, HLTextPen; + struct LVNode *node; + struct IBox ibox; + STRPTR copytext,columnstring,ts; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + + LIST_GetGadgetRect( o, gpr->gpr_GInfo, &rect ); + + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + dri = gpr->gpr_GInfo->gi_DrInfo; + + if(gad->Flags & GFLG_DISABLED) + State = IDS_DISABLED; + else + State = IDS_NORMAL; + + if(LD->ld_Border) + { + SetAttrs( LD->ld_FrameImage, + IA_Left, container.Left, + IA_Top, container.Top, + IA_Width, container.Width, + IA_Height, container.Height, + TAG_END); + + DrawImageState( RP, (struct Image *)LD->ld_FrameImage, 0, 0, IDS_NORMAL, dri); + } + + region1=NewRegion(); + rectc.MinX=container.Left+2; + rectc.MinY=container.Top+2; + rectc.MaxX=container.Left+container.Width-2; + rectc.MaxY=container.Top+container.Height-2; + OrRectRegion(region1,&rectc); + oldregion=InstallClipRegion(gpr->gpr_GInfo->gi_Window->WLayer,region1); + + if( dri ) + { + BackgroundPen = dri->dri_Pens[BACKGROUNDPEN]; + TextPen = dri->dri_Pens[TEXTPEN]; + HLTextPen = dri->dri_Pens[HIGHLIGHTTEXTPEN]; + FillPen = dri->dri_Pens[FILLPEN]; + } + else + { + BackgroundPen = 0; + TextPen = 1; + HLTextPen = 2; + FillPen = 3; + } + + /* Do we have a proper font. */ + if(LD->ld_TextFont) SetFont(RP,LD->ld_TextFont); + else LD->ld_TextFont=RP->Font; + + if(LD->ld_Init) + { + for(a=0;ald_Columns;a++) LD->ld_ColPos[a]=a*(container.Width/LD->ld_Columns); + LD->ld_Init=FALSE; + } + LD->ld_ColPos[LD->ld_Columns]=container.Width; + + if(LD->ld_Labels) + { + for(node=LD->ld_Labels->lh_Head,a=0;Tree_NextNode(node)&&(ald_Top);node=Tree_NextNode(node),a++); + LD->ld_TopNode=node; + + LD->ld_Visible=((container.Height-4)/LD->ld_TextFont->tf_YSize); + + switch(gpr->gpr_Redraw) + { + case GREDRAW_UPDATE: + if(LD->ld_OldTop>LD->ld_Top) // text moves down + { + ScrollRaster(RP,0,(LD->ld_Top-LD->ld_OldTop)*LD->ld_TextFont->tf_YSize, + container.Left+3, container.Top+2+(LD->ld_Columns>1?LD->ld_TextFont->tf_YSize:0), + container.Left+container.Width-3, container.Top+1+LD->ld_Visible*LD->ld_TextFont->tf_YSize); + for(a=0+(LD->ld_Columns>1?1:0);Tree_NextNode(node)&&(a<(LD->ld_OldTop-LD->ld_Top)+(LD->ld_Columns>1?1:0))&&(ald_Visible);node=Tree_NextNode(node),a++) + { + if(LD->ld_MultiSelect && node==LD->ld_ActualNode) node->ln_Flags|=LV_SELECT; + LineOut(cl,o,RP,node,&container,a,dri); + if(LD->ld_MultiSelect) node->ln_Flags&=~LV_SELECT; + } + for(a=0;ald_Columns-1;a++) + { + w=LD->ld_ColPos[a+1]; + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Move(RP,container.Left+w,container.Top+2); + Draw(RP,container.Left+w,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+w+1,container.Top+2); + Draw(RP,container.Left+w+1,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + } + } + if(LD->ld_Top>LD->ld_OldTop) // text moves up + { + ScrollRaster(RP,0,(LD->ld_Top-LD->ld_OldTop)*LD->ld_TextFont->tf_YSize, + container.Left+3, container.Top+2+(LD->ld_Columns>1?LD->ld_TextFont->tf_YSize:0), + container.Left+container.Width-3, container.Top+container.Height-2); + if(LD->ld_Top-LD->ld_OldTopld_Visible) for(a=0+(LD->ld_Columns>1?1:0);Tree_NextNode(node)&&(ald_Visible-(LD->ld_Top-LD->ld_OldTop));node=Tree_NextNode(node),a++); + else a=0+(LD->ld_Columns>1?1:0); + for(;Tree_NextNode(node)&&(ald_Visible);node=Tree_NextNode(node),a++) + { + if(LD->ld_MultiSelect && node==LD->ld_ActualNode) node->ln_Flags|=LV_SELECT; + LineOut(cl,o,RP,node,&container,a,dri); + if(LD->ld_MultiSelect) node->ln_Flags&=~LV_SELECT; + } + for(a=0;ald_Columns-1;a++) + { + w=LD->ld_ColPos[a+1]; + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Move(RP,container.Left+w,container.Top+2); + Draw(RP,container.Left+w,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+w+1,container.Top+2); + Draw(RP,container.Left+w+1,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + } + } + break; + case GREDRAW_REDRAW: + ts=LD->ld_Format; + + for(a=0+(LD->ld_Columns>1?1:0);Tree_NextNode(node)&&(ald_Visible);node=Tree_NextNode(node),a++) + { + if(LD->ld_MultiSelect && node==LD->ld_ActualNode) node->ln_Flags|=LV_SELECT; + LineOut(cl,o,RP,node,&container,a,dri); + if(LD->ld_MultiSelect) node->ln_Flags&=~LV_SELECT; + } + SetAPen(RP,BackgroundPen); + RectFill(RP,container.Left+3,container.Top+2+a*LD->ld_TextFont->tf_YSize, + container.Left+container.Width-3,container.Top+container.Height-2); + + for(a=0;ald_Columns-1;a++) + { + w=LD->ld_ColPos[a+1]; + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Move(RP,container.Left+w,container.Top+2); + Draw(RP,container.Left+w,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+w+1,container.Top+2); + Draw(RP,container.Left+w+1,container.Top+(LD->ld_Border?container.Height:LD->ld_TextFont->tf_YSize)-3); + } + if(ts) + { + if(copytext=AllocMem(strlen(LD->ld_Format)+100,MEMF_ANY)) + { + if(columnstring=AllocMem(strlen(LD->ld_Format)+100,MEMF_ANY)) + { + for(a=0;ald_Columns;a++) + { + ts=stptok(ts,columnstring,strlen(LD->ld_Format)+100,"|"); + for(c=0,b=0;c<(strlen(columnstring)+1);c++) if(columnstring[c]!='') copytext[b++]=columnstring[c]; else c++; + len=TextFit(RP,copytext,strlen(copytext),&temp_te,NULL,1,LD->ld_ColPos[a+1]-LD->ld_ColPos[a]-12, 1+LD->ld_TextFont->tf_YSize); + SetAPen(RP,BackgroundPen); + RectFill(RP,container.Left+LD->ld_ColPos[a]+2,container.Top+2,container.Left+LD->ld_ColPos[a+1]-2,container.Top+2+LD->ld_TextFont->tf_YSize-1); + + ibox.Left=container.Left+LD->ld_ColPos[a]+6; + ibox.Top=container.Top+2; + ibox.Width=LD->ld_ColPos[a+1]-LD->ld_ColPos[a]-12; + ibox.Height=LD->ld_TextFont->tf_YSize+1; + TextColor(cl,o,RP,columnstring,len,dri,&ibox); +// SetAPen(RP,HLTextPen); +// Move(RP,container.Left+LD->ld_ColPos[a]+6,container.Top+2+LD->ld_TextFont->tf_Baseline); +// Text(RP,copytext,len); + if(*ts=='\0') break; + ts=stpblk(++ts); + } + FreeMem(columnstring,strlen(LD->ld_Format)+100); + } + FreeMem(copytext,strlen(LD->ld_Format)+100); + } + } + break; + case GREDRAW_TOGGLE: + if(LD->ld_MultiSelect) + { + for(a=0+(LD->ld_Columns>1?1:0);(node!=LD->ld_ActualNode)&&(ald_Visible);node=Tree_NextNode(node),a++); + if(node==LD->ld_ActualNode) + LineOut(cl,o,RP,node,&container,a,dri); + } + else + { + for(a=0+(LD->ld_Columns>1?1:0);Tree_NextNode(node)&&(ald_Visible);node=Tree_NextNode(node),a++) + { + if((node==LD->ld_PrevSelected) && (node!=LD->ld_ActualNode)) LineOut(cl,o,RP,node,&container,a,dri); + if((node!=LD->ld_PrevSelected) && (node==LD->ld_ActualNode)) + { + node->ln_Flags|=LV_SELECT; + LineOut(cl,o,RP,node,&container,a,dri); + node->ln_Flags&=~LV_SELECT; + } + } + } + break; + } + } + + if(State==IDS_DISABLED) + { + container.Width = MAX( 1, container.Width ); + container.Height = MAX( 1, container.Height ); + + SetDrMd(RP,JAM1); + SetAfPt(RP, patterndata, 1); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + + RectFill(RP, (LONG)container.Left, (LONG)container.Top, + container.Left + container.Width-1, + container.Top + container.Height-1); + SetAfPt(RP, NULL, 0 ); + } + + InstallClipRegion(gpr->gpr_GInfo->gi_Window->WLayer,oldregion); + if(region1) ClearRegion(region1); + + return( retval ); +} + +UWORD SelectedCol(struct LISTData *LD,UWORD x) +{ + UWORD a; + for(a=1;ald_Columns;a++) + { + if((x>=(LD->ld_ColPos[a]-2)) && (x<=(LD->ld_ColPos[a]+2))) return a; + } + return 0; +} + +ULONG SAVEDS LIST_GOACTIVE(Class *cl,Object *o,struct gpInput *gpi ) +{ + ULONG retval = GMR_MEACTIVE, Left, Top,SY,a,es,em,plustl; + struct RastPort *rp; + struct LISTData *LD = INST_DATA( cl, o ); + struct GadgetInfo *gi = gpi->gpi_GInfo; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct IBox container; + struct LVNode *node; + STRPTR ts; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + /* Test if we are disabled. */ + if((gad->Flags & GFLG_DISABLED) || LD->ld_ReadOnly) return( GMR_NOREUSE ); + + /* Call first our parent class. */ + DoSuperMethodA(cl, o, (Msg)gpi); + + LIST_GetGadgetRect( o, gpi->gpi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + /* Chech whether we were activated from mouse or keyboard. */ + LD->ld_ActiveFromMouse = (gpi->gpi_IEvent != NULL); + + /* Select this gadget. */ + gad->Flags |= GFLG_SELECTED; + + if(rp=ObtainGIRPort(gi)) + { + Left = gi->gi_Domain.Left; + Top = gi->gi_Domain.Top; + + SY=((gpi->gpi_Mouse.Y-Top-2)/(LD->ld_TextFont->tf_YSize)); + + if(((LD->ld_Columns>1)&&(SY==0)) || ((LD->ld_Visible-(LD->ld_Columns>1?1:0))ld_Columns>1)&&(SY==0)) && SelectedCol(LD,gpi->gpi_Mouse.X-Left)) + { + LD->ld_EditCol=TRUE; + LD->ld_PrevColPos=LD->ld_SelColPos=LD->ld_ColPos[SelectedCol(LD,gpi->gpi_Mouse.X-Left)]; + LD->ld_SelCol=SelectedCol(LD,gpi->gpi_Mouse.X-Left); + SetDrMd(rp,COMPLEMENT); + Move(rp,container.Left+LD->ld_SelColPos+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_SelColPos+Left,container.Top+container.Height-2); + Move(rp,container.Left+LD->ld_SelColPos+1+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_SelColPos+1+Left,container.Top+container.Height-2); + SetDrMd(rp,JAM1); + ReleaseGIRPort( rp ); + } + else + { + ReleaseGIRPort( rp ); + retval=GMR_NOREUSE; + } + } + else + { + for(a=0+(LD->ld_Columns>1?1:0),node=LD->ld_TopNode;Tree_NextNode(node)&&(aln_Succ) + { + if(LD->ld_MultiSelect) + { + LD->ld_Do=!(node->ln_Flags&LV_SELECT); + if(LD->ld_Do) node->ln_Flags|=LV_SELECT; + else node->ln_Flags&=~LV_SELECT; + } + LD->ld_PrevSelected=LD->ld_ActualNode; + LD->ld_ActualNode=node; + CurrentTime(&es,&em); + if(LD->ld_IsTree || LD->ld_ShowTreeLines) plustl=LD->ld_TextFont->tf_YSize+4; else plustl=0; + if((gpi->gpi_Mouse.X-Left>(plustl*node->ln_Indent+2) && gpi->gpi_Mouse.X-Left<(plustl*(node->ln_Indent+1)-2)) && node->ln_Sub) + { + if(node->ln_Flags&LV_OPEN) node->ln_Flags&=~LV_OPEN; else node->ln_Flags|=LV_OPEN; + if(LD->ld_HookSub) + { + if(node->ln_Flags&LV_OPEN) CallHook(LD->ld_HookSub,o,TLV_OPENSUB,node); + else CallHook(LD->ld_HookSub,o,TLV_CLOSESUB,node); + } + DoMethod( o, GM_RENDER, gi, rp, GREDRAW_REDRAW); + } + else + { + LD->ld_StringRedraw=FALSE; + DoMethod( o, GM_RENDER, gi, rp, GREDRAW_TOGGLE); + if(LD->ld_HookEdit) + { + if(LD->ld_StringObj) + { + RemoveGadget(LD->ld_StringWnd,(struct Gadget *)LD->ld_StringObj); + DisposeObject(LD->ld_StringObj); + LD->ld_StringObj=NULL; + } + LD->ld_StringRedraw=TRUE; + if((LD->ld_PrevSelected==LD->ld_ActualNode) && (!DoubleClick(LD->ld_Secs,LD->ld_Mics,es,em)) && ((gpi->gpi_Mouse.X-Left)ld_ColPos[1])) + { + ts=node->ln_Name; + for(a=0;ald_Columns;a++) + { + ts=stptok(ts,LD->ld_StringBuffer,strlen(node->ln_Name)+1,LD->ld_Columns>1?(char *)LD->ld_TabChar:"\0"); + if(((gpi->gpi_Mouse.X-Left)>LD->ld_ColPos[a]) && ((gpi->gpi_Mouse.X-Left)ld_ColPos[a+1])) + break; + ts=stpblk(++ts); + } + LD->ld_StringColumn=a; + if(CallHook(LD->ld_HookEdit,o,TLV_DOEDIT,LD->ld_ActualNode,LD->ld_StringBuffer,LD->ld_StringColumn)!=TLVCB_OK) + { + if(a!=0) plustl=0; + LD->ld_Secs=LD->ld_Mics=0L; + LD->ld_StringObj=NewObject(LD->ld_StringClass,NULL, + GA_Left,LD->ld_ColPos[LD->ld_StringColumn]+container.Left+6+plustl*(node->ln_Indent+1), + GA_Top,container.Top+SY*(LD->ld_TextFont->tf_YSize)+2, + GA_Width,LD->ld_ColPos[LD->ld_StringColumn+1]-LD->ld_ColPos[a]-(plustl*(node->ln_Indent+1))-10, + GA_Height,(LD->ld_TextFont->tf_YSize), + STRINGA_Buffer,LD->ld_StringBuffer, + STRINGA_TextVal,LD->ld_StringBuffer, + STRINGA_MaxChars,256, + STRINGA_WorkBuffer,LD->ld_StringBuffer, + STRINGA_ExitHelp,TRUE, + STRINGA_Pens,gi->gi_DrInfo->dri_Pens[HIGHLIGHTTEXTPEN], + STRINGA_ActivePens,gi->gi_DrInfo->dri_Pens[HIGHLIGHTTEXTPEN], + STRINGA_BufferPos,strlen(LD->ld_StringBuffer), + TAG_USER+1,LD, + TAG_DONE); + LD->ld_StringWnd=gi->gi_Window; + AddGadget(LD->ld_StringWnd,(struct Gadget *)LD->ld_StringObj,NULL); + RefreshGList((struct Gadget *)LD->ld_StringObj,LD->ld_StringWnd,NULL,1); + ActivateGadget((struct Gadget *)LD->ld_StringObj,LD->ld_StringWnd,NULL); + } + } + else + CurrentTime(&LD->ld_Secs,&LD->ld_Mics); + } + } + LD->ld_Cnt=SY; + + ReleaseGIRPort( rp ); + } + else + { + ReleaseGIRPort( rp ); + retval=GMR_NOREUSE; + } + } + } + else retval = GMR_NOREUSE; + + return(retval); +} + +ULONG SAVEDS LIST_HANDLEINPUT(Class *cl,Object *o,struct gpInput *gpi ) +{ + ULONG retval = GMR_MEACTIVE,Left,Top,SY,a; + struct InputEvent *ie = gpi->gpi_IEvent; + struct LISTData *LD = INST_DATA(cl, o); + struct GadgetInfo *gi = gpi->gpi_GInfo; + struct Rectangle rect; + struct IBox container; + struct RastPort *rp; + struct LVNode *node; + UWORD prev; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + if( LD->ld_ActiveFromMouse ) + { + while( ie && (retval == GMR_MEACTIVE) ) + { + switch( ie->ie_Class ) + { + case IECLASS_TIMER: // Scroll listview + break; + case IECLASS_RAWMOUSE: + switch(ie->ie_Code) + { + case SELECTUP: + retval=GMR_NOREUSE; + break; + case MENUUP: + retval=GMR_NOREUSE; + break; + case IECODE_NOBUTTON: + if(rp=ObtainGIRPort(gi)) + { + Left = gi->gi_Domain.Left; + Top = gi->gi_Domain.Top; + SY=((gpi->gpi_Mouse.Y-Top-2)/LD->ld_TextFont->tf_YSize); + if(LD->ld_EditCol) + { + if(SY==0 && LD->ld_EditCol) + { + LIST_GetGadgetRect( o, gpi->gpi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + if(((gpi->gpi_Mouse.X-Left)>(LD->ld_ColPos[LD->ld_SelCol-1]+5)) && ((gpi->gpi_Mouse.X-Left)>5) && ((gpi->gpi_Mouse.X-Left)ld_SelColPos=gpi->gpi_Mouse.X-Left; + SetDrMd(rp,COMPLEMENT); + Move(rp,container.Left+LD->ld_PrevColPos+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_PrevColPos+Left,container.Top+container.Height-2); + Move(rp,container.Left+LD->ld_PrevColPos+1+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_PrevColPos+1+Left,container.Top+container.Height-2); + Move(rp,container.Left+LD->ld_SelColPos+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_SelColPos+Left,container.Top+container.Height-2); + Move(rp,container.Left+LD->ld_SelColPos+1+Left,container.Top+2); + Draw(rp,container.Left+LD->ld_SelColPos+1+Left,container.Top+container.Height-2); + SetDrMd(rp,JAM1); + LD->ld_PrevColPos=LD->ld_SelColPos; + } + } + else + { + if(!(((LD->ld_Columns>1)&&(SY==0)) || ((LD->ld_Visible-(LD->ld_Columns>1?1:0))ld_Columns>1?1:0),node=LD->ld_TopNode;Tree_NextNode(node)&&(aln_Succ) + { + prev=node->ln_Flags; + if(LD->ld_MultiSelect) + { + if(LD->ld_Do) node->ln_Flags|=LV_SELECT; + else node->ln_Flags&=~LV_SELECT; + LD->ld_ActualNode=node; + if(prev!=node->ln_Flags) + DoMethod( o, GM_RENDER, gi, rp, GREDRAW_TOGGLE ); + } + else + { + LD->ld_PrevSelected=LD->ld_ActualNode; + LD->ld_ActualNode=node; + DoMethod( o, GM_RENDER, gi, rp, GREDRAW_TOGGLE ); + } + } + } + } + ReleaseGIRPort( rp ); + } + break; + } + break; + } + ie = ie->ie_NextEvent; + } + } + return(retval); +} + +ULONG SAVEDS STRG_GOINACTIVE(Class *cl,Object *o,struct gpGoInactive *gpgi ) +{ + ULONG retval; + struct STRGData *SD = INST_DATA( cl, o ); + struct LISTData *LD = SD->sd_LISTData; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg)gpgi); + if(LD->ld_HookEdit) CallHook(LD->ld_HookEdit,o,TLV_EDIT,LD->ld_ActualNode,LD->ld_StringBuffer,LD->ld_StringColumn); + + SetAttrs(LD->ld_StringObj,GA_Top,-LD->ld_TextFont->tf_YSize-4,TAG_DONE); + if(LD->ld_StringRedraw) RefreshGList((struct Gadget *)LD->ld_ListViewObj,LD->ld_StringWnd,NULL,1); + return(retval); +} + +ULONG SAVEDS LIST_GOINACTIVE(Class *cl,Object *o,struct gpGoInactive *gpgi ) +{ + ULONG retval,a; + struct LISTData *LD = INST_DATA( cl, o ); + struct RastPort *rp; + struct DrawInfo *dri; + struct Rectangle rect; + struct IBox container; + WORD delta; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg)gpgi); +/* if(LD->ld_StringObj) + { + RemoveGadget(gpgi->gpgi_GInfo->gi_Window,(struct Gadget *)LD->ld_StringObj); + DisposeObject(LD->ld_StringObj); + LD->ld_StringObj=NULL; +// if(LD->ld_HookEdit) CallHook(LD->ld_HookEdit,o,TLV_EDIT,LD->ld_ActualNode,LD->ld_StringBuffer); + if(rp=ObtainGIRPort(gpgi->gpgi_GInfo)) + { + DoMethod( o, GM_RENDER, gpgi->gpgi_GInfo, rp, GREDRAW_REDRAW ); + ReleaseGIRPort( rp ); + } + } +*/ +// if(LD->ld_HookEdit) CallHook(LD->ld_HookEdit,o,TLV_EDIT,LD->ld_ActualNode,LD->ld_StringBuffer); + + if(LD->ld_EditCol) + { + LD->ld_EditCol=FALSE; + delta=LD->ld_SelColPos-LD->ld_ColPos[LD->ld_SelCol]; + LD->ld_ColPos[LD->ld_SelCol]=LD->ld_SelColPos; + for(a=LD->ld_SelCol+1;ald_Columns;a++) LD->ld_ColPos[a]+=delta; + if(rp=ObtainGIRPort(gpgi->gpgi_GInfo)) + { + LIST_GetGadgetRect( o, gpgi->gpgi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + dri = gpgi->gpgi_GInfo->gi_DrInfo; + SetAPen(rp,dri->dri_Pens[BACKGROUNDPEN]); + RectFill(rp, (LONG)container.Left+2, (LONG)container.Top+1, + container.Left + container.Width-2, + container.Top + container.Height-2); + DoMethod( o, GM_RENDER, gpgi->gpgi_GInfo, rp, GREDRAW_REDRAW ); + ReleaseGIRPort( rp ); + } + } + ((struct Gadget *)o)->Flags &= ~GFLG_SELECTED; + + return(retval); +} + + +void SAVEDS LIST_GetGadgetRect( Object *o,struct GadgetInfo *gi,struct Rectangle *rect ) +{ + struct Gadget *gad = (struct Gadget *)o; + LONG W, H; + + rect->MinX = gad->LeftEdge; + rect->MinY = gad->TopEdge; + W = gad->Width; + H = gad->Height; + + if( gi ) + { + if( gad->Flags & GFLG_RELRIGHT ) rect->MinX += gi->gi_Domain.Width - 1; + if( gad->Flags & GFLG_RELBOTTOM ) rect->MinY += gi->gi_Domain.Height - 1; + if( gad->Flags & GFLG_RELWIDTH ) W += gi->gi_Domain.Width; + if( gad->Flags & GFLG_RELHEIGHT ) H += gi->gi_Domain.Height; + } + rect->MaxX = rect->MinX + W - (W > 0); + rect->MaxY = rect->MinY + H - (H > 0); +} + +void SAVEDS SPrintf(Class *cl, STRPTR buffer, STRPTR format, ...) +{ + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + RawDoFmt( format, (APTR)(&format+1), (void (*)())"\x16\xc0\x4E\x75", buffer); +} + +void TextColor(Class *cl,Object *o,struct RastPort *RP,STRPTR text,ULONG len,struct DrawInfo *dri,struct IBox *container) +{ + ULONG flg,a,b,skipx; + UBYTE Justify; + + SetAPen(RP,dri->dri_Pens[TEXTPEN]); + flg=FS_NORMAL; + SetSoftStyle(RP,flg,AskSoftStyle(RP)); + Justify=0; + + for(a=0,skipx=0;aLeft+skipx,container->Top+RP->TxBaseline); + break; + case 1: // Center + Move(RP,container->Left+skipx+container->Width/2-TextLength(RP,text+a,b)/2,container->Top+RP->TxBaseline); + break; + case 2: // Right justify + Move(RP,container->Left+skipx+container->Width-TextLength(RP,text+a,b),container->Top+RP->TxBaseline); + break; + } + Text(RP,text+a,b); + Move(RP,container->Left+skipx,container->Top+RP->TxBaseline); + skipx+=TextLength(RP,text+a,b); + for(b=0;(text[a+b]!='') && (text[a+b]!='\0');b++); + a+=b-1; + } + else + { + a++; + switch(text[a]) + { + case 'p': flg=FS_NORMAL; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Plain + case 'i': flg|=FSF_ITALIC; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Italic + case 'u': flg|=FSF_UNDERLINED; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Underline + case 'b': flg|=FSF_BOLD; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Bold + + case 'l': Justify=0; break; // Left justify + case 'c': Justify=1; break; // Center + case 'r': Justify=2; break; // Right justify + + case '0': SetAPen(RP,0); break; // Set color + case '1': SetAPen(RP,1); break; + case '2': SetAPen(RP,2); break; + case '3': SetAPen(RP,3); break; + case '4': SetAPen(RP,4); break; + case '5': SetAPen(RP,5); break; + case '6': SetAPen(RP,6); break; + case '7': SetAPen(RP,7); break; + case '8': SetAPen(RP,8); break; + case '9': SetAPen(RP,9); break; + } + } + } +} + +void LineOut(Class *cl,Object *o,struct RastPort *RP,struct LVNode *node,struct IBox *container,ULONG linenum,struct DrawInfo *dri) +{ + ULONG len,plus=0,plustl,treeoffset,columnwidth,textcolumnwidth,a,b,col,w; + struct LISTData *LD = INST_DATA( cl, o ); + struct TextExtent temp_te; + STRPTR ts,columnstring,copytext; + UBYTE TextPen,FillPen,BackgroundPen; + UWORD x,y; + struct LVNode *np; + struct IBox ibox; + + if(LD->ld_HookDraw) + { + struct Rectangle rect; + rect.MinX=container->Left+1; + rect.MinY=container->Top+2+linenum*LD->ld_TextFont->tf_YSize; + rect.MaxX=container->Left+container->Width-1; + rect.MaxY=container->Top+2+(linenum+1)*LD->ld_TextFont->tf_YSize-1; + if(CallHook(LD->ld_HookDraw,o,TLV_DRAW,node,RP,dri,rect,LD->ld_ColPos)==TLVCB_OK) return; + } + + if( dri ) + { + TextPen = dri->dri_Pens[TEXTPEN]; + FillPen = dri->dri_Pens[FILLPEN]; + BackgroundPen = dri->dri_Pens[BACKGROUNDPEN]; + } + else + { + TextPen = 1; + FillPen = 3; + BackgroundPen = 0; + } + + if(LD->ld_IsTree || LD->ld_ShowTreeLines) plustl=LD->ld_TextFont->tf_YSize+4; else plustl=0; + + ts=node->ln_Name; + if(columnstring=AllocMem(strlen(node->ln_Name)+1,MEMF_ANY)) + { + if(copytext=AllocMem(strlen(node->ln_Name)+1,MEMF_ANY)) + { + col=0; + while(TRUE) + { + treeoffset=((col==0)?(plustl*(node->ln_Indent+1)):0); + columnwidth=LD->ld_ColPos[col+1]-LD->ld_ColPos[col]; + textcolumnwidth=columnwidth-12-treeoffset; + + ts=stptok(ts,columnstring,strlen(node->ln_Name)+1,LD->ld_Columns>1?(char *)LD->ld_TabChar:"\0"); + for(a=0,b=0;a<(strlen(columnstring)+1);a++) if(columnstring[a]!='') copytext[b++]=columnstring[a]; else a++; + len=TextFit(RP,copytext,strlen(copytext),&temp_te,NULL,1,textcolumnwidth, 1+LD->ld_TextFont->tf_YSize); + if((LD->ld_MultiSelect)?(node->ln_Flags&LV_SELECT):(LD->ld_ActualNode==node)) SetAPen(RP,FillPen); else SetAPen(RP,BackgroundPen); + RectFill(RP,container->Left+plus+2,container->Top+2+linenum*LD->ld_TextFont->tf_YSize,container->Left+plus+columnwidth-1,container->Top+2+(linenum+1)*LD->ld_TextFont->tf_YSize-1); + + ibox.Left=container->Left+6+plus+treeoffset; + ibox.Top=container->Top+2+linenum*LD->ld_TextFont->tf_YSize; + ibox.Width=textcolumnwidth; + ibox.Height=LD->ld_TextFont->tf_YSize+1; + TextColor(cl,o,RP,columnstring,len,dri,&ibox); + + if(*ts=='\0') break; + ts=stpblk(++ts); + plus+=columnwidth; + col++; + } + FreeMem(copytext,strlen(node->ln_Name)+1); + } + FreeMem(columnstring,strlen(node->ln_Name)+1); + } + + SetDrMd(RP,JAM1); + if(LD->ld_ShowTreeLines && LD->ld_ColPos[1]>(2*(LD->ld_TextFont->tf_YSize-5))) + { + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + if(LD->ld_TextFont->tf_YSize>8) + { + y=container->Top+2+linenum*LD->ld_TextFont->tf_YSize+2; + w=(LD->ld_TextFont->tf_YSize-4)-1; + } + else + { + y=container->Top+2+linenum*LD->ld_TextFont->tf_YSize+1; + w=(LD->ld_TextFont->tf_YSize-2)-1; + } + for(b=0;bln_Indent;b++) + { + x=container->Left+6+(b*plustl); + for(col=0,np=node;colln_Indent-b;col++,np=np->ln_Parent); + if(np->ln_Parent) + { + if(np->ln_Parent!=np->ln_Succ) + { + Move(RP,x+w/2,y-2); // Draw '|' + Draw(RP,x+w/2,y+w+2); + } + } + else + { + if(np->ln_Succ->ln_Succ) + { + Move(RP,x+w/2,y-2); // Draw '|' + Draw(RP,x+w/2,y+w+2); + } + } + } + x=container->Left+6+(node->ln_Indent*plustl); + if(node->ln_Sub) + { + Move(RP,x,y); // Draw rectangle + Draw(RP,x+w,y); + Draw(RP,x+w,y+w); + Draw(RP,x,y+w); + Draw(RP,x,y); + Move(RP,x+w/2,y-2); // Draw '|' above rectangle + Draw(RP,x+w/2,y); + if((node->ln_Parent && node->ln_Succ!=node->ln_Parent)||(!node->ln_Parent && node->ln_Succ->ln_Succ)) + { // Draw '|' below rectangle + Move(RP,x+w/2,y+w); + Draw(RP,x+w/2,y+w+2); + } + Move(RP,x+w,y+w/2); // Draw '-' at right of rectangle + Draw(RP,x+w+2,y+w/2); + if(node->ln_Flags&LV_OPEN) + { // Draw '-' + Move(RP,x+3,y+w/2); + Draw(RP,x+w-3,y+w/2); + } + else + { // Draw '+' + Move(RP,x+3,y+w/2); + Draw(RP,x+w-3,y+w/2); + Move(RP,x+w/2,y+3); + Draw(RP,x+w/2,y+w-3); + } + } + else + { + if((node->ln_Parent && node->ln_Succ==node->ln_Parent)||(!node->ln_Parent && !node->ln_Succ->ln_Succ)) + { // Draw '|' + Move(RP,x+w/2,y-2); + Draw(RP,x+w/2,y+w/2); + } + else + { // Draw half '|' + Move(RP,x+w/2,y-2); + Draw(RP,x+w/2,y+w+2); + } + Move(RP,x+w/2,y+w/2); // Draw '-' + Draw(RP,x+w+2,y+w/2); + } + } +} diff --git a/GadToolsBox/Gadgets/listview.fd b/GadToolsBox/Gadgets/listview.fd new file mode 100755 index 0000000..ee555ef --- /dev/null +++ b/GadToolsBox/Gadgets/listview.fd @@ -0,0 +1,17 @@ +##base _ListViewBase +##bias 30 +GetListViewClass() +Tree_NewList(list)(a0) +Tree_AddTail(list,node)(a0,a1) +Tree_AddHead(list,node)(a0,a1) +Tree_AddSubTail(list,parent,node)(a0,a1,a2) +Tree_NextNode(list)(a0) +Tree_AddSubHead(list,parent,node)(a0,a1,a2) +Tree_RemTail(list)(a0) +Tree_RemHead(list)(a0) +Tree_Remove(node)(a0) +Tree_RemSubTail(node)(a0) +Tree_RemSubHead(node)(a0) +Tree_Insert(list,node,listNode)(a0,a1,a2) +Tree_NextSubNode(list)(a0) +##end diff --git a/GadToolsBox/Gadgets/listview.gadget_rev.h b/GadToolsBox/Gadgets/listview.gadget_rev.h new file mode 100755 index 0000000..1dd0db0 --- /dev/null +++ b/GadToolsBox/Gadgets/listview.gadget_rev.h @@ -0,0 +1,6 @@ +#define VERSION 37 +#define REVISION 2 +#define DATE "18.4.98" +#define VERS "listview.gadget 37.2" +#define VSTRING "listview.gadget 37.2 (18.4.98)\r\n" +#define VERSTAG "\0$VER: listview.gadget 37.2 (18.4.98)" diff --git a/GadToolsBox/Gadgets/listview.gadget_rev.i b/GadToolsBox/Gadgets/listview.gadget_rev.i new file mode 100755 index 0000000..7a70e3a --- /dev/null +++ b/GadToolsBox/Gadgets/listview.gadget_rev.i @@ -0,0 +1,14 @@ +VERSION EQU 37 +REVISION EQU 2 +DATE MACRO + dc.b '18.4.98' + ENDM +VERS MACRO + dc.b 'listview.gadget 37.2' + ENDM +VSTRING MACRO + dc.b 'listview.gadget 37.2 (18.4.98)',13,10,0 + ENDM +VERSTAG MACRO + dc.b 0,'$VER: listview.gadget 37.2 (18.4.98)',0 + ENDM diff --git a/GadToolsBox/Gadgets/listview.gadget_rev.rev b/GadToolsBox/Gadgets/listview.gadget_rev.rev new file mode 100755 index 0000000..9a7456b --- /dev/null +++ b/GadToolsBox/Gadgets/listview.gadget_rev.rev @@ -0,0 +1,2 @@ +2 + diff --git a/GadToolsBox/Gadgets/page.c b/GadToolsBox/Gadgets/page.c new file mode 100755 index 0000000..3093aa1 --- /dev/null +++ b/GadToolsBox/Gadgets/page.c @@ -0,0 +1,861 @@ +/* +** Page Class +** $VER: page.c 37.1 (15.1.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"page.gadget_rev.h" + +TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define abs(x) ((x)<0?-(x):(x)) +#define unless(x) if(!(x)) +#define PAGE_SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define PAGEGADGET "page.gadget" + +/* +** Prototypes +*/ + +Class * ASMFUNC GetPageClass(void); +APTR ASMFUNC PAGE_GetCopyright(void); +ULONG ASMFUNC PAGE_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG PAGE_NEW(Class *,Object *,struct opSet *); +ULONG STRG_NEW(Class *,Object *,struct opSet *); +ULONG PAGE_DISPOSE(Class *, Object *, Msg); +ULONG PAGE_SET(Class *, Object *, struct opSet *); +ULONG PAGE_GET(Class *,Object *,struct opGet *); +ULONG PAGE_UPDATE(Class *,Object *,struct opUpdate *); +ULONG PAGE_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG PAGE_RENDER(Class *,Object *,struct gpRender *); +ULONG PAGE_GOACTIVE(Class *,Object *,struct gpInput *); +void PAGE_GetGadgetRect( Object *,struct GadgetInfo *,struct Rectangle *); +void SPrintf(Class *,STRPTR buffer, STRPTR format, ...); +ULONG TextFitColor(struct RastPort *,STRPTR,ULONG,struct TextExtent *,struct TextExtent *,WORD,UWORD,UWORD); +void TextColor(Class *,Object *,struct RastPort *,STRPTR,ULONG,struct DrawInfo *,struct IBox *); + +/* +** Variables +*/ + +struct PAGEData +{ + struct BevelBox *pg_ClearBBox; + ULONG pg_Layout; + ULONG pg_Active; + ULONG pg_ActiveStyle; + BOOL pg_Underscore; + BOOL pg_GadgetsAdded; + struct TextFont *pg_TextFont; + struct TextAttr *pg_TextAttr; + struct Page *pg_Pages; + struct Page *pg_ActivePage; + Object *pg_FrameImage; + ULONG pg_NumPages; +}; + +Class *cl=NULL; + +/* +** Create Class +*/ + +int ASMFUNC __UserLibInit(REG(a6) struct MyLibrary *libbase) +{ + if(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",36L)) + { + if(UtilityBase=OpenLibrary("utility.library",36L)) + { + if(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",36L)) + { + if(GadToolsBase=OpenLibrary("gadtools.library",36L)) + { + if(LayersBase=OpenLibrary("layers.library",36L)) + { + if (cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct PAGEData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) PAGE_Dispatcher; + cl->cl_UserData = (ULONG) libbase; +// AddClass (cl); + return(FALSE); + } + CloseLibrary(LayersBase); + } + CloseLibrary(GadToolsBase); + } + CloseLibrary((struct Library *)GfxBase); + } + CloseLibrary(UtilityBase); + } + CloseLibrary((struct Library *)IntuitionBase); + } + return(TRUE); +} + +void ASMFUNC __UserLibCleanup(REG(a6) struct MyLibrary *libbase) +{ + FreeClass(cl); + if(IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); + if(UtilityBase) CloseLibrary(UtilityBase); + if(GfxBase) CloseLibrary((struct Library *)GfxBase); +} + + +Class * ASMFUNC GetPageClass() +{ + return cl; +} + +APTR ASMFUNC PAGE_GetCopyright() +{ + return (APTR) VERS; +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC PAGE_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( msg->MethodID ) + { + case OM_NEW: + retval = PAGE_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = PAGE_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = PAGE_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = PAGE_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = PAGE_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = PAGE_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = PAGE_RENDER(cl, o, (struct gpRender *)msg ); + break; + case GM_GOACTIVE: + retval = PAGE_GOACTIVE(cl, o, (struct gpInput *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS PAGE_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct PAGEData *PG; + struct Page *pages; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + PG = INST_DATA( cl, object ); + + PG->pg_GadgetsAdded=FALSE; + PG->pg_Active=0; + PG->pg_ActivePage=NULL; + PG->pg_Pages=(struct Page *)GetTagData( PAGE_Pages, NULL, ops->ops_AttrList ); + for(pages=PG->pg_Pages,PG->pg_NumPages=0;pages;pages=pages->NextPage,PG->pg_NumPages++); + PG->pg_Layout=GetTagData( PAGE_Layout, NULL, ops->ops_AttrList ); + PG->pg_Underscore=GetTagData( PAGE_Underscore, NULL, ops->ops_AttrList ); + PG->pg_Active=GetTagData( PAGE_Active, NULL, ops->ops_AttrList ); + if(PG->pg_Active>PG->pg_NumPages) PG->pg_Active=PG->pg_NumPages; + PG->pg_TextFont=(struct TextFont *)GetTagData( PAGE_TextFont, NULL, ops->ops_AttrList ); + PG->pg_TextAttr=(struct TextAttr *)GetTagData( PAGE_TextAttr, NULL, ops->ops_AttrList ); + PG->pg_ActiveStyle=GetTagData( PAGE_ActiveStyle, NULL, ops->ops_AttrList ); + PG->pg_ClearBBox=(struct BevelBox *)GetTagData( PAGE_ClearBBox, NULL, ops->ops_AttrList ); + { + unless(PG->pg_FrameImage=NewObject(NULL,"frameiclass", + IA_Recessed, FALSE, + IA_EdgesOnly, TRUE, + IA_FrameType, FRAME_BUTTON, + TAG_END)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + return( (ULONG)object ); + } + } + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS PAGE_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct PAGEData *PG = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + if(PG->pg_FrameImage) DisposeObject(PG->pg_FrameImage); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS PAGE_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG retval,u=FALSE; + struct PAGEData *PG = INST_DATA( cl, o ); + struct TagItem *tag, *tstate, notify; + struct RastPort *rp; + struct Page *pages; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case PAGE_Pages: + PG->pg_Pages=(struct Page *)tag->ti_Data; + for(pages=PG->pg_Pages,PG->pg_NumPages=0;pages;pages=pages->NextPage,PG->pg_NumPages++); + if(PG->pg_Active>PG->pg_NumPages) PG->pg_Active=PG->pg_NumPages; + retval=FALSE; u=FALSE; + break; + case PAGE_Layout: + PG->pg_Layout=tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case PAGE_Underscore: + PG->pg_Underscore=tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case PAGE_Active: + PG->pg_Active=tag->ti_Data; + if(PG->pg_Active>PG->pg_NumPages) PG->pg_Active=PG->pg_NumPages; + retval=FALSE; u=FALSE; + break; + case PAGE_TextFont: + PG->pg_TextFont=(struct TextFont *)tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case PAGE_TextAttr: + PG->pg_TextAttr=(struct TextAttr *)tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case PAGE_ActiveStyle: + PG->pg_ActiveStyle=tag->ti_Data; + retval=FALSE; u=FALSE; + break; + case PAGE_ClearBBox: + PG->pg_ClearBBox=(struct BevelBox *)tag->ti_Data; + retval=FALSE; u=FALSE; + break; + } + } + PAGE_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(!retval) + { + if(rp=ObtainGIRPort( ops->ops_GInfo )) + { + DoMethod(o,GM_RENDER,ops->ops_GInfo, rp, u?GREDRAW_UPDATE:GREDRAW_REDRAW); + ReleaseGIRPort(rp); + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS PAGE_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval; + struct PAGEData *PG = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( opg->opg_AttrID ) + { + case PAGE_Pages: + *opg->opg_Storage = (ULONG)PG->pg_Pages; + break; + case PAGE_Layout: + *opg->opg_Storage = (ULONG)PG->pg_Layout; + retval = TRUE; + break; + case PAGE_Underscore: + *opg->opg_Storage = (ULONG)PG->pg_Underscore; + retval = TRUE; + break; + case PAGE_Active: + *opg->opg_Storage = (ULONG)PG->pg_Active; + retval = TRUE; + break; + case PAGE_TextFont: + *opg->opg_Storage = (ULONG)PG->pg_TextFont; + retval = TRUE; + break; + case PAGE_TextAttr: + *opg->opg_Storage = (ULONG)PG->pg_TextAttr; + retval = TRUE; + break; + case PAGE_ActiveStyle: + *opg->opg_Storage = (ULONG)PG->pg_ActiveStyle; + retval = TRUE; + break; + case PAGE_ClearBBox: + *opg->opg_Storage = (ULONG)PG->pg_ClearBBox; + retval = TRUE; + break; + default: + retval = DoSuperMethodA(cl, o, (Msg)opg); + break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS PAGE_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval; + struct PAGEData *PG = INST_DATA( cl, o ); + struct TagItem *tag, notify; + struct RastPort *rp; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) opu); + + if( opu->opu_AttrList ) + { + if(tag = FindTagItem( PAGE_Active, opu->opu_AttrList )) + { + if( tag->ti_Data != PG->pg_Active) + { + PG->pg_Active = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + PAGE_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } + return( retval ); +} + +ULONG SAVEDS PAGE_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[3]; + struct PAGEData *PG = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + PAGE_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + PAGE_SetTagArg(tags[1], PAGE_Active, PG->pg_Active); + + if( opu->opu_AttrList == NULL ) { PAGE_SetTagArg(tags[2], TAG_END, NULL); } + else PAGE_SetTagArg(tags[2], TAG_MORE, opu->opu_AttrList ); + + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS PAGE_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval,State,a,len,offset; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct DrawInfo *dri; + struct IBox container,box; + struct TextExtent temp_te; + struct RastPort *RP = gpr->gpr_RPort; + struct PAGEData *PG = INST_DATA( cl, o ); + UWORD patterndata[2] = { 0x2222, 0x8888 }; + UWORD fillpatterndata[2] = { 0x5555, 0xaaaa }; + struct Page *page; + struct BevelBox *bbox; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + + PAGE_GetGadgetRect( o, gpr->gpr_GInfo, &rect ); + + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + dri = gpr->gpr_GInfo->gi_DrInfo; + + if(gad->Flags & GFLG_DISABLED) + State = IDS_DISABLED; + else + State = IDS_NORMAL; + + /* Do we have a proper font. */ + if(PG->pg_TextFont) SetFont(RP,PG->pg_TextFont); + else PG->pg_TextFont=RP->Font; + + if(PG->pg_Pages) + { + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + RectFill(RP,container.Left,container.Top,container.Left+container.Width,container.Top+container.Height); + + if(PG->pg_ClearBBox) + { + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + RectFill(RP,PG->pg_ClearBBox->Left,PG->pg_ClearBBox->Top,PG->pg_ClearBBox->Left+PG->pg_ClearBBox->Width,PG->pg_ClearBBox->Top+PG->pg_ClearBBox->Height); + SetAttrs( PG->pg_FrameImage, + IA_Left, PG->pg_ClearBBox->Left, + IA_Top, PG->pg_ClearBBox->Top, + IA_Width, PG->pg_ClearBBox->Width, + IA_Height, PG->pg_ClearBBox->Height, + TAG_END); + DrawImageState( RP, (struct Image *)PG->pg_FrameImage, 0, 0, IDS_NORMAL, dri); + } + + if(gpr->gpr_Redraw!=GREDRAW_UPDATE) + { + if(PG->pg_GadgetsAdded) + { + RemoveGList(gpr->gpr_GInfo->gi_Window,PG->pg_ActivePage->FirstGadget,-1); + PG->pg_GadgetsAdded=FALSE; + } + } + for(a=0,page=PG->pg_Pages;apg_NumPages;a++,page=page->NextPage) + { + offset=1; + switch(PG->pg_Layout) + { + case PGLYT_SIMPLE: + if(a==PG->pg_Active) + { + offset=0; + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+1,container.Top+container.Height-1); + if(a==PG->pg_NumPages-1) Draw(RP,container.Left+container.Width-1,container.Top+container.Height-1); + else Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-3,container.Top+container.Height-1); + PG->pg_ActivePage=page; + } + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages),container.Top+container.Height-2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages),container.Top+offset+2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+2,container.Top+offset); + if(a==PG->pg_NumPages-1) + { + Draw(RP,container.Left+container.Width-2,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Draw(RP,container.Left+container.Width,container.Top+offset+2); + Draw(RP,container.Left+container.Width,container.Top+container.Height-2); + } + else + { + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-2,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2,container.Top+offset+2); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2,container.Top+container.Height-2); + } + break; + case PGLYT_MUISTYLE: + if(a==PG->pg_Active) + { + offset=0; + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+1,container.Top+container.Height-1); + if(a==PG->pg_NumPages-1) Draw(RP,container.Left+container.Width-1,container.Top+container.Height-1); + else Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-3,container.Top+container.Height-1); + PG->pg_ActivePage=page; + } + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages),container.Top+container.Height-2); + if(a==PG->pg_Active) + { + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+2,container.Top+container.Height-2-2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+2,container.Top+offset+2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+4,container.Top+offset); + } + else + { + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+2,container.Top+container.Height-2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+2,container.Top+offset+2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages)+4,container.Top+offset); + } + if(a==PG->pg_NumPages-1) + { + Draw(RP,container.Left+container.Width-4,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + if(a==PG->pg_Active) + { + Draw(RP,container.Left+container.Width-2,container.Top+2); + Draw(RP,container.Left+container.Width-2,container.Top+container.Height-2-2); + Draw(RP,container.Left+container.Width,container.Top+container.Height-2); + } + else + { + Draw(RP,container.Left+container.Width-2,container.Top+2); + Draw(RP,container.Left+container.Width-2,container.Top+container.Height-2); + } + } + else + { + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-4,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + if(a==PG->pg_Active) + { + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-2,container.Top+offset+2); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-2,container.Top+container.Height-2-2); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2,container.Top+container.Height-2); + } + else + { + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-2,container.Top+offset+2); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2-2,container.Top+container.Height-2); + } + } + break; + case PGLYT_GADTOOLS: + if(a==PG->pg_Active) + { + offset=0; + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+1,container.Top+container.Height-1); + if(a==PG->pg_NumPages-1) Draw(RP,container.Left+container.Width-1,container.Top+container.Height-1); + else Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-3,container.Top+container.Height-1); + PG->pg_ActivePage=page; + } + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages),container.Top+container.Height-2); + Draw(RP,container.Left+a*(container.Width/PG->pg_NumPages),container.Top+offset); + if(a==PG->pg_NumPages-1) + { + Draw(RP,container.Left+container.Width,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Draw(RP,container.Left+container.Width,container.Top+container.Height-2); + } + else + { + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2,container.Top+offset); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + Draw(RP,container.Left+(a+1)*(container.Width/PG->pg_NumPages)-2,container.Top+container.Height-2); + } + break; + } + if(page->Name) + { + switch(PG->pg_ActiveStyle) + { + case PGAST_NORMAL: + SetAPen(RP,dri->dri_Pens[TEXTPEN]); + break; + case PGAST_HILIGHT: + if(PG->pg_Active==a) SetAPen(RP,dri->dri_Pens[HIGHLIGHTTEXTPEN]); + else SetAPen(RP,dri->dri_Pens[TEXTPEN]); + break; + case PGAST_SHADOW: + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + break; + } + len=TextFit(RP,page->Name,strlen(page->Name),&temp_te,NULL,1,container.Width/PG->pg_NumPages-4, 1+PG->pg_TextFont->tf_YSize); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+((container.Width/PG->pg_NumPages)-(1+temp_te.te_Extent.MaxX-temp_te.te_Extent.MinX))/2-temp_te.te_Extent.MinX,PG->pg_TextFont->tf_Baseline+(1+container.Top+rect.MaxY-PG->pg_TextFont->tf_YSize)/2+offset); + Text(RP,page->Name,len); +// box.Left=container.Left+a*(container.Width/PG->pg_NumPages); +// box.Top=(1+container.Top+rect.MaxY-PG->pg_TextFont->tf_YSize)/2+offset; +// box.Width=container.Width/PG->pg_NumPages-4; +// box.Height=1+PG->pg_TextFont->tf_YSize; +// TextColor(cl,o,RP,page->Name,strlen(page->Name),dri,&box); + switch(PG->pg_ActiveStyle) + { + case PGAST_SHADOW: + SetAPen(RP,dri->dri_Pens[SHINEPEN]); + Move(RP,container.Left+a*(container.Width/PG->pg_NumPages)+((container.Width/PG->pg_NumPages)-(1+temp_te.te_Extent.MaxX-temp_te.te_Extent.MinX))/2-temp_te.te_Extent.MinX-1,PG->pg_TextFont->tf_Baseline+(1+container.Top+rect.MaxY-PG->pg_TextFont->tf_YSize)/2+offset-1); + Text(RP,page->Name,len); + break; + } + } + if(a==PG->pg_Active) + { + if(page->ThisPageHook) CallHook(page->ThisPageHook,o,gpr->gpr_GInfo,page); + if(page->FirstIText) PrintIText(RP,page->FirstIText,0,0); + if(page->FirstImage) DrawImage(RP,page->FirstImage,0,0); + for(bbox=page->FirstBBox;bbox;bbox=bbox->NextBBox) + { + if(bbox->Flags&BBFLG_BACKFILL) + { + if(bbox->Flags&BBFLG_PATTERNFILL) + { + SetABPenDrMd(RP,bbox->PtrnAPen,bbox->PtrnBPen,JAM1); + SetAfPt(RP,fillpatterndata,1); + } + else + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + RectFill(RP,bbox->Left,bbox->Top,bbox->Left+bbox->Width,bbox->Top+bbox->Height); + SetAfPt(RP, NULL, 0 ); + } + if(bbox->Flags&BBFLG_FRAMEBUTTON) + { + SetAPen(RP,(bbox->Flags&BBFLG_RECESSED)?bbox->BoxShadow:bbox->BoxShine); + Move(RP,bbox->Left,bbox->Top+bbox->Height); + Draw(RP,bbox->Left,bbox->Top); + Draw(RP,bbox->Left+bbox->Width,bbox->Top); + SetAPen(RP,(bbox->Flags&BBFLG_RECESSED)?bbox->BoxShine:bbox->BoxShadow); + Draw(RP,bbox->Left+bbox->Width,bbox->Top+bbox->Height); + Draw(RP,bbox->Left,bbox->Top+bbox->Height); + } + if(bbox->Flags&BBFLG_FRAMERIDGE) + { + // Draw Ridge + } + } + } + } + if(gpr->gpr_Redraw!=GREDRAW_UPDATE) + { + if(PG->pg_ActivePage->FirstGadget) + { + AddGList(gpr->gpr_GInfo->gi_Window,PG->pg_ActivePage->FirstGadget,-1,-1,NULL); + RefreshGList(PG->pg_ActivePage->FirstGadget,gpr->gpr_GInfo->gi_Window,NULL,-1); + PG->pg_GadgetsAdded=TRUE; + } + } + } + + if(State==IDS_DISABLED) + { + container.Width = MAX( 1, container.Width ); + container.Height = MAX( 1, container.Height ); + + SetDrMd(RP,JAM1); + SetAfPt(RP, patterndata, 1); + SetAPen(RP,dri->dri_Pens[SHADOWPEN]); + + RectFill(RP, (LONG)container.Left, (LONG)container.Top, + container.Left + container.Width-1, + container.Top + container.Height-1); + SetAfPt(RP, NULL, 0 ); + } + + return( retval ); +} + +ULONG SAVEDS PAGE_GOACTIVE(Class *cl,Object *o,struct gpInput *gpi ) +{ + ULONG retval = GMR_MEACTIVE, Left, Top; + struct RastPort *rp; + struct PAGEData *PG = INST_DATA( cl, o ); + struct GadgetInfo *gi = gpi->gpi_GInfo; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct IBox container; + ULONG oldactive; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + /* Test if we are disabled. */ + if(gad->Flags & GFLG_DISABLED) return( GMR_NOREUSE ); + + /* Call first our parent class. */ + DoSuperMethodA(cl, o, (Msg)gpi); + + PAGE_GetGadgetRect( o, gpi->gpi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + /* Select this gadget. */ + gad->Flags |= GFLG_SELECTED; + + if(PG->pg_GadgetsAdded) RemoveGList(gpi->gpi_GInfo->gi_Window,PG->pg_ActivePage->FirstGadget,-1); + PG->pg_GadgetsAdded=FALSE; + + Left = gi->gi_Domain.Left; + Top = gi->gi_Domain.Top; + oldactive=PG->pg_Active; + PG->pg_Active=(gpi->gpi_Mouse.X-Left)/(container.Width/PG->pg_NumPages); + + if(oldactive!=PG->pg_Active) + { + if(rp=ObtainGIRPort(gi)) + { + DoMethod( o, GM_RENDER, gi, rp, GREDRAW_REDRAW); + ReleaseGIRPort( rp ); + retval = GMR_NOREUSE; + } + else retval = GMR_NOREUSE; + } + + return(retval); +} + +void SAVEDS PAGE_GetGadgetRect( Object *o,struct GadgetInfo *gi,struct Rectangle *rect ) +{ + struct Gadget *gad = (struct Gadget *)o; + LONG W, H; + + rect->MinX = gad->LeftEdge; + rect->MinY = gad->TopEdge; + W = gad->Width; + H = gad->Height; + + if( gi ) + { + if( gad->Flags & GFLG_RELRIGHT ) rect->MinX += gi->gi_Domain.Width - 1; + if( gad->Flags & GFLG_RELBOTTOM ) rect->MinY += gi->gi_Domain.Height - 1; + if( gad->Flags & GFLG_RELWIDTH ) W += gi->gi_Domain.Width; + if( gad->Flags & GFLG_RELHEIGHT ) H += gi->gi_Domain.Height; + } + rect->MaxX = rect->MinX + W - (W > 0); + rect->MaxY = rect->MinY + H - (H > 0); +} + +void SAVEDS SPrintf(Class *cl, STRPTR buffer, STRPTR format, ...) +{ + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + RawDoFmt( format, (APTR)(&format+1), (void (*)())"\x16\xc0\x4E\x75", buffer); +} + +ULONG TextFitColor(struct RastPort *RP,STRPTR columnstring,ULONG len,struct TextExtent *te,struct TextExtent *te2,WORD dir,UWORD bwidth,UWORD bheight) +{ + int c,b; + ULONG chars; + STRPTR copytext; + + if(copytext=AllocMem(len+100,MEMF_ANY|MEMF_CLEAR)) + { + for(c=0,b=0;cdri_Pens[TEXTPEN]); + flg=FS_NORMAL; + SetSoftStyle(RP,flg,AskSoftStyle(RP)); + Justify=1; + Underline=0; + + for(a=0,skipx=0;apg_Underscore && Underline==0) ?'_':'\0')) + { + for(b=0;(text[a+b]!='') && (text[a+b]!='\0') && (text[a+b]!=((PG->pg_Underscore && Underline==0) ?'_':'\0')) && (bLeft+skipx+container->Width/2-TextLength(RP,text+a,b)/2,container->Top+RP->TxBaseline); + if(Underline==1 && PG->pg_Underscore) + { + Text(RP,"_",1); + Move(RP,container->Left+skipx,container->Top+RP->TxBaseline); + Underline=2; + } + Text(RP,text+a,b); + Move(RP,container->Left+skipx,container->Top+RP->TxBaseline); + skipx+=TextLength(RP,text+a,b); + for(b=0;(text[a+b]!='') && (text[a+b]!='\0');b++); + a+=b-1; + } + else + { + if(text[a]==(PG->pg_Underscore?'_':'\0')) + { + if(Underline==0) Underline=1; + } + else + { + a++; + switch(text[a]) + { + case 'p': flg=FS_NORMAL; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Plain + case 'i': flg|=FSF_ITALIC; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Italic + case 'u': flg|=FSF_UNDERLINED; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Underline + case 'b': flg|=FSF_BOLD; SetSoftStyle(RP,flg,AskSoftStyle(RP)); break; // Bold + + case '0': SetAPen(RP,0); break; // Set color + case '1': SetAPen(RP,1); break; + case '2': SetAPen(RP,2); break; + case '3': SetAPen(RP,3); break; + case '4': SetAPen(RP,4); break; + case '5': SetAPen(RP,5); break; + case '6': SetAPen(RP,6); break; + case '7': SetAPen(RP,7); break; + case '8': SetAPen(RP,8); break; + case '9': SetAPen(RP,9); break; + } + } + } + } +} diff --git a/GadToolsBox/Gadgets/page.fd b/GadToolsBox/Gadgets/page.fd new file mode 100755 index 0000000..1f4a4af --- /dev/null +++ b/GadToolsBox/Gadgets/page.fd @@ -0,0 +1,4 @@ +##base _PageBase +##bias 30 +GetPageClass() +##end diff --git a/GadToolsBox/Gadgets/page.gadget_rev.h b/GadToolsBox/Gadgets/page.gadget_rev.h new file mode 100755 index 0000000..64d13b7 --- /dev/null +++ b/GadToolsBox/Gadgets/page.gadget_rev.h @@ -0,0 +1,6 @@ +#define VERSION 37 +#define REVISION 1 +#define DATE "27.6.98" +#define VERS "page.gadget 37.1" +#define VSTRING "page.gadget 37.1 (27.6.98)\r\n" +#define VERSTAG "\0$VER: page.gadget 37.1 (27.6.98)" diff --git a/GadToolsBox/Gadgets/page.gadget_rev.i b/GadToolsBox/Gadgets/page.gadget_rev.i new file mode 100755 index 0000000..7a70e3a --- /dev/null +++ b/GadToolsBox/Gadgets/page.gadget_rev.i @@ -0,0 +1,14 @@ +VERSION EQU 37 +REVISION EQU 2 +DATE MACRO + dc.b '18.4.98' + ENDM +VERS MACRO + dc.b 'listview.gadget 37.2' + ENDM +VSTRING MACRO + dc.b 'listview.gadget 37.2 (18.4.98)',13,10,0 + ENDM +VERSTAG MACRO + dc.b 0,'$VER: listview.gadget 37.2 (18.4.98)',0 + ENDM diff --git a/GadToolsBox/Gadgets/page.gadget_rev.rev b/GadToolsBox/Gadgets/page.gadget_rev.rev new file mode 100755 index 0000000..56a6051 --- /dev/null +++ b/GadToolsBox/Gadgets/page.gadget_rev.rev @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/GadToolsBox/Gadgets/progress.c b/GadToolsBox/Gadgets/progress.c new file mode 100755 index 0000000..be4e66a --- /dev/null +++ b/GadToolsBox/Gadgets/progress.c @@ -0,0 +1,549 @@ +/* +** Progress Class +** $VER: progress.c 37.1 (15.1.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"progress.gadget_rev.h" + +TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define PROG_SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define PROGRESSGADGET "progress.gadget" + +/* +** Prototypes +*/ + +Class * ASMFUNC GetProgressClass(void); +ULONG ASMFUNC PROG_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG PROG_NEW(Class *,Object *,struct opSet *); +ULONG PROG_DISPOSE(Class *, Object *, Msg); +ULONG PROG_SET(Class *, Object *, struct opSet *); +ULONG PROG_GET(Class *,Object *,struct opGet *); +ULONG PROG_UPDATE(Class *,Object *,struct opUpdate *); +ULONG PROG_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG PROG_RENDER(Class *,Object *,struct gpRender *); +void PROG_GetGadgetRect( Object *,struct GadgetInfo *,struct Rectangle *); +void SPrintf(Class *,STRPTR buffer, STRPTR format, ...); + +/* +** Variables +*/ + +struct PROGData +{ + ULONG pd_MaxVal; + ULONG pd_CurVal; + ULONG pd_Placement; + UBYTE pd_ConvertToPercents; + UBYTE pd_Border; + TEXT pd_Format[256]; + Object *pd_FrameImage; + struct TextFont *pd_TextFont; +}; + +Class *cl=NULL; + +/* +** Create Class +*/ + + +int ASMFUNC __UserLibInit(REG(a6) struct MyLibrary *libbase) +{ + if(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",36L)) + { + if(UtilityBase=OpenLibrary("utility.library",36L)) + { + if(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",36L)) + { + if (cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct PROGData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) PROG_Dispatcher; + cl->cl_UserData = (ULONG) libbase; +// AddClass (cl); + return(FALSE); + } + CloseLibrary((struct Library *)GfxBase); + } + CloseLibrary(UtilityBase); + } + CloseLibrary((struct Library *)IntuitionBase); + } + return(TRUE); +} + +void ASMFUNC __UserLibCleanup(REG(a6) struct MyLibrary *libbase) +{ + FreeClass(cl); + if(IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); + if(UtilityBase) CloseLibrary(UtilityBase); + if(GfxBase) CloseLibrary((struct Library *)GfxBase); +} + + +Class * ASMFUNC GetProgressClass() +{ + return cl; +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC PROG_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( msg->MethodID ) + { + case OM_NEW: + retval = PROG_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = PROG_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = PROG_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = PROG_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = PROG_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = PROG_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = PROG_RENDER(cl, o, (struct gpRender *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS PROG_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct PROGData *PD; + char *ble; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + PD = INST_DATA( cl, object ); + + PD->pd_Border = GetTagData( PROG_Border, TRUE, ops->ops_AttrList ); + PD->pd_ConvertToPercents = GetTagData( PROG_ConvertToPercents, TRUE, ops->ops_AttrList ); + PD->pd_MaxVal = GetTagData( PROG_MaxVal, 100, ops->ops_AttrList); + PD->pd_CurVal = GetTagData( PROG_CurVal, 0, ops->ops_AttrList); + PD->pd_Placement = GetTagData( PROG_Placement, PLACETEXT_IN, ops->ops_AttrList); + ble=(char *)GetTagData( PROG_Format, (ULONG) "%ld" , ops->ops_AttrList); + if(ble) strcpy(PD->pd_Format,ble); + else PD->pd_Format[0]='\0'; + + if(PD->pd_CurVal>PD->pd_MaxVal) PD->pd_CurVal=PD->pd_MaxVal; + + PD->pd_TextFont = (struct TextFont *)GetTagData( PROG_TextFont, NULL, ops->ops_AttrList); + + if(PD->pd_Border) + { + unless(PD->pd_FrameImage=NewObject(NULL,"frameiclass", + IA_Recessed, TRUE, + IA_EdgesOnly, TRUE, + IA_FrameType, FRAME_BUTTON, + TAG_END)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + } + } + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS PROG_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct PROGData *PD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + if(PD->pd_FrameImage) DisposeObject(PD->pd_FrameImage); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS PROG_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG retval; + struct PROGData *PD = INST_DATA( cl, o ); + struct TagItem *tag, *tstate, notify; + struct RastPort *rp; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case PROG_CurVal: + PD->pd_CurVal = tag->ti_Data; + retval = FALSE; + break; + case PROG_MaxVal: + PD->pd_MaxVal = tag->ti_Data; + retval = FALSE; + break; + case PROG_ConvertToPercents: + PD->pd_ConvertToPercents = tag->ti_Data; + retval = FALSE; + break; + case PROG_Format: + strcpy(PD->pd_Format,(char *)tag->ti_Data); + retval = FALSE; + break; + } + } + + if(PD->pd_CurVal>PD->pd_MaxVal) PD->pd_CurVal=PD->pd_MaxVal; + PROG_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(!retval) + { + if(rp=ObtainGIRPort( ops->ops_GInfo )) + { + DoMethod(o,GM_RENDER,ops->ops_GInfo, rp, GREDRAW_UPDATE); + ReleaseGIRPort(rp); + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS PROG_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval; + struct PROGData *PD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( opg->opg_AttrID ) + { + case PROG_MaxVal: + *opg->opg_Storage = (ULONG)PD->pd_MaxVal; + retval = TRUE; + break; + case PROG_CurVal: + *opg->opg_Storage = (ULONG)PD->pd_CurVal; + retval = TRUE; + break; + case PROG_TextFont: + *opg->opg_Storage = (ULONG)PD->pd_TextFont; + retval = TRUE; + break; + case PROG_Border: + *opg->opg_Storage = (ULONG)PD->pd_Border; + retval = TRUE; + break; + case PROG_Format: + *opg->opg_Storage = (ULONG)PD->pd_Format; + retval = TRUE; + break; + case PROG_Placement: + *opg->opg_Storage = (ULONG)PD->pd_Placement; + retval = TRUE; + break; + case PROG_ConvertToPercents: + *opg->opg_Storage = (ULONG)PD->pd_ConvertToPercents; + retval = TRUE; + break; + default: + retval = DoSuperMethodA(cl, o, (Msg)opg); + break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS PROG_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval; + struct PROGData *PD = INST_DATA( cl, o ); + struct TagItem *tag, notify; + struct RastPort *rp; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) opu); + + if( opu->opu_AttrList ) + { + if(tag = FindTagItem( PROG_CurVal, opu->opu_AttrList )) + { + if( tag->ti_Data != PD->pd_CurVal) + { + PD->pd_CurVal = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + PROG_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } + return( retval ); +} + +ULONG SAVEDS PROG_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[3]; + struct PROGData *PD = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + PROG_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + PROG_SetTagArg(tags[1], PROG_CurVal, PD->pd_CurVal); + + if( opu->opu_AttrList == NULL ) + { + PROG_SetTagArg(tags[2], TAG_END, NULL); + } + else PROG_SetTagArg(tags[2], TAG_MORE, opu->opu_AttrList ); + + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS PROG_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval,State; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct DrawInfo *dri; + struct IBox container; + struct TextExtent temp_te; + struct RastPort *RP = gpr->gpr_RPort; + struct PROGData *PD = INST_DATA( cl, o ); + UWORD BorderWidth, BorderHeight; + UWORD patterndata[2] = { 0x2222, 0x8888 }; + ULONG TextPen, FillPen, BackgroundPen, len, DrawWidth, InPercents; + TEXT TempText[256],TestText[256]; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + + PROG_GetGadgetRect( o, gpr->gpr_GInfo, &rect ); + + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + dri = gpr->gpr_GInfo->gi_DrInfo; + + if(gad->Flags & GFLG_DISABLED) + State = IDS_DISABLED; + else + State = IDS_NORMAL; + + SetAttrs( PD->pd_FrameImage, + IA_Left, container.Left, + IA_Top, container.Top, + IA_Width, container.Width, + IA_Height, container.Height, + TAG_END); + + DrawImageState( RP, (struct Image *)PD->pd_FrameImage, 0, 0, State, dri); + + if( dri ) + { + TextPen = dri->dri_Pens[TEXTPEN]; + FillPen = dri->dri_Pens[FILLPEN]; + BackgroundPen = dri->dri_Pens[BACKGROUNDPEN]; + } + else + { + TextPen = 1; + FillPen = 3; + BackgroundPen = 0; + } + + DrawWidth=UDivMod32(UMult32(PD->pd_CurVal,(ULONG)container.Width-4),PD->pd_MaxVal); + + /* Do we have a proper font. */ + if(PD->pd_TextFont) SetFont(RP,PD->pd_TextFont); + else PD->pd_TextFont=RP->Font; + + if(PD->pd_ConvertToPercents) + { + InPercents=UDivMod32(UMult32(PD->pd_CurVal,100L),PD->pd_MaxVal); + SPrintf(cl,TempText,PD->pd_Format,InPercents); + SPrintf(cl,TestText,PD->pd_Format,100); + } + else + { + SPrintf(cl,TempText,PD->pd_Format,PD->pd_CurVal); + SPrintf(cl,TestText,PD->pd_Format,PD->pd_MaxVal); + } + + SetBPen(RP,BackgroundPen); + SetDrMd(RP,JAM1); + SetAPen(RP,FillPen); + if(container.Left+2pd_Placement) + { + case PLACETEXT_IN: + SetDrMd(RP,JAM1); + len=TextFit(RP,TempText,strlen(TempText),&temp_te,NULL,1,container.Width-28, 1+PD->pd_TextFont->tf_YSize); + Move(RP,container.Left+(container.Width-(1+temp_te.te_Extent.MaxX-temp_te.te_Extent.MinX))/2-temp_te.te_Extent.MinX,PD->pd_TextFont->tf_Baseline+(1+container.Top+rect.MaxY-PD->pd_TextFont->tf_YSize)/2); + Text(RP,TempText,len); + break; + case PLACETEXT_LEFT: + SetDrMd(RP,JAM2); + len=TextLength(RP,TestText,strlen(TestText)); + Move(RP,container.Left-len-8,PD->pd_TextFont->tf_Baseline+(1+container.Top+rect.MaxY-PD->pd_TextFont->tf_YSize)/2); + Text(RP,TempText,strlen(TempText)); + break; + case PLACETEXT_RIGHT: + SetDrMd(RP,JAM2); + len=TextLength(RP,TempText,strlen(TempText)); + Move(RP,container.Left+container.Width+8,PD->pd_TextFont->tf_Baseline+(1+container.Top+rect.MaxY-PD->pd_TextFont->tf_YSize)/2); + Text(RP,TempText,strlen(TempText)); + break; + case PLACETEXT_ABOVE: + SetDrMd(RP,JAM2); + len=TextLength(RP,TempText,strlen(TempText)); + Move(RP,container.Left+(container.Width/2)-len/2,container.Top-6); + Text(RP,TempText,strlen(TempText)); + break; + case PLACETEXT_BELOW: + SetDrMd(RP,JAM2); + len=TextLength(RP,TempText,strlen(TempText)); + Move(RP,container.Left+(container.Width/2)-len/2,container.Top+container.Height+PD->pd_TextFont->tf_Baseline+3); + Text(RP,TempText,strlen(TempText)); + break; + } + } + + if(State==IDS_DISABLED) + { + BorderHeight = 1; + BorderWidth = (IntuitionBase->LibNode.lib_Version < 39) ? 1 : 2; + + container.Left += BorderWidth; + container.Top += BorderHeight; + container.Width = MAX( 1, container.Width - 2*BorderWidth ); + container.Height = MAX( 1, container.Height - 2*BorderHeight ); + + SetDrMd(RP,JAM1); + SetAfPt(RP, patterndata, 1); + + RectFill(RP, (LONG)container.Left, (LONG)container.Top, + container.Left + container.Width, + container.Top + container.Height); + SetAfPt(RP, NULL, 0 ); + } + + return( retval ); +} + +void SAVEDS PROG_GetGadgetRect( Object *o,struct GadgetInfo *gi,struct Rectangle *rect ) +{ + struct Gadget *gad = (struct Gadget *)o; + LONG W, H; + + rect->MinX = gad->LeftEdge; + rect->MinY = gad->TopEdge; + W = gad->Width; + H = gad->Height; + + if( gi ) + { + if( gad->Flags & GFLG_RELRIGHT ) rect->MinX += gi->gi_Domain.Width - 1; + if( gad->Flags & GFLG_RELBOTTOM ) rect->MinY += gi->gi_Domain.Height - 1; + if( gad->Flags & GFLG_RELWIDTH ) W += gi->gi_Domain.Width; + if( gad->Flags & GFLG_RELHEIGHT ) H += gi->gi_Domain.Height; + } + rect->MaxX = rect->MinX + W - (W > 0); + rect->MaxY = rect->MinY + H - (H > 0); +} + +void SAVEDS SPrintf(Class *cl, STRPTR buffer, STRPTR format, ...) +{ + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + RawDoFmt( format, (APTR)(&format+1), (void (*)())"\x16\xc0\x4E\x75", buffer); +} diff --git a/GadToolsBox/Gadgets/progress.fd b/GadToolsBox/Gadgets/progress.fd new file mode 100755 index 0000000..8292f10 --- /dev/null +++ b/GadToolsBox/Gadgets/progress.fd @@ -0,0 +1,4 @@ +##base _ProgressBase +##bias 30 +GetProgressClass() +##end diff --git a/GadToolsBox/Gadgets/progress.gadget_rev.h b/GadToolsBox/Gadgets/progress.gadget_rev.h new file mode 100755 index 0000000..bb42618 --- /dev/null +++ b/GadToolsBox/Gadgets/progress.gadget_rev.h @@ -0,0 +1,6 @@ +#define VERSION 37 +#define REVISION 1 +#define DATE "15.1.98" +#define VERS "progress.gadget 37.1" +#define VSTRING "progress.gadget 37.1 (15.1.98)\r\n" +#define VERSTAG "\0$VER: progress.gadget 37.1 (15.1.98)" diff --git a/GadToolsBox/Gadgets/progress.gadget_rev.i b/GadToolsBox/Gadgets/progress.gadget_rev.i new file mode 100755 index 0000000..4146e04 --- /dev/null +++ b/GadToolsBox/Gadgets/progress.gadget_rev.i @@ -0,0 +1,14 @@ +VERSION EQU 37 +REVISION EQU 1 +DATE MACRO + dc.b '15.1.98' + ENDM +VERS MACRO + dc.b 'progress.gadget 37.1' + ENDM +VSTRING MACRO + dc.b 'progress.gadget 37.1 (15.1.98)',13,10,0 + ENDM +VERSTAG MACRO + dc.b 0,'$VER: progress.gadget 37.1 (15.1.98)',0 + ENDM diff --git a/GadToolsBox/Gadgets/progress.gadget_rev.rev b/GadToolsBox/Gadgets/progress.gadget_rev.rev new file mode 100755 index 0000000..d00491f --- /dev/null +++ b/GadToolsBox/Gadgets/progress.gadget_rev.rev @@ -0,0 +1 @@ +1 diff --git a/GadToolsBox/Gadgets/smakefile b/GadToolsBox/Gadgets/smakefile new file mode 100755 index 0000000..5d7328f --- /dev/null +++ b/GadToolsBox/Gadgets/smakefile @@ -0,0 +1,106 @@ +# +# Makefile for BOOPSI objects by Tomasz Muszynski +# + +all: progress.gadget listview.gadget smartbitmap.image page.gadget install + +progress.gadget: progress.o + slink progress_gc.doc + @-autodoc -C -I listview_gc.src >listview_gc.doc + @-autodoc -C -I smartbitmap_ic.src >smartbitmap_ic.doc + @-autodoc -C -I page_ic.src >page_ic.doc + +# Install it +install: + @-copy progress.gadget SYS:Classes/Gadgets + @-copy listview.gadget SYS:Classes/Gadgets + @-copy page.gadget SYS:Classes/Gadgets + @-copy smartbitmap.image SYS:Classes/Images + @-avail FLUSH diff --git a/GadToolsBox/Gadgets/smartbitmap.c b/GadToolsBox/Gadgets/smartbitmap.c new file mode 100755 index 0000000..0883195 --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap.c @@ -0,0 +1,534 @@ +/* +** Smart Bitmap Image Class +** $VER: smartbitmap.c 39.1 (10.1.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"smartbitmap.image_rev.h" + +TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SMBM_SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define SMARTBITMAPIMAGE "smartbitmap.image" + +#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24))) +#define RGB8(r,g,b) ((ULONG)(((r)&0xff0000)|((g)&0xff00)|((b)&0xff))) + +/* +** Prototypes +*/ + +Class * ASMFUNC GetSmartBitMapClass(void); +ULONG ASMFUNC SMBM_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG SMBM_NEW(Class *,Object *,struct opSet *); +ULONG SMBM_DISPOSE(Class *, Object *, Msg); +ULONG SMBM_SET(Class *, Object *, struct opSet *); +ULONG SMBM_GET(Class *,Object *,struct opGet *); +ULONG SMBM_DRAW(Class *,Object *,struct impDraw *); +void SAVEDS ConvertChunky(struct SMBMData *); + +/* +** Variables +*/ + +struct SMBMData +{ + UBYTE im_Border; + UBYTE im_SelBorder; + UBYTE im_SourceDeep; + UBYTE im_DestDeep; + UBYTE im_DestCGFX; + UBYTE im_Recessed; + struct BitMap *im_SourceBM; + struct BitMap *im_DestBM; + struct RastPort im_SourceRP; + struct RastPort im_DestRP; + Object *im_FrameImage; + struct Screen *im_Screen; + struct SmartBitMapIRGB *im_Palette; + UWORD *im_Pens; + UWORD im_Width; + UWORD im_Height; + UBYTE im_PensAlloc,im_PaletteAlloc; + LONG im_Allocated[256]; +}; + +Class *cl=NULL; +struct Library *CyberGfxBase=NULL; + +/* +** Create Class +*/ + +int ASMFUNC __UserLibInit(REG(a6) struct MyLibrary *libbase) +{ + if(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",36L)) + { + if(UtilityBase=OpenLibrary("utility.library",36L)) + { + if(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",36L)) + { + CyberGfxBase=OpenLibrary("cybergraphics.library",36L); + if (cl = MakeClass (NULL, IMAGECLASS, NULL, sizeof(struct SMBMData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) SMBM_Dispatcher; + cl->cl_UserData = (ULONG) libbase; +// AddClass (cl); + return(FALSE); + } + if(CyberGfxBase) CloseLibrary(CyberGfxBase); + CloseLibrary((struct Library *)GfxBase); + } + CloseLibrary(UtilityBase); + } + CloseLibrary((struct Library *)IntuitionBase); + } + return(TRUE); +} + +void ASMFUNC __UserLibCleanup(REG(a6) struct MyLibrary *libbase) +{ + FreeClass(cl); + if(IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); + if(UtilityBase) CloseLibrary(UtilityBase); + if(GfxBase) CloseLibrary((struct Library *)GfxBase); + if(CyberGfxBase) CloseLibrary(CyberGfxBase); +} + + +Class * ASMFUNC GetSmartBitMapClass() +{ + return cl; +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC SMBM_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( msg->MethodID ) + { + case OM_NEW: + retval = SMBM_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = SMBM_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = SMBM_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = SMBM_GET(cl, o, (struct opGet *)msg ); + break; + case IM_DRAW: + retval = SMBM_DRAW(cl, o, (struct impDraw *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS SMBM_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct SMBMData *IM; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + IM = INST_DATA( cl, object ); + IM->im_PaletteAlloc=FALSE; + IM->im_PensAlloc=FALSE; + IM->im_FrameImage=NULL; + + IM->im_Border = GetTagData( SMBM_Border, FALSE, ops->ops_AttrList ); + IM->im_SelBorder = GetTagData( SMBM_SelBorder, IM->im_Border, ops->ops_AttrList ); + IM->im_Recessed = GetTagData( SMBM_Recessed, FALSE, ops->ops_AttrList ); + IM->im_Screen = (struct Screen *)GetTagData( SMBM_Screen, 0, ops->ops_AttrList ); + IM->im_SourceBM = (struct BitMap *)GetTagData( SMBM_BitMap, 0, ops->ops_AttrList ); + IM->im_Palette = (struct SmartBitMapIRGB *)GetTagData( SMBM_Palette, 0, ops->ops_AttrList ); + IM->im_Pens = (UWORD *)GetTagData( SMBM_Pens, 0, ops->ops_AttrList ); + if(!IM->im_Screen || !IM->im_SourceBM) // We need destination screen and source bitmap + { + CoerceMethod(cl, o, OM_DISPOSE); + return NULL; + } + IM->im_Width = (UWORD)GetTagData( IA_Width, GetBitMapAttr(IM->im_SourceBM,BMA_WIDTH), ops->ops_AttrList ); + IM->im_Height = (UWORD)GetTagData( IA_Height, GetBitMapAttr(IM->im_SourceBM,BMA_HEIGHT), ops->ops_AttrList ); + SetAttrs(object,IA_Width,IM->im_Width,IA_Height,IM->im_Height,TAG_DONE); + + if(GetBitMapAttr(IM->im_SourceBM,BMA_DEPTH)>8) + { + if(!CyberGfxBase) // We cannot handle deep bitmaps without cybergraphx + { + CoerceMethod(cl, o, OM_DISPOSE); + return NULL; + } + IM->im_SourceDeep=TRUE; + } + else IM->im_SourceDeep=FALSE; + + if(GetBitMapAttr(IM->im_Screen->RastPort.BitMap,BMA_DEPTH)>8) IM->im_DestDeep=TRUE; else IM->im_DestDeep=FALSE; + if(CyberGfxBase) IM->im_DestCGFX=GetCyberMapAttr(IM->im_Screen->RastPort.BitMap,CYBRMATTR_ISCYBERGFX); + else IM->im_DestCGFX=FALSE; + + if(!IM->im_SourceDeep) // We need palette definition for palette based bitmaps + { + if(!IM->im_Palette && !IM->im_Pens) + { + CoerceMethod(cl, o, OM_DISPOSE); + return NULL; + } + } + + IM->im_PensAlloc=FALSE; + IM->im_PaletteAlloc=FALSE; + + if(!IM->im_SourceDeep) // Allocate pens conversion table for palette based bitmaps + { + if(!IM->im_Palette) + { + IM->im_Palette=(struct SmartBitMapIRGB *)AllocVec((2<im_SourceBM,BMA_DEPTH))*sizeof(struct SmartBitMapIRGB),MEMF_ANY); + IM->im_PaletteAlloc=TRUE; + } + if(!IM->im_Pens) + { + IM->im_Pens=(UWORD *)AllocVec((2<im_SourceBM,BMA_DEPTH))*sizeof(UWORD),MEMF_ANY); + IM->im_PensAlloc=TRUE; + } + } + + InitRastPort(&IM->im_SourceRP); + IM->im_SourceRP.BitMap=IM->im_SourceBM; + + // Create destination bitmap compatible with screen + IM->im_DestBM=AllocBitMap(GetBitMapAttr(IM->im_SourceBM,BMA_WIDTH),GetBitMapAttr(IM->im_SourceBM,BMA_HEIGHT),GetBitMapAttr(IM->im_Screen->RastPort.BitMap,BMA_DEPTH),BMF_CLEAR|BMF_MINPLANES,IM->im_Screen->RastPort.BitMap); + InitRastPort(&IM->im_DestRP); + IM->im_DestRP.BitMap=IM->im_DestBM; + + unless(IM->im_FrameImage=NewObject(NULL,"frameiclass", + IA_Recessed, IM->im_Recessed, + IA_EdgesOnly, TRUE, + IA_FrameType, FRAME_BUTTON, + TAG_END)) + { + CoerceMethod(cl, o, OM_DISPOSE); + return NULL; + } + + // Create pens conversion table for palette based bitmaps + if(!IM->im_DestDeep && !IM->im_SourceDeep) + { + int a; + if(IM->im_Palette) + { + for(a=0;a<(2<im_SourceBM,BMA_DEPTH));a++) + { + if(IM->im_Palette[a].I==((ULONG)-1)) + IM->im_Pens[a]=IM->im_Palette[a].I=IM->im_Allocated[a]=ObtainBestPen(IM->im_Screen->ViewPort.ColorMap,IM->im_Palette[a].R,IM->im_Palette[a].G,IM->im_Palette[a].B,OBP_Precision,PRECISION_IMAGE,TAG_DONE); + else + { + IM->im_Pens[a]=(UWORD)-1; + IM->im_Allocated[a]=-1; + } + } + } + else + { + for(a=0;a<(2<im_SourceBM,BMA_DEPTH));a++) + { + IM->im_Palette[a].I=(ULONG)IM->im_Pens[a]; + GetRGB32(IM->im_Screen->ViewPort.ColorMap,IM->im_Palette[a].I,1,&IM->im_Palette[a].R); + } + } + } + ConvertChunky(IM); // Convert bitmap to destination + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS SMBM_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct SMBMData *IM = INST_DATA( cl, o ); + int a; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + if(!IM->im_PaletteAlloc) + { + for(a=0;a<(2<im_SourceBM,BMA_DEPTH));a++) + { + if(IM->im_Allocated[a]!=-1) ReleasePen(IM->im_Screen->ViewPort.ColorMap,IM->im_Allocated[a]); + } + } + + if(IM->im_DestBM) FreeBitMap(IM->im_DestBM); + if(IM->im_PensAlloc) if(IM->im_Pens) FreeVec(IM->im_Pens); + if(IM->im_PaletteAlloc) if(IM->im_Palette) FreeVec(IM->im_Palette); + if(IM->im_FrameImage) DisposeObject(IM->im_FrameImage); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS SMBM_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG retval; + struct SMBMData *IM = INST_DATA( cl, o ); + struct TagItem *tag, *tstate; + struct RastPort *rp; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case SMBM_Border: + IM->im_Border= tag->ti_Data; + retval = FALSE; + break; + case SMBM_SelBorder: + IM->im_SelBorder= tag->ti_Data; + retval = FALSE; + break; + case SMBM_Recessed: + IM->im_Recessed= tag->ti_Data; + retval = FALSE; + break; + } + } + if(!retval) + { + if(rp=ObtainGIRPort( ops->ops_GInfo )) + { + DoMethod(o,GM_RENDER,ops->ops_GInfo, rp, GREDRAW_UPDATE); + ReleaseGIRPort(rp); + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS SMBM_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval; + struct SMBMData *IM = INST_DATA( cl, o ); + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + switch( opg->opg_AttrID ) + { + case SMBM_Border: + *opg->opg_Storage = (ULONG)IM->im_Border; + retval = TRUE; + break; + case SMBM_SelBorder: + *opg->opg_Storage = (ULONG)IM->im_SelBorder; + retval = TRUE; + break; + case SMBM_Recessed: + *opg->opg_Storage = (ULONG)IM->im_Recessed; + retval = TRUE; + break; + default: + retval = DoSuperMethodA(cl, o, (Msg)opg); + break; + } + return( retval ); +} + +ULONG SAVEDS SMBM_DRAW(Class *cl,Object *o,struct impDraw *imp ) +{ + ULONG retval; + struct DrawInfo *dri; + struct RastPort *RP = imp->imp_RPort; + struct SMBMData *IM = INST_DATA( cl, o ); + struct Image *im; + UWORD patterndata[2] = { 0x2222, 0x8888 }; + BOOL b=FALSE; + + im=(struct Image *)o; + + putreg( REG_A6, cl->cl_UserData ); + geta4(); + + retval = DoSuperMethodA(cl, o, (Msg) imp); + + dri = imp->imp_DrInfo; + + if(IM->im_Border || IM->im_SelBorder) + { + b=TRUE; + SetAPen(RP,dri->dri_Pens[BACKGROUNDPEN]); + RectFill(RP, im->LeftEdge+imp->imp_Offset.X, im->TopEdge+imp->imp_Offset.Y, + im->LeftEdge+imp->imp_Offset.X+IM->im_Width+1, im->TopEdge+imp->imp_Offset.Y+IM->im_Height+1); + } + if(IM->im_Border && (imp->imp_State!=IDS_SELECTED)) + { + SetAttrs( IM->im_FrameImage, + IA_Left, im->LeftEdge+imp->imp_Offset.X, + IA_Top, im->TopEdge+imp->imp_Offset.Y, + IA_Width, IM->im_Width+2, + IA_Height, IM->im_Height+2, + IA_Recessed, IM->im_Recessed?TRUE:FALSE, + TAG_END); + DrawImageState( RP, (struct Image *)IM->im_FrameImage, 0, 0, IDS_NORMAL, dri); + } + + if(IM->im_SelBorder && (imp->imp_State==IDS_SELECTED)) + { + SetAttrs( IM->im_FrameImage, + IA_Left, im->LeftEdge+imp->imp_Offset.X, + IA_Top, im->TopEdge+imp->imp_Offset.Y, + IA_Width, IM->im_Width+2, + IA_Height, IM->im_Height+2, + IA_Recessed, IM->im_Recessed?FALSE:TRUE, + TAG_END); + DrawImageState( RP, (struct Image *)IM->im_FrameImage, 0, 0, IDS_NORMAL, dri); + } + + ClipBlit(&IM->im_DestRP,0,0,RP,im->LeftEdge+imp->imp_Offset.X+(b?1:0),im->TopEdge+imp->imp_Offset.Y+(b?1:0),IM->im_Width,IM->im_Height,0xc0); + + if(imp->imp_State==IDS_DISABLED) + { + SetDrMd(RP,JAM1); + SetAfPt(RP, patterndata, 1); + + RectFill(RP, (LONG)imp->imp_Offset.X, (LONG)imp->imp_Offset.Y, + imp->imp_Offset.X + IM->im_Width - 1 + (b?2:0), + imp->imp_Offset.Y + IM->im_Height - 1 + (b?2:0)); + SetAfPt(RP, NULL, 0 ); + } + + return( retval ); +} + +void SAVEDS ConvertChunky(struct SMBMData *IM) +{ + if(IM->im_SourceDeep && IM->im_DestDeep) // copy 24 to 24bit + { + ClipBlit(&IM->im_SourceRP,0,0,&IM->im_DestRP,0,0,IM->im_Width,IM->im_Height,0xc0); + return; + } + if(!IM->im_SourceDeep && IM->im_DestDeep) // copy 8 to 24 bit + { + ULONG x,y,p; + UBYTE *array=NULL; + struct RastPort temprp; + + InitRastPort(&temprp); + if(temprp.BitMap=AllocBitMap(IM->im_Width,1,8,BMF_CLEAR,IM->im_SourceRP.BitMap)) + { + if(array=AllocVec(((IM->im_Width+15)>>4)<<4,MEMF_ANY)) + { + for(y=0;yim_Height;y++) + { + ReadPixelLine8(&IM->im_SourceRP,0,y,IM->im_Width,array,&temprp); + for(x=0;xim_Width;x++) + { + p=array[x]; + WriteRGBPixel(&IM->im_DestRP,x,y,RGB8(IM->im_Palette[p].R,IM->im_Palette[p].G,IM->im_Palette[p].B)); + } + } + FreeVec(array); + } + FreeBitMap(temprp.BitMap); + } + } + if(!IM->im_SourceDeep && !IM->im_DestDeep) // copy 8 to 8 bit + { + ULONG x,y; + UBYTE *array=NULL; + struct RastPort temprp; + + InitRastPort(&temprp); + if(temprp.BitMap=AllocBitMap(IM->im_Width,1,8,BMF_CLEAR,IM->im_SourceRP.BitMap)) + { + if(array=AllocVec(((IM->im_Width+15)>>4)<<4,MEMF_ANY)) + { + if(IM->im_DestCGFX) + { + for(y=0;yim_Height;y++) + { + ReadPixelLine8(&IM->im_SourceRP,0,y,IM->im_Width,array,&temprp); + for(x=0;xim_Width;x++) array[x]=IM->im_Palette[array[x]].I; + WritePixelLine8(&IM->im_DestRP,0,y,IM->im_Width,array,&temprp); + } + } + else + { + for(y=0;yim_Height;y++) + { + ReadPixelLine8(&IM->im_SourceRP,0,y,IM->im_Width,array,&temprp); + for(x=0;xim_Width;x++) + { + SetAPen(&IM->im_DestRP,IM->im_Palette[array[x]].I); + WritePixel(&IM->im_DestRP,x,y); + } + } + } + FreeVec(array); + } + FreeBitMap(temprp.BitMap); + } + } + if(IM->im_SourceDeep && !IM->im_DestDeep) // copy 24 to 8 bit + { + } +} diff --git a/GadToolsBox/Gadgets/smartbitmap.fd b/GadToolsBox/Gadgets/smartbitmap.fd new file mode 100755 index 0000000..7037f72 --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap.fd @@ -0,0 +1,4 @@ +##base _SmartBitMapBase +##bias 30 +GetSmartBitMapClass() +##end diff --git a/GadToolsBox/Gadgets/smartbitmap.image_rev.h b/GadToolsBox/Gadgets/smartbitmap.image_rev.h new file mode 100755 index 0000000..cdd740e --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap.image_rev.h @@ -0,0 +1,6 @@ +#define VERSION 39 +#define REVISION 1 +#define DATE "10.1.98" +#define VERS "smartbitmap.image 39.1" +#define VSTRING "smartbitmap.image 39.1 (10.1.98)\r\n" +#define VERSTAG "\0$VER: smartbitmap.image 39.1 (10.1.98)" diff --git a/GadToolsBox/Gadgets/smartbitmap.image_rev.i b/GadToolsBox/Gadgets/smartbitmap.image_rev.i new file mode 100755 index 0000000..75ffae8 --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap.image_rev.i @@ -0,0 +1,14 @@ +VERSION EQU 39 +REVISION EQU 1 +DATE MACRO + dc.b '10.1.98' + ENDM +VERS MACRO + dc.b 'smartbitmap.image 39.1' + ENDM +VSTRING MACRO + dc.b 'smartbitmap.image 39.1 (10.1.98)',13,10,0 + ENDM +VERSTAG MACRO + dc.b 0,'$VER: smartbitmap.image 39.1 (10.1.98)',0 + ENDM diff --git a/GadToolsBox/Gadgets/smartbitmap.image_rev.rev b/GadToolsBox/Gadgets/smartbitmap.image_rev.rev new file mode 100755 index 0000000..d00491f --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap.image_rev.rev @@ -0,0 +1 @@ +1 diff --git a/GadToolsBox/Gadgets/smartbitmap_ic.src b/GadToolsBox/Gadgets/smartbitmap_ic.src new file mode 100755 index 0000000..2257290 --- /dev/null +++ b/GadToolsBox/Gadgets/smartbitmap_ic.src @@ -0,0 +1,79 @@ +/****** smartbitmap.image/smartbitmap.image ****************************** +* +* NAME +* smartbitmap.image -- create image from bitmap (V39) +* +* FUNCTION +* The smartbitmap class provides capability to generate image +* compatible object with a given BitMap structure and palette. +* Source bitmap can be standard amiga bitmap or CyberGraphX bitmap. +* When image object is created, source bitmap is converted to +* destination bitmap which can be planar, chunky or nonpalette (eg. +* hicolor and truecolor). +* +* Palette structure is defined as: +* struct SmartBitMapIRGB +* { +* ULONG I,R,G,B; +* }; +* +* I - is allocated pen number, if set to -1 image class will +* allocate it for you. +* R, G, B - 32 bit color values. +* +* TAGS +* IA_Data (struct BitMap *) +* SMBM_BitMap (struct BitMap *) - Pointer to bitmap. +* This tag is required. Applicability is (I). (V39) +* +* SMBM_Border (BOOL) - Draw raised border around image +* Default for this tag is FALSE. Applicability is (I). (V39) +* +* SMBM_SelBorder (BOOL) - Draw selected border around selected +* image. +* Default for this tag is FALSE. Applicability is (I). (V39) +* +* SMBM_Palette (struct SmartBitMapIRGB *) - Palette of bitmap and +* optionally allocated pens. Only required for pallette based +* bitmaps. This tag is mutually exclusive with SMBM_Pens. +* Default for this tag is NULL. Applicability is (I). (V39). +* +* IA_Pens (UWORD *) +* SMBM_Pens (UWORD *) - Table of allocated pens. Only required for +* palette based bitmaps. This tag is mutually exclusive with +* SMBM_Palette. +* Default for this tag is NULL. Applicability is (I). (V39) +* +* SMBM_Screen (struct Screen *) - Screen on which bitmaps will be +* displayed. +* This tag is requires. Applicability is (I). (V39) +* +* SEE ALSO +* intuition/imageclass.h +* +***************************************************************************** +* +*/ +/****** smartbitmap.image/GetSmartBitMapClass ************************* +* +* NAME +* GetSmartBitMapClass -- get public class of smartbitmap (V39) +* +* SYNOPSIS +* smartbitmap_class = GetSmartBitMapClass(); +* D0 +* +* Class *GetSmartBitMapClass( void ); +* +* FUNCTION +* Obtains pointer to smartbitmap.image class for use with +* intuition.library/NewObject(). +* +* RESULT +* smartbitmap_class - pointer to smartbitmap class +* +* SEE ALSO +* +***************************************************************************** +* +*/ diff --git a/GadToolsBox/Gadgets/toolimages.iff b/GadToolsBox/Gadgets/toolimages.iff new file mode 100755 index 0000000000000000000000000000000000000000..bc170095bf8185447a90765188e434b7ab84c4a7 GIT binary patch literal 24706 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 T^{*YtznkoyV}SpO$fW-Zmlb~n literal 0 HcmV?d00001 diff --git a/GadToolsBox/Gadgets/windowclass/SCOPTIONS b/GadToolsBox/Gadgets/windowclass/SCOPTIONS new file mode 100755 index 0000000..cb746c6 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/SCOPTIONS @@ -0,0 +1,10 @@ +CPU=68040 +NOSTACKCHECK +NOCHECKABORT +ERRORREXX +SMALLCODE +VERBOSE +STRIPDEBUG +UTILITYLIBRARY +MEMORYSIZE=HUGE +GLOBALSYMBOLTABLE=include:all.gst diff --git a/GadToolsBox/Gadgets/windowclass/WndTest.info b/GadToolsBox/Gadgets/windowclass/WndTest.info new file mode 100755 index 0000000000000000000000000000000000000000..b97551219af42bbbd44e688c98a0fbb033dab246 GIT binary patch literal 822 zcmZ{gKTASU7>D2Ml`BH1Ih2Bk(k0q-aHy7of;?N$7tp22K`LAV?~z&}2fb4tpwS`c zmOB+~eS}Mjvtxm9djDL}p$_8jywCY@F6WtKzyexzID{H(g9A2LiE(c)@md+sfx$%y zfTLya%AWsE@xQW~OR}xO7Q`S{Y1^wK$V7Y2Z{RuYNVap5L4(uk=^UL~&}d2K``p)W z%%M4c;W^g|Ih}lzb|CXL-viFYKlvzp<3V#@(xZo(IltGK5Paq0Ps6jX;=U@uhdcOj z{bS_mFX2b`!n@c+UN`&+f9!hqE~I@**ks_vN19NbWC>q_0L1 zzY)IE5q{F4do--A$a(csobyxg4a*KDItQG|Ic2*j8QgMOy@@1TMp=+^{Vv%Y2e{Ed z&MBR|mgEoOjLw;(^FI@v6DQZ}Np!g~kY(osaM^hk6gxjho(^%3oSYNy7F-{B-8>05 wp>S`XxhkfT+$ZPMAI^lA7t&YgoH;tD`^h +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define AMIGAGUIDECLASS "gtbamigaguideclass" + +/* +** Prototypes +*/ + +Class *CreateAmigaGuideClass(struct gtbApplication *); +void DisposeAmigaGuideClass(Class *); +ULONG ASMFUNC AGUI_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG AGUI_NEW(Class *,Object *,struct opSet *); +ULONG AGUI_DISPOSE(Class *, Object *, Msg); +ULONG AGUI_SET(Class *, Object *, struct opSet *); +ULONG AGUI_GET(Class *,Object *,struct opGet *); +ULONG AGUI_GETMESSAGE(Class *,Object *,Msg); +ULONG AGUI_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG AGUI_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); + +/* +** Variables +*/ +struct AGUIData +{ + AMIGAGUIDECONTEXT ag_AGC; + struct NewAmigaGuide ag_NAG; + BOOL ag_ObjectOK; + Object *ag_ScreenObj; + ULONG ag_SigBit; + ULONG ag_Signal; + ULONG ag_HelpGroup; + BOOL ag_Activate; + ULONG (*ag_MesgHandler)(Object *,ULONG,struct AmigaGuideMsg *); + + Object *ag_ARexxObj; + struct MsgPort *ag_ARexxPort; + STRPTR ag_ARexxPortName; +}; + +/* +** Create Class +*/ + +Class *CreateAmigaGuideClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, ROOTCLASS, NULL, sizeof(struct AGUIData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) AGUI_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeAmigaGuideClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC AGUI_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = AGUI_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = AGUI_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = AGUI_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = AGUI_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_GETMESSAGE: + retval = AGUI_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = AGUI_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = AGUI_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS AGUI_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct AGUIData *AG; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + AG = INST_DATA( cl, object ); + + memset(AG,0,sizeof(struct AGUIData)); + + AG->ag_MesgHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( AGUI_Handler, NULL, ops->ops_AttrList ); + + AG->ag_Activate=(BOOL)GetTagData( AGUI_Activate, FALSE, ops->ops_AttrList ); + + AG->ag_ARexxPort=(struct MsgPort *)GetTagData( AGUI_ARexxPort, NULL, ops->ops_AttrList ); + AG->ag_ARexxPortName=(STRPTR)GetTagData( AGUI_ARexxPortName, NULL, ops->ops_AttrList ); + if(AG->ag_ARexxObj=(Object *)GetTagData( AGUI_ARexxObject, NULL, ops->ops_AttrList )) + GetAttr(REXX_MessagePort,AG->ag_ARexxObj,(ULONG *)&AG->ag_ARexxPort); + + if(!(AG->ag_NAG.nag_Screen=(struct Screen *)GetTagData( AGUI_Screen, NULL, ops->ops_AttrList ))) + { + if(AG->ag_ScreenObj = (Object *)GetTagData( AGUI_ScreenObject, NULL, ops->ops_AttrList )) + GetAttr(SCRN_Screen,AG->ag_ScreenObj,(ULONG *)&AG->ag_NAG.nag_Screen); + } + AG->ag_NAG.nag_Lock=NULL; + AG->ag_NAG.nag_Name=(STRPTR)GetTagData( AGUI_Name, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_BaseName=(STRPTR)GetTagData( AGUI_BaseName, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_PubScreen=(STRPTR)GetTagData( AGUI_PubScreenName, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_HostPort=NULL; //AG->ag_HostPort; + AG->ag_NAG.nag_ClientPort=AG->ag_ARexxPortName; + AG->ag_NAG.nag_Flags=AG->ag_Activate?NULL:HTF_NOACTIVATE; + AG->ag_NAG.nag_Context=(STRPTR *)GetTagData( AGUI_Context, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_Extens=NULL; + AG->ag_NAG.nag_Client=NULL; + + AG->ag_HelpGroup=GetTagData( AGUI_HelpGroup, NULL, ops->ops_AttrList ); + + if(!(AG->ag_AGC=OpenAmigaGuideAsync(&AG->ag_NAG, + AGA_HelpGroup,AG->ag_HelpGroup, + AG->ag_ARexxPort?AGA_ARexxPort:TAG_IGNORE, AG->ag_ARexxPort, + AG->ag_ARexxPortName?AGA_ARexxPortName:TAG_IGNORE, AG->ag_ARexxPortName, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + AG->ag_Signal=AmigaGuideSignal(AG->ag_AGC); + AG->ag_SigBit=1L<ag_Signal; + + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListAmigaGuide); + AG->ag_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS AGUI_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + + if(AG->ag_ObjectOK) DoMethod(o,OM_REMOVE); + if(AG->ag_AGC) CloseAmigaGuide(AG->ag_AGC); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS AGUI_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + ULONG retval; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case AGUI_Handler: + AG->ag_MesgHandler=(ULONG (*)(Object *,ULONG,APTR)) tag->ti_Data; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS AGUI_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct AGUIData *AG = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case AGUI_SigBit: + *opg->opg_Storage = AG->ag_SigBit; + break; + case AGUI_Signal: + *opg->opg_Storage = (ULONG)AG->ag_Signal; + break; + case AGUI_Context: + *opg->opg_Storage = (ULONG)AG->ag_AGC; + break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS AGUI_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct AmigaGuideMsg *mesg; + struct AGUIData *AG = INST_DATA( cl, o ); + + if(mesg=GetAmigaGuideMsg(AG->ag_AGC)) + { + ReplyAmigaGuideMsg(mesg); + return( (ULONG) mesg ); + } + else return NULL; +} + +ULONG SAVEDS AGUI_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + struct AmigaGuideMsg *mesg; + ULONG retval=1; + + if((msg->Signals & (1L<ag_Signal))) + { + if(mesg=GetAmigaGuideMsg(AG->ag_AGC)) + { + if(AG->ag_MesgHandler) retval=AG->ag_MesgHandler(o,mesg->agm_Type,mesg); + ReplyAmigaGuideMsg(mesg); + } + } + return retval; +} + +ULONG SAVEDS AGUI_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + + return Wait((AG->ag_SigBit)|(msg->Signals)); +} diff --git a/GadToolsBox/Gadgets/windowclass/amigaguide.h b/GadToolsBox/Gadgets/windowclass/amigaguide.h new file mode 100755 index 0000000..a69c147 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/amigaguide.h @@ -0,0 +1,20 @@ +#include +#include +#include + +#define AGUI_Dummy (TAG_USER) +#define AGUI_Name (AGUI_Dummy+0) +#define AGUI_Screen (AGUI_Dummy+1) +#define AGUI_ScreenObject (AGUI_Dummy+2) +#define AGUI_PubScreenName (AGUI_Dummy+3) +#define AGUI_Context (AGUI_Dummy+4) +#define AGUI_HelpGroup (AGUI_Dummy+5) +#define AGUI_Signal (AGUI_Dummy+6) +#define AGUI_ARexxPort (AGUI_Dummy+7) +#define AGUI_ARexxPortName (AGUI_Dummy+8) +#define AGUI_ARexxObject (AGUI_Dummy+9) +#define AGUI_Activate (AGUI_Dummy+10) +#define AGUI_BaseName (AGUI_Dummy+11) +#define AGUI_Handler (AGUI_Dummy+31) + +#define AGUI_SigBit (AGUI_Dummy+106) diff --git a/GadToolsBox/Gadgets/windowclass/arexx.c b/GadToolsBox/Gadgets/windowclass/arexx.c new file mode 100755 index 0000000..00b35c0 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/arexx.c @@ -0,0 +1,384 @@ +/* +** ARexx Class +** $VER: arexx.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +//TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define MESSAGECLASS "gtbarexxclass" + +/* +** Prototypes +*/ + +Class *CreateARexxClass(struct gtbApplication *); +void DisposeARexxClass(Class *); +ULONG ASMFUNC REXX_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG REXX_NEW(Class *,Object *,struct opSet *); +ULONG REXX_DISPOSE(Class *, Object *, Msg); +ULONG REXX_SET(Class *, Object *, struct opSet *); +ULONG REXX_GET(Class *,Object *,struct opGet *); +ULONG REXX_GETMESSAGE(Class *,Object *,Msg); +ULONG REXX_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG REXX_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG REXX_SENDMSG(Class *,Object *,struct gtbRexxSendMsg *); + +/* +** Variables +*/ +struct REXXData +{ + BOOL ad_ObjectOK; + struct MsgPort *ad_MsgPort; + STRPTR ad_Name; + STRPTR ad_Extension; + BYTE ad_Pri; + LONG ad_MessagesSent; + struct gtbRexxCommand *ad_CommandTable; + ULONG (*ad_ARexxHandler)(Object *,struct gtbRexxCommand *,struct gtbRexxMessage *); + struct RDArgs *ad_RDArgs; +}; + +/* +** Create Class +*/ + +Class *CreateARexxClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, ROOTCLASS, NULL, sizeof(struct REXXData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) REXX_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeARexxClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC REXX_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = REXX_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = REXX_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = REXX_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = REXX_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_GETMESSAGE: + retval = REXX_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = REXX_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = REXX_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_REXX_SENDMSG: + retval = REXX_SENDMSG(cl,o,(struct gtbRexxSendMsg *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS REXX_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct REXXData *AD; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + AD = INST_DATA( cl, object ); + + memset(AD,0,sizeof(struct REXXData)); + + AD->ad_MsgPort=NULL; + AD->ad_MessagesSent=0; + AD->ad_Name = (STRPTR)GetTagData( REXX_Name, NULL, ops->ops_AttrList ); + AD->ad_Extension = (STRPTR)GetTagData( REXX_Extension, NULL, ops->ops_AttrList ); + AD->ad_Pri = (BYTE)GetTagData( REXX_Priority, 0, ops->ops_AttrList ); + AD->ad_CommandTable = (struct gtbRexxCommand *) GetTagData( REXX_CommandTable, NULL, ops->ops_AttrList ); + AD->ad_ARexxHandler=(ULONG (*)(Object *,struct gtbRexxCommand *,struct gtbRexxMessage *))GetTagData( REXX_Handler, NULL, ops->ops_AttrList ); + + if(!AD->ad_Name) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + Forbid(); + if(FindPort(AD->ad_Name)) + { + Permit(); + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + Permit(); + + if(!(AD->ad_MsgPort=CreatePort(AD->ad_Name,AD->ad_Pri))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + if(!(AD->ad_RDArgs=AllocDosObject(DOS_RDARGS,TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListARexx); + AD->ad_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS REXX_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct REXXData *AD = INST_DATA( cl, o ); + + if(AD->ad_ObjectOK) DoMethod(o,OM_REMOVE); + if(AD->ad_RDArgs) FreeDosObject(DOS_RDARGS,AD->ad_RDArgs); + if(AD->ad_MsgPort) DeletePort(AD->ad_MsgPort); AD->ad_MsgPort=NULL; + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS REXX_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct REXXData *AD = INST_DATA( cl, o ); + ULONG retval; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case REXX_Handler: + AD->ad_ARexxHandler=(ULONG (*)(Object *,struct gtbRexxCommand *,struct gtbRexxMessage *)) tag->ti_Data; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS REXX_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct REXXData *AD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case REXX_MessagePort: *opg->opg_Storage = (ULONG)AD->ad_MsgPort; break; + case REXX_SigBit: *opg->opg_Storage = (ULONG)(1L<ad_MsgPort->mp_SigBit); break; + case REXX_Signal: *opg->opg_Storage = (ULONG)(AD->ad_MsgPort->mp_SigBit); break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS REXX_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct Message *mesg; + struct REXXData *AD = INST_DATA( cl, o ); + + if(mesg=GetMsg(AD->ad_MsgPort)) + { + ReplyMsg((struct Message *)mesg); + return( (ULONG) mesg ); + } + else return NULL; +} + +struct RexxMsg *sendRexxMsg(struct REXXData *AD,STRPTR s, struct RexxMsg *m,LONG flags) +{ + struct MsgPort *ARexxPort; + struct RexxMsg *RexxMsg=NULL; + + if(!AD->ad_MsgPort) return(NULL); + + if(!(RexxMsg=CreateRexxMsg(AD->ad_MsgPort,AD->ad_Extension,AD->ad_MsgPort->mp_Node.ln_Name))) return NULL; + if(RexxMsg->rm_Args[0]=CreateArgstring(s,(LONG)strlen(s))) + { + RexxMsg->rm_Action=RXCOMM|flags; + RexxMsg->rm_Args[15]=(STRPTR)m; + Forbid(); + if(ARexxPort=FindPort("REXX")) PutMsg(ARexxPort,(struct Message *) RexxMsg); + Permit(); + if(ARexxPort) + { + AD->ad_MessagesSent++; + return(RexxMsg); + } + } + if(RexxMsg->rm_Args[0]) + { + DeleteArgstring(RexxMsg->rm_Args[0]); + DeleteRexxMsg(RexxMsg); + return(NULL); + } +} + +ULONG REXX_SENDMSG(Class *cl,Object *o,struct gtbRexxSendMsg *msg) +{ + struct REXXData *AD = INST_DATA( cl, o ); + + return (ULONG)sendRexxMsg(AD,msg->Command,NULL,msg->Flags); +} + +void replyRexxCmd(struct RexxMsg *msg, LONG rc, STRPTR s) +{ + msg->rm_Result1=rc; + if((msg->rm_Action & (1L<rm_Result2=(LONG)CreateArgstring((UBYTE *)s,strlen((char *)s)); + else msg->rm_Result2=NULL; +} + +ULONG SAVEDS REXX_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct REXXData *AD = INST_DATA( cl, o ); + struct RexxMsg *mesg; + struct gtbRexxMessage rm; + struct RDArgs *rda; + STRPTR p; + ULONG retval=1,a; + LONG *(params[100]); + + if(AD->ad_MsgPort) + { + if((msg->Signals & (1L<ad_MsgPort->mp_SigBit)) && AD->ad_ARexxHandler) + { + while(mesg=(struct RexxMsg *)GetMsg(AD->ad_MsgPort)) + { + if(mesg->rm_Node.mn_Node.ln_Type==NT_REPLYMSG) + { + if(mesg->rm_Args[15]) ReplyMsg((struct Message *)mesg->rm_Args[15]); + DeleteArgstring(mesg->rm_Args[0]); + DeleteRexxMsg(mesg); + AD->ad_MessagesSent--; + } + else + { + p=(STRPTR)mesg->rm_Args[0]; + while(*p>0 && *p<=' ') p++; + mesg->rm_Result1=0; + mesg->rm_Result2=0; + + for(a=0;AD->ad_CommandTable[a].rc_Function;a++) + { + if(strnicmp((char *)AD->ad_CommandTable[a].rc_Function,p,strlen((char *)AD->ad_CommandTable[a].rc_Function))==0) + { + rm.rm_RexxMsg=mesg; + rm.rm_Command=(STRPTR)p; + rm.rm_Object=o; + rm.rm_RC=RC_OK; + rm.rm_Result=NULL; + rm.rm_ArgList=(LONG **)params; + rda=AD->ad_RDArgs; + rda->RDA_Source.CS_Length=strlen(p); + for(rda->RDA_Source.CS_CurChr=0;(p[rda->RDA_Source.CS_CurChr]!=' ') && (p[rda->RDA_Source.CS_CurChr]!='\0');rda->RDA_Source.CS_CurChr++); + if(rda->RDA_Source.CS_Buffer=AllocVec(rda->RDA_Source.CS_Length+1,MEMF_ANY|MEMF_CLEAR)) + { + strcpy(rda->RDA_Source.CS_Buffer,p); + rda->RDA_Source.CS_Buffer[strlen(rda->RDA_Source.CS_Buffer)]='\n'; + ReadArgs(AD->ad_CommandTable[a].rc_Template,(long *)rm.rm_ArgList,AD->ad_RDArgs); + retval=AD->ad_ARexxHandler(o,&AD->ad_CommandTable[a],&rm); +// else +// retval=AD->ad_ARexxHandler(o,NULL,&rm); + FreeVec(rda->RDA_Source.CS_Buffer); + FreeArgs(AD->ad_RDArgs); + replyRexxCmd(mesg,rm.rm_RC,rm.rm_Result); + } + break; + } + } + if(AD->ad_CommandTable[a].rc_Function==NULL) + { + if(!sendRexxMsg(AD,mesg->rm_Args[0],mesg,0)) + { + replyRexxCmd(mesg,RC_FATAL,NULL); + ReplyMsg((struct Message *)mesg); + } + } + else + ReplyMsg((struct Message *)mesg); + } + } + } + } + return retval; +} + +ULONG SAVEDS REXX_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct REXXData *AD = INST_DATA( cl, o ); + + return Wait((1L<ad_MsgPort->mp_SigBit)|(msg->Signals)); +} diff --git a/GadToolsBox/Gadgets/windowclass/arexx.h b/GadToolsBox/Gadgets/windowclass/arexx.h new file mode 100755 index 0000000..a5801ad --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/arexx.h @@ -0,0 +1,41 @@ +#include +#include +#include + +struct gtbRexxCommand +{ + STRPTR rc_Function; + ULONG rc_ID; + STRPTR rc_Template; +}; + +struct gtbRexxMessage +{ + struct RexxMsg *rm_RexxMsg; + STRPTR rm_Command; + Object *rm_Object; + LONG **rm_ArgList; + LONG rm_RC; + STRPTR rm_Result; +}; + +struct gtbRexxSendMsg +{ + ULONG MethodID; + STRPTR Command; + ULONG Flags; +}; + +#define REXX_Dummy (TAG_USER) +#define REXX_Name (MESG_Dummy+0) +#define REXX_Signal (MESG_Dummy+1) +#define REXX_Extension (MESG_Dummy+2) +#define REXX_CommandTable (MESG_Dummy+3) +#define REXX_Priority (MESG_Dummy+6) +#define REXX_MessagePort (MESG_Dummy+7) +#define REXX_Handler (MESG_Dummy+31) + +#define REXX_SigBit (MESG_Dummy+106) + +#define GTB_REXX_SENDMSG 1000 +#define GTB_REXX_REPLYMSG 1001 diff --git a/GadToolsBox/Gadgets/windowclass/commodities.c b/GadToolsBox/Gadgets/windowclass/commodities.c new file mode 100755 index 0000000..4aff8c5 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/commodities.c @@ -0,0 +1,290 @@ +/* +** Commodities Class +** $VER: commodities.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +//TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define CXCLASS "gtbcommoditiesclass" + +/* +** Prototypes +*/ + +Class *CreateCommoditiesClass(struct gtbApplication *); +void DisposeCommoditiesClass(Class *); +ULONG ASMFUNC COMM_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG COMM_NEW(Class *,Object *,struct opSet *); +ULONG COMM_DISPOSE(Class *, Object *, Msg); +ULONG COMM_SET(Class *, Object *, struct opSet *); +ULONG COMM_GET(Class *,Object *,struct opGet *); +ULONG COMM_GETMESSAGE(Class *,Object *,Msg); +ULONG COMM_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG COMM_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); + +/* +** Variables +*/ +struct COMMData +{ + BOOL cd_ObjectOK; + struct NewBroker cd_NewBroker; + struct MsgPort *cd_MsgPort; + CxObj *cd_Broker; + LONG cd_BrokerError; + struct CxMessage cd_CxMessage; + BOOL cd_Active; + ULONG (*cd_CommHandler)(Object *,ULONG,APTR); +}; + +/* +** Create Class +*/ + +Class *CreateCommoditiesClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, ROOTCLASS, NULL, sizeof(struct COMMData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) COMM_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeCommoditiesClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC COMM_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = COMM_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = COMM_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = COMM_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = COMM_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_GETMESSAGE: + retval = COMM_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = COMM_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = COMM_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS COMM_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct COMMData *CD; + LONG *BrokerError; + STRPTR PopKey; + CxObj *PopKeyObj; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + CD = INST_DATA( cl, object ); + + memset(CD,0,sizeof(struct COMMData)); + + CD->cd_Active=FALSE; + CD->cd_MsgPort=NULL; + CD->cd_NewBroker.nb_Unique=NULL; + CD->cd_NewBroker.nb_Flags=NULL; + CD->cd_NewBroker.nb_Version=NB_VERSION; + CD->cd_NewBroker.nb_ReservedChannel=NULL; + CD->cd_NewBroker.nb_Name = (STRPTR)GetTagData( COMM_Name, NULL, ops->ops_AttrList ); + CD->cd_NewBroker.nb_Title = (STRPTR)GetTagData( COMM_Title, NULL, ops->ops_AttrList ); + CD->cd_NewBroker.nb_Descr = (STRPTR)GetTagData( COMM_Description, NULL, ops->ops_AttrList ); + CD->cd_NewBroker.nb_Unique |= ((GetTagData( COMM_Unique, FALSE, ops->ops_AttrList )?NBU_UNIQUE:NULL)); + CD->cd_NewBroker.nb_Unique |= ((GetTagData( COMM_Notify, FALSE, ops->ops_AttrList )?NBU_NOTIFY:NULL)); + CD->cd_NewBroker.nb_Flags |= ((GetTagData( COMM_ShowHide, FALSE, ops->ops_AttrList )?COF_SHOW_HIDE:NULL)); + CD->cd_NewBroker.nb_Pri = (BYTE)GetTagData( COMM_Priority, 0, ops->ops_AttrList ); + CD->cd_NewBroker.nb_Port = (struct MsgPort *)GetTagData( COMM_MessagePort, NULL, ops->ops_AttrList ); + CD->cd_CommHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( COMM_Handler, NULL, ops->ops_AttrList ); + BrokerError = (LONG *)GetTagData( COMM_Error, (LONG)&CD->cd_BrokerError, ops->ops_AttrList ); + if(!CD->cd_NewBroker.nb_Port) CD->cd_NewBroker.nb_Port=CD->cd_MsgPort=CreateMsgPort(); + CD->cd_Broker=CxBroker(&CD->cd_NewBroker,BrokerError); + if((*BrokerError)!=CBERR_OK) + { + CoerceMethod(cl, object, OM_DISPOSE); + object=NULL; + return((ULONG)object); + } + + PopKey = (STRPTR) GetTagData( COMM_AddHotKeyStr, NULL, ops->ops_AttrList ); + if(PopKey) + { + PopKeyObj=HotKey(PopKey,CD->cd_NewBroker.nb_Port,GetTagData( COMM_AddHotKeyID, 0, ops->ops_AttrList )); + AttachCxObj(CD->cd_Broker,PopKeyObj); + } + ActivateCxObj(CD->cd_Broker,CD->cd_Active=GetTagData( COMM_Activate, 1L, ops->ops_AttrList )); + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListCommodities); + CD->cd_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS COMM_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct COMMData *CD = INST_DATA( cl, o ); + + if(CD->cd_ObjectOK) DoMethod(o,OM_REMOVE); + if(CD->cd_Broker) DeleteCxObjAll(CD->cd_Broker); CD->cd_Broker=NULL; + if(CD->cd_MsgPort) DeleteMsgPort(CD->cd_MsgPort); CD->cd_MsgPort=NULL; + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS COMM_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct COMMData *CD = INST_DATA( cl, o ); + ULONG retval; + LONG *BrokerError; + STRPTR PopKey; + CxObj *PopKeyObj; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case COMM_AddHotKeyStr: + if(PopKey=(STRPTR)tag->ti_Data) + { + PopKeyObj=HotKey(PopKey,CD->cd_NewBroker.nb_Port,GetTagData( COMM_AddHotKeyID, 0, ops->ops_AttrList )); + AttachCxObj(CD->cd_Broker,PopKeyObj); + BrokerError = (LONG *)GetTagData( COMM_Error, (LONG)&CD->cd_BrokerError, ops->ops_AttrList ); + *BrokerError=CxObjError(PopKeyObj); + } + break; + case COMM_Activate: + ActivateCxObj(CD->cd_Broker,tag->ti_Data); + break; + case COMM_Handler: + CD->cd_CommHandler=(ULONG (*)(Object *,ULONG,APTR)) tag->ti_Data; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS COMM_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct COMMData *CD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case COMM_Activate: *opg->opg_Storage = (ULONG)CD->cd_Active; break; + case COMM_MessagePort:*opg->opg_Storage = (ULONG)CD->cd_NewBroker.nb_Port; + case COMM_SigBit: *opg->opg_Storage = (ULONG)(1L<cd_NewBroker.nb_Port->mp_SigBit); break; + case COMM_Broker: *opg->opg_Storage = (ULONG)CD->cd_Broker; break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS COMM_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + CxMsg *cxmsg; + struct COMMData *CD = INST_DATA( cl, o ); + + if(cxmsg=(CxMsg *)GetMsg(CD->cd_NewBroker.nb_Port)) + { + CD->cd_CxMessage.cx_ID = CxMsgID(cxmsg); + CD->cd_CxMessage.cx_Type= CxMsgType(cxmsg); + CD->cd_CxMessage.cx_Data= CxMsgData(cxmsg); + ReplyMsg((struct Message *)cxmsg); + return( (ULONG) &CD->cd_CxMessage ); + } + else return NULL; +} + +ULONG SAVEDS COMM_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct COMMData *CD = INST_DATA( cl, o ); + ULONG retval=1; + + if((msg->Signals & (1L<cd_NewBroker.nb_Port->mp_SigBit)) && CD->cd_CommHandler) + { + while(DoMethod(o,GTB_GETMESSAGE)) + retval=CD->cd_CommHandler(o,CD->cd_CxMessage.cx_Type,&CD->cd_CxMessage); + } + return retval; +} + +ULONG SAVEDS COMM_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct COMMData *CD = INST_DATA( cl, o ); + + return Wait((1L<cd_NewBroker.nb_Port->mp_SigBit)|(msg->Signals)); +} diff --git a/GadToolsBox/Gadgets/windowclass/commodities.h b/GadToolsBox/Gadgets/windowclass/commodities.h new file mode 100755 index 0000000..4a12efe --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/commodities.h @@ -0,0 +1,28 @@ +#include +#include +#include + +struct CxMessage +{ + LONG cx_ID; + ULONG cx_Type; + APTR cx_Data; +}; + +#define COMM_Dummy (TAG_USER) +#define COMM_Name (COMM_Dummy+0) +#define COMM_Title (COMM_Dummy+1) +#define COMM_Description (COMM_Dummy+2) +#define COMM_Unique (COMM_Dummy+3) +#define COMM_Notify (COMM_Dummy+4) +#define COMM_ShowHide (COMM_Dummy+5) +#define COMM_Priority (COMM_Dummy+6) +#define COMM_MessagePort (COMM_Dummy+7) +#define COMM_AddHotKeyStr (COMM_Dummy+8) +#define COMM_AddHotKeyID (COMM_Dummy+9) +#define COMM_Activate (COMM_Dummy+10) +#define COMM_Handler (COMM_Dummy+31) + +#define COMM_Error (COMM_Dummy+100) +#define COMM_Broker (COMM_Dummy+101) +#define COMM_SigBit (COMM_Dummy+106) diff --git a/GadToolsBox/Gadgets/windowclass/gadgets.c b/GadToolsBox/Gadgets/windowclass/gadgets.c new file mode 100755 index 0000000..a377f9f --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadgets.c @@ -0,0 +1,173 @@ +/* +** Gadget Class +** $VER: gadget.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) + +/* +** Prototypes +*/ + +#define SetFlag(x,f) x|=f +#define GetFlag(x,f) if(x&f) +#define ClearFlag(x,f) x&=(f^-1) +#define DoFlag(t,x,f) if(t) SetFlag(x,f); else ClearFlag(x,f); + +Object *gtbCreateGadget(ULONG kind, struct IClass *class,UBYTE *classname, ULONG tags, ...) +{ + struct Gadget *gad=NULL,*prev; + struct TagItem *tag, *tstate; + struct NewGadget ng={NULL}; + struct Screen *Scr; + Object *ScrObj; + BOOL sr=FALSE,gr=TRUE,bs=TRUE; // SelectRender, GadgetRender, BorderSniff + + switch(kind) + { + case BOOPSI_KIND: + gad=(struct Gadget *)NewObjectA(class,classname,(struct TagItem *)&tags); + break; + default: + switch(kind) + { + case BUTTON_KIND: ng.ng_Flags=PLACETEXT_IN; break; + default: ng.ng_Flags=PLACETEXT_LEFT; break; + } + if(ScrObj=(Object *)GetTagData(GT_ScreenObj,NULL,(struct TagItem *)&tags)) + { + GetAttr(SCRN_VisualInfo,ScrObj,(ULONG *)&ng.ng_VisualInfo); + GetAttr(SCRN_Screen,ScrObj,(ULONG *)&Scr); ng.ng_TextAttr=Scr->Font; + } + tstate=(struct TagItem *)&tags; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case GA_Previous: prev=(struct Gadget *)tag->ti_Data; break; + case GA_Left: ng.ng_LeftEdge=tag->ti_Data; break; + case GA_Top: ng.ng_TopEdge=tag->ti_Data; break; + case GA_Width: ng.ng_Width=tag->ti_Data; break; + case GA_Height: ng.ng_Height=tag->ti_Data; break; + case GA_Text: ng.ng_GadgetText=(UBYTE *)tag->ti_Data; break; + case GA_ID: ng.ng_GadgetID=tag->ti_Data; break; + case GT_Handler: + case GA_UserData: ng.ng_UserData=(APTR)tag->ti_Data; break; + case GA_TextAttr: ng.ng_TextAttr=(struct TextAttr *)tag->ti_Data; break; + case GT_VisualInfo: ng.ng_VisualInfo=(APTR)tag->ti_Data; break; + case GT_PlaceText: ng.ng_Flags=tag->ti_Data; break; + } + } + gad=CreateGadgetA(kind,prev,&ng,(struct TagItem *)&tags); + if(!gad) return FALSE; + + tstate=(struct TagItem *)&tags; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case GA_Highlight: gad->Flags|=tag->ti_Data; break; + case GA_SysGType: gad->GadgetType|=tag->ti_Data; break; + case GA_GZZGadget: DoFlag(tag->ti_Data,gad->GadgetType,GTYP_GZZGADGET); break; + case GA_RightBorder: DoFlag(tag->ti_Data,gad->Activation,GACT_RIGHTBORDER); bs=TRUE; break; + case GA_LeftBorder: DoFlag(tag->ti_Data,gad->Activation,GACT_LEFTBORDER); bs=TRUE; break; + case GA_TopBorder: DoFlag(tag->ti_Data,gad->Activation,GACT_TOPBORDER); bs=TRUE; break; + case GA_BottomBorder: DoFlag(tag->ti_Data,gad->Activation,GACT_BOTTOMBORDER); bs=TRUE; break; + case GA_ToggleSelect: DoFlag(tag->ti_Data,gad->Activation,GACT_TOGGLESELECT); break; + case GA_RelVerify: DoFlag(tag->ti_Data,gad->Activation,GACT_RELVERIFY); break; + case GA_LabelImage: + gad->Flags|=GFLG_GADGIMAGE|GFLG_GADGHIMAGE; + gad->SelectRender=gad->GadgetRender=(ULONG *)tag->ti_Data; + gr=TRUE; sr=TRUE; + break; + case GA_Image: + gr=TRUE; + gad->Flags|=GFLG_GADGIMAGE; + gad->GadgetRender=(ULONG *)tag->ti_Data; + break; + case GA_SelectRender: + sr=TRUE; + gad->Flags|=GFLG_GADGHIMAGE; + gad->SelectRender=(ULONG *)tag->ti_Data; + break; + } + } + if(bs) gad->Activation|=GACT_BORDERSNIFF; + if(gr && !sr) + { + gad->Flags|=GFLG_GADGHIMAGE; + gad->SelectRender=gad->GadgetRender; + } + break; + } + return (Object *) gad; +} + +void gtbFreeGadgets(struct Gadget *glist) +{ + struct Gadget *gad,*prev; + +goagain: + for(gad=glist,prev=NULL;gad;gad=gad->NextGadget) + { + if(!(gad->GadgetType&0x100)) // BOOPSI Object + { + prev->NextGadget=gad->NextGadget; + DisposeObject((Object *)gad); + goto goagain; + } + prev=gad; + } + + FreeGadgets(glist); +} + +void gtbSetGadgetAttrs(Object *gadobj,Object *wndobj,ULONG tags,...) +{ + struct Gadget *gad; + struct Window *wnd; + + GetAttr(WIND_Window,wndobj,(ULONG *)&wnd); + gad=(struct Gadget *)gadobj; + if(gad->GadgetType&0x100) + GT_SetGadgetAttrsA(gad,wnd,NULL,(struct TagItem *)&tags); + else + SetGadgetAttrsA(gad,wnd,NULL,(struct TagItem *)&tags); +} + +void gtbGetGadgetAttr(ULONG tag,Object *gadobj,ULONG *storage) +{ + struct Gadget *gad; + + gad=(struct Gadget *)gadobj; + switch(tag) + { + case GT_Handler: + *storage=(ULONG)gad->UserData; + break; + default: + if(gad->GadgetType&0x100) + GT_GetGadgetAttrs(gad,NULL,NULL,tag,(ULONG)storage,TAG_DONE); + else + GetAttr(tag,gadobj,storage); + break; + } +} diff --git a/GadToolsBox/Gadgets/windowclass/gadgets.h b/GadToolsBox/Gadgets/windowclass/gadgets.h new file mode 100755 index 0000000..33e5279 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadgets.h @@ -0,0 +1,13 @@ +#include +#include +#include + +#define BOOPSI_KIND ((ULONG)-1) + +#define GT_PlaceText (TAG_USER+2) +#define GT_Handler (GA_Dummy) +#define GT_ScreenObj (GA_DrawInfo) + +#ifndef GA_TextAttr +#define GA_TextAttr (GA_Dummy+40) +#endif diff --git a/GadToolsBox/Gadgets/windowclass/gadgetsold.c b/GadToolsBox/Gadgets/windowclass/gadgetsold.c new file mode 100755 index 0000000..aaf6415 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadgetsold.c @@ -0,0 +1,206 @@ +/* +** Gadget Class +** $VER: gadget.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define GADGETGADGET "gtbgadtoolsclass" + +/* +** Prototypes +*/ + +Class *CreateGadgetClass(struct gtbApplication *); +void DisposeGadgetClass(Class *); +ULONG ASMFUNC GADG_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG GADG_NEW(Class *,Object *,struct opSet *); +ULONG GADG_DISPOSE(Class *, Object *, Msg); +ULONG GADG_SET(Class *, Object *, struct opSet *); +ULONG GADG_GET(Class *,Object *,struct opGet *); +ULONG GADG_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); + +/* +** Variables +*/ +struct GADGData +{ + BOOL gd_ObjectOK; + struct NewGadget gd_NewGadget; + struct Gadget *gd_Gadget; + ULONG (*gd_GadgHandler)(Object *,ULONG,APTR); +}; + +/* +** Create Class +*/ + +Class *CreateGadgetClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, GROUPGCLASS, NULL, sizeof(struct GADGData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) GADG_Dispatcher; +// cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeGadgetClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC GADG_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = GADG_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = GADG_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = GADG_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = GADG_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_HANDLEMESSAGE: + retval = GADG_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS GADG_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct GADGData *GD; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + GD = INST_DATA( cl, object ); + + memset(GD,0,sizeof(struct GADGData)); + + GD->gd_NewGadget.ng_LeftEdge=GetTagData( GA_Left, 0, ops->ops_AttrList ); + GD->gd_NewGadget.ng_TopEdge=GetTagData( GA_Top, 0, ops->ops_AttrList ); + GD->gd_NewGadget.ng_Width=GetTagData( GA_Width, 10, ops->ops_AttrList ); + GD->gd_NewGadget.ng_Height=GetTagData( GA_Height, 10, ops->ops_AttrList ); + GD->gd_NewGadget.ng_GadgetText=(STRPTR)GetTagData( GA_Text, NULL, ops->ops_AttrList ); + GD->gd_NewGadget.ng_GadgetID=GetTagData( GA_ID, 0, ops->ops_AttrList ); + GD->gd_NewGadget.ng_Flags=PLACETEXT_IN; //GetTagData( GA_Height, 10, ops->ops_AttrList ); + GD->gd_NewGadget.ng_VisualInfo=(APTR)GetVisualInfo(GetTagData( GADG_Screen, NULL, ops->ops_AttrList ),TAG_DONE); + GD->gd_NewGadget.ng_UserData=(APTR)GetTagData( GA_UserData, 0, ops->ops_AttrList ); + + GD->gd_Gadget=CreateGadgetA(GetTagData( GADG_Kind, BUTTON_KIND, ops->ops_AttrList ),GetTagData( GA_Previous, NULL, ops->ops_AttrList ),&GD->gd_NewGadget,ops->ops_AttrList); + + DoMethod(o,OM_ADDMEMBER,GD->gd_Gadget); + + GD->gd_GadgHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( GADG_Handler, NULL, ops->ops_AttrList ); + GD->gd_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS GADG_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct GADGData *GD = INST_DATA( cl, o ); + + DoMethod(o,OM_REMMEMBER,GD->gd_Gadget); + FreeVisualInfo(GD->gd_NewGadget.ng_VisualInfo); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS GADG_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct GADGData *GD = INST_DATA( cl, o ); + ULONG retval; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case GADG_Handler: + GD->gd_GadgHandler=(ULONG (*)(Object *,ULONG,APTR)) tag->ti_Data; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS GADG_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct GADGData *GD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS GADG_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct GADGData *GD = INST_DATA( cl, o ); + + return GD->gd_GadgHandler(o,NULL,NULL); +} diff --git a/GadToolsBox/Gadgets/windowclass/gadgetsold.h b/GadToolsBox/Gadgets/windowclass/gadgetsold.h new file mode 100755 index 0000000..b5e1908 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadgetsold.h @@ -0,0 +1,8 @@ +#include +#include +#include"gadtoolsbox.h" + +#define GADG_Dummy (TAG_USER) +#define GADG_Kind (GADG_Dummy+0) +#define GADG_Screen (GADG_Dummy+1) +#define GADG_Handler (MESG_Dummy+31) diff --git a/GadToolsBox/Gadgets/windowclass/gadtoolsbox.c b/GadToolsBox/Gadgets/windowclass/gadtoolsbox.c new file mode 100755 index 0000000..ebe782b --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadtoolsbox.c @@ -0,0 +1,177 @@ +/* +** GadToolsBox Foundation Class +** $VER: gadtoolsbox.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +extern Class *CreateWindowClass(struct gtbApplication *); +extern Class *CreateCommoditiesClass(struct gtbApplication *); +extern Class *CreateMessageClass(struct gtbApplication *); +extern Class *CreateGadgetClass(struct gtbApplication *); +extern Class *CreateScreenClass(struct gtbApplication *); +extern Class *CreateARexxClass(struct gtbApplication *); +extern Class *CreateAmigaGuideClass(struct gtbApplication *); +extern void DisposeWindowClass(Class *); +extern void DisposeCommoditiesClass(Class *); +extern void DisposeMessageClass(Class *); +extern void DisposeGadgetClass(Class *); +extern void DisposeScreenClass(Class *); +extern void DisposeARexxClass(Class *); +extern void DisposeAmigaGuideClass(Class *); + +struct gtbApplication *_gtbGlobalAppPtr=NULL; + +struct gtbApplication *gtbNewApplication(ULONG tags,...) +{ + struct gtbApplication *gtbappl; +// struct TagItem *tag, *tstate; + + if(gtbappl=AllocVec(sizeof(struct gtbApplication),MEMF_ANY)) + { + NewList((struct List *)>bappl->ga_ListWindows); + NewList((struct List *)>bappl->ga_ListScreens); + NewList((struct List *)>bappl->ga_ListCommodities); + NewList((struct List *)>bappl->ga_ListMessages); + NewList((struct List *)>bappl->ga_ListMemory); + NewList((struct List *)>bappl->ga_ListARexx); + NewList((struct List *)>bappl->ga_ListAmigaGuide); + + if(!(gtbappl->ga_WndClass=CreateWindowClass(gtbappl))) goto err; + if(!(gtbappl->ga_CxClass=CreateCommoditiesClass(gtbappl))) goto err; + if(!(gtbappl->ga_MsgClass=CreateMessageClass(gtbappl))) goto err; + if(!(gtbappl->ga_ScrClass=CreateScreenClass(gtbappl))) goto err; + if(!(gtbappl->ga_ARexxClass=CreateARexxClass(gtbappl))) goto err; + if(!(gtbappl->ga_AGClass=CreateAmigaGuideClass(gtbappl))) goto err; + + _gtbGlobalAppPtr=gtbappl; + +/* + tstate=(struct TagItem *)&tags; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case APPL_NewObject: + break; + } + } +*/ + + return gtbappl; +err: + if(gtbappl->ga_AGClass) DisposeAmigaGuideClass(gtbappl->ga_AGClass); + if(gtbappl->ga_ARexxClass) DisposeARexxClass(gtbappl->ga_ARexxClass); + if(gtbappl->ga_ScrClass) DisposeScreenClass(gtbappl->ga_ScrClass); + if(gtbappl->ga_MsgClass) DisposeMessageClass(gtbappl->ga_MsgClass); + if(gtbappl->ga_CxClass) DisposeCommoditiesClass(gtbappl->ga_CxClass); + if(gtbappl->ga_WndClass) DisposeWindowClass(gtbappl->ga_WndClass); + FreeVec(gtbappl); + } + return NULL; +} + +void gtbDisposeApplication(struct gtbApplication *gtbappl) +{ + Object *ostate,*member; + struct Node *n; + + if(gtbappl) + { + ostate = (Object *) gtbappl->ga_ListWindows.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + ostate = (Object *) gtbappl->ga_ListCommodities.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + ostate = (Object *) gtbappl->ga_ListMessages.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + ostate = (Object *) gtbappl->ga_ListARexx.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + ostate = (Object *) gtbappl->ga_ListAmigaGuide.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + ostate = (Object *) gtbappl->ga_ListScreens.mlh_Head; + while (member = NextObject (&ostate)) DisposeObject(member); + + if(gtbappl->ga_AGClass) DisposeARexxClass(gtbappl->ga_AGClass); + if(gtbappl->ga_ARexxClass) DisposeARexxClass(gtbappl->ga_ARexxClass); + if(gtbappl->ga_ScrClass) DisposeScreenClass(gtbappl->ga_ScrClass); + if(gtbappl->ga_WndClass) DisposeWindowClass(gtbappl->ga_WndClass); + if(gtbappl->ga_CxClass) DisposeCommoditiesClass(gtbappl->ga_CxClass); + if(gtbappl->ga_MsgClass) DisposeMessageClass(gtbappl->ga_MsgClass); + while(n=RemTail((struct List *)>bappl->ga_ListMemory)) gtbFreeVec(n); + FreeVec(gtbappl); + } +} + +ULONG gtbHandleObject(Object *o, ...) +{ + ULONG signals=NULL,s,rs; + Object **obj; + + obj=&o; + while(*obj!=TAG_DONE) + { + GetAttr(WIND_SigBit,*obj,(ULONG *)&s); + signals|=s; + obj++; + } + rs=Wait(signals); + obj=&o; + while(*obj!=TAG_DONE) + { + GetAttr(WIND_SigBit,*obj,(ULONG *)&s); + if(rs & s) return DoMethod(*obj,GTB_HANDLEMESSAGE,rs); + obj++; + } + return rs; +} + +void *gtbAllocVec(ULONG size,ULONG type) +{ + struct gtbMemHeader *buf; + + if(buf=AllocMem(size+sizeof(struct gtbMemHeader),type)) + { + buf->gmh_Size=size+sizeof(struct gtbMemHeader); + AddTail((struct List *)&_gtbGlobalAppPtr->ga_ListMemory,(struct Node *)buf); + return (void *)(((UBYTE *)buf)+sizeof(struct gtbMemHeader)); + } + return NULL; +} + +void gtbFreeVec(void *pointer) +{ + struct gtbMemHeader *buf; + + if(pointer) + { + buf=(struct gtbMemHeader *)(((UBYTE *)pointer)-sizeof(struct gtbMemHeader)); + Remove((struct Node *)buf); + FreeMem(pointer,buf->gmh_Size); + } +} + +void gtbExecuteRexx(Object *rexx,STRPTR command) +{ + DoMethod(rexx,GTB_REXX_SENDMSG,command,NULL); +} + +BOOL gtbSendAmigaGuideCmd(Object *ag,STRPTR command) +{ + AMIGAGUIDECONTEXT agc; + + if(ag) + { + GetAttr(AGUI_Context,ag,(ULONG *)&agc); + return (BOOL) SendAmigaGuideCmd(agc,command,TAG_DONE); + } + else return NULL; +} + diff --git a/GadToolsBox/Gadgets/windowclass/gadtoolsbox.h b/GadToolsBox/Gadgets/windowclass/gadtoolsbox.h new file mode 100755 index 0000000..0053dae --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/gadtoolsbox.h @@ -0,0 +1,92 @@ +#ifndef GADTOOLSBOX_H +#define GADTOOLSBOX_H + +/* +** $VER: gadtoolsbox.h 39.1 (2.6.98) +** Includes Release 39.1 +** +** C prototypes. For use with 32 bit integers only. +** +** (C) Copyright 1998 Tomasz Muszynski. +** All Rights Reserved +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +** Methods +*/ + +#define GTB_HANDLEMESSAGE 500 +#define GTB_WAITMESSAGE 501 +#define GTB_GETMESSAGE 502 + +struct gtbWaitMessage +{ + ULONG MethodID; + ULONG Signals; +}; + +/* +** Application structrure +*/ + +struct gtbApplication +{ + Class *ga_GTClass; + struct MinList ga_ListMemory; + + Class *ga_WndClass; + struct MinList ga_ListWindows; + + Class *ga_CxClass; + struct MinList ga_ListCommodities; + + Class *ga_MsgClass; + struct MinList ga_ListMessages; + + Class *ga_ScrClass; + struct MinList ga_ListScreens; + + Class *ga_ARexxClass; + struct MinList ga_ListARexx; + + Class *ga_AGClass; + struct MinList ga_ListAmigaGuide; +}; + +/* +** Memory header +*/ + +struct gtbMemHeader +{ + struct MinNode gmh_MinNode; + ULONG gmh_Size; +}; + +/* +** Prototypes +*/ + +struct gtbApplication *gtbNewApplication(ULONG,...); +void gtbDisposeApplication(struct gtbApplication *); +ULONG gtbHandleObject(Object *, ...); +void *gtbAllocVec(ULONG,ULONG); +void gtbFreeVec(void *); +void gtbExecuteRexx(Object *,STRPTR); +BOOL gtbSendAmigaGuideCmd(Object *,STRPTR); +Object *gtbCreateGadget(ULONG, struct IClass *,UBYTE *, ULONG, ...); +void gtbFreeGadgets(struct Gadget *); +void gtbSetGadgetAttrs(Object *,Object *,ULONG,...); +void gtbGetGadgetAttr(ULONG,Object *,ULONG *); + +#endif /* GADTOOLSBOX_H */ diff --git a/GadToolsBox/Gadgets/windowclass/gadtoolsbox.lib b/GadToolsBox/Gadgets/windowclass/gadtoolsbox.lib new file mode 100755 index 0000000000000000000000000000000000000000..26ccbb22371d173856ef94348cdc23091ea7f13e GIT binary patch literal 34388 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +#define unless(x) if(!(x)) +#define Leave(x) { if(x) printf("%s\n",x); goto end; } + +#define APPNAME "WndTest" +#define APPTITLE "WndTest v1.0" +#define APPDESCRIPTION "To jest test" +#define APPPUBNAME "WNDTEST.1" +#define APPEXTENSION "wtest" +#define APPGUIDE "WndTest.guide" + +Object *MainWnd=NULL; +Object *Cdity=NULL; +Object *CtrlC=NULL; +Object *Scrn=NULL; +Object *ARexx=NULL; +Object *AmigaGuide=NULL; + +struct gtbRexxCommand commands[]= +{ + {"test_quit",0,NULL}, + {"test_about",1,NULL}, + {"test_help",2,"INDEX/A"}, + NULL +}; + +ULONG ARexxHandler(Object *Obj,struct gtbRexxCommand *rxcmd,struct gtbRexxMessage *rxmsg) +{ + TEXT command[256]; + if(!rxcmd) printf("Bad arguments\n"); + else + switch(rxcmd->rc_ID) + { + case 0: + printf("test_quit called\n"); + return FALSE; + case 1: + printf("test_about called\n"); + rxmsg->rm_Result="To jest program testowy"; + break; + case 2: + printf("test_help called: %s\n",rxmsg->rm_ArgList[0]); + sprintf(command,"ALINK %s",rxmsg->rm_ArgList[0]); + gtbSendAmigaGuideCmd(AmigaGuide,command); + break; + } + return TRUE; +} + +ULONG CtrlCHandler(Object *Obj,ULONG type,APTR msg) +{ + return FALSE; +} + +ULONG CdityHandler(Object *CxObj,ULONG type,struct CxMessage *cxmsg) +{ + switch(type) + { + case CXM_COMMAND: + switch(cxmsg->cx_ID) + { + case CXCMD_KILL: + return FALSE; + } + break; + } + return TRUE; +} + +ULONG Gad1Handler(Object *GadgetObj,ULONG type,struct IntuiMessage *message) +{ + printf("pierwszy\n"); + return TRUE; +} + +ULONG WndHandler(Object *WindowObj,ULONG type,APTR message) +{ + struct IntuiMessage *im; + ULONG var; + + switch(type) + { + case TYPE_INTUIMESSAGE: + im=(struct IntuiMessage *)message; + switch(im->Class) + { + case IDCMP_CLOSEWINDOW: return FALSE; + case IDCMP_GADGETUP: + printf("Gadget clicked\n"); + break; + } + break; + case TYPE_VERTSCROLL: + GetAttr(WIND_VertTop,WindowObj,&var); + printf("v: %d\n",var); + break; + case TYPE_HORIZSCROLL: + GetAttr(WIND_HorizTop,WindowObj,&var); + printf("h: %d\n",var); + break; + } + return TRUE; +} + +void main(int argc, char *argv[]) +{ + struct gtbApplication *appl=NULL; + struct Window *Wnd; + struct Gadget *GList=NULL; + Object *prev; + + unless(appl=gtbNewApplication(TAG_DONE)) Leave("Can't create application"); + unless(Scrn=NewObject(appl->ga_ScrClass,NULL, + SCRN_LikeWorkbench,TRUE, + SCRN_PubName,APPPUBNAME, + SCRN_Private,FALSE, + SCRN_Title,APPPUBNAME, + TAG_DONE)) Leave("Can't create screen"); + unless(Cdity=NewObject(appl->ga_CxClass,NULL, + COMM_Name,APPNAME, + COMM_Title,APPTITLE, + COMM_Description,APPDESCRIPTION, + COMM_Unique,TRUE, + COMM_Notify,TRUE, + COMM_ShowHide,TRUE, + COMM_Handler,(ULONG)CdityHandler, + COMM_AddHotKeyStr,"control t",COMM_AddHotKeyID,1, + TAG_DONE)) Leave("Can't create commodity"); + unless(CtrlC=NewObject(appl->ga_MsgClass,NULL, + MESG_SigBit,SIGBREAKF_CTRL_C, + MESG_Handler,(ULONG)CtrlCHandler, + TAG_DONE)) Leave("Can't create message handler"); + unless(ARexx=NewObject(appl->ga_ARexxClass,NULL, + REXX_Name,APPPUBNAME, + REXX_Extension,APPEXTENSION, + REXX_CommandTable,commands, + REXX_Handler,(ULONG)ARexxHandler, + TAG_DONE)) Leave("Can't create arexx"); + unless(AmigaGuide=NewObject(appl->ga_AGClass,NULL, + AGUI_Name,APPGUIDE, + AGUI_ScreenObject,Scrn, + AGUI_ARexxObject,ARexx, + AGUI_Activate,TRUE, + AGUI_BaseName,APPNAME, + TAG_DONE)) Leave("Can't create amigaguide"); + unless(MainWnd=NewObject(appl->ga_WndClass,NULL,WIND_CenterX,600,WIND_CenterY,20,WIND_Width,200,WIND_Height,200, + WIND_DragBar,TRUE, + WIND_DepthGadget,TRUE, + WIND_SizeGadget,TRUE, + WIND_CloseGadget,TRUE, + WIND_Title,APPTITLE, + WIND_ScreenObject,Scrn, + WIND_VertScroll,TRUE, + WIND_VertTotal,10, + WIND_HorizScroll,TRUE, + WIND_HorizTotal,10, + WIND_HorizVisible,5, + WIND_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETUP, + WIND_Handler,(ULONG)WndHandler, + WIND_Activate,TRUE, + WIND_MaxWidth,-1, + WIND_MaxHeight,-1, + TAG_DONE)) Leave("Can't create window"); + GetAttr(WIND_Window,MainWnd,(ULONG *)&Wnd); + + unless(prev=(Object *)CreateContext(&GList)) Leave("Can't create context"); + unless(prev=gtbCreateGadget(BUTTON_KIND,NULL,NULL, + GA_Previous,prev, + GA_Left,Wnd->BorderLeft, + GA_Top,Wnd->BorderTop, + GA_Width,100, + GA_Height,20, + GA_Text,"Ble", + GT_ScreenObj,Scrn, + GT_Handler,(ULONG)Gad1Handler, + TAG_DONE)) Leave("Can't create gadget 1"); + unless(prev=gtbCreateGadget(STRING_KIND,NULL,NULL, + GA_Previous,prev, + GA_Left,Wnd->BorderLeft, + GA_Top,Wnd->BorderTop+30, + GA_Width,100, + GA_Height,20, + GA_Text,"Ble2", + GT_ScreenObj,Scrn, + TAG_DONE)) Leave("Can't create gadget 2"); + unless(prev=gtbCreateGadget(BOOPSI_KIND,NULL,FRBUTTONCLASS, + GA_Previous,prev, + GA_Left,Wnd->BorderLeft, + GA_Top,Wnd->BorderTop+60, + GA_Width,100, + GA_Height,20, + GA_Text,"Ble3", + ICA_TARGET,ICTARGET_IDCMP, + TAG_DONE)) Leave("Can't create gadget 3"); + + DoMethod(MainWnd,OM_ADDMEMBER,GList); + RefreshGList(GList,Wnd,NULL,-1); + GT_RefreshWindow(Wnd,NULL); + + gtbExecuteRexx(ARexx,argv[1]); + + while(gtbHandleObject(MainWnd,Cdity,CtrlC,ARexx,AmigaGuide,TAG_DONE)); + + RemoveGList(Wnd,GList,-1); + gtbFreeGadgets(GList); +end: + if(AmigaGuide) DisposeObject(AmigaGuide); + if(ARexx) DisposeObject(ARexx); + if(MainWnd) DisposeObject(MainWnd); + if(CtrlC) DisposeObject(CtrlC); + if(Cdity) DisposeObject(Cdity); + if(Scrn) DisposeObject(Scrn); + if(appl) gtbDisposeApplication(appl); +} diff --git a/GadToolsBox/Gadgets/windowclass/messages.c b/GadToolsBox/Gadgets/windowclass/messages.c new file mode 100755 index 0000000..dfca049 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/messages.c @@ -0,0 +1,289 @@ +/* +** Messages Class +** $VER: messages.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +//TEXT version[]=VERSTAG; + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define MESSAGECLASS "gtbmessageclass" + +/* +** Prototypes +*/ + +Class *CreateMessageClass(struct gtbApplication *); +void DisposeMessageClass(Class *); +ULONG ASMFUNC MESG_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG MESG_NEW(Class *,Object *,struct opSet *); +ULONG MESG_DISPOSE(Class *, Object *, Msg); +ULONG MESG_SET(Class *, Object *, struct opSet *); +ULONG MESG_GET(Class *,Object *,struct opGet *); +ULONG MESG_GETMESSAGE(Class *,Object *,Msg); +ULONG MESG_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG MESG_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); + +/* +** Variables +*/ +struct MESGData +{ + BOOL md_ObjectOK; + struct MsgPort *md_MsgPort; + struct MsgPort *md_MyMsgPort; + ULONG md_SigBit; + BYTE md_Signal; + STRPTR md_Name; + BYTE md_Pri; + ULONG (*md_MesgHandler)(Object *,ULONG,APTR); +}; + +/* +** Create Class +*/ + +Class *CreateMessageClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, ROOTCLASS, NULL, sizeof(struct MESGData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) MESG_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeMessageClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC MESG_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = MESG_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = MESG_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = MESG_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = MESG_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_GETMESSAGE: + retval = MESG_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = MESG_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = MESG_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS MESG_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct MESGData *MD; + struct TagItem *ti; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + MD = INST_DATA( cl, object ); + + memset(MD,0,sizeof(struct MESGData)); + + MD->md_MyMsgPort=NULL; + MD->md_Signal=-1; + MD->md_Name = (STRPTR)GetTagData( MESG_Name, NULL, ops->ops_AttrList ); + MD->md_Pri = (BYTE)GetTagData( MESG_Priority, 0, ops->ops_AttrList ); + MD->md_MesgHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( MESG_Handler, NULL, ops->ops_AttrList ); + MD->md_MsgPort = (struct MsgPort *)GetTagData( MESG_MessagePort, NULL, ops->ops_AttrList ); + MD->md_SigBit = GetTagData( MESG_SigBit, NULL, ops->ops_AttrList ); + if(ti=FindTagItem(MESG_Signal,ops->ops_AttrList)) + { + MD->md_Signal=AllocSignal(ti->ti_Data); + MD->md_SigBit=1L<md_Signal; + } + if((!FindTagItem(MESG_SigBit,ops->ops_AttrList)) && (!FindTagItem(MESG_Signal,ops->ops_AttrList)) && (!MD->md_MsgPort)) + { + if(MD->md_MsgPort) + MD->md_MsgPort=MD->md_MyMsgPort=CreatePort(MD->md_Name,MD->md_Pri); + else + MD->md_MsgPort=MD->md_MyMsgPort=CreateMsgPort(); + } + + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListMessages); + MD->md_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS MESG_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct MESGData *MD = INST_DATA( cl, o ); + + if(MD->md_ObjectOK) DoMethod(o,OM_REMOVE); + if(MD->md_MyMsgPort) DeleteMsgPort(MD->md_MyMsgPort); MD->md_MyMsgPort=NULL; + if(MD->md_Signal!=-1) FreeSignal(MD->md_Signal); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS MESG_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct MESGData *MD = INST_DATA( cl, o ); + ULONG retval; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case MESG_Handler: + MD->md_MesgHandler=(ULONG (*)(Object *,ULONG,APTR)) tag->ti_Data; + break; + case MESG_Signal: + if(MD->md_Signal!=-1) FreeSignal(MD->md_Signal); + MD->md_Signal=AllocSignal(tag->ti_Data); + MD->md_SigBit=1L<md_Signal; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS MESG_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct MESGData *MD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case MESG_MessagePort: *opg->opg_Storage = (ULONG)MD->md_MsgPort; break; + case MESG_SigBit: + if(MD->md_MsgPort) + *opg->opg_Storage = (ULONG)(1L<md_MsgPort->mp_SigBit); + else + *opg->opg_Storage = MD->md_SigBit; + break; + case MESG_Signal: + if(MD->md_MsgPort) + *opg->opg_Storage = (ULONG)(MD->md_MsgPort->mp_SigBit); + else + *opg->opg_Storage = (ULONG)MD->md_Signal; + break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS MESG_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct Message *mesg; + struct MESGData *MD = INST_DATA( cl, o ); + + if(mesg=GetMsg(MD->md_MsgPort)) + { + ReplyMsg((struct Message *)mesg); + return( (ULONG) mesg ); + } + else return NULL; +} + +ULONG SAVEDS MESG_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct MESGData *MD = INST_DATA( cl, o ); + struct Message *mesg; + ULONG retval=1; + + if(MD->md_MsgPort) + { + if((msg->Signals & (1L<md_MsgPort->mp_SigBit)) && MD->md_MesgHandler) + { + while(mesg=GetMsg(MD->md_MsgPort)) + { + retval=MD->md_MesgHandler(o,NULL,mesg); + ReplyMsg((struct Message *)mesg); + } + } + } + else + { + if((msg->Signals & MD->md_SigBit) && MD->md_MesgHandler) + { + retval=MD->md_MesgHandler(o,NULL,NULL); + } + } + return retval; +} + +ULONG SAVEDS MESG_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct MESGData *MD = INST_DATA( cl, o ); + + if(MD->md_MsgPort) + return Wait((1L<md_MsgPort->mp_SigBit)|(msg->Signals)); + else + return Wait((MD->md_SigBit)|(msg->Signals)); +} diff --git a/GadToolsBox/Gadgets/windowclass/messages.h b/GadToolsBox/Gadgets/windowclass/messages.h new file mode 100755 index 0000000..7a6b24f --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/messages.h @@ -0,0 +1,12 @@ +#include +#include +#include + +#define MESG_Dummy (TAG_USER) +#define MESG_Name (MESG_Dummy+0) +#define MESG_Signal (MESG_Dummy+1) +#define MESG_Priority (MESG_Dummy+6) +#define MESG_MessagePort (MESG_Dummy+7) +#define MESG_Handler (MESG_Dummy+31) + +#define MESG_SigBit (MESG_Dummy+106) diff --git a/GadToolsBox/Gadgets/windowclass/rxtest.wtest b/GadToolsBox/Gadgets/windowclass/rxtest.wtest new file mode 100755 index 0000000..d6bf9cd --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/rxtest.wtest @@ -0,0 +1,10 @@ +/* +** Test rexx +*/ + +ADDRESS 'WNDTEST.1' +OPTIONS RESULTS + +test_about +SAY RESULT +test_help 'main' diff --git a/GadToolsBox/Gadgets/windowclass/screen.c b/GadToolsBox/Gadgets/windowclass/screen.c new file mode 100755 index 0000000..506e79f --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/screen.c @@ -0,0 +1,482 @@ +/* +** Screen Class +** $VER: screen.c 37.1 (15.4.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define SCREENCLASS "gtbscreenclass" + +/* +** Prototypes +*/ + +Class *CreateScreenClass(struct gtbApplication *); +void DisposeScreenClass(Class *); +ULONG ASMFUNC SCRN_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG SCRN_NEW(Class *,Object *,struct opSet *); +ULONG SCRN_DISPOSE(Class *, Object *, Msg); +ULONG SCRN_SET(Class *, Object *, struct opSet *); +ULONG SCRN_GET(Class *,Object *,struct opGet *); +ULONG SCRN_UPDATE(Class *,Object *,struct opUpdate *); +ULONG SCRN_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG SCRN_RENDER(Class *,Object *,struct gpRender *); +ULONG SCRN_GETMESSAGE(Class *,Object *,Msg); +ULONG SCRN_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG SCRN_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG SCRN_ADDMEMBER(Class *,Object *,struct opMember *); +ULONG SCRN_REMMEMBER(Class *,Object *,struct opMember *); + +/* +** Variables +*/ + +struct SCRNData +{ + BOOL sd_ObjectOK; + + struct Screen *sd_Screen; + struct MinList sd_ListWindows; + + Object *sd_Message; + ULONG sd_Signal; + ULONG (*sd_ScreenHandler)(Object *,ULONG,APTR); + + struct DrawInfo *sd_DrawInfo; + APTR sd_VisualInfo; + BOOL sd_IsLock; +}; + +/* +** Create Class +*/ + +Class *CreateScreenClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct SCRNData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) SCRN_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeScreenClass(Class *cl) +{ + FreeClass(cl); +} + +#define COPYTAG(w,o) ((ti=FindTagItem(w,ops->ops_AttrList))?o:TAG_IGNORE) + +/* +** Dispatcher +*/ + +ULONG ASMFUNC SCRN_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = SCRN_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = SCRN_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = SCRN_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = SCRN_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = SCRN_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = SCRN_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = SCRN_RENDER(cl, o, (struct gpRender *)msg ); + break; + case GTB_GETMESSAGE: + retval = SCRN_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = SCRN_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = SCRN_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case OM_ADDMEMBER: + retval = SCRN_ADDMEMBER(cl,o,(struct opMember *)msg); + break; + case OM_REMMEMBER: + retval = SCRN_REMMEMBER(cl,o,(struct opMember *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS SCRN_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct SCRNData *SD; + struct TagItem *ti,*tag,*tstate; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + SD = INST_DATA( cl, object ); + + memset(SD,0,sizeof(struct SCRNData)); + SD->sd_IsLock=FALSE; + + NewList((struct List *)&SD->sd_ListWindows); + + if(ti=FindTagItem(SCRN_Handler,ops->ops_AttrList)) + { + if(!(SD->sd_Message=NewObject(((struct gtbApplication *)cl->cl_UserData)->ga_MsgClass,NULL, + (tag=FindTagItem(SCRN_PubSig,ops->ops_AttrList))?MESG_SigBit:MESG_Signal,tag?(1L<ti_Data):-1, + MESG_Handler,ti->ti_Data, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + if(tag) SD->sd_Signal=tag->ti_Data; + else GetAttr(MESG_Signal,SD->sd_Message,&SD->sd_Signal); + SD->sd_ScreenHandler=(ULONG (*)(Object *,ULONG,APTR))ti->ti_Data; + } + + if(ti=FindTagItem(SCRN_LockPubName,ops->ops_AttrList)) + { + if(!(SD->sd_Screen=LockPubScreen((UBYTE *)ti->ti_Data))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + SD->sd_IsLock=TRUE; + } + else + { + ti=NULL; + if(!(SD->sd_Screen=OpenScreenTags(NULL, + (FindTagItem(SCRN_Handler,ops->ops_AttrList)||(ti=FindTagItem(SCRN_PubTask,ops->ops_AttrList)))?SA_PubTask:TAG_IGNORE,ti?ti->ti_Data:(ULONG)FindTask(NULL), + (FindTagItem(SCRN_Handler,ops->ops_AttrList)||FindTagItem(SCRN_PubSig,ops->ops_AttrList))?SA_PubSig:TAG_IGNORE,SD->sd_Signal, + COPYTAG(SCRN_Left,SA_Left),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Top,SA_Top),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Width,SA_Width),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Height,SA_Height),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Depth,SA_Depth),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_DetailPen,SA_DetailPen),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_BlockPen,SA_BlockPen),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Title,SA_Title),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Font,SA_Font),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_BitMap,SA_BitMap),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_ShowTitle,SA_ShowTitle),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Behind,SA_Behind),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Quiet,SA_Quiet),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Type,SA_Type),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_DisplayID,SA_DisplayID),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Overscan,SA_Overscan),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_DClip,SA_DClip),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_AutoScroll,SA_AutoScroll),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_PubName,SA_PubName),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Pens,SA_Pens),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Colors,SA_Colors),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_FullPalette,SA_FullPalette),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_ErrorCode,SA_ErrorCode),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_SysFont,SA_SysFont),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Parent,SA_Parent),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_FrontChild,SA_FrontChild),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_BackChild,SA_BackChild),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_BackFill,SA_BackFill),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Draggable,SA_Draggable),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Exclusive,SA_Exclusive),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_SharePens,SA_SharePens),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Colors32,SA_Colors32),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_Interleaved,SA_Interleaved),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_VideoControl,SA_VideoControl),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_ColorMapEntries,SA_ColorMapEntries),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_LikeWorkbench,SA_LikeWorkbench),(ti?ti->ti_Data:NULL), + COPYTAG(SCRN_MinimizeISG,SA_MinimizeISG),(ti?ti->ti_Data:NULL), + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + } + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case SCRN_Private: PubScreenStatus(SD->sd_Screen,tag->ti_Data?PSNF_PRIVATE:0); break; + } + } + if(!(SD->sd_DrawInfo=GetScreenDrawInfo(SD->sd_Screen))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + if(!(SD->sd_VisualInfo=GetVisualInfo(SD->sd_Screen,TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListScreens); + SD->sd_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS SCRN_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + struct Node *node; + + if(SD->sd_ObjectOK) DoMethod(o,OM_REMOVE); SD->sd_ObjectOK=FALSE; + + while(node=RemTail((struct List *)&SD->sd_ListWindows)) + { + DisposeObject((Object *)node->ln_Name); + FreeVec(node); + } + + if(SD->sd_VisualInfo) FreeVisualInfo(SD->sd_VisualInfo); + if(SD->sd_DrawInfo) FreeScreenDrawInfo(SD->sd_Screen,SD->sd_DrawInfo); + if(SD->sd_IsLock) UnlockPubScreen(NULL,SD->sd_Screen); + else if(SD->sd_Screen)CloseScreen(SD->sd_Screen); + if(SD->sd_Message) DisposeObject(SD->sd_Message); + + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS SCRN_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG sr=FALSE,sleft,stop; + struct SCRNData *SD = INST_DATA( cl, o ); + struct TagItem *tag, *tstate, notify; + ULONG retval; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + sleft=SD->sd_Screen->LeftEdge; + stop=SD->sd_Screen->TopEdge; + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case SCRN_Left: sleft=tag->ti_Data; sr=TRUE; break; + case SCRN_Top: stop=tag->ti_Data; sr=TRUE; break; + + case SCRN_Handler: SD->sd_ScreenHandler=(ULONG (*)(Object *,ULONG,APTR))tag->ti_Data; + +// case SCRN_Title: SetWindowTitles(SD->sd_Window,(UBYTE *)tag->ti_Data,(UBYTE *)-1); break; + case SCRN_Private: PubScreenStatus(SD->sd_Screen,tag->ti_Data?PSNF_PRIVATE:0); break; + case SCRN_ShowTitle: ShowTitle(SD->sd_Screen,tag->ti_Data); break; + } + } + + SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(sr) ScreenPosition(SD->sd_Screen,SPOS_ABSOLUTE,sleft,stop,NULL,NULL); + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS SCRN_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct SCRNData *SD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case SCRN_Screen: *opg->opg_Storage = (ULONG)SD->sd_Screen; break; + case SCRN_SigBit: *opg->opg_Storage = (ULONG)GetAttr(MESG_SigBit,SD->sd_Message,opg->opg_Storage); break;//(1L<sd_Signal); break; + + case SCRN_Title: *opg->opg_Storage = (ULONG)SD->sd_Screen->Title; break; + case SCRN_DefaultTitle: *opg->opg_Storage = (ULONG)SD->sd_Screen->DefaultTitle; break; + + case SCRN_DrawInfo: *opg->opg_Storage = (ULONG)SD->sd_DrawInfo; break; + case SCRN_DetailPen: *opg->opg_Storage = (ULONG)SD->sd_Screen->DetailPen; break; + case SCRN_BlockPen: *opg->opg_Storage = (ULONG)SD->sd_Screen->BlockPen; break; + case SCRN_VisualInfo: *opg->opg_Storage = (ULONG)SD->sd_VisualInfo; break; + + case SCRN_Left: *opg->opg_Storage = (ULONG)SD->sd_Screen->LeftEdge; break; + case SCRN_Top: *opg->opg_Storage = (ULONG)SD->sd_Screen->TopEdge; break; + case SCRN_Width: *opg->opg_Storage = (ULONG)SD->sd_Screen->Width; break; + case SCRN_Height: *opg->opg_Storage = (ULONG)SD->sd_Screen->Height; break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS SCRN_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval=0; +// struct SCRNData *SD = INST_DATA( cl, o ); +// struct TagItem *tag, notify; +// struct RastPort *rp; + + retval = DoSuperMethodA(cl, o, (Msg) opu); + +/* if( opu->opu_AttrList ) + { + if(tag = FindTagItem( SCRN_CurVal, opu->opu_AttrList )) + { + if( tag->ti_Data != SD->sd_CurVal) + { + SD->sd_CurVal = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } +*/ + return( retval ); +} + +ULONG SAVEDS SCRN_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[3]; +// struct SCRNData *SD = INST_DATA( cl, o ); + +/* SCRN_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + SCRN_SetTagArg(tags[1], SCRN_CurVal, SD->sd_CurVal); + + if( opu->opu_AttrList == NULL ) + { + SCRN_SetTagArg(tags[2], TAG_END, NULL); + } + else SCRN_SetTagArg(tags[2], TAG_MORE, opu->opu_AttrList ); +*/ + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS SCRN_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval; +// struct RastPort *RP = gpr->gpr_RPort; +// struct SCRNData *SD = INST_DATA( cl, o ); + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + return( retval ); +} + +ULONG SAVEDS SCRN_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + return DoMethodA(SD->sd_Message,(Msg)msg); +} + +ULONG SAVEDS SCRN_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + printf("bleeeee\n"); + return DoMethodA(SD->sd_Message,(Msg)msg); +} + +ULONG SAVEDS SCRN_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + return DoMethodA(SD->sd_Message,(Msg)msg); +} + +ULONG SAVEDS SCRN_ADDMEMBER(Class *cl,Object *o,struct opMember *msg) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + struct Node *node; + + if(node=(struct Node *)AllocVec(sizeof(struct Node),MEMF_ANY)) + { + node->ln_Name=(char *)msg->opam_Object; + AddTail((struct List *)&SD->sd_ListWindows,node); + } + return TRUE; +} + +ULONG SAVEDS SCRN_REMMEMBER(Class *cl,Object *o,struct opMember *msg) +{ + struct SCRNData *SD = INST_DATA( cl, o ); + struct Node *node; + + if(SD->sd_ObjectOK) + { + for(node=(struct Node *)SD->sd_ListWindows.mlh_Head;node->ln_Succ;node=node->ln_Succ) + { + if(node->ln_Name==(char *)msg->opam_Object) + { + Remove(node); + FreeVec(node); + break; + } + } + } + return TRUE; +} diff --git a/GadToolsBox/Gadgets/windowclass/screen.h b/GadToolsBox/Gadgets/windowclass/screen.h new file mode 100755 index 0000000..fa25b01 --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/screen.h @@ -0,0 +1,56 @@ +#include +#include +#include + +#define SCRN_Dummy (TAG_USER) +#define SCRN_Private (SCRN_Dummy+0) +#define SCRN_LockPubName (SCRN_Dummy+1) +#define SCRN_Handler (SCRN_Dummy+31) + +#define SCRN_Screen (SCRN_Dummy+100) +#define SCRN_DrawInfo (SCRN_Dummy+101) +#define SCRN_DefaultTitle (SCRN_Dummy+102) +#define SCRN_VisualInfo (SCRN_Dummy+103) +#define SCRN_SigBit (SCRN_Dummy+106) + +#define SCRN_Left SA_Left +#define SCRN_Top SA_Top +#define SCRN_Width SA_Width +#define SCRN_Height SA_Height +#define SCRN_Depth SA_Depth +#define SCRN_DetailPen SA_DetailPen +#define SCRN_BlockPen SA_BlockPen +#define SCRN_Title SA_Title +#define SCRN_Font SA_Font +#define SCRN_BitMap SA_BitMap +#define SCRN_ShowTitle SA_ShowTitle +#define SCRN_Behind SA_Behind +#define SCRN_Quiet SA_Quiet +#define SCRN_Type SA_Type +#define SCRN_DisplayID SA_DisplayID +#define SCRN_Overscan SA_Overscan +#define SCRN_DClip SA_DClip +#define SCRN_AutoScroll SA_AutoScroll +#define SCRN_PubName SA_PubName +#define SCRN_Pens SA_Pens +#define SCRN_Colors SA_Colors +#define SCRN_FullPalette SA_FullPalette +#define SCRN_ErrorCode SA_ErrorCode +#define SCRN_SysFont SA_SysFont +#define SCRN_Parent SA_Parent +#define SCRN_FrontChild SA_FrontChild +#define SCRN_BackChild SA_BackChild +#define SCRN_BackFill SA_BackFill +#define SCRN_Draggable SA_Draggable +#define SCRN_Exclusive SA_Exclusive +#define SCRN_SharePens SA_SharePens +#define SCRN_Colors32 SA_Colors32 +#define SCRN_Interleaved SA_Interleaved +#define SCRN_VideoControl SA_VideoControl +#define SCRN_ColorMapEntries SA_ColorMapEntries +#define SCRN_LikeWorkbench SA_LikeWorkbench +#define SCRN_MinimizeISG SA_MinimizeISG +#define SCRN_PubTask SA_PubTask +#define SCRN_PubSig SA_PubSig +#define SCRN_ID GA_ID +#define SCRN_UserData GA_UserData diff --git a/GadToolsBox/Gadgets/windowclass/smakefile b/GadToolsBox/Gadgets/windowclass/smakefile new file mode 100755 index 0000000..4fdbeea --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/smakefile @@ -0,0 +1,68 @@ +# +# Makefile for GadToolsBox.lib by Tomasz Muszynski +# + +all: gadtoolsbox.lib WndTest + +VERSION = 3 +REVISION = 0 + +OPTIONS = +PUBSCREEN = SASPRJ.1 + +WndTest: main.o gadtoolsbox.lib + slink +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtoolsbox.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define WINDOWCLASS "gtbwindowclass" +#define IM_WIDTH(o) ((struct Image *) o)->Width +#define IM_HEIGHT(o) ((struct Image *) o)->Height + +/* +** Prototypes +*/ + +Class *CreateWindowClass(struct gtbApplication *); +void DisposeWindowClass(Class *); +ULONG ASMFUNC WIND_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG WIND_NEW(Class *,Object *,struct opSet *); +ULONG WIND_DISPOSE(Class *, Object *, Msg); +ULONG WIND_SET(Class *, Object *, struct opSet *); +ULONG WIND_GET(Class *,Object *,struct opGet *); +ULONG WIND_UPDATE(Class *,Object *,struct opUpdate *); +ULONG WIND_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG WIND_RENDER(Class *,Object *,struct gpRender *); +ULONG WIND_GETMESSAGE(Class *,Object *,Msg); +ULONG WIND_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG WIND_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG WIND_ADDMEMBER(Class *,Object *,struct opMember *); +ULONG WIND_REMMEMBER(Class *,Object *,struct opMember *); + +/* +** Variables +*/ + +#define WD_LEFT 0 +#define WD_RIGHT 1 +#define WD_CENTER 2 +#define WD_NORMAL 0 +#define WD_RELATIVE 1 +#define WD_INNER 2 + +struct WINDData +{ + BOOL wd_ObjectOK; + + struct Window *wd_Window; + struct Gadget *wd_DragBar; + + Object *wd_Scroll[6]; + UBYTE wd_VertScroll,wd_HorizScroll; + ULONG wd_VertTop,wd_VertTotal,wd_VertVisible; + ULONG wd_HorizTop,wd_HorizTotal,wd_HorizVisible; + + struct MinList wd_ListGadgets; + Object *wd_LeftImage,*wd_RightImage,*wd_UpImage,*wd_DownImage,*wd_SizeImage; + + struct Requester wd_Req; + BOOL wd_Locked; + + UBYTE wd_LeftEdgeType,wd_TopEdgeType; + UBYTE wd_WidthType,wd_HeightType; + UWORD wd_LeftEdge,wd_TopEdge; + UWORD wd_Width,wd_Height; + ULONG wd_IDCMP; + ULONG wd_PointerDelay; + + struct Gadget *wd_Gadgets; + struct Gadget *wd_FirstGadget; + + struct Menu *wd_MenuStrip; + + struct MsgPort *wd_AppMsgPort; + APTR wd_AppWindow; + ULONG wd_AppID; + + struct MsgPort *wd_MessagePort; + ULONG (*wd_WindowHandler)(Object *,ULONG,APTR); + + struct Screen *wd_Screen,*wd_PubScreen,*wd_UsedScreen; + Object *wd_ScreenObject; + struct DrawInfo *wd_DrawInfo; + UBYTE *wd_PubScreenName; + UBYTE wd_ScrUse; + + struct IntuiMessage *wd_IntuiMessage; +}; + +/* +** Create Class +*/ + +Class *CreateWindowClass(struct gtbApplication *appl) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct WINDData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) WIND_Dispatcher; + cl->cl_UserData = (ULONG) appl; + return cl; + } + return(NULL); +} + +void DisposeWindowClass(Class *cl) +{ + FreeClass(cl); +} + +void StripIntuiMessages(struct MsgPort *mp,struct Window *win) +{ + struct IntuiMessage *msg; + struct Node *succ; + + msg = (struct IntuiMessage *) mp->mp_MsgList.lh_Head; + while( succ = msg->ExecMessage.mn_Node.ln_Succ ) + { + if( msg->IDCMPWindow == win ) + { + Remove((struct Node *)msg); + ReplyMsg((struct Message *)msg); + } + msg = (struct IntuiMessage *) succ; + } +} + +Object *NewImageObject(struct Screen *scr,struct DrawInfo *dri,ULONG which) +{ + return NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, dri, + SYSIA_Which, which, + SYSIA_Size, (scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE); +} + +#define COPYTAG(w,o) ((ti=FindTagItem(w,ops->ops_AttrList))?o:TAG_IGNORE) + +/* +** Dispatcher +*/ + +ULONG ASMFUNC WIND_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = WIND_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = WIND_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = WIND_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = WIND_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = WIND_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = WIND_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = WIND_RENDER(cl, o, (struct gpRender *)msg ); + break; + case GTB_GETMESSAGE: + retval = WIND_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = WIND_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = WIND_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case OM_ADDMEMBER: + retval = WIND_ADDMEMBER(cl,o,(struct opMember *)msg); + break; + case OM_REMMEMBER: + retval = WIND_REMMEMBER(cl,o,(struct opMember *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS WIND_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct WINDData *WD; + struct TagItem *ti,*tag,*tstate; + ULONG le,te,w,h,size; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + WD = INST_DATA( cl, object ); + + memset(WD,0,sizeof(struct WINDData)); + NewList((struct List *)&WD->wd_ListGadgets); + WD->wd_Locked=FALSE; + WD->wd_PointerDelay=FALSE; + WD->wd_MenuStrip=NULL; + + WD->wd_WindowHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( WIND_Handler, NULL, ops->ops_AttrList ); + if(WD->wd_WindowHandler) WD->wd_WindowHandler(object,TYPE_INIT,NULL); + + if(WD->wd_Screen = (struct Screen *)GetTagData( WIND_Screen, NULL, ops->ops_AttrList )) WD->wd_UsedScreen=WD->wd_Screen; + if(WD->wd_PubScreen = (struct Screen *)GetTagData( WIND_PubScreen, NULL, ops->ops_AttrList )) WD->wd_UsedScreen=WD->wd_PubScreen; + if(WD->wd_ScreenObject = (Object *)GetTagData( WIND_ScreenObject, NULL, ops->ops_AttrList )) GetAttr(SCRN_Screen,WD->wd_ScreenObject,(ULONG *)&WD->wd_UsedScreen); + WD->wd_PubScreenName = (UBYTE *)GetTagData( WIND_PubScreenName, NULL, ops->ops_AttrList ); + if(!WD->wd_UsedScreen) { WD->wd_UsedScreen=LockPubScreen(WD->wd_PubScreenName); WD->wd_ScrUse=TRUE; } + if(!(WD->wd_DrawInfo=GetScreenDrawInfo(WD->wd_UsedScreen))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + if(ti=FindTagItem(WIND_Width,ops->ops_AttrList)) { WD->wd_WidthType=WD_NORMAL; WD->wd_Width=ti->ti_Data; w=ti->ti_Data; } else + if(ti=FindTagItem(WIND_InnerWidth,ops->ops_AttrList)) { WD->wd_WidthType=WD_INNER; WD->wd_Width=ti->ti_Data; w=ti->ti_Data; } else + if(ti=FindTagItem(WIND_RelWidth,ops->ops_AttrList)) { WD->wd_WidthType=WD_RELATIVE; WD->wd_Width=ti->ti_Data; w=WD->wd_UsedScreen->Width-ti->ti_Data; } else + { WD->wd_WidthType=WD_NORMAL; WD->wd_Width=WD->wd_UsedScreen->Width; w=100; } + + if(ti=FindTagItem(WIND_Height,ops->ops_AttrList)) { WD->wd_HeightType=WD_NORMAL; WD->wd_Height=ti->ti_Data; h=ti->ti_Data; } else + if(ti=FindTagItem(WIND_InnerHeight,ops->ops_AttrList)) { WD->wd_HeightType=WD_INNER; WD->wd_Height=ti->ti_Data; h=ti->ti_Data; } else + if(ti=FindTagItem(WIND_RelHeight,ops->ops_AttrList)) { WD->wd_HeightType=WD_RELATIVE; WD->wd_Height=ti->ti_Data; h=WD->wd_UsedScreen->Height-ti->ti_Data; } else + { WD->wd_HeightType=WD_NORMAL; WD->wd_Height=WD->wd_UsedScreen->Height; h=100; } + + if(ti=FindTagItem(WIND_Left,ops->ops_AttrList)) { WD->wd_LeftEdgeType=WD_LEFT; WD->wd_LeftEdge=ti->ti_Data; le=ti->ti_Data; } else + if(ti=FindTagItem(WIND_RelRight,ops->ops_AttrList)) { WD->wd_LeftEdgeType=WD_RIGHT; WD->wd_LeftEdge=ti->ti_Data; le=WD->wd_UsedScreen->Width-w-ti->ti_Data; } else + if(ti=FindTagItem(WIND_CenterX,ops->ops_AttrList)) { WD->wd_LeftEdgeType=WD_CENTER; WD->wd_LeftEdge=ti->ti_Data; le=WD->wd_UsedScreen->Width/2-w/2; } else + { WD->wd_LeftEdgeType=WD_LEFT; WD->wd_LeftEdge=0; le=0; } + + if(ti=FindTagItem(WIND_Top,ops->ops_AttrList)) { WD->wd_TopEdgeType=WD_LEFT; WD->wd_TopEdge=ti->ti_Data; te=ti->ti_Data; } else + if(ti=FindTagItem(WIND_RelBottom,ops->ops_AttrList)) { WD->wd_TopEdgeType=WD_RIGHT; WD->wd_TopEdge=ti->ti_Data; te=WD->wd_UsedScreen->Height-h-ti->ti_Data; } else + if(ti=FindTagItem(WIND_CenterY,ops->ops_AttrList)) { WD->wd_TopEdgeType=WD_CENTER; WD->wd_TopEdge=ti->ti_Data; te=WD->wd_UsedScreen->Height/2-h/2; } else + { WD->wd_TopEdgeType=WD_LEFT; WD->wd_TopEdge=0; te=0; } + + size=GetTagData(WIND_SizeGadget,FALSE,ops->ops_AttrList); + + if(ti=FindTagItem(WIND_ToolDragBar,ops->ops_AttrList)) + { + if(!(WD->wd_DragBar=NewObject(NULL,GADGETCLASS, + GA_Left,0, + GA_Top,0, + GA_Width,(ti->ti_Data==TOOL_HORIZ)?w:8, + GA_Height,(ti->ti_Data==TOOL_VERT)?h:8, + GA_SysGadget,TRUE, + GA_SysGType,GTYP_WDRAGGING, + GA_Highlight,GFLG_GADGHNONE, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + (ti->ti_Data==TOOL_HORIZ)?GA_TopBorder:GA_LeftBorder,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + WD->wd_FirstGadget=WD->wd_DragBar; + } + + if(!(WD->wd_SizeImage=NewImageObject(WD->wd_UsedScreen,WD->wd_DrawInfo,SIZEIMAGE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + if(WD->wd_VertScroll=GetTagData( WIND_VertScroll, NULL, ops->ops_AttrList )) + { + if(!(WD->wd_UpImage=NewImageObject(WD->wd_UsedScreen,WD->wd_DrawInfo,UPIMAGE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + if(!(WD->wd_DownImage=NewImageObject(WD->wd_UsedScreen,WD->wd_DrawInfo,DOWNIMAGE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + if(!(WD->wd_Scroll[0]=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, WD->wd_DownImage, + GA_RelRight, 1-(IM_WIDTH(WD->wd_DownImage)), + GA_RelBottom, 1-((size?IM_HEIGHT(WD->wd_SizeImage):0)+IM_HEIGHT(WD->wd_DownImage)), + GA_RightBorder,TRUE, + (WD->wd_DragBar?GA_Previous:TAG_IGNORE),WD->wd_DragBar, + GA_ID,(UWORD)-1, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[0]); + if(!(WD->wd_Scroll[1]=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, WD->wd_UpImage, + GA_RelRight, 1-(IM_WIDTH(WD->wd_UpImage)), + GA_RelBottom, 1-((size?IM_HEIGHT(WD->wd_SizeImage):0)+IM_HEIGHT(WD->wd_DownImage)+IM_HEIGHT(WD->wd_UpImage)), + GA_RightBorder,TRUE, + GA_Previous,WD->wd_Scroll[0], + GA_ID,(UWORD)-2, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[1]); + if(!(WD->wd_Scroll[2]=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEVERT, + PGA_NewLook, TRUE, + PGA_Borderless, ((WD->wd_DrawInfo->dri_Flags & DRIF_NEWLOOK) && WD->wd_DrawInfo->dri_Depth != 1), + GA_RelRight, -(IM_WIDTH(WD->wd_SizeImage)-5), + GA_Top, WD->wd_UsedScreen->WBorTop+WD->wd_UsedScreen->Font->ta_YSize+1+1, + GA_Width, IM_WIDTH(WD->wd_SizeImage)-2-2-4, + GA_RelHeight, -((size?IM_HEIGHT(WD->wd_SizeImage):0)+IM_HEIGHT(WD->wd_UpImage)+IM_HEIGHT(WD->wd_DownImage)+WD->wd_UsedScreen->WBorTop+WD->wd_UsedScreen->Font->ta_YSize+1+1+1), + GA_RightBorder, TRUE, + GA_Previous,WD->wd_Scroll[1], + PGA_Top, WD->wd_VertTop=GetTagData( WIND_VertTop, 0, ops->ops_AttrList ), + PGA_Total, WD->wd_VertTotal=GetTagData( WIND_VertTotal, 1, ops->ops_AttrList ), + PGA_Visible, WD->wd_VertVisible=GetTagData( WIND_VertVisible, 1, ops->ops_AttrList ), + GA_ID,(UWORD)-3, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[2]); + if(!WD->wd_DragBar) WD->wd_FirstGadget=(struct Gadget *)WD->wd_Scroll[0]; + } + if(WD->wd_HorizScroll=GetTagData( WIND_HorizScroll, NULL, ops->ops_AttrList )) + { + if(!(WD->wd_LeftImage=NewImageObject(WD->wd_UsedScreen,WD->wd_DrawInfo,LEFTIMAGE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + if(!(WD->wd_RightImage=NewImageObject(WD->wd_UsedScreen,WD->wd_DrawInfo,RIGHTIMAGE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + if(!(WD->wd_Scroll[3]=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, WD->wd_LeftImage, + GA_RelRight, 1-(IM_WIDTH(WD->wd_LeftImage)+IM_WIDTH(WD->wd_SizeImage)+IM_WIDTH(WD->wd_RightImage)), + GA_RelBottom, 1-(IM_HEIGHT(WD->wd_LeftImage)), + GA_BottomBorder,TRUE, + (WD->wd_VertScroll?GA_Previous:(WD->wd_DragBar?GA_Previous:TAG_IGNORE)),WD->wd_Scroll[2], + GA_ID,(UWORD)-4, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[3]); + if(!(WD->wd_Scroll[4]=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, WD->wd_RightImage, + GA_RelRight, 1-(IM_WIDTH(WD->wd_RightImage)+IM_WIDTH(WD->wd_SizeImage)), + GA_RelBottom, 1-(IM_HEIGHT(WD->wd_RightImage)), + GA_BottomBorder,TRUE, + GA_Previous,WD->wd_Scroll[3], + GA_ID,(UWORD)-5, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[4]); + if(!(WD->wd_Scroll[5]=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEHORIZ, + PGA_NewLook, TRUE, + PGA_Borderless, ((WD->wd_DrawInfo->dri_Flags & DRIF_NEWLOOK) && WD->wd_DrawInfo->dri_Depth != 1), + GA_Left, WD->wd_UsedScreen->WBorLeft, + GA_RelBottom, -(IM_HEIGHT(WD->wd_SizeImage)-3), + GA_RelWidth, -(4+IM_WIDTH(WD->wd_LeftImage)+IM_WIDTH(WD->wd_RightImage)+IM_WIDTH(WD->wd_SizeImage)+1), + GA_Height, IM_HEIGHT(WD->wd_SizeImage)-4, + GA_BottomBorder, TRUE, + GA_Previous,WD->wd_Scroll[4], + PGA_Top, WD->wd_HorizTop=GetTagData( WIND_HorizTop, 0, ops->ops_AttrList ), + PGA_Total, WD->wd_HorizTotal=GetTagData( WIND_HorizTotal, 1, ops->ops_AttrList ), + PGA_Visible, WD->wd_HorizVisible=GetTagData( WIND_HorizVisible, 1, ops->ops_AttrList ), + GA_ID,(UWORD)-6, + GetTagData(WIND_GimmeZeroZero,FALSE,ops->ops_AttrList)?GA_GZZGadget:TAG_IGNORE,TRUE, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } +// DoMethod(o,OM_ADDMEMBER,(LONG)WD->wd_Scroll[5]); + if(!WD->wd_DragBar && !WD->wd_VertScroll) WD->wd_FirstGadget=(struct Gadget *)WD->wd_Scroll[3]; + } + + WD->wd_IDCMP=GetTagData( WIND_IDCMP, NULL, ops->ops_AttrList ); + WD->wd_MessagePort=(struct MsgPort *)GetTagData( WIND_MessagePort, NULL, ops->ops_AttrList ); + WD->wd_AppMsgPort=(struct MsgPort *)GetTagData( WIND_AppMessagePort, NULL, ops->ops_AttrList ); + WD->wd_AppID=GetTagData( WIND_AppID, NULL, ops->ops_AttrList ); + + WD->wd_PointerDelay=GetTagData( WIND_PointerDelay, FALSE, ops->ops_AttrList ); + + WD->wd_Gadgets=(struct Gadget *)GetTagData( WIND_Gadgets, NULL, ops->ops_AttrList ); + if(!WD->wd_VertScroll && !WD->wd_HorizScroll && !WD->wd_DragBar) WD->wd_FirstGadget=WD->wd_Gadgets; + if(!WD->wd_VertScroll && !WD->wd_HorizScroll && WD->wd_DragBar) WD->wd_DragBar->NextGadget=WD->wd_Gadgets; + if(WD->wd_VertScroll && !WD->wd_HorizScroll) ((struct Gadget *)WD->wd_Scroll[2])->NextGadget=WD->wd_Gadgets; + if(WD->wd_HorizScroll) ((struct Gadget *)WD->wd_Scroll[5])->NextGadget=WD->wd_Gadgets; + + if(WD->wd_HorizScroll || WD->wd_VertScroll) WD->wd_IDCMP|=IDCMP_IDCMPUPDATE; + + if(!(WD->wd_Window=OpenWindowTags(NULL, + WA_Left,le, + WA_Top,te, + (WD->wd_WidthType==WD_INNER?WA_InnerWidth:WA_Width),w, + (WD->wd_HeightType==WD_INNER?WA_InnerHeight:WA_Height),h, + ((WD->wd_IDCMP && (!WD->wd_MessagePort)) ? WA_IDCMP:TAG_IGNORE), WD->wd_IDCMP, + (WD->wd_FirstGadget?WA_Gadgets:TAG_IGNORE), WD->wd_FirstGadget, + WD->wd_Screen?WA_CustomScreen:TAG_IGNORE,WD->wd_Screen, + WD->wd_PubScreen?WA_PubScreen:TAG_IGNORE,WD->wd_PubScreen, + WD->wd_PubScreenName?WA_PubScreenName:TAG_IGNORE,WD->wd_PubScreenName, + WD->wd_ScreenObject?WA_PubScreen:TAG_IGNORE,WD->wd_UsedScreen, + COPYTAG(WIND_SizeBRight,WA_SizeBRight),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SizeBBottom,WA_SizeBBottom),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Title,WA_Title),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SuperBitMap,WA_SuperBitMap),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MinWidth,WA_MinWidth),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MinHeight,WA_MinHeight),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MaxWidth,WA_MaxWidth),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MaxHeight,WA_MaxHeight),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SizeGadget,WA_SizeGadget),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_DragBar,WA_DragBar),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_DepthGadget,WA_DepthGadget),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_CloseGadget,WA_CloseGadget),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Backdrop,WA_Backdrop),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_ReportMouse,WA_ReportMouse),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_NoCareRefresh,WA_NoCareRefresh),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Borderless,WA_Borderless),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Activate,WA_Activate),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_RMBTrap,WA_RMBTrap),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SimpleRefresh,WA_SimpleRefresh),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SmartRefresh,WA_SmartRefresh),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SizeBRight,WA_SizeBRight),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_SizeBBottom,WA_SizeBBottom),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_GimmeZeroZero,WA_GimmeZeroZero),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_NewLookMenus,WA_NewLookMenus),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_ScreenTitle,WA_ScreenTitle),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_AutoAdjust,WA_AutoAdjust),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_PubScreenFallBack,WA_PubScreenFallBack),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Zoom,WA_Zoom),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MouseQueue,WA_MouseQueue),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_RptQueue,WA_RptQueue),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_BackFill,WA_BackFill),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_MenuHelp,WA_MenuHelp),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_NotifyDepth,WA_NotifyDepth),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Checkmark,WA_Checkmark),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_AmigaKey,WA_AmigaKey),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_Pointer,WA_Pointer),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_BusyPointer,WA_BusyPointer),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_PointerDelay,WA_PointerDelay),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_HelpGroup,WA_HelpGroup),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_HelpGroupWindow,WA_HelpGroupWindow),(ti?ti->ti_Data:NULL), + COPYTAG(WIND_TabletMessages,WA_TabletMessages),(ti?ti->ti_Data:NULL), + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + WD->wd_Window->UserData = (BYTE *)GetTagData( WIND_UserData, NULL, ops->ops_AttrList ); + if(WD->wd_MessagePort) + { + WD->wd_Window->UserPort=WD->wd_MessagePort; + ModifyIDCMP(WD->wd_Window,WD->wd_IDCMP); + } + if(WD->wd_AppMsgPort) WD->wd_AppWindow=AddAppWindow(WD->wd_AppID,NULL,WD->wd_Window,WD->wd_AppMsgPort,TAG_DONE); + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case WIND_MenuStrip: + if(WD->wd_MenuStrip) ClearMenuStrip(WD->wd_Window); + WD->wd_MenuStrip=(struct Menu *)tag->ti_Data; + if(WD->wd_MenuStrip) SetMenuStrip(WD->wd_Window,WD->wd_MenuStrip); + break; + case WIND_LockWindow: + if(tag->ti_Data && !WD->wd_Locked) + { + InitRequester(&WD->wd_Req); + Request(&WD->wd_Req,WD->wd_Window); + WD->wd_Locked=TRUE; + } + if(!tag->ti_Data && WD->wd_Locked) + { + EndRequest(&WD->wd_Req,WD->wd_Window); + WD->wd_Locked=FALSE; + } + break; + } + } + GT_RefreshWindow(WD->wd_Window,NULL); + DoMethod(object,OM_ADDTAIL,&((struct gtbApplication *)cl->cl_UserData)->ga_ListWindows); + if(WD->wd_ScreenObject) DoMethod(WD->wd_ScreenObject,OM_ADDMEMBER,object); + WD->wd_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS WIND_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct WINDData *WD = INST_DATA( cl, o ); + int a; +// Object *ostate,*member; + + if(WD->wd_WindowHandler) WD->wd_WindowHandler(o,TYPE_DELETE,NULL); + if(WD->wd_ObjectOK) DoMethod(o,OM_REMOVE); + + if(WD->wd_ScreenObject) DoMethod(WD->wd_ScreenObject,OM_REMMEMBER,o); + +/* ostate = (Object *) WD->wd_ListGadgets.mlh_Head; + while (member = NextObject (&ostate)) + { + DoMethod (member, OM_REMMEMBER); + DoMethod (member, (ULONG)msg); + } +*/ + + if(WD->wd_Locked) EndRequest(&WD->wd_Req,WD->wd_Window); + if(WD->wd_AppWindow) RemoveAppWindow(WD->wd_AppWindow); + if(WD->wd_MenuStrip) ClearMenuStrip(WD->wd_Window); + if(WD->wd_MessagePort) + { + Forbid(); + StripIntuiMessages( WD->wd_MessagePort, WD->wd_Window ); + WD->wd_Window->UserPort = NULL; + ModifyIDCMP( WD->wd_Window, 0L ); + Permit(); + } + RemoveGList(WD->wd_Window,WD->wd_FirstGadget,-1); + if(WD->wd_Window) CloseWindow(WD->wd_Window); + + if(WD->wd_DragBar) DisposeObject(WD->wd_DragBar); + for(a=0;a<6;a++) if(WD->wd_Scroll[a]) DisposeObject(WD->wd_Scroll[a]); + if(WD->wd_SizeImage) DisposeObject(WD->wd_SizeImage); + if(WD->wd_DownImage) DisposeObject(WD->wd_DownImage); + if(WD->wd_UpImage) DisposeObject(WD->wd_UpImage); + if(WD->wd_RightImage) DisposeObject(WD->wd_RightImage); + if(WD->wd_LeftImage) DisposeObject(WD->wd_LeftImage); + + if(WD->wd_UsedScreen && WD->wd_ScrUse) UnlockPubScreen(NULL,WD->wd_UsedScreen); + if(WD->wd_DrawInfo) FreeScreenDrawInfo(WD->wd_UsedScreen,WD->wd_DrawInfo); + + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS WIND_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG hr=FALSE,vr=FALSE,wr=FALSE,wl=FALSE,wleft,wtop,wwidth,wheight,minw,minh,maxw,maxh; + struct WINDData *WD = INST_DATA( cl, o ); + struct TagItem *tag, *tstate, notify; +// struct RastPort *rp; + ULONG retval; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + wleft=WD->wd_Window->LeftEdge; + wtop=WD->wd_Window->TopEdge; + wwidth=WD->wd_Window->Width; + wheight=WD->wd_Window->Height; + minw=WD->wd_Window->MinWidth; + minh=WD->wd_Window->MinHeight; + maxw=WD->wd_Window->MaxWidth; + maxh=WD->wd_Window->MaxHeight; + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case WIND_HorizTop: WD->wd_HorizTop=tag->ti_Data; hr=TRUE; break; + case WIND_HorizTotal: WD->wd_HorizTotal=tag->ti_Data; hr=TRUE; break; + case WIND_HorizVisible: WD->wd_HorizVisible=tag->ti_Data; hr=TRUE; break; + case WIND_VertTop: WD->wd_VertTop=tag->ti_Data; vr=TRUE; break; + case WIND_VertTotal: WD->wd_VertTotal=tag->ti_Data; vr=TRUE; break; + case WIND_VertVisible: WD->wd_VertVisible=tag->ti_Data; vr=TRUE; break; + + case WIND_Left: wleft=tag->ti_Data; wr=TRUE; break; + case WIND_RelRight: wleft=WD->wd_UsedScreen->Width-WD->wd_Window->Width-tag->ti_Data; wr=TRUE; break; + case WIND_CenterX: wleft=WD->wd_UsedScreen->Width/2-WD->wd_Window->Width/2; wr=TRUE; break; + case WIND_Top: wtop=tag->ti_Data; wr=TRUE; break; + case WIND_RelBottom: wtop=WD->wd_UsedScreen->Height-WD->wd_Window->Height-tag->ti_Data; wr=TRUE; break; + case WIND_CenterY: wtop=WD->wd_UsedScreen->Height/2-WD->wd_Window->Height/2; wr=TRUE; break; + case WIND_Width: wwidth=tag->ti_Data; wr=TRUE; break; + case WIND_InnerWidth: wwidth=tag->ti_Data+WD->wd_Window->BorderLeft+WD->wd_Window->BorderRight; wr=TRUE; break; + case WIND_RelWidth: wwidth=WD->wd_UsedScreen->Width-tag->ti_Data; wr=TRUE; break; + case WIND_Height: wheight=tag->ti_Data; wr=TRUE; break; + case WIND_InnerHeight: wheight=tag->ti_Data+WD->wd_Window->BorderTop+WD->wd_Window->BorderBottom; wr=TRUE; break; + case WIND_RelHeight: wheight=WD->wd_UsedScreen->Height-tag->ti_Data; wr=TRUE; break; + + case WIND_MouseQueue: SetMouseQueue(WD->wd_Window,tag->ti_Data); break; + case WIND_UserData: WD->wd_Window->UserData=(BYTE *)tag->ti_Data; break; + case WIND_IDCMP: ModifyIDCMP(WD->wd_Window,tag->ti_Data); break; + case WIND_MenuStrip: + if(WD->wd_MenuStrip) ClearMenuStrip(WD->wd_Window); + WD->wd_MenuStrip=(struct Menu *)tag->ti_Data; + if(WD->wd_MenuStrip) SetMenuStrip(WD->wd_Window,WD->wd_MenuStrip); + break; + case WIND_Handler: WD->wd_WindowHandler=(ULONG (*)(Object *,ULONG,APTR))tag->ti_Data; + + case WIND_Title: SetWindowTitles(WD->wd_Window,(UBYTE *)tag->ti_Data,(UBYTE *)-1); break; + case WIND_ScreenTitle: SetWindowTitles(WD->wd_Window,(UBYTE *)-1,(UBYTE *)tag->ti_Data); break; + + case WIND_Pointer: SetWindowPointer(WD->wd_Window,WA_Pointer,tag->ti_Data,WA_PointerDelay,WD->wd_PointerDelay,TAG_DONE); break; + case WIND_BusyPointer: SetWindowPointer(WD->wd_Window,WA_BusyPointer,tag->ti_Data,WA_PointerDelay,WD->wd_PointerDelay,TAG_DONE); break; + case WIND_PointerDelay: WD->wd_PointerDelay=tag->ti_Data; break; + case WIND_LockWindow: + if(tag->ti_Data && !WD->wd_Locked) + { + InitRequester(&WD->wd_Req); + Request(&WD->wd_Req,WD->wd_Window); + WD->wd_Locked=TRUE; + } + if(!tag->ti_Data && WD->wd_Locked) + { + EndRequest(&WD->wd_Req,WD->wd_Window); + WD->wd_Locked=FALSE; + } + break; + case WIND_MinWidth: minw=tag->ti_Data; wl=TRUE; break; + case WIND_MinHeight: minh=tag->ti_Data; wl=TRUE; break; + case WIND_MaxWidth: maxw=tag->ti_Data; wl=TRUE; break; + case WIND_MaxHeight: maxh=tag->ti_Data; wl=TRUE; break; + } + } + + SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(hr) SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[5],WD->wd_Window,NULL,PGA_Top,WD->wd_HorizTop,PGA_Total,WD->wd_HorizTotal,PGA_Visible,WD->wd_HorizVisible,TAG_DONE); + if(vr) SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[2],WD->wd_Window,NULL,PGA_Top,WD->wd_VertTop,PGA_Total,WD->wd_VertTotal,PGA_Visible,WD->wd_VertVisible,TAG_DONE); + if(wr) ChangeWindowBox(WD->wd_Window,wleft,wtop,wwidth,wheight); + if(wl) WindowLimits(WD->wd_Window,minw,minh,maxw,maxh); + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS WIND_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct WINDData *WD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case WIND_Window: *opg->opg_Storage = (ULONG)WD->wd_Window; break; + case WIND_MessagePort: *opg->opg_Storage = (ULONG)WD->wd_Window->UserPort; break; + case WIND_SigBit: *opg->opg_Storage = (ULONG)(1L<wd_Window->UserPort->mp_SigBit); break; + case WIND_RastPort: *opg->opg_Storage = (ULONG)WD->wd_Window->RPort; break; + case WIND_Gadgets: *opg->opg_Storage = (ULONG)WD->wd_Window->FirstGadget; break; + case WIND_MenuStrip: *opg->opg_Storage = (ULONG)WD->wd_MenuStrip; break; + case WIND_IDCMP: *opg->opg_Storage = (ULONG)WD->wd_Window->IDCMPFlags; break; + case WIND_UserData: *opg->opg_Storage = (ULONG)WD->wd_Window->UserData; break; + + case WIND_Title: *opg->opg_Storage = (ULONG)WD->wd_Window->Title; break; + case WIND_ScreenTitle: *opg->opg_Storage = (ULONG)WD->wd_Window->ScreenTitle; break; + + case WIND_VertTop: *opg->opg_Storage = (ULONG)WD->wd_VertTop; break; + case WIND_VertTotal: *opg->opg_Storage = (ULONG)WD->wd_VertTotal; break; + case WIND_VertVisible: *opg->opg_Storage = (ULONG)WD->wd_VertVisible; break; + case WIND_HorizTop: *opg->opg_Storage = (ULONG)WD->wd_HorizTop; break; + case WIND_HorizTotal: *opg->opg_Storage = (ULONG)WD->wd_HorizTotal; break; + case WIND_HorizVisible: *opg->opg_Storage = (ULONG)WD->wd_HorizVisible; break; + + case WIND_Width: *opg->opg_Storage = (ULONG)WD->wd_Window->Width; break; + case WIND_InnerWidth: *opg->opg_Storage = (ULONG)WD->wd_Window->Width-WD->wd_Window->BorderLeft-WD->wd_Window->BorderRight; break; + case WIND_RelWidth: *opg->opg_Storage = (ULONG)WD->wd_UsedScreen->Width-WD->wd_Window->Width; break; + case WIND_Height: *opg->opg_Storage = (ULONG)WD->wd_Window->Height; break; + case WIND_InnerHeight: *opg->opg_Storage = (ULONG)WD->wd_Window->Height-WD->wd_Window->BorderTop-WD->wd_Window->BorderBottom; break; + case WIND_RelHeight: *opg->opg_Storage = (ULONG)WD->wd_UsedScreen->Height-WD->wd_Window->Height; break; + + case WIND_MinWidth: *opg->opg_Storage = (ULONG)WD->wd_Window->MinWidth; break; + case WIND_MinHeight: *opg->opg_Storage = (ULONG)WD->wd_Window->MinHeight; break; + case WIND_MaxWidth: *opg->opg_Storage = (ULONG)WD->wd_Window->MaxWidth; break; + case WIND_MaxHeight: *opg->opg_Storage = (ULONG)WD->wd_Window->MaxHeight; break; + + case WIND_BorderLeft: *opg->opg_Storage = (ULONG)WD->wd_Window->BorderLeft; break; + case WIND_BorderTop: *opg->opg_Storage = (ULONG)WD->wd_Window->BorderTop; break; + case WIND_BorderRight: *opg->opg_Storage = (ULONG)WD->wd_Window->BorderRight; break; + case WIND_BorderBottom: *opg->opg_Storage = (ULONG)WD->wd_Window->BorderBottom; break; + + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS WIND_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval=0; +// struct WINDData *WD = INST_DATA( cl, o ); +// struct TagItem *tag, notify; +// struct RastPort *rp; + + retval = DoSuperMethodA(cl, o, (Msg) opu); + +/* if( opu->opu_AttrList ) + { + if(tag = FindTagItem( WIND_CurVal, opu->opu_AttrList )) + { + if( tag->ti_Data != WD->wd_CurVal) + { + WD->wd_CurVal = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } +*/ + return( retval ); +} + +ULONG SAVEDS WIND_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[3]; +// struct WINDData *WD = INST_DATA( cl, o ); + +/* WIND_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + WIND_SetTagArg(tags[1], WIND_CurVal, WD->wd_CurVal); + + if( opu->opu_AttrList == NULL ) + { + WIND_SetTagArg(tags[2], TAG_END, NULL); + } + else WIND_SetTagArg(tags[2], TAG_MORE, opu->opu_AttrList ); +*/ + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS WIND_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval; +// struct RastPort *RP = gpr->gpr_RPort; + struct WINDData *WD = INST_DATA( cl, o ); + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + + if(WD->wd_FirstGadget) + { + RefreshGList(WD->wd_FirstGadget,WD->wd_Window,NULL,-1); + GT_RefreshWindow(WD->wd_Window,NULL); + } + return( retval ); +} + +ULONG SAVEDS WIND_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct IntuiMessage *m; + struct WINDData *WD = INST_DATA( cl, o ); + + if(m=GT_GetIMsg(WD->wd_Window->UserPort)) + { + CopyMem((APTR)m,(APTR)&WD->wd_IntuiMessage,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + return( (ULONG) &WD->wd_IntuiMessage ); + } + else return NULL; +} + +ULONG SAVEDS WIND_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct IntuiMessage *im; + struct AppMessage *am; + struct WINDData *WD = INST_DATA( cl, o ); + ULONG retval=1; + ULONG (*wd_GadgetHandler)(Object *,ULONG,APTR); + + if((msg->Signals & (1L<wd_Window->UserPort->mp_SigBit)) && WD->wd_WindowHandler) + { + while(im=GT_GetIMsg(WD->wd_Window->UserPort)) + { + if((im->Class==IDCMP_MENUVERIFY) || (im->Class==IDCMP_REQVERIFY) || (im->Class==IDCMP_SIZEVERIFY)) + { + retval=WD->wd_WindowHandler(o,TYPE_INTUIMESSAGE,im); + GT_ReplyIMsg(im); + } + else + { + GT_ReplyIMsg(im); + switch(im->Class) + { + case IDCMP_IDCMPUPDATE: + switch(GetTagData(GA_ID,0,im->IAddress)) + { + case (UWORD)-1: + if(WD->wd_VertTopwd_VertTotal-WD->wd_VertVisible) + { + WD->wd_VertTop++; + SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[2],WD->wd_Window,NULL,PGA_Top,WD->wd_VertTop,TAG_DONE); + retval=WD->wd_WindowHandler(o,TYPE_VERTSCROLL,im); + } + goto end; + case (UWORD)-2: + if(WD->wd_VertTop>0) + { + WD->wd_VertTop--; + SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[2],WD->wd_Window,NULL,PGA_Top,WD->wd_VertTop,TAG_DONE); + retval=WD->wd_WindowHandler(o,TYPE_VERTSCROLL,im); + } + goto end; + case (UWORD)-3: + GetAttr(PGA_Top,WD->wd_Scroll[2],&WD->wd_VertTop); + retval=WD->wd_WindowHandler(o,TYPE_VERTSCROLL,im); + goto end; + case (UWORD)-4: + if(WD->wd_HorizTop>0) + { + WD->wd_HorizTop--; + SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[5],WD->wd_Window,NULL,PGA_Top,WD->wd_HorizTop,TAG_DONE); + retval=WD->wd_WindowHandler(o,TYPE_HORIZSCROLL,im); + } + goto end; + case (UWORD)-5: + if(WD->wd_HorizTopwd_HorizTotal-WD->wd_HorizVisible) + { + WD->wd_HorizTop++; + SetGadgetAttrs((struct Gadget *)WD->wd_Scroll[5],WD->wd_Window,NULL,PGA_Top,WD->wd_HorizTop,TAG_DONE); + retval=WD->wd_WindowHandler(o,TYPE_HORIZSCROLL,im); + } + goto end; + case (UWORD)-6: + GetAttr(PGA_Top,WD->wd_Scroll[5],&WD->wd_HorizTop); + retval=WD->wd_WindowHandler(o,TYPE_HORIZSCROLL,im); + goto end; +/* + default: // im->IAddress is taglist not gadget!!! + gtbGetGadgetAttr(GT_Handler,(Object *)im->IAddress,(ULONG *)&wd_GadgetHandler); + if(wd_GadgetHandler) + { + retval=wd_GadgetHandler((Object *)im->IAddress,((struct Gadget *)im->IAddress)->GadgetID,im); + goto end; + } + break; +*/ + } + break; + case IDCMP_MOUSEMOVE: + case IDCMP_GADGETDOWN: + case IDCMP_GADGETUP: + if(im->IAddress) + { + gtbGetGadgetAttr(GT_Handler,(Object *)im->IAddress,(ULONG *)&wd_GadgetHandler); + if(wd_GadgetHandler) + { + retval=wd_GadgetHandler((Object *)im->IAddress,((struct Gadget *)im->IAddress)->GadgetID,im); + goto end; + } + } + break; + } + retval=WD->wd_WindowHandler(o,TYPE_INTUIMESSAGE,im); +end:; + } + } + } + if(WD->wd_AppMsgPort && WD->wd_WindowHandler) + { + if(msg->Signals & (1L<wd_AppMsgPort->mp_SigBit)) + { + while(am=(struct AppMessage *)GetMsg(WD->wd_AppMsgPort)) + { + retval=WD->wd_WindowHandler(o,TYPE_APPMESSAGE,am); + ReplyMsg((struct Message *)am); + } + } + } + return retval; +} + +ULONG SAVEDS WIND_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct WINDData *WD = INST_DATA( cl, o ); + + return Wait((1L<wd_Window->UserPort->mp_SigBit)|(msg->Signals)); +} + +ULONG SAVEDS WIND_ADDMEMBER(Class *cl,Object *o,struct opMember *msg) +{ + struct WINDData *WD = INST_DATA( cl, o ); + + AddGList(WD->wd_Window,(struct Gadget *)msg->opam_Object,-1,-1,NULL); + return TRUE; +} + +ULONG SAVEDS WIND_REMMEMBER(Class *cl,Object *o,struct opMember *msg) +{ + struct WINDData *WD = INST_DATA( cl, o ); + + RemoveGadget(WD->wd_Window,(struct Gadget *)msg->opam_Object); + return TRUE; +} diff --git a/GadToolsBox/Gadgets/windowclass/window.h b/GadToolsBox/Gadgets/windowclass/window.h new file mode 100755 index 0000000..cdfec8c --- /dev/null +++ b/GadToolsBox/Gadgets/windowclass/window.h @@ -0,0 +1,100 @@ +#include +#include +#include + +#define TOOL_HORIZ 0 +#define TOOL_VERT 1 + +#define TYPE_INTUIMESSAGE 0 +#define TYPE_VERTSCROLL 1 +#define TYPE_HORIZSCROLL 2 +#define TYPE_APPMESSAGE 3 +#define TYPE_INIT 4 +#define TYPE_DELETE 5 + +#define WIND_Dummy (TAG_USER) +#define WIND_VertScroll (WIND_Dummy+0) +#define WIND_VertTop (WIND_Dummy+1) +#define WIND_VertTotal (WIND_Dummy+2) +#define WIND_VertVisible (WIND_Dummy+3) +#define WIND_HorizScroll (WIND_Dummy+4) +#define WIND_HorizTop (WIND_Dummy+5) +#define WIND_HorizTotal (WIND_Dummy+6) +#define WIND_HorizVisible (WIND_Dummy+7) +#define WIND_Left (WIND_Dummy+8) +#define WIND_RelRight (WIND_Dummy+9) +#define WIND_CenterX (WIND_Dummy+10) +#define WIND_Top (WIND_Dummy+11) +#define WIND_RelBottom (WIND_Dummy+12) +#define WIND_CenterY (WIND_Dummy+13) +#define WIND_Width (WIND_Dummy+14) +#define WIND_InnerWidth (WIND_Dummy+15) +#define WIND_RelWidth (WIND_Dummy+16) +#define WIND_Height (WIND_Dummy+17) +#define WIND_InnerHeight (WIND_Dummy+18) +#define WIND_RelHeight (WIND_Dummy+19) +#define WIND_Screen (WIND_Dummy+20) +#define WIND_PubScreen (WIND_Dummy+21) +#define WIND_PubScreenName (WIND_Dummy+22) +#define WIND_IDCMP (WIND_Dummy+23) +#define WIND_MessagePort (WIND_Dummy+24) +#define WIND_AppMessagePort (WIND_Dummy+25) +#define WIND_AppID (WIND_Dummy+26) +#define WIND_ToolDragBar (WIND_Dummy+27) +#define WIND_MenuStrip (WIND_Dummy+28) +#define WIND_Gadgets (WIND_Dummy+29) +#define WIND_LockWindow (WIND_Dummy+30) +#define WIND_Handler (WIND_Dummy+31) +#define WIND_ScreenObject (WIND_Dummy+32) + +#define WIND_Window (WIND_Dummy+100) +#define WIND_RastPort (WIND_Dummy+101) +#define WIND_BorderLeft (WIND_Dummy+102) +#define WIND_BorderTop (WIND_Dummy+103) +#define WIND_BorderRight (WIND_Dummy+104) +#define WIND_BorderBottom (WIND_Dummy+105) +#define WIND_SigBit (WIND_Dummy+106) + +#define WIND_Title WA_Title +#define WIND_SuperBitMap WA_SuperBitMap +#define WIND_MinWidth WA_MinWidth +#define WIND_MinHeight WA_MinHeight +#define WIND_MaxWidth WA_MaxWidth +#define WIND_MaxHeight WA_MaxHeight +#define WIND_SizeGadget WA_SizeGadget +#define WIND_DragBar WA_DragBar +#define WIND_DepthGadget WA_DepthGadget +#define WIND_CloseGadget WA_CloseGadget +#define WIND_Backdrop WA_Backdrop +#define WIND_ReportMouse WA_ReportMouse +#define WIND_NoCareRefresh WA_NoCareRefresh +#define WIND_Borderless WA_Borderless +#define WIND_Activate WA_Activate +#define WIND_RMBTrap WA_RMBTrap +#define WIND_SimpleRefresh WA_SimpleRefresh +#define WIND_SmartRefresh WA_SmartRefresh +#define WIND_SizeBRight WA_SizeBRight +#define WIND_SizeBBottom WA_SizeBBottom +#define WIND_GimmeZeroZero WA_GimmeZeroZero +#define WIND_NewLookMenus WA_NewLookMenus +#define WIND_ScreenTitle WA_ScreenTitle +#define WIND_AutoAdjust WA_AutoAdjust +#define WIND_PubScreenFallBack WA_PubScreenFallBack +#define WIND_Zoom WA_Zoom +#define WIND_MouseQueue WA_MouseQueue +#define WIND_RptQueue WA_RptQueue +#define WIND_BackFill WA_BackFill +#define WIND_MenuHelp WA_MenuHelp +#define WIND_NotifyDepth WA_NotifyDepth +#define WIND_Checkmark WA_Checkmark +#define WIND_AmigaKey WA_AmigaKey +#define WIND_Pointer WA_Pointer +#define WIND_BusyPointer WA_BusyPointer +#define WIND_PointerDelay WA_PointerDelay +#define WIND_HelpGroup WA_HelpGroup +#define WIND_HelpGroupWindow WA_HelpGroupWindow +#define WIND_TabletMessages WA_TabletMessages +#define WIND_SizeBRight WA_SizeBRight +#define WIND_SizeBBottom WA_SizeBBottom +#define WIND_ID GA_ID +#define WIND_UserData GA_UserData diff --git a/GadToolsBox/PlugIns/button.c b/GadToolsBox/PlugIns/button.c new file mode 100755 index 0000000..480ba74 --- /dev/null +++ b/GadToolsBox/PlugIns/button.c @@ -0,0 +1,335 @@ +/* +** Button PlugIn +*/ + +#include"includes.h" +#include"button.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_TitleType (TAG_USER+1) +// 0 - Normal, 1 - ToolBar, 2 - Image +#define OWNTAG_Toggle (TAG_USER+2) + +/* +** Default Tags +*/ + +struct TagItem ButtonTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GA_Immediate,FALSE, + TAG_DONE,0 +}; + +UBYTE ButtonTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem ButtonOwnTags[]= +{ + OWNTAG_TitleType,FALSE, + OWNTAG_Toggle,FALSE, + TAG_DONE,0 +}; + +UBYTE ButtonOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 3 +#define GSIZE_NUMOWNTAGS 2 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_BUTT_PAGES[]= +{ + &PAGES_PROPERTIES_PG_BUTT_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG BUTTON_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval=0; + + switch(msg->MethodID) + { + case OM_INIT: + retval=BUTTON_INIT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_BUTT_Flags(); + PAGES_PROPERTIES_PG_BUTT_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_BUTT_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_BUTT_PAGES[1].FirstGadget=PG_BUTT_FlagsGList; + PAGES_PROPERTIES_PG_BUTT_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L1_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_BUTT_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_BUTT_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_BUTT_Flags(); + break; + case OM_NEW: + retval=BUTTON_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=BUTTON_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=BUTTON_DELETE_Gadget(cl,o,msg); + break; + case OM_READ: + retval=BUTTON_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG BUTTON_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG BUTTON_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_BUTT_FlagsGadgets[GD_PG_BUTT_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_BUTT_FlagsGadgets[GD_PG_BUTT_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_BUTT_FlagsGadgets[GD_PG_BUTT_FLAGS_IMMEDIATE],GetTagData(GA_Immediate,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_BUTT_FlagsGadgets[GD_PG_BUTT_FLAGS_TOGGLE],GetTagData(OWNTAG_Toggle,0,ng->ng_OwnTags)); + SetMX(PropsWnd,PG_BUTT_FlagsGadgets[GD_PG_BUTT_FLAGS_TITLETYPE],GetTagData(OWNTAG_TitleType,0,ng->ng_OwnTags)); + return TRUE; +} + +ULONG BUTTON_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)ButtonTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)ButtonOwnTagsTypes, + GAOBJ_ID,BUTTON_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_BUTT_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(ButtonTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(ButtonOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=BUTTON_KIND; + gtd->g_Flags=PLACETEXT_IN; + return (ULONG)obj; + } + return FALSE; +} + +extern struct SmartBitMapIRGB ToolBarPalette[]; +extern Class *SmartBitMapClass; + +ULONG BUTTON_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + WORD x,y,w,h; + ULONG type; + struct TagItem *ti,*oti; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct Node_Image *ni; + struct GadToolsData *gtd; + struct NewGadget newg; + piObject *io; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + if((type=GetTagData(OWNTAG_TitleType,0,oti))>0) + { + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+ng->ng_X+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+ng->ng_Y+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + newg.ng_LeftEdge=x; + newg.ng_TopEdge=y; + newg.ng_Width=w; + newg.ng_Height=h; + newg.ng_GadgetText=NULL; + newg.ng_TextAttr=Font; // ZMIANA + newg.ng_GadgetID=0; + newg.ng_Flags=gtd->g_Flags; + newg.ng_VisualInfo=VisualInfo; + newg.ng_UserData=NULL; + + ng->ng_Gadget=CreateGadgetA(gtd->g_Kind,(struct Gadget *)msg->Window,&newg,ti); + if(GetTagData(OWNTAG_Toggle,0,oti)) ng->ng_Gadget->Activation|=GACT_TOGGLESELECT; + if(ng->ng_RelX) ng->ng_Gadget->Flags|=GFLG_RELRIGHT; + if(ng->ng_RelY) ng->ng_Gadget->Flags|=GFLG_RELBOTTOM; + if(ng->ng_RelWidth) ng->ng_Gadget->Flags|=GFLG_RELWIDTH; + if(ng->ng_RelHeight) ng->ng_Gadget->Flags|=GFLG_RELHEIGHT; + ng->ng_Gadget->Flags|=GFLG_GADGIMAGE|GFLG_GADGHIMAGE; + ng->ng_Gadget->Activation|=GACT_RELVERIFY; + + if((io=(piObject *)FindName(List(&GUI.gui_List_Image),gtd->g_Text)) && (!(GUI.gui_Prefs->pr_Flags&PRFLAG_FASTREDRAW))) + { + piGetAttr(io,OBJ_Node,(ULONG *)&ni); + switch(type) + { + case 1: + ng->ng_Gadget->GadgetRender=ng->ng_Gadget->SelectRender=NewObject(SmartBitMapClass,NULL,IA_Width,20,IA_Height,20,SMBM_Border,TRUE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)ni->ni_BitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE); + break; + case 2: + ng->ng_Gadget->GadgetRender=ng->ng_Gadget->SelectRender=NewObject(SmartBitMapClass,NULL,IA_Width,ni->ni_Width,SMBM_Border,FALSE,SMBM_BitMap,(ULONG)ni->ni_BitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ni->ni_CT,TAG_DONE); + break; + } + } + else + { + newg.ng_GadgetText=gtd->g_Text; + } + return (ULONG) (ng->ng_Gadget); + } + else + { + return piDoSuperMethodA(cl,o,msg); + } +} + +ULONG BUTTON_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *oti; + struct Node_Gadget *ng; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + switch(GetTagData(OWNTAG_TitleType,0,oti)) + { + case 0: + break; + case 1: + case 2: + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget) + { + if(ng->ng_Gadget->GadgetRender) DisposeObject(ng->ng_Gadget->GadgetRender); + ng->ng_Gadget->GadgetRender=ng->ng_Gadget->SelectRender=NULL; + } + ng->ng_Gadget=NULL; + break; + } + return TRUE; +} + + +int FN_PG_BUTT_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + + +int FN_PG_BUTT_FLAGS_IMMEDIATE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Immediate,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_BUTT_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_BUTT_FLAGS_TITLETYPE_Clicked( void ) +{ + struct TagItem *oti; + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_TitleType,oti)->ti_Data=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_BUTT_FLAGS_TOGGLE_Clicked( void ) +{ + struct TagItem *oti; + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_Toggle,oti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/button.h b/GadToolsBox/PlugIns/button.h new file mode 100755 index 0000000..458944c --- /dev/null +++ b/GadToolsBox/PlugIns/button.h @@ -0,0 +1,12 @@ +#include"gadtools.h" +#include"defines.h" +#include"includes.h" + +#define BUTTON_ID MAKE_ID('B','U','T','T') + +ULONG BUTTON_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG BUTTON_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG BUTTON_INIT_Gadget(piClass *,piObject *,Msg); +ULONG BUTTON_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG BUTTON_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG BUTTON_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/checkbox.c b/GadToolsBox/PlugIns/checkbox.c new file mode 100755 index 0000000..5686b4d --- /dev/null +++ b/GadToolsBox/PlugIns/checkbox.c @@ -0,0 +1,276 @@ +/* +** CheckBox PlugIn +*/ + +#include"includes.h" +#include"checkbox.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Scaled (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem CheckBoxTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GTCB_Scaled,FALSE, + GTCB_Checked,FALSE, + TAG_DONE,0 +}; + +UBYTE CheckBoxTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem CheckBoxOwnTags[]= +{ + OWNTAG_Scaled,0, + TAG_DONE,0 +}; + +UBYTE CheckBoxOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 4 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_CBOX_PAGES[]= +{ + &PAGES_PROPERTIES_PG_CBOX_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG CHECKBOX_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=CHECKBOX_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=CHECKBOX_INIT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_CBOX_Flags(); + PAGES_PROPERTIES_PG_CBOX_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_CBOX_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_CBOX_PAGES[1].FirstGadget=PG_CBOX_FlagsGList; + PAGES_PROPERTIES_PG_CBOX_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L2_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_CBOX_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_CBOX_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_CBOX_Flags(); + break; + case OM_NEW: + retval=CHECKBOX_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=CHECKBOX_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG CHECKBOX_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG CHECKBOX_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=CHECKBOX_WIDTH; + ng->ng_Height=CHECKBOX_HEIGHT; + return TRUE; +} + +ULONG CHECKBOX_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(ng->ng_OwnTags[0].ti_Tag==1L) ng->ng_OwnTags[0].ti_Tag=OWNTAG_Scaled; + + piDoSuperMethodA(cl,o,msg); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_CBOX_FlagsGadgets[GD_PG_CBOX_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_CBOX_FlagsGadgets[GD_PG_CBOX_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_CBOX_FlagsGadgets[GD_PG_CBOX_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_CBOX_FlagsGadgets[GD_PG_CBOX_FLAGS_CHECKED],GetTagData(GTCB_Checked,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_CBOX_FlagsGadgets[GD_PG_CBOX_FLAGS_SCALED],GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + if(GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)==1) DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],PropsWnd,FALSE); + else DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],PropsWnd,TRUE); + if(GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)==1) DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],PropsWnd,FALSE); + else DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],PropsWnd,TRUE); + return TRUE; +} + +ULONG CHECKBOX_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)CheckBoxTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)CheckBoxOwnTagsTypes, + GAOBJ_ID,CHECKBOX_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_CBOX_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(CheckBoxTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(CheckBoxOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=CHECKBOX_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_CBOX_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CBOX_FLAGS_CHECKED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTCB_Checked,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CBOX_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CBOX_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CBOX_FLAGS_SCALED_Clicked( void ) +{ + struct Window *wnd=NULL; + ULONG active; + struct TagItem *ti,*oti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_Scaled,oti)->ti_Data=PropertiesMsg.Code; + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + if(active==0) wnd=PropertiesWnd; + switch(PropertiesMsg.Code) + { + case 0: + FindTagItem(GTCB_Scaled,ti)->ti_Data=FALSE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,TRUE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,TRUE); + break; + case 1: + FindTagItem(GTCB_Scaled,ti)->ti_Data=TRUE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,FALSE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,FALSE); + break; + case 2: + FindTagItem(GTCB_Scaled,ti)->ti_Data=TRUE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,TRUE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,TRUE); + break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/checkbox.h b/GadToolsBox/PlugIns/checkbox.h new file mode 100755 index 0000000..57c817d --- /dev/null +++ b/GadToolsBox/PlugIns/checkbox.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define CHECKBOX_ID MAKE_ID('C','B','O','X') + +ULONG CHECKBOX_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG CHECKBOX_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG CHECKBOX_INIT_Gadget(piClass *,piObject *,Msg); +ULONG CHECKBOX_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG CHECKBOX_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/colorwheel.c b/GadToolsBox/PlugIns/colorwheel.c new file mode 100755 index 0000000..49fe05c --- /dev/null +++ b/GadToolsBox/PlugIns/colorwheel.c @@ -0,0 +1,280 @@ +/* +** ColorWheel PlugIn +*/ + +#include"includes.h" +#include"colorwheel.h" + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem ColorWheelTags[]= +{ + GA_Disabled,FALSE, + TAG_IGNORE,NULL, // WHEEL_Donation,NULL, + WHEEL_MaxPens,1, + GA_FollowMouse,FALSE, + WHEEL_Abbrv,NULL, + WHEEL_BevelBox,FALSE, + WHEEL_Screen,NULL, + TAG_DONE,0 +}; + +UBYTE ColorWheelTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_DONE, +}; + +struct TagItem ColorWheelOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE ColorWheelOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_CWHL_PAGES[]= +{ + &PAGES_PROPERTIES_PG_CWHL_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG COLORWHEEL_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=COLORWHEEL_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=COLORWHEEL_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=COLORWHEEL_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_CWHL_Flags(); + PAGES_PROPERTIES_PG_CWHL_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_CWHL_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_CWHL_PAGES[1].FirstGadget=PG_CWHL_FlagsGList; + PAGES_PROPERTIES_PG_CWHL_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L3_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_CWHL_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_CWHL_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_CWHL_Flags(); + break; + case OM_NEW: + retval=COLORWHEEL_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=COLORWHEEL_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=COLORWHEEL_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=COLORWHEEL_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG COLORWHEEL_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + piDoSuperMethodA(cl,o,msg); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_FOLLOWMOUSE],GetTagData(GA_FollowMouse,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_BEVELBOX],GetTagData(WHEEL_BevelBox,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_MAXPENS],GetTagData(WHEEL_MaxPens,1,ng->ng_Tags)); + SetString(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_ABBRV],GetTagData(WHEEL_Abbrv,0,ng->ng_Tags)); +// SetString(PropsWnd,PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_GRADIENTSLIDER],GetTagData(OWNTAG_GradientSlider,0,ng->ng_OwnTags)); + return TRUE; +} + +ULONG COLORWHEEL_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + piDoSuperMethodA(cl,o,msg); + +// strcpy((char *)FindTagItem(OWNTAG_GradientSlider,ng->ng_OwnTags)->ti_Data,GetString(PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_GRADIENTSLIDER])); + strcpy((char *)FindTagItem(WHEEL_Abbrv,ng->ng_Tags)->ti_Data,GetString(PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_ABBRV])); + FindTagItem(WHEEL_MaxPens,ng->ng_Tags)->ti_Data=GetInteger(PG_CWHL_FlagsGadgets[GD_PG_CWHL_FLAGS_MAXPENS]); + return TRUE; +} + +ULONG COLORWHEEL_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=100; + ng->ng_Height=100; + return TRUE; +} + +ULONG COLORWHEEL_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)ColorWheelTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)ColorWheelOwnTagsTypes, + GAOBJ_ID,COLORWHEEL_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_CWHL_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(ColorWheelTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(ColorWheelOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + FindTagItem(WHEEL_Abbrv,ng->ng_Tags)->ti_Data=(ULONG) MyAllocVec(7,MEMF_PUBLIC|MEMF_CLEAR); + strcpy((char *)FindTagItem(WHEEL_Abbrv,ng->ng_Tags)->ti_Data,"GCBMRY"); + return (ULONG)obj; + } + return FALSE; +} + +ULONG COLORWHEEL_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + MyFreeVec((APTR)FindTagItem(WHEEL_Abbrv,ti)->ti_Data); + return piDoSuperMethodA(cl,o,msg); +} + +ULONG COLORWHEEL_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + FindTagItem(WHEEL_Screen,ti)->ti_Data=(ULONG)Scr; + return (ULONG) (ng->ng_Gadget=NewObject(NULL, "colorwheel.gadget", + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG COLORWHEEL_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_CWHL_FLAGS_ABBRV_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CWHL_FLAGS_GSLIDER_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CWHL_FLAGS_MAXPENS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CWHL_FLAGS_FOLLOWMOUSE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_FollowMouse,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CWHL_FLAGS_BEVELBOX_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(WHEEL_BevelBox,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CWHL_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/colorwheel.h b/GadToolsBox/PlugIns/colorwheel.h new file mode 100755 index 0000000..132ed53 --- /dev/null +++ b/GadToolsBox/PlugIns/colorwheel.h @@ -0,0 +1,12 @@ +#include"defines.h" + +#define COLORWHEEL_ID MAKE_ID('C','W','H','L') + +ULONG COLORWHEEL_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG COLORWHEEL_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG COLORWHEEL_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG COLORWHEEL_INIT_Gadget(piClass *,piObject *,Msg); +ULONG COLORWHEEL_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG COLORWHEEL_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG COLORWHEEL_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG COLORWHEEL_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/cycle.c b/GadToolsBox/PlugIns/cycle.c new file mode 100755 index 0000000..73123e0 --- /dev/null +++ b/GadToolsBox/PlugIns/cycle.c @@ -0,0 +1,321 @@ +/* +** Cycle PlugIn +*/ + +#include"includes.h" +#include"cycle.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Labels (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem CycleTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GTCY_Labels,NULL, + GTCY_Active,0, + TAG_DONE,0 +}; + +UBYTE CycleTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem CycleOwnTags[]= +{ + OWNTAG_Labels,NULL, + TAG_DONE,0 +}; + +UBYTE CycleOwnTagsTypes[]= +{ + TAGTYPE_LIST,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 4 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_CYCE_PAGES[]= +{ + &PAGES_PROPERTIES_PG_CYCE_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_CYCE_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG CYCLE_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=CYCLE_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=CYCLE_INIT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_CYCE_Flags(); + PAGES_PROPERTIES_PG_CYCE_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_CYCE_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_CYCE_PAGES[1].FirstGadget=PG_CYCE_FlagsGList; + PAGES_PROPERTIES_PG_CYCE_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L4_GAD); + PAGES_PROPERTIES_PG_CYCE_PAGES[2].FirstGadget=PG_ListsGList; + PAGES_PROPERTIES_PG_CYCE_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L5_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_CYCE_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_CYCE_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_CYCE_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_CYCE_Flags(); + break; + case OM_NEW: + retval=CYCLE_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=CYCLE_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=CYCLE_CREATE_Gadget(cl,o,msg); + break; + case OM_DELETE: + retval=CYCLE_DELETE_Gadget(cl,o,msg); + break; + case OM_READ: + retval=CYCLE_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG CYCLE_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + struct Node *node; + int a; + UWORD numlabels,lablen; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTCY_Labels: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<4;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&numlabels,sizeof(UWORD)); + for(a=0;aIFFh,(APTR)&lablen,sizeof(UWORD)); + if(sti=FindTagItem(OWNTAG_Labels,oti)) + if(node=(struct Node *)MyAllocVec(sizeof(struct Node),MEMF_ANY)) + if(node->ln_Name=MyAllocVec(lablen,MEMF_ANY)) + { + ReadChunkBytes(msg->IFFh,(APTR)node->ln_Name,lablen); + AddTail(List(sti->ti_Data),node); + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG CYCLE_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct Node *n; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + if(n=MyAllocVec(sizeof(struct Node),MEMF_ANY)) + { + if(n->ln_Name=MyAllocVec(8,MEMF_ANY)) + { + strcpy(n->ln_Name,""); + AddTail(List(FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data),n); + } + else MyFreeVec(n); + } + return TRUE; +} + +ULONG CYCLE_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_CYCE_FlagsGadgets[GD_PG_CYCE_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_CYCE_FlagsGadgets[GD_PG_CYCE_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_CYCE_FlagsGadgets[GD_PG_CYCE_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetListView(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],GetTagData(OWNTAG_Labels,0,ng->ng_OwnTags)); + SetInteger(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_ACTIVE],GetTagData(GTCY_Active,0,ng->ng_Tags)); + SetString(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_EDIT],""); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropsWnd,TRUE); + return TRUE; +} + +ULONG CYCLE_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)CycleTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)CycleOwnTagsTypes, + GAOBJ_ID,CYCLE_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_CYCE_PAGES, + GAOBJLIST_List,0, + GAOBJLIST_Active,3, + GAOBJLIST_Tags,1, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(CycleTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(CycleOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=CYCLE_KIND; + FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_PUBLIC); + NewList(List(FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data)); + return (ULONG)obj; + } + return FALSE; +} + +ULONG CYCLE_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct List *l; + struct Node *n; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&ti); + if(l=(struct List *)FindTagItem(OWNTAG_Labels,ti)->ti_Data) + { + while(n=RemTail(l)) + { + if(n->ln_Name) MyFreeVec(n->ln_Name); + MyFreeVec(n); + } + MyFreeVec(l); + } + return piDoSuperMethodA(cl,o,msg); +} + +ULONG CYCLE_CREATE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG a; + STRPTR *tab; + struct TagItem *ti,*oti; + struct Node *n; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + + for(a=0,n=GetHead(List(GetTagData(OWNTAG_Labels,0,oti)));GetSucc(n);n=GetSucc(n),a++); + + FindTagItem(GTCY_Labels,ti)->ti_Data=(ULONG)MyAllocVec((a+1)*sizeof(STRPTR),MEMF_PUBLIC|MEMF_CLEAR); + tab=(STRPTR *)FindTagItem(GTCY_Labels,ti)->ti_Data; + for(a=0,n=GetHead(List(GetTagData(OWNTAG_Labels,0,oti)));GetSucc(n);n=GetSucc(n),a++) tab[a]=n->ln_Name; + tab[a]=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +ULONG CYCLE_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + APTR tab; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + + tab=(APTR)GetTagData(GTCY_Labels,0,ti); + if(tab) MyFreeVec(tab); + FindTagItem(GTCY_Labels,ti)->ti_Data=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_CYCE_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CYCE_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_CYCE_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/cycle.h b/GadToolsBox/PlugIns/cycle.h new file mode 100755 index 0000000..fa85385 --- /dev/null +++ b/GadToolsBox/PlugIns/cycle.h @@ -0,0 +1,12 @@ +#include"defines.h" + +#define CYCLE_ID MAKE_ID('C','Y','C','E') + +ULONG CYCLE_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG CYCLE_INIT_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_CREATE_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG CYCLE_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/datatype.c b/GadToolsBox/PlugIns/datatype.c new file mode 100755 index 0000000..f7c1432 --- /dev/null +++ b/GadToolsBox/PlugIns/datatype.c @@ -0,0 +1,309 @@ +/* +** DataType PlugIn +*/ + +#include"includes.h" +#include"datatype.h" +#include + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Object (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem DataTypeTags[]= +{ + GA_Disabled,FALSE, + DTA_SourceType,DTST_FILE, + OBP_Precision,PRECISION_EXACT, + PDTA_Screen,NULL, + PDTA_Remap,TRUE, + //DTA_Handle,NULL, + TAG_DONE,0 +}; + +UBYTE DataTypeTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem DataTypeOwnTags[]= +{ + OWNTAG_Object,NULL, + TAG_DONE,0 +}; + +UBYTE DataTypeOwnTagsTypes[]= +{ + TAGTYPE_TEXT,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 5 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_DTYP_PAGES[]= +{ + &PAGES_PROPERTIES_PG_DTYP_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG DATATYPE_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=DATATYPE_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=DATATYPE_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_DTYP_Flags(); + PAGES_PROPERTIES_PG_DTYP_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_DTYP_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_DTYP_PAGES[1].FirstGadget=PG_DTYP_FlagsGList; + PAGES_PROPERTIES_PG_DTYP_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L6_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_DTYP_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_DTYP_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_DTYP_Flags(); + break; + case OM_NEW: + retval=DATATYPE_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=DATATYPE_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=DATATYPE_DELETE_Gadget(cl,o,msg); + break; + case OM_RENDER: + retval=DATATYPE_RENDER_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG DATATYPE_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_DTYP_FlagsGadgets[GD_PG_DTYP_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetString(PropsWnd,PG_DTYP_FlagsGadgets[GD_PG_DTYP_FLAGS_OBJECT],GetTagData(OWNTAG_Object,0,ng->ng_OwnTags)); + return TRUE; +} + +ULONG DATATYPE_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + piDoSuperMethodA(cl,o,msg); + + if(FindTagItem(OWNTAG_Object,ng->ng_OwnTags)->ti_Data) MyFreeVec((APTR)FindTagItem(OWNTAG_Object,ng->ng_OwnTags)->ti_Data); + FindTagItem(OWNTAG_Object,ng->ng_OwnTags)->ti_Data=NULL; + if(FindTagItem(OWNTAG_Object,ng->ng_OwnTags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_DTYP_FlagsGadgets[GD_PG_DTYP_FLAGS_OBJECT]))+1,MEMF_PUBLIC)) + strcpy((char *)FindTagItem(OWNTAG_Object,ng->ng_OwnTags)->ti_Data,GetString(PG_DTYP_FlagsGadgets[GD_PG_DTYP_FLAGS_OBJECT])); + return TRUE; +} + +ULONG DATATYPE_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)DataTypeTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)DataTypeOwnTagsTypes, + GAOBJ_ID,DATATYPE_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_DTYP_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(DataTypeTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(DataTypeOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG DATATYPE_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti,*oti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + FindTagItem(PDTA_Screen,ti)->ti_Data=(ULONG)Scr; + + return (ULONG) (ng->ng_Gadget=(struct Gadget *)NewDTObject((APTR)GetTagData(OWNTAG_Object,0,oti), + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID, 0, + TAG_MORE,ti)); +} + +ULONG DATATYPE_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveDTObject(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,(Object *)ng->ng_Gadget); + if(ng->ng_Gadget) DisposeDTObject((Object *)ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +extern DrawRect(struct RastPort *,UWORD,UWORD,BOOL); + +ULONG DATATYPE_RENDER_Gadget(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + struct Node_Gadget *ng; + struct Node_Window *nw; + BOOL fill=FALSE; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[SHADOWPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + Move(nw->nw_Window->RPort,x,y); + Draw(nw->nw_Window->RPort,x+w,y); + Draw(nw->nw_Window->RPort,x+w,y+h); + Draw(nw->nw_Window->RPort,x,y+h); + Draw(nw->nw_Window->RPort,x,y); + Draw(nw->nw_Window->RPort,x+w,y+h); + Move(nw->nw_Window->RPort,x+w,y); + Draw(nw->nw_Window->RPort,x,y+h); + Move(nw->nw_Window->RPort,x+10,y+h-10); + Text(nw->nw_Window->RPort,"DT Obj",5); + + if(ng->ng_Selected && GUI.gui_Mode==MODE_GADGET) + { + SetAPen(nw->nw_Window->RPort,1); + SetDrMd(nw->nw_Window->RPort,COMPLEMENT); + if(CurrentGadget==o) fill=TRUE; + DrawRect(nw->nw_Window->RPort,x,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+(h/2)-2,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+(h/2)-2,fill); + } + return TRUE; +} + +int FN_PG_DTYP_FLAGS_OBJECT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_DTYP_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +/* +int FN_PG_DTYP_FLAGS_TYPE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(DTA_SourceType,ti)->ti_Data=DTST_FILE; break; + case 1: FindTagItem(DTA_SourceType,ti)->ti_Data=DTST_CLIPBOARD; break; + case 2: FindTagItem(DTA_SourceType,ti)->ti_Data=DTST_RAM; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} +*/ + +int FN_PG_DTYP_FLAGS_OK_Clicked( void ) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&ti); + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); +// strcpy(ng->ng_Label,GetString(PropertiesGadgets[GD_PG_DTYP_FLAGS_LABEL])); +// if(FindTagItem(OWNTAG_Object,ti)->ti_Data) MyFreeVec((APTR)FindTagItem(OWNTAG_Object,ti)->ti_Data); +// FindTagItem(OWNTAG_Object,ti)->ti_Data=NULL; +// if(FindTagItem(OWNTAG_Object,ti)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PropertiesGadgets[GD_PG_DTYP_FLAGS_OBJECT]))+1,MEMF_PUBLIC)) +// strcpy((char *)FindTagItem(OWNTAG_Object,ti)->ti_Data,GetString(PropertiesGadgets[GD_PG_DTYP_FLAGS_OBJECT])); + return 2; +} diff --git a/GadToolsBox/PlugIns/datatype.h b/GadToolsBox/PlugIns/datatype.h new file mode 100755 index 0000000..6a90374 --- /dev/null +++ b/GadToolsBox/PlugIns/datatype.h @@ -0,0 +1,11 @@ +#include"defines.h" + +#define DATATYPE_ID MAKE_ID('D','T','Y','P') + +ULONG DATATYPE_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG DATATYPE_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG DATATYPE_INIT_Gadget(piClass *,piObject *,Msg); +ULONG DATATYPE_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG DATATYPE_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG DATATYPE_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG DATATYPE_RENDER_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/gradientslider.c b/GadToolsBox/PlugIns/gradientslider.c new file mode 100755 index 0000000..e101c66 --- /dev/null +++ b/GadToolsBox/PlugIns/gradientslider.c @@ -0,0 +1,323 @@ +/* +** GradientSlider PlugIn +*/ + +#include"includes.h" +#include"gradientslider.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Pens (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem GradientSliderTags[]= +{ + GA_Disabled,FALSE, + GRAD_MaxVal,0xffff, + GRAD_CurVal,0, + GRAD_SkipVal,0x1111, + GRAD_KnobPixels,5, + GRAD_PenArray,NULL, + PGA_Freedom,LORIENT_HORIZ, + TAG_DONE,0 +}; + +UBYTE GradientSliderTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem GradientSliderOwnTags[]= +{ + OWNTAG_Pens,0, + TAG_DONE,0 +}; + +UBYTE GradientSliderOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_GRSL_PAGES[]= +{ + &PAGES_PROPERTIES_PG_GRSL_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG GRADIENTSLIDER_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=GRADIENTSLIDER_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=GRADIENTSLIDER_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_GRSL_Flags(); + PAGES_PROPERTIES_PG_GRSL_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_GRSL_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_GRSL_PAGES[1].FirstGadget=PG_GRSL_FlagsGList; + PAGES_PROPERTIES_PG_GRSL_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L7_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_GRSL_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_GRSL_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_GRSL_Flags(); + break; + case OM_NEW: + retval=GRADIENTSLIDER_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=GRADIENTSLIDER_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=GRADIENTSLIDER_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG GRADIENTSLIDER_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_MAXVAL],GetTagData(GRAD_MaxVal,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_CURVAL],GetTagData(GRAD_CurVal,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_SKIPVAL],GetTagData(GRAD_SkipVal,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_KNOBPIXELS],GetTagData(GRAD_KnobPixels,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_PENS],GetTagData(OWNTAG_Pens,0,ng->ng_OwnTags)); + return TRUE; +} + +ULONG GRADIENTSLIDER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GRAD_CurVal,ng->ng_Tags)->ti_Data=GetInteger(PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_CURVAL]); + FindTagItem(GRAD_SkipVal,ng->ng_Tags)->ti_Data=GetInteger(PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_SKIPVAL]); + FindTagItem(GRAD_MaxVal,ng->ng_Tags)->ti_Data=GetInteger(PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_MAXVAL]); + FindTagItem(GRAD_KnobPixels,ng->ng_Tags)->ti_Data=GetInteger(PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_KNOBPIXELS]); + FindTagItem(OWNTAG_Pens,ng->ng_OwnTags)->ti_Data=GetInteger(PG_GRSL_FlagsGadgets[GD_PG_GRSL_FLAGS_PENS]); + return TRUE; +} + +ULONG GRADIENTSLIDER_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)GradientSliderTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)GradientSliderOwnTagsTypes, + GAOBJ_ID,GRADIENTSLIDER_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_GRSL_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(GradientSliderTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(GradientSliderOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG GRADIENTSLIDER_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti,*oti; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct ColorWheelRGB rgb; + struct ColorWheelHSB hsb; + ULONG pens,a; + WORD *penarray; + WORD x,y,w,h; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + rgb.cw_Red=0; + rgb.cw_Green=0; + rgb.cw_Blue=0; + ConvertRGBToHSB(&rgb,&hsb); + hsb.cw_Brightness = 0xffffffff; + pens=GetTagData(OWNTAG_Pens,0,oti); + if(pens>0 && pens<(2<BitMap.Depth)) + { + if(FindTagItem(GRAD_PenArray,ti)->ti_Data=(ULONG)MyAllocVec(pens*2+2,MEMF_ANY)) + { + penarray=(WORD *)GetTagData(GRAD_PenArray,0,ti); + for(a=0;aViewPort.ColorMap,-1,rgb.cw_Red,rgb.cw_Green,rgb.cw_Blue,PEN_EXCLUSIVE); + if(penarray[a]==-1) + { + MyFreeVec(penarray); + FindTagItem(GRAD_PenArray,ti)->ti_Data=NULL; + penarray=NULL; + break; + } + } + if(penarray) penarray[pens]=~0; + } + } + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(NULL, "gradientslider.gadget", + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID, 0, + TAG_MORE,ti)); +} + +ULONG GRADIENTSLIDER_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti,*oti; + struct Node_Gadget *ng; + WORD *penarray; + ULONG pens,a; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + + penarray=(WORD *)GetTagData(GRAD_PenArray,0,ti); + pens=GetTagData(OWNTAG_Pens,0,oti); + if(penarray) + { + for(a=0;aViewPort.ColorMap,penarray[a]); + } + MyFreeVec(penarray); + FindTagItem(GRAD_PenArray,ti)->ti_Data=NULL; + } + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_GRSL_FLAGS_MAXVAL_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_CURVAL_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_SKIPVAL_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_PENS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_KNOBPIXELS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_FREEDOM_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_HORIZ; break; + case 1: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_VERT; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_GRSL_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/gradientslider.h b/GadToolsBox/PlugIns/gradientslider.h new file mode 100755 index 0000000..b57f124 --- /dev/null +++ b/GadToolsBox/PlugIns/gradientslider.h @@ -0,0 +1,10 @@ +#include"defines.h" + +#define GRADIENTSLIDER_ID MAKE_ID('G','R','S','L') + +ULONG GRADIENTSLIDER_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG GRADIENTSLIDER_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG GRADIENTSLIDER_INIT_Gadget(piClass *,piObject *,Msg); +ULONG GRADIENTSLIDER_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG GRADIENTSLIDER_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG GRADIENTSLIDER_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/integer.c b/GadToolsBox/PlugIns/integer.c new file mode 100755 index 0000000..f57f52c --- /dev/null +++ b/GadToolsBox/PlugIns/integer.c @@ -0,0 +1,300 @@ +/* +** Integer PlugIn +*/ + +#include"includes.h" +#include"integer.h" + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem IntegerTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GA_TabCycle,FALSE, + STRINGA_ReplaceMode,FALSE, + STRINGA_ExitHelp,FALSE, + STRINGA_Justification,GACT_STRINGLEFT, + GTIN_Number,0, + GTIN_MaxChars,0, + TAG_DONE,0 +}; + +UBYTE IntegerTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem IntegerOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE IntegerOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 8 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_INTR_PAGES[]= +{ + &PAGES_PROPERTIES_PG_INTR_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_INTR_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG INTEGER_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=INTEGER_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=INTEGER_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_INTR_Flags(); + OpenWindow_PG_INTR_Var(); + PAGES_PROPERTIES_PG_INTR_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_INTR_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_INTR_PAGES[1].FirstGadget=PG_INTR_FlagsGList; + PAGES_PROPERTIES_PG_INTR_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L8_GAD); + PAGES_PROPERTIES_PG_INTR_PAGES[2].FirstGadget=PG_INTR_VarGList; + PAGES_PROPERTIES_PG_INTR_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L9_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_INTR_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_INTR_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_INTR_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_INTR_Var(); + CloseWindow_PG_INTR_Flags(); + break; + case OM_NEW: + retval=INTEGER_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=INTEGER_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG INTEGER_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG INTEGER_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_EXITHELP],GetTagData(STRINGA_ExitHelp,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_REPLACEMODE],GetTagData(STRINGA_ReplaceMode,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_INTR_FlagsGadgets[GD_PG_INTR_FLAGS_TABCYCLE],GetTagData(GA_TabCycle,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PG_INTR_VarGadgets[GD_PG_INTR_VAR_NUMBER],GetTagData(GTIN_Number,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_INTR_VarGadgets[GD_PG_INTR_VAR_MAXCHARS],GetTagData(GTIN_MaxChars,0,ng->ng_Tags)); + switch(GetTagData(STRINGA_Justification,0,ng->ng_Tags)) + { + case GACT_STRINGLEFT: SetCycle(PropsWnd,PG_INTR_VarGadgets[GD_PG_INTR_VAR_JUSTIFICATION],0); break; + case GACT_STRINGRIGHT: SetCycle(PropsWnd,PG_INTR_VarGadgets[GD_PG_INTR_VAR_JUSTIFICATION],1); break; + case GACT_STRINGCENTER: SetCycle(PropsWnd,PG_INTR_VarGadgets[GD_PG_INTR_VAR_JUSTIFICATION],2); break; + } + return TRUE; +} + +ULONG INTEGER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GTIN_Number,ng->ng_Tags)->ti_Data=GetInteger(PG_INTR_VarGadgets[GD_PG_INTR_VAR_NUMBER]); + FindTagItem(GTIN_MaxChars,ng->ng_Tags)->ti_Data=GetInteger(PG_INTR_VarGadgets[GD_PG_INTR_VAR_MAXCHARS]); + return TRUE; +} + +ULONG INTEGER_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)IntegerTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)IntegerOwnTagsTypes, + GAOBJ_ID,INTEGER_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_INTR_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(IntegerTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(IntegerOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=INTEGER_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_INTR_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_FLAGS_EXITHELP_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(STRINGA_ExitHelp,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_VAR_JUSTIFICATION_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGLEFT; break; + case 1: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGRIGHT; break; + case 2: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGCENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_FLAGS_REPLACEMODE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(STRINGA_ReplaceMode,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_FLAGS_TABCYCLE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_TabCycle,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_VAR_NUMBER_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_INTR_VAR_MAXCHARS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/integer.h b/GadToolsBox/PlugIns/integer.h new file mode 100755 index 0000000..ee1750c --- /dev/null +++ b/GadToolsBox/PlugIns/integer.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define INTEGER_ID MAKE_ID('I','N','T','R') + +ULONG INTEGER_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG INTEGER_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG INTEGER_INIT_Gadget(piClass *,piObject *,Msg); +ULONG INTEGER_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG INTEGER_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/listview.c b/GadToolsBox/PlugIns/listview.c new file mode 100755 index 0000000..4a80c07 --- /dev/null +++ b/GadToolsBox/PlugIns/listview.c @@ -0,0 +1,357 @@ +/* +** ListView PlugIn +*/ + +#include"includes.h" +#include"listview.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Arrows (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem ListViewTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + TAG_IGNORE,NULL, //GTLV_ShowSelected,FALSE, + GA_Disabled,FALSE, + GTLV_Labels,NULL, + GTLV_ReadOnly,FALSE, + GTLV_ScrollWidth,16, + LAYOUTA_Spacing,0, + TAG_DONE,0 +}; + +UBYTE ListViewTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_LIST,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem ListViewOwnTags[]= +{ + OWNTAG_Arrows, 0, + TAG_DONE,0 +}; + +UBYTE ListViewOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_LVIE_PAGES[]= +{ + &PAGES_PROPERTIES_PG_LVIE_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_LVIE_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG LISTVIEW_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=LISTVIEW_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=LISTVIEW_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=LISTVIEW_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_LVIE_Flags(); + PAGES_PROPERTIES_PG_LVIE_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_LVIE_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_LVIE_PAGES[1].FirstGadget=PG_LVIE_FlagsGList; + PAGES_PROPERTIES_PG_LVIE_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L10_GAD); + PAGES_PROPERTIES_PG_LVIE_PAGES[2].FirstGadget=PG_ListsGList; + PAGES_PROPERTIES_PG_LVIE_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L5_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_LVIE_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_LVIE_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_LVIE_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_LVIE_Flags(); + break; + case OM_NEW: + retval=LISTVIEW_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=LISTVIEW_DISPOSE_Gadget(cl,o,msg); + break; + case OM_READ: + retval=LISTVIEW_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG LISTVIEW_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,tag,*sti; + struct Node_Gadget *ng; + struct Node *node; + int a; + UWORD numlabels,lablen; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTLV_Labels: break; + case GTLV_ShowSelected: + ti[1].ti_Tag=GTLV_ShowSelected; + ti[1].ti_Data=NULL; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<6;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&numlabels,sizeof(UWORD)); + for(a=0;aIFFh,(APTR)&lablen,sizeof(UWORD)); + if(sti=FindTagItem(GTLV_Labels,ti)) + if(node=(struct Node *)MyAllocVec(sizeof(struct Node),MEMF_ANY)) + if(node->ln_Name=MyAllocVec(lablen,MEMF_ANY)) + { + ReadChunkBytes(msg->IFFh,(APTR)node->ln_Name,lablen); + AddTail(List(sti->ti_Data),node); + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG LISTVIEW_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_SPACING],GetTagData(LAYOUTA_Spacing,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS],GetTagData(GTLV_ScrollWidth,0,ng->ng_Tags)); + + SetCycle(PropsWnd,PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS_SEL],GetTagData(OWNTAG_Arrows,0,ng->ng_OwnTags)); + if(GetTagData(OWNTAG_Arrows,0,ng->ng_OwnTags)==1) DisableGadget(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS],PropsWnd,FALSE); + else DisableGadget(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS],PropsWnd,TRUE); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetListView(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],GetTagData(GTLV_Labels,0,ng->ng_Tags)); +// SetInteger(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_ACTIVE],GetTagData(GTLV_Active,0,ng->ng_Tags)); + SetString(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_EDIT],""); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropsWnd,TRUE); + return TRUE; +} + +ULONG LISTVIEW_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(LAYOUTA_Spacing,ng->ng_Tags)->ti_Data=GetInteger(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_SPACING]); + FindTagItem(GTLV_ScrollWidth,ng->ng_Tags)->ti_Data=GetInteger(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS]); + + return TRUE; +} + +ULONG LISTVIEW_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=100; + ng->ng_Height=100; + return TRUE; +} + +ULONG LISTVIEW_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)ListViewTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)ListViewOwnTagsTypes, + GAOBJ_ID,LISTVIEW_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_LVIE_PAGES, + GAOBJLIST_List,3, + GAOBJLIST_Active,0, + GAOBJLIST_Tags,0, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(ListViewTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(ListViewOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + FindTagItem(GTLV_Labels,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_PUBLIC); + NewList(List(FindTagItem(GTLV_Labels,ng->ng_Tags)->ti_Data)); + gtd->g_Kind=LISTVIEW_KIND; + return (ULONG)obj; + } + return FALSE; +} + +ULONG LISTVIEW_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct List *l; + struct Node *n; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + l=(struct List *)FindTagItem(GTLV_Labels,ti)->ti_Data; + while(n=RemTail(l)) + { + if(n->ln_Name) MyFreeVec(n->ln_Name); + MyFreeVec(n); + } + MyFreeVec(l); + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_LVIE_FLAGS_SPACING_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_ARROWS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_SHOWSELECTED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[1].ti_Tag=PropertiesMsg.Code?GTLV_ShowSelected:TAG_IGNORE; + ti[1].ti_Data=NULL; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_READONLY_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTLV_ReadOnly,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LVIE_FLAGS_ARROWS_SEL_Clicked( void ) +{ + struct TagItem *ti,*oti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_Arrows,oti)->ti_Data=PropertiesMsg.Code; + switch(PropertiesMsg.Code) + { + case 1: + DisableGadget(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS],PropertiesWnd,FALSE); + break; + case 2: + DisableGadget(PG_LVIE_FlagsGadgets[GD_PG_LVIE_FLAGS_ARROWS],PropertiesWnd,TRUE); + break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/listview.h b/GadToolsBox/PlugIns/listview.h new file mode 100755 index 0000000..352dca4 --- /dev/null +++ b/GadToolsBox/PlugIns/listview.h @@ -0,0 +1,11 @@ +#include"defines.h" + +#define LISTVIEW_ID MAKE_ID('L','V','I','E') + +ULONG LISTVIEW_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG LISTVIEW_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG LISTVIEW_INIT_Gadget(piClass *,piObject *,Msg); +ULONG LISTVIEW_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG LISTVIEW_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG LISTVIEW_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG LISTVIEW_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/mx.c b/GadToolsBox/PlugIns/mx.c new file mode 100755 index 0000000..e78c00d --- /dev/null +++ b/GadToolsBox/PlugIns/mx.c @@ -0,0 +1,415 @@ +/* +** MX PlugIn +*/ + +#include"includes.h" +#include"mx.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Labels (TAG_USER+1) +#define OWNTAG_Scaled (TAG_USER+2) + +/* +** Default Tags +*/ + +struct TagItem MXTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GTMX_Labels,NULL, + GTMX_Active,0, + GTMX_Spacing,0, + GTMX_Scaled,FALSE, + GTMX_TitlePlace,PLACETEXT_LEFT, + TAG_DONE,0 +}; + +UBYTE MXTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem MXOwnTags[]= +{ + OWNTAG_Labels,NULL, + OWNTAG_Scaled,FALSE, + TAG_DONE,0 +}; + +UBYTE MXOwnTagsTypes[]= +{ + TAGTYPE_LIST,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 2 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_MX_PAGES[]= +{ + &PAGES_PROPERTIES_PG_MX_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_MX_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG MX_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=MX_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=MX_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=MX_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_MX_Flags(); + PAGES_PROPERTIES_PG_MX_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_MX_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_MX_PAGES[1].FirstGadget=PG_MX_FlagsGList; + PAGES_PROPERTIES_PG_MX_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L11_GAD); + PAGES_PROPERTIES_PG_MX_PAGES[2].FirstGadget=PG_ListsGList; + PAGES_PROPERTIES_PG_MX_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L5_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_MX_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_MX_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_MX_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_MX_Flags(); + break; + case OM_NEW: + retval=MX_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=MX_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=MX_CREATE_Gadget(cl,o,msg); + break; + case OM_DELETE: + retval=MX_DELETE_Gadget(cl,o,msg); + break; + case OM_READ: + retval=MX_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG MX_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + struct Node *node; + int a; + UWORD numlabels,lablen; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTCY_Labels: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<4;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&numlabels,sizeof(UWORD)); + for(a=0;aIFFh,(APTR)&lablen,sizeof(UWORD)); + if(sti=FindTagItem(OWNTAG_Labels,oti)) + if(node=(struct Node *)MyAllocVec(sizeof(struct Node),MEMF_ANY)) + if(node->ln_Name=MyAllocVec(lablen,MEMF_ANY)) + { + ReadChunkBytes(msg->IFFh,(APTR)node->ln_Name,lablen); + AddTail(List(sti->ti_Data),node); + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG MX_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_SPACING],GetTagData(GTMX_Spacing,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_SCALED],GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)); + if(GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)==1) DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],PropsWnd,FALSE); + else DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],PropsWnd,TRUE); + if(GetTagData(OWNTAG_Scaled,0,ng->ng_OwnTags)==1) DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],PropsWnd,FALSE); + else DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],PropsWnd,TRUE); + switch(GetTagData(GTMX_TitlePlace,0,ng->ng_Tags)) + { + case PLACETEXT_LEFT: SetCycle(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_PLACEMENT],0); break; + case PLACETEXT_RIGHT: SetCycle(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_PLACEMENT],1); break; + case PLACETEXT_ABOVE: SetCycle(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_PLACEMENT],2); break; + case PLACETEXT_BELOW: SetCycle(PropsWnd,PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_PLACEMENT],3); break; + } + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetListView(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],GetTagData(OWNTAG_Labels,0,ng->ng_OwnTags)); + SetInteger(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_ACTIVE],GetTagData(GTMX_Active,0,ng->ng_Tags)); + SetString(PropsWnd,PG_ListsGadgets[GD_PG_LISTS_EDIT],""); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropsWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropsWnd,TRUE); + return TRUE; +} + +ULONG MX_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GTMX_Spacing,ng->ng_Tags)->ti_Data=GetInteger(PG_MX_FlagsGadgets[GD_PG_MX_FLAGS_SPACING]); + return TRUE; +} + +ULONG MX_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct Node *n; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=MX_WIDTH; + ng->ng_Height=MX_HEIGHT; + + if(n=MyAllocVec(sizeof(struct Node),MEMF_ANY)) + { + if(n->ln_Name=MyAllocVec(8,MEMF_ANY)) + { + strcpy(n->ln_Name,""); + AddTail(List(FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data),n); + } + else MyFreeVec(n); + } + return TRUE; +} + +ULONG MX_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)MXTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)MXOwnTagsTypes, + GAOBJ_ID,MX_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_MX_PAGES, + GAOBJLIST_List,0, + GAOBJLIST_Active,3, + GAOBJLIST_Tags,1, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(MXTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(MXOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=MX_KIND; + FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_PUBLIC); + NewList(List(FindTagItem(OWNTAG_Labels,ng->ng_OwnTags)->ti_Data)); + return (ULONG)obj; + } + return FALSE; +} + +ULONG MX_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct List *l; + struct Node *n; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&ti); + if(l=(struct List *)FindTagItem(OWNTAG_Labels,ti)->ti_Data) + { + while(n=RemTail(l)) + { + if(n->ln_Name) MyFreeVec(n->ln_Name); + MyFreeVec(n); + } + MyFreeVec(l); + } + return piDoSuperMethodA(cl,o,msg); +} + +ULONG MX_CREATE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG a; + STRPTR *tab; + struct TagItem *ti,*ti2; + struct Node *n; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti2); + + for(a=0,n=GetHead(List(GetTagData(OWNTAG_Labels,0,ti)));GetSucc(n);n=GetSucc(n),a++); + + FindTagItem(GTMX_Labels,ti2)->ti_Data=(ULONG)MyAllocVec((a+1)*sizeof(STRPTR),MEMF_PUBLIC|MEMF_CLEAR); + tab=(STRPTR *)FindTagItem(GTMX_Labels,ti2)->ti_Data; + for(a=0,n=GetHead(List(GetTagData(OWNTAG_Labels,0,ti)));GetSucc(n);n=GetSucc(n),a++) tab[a]=n->ln_Name; + tab[a]=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +ULONG MX_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + APTR tab; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + + tab=(APTR)GetTagData(GTMX_Labels,0,ti); + if(tab) MyFreeVec(tab); + FindTagItem(GTMX_Labels,ti)->ti_Data=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_MX_FLAGS_SPACING_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_MX_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_MX_FLAGS_PLACEMENT_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(GTMX_TitlePlace,ti)->ti_Data=PLACETEXT_LEFT; break; + case 1: FindTagItem(GTMX_TitlePlace,ti)->ti_Data=PLACETEXT_RIGHT; break; + case 2: FindTagItem(GTMX_TitlePlace,ti)->ti_Data=PLACETEXT_ABOVE; break; + case 3: FindTagItem(GTMX_TitlePlace,ti)->ti_Data=PLACETEXT_BELOW; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_MX_FLAGS_SCALED_Clicked( void ) +{ + struct TagItem *ti,*oti; + struct Window *wnd=NULL; + ULONG active; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_Scaled,oti)->ti_Data=PropertiesMsg.Code; + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + if(active==0) wnd=PropertiesWnd; + switch(PropertiesMsg.Code) + { + case 0: + FindTagItem(GTMX_Scaled,ti)->ti_Data=FALSE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,TRUE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,TRUE); + break; + case 1: + FindTagItem(GTMX_Scaled,ti)->ti_Data=TRUE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,FALSE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,FALSE); + break; + case 2: + FindTagItem(GTMX_Scaled,ti)->ti_Data=TRUE; + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_WIDTH],wnd,TRUE); + DisableGadget(PGGT_GeneralGadgets[GD_PGGT_HEIGHT],wnd,TRUE); + break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_MX_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_MX_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/mx.h b/GadToolsBox/PlugIns/mx.h new file mode 100755 index 0000000..a2dfb55 --- /dev/null +++ b/GadToolsBox/PlugIns/mx.h @@ -0,0 +1,13 @@ +#include"defines.h" + +#define MX_ID MAKE_ID('M','X',' ',' ') + +ULONG MX_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG MX_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG MX_INIT_Gadget(piClass *,piObject *,Msg); +ULONG MX_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG MX_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG MX_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG MX_CREATE_Gadget(piClass *,piObject *,Msg); +ULONG MX_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG MX_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/number.c b/GadToolsBox/PlugIns/number.c new file mode 100755 index 0000000..c2edef4 --- /dev/null +++ b/GadToolsBox/PlugIns/number.c @@ -0,0 +1,281 @@ +/* +** Number PlugIn +*/ + +#include"includes.h" +#include"number.h" + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +#define OWNTAG_ImageTitle 1 + +/* +** Default Tags +*/ + +struct TagItem NumberTags[]= +{ + GA_Disabled,FALSE, + GTNM_Border,FALSE, + GTNM_Justification,GTJ_LEFT, + GTNM_Clipped,FALSE, + GTNM_Number,0, + GTNM_MaxNumberLen,0, + GTNM_Format,NULL, + TAG_DONE,0 +}; + +UBYTE NumberTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_DONE +}; + +struct TagItem NumberOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE NumberOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_NUMB_PAGES[]= +{ + &PAGES_PROPERTIES_PG_NUMB_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG NUMBER_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=NUMBER_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=NUMBER_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_NUMB_Flags(); + PAGES_PROPERTIES_PG_NUMB_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_NUMB_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_NUMB_PAGES[1].FirstGadget=PG_NUMB_FlagsGList; + PAGES_PROPERTIES_PG_NUMB_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L12_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_NUMB_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_NUMB_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_NUMB_Flags(); + break; + case OM_NEW: + retval=NUMBER_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=NUMBER_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG NUMBER_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GTNM_Format: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG NUMBER_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_BORDER],GetTagData(GTNM_Border,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_CLIPPED],GetTagData(GTNM_Clipped,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_DEFAULT],GetTagData(GTNM_Number,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_MAXNUMLEN],GetTagData(GTNM_MaxNumberLen,0,ng->ng_Tags)); + SetString(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_FORMAT],GetTagData(GTNM_Format,0,ng->ng_Tags)); + switch(GetTagData(GTNM_Justification,GTJ_LEFT,ng->ng_Tags)) + { + case GTJ_LEFT: SetCycle(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_JUSTIFICATION],GTJ_LEFT); break; + case GTJ_RIGHT: SetCycle(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_JUSTIFICATION],GTJ_RIGHT); break; + case GTJ_CENTER: SetCycle(PropsWnd,PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_JUSTIFICATION],GTJ_CENTER); break; + } + return TRUE; +} + +ULONG NUMBER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GTNM_Number,ng->ng_Tags)->ti_Data=GetInteger(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_DEFAULT]); + FindTagItem(GTNM_MaxNumberLen,ng->ng_Tags)->ti_Data=GetInteger(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_MAXNUMLEN]); + if(FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data); + FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_FORMAT]))+1,MEMF_PUBLIC)) + strcpy((char *)((struct TagItem *)FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data),GetString(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_FORMAT])); + + return TRUE; +} + +ULONG NUMBER_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)NumberTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)NumberOwnTagsTypes, + GAOBJ_ID,NUMBER_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_NUMB_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(NumberTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(NumberOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=NUMBER_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_NUMB_FLAGS_FORMAT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_DEFAULT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_MAXNUMLEN_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_BORDER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTNM_Border,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_JUSTIFICATION_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(GTNM_Justification,ti)->ti_Data=GTJ_LEFT; break; + case 1: FindTagItem(GTNM_Justification,ti)->ti_Data=GTJ_RIGHT; break; + case 2: FindTagItem(GTNM_Justification,ti)->ti_Data=GTJ_CENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_CLIPPED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTNM_Clipped,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_NUMB_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/number.h b/GadToolsBox/PlugIns/number.h new file mode 100755 index 0000000..67debf3 --- /dev/null +++ b/GadToolsBox/PlugIns/number.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define NUMBER_ID MAKE_ID('N','U','M','B') + +ULONG NUMBER_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG NUMBER_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG NUMBER_INIT_Gadget(piClass *,piObject *,Msg); +ULONG NUMBER_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG NUMBER_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/page.c b/GadToolsBox/PlugIns/page.c new file mode 100755 index 0000000..c3f90d1 --- /dev/null +++ b/GadToolsBox/PlugIns/page.c @@ -0,0 +1,609 @@ +/* +** Page PlugIn +*/ + +#include"includes.h" +#include"page.h" + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Pages (TAG_USER+1) +#define OWNTAG_ClearBBox (TAG_USER+2) + +/* +** Default Tags +*/ + +struct TagItem PageTags[]= +{ + TAG_IGNORE,NULL, //PAGE_Underscore,'_', + GA_Disabled,FALSE, + PAGE_Layout,PGLYT_SIMPLE, + PAGE_ActiveStyle,PGAST_NORMAL, + PAGE_Active,0, + PAGE_Pages,NULL, + PAGE_ClearBBox, NULL, + TAG_DONE,0 +}; + +UBYTE PageTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NONE,TAGTYPE_NONE,TAGTYPE_DONE +}; + +struct TagItem PageOwnTags[]= +{ + OWNTAG_Pages,NULL, + TAG_DONE,0 +}; + +UBYTE PageOwnTagsTypes[]= +{ + TAGTYPE_LIST,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 1 + +struct Node_Gadget *PageGadgetGen=NULL; + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_PAGE_PAGES[]= +{ + &PAGES_PROPERTIES_PG_PAGE_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_PAGE_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG PAGE_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=PAGE_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=PAGE_APPLY_Gadget(cl,o,msg); + break; + case OM_DEFAULT: + retval=PAGE_DEFAULT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_PAGE_Flags(); + OpenWindow_PG_PAGE_Lists(); + PAGES_PROPERTIES_PG_PAGE_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_PAGE_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_PAGE_PAGES[1].FirstGadget=PG_PAGE_FlagsGList; + PAGES_PROPERTIES_PG_PAGE_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L14_GAD); + PAGES_PROPERTIES_PG_PAGE_PAGES[2].FirstGadget=PG_PAGE_ListsGList; + PAGES_PROPERTIES_PG_PAGE_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L15_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_PAGE_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PAGE_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PAGE_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_PAGE_Lists(); + CloseWindow_PG_PAGE_Flags(); + break; + case OM_NEW: + retval=PAGE_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=PAGE_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=PAGE_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=PAGE_DELETE_Gadget(cl,o,msg); + break; + case OM_ERASE: + retval=PAGE_ERASE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG PAGE_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_PAGE_FlagsGadgets[GD_PG_PAGE_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_PAGE_FlagsGadgets[GD_PG_PAGE_FLAGS_UNDERSCORE],GetTagData(PAGE_Underscore,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_PAGE_FlagsGadgets[GD_PG_PAGE_FLAGS_LAYOUT],GetTagData(PAGE_Layout,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_PAGE_FlagsGadgets[GD_PG_PAGE_FLAGS_STYLE],GetTagData(PAGE_ActiveStyle,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetListView(PropsWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],GetTagData(OWNTAG_Pages,0,ng->ng_OwnTags)); + SetListView(PropsWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_WINDOWS],&GUI.gui_List_Window); + SetInteger(PropsWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_ACTIVE],GetTagData(PAGE_Active,0,ng->ng_Tags)); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropsWnd,TRUE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropsWnd,TRUE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DEL],PropsWnd,TRUE); + return TRUE; +} + +ULONG PAGE_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(PAGE_Active,ng->ng_Tags)->ti_Data=GetInteger(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_ACTIVE]); + return TRUE; +} + +ULONG PAGE_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + piObject *wo; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct Node *n; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=200; + + if(n=MyAllocVec(sizeof(struct Node),MEMF_PUBLIC)) + { + wo=(piObject *)FindNodeNum(List(&GUI.gui_List_Window),0); + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + n->ln_Name=MyAllocVec(strlen(nw->nw_Label)+1,MEMF_PUBLIC|MEMF_CLEAR); + strcpy(n->ln_Name,nw->nw_Label); + nw->nw_PageGadget++; + AddTail(List(FindTagItem(OWNTAG_Pages,ng->ng_OwnTags)->ti_Data),n); + } + return TRUE; +} + +ULONG PAGE_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)PageTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)PageOwnTagsTypes, + GAOBJ_ID,PAGE_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_PAGE_PAGES, + GAOBJLIST_List,0, + GAOBJLIST_Active,0, + GAOBJLIST_Tags,1, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(PageTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(PageOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + FindTagItem(OWNTAG_Pages,ng->ng_OwnTags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_ANY); + NewList(List(FindTagItem(OWNTAG_Pages,ng->ng_OwnTags)->ti_Data)); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG PAGE_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct List *l; + struct Node *n; + piObject *wo; + struct Node_Window *nw; + + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&ti); + if(l=List(FindTagItem(OWNTAG_Pages,ti)->ti_Data)) + { + while(n=RemTail(l)) + { + if(wo=(piObject *)FindName(List(&GUI.gui_List_Window),n->ln_Name)) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + nw->nw_PageGadget--; + } + MyFreeVec(n); + } + MyFreeVec(l); + } + return piDoSuperMethodA(cl,o,msg); +} + +ULONG PAGE_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + piObject *go,*wo,*fo,*fwo=NULL; + struct List *l; + struct Node_Gadget *ng,*tng; + struct Node_Frame *nf; + struct Page *page=NULL,*prevpage=NULL; + struct Node *n=NULL; + struct Node_Window *nw=NULL; + struct Gadget *g=NULL; + struct BevelBox *cbbox=NULL,*bbox=NULL,*prevbbox=NULL; + struct TagItem *ti,*oti; + WORD x,y,w,h; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + + cbbox=MyAllocVec(sizeof(struct BevelBox),MEMF_PUBLIC|MEMF_CLEAR); + FindTagItem(PAGE_ClearBBox,ti)->ti_Data=(ULONG)cbbox; + + for(n=GetHead(List(FindTagItem(OWNTAG_Pages,oti)->ti_Data));GetSucc(n);n=GetSucc(n)) + { + wo=(piObject *)FindName(List(&GUI.gui_List_Window),n->ln_Name); + if(!wo) continue; + if(!fwo) fwo=wo; + + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + page=MyAllocVec(sizeof(struct Page),MEMF_PUBLIC|MEMF_CLEAR); + if(prevpage) prevpage->NextPage=page; + else FindTagItem(PAGE_Pages,ti)->ti_Data=(ULONG)page; + prevpage=page; + page->NextPage=NULL; + page->Name=nw->nw_WindowTitle; + page->NameStyle=FS_NORMAL; + page->FirstGadget=NULL; + page->FirstIText=NULL; + page->FirstBBox=NULL; + page->FirstImage=NULL; + page->ThisPageHook=NULL; + + if(GUI.gui_Mode==MODE_TEST) + { + piGetAttr(wo,WNOBJ_GadgetList,(ULONG *)&l); + if(!IsListEmpty(l)) + { + g=CreateContext(&page->FirstGadget); + for(go=(piObject *)GetHead(l);GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&tng); + tng->ng_Parent=o; + g=(struct Gadget *)piDoMethod(go,OM_CREATE,(ULONG)g); + tng->ng_Parent=NULL; + } + } + piGetAttr(wo,WNOBJ_FrameList,(ULONG *)&l); + prevbbox=NULL; + for(fo=(piObject *)GetHead(l);GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(bbox=MyAllocVec(sizeof(struct BevelBox),MEMF_ANY|MEMF_CLEAR)) + { + if(prevbbox) prevbbox->NextBBox=bbox; + else { prevbbox=bbox; page->FirstBBox=bbox; }; + bbox->NextBBox=NULL; + bbox->Left=nf->nf_X+piCX(o); + bbox->Top=nf->nf_Y+piCY(o)+piCH(o); + bbox->Width=piCW(fo); + bbox->Height=piCH(fo); + bbox->BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + bbox->BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + GetFlag(nf->nf_Flags,MYFR_Recessed) SetFlag(bbox->Flags,BBFLG_RECESSED); + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: SetFlag(bbox->Flags,BBFLG_FRAMEBUTTON); break; + case FTYPE_ICONDROPBOX: SetFlag(bbox->Flags,BBFLG_FRAMEBUTTON); break; + case FTYPE_RIDGE: SetFlag(bbox->Flags,BBFLG_FRAMERIDGE); break; + case FTYPE_HORIZONTALLINE: SetFlag(bbox->Flags,BBFLG_FRAMEBUTTON); break; + case FTYPE_VERTICALLINE: SetFlag(bbox->Flags,BBFLG_FRAMEBUTTON); break; + } + } + } + } + } + + if(cbbox) + { + piGetAttr(fwo,OBJ_Node,(ULONG *)&nw); + cbbox->Left=piCX(o)-5; + cbbox->Top=piCY(o)+piCH(o); + if(nw->nw_Window) + { + cbbox->Width=WinWidth(fwo)-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight+10; + cbbox->Height=WinHeight(fwo)-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom+2; + } + else + { + cbbox->Width=WinWidth(fwo)-Scr->WBorLeft-Scr->WBorRight; + cbbox->Height=WinHeight(fwo)-(Scr->RastPort.TxHeight + Scr->WBorTop + 1-2+2); + } + cbbox->Flags=BBFLG_FRAMEBUTTON|BBFLG_BACKFILL; + cbbox->BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + cbbox->BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + } + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(PageClass, NULL, + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID, 0, + TAG_MORE,ti)); +} + +ULONG PAGE_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + piObject *wo,*obj; + struct List *l; + struct TagItem *ti,*oti; + struct Node_Gadget *ng=NULL; + struct Node *n=NULL; + struct Page *page=NULL,*np=NULL; + struct BevelBox *bbox=NULL,*nbbox=NULL; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + if(ng->ng_Gadget) + { + if(ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + + page=(struct Page *)FindTagItem(PAGE_Pages,ti)->ti_Data; + while(page) + { + np=page->NextPage; + if(page->FirstGadget) FreeGadgets(page->FirstGadget); + bbox=page->FirstBBox; + while(bbox) + { + nbbox=bbox->NextBBox; + MyFreeVec(bbox); + bbox=nbbox; + } + MyFreeVec((APTR)page); + page=np; + } + + for(n=GetHead(List(FindTagItem(OWNTAG_Pages,oti)->ti_Data));GetSucc(n);n=GetSucc(n)) + { + wo=(piObject *)FindName(List(&GUI.gui_List_Window),n->ln_Name); + if(wo) + { + piGetAttr(wo,WNOBJ_GadgetList,(ULONG *)&l); + for(obj=(piObject *)GetHead(l);GetSucc(obj);obj=(piObject *)GetSucc(obj)) piDoMethod(obj,OM_DELETE); + } + } + MyFreeVec((APTR)GetTagData(PAGE_ClearBBox,0,ti)); + FindTagItem(PAGE_ClearBBox,ti)->ti_Data=NULL; + } + return piDoSuperMethodA(cl,o,msg); +} + +ULONG PAGE_ERASE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + piObject *wo; + struct TagItem *oti; + struct Node_Window *nw,*nw2; + struct Node_Gadget *ng; + struct Node *n; + UWORD x,y,w,h; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + n=GetHead(List(FindTagItem(OWNTAG_Pages,oti)->ti_Data)); + wo=(piObject *)FindName(List(&GUI.gui_List_Window),n->ln_Name); + if(wo) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw2); + + x=piCX(o)-5; + y=piCY(o)+piCH(o); + if(nw2->nw_Window) + { + w=WinWidth(wo)-nw2->nw_Window->BorderLeft-nw2->nw_Window->BorderRight+10; + h=WinHeight(wo)-nw2->nw_Window->BorderTop-nw2->nw_Window->BorderBottom+2; + } + else + { + w=WinWidth(wo)-Scr->WBorLeft-Scr->WBorRight; + h=WinHeight(wo)-(Scr->RastPort.TxHeight + Scr->WBorTop + 1-2+2); + } + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + } + } + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_PAGE_FLAGS_STYLE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PAGE_ActiveStyle,ti)->ti_Data=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PAGE_FLAGS_LAYOUT_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PAGE_Layout,ti)->ti_Data=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PAGE_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PAGE_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?PAGE_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +/********** Lists **********************************************************/ + +extern ULONG ListSelectedLabel; +LONG AddNum=1; + +int FN_PG_PAGE_LISTS_WINDOWS_Clicked( void ) +{ + AddNum=PropertiesMsg.Code; + return 1; +} + +int FN_PG_PAGE_LISTS_LIST_Clicked( void ) +{ + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + ListSelectedLabel=PropertiesMsg.Code; + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropertiesWnd,FALSE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DEL],PropertiesWnd,FALSE); + return 1; +} + +int FN_PG_PAGE_LISTS_ADD_Clicked( void ) +{ + piObject *wo; + struct Node_Window *nw; + struct Node *n; + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + SetListView(PropertiesWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],NULL); + + if(AddNum!=-1) + { + if(n=MyAllocVec(sizeof(struct Node),MEMF_PUBLIC)) + { + wo=(piObject *)FindNodeNum(List(&GUI.gui_List_Window),AddNum); + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + n->ln_Name=MyAllocVec(strlen(nw->nw_Label)+1,MEMF_PUBLIC|MEMF_CLEAR); + strcpy(n->ln_Name,nw->nw_Label); + nw->nw_PageGadget++; + AddTail(*(el->List),n); + SetListView(PropertiesWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],NULL); + SetListView(PropertiesWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],*(el->List)); + + ListSelectedLabel=GetNumNode(*(el->List),n); + GT_SetGadgetAttrs(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],PropertiesWnd,NULL,GTLV_Selected,ListSelectedLabel,GTLV_MakeVisible,ListSelectedLabel,TAG_DONE); + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropertiesWnd,FALSE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DEL],PropertiesWnd,FALSE); + } + } + AddNum=-1; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PAGE_LISTS_DEL_Clicked( void ) +{ + piObject *wo; + struct Node *page; + struct Node_Window *nw; + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + if(ListSelectedLabel!=-1) + { + if(page=FindNodeNum(*(el->List),ListSelectedLabel)) + { + SetListView(PropertiesWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],NULL); + Remove(page); + wo=(piObject *)FindName(List(&GUI.gui_List_Window),page->ln_Name); + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + nw->nw_PageGadget--; + MyFreeVec((APTR)page); + SetListView(PropertiesWnd,PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_LIST],*(el->List)); + ListSelectedLabel=-1; + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_UP],PropertiesWnd,TRUE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DOWN],PropertiesWnd,TRUE); + DisableGadget(PG_PAGE_ListsGadgets[GD_PG_PAGE_LISTS_DEL],PropertiesWnd,TRUE); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PAGE_LISTS_UP_Clicked( void ) +{ + return FN_PG_LISTS_UP_Clicked(); +} + +int FN_PG_PAGE_LISTS_DOWN_Clicked( void ) +{ + return FN_PG_LISTS_DOWN_Clicked(); +} + +int FN_PG_PAGE_LISTS_ACTIVE_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/page.h b/GadToolsBox/PlugIns/page.h new file mode 100755 index 0000000..694ae3b --- /dev/null +++ b/GadToolsBox/PlugIns/page.h @@ -0,0 +1,13 @@ +#include"defines.h" + +#define PAGE_ID MAKE_ID('P','A','G','E') + +ULONG PAGE_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG PAGE_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_INIT_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG PAGE_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG PAGE_ERASE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/palette.c b/GadToolsBox/PlugIns/palette.c new file mode 100755 index 0000000..6b2b847 --- /dev/null +++ b/GadToolsBox/PlugIns/palette.c @@ -0,0 +1,371 @@ +/* +** Palette PlugIn +*/ + +#include"includes.h" +#include"palette.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Color (TAG_USER+1) +#define OWNTAG_ShowSelected (TAG_USER+2) + +/* +** Default Tags +*/ + +struct TagItem PaletteTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + TAG_IGNORE,NULL, //GTPA_NumColors,0, + GTPA_Depth,1, + TAG_IGNORE,0, //GTPA_IndicatorWidth,0, + TAG_IGNORE,0, //GTPA_IndicatorHeight,0, + GA_Disabled,FALSE, + GTPA_Color,0, + GTPA_ColorOffset,0, + TAG_DONE,0 +}; + +UBYTE PaletteTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem PaletteOwnTags[]= +{ + OWNTAG_Color,0, + OWNTAG_ShowSelected,0, + TAG_DONE,0 +}; + +UBYTE PaletteOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 8 +#define GSIZE_NUMOWNTAGS 2 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_PALT_PAGES[]= +{ + &PAGES_PROPERTIES_PG_PALT_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG PALETTE_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=PALETTE_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=PALETTE_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_PALT_Flags(); + PAGES_PROPERTIES_PG_PALT_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_PALT_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_PALT_PAGES[1].FirstGadget=PG_PALT_FlagsGList; + PAGES_PROPERTIES_PG_PALT_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L16_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_PALT_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PALT_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_PALT_Flags(); + break; + case OM_NEW: + retval=PALETTE_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=PALETTE_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG PALETTE_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTPA_NumColors: + ti[1].ti_Tag=GTPA_NumColors; + ti[1].ti_Data=tag.ti_Data; + ti[2].ti_Tag=TAG_IGNORE; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG PALETTE_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_TYPE],GetTagData(OWNTAG_Color,0,ng->ng_OwnTags)); + switch(GetTagData(OWNTAG_Color,0,ng->ng_OwnTags)) + { + case 0: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropsWnd,FALSE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_Depth,0,ng->ng_Tags)); + break; + case 1: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropsWnd,FALSE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_NumColors,0,ng->ng_Tags)); + break; + case 2: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropsWnd,TRUE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],Scr->BitMap.Depth); + break; + } + SetCycle(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED],GetTagData(OWNTAG_ShowSelected,0,ng->ng_OwnTags)); + switch(GetTagData(OWNTAG_ShowSelected,0,ng->ng_OwnTags)) + { + case 0: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropsWnd,TRUE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],GetTagData(GTPA_IndicatorWidth,0,ng->ng_Tags)); + break; + case 1: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropsWnd,FALSE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],0); + break; + case 2: + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropsWnd,FALSE); + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],GetTagData(GTPA_IndicatorHeight,0,ng->ng_Tags)); + break; + } + SetInteger(PropsWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_OFFSET],GetTagData(GTPA_ColorOffset,0,ng->ng_Tags)); + return TRUE; +} + +ULONG PALETTE_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + switch(GetTagData(OWNTAG_Color,0,ng->ng_OwnTags)) + { + case 0: FindTagItem(GTPA_Depth,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR]); break; + case 1: FindTagItem(GTPA_NumColors,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR]); break; + case 2: FindTagItem(GTPA_Depth,ng->ng_Tags)->ti_Data=Scr->BitMap.Depth; + } + switch(GetTagData(OWNTAG_ShowSelected,0,ng->ng_OwnTags)) + { + case 1: FindTagItem(GTPA_IndicatorWidth,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR]); break; + case 2: FindTagItem(GTPA_IndicatorHeight,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR]); break; + } + FindTagItem(GTPA_ColorOffset,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_OFFSET]); + return TRUE; +} + +ULONG PALETTE_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)PaletteTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)PaletteOwnTagsTypes, + GAOBJ_ID,PALETTE_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_PALT_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(PaletteTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(PaletteOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=PALETTE_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_PALT_FLAGS_OFFSET_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_COLOR_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_SHOWSELECTED_VAR_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_TYPE_Clicked( void ) +{ + UBYTE old; + struct TagItem *ti,*oti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + + old=FindTagItem(OWNTAG_Color,oti)->ti_Data; + FindTagItem(OWNTAG_Color,oti)->ti_Data=PropertiesMsg.Code; + switch(PropertiesMsg.Code) + { + case 0: + ti[1].ti_Tag=TAG_IGNORE; + ti[2].ti_Tag=GTPA_Depth; + if(old==1) + { + switch(ti[1].ti_Data) + { + case 256: ti[2].ti_Data=8; break; + case 128: ti[2].ti_Data=7; break; + case 64: ti[2].ti_Data=6; break; + case 32: ti[2].ti_Data=5; break; + case 16: ti[2].ti_Data=4; break; + case 8: ti[2].ti_Data=3; break; + case 4: ti[2].ti_Data=2; break; + case 2: ti[2].ti_Data=1; break; + } + } + SetInteger(PropertiesWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_Depth,0,ti)); + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,FALSE); + break; + case 1: + ti[1].ti_Tag=GTPA_NumColors; + ti[2].ti_Tag=TAG_IGNORE; + if(old!=PropertiesMsg.Code) ti[1].ti_Data=2<<(ti[2].ti_Data-1); + SetInteger(PropertiesWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_NumColors,0,ti)); + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,FALSE); + break; + case 2: + ti[1].ti_Tag=TAG_IGNORE; + ti[2].ti_Tag=GTPA_Depth; + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,TRUE); + break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PALT_FLAGS_SHOWSELECTED_Clicked( void ) +{ + struct TagItem *ti,*oti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + FindTagItem(OWNTAG_ShowSelected,oti)->ti_Data=PropertiesMsg.Code; + switch(PropertiesMsg.Code) + { + case 0: + ti[3].ti_Tag=TAG_IGNORE; + ti[4].ti_Tag=TAG_IGNORE; + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,TRUE); + break; + case 1: + ti[3].ti_Tag=GTPA_IndicatorWidth; + ti[4].ti_Tag=TAG_IGNORE; + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,FALSE); + break; + case 2: + ti[3].ti_Tag=TAG_IGNORE; + ti[4].ti_Tag=GTPA_IndicatorHeight; + DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,FALSE); + break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/palette.h b/GadToolsBox/PlugIns/palette.h new file mode 100755 index 0000000..182d20a --- /dev/null +++ b/GadToolsBox/PlugIns/palette.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define PALETTE_ID MAKE_ID('P','A','L','T') + +ULONG PALETTE_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG PALETTE_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG PALETTE_INIT_Gadget(piClass *,piObject *,Msg); +ULONG PALETTE_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG PALETTE_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/popupmenu.c b/GadToolsBox/PlugIns/popupmenu.c new file mode 100755 index 0000000..9cdad05 --- /dev/null +++ b/GadToolsBox/PlugIns/popupmenu.c @@ -0,0 +1,217 @@ +/* +** PopUpMenu PlugIn +*/ + +#include"includes.h" +#include"popupmenu.h" + +/* +** Default Tags +*/ + +struct TagItem PopUpMenuTags[]= +{ + GA_Disabled,FALSE, + PUMG_Labels,NULL, + PUMG_Active,0, + PUMG_NewLook,FALSE, + TAG_DONE,0 +}; + +UBYTE PopUpMenuTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_LIST,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem PopUpMenuOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE PopUpMenuOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 4 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_PUPM_PAGES[]= +{ + &PAGES_PROPERTIES_PG_PUPM_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_PUPM_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG POPUPMENU_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=POPUPMENU_INIT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_PUPM_Flags(); + PAGES_PROPERTIES_PG_PUPM_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_PUPM_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_PUPM_PAGES[1].FirstGadget=PG_PUPM_FlagsGList; + PAGES_PROPERTIES_PG_PUPM_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L17_GAD); + PAGES_PROPERTIES_PG_PUPM_PAGES[2].FirstGadget=PG_ListsGList; + PAGES_PROPERTIES_PG_PUPM_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L5_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_PUPM_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PUPM_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PUPM_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_PUPM_Flags(); + break; + case OM_NEW: + retval=POPUPMENU_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=POPUPMENU_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=POPUPMENU_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=POPUPMENU_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG POPUPMENU_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_PUPM_FlagsGadgets[GD_PG_PUPM_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_PUPM_FlagsGadgets[GD_PG_PUPM_FLAGS_NEWLOOK],GetTagData(PUMG_NewLook,0,ng->ng_Tags)); + return TRUE; +} + +ULONG POPUPMENU_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)PopUpMenuTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)PopUpMenuOwnTagsTypes, + GAOBJ_ID,POPUPMENU_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_PUPM_PAGES, + GAOBJLIST_List,1, + GAOBJLIST_Active,2, + GAOBJLIST_Tags,0, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(PopUpMenuTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(PopUpMenuOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + FindTagItem(PUMG_Labels,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_PUBLIC); + NewList(List(FindTagItem(PUMG_Labels,ng->ng_Tags)->ti_Data)); + return (ULONG)obj; + } + return FALSE; +} + +ULONG POPUPMENU_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct List *l; + struct Node *n; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + l=(struct List *)FindTagItem(PUMG_Labels,ti)->ti_Data; + while(n=RemTail(l)) + { + if(n->ln_Name) MyFreeVec(n->ln_Name); + MyFreeVec(n); + } + MyFreeVec(l); + return piDoSuperMethodA(cl,o,msg); +} + +ULONG POPUPMENU_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(PopUpMenuClass, NULL, + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG POPUPMENU_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_PUPM_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PUPM_FLAGS_NEWLOOK_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PUMG_NewLook,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/popupmenu.h b/GadToolsBox/PlugIns/popupmenu.h new file mode 100755 index 0000000..82a3bba --- /dev/null +++ b/GadToolsBox/PlugIns/popupmenu.h @@ -0,0 +1,10 @@ +#include"defines.h" + +#define POPUPMENU_ID MAKE_ID('P','U','P','M') + +ULONG POPUPMENU_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG POPUPMENU_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG POPUPMENU_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG POPUPMENU_INIT_Gadget(piClass *,piObject *,Msg); +ULONG POPUPMENU_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG POPUPMENU_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/progress.c b/GadToolsBox/PlugIns/progress.c new file mode 100755 index 0000000..963ae9f --- /dev/null +++ b/GadToolsBox/PlugIns/progress.c @@ -0,0 +1,280 @@ +/* +** Progress PlugIn +*/ + +#include"includes.h" +#include"progress.h" + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem ProgressTags[]= +{ + GA_Disabled,FALSE, + PROG_MaxVal,100, + PROG_CurVal,0, + PROG_ConvertToPercents,FALSE, + PROG_Format,NULL, + PROG_Border,FALSE, + PROG_Placement,PLACETEXT_IN, + TAG_IGNORE,NULL, //PROG_TextFont,NULL, + TAG_DONE,0 +}; + +UBYTE ProgressTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem ProgressOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE ProgressOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 7 +#define GSIZE_NUMOWNTAGS 9 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_PRGR_PAGES[]= +{ + &PAGES_PROPERTIES_PG_PRGR_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG PROGRESS_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=PROGRESS_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=PROGRESS_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_PRGR_Flags(); + PAGES_PROPERTIES_PG_PRGR_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_PRGR_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_PRGR_PAGES[1].FirstGadget=PG_PRGR_FlagsGList; + PAGES_PROPERTIES_PG_PRGR_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L18_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_PRGR_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_PRGR_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_PRGR_Flags(); + break; + case OM_NEW: + retval=PROGRESS_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=PROGRESS_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=PROGRESS_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG PROGRESS_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + SetCheckMark(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PERCENTS],GetTagData(PROG_ConvertToPercents,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_BORDER],GetTagData(PROG_Border,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_MAX],GetTagData(PROG_MaxVal,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_CURRENT],GetTagData(PROG_CurVal,0,ng->ng_Tags)); + SetString(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_FORMAT],GetTagData(PROG_Format,0,ng->ng_Tags)); + switch(GetTagData(PROG_Placement,0,ng->ng_Tags)) + { + case PLACETEXT_IN: SetCycle(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PLACEMENT],0); break; + case PLACETEXT_LEFT: SetCycle(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PLACEMENT],1); break; + case PLACETEXT_RIGHT: SetCycle(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PLACEMENT],2); break; + case PLACETEXT_ABOVE: SetCycle(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PLACEMENT],3); break; + case PLACETEXT_BELOW: SetCycle(PropsWnd,PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_PLACEMENT],4); break; + } + return TRUE; +} + +ULONG PROGRESS_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(PROG_MaxVal,ng->ng_Tags)->ti_Data=GetInteger(PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_MAX]); + FindTagItem(PROG_CurVal,ng->ng_Tags)->ti_Data=GetInteger(PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_CURRENT]); + if(FindTagItem(PROG_Format,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(PROG_Format,ng->ng_Tags)->ti_Data); + FindTagItem(PROG_Format,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(PROG_Format,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_FORMAT]))+1,MEMF_PUBLIC)) + strcpy((char *)((struct TagItem *)FindTagItem(PROG_Format,ng->ng_Tags)->ti_Data),GetString(PG_PRGR_FlagsGadgets[GD_PG_PRGR_FLAGS_FORMAT])); + + return TRUE; +} + +ULONG PROGRESS_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)ProgressTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)ProgressOwnTagsTypes, + GAOBJ_ID,PROGRESS_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_PRGR_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(ProgressTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(ProgressOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG PROGRESS_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(ProgressClass, NULL, + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG PROGRESS_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_PRGR_FLAGS_FORMAT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_MAX_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_CURRENT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_PERCENTS_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PROG_ConvertToPercents,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_BORDER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PROG_Border,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_PRGR_FLAGS_PLACEMENT_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(PROG_Placement,ti)->ti_Data=PLACETEXT_IN; break; + case 1: FindTagItem(PROG_Placement,ti)->ti_Data=PLACETEXT_LEFT; break; + case 2: FindTagItem(PROG_Placement,ti)->ti_Data=PLACETEXT_RIGHT; break; + case 3: FindTagItem(PROG_Placement,ti)->ti_Data=PLACETEXT_ABOVE; break; + case 4: FindTagItem(PROG_Placement,ti)->ti_Data=PLACETEXT_BELOW; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/progress.h b/GadToolsBox/PlugIns/progress.h new file mode 100755 index 0000000..12395c0 --- /dev/null +++ b/GadToolsBox/PlugIns/progress.h @@ -0,0 +1,10 @@ +#include"defines.h" + +#define PROGRESS_ID MAKE_ID('P','R','G','R') + +ULONG PROGRESS_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG PROGRESS_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG PROGRESS_INIT_Gadget(piClass *,piObject *,Msg); +ULONG PROGRESS_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG PROGRESS_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG PROGRESS_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/scroller.c b/GadToolsBox/PlugIns/scroller.c new file mode 100755 index 0000000..da161a8 --- /dev/null +++ b/GadToolsBox/PlugIns/scroller.c @@ -0,0 +1,342 @@ +/* +** Scroller PlugIn +*/ + +#include"includes.h" +#include"scroller.h" + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Arrows (TAG_USER+1) + +/* +** Default Tags +*/ + +struct TagItem ScrollerTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + TAG_IGNORE,NULL, //GTSC_Arrows,16, + GTSC_Top,0, + GTSC_Total,0, + GTSC_Visible,0, + GA_Disabled,FALSE, + GA_Immediate,FALSE, + GA_RelVerify,FALSE, +// PGA_NewLook,FALSE, + PGA_Freedom,LORIENT_HORIZ, + TAG_DONE,0 +}; + +UBYTE ScrollerTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem ScrollerOwnTags[]= +{ + OWNTAG_Arrows,0, + TAG_DONE,0 +}; + +UBYTE ScrollerOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 9 +#define GSIZE_NUMOWNTAGS 1 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_SCRL_PAGES[]= +{ + &PAGES_PROPERTIES_PG_SCRL_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_SCRL_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG SCROLLER_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=SCROLLER_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=SCROLLER_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_SCRL_Flags(); + OpenWindow_PG_SCRL_Var(); + PAGES_PROPERTIES_PG_SCRL_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_SCRL_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_SCRL_PAGES[1].FirstGadget=PG_SCRL_FlagsGList; + PAGES_PROPERTIES_PG_SCRL_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L19_GAD); + PAGES_PROPERTIES_PG_SCRL_PAGES[2].FirstGadget=PG_SCRL_VarGList; + PAGES_PROPERTIES_PG_SCRL_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L20_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_SCRL_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_SCRL_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_SCRL_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_SCRL_Var(); + CloseWindow_PG_SCRL_Flags(); + break; + case OM_NEW: + retval=SCROLLER_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=SCROLLER_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG SCROLLER_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTSC_Arrows: + ti[1].ti_Tag=GTSC_Arrows; + ti[1].ti_Data=tag.ti_Data; + if(sti=FindTagItem(OWNTAG_Arrows,oti)) sti->ti_Data=1; + break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG SCROLLER_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_IMMEDIATE],GetTagData(GA_Immediate,0,ng->ng_Tags)); +// SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_NEWLOOK],GetTagData(PGA_NewLook,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SCRL_FlagsGadgets[GD_PG_SCRL_FLAGS_RELVERIFY],GetTagData(GA_RelVerify,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_TOP],GetTagData(GTSC_Top,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_TOTAL],GetTagData(GTSC_Total,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_VISIBLE],GetTagData(GTSC_Visible,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS],GetTagData(GTSC_Arrows,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROW_TYPE],GetTagData(OWNTAG_Arrows,0,ng->ng_OwnTags)); + if(GetTagData(OWNTAG_Arrows,0,ng->ng_OwnTags)==1) DisableGadget(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS],PropsWnd,FALSE); + else DisableGadget(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS],PropsWnd,TRUE); + SetCycle(PropsWnd,PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_FREEDOM],(GetTagData(PGA_Freedom,0,ng->ng_Tags)==LORIENT_HORIZ)?0:1); + return TRUE; +} + +ULONG SCROLLER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GTSC_Top,ng->ng_Tags)->ti_Data=GetInteger(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_TOP]); + FindTagItem(GTSC_Total,ng->ng_Tags)->ti_Data=GetInteger(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_TOTAL]); + FindTagItem(GTSC_Visible,ng->ng_Tags)->ti_Data=GetInteger(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_VISIBLE]); + if(GetTagData(OWNTAG_Arrows,0,ng->ng_OwnTags)==1) + FindTagItem(GTSC_Arrows,ng->ng_Tags)->ti_Data=GetInteger(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS]); + + return TRUE; +} + +ULONG SCROLLER_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)ScrollerTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)ScrollerOwnTagsTypes, + GAOBJ_ID,SCROLLER_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_SCRL_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(ScrollerTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(ScrollerOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=SCROLLER_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_SCRL_VAR_TOP_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_VAR_TOTAL_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_VAR_VISIBLE_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_VAR_ARROWS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_VAR_ARROW_TYPE_Clicked( void ) +{ + struct TagItem *oti,*ti; + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(OWNTAG_Arrows,oti)->ti_Data=PropertiesMsg.Code; + ti[1].ti_Tag=PropertiesMsg.Code?GTSC_Arrows:TAG_IGNORE; + if(PropertiesMsg.Code!=1) + DisableGadget(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS],PropertiesWnd,TRUE); + else + DisableGadget(PG_SCRL_VarGadgets[GD_PG_SCRL_VAR_ARROWS],PropertiesWnd,FALSE); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_VAR_FREEDOM_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_HORIZ; break; + case 1: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_VERT; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_FLAGS_IMMEDIATE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Immediate,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +/* +int FN_PG_SCRL_FLAGS_NEWLOOK_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PGA_NewLook,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} +*/ + +int FN_PG_SCRL_FLAGS_RELVERIFY_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_RelVerify,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SCRL_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/scroller.h b/GadToolsBox/PlugIns/scroller.h new file mode 100755 index 0000000..50509c7 --- /dev/null +++ b/GadToolsBox/PlugIns/scroller.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define SCROLLER_ID MAKE_ID('S','C','R','L') + +ULONG SCROLLER_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG SCROLLER_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG SCROLLER_INIT_Gadget(piClass *,piObject *,Msg); +ULONG SCROLLER_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG SCROLLER_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/slider.c b/GadToolsBox/PlugIns/slider.c new file mode 100755 index 0000000..78ea11f --- /dev/null +++ b/GadToolsBox/PlugIns/slider.c @@ -0,0 +1,406 @@ +/* +** Slider PlugIn +*/ + +#include"includes.h" +#include"slider.h" + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem SliderTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + TAG_IGNORE,0, //GTSL_MaxPixelLen,0, + GTSL_Min,0, + GTSL_Max,0, + GTSL_Level,0, + GTSL_MaxLevelLen,0, + GTSL_LevelFormat,NULL, + GTSL_LevelPlace,PLACETEXT_LEFT, + GTSL_Justification,GTJ_LEFT, + GA_Disabled,FALSE, + GA_Immediate,FALSE, + GA_RelVerify,FALSE, +// PGA_NewLook,FALSE, + PGA_Freedom,LORIENT_HORIZ, + TAG_DONE,0 +}; + +UBYTE SliderTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem SliderOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE SliderOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 13 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_SLIR_PAGES[]= +{ + &PAGES_PROPERTIES_PG_SLIR_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_SLIR_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG SLIDER_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=SLIDER_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=SLIDER_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_SLIR_Flags(); + OpenWindow_PG_SLIR_Var(); + PAGES_PROPERTIES_PG_SLIR_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_SLIR_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_SLIR_PAGES[1].FirstGadget=PG_SLIR_FlagsGList; + PAGES_PROPERTIES_PG_SLIR_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L21_GAD); + PAGES_PROPERTIES_PG_SLIR_PAGES[2].FirstGadget=PG_SLIR_VarGList; + PAGES_PROPERTIES_PG_SLIR_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L22_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_SLIR_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_SLIR_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_SLIR_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_SLIR_Var(); + CloseWindow_PG_SLIR_Flags(); + break; + case OM_NEW: + retval=SLIDER_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=SLIDER_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG SLIDER_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,*oti,tag,*sti; + struct Node_Gadget *ng; + int a; + UWORD lenstr; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTSL_MaxPixelLen: + ti[1].ti_Tag=GTSL_MaxPixelLen; + ti[1].ti_Data=tag.ti_Data; + break; + case GTSL_LevelFormat: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<11;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&lenstr,sizeof(UWORD)); + if(lenstr) + { + if(FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data); + FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(lenstr,MEMF_PUBLIC)) + ReadChunkBytes(msg->IFFh,(APTR)FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data,lenstr); + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG SLIDER_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_IMMEDIATE],GetTagData(GA_Immediate,0,ng->ng_Tags)); +// SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_NEWLOOK],GetTagData(PGA_NewLook,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_RELVERIFY],GetTagData(GA_RelVerify,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MIN],GetTagData(GTSL_Min,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MAX],GetTagData(GTSL_Max,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_LEVEL],GetTagData(GTSL_Level,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MAXLEVLEN],GetTagData(GTSL_MaxLevelLen,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN],GetTagData(GTSL_MaxPixelLen,0,ng->ng_Tags)); + if(FindTagItem(GTSL_MaxPixelLen,ng->ng_Tags)) DisableGadget(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN],PropsWnd,FALSE); + else DisableGadget(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN],PropsWnd,TRUE); + SetString(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_FLAGS_FORMAT],GetTagData(GTSL_LevelFormat,0,ng->ng_Tags)); + SetCycle(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_FREEDOM],(GetTagData(PGA_Freedom,0,ng->ng_Tags)==LORIENT_HORIZ)?0:1); + switch(GetTagData(GTSL_Justification,0,ng->ng_Tags)) + { + case GTJ_LEFT: SetCycle(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_JUSTIFICATION],0); break; + case GTJ_RIGHT: SetCycle(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_JUSTIFICATION],1); break; + case GTJ_CENTER: SetCycle(PropsWnd,PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_JUSTIFICATION],2); break; + } + return TRUE; +} + +ULONG SLIDER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(GTSL_Min,ng->ng_Tags)->ti_Data=GetInteger(PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MIN]); + FindTagItem(GTSL_Max,ng->ng_Tags)->ti_Data=GetInteger(PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MAX]); + FindTagItem(GTSL_Level,ng->ng_Tags)->ti_Data=GetInteger(PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_LEVEL]); + FindTagItem(GTSL_MaxLevelLen,ng->ng_Tags)->ti_Data=GetInteger(PG_SLIR_VarGadgets[GD_PG_SLIR_VAR_MAXLEVLEN]); + if(FindTagItem(GTSL_MaxPixelLen,ng->ng_Tags)) + FindTagItem(GTSL_MaxPixelLen,ng->ng_Tags)->ti_Data=GetInteger(PG_SLIR_VarGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN]); + + if(FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data); + FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_FORMAT]))+1,MEMF_PUBLIC)) + strcpy((char *)((struct TagItem *)FindTagItem(GTSL_LevelFormat,ng->ng_Tags)->ti_Data),GetString(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_FORMAT])); + + return TRUE; +} + +ULONG SLIDER_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)SliderTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)SliderOwnTagsTypes, + GAOBJ_ID,SLIDER_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_SLIR_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(SliderTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(SliderOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=SLIDER_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_SLIR_FLAGS_FORMAT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_MAX_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_MIN_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_LEVEL_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_MAXLEVLEN_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_MAXPIXELLEN_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_MAXPIXELLEN_SET_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[1].ti_Tag=PropertiesMsg.Code?GTSL_MaxPixelLen:TAG_IGNORE; + if(PropertiesMsg.Code) DisableGadget(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN],PropertiesWnd,FALSE); + else DisableGadget(PG_SLIR_FlagsGadgets[GD_PG_SLIR_FLAGS_MAXPIXELLEN],PropertiesWnd,TRUE); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_LEVELPLACE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(GTSL_LevelPlace,ti)->ti_Data=PLACETEXT_LEFT; break; + case 1: FindTagItem(GTSL_LevelPlace,ti)->ti_Data=PLACETEXT_RIGHT; break; + case 2: FindTagItem(GTSL_LevelPlace,ti)->ti_Data=PLACETEXT_ABOVE; break; + case 3: FindTagItem(GTSL_LevelPlace,ti)->ti_Data=PLACETEXT_BELOW; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_JUSTIFICATION_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(GTSL_Justification,ti)->ti_Data=GTJ_LEFT; break; + case 1: FindTagItem(GTSL_Justification,ti)->ti_Data=GTJ_RIGHT; break; + case 2: FindTagItem(GTSL_Justification,ti)->ti_Data=GTJ_CENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_VAR_FREEDOM_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_HORIZ; break; + case 1: FindTagItem(PGA_Freedom,ti)->ti_Data=LORIENT_VERT; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_IMMEDIATE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Immediate,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +/* +int FN_PG_SLIR_FLAGS_NEWLOOK_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(PGA_NewLook,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} +*/ +int FN_PG_SLIR_FLAGS_RELVERIFY_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_RelVerify,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_SLIR_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/slider.h b/GadToolsBox/PlugIns/slider.h new file mode 100755 index 0000000..95fe61c --- /dev/null +++ b/GadToolsBox/PlugIns/slider.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define SLIDER_ID MAKE_ID('S','L','I','R') + +ULONG SLIDER_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG SLIDER_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG SLIDER_INIT_Gadget(piClass *,piObject *,Msg); +ULONG SLIDER_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG SLIDER_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/string.c b/GadToolsBox/PlugIns/string.c new file mode 100755 index 0000000..7700268 --- /dev/null +++ b/GadToolsBox/PlugIns/string.c @@ -0,0 +1,317 @@ +/* +** String PlugIn +*/ + +#include"includes.h" +#include"plugins/string.h" + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem StringTags[]= +{ + TAG_IGNORE,NULL, //GT_Underscore,'_', + GA_Disabled,FALSE, + GA_TabCycle,FALSE, + STRINGA_ReplaceMode,FALSE, + STRINGA_ExitHelp,FALSE, + STRINGA_Justification,GACT_STRINGLEFT, + GTST_String,0, + GTST_MaxChars,0, + TAG_DONE,0 +}; + +UBYTE StringTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem StringOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE StringOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 8 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_STRG_PAGES[]= +{ + &PAGES_PROPERTIES_PG_STRG_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_STRG_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG STRING_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=STRING_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=STRING_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_STRG_Flags(); + OpenWindow_PG_STRG_Var(); + PAGES_PROPERTIES_PG_STRG_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_STRG_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_STRG_PAGES[1].FirstGadget=PG_STRG_FlagsGList; + PAGES_PROPERTIES_PG_STRG_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L23_GAD); + PAGES_PROPERTIES_PG_STRG_PAGES[2].FirstGadget=PG_STRG_VarGList; + PAGES_PROPERTIES_PG_STRG_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L24_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_STRG_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_STRG_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_STRG_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_STRG_Var(); + CloseWindow_PG_STRG_Flags(); + break; + case OM_NEW: + retval=STRING_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=STRING_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG STRING_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,tag,*sti; + struct Node_Gadget *ng; + int a; + UWORD lenstr; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GT_Underscore: + ti[0].ti_Tag=GT_Underscore; + ti[0].ti_Data='_'; + break; + case GTST_String: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<7;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&lenstr,sizeof(UWORD)); + if(lenstr) + { + if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data); + FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(lenstr,MEMF_PUBLIC)) + ReadChunkBytes(msg->IFFh,(APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data,lenstr); + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG STRING_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_UNDERSCORE],GetTagData(GT_Underscore,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_EXITHELP],GetTagData(STRINGA_ExitHelp,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_REPLACEMODE],GetTagData(STRINGA_ReplaceMode,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_STRG_FlagsGadgets[GD_PG_STRG_FLAGS_TABCYCLE],GetTagData(GA_TabCycle,0,ng->ng_Tags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PG_STRG_VarGadgets[GD_PG_STRG_VAR_STRING],GetTagData(GTST_String,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_STRG_VarGadgets[GD_PG_STRG_VAR_MAXCHARS],GetTagData(GTST_MaxChars,0,ng->ng_Tags)); + switch(GetTagData(STRINGA_Justification,0,ng->ng_Tags)) + { + case GACT_STRINGLEFT: SetCycle(PropsWnd,PG_STRG_VarGadgets[GD_PG_STRG_VAR_JUSTIFICATION],0); break; + case GACT_STRINGRIGHT: SetCycle(PropsWnd,PG_STRG_VarGadgets[GD_PG_STRG_VAR_JUSTIFICATION],1); break; + case GACT_STRINGCENTER: SetCycle(PropsWnd,PG_STRG_VarGadgets[GD_PG_STRG_VAR_JUSTIFICATION],2); break; + } + return TRUE; +} + +ULONG STRING_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data); + FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_STRG_VarGadgets[GD_PG_STRG_VAR_STRING]))+1,MEMF_PUBLIC)) + strcpy((char *)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data,GetString(PG_STRG_VarGadgets[GD_PG_STRG_VAR_STRING])); + FindTagItem(GTST_MaxChars,ng->ng_Tags)->ti_Data=GetInteger(PG_STRG_VarGadgets[GD_PG_STRG_VAR_MAXCHARS]); + return TRUE; +} + +ULONG STRING_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)StringTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)StringOwnTagsTypes, + GAOBJ_ID,STRING_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_STRG_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(StringTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(StringOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=STRING_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_STRG_VAR_STRING_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_UNDERSCORE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + ti[0].ti_Tag=PropertiesMsg.Code?GT_Underscore:TAG_IGNORE; + ti[0].ti_Data='_'; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_EXITHELP_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(STRINGA_ExitHelp,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_VAR_JUSTIFICATION_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGLEFT; break; + case 1: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGRIGHT; break; + case 2: FindTagItem(STRINGA_Justification,ti)->ti_Data=GACT_STRINGCENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_REPLACEMODE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(STRINGA_ReplaceMode,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_TABCYCLE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_TabCycle,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_FLAGS_NUMBER_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_STRG_VAR_MAXCHARS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/string.h b/GadToolsBox/PlugIns/string.h new file mode 100755 index 0000000..4fd27d3 --- /dev/null +++ b/GadToolsBox/PlugIns/string.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define STRING_ID MAKE_ID('S','T','R','G') + +ULONG STRING_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG STRING_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG STRING_INIT_Gadget(piClass *,piObject *,Msg); +ULONG STRING_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG STRING_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/tapedeck.c b/GadToolsBox/PlugIns/tapedeck.c new file mode 100755 index 0000000..3b0c11c --- /dev/null +++ b/GadToolsBox/PlugIns/tapedeck.c @@ -0,0 +1,328 @@ +/* +** TapeDeck PlugIn +*/ + +#include"includes.h" +#include"tapedeck.h" + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem TapeDeckTags[]= +{ + GA_Disabled,FALSE, + TDECK_Paused,FALSE, + TDECK_Tape,FALSE, + TDECK_Frames,0, + TDECK_CurrentFrame,0, + TAG_DONE,0 +}; + +UBYTE TapeDeckTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem TapeDeckOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE TapeDeckOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 5 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_TDEK_PAGES[]= +{ + &PAGES_PROPERTIES_PG_TDEK_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG TAPEDECK_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=TAPEDECK_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=TAPEDECK_APPLY_Gadget(cl,o,msg); + break; + case OM_DEFAULT: + retval=TAPEDECK_DEFAULT_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_TDEK_Flags(); + PAGES_PROPERTIES_PG_TDEK_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_TDEK_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_TDEK_PAGES[1].FirstGadget=PG_TDEK_FlagsGList; + PAGES_PROPERTIES_PG_TDEK_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L25_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_TDEK_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TDEK_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_TDEK_Flags(); + break; + case OM_NEW: + retval=TAPEDECK_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=TAPEDECK_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=TAPEDECK_DELETE_Gadget(cl,o,msg); + break; + case OM_RENDER: + retval=TAPEDECK_RENDER_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG TAPEDECK_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_TAPE],GetTagData(TDECK_Tape,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_PAUSED],GetTagData(TDECK_Paused,0,ng->ng_Tags)); + if(GetTagData(TDECK_Tape,0,ng->ng_Tags)) + { + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropsWnd,TRUE); + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropsWnd,TRUE); + } + else + { + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropsWnd,FALSE); + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropsWnd,FALSE); + } + SetInteger(PropsWnd,PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],GetTagData(TDECK_Frames,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],GetTagData(TDECK_CurrentFrame,0,ng->ng_Tags)); + return TRUE; +} + +ULONG TAPEDECK_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(TDECK_Frames,ng->ng_Tags)->ti_Data=GetInteger(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES]); + FindTagItem(TDECK_CurrentFrame,ng->ng_Tags)->ti_Data=GetInteger(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT]); + return TRUE; +} + +ULONG TAPEDECK_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=202; + ng->ng_Height=14; + return TRUE; +} + +ULONG TAPEDECK_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)TapeDeckTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)TapeDeckOwnTagsTypes, + GAOBJ_ID,TAPEDECK_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_TDEK_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(TapeDeckTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(TapeDeckOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG TAPEDECK_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(NULL, "tapedeck.gadget", + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG TAPEDECK_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +extern DrawRect(struct RastPort *,UWORD,UWORD,BOOL); + +ULONG TAPEDECK_RENDER_Gadget(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct Gadget *g,*ga; + BOOL fill=FALSE; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + + g=CreateContext(&g); + if(ga=(struct Gadget *)piDoMethod(o,OM_CREATE,g)) + { + AddGList(nw->nw_Window,ga,-1,-1,NULL); + RefreshGList(g,nw->nw_Window,NULL,-1); + RemoveGList(nw->nw_Window,ga,-1); + } + piDoMethod(o,OM_DELETE); + g->NextGadget=NULL; + FreeGadgets(g); + + if(ng->ng_Selected && GUI.gui_Mode==MODE_GADGET) + { + SetAPen(nw->nw_Window->RPort,1); + SetDrMd(nw->nw_Window->RPort,COMPLEMENT); + if(CurrentGadget==o) fill=TRUE; + DrawRect(nw->nw_Window->RPort,x,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+(h/2)-2,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+(h/2)-2,fill); + } + return TRUE; +} + +int FN_PG_TDEK_FLAGS_FRAMES_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TDEK_FLAGS_CURRENT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TDEK_FLAGS_PAUSED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TDECK_Paused,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TDEK_FLAGS_TAPE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TDECK_Tape,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + if(PropertiesMsg.Code) + { + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropertiesWnd,TRUE); + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropertiesWnd,TRUE); + } + else + { + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropertiesWnd,FALSE); + DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropertiesWnd,FALSE); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TDEK_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/tapedeck.h b/GadToolsBox/PlugIns/tapedeck.h new file mode 100755 index 0000000..ff34c09 --- /dev/null +++ b/GadToolsBox/PlugIns/tapedeck.h @@ -0,0 +1,12 @@ +#include"defines.h" + +#define TAPEDECK_ID MAKE_ID('T','D','E','K') + +ULONG TAPEDECK_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG TAPEDECK_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG TAPEDECK_INIT_Gadget(piClass *,piObject *,Msg); +ULONG TAPEDECK_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG TAPEDECK_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG TAPEDECK_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG TAPEDECK_DELETE_Gadget(piClass *,piObject *,Msg); +ULONG TAPEDECK_RENDER_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/text.c b/GadToolsBox/PlugIns/text.c new file mode 100755 index 0000000..5af6384 --- /dev/null +++ b/GadToolsBox/PlugIns/text.c @@ -0,0 +1,282 @@ +/* +** Text PlugIn +*/ + +#include"includes.h" +#include"text.h" + +/* +** Defines +*/ + +/* +** OwnTag definitions +*/ + +#define OWNTAG_ImageTitle 1 + +/* +** Default TextTags +*/ + +struct TagItem TextTags[]= +{ + GA_Disabled,FALSE, + GTTX_Border,FALSE, + GTTX_CopyText,FALSE, + GTTX_Justification,GTJ_LEFT, + GTTX_Clipped,FALSE, + GTTX_Text,NULL, + TAG_DONE,0 +}; + +UBYTE TextTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_DONE +}; + +struct TagItem TextOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE TextOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 6 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGGT_General[]; + +struct Page PAGES_PROPERTIES_PG_TEXT_PAGES[]= +{ + &PAGES_PROPERTIES_PG_TEXT_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG TEXT_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=TEXT_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=TEXT_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_TEXT_Flags(); + PAGES_PROPERTIES_PG_TEXT_PAGES[0].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PG_TEXT_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L13_GAD); + PAGES_PROPERTIES_PG_TEXT_PAGES[1].FirstGadget=PG_TEXT_FlagsGList; + PAGES_PROPERTIES_PG_TEXT_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L26_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_TEXT_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TEXT_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_TEXT_Flags(); + break; + case OM_NEW: + retval=TEXT_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_READ: + retval=TEXT_READ_Gadget(cl,o,(struct piIO *)msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG TEXT_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) + { + struct TagItem *ti,tag,*sti; + struct Node_Gadget *ng; + int a; + UWORD lenstr; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + for(a=0;ang_Type-1;a++) + { + ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + switch(tag.ti_Tag) + { + case GTTX_Text: break; + default: + if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; + break; + } + } + for(;a<3;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); + ReadChunkBytes(msg->IFFh,(APTR)&lenstr,sizeof(UWORD)); + if(lenstr) + { + if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data); + FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(lenstr,MEMF_PUBLIC)) + ReadChunkBytes(msg->IFFh,(APTR)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data,lenstr); + } + return 0; + } + else + return piDoSuperMethodA(cl,o,(Msg)msg); +} + +ULONG TEXT_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_HIGHLABEL],gtd->g_Flags&NG_HIGHLABEL); + SetCheckMark(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_BORDER],GetTagData(GTTX_Border,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_CLIPPED],GetTagData(GTTX_Clipped,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_COPYTEXT],GetTagData(GTTX_CopyText,0,ng->ng_Tags)); + SetString(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DEFAULT],GetTagData(GTTX_Text,0,ng->ng_Tags)); + switch(GetTagData(GTTX_Justification,GTJ_LEFT,ng->ng_Tags)) + { + case GTJ_LEFT: SetCycle(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_JUSTIFICATION],GTJ_LEFT); break; + case GTJ_RIGHT: SetCycle(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_JUSTIFICATION],GTJ_RIGHT); break; + case GTJ_CENTER: SetCycle(PropsWnd,PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_JUSTIFICATION],GTJ_CENTER); break; + } + return TRUE; +} + +ULONG TEXT_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data); + FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DEFAULT]))+1,MEMF_PUBLIC)) + strcpy((char *)((struct TagItem *)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data),GetString(PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DEFAULT])); + + return TRUE; +} + +ULONG TEXT_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_GADTOOLS, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)TextTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)TextOwnTagsTypes, + GAOBJ_ID,TEXT_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_TEXT_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + gtd=(struct GadToolsData *)GadgetData(ng); + + CopyTagItems(TextTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(TextOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + gtd->g_Kind=TEXT_KIND; + return (ULONG)obj; + } + return FALSE; +} + +int FN_PG_TEXT_FLAGS_DEFAULT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_BORDER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTTX_Border,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_COPYTEXT_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTTX_CopyText,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_JUSTIFICATION_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_LEFT; break; + case 1: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_RIGHT; break; + case 2: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_CENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_CLIPPED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GTTX_Clipped,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TEXT_FLAGS_HIGHLABEL_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + DoFlag(gtd->g_Flags,NG_HIGHLABEL); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/text.h b/GadToolsBox/PlugIns/text.h new file mode 100755 index 0000000..66dde1e --- /dev/null +++ b/GadToolsBox/PlugIns/text.h @@ -0,0 +1,9 @@ +#include"defines.h" + +#define TEXT_ID MAKE_ID('T','E','X','T') + +ULONG TEXT_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG TEXT_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG TEXT_INIT_Gadget(piClass *,piObject *,Msg); +ULONG TEXT_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG TEXT_READ_Gadget(piClass *,piObject *,struct piIO *); diff --git a/GadToolsBox/PlugIns/textfield.c b/GadToolsBox/PlugIns/textfield.c new file mode 100755 index 0000000..59e0221 --- /dev/null +++ b/GadToolsBox/PlugIns/textfield.c @@ -0,0 +1,528 @@ +/* +** TextField PlugIn +*/ + +#include"includes.h" +#include"textfield.h" + + +/* +** OwnTag definitions +*/ + +#define OWNTAG_Undo (TAG_USER+1) +#define OWNTAG_Clipboard (TAG_USER+2) + +/* +** Default Tags +*/ + +struct TagItem TextFieldTags[]= +{ + GA_Disabled,FALSE, + GA_TabCycle,FALSE, + TEXTFIELD_ReadOnly,FALSE, + TEXTFIELD_Partial,FALSE, + TEXTFIELD_BlockCursor,FALSE, + TEXTFIELD_VCenter,FALSE, + TEXTFIELD_PassCommand,FALSE, + TEXTFIELD_NonPrintChars,FALSE, + TEXTFIELD_MaxSizeBeep,FALSE, + TEXTFIELD_NoGhost,FALSE, + TEXTFIELD_Modified,FALSE, + TEXTFIELD_UserAlign,FALSE, + TEXTFIELD_RuledPaper,FALSE, + TEXTFIELD_Inverted,FALSE, + TEXTFIELD_Delimiters,NULL, + TEXTFIELD_AcceptChars,NULL, + TEXTFIELD_RejectChars,NULL, + TEXTFIELD_BlinkRate,0, + TEXTFIELD_MaxSize,0, + TEXTFIELD_TabSpaces,0, + TEXTFIELD_Spacing,0, + TEXTFIELD_Border,TEXTFIELD_BORDER_NONE, + TEXTFIELD_Alignment,TEXTFIELD_ALIGN_LEFT, + TAG_DONE,0 +}; + +UBYTE TextFieldTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER, + TAGTYPE_TEXT,TAGTYPE_TEXT,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem TextFieldOwnTags[]= +{ + OWNTAG_Undo,FALSE, + OWNTAG_Clipboard,FALSE, + TAG_DONE,0 +}; + +UBYTE TextFieldOwnTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 23 +#define GSIZE_NUMOWNTAGS 4 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_TFLD_PAGES[]= +{ + &PAGES_PROPERTIES_PG_TFLD_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_TFLD_PAGES[2], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PG_TFLD_PAGES[3], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG TEXTFIELD_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_INIT: + retval=TEXTFIELD_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=TEXTFIELD_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_TFLD_Flags(); + OpenWindow_PG_TFLD_Flags2(); + OpenWindow_PG_TFLD_Var(); + PAGES_PROPERTIES_PG_TFLD_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_TFLD_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_TFLD_PAGES[1].FirstGadget=PG_TFLD_FlagsGList; + PAGES_PROPERTIES_PG_TFLD_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L27_GAD); + PAGES_PROPERTIES_PG_TFLD_PAGES[2].FirstGadget=PG_TFLD_Flags2GList; + PAGES_PROPERTIES_PG_TFLD_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L28_GAD); + PAGES_PROPERTIES_PG_TFLD_PAGES[3].FirstGadget=PG_TFLD_VarGList; + PAGES_PROPERTIES_PG_TFLD_PAGES[3].Name=GetCatString(MSG_PROPERTIES_PAGES_L29_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_TFLD_PAGES[3].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TFLD_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TFLD_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TFLD_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_TFLD_Var(); + CloseWindow_PG_TFLD_Flags2(); + CloseWindow_PG_TFLD_Flags(); + break; + case OM_NEW: + retval=TEXTFIELD_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=TEXTFIELD_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=TEXTFIELD_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG TEXTFIELD_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_TABCYCLE],GetTagData(GA_TabCycle,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_READONLY],GetTagData(TEXTFIELD_ReadOnly,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_INVERTED],GetTagData(TEXTFIELD_Inverted,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_PARTIAL],GetTagData(TEXTFIELD_Partial,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_BLOCKCURSOR],GetTagData(TEXTFIELD_BlockCursor,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_VCENTER],GetTagData(TEXTFIELD_VCenter,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_PASSCOMMAND],GetTagData(TEXTFIELD_PassCommand,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_CLIPBOARD],GetTagData(OWNTAG_Clipboard,0,ng->ng_OwnTags)); + SetCheckMark(PropsWnd,PG_TFLD_FlagsGadgets[GD_PG_TFLD_FLAGS_UNDO],GetTagData(OWNTAG_Undo,0,ng->ng_OwnTags)); + + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_USERALIGN],GetTagData(TEXTFIELD_UserAlign,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_NOGHOST],GetTagData(TEXTFIELD_NoGhost,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_MODIFIED],GetTagData(TEXTFIELD_Modified,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_RULEDPAPER],GetTagData(TEXTFIELD_RuledPaper,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_NONPRINTCHARS],GetTagData(TEXTFIELD_NonPrintChars,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_MAXSIZEBEEP],GetTagData(TEXTFIELD_MaxSizeBeep,0,ng->ng_Tags)); + switch(GetTagData(TEXTFIELD_Alignment,0,ng->ng_Tags)) + { + case TEXTFIELD_ALIGN_LEFT: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_ALIGN],0); break; + case TEXTFIELD_ALIGN_RIGHT: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_ALIGN],1); break; + case TEXTFIELD_ALIGN_CENTER: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_ALIGN],2); break; + } + switch(GetTagData(TEXTFIELD_Border,0,ng->ng_Tags)) + { + case TEXTFIELD_BORDER_NONE: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_BORDER],0); break; + case TEXTFIELD_BORDER_BEVEL: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_BORDER],1); break; + case TEXTFIELD_BORDER_DOUBLEBEVEL: SetCycle(PropsWnd,PG_TFLD_Flags2Gadgets[GD_PG_TFLD_FLAGS_BORDER],2); break; + } + + if(active==3) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_BLINKRATE],GetTagData(TEXTFIELD_BlinkRate,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_MAXSIZE],GetTagData(TEXTFIELD_MaxSize,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_TABSPACES],GetTagData(TEXTFIELD_TabSpaces,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_SPACING],GetTagData(TEXTFIELD_Spacing,0,ng->ng_Tags)); + SetString(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_DELIMITERS],GetTagData(TEXTFIELD_Delimiters,0,ng->ng_Tags)); + SetString(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_ACCEPTCHARS],GetTagData(TEXTFIELD_AcceptChars,0,ng->ng_Tags)); + SetString(PropsWnd,PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_REJECTCHARS],GetTagData(TEXTFIELD_RejectChars,0,ng->ng_Tags)); + return TRUE; +} + +ULONG TEXTFIELD_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(TEXTFIELD_BlinkRate,ng->ng_Tags)->ti_Data=GetInteger(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_BLINKRATE]); + FindTagItem(TEXTFIELD_MaxSize,ng->ng_Tags)->ti_Data=GetInteger(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_MAXSIZE]); + FindTagItem(TEXTFIELD_TabSpaces,ng->ng_Tags)->ti_Data=GetInteger(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_TABSPACES]); + FindTagItem(TEXTFIELD_Spacing,ng->ng_Tags)->ti_Data=GetInteger(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_SPACING]); + + if(FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)->ti_Data); + FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)->ti_Data=NULL; + if(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_DELIMITERS]))>0) + { + if(FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_DELIMITERS]))+1,MEMF_ANY|MEMF_CLEAR)) + strcpy((char *)FindTagItem(TEXTFIELD_Delimiters,ng->ng_Tags)->ti_Data,GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_DELIMITERS])); + } + + if(FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)->ti_Data); + FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)->ti_Data=NULL; + if(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_ACCEPTCHARS]))>0) + { + if(FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_ACCEPTCHARS]))+1,MEMF_ANY|MEMF_CLEAR)) + strcpy((char *)FindTagItem(TEXTFIELD_AcceptChars,ng->ng_Tags)->ti_Data,GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_ACCEPTCHARS])); + } + + if(FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)->ti_Data); + FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)->ti_Data=NULL; + if(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_REJECTCHARS]))>0) + { + if(FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_REJECTCHARS]))+1,MEMF_ANY|MEMF_CLEAR)) + strcpy((char *)FindTagItem(TEXTFIELD_RejectChars,ng->ng_Tags)->ti_Data,GetString(PG_TFLD_VarGadgets[GD_PG_TFLD_VAR_REJECTCHARS])); + } + return TRUE; +} + +ULONG TEXTFIELD_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)TextFieldTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)TextFieldOwnTagsTypes, + GAOBJ_ID,TEXTFIELD_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_TFLD_PAGES, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(TextFieldTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(TextFieldOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + + return (ULONG)obj; + } + return FALSE; +} + +ULONG TEXTFIELD_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(TextFieldClass, NULL, + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG TEXTFIELD_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_TFLD_VAR_DELIMITERS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_ACCEPTCHARS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_REJECTCHARS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_BLINKRATE_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_MAXSIZE_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_TABSPACES_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_VAR_SPACING_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_READONLY_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_ReadOnly,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_PARTIAL_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_Partial,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_BLOCKCURSOR_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_BlockCursor,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_VCENTER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_VCenter,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_PASSCOMMAND_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_PassCommand,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_NONPRINTCHARS_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_NonPrintChars,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_TABCYCLE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_TabCycle,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_MAXSIZEBEEP_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_MaxSizeBeep,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_NOGHOST_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_NoGhost,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_MODIFIED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_Modified,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_USERALIGN_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_UserAlign,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_RULEDPAPER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_RuledPaper,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_INVERTED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(TEXTFIELD_Inverted,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_UNDO_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&ti); + FindTagItem(OWNTAG_Undo,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_CLIPBOARD_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&ti); + FindTagItem(OWNTAG_Clipboard,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_BORDER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(TEXTFIELD_Border,ti)->ti_Data=TEXTFIELD_BORDER_NONE; break; + case 1: FindTagItem(TEXTFIELD_Border,ti)->ti_Data=TEXTFIELD_BORDER_BEVEL; break; + case 2: FindTagItem(TEXTFIELD_Border,ti)->ti_Data=TEXTFIELD_BORDER_DOUBLEBEVEL; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TFLD_FLAGS_ALIGN_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + switch(PropertiesMsg.Code) + { + case 0: FindTagItem(TEXTFIELD_Alignment,ti)->ti_Data=TEXTFIELD_ALIGN_LEFT; break; + case 1: FindTagItem(TEXTFIELD_Alignment,ti)->ti_Data=TEXTFIELD_ALIGN_RIGHT; break; + case 2: FindTagItem(TEXTFIELD_Alignment,ti)->ti_Data=TEXTFIELD_ALIGN_CENTER; break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/PlugIns/textfield.h b/GadToolsBox/PlugIns/textfield.h new file mode 100755 index 0000000..636861b --- /dev/null +++ b/GadToolsBox/PlugIns/textfield.h @@ -0,0 +1,10 @@ +#include"defines.h" + +#define TEXTFIELD_ID MAKE_ID('T','F','L','D') + +ULONG TEXTFIELD_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG TEXTFIELD_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG TEXTFIELD_INIT_Gadget(piClass *,piObject *,Msg); +ULONG TEXTFIELD_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG TEXTFIELD_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG TEXTFIELD_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/PlugIns/treeview.c b/GadToolsBox/PlugIns/treeview.c new file mode 100755 index 0000000..7192d74 --- /dev/null +++ b/GadToolsBox/PlugIns/treeview.c @@ -0,0 +1,331 @@ +/* +** TreeView PlugIn +*/ + +#include"includes.h" +#include"treeview.h" + +/* +** OwnTag definitions +*/ + +/* +** Default Tags +*/ + +struct TagItem TreeViewTags[]= +{ + GA_Disabled,FALSE, + LIST_Labels,NULL, + LIST_ReadOnly,FALSE, + LIST_Border,FALSE, + LIST_Columns,1, + LIST_MultiSelect,FALSE, + LIST_ShowTreeLines,FALSE, + LIST_Format,NULL, + LIST_ShowSelected,FALSE, + LIST_IsTree,FALSE, + TAG_DONE,0 +}; + +UBYTE TreeViewTagsTypes[]= +{ + TAGTYPE_NUMBER,TAGTYPE_LIST,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_TEXT,TAGTYPE_NUMBER,TAGTYPE_NUMBER,TAGTYPE_DONE +}; + +struct TagItem TreeViewOwnTags[]= +{ + TAG_DONE,0 +}; + +UBYTE TreeViewOwnTagsTypes[]= +{ + TAGTYPE_DONE +}; + +#define GSIZE_NUMTAGS 10 +#define GSIZE_NUMOWNTAGS 0 + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGBO_General[]; + +struct Page PAGES_PROPERTIES_PG_TRLV_PAGES[]= +{ + &PAGES_PROPERTIES_PG_TRLV_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Create PlugIn +*/ + +ULONG TREEVIEW_Dispatcher_Gadget(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=TREEVIEW_DEFAULT_Gadget(cl,o,msg); + break; + case OM_INIT: + retval=TREEVIEW_INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=TREEVIEW_APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PG_TRLV_Flags(); + PAGES_PROPERTIES_PG_TRLV_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PG_TRLV_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L0_GAD); + PAGES_PROPERTIES_PG_TRLV_PAGES[1].FirstGadget=PG_TRLV_FlagsGList; + PAGES_PROPERTIES_PG_TRLV_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L40_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PG_TRLV_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PG_TRLV_PAGES[0].FirstGadget=NULL; + CloseWindow_PG_TRLV_Flags(); + break; + case OM_NEW: + retval=TREEVIEW_NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_DISPOSE: + retval=TREEVIEW_DISPOSE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=TREEVIEW_CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=TREEVIEW_DELETE_Gadget(cl,o,msg); + break; + default: + retval=piDoSuperMethodA(cl,o,msg); + break; + } + return retval; +} + +ULONG TREEVIEW_INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_BORDER],GetTagData(LIST_Border,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_DISABLED],GetTagData(GA_Disabled,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_SHOWSELECTED],GetTagData(LIST_ShowSelected,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_MULTISELECT],GetTagData(LIST_MultiSelect,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_SHOWTREELINES],GetTagData(LIST_ShowTreeLines,0,ng->ng_Tags)); + SetCheckMark(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_TREE],GetTagData(LIST_IsTree,0,ng->ng_Tags)); + SetInteger(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_COLUMNS],GetTagData(LIST_Columns,0,ng->ng_Tags)); + SetString(PropsWnd,PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_FORMAT],GetTagData(LIST_Format,0,ng->ng_Tags)); + + return TRUE; +} + +ULONG TREEVIEW_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + FindTagItem(LIST_Columns,ng->ng_Tags)->ti_Data=GetInteger(PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_COLUMNS]); + if(FindTagItem(LIST_Format,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(LIST_Format,ng->ng_Tags)->ti_Data); + FindTagItem(LIST_Format,ng->ng_Tags)->ti_Data=NULL; + if(FindTagItem(LIST_Format,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_FORMAT]))+1,MEMF_PUBLIC)) + strcpy((char *)FindTagItem(LIST_Format,ng->ng_Tags)->ti_Data,GetString(PG_TRLV_FlagsGadgets[GD_PG_TRLV_FLAGS_FORMAT])); + + return TRUE; +} + +ULONG TREEVIEW_DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoSuperMethodA(cl,o,msg); + + ng->ng_Width=100; + ng->ng_Height=100; + return TRUE; +} + +ULONG TREEVIEW_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Gadget *ng; + piObject *obj; + struct TagItem ti[]={ + GAOBJ_Type,GTYPE_BOOPSI, + GAOBJ_NumTags,GSIZE_NUMTAGS, + GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, + GAOBJ_TagTypes,(ULONG)TreeViewTagsTypes, + GAOBJ_OwnTagTypes,(ULONG)TreeViewOwnTagsTypes, + GAOBJ_ID,TREEVIEW_ID, + OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_TRLV_PAGES, + GAOBJLIST_List,1, + GAOBJLIST_Active,0, + GAOBJLIST_Tags,0, + TAG_DONE}; + + if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + + CopyTagItems(TreeViewTags,ng->ng_Tags,ng->ng_NumTags); + CopyTagItems(TreeViewOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); + FindTagItem(LIST_Labels,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct LVList),MEMF_PUBLIC); + NewList(List(FindTagItem(LIST_Labels,ng->ng_Tags)->ti_Data)); + return (ULONG)obj; + } + return FALSE; +} + +ULONG TREEVIEW_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct TagItem *ti; + struct LVList *l; + struct LVNode *n; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + l=(struct LVList *)FindTagItem(LIST_Labels,ti)->ti_Data; + while(n=(struct LVNode *)RemTail(List(l))) + { + if(n->ln_Name) MyFreeVec(n->ln_Name); + MyFreeVec(n); + } + MyFreeVec(l); + return piDoSuperMethodA(cl,o,msg); +} + +extern Class *ListViewClass; + +ULONG TREEVIEW_CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + WORD x,y,w,h; + + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + return (ULONG) (ng->ng_Gadget=NewObject(ListViewClass, NULL, + ng->ng_RelX?GA_RelRight:GA_Left,x, + ng->ng_RelY?GA_RelBottom:GA_Top,y, + ng->ng_RelWidth?GA_RelWidth:GA_Width,w, + ng->ng_RelHeight?GA_RelHeight:GA_Height,h, + (msg->Window) ? GA_Previous : TAG_IGNORE, msg->Window, + GA_ID,0, + TAG_MORE,ti)); +} + +ULONG TREEVIEW_DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Gadget && ng->ng_Window) RemoveGadget(((struct Node_Window *)OBJECT_DATA(ng->ng_Window))->nw_Window,ng->ng_Gadget); + if(ng->ng_Gadget) DisposeObject(ng->ng_Gadget); + ng->ng_Gadget=NULL; + return piDoSuperMethodA(cl,o,msg); +} + +int FN_PG_TRLV_FLAGS_COLUMNS_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_FORMAT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_SHOWSELECTED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_ShowSelected,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_READONLY_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_ReadOnly,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_DISABLED_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_SHOWTREELINES_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_ShowTreeLines,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_TREE_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_IsTree,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_MULTISELECT_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_MultiSelect,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_TRLV_FLAGS_BORDER_Clicked( void ) +{ + struct TagItem *ti; + piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); + FindTagItem(LIST_Border,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + diff --git a/GadToolsBox/PlugIns/treeview.h b/GadToolsBox/PlugIns/treeview.h new file mode 100755 index 0000000..df15834 --- /dev/null +++ b/GadToolsBox/PlugIns/treeview.h @@ -0,0 +1,12 @@ +#include"defines.h" + +#define TREEVIEW_ID MAKE_ID('T','R','L','V') + +ULONG TREEVIEW_Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG TREEVIEW_NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG TREEVIEW_INIT_Gadget(piClass *,piObject *,Msg); +ULONG TREEVIEW_APPLY_Gadget(piClass *,piObject *,Msg); +ULONG TREEVIEW_DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG TREEVIEW_DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG TREEVIEW_CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG TREEVIEW_DELETE_Gadget(piClass *,piObject *,Msg); diff --git a/GadToolsBox/SCOPTIONS b/GadToolsBox/SCOPTIONS new file mode 100755 index 0000000..2752a72 --- /dev/null +++ b/GadToolsBox/SCOPTIONS @@ -0,0 +1,24 @@ +DATA=FAR +CODE=FAR +NOSTACKCHECK +STRINGMERGE +NOCHECKABORT +ERRORREXX +NOMULTIPLEINCLUDES +MODIFIED +STRUCTUREEQUIVALENCE +OPTIMIZERSIZE +OPTIMIZERINLINELOCAL +VERBOSE +STRIPDEBUG +OPTIMIZERSCHEDULER +NOVERSION +ABSFUNCPOINTER +UTILITYLIBRARY +OPTIMIZERALIAS +STRINGSECTION=FAR +LIBRARY=lib:popupmenuclass.lib +IGNORE=154 +IGNORE=147 +GLOBALSYMBOLTABLE=include:all.gst +IDentifierLENgth=64 diff --git a/GadToolsBox/WinGen/SCOPTIONS b/GadToolsBox/WinGen/SCOPTIONS new file mode 100755 index 0000000..9c179d8 --- /dev/null +++ b/GadToolsBox/WinGen/SCOPTIONS @@ -0,0 +1,21 @@ +NOSTACKCHECK +STRINGMERGE +NOCHECKABORT +ERRORREXX +MODIFIED +LINK +OPTIMIZERSIZE +OPTIMIZERINLINELOCAL +SMALLCODE +SMALLDATA +VERBOSE +STRIPDEBUG +OPTIMIZERSCHEDULER +NOVERSION +UTILITYLIBRARY +MEMORYSIZE=HUGE +OPTIMIZERALIAS +PROGRAMNAME=win32resource.generator +GLOBALSYMBOLTABLE=include:all.gst +PUBSCREEN=SASPRJ.1 +main gadget menu gadtools gadtools_cat diff --git a/GadToolsBox/WinGen/gadget.c b/GadToolsBox/WinGen/gadget.c new file mode 100755 index 0000000..b273d1d --- /dev/null +++ b/GadToolsBox/WinGen/gadget.c @@ -0,0 +1,295 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +STRPTR ConvertString(STRPTR,BOOL); + +extern struct GUI *GUI; +extern struct Screen *Scr; + +void WIND_GenerateWindow(BPTR handle,piObject *wo) +{ + struct Node_Window *nw; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + + FPrintf(handle,"WND_%s DIALOGEX DISCARDABLE %ld, %ld, %ld, %ld\n",nw->nw_Label,nw->nw_X/4,nw->nw_Y/4,nw->nw_Width/4,nw->nw_Height/4); + FPrintf(handle,"STYLE WS_POPUP | WS_CAPTION"); + if(nw->nw_Flags&WFLG_SIZEGADGET) FPuts(handle,"| WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_THICKFRAME"); + else FPuts(handle,"| DS_MODALFRAME"); + if(nw->nw_Flags&WFLG_CLOSEGADGET) FPuts(handle,"| WS_SYSMENU"); + FPuts(handle,"\n"); + if((nw->nw_MyFlags&MYWA_DragToolHoriz) || (nw->nw_MyFlags&MYWA_DragToolVert)) + { + FPrintf(handle,"EXSTYLE WS_EX_TOOLWINDOW\n"); + } + if(nw->nw_MenuTitle[0]) FPrintf(handle,"MENU MN_%s",nw->nw_MenuTitle); + FPrintf(handle,"CAPTION \"%s\"\n",ConvertString(nw->nw_WindowTitle,FALSE)); + FPrintf(handle,"FONT 8, \"MS Sans Serif\", 0, 0, 0x1\n"); +} + +void FRAME_GenerateFrame(BPTR handle,piObject *fo) +{ + struct Node_Frame *nf; + struct Node_Window *nw; + + nf=(struct Node_Frame *)OBJECT_DATA(fo); + + FPuts(handle," "); + switch(nf->nf_FrameType) + { + default: + FPrintf(handle,"GROUPBOX \"\",-1,%ld,%ld,%ld,%ld",nf->nf_X/4,nf->nf_Y/4,nf->nf_Width/4,nf->nf_Height/4); + break; + case FTYPE_HORIZONTALLINE: + FPrintf(handle,"GROUPBOX \"\",-1,%ld,%ld,%ld,%ld",nf->nf_X/4,nf->nf_Y/4,nf->nf_Width/4+1,2); + break; + case FTYPE_VERTICALLINE: + FPrintf(handle,"GROUPBOX \"\",-1,%ld,%ld,%ld,%ld",nf->nf_X/4,nf->nf_Y/4,2,nf->nf_Height/4+1); + break; + } + FPuts(handle,"\n"); +} + +void WIND_GenerateInit(BPTR handle,piObject *wo) +{ + piObject *go; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct GadToolsData *gtd; + struct TagItem *ti; + struct Node *n; + BOOL doinit=FALSE; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case POPUPMENU_ID: + if(ti=FindTagItem(PUMG_Labels,ng->ng_Tags)) + if(!IsListEmpty(List(ti->ti_Data))) + doinit=TRUE; + break; + case CYCLE_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + if(!IsListEmpty(List(ti->ti_Data))) + doinit=TRUE; + break; + } + } + + if(doinit) + { + FPrintf(handle,"WND_%s DLGINIT\nBEGIN\n",nw->nw_Label); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + gtd=(struct GadToolsData *)GadgetData(ng); + switch(ng->ng_PlugInID) + { + case POPUPMENU_ID: + if(ti=FindTagItem(PUMG_Labels,ng->ng_Tags)) + if(!IsListEmpty(List(ti->ti_Data))) + for(n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n)) + FPrintf(handle," GD_%s, 0x403, %ld, 0, \"%s\"\n",ng->ng_Label,strlen(n->ln_Name)+1,n->ln_Name); + break; + case CYCLE_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + if(!IsListEmpty(List(ti->ti_Data))) + for(n=GetHead(ti->ti_Data);GetSucc(n);n=GetSucc(n)) + FPrintf(handle," GD_%s, 0x403, %ld, 0, \"%s\"\n",ng->ng_Label,strlen(n->ln_Name)+1,n->ln_Name); + break; + } + } + FPuts(handle,"END\n"); + } +} + +void GADGET_GenerateGadget(BPTR handle,piObject *go) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + struct GadToolsData *gtd; + struct TagItem *t,*ti; + struct Node *n; + int a; + + ng=(struct Node_Gadget *)OBJECT_DATA(go); + nw=(struct Node_Window *)OBJECT_DATA(ng->ng_Window); + gtd=(struct GadToolsData *)GadgetData(ng); + + FPuts(handle," "); + + switch(ng->ng_PlugInID) + { + case BUTTON_ID: + if(t=FindTagItem(TAG_USER+2,ng->ng_OwnTags)) + { + FPrintf(handle,"CONTROL \"%s\",GD_%s,\"Button\",BS_AUTOCHECKBOX|BS_PUSHALIKE|WS_TABSTOP",ConvertString(gtd->g_Text,TRUE),ng->ng_Label); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + FPrintf(handle,",%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + } + else + { + FPrintf(handle,"%s \"%s\",GD_%s,%ld,%ld,%ld,%ld",FindTagItem(GA_Immediate,ng->ng_Tags)->ti_Data?"DEFPUSHBUTTON":"PUSHBUTTON",ConvertString(gtd->g_Text,TRUE),ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,",WS_DISABLED"); + } + break; + case CHECKBOX_ID: + FPrintf(handle,"CONTROL \"%s\",GD_%s,\"Button\",BS_AUTOCHECKBOX|WS_TABSTOP",ConvertString(gtd->g_Text,TRUE),ng->ng_Label); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + if(gtd->g_Flags&PLACETEXT_RIGHT) FPuts(handle,"|BS_LEFTTEXT"); +// if(t=FindTagItem(GTCB_Checked,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"GTCB_Checked, TRUE, "); + FPrintf(handle,",%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(gtd->g_Flags&PLACETEXT_RIGHT) FPuts(handle,",WS_EX_RIGHT"); + break; + case COLORWHEEL_ID: + break; + case CYCLE_ID: + FPrintf(handle,"COMBOBOX GD_%s,%ld,%ld,%ld,%ld,CBD_DROPDOWN|WS_VSCROLL|WS_TABSTOP",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case DATATYPE_ID: + break; + case GRADIENTSLIDER_ID: + break; + case INTEGER_ID: + FPrintf(handle,"EDITTEXT GD_%s,%ld,%ld,%ld,%ld,ES_AUTOHSCROLL|ES_NUMBER|WS_TABSTOP",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(t=FindTagItem(STRINGA_Justification,ng->ng_Tags)) + { + switch(t->ti_Data) + { + case STRINGLEFT: break; + case STRINGCENTER: FPuts(handle,"|ES_CENTER"); break; + case STRINGRIGHT: FPuts(handle,"|ES_RIGHT"); break; + } + } + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + break; + case LISTVIEW_ID: + FPrintf(handle,"LISTBOX GD_%s,%ld,%ld,%ld,%ld,LBS_NOINTEGRALHEIGHT|LBS_DISABLENOSCROLL|WS_VSCROLL|WS_TABSTOP",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + break; + case MX_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + { + for(n=GetHead(ti->ti_Data),a=0;GetSucc(n);n=GetSucc(n),a++) + { + FPrintf(handle,"CONTROL \"%s\",GD_%s_%ld,\"Button\",BS_AUTORADIOBUTTON",ConvertString(n->ln_Name,TRUE),ng->ng_Label,a); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + if(a==0) FPuts(handle,"|WS_GROUP|WS_TABSTOP"); + if(gtd->g_Flags&PLACETEXT_RIGHT) FPuts(handle,"|BS_LEFTTEXT"); + FPrintf(handle,",%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4+a*ng->ng_Height/4+2,ng->ng_Width/4,ng->ng_Height/4); + if(gtd->g_Flags&PLACETEXT_RIGHT) FPuts(handle,",WS_EX_RIGHT"); + } + } + break; + case NUMBER_ID: + FPrintf(handle,"EDITTEXT GD_%s,%ld,%ld,%ld,%ld,ED_NUMBER|ES_READONLY",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case PAGE_ID: + FPrintf(handle,"CONTROL \"\",GD_%s,\"SysTabControl32\",0x0,%ld,%ld,%ld,%ld",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case PALETTE_ID: + break; + case POPUPMENU_ID: + FPrintf(handle,"COMBOBOX GD_%s,%ld,%ld,%ld,%ld,CBD_DROPDOWN|WS_VSCROLL|WS_TABSTOP",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case PROGRESS_ID: + FPrintf(handle,"CONTROL \"\",GD_%s,\"msctls_progress32\",",ng->ng_Label); + if(t=FindTagItem(PROG_Border,ng->ng_Tags)) FPuts(handle,"WS_BORDER,"); + else FPuts(handle,"0x0,"); + FPrintf(handle,"%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case SCROLLER_ID: + FPrintf(handle,"SCROLLBAR GD_%s,%ld,%ld,%ld,%ld",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + switch(t->ti_Data) + { + case LORIENT_HORIZ: FPuts(handle,"SBS_HORIZ"); break; + case LORIENT_VERT: FPuts(handle,"SBS_VERT"); break; + } + } + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + break; + case SLIDER_ID: + FPrintf(handle,"CONTROL \"%s\",GD_%s,\"msctls_trackbar32\",TBS_BOTH|TBS_AUTOTICKS|WS_TABSTOP",ConvertString(gtd->g_Text,TRUE),ng->ng_Label); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + if(t=FindTagItem(PGA_Freedom,ng->ng_Tags)) + { + FPuts(handle,"PGA_Freedom, "); + switch(t->ti_Data) + { + case LORIENT_HORIZ: break; + case LORIENT_VERT: FPuts(handle,"|SBS_VERT"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,",%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case STRING_ID: + FPrintf(handle,"EDITTEXT GD_%s,%ld,%ld,%ld,%ld,ES_AUTOHSCROLL",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + break; + case TAPEDECK_ID: + break; + case TEXT_ID: + FPrintf(handle,"EDITTEXT GD_%s,%ld,%ld,%ld,%ld,ES_READONLY",ng->ng_Label,ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case TEXTFIELD_ID: + FPrintf(handle,"CONTROL \"\",GD_%s,\"RICHEDIT\",ES_AUTOHSCROLL|ES_MULTILINE|ED_AUTOVSCROLL|ES_WANTRETURN|WS_VSCROLL|WS_HSCROLL|WS_TABSTOP",ng->ng_Label); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + if(t=FindTagItem(TEXTFIELD_ReadOnly,ng->ng_Tags)) FPuts(handle,"|ES_READONLY"); + if(t=FindTagItem(TEXTFIELD_Border,ng->ng_Tags)) + { + switch(t->ti_Data) + { + case TEXTFIELD_BORDER_NONE: FPuts(handle,""); break; + case TEXTFIELD_BORDER_BEVEL: FPuts(handle,"|WS_BORDER"); break; + case TEXTFIELD_BORDER_DOUBLEBEVEL: FPuts(handle,"|WS_BORDER"); break; + } + FPuts(handle,", "); + } + FPrintf(handle,"WS_TABSTOP,%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + case TREEVIEW_ID: + if(FindTagItem(LIST_IsTree,ng->ng_Tags)->ti_Data) + { + FPrintf(handle,"CONTROL \"\",GD_%s,\"SysTreeView32\",TVS_HASBUTTONS|TVS_LINESATROOT|TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS|WS_TABSTOP",ng->ng_Label); + if(t=FindTagItem(LIST_ShowTreeLines,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|TVS_HASLINES"); + } + else + { + FPrintf(handle,"CONTROL \"\",GD_%s,\"SysListView32\",LVS_REPORT|LVS_SHOWSELALWAYS|LVS_NOSORTHEADER|WS_TABSTOP",ng->ng_Label); + if(t=FindTagItem(LIST_MultiSelect,ng->ng_Tags)) if(!t->ti_Data) FPuts(handle,"|LVS_SINGLESEL"); + } + if(t=FindTagItem(LIST_Border,ng->ng_Tags)) FPuts(handle,"|WS_BORDER"); + if(t=FindTagItem(GA_Disabled,ng->ng_Tags)) if(t->ti_Data) FPuts(handle,"|WS_DISABLED"); + FPrintf(handle,",%ld,%ld,%ld,%ld",ng->ng_X/4,ng->ng_Y/4,ng->ng_Width/4,ng->ng_Height/4); + break; + } + FPuts(handle,"\n"); +} diff --git a/GadToolsBox/WinGen/gadtools.c b/GadToolsBox/WinGen/gadtools.c new file mode 100755 index 0000000..9b9f8cd --- /dev/null +++ b/GadToolsBox/WinGen/gadtools.c @@ -0,0 +1,586 @@ +/* +** Source code generated by GadToolsBox 3.0 (c) by Tomasz Muszynski +** GUI designed by: Tomasz Muszynski +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtools.h" +#include"gadtools_cat.h" + +TEXT VER_STRING[]=VER_SVER; + +struct Screen *Scr=NULL; +struct DrawInfo *DrawInfo=NULL; +APTR VisualInfo=NULL; +TEXT ScrTitle[256]; +TEXT ScrPubName[30]; +struct Catalog *Catalog=NULL; +struct Locale *Locale=NULL; +struct TextAttr *Font, Attr; +UWORD FontX, FontY; +BOOL GadgetLocaleDone[CNTWND_WINDOWS]; +BOOL WindowLocaleDone[CNTWND_WINDOWS]; +BOOL MenuLocaleDone[CNTMN_MENUS]; + + +/* Prefs Window structures */ +struct Window *PrefsWnd=NULL; +struct Gadget *PrefsGList=NULL; +struct Gadget *PrefsGadgets[CNT_Prefs]; +struct IntuiMessage PrefsMsg; + + +/* Prefs Window tags */ +ULONG PrefsWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 281, WA_Height, 139, WA_Title, (ULONG) MSG_Prefs_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP|CYCLEIDCMP, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_RMBTrap, TRUE, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Prefs Gadget structures */ +UBYTE *LABELS_LANGUAGE[]= +{ + (UBYTE *)MSG_LANGUAGE_L0_GAD, + (UBYTE *)MSG_LANGUAGE_L1_GAD, + (UBYTE *)MSG_LANGUAGE_L2_GAD, + NULL +}; + +/* Prefs Gadget tags */ +ULONG PrefsGTags[]= +{ + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_SAVE_GAD, GA_Left, 8, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_SAVE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_CANCEL_GAD, GA_Left, 184, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_CANCEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_USE_GAD, GA_Left, 96, GA_Top, 96, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_USE_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_LANGUAGE, GA_Text, (ULONG) MSG_LANGUAGE_GAD, GA_Left, 80, GA_Top, 4, GA_Width, 185, GA_Height, 19, GA_UserData, (ULONG) FN_LANGUAGE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_CONVUNDERSCORES_GAD, GA_Left, 192, GA_Top, 28, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_CONVUNDERSCORES_Clicked, TAG_DONE +}; + +/* Application functions */ + +UWORD InitApplication(STRPTR language) +{ + if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE; + Catalog=OpenCatalog(Locale,"win32resource.generator.catalog", + OC_BuiltInLanguage,"english", OC_Version, VER_VERSION, + language?OC_Language:TAG_IGNORE, language, TAG_DONE); + return GTBERR_OK; +} + +void FreeApplication() +{ + if(Catalog) CloseCatalog(Catalog); Catalog=NULL; +} + +STRPTR GetCatString(APTR fcstr) +{ + STRPTR defaultstr; + LONG strnum; + + strnum=((struct FC_Type *)fcstr)->ID; + defaultstr=((struct FC_Type *)fcstr)->Str; + + return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr); +} + +struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags) +{ + struct Gadget *g; + struct NewGadget ng; + ULONG kind,flags,x,y,w,h; + BOOL rx=0,ry=0,rw=0,rh=0; + struct TagItem *ti; + + kind=tags[0].ti_Tag; + flags=tags[0].ti_Data; + tags=&tags[1]; + + if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx; + else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; } + + if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy; + else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; } + + if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data); + else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; } + + if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data); + else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; } + + switch(kind) + { + case BUTTON_KIND: + case CHECKBOX_KIND: + case INTEGER_KIND: + case LISTVIEW_KIND: + case MX_KIND: + case NUMBER_KIND: + case CYCLE_KIND: + case PALETTE_KIND: + case SCROLLER_KIND: + case SLIDER_KIND: + case STRING_KIND: + case TEXT_KIND: + ng.ng_LeftEdge=x; + ng.ng_TopEdge=y; + ng.ng_Width=w; + ng.ng_Height=h; + ng.ng_Flags=flags; + ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags); + ng.ng_GadgetID=GetTagData(GA_ID,0,tags); + ng.ng_GadgetText=(char *)GetTagData(GA_Text,0,tags); + ng.ng_VisualInfo=VisualInfo; + ng.ng_TextAttr=Font; + g=CreateGadgetA(kind,prev,&ng,tags); + if(!g) return g; + if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT; + if(rx) g->Flags|=GFLG_RELRIGHT; + if(ry) g->Flags|=GFLG_RELBOTTOM; + if(rw) g->Flags|=GFLG_RELWIDTH; + if(rh) g->Flags|=GFLG_RELHEIGHT; + break; + } + return g; +} + +void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags) +{ + switch(tags[0].ti_Tag) + { + case COLORWHEEL_KIND: + case GRADIENTSLIDER_KIND: + case PAGE_KIND: + case POPUPMENU_KIND: + case PROGRESS_KIND: + case TAPEDECK_KIND: + case TEXTFIELD_KIND: + case TREEVIEW_KIND: + DisposeObject(g); + break; + case TOOLIMAGE_KIND: + g->GadgetRender=g->SelectRender=NULL; + break; + } +} + +struct Window *OpenWindowTagsEx(ULONG tags,...) +{ + struct Gadget *g=NULL; + struct Window *win; + struct TagItem *ti,*clone=NULL; + BOOL tbg=FALSE,rx=FALSE,ry=FALSE,rw=FALSE,rh=FALSE; + ULONG left,top,width,height; + + clone=CloneTagItems((struct TagItem *)&tags); + if(ti=FindTagItem(WA_ToolDragBar,clone)) + { + if(g=AllocMem(sizeof(struct Gadget),MEMF_ANY|MEMF_CLEAR)) + { + g->LeftEdge=0; + g->TopEdge=0; + g->Flags=GFLG_GADGHNONE; + g->GadgetType=GTYP_WDRAGGING; + g->UserData=(APTR)DRAG_ID; + if(ti->ti_Data==TOOL_HORIZ) + { + g->Activation=GACT_TOPBORDER|GACT_BORDERSNIFF; + g->Width=32767; + g->Height=8; + } + else + { + g->Activation=GACT_LEFTBORDER|GACT_BORDERSNIFF; + g->Width=8; + g->Height=32767; + } + } + else return NULL; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_RelWidth,clone)) + { + rw=TRUE; + width=(Scr->Width)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelHeight,clone)) + { + rh=TRUE; + height=(Scr->Height)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_CenterX,clone)) + { + rx=TRUE; + left=(Scr->Width/2)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_CenterY,clone)) + { + ry=TRUE; + top=(Scr->Height/2)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelRight,clone)) + { + rx=TRUE; + left=(Scr->Width)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelBottom,clone)) + { + ry=TRUE; + top=(Scr->Height)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_Gadgets,clone)) + { + if(g) + { + g->NextGadget=(struct Gadget *)ti->ti_Data; + ti->ti_Data=(ULONG)g; + tbg=TRUE; + } + if(ti->ti_Data==NULL) ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_FontAdaptive,clone)) + { + width=AdaptX(width); + height=AdaptY(height); + ti->ti_Tag=TAG_IGNORE; + if(ti=FindTagItem(WA_Width,clone)) ti->ti_Data=AdaptX(ti->ti_Data); + if(ti=FindTagItem(WA_Height,clone)) ti->ti_Data=AdaptY(ti->ti_Data); + } + + if(!(win=OpenWindowTags(NULL, + rx?WA_Left:TAG_IGNORE,left, + ry?WA_Top:TAG_IGNORE,top, + rw?WA_Width:TAG_IGNORE,width, + rh?WA_Height:TAG_IGNORE,height, + TAG_MORE,(ULONG)clone))) + if(g) FreeMem(win,sizeof(struct Gadget)); + + if(clone) FreeTagItems(clone); + return win; +} + +void CloseWindowEx(struct Window *win) +{ + struct Gadget *g,*drag=NULL; + + g=win->FirstGadget; + while(g) + { + if(((ULONG)g->UserData)==DRAG_ID) { drag=g; break; } + g=g->NextGadget; + } + CloseWindow(win); + if(drag) FreeMem(drag,sizeof(struct Gadget)); +} + +void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE); + + if(ti=FindTagItem(WA_ToolDragBar,tags)) + { + if(ti->ti_Data==TOOL_HORIZ) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + } + else + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + } + } + else + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(GetTagData(WA_Title,NULL,tags)) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS); + + if(ti=FindTagItem(WA_SizeGadget,tags)) + sg=ti->ti_Data; + else + sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET); + + if(ti=FindTagItem(WA_SizeBBottom,tags)) + sbb=ti->ti_Data; + else + sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM); + + if(ti=FindTagItem(WA_SizeBRight,tags)) + sbr=ti->ti_Data; + else + sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT); + + if(im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE)) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} +UWORD AdaptX(UWORD value) +{ + return((UWORD)(((FontX*value)+3)/7)); +} + +UWORD AdaptY(UWORD value) +{ + return((UWORD)(((FontY*value)+6)/13)); +} + +void CalcAdaptivity(UWORD width, UWORD height) +{ + Font = &Attr; + Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name; + Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize; + FontX = Scr->RastPort.Font->tf_XSize; + + if(width && height) + if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz; + return; + +UseTopaz: + Font->ta_Name = (STRPTR)"topaz.font"; + FontX = FontY = Font->ta_YSize = 8; +} + +void FixGadgetTags(struct TagItem *tags) +{ + ULONG kind,a; + UBYTE **labels; + struct TagItem *ti; + struct Node *node; + + kind=tags[0].ti_Tag; + tags=&tags[1]; + + if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + + switch(kind) + { + case LISTVIEW_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ) + node->ln_Name=GetCatString((APTR)node->ln_Name); + break; + case MX_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case NUMBER_KIND: + if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case CYCLE_KIND: + if(ti=FindTagItem(GTCY_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case SLIDER_KIND: + if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case STRING_KIND: + if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case TEXT_KIND: + if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + } +} + +void FixWindowTags(struct TagItem *tags) +{ + struct TagItem *ti; + + if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); +} + +void FixMenus(struct NewMenu *menu) +{ + ULONG a; + + for(a=0;menu[a].nm_Type!=NM_END;a++) + if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label)) + { + menu[a].nm_CommKey=GetCatString(menu[a].nm_Label); + menu[a].nm_Label=menu[a].nm_CommKey+2; + if(menu[a].nm_CommKey[0]=='\0') menu[a].nm_CommKey=NULL; + } +} + +/* Screen functions */ + +UWORD SetupScreen(UBYTE Num) +{ + UWORD OffX,OffY; + + if(!(Scr=LockPubScreen(ScrPubName))) return GTBERR_OPENSCREEN; + OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1; + + CalcAdaptivity(0,0); + if(!(VisualInfo=GetVisualInfo(Scr,TAG_DONE))) return GTBERR_VISUALINFO; + + if(!(DrawInfo=GetScreenDrawInfo(Scr))) return GTBERR_SCRDRAWINFO; + + return GTBERR_OK; +} + +void CloseDownScreen() +{ + if(DrawInfo) FreeScreenDrawInfo(Scr,DrawInfo); DrawInfo=NULL; + if(VisualInfo) FreeVisualInfo(VisualInfo); VisualInfo=NULL; + if(Scr) UnlockPubScreen(NULL,Scr); Scr=NULL; +} + +int HandleIDCMP_Prefs() +{ + struct IntuiMessage *m; + int (*func)(void); + BOOL running = TRUE; + + while(m=GT_GetIMsg(PrefsWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&PrefsMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(PrefsMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Prefs(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )PrefsMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_Prefs() +{ + UWORD OffX=PrefsWnd->BorderLeft, OffY=PrefsWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( PrefsWnd->RPort, AdaptX(8)+OffX, AdaptY(88)+OffY, AdaptX(257), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_Prefs() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&PrefsGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PrefsWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PrefsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags),(struct TagItem *)PrefsWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcljQ5Xb-TIZ`bUA*xgfBnB_68DQ&x8oQ3ENSw%yLzo)NeN7`$Te6cNI+>Y` zPs7N!;3M!ISm4gCP#PtWj>K<>&Ug2$-0#l!?zMYf7pR-gz#KVFa0cK3bkraq1ctWf zljaFD`rWX6asZ@GCc)+p)A;3!RAtE`jZ|}@VwHyTB;BxcKUIU|I?Qg2?jpPS7-#RN z`x)i-sC>(FsT5qzkR#|PCM5YrS7AI+#rTxKu1ucQIyh%bD1JU1x8#T+8n4z~|oVtuT(%Y=<}Rt;-tw@jCm!->vLva=T~U z2U*3-zGyE3);o(3i!an~YE=7&TxzAR({i1l<@`GVG)41RT#UwldJd=y)wvZt<~Pc` zv}<^1$CKGKyE1||Sb3oN`=Fn&0Ues77U4u4^Tui}MtNYFy%AB%@D0!CZc>~EtfQRu z++pCJ(yhhndA5&q8>@|(;iS-@MM)!}#(+g$W=B{_yj1DjSi~19&7y?vI91C6qnBuV RU9S5>=pf$ZQCVCL#cyuci>v?u literal 0 HcmV?d00001 diff --git a/GadToolsBox/WinGen/gadtools.h b/GadToolsBox/WinGen/gadtools.h new file mode 100755 index 0000000..3b98bf9 --- /dev/null +++ b/GadToolsBox/WinGen/gadtools.h @@ -0,0 +1,111 @@ +#ifndef gadtools_H +#define gadtools_H +/* +** gadtools.h Header File +*/ + +#include +#include + +#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer ) +#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt ) +#define TOOL_HORIZ 0 +#define TOOL_VERT 1 + +#define DRAG_ID MAKE_ID('D','R','A','G') + +#define COLORWHEEL_KIND 10000 +#define DATATYPE_KIND 10001 +#define GRADIENTSLIDER_KIND 10002 +#define PAGE_KIND 10003 +#define POPUPMENU_KIND 10004 +#define PROGRESS_KIND 10005 +#define TAPEDECK_KIND 10006 +#define TEXTFIELD_KIND 10007 +#define TOOLIMAGE_KIND 10008 + +#define TREEVIEW_KIND 10009 +#define VER_PROGRAMNAME "win32resource.generator" +#define VER_AUTHOR "Tomasz Muszynski" +#define VER_VERSION 1 +#define VER_REVISION 0 +#define VER_SVER "\0$VER: "VER_PROGRAMNAME" 1.0 "__AMIGADATE__"" + +#define WA_CenterX (WA_Dummy + 0x100) +#define WA_CenterY (WA_Dummy + 0x101) +#define WA_RelRight (WA_Dummy + 0x102) +#define WA_RelBottom (WA_Dummy + 0x103) +#define WA_RelWidth (WA_Dummy + 0x104) +#define WA_RelHeight (WA_Dummy + 0x105) +#define WA_ToolDragBar (WA_Dummy + 0x106) +#define WA_FontAdaptive (WA_Dummy + 0x107) +#define GTBERR_OK 0 +#define GTBERR_LOCALE 12 +#define GTBERR_CREATEPOINTER 15 +#define GTBERR_CREATEIMAGE 16 +#define GTBERR_OPENSCREEN 200 +#define GTBERR_VISUALINFO 201 +#define GTBERR_SCRDRAWINFO 202 +#define GTBERR_CREATECONTEXT 300 +#define GTBERR_CREATEGADGET 301 +#define GTBERR_CREATEMENUS 302 +#define GTBERR_OPENWINDOW 303 + +extern TEXT ScrTitle[]; +extern TEXT ScrPubName[]; +extern struct Screen *Scr; +extern struct DrawInfo *DrawInfo; +extern APTR VisualInfo; +extern struct TextAttr *Font, Attr; + +extern struct Window *PrefsWnd; +extern struct Gadget *PrefsGList; +extern ULONG PrefsWTags[]; +extern struct IntuiMessage PrefsMsg; +extern struct Gadget *PrefsGadgets[]; +#define WND_Prefs 0 + +#define CNTWND_WINDOWS 2 + +extern ULONG PrefsGTags[]; +extern struct SmartBitMapIRGB ToolBarPalette[]; +#define CNTMN_MENUS 1 + + +#define CNT_Prefs 5 +#define GD_SAVE 0 +#define GD_CANCEL 1 +#define GD_USE 2 +#define GD_LANGUAGE 3 +#define GD_CONVUNDERSCORES 4 + +/* Prototypes */ +int FN_SAVE_Clicked(void); +int FN_CANCEL_Clicked(void); +int FN_USE_Clicked(void); +int FN_LANGUAGE_Clicked(void); +int FN_CONVUNDERSCORES_Clicked(void); + +int HandleIDCMP_Prefs(void); +void Render_Prefs(void); +int FN_CloseWindow_Prefs(void); +UWORD OpenWindow_Prefs(void); +void CloseWindow_Prefs(void); + +UWORD SetupScreen(UBYTE); +void CloseDownScreen(void); +UWORD InitApplication(STRPTR); +void FreeApplication(void); + +struct Gadget *CreateGadgetExA(UWORD,UWORD,UWORD,UWORD,struct Gadget *,struct TagItem *); +void DeleteGadgetExA(struct Gadget *,struct TagItem *); +struct Window *OpenWindowTagsEx(ULONG, ...); +void CloseWindowEx(struct Window *); +void CalcLeftTop(UWORD *,UWORD *,struct TagItem *); +void CalcRightBottom(UWORD *,UWORD *,struct TagItem *); +UWORD AdaptX(UWORD); +UWORD AdaptY(UWORD); +void CalcAdaptivity(UWORD,UWORD); +STRPTR GetCatString(APTR); + +#endif /* gadtools_H */ diff --git a/GadToolsBox/WinGen/gadtools_cat.c b/GadToolsBox/WinGen/gadtools_cat.c new file mode 100755 index 0000000..655f747 --- /dev/null +++ b/GadToolsBox/WinGen/gadtools_cat.c @@ -0,0 +1,19 @@ +/* +** gadtools_cat.c Catalog File +*/ + +#include +#include"gadtools_cat.h" + +const struct FC_Type _MSG_SCREENTITLE_SCR = { 0, "" }; +const struct FC_Type _MSG_Prefs_WND = { 1, "Prefs: win32resource.generator" }; +const struct FC_Type _MSG_SAVE_GAD = { 2, "_Save" }; +const struct FC_Type _MSG_CANCEL_GAD = { 3, "_Cancel" }; +const struct FC_Type _MSG_USE_GAD = { 4, "_Use" }; +const struct FC_Type _MSG_LANGUAGE_GAD = { 5, "Language:" }; +const struct FC_Type _MSG_LANGUAGE_L0_GAD = { 6, "English UK" }; +const struct FC_Type _MSG_LANGUAGE_L1_GAD = { 7, "English US" }; +const struct FC_Type _MSG_LANGUAGE_L2_GAD = { 8, "Polish" }; +const struct FC_Type _MSG_CONVUNDERSCORES_GAD = { 9, "Convert underscores:" }; + + diff --git a/GadToolsBox/WinGen/gadtools_cat.h b/GadToolsBox/WinGen/gadtools_cat.h new file mode 100755 index 0000000..dd2401d --- /dev/null +++ b/GadToolsBox/WinGen/gadtools_cat.h @@ -0,0 +1,37 @@ +#ifndef gadtools_cat_H +#define gadtools_cat_H +/* +** gadtools_cat.h Catalog Header File +*/ + +#include + +struct FC_Type +{ + LONG ID; + STRPTR Str; +}; + +extern const struct FC_Type _MSG_SCREENTITLE_SCR; +#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR) +extern const struct FC_Type _MSG_Prefs_WND; +#define MSG_Prefs_WND ((APTR) &_MSG_Prefs_WND) +extern const struct FC_Type _MSG_SAVE_GAD; +#define MSG_SAVE_GAD ((APTR) &_MSG_SAVE_GAD) +extern const struct FC_Type _MSG_CANCEL_GAD; +#define MSG_CANCEL_GAD ((APTR) &_MSG_CANCEL_GAD) +extern const struct FC_Type _MSG_USE_GAD; +#define MSG_USE_GAD ((APTR) &_MSG_USE_GAD) +extern const struct FC_Type _MSG_LANGUAGE_GAD; +#define MSG_LANGUAGE_GAD ((APTR) &_MSG_LANGUAGE_GAD) +extern const struct FC_Type _MSG_LANGUAGE_L0_GAD; +#define MSG_LANGUAGE_L0_GAD ((APTR) &_MSG_LANGUAGE_L0_GAD) +extern const struct FC_Type _MSG_LANGUAGE_L1_GAD; +#define MSG_LANGUAGE_L1_GAD ((APTR) &_MSG_LANGUAGE_L1_GAD) +extern const struct FC_Type _MSG_LANGUAGE_L2_GAD; +#define MSG_LANGUAGE_L2_GAD ((APTR) &_MSG_LANGUAGE_L2_GAD) +extern const struct FC_Type _MSG_CONVUNDERSCORES_GAD; +#define MSG_CONVUNDERSCORES_GAD ((APTR) &_MSG_CONVUNDERSCORES_GAD) + + +#endif /* gadtools_cat_H */ diff --git a/GadToolsBox/WinGen/gadtools_img.c b/GadToolsBox/WinGen/gadtools_img.c new file mode 100755 index 0000000..e159dbc --- /dev/null +++ b/GadToolsBox/WinGen/gadtools_img.c @@ -0,0 +1,9 @@ +/* +** gadtools_img.c Images File +*/ + +#include +#include +#include"gadtools.h" + + diff --git a/GadToolsBox/WinGen/main.c b/GadToolsBox/WinGen/main.c new file mode 100755 index 0000000..9dad3ce --- /dev/null +++ b/GadToolsBox/WinGen/main.c @@ -0,0 +1,810 @@ +/* +** Win32Res Source code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" +#include"gadtools.h" +#include"gadtools_cat.h" + +#define Leave(x) { printf(x); goto end; } + +/* +** Protos +*/ + +void SavePrefs(STRPTR); +void LoadPrefs(STRPTR); +BOOL GenerateSourceCode(STRPTR); +void GenerateMainScript(BPTR); +void GenerateHeader(BPTR); +void GenerateImages(BPTR); +BOOL CheckPlugIn(ULONG); +BOOL CheckBOOPSIWindow(piObject *); +BOOL CheckDataTypeWindow(piObject *); +BOOL CheckGadToolsWindow(piObject *); +BOOL CheckPlugInWindow(piObject *,ULONG); +BOOL CheckAppWindow(void); +BOOL CheckToolBarWindows(void); +BOOL CheckToolBarWindow(piObject *); +BOOL CheckProjectWindow(void); +STRPTR ConvertString(STRPTR,BOOL); + +void GADGET_GenerateGadget(BPTR,piObject *); +void WIND_GenerateWindow(BPTR,piObject *); +void WIND_GenerateInit(BPTR,piObject *); +void MENU_GenerateMenu(BPTR,piObject *); +void FRAME_GenerateFrame(BPTR,piObject *); + +#define SetProgress(prg) SetGadgetAttrs(GTBSem->gs_Progress,GTBSem->gs_Window,NULL,PROG_CurVal,prg,TAG_DONE) +#define IFF_Error(num) \ + { \ + printf("IFFError #%d",num); \ + goto skip; \ + } + +struct Lang +{ + STRPTR str; + STRPTR sub; + UWORD codepage; +}; + +struct Lang languages[]= +{ + "ENGLISH","ENGLISH_UK",1252, + "ENGLISH","ENGLISH_US",1252, + "POLISH","DEFAULT",1250, +}; + +/* +** Variables +*/ + +struct GTBSemaphore *GTBSem; +struct GUI *GUI; +extern struct Screen *Scr; +STRPTR BaseName; +BOOL OPT_ConvUS,OPT_CurLang; +struct SavePrefs SP; + +#define TEMPLATE "FILE/K,SEMAPHORE/A,SETPREFS/S" +#define ARG_FILE 0 +#define ARG_SEMAPHORE 1 +#define ARG_SETPREFS 2 +#define ARG_COUNT 3 + +char DEF_FILE[]="\0"; +char DEF_SEMAPHORE[]="\0"; +ULONG DEF_SETPREFS=FALSE; + +BOOL setprefs=FALSE; +TEXT fn[256]; +TEXT semaphore[256]; + + +/* +** Main Code +*/ + +void main(int argc, char *argv[]) +{ + struct RDArgs *rdargs; + long *(opts[ARG_COUNT]); + int running=1; + + if(argc!=0) + { + opts[ARG_FILE]=(long *)DEF_FILE; + opts[ARG_SEMAPHORE]=(long *)DEF_SEMAPHORE; + opts[ARG_SETPREFS]=(long *)DEF_SETPREFS; + + if(rdargs=ReadArgs(TEMPLATE,(long *) opts, NULL)) + { + strcpy(fn,(char *)opts[ARG_FILE]); + strcpy(semaphore,(char *)opts[ARG_SEMAPHORE]); + setprefs=(ULONG)opts[ARG_SETPREFS]; + + FreeArgs(rdargs); + } + else + { + PrintFault(IoErr(),argv[0]); + exit(IoErr()); + } + } + + if(GTBSem=(struct GTBSemaphore *)FindSemaphore(semaphore)) ObtainSemaphoreShared(>BSem->gs_Semaphore); else Leave("GadToolsBox 3 is not running!\n"); + GUI=GTBSem->gs_GUI; + strcpy(ScrPubName,GUI->gui_PubScreenName); + + LoadPrefs("ENV:GadToolsBox/win32resource.generator.prefs"); + + if(setprefs) + { + if(!InitApplication(NULL)) + { + if(!SetupScreen(0)) + { + if(!OpenWindow_Prefs()) + { + SetCheckMark(PrefsWnd,PrefsGadgets[GD_CONVUNDERSCORES],SP.spr_Flags&MYPR_ConvUS); + SetCycle(PrefsWnd,PrefsGadgets[GD_LANGUAGE],SP.spr_CodePage); + while(running==1 || running==2) + { + Wait(1L<UserPort->mp_SigBit); + running=HandleIDCMP_Prefs(); + } + CloseWindow_Prefs(); + } + CloseDownScreen(); + } + FreeApplication(); + } + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); + exit(0); + } + + if(!(Scr=LockPubScreen(GUI->gui_PubScreenName))) Leave("Can't LockPubScreen\n"); + OPT_ConvUS=SP.spr_Flags&MYPR_ConvUS; + OPT_CurLang=SP.spr_CodePage; + GenerateSourceCode(fn); +end: + if(Scr) UnlockPubScreen(NULL,Scr); + if(GTBSem) ReleaseSemaphore(>BSem->gs_Semaphore); +} + +BOOL CheckPlugIn(ULONG id) +{ + piObject *wo,*go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if(ng->ng_PlugInID==id) return TRUE; + } + } + return FALSE; +} + +BOOL CheckBOOPSIWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==COLORWHEEL_ID || + ng->ng_PlugInID==GRADIENTSLIDER_ID || + ng->ng_PlugInID==PAGE_ID || + ng->ng_PlugInID==POPUPMENU_ID || + ng->ng_PlugInID==PROGRESS_ID || + ng->ng_PlugInID==TAPEDECK_ID || + ng->ng_PlugInID==TEXTFIELD_ID || + ng->ng_PlugInID==TREEVIEW_ID) return TRUE; + } + return FALSE; +} + +BOOL CheckDataTypeWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==DATATYPE_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckPlugInWindow(piObject *wo,ULONG id) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==id ) return TRUE; + } + return FALSE; +} + +BOOL CheckGadToolsWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID || + ng->ng_PlugInID==CHECKBOX_ID || + ng->ng_PlugInID==CYCLE_ID || + ng->ng_PlugInID==INTEGER_ID || + ng->ng_PlugInID==LISTVIEW_ID || + ng->ng_PlugInID==NUMBER_ID || + ng->ng_PlugInID==MX_ID || + ng->ng_PlugInID==PALETTE_ID || + ng->ng_PlugInID==SCROLLER_ID || + ng->ng_PlugInID==SLIDER_ID || + ng->ng_PlugInID==STRING_ID || + ng->ng_PlugInID==TEXT_ID ) return TRUE; + } + return FALSE; +} + +BOOL CheckToolBarWindows() +{ + piObject *go,*wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + } + return FALSE; +} + +BOOL CheckToolBarWindow(piObject *wo) +{ + piObject *go; + struct Node_Window *nw; + struct Node_Gadget *ng; + + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + if( ng->ng_PlugInID==BUTTON_ID) + { + if(FindTagItem(TAG_USER+1,ng->ng_OwnTags)->ti_Data>0) return TRUE; + } + } + return FALSE; +} + +BOOL CheckAppWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_AppWindow) return TRUE; + } + return FALSE; +} + +BOOL CheckProjectWindow() +{ + piObject *wo; + struct Node_Window *nw; + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + GetFlag(nw->nw_MyFlags,MYWA_Project) return TRUE; + } + return FALSE; +} + +BOOL GenerateSourceCode(STRPTR basename) +{ + TEXT fname[108]; + BPTR file=NULL; + struct Node_Version *nv; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + BaseName=FilePart(basename); + + sprintf(fname,"%s.rc",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateMainScript(file); + Close(file); + } + + SetProgress(50L); + + sprintf(fname,"%s.h",basename); + if(file=Open(fname,MODE_NEWFILE)) + { + GenerateHeader(file); + Close(file); + } + + SetProgress(100L); + + return TRUE; +} + +void GenerateMainScript(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Menu *nm; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + SetProgress(0L); + +/* Header */ + FPrintf(handle,"//" \ + "\n// Resource script generated by GadToolsBox %ld.%ld (c) by Tomasz Muszynski\n" \ + "// GUI designed by: %s\n" \ + "//\n\n",GUI->gui_Version,GUI->gui_Revision,nv->nv_Author); + + SetProgress(2L); + +/* Includes */ + FPrintf(handle,"#include\"%s.h\"\n",BaseName); + FPuts(handle,"\n"); + + FPrintf(handle,"#define APSTUDIO_READONLY_SYMBOLS\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Generated from the TEXTINCLUDE 2 resource.\n"\ + "//\n"\ + "#include \"afxres.h\"\n"\ + "\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "#undef APSTUDIO_READONLY_SYMBOLS\n"\ + "\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "// English resources\n"\ + "\n"\ + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PLK)\n"\ + "#ifdef _WIN32\n"\ + "LANGUAGE LANG_%s, SUBLANG_%s\n"\ + "#pragma code_page(%ld)\n"\ + "#endif //_WIN32\n\n",languages[OPT_CurLang].str,languages[OPT_CurLang].sub,languages[OPT_CurLang].codepage); + + SetProgress(10L); + + SetProgress(20L); + +/* Windows releated definitions */ + FPuts(handle,"\n/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Dialog\n"\ + "//\n"); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + FPuts(handle,"\n"); + WIND_GenerateWindow(handle,wo); + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + FPuts(handle,"BEGIN\n"); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + GADGET_GenerateGadget(handle,go); + for(go=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(go);go=(piObject *)GetSucc(go)) + FRAME_GenerateFrame(handle,go); + FPuts(handle,"END\n"); + } + } + FPuts(handle,"\n"); + + SetProgress(30L); + +/* Menu definitions */ + FPuts(handle,"\n/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Menu\n"\ + "//\n"); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo)) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + MENU_GenerateMenu(handle,mo); + } + + SetProgress(50L); + +/* Windows releated definitions */ + FPuts(handle,"\n/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Dialog Info\n"\ + "//\n"); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + WIND_GenerateInit(handle,wo); + } + FPuts(handle,"\n"); + +/* Menu definitions */ + FPuts(handle,"\n#ifndef _MAC\n/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Version\n"\ + "//\n\n"); + FPuts(handle,"VS_VERSION_INFO VERSIONINFO\n"); + FPrintf(handle," FILEVERSION %ld,%ld\n",nv->nv_Version,nv->nv_Revision); + FPrintf(handle," PRODUCTVERSION %ld,%ld\n",nv->nv_Version,nv->nv_Revision); + FPuts(handle," FILEFLAGSMASK 0x3fL\n"); + FPuts(handle,"#ifdef _DEBUG\n"); + FPuts(handle," FILEFLAGS 0x1L\n"); + FPuts(handle,"#else\n"); + FPuts(handle," FILEFLAGS 0x0L\n"); + FPuts(handle,"#endif\n"); + FPuts(handle," FILEOS 0x40004L\n"); + FPuts(handle," FILETYPE 0x1L\n"); + FPuts(handle," FILESUBTYPE 0x0L\n"); + FPuts(handle,"BEGIN\n"); + FPuts(handle," BLOCK \"StringFileInfo\"\n"); + FPuts(handle," BEGIN\n"); + FPuts(handle," BLOCK \"041504b0\"\n"); + FPuts(handle," BEGIN\n"); +// FPuts(handle," VALUE \"Comments\", \"\\0\"\n"); +// FPuts(handle," VALUE \"CompanyName\", \"Union Systems\\0\"\n"); +// FPuts(handle," VALUE \"FileDescription\", \"To jest example skrypt\\0\"\n"); + FPrintf(handle," VALUE \"FileVersion\", \"%ld,%ld\\0\"\n",nv->nv_Version,nv->nv_Revision); + FPrintf(handle," VALUE \"InternalName\", \"%s\\0\"\n",nv->nv_ProgramName); + FPrintf(handle," VALUE \"LegalCopyright\", \"Copyright © 1998 by %s\\0\"\n",nv->nv_Author); +// FPuts(handle," VALUE \"LegalTrademarks\", \"TM by Union\\0\"\n"); + FPrintf(handle," VALUE \"OriginalFilename\", \"%s.RC\\0\"\n",BaseName); + FPrintf(handle," VALUE \"ProductName\", \"%s\\0\"\n",nv->nv_ProgramName); + FPrintf(handle," VALUE \"ProductVersion\", \"%ld,%ld\\0\"\n",nv->nv_Version,nv->nv_Revision); + FPuts(handle," END\n"); + FPuts(handle," END\n"); + FPuts(handle," BLOCK \"VarFileInfo\"\n"); + FPuts(handle," BEGIN\n"); + FPuts(handle," VALUE \"Translation\", 0x415, 1200\n"); + FPuts(handle," END\n"); + FPuts(handle,"END\n"); + FPuts(handle,"\n"); + FPuts(handle,"#endif // !_MAC\n"); + + FPrintf(handle,"#ifdef APSTUDIO_INVOKED\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// TEXTINCLUDE\n"\ + "//\n"\ + "\n"\ + "1 TEXTINCLUDE DISCARDABLE \n"\ + "BEGIN\n"\ + " \"%s.h\\0\"\n"\ + "END\n"\ + "\n"\ + "2 TEXTINCLUDE DISCARDABLE \n"\ + "BEGIN\n"\ + " \"#include \"\"afxres.h\"\"\\r\\n\"\n"\ + " \"\\0\"\n"\ + "END\n"\ + "\n"\ + "3 TEXTINCLUDE DISCARDABLE \n"\ + "BEGIN\n"\ + " \"\\r\\n\"\n"\ + " \"\\0\"\n"\ + "END\n"\ + "\n"\ + "#endif // APSTUDIO_INVOKED\n\n",BaseName); + + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + if(!IsListEmpty(List(&ns->ns_Strings))) + { + FPuts(handle,"/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// String Table\n"\ + "//\n\nSTRINGTABLE DISCARDABLE \n"\ + "BEGIN\n"); + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + FPrintf(handle," MSG_%s \"%s\"\n",nd->ns_Label,nd->ns_String); + } + FPuts(handle,"END\n"); + } + + FPuts(handle,"#endif // English resources\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "\n"\ + "\n"\ + "\n"\ + "#ifndef APSTUDIO_INVOKED\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "//\n"\ + "// Generated from the TEXTINCLUDE 3 resource.\n"\ + "//\n"\ + "\n"\ + "\n"\ + "/////////////////////////////////////////////////////////////////////////////\n"\ + "#endif // not APSTUDIO_INVOKED\n"\ + "\n"); +} + +void GenerateHeader(BPTR handle) +{ + piObject *wo,*go,*mo; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node_Menu *nm; + struct Node_Version *nv; + struct Node_String *ns; + struct Node_StringData *nd; + struct TagItem *ti; + struct Node *n; + ULONG cnt,a; + + SetProgress(55L); + + nv=(struct Node_Version *)OBJECT_DATA(GUI->gui_Node_Version); + + FPrintf(handle,"//{{NO_DEPENDENCIES}}" \ + "\n// Include file generated by GadToolsBox %ld.%ld (c) by Tomasz Muszynski\n" \ + "// Used by %s\n//\n\n",GUI->gui_Version,GUI->gui_Revision,BaseName); + + FPrintf(handle,"#define VER_PROGRAMNAME \"%s\"\n",nv->nv_ProgramName); + FPrintf(handle,"#define VER_AUTHOR \"%s\"\n",nv->nv_Author); + FPrintf(handle,"#define VER_VERSION %ld\n",nv->nv_Version); + FPrintf(handle,"#define VER_REVISION %ld\n",nv->nv_Revision); + FPrintf(handle,"#define VER_SVER \"\\0$VER: \"VER_PROGRAMNAME\" %ld.%ld \"__AMIGADATE__\"\"\n\n",nv->nv_Version,nv->nv_Revision); + + cnt=0; + + SetProgress(60L); + + ns=(struct Node_String *)OBJECT_DATA(GUI->gui_Node_String); + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd)),cnt++) + { + FPrintf(handle,"#define MSG_%s %ld\n",nd->ns_Label,cnt); + } + + SetProgress(65L); + +/* Windows releated definitions */ + if(!IsListEmpty(List(&GUI->gui_List_Window))) + { + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo),cnt++) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + + FPrintf(handle,"#define WND_%s %ld\n",nw->nw_Label,cnt); + } + FPuts(handle,"\n"); + } + + SetProgress(70L); + + for(mo=(piObject *)GetHead(List(&GUI->gui_List_Menu));GetSucc(mo);mo=(piObject *)GetSucc(mo),cnt++) + { + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"#define MN_%s %ld\n",nm->nm_Label,cnt); + } + FPuts(handle,"\n"); + + SetProgress(75L); + + for(wo=(piObject *)GetHead(List(&GUI->gui_List_Window));GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + nw=(struct Node_Window *)OBJECT_DATA(wo); + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go),cnt++) + { + ng=(struct Node_Gadget *)OBJECT_DATA(go); + switch(ng->ng_PlugInID) + { + case MX_ID: + if(ti=FindTagItem(TAG_USER+1,ng->ng_OwnTags)) + for(n=GetHead(ti->ti_Data),a=0;GetSucc(n);n=GetSucc(n),a++,cnt++) + FPrintf(handle,"#define GD_%s_%ld %ld\n",ng->ng_Label,a,cnt); + break; + default: + FPrintf(handle,"#define GD_%s %ld\n",ng->ng_Label,cnt); + break; + } + } + FPuts(handle,"\n"); + } + + SetProgress(78L); + + FPrintf(handle,"// Next default values for new objects\n"\ + "// \n"\ + "#ifdef APSTUDIO_INVOKED\n"\ + "#ifndef APSTUDIO_READONLY_SYMBOLS\n"\ + "#define _APS_NEXT_RESOURCE_VALUE %ld\n"\ + "#define _APS_NEXT_COMMAND_VALUE %ld\n"\ + "#define _APS_NEXT_CONTROL_VALUE 1000\n"\ + "#define _APS_NEXT_SYMED_VALUE 101\n"\ + "#endif\n"\ + "#endif\n",0,0); //ResVal,GadVal); +} + +int FN_CONVUNDERSCORES_Clicked(void) +{ + ULONG code=PrefsMsg.Code; + + DoFlag(SP.spr_Flags,MYPR_ConvUS); + return 1; +} + +int FN_LANGUAGE_Clicked(void) +{ + SP.spr_CodePage=PrefsMsg.Code; + return 1; +} + +int FN_SAVE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/win32resource.generator.prefs"); + SavePrefs("ENVARC:GadToolsBox/win32resource.generator.prefs"); + return 0; +} + +int FN_USE_Clicked(void) +{ + SavePrefs("ENV:GadToolsBox/win32resource.generator.prefs"); + return 0; +} + +int FN_CANCEL_Clicked(void) +{ + return 0; +} + +int FN_CloseWindow_Prefs(void) +{ + return 0; +} + +#define ID_W32R MAKE_ID('W','3','2','R') + +void SavePrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct PrefHeader prefhdr={0,0,0}; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_NEWFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_WRITE)) + { + unless(PushChunk(iffh,ID_PREF,ID_FORM,IFFSIZE_UNKNOWN)) + { + if(error=PushChunk(iffh,NULL,ID_PRHD,sizeof(struct PrefHeader))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&prefhdr,sizeof(struct PrefHeader)); + if(error=PopChunk(iffh)) IFF_Error(error); + if(error=PushChunk(iffh,NULL,ID_W32R,sizeof(struct SavePrefs))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + if(error=PopChunk(iffh)) IFF_Error(error); + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +void LoadPrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct ContextNode *cn; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_OLDFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_PREF,ID_W32R)) IFF_Error(error); + while(1) + { + error=ParseIFF(iffh,IFFPARSE_SCAN); + if(error==IFFERR_EOC) continue; /* enter next context */ + else if(error) break; + if(cn=CurrentChunk(iffh)) + { + if(cn->cn_Type==ID_PREF) + { + switch(cn->cn_ID) + { + case ID_W32R: + ReadChunkBytes(iffh,(APTR)&SP,sizeof(struct SavePrefs)); + break; + } + } + } + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + else + { + SP.spr_Flags=NULL; + } + FreeIFF(iffh); + } +} + +TEXT tmptext[1024]; + +STRPTR ConvertString(STRPTR str,BOOL us) +{ + int a; + + strcpy(tmptext,str); + for(a=0;a +#include +#include + +#define GadgetData(x) (((UBYTE *)x)+sizeof(struct Node_Gadget)) // Get Pointer to GadToolsData +#define OBJECT_DATA(o) (((UBYTE *)o)+sizeof(piObject)) +#define GetHead(x) (((struct List *)x)->lh_Head) +#define GetSucc(x) (x->ln_Succ) +#define GetPred(x) (x->ln_Pred) +#define Node(x) ((struct Node *)x) +#define List(x) ((struct List *)x) +#define SetFlag(x,f) x|=f +#define GetFlag(x,f) if(x&f) +#define ClearFlag(x,f) x&=(f^-1) +#define DoFlag(x,f) if(code) SetFlag(x,f); else ClearFlag(x,f); +#define ListEmpty(x) ((((struct List *)x)->lh_TailPred) == ((struct Node *)x)) +#define unless(x) if(!(x)) +#define SetCheckMark(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCB_Checked,a,TAG_DONE) +#define SetCycle(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCY_Active,a,TAG_DONE) +#define Bit8(x) ((UBYTE)((x&0xff000000)>>24)) + +typedef struct piClass piClass; +typedef struct piObject piObject; + +struct piClass +{ + ULONG (*Dispatcher)(piClass *s,piObject *o,Msg m); + piClass *Super; + ULONG Size; + ULONG Type; +}; + +struct piObject +{ + piObject *ln_Succ; + piObject *ln_Pred; + UWORD ln_pad; + STRPTR ln_Name; + piClass *piClass; +}; + +struct EditList +{ + struct List **List; + ULONG *Active; +}; + +struct ColorPalette +{ + ULONG cp_I,cp_R,cp_G,cp_B; +}; + +#define IMTYPE_NORMAL 0 +#define IMTYPE_TOOLBAR 1 +#define IMTYPE_POINTER 2 + +struct Node_Image +{ + ULONG ni_ID; + struct Window *ni_Window; + struct Page *ni_Pages; + Object *ni_Draw,*ni_Preview,*ni_UpButton,*ni_DownButton,*ni_VertProp,*ni_LeftButton,*ni_RightButton,*ni_HorizProp; + LONG ni_Top,ni_Left; + struct BitMap *ni_BitMap; + struct ColorPalette *ni_CT; + UBYTE *ni_Pens; + + UBYTE ni_Label[40]; + UBYTE ni_Type,ni_Depth; + UWORD ni_Width,ni_Height; + UWORD ni_PointX,ni_PointY; + ULONG ni_Flags; +}; + +struct Node_Gadget +{ + struct Gadget *ng_Gadget; + piObject *ng_Parent; // Parent Object (NULL or page.gadget) + piObject *ng_Window; // Parent Window + struct TagItem *ng_Tags; + struct TagItem *ng_OwnTags; + UBYTE *ng_TagTypes; + UBYTE *ng_OwnTagTypes; + struct Page *ng_Pages; + struct EditList ng_EditList; + + UWORD ng_X,ng_Y,ng_Width,ng_Height; + UBYTE ng_RelX,ng_RelY,ng_RelWidth,ng_RelHeight; + ULONG ng_PlugInID; + UBYTE ng_Selected; + UBYTE ng_Type; + TEXT ng_Label[40]; + UWORD ng_NumTags; + UWORD ng_NumOwnTags; +}; + +struct GadToolsData // GadTools has additional datas +{ + TEXT g_Text[256]; + ULONG g_Flags; + ULONG g_Kind; +}; + +#define MYFR_Recessed (1<<0) + +struct Node_Frame +{ + piObject *nf_Window; // Parent Window + struct Page *nf_Pages; + + UWORD nf_X,nf_Y,nf_Width,nf_Height; + UBYTE nf_RelX,nf_RelY,nf_RelWidth,nf_RelHeight; + UBYTE nf_FrameType; + UBYTE nf_Selected; + ULONG nf_Flags; +}; + +#define FTYPE_BUTTON 0 +#define FTYPE_ICONDROPBOX 1 +#define FTYPE_RIDGE 2 +#define FTYPE_HORIZONTALLINE 3 +#define FTYPE_VERTICALLINE 4 + +#define WPOS_REL_LEFT_TOP 0 +#define WPOS_REL_RIGHT_BOTTOM 1 +#define WPOS_CENTER 2 + +#define MYWA_FontAdaptive (1<<0) +#define MYWA_BRightSlider (1<<1) +#define MYWA_BBottomSlider (1<<2) +#define MYWA_InnerWidth (1<<3) +#define MYWA_InnerHeight (1<<4) +#define MYWA_MouseQueue (1<<5) +#define MYWA_RptQueue (1<<6) +#define MYWA_AutoAdjust (1<<7) +#define MYWA_PubScreenFallBack (1<<8) +#define MYWA_MenuHelp (1<<9) +#define MYWA_NotifyDepth (1<<10) +#define MYWA_PointerDelay (1<<11) +#define MYWA_RMBTrap (1<<12) +#define MYWA_Project (1<<13) +#define MYWA_Zoom (1<<14) +#define MYWA_AppWindow (1<<15) +#define MYWA_DragToolHoriz (1<<16) +#define MYWA_DragToolVert (1<<17) + +struct Node_Window +{ + ULONG nw_ID; + struct Window *nw_Window; + struct Gadget *nw_Gadgets; + Object *(nw_Object[6]); + struct MinList nw_List_Gadget; + struct MinList nw_List_Frame; + + UWORD nw_X,nw_Y,nw_Width,nw_Height; // saveable datas follows + UBYTE nw_XPos,nw_YPos; + UWORD nw_Zoom[4]; + TEXT nw_WindowTitle[256]; + TEXT nw_ScreenTitle[256]; + TEXT nw_Label[40]; + TEXT nw_MenuTitle[128]; + TEXT nw_FontName[30]; + UWORD nw_Dimensions[4]; // Mins, Maxs + UWORD nw_FontSize; + ULONG nw_IDCMP; // Standard IDCMP Flags + ULONG nw_MyFlags; // My Window Flags + ULONG nw_Flags; // Standard Window Flags + ULONG nw_MouseQueue; + ULONG nw_RptQueue; + ULONG nw_PageGadget; // LockCounter for PageGadget +}; + +#define MYMN_Toggle (1<<0) +#define MYMN_NewLookMenus (1<<1) +#define MYMN_Disabled (1<<2) +#define MYMN_Checked (1<<3) +#define MYMN_BarLabel (1<<4) +#define MYMN_PopUp (1<<5) + +struct Node_Menu +{ + ULONG nm_ID; + struct MinList nm_MenuItem; + struct Menu *nm_Menu; + struct NewMenu *nm_NewMenu; + struct Window *nm_Window; + struct Page *nm_Pages; + LONG nm_Top,nm_Visible,nm_Total; + Object *nm_LeftButton,*nm_RightButton,*nm_HorizProp; + + TEXT nm_Label[128]; + ULONG nm_Flags; +}; + +struct Node_MenuItem +{ + struct Node nm_Node; + UBYTE nm_Selected; + + TEXT nm_Label[128]; + TEXT nm_Title[128]; + UBYTE nm_Type; + ULONG nm_Flags; + ULONG nm_MutEx; + TEXT nm_Key[2]; +}; + +#define TYPE_WORKBENCH 0 +#define TYPE_CUSTOMSCREEN 1 +#define TYPE_PUBLICSCREEN 2 + +#define MYSC_MakePublic (1<<0) +#define MYSC_ShowTitle (1<<3) +#define MYSC_Behind (1<<4) +#define MYSC_Quiet (1<<5) +#define MYSC_AutoScroll (1<<6) +#define MYSC_FullPalette (1<<7) +#define MYSC_Draggable (1<<8) +#define MYSC_Exclusive (1<<9) +#define MYSC_SharePens (1<<10) +#define MYSC_Interleaved (1<<11) +#define MYSC_LikeWB (1<<12) +#define MYSC_MinimizeISG (1<<13) +#define MYSC_DefaultID (1<<14) + +struct Node_Screen +{ + UWORD ns_Width,ns_Height,ns_Depth; + ULONG ns_DisplayID; + UWORD ns_Type; + TEXT ns_Title[256]; + TEXT ns_Public[30]; + TEXT ns_FontName[30]; + UWORD ns_FontSize; + ULONG ns_MyFlags; +}; + +struct Node_Version +{ + ULONG nv_Version; + ULONG nv_Revision; + TEXT nv_ProgramName[256]; + TEXT nv_Author[256]; +}; + +struct Node_String +{ + struct LVList ns_Strings; + struct Page *ns_Pages; + struct Node_StringData *ns_Selected; +}; + +struct Node_StringData +{ + struct LVNode ns_Node; + STRPTR ns_GadString; + STRPTR ns_Label; + STRPTR ns_String; +}; + +#define MYPR_ConvUS (1<<0) + +struct Prefs +{ + ULONG pr_Flags; + ULONG pr_DisplayID; + UWORD pr_Width,pr_Height,pr_Depth; + TEXT pr_Generator[108]; + UWORD pr_Grid[2]; + BOOL pr_GridOn,pr_GridShow; + struct + { + UWORD X,Y; + } pr_WinPos[10]; +}; + +struct SavePrefs +{ + ULONG spr_Flags; + ULONG spr_CodePage; +}; + +struct GUI +{ + UBYTE gui_Version,gui_Revision; + STRPTR gui_PubScreenName; + + UWORD gui_Grid[2]; + BOOL gui_GridOn,gui_GridShow; + + UBYTE gui_Mode; + struct Prefs *gui_Prefs; + + piObject *gui_Node_Version; // $VER string + piObject *gui_Node_Screen; // Screen + piObject *gui_Node_String; // List of locale strings + struct MinList gui_List_Window; // List of windows + struct MinList gui_List_Menu; // List of menus + struct MinList gui_List_Image; // List of mouse pointers + struct MinList gui_List_Binary; // List of binary data +}; + +struct GTBSemaphore +{ + struct SignalSemaphore gs_Semaphore; + struct GUI *gs_GUI; + struct Window *gs_Window; + struct Gadget *gs_Progress; + struct TextFont *gs_FontTF; +}; + +#define BUTTON_ID MAKE_ID('B','U','T','T') +#define CHECKBOX_ID MAKE_ID('C','B','O','X') +#define COLORWHEEL_ID MAKE_ID('C','W','H','L') +#define CYCLE_ID MAKE_ID('C','Y','C','E') +#define DATATYPE_ID MAKE_ID('D','T','Y','P') +#define GRADIENTSLIDER_ID MAKE_ID('G','R','S','L') +#define INTEGER_ID MAKE_ID('I','N','T','R') +#define LISTVIEW_ID MAKE_ID('L','V','I','E') +#define MX_ID MAKE_ID('M','X',' ',' ') +#define NUMBER_ID MAKE_ID('N','U','M','B') +#define PAGE_ID MAKE_ID('P','A','G','E') +#define PALETTE_ID MAKE_ID('P','A','L','T') +#define POPUPMENU_ID MAKE_ID('P','U','P','M') +#define PROGRESS_ID MAKE_ID('P','R','G','R') +#define SCROLLER_ID MAKE_ID('S','C','R','L') +#define SLIDER_ID MAKE_ID('S','L','I','R') +#define STRING_ID MAKE_ID('S','T','R','G') +#define TAPEDECK_ID MAKE_ID('T','D','E','K') +#define TEXT_ID MAKE_ID('T','E','X','T') +#define TEXTFIELD_ID MAKE_ID('T','F','L','D') +#define TREEVIEW_ID MAKE_ID('T','R','L','V') + diff --git a/GadToolsBox/WinGen/menu.c b/GadToolsBox/WinGen/menu.c new file mode 100755 index 0000000..43457f9 --- /dev/null +++ b/GadToolsBox/WinGen/menu.c @@ -0,0 +1,64 @@ +/* +** Gadgets code generator +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"main.h" + +STRPTR ConvertString(STRPTR,BOOL); + +extern struct GUI *GUI; + +void MENU_GenerateMenu(BPTR handle,piObject *mo) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + UBYTE prevtype=10; + + nm=(struct Node_Menu *)OBJECT_DATA(mo); + FPrintf(handle,"MN_%s MENU DISCARDABLE\nBEGIN\n",nm->nm_Label); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + switch(ni->nm_Type) + { + case NM_TITLE: + if(prevtype!=NM_TITLE) FPuts(handle,"END\n"); + FPrintf(handle,"POPUP \"%s\"\nBEGIN\n",ConvertString(ni->nm_Title,TRUE)); + break; + case NM_ITEM: + if(prevtype!=NM_ITEM) FPuts(handle,"END\n"); + if(ni->nm_Flags&MYMN_BarLabel) + FPrintf(handle,"MENUITEM SEPARATOR\n"); + else + FPrintf(handle,"MENUITEM \"%s\" MD_%s\n",ConvertString(ni->nm_Title,TRUE),ni->nm_Label); + GetFlag(ni->nm_Flags,MYMN_Disabled) FPuts(handle,"GRAYED"); + GetFlag(ni->nm_Flags,MYMN_Checked) FPuts(handle,"CHECKED"); + break; + case NM_SUB: + if(prevtype!=NM_SUB) FPuts(handle,"END\n"); + if(ni->nm_Flags&MYMN_BarLabel) + FPrintf(handle,"MENUITEM SEPARATOR\n"); + else + FPrintf(handle,"MENUITEM \"%s\" MD_%s\n",ConvertString(ni->nm_Title,TRUE),ni->nm_Label); + GetFlag(ni->nm_Flags,MYMN_Disabled) FPuts(handle,"GRAYED"); + GetFlag(ni->nm_Flags,MYMN_Checked) FPuts(handle,"CHECKED"); + break; + } + prevtype=ni->nm_Type; + } + FPuts(handle,"END\n"); +} diff --git a/GadToolsBox/WinGen/win32resource.generator.cd b/GadToolsBox/WinGen/win32resource.generator.cd new file mode 100755 index 0000000..c058230 --- /dev/null +++ b/GadToolsBox/WinGen/win32resource.generator.cd @@ -0,0 +1,33 @@ +; +; win32resource.generator locale description file +; +MSG_SCREENTITLE_SCR (//) + +; +MSG_Prefs_WND (//) +Prefs: win32resource.generator +; +MSG_SAVE_GAD (//) +_Save +; +MSG_CANCEL_GAD (//) +_Cancel +; +MSG_USE_GAD (//) +_Use +; +MSG_LANGUAGE_GAD (//) +Language: +; +MSG_LANGUAGE_L0_GAD (//) +English UK +; +MSG_LANGUAGE_L1_GAD (//) +English US +; +MSG_LANGUAGE_L2_GAD (//) +Polish +; +MSG_CONVUNDERSCORES_GAD (//) +Convert underscores: +; diff --git a/GadToolsBox/WinGen/win32resource.generator.ct b/GadToolsBox/WinGen/win32resource.generator.ct new file mode 100755 index 0000000..436a1df --- /dev/null +++ b/GadToolsBox/WinGen/win32resource.generator.ct @@ -0,0 +1,46 @@ +## version $VER: win32resource.generator.catalog 1.0 (xx.xx.xx) +## language +## codeset 0 +; +; win32resource.generator locale translation file +; +MSG_SCREENTITLE_SCR + +; +; +MSG_Prefs_WND + +;Prefs: win32resource.generator +; +MSG_SAVE_GAD + +;_Save +; +MSG_CANCEL_GAD + +;_Cancel +; +MSG_USE_GAD + +;_Use +; +MSG_LANGUAGE_GAD + +;Language: +; +MSG_LANGUAGE_L0_GAD + +;English UK +; +MSG_LANGUAGE_L1_GAD + +;English US +; +MSG_LANGUAGE_L2_GAD + +;Polish +; +MSG_CONVUNDERSCORES_GAD + +;Convert underscores: +; diff --git a/GadToolsBox/amigaguide.c b/GadToolsBox/amigaguide.c new file mode 100755 index 0000000..afc97c1 --- /dev/null +++ b/GadToolsBox/amigaguide.c @@ -0,0 +1,289 @@ +/* +** AmigaGuide Class +** $VER: amigaguide.c 37.1 (2.6.98) +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"amigaguide.h" + +/* +** Defines +*/ + +#define unless(x) if(!(x)) +#define SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define AMIGAGUIDECLASS "gtbamigaguideclass" + +/* +** Prototypes +*/ + +ULONG ASMFUNC AGUI_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG AGUI_NEW(Class *,Object *,struct opSet *); +ULONG AGUI_DISPOSE(Class *, Object *, Msg); +ULONG AGUI_SET(Class *, Object *, struct opSet *); +ULONG AGUI_GET(Class *,Object *,struct opGet *); +ULONG AGUI_GETMESSAGE(Class *,Object *,Msg); +ULONG AGUI_HANDLEMESSAGE(Class *,Object *,struct gtbWaitMessage *); +ULONG AGUI_WAITMESSAGE(Class *,Object *,struct gtbWaitMessage *); + +/* +** Variables +*/ +struct AGUIData +{ + AMIGAGUIDECONTEXT ag_AGC; + struct NewAmigaGuide ag_NAG; + BOOL ag_ObjectOK; + Object *ag_ScreenObj; + ULONG ag_SigBit; + ULONG ag_Signal; + ULONG ag_HelpGroup; + BOOL ag_Activate; + ULONG (*ag_MesgHandler)(Object *,ULONG,struct AmigaGuideMsg *); + + Object *ag_ARexxObj; + struct MsgPort *ag_ARexxPort; + STRPTR ag_ARexxPortName; +}; + +/* +** Create Class +*/ + +Class *CreateAmigaGuideClass(void) +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, ROOTCLASS, NULL, sizeof(struct AGUIData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) AGUI_Dispatcher; + cl->cl_UserData = NULL; + return cl; + } + return(NULL); +} + +void DisposeAmigaGuideClass(Class *cl) +{ + FreeClass(cl); +} + +BOOL gtbSendAmigaGuideCmd(Object *ag,STRPTR command) +{ + AMIGAGUIDECONTEXT agc; + + if(ag) + { + GetAttr(AGUI_Context,ag,(ULONG *)&agc); + return (BOOL) SendAmigaGuideCmd(agc,command,TAG_DONE); + } + else return NULL; +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC AGUI_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = AGUI_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = AGUI_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = AGUI_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = AGUI_GET(cl, o, (struct opGet *)msg ); + break; + case GTB_GETMESSAGE: + retval = AGUI_GETMESSAGE(cl,o,msg); + break; + case GTB_HANDLEMESSAGE: + retval = AGUI_HANDLEMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + case GTB_WAITMESSAGE: + retval = AGUI_WAITMESSAGE(cl,o,(struct gtbWaitMessage *)msg); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS AGUI_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct AGUIData *AG; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + AG = INST_DATA( cl, object ); + + memset(AG,0,sizeof(struct AGUIData)); + + AG->ag_MesgHandler=(ULONG (*)(Object *,ULONG,APTR))GetTagData( AGUI_Handler, NULL, ops->ops_AttrList ); + + AG->ag_Activate=(BOOL)GetTagData( AGUI_Activate, FALSE, ops->ops_AttrList ); + + AG->ag_ARexxPort=(struct MsgPort *)GetTagData( AGUI_ARexxPort, NULL, ops->ops_AttrList ); + AG->ag_ARexxPortName=(STRPTR)GetTagData( AGUI_ARexxPortName, NULL, ops->ops_AttrList ); + + AG->ag_NAG.nag_Screen=(struct Screen *)GetTagData( AGUI_Screen, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_Lock=NULL; + AG->ag_NAG.nag_Name=(STRPTR)GetTagData( AGUI_Name, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_BaseName=(STRPTR)GetTagData( AGUI_BaseName, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_PubScreen=(STRPTR)GetTagData( AGUI_PubScreenName, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_HostPort=NULL; //AG->ag_HostPort; + AG->ag_NAG.nag_ClientPort=AG->ag_ARexxPortName; + AG->ag_NAG.nag_Flags=AG->ag_Activate?NULL:HTF_NOACTIVATE; + AG->ag_NAG.nag_Context=(STRPTR *)GetTagData( AGUI_Context, NULL, ops->ops_AttrList ); + AG->ag_NAG.nag_Extens=NULL; + AG->ag_NAG.nag_Client=NULL; + + AG->ag_HelpGroup=GetTagData( AGUI_HelpGroup, NULL, ops->ops_AttrList ); + + if(!(AG->ag_AGC=OpenAmigaGuideAsync(&AG->ag_NAG, + AGA_HelpGroup,AG->ag_HelpGroup, + AG->ag_ARexxPort?AGA_ARexxPort:TAG_IGNORE, AG->ag_ARexxPort, + AG->ag_ARexxPortName?AGA_ARexxPortName:TAG_IGNORE, AG->ag_ARexxPortName, + TAG_DONE))) + { + CoerceMethod(cl,object,OM_DISPOSE); + return FALSE; + } + + AG->ag_Signal=AmigaGuideSignal(AG->ag_AGC); + AG->ag_SigBit=1L<ag_Signal; + AG->ag_ObjectOK=TRUE; + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS AGUI_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + + if(AG->ag_AGC) CloseAmigaGuide(AG->ag_AGC); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS AGUI_SET(Class *cl, Object *o, struct opSet *ops) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + ULONG retval; + struct TagItem *tag, *tstate; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + tstate=ops->ops_AttrList; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case AGUI_Handler: + AG->ag_MesgHandler=(ULONG (*)(Object *,ULONG,APTR)) tag->ti_Data; + break; + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS AGUI_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval=TRUE; + struct AGUIData *AG = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case AGUI_SigBit: + *opg->opg_Storage = AG->ag_SigBit; + break; + case AGUI_Signal: + *opg->opg_Storage = (ULONG)AG->ag_Signal; + break; + case AGUI_Context: + *opg->opg_Storage = (ULONG)AG->ag_AGC; + break; + default: retval = DoSuperMethodA(cl, o, (Msg)opg); break; + } + return( retval ); +} + +ULONG SAVEDS AGUI_GETMESSAGE(Class *cl,Object *o,Msg msg) +{ + struct AmigaGuideMsg *mesg; + struct AGUIData *AG = INST_DATA( cl, o ); + + if(mesg=GetAmigaGuideMsg(AG->ag_AGC)) + { + ReplyAmigaGuideMsg(mesg); + return( (ULONG) mesg ); + } + else return NULL; +} + +ULONG SAVEDS AGUI_HANDLEMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + struct AmigaGuideMsg *mesg; + ULONG retval=1; + + if((msg->Signals & (1L<ag_Signal))) + { + if(mesg=GetAmigaGuideMsg(AG->ag_AGC)) + { + if(AG->ag_MesgHandler) retval=AG->ag_MesgHandler(o,mesg->agm_Type,mesg); + ReplyAmigaGuideMsg(mesg); + } + } + return retval; +} + +ULONG SAVEDS AGUI_WAITMESSAGE(Class *cl,Object *o,struct gtbWaitMessage *msg) +{ + struct AGUIData *AG = INST_DATA( cl, o ); + + return Wait((AG->ag_SigBit)|(msg->Signals)); +} diff --git a/GadToolsBox/amigaguide.h b/GadToolsBox/amigaguide.h new file mode 100755 index 0000000..9c121a6 --- /dev/null +++ b/GadToolsBox/amigaguide.h @@ -0,0 +1,35 @@ +#include +#include + +Class *CreateAmigaGuideClass(void); +void DisposeAmigaGuideClass(Class *); +BOOL gtbSendAmigaGuideCmd(Object *,STRPTR); + +#define GTB_HANDLEMESSAGE 500 +#define GTB_WAITMESSAGE 501 +#define GTB_GETMESSAGE 502 + +struct gtbWaitMessage +{ + ULONG MethodID; + ULONG Signals; +}; + +#define AGUI_Dummy (TAG_USER) +#define AGUI_Name (AGUI_Dummy+0) +#define AGUI_Screen (AGUI_Dummy+1) +#define AGUI_ScreenObject (AGUI_Dummy+2) +#define AGUI_PubScreenName (AGUI_Dummy+3) +#define AGUI_Context (AGUI_Dummy+4) +#define AGUI_HelpGroup (AGUI_Dummy+5) +#define AGUI_Signal (AGUI_Dummy+6) +#define AGUI_ARexxPort (AGUI_Dummy+7) +#define AGUI_ARexxPortName (AGUI_Dummy+8) +#define AGUI_ARexxObject (AGUI_Dummy+9) +#define AGUI_Activate (AGUI_Dummy+10) +#define AGUI_BaseName (AGUI_Dummy+11) +#define AGUI_Handler (AGUI_Dummy+31) + +#define AGUI_SigBit (AGUI_Dummy+106) + +extern Object *AmigaGuideObj; diff --git a/GadToolsBox/catalogs/polski/GadToolsBox.ct b/GadToolsBox/catalogs/polski/GadToolsBox.ct new file mode 100755 index 0000000..8f9d62a --- /dev/null +++ b/GadToolsBox/catalogs/polski/GadToolsBox.ct @@ -0,0 +1,2766 @@ +## version $VER: GadToolsBox.catalog 3.0 (31.05.98) +## language Polski +## codeset 0 +; +; GadToolsBox locale translation file +; +MSG_MainProject_MTITLE +\000\000Projekt +;Project +; +MSG_MainProjectNew_MITEM +N\000Nowy +;New +; +MSG_MainProjectOpen_MITEM +O\000Otwórz... +;Open... +; +MSG_MainProjectSave_MITEM +S\000Zachowaj +;Save +; +MSG_MainProjectSaveAs_MITEM +A\000Zachowaj jako... +;Save As... +; +MSG_MainProjectSaveSource_MITEM +W\000Zachowaj úródîo... +;Save Source... +; +MSG_MainProjectPreferences_MITEM +P\000Preferencje... +;Preferences... +; +MSG_MainProjectAbout_MITEM +?\000O programie... +;About... +; +MSG_MainProjectQuit_MITEM +Q\000Wyjdú +;Quit +; +MSG_MainEdit_MTITLE +\000\000Edycja +;Edit +; +MSG_MainEditUndo_MITEM +U\000Cofnij +;Undo +; +MSG_MainEditCut_MITEM +X\000Wytnij +;Cut +; +MSG_MainEditCopy_MITEM +C\000Skopiuj +;Copy +; +MSG_MainEditPaste_MITEM +V\000Wklej +;Paste +; +MSG_MainEditClear_MITEM +B\000Wyczyôê +;Clear +; +MSG_MainEditSelectAll_MITEM +A\000Zaznacz wszystko +;Select All +; +MSG_MainEditGrid_MITEM +G\000Siatka... +;Grid... +; +MSG_MainEditAlign_MITEM +\000\000Wyrównanie +;Align +; +MSG_MainEditAlignToLeft_MSUB +\000\000Lewy +;Left +; +MSG_MainEditAlignToHCenter_MSUB +\000\000Centrowanie szerokoôci +;Width center +; +MSG_MainEditAlignToRight_MSUB +\000\000Prawy +;Right +; +MSG_MainEditAlignToTop_MSUB +\000\000Góra +;Top +; +MSG_MainEditAlignToVCenter_MSUB +\000\000Centrowanie wysokoôci +;Height center +; +MSG_MainEditAlignToBottom_MSUB +\000\000Dóî +;Bottom +; +MSG_MainEditClone_MITEM +\000\000Kopiowanie +;Clone +; +MSG_MainEditCloneWidth_MSUB +\000\000Szerokoôci +;Width +; +MSG_MainEditCloneHeight_MSUB +\000\000Wysokoôci +;Height +; +MSG_MainEditCloneBoth_MSUB +\000\000Obu +;Both +; +MSG_MainEditSpread_MITEM +\000\000Rozîoûenie +;Spread +; +MSG_MainEditSpreadHoriz_MSUB +\000\000Poziome +;Horizontal +; +MSG_MainEditSpreadVertical_MSUB +\000\000Pionowe +;Vertical +; +MSG_MainObject_MTITLE +\000\000Obiekty +;Objects +; +MSG_MainObjWindow_MITEM +\000\000Okno +;Window +; +MSG_MainObjWindowNew_MSUB +\000\000Nowe... +;New... +; +MSG_MainObjWindowClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainObjWindowDelete_MSUB +\000\000Skasuj +;Delete +; +MSG_MainObjWindowRefresh_MSUB +\000\000Odôwieû +;Refresh +; +MSG_MainObjMenu_MITEM +\000\000Menu +;Menu +; +MSG_MainObjMenuNew_MSUB +\000\000Nowe... +;New... +; +MSG_MainObjMenuClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainObjMenuDelete_MSUB +\000\000Skasuj +;Delete +; +MSG_MainObjImage_MITEM +\000\000Obrazek +;Image +; +MSG_MainObjImageNew_MSUB +\000\000Nowy... +;New... +; +MSG_MainObjImageClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainObjImageDelete_MSUB +\000\000Skasuj +;Delete +; +MSG_MainObjStrings_MITEM +\000\000Teksty +;Strings +; +MSG_MainObjStringsOpen_MSUB +\000\000Otwórz +;Open +; +MSG_MainObjStringsClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainObjScreen_MITEM +\000\000Ekran +;Screen +; +MSG_MainObjScreenOpen_MSUB +\000\000Otwórz +;Open +; +MSG_MainObjScreenClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainObjVersion_MITEM +\000\000Wersja +;Version +; +MSG_MainObjVersionOpen_MSUB +\000\000Otwórz +;Open +; +MSG_MainObjVersionClose_MSUB +\000\000Zamknij +;Close +; +MSG_MainWindow_MTITLE +\000\000Okna +;Windows +; +MSG_MainWindowProperties_MITEM +\000\000Wîaôciwoôci +;Properties +; +MSG_MainWindowObjects_MITEM +\000\000Obiekty +;Objects +; +MSG_MainWindowStatus_MITEM +\000\000Status +;Status +; +MSG_MainWindowHideAll_MITEM +\000\000Schowaj wszystkie +;Hide All +; +MSG_SCREENTITLE_SCR +GadToolsBox v3 (GTB.%ld) +;GadToolsBox v3 (GTB.%ld) +; +MSG_PGBO_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGBO_X_GAD + +; +; +MSG_PGBO_Y_GAD + +; +; +MSG_PGBO_WIDTH_GAD + +; +; +MSG_PGBO_HEIGHT_GAD + +; +; +MSG_PGBO_REL_X_GAD +Poz _X: +;_X Pos: +; +MSG_PGBO_REL_X_L0_GAD +Lewy +;Left +; +MSG_PGBO_REL_X_L1_GAD +Prawy +;Right +; +MSG_PGBO_REL_Y_GAD +Poz _Y: +;_Y Pos: +; +MSG_PGBO_REL_Y_L0_GAD +Górny +;Top +; +MSG_PGBO_REL_Y_L1_GAD +Dolny +;Bottom +; +MSG_PGBO_REL_W_GAD +_Szer.: +;_Width: +; +MSG_PGBO_REL_W_L0_GAD +Normalna +;Normal +; +MSG_PGBO_REL_W_L1_GAD +Okno +;Window +; +MSG_PGBO_REL_H_GAD +_Wysokoôê: +;_Height: +; +MSG_PGBO_REL_H_L0_GAD +Normalna +;Normal +; +MSG_PGBO_REL_H_L1_GAD +Okno +;Window +; +MSG_ABOUT_OK_GAD +Ok +;Ok +; +MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD +_Immediate: +;_Immediate: +; +MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD +_Podkreôlenie: +;_Underscore: +; +MSG_PG_BUTT_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_GAD +Typ podpisu: +;Title Type: +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD +Tekst +;Text +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD +Pasek narzëdzi +;Toolbar +; +MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD +Rysunek +;Image +; +MSG_PG_BUTT_FLAGS_TOGGLE_GAD +_Toggle: +;_Toggle: +; +MSG_PG_CBOX_FLAGS_SCALED_GAD +_Skalowanie: +;_Scaled: +; +MSG_PG_CBOX_FLAGS_SCALED_L0_GAD +Brak +;None +; +MSG_PG_CBOX_FLAGS_SCALED_L1_GAD +Normalne +;Normal +; +MSG_PG_CBOX_FLAGS_SCALED_L2_GAD +Adaptacyjne +;Adaptive +; +MSG_PG_CBOX_FLAGS_CHECKED_GAD +_Zaznaczony: +;_Checked: +; +MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD +_Podkreôlony: +;_Underscore: +; +MSG_PG_CBOX_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_CWHL_FLAGS_MAXPENS_GAD +Maks.piór: +;MaxPens: +; +MSG_PG_CWHL_FLAGS_ABBRV_GAD +Abbrv: +;Abbrv: +; +MSG_PG_CWHL_FLAGS_GSLIDER_GAD +Grad-Slider: +;Grad-Slider: +; +MSG_PG_CWHL_FLAGS_BEVELBOX_GAD +Ramka: +;BevelBox: +; +MSG_PG_CWHL_FLAGS_DISABLED_GAD +Wyîâczony: +;Disabled: +; +MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD +FollowMouse: +;FollowMouse: +; +MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD +Podôwietlony: +;Highlabel: +; +MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD +Pokreôlony: +;Underscore: +; +MSG_PG_CYCE_FLAGS_DISABLED_GAD +Wyîâczony: +;Disabled: +; +MSG_PG_LISTS_EDIT_GAD + +; +; +MSG_PG_LISTS_ACTIVE_GAD + +; +; +MSG_PG_LISTS_LIST_GAD + +; +; +MSG_PG_LISTS_UP_GAD +_Góra +;_Up +; +MSG_PG_LISTS_DOWN_GAD +D_óî +;D_own +; +MSG_PG_LISTS_ADD_GAD +_Dodaj +;_Add +; +MSG_PG_LISTS_DEL_GAD +_Skasuj +;_Del +; +MSG_PG_DTYP_FLAGS_OBJECT_GAD +_Plik: +;_File: +; +MSG_PG_DTYP_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD +_Pixele suw.: +;_Knob Pixels: +; +MSG_PG_GRSL_FLAGS_MAXVAL_GAD +_MaxWart: +;_MaxVal: +; +MSG_PG_GRSL_FLAGS_CURVAL_GAD +_AktWart: +;_CurVal: +; +MSG_PG_GRSL_FLAGS_SKIPVAL_GAD +_OpuôêWart: +;_SkipVal: +; +MSG_PG_GRSL_FLAGS_PENS_GAD +_Pióra: +;_Pens: +; +MSG_PG_GRSL_FLAGS_FREEDOM_GAD +_Poîoûenie: +;_Freedom: +; +MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD +Poziome +;Horizontal +; +MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD +Pionowe +;Vertical +; +MSG_PG_GRSL_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_INTR_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_INTR_FLAGS_UNDERSCORE_GAD +_Podkreôlony; +;_Underscore: +; +MSG_PG_INTR_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_INTR_FLAGS_TABCYCLE_GAD +_TabCycle: +;_TabCycle: +; +MSG_PG_INTR_FLAGS_REPLACEMODE_GAD +_Tryb zastëpowania: +;_ReplaceMode: +; +MSG_PG_INTR_FLAGS_EXITHELP_GAD +_Wyjôcie Help: +;_ExitHelp: +; +MSG_PG_INTR_VAR_MAXCHARS_GAD +_MaxZnakow: +;_MaxChars: +; +MSG_PG_INTR_VAR_NUMBER_GAD +_Numer: +;_Number: +; +MSG_PG_INTR_VAR_JUSTIFICATION_GAD +_Justowanie: +;_Justification: +; +MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD +Lewy +;Left +; +MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD +Prawy +;Right +; +MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD +Wycentrowany +;Center +; +MSG_PG_LVIE_FLAGS_ARROWS_GAD +_Strzaîki: +;_Arrows: +; +MSG_PG_LVIE_FLAGS_SPACING_GAD +_Odstëpy: +;S_pacing: +; +MSG_PG_LVIE_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD +_Podkreôlony: +;_Underscore: +; +MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_LVIE_FLAGS_READONLY_GAD +_Tylko odczyt: +;_ReadOnly: +; +MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD +_PokaûZaznaczony: +;_ShowSelected: +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD + +; +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD +Brak +;None +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD +Normalne +;Normal +; +MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD +Adaptacyjne +;Adaptive +; +MSG_PG_MX_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_MX_FLAGS_UNDERSCORE_GAD +_Podkreôlony: +;_Underscore: +; +MSG_PG_MX_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_MX_FLAGS_SCALED_GAD +_Skalowanie: +;_Scaled: +; +MSG_PG_MX_FLAGS_SCALED_L0_GAD +Brak +;None +; +MSG_PG_MX_FLAGS_SCALED_L1_GAD +Normalne +;Normal +; +MSG_PG_MX_FLAGS_SCALED_L2_GAD +Adaptacyjne +;Adaptive +; +MSG_PG_MX_FLAGS_PLACEMENT_GAD +_Poîoûenie: +;_Placement: +; +MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD +Lewe +;Left +; +MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD +Prawe +;Right +; +MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD +Powyûej +;Above +; +MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD +Poniûej +;Below +; +MSG_PG_MX_FLAGS_SPACING_GAD +_Odstëp: +;Sp_acing: +; +MSG_PG_NUMB_FLAGS_FORMAT_GAD +_Format: +;_Format: +; +MSG_PG_NUMB_FLAGS_DEFAULT_GAD +D_omyôlnie: +;D_efault: +; +MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD +_MaksDlug: +;_MaxNumLen: +; +MSG_PG_NUMB_FLAGS_DISABLED_GAD +_Wyîâczone: +;_Disabled: +; +MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD +_Podkreôlenie: +;_Highlabel: +; +MSG_PG_NUMB_FLAGS_BORDER_GAD +_Ramka: +;_Border: +; +MSG_PG_NUMB_FLAGS_CLIPPED_GAD +_Wyciëte: +;_Clipped: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD +_Justowanie: +;_Justification: +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD +Lewy +;Left +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD +Prawy +;Right +; +MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD +Wycentrowany +;Center +; +MSG_PGGT_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGGT_TITLE_GAD +_Tytuî: +;_Title: +; +MSG_PGGT_X_GAD + +; +; +MSG_PGGT_Y_GAD + +; +; +MSG_PGGT_WIDTH_GAD + +; +; +MSG_PGGT_HEIGHT_GAD + +; +; +MSG_PGGT_PLACEMENT_GAD +_Poîoûenie: +;_Placement: +; +MSG_PGGT_PLACEMENT_L0_GAD +W +;In +; +MSG_PGGT_PLACEMENT_L1_GAD +Lewy +;Left +; +MSG_PGGT_PLACEMENT_L2_GAD +Prawy +;Right +; +MSG_PGGT_PLACEMENT_L3_GAD +Powyûej +;Above +; +MSG_PGGT_PLACEMENT_L4_GAD +Poniûej +;Below +; +MSG_PGGT_REL_X_GAD +Poz _X: +;_X Pos: +; +MSG_PGGT_REL_X_L0_GAD +Lewy +;Left +; +MSG_PGGT_REL_X_L1_GAD +Prawy +;Right +; +MSG_PGGT_REL_Y_GAD +Poz _Y: +;_Y Pos: +; +MSG_PGGT_REL_Y_L0_GAD +Góra +;Top +; +MSG_PGGT_REL_Y_L1_GAD +Dóî +;Bottom +; +MSG_PGGT_REL_W_GAD +_Szer.: +;_Width: +; +MSG_PGGT_REL_W_L0_GAD +Normalna +;Normal +; +MSG_PGGT_REL_W_L1_GAD +Okno +;Window +; +MSG_PGGT_REL_H_GAD +_Wysokoôê: +;_Height: +; +MSG_PGGT_REL_H_L0_GAD +Normalna +;Normal +; +MSG_PGGT_REL_H_L1_GAD +Okno +;Window +; +MSG_PG_PAGE_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD +_Podkreôlenie: +;_Underscore: +; +MSG_PG_PAGE_FLAGS_LAYOUT_GAD +_Wyglâd: +;_Layout: +; +MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD +Prosty +;Simple +; +MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD +Styl MUI +;MUI Style +; +MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD +GadTools +;GadTools +; +MSG_PG_PAGE_FLAGS_STYLE_GAD +_Styl: +;_Style: +; +MSG_PG_PAGE_FLAGS_STYLE_L0_GAD +Normalny +;Normal +; +MSG_PG_PAGE_FLAGS_STYLE_L1_GAD +Podôwietlony +;Hilight +; +MSG_PG_PAGE_FLAGS_STYLE_L2_GAD +Cieniowany +;Shadow +; +MSG_PG_PAGE_LISTS_LIST_GAD + +; +; +MSG_PG_PAGE_LISTS_ADD_GAD +< _Dodaj +;< _Add +; +MSG_PG_PAGE_LISTS_DEL_GAD +> _Skasuj +;> _Del +; +MSG_PG_PAGE_LISTS_UP_GAD +_Góra +;_Up +; +MSG_PG_PAGE_LISTS_DOWN_GAD +D_óî +;D_own +; +MSG_PG_PAGE_LISTS_WINDOWS_GAD + +; +; +MSG_PG_PAGE_LISTS_ACTIVE_GAD + +; +; +MSG_PG_PALT_FLAGS_COLOR_GAD + +; +; +MSG_PG_PALT_FLAGS_OFFSET_GAD +_Odstëp: +;_Offset: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD + +; +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD +: +;: +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD +Brak +;None +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD +Szerokoôê +;Width +; +MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD +Wysokoôê +;Height +; +MSG_PG_PALT_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_PALT_FLAGS_UNDERSCORE_GAD +_Podkreôlenie: +;_Underscore: +; +MSG_PG_PALT_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_PALT_FLAGS_TYPE_GAD +: +;: +; +MSG_PG_PALT_FLAGS_TYPE_L0_GAD +Gîëbokoôê: +;Depth +; +MSG_PG_PALT_FLAGS_TYPE_L1_GAD +Kolory: +;Colors +; +MSG_PG_PALT_FLAGS_TYPE_L2_GAD +Ekran +;Screen +; +MSG_PG_PUPM_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_PUPM_FLAGS_NEWLOOK_GAD +_Nowy Wyglâd; +;_NewLook: +; +MSG_PG_PRGR_FLAGS_MAX_GAD +_Maks: +;_Max: +; +MSG_PG_PRGR_FLAGS_CURRENT_GAD +_Aktualny: +;_Current: +; +MSG_PG_PRGR_FLAGS_FORMAT_GAD +_Format: +;_Format: +; +MSG_PG_PRGR_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_PRGR_FLAGS_BORDER_GAD +_Ramka: +;_Border: +; +MSG_PG_PRGR_FLAGS_PERCENTS_GAD +Wyôwietl w _%: +;Show in _%: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_GAD +_Poîoûenie: +;_Placement: +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD +W +;In +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD +Lewy +;Left +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD +Prawy +;Right +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD +Powyûej +;Above +; +MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD +Poniûej +;Below +; +MSG_PG_SCRL_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD +_Podkreôlenie: +;_Underscore: +; +MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD +_Immediate: +;_Immediate: +; +MSG_PG_SCRL_FLAGS_RELVERIFY_GAD +_RelVerify: +;_RelVerify: +; +MSG_PG_SCRL_VAR_TOP_GAD +_Góra: +;_Top: +; +MSG_PG_SCRL_VAR_TOTAL_GAD +_Caîoôê: +;T_otal: +; +MSG_PG_SCRL_VAR_VISIBLE_GAD +_Widzialne: +;_Visible: +; +MSG_PG_SCRL_VAR_FREEDOM_GAD +_Poîoûenie: +;_Freedom: +; +MSG_PG_SCRL_VAR_FREEDOM_L0_GAD +Poziome +;Horizontal +; +MSG_PG_SCRL_VAR_FREEDOM_L1_GAD +Pionowe +;Vertical +; +MSG_PG_SCRL_VAR_ARROWS_GAD + +; +; +MSG_PG_SCRL_VAR_ARROW_TYPE_GAD +_Strzaîki: +;_Arrows: +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD +Brak +;None +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD +Normalne +;Normal +; +MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD +Adaptacyjne +;Adaptive +; +MSG_PG_SLIR_FLAGS_FORMAT_GAD +_Format: +;_Format: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD +MaksRozm_Pixeli: +;Max_PixelLen: +; +MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD + +; +; +MSG_PG_SLIR_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD +_Podkreôlony: +;_Underscore: +; +MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD +_Immediate: +;_Immediate: +; +MSG_PG_SLIR_FLAGS_RELVERIFY_GAD +_RelVerify: +;_RelVerify: +; +MSG_PG_SLIR_VAR_MIN_GAD +_Min: +;_Min: +; +MSG_PG_SLIR_VAR_MAX_GAD +M_aks: +;M_ax: +; +MSG_PG_SLIR_VAR_LEVEL_GAD +_Poziom: +;_Level: +; +MSG_PG_SLIR_VAR_MAXLEVLEN_GAD +MaksDlugPoz: +;MaxLe_vLen: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_GAD +_Justyfikacja: +;_Justification: +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD +Lewy +;Left +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD +Prawy +;Right +; +MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD +Wycentrowany +;Center +; +MSG_PG_SLIR_VAR_FREEDOM_GAD +_Poîoûenie: +;_Freedom: +; +MSG_PG_SLIR_VAR_FREEDOM_L0_GAD +Poziome +;Horizontal +; +MSG_PG_SLIR_VAR_FREEDOM_L1_GAD +Pionowe +;Vertical +; +MSG_PG_SLIR_VAR_LEVELPLACE_GAD +Poîoûenie Poz: +;Level _Place: +; +MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD +Lewy +;Left +; +MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD +Prawy +;Right +; +MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD +Powyûej +;Above +; +MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD +Poniûej +;Below +; +MSG_PG_STRG_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_STRG_FLAGS_UNDERSCORE_GAD +_Podkreôlony: +;_Underscore: +; +MSG_PG_STRG_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_STRG_FLAGS_TABCYCLE_GAD +_TabCycle: +;_TabCycle: +; +MSG_PG_STRG_FLAGS_REPLACEMODE_GAD +_Tryb zastëpowania: +;_ReplaceMode: +; +MSG_PG_STRG_FLAGS_EXITHELP_GAD +_WyjôcieHelp: +;_ExitHelp: +; +MSG_PG_STRG_VAR_MAXCHARS_GAD +MaksZnakow: +;MaxChars: +; +MSG_PG_STRG_VAR_STRING_GAD +_Tekst: +;_String: +; +MSG_PG_STRG_VAR_JUSTIFICATION_GAD +_Justyfikacja: +;_Justification: +; +MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD +Lewy +;Left +; +MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD +Prawy +;Right +; +MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD +Wycentrowany +;Center +; +MSG_PG_TDEK_FLAGS_FRAMES_GAD +_Ramki: +;_Frames: +; +MSG_PG_TDEK_FLAGS_CURRENT_GAD +_Aktualne: +;_Current: +; +MSG_PG_TDEK_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_TDEK_FLAGS_TAPE_GAD +_Taôma: +;_Tape: +; +MSG_PG_TDEK_FLAGS_PAUSED_GAD +_Pauza: +;_Paused: +; +MSG_PG_TEXT_FLAGS_DISABLED_GAD +_Wyîaczony: +;_Disabled: +; +MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD +_Podôwietlony: +;_Highlabel: +; +MSG_PG_TEXT_FLAGS_BORDER_GAD +_Ramka: +;_Border: +; +MSG_PG_TEXT_FLAGS_CLIPPED_GAD +_Wyciëte: +;_Clipped: +; +MSG_PG_TEXT_FLAGS_COPYTEXT_GAD +K_opiujTekst: +;C_opyText: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD +_Justyfikacja: +;_Justification: +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD +Lewy +;Left +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD +Prawy +;Right +; +MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD +Wycentrowany +;Center +; +MSG_PG_TEXT_FLAGS_DEFAULT_GAD +_Domyôlnie: +;D_efault: +; +MSG_PG_TFLD_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_TFLD_FLAGS_TABCYCLE_GAD +_TabCycle: +;_TabCycle: +; +MSG_PG_TFLD_FLAGS_READONLY_GAD +_Tylko odczyt: +;_Read Only: +; +MSG_PG_TFLD_FLAGS_INVERTED_GAD +_Odwrócony: +;_Inverted: +; +MSG_PG_TFLD_FLAGS_PARTIAL_GAD +_Czëôciowy: +;_Partial: +; +MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD +_BlokowyKursor: +;_BlockCursor +; +MSG_PG_TFLD_FLAGS_VCENTER_GAD +Centrowanie_Pion: +;_VCenter: +; +MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD +Pass Command: +;Pass Command: +; +MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD +_Schowek: +;_Clipboard: +; +MSG_PG_TFLD_FLAGS_UNDO_GAD +_Cofnij: +;_Undo: +; +MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD +_NieDrukowaneZnaki: +;_NonPrintChars: +; +MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD +_MaksRozmMiga: +;_Max Size Beep: +; +MSG_PG_TFLD_FLAGS_NOGHOST_GAD +Brak Wygaszania: +;No_Ghost: +; +MSG_PG_TFLD_FLAGS_MODIFIED_GAD +M_odyfikowany: +;M_odified: +; +MSG_PG_TFLD_FLAGS_USERALIGN_GAD +_UûytkownikRówna: +;_UserAlign: +; +MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD +_PapierZLiniami: +;_RuledPaper: +; +MSG_PG_TFLD_FLAGS_BORDER_GAD +_Ramka: +;_Border: +; +MSG_PG_TFLD_FLAGS_BORDER_L0_GAD +Brak +;None +; +MSG_PG_TFLD_FLAGS_BORDER_L1_GAD +Bevel +;Bevel +; +MSG_PG_TFLD_FLAGS_BORDER_L2_GAD +Podwójny Bevel +;Double Bevel +; +MSG_PG_TFLD_FLAGS_ALIGN_GAD +_Wyrównanie: +;_Align: +; +MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD +Lewy +;Left +; +MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD +Prawy +;Right +; +MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD +Wycentrowany +;Center +; +MSG_PG_TFLD_VAR_BLINKRATE_GAD +_CzMigania: +;_BlinkRate: +; +MSG_PG_TFLD_VAR_MAXSIZE_GAD +_MaksRozmiar: +;_MaxSize: +; +MSG_PG_TFLD_VAR_TABSPACES_GAD +_RozmiarTab: +;_TabSpaces: +; +MSG_PG_TFLD_VAR_SPACING_GAD +_Odstëp: +;_Spacing: +; +MSG_PG_TFLD_VAR_DELIMITERS_GAD +_Odlimitowanie: +;_Delimiters: +; +MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD +_AkceptujZnaki: +;_AcceptChars: +; +MSG_PG_TFLD_VAR_REJECTCHARS_GAD +_WyrzucZnaki: +;_RejectChars: +; +MSG_Properties_WND +Wîaôciwoôci +;Properties +; +MSG_PROPERTIES_LOCK_GAD + +; +; +MSG_PROPERTIES_APPLY_GAD +Z +;A +; +MSG_PROPERTIES_PAGES_L0_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L1_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L2_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L3_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L4_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L5_GAD +Flagi +;Lists +; +MSG_PROPERTIES_PAGES_L6_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L7_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L8_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L9_GAD +Zmienne +;Var. +; +MSG_PROPERTIES_PAGES_L10_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L11_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L12_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L13_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L14_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L15_GAD +Lista +;Lists +; +MSG_PROPERTIES_PAGES_L16_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L17_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L18_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L19_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L20_GAD +Zmienne +;Var. +; +MSG_PROPERTIES_PAGES_L21_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L22_GAD +Zmienne +;Var. +; +MSG_PROPERTIES_PAGES_L23_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L24_GAD +Zmienne +;Var. +; +MSG_PROPERTIES_PAGES_L25_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L26_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L27_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L28_GAD +Flagi2 +;Flags2 +; +MSG_PROPERTIES_PAGES_L29_GAD +Zmienne +;Var. +; +MSG_PROPERTIES_PAGES_L30_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L31_GAD +Flagi1 +;Flags1 +; +MSG_PROPERTIES_PAGES_L32_GAD +Styl +;Style +; +MSG_PROPERTIES_PAGES_L33_GAD +Flagi2 +;Flags2 +; +MSG_PROPERTIES_PAGES_L34_GAD +Flagi3 +;Flags3 +; +MSG_PROPERTIES_PAGES_L35_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L36_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L37_GAD + +; +; +MSG_PROPERTIES_PAGES_L38_GAD +Element +;Item +; +MSG_PROPERTIES_PAGES_L39_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L40_GAD +Flagi +;Flags +; +MSG_PROPERTIES_PAGES_L41_GAD +Gîówne +;General +; +MSG_PROPERTIES_PAGES_L42_GAD +Kolejnoôê tab +;Tab Order +; +MSG_Edit_WND + +; +; +MSG_Preferences_WND +Preferencje +;Preferences +; +MSG_PREFS_SAVE_GAD +_Zapisz +;_Save +; +MSG_PREFS_USE_GAD +_Uûyj +;_Use +; +MSG_PREFS_CANCEL_GAD +_Anuluj +;_Cancel +; +MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD +Kopia _Bezp.: +;Auto_Backup: +; +MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD +S_ize zoom: +;S_ize zoom: +; +MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD +_Szybkie rysowanie: +;_Fast redraw: +; +MSG_PG_PREFS_GENERAL_GETSCREEN_GAD +_Tryb Ekranu... +;Screen _mode... +; +MSG_PG_PREFS_GENERAL_SCREENMODE_GAD + +; +; +MSG_PG_PREFS_GEN_LIST_GAD +_Generatory: +;_Generators: +; +MSG_PG_PREFS_GENERAL_FONTNAME_GAD + +; +; +MSG_PG_PREFS_GENERAL_EDITFONT_GAD +Czcionka edytora... +;Editor font... +; +MSG_Grid_WND +Siatka +;Grid +; +MSG_GRID_X_GAD +Rozmiar _X: +;_X Size: +; +MSG_GRID_Y_GAD +Rozmiar _Y: +;_Y Size: +; +MSG_GRID_SHOW_GAD +_Pokaû siatkë: +;_Show Grid: +; +MSG_GRID_SNAP_GAD +P_rzyciâgaj: +;S_nap To Grid: +; +MSG_GRID_OK_GAD +_Zatwierdz +;_Ok +; +MSG_GRID_CANCEL_GAD +_Anuluj +;_Cancel +; +MSG_PGWN_LABEL_GAD +_Ident.: +;_Label: +; +MSG_PGWN_X_GAD + +; +; +MSG_PGWN_Y_GAD + +; +; +MSG_PGWN_WIDTH_GAD + +; +; +MSG_PGWN_HEIGHT_GAD + +; +; +MSG_PGWN_INNERHEIGHT_GAD +Wewn +;Inner +; +MSG_PGWN_INNERWIDTH_GAD +Wewn +;Inner +; +MSG_PGWN_REL_H_GAD +_Wysokoôê: +;_Height: +; +MSG_PGWN_REL_H_L0_GAD +Normalna +;Normal +; +MSG_PGWN_REL_H_L1_GAD +Ekran +;Screen +; +MSG_PGWN_REL_W_GAD +_Szer.: +;_Width: +; +MSG_PGWN_REL_W_L0_GAD +Normalna +;Normal +; +MSG_PGWN_REL_W_L1_GAD +Ekran +;Screen +; +MSG_PGWN_REL_Y_GAD +Poz _Y: +;_Y Pos: +; +MSG_PGWN_REL_Y_L0_GAD +Góra +;Top +; +MSG_PGWN_REL_Y_L1_GAD +Dóî +;Bottom +; +MSG_PGWN_REL_Y_L2_GAD +Centr. +;Center +; +MSG_PGWN_REL_X_GAD +Poz _X: +;_X Pos: +; +MSG_PGWN_REL_X_L0_GAD +Lewy +;Left +; +MSG_PGWN_REL_X_L1_GAD +Prawy +;Right +; +MSG_PGWN_REL_X_L2_GAD +Centr. +;Center +; +MSG_PGWN_SCREEN_TITLE_GAD +Tytuî _ekranu: +;_Screen Title: +; +MSG_PGWN_WINDOW_TITLE_GAD +Tytuî _okna: +;_Window Title: +; +MSG_PGWN_PAGED_GAD +_Stonicowany: +;Pa_ged: +; +MSG_PGWN_FONTADAPTIVE_GAD +_Adapt.czcionka: +;_Font Adaptive: +; +MSG_PGWN_APPWINDOW_GAD +_OknoApp: +;_App Window: +; +MSG_PGWN_PROJECT_GAD +_Projekt: +;_Project: +; +MSG_PGWN_MENU_GET_GAD +S +;S +; +MSG_PGWN_MENU_GAD +Menu: +;Menu: +; +MSG_PGWN_ZOOM_GAD +_Zoom: +;_Zoom: +; +MSG_PGWN_BACKDROP_GAD +B_ackdrop +;B_ackdrop: +; +MSG_PGWN_BORDERLESS_GAD +_Bez ramek: +;_Borderless: +; +MSG_PGWN_SIZEBBOTTOM_GAD +Marg. _Dolny: +;Size B_Bottom: +; +MSG_PGWN_SIZEBRIGHT_GAD +Marg. _Prawy: +;Size B_Right: +; +MSG_PGWN_CLOSEGADGET_GAD +Zamknij: +;Close: +; +MSG_PGWN_DEPTHGADGET_GAD +_Gîëbokoôê: +;D_epth: +; +MSG_PGWN_SIZEGADGET_GAD +_Rozmiar: +;_Size: +; +MSG_PGWN_DRAGGADGET_GAD +_Belka: +;_Drag: +; +MSG_PGWN_DRAGGADGET_L0_GAD +Brak +;None +; +MSG_PGWN_DRAGGADGET_L1_GAD +Normalne +;Normal +; +MSG_PGWN_DRAGGADGET_L2_GAD +Narz. Poz. +;Tool Horz. +; +MSG_PGWN_DRAGGADGET_L3_GAD +Narz. Pion. +;Tool Vert. +; +MSG_PGWN_FALLBACK_GAD +_FallBack: +;_FallBack: +; +MSG_PGWN_REPORTMOUSE_GAD +Report_Mouse: +;Report_Mouse: +; +MSG_PGWN_AUTOADJUST_GAD +A_utoAdjust: +;A_utoAdjust: +; +MSG_PGWN_ACTIVATE_GAD +_Aktywne +;_Activate: +; +MSG_PGWN_RMBTRAP_GAD +_RMBTrap +;RMB_Trap: +; +MSG_PGWN_NEWLOOKMENUS_GAD +N_owyWyglMenu: +;N_ewLookMenus: +; +MSG_PGWN_NOCAREREFRESH_GAD +_NoCareRefresh: +;_NoCareRefresh: +; +MSG_PGWN_GZZ_GAD +_GimmeZeroZero: +;_GimmeZeroZero: +; +MSG_PGWN_REFRESH_GAD +_Odôwieûanie: +;_Refresh: +; +MSG_PGWN_REFRESH_L0_GAD +Proste +;Simple +; +MSG_PGWN_REFRESH_L1_GAD +Zîoûone +;Smart +; +MSG_PGWN_REFRESH_L2_GAD +SuperBitmap +;SuperBitmap +; +MSG_PGWN_MOUSEQUEUE_GAD +_Mouse Queue: +;_Mouse Queue: +; +MSG_PGWN_REPEATQUEUE_GAD +_Repeat Queue: +;_Repeat Queue: +; +MSG_PGWN_IDCMP_GAD +Flagi _IDCMP... +;_IDCMP Flags... +; +MSG_PGWN_REPEATQUEUE_SET_GAD + +; +; +MSG_PGWN_MOUSEQUEUE_SET_GAD + +; +; +MSG_PGWN_NOTIFYDEPTH_GAD +_Notify Depth: +;_Notify Depth: +; +MSG_PGWN_MENUHELP_GAD +_Menu Help: +;_Menu Help: +; +MSG_PGWN_POINTERDELAY_GAD +_PointerDelay: +;_PointerDelay: +; +MSG_WN_IDCMPFlags_WND +Flagi IDCMP +;IDCMP Flags +; +MSG_IDCMP_CANCEL_GAD +_Anuluj +;_Cancel +; +MSG_IDCMP_OK_GAD +_Zatwierdú +;_Ok +; +MSG_IDCMP_MENUPICK_GAD +MenuPick: +;MenuPick: +; +MSG_IDCMP_GADGETHELP_GAD +GadgetHelp: +;GadgetHelp: +; +MSG_IDCMP_MENUHELP_GAD +MenuHelp: +;MenuHelp: +; +MSG_IDCMP_IDCMPUPDATE_GAD +IDCM_PUpdate: +;IDCM_PUpdate: +; +MSG_IDCMP_DISKINSERTED_GAD +Dis_kInserted: +;Dis_kInserted: +; +MSG_IDCMP_DISKREMOVED_GAD +_DiskRemoved: +;_DiskRemoved: +; +MSG_IDCMP_INACTIVEWINDOW_GAD +InActiveWin_dow: +;InActiveWin_dow: +; +MSG_IDCMP_ACTIVEWINDOW_GAD +Ac_tiveWindow: +;Ac_tiveWindow: +; +MSG_IDCMP_INTUITICKS_GAD +_IntuiTicks: +;_IntuiTicks: +; +MSG_IDCMP_CLOSEWINDOW_GAD +C_loseWindow: +;C_loseWindow: +; +MSG_IDCMP_VANILLAKEY_GAD +_VanillaKey: +;_VanillaKey: +; +MSG_IDCMP_RAWKEY_GAD +R_AWKey: +;R_AWKey: +; +MSG_IDCMP_GADGETDOWN_GAD +Gadget_Down: +;Gadget_Down: +; +MSG_IDCMP_GADGETUP_GAD +Gadget_Up: +;Gadget_Up: +; +MSG_IDCMP_MOUSEBUTTONS_GAD +Mouse_Buttons: +;Mouse_Buttons: +; +MSG_IDCMP_NEWPREFS_GAD +New_Prefs: +;New_Prefs: +; +MSG_IDCMP_CHANGEWINDOW_GAD +C_hangeWindow: +;C_hangeWindow: +; +MSG_IDCMP_REFRESHWINDOW_GAD +Re_freshWindow: +;Re_freshWindow: +; +MSG_IDCMP_NEWSIZE_GAD +_NewSize: +;_NewSize: +; +MSG_IDCMP_REQCLEAR_GAD +ReqCl_ear: +;ReqCl_ear: +; +MSG_IDCMP_REQSET_GAD +Req_Set: +;Req_Set: +; +MSG_IDCMP_REQVERIFY_GAD +_ReqVerify: +;_ReqVerify: +; +MSG_IDCMP_SIZEVERIFY_GAD +_SizeVerify: +;_SizeVerify: +; +MSG_IDCMP_MENUVERIFY_GAD +_MenuVerify: +;_MenuVerify: +; +MSG_IDCMP_MOUSEMOVE_GAD +MouseMove +;MouseMove +; +MSG_IDCMP_DELTAMOVE_GAD +DeltaMove +;DeltaMove +; +MSG_PGMN_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGMN_NEWLOOK_GAD +_Nowy Wyglâd: +;_NewLook: +; +MSG_Working_WND + +; +; +MSG_WORK_PROGRESS_FORMAT_GAD +%ld%% +;%ld%% +; +MSG_PGFR_X_GAD +Poz _X: +;_X Pos: +; +MSG_PGFR_Y_GAD +Poz _Y: +;_Y Pos: +; +MSG_PGFR_WIDTH_GAD +_Szer.: +;_Width: +; +MSG_PGFR_HEIGHT_GAD +_Wysokoôê: +;_Height: +; +MSG_PGFR_FRAME_GAD +_Ramka: +;_Frame: +; +MSG_PGFR_FRAME_L0_GAD +Przycisk: +;Button +; +MSG_PGFR_FRAME_L1_GAD +IconDropBox +;IconDropBox +; +MSG_PGFR_FRAME_L2_GAD +Ridge +;Ridge +; +MSG_PGFR_FRAME_L3_GAD +Linia Poz. +;Horiz. Line +; +MSG_PGFR_FRAME_L4_GAD +Linia Pion. +;Vert. Line +; +MSG_PGFR_RECESSED_GAD +_Odwrócone: +;_Recessed: +; +MSG_EditMenu_WND + +; +; +MSG_EditImage_WND +Edytuj Rysunek +;Edit Image +; +MSG_List_WND +Wybierz... +;Select... +; +MSG_LIST_GAD + +; +; +MSG_PGMN_ITEM_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGMN_ITEM_TITLE_GAD +_Tytuî: +;_Title: +; +MSG_PGMN_ITEM_COMMKEY_GAD +_Skrót: +;Comm_Key: +; +MSG_PGMN_ITEM_POPUP_GAD +_PopUp: +;_PopUp: +; +MSG_PGMN_ITEM_BARLABEL_GAD +_Odstëp: +;_BarLabel: +; +MSG_PGMN_ITEM_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PGMN_ITEM_CHECKED_GAD +_Zaznaczony: +;_Checked: +; +MSG_PGMN_ITEM_TOGGLE_GAD +Menu T_oggle: +;Menu T_oggle: +; +MSG_PGPI_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGPI_WIDTH_GAD +_S: +;_W: +; +MSG_PGPI_HEIGHT_GAD +_W: +;_H: +; +MSG_PGPI_DEPTH_GAD +_G: +;_D: +; +MSG_PGPI_TYPE_GAD +_Typ: +;_Type: +; +MSG_PGPI_TYPE_L0_GAD +Normalny +;Normal image +; +MSG_PGPI_TYPE_L1_GAD +Pasek narzëdzi +;Toolbar image +; +MSG_PGPI_TYPE_L2_GAD +Wskaúnik myszy +;Pointer image +; +MSG_PGPI_SETPOINT_GAD +_Ustaw wskaúnik +;_Set Point +; +MSG_PGPI_PALETTE_GAD +Edytuj _paletë... +;Edit _Palette... +; +MSG_TBP_PALETTE_GAD + +; +; +MSG_Screen_WND +Wîaôciwoôci ekranu +;Screen Properties +; +MSG_SCREEN_PAGES_L0_GAD +Gîówne +;General +; +MSG_SCREEN_PAGES_L1_GAD +Flagi +;Flags +; +MSG_PGSCR_WIDTH_GAD +_Szer.: +;_Width: +; +MSG_PGSCR_HEIGHT_GAD +_Wysokoôê: +;_Height: +; +MSG_PGSCR_DEPTH_GAD +_Gîëbokoôê: +;_Depth: +; +MSG_PGSCR_TITLE_GAD +_Tytuî: +;_Title: +; +MSG_PGSCR_PUBNAME_GAD +Nazwa _Publiczna: +;_PubName: +; +MSG_PGSCR_USE_GAD +_Uûyj +;_Use: +; +MSG_PGSCR_USE_L0_GAD +Workbench +;Workbench +; +MSG_PGSCR_USE_L1_GAD +Wîasny ekran +;CustomScreen +; +MSG_PGSCR_USE_L2_GAD +Ekran publiczny +;PublicScreen +; +MSG_PGSCR_MAKEPUBLIC_GAD +_Zrób publiczny: +;_MakePublic: +; +MSG_PGSCR_MODEID_GAD +Tryb: +;ModeID: +; +MSG_PGSCR_MODEID_GET_GAD +G +;G +; +MSG_PGSCR_DEFAULTID_GAD + +; +; +MSG_PGSCR_SHOWTITLE_GAD +_ShowTitle: +;_ShowTitle: +; +MSG_PGSCR_BEHIND_GAD +_Behind: +;_Behind: +; +MSG_PGSCR_QUIET_GAD +_Quiet: +;_Quiet: +; +MSG_PGSCR_AUTOSCROLL_GAD +_AutoScroll: +;_AutoScroll: +; +MSG_PGSCR_FULLPALETTE_GAD +_FullPalette: +;_FullPalette: +; +MSG_PGSCR_DRAGGABLE_GAD +_Draggable: +;_Draggable: +; +MSG_PGSCR_EXCLUSIVE_GAD +_Exclusive: +;_Exclusive: +; +MSG_PGSCR_SHAREPENS_GAD +S_harePens: +;S_harePens: +; +MSG_PGSCR_INTERLEAVED_GAD +_Interleaved: +;_Interleaved: +; +MSG_PGSCR_LIKEWORKBENCH_GAD +_Like Workbench: +;_Like Workbench: +; +MSG_PGSCR_MINIMIZEISG_GAD +_Minimize ISG: +;_Minimize ISG: +; +MSG_EditString_WND +Edytuj teksty +;Edit Strings +; +MSG_PGSTR_STRINGS_FORMAT_GAD +MSG ID|Typ|Tekst +;MSG ID|Type|String +; +MSG_PGSTR_ADD_GAD +_Dodaj +;_Add +; +MSG_PGSTR_DELETE_GAD +_Usuï +;_Delete +; +MSG_PGSTR_EDIT_GAD +_Edytuj +;_Edit +; +MSG_PGSTR_LABEL_GAD +_Identyfikator: +;_Label: +; +MSG_PGSTR_STRING_GAD +_Tekst: +;_String: +; +MSG_EditVersion_WND +Edytuj wersjë +;Edit Version +; +MSG_PGVER_PROGRAMNAME_GAD +Nazwa _programu: +;_ProgramName: +; +MSG_PGVER_AUTHOR_GAD +_Autor: +;_Author: +; +MSG_PGVER_VERSION_GAD +_Wersja: +;_Version: +; +MSG_PGVER_DATE_GAD +Data: +;Date: +; +MSG_PGVER_REVISION_GAD +_Wydanie: +;_Revision: +; +MSG_PG_TRLV_FLAGS_COLUMNS_GAD +_Kolumny: +;_Columns: +; +MSG_PG_TRLV_FLAGS_FORMAT_GAD +_Format: +;_Format: +; +MSG_PG_TRLV_FLAGS_DISABLED_GAD +_Wyîâczony: +;_Disabled: +; +MSG_PG_TRLV_FLAGS_MULTISELECT_GAD +_WieleZaznacz: +;_MultiSelect: +; +MSG_PG_TRLV_FLAGS_BORDER_GAD +_Ramka: +;_Border: +; +MSG_PG_TRLV_FLAGS_READONLY_GAD +_Tylko odczyt: +;_ReadOnly: +; +MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD +PokaûLinie_Drzewa: +;Show_TreeLines: +; +MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD +_PokaûZaznaczone: +;_ShowSelected: +; +MSG_PG_TRLV_FLAGS_TREE_GAD +Drz_ewo: +;Tr_ee: +; +MSG_Object_WND +Obiekty +;Objects +; +MSG_EditPalette_WND +Edytuj Paletë +;Edit Palette +; +MSG_PAL_PALETTE_GAD + +; +; +MSG_PAL_GREEN_GAD + +; +; +MSG_PAL_GREEN_FORMAT_GAD +Zielony: %3ld +;Green: %3ld +; +MSG_PAL_BLUE_GAD + +; +; +MSG_PAL_BLUE_FORMAT_GAD +Nieb: %3ld +;Blue: %3ld +; +MSG_PAL_RED_GAD + +; +; +MSG_PAL_RED_FORMAT_GAD +Czer: %3ld +;Red: %3ld +; +MSG_PAL_CANCEL_GAD +_Anuluj +;_Cancel +; +MSG_PAL_OK_GAD +_Zatwierdú +;_Ok +; +MSG_PGWN_TABORDER_DOWN_GAD +_Dóî +;_Down +; +MSG_PGWN_TABORDER_UP_GAD +_Góra +;_Up +; +MSG_PGWN_TABORDER_LIST_GAD + +; +; +MSG_STATUS_CHANGED_GAD + +; +; +MSG_STATUS_TEXT_GAD + +; +; +MSG_CANTALLOCREQ +Nie mogë zainicjalizowaê okna asl +;Can't allocate asl requester +; +MSG_CANTALLOCOBJECT +Nie mogë stworzyê obiektu +;Can't create object +; +MSG_CANTOPENTOOLBAR +Nie mogë otworzyê paska narzëdzi +;Can't open toolbar window +; +MSG_CANTOPENOBJECTWINDOW +Nie mogë otworzyê okna list obiektów +;Can't open object list window +; +MSG_CANTOPENCLIPBOARD +Nie mogë otworzyê schowka +;Can't open clipboard +; +MSG_GAD_BUTTON +Button +;Button +; +MSG_GAD_CHECKBOX +CheckBox +;CheckBox +; +MSG_GAD_COLORWHEEL +ColorWheel +;ColorWheel +; +MSG_GAD_CYCLE +Cycle +;Cycle +; +MSG_GAD_DATATYPE +Datatype +;Datatype +; +MSG_GAD_GRADIENTSLIDER +Gradientslider +;Gradientslider +; +MSG_GAD_INTEGER +Integer +;Integer +; +MSG_GAD_LISTVIEW +Listview +;Listview +; +MSG_GAD_MX +MX +;MX +; +MSG_GAD_NUMBER +Number +;Number +; +MSG_GAD_PAGE +Page +;Page +; +MSG_GAD_PALETTE +Palette +;Palette +; +MSG_GAD_POPUPMENU +PopupMenu +;PopupMenu +; +MSG_GAD_PROGRESS +Progress +;Progress +; +MSG_GAD_SCROLLER +Scroller +;Scroller +; +MSG_GAD_SLIDER +Slider +;Slider +; +MSG_GAD_STRING +String +;String +; +MSG_GAD_TAPEDECK +Tapedeck +;Tapedeck +; +MSG_GAD_TEXT +Text +;Text +; +MSG_GAD_TEXTFIELD +Textfield +;Textfield +; +MSG_GAD_TREEVIEW +TreeView +;TreeView +; +MSG_NEW +(nowy) +;(new) +; +MSG_LOADING +Wczytujë... +;Loading... +; +MSG_SAVING +Zapisujë... +;Saving... +; +MSG_GENERATING +Generujë... +;Generating... +; +MSG_ABOUT +GadToolsBox v%ld.%ld\n(tylko dla betatesterów)\n(c) 1996-98 by %s\n\nZarejestrowane na:\n%s\n%s\n\nNumer seryjny: %s +;GadToolsBox v%ld.%ld\n(for betatesters only)\n(c) 1996-98 by %s\n\nRegistered to:\n%s\n%s\n\nSerialNr: %s +; +MSG_ERROPENLIB_GRADIENTSLIDER +Nie mogë otworzyê gradientslider.gadget +;Can't open gradientslider.gadget +; +MSG_NEWTITLE +(nowe menu) +;(new title) +; +MSG_NEWITEM +(nowy element) +;(new item) +; +MSG_NEWSUB +(nowe podmenu) +;(newsub) +; +MSG_CHANGEME +.%ld +;.%ld +; +MSG_EDITSTR_STRING +%s\tTekst\t%s +;%s\tString\t%s +; +MSG_UNNAMED + +; +; +MSG_EMPTY + +; +; +MSG_UNTITLED + +; +; +MSG_UNKNOWN + +; +; +MSG_OK +Zatwierdú +;Ok +; +MSG_ERROR +Bîâd +;Error +; +MSG_YOUNEEDNEWERVERSION +Potrzebujesz GadToolsBoxa v%ld.%ld aby otworzyê ten projekt. +;You need at least GadToolsBox v%ld.%ld to open this resource file. +; +MSG_ERRCREATEPROJECTPORT +Nie mogë stworzyê portu IDCMP +;Can't create IDCMP message port +; +MSG_ERRCREATEPOINTER +Nie mogë stworzyê obiektu wskaúnika +;Can't create pointer object +; +MSG_ERRCREATEIMAGE +Nie mogë stworzyê obiektu obrazka +;Can't create image object +; +MSG_PGDT_DTOBJ +Obiekt DT +;DT Obj +; +MSG_ERROPENLIB_COLORWHEEL +Nie mogë otworzyê colorwheel.gadget +;Can't open colorwheel.gadget +; +MSG_ALIGNLEFT +Wyrównaj do lewej +;Align to left +; +MSG_ALIGNHCENTER +Wyrównaj do ôrodka szerokoôci +;Align width center +; +MSG_ALIGNRIGHT +Wyrównaj do prawej +;Align to right +; +MSG_ALIGNTOP +Wyrównaj do góry +;Align to top +; +MSG_ALIGNVCENTER +Wyrównaj do ôrodka wysokoôci +;Align height center +; +MSG_ALIGNBOTTOM +Wyrównaj do doîu +;Align to bottom +; +MSG_SPREADHORIZ +Rozmieôê w poziomie +;Spread horizontal +; +MSG_SPREADVERT +Rozmieôê w pionie +;Spread vertical +; +MSG_FRAMEOBJECT +Obiekt ramki +;Frame object +; +MSG_GADGETOBJECT +Obiekt gadûetu +;Gadget object +; +MSG_WINDOWOBJECT +Obiekt okna +;Window object +; +MSG_IMAGEOBJECT +Obiekt obrazka +;Image object +; +MSG_STRINGOBJECT +Obiekt tekstu +;String object +; +MSG_NOOBJECT +Nie ma wîaôciwoôci obiektu +;No object properties +; +MSG_MENUOBJECT +Obiekt menu +;Menu object +; +MSG_CONFIRMATION +Polecenie potwierdzenia +;Confirmation Request +; +MSG_REPLACEFILE +Plik %s juû wystepuje. Zastâpiê? +;File %s already exists. Replace? +; +MSG_YESNO +Tak|Nie +;Yes|No +; +MSG_CANTOPENSTATUSWINDOW +Nie mogë otworzyê okna statusu +;Can't open status window +; +MSG_CANTOPENPROPERTIESWINDOW +Nie mogë otworzyê okna wîaôciwoôci +;Can't open properties window +; +MSG_STATUS_RESLOADED +Projekt zostaî wczytany. +;Resource file loaded. +; +MSG_STATUS_RESSAVED +Projekt zostaî zapisany. +;Resource file saved. +; +MSG_STATUS_MOVINGOBJECT +Przesuwam obiekt... +;Moving object... +; +MSG_STATUS_RESIZINGOBJECT +Zmieniam wymiar obiektu... +;Resizing object... +; +MSG_STATUS_RESGENERATED +Kod úródîowy zostaî wygenerowany. +;Source code generated. +; +MSG_STATUS_CREATINGOBJECT +Tworzë obiekt... +;Creating object... +; +MSG_STATUS_SELECTINGOBJECTS +Zaznaczam obiekty... +;Selecting objects... +; +MSG_ERROPENLIB_PAGE +Nie mogë otworzyê page.gadget +;Can't open page.gadget +; +MSG_ERROPENLIB_PROGRESS +Nie mogë progress.gadget +;Can't open progress.gadget +; +MSG_ERROPENLIB_TEXTFIELD +Nie mogë textfield.gadget +;Can't open textfield.gadget +; +MSG_ERROPENLIB_TREEVIEW +Nie mogë listview.gadget +;Can't open listview.gadget +; +MSG_ERROPENLIB_SMARTBITMAP +Nie mogë superbitmap.image +;Can't open smartbitmap.image +; +MSG_ERR_OPENSCREEN +Nie mogë otworzyê ekranu +;Can't open screen +; +MSG_ERR_VISUALINFO +Nie mogë zainicjalizowaê informacje wizualne +;Can't alloc visual info +; +MSG_ERR_SCRDRAWINFO +Nie mogë zainicjalizowaê informacji rysowania +;Can't alloc screen draw info +; +MSG_ERR_UNKNOWN +Wystâpiî nieznany bîâd! +;Unknown error occured! +; +MSG_ERROPENLIB_TAPEDECK +Nie mogë otworzyê tapedeck.gadget +;Can't open tapedeck.gadget +; +MSG_CANTCREATEPOPUPMENUS +Nie mogë stworzyê menu podrëcznego +;Can't create popup menus +; +MSG_ERROPENLIB_POPUPMENU +Nie mogë otworzyê popupmenu.library +;Can't open popupmenu.library +; +MSG_CANTCREATEPOPUPMENUCLASS +Nie mogë stworczyc klasy popupmenu +;Can't create popupmenu class +; +MSG_CANTCREATEDRAWCLASS +Nie mogë stworzyê klasy rysowania +;Can't create draw class +; +MSG_ABOUTUNREG +GadToolsBox v%ld.%ld\n(tylko dla betatesterów)\n(c) 1996-98 by %s\n\nWersja niezarejestrowana\nProszë zarejestrowaê!\n +;GadToolsBox v%ld.%ld\n(for betatesters only)\n(c) 1996-98 by %s\n\nUnregistered version\nPlease register!\n +; +MSG_SELECTPROJECTFILE +Wybierz projekt do otwarcia... +;Select project file to open... +; +MSG_SAVEPROJECTAS +Zapisz projekt jako... +;Save project as... +; +MSG_ENTERBASENAME +Wpisz nazwë bazowâ do wygenerowania... +;Enter base filename to generate... +; +MSG_NOTSAVED +W projekcie %s byîy dokonane zmiany. Czy chcesz kontynuowaê? +;Some changes has been made to project %s. Do You want to continue? +; diff --git a/GadToolsBox/defines.h b/GadToolsBox/defines.h new file mode 100755 index 0000000..4a69801 --- /dev/null +++ b/GadToolsBox/defines.h @@ -0,0 +1,222 @@ +#ifndef GTB_DEFINES_H +#define GTB_DEFINES_H +/* +** Defines +*/ + +#include + +#define ID_GTBX MAKE_ID('G','T','B','X') // GadToolsBox Chunk (GUI File) + +/* +** Last Commands +*/ + +#define CMD_NONE 0 +#define CMD_CUT 1 +#define CMD_PASTE 2 +#define CMD_CHANGE 3 // Size, Move + +/* +** Gadget/Frame click position +*/ + +#define CP_OUTSIDE 0 +#define CP_SIZE_LEFTUP 1 +#define CP_SIZE_RIGHTUP 2 +#define CP_SIZE_RIGHTDOWN 3 +#define CP_SIZE_LEFTDOWN 4 +#define CP_SIZE_LEFT 5 +#define CP_SIZE_RIGHT 6 +#define CP_SIZE_UP 7 +#define CP_SIZE_DOWN 8 +#define CP_MOVE 9 + +/* +** Gadget/Frame action +*/ + +#define GS_NOTHING 0 +#define GS_CREATING 1 +#define GS_MOVING 2 +#define GS_SIZING_LEFTUP 3 +#define GS_SIZING_RIGHTUP 4 +#define GS_SIZING_RIGHTDOWN 5 +#define GS_SIZING_LEFTDOWN 6 +#define GS_SIZING_LEFT 7 +#define GS_SIZING_RIGHT 8 +#define GS_SIZING_UP 9 +#define GS_SIZING_DOWN 10 +#define GS_SELECTING 11 + +/* +** Properties Mode +*/ + +#define PM_NONE 0 +#define PM_WINDOW 1 +#define PM_GADGET 2 +#define PM_FRAME 3 +#define PM_IMAGE 4 +#define PM_MENU 5 +#define PM_TEXT 6 +#define PM_SCREEN 7 +#define PM_STRING 8 + +/* +** Edit Mode +*/ + +#define MODE_TEST 0 +#define MODE_GADGET 1 +#define MODE_FRAME 2 + +#define GD_DUMMY (10000) +#define GD_LEFTBUTTON (GD_DUMMY) +#define GD_RIGHTBUTTON (GD_DUMMY+1) +#define GD_HORIZBUTTON (GD_DUMMY+2) +#define GD_DOWNBUTTON (GD_DUMMY+3) +#define GD_UPBUTTON (GD_DUMMY+4) +#define GD_VERTBUTTON (GD_DUMMY+5) + +/* +** Align types +*/ + +#define ALIGN_LEFT 0 +#define ALIGN_HCENTER 1 +#define ALIGN_RIGHT 2 +#define ALIGN_TOP 3 +#define ALIGN_VCENTER 4 +#define ALIGN_BOTTOM 5 +#define SPREAD_HORIZ 6 +#define SPREAD_VERT 7 +#define CLONE_WIDTH 8 +#define CLONE_HEIGHT 9 +#define CLONE_BOTH 10 + +/* +** Usefull macros +*/ + +#define unless(x) if(!(x)) +#define ListEmpty(x) ((((struct List *)x)->lh_TailPred) == ((struct Node *)x)) +#define WhileNode(l,n) for(n=(l)->lh_Head;n->ln_Succ!=0;n=n->ln_Succ) +#define SetFlag(x,f) x|=f +#define GetFlag(x,f) if(x&f) +#define ClearFlag(x,f) x&=(f^-1) +#define DoFlag(x,f) if(code) SetFlag(x,f); else ClearFlag(x,f); +#define Node(x) ((struct Node *)x) +#define List(x) ((struct List *)x) +#define DisableGadget(g,w,s) GT_SetGadgetAttrs(g,w,NULL,GA_Disabled,s,TAG_DONE) + +#define SetCheckMark(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCB_Checked,a,TAG_DONE) +#define SetCycle(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTCY_Active,a,TAG_DONE) +#define SetString(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTST_String,a,TAG_DONE) +#define SetInteger(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTIN_Number,a,TAG_DONE) +#define SetNumber(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTNM_Number,a,TAG_DONE) +#define SetListView(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTLV_Labels,a,TAG_DONE) +#define SetText(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTTX_Text,a,GTTX_Clipped,TRUE,TAG_DONE) +#define SetMX(w,g,a) GT_SetGadgetAttrs(g,w,NULL,GTMX_Active,a,TAG_DONE) + +#define GetCheckMark(w,g,a) GT_GetGadgetAttrs(g,w,NULL,GTCB_Checked,a,TAG_DONE) +#define GetCycle(w,g,a) GT_GetGadgetAttrs(g,w,NULL,GTCY_Active,a,TAG_DONE) +#define GetListView(w,g,a) GT_GetGadgetAttrs(g,w,NULL,GTLV_Selected,a,TAG_DONE) +#define GetMX(w,g,a) GT_GetGadgetAttrs(g,w,NULL,GTMX_Active,a,TAG_DONE) + +/* +** Prefs +*/ + +#include + +#define ID_PREF MAKE_ID('P','R','E','F') + +#define WIN_PROPERTIES 0 +#define WIN_TOOLBAR_MAIN 1 +#define WIN_TOOLBAR_GADGETS 2 +#define WIN_STATUS 3 +#define WIN_TOOLBAR_IMAGE 4 +#define WIN_OBJECT 5 +#define WIN_OBJECT_DIMS 6 + +#define PRFLAG_AUTOBACKUP 1<<0 +#define PRFLAG_SIZEZOOM 1<<1 +#define PRFLAG_FASTREDRAW 1<<2 +#define PRFLAG_WRITEICONS 1<<3 +#define PRFLAG_OBJECTSOPEN 1<<4 +#define PRFLAG_STATUSOPEN 1<<5 +#define PRFLAG_PROPSOPEN 1<<6 + +struct Prefs +{ + ULONG pr_Flags; + ULONG pr_DisplayID; + UWORD pr_Width,pr_Height,pr_Depth; + TEXT pr_Generator[108]; + UWORD pr_Grid[2]; + BOOL pr_GridOn,pr_GridShow; + TEXT pr_FontName[30]; + UWORD pr_FontSize; + struct + { + UWORD X,Y; + } pr_WinPos[10]; +}; + +/* +** GUI +*/ + +#define ID_GGUI MAKE_ID('G','G','U','I') + +struct GUI +{ + UBYTE gui_Version,gui_Revision; + STRPTR gui_PubScreenName; + + UWORD gui_Grid[2]; + BOOL gui_GridOn,gui_GridShow; + + UBYTE gui_Mode; + struct Prefs *gui_Prefs; + + piObject *gui_Node_Version; // $VER string + piObject *gui_Node_Screen; // Screen + piObject *gui_Node_String; // List of locale strings + struct MinList gui_List_Window; // List of windows + struct MinList gui_List_Menu; // List of menus + struct MinList gui_List_Image; // List of images/mouse pointers/toolbars + struct MinList gui_List_Binary; // List of binary data +}; + +/* +** GadToolsBox Public Semaphore +*/ + +struct GTBSemaphore +{ + struct SignalSemaphore gs_Semaphore; + struct GUI *gs_GUI; + struct Window *gs_Window; + struct Gadget *gs_Progress; + struct TextFont *gs_FontTF; +}; + +typedef struct +{ + ULONG kf_KeyID; // 4 + UWORD kf_KeyVersion; // 6 + ULONG kf_ProgramID; // 10 + UWORD kf_Version; // 12 + UWORD kf_Revision; // 14 + TEXT kf_Serial[9]; // 23 + ULONG kf_SerialNum; // 27 + ULONG kf_Checksum; // 31 +// STRPTR kf_UserName; // +// STRPTR kf_Address; // +// STRPTR kf_EMail; // +// ULONG kf_Checksum2; // +} KEYFILE; + +#endif diff --git a/GadToolsBox/docs/fixed.txt b/GadToolsBox/docs/fixed.txt new file mode 100755 index 0000000..7952017 --- /dev/null +++ b/GadToolsBox/docs/fixed.txt @@ -0,0 +1,24 @@ +Poprawione: +- jesli nie ma preferencji otwiera sie requester do wyboru ekranu +- nie zwiesza sie przy objects/strings/delete +- tapedeck.gadget jest juz dobrze rysowany +- po kliknieciu na objects/strings/add dodany element listy jest +automatycznie zaznaczony (wczesniej tez byl ale nie bylo to +odzwierciedlone na ekranie :-) +- teraz nie da sie wprowadzic ujemnej pozycji dla obiektu +- dodana opcja objects/window/refresh. Jak sama nazwa wskazuje opcja ta +sluzy od odswierzenia zawartosci okna i jego ramek. +- zmiana pomiedzy glebokoscia a iloscia kolorow w gadzecie palette +powoduje konwersje pomiedzy tymi wartosciami. +- file requestery maja teraz odpowiednie podpisy +- poprawione okno about dla dziwnych czcionek +- poprawiona edycja strzalek w SCROLLER_KIND. +- SCROLLER_KIND i SLIDER_KIND maja wyrzucona flage NewLook (skad ona sie +tam wziela?) Jesli tworzyliscie te gadzety to mozliwe, ze bedziecie +musieli je skasowac i wstawic jeszcze raz. Inaczej flaga Freedom moze nie +byc zapamietana - nie sprawdzalem. + +Bîëdy: +- po kliknieciu i skasowaniu na pustym polu w strings mozna dalej +zaznaczac jakas glupote. +- przy zmianie wymiarow gadgetow ich wartosci nie sa updatowane w realtime'ie diff --git a/GadToolsBox/docs/iff-structure.txt b/GadToolsBox/docs/iff-structure.txt new file mode 100755 index 0000000..f5b067c --- /dev/null +++ b/GadToolsBox/docs/iff-structure.txt @@ -0,0 +1,160 @@ +GadToolsBox 3 - IFF - super boski format pliku gadûtulsboksza v3 i 1/3! + +FORMGTBX (GadToolsBox) + |- GGUI - struct GUI_Store + | + |- SCRN /* Note: Only one screen for project */ - struct Node_Screen + | +< |- WIND - struct Node_Window +<< |- BUTT - struct Node_Gadget + additional data (Button) +<< |- CBOX - struct Node_Gadget + additional data (CheckBox) +<< |- ... +<< |- FRME - struct Node_Frame + | +< |- MENU - struct Node_Menu + additional data + | +< |- PINT - struct Node_Pointer + | +< |- STRG - struct Node_Text + additional data + | + +- SVER - struct Node_Version + +--------------------- + +Oto strukturka dla GUI_Store: + +struct GUI_Store +{ + UWORD gs_Grid[2]; + BOOL gs_GridOn,gs_GridShow; + UBYTE gs_Mode; +}; + +--------------------- + +Gadûety sâ zapisane w taki oto sposób: + + struct Node_Gadget - takie sobie tam dane o gadûecie i inne bzdety + + dalej w pëtelce zapisane sâ tagsy + + UBYTE - Typ tagu: + - TAGTYPE_NONE - czyli brak danych do tagu + - TAGTYPE_NUMBER - dane typu ULONG + - TAGTYPE_TEXT - dane typu text + - TAGTYPE_LIST - dane typu lista danych + + ULONG - Tag ID + + TAGTYPE_NONE: nic + TAGTYPE_NUMBER: + ULONG - liczba typu long + TAGTYPE_TEXT: + ULONG - rozmiar tekstu + - dane o dlugosci j/w + TAGTYPE_LIST: + ULONG - ilosc elementow w liscie + i w pëtelce dwie rzeczy + UWORD - dlusgosc stringu + - string + +Tu sâ procedurki do czytania i zapisywania tagsów: + +LONG WriteTagItem(struct IFFHandle *iffh,struct TagItem *t,UBYTE type) +{ + LONG error=0; + struct Node *n; + int a; + ULONG ld; + UWORD wd; + UBYTE bd; + + bd=type; + WriteChunkBytes(iffh,(APTR)&bd,1); + ld=t->ti_Tag; + WriteChunkBytes(iffh,(APTR)&ld,4); + switch(type) + { + case TAGTYPE_NONE: + break; + case TAGTYPE_NUMBER: + ld=t->ti_Data; + WriteChunkBytes(iffh,(APTR)&ld,4); + break; + case TAGTYPE_TEXT: + ld=strlen((char *)t->ti_Data)+1; + WriteChunkBytes(iffh,(APTR)&ld,4); + WriteChunkBytes(iffh,(APTR)t->ti_Data,ld); + break; + case TAGTYPE_LIST: + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);a++,n=GetSucc(n)); + ld=a; + WriteChunkBytes(iffh,(APTR)&ld,4); + + for(n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n)) + { + wd=strlen(n->ln_Name)+1; + WriteChunkBytes(iffh,(APTR)&wd,2); + WriteChunkBytes(iffh,(APTR)n->ln_Name,strlen(n->ln_Name)+1); + } + break; + } + return error; +} + +LONG ReadTagItem(struct IFFHandle *iffh,struct TagItem *t) +{ + UBYTE type; + UWORD l2; + ULONG len,a; + struct Node *n; + + ReadChunkBytes(iffh,(APTR)&type,1); + ReadChunkBytes(iffh,(APTR)&t->ti_Tag,4); + switch(type) + { + case TAGTYPE_NONE: + break; + case TAGTYPE_NUMBER: + ReadChunkBytes(iffh,(APTR)(&t->ti_Data),4); + break; + case TAGTYPE_TEXT: + ReadChunkBytes(iffh,(APTR)&len,4); + t->ti_Data=(ULONG)AllocVec(len,MEMF_PUBLIC); + ReadChunkBytes(iffh,(APTR)t->ti_Data,len); + break; + case TAGTYPE_LIST: + t->ti_Data=(ULONG)AllocVec(sizeof(struct List),MEMF_PUBLIC); + NewList(List(t->ti_Data)); + ReadChunkBytes(iffh,(APTR)&len,4); + for(a=0;aln_Name=AllocVec(l2,MEMF_PUBLIC); + ReadChunkBytes(iffh,(APTR)n->ln_Name,l2); + AddTail(List(t->ti_Data),n); + } + break; + } + return 0; +} + +--------------------- + +Menu jest zapisane w taki oto boski(TM) sposób: + + struct Node_Menu - znowu bzedy dot. menu + + i dalej w pëtelce: + struct Node_MenuItem - tu znajdziesz odp. informacje dotyczâce title, item i sub + +--------------------- + +A stringi sâ tak zapisane: + + w pëtelce + ULONG - rozmiar labelu + - label + ULONG - rozmiar stringu + - string diff --git a/GadToolsBox/docs/todo.txt b/GadToolsBox/docs/todo.txt new file mode 100755 index 0000000..cc1f9f6 --- /dev/null +++ b/GadToolsBox/docs/todo.txt @@ -0,0 +1,53 @@ +GadToolsBox TO DO list +_______________________________________________________________________________ + +GUI, Gadgets, main code: +- palette editing for custom images + +Generators: +- action for underlined gadgets +- clean up the source code +- AmigaE source code generator (Artur Pietruk) + +How to do? +- relative gadtools gadgets + +Bugs: +- on windows with tooldrag, depth, etc, doesn't move gadget positions (?????) +- page boxes have incorrect offsets on nonstandard windows + +To do in next release: +- AmigaGuide creator (interpret HELP messages) +- ARexx creator (interpret AREXX messages, AREXX templates) +- Commodities creator (interpret COMMODITIES mesages) +_______________________________________________________________________________ + +Done: +- fix editing relative gadgets +- clipping on menu edit window +- tree in listview gadget +- make resources selectable from tree list +- listview - speeded up +- popup menus +- in listview.gadget there is drawed too much vertical lines at the end of list +- speedup of draw gadget +- fixed generating catalog sources in default directory instead of destination +- properties lock gadget works now +- draw gadget - edit in struct BitMap instead of table +- pointer generator +- mouse pointers on edit windows +- added screenmode requester in preferences +- updated menu Windows +- windows positions are remembered +- added font adaptivity +- added scroll gadget in menu editor +- listview.gadget - fixed columns view +- done toolbar editing +- done image editing +- GetCatString() for pages +- align gadgets +- sorting gadgets +- installer +- shareware limitations +- help file +- palette for custom images diff --git a/GadToolsBox/draw.c b/GadToolsBox/draw.c new file mode 100755 index 0000000..5f4b3bf --- /dev/null +++ b/GadToolsBox/draw.c @@ -0,0 +1,937 @@ +/* +** Draw Gadget Class +*/ + +#include +#include"includes.h" + +/* +** Defines +*/ + +#define DRAW_SetTagArg(tag,id,data) { tag.ti_Tag = (ULONG)(id); tag.ti_Data = (ULONG)(data); } +typedef ULONG (*HookFunction)(void); +#define SAVEDS +#define ASMFUNC __saveds __asm +#define REG(x) register __## x +#define RGB(r,g,b) ((ULONG)((ULONG)r<<16|(ULONG)g<<8|(ULONG)b)) + +BOOL CyberGraphX=FALSE; + +/* +** Prototypes +*/ + +Class * ASMFUNC GetListViewClass(void); +ULONG ASMFUNC DRAW_Dispatcher(REG(a0) Class *,REG(a2) Object *,REG(a1) Msg); +ULONG DRAW_NEW(Class *,Object *,struct opSet *); +ULONG DRAW_DISPOSE(Class *, Object *, Msg); +ULONG DRAW_SET(Class *, Object *, struct opSet *); +ULONG DRAW_GET(Class *,Object *,struct opGet *); +ULONG DRAW_UPDATE(Class *,Object *,struct opUpdate *); +ULONG DRAW_NOTIFY(Class *,Object *,struct opUpdate *); +ULONG DRAW_RENDER(Class *,Object *,struct gpRender *); +ULONG DRAW_GOACTIVE(Class *,Object *,struct gpInput *); +ULONG DRAW_HANDLEINPUT(Class *,Object *,struct gpInput *); +ULONG DRAW_GOINACTIVE(Class *,Object *,struct gpGoInactive *); +void DRAW_GetGadgetRect( Object *,struct GadgetInfo *,struct Rectangle *); +void PutPixel(struct RastPort *,struct ColorPalette *,UWORD,UWORD); +void PutRect(struct RastPort *,struct ColorPalette *,UWORD,UWORD,UWORD,UWORD); + +/* +** Variables +*/ + +struct DRAWData +{ + UWORD dd_Zoom; // Pixel Size + UWORD dd_Width,dd_Height; // Width and Height of BitMap - only when object is creating bitmap + UWORD dd_Depth; + UWORD dd_PointX,dd_PointY; // For mouse pointers + UWORD dd_Left,dd_Top,dd_OldLeft,dd_OldTop; // Left and Top visible pixel on edit window + UWORD dd_VisibleX,dd_VisibleY; // Visible pixels on edit window + struct ColorPalette *dd_Pens; // Color conversion and palette + ULONG dd_ActualPen; // Actual pen num (2-8bpp) or color (15-24bpp) + struct BitMap *dd_BitMap; // BitMap to edit on + struct RastPort dd_RastPort;// Raster port of edit bitmap + BOOL dd_Border; // Show border frame around gadget + BOOL dd_SetPoint; // For mouse pointers + BOOL dd_ReadOnly; // Is read only + BOOL dd_Grid; // Show grid + BOOL dd_UseCGX; // Is bitmap cybergraphics compatible? + BOOL dd_OwnBitMap; // Bitmap is created by object + Object *dd_FrameImage; + BOOL dd_ActiveFromMouse; + BOOL dd_ShowPoint; // Show point on zoomed images +}; + +/* +** Create Class +*/ + + +Class *CreateDrawClass() +{ + Class *cl=NULL; + + if(cl = MakeClass (NULL, GADGETCLASS, NULL, sizeof(struct DRAWData), 0L)) + { + cl->cl_Dispatcher.h_Entry = (HookFunction) DRAW_Dispatcher; + return(cl); + } + return(NULL); +} + +void DisposeDrawClass(Class *cl) +{ + FreeClass(cl); +} + +/* +** Dispatcher +*/ + +ULONG ASMFUNC DRAW_Dispatcher( REG(a0) Class *cl, REG(a2) Object *o, REG(a1) Msg msg) +{ + ULONG retval; + + switch( msg->MethodID ) + { + case OM_NEW: + retval = DRAW_NEW(cl, o, (struct opSet *)msg ); + break; + case OM_DISPOSE: + retval = DRAW_DISPOSE(cl, o, msg ); + break; + case OM_SET: + retval = DRAW_SET(cl, o, (struct opSet *)msg ); + break; + case OM_GET: + retval = DRAW_GET(cl, o, (struct opGet *)msg ); + break; + case OM_UPDATE: + retval = DRAW_UPDATE(cl, o, (struct opUpdate *)msg ); + break; + case OM_NOTIFY: + retval = DRAW_NOTIFY(cl, o, (struct opUpdate *)msg ); + break; + case GM_RENDER: + retval = DRAW_RENDER(cl, o, (struct gpRender *)msg ); + break; + case GM_GOACTIVE: + retval = DRAW_GOACTIVE(cl, o, (struct gpInput *)msg ); + break; + case GM_HANDLEINPUT: + retval = DRAW_HANDLEINPUT(cl, o, (struct gpInput *)msg ); + break; + case GM_GOINACTIVE: + retval = DRAW_GOINACTIVE(cl, o, (struct gpGoInactive *)msg ); + break; + default: + retval = DoSuperMethodA(cl, o, msg); + break; + } + return(retval); +} + +/* +** OM_NEW +*/ + +ULONG SAVEDS DRAW_NEW(Class *cl,Object *o,struct opSet *ops ) +{ + Object *object; + struct DRAWData *DD; + + object = (Object *)DoSuperMethodA( cl, o, (Msg)ops ); + if(object) + { + DD = INST_DATA( cl, object ); + + if(DD->dd_BitMap = (struct BitMap *)GetTagData( DRAW_BitMap, NULL, ops->ops_AttrList )) + { + DD->dd_OwnBitMap=FALSE; + DD->dd_Width = (UWORD) GetTagData(DRAW_Width,GetBitMapAttr(DD->dd_BitMap,BMA_WIDTH),ops->ops_AttrList); + DD->dd_Height = (UWORD) GetBitMapAttr(DD->dd_BitMap,BMA_HEIGHT); + DD->dd_Depth = (UWORD) GetBitMapAttr(DD->dd_BitMap,BMA_DEPTH); + } + else // Bitmap not supplied, create own bitmap + { + DD->dd_OwnBitMap=TRUE; + DD->dd_Width = GetTagData( DRAW_Width, 16, ops->ops_AttrList ); + DD->dd_Height = GetTagData( DRAW_Height, 16, ops->ops_AttrList ); + DD->dd_Depth = GetTagData( DRAW_Depth, 8, ops->ops_AttrList ); + unless(DD->dd_BitMap=AllocBitMap(DD->dd_Width,DD->dd_Height,DD->dd_Depth,BMF_CLEAR,NULL)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + return( (ULONG)object ); + } + } + if(DD->dd_Depth>8) DD->dd_UseCGX=TRUE; else DD->dd_UseCGX=FALSE; + + DD->dd_Zoom = GetTagData( DRAW_Zoom, 1, ops->ops_AttrList ); + DD->dd_ShowPoint = GetTagData( DRAW_ShowPoint, FALSE, ops->ops_AttrList ); + DD->dd_Pens = (struct ColorPalette *)GetTagData( DRAW_Palette, NULL, ops->ops_AttrList ); + DD->dd_Border = GetTagData( DRAW_Border, FALSE, ops->ops_AttrList ); + DD->dd_ReadOnly = GetTagData( DRAW_ReadOnly, FALSE, ops->ops_AttrList ); + DD->dd_Grid = GetTagData( DRAW_Grid, FALSE, ops->ops_AttrList ); + DD->dd_ActualPen = GetTagData( DRAW_ActualPen, DD->dd_UseCGX?RGB(0,0,0):1, ops->ops_AttrList ); + DD->dd_OldLeft = DD->dd_Left = GetTagData( DRAW_Left, 0, ops->ops_AttrList ); + DD->dd_OldTop = DD->dd_Top = GetTagData( DRAW_Top, 0, ops->ops_AttrList ); + + InitRastPort(&DD->dd_RastPort); + DD->dd_RastPort.BitMap=DD->dd_BitMap; + + if(DD->dd_Border) + { + unless(DD->dd_FrameImage=NewObject(NULL,"frameiclass", + IA_Recessed, DD->dd_ReadOnly, + IA_EdgesOnly, TRUE, + IA_FrameType, FRAME_BUTTON, + TAG_END)) + { + CoerceMethod(cl, o, OM_DISPOSE); + object = NULL; + return( (ULONG)object ); + } + } + } + return( (ULONG)object ); +} + +/* +** OM_DISPOSE +*/ + +ULONG SAVEDS DRAW_DISPOSE(Class *cl, Object *o, Msg msg ) +{ + struct DRAWData *DD = INST_DATA( cl, o ); + + if(DD->dd_OwnBitMap) if(DD->dd_BitMap) FreeBitMap(DD->dd_BitMap); + if(DD->dd_FrameImage) DisposeObject(DD->dd_FrameImage); + return( DoSuperMethodA(cl, o, msg) ); +} + +/* +** OM_SET +*/ + +ULONG SAVEDS DRAW_SET(Class *cl, Object *o, struct opSet *ops) +{ + ULONG retval; + struct DRAWData *DD = INST_DATA( cl, o ); + struct TagItem *tag, notify; + struct RastPort *rp; + + retval = DoSuperMethodA( cl, o, (Msg)ops ); + + if(ops->ops_AttrList) + { + if(tag = FindTagItem( DRAW_Border, ops->ops_AttrList )) + { + DD->dd_Border = (BOOL) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Zoom, ops->ops_AttrList )) + { + DD->dd_Zoom = (UWORD) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_BitMap, ops->ops_AttrList )) + { + DD->dd_BitMap = (struct BitMap *)tag->ti_Data; + DD->dd_Width = (UWORD) GetTagData(DRAW_Width,GetBitMapAttr(DD->dd_BitMap,BMA_WIDTH),ops->ops_AttrList); + DD->dd_Height = (UWORD) GetBitMapAttr(DD->dd_BitMap,BMA_HEIGHT); + DD->dd_Depth = (UWORD) GetBitMapAttr(DD->dd_BitMap,BMA_DEPTH); + InitRastPort(&DD->dd_RastPort); + DD->dd_RastPort.BitMap=DD->dd_BitMap; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Palette, ops->ops_AttrList )) + { + DD->dd_Pens = (struct ColorPalette *)tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Width, ops->ops_AttrList )) + { + if(DD->dd_OwnBitMap) DD->dd_Width = (UWORD)tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Height, ops->ops_AttrList )) + { + if(DD->dd_OwnBitMap) DD->dd_Height = (UWORD)tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Depth, ops->ops_AttrList )) + { + if(DD->dd_OwnBitMap) DD->dd_Depth = (UWORD)tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Palette, ops->ops_AttrList )) + { + DD->dd_Pens = (struct ColorPalette *)tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_ActualPen, ops->ops_AttrList )) + { + DD->dd_ActualPen = (ULONG) tag->ti_Data; + if(DD->dd_Depth<9) SetAPen(&DD->dd_RastPort,(UBYTE)DD->dd_ActualPen); + retval = TRUE; + } + + if(tag = FindTagItem( DRAW_SetPoint, ops->ops_AttrList )) + { + DD->dd_SetPoint = (BOOL) tag->ti_Data; + retval = TRUE; + } + + if(tag = FindTagItem( DRAW_PointX, ops->ops_AttrList )) + { + DD->dd_PointX = (UWORD) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_PointY, ops->ops_AttrList )) + { + DD->dd_PointY = (UWORD) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_ReadOnly, ops->ops_AttrList )) + { + DD->dd_ReadOnly = (BOOL) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Grid, ops->ops_AttrList )) + { + DD->dd_Grid = (BOOL) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Left, ops->ops_AttrList )) + { + DD->dd_OldLeft = DD->dd_Left; + DD->dd_Left = (UWORD) tag->ti_Data; + retval = FALSE; + } + + if(tag = FindTagItem( DRAW_Top, ops->ops_AttrList )) + { + DD->dd_OldTop = DD->dd_Top; + DD->dd_Top = (UWORD) tag->ti_Data; + retval = FALSE; + } + + DRAW_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, ops->ops_GInfo, 0 ); + + if(!retval) + { + if(rp=ObtainGIRPort( ops->ops_GInfo )) + { + DoMethod(o,GM_RENDER,ops->ops_GInfo, rp, GREDRAW_UPDATE); + ReleaseGIRPort(rp); + } + } + } + + return( retval ); +} + +/* +** OM_GET +*/ + +ULONG SAVEDS DRAW_GET(Class *cl,Object *o,struct opGet *opg ) +{ + ULONG retval; + struct DRAWData *DD = INST_DATA( cl, o ); + + switch( opg->opg_AttrID ) + { + case DRAW_BitMap: + *opg->opg_Storage = (ULONG)DD->dd_BitMap; + retval = TRUE; + break; + case DRAW_RastPort: + *opg->opg_Storage = (ULONG)((ULONG *)&(DD->dd_RastPort)); + retval = TRUE; + break; + case DRAW_Depth: + *opg->opg_Storage = (ULONG)DD->dd_Depth; + retval = TRUE; + break; + case DRAW_Width: + *opg->opg_Storage = (ULONG)DD->dd_Width; + retval = TRUE; + break; + case DRAW_Height: + *opg->opg_Storage = (ULONG)DD->dd_Height; + retval = TRUE; + break; + case DRAW_Zoom: + *opg->opg_Storage = (ULONG)DD->dd_Zoom; + retval = TRUE; + break; + case DRAW_Border: + *opg->opg_Storage = (ULONG)DD->dd_Border; + retval = TRUE; + break; + case DRAW_ActualPen: + *opg->opg_Storage = (ULONG)DD->dd_ActualPen; + retval = TRUE; + break; + case DRAW_ReadOnly: + *opg->opg_Storage = (ULONG)DD->dd_ReadOnly; + retval = TRUE; + break; + case DRAW_Grid: + *opg->opg_Storage = (ULONG)DD->dd_Grid; + retval = TRUE; + break; + case DRAW_PointX: + *opg->opg_Storage = (ULONG)DD->dd_PointX; + retval = TRUE; + break; + case DRAW_PointY: + *opg->opg_Storage = (ULONG)DD->dd_PointY; + retval = TRUE; + break; + case DRAW_VisibleX: + *opg->opg_Storage = (ULONG)DD->dd_VisibleX; + retval = TRUE; + break; + case DRAW_VisibleY: + *opg->opg_Storage = (ULONG)DD->dd_VisibleY; + retval = TRUE; + break; + case DRAW_Left: + *opg->opg_Storage = (ULONG)DD->dd_Left; + retval = TRUE; + break; + case DRAW_Top: + *opg->opg_Storage = (ULONG)DD->dd_Top; + retval = TRUE; + break; + default: + retval = DoSuperMethodA(cl, o, (Msg)opg); + break; + } + return( retval ); +} + +/* +** OM_UPDATE +*/ + +ULONG SAVEDS DRAW_UPDATE(Class *cl,Object *o,struct opUpdate *opu ) +{ + ULONG retval; + struct DRAWData *DD = INST_DATA( cl, o ); + struct TagItem *tag, notify; + struct RastPort *rp; + + retval = DoSuperMethodA(cl, o, (Msg) opu); + + if( opu->opu_AttrList ) + { + if(tag = FindTagItem( DRAW_Top, opu->opu_AttrList )) + { + if( tag->ti_Data != DD->dd_Top) + { + DD->dd_Top = tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + DRAW_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + if(tag = FindTagItem( DRAW_Left, opu->opu_AttrList )) + { + if( tag->ti_Data != DD->dd_Left) + { + DD->dd_Left= tag->ti_Data; + + rp = ObtainGIRPort( opu->opu_GInfo ); + if( rp ) + { + DoMethod( o, GM_RENDER, opu->opu_GInfo, rp, GREDRAW_UPDATE ); + ReleaseGIRPort( rp ); + } + + /* Notify the change. */ + DRAW_SetTagArg( notify, TAG_END, NULL ); + (void)DoMethod( o, OM_NOTIFY, ¬ify, opu->opu_GInfo, 0 ); + } + } + } + return( retval ); +} + +ULONG SAVEDS DRAW_NOTIFY(Class *cl,Object *o,struct opUpdate *opu ) +{ + struct TagItem tags[6]; + struct DRAWData *DD = INST_DATA( cl, o ); + + DRAW_SetTagArg(tags[0], GA_ID, ((struct Gadget *)o)->GadgetID); + DRAW_SetTagArg(tags[1], DRAW_BitMap, DD->dd_BitMap); + DRAW_SetTagArg(tags[2], DRAW_Zoom, DD->dd_Zoom); + DRAW_SetTagArg(tags[3], DRAW_Left, DD->dd_Left); + DRAW_SetTagArg(tags[4], DRAW_Top, DD->dd_Top); + + if( opu->opu_AttrList == NULL ) + { + DRAW_SetTagArg(tags[5], TAG_END, NULL); + } + else DRAW_SetTagArg(tags[5], TAG_MORE, opu->opu_AttrList ); + + return( DoSuperMethod(cl, o, OM_NOTIFY, tags, opu->opu_GInfo, opu->opu_Flags) ); +} + +ULONG SAVEDS DRAW_RENDER(Class *cl,Object *o,struct gpRender *gpr ) +{ + ULONG retval,State,x,y,movex,movey; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct DrawInfo *dri; + struct IBox container; + struct RastPort *rp = gpr->gpr_RPort; + struct DRAWData *DD = INST_DATA( cl, o ); + UWORD patterndata[2] = { 0x2222, 0x8888 }; + ULONG TextPen, FillPen, BackgroundPen, HLTextPen,vx,vy; + BOOL Grid; + + retval = DoSuperMethodA(cl, o, (Msg) gpr); + + DRAW_GetGadgetRect( o, gpr->gpr_GInfo, &rect ); + + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + dri = gpr->gpr_GInfo->gi_DrInfo; + + if(gad->Flags & GFLG_DISABLED) + State = IDS_DISABLED; + else + State = IDS_NORMAL; + + if(DD->dd_Border) + { + SetAttrs( DD->dd_FrameImage, + IA_Left, container.Left, + IA_Top, container.Top, + IA_Width, container.Width, + IA_Height, container.Height, + TAG_END); + DrawImageState( rp, (struct Image *)DD->dd_FrameImage, 0, 0, IDS_NORMAL, dri); + } + + if( dri ) + { + BackgroundPen = dri->dri_Pens[BACKGROUNDPEN]; + TextPen = dri->dri_Pens[TEXTPEN]; + HLTextPen = dri->dri_Pens[HIGHLIGHTTEXTPEN]; + FillPen = dri->dri_Pens[FILLPEN]; + } + else + { + BackgroundPen = 0; + TextPen = 1; + HLTextPen = 2; + FillPen = 3; + } + + if(DD->dd_Zoom==1) + { + Grid=DD->dd_Grid?2:1; + vx=DD->dd_VisibleX=(container.Width-4)/(Grid); + vy=DD->dd_VisibleY=(container.Height-4)/(Grid); + } + else + { + Grid=DD->dd_Grid?1:0; + vx=DD->dd_VisibleX=(container.Width-4)/(DD->dd_Zoom+Grid); + vy=DD->dd_VisibleY=(container.Height-4)/(DD->dd_Zoom+Grid); + } + if(DD->dd_VisibleX>DD->dd_Width) DD->dd_VisibleX=DD->dd_Width; + if(DD->dd_VisibleY>DD->dd_Height) DD->dd_VisibleY=DD->dd_Height; + + if(DD->dd_Top>DD->dd_Height-DD->dd_VisibleY) DD->dd_Top=DD->dd_Height-DD->dd_VisibleY; + if(DD->dd_Left>DD->dd_Width-DD->dd_VisibleX) DD->dd_Left=DD->dd_Width-DD->dd_VisibleX; + + if(vx>=DD->dd_Width) + { + SetDrMd(rp,JAM2); + SetAfPt(rp, patterndata, 1); + SetAPen(rp,dri->dri_Pens[SHADOWPEN]); + SetBPen(rp,dri->dri_Pens[BACKGROUNDPEN]); + + RectFill(rp, container.Left+(DD->dd_Width)*(DD->dd_Zoom+Grid)+2, + container.Top+2, + container.Left + container.Width-3, + container.Top + container.Height-3); + SetAfPt(rp, NULL, 0 ); + } + + if(vy>=DD->dd_Height) + { + SetDrMd(rp,JAM2); + SetAfPt(rp, patterndata, 1); + SetAPen(rp,dri->dri_Pens[SHADOWPEN]); + SetBPen(rp,dri->dri_Pens[BACKGROUNDPEN]); + + RectFill(rp, container.Left+2, + container.Top+(DD->dd_Height)*(DD->dd_Zoom+Grid)+2, + container.Left + container.Width-3, + container.Top + container.Height-3); + SetAfPt(rp, NULL, 0 ); + } + + switch(gpr->gpr_Redraw) + { + case GREDRAW_UPDATE: + movex=DD->dd_Left-DD->dd_OldLeft; + movey=DD->dd_Top-DD->dd_OldTop; + if(DD->dd_Zoom==1) + { + ScrollRaster(rp,movex,movey, + container.Left+2, container.Top+2, + container.Left+2+DD->dd_VisibleX, container.Top+2+DD->dd_VisibleY); + } + else + { + ScrollRaster(rp,movex*(DD->dd_Zoom+Grid),movey*(DD->dd_Zoom+Grid), + container.Left+2, container.Top+2, + container.Left+2+DD->dd_VisibleX*(DD->dd_Zoom+Grid), container.Top+2+DD->dd_VisibleY*(DD->dd_Zoom+Grid)); + } + if(movex!=0 && (DD->dd_OldLeft!=DD->dd_Left)) + for(x=(DD->dd_OldLeft>DD->dd_Left)?DD->dd_Left:((movexdd_VisibleX)?(DD->dd_Left-movex+DD->dd_VisibleX):DD->dd_Left);x<((DD->dd_OldLeft>DD->dd_Left)?(DD->dd_OldLeft):(DD->dd_Left+DD->dd_VisibleX)) && x<(DD->dd_Left+DD->dd_VisibleX);x++) + { + for(y=DD->dd_Top;y<(DD->dd_Top+DD->dd_VisibleY);y++) + { + SetAPen(rp,(UBYTE) DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)].cp_I); + if(DD->dd_Zoom==1) + PutPixel(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)],(x-DD->dd_Left)*Grid+container.Left+2,(y-DD->dd_Top)*Grid+container.Top+2); + else + PutRect(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)], + ((x-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2, + ((y-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top +2, + DD->dd_Zoom-1,DD->dd_Zoom-1); + } + } + + if(movey!=0 && (DD->dd_OldTop!=DD->dd_Top)) + for(x=DD->dd_Left;x<(DD->dd_Left+DD->dd_VisibleX);x++) + { + for(y=(DD->dd_OldTop>DD->dd_Top)?(DD->dd_Top):((moveydd_VisibleY)?(DD->dd_Top-movey+DD->dd_VisibleY):DD->dd_Top);y<((DD->dd_OldTop>DD->dd_Top)?(DD->dd_OldTop):(DD->dd_Top+DD->dd_VisibleY)) && y<(DD->dd_Top+DD->dd_VisibleY);y++) + { + SetAPen(rp,(UBYTE)DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)].cp_I); + if(DD->dd_Zoom==1) + PutPixel(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)],(x-DD->dd_Left)*Grid+container.Left+2,(y-DD->dd_Top)*Grid+container.Top+2); + else + PutRect(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)], + ((x-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2, + ((y-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top +2, + DD->dd_Zoom-1,DD->dd_Zoom-1); + } + } + break; + case GREDRAW_REDRAW: + for(x=DD->dd_Left;x<(DD->dd_Left+DD->dd_VisibleX);x++) + { + for(y=DD->dd_Top;y<(DD->dd_Top+DD->dd_VisibleY);y++) + { + SetAPen(rp,(UBYTE)DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)].cp_I); + if(DD->dd_Zoom==1) + PutPixel(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)],(x-DD->dd_Left)*Grid+container.Left+2,(y-DD->dd_Top)*Grid+container.Top+2); + else + PutRect(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)], + ((x-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2, + ((y-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top +2, + DD->dd_Zoom-1,DD->dd_Zoom-1); + } + } + break; + case GREDRAW_TOGGLE: + break; + } + DD->dd_OldLeft=DD->dd_Left; + DD->dd_OldTop=DD->dd_Top; + if(DD->dd_Zoom!=1 && DD->dd_PointX>DD->dd_Left && DD->dd_PointY>DD->dd_Top) + { + SetAPen(rp,2); + Move(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + } + + if(State==IDS_DISABLED) + { + container.Width = MAX( 1, container.Width ); + container.Height = MAX( 1, container.Height ); + + SetDrMd(rp,JAM1); + SetAfPt(rp, patterndata, 1); + SetAPen(rp,dri->dri_Pens[SHADOWPEN]); + + RectFill(rp, (LONG)container.Left, (LONG)container.Top, + container.Left + container.Width-1, + container.Top + container.Height-1); + SetAfPt(rp, NULL, 0 ); + } + + return( retval ); +} + +ULONG SAVEDS DRAW_GOACTIVE(Class *cl,Object *o,struct gpInput *gpi ) +{ + ULONG retval = GMR_MEACTIVE, x, y; + struct RastPort *rp; + struct DRAWData *DD = INST_DATA( cl, o ); + struct GadgetInfo *gi = gpi->gpi_GInfo; + struct Gadget *gad = (struct Gadget *)o; + struct Rectangle rect; + struct IBox container; + struct TagItem notify; + BOOL Grid; + + /* Test if we are disabled. */ + if((gad->Flags & GFLG_DISABLED) || DD->dd_ReadOnly) return( GMR_NOREUSE ); + + Grid=DD->dd_Grid?1:0; + + if(!((gpi->gpi_Mouse.X-gi->gi_Domain.Left)>2 && (gpi->gpi_Mouse.Y-gi->gi_Domain.Top)>2 && + (gpi->gpi_Mouse.X-gi->gi_Domain.Left-2)<(DD->dd_VisibleX*(DD->dd_Zoom+Grid)) && + (gpi->gpi_Mouse.Y-gi->gi_Domain.Top-2)<(DD->dd_VisibleY*(DD->dd_Zoom+Grid)))) return( GMR_NOREUSE ); + + /* Call first our parent class. */ + DoSuperMethodA(cl, o, (Msg)gpi); + + DRAW_GetGadgetRect( o, gpi->gpi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + /* Chech whether we were activated from mouse or keyboard. */ + DD->dd_ActiveFromMouse = (gpi->gpi_IEvent != NULL); + + /* Select this gadget. */ + gad->Flags |= GFLG_SELECTED; + + + if(rp=ObtainGIRPort(gi)) + { + x = ((gpi->gpi_Mouse.X-gi->gi_Domain.Left-2)/(DD->dd_Zoom+Grid))+DD->dd_Left; + y = ((gpi->gpi_Mouse.Y-gi->gi_Domain.Top-2)/(DD->dd_Zoom+Grid))+DD->dd_Top; + + if(DD->dd_Zoom==1) Grid=DD->dd_Grid?2:1; + else Grid=DD->dd_Grid?1:0; + + if(DD->dd_SetPoint) + { + if(DD->dd_Zoom!=1 && DD->dd_PointX>DD->dd_Left && DD->dd_PointY>DD->dd_Top) + { + SetAPen(rp,0); + Move(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + } + if((y*DD->dd_Width+x)<(DD->dd_Width*DD->dd_Height)) + { + DD->dd_PointX=x; + DD->dd_PointY=y; + } + if(DD->dd_Zoom!=1 && DD->dd_PointX>DD->dd_Left && DD->dd_PointY>DD->dd_Top) + { + SetAPen(rp,2); + Move(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2+DD->dd_Zoom,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2+DD->dd_Zoom); + Draw(rp,((DD->dd_PointX-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2-1,((DD->dd_PointY-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top+2-1); + } + DRAW_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, gpi->gpi_GInfo, 0 ); + } + else + { + if((y*DD->dd_Width+x)<(DD->dd_Width*DD->dd_Height)) + { + SetAPen(&DD->dd_RastPort,(UBYTE)DD->dd_ActualPen); + WritePixel(&DD->dd_RastPort,x,y); + } + if(DD->dd_Zoom==1) + PutPixel(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)],(x-DD->dd_Left)*Grid+container.Left+2,(y-DD->dd_Top)*Grid+container.Top+2); + else + PutRect(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)], + ((x-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2, + ((y-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top +2, + DD->dd_Zoom-1,DD->dd_Zoom-1); + DRAW_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, gpi->gpi_GInfo, 0 ); + } + + ReleaseGIRPort( rp ); + } + else retval = GMR_NOREUSE; + + return(retval); +} + +ULONG SAVEDS DRAW_HANDLEINPUT(Class *cl,Object *o,struct gpInput *gpi ) +{ + ULONG retval = GMR_MEACTIVE,x,y; + struct InputEvent *ie = gpi->gpi_IEvent; + struct DRAWData *DD = INST_DATA(cl, o); + struct GadgetInfo *gi = gpi->gpi_GInfo; + struct RastPort *rp; + struct Rectangle rect; + struct IBox container; + struct TagItem notify; + BOOL Grid; + + if( DD->dd_ActiveFromMouse ) + { + while( ie && (retval == GMR_MEACTIVE) ) + { + switch( ie->ie_Class ) + { + case IECLASS_TIMER: // Scroll listview + break; + case IECLASS_RAWMOUSE: + switch(ie->ie_Code) + { + case SELECTUP: + retval=GMR_NOREUSE|GMR_VERIFY; + case MENUUP: + retval=GMR_NOREUSE; + break; + case IECODE_NOBUTTON: + DRAW_GetGadgetRect( o, gpi->gpi_GInfo, &rect ); + container.Left = rect.MinX; container.Top = rect.MinY; + container.Width = 1 + rect.MaxX - rect.MinX; + container.Height = 1 + rect.MaxY - rect.MinY; + + Grid=DD->dd_Grid?1:0; + + if((gpi->gpi_Mouse.X-gi->gi_Domain.Left)>2 && (gpi->gpi_Mouse.Y-gi->gi_Domain.Top)>2 && + (gpi->gpi_Mouse.X-gi->gi_Domain.Left-2)<(DD->dd_VisibleX*(DD->dd_Zoom+Grid)) && + (gpi->gpi_Mouse.Y-gi->gi_Domain.Top-2)<(DD->dd_VisibleY*(DD->dd_Zoom+Grid)) && (!DD->dd_SetPoint)) + { + if(rp=ObtainGIRPort(gi)) + { + x = ((gpi->gpi_Mouse.X-gi->gi_Domain.Left-2)/(DD->dd_Zoom+Grid))+DD->dd_Left; + y = ((gpi->gpi_Mouse.Y-gi->gi_Domain.Top-2)/(DD->dd_Zoom+Grid))+DD->dd_Top; + + if(DD->dd_Zoom==1) Grid=DD->dd_Grid?2:1; + else Grid=DD->dd_Grid?1:0; + + if((y*DD->dd_Width+x)<(DD->dd_Width*DD->dd_Height)) + { + SetAPen(&DD->dd_RastPort,(UBYTE)DD->dd_ActualPen); + WritePixel(&DD->dd_RastPort,x,y); + } + if(DD->dd_Zoom==1) + PutPixel(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)],(x-DD->dd_Left)*Grid+container.Left+2,(y-DD->dd_Top)*Grid+container.Top+2); + else + PutRect(rp,&DD->dd_Pens[ReadPixel(&DD->dd_RastPort,x,y)], + ((x-DD->dd_Left)*(DD->dd_Zoom+Grid))+container.Left+2, + ((y-DD->dd_Top)*(DD->dd_Zoom+Grid))+container.Top +2, + DD->dd_Zoom-1,DD->dd_Zoom-1); + ReleaseGIRPort( rp ); + DRAW_SetTagArg( notify, TAG_END, NULL ); + DoMethod( o, OM_NOTIFY, ¬ify, gpi->gpi_GInfo, 0 ); + } + } + break; + } + break; + } + ie = ie->ie_NextEvent; + } + } + return(retval); +} + +ULONG SAVEDS DRAW_GOINACTIVE(Class *cl,Object *o,struct gpGoInactive *gpgi ) +{ + ULONG retval; + struct DRAWData *DD = INST_DATA(cl, o); + + retval = DoSuperMethodA(cl, o, (Msg)gpgi); + + ((struct Gadget *)o)->Flags &= ~GFLG_SELECTED; + DD->dd_SetPoint=FALSE; + + return(retval); +} + + +void SAVEDS DRAW_GetGadgetRect( Object *o,struct GadgetInfo *gi,struct Rectangle *rect ) +{ + struct Gadget *gad = (struct Gadget *)o; + LONG W, H; + + rect->MinX = gad->LeftEdge; + rect->MinY = gad->TopEdge; + W = gad->Width; + H = gad->Height; + + if( gi ) + { + if( gad->Flags & GFLG_RELRIGHT ) rect->MinX += gi->gi_Domain.Width - 1; + if( gad->Flags & GFLG_RELBOTTOM ) rect->MinY += gi->gi_Domain.Height - 1; + if( gad->Flags & GFLG_RELWIDTH ) W += gi->gi_Domain.Width; + if( gad->Flags & GFLG_RELHEIGHT ) H += gi->gi_Domain.Height; + } + rect->MaxX = rect->MinX + W - (W > 0); + rect->MaxY = rect->MinY + H - (H > 0); +} + +void PutPixel(struct RastPort *rp,struct ColorPalette *cp,UWORD x,UWORD y) +{ + if(CyberGraphX && CyberGfxBase) + { + WriteRGBPixel(rp,x,y,RGB(cp->cp_R,cp->cp_G,cp->cp_B)); + } + else + { + SetAPen(rp,cp->cp_I); + WritePixel(rp,x,y); + } +} + +void PutRect(struct RastPort *rp,struct ColorPalette *cp,UWORD x,UWORD y,UWORD w,UWORD h) +{ + if(CyberGraphX && CyberGfxBase) + { + FillPixelArray(rp,x,y,w,h,RGB(cp->cp_R,cp->cp_G,cp->cp_B)); + } + else + { + SetAPen(rp,cp->cp_I); + RectFill(rp,x,y,x+w,y+w); + } +} diff --git a/GadToolsBox/draw.h b/GadToolsBox/draw.h new file mode 100755 index 0000000..6badb41 --- /dev/null +++ b/GadToolsBox/draw.h @@ -0,0 +1,48 @@ +#ifndef GTB_DRAW_H +#define GTB_DRAW_H +/* +** Draw GadgetClass +*/ + +/*****************************************************************************/ + + +#ifndef UTILITY_TAGITEM_H +#include +#endif + + +/*****************************************************************************/ + +struct ColorPalette +{ + ULONG cp_I,cp_R,cp_G,cp_B; +}; + +#define DRAW_Dummy (TAG_USER+0x00001000) +#define DRAW_BitMap (DRAW_Dummy+1) +#define DRAW_Width (DRAW_Dummy+2) +#define DRAW_Height (DRAW_Dummy+3) +#define DRAW_Zoom (DRAW_Dummy+4) +#define DRAW_Palette (DRAW_Dummy+5) +#define DRAW_Border (DRAW_Dummy+6) +#define DRAW_ActualPen (DRAW_Dummy+7) +#define DRAW_SetPoint (DRAW_Dummy+8) +#define DRAW_PointX (DRAW_Dummy+9) +#define DRAW_PointY (DRAW_Dummy+10) +#define DRAW_ReadOnly (DRAW_Dummy+11) +#define DRAW_Grid (DRAW_Dummy+12) +#define DRAW_Left (DRAW_Dummy+13) +#define DRAW_Top (DRAW_Dummy+14) +#define DRAW_VisibleX (DRAW_Dummy+15) +#define DRAW_VisibleY (DRAW_Dummy+16) +#define DRAW_Depth (DRAW_Dummy+17) +#define DRAW_RastPort (DRAW_Dummy+18) +#define DRAW_ShowPoint (DRAW_Dummy+19) + +/*****************************************************************************/ + +Class *CreateDrawClass(void); +void DisposeDrawClass(Class *); + +#endif /* GTB_DRAW_H */ diff --git a/GadToolsBox/frame.c b/GadToolsBox/frame.c new file mode 100755 index 0000000..86400f3 --- /dev/null +++ b/GadToolsBox/frame.c @@ -0,0 +1,447 @@ +/* +** GadToolsBox v3 - Frame Managment +*/ + +#include"includes.h" + +/* +** Defines +*/ + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGFR_General[]; + +struct Page PAGES_PROPERTIES_PGFR_PAGES[]= +{ + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Functions +*/ + +ULONG Dispatcher_Frame(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_DEFAULT: + retval=DEFAULT_Frame(cl,o,msg); + break; + case OM_INIT: + retval=INIT_Frame(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Frame(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGFR_General(); + PAGES_PROPERTIES_PGFR_PAGES[0].FirstGadget=PGFR_GeneralGList; + PAGES_PROPERTIES_PGFR_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L36_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PGFR_PAGES[0].FirstGadget=NULL; + CloseWindow_PGFR_General(); + break; + case OM_NEW: + retval=NEW_Frame(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Frame(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Frame(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Frame(cl,o,msg); + break; + case OM_ADDTAIL: + retval=ADDTAIL_Frame(cl,o,(struct piWindow *)msg); + break; + case OM_REMOVE: + Remove(Node(o)); + break; + case OM_RENDER: + retval=RENDER_Frame(cl,o,msg); + break; + case OM_ERASE: + retval=ERASE_Frame(cl,o,msg); + break; + case OM_HITTEST: + retval=HITTEST_Frame(cl,o,(struct piHitTest *)msg); + break; + case OM_COMPUTE: + retval=COMPUTE_Frame(cl,o,(struct piCompute *)msg); + break; + case OM_READ: + retval=READ_Frame(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Frame(cl,o,(struct piIO *)msg); + break; + } + return retval; +} + +ULONG DEFAULT_Frame(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Frame *nf; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + + nf->nf_Width=30; + nf->nf_Height=30; + return TRUE; +} + +ULONG INIT_Frame(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Frame *nf; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_X],nf->nf_X); + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_Y],nf->nf_Y); + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_WIDTH],nf->nf_Width); + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_HEIGHT],nf->nf_Height); + SetCycle(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_FRAME],nf->nf_FrameType); + SetCheckMark(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_RECESSED],(nf->nf_Flags&MYFR_Recessed)?TRUE:FALSE); + return TRUE; +} + +ULONG APPLY_Frame(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Frame *nf; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + + nf->nf_X=GetInteger(PGFR_GeneralGadgets[GD_PGFR_X]); + nf->nf_Y=GetInteger(PGFR_GeneralGadgets[GD_PGFR_Y]); + nf->nf_Width=GetInteger(PGFR_GeneralGadgets[GD_PGFR_WIDTH]); + nf->nf_Height=GetInteger(PGFR_GeneralGadgets[GD_PGFR_HEIGHT]); + return TRUE; +} + +ULONG COMPUTE_Frame(piClass *cl,piObject *o,struct piCompute *msg) +{ + struct Node_Frame *nf; + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + piGetAttr(nf->nf_Window,OBJ_Node,(ULONG *)&nw); + switch(msg->Type) + { + case CT_LEFT: + if(nw->nw_MyFlags&MYWA_DragToolVert) + return((ULONG)(nf->nf_X+8)); + else + return((ULONG)(nf->nf_X+Scr->WBorLeft)); + case CT_TOP: + if(nw->nw_MyFlags&MYWA_DragToolVert) + return((ULONG)(nf->nf_Y+Scr->WBorTop)); + else + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + return((ULONG)(nf->nf_Y+8)); + else + return((ULONG)(nf->nf_Y+Scr->RastPort.TxHeight+Scr->WBorTop+1)); + case CT_WIDTH: + return(nf->nf_Width); + case CT_HEIGHT: + return(nf->nf_Height); + } +} + +ULONG HITTEST_Frame(piClass *cl,piObject *o,struct piHitTest *msg) +{ + UWORD x,y,w,h; + + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + if((msg->X>=x) && (msg->X<=x+w) && (msg->Y>=y) && (msg->Y<=y+h)) return TRUE; + else return FALSE; +} + +ULONG NEW_Frame(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Frame *nf; + + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + nf=(struct Node_Frame *)OBJECT_DATA(obj); + nf->nf_Pages=PAGES_PROPERTIES_PGFR_PAGES, + obj->ln_Name=NULL; + nf->nf_FrameType=FTYPE_BUTTON; + ClearFlag(nf->nf_Flags,MYFR_Recessed); + return (ULONG) obj; + } + return NULL; +} + +ULONG DISPOSE_Frame(piClass *cl,piObject *o,Msg msg) +{ + piDoMethod(o,OM_ERASE); + piDoMethod(o,OM_DELETE); + MyFreeVec(o); + return TRUE; +} + +ULONG ADDTAIL_Frame(piClass *cl,piObject *o,struct piWindow *msg) +{ + struct Node_Frame *nf; + struct List *l; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + piGetAttr(msg->Window,WNOBJ_FrameList,(ULONG *)&l); + nf->nf_Window=msg->Window; + AddTail(l,Node(o)); + return TRUE; +} + +extern DrawRect(struct RastPort *,UWORD,UWORD,BOOL); + +ULONG RENDER_Frame(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + struct Node_Frame *nf; + struct Node_Window *nw; + BOOL fill=FALSE; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + piGetAttr(nf->nf_Window,OBJ_Node,(ULONG *)&nw); + + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + + switch(nf->nf_FrameType) + { + case FTYPE_BUTTON: + DrawBevelBox(nw->nw_Window->RPort,x,y,w+1,h+1, + GTBB_FrameType, BBFT_BUTTON, + (nf->nf_Flags&MYFR_Recessed) ? GTBB_Recessed : TAG_IGNORE, TRUE, + GT_VisualInfo,VisualInfo, + TAG_DONE); + break; + case FTYPE_ICONDROPBOX: + DrawBevelBox(nw->nw_Window->RPort,x,y,w+1,h+1, + GTBB_FrameType, BBFT_ICONDROPBOX, + (nf->nf_Flags&MYFR_Recessed) ? GTBB_Recessed : TAG_IGNORE, TRUE, + GT_VisualInfo,VisualInfo, + TAG_DONE); + break; + case FTYPE_RIDGE: + DrawBevelBox(nw->nw_Window->RPort,x,y,w+1,h+1, + GTBB_FrameType, BBFT_RIDGE, + (nf->nf_Flags&MYFR_Recessed) ? GTBB_Recessed : TAG_IGNORE, TRUE, + GT_VisualInfo,VisualInfo, + TAG_DONE); + break; + case FTYPE_HORIZONTALLINE: + DrawBevelBox(nw->nw_Window->RPort,x,y,w+1,2, + GTBB_FrameType, BBFT_BUTTON, + (nf->nf_Flags&MYFR_Recessed) ? GTBB_Recessed : TAG_IGNORE, TRUE, + GT_VisualInfo,VisualInfo, + TAG_DONE); + nf->nf_Height=2; + break; + case FTYPE_VERTICALLINE: + DrawBevelBox(nw->nw_Window->RPort,x,y,2,h+1, + GTBB_FrameType, BBFT_BUTTON, + (nf->nf_Flags&MYFR_Recessed) ? GTBB_Recessed : TAG_IGNORE, TRUE, + GT_VisualInfo,VisualInfo, + TAG_DONE); + nf->nf_Width=2; + break; + } + + if(nf->nf_Selected && GUI.gui_Mode==MODE_FRAME) + { + SetAPen(nw->nw_Window->RPort,1); + SetDrMd(nw->nw_Window->RPort,COMPLEMENT); + DrawRect(nw->nw_Window->RPort,x,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+(h/2)-2,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+(h/2)-2,fill); +/* + RectFill(nw->nw_Window->RPort,x, y, x+6, y+3); + RectFill(nw->nw_Window->RPort,x+w-6, y, x+w, y+3); + RectFill(nw->nw_Window->RPort,x+w-6, y+h-3, x+w, y+h); + RectFill(nw->nw_Window->RPort,x, y+h-3, x+6, y+h); + RectFill(nw->nw_Window->RPort,x+(w/2)-3,y, x+(w/2)+3,y+3); + RectFill(nw->nw_Window->RPort,x+(w/2)-3,y+h-3, x+(w/2)+3,y+h); + RectFill(nw->nw_Window->RPort,x, y+(h/2)-2,x+6, y+(h/2)+2); + RectFill(nw->nw_Window->RPort,x+w-6, y+(h/2)-2,x+w, y+(h/2)+2); +*/ + } + return TRUE; +} + +ULONG ERASE_Frame(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + piObject *wo; + struct Node_Window *nw; + + piGetAttr(o,OBJ_Window,(ULONG *)&wo); + if(wo) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw) if(nw->nw_Window) + { + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + piShowGrid(o); + } + } + return TRUE; +} + +ULONG SET_Frame(piClass *cl,piObject *o,struct piSet *msg) +{ + struct TagItem *t; + struct Node_Frame *nf; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + + if(t=FindTagItem(GA_Left,msg->Tags)) nf->nf_X=t->ti_Data; + if(t=FindTagItem(GA_Top,msg->Tags)) nf->nf_Y=t->ti_Data; + if(t=FindTagItem(GA_Width,msg->Tags)) nf->nf_Width=t->ti_Data; + if(t=FindTagItem(GA_Height,msg->Tags)) nf->nf_Height=t->ti_Data; + if(t=FindTagItem(FROBJ_Type,msg->Tags)) nf->nf_FrameType=t->ti_Data; + if(t=FindTagItem(OBJ_Select,msg->Tags)) nf->nf_Selected=t->ti_Data; + return TRUE; +} + +ULONG GET_Frame(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Frame *nf=(struct Node_Frame *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case GA_Left: *(msg->TagData)=nf->nf_X; return TRUE; + case GA_Top: *(msg->TagData)=nf->nf_Y; return TRUE; + case GA_Width: *(msg->TagData)=nf->nf_Width; return TRUE; + case GA_Height: *(msg->TagData)=nf->nf_Height; return TRUE; + case OBJ_Select: *(msg->TagData)=nf->nf_Selected; return TRUE; + case OBJ_Node: *(msg->TagData)=(ULONG)nf; return TRUE; + case OBJ_Window: *(msg->TagData)=(ULONG)nf->nf_Window; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)nf->nf_Pages; return TRUE; + case FROBJ_Type: *(msg->TagData)=nf->nf_FrameType; return TRUE; + default: return FALSE; + } +} + +ULONG READ_Frame(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Frame *nf; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + ReadChunkBytes(msg->IFFh,(APTR)&nf->nf_X,SIZE(Node_Frame,nf_X)); + return (ULONG)error; +} + +ULONG WRITE_Frame(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Frame *nf; + + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + if(error=PushChunk(msg->IFFh,NULL,ID_FRME,IFFSIZE_UNKNOWN)) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)&nf->nf_X,SIZE(Node_Frame,nf_X)); + if(error=PopChunk(msg->IFFh)) return (ULONG)error; + return (ULONG)error; +} + +/****************************************************************************/ + +piObject *piFindFrame(piObject *w,UWORD x,UWORD y) +{ + piObject *o; + struct List *l; + + piGetAttr(w,WNOBJ_FrameList,(ULONG *)&l); + + for(o=(piObject *)GetHead(l);GetSucc(o);o=(piObject *)GetSucc(o)) + if(piDoMethod(o,OM_HITTEST,(ULONG)x,(ULONG)y)) return o; + return NULL; +} + +/****************************************************************************/ + +int FN_PGFR_X_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGFR_Y_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGFR_WIDTH_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGFR_HEIGHT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGFR_FRAME_Clicked( void ) +{ + /* routine when gadget "" is clicked. */ + struct Node_Frame *nf; + + piGetAttr(CurrentFrame,OBJ_Node,(ULONG *)&nf); + nf->nf_FrameType=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGFR_RECESSED_Clicked( void ) +{ + /* routine when gadget "Recessed" is clicked. */ + struct Node_Frame *nf; + ULONG code; + + piGetAttr(CurrentFrame,OBJ_Node,(ULONG *)&nf); + code=PropertiesMsg.Code; + DoFlag(nf->nf_Flags,MYFR_Recessed); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/frame.h b/GadToolsBox/frame.h new file mode 100755 index 0000000..54e9998 --- /dev/null +++ b/GadToolsBox/frame.h @@ -0,0 +1,48 @@ +#ifndef GTB_FRAME_H +#define GTB_FRAME_H +/* +** Frame +*/ + +#define ID_FRME MAKE_ID('F','R','M','E') // Frame Chunk + +#define MYFR_Recessed (1<<0) + +struct Node_Frame +{ + piObject *nf_Window; // Parent Window + struct Page *nf_Pages; + + UWORD nf_X,nf_Y,nf_Width,nf_Height; + UBYTE nf_RelX,nf_RelY,nf_RelWidth,nf_RelHeight; + UBYTE nf_FrameType; + UBYTE nf_Selected; + ULONG nf_Flags; +}; + +#define FTYPE_BUTTON 0 +#define FTYPE_ICONDROPBOX 1 +#define FTYPE_RIDGE 2 +#define FTYPE_HORIZONTALLINE 3 +#define FTYPE_VERTICALLINE 4 + +#define FROBJ_Type (TAG_USER+20+1) + +piObject *piFindFrame(piObject *,UWORD,UWORD); +ULONG Dispatcher_Frame(piClass *,piObject *,Msg); +ULONG INIT_Frame(piClass *,piObject *,Msg); +ULONG APPLY_Frame(piClass *,piObject *,Msg); +ULONG DEFAULT_Frame(piClass *,piObject *,Msg); +ULONG COMPUTE_Frame(piClass *,piObject *,struct piCompute *); +ULONG HITTEST_Frame(piClass *,piObject *,struct piHitTest *); +ULONG NEW_Frame(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Frame(piClass *,piObject *,Msg); +ULONG ADDTAIL_Frame(piClass *,piObject *,struct piWindow *); +ULONG RENDER_Frame(piClass *,piObject *,Msg); +ULONG ERASE_Frame(piClass *,piObject *,Msg); +ULONG SET_Frame(piClass *,piObject *,struct piSet *); +ULONG GET_Frame(piClass *,piObject *,struct piGet *); +ULONG READ_Frame(piClass *,piObject *,struct piIO *); +ULONG WRITE_Frame(piClass *,piObject *,struct piIO *); + +#endif diff --git a/GadToolsBox/gadget.c b/GadToolsBox/gadget.c new file mode 100755 index 0000000..631d3c4 --- /dev/null +++ b/GadToolsBox/gadget.c @@ -0,0 +1,1175 @@ +/* +** GadToolsBox v3 - Gadget Managment +*/ + +#include"includes.h" + +/* +** Defines +*/ + +#define IM_WIDTH(o) (((struct Image *) o)->Width) +#define IM_HEIGHT(o) (((struct Image *) o)->Height) + +struct PlugIn piGadgets[]= +{ + "Button", BUTTON_ID, BUTTON_Dispatcher_Gadget, NULL, + "CheckBox", CHECKBOX_ID, CHECKBOX_Dispatcher_Gadget, NULL, + "ColorWheel", COLORWHEEL_ID,COLORWHEEL_Dispatcher_Gadget, NULL, + "Cycle", CYCLE_ID, CYCLE_Dispatcher_Gadget, NULL, + "Datatype", DATATYPE_ID, DATATYPE_Dispatcher_Gadget, NULL, + "GradientSlider",GRADIENTSLIDER_ID,GRADIENTSLIDER_Dispatcher_Gadget,NULL, + "Integer", INTEGER_ID, INTEGER_Dispatcher_Gadget, NULL, + "Listview", LISTVIEW_ID, LISTVIEW_Dispatcher_Gadget, NULL, + "MX", MX_ID, MX_Dispatcher_Gadget, NULL, + "Number", NUMBER_ID, NUMBER_Dispatcher_Gadget, NULL, + "Page", PAGE_ID, PAGE_Dispatcher_Gadget, NULL, + "Palette", PALETTE_ID, PALETTE_Dispatcher_Gadget, NULL, + "PopUpMenu", POPUPMENU_ID, POPUPMENU_Dispatcher_Gadget, NULL, + "Progress", PROGRESS_ID, PROGRESS_Dispatcher_Gadget, NULL, + "Scroller", SCROLLER_ID, SCROLLER_Dispatcher_Gadget, NULL, + "Slider", SLIDER_ID, SLIDER_Dispatcher_Gadget, NULL, + "String", STRING_ID, STRING_Dispatcher_Gadget, NULL, + "TapeDeck", TAPEDECK_ID, TAPEDECK_Dispatcher_Gadget, NULL, + "Text", TEXT_ID, TEXT_Dispatcher_Gadget, NULL, + "TextField", TEXTFIELD_ID, TEXTFIELD_Dispatcher_Gadget, NULL, + "TreeView", TREEVIEW_ID, TREEVIEW_Dispatcher_Gadget, NULL, + NULL, NULL, NULL, NULL +}; + +extern ULONG ActiveGadget; + +ULONG GetGadgetPtr(ULONG id) +{ + ULONG a; + + for(a=0;aMethodID) + { + case OM_INIT: + retval=INIT_Gadget(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Gadget(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGBO_General(); + OpenWindow_PGGT_General(); + OpenWindow_PG_Lists(); + break; + case OM_CLOSE: + CloseWindow_PG_Lists(); + CloseWindow_PGGT_General(); + CloseWindow_PGBO_General(); + break; + case OM_DEFAULT: + retval=DEFAULT_Gadget(cl,o,msg); + break; + case OM_NEW: + retval=NEW_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Gadget(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Gadget(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Gadget(cl,o,msg); + break; + case OM_ADDTAIL: + retval=ADDTAIL_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_REMOVE: + retval=REMOVE_Gadget(cl,o,msg); + break; + case OM_RENDER: + retval=RENDER_Gadget(cl,o,msg); + break; + case OM_ERASE: + retval=ERASE_Gadget(cl,o,msg); + break; + case OM_CREATE: + retval=CREATE_Gadget(cl,o,(struct piWindow *)msg); + break; + case OM_DELETE: + retval=DELETE_Gadget(cl,o,msg); + break; + case OM_HITTEST: + retval=HITTEST_Gadget(cl,o,(struct piHitTest *)msg); + break; + case OM_COMPUTE: + retval=COMPUTE_Gadget(cl,o,(struct piCompute *)msg); + break; + case OM_READ: + retval=READ_Gadget(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Gadget(cl,o,(struct piIO *)msg); + break; + } + return retval; +} + +ULONG DEFAULT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + ng->ng_Width=80; + ng->ng_Height=18; + return TRUE; +} + +ULONG INIT_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + if(ng->ng_Type==GTYPE_GADTOOLS) + { + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + + SetString(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_LABEL],ng->ng_Label); + SetString(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_TITLE],gtd->g_Text); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_X],ng->ng_X); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_Y],ng->ng_Y); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_WIDTH],ng->ng_Width); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_HEIGHT],ng->ng_Height); + SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_REL_X],ng->ng_RelX); + SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_REL_Y],ng->ng_RelY); + SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_REL_W],ng->ng_RelWidth); + SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_REL_H],ng->ng_RelHeight); + GetFlag(gtd->g_Flags,PLACETEXT_IN) SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_PLACEMENT],0); + GetFlag(gtd->g_Flags,PLACETEXT_LEFT) SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_PLACEMENT],1); + GetFlag(gtd->g_Flags,PLACETEXT_RIGHT) SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_PLACEMENT],2); + GetFlag(gtd->g_Flags,PLACETEXT_ABOVE) SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_PLACEMENT],3); + GetFlag(gtd->g_Flags,PLACETEXT_BELOW) SetCycle(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_PLACEMENT],4); + } + else + { + SetString(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_LABEL],ng->ng_Label); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_X],ng->ng_X); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_Y],ng->ng_Y); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_WIDTH],ng->ng_Width); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_HEIGHT],ng->ng_Height); + SetCycle(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_REL_X],ng->ng_RelX); + SetCycle(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_REL_Y],ng->ng_RelY); + SetCycle(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_REL_W],ng->ng_RelWidth); + SetCycle(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_REL_H],ng->ng_RelHeight); + } + return TRUE; +} + +ULONG APPLY_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + struct GadToolsData *gtd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + + if(ng->ng_Type==GTYPE_GADTOOLS) + { + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + strcpy(gtd->g_Text,GetString(PGGT_GeneralGadgets[GD_PGGT_TITLE])); + strcpy(ng->ng_Label,GetString(PGGT_GeneralGadgets[GD_PGGT_LABEL])); + ng->ng_X=GetInteger(PGGT_GeneralGadgets[GD_PGGT_X]); + ng->ng_Y=GetInteger(PGGT_GeneralGadgets[GD_PGGT_Y]); + ng->ng_Width=GetInteger(PGGT_GeneralGadgets[GD_PGGT_WIDTH]); + ng->ng_Height=GetInteger(PGGT_GeneralGadgets[GD_PGGT_HEIGHT]); + } + else + { + strcpy(ng->ng_Label,GetString(PGBO_GeneralGadgets[GD_PGBO_LABEL])); + ng->ng_X=GetInteger(PGBO_GeneralGadgets[GD_PGBO_X]); + ng->ng_Y=GetInteger(PGBO_GeneralGadgets[GD_PGBO_Y]); + ng->ng_Width=GetInteger(PGBO_GeneralGadgets[GD_PGBO_WIDTH]); + ng->ng_Height=GetInteger(PGBO_GeneralGadgets[GD_PGBO_HEIGHT]); + } + if(ng->ng_X<0) ng->ng_X=0; + if(ng->ng_Y<0) ng->ng_Y=0; + return TRUE; +} + +ULONG REMOVE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + Remove(Node(o)); + ng->ng_Window=NULL; + return TRUE; +} + +ULONG COMPUTE_Gadget(piClass *cl,piObject *o,struct piCompute *msg) +{ + struct Node_Gadget *ng; + struct Node_Gadget *npg=NULL; + struct Node_Window *nw; + ULONG pgw=0; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + if(ng->ng_Parent) piGetAttr(ng->ng_Parent,OBJ_Node,(ULONG *)&npg); + switch(msg->Type) + { + case CT_LEFT: + if(nw->nw_MyFlags&MYWA_DragToolVert) + return((ULONG)(ng->ng_X+8)+(npg?npg->ng_X:0)); + else + return((ULONG)(ng->ng_X+Scr->WBorLeft)+(npg?npg->ng_X:0)); + case CT_TOP: + if(npg) pgw=piDoMethod(ng->ng_Parent,OM_COMPUTE,(ULONG)CT_HEIGHT); + if(nw->nw_MyFlags&MYWA_DragToolVert) + return((ULONG)(ng->ng_Y+Scr->WBorTop)+(ng->ng_Parent?npg->ng_Y:0)+(npg?pgw:0)); + else + { + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + return((ULONG)(ng->ng_Y+8)+(ng->ng_Parent?npg->ng_Y:0)+(npg?pgw:0)); + else + return((ULONG)(ng->ng_Y+Scr->RastPort.TxHeight+Scr->WBorTop+1)+(ng->ng_Parent?npg->ng_Y:0)+(npg?pgw:0)); + } + case CT_WIDTH: +// if(ng->ng_RelWidth) +// return((ULONG)(ng->ng_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_X)); +// else + return(ng->ng_Width); + case CT_HEIGHT: +// if(ng->ng_RelHeight) +// return((ULONG)(ng->ng_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Y)); +// else + return(ng->ng_Height); + } +} + +ULONG HITTEST_Gadget(piClass *cl,piObject *o,struct piHitTest *msg) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + UWORD x,y,w,h; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); +// if(!ng->ng_RelX) + x=piCX(o);// else x=nw->nw_Width-ng->ng_X; +// if(!ng->ng_RelY) + y=piCY(o);// else y=nw->nw_Height-ng->ng_Y; +// if(!ng->ng_RelWidth) + w=piCW(o);// else w=nw->nw_Width-nw->nw_Window->BorderRight+ng->ng_Width-x; +// if(!ng->ng_RelHeight) + h=piCH(o);//else h=nw->nw_Height-nw->nw_Window->BorderBottom+ng->ng_Height-y; + + if((msg->X>=x) && (msg->X<=x+w) && (msg->Y>=y) && (msg->Y<=y+h)) return TRUE; + else return FALSE; +} + +ULONG NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + ULONG size=0; + + if(GetTagData(GAOBJ_Type,GTYPE_GADTOOLS,msg->Tags)==GTYPE_GADTOOLS) size=sizeof(struct GadToolsData); + + if(obj=MyAllocVec(sizeof(piObject)+cl->Size+size,MEMF_PUBLIC|MEMF_CLEAR)) + { + ng=(struct Node_Gadget *)OBJECT_DATA(obj); + obj->ln_Name=ng->ng_Label; + ng->ng_NumTags=GetTagData(GAOBJ_NumTags,1,msg->Tags); + ng->ng_NumOwnTags=GetTagData(GAOBJ_NumOwnTags,1,msg->Tags); + if(ng->ng_Tags=AllocTagItems(ng->ng_NumTags)) + { + if(ng->ng_OwnTags=AllocTagItems(ng->ng_NumOwnTags)) + { + switch(GetTagData(GAOBJLIST_Tags,2,msg->Tags)) + { + case 0: ng->ng_EditList.List=(struct List **)&(ng->ng_Tags[GetTagData(GAOBJLIST_List,0,msg->Tags)].ti_Data); break; + case 1: ng->ng_EditList.List=(struct List **)&(ng->ng_OwnTags[GetTagData(GAOBJLIST_List,0,msg->Tags)].ti_Data); break; + case 2: ng->ng_EditList.List=NULL; break; + } + ng->ng_EditList.Active=(ULONG *)&(ng->ng_Tags[GetTagData(GAOBJLIST_Active,0,msg->Tags)].ti_Data); + ng->ng_TagTypes=(UBYTE *)GetTagData(GAOBJ_TagTypes,0,msg->Tags); + ng->ng_OwnTagTypes=(UBYTE *)GetTagData(GAOBJ_OwnTagTypes,0,msg->Tags); + ng->ng_PlugInID=GetTagData(GAOBJ_ID,0,msg->Tags); + ng->ng_Type=GetTagData(GAOBJ_Type,GTYPE_GADTOOLS,msg->Tags); + ng->ng_Pages=(struct Page *)GetTagData(OBJ_Properties,NULL,msg->Tags); + ng->ng_Gadget=NULL; + if(ng->ng_Type==GTYPE_GADTOOLS) + { + gtd=(struct GadToolsData *)GadgetData(ng); + gtd->g_Kind=BUTTON_KIND; + gtd->g_Flags=PLACETEXT_LEFT; + } + return (ULONG) obj; +// FreeTagItems(ng->ng_OwnTags); + } + FreeTagItems(ng->ng_Tags); + } + MyFreeVec(obj); + } + return NULL; +} + +ULONG DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piDoMethod(o,OM_DELETE); + MyFreeTagItems(ng->ng_Tags); + MyFreeTagItems(ng->ng_OwnTags); + MyFreeVec(o); + return TRUE; +} + +ULONG ADDTAIL_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + piObject *on; + struct Node_Gadget *ng,*ngn; + struct Node_Window *nw; + struct List *l; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(msg->Window,OBJ_Node,(ULONG *)&nw); + piGetAttr(msg->Window,WNOBJ_GadgetList,(ULONG *)&l); + + ng->ng_Window=msg->Window; + if(ng->ng_PlugInID==PAGE_ID) AddTail(l,Node(o)); + else + { + if(IsListEmpty(l)) + { + AddTail(l,Node(o)); + } + else + { + on=(piObject *)l->lh_TailPred; + while(on->ln_Pred) + { + piGetAttr(on,OBJ_Node,(ULONG *)&ngn); + if(ngn->ng_PlugInID==PAGE_ID) + on=(piObject *)on->ln_Pred; + else + { + Insert(l,Node(o),Node(on->ln_Succ)); + break; + } + } + } + } + return TRUE; +} + +void DrawRect(struct RastPort *rp,UWORD x,UWORD y,BOOL fill) +{ + if(fill) + RectFill(rp,x,y,x+5,y+5); + else + { + Move(rp,x,y); + Draw(rp,x+5,y); + Draw(rp,x+5,y+5); + Draw(rp,x,y+5); + Draw(rp,x,y); + } +} + +ULONG RENDER_Gadget(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct Gadget *g,*ga; + BOOL fill=FALSE; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + + x=piCX(o); + y=piCY(o); + w=piCW(o); + h=piCH(o); + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + + g=CreateContext(&g); + if(ga=(struct Gadget *)piDoMethod(o,OM_CREATE,g)) + { + RefreshGList(g,nw->nw_Window,NULL,-1); + } + piDoMethod(o,OM_DELETE); + if(ng->ng_Type==GTYPE_BOOPSI) g->NextGadget=NULL; + FreeGadgets(g); + + if(ng->ng_Selected && GUI.gui_Mode==MODE_GADGET) + { + SetAPen(nw->nw_Window->RPort,1); + SetDrMd(nw->nw_Window->RPort,COMPLEMENT); + if(CurrentGadget==o) fill=TRUE; + DrawRect(nw->nw_Window->RPort,x,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y,fill); + DrawRect(nw->nw_Window->RPort,x+(w/2)-2,y+h-5,fill); + DrawRect(nw->nw_Window->RPort,x,y+(h/2)-2,fill); + DrawRect(nw->nw_Window->RPort,x+w-5,y+(h/2)-2,fill); + } + return TRUE; +} + +ULONG ERASE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + UWORD x,y,w,h; + piObject *wo; + struct Node_Window *nw; + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,OBJ_Window,(ULONG *)&wo); + if(wo) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw) if(nw->nw_Window) + { +// if(!ng->ng_RelX) + x=piCX(o);// else x=nw->nw_Width-ng->ng_X; +// if(!ng->ng_RelY) + y=piCY(o);// else y=nw->nw_Height-ng->ng_Y; +// if(!ng->ng_RelWidth) + w=piCW(o);// else w=nw->nw_Width-nw->nw_Window->BorderRight+ng->ng_Width-x; +// if(!ng->ng_RelHeight) + h=piCH(o);// else h=nw->nw_Height-nw->nw_Window->BorderBottom+ng->ng_Height-y; + + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,x,y,x+w,y+h); + piShowGrid(o); + } + } + return TRUE; +} + +ULONG SET_Gadget(piClass *cl,piObject *o,struct piSet *msg) +{ + struct TagItem *tag,*tstate; + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + + tstate=msg->Tags; + while(tag = NextTagItem( &tstate )) + { + switch(tag->ti_Tag) + { + case GA_Left: ng->ng_X=tag->ti_Data; break; + case GA_Top: ng->ng_Y=tag->ti_Data; break; + case GA_Width: ng->ng_Width=tag->ti_Data; break; + case GA_Height: ng->ng_Height=tag->ti_Data; break; + case GAOBJ_Type: ng->ng_Type=tag->ti_Data; break; + case OBJ_Select: ng->ng_Selected=tag->ti_Data; break; + } + } + return TRUE; +} + +ULONG GET_Gadget(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Gadget *ng=(struct Node_Gadget *)OBJECT_DATA(o); +// struct Node_Window *nw; + + switch(msg->TagID) + { + case GA_Left: *(msg->TagData)=ng->ng_X; return TRUE; + case GA_Top: *(msg->TagData)=ng->ng_Y; return TRUE; + case GA_Width: +// if(ng->ng_RelWidth) +// { +// piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); +// *(msg->TagData)=(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)+ng->ng_Width-ng->ng_X; +// } +// else + *(msg->TagData)=ng->ng_Width; + return TRUE; + case GA_Height: +// if(ng->ng_RelHeight) +// { +// piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); +// *(msg->TagData)=(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)+ng->ng_Height-ng->ng_Y; +// } +// else + *(msg->TagData)=ng->ng_Height; + return TRUE; + case OBJ_Select: *(msg->TagData)=ng->ng_Selected; return TRUE; + case OBJ_Node: *(msg->TagData)=(ULONG)ng; return TRUE; + case OBJ_Window: *(msg->TagData)=(ULONG)ng->ng_Window; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)ng->ng_Pages; return TRUE; + case GAOBJ_Type: *(msg->TagData)=ng->ng_Type; return TRUE; + case GAOBJ_NumTags: *(msg->TagData)=ng->ng_NumTags; return TRUE; + case GAOBJ_NumOwnTags: *(msg->TagData)=ng->ng_NumOwnTags; return TRUE; + case GAOBJ_Tags: *(msg->TagData)=(ULONG)ng->ng_Tags; return TRUE; + case GAOBJ_OwnTags: *(msg->TagData)=(ULONG)ng->ng_OwnTags; return TRUE; + case GAOBJ_TagTypes: *(msg->TagData)=(ULONG)ng->ng_TagTypes; return TRUE; + case GAOBJ_OwnTagTypes: *(msg->TagData)=(ULONG)ng->ng_OwnTagTypes; return TRUE; + case GAOBJ_NodeData: *(msg->TagData)=(ULONG)GadgetData(ng); return TRUE; + case GAOBJ_EditList: *(msg->TagData)=(ULONG)&ng->ng_EditList; return TRUE; + default: return FALSE; + } +} + +ULONG CREATE_Gadget(piClass *cl,piObject *o,struct piWindow *msg) +{ + WORD x,y,w,h; + struct TagItem *ti; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct GadToolsData *gtd; + struct NewGadget newg; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Type==GTYPE_GADTOOLS) + { + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); +// gtd=(struct GadToolsData *) GadgetData(ng); + + if(ng->ng_RelX) x=-(nw->nw_Window->Width-nw->nw_Window->BorderLeft-ng->ng_X-1); + else x=piCX(o); + if(ng->ng_RelY) y=-(nw->nw_Window->Height-nw->nw_Window->BorderTop-ng->ng_Y-1); + else y=piCY(o); + if(ng->ng_RelWidth) w=-(nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight+ng->ng_X+(nw->nw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight-ng->ng_Width)-1); + else w=piCW(o)+1; + if(ng->ng_RelHeight) h=-(nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom+ng->ng_Y+(nw->nw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom-ng->ng_Height)-1); + else h=piCH(o)+1; + + newg.ng_LeftEdge=x; + newg.ng_TopEdge=y; + newg.ng_Width=w; + newg.ng_Height=h; + newg.ng_GadgetText=gtd->g_Text; + newg.ng_TextAttr=&EditFontTA; + newg.ng_GadgetID=0; + newg.ng_Flags=gtd->g_Flags; + newg.ng_VisualInfo=VisualInfo; + newg.ng_UserData=NULL; + + ng->ng_Gadget=CreateGadgetA(gtd->g_Kind,(struct Gadget *)msg->Window,&newg,ti); + if(ng->ng_RelX) ng->ng_Gadget->Flags|=GFLG_RELRIGHT; + if(ng->ng_RelY) ng->ng_Gadget->Flags|=GFLG_RELBOTTOM; + if(ng->ng_RelWidth) ng->ng_Gadget->Flags|=GFLG_RELWIDTH; + if(ng->ng_RelHeight) ng->ng_Gadget->Flags|=GFLG_RELHEIGHT; + return (ULONG) (ng->ng_Gadget); + } + return NULL; +} + +ULONG DELETE_Gadget(piClass *cl,piObject *o,Msg msg) +{ + return TRUE; +} + +ULONG READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,a; + struct Node_Gadget *ng; + struct Node_Window *nw; + struct GadToolsData *gtd; + UWORD OrgNumTags,OrgNumOwnTags; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + + OrgNumTags=ng->ng_NumTags; + OrgNumOwnTags=ng->ng_NumOwnTags; + ReadChunkBytes(msg->IFFh,(APTR)&ng->ng_X,SIZE(Node_Gadget,ng_X)); + for(a=0;ang_NumTags;a++) ReadTagItem(msg->IFFh,&ng->ng_Tags[a]); + for(a=0;ang_NumOwnTags;a++) ReadTagItem(msg->IFFh,&ng->ng_OwnTags[a]); + if(ng->ng_Type==GTYPE_GADTOOLS) ReadChunkBytes(msg->IFFh,(APTR)gtd,sizeof(struct GadToolsData)); + ng->ng_NumTags=OrgNumTags; + ng->ng_NumOwnTags=OrgNumOwnTags; + ng->ng_Tags[ng->ng_NumTags].ti_Tag=TAG_DONE; + ng->ng_OwnTags[ng->ng_NumOwnTags].ti_Tag=TAG_DONE; + return (ULONG)error; +} + +ULONG WRITE_Gadget(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,a; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + if(error=PushChunk(msg->IFFh,NULL,ng->ng_PlugInID,IFFSIZE_UNKNOWN)) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)&ng->ng_X,SIZE(Node_Gadget,ng_X)); + for(a=0;ang_NumTags;a++) WriteTagItem(msg->IFFh,&ng->ng_Tags[a],ng->ng_TagTypes[a]); + for(a=0;ang_NumOwnTags;a++) WriteTagItem(msg->IFFh,&ng->ng_OwnTags[a],ng->ng_OwnTagTypes[a]); + if(ng->ng_Type==GTYPE_GADTOOLS) WriteChunkBytes(msg->IFFh,(APTR)gtd,sizeof(struct GadToolsData)); + if(error=PopChunk(msg->IFFh)) return (ULONG)error; + return (ULONG)error; +} + +/****************************************************************************/ + +piObject *piFindGadget(piObject *w,UWORD x,UWORD y) +{ + piObject *o; + struct Node_Window *nw; + + piGetAttr(w,OBJ_Node,(ULONG *)&nw); + + for(o=(piObject *)GetHead(&nw->nw_List_Gadget);GetSucc(o);o=(piObject *)GetSucc(o)) + if(piDoMethod(o,OM_HITTEST,(ULONG)x,(ULONG)y)) return o; + return NULL; +} + +struct Gadget *CreateAllGadgets(piObject *o) +{ + struct Gadget *g=NULL; + piObject *go; + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + + nw->nw_Gadgets=NULL; + if(nw->nw_PageGadget==0 && GUI.gui_Mode==MODE_TEST) + { + if(nw->nw_MyFlags&MYWA_BBottomSlider) + { + g=CreateContext(&nw->nw_Gadgets); + unless(nw->nw_Object[0]=NewObject(NULL, BUTTONGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + GA_Image, gui_LeftImage, + GA_RelRight, 1-(IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_SizeImage)+IM_WIDTH(gui_RightImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_LeftImage)), + GA_BottomBorder,TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_LEFTBUTTON, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[0]; + unless(nw->nw_Object[1]=NewObject(NULL, BUTTONGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + GA_Image, gui_RightImage, + GA_RelRight, 1-(IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_RightImage)), + GA_BottomBorder,TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_RIGHTBUTTON, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[1]; + unless(nw->nw_Object[2]=NewObject(NULL, PROPGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + PGA_Freedom, FREEHORIZ, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_Left, 3, + GA_RelBottom, -(IM_HEIGHT(gui_SizeImage)-3), + GA_RelWidth, -(4+IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)+1), + GA_Height, IM_HEIGHT(gui_SizeImage)-4, + GA_BottomBorder, TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_HORIZBUTTON, + PGA_Total, 1, + PGA_Visible, 1, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[2]; + } + else + { + nw->nw_Object[0]=NULL; + nw->nw_Object[1]=NULL; + nw->nw_Object[2]=NULL; + } + if(nw->nw_MyFlags&MYWA_BRightSlider) + { + if(!g) g=CreateContext(&nw->nw_Gadgets); + unless(nw->nw_Object[3]=NewObject(NULL, BUTTONGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + GA_Image, gui_DownImage, + GA_RelRight, 1-(IM_WIDTH(gui_DownImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)), + GA_RightBorder,TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_DOWNBUTTON, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[3]; + unless(nw->nw_Object[4]=NewObject(NULL, BUTTONGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + GA_Image, gui_UpImage, + GA_RelRight, 1-(IM_WIDTH(gui_UpImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)+IM_HEIGHT(gui_UpImage)), + GA_RightBorder,TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_UPBUTTON, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[4]; + unless(nw->nw_Object[5]=NewObject(NULL, PROPGCLASS, +// ICA_TARGET, ICTARGET_IDCMP, + GA_RelVerify,TRUE, + PGA_Freedom, FREEVERT, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_RelRight, -(IM_WIDTH(gui_SizeImage)-5), + GA_Top, Scr->WBorTop+Scr->Font->ta_YSize+1+1, + GA_Width, IM_WIDTH(gui_SizeImage)-2-2-4, + GA_RelHeight, -(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_UpImage)+IM_HEIGHT(gui_DownImage)+Scr->WBorTop+Scr->Font->ta_YSize+1+1+1), + GA_RightBorder, TRUE, + GA_Previous,(ULONG *)g, + (nw->nw_Flags&WFLG_GIMMEZEROZERO) ? GA_GZZGadget : TAG_IGNORE,TRUE, + GA_ID, GD_VERTBUTTON, + PGA_Total, 1, + PGA_Visible, 1, + TAG_DONE)) return NULL; + g=(struct Gadget *)nw->nw_Object[5]; + } + else + { + nw->nw_Object[3]=NULL; + nw->nw_Object[4]=NULL; + nw->nw_Object[5]=NULL; + } + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + if(!g) g=CreateContext(&nw->nw_Gadgets); + for(go=(piObject *)GetHead(&nw->nw_List_Gadget);GetSucc(go);go=(piObject *)GetSucc(go)) + g=(struct Gadget *)piDoMethod(go,OM_CREATE,(ULONG)g); + } + } + return nw->nw_Gadgets; +} + +/********** General GadTools ***********************************************/ + +int FN_PGGT_X_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_Y_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_WIDTH_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_HEIGHT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_REL_X_Clicked( void ) +{ + struct Node_Gadget *ng; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + ng->ng_RelX=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_REL_Y_Clicked( void ) +{ + struct Node_Gadget *ng; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + ng->ng_RelY=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_REL_W_Clicked( void ) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + ng->ng_RelWidth=PropertiesMsg.Code; +// if(ng->ng_RelWidth) +// { +// ng->ng_Width=-(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)+ng->ng_X+ng->ng_Width; +// SetInteger(PropertiesWnd,PGGT_GeneralGadgets[GD_PGGT_WIDTH],ng->ng_Width); +// } +// else +// { +// ng->ng_Width=(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)+ng->ng_Width-ng->ng_X; +// SetInteger(PropertiesWnd,PGGT_GeneralGadgets[GD_PGGT_WIDTH],ng->ng_Width); +// } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_REL_H_Clicked( void ) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + ng->ng_RelHeight=PropertiesMsg.Code; +// if(ng->ng_RelHeight) +// { +// ng->ng_Height=-(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)+ng->ng_Y+ng->ng_Height; +// SetInteger(PropertiesWnd,PGGT_GeneralGadgets[GD_PGGT_HEIGHT],ng->ng_Height); +// } +// else +// { +// ng->ng_Height=(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)+ng->ng_Height-ng->ng_Y; +// SetInteger(PropertiesWnd,PGGT_GeneralGadgets[GD_PGGT_HEIGHT],ng->ng_Height); +// } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_TITLE_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_LABEL_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGGT_PLACEMENT_Clicked( void ) +{ + ULONG code; + struct GadToolsData *gtd; + + piGetAttr(CurrentGadget,GAOBJ_NodeData,(ULONG *)>d); + code=PropertiesMsg.Code; + ClearFlag(gtd->g_Flags,PLACETEXT_LEFT); + ClearFlag(gtd->g_Flags,PLACETEXT_RIGHT); + ClearFlag(gtd->g_Flags,PLACETEXT_ABOVE); + ClearFlag(gtd->g_Flags,PLACETEXT_BELOW); + ClearFlag(gtd->g_Flags,PLACETEXT_IN); + switch(code) + { + case 0: SetFlag(gtd->g_Flags,PLACETEXT_IN); break; + case 1: SetFlag(gtd->g_Flags,PLACETEXT_LEFT); break; + case 2: SetFlag(gtd->g_Flags,PLACETEXT_RIGHT); break; + case 3: SetFlag(gtd->g_Flags,PLACETEXT_ABOVE); break; + case 4: SetFlag(gtd->g_Flags,PLACETEXT_BELOW); break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +/********** General BOOPSI *************************************************/ + +int FN_PGBO_X_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_Y_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_WIDTH_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_HEIGHT_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_REL_X_Clicked( void ) +{ + struct Node_Gadget *ng; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + ng->ng_RelX=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_REL_Y_Clicked( void ) +{ + struct Node_Gadget *ng; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + ng->ng_RelY=PropertiesMsg.Code; + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_REL_W_Clicked( void ) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + ng->ng_RelWidth=PropertiesMsg.Code; +// if(ng->ng_RelWidth) +// { +// ng->ng_Width=-(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)+ng->ng_X+ng->ng_Width; +// SetInteger(PropertiesWnd,PGBO_GeneralGadgets[GD_PGBO_WIDTH],ng->ng_Width); +// } +// else +// { +// ng->ng_Width=(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)+ng->ng_Width-ng->ng_X; +// SetInteger(PropertiesWnd,PGBO_GeneralGadgets[GD_PGBO_WIDTH],ng->ng_Width); +// } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_REL_H_Clicked( void ) +{ + struct Node_Gadget *ng; + struct Node_Window *nw; + piGetAttr(CurrentGadget,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + ng->ng_RelHeight=PropertiesMsg.Code; +// if(ng->ng_RelHeight) +// { +// ng->ng_Height=-(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)+ng->ng_Y+ng->ng_Height; +// SetInteger(PropertiesWnd,PGBO_GeneralGadgets[GD_PGBO_HEIGHT],ng->ng_Height); +// } +// else +// { +// ng->ng_Height=(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)+ng->ng_Height-ng->ng_Y; +// SetInteger(PropertiesWnd,PGBO_GeneralGadgets[GD_PGBO_HEIGHT],ng->ng_Height); +// } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +int FN_PGBO_LABEL_Clicked( void ) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return TRUE; +} + +/********** Lists **********************************************************/ + +ULONG ListSelectedLabel=-1; + +int FN_PG_LISTS_LIST_Clicked( void ) +{ + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + ListSelectedLabel=PropertiesMsg.Code; + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,FALSE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropertiesWnd,FALSE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropertiesWnd,FALSE); + SetString(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_EDIT],FindNodeNum(*(el->List),ListSelectedLabel)->ln_Name); + return 1; +} + +int FN_PG_LISTS_EDIT_Clicked( void ) +{ + struct Node *n; + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + if(ListSelectedLabel!=-1) + { + if(n=FindNodeNum(*(el->List),ListSelectedLabel)) + { + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],NULL); + MyFreeVec(n->ln_Name); + n->ln_Name=MyAllocVec(strlen(GetString(PG_ListsGadgets[GD_PG_LISTS_EDIT]))+1,MEMF_ANY); + strcpy(n->ln_Name,GetString(PG_ListsGadgets[GD_PG_LISTS_EDIT])); + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],*(el->List)); + GT_SetGadgetAttrs(PG_ListsGadgets[GD_PG_LISTS_LIST],PropertiesWnd,NULL,GTLV_Selected,ListSelectedLabel,GTLV_MakeVisible,ListSelectedLabel,TAG_DONE); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LISTS_ADD_Clicked( void ) +{ + struct Node *n; + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],NULL); + if(n=MyAllocVec(sizeof(struct Node),MEMF_ANY)) + { + n->ln_Name=MyAllocVec(strlen(GetCatString(MSG_NEW))+1,MEMF_ANY); + strcpy(n->ln_Name,GetCatString(MSG_NEW)); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropertiesWnd,FALSE); + AddTail(*(el->List),n); + SetString(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_EDIT],n->ln_Name); + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],*(el->List)); + ListSelectedLabel=GetNumNode(*(el->List),n); + GT_SetGadgetAttrs(PG_ListsGadgets[GD_PG_LISTS_LIST],PropertiesWnd,NULL,GTLV_Selected,ListSelectedLabel,GTLV_MakeVisible,ListSelectedLabel,TAG_DONE); + ActivateGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropertiesWnd,NULL); + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,FALSE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropertiesWnd,FALSE); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LISTS_DEL_Clicked( void ) +{ + struct Node *n; + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + if(ListSelectedLabel!=-1) + { + if(n=FindNodeNum(*(el->List),ListSelectedLabel)) + { + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],NULL); + MyFreeVec(n->ln_Name); + Remove(n); + MyFreeVec(n); + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],*(el->List)); + ListSelectedLabel=-1; + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DEL],PropertiesWnd,TRUE); + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_EDIT],PropertiesWnd,TRUE); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LISTS_UP_Clicked( void ) +{ + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + if(ListSelectedLabel!=-1) + { + if(*(el->List)) + { + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],NULL); + MoveNodeUp(*(el->List),FindNodeNum(*(el->List),ListSelectedLabel)); + if(ListSelectedLabel>0) ListSelectedLabel--; + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],*(el->List)); + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,FALSE); + GT_SetGadgetAttrs(PG_ListsGadgets[GD_PG_LISTS_LIST],PropertiesWnd,NULL,GTLV_Selected,ListSelectedLabel,GTLV_MakeVisible,ListSelectedLabel,TAG_DONE); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LISTS_DOWN_Clicked( void ) +{ + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + if(ListSelectedLabel!=-1) + { + if(*(el->List)) + { + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],NULL); + MoveNodeDown(*(el->List),FindNodeNum(*(el->List),ListSelectedLabel)); + if(FindNodeNum(*(el->List),ListSelectedLabel+1)) ListSelectedLabel++; + SetListView(PropertiesWnd,PG_ListsGadgets[GD_PG_LISTS_LIST],*(el->List)); + if(!GetSucc(GetSucc(FindNodeNum(*(el->List),ListSelectedLabel)))) + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PG_ListsGadgets[GD_PG_LISTS_DOWN],PropertiesWnd,FALSE); + if(ListSelectedLabel==0) DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,TRUE); + else DisableGadget(PG_ListsGadgets[GD_PG_LISTS_UP],PropertiesWnd,FALSE); + GT_SetGadgetAttrs(PG_ListsGadgets[GD_PG_LISTS_LIST],PropertiesWnd,NULL,GTLV_Selected,ListSelectedLabel,GTLV_MakeVisible,ListSelectedLabel,TAG_DONE); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PG_LISTS_ACTIVE_Clicked( void ) +{ + struct EditList *el; + + piGetAttr(CurrentGadget,GAOBJ_EditList,(ULONG *)&el); + *(el->Active)=GetInteger(PG_ListsGadgets[GD_PG_LISTS_ACTIVE]); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} diff --git a/GadToolsBox/gadget.h b/GadToolsBox/gadget.h new file mode 100755 index 0000000..ad0df38 --- /dev/null +++ b/GadToolsBox/gadget.h @@ -0,0 +1,120 @@ +#ifndef GTB_GADGET_H +#define GTB_GADGET_H +/* +** Gadget +*/ + +#include"plugins/button.h" +#include"plugins/checkbox.h" +#include"plugins/colorwheel.h" +#include"plugins/cycle.h" +#include"plugins/datatype.h" +#include"plugins/gradientslider.h" +#include"plugins/integer.h" +#include"plugins/listview.h" +#include"plugins/number.h" +#include"plugins/mx.h" +#include"plugins/palette.h" +#include"plugins/page.h" +#include"plugins/popupmenu.h" +#include"plugins/progress.h" +#include"plugins/scroller.h" +#include"plugins/slider.h" +#include"plugins/string.h" +#include"plugins/tapedeck.h" +#include"plugins/text.h" +#include"plugins/textfield.h" +#include"plugins/treeview.h" + +struct EditList +{ + struct List **List; + ULONG *Active; +}; + +// XXXX_ID - Gadget specific data // Gadget Data (see gadgets.h) + +struct Node_Gadget +{ + struct Gadget *ng_Gadget; + piObject *ng_Parent; // Parent Object (NULL or page.gadget) + piObject *ng_Window; // Parent Window + struct TagItem *ng_Tags; + struct TagItem *ng_OwnTags; + UBYTE *ng_TagTypes; + UBYTE *ng_OwnTagTypes; + struct Page *ng_Pages; + struct EditList ng_EditList; + + WORD ng_X,ng_Y,ng_Width,ng_Height; + UBYTE ng_RelX,ng_RelY,ng_RelWidth,ng_RelHeight; + ULONG ng_PlugInID; + UBYTE ng_Selected; + UBYTE ng_Type; + TEXT ng_Label[40]; + UWORD ng_NumTags; + UWORD ng_NumOwnTags; +}; + +struct GadToolsData // GadTools has additional datas +{ + TEXT g_Text[256]; + ULONG g_Flags; + ULONG g_Kind; +}; + +struct PlugIn +{ + STRPTR piName; // Name of plugin + ULONG piID; // ID of plugin + ULONG (*Dispatcher)(piClass*,piObject *,Msg); // Object Dispatcher + piClass *Class; +}; + +#define PLUGIN_GADGETS 21 + +extern struct PlugIn piGadgets[]; + +#define GadgetData(x) (((UBYTE *)x)+sizeof(struct Node_Gadget)) // Get Pointer to GadToolsData + +#define GAOBJ_Type (TAG_USER+20+1) +#define GAOBJ_NumTags (TAG_USER+20+2) +#define GAOBJ_NumOwnTags (TAG_USER+20+3) +#define GAOBJ_Tags (TAG_USER+20+4) +#define GAOBJ_OwnTags (TAG_USER+20+5) +#define GAOBJ_TagTypes (TAG_USER+20+6) +#define GAOBJ_OwnTagTypes (TAG_USER+20+7) +#define GAOBJ_ID (TAG_USER+20+8) +#define GAOBJ_NodeData (TAG_USER+20+9) +#define GAOBJ_EditList (TAG_USER+20+10) +#define GAOBJLIST_List (TAG_USER+20+11) +#define GAOBJLIST_Active (TAG_USER+20+12) +#define GAOBJLIST_Tags (TAG_USER+20+13) + +#define GTYPE_GADTOOLS 0 +#define GTYPE_BOOPSI 1 + +struct Gadget *CreateAllGadgets(piObject *); +piObject *piFindGadget(piObject *,UWORD,UWORD); +ULONG GetGadgetPtr(ULONG); + +ULONG Dispatcher_Gadget(piClass *,piObject *,Msg); +ULONG DEFAULT_Gadget(piClass *,piObject *,Msg); +ULONG INIT_Gadget(piClass *,piObject *,Msg); +ULONG APPLY_Gadget(piClass *,piObject *,Msg); +ULONG COMPUTE_Gadget(piClass *,piObject *,struct piCompute *); +ULONG HITTEST_Gadget(piClass *,piObject *,struct piHitTest *); +ULONG NEW_Gadget(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Gadget(piClass *,piObject *,Msg); +ULONG ADDTAIL_Gadget(piClass *,piObject *,struct piWindow *); +ULONG REMOVE_Gadget(piClass *,piObject *,Msg); +ULONG RENDER_Gadget(piClass *,piObject *,Msg); +ULONG ERASE_Gadget(piClass *,piObject *,Msg); +ULONG SET_Gadget(piClass *,piObject *,struct piSet *); +ULONG GET_Gadget(piClass *,piObject *,struct piGet *); +ULONG CREATE_Gadget(piClass *,piObject *,struct piWindow *); +ULONG DELETE_Gadget(piClass *,piObject *,Msg); +ULONG READ_Gadget(piClass *,piObject *,struct piIO *); +ULONG WRITE_Gadget(piClass *,piObject *,struct piIO *); + +#endif diff --git a/GadToolsBox/gadtools.c b/GadToolsBox/gadtools.c new file mode 100755 index 0000000..02ebc4e --- /dev/null +++ b/GadToolsBox/gadtools.c @@ -0,0 +1,5944 @@ +/* +** Source code generated by GadToolsBox 3.0 (c) by Tomasz Muszynski +** GUI designed by: Tomasz Muszynski +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include"gadtools.h" +#include"gadtools_cat.h" + +TEXT VER_STRING[]=VER_SVER; + +struct Screen *Scr=NULL; +struct DrawInfo *DrawInfo=NULL; +APTR VisualInfo=NULL; +TEXT ScrTitle[256]; +TEXT ScrPubName[30]; +UWORD ScrWidth=800; +UWORD ScrHeight=600; +UWORD ScrDepth=8; +ULONG ScrDisplayID=0x0; +struct Catalog *Catalog=NULL; +struct Locale *Locale=NULL; +struct Library *ColorWheelBase=NULL; +struct Library *GradientSliderBase=NULL; +struct Library *PageBase=NULL; +struct Library *ProgressBase=NULL; +struct Library *TextFieldBase=NULL; +struct Library *ListViewBase=NULL; +Class *PageClass=NULL; +Class *ProgressClass=NULL; +Class *TextFieldClass=NULL; +Class *ListViewClass=NULL; +struct Library *SmartBitMapBase=NULL; +Class *SmartBitMapClass=NULL; +struct MsgPort *ProjectMsgPort=NULL; +struct TextAttr *Font, Attr; +UWORD FontX, FontY; +BOOL GadgetLocaleDone[CNTWND_WINDOWS]; +BOOL WindowLocaleDone[CNTWND_WINDOWS]; +BOOL MenuLocaleDone[CNTMN_MENUS]; + +struct Menu *MainMenus=NULL; +/* Main Menu defintion */ +struct NewMenu MainNewMenu[]= +{ + NM_TITLE, MSG_MainProject_MTITLE, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainProjectNew_MITEM, NULL, NULL, NULL, FN_MainProjectNew_Selected, + NM_ITEM, MSG_MainProjectOpen_MITEM, NULL, NULL, NULL, FN_MainProjectOpen_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainProjectSave_MITEM, NULL, NULL, NULL, FN_MainProjectSave_Selected, + NM_ITEM, MSG_MainProjectSaveAs_MITEM, NULL, NULL, NULL, FN_MainProjectSaveAs_Selected, + NM_ITEM, MSG_MainProjectSaveSource_MITEM, NULL, NULL, NULL, FN_MainProjectSaveSource_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainProjectPreferences_MITEM, NULL, NULL, NULL, FN_MainProjectPreferences_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainProjectAbout_MITEM, NULL, NULL, NULL, FN_MainProjectAbout_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainProjectQuit_MITEM, NULL, NULL, NULL, FN_MainProjectQuit_Selected, + NM_TITLE, MSG_MainEdit_MTITLE, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainEditUndo_MITEM, NULL, NULL, NULL, FN_MainEditUndo_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainEditCut_MITEM, NULL, NULL, NULL, FN_MainEditCut_Selected, + NM_ITEM, MSG_MainEditCopy_MITEM, NULL, NULL, NULL, FN_MainEditCopy_Selected, + NM_ITEM, MSG_MainEditPaste_MITEM, NULL, NULL, NULL, FN_MainEditPaste_Selected, + NM_ITEM, MSG_MainEditClear_MITEM, NULL, NULL, NULL, FN_MainEditClear_Selected, + NM_ITEM, MSG_MainEditSelectAll_MITEM, NULL, NULL, NULL, FN_MainEditSelectAll_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainEditGrid_MITEM, NULL, NULL, NULL, FN_MainEditGrid_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainEditAlign_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainEditAlignToLeft_MSUB, NULL, NULL, NULL, FN_MainEditAlignToLeft_Selected, + NM_SUB, MSG_MainEditAlignToHCenter_MSUB, NULL, NULL, NULL, FN_MainEditAlignToHCenter_Selected, + NM_SUB, MSG_MainEditAlignToRight_MSUB, NULL, NULL, NULL, FN_MainEditAlignToRight_Selected, + NM_SUB, MSG_MainEditAlignToTop_MSUB, NULL, NULL, NULL, FN_MainEditAlignToTop_Selected, + NM_SUB, MSG_MainEditAlignToVCenter_MSUB, NULL, NULL, NULL, FN_MainEditAlignToVCenter_Selected, + NM_SUB, MSG_MainEditAlignToBottom_MSUB, NULL, NULL, NULL, FN_MainEditAlignToBottom_Selected, + NM_ITEM, MSG_MainEditClone_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainEditCloneWidth_MSUB, NULL, NULL, NULL, FN_MainEditCloneWidth_Selected, + NM_SUB, MSG_MainEditCloneHeight_MSUB, NULL, NULL, NULL, FN_MainEditCloneHeight_Selected, + NM_SUB, MSG_MainEditCloneBoth_MSUB, NULL, NULL, NULL, FN_MainEditCloneBoth_Selected, + NM_ITEM, MSG_MainEditSpread_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainEditSpreadHoriz_MSUB, NULL, NULL, NULL, FN_MainEditSpreadHoriz_Selected, + NM_SUB, MSG_MainEditSpreadVertical_MSUB, NULL, NULL, NULL, FN_MainEditSpreadVertical_Selected, + NM_TITLE, MSG_MainObject_MTITLE, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainObjWindow_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjWindowNew_MSUB, NULL, NULL, NULL, FN_MainObjWindowNew_Selected, + NM_SUB, MSG_MainObjWindowClose_MSUB, NULL, NULL, NULL, FN_MainObjWindowClose_Selected, + NM_SUB, MSG_MainObjWindowDelete_MSUB, NULL, NULL, NULL, FN_MainObjWindowDelete_Selected, + NM_SUB, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjWindowRefresh_MSUB, NULL, NULL, NULL, FN_MainObjWindowRefresh_Selected, + NM_ITEM, MSG_MainObjMenu_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjMenuNew_MSUB, NULL, NULL, NULL, FN_MainObjMenuNew_Selected, + NM_SUB, MSG_MainObjMenuClose_MSUB, NULL, NULL, NULL, FN_MainObjMenuClose_Selected, + NM_SUB, MSG_MainObjMenuDelete_MSUB, NULL, NULL, NULL, FN_MainObjMenuDelete_Selected, + NM_ITEM, MSG_MainObjImage_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjImageNew_MSUB, NULL, NULL, NULL, FN_MainObjImageNew_Selected, + NM_SUB, MSG_MainObjImageClose_MSUB, NULL, NULL, NULL, FN_MainObjImageClose_Selected, + NM_SUB, MSG_MainObjImageDelete_MSUB, NULL, NULL, NULL, FN_MainObjImageDelete_Selected, + NM_ITEM, MSG_MainObjStrings_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjStringsOpen_MSUB, NULL, NULL, NULL, FN_MainObjStringsOpen_Selected, + NM_SUB, MSG_MainObjStringsClose_MSUB, NULL, NULL, NULL, FN_MainObjStringsClose_Selected, + NM_ITEM, MSG_MainObjScreen_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjScreenOpen_MSUB, NULL, NULL, NULL, FN_MainObjScreenOpen_Selected, + NM_SUB, MSG_MainObjScreenClose_MSUB, NULL, NULL, NULL, FN_MainObjScreenClose_Selected, + NM_ITEM, MSG_MainObjVersion_MITEM, NULL, NULL, NULL, NULL, + NM_SUB, MSG_MainObjVersionOpen_MSUB, NULL, NULL, NULL, FN_MainObjVersionOpen_Selected, + NM_SUB, MSG_MainObjVersionClose_MSUB, NULL, NULL, NULL, FN_MainObjVersionClose_Selected, + NM_TITLE, MSG_MainWindow_MTITLE, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainWindowProperties_MITEM, NULL, CHECKIT, NULL, FN_MainWindowProperties_Selected, + NM_ITEM, MSG_MainWindowObjects_MITEM, NULL, CHECKIT, NULL, FN_MainWindowObjects_Selected, + NM_ITEM, MSG_MainWindowStatus_MITEM, NULL, CHECKIT, NULL, FN_MainWindowStatus_Selected, + NM_ITEM, NM_BARLABEL, NULL, NULL, NULL, NULL, + NM_ITEM, MSG_MainWindowHideAll_MITEM, NULL, NULL, NULL, FN_MainWindowHideAll_Selected, + NM_END, NULL, NULL, NULL, NULL, NULL +}; + +/* PGBO_General Window structures */ +struct Gadget *PGBO_GeneralGList=NULL; +struct Gadget *PGBO_GeneralGadgets[CNT_PGBO_General]; + +/* About Window structures */ +struct Window *AboutWnd=NULL; +struct Gadget *AboutGList=NULL; +struct Gadget *AboutGadgets[CNT_About]; +struct IntuiMessage AboutMsg; + +/* PG_BUTT_Flags Window structures */ +struct Gadget *PG_BUTT_FlagsGList=NULL; +struct Gadget *PG_BUTT_FlagsGadgets[CNT_PG_BUTT_Flags]; + +/* PG_CBOX_Flags Window structures */ +struct Gadget *PG_CBOX_FlagsGList=NULL; +struct Gadget *PG_CBOX_FlagsGadgets[CNT_PG_CBOX_Flags]; + +/* PG_CWHL_Flags Window structures */ +struct Gadget *PG_CWHL_FlagsGList=NULL; +struct Gadget *PG_CWHL_FlagsGadgets[CNT_PG_CWHL_Flags]; + +/* PG_CYCE_Flags Window structures */ +struct Gadget *PG_CYCE_FlagsGList=NULL; +struct Gadget *PG_CYCE_FlagsGadgets[CNT_PG_CYCE_Flags]; + +/* PG_Lists Window structures */ +struct Gadget *PG_ListsGList=NULL; +struct Gadget *PG_ListsGadgets[CNT_PG_Lists]; + +/* PG_DTYP_Flags Window structures */ +struct Gadget *PG_DTYP_FlagsGList=NULL; +struct Gadget *PG_DTYP_FlagsGadgets[CNT_PG_DTYP_Flags]; + +/* PG_GRSL_Flags Window structures */ +struct Gadget *PG_GRSL_FlagsGList=NULL; +struct Gadget *PG_GRSL_FlagsGadgets[CNT_PG_GRSL_Flags]; + +/* PG_INTR_Flags Window structures */ +struct Gadget *PG_INTR_FlagsGList=NULL; +struct Gadget *PG_INTR_FlagsGadgets[CNT_PG_INTR_Flags]; + +/* PG_INTR_Var Window structures */ +struct Gadget *PG_INTR_VarGList=NULL; +struct Gadget *PG_INTR_VarGadgets[CNT_PG_INTR_Var]; + +/* PG_LVIE_Flags Window structures */ +struct Gadget *PG_LVIE_FlagsGList=NULL; +struct Gadget *PG_LVIE_FlagsGadgets[CNT_PG_LVIE_Flags]; + +/* PG_MX_Flags Window structures */ +struct Gadget *PG_MX_FlagsGList=NULL; +struct Gadget *PG_MX_FlagsGadgets[CNT_PG_MX_Flags]; + +/* PG_NUMB_Flags Window structures */ +struct Gadget *PG_NUMB_FlagsGList=NULL; +struct Gadget *PG_NUMB_FlagsGadgets[CNT_PG_NUMB_Flags]; + +/* PGGT_General Window structures */ +struct Gadget *PGGT_GeneralGList=NULL; +struct Gadget *PGGT_GeneralGadgets[CNT_PGGT_General]; + +/* PG_PAGE_Flags Window structures */ +struct Gadget *PG_PAGE_FlagsGList=NULL; +struct Gadget *PG_PAGE_FlagsGadgets[CNT_PG_PAGE_Flags]; + +/* PG_PAGE_Lists Window structures */ +struct Gadget *PG_PAGE_ListsGList=NULL; +struct Gadget *PG_PAGE_ListsGadgets[CNT_PG_PAGE_Lists]; + +/* PG_PALT_Flags Window structures */ +struct Gadget *PG_PALT_FlagsGList=NULL; +struct Gadget *PG_PALT_FlagsGadgets[CNT_PG_PALT_Flags]; + +/* PG_PUPM_Flags Window structures */ +struct Gadget *PG_PUPM_FlagsGList=NULL; +struct Gadget *PG_PUPM_FlagsGadgets[CNT_PG_PUPM_Flags]; + +/* PG_PRGR_Flags Window structures */ +struct Gadget *PG_PRGR_FlagsGList=NULL; +struct Gadget *PG_PRGR_FlagsGadgets[CNT_PG_PRGR_Flags]; + +/* PG_SCRL_Flags Window structures */ +struct Gadget *PG_SCRL_FlagsGList=NULL; +struct Gadget *PG_SCRL_FlagsGadgets[CNT_PG_SCRL_Flags]; + +/* PG_SCRL_Var Window structures */ +struct Gadget *PG_SCRL_VarGList=NULL; +struct Gadget *PG_SCRL_VarGadgets[CNT_PG_SCRL_Var]; + +/* PG_SLIR_Flags Window structures */ +struct Gadget *PG_SLIR_FlagsGList=NULL; +struct Gadget *PG_SLIR_FlagsGadgets[CNT_PG_SLIR_Flags]; + +/* PG_SLIR_Var Window structures */ +struct Gadget *PG_SLIR_VarGList=NULL; +struct Gadget *PG_SLIR_VarGadgets[CNT_PG_SLIR_Var]; + +/* PG_STRG_Flags Window structures */ +struct Gadget *PG_STRG_FlagsGList=NULL; +struct Gadget *PG_STRG_FlagsGadgets[CNT_PG_STRG_Flags]; + +/* PG_STRG_Var Window structures */ +struct Gadget *PG_STRG_VarGList=NULL; +struct Gadget *PG_STRG_VarGadgets[CNT_PG_STRG_Var]; + +/* PG_TDEK_Flags Window structures */ +struct Gadget *PG_TDEK_FlagsGList=NULL; +struct Gadget *PG_TDEK_FlagsGadgets[CNT_PG_TDEK_Flags]; + +/* PG_TEXT_Flags Window structures */ +struct Gadget *PG_TEXT_FlagsGList=NULL; +struct Gadget *PG_TEXT_FlagsGadgets[CNT_PG_TEXT_Flags]; + +/* PG_TFLD_Flags Window structures */ +struct Gadget *PG_TFLD_FlagsGList=NULL; +struct Gadget *PG_TFLD_FlagsGadgets[CNT_PG_TFLD_Flags]; + +/* PG_TFLD_Flags2 Window structures */ +struct Gadget *PG_TFLD_Flags2GList=NULL; +struct Gadget *PG_TFLD_Flags2Gadgets[CNT_PG_TFLD_Flags2]; + +/* PG_TFLD_Var Window structures */ +struct Gadget *PG_TFLD_VarGList=NULL; +struct Gadget *PG_TFLD_VarGadgets[CNT_PG_TFLD_Var]; + +/* Properties Window structures */ +struct Window *PropertiesWnd=NULL; +struct Gadget *PropertiesGList=NULL; +struct Gadget *PropertiesGadgets[CNT_Properties]; +struct IntuiMessage PropertiesMsg; + +/* Edit Window structures */ +struct Window *EditWnd=NULL; +APTR EditWApp; +struct IntuiMessage EditMsg; + +/* Preferences Window structures */ +struct Window *PreferencesWnd=NULL; +struct Gadget *PreferencesGList=NULL; +struct Gadget *PreferencesGadgets[CNT_Preferences]; +struct IntuiMessage PreferencesMsg; + +/* Grid Window structures */ +struct Window *GridWnd=NULL; +struct Gadget *GridGList=NULL; +struct Gadget *GridGadgets[CNT_Grid]; +struct IntuiMessage GridMsg; + +/* PGWN_General Window structures */ +struct Gadget *PGWN_GeneralGList=NULL; +struct Gadget *PGWN_GeneralGadgets[CNT_PGWN_General]; + +/* PGWN_Flags1 Window structures */ +struct Gadget *PGWN_Flags1GList=NULL; +struct Gadget *PGWN_Flags1Gadgets[CNT_PGWN_Flags1]; + +/* PGWN_Style Window structures */ +struct Gadget *PGWN_StyleGList=NULL; +struct Gadget *PGWN_StyleGadgets[CNT_PGWN_Style]; + +/* PGWN_Flags2 Window structures */ +struct Gadget *PGWN_Flags2GList=NULL; +struct Gadget *PGWN_Flags2Gadgets[CNT_PGWN_Flags2]; + +/* PGWN_Flags3 Window structures */ +struct Gadget *PGWN_Flags3GList=NULL; +struct Gadget *PGWN_Flags3Gadgets[CNT_PGWN_Flags3]; + +/* WN_IDCMPFlags Window structures */ +struct Window *WN_IDCMPFlagsWnd=NULL; +struct Gadget *WN_IDCMPFlagsGList=NULL; +struct Gadget *WN_IDCMPFlagsGadgets[CNT_WN_IDCMPFlags]; +struct IntuiMessage WN_IDCMPFlagsMsg; + +/* TB_Main Window structures */ +struct Window *TB_MainWnd=NULL; +struct Gadget *TB_MainGList=NULL; +struct Gadget *TB_MainGadgets[CNT_TB_Main]; +struct IntuiMessage TB_MainMsg; + +/* TB_Window Window structures */ +struct Window *TB_WindowWnd=NULL; +struct Gadget *TB_WindowGList=NULL; +struct Gadget *TB_WindowGadgets[CNT_TB_Window]; +struct IntuiMessage TB_WindowMsg; + +/* PGMN_General Window structures */ +struct Gadget *PGMN_GeneralGList=NULL; +struct Gadget *PGMN_GeneralGadgets[CNT_PGMN_General]; + +/* Working Window structures */ +struct Window *WorkingWnd=NULL; +struct Gadget *WorkingGList=NULL; +struct Gadget *WorkingGadgets[CNT_Working]; +struct IntuiMessage WorkingMsg; + +/* PGFR_General Window structures */ +struct Gadget *PGFR_GeneralGList=NULL; +struct Gadget *PGFR_GeneralGadgets[CNT_PGFR_General]; + +/* PGEMPTY Window structures */ + +/* EditMenu Window structures */ +struct Window *EditMenuWnd=NULL; +APTR EditMenuWApp; +struct IntuiMessage EditMenuMsg; + +/* EditImage Window structures */ +struct Window *EditImageWnd=NULL; +APTR EditImageWApp; +struct IntuiMessage EditImageMsg; + +/* List Window structures */ +struct Window *ListWnd=NULL; +struct Gadget *ListGList=NULL; +struct Gadget *ListGadgets[CNT_List]; +struct IntuiMessage ListMsg; + +/* PGMN_Item Window structures */ +struct Gadget *PGMN_ItemGList=NULL; +struct Gadget *PGMN_ItemGadgets[CNT_PGMN_Item]; + +/* PGPI_General Window structures */ +struct Gadget *PGPI_GeneralGList=NULL; +struct Gadget *PGPI_GeneralGadgets[CNT_PGPI_General]; + +/* TB_Pointer Window structures */ +struct Window *TB_PointerWnd=NULL; +struct Gadget *TB_PointerGList=NULL; +struct Gadget *TB_PointerGadgets[CNT_TB_Pointer]; +struct IntuiMessage TB_PointerMsg; + +/* Screen Window structures */ +struct Window *ScreenWnd=NULL; +struct Gadget *ScreenGList=NULL; +struct Gadget *ScreenGadgets[CNT_Screen]; +struct IntuiMessage ScreenMsg; + +/* PGSCR_General Window structures */ +struct Gadget *PGSCR_GeneralGList=NULL; +struct Gadget *PGSCR_GeneralGadgets[CNT_PGSCR_General]; + +/* PGSCR_Flags Window structures */ +struct Gadget *PGSCR_FlagsGList=NULL; +struct Gadget *PGSCR_FlagsGadgets[CNT_PGSCR_Flags]; + +/* EditString Window structures */ +struct Window *EditStringWnd=NULL; +struct Gadget *EditStringGList=NULL; +struct Gadget *EditStringGadgets[CNT_EditString]; +struct IntuiMessage EditStringMsg; + +/* PGSTR_General Window structures */ +struct Gadget *PGSTR_GeneralGList=NULL; +struct Gadget *PGSTR_GeneralGadgets[CNT_PGSTR_General]; + +/* EditVersion Window structures */ +struct Window *EditVersionWnd=NULL; +struct Gadget *EditVersionGList=NULL; +struct Gadget *EditVersionGadgets[CNT_EditVersion]; +struct IntuiMessage EditVersionMsg; + +/* PG_TRLV_Flags Window structures */ +struct Gadget *PG_TRLV_FlagsGList=NULL; +struct Gadget *PG_TRLV_FlagsGadgets[CNT_PG_TRLV_Flags]; + +/* Object Window structures */ +struct Window *ObjectWnd=NULL; +struct Gadget *ObjectGList=NULL; +struct Gadget *ObjectGadgets[CNT_Object]; +struct IntuiMessage ObjectMsg; + +/* EditPalette Window structures */ +struct Window *EditPaletteWnd=NULL; +struct Gadget *EditPaletteGList=NULL; +struct Gadget *EditPaletteGadgets[CNT_EditPalette]; +struct IntuiMessage EditPaletteMsg; + +/* PGWN_TabOrder Window structures */ +struct Gadget *PGWN_TabOrderGList=NULL; +struct Gadget *PGWN_TabOrderGadgets[CNT_PGWN_TabOrder]; + +/* Status Window structures */ +struct Window *StatusWnd=NULL; +struct Gadget *StatusGList=NULL; +struct Gadget *StatusGadgets[CNT_Status]; +struct IntuiMessage StatusMsg; + + +/* About Window tags */ +ULONG AboutWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 498, WA_Height, 231, WA_ToolDragBar, TOOL_HORIZ, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETUP|BUTTONIDCMP, WA_Flags, WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, TAG_DONE +}; + +/* Properties Window tags */ +ULONG PropertiesWTags[]= +{ + WA_Left, 0, WA_Top, 142, WA_Width, 330, WA_Height, 158, WA_Title, (ULONG) MSG_Properties_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_INTUITICKS|IDCMP_INACTIVEWINDOW|IDCMP_CHANGEWINDOW|BUTTONIDCMP|CHECKBOXIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Edit Window tags */ +ULONG EditWTags[]= +{ + WA_Left, 36, WA_Top, 53, WA_Width, 362, WA_Height, 155, WA_Title, (ULONG) MSG_Edit_WND, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* Preferences Window tags */ +ULONG PreferencesWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 455, WA_Height, 195, WA_Title, (ULONG) MSG_Preferences_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP|LISTVIEWIDCMP|TEXTIDCMP, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Grid Window tags */ +ULONG GridWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 209, WA_Height, 137, WA_Title, (ULONG) MSG_Grid_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* WN_IDCMPFlags Window tags */ +ULONG WN_IDCMPFlagsWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 457, WA_Height, 237, WA_Title, (ULONG) MSG_WN_IDCMPFlags_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|BUTTONIDCMP|CHECKBOXIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* TB_Main Window tags */ +ULONG TB_MainWTags[]= +{ + WA_Left, 0, WA_Top, 16, WA_Width, 617, WA_Height, 26, WA_ToolDragBar, TOOL_VERT, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|BUTTONIDCMP, WA_Flags, WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, TAG_DONE +}; + +/* TB_Window Window tags */ +ULONG TB_WindowWTags[]= +{ + WA_Left, 0, WA_Top, 44, WA_Width, 74, WA_Height, 219, WA_ToolDragBar, TOOL_HORIZ, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|BUTTONIDCMP, WA_Flags, WFLG_NEWLOOKMENUS, TAG_DONE +}; + +/* Working Window tags */ +ULONG WorkingWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 257, WA_Height, 59, WA_Title, (ULONG) MSG_Working_WND, WA_IDCMP, IDCMP_CLOSEWINDOW, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* EditMenu Window tags */ +ULONG EditMenuWTags[]= +{ + WA_Left, 36, WA_Top, 53, WA_Width, 362, WA_Height, 155, WA_Title, (ULONG) MSG_EditMenu_WND, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_SIZEBBOTTOM|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* EditImage Window tags */ +ULONG EditImageWTags[]= +{ + WA_Left, 165, WA_Top, 89, WA_Width, 252, WA_Height, 215, WA_Title, (ULONG) MSG_EditImage_WND, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_SIZEBRIGHT|WFLG_SIZEBBOTTOM|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* List Window tags */ +ULONG ListWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 161, WA_Height, 239, WA_Title, (ULONG) MSG_List_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETUP|LISTVIEWIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_SIZEBBOTTOM|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* TB_Pointer Window tags */ +ULONG TB_PointerWTags[]= +{ + WA_Left, 0, WA_Top, 16, WA_Width, 29, WA_Height, 200, WA_ToolDragBar, TOOL_HORIZ, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|PALETTEIDCMP, WA_Flags, WFLG_NEWLOOKMENUS, TAG_DONE +}; + +/* Screen Window tags */ +ULONG ScreenWTags[]= +{ + WA_Left, 143, WA_Top, 84, WA_Width, 281, WA_Height, 274, WA_Title, (ULONG) MSG_Screen_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* EditString Window tags */ +ULONG EditStringWTags[]= +{ + WA_Left, 0, WA_Top, 40, WA_Width, 375, WA_Height, 251, WA_Title, (ULONG) MSG_EditString_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW|IDCMP_IDCMPUPDATE|IDCMP_CHANGEWINDOW|BUTTONIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_SIZEBRIGHT|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* EditVersion Window tags */ +ULONG EditVersionWTags[]= +{ + WA_CenterX, TRUE, WA_CenterY, TRUE, WA_Width, 281, WA_Height, 123, WA_Title, (ULONG) MSG_EditVersion_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW|INTEGERIDCMP|STRINGIDCMP|TEXTIDCMP, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Object Window tags */ +ULONG ObjectWTags[]= +{ + WA_Left, 517, WA_Top, 16, WA_Width, 207, WA_Height, 303, WA_Title, (ULONG) MSG_Object_WND, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_NEWSIZE|IDCMP_MENUPICK|IDCMP_RAWKEY|IDCMP_IDCMPUPDATE|IDCMP_CHANGEWINDOW, WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIZEGADGET|WFLG_SIZEBRIGHT|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, WA_MaxWidth,-1, WA_MinWidth,100, WA_MaxHeight,-1, WA_MinHeight, 20, TAG_DONE +}; + +/* EditPalette Window tags */ +ULONG EditPaletteWTags[]= +{ + WA_Left, 210, WA_Top, 95, WA_Width, 354, WA_Height, 247, WA_Title, (ULONG) MSG_EditPalette_WND, WA_IDCMP, IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_IDCMPUPDATE|BUTTONIDCMP|PALETTEIDCMP|SLIDERIDCMP, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* Status Window tags */ +ULONG StatusWTags[]= +{ + WA_Left, 0, WA_Top, 42, WA_Width, 617, WA_Height, 25, WA_ToolDragBar, TOOL_VERT, WA_IDCMP, IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|TEXTIDCMP, WA_Flags, WFLG_ACTIVATE|WFLG_NEWLOOKMENUS, WA_FontAdaptive, TRUE, TAG_DONE +}; + +/* PGBO_General Gadget structures */ +UBYTE *LABELS_PGBO_REL_X[]= +{ + (UBYTE *)MSG_PGBO_REL_X_L0_GAD, + (UBYTE *)MSG_PGBO_REL_X_L1_GAD, + NULL +}; +UBYTE *LABELS_PGBO_REL_Y[]= +{ + (UBYTE *)MSG_PGBO_REL_Y_L0_GAD, + (UBYTE *)MSG_PGBO_REL_Y_L1_GAD, + NULL +}; +UBYTE *LABELS_PGBO_REL_W[]= +{ + (UBYTE *)MSG_PGBO_REL_W_L0_GAD, + (UBYTE *)MSG_PGBO_REL_W_L1_GAD, + NULL +}; +UBYTE *LABELS_PGBO_REL_H[]= +{ + (UBYTE *)MSG_PGBO_REL_H_L0_GAD, + (UBYTE *)MSG_PGBO_REL_H_L1_GAD, + NULL +}; + +/* About Gadget structures */ + +/* PG_BUTT_Flags Gadget structures */ +UBYTE *LABELS_PG_BUTT_FLAGS_TITLETYPE[]= +{ + (UBYTE *)MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD, + (UBYTE *)MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD, + (UBYTE *)MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD, + NULL +}; + +/* PG_CBOX_Flags Gadget structures */ +UBYTE *LABELS_PG_CBOX_FLAGS_SCALED[]= +{ + (UBYTE *)MSG_PG_CBOX_FLAGS_SCALED_L0_GAD, + (UBYTE *)MSG_PG_CBOX_FLAGS_SCALED_L1_GAD, + (UBYTE *)MSG_PG_CBOX_FLAGS_SCALED_L2_GAD, + NULL +}; + +/* PG_CWHL_Flags Gadget structures */ + +/* PG_CYCE_Flags Gadget structures */ + +/* PG_Lists Gadget structures */ + +/* PG_DTYP_Flags Gadget structures */ + +/* PG_GRSL_Flags Gadget structures */ +UBYTE *LABELS_PG_GRSL_FLAGS_FREEDOM[]= +{ + (UBYTE *)MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD, + (UBYTE *)MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD, + NULL +}; + +/* PG_INTR_Flags Gadget structures */ + +/* PG_INTR_Var Gadget structures */ +UBYTE *LABELS_PG_INTR_VAR_JUSTIFICATION[]= +{ + (UBYTE *)MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD, + (UBYTE *)MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD, + (UBYTE *)MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD, + NULL +}; + +/* PG_LVIE_Flags Gadget structures */ +UBYTE *LABELS_PG_LVIE_FLAGS_ARROWS_SEL[]= +{ + (UBYTE *)MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD, + (UBYTE *)MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD, + (UBYTE *)MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD, + NULL +}; + +/* PG_MX_Flags Gadget structures */ +UBYTE *LABELS_PG_MX_FLAGS_SCALED[]= +{ + (UBYTE *)MSG_PG_MX_FLAGS_SCALED_L0_GAD, + (UBYTE *)MSG_PG_MX_FLAGS_SCALED_L1_GAD, + (UBYTE *)MSG_PG_MX_FLAGS_SCALED_L2_GAD, + NULL +}; +UBYTE *LABELS_PG_MX_FLAGS_PLACEMENT[]= +{ + (UBYTE *)MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD, + (UBYTE *)MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD, + (UBYTE *)MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD, + (UBYTE *)MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD, + NULL +}; + +/* PG_NUMB_Flags Gadget structures */ +UBYTE *LABELS_PG_NUMB_FLAGS_JUSTIFICATION[]= +{ + (UBYTE *)MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD, + (UBYTE *)MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD, + (UBYTE *)MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD, + NULL +}; + +/* PGGT_General Gadget structures */ +UBYTE *LABELS_PGGT_PLACEMENT[]= +{ + (UBYTE *)MSG_PGGT_PLACEMENT_L0_GAD, + (UBYTE *)MSG_PGGT_PLACEMENT_L1_GAD, + (UBYTE *)MSG_PGGT_PLACEMENT_L2_GAD, + (UBYTE *)MSG_PGGT_PLACEMENT_L3_GAD, + (UBYTE *)MSG_PGGT_PLACEMENT_L4_GAD, + NULL +}; +UBYTE *LABELS_PGGT_REL_X[]= +{ + (UBYTE *)MSG_PGGT_REL_X_L0_GAD, + (UBYTE *)MSG_PGGT_REL_X_L1_GAD, + NULL +}; +UBYTE *LABELS_PGGT_REL_Y[]= +{ + (UBYTE *)MSG_PGGT_REL_Y_L0_GAD, + (UBYTE *)MSG_PGGT_REL_Y_L1_GAD, + NULL +}; +UBYTE *LABELS_PGGT_REL_W[]= +{ + (UBYTE *)MSG_PGGT_REL_W_L0_GAD, + (UBYTE *)MSG_PGGT_REL_W_L1_GAD, + NULL +}; +UBYTE *LABELS_PGGT_REL_H[]= +{ + (UBYTE *)MSG_PGGT_REL_H_L0_GAD, + (UBYTE *)MSG_PGGT_REL_H_L1_GAD, + NULL +}; + +/* PG_PAGE_Flags Gadget structures */ +UBYTE *LABELS_PG_PAGE_FLAGS_LAYOUT[]= +{ + (UBYTE *)MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD, + (UBYTE *)MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD, + (UBYTE *)MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD, + NULL +}; +UBYTE *LABELS_PG_PAGE_FLAGS_STYLE[]= +{ + (UBYTE *)MSG_PG_PAGE_FLAGS_STYLE_L0_GAD, + (UBYTE *)MSG_PG_PAGE_FLAGS_STYLE_L1_GAD, + (UBYTE *)MSG_PG_PAGE_FLAGS_STYLE_L2_GAD, + NULL +}; + +/* PG_PAGE_Lists Gadget structures */ + +/* PG_PALT_Flags Gadget structures */ +UBYTE *LABELS_PG_PALT_FLAGS_SHOWSELECTED[]= +{ + (UBYTE *)MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD, + (UBYTE *)MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD, + (UBYTE *)MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD, + NULL +}; +UBYTE *LABELS_PG_PALT_FLAGS_TYPE[]= +{ + (UBYTE *)MSG_PG_PALT_FLAGS_TYPE_L0_GAD, + (UBYTE *)MSG_PG_PALT_FLAGS_TYPE_L1_GAD, + (UBYTE *)MSG_PG_PALT_FLAGS_TYPE_L2_GAD, + NULL +}; + +/* PG_PUPM_Flags Gadget structures */ + +/* PG_PRGR_Flags Gadget structures */ +UBYTE *LABELS_PG_PRGR_FLAGS_PLACEMENT[]= +{ + (UBYTE *)MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD, + (UBYTE *)MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD, + (UBYTE *)MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD, + (UBYTE *)MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD, + (UBYTE *)MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD, + NULL +}; + +/* PG_SCRL_Flags Gadget structures */ + +/* PG_SCRL_Var Gadget structures */ +UBYTE *LABELS_PG_SCRL_VAR_FREEDOM[]= +{ + (UBYTE *)MSG_PG_SCRL_VAR_FREEDOM_L0_GAD, + (UBYTE *)MSG_PG_SCRL_VAR_FREEDOM_L1_GAD, + NULL +}; +UBYTE *LABELS_PG_SCRL_VAR_ARROW_TYPE[]= +{ + (UBYTE *)MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD, + (UBYTE *)MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD, + (UBYTE *)MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD, + NULL +}; + +/* PG_SLIR_Flags Gadget structures */ + +/* PG_SLIR_Var Gadget structures */ +UBYTE *LABELS_PG_SLIR_VAR_JUSTIFICATION[]= +{ + (UBYTE *)MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD, + NULL +}; +UBYTE *LABELS_PG_SLIR_VAR_FREEDOM[]= +{ + (UBYTE *)MSG_PG_SLIR_VAR_FREEDOM_L0_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_FREEDOM_L1_GAD, + NULL +}; +UBYTE *LABELS_PG_SLIR_VAR_LEVELPLACE[]= +{ + (UBYTE *)MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD, + (UBYTE *)MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD, + NULL +}; + +/* PG_STRG_Flags Gadget structures */ + +/* PG_STRG_Var Gadget structures */ +UBYTE *LABELS_PG_STRG_VAR_JUSTIFICATION[]= +{ + (UBYTE *)MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD, + (UBYTE *)MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD, + (UBYTE *)MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD, + NULL +}; + +/* PG_TDEK_Flags Gadget structures */ + +/* PG_TEXT_Flags Gadget structures */ +UBYTE *LABELS_PG_TEXT_FLAGS_JUSTIFICATION[]= +{ + (UBYTE *)MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD, + (UBYTE *)MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD, + (UBYTE *)MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD, + NULL +}; + +/* PG_TFLD_Flags Gadget structures */ + +/* PG_TFLD_Flags2 Gadget structures */ +UBYTE *LABELS_PG_TFLD_FLAGS_BORDER[]= +{ + (UBYTE *)MSG_PG_TFLD_FLAGS_BORDER_L0_GAD, + (UBYTE *)MSG_PG_TFLD_FLAGS_BORDER_L1_GAD, + (UBYTE *)MSG_PG_TFLD_FLAGS_BORDER_L2_GAD, + NULL +}; +UBYTE *LABELS_PG_TFLD_FLAGS_ALIGN[]= +{ + (UBYTE *)MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD, + (UBYTE *)MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD, + (UBYTE *)MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD, + NULL +}; + +/* PG_TFLD_Var Gadget structures */ + +/* Properties Gadget structures */ +struct BevelBox BBOX_PROPERTIES_PAGES= +{ + NULL, 3, 23, 312, 112, BBFLG_BACKFILL|BBFLG_FRAMEBUTTON, 0, 0, 0, 0 +}; + +struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Style[]= +{ + NULL, 16, 73, 288, 1, BBFLG_FRAMEBUTTON|BBFLG_RECESSED, 0, 0, 0, 0 +}; + +struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Flags3[]= +{ + NULL, 160, 26, 1, 56, BBFLG_FRAMEBUTTON|BBFLG_RECESSED, 0, 0, 0, 0 +}; + +struct Page PAGES_PROPERTIES_PAGES[]= +{ + &PAGES_PROPERTIES_PAGES[1], (STRPTR) MSG_PROPERTIES_PAGES_L0_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[2], (STRPTR) MSG_PROPERTIES_PAGES_L1_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[3], (STRPTR) MSG_PROPERTIES_PAGES_L2_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[4], (STRPTR) MSG_PROPERTIES_PAGES_L3_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[5], (STRPTR) MSG_PROPERTIES_PAGES_L4_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[6], (STRPTR) MSG_PROPERTIES_PAGES_L5_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[7], (STRPTR) MSG_PROPERTIES_PAGES_L6_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[8], (STRPTR) MSG_PROPERTIES_PAGES_L7_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[9], (STRPTR) MSG_PROPERTIES_PAGES_L8_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[10], (STRPTR) MSG_PROPERTIES_PAGES_L9_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[11], (STRPTR) MSG_PROPERTIES_PAGES_L10_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[12], (STRPTR) MSG_PROPERTIES_PAGES_L11_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[13], (STRPTR) MSG_PROPERTIES_PAGES_L12_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[14], (STRPTR) MSG_PROPERTIES_PAGES_L13_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[15], (STRPTR) MSG_PROPERTIES_PAGES_L14_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[16], (STRPTR) MSG_PROPERTIES_PAGES_L15_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[17], (STRPTR) MSG_PROPERTIES_PAGES_L16_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[18], (STRPTR) MSG_PROPERTIES_PAGES_L17_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[19], (STRPTR) MSG_PROPERTIES_PAGES_L18_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[20], (STRPTR) MSG_PROPERTIES_PAGES_L19_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[21], (STRPTR) MSG_PROPERTIES_PAGES_L20_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[22], (STRPTR) MSG_PROPERTIES_PAGES_L21_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[23], (STRPTR) MSG_PROPERTIES_PAGES_L22_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[24], (STRPTR) MSG_PROPERTIES_PAGES_L23_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[25], (STRPTR) MSG_PROPERTIES_PAGES_L24_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[26], (STRPTR) MSG_PROPERTIES_PAGES_L25_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[27], (STRPTR) MSG_PROPERTIES_PAGES_L26_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[28], (STRPTR) MSG_PROPERTIES_PAGES_L27_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[29], (STRPTR) MSG_PROPERTIES_PAGES_L28_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[30], (STRPTR) MSG_PROPERTIES_PAGES_L29_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[31], (STRPTR) MSG_PROPERTIES_PAGES_L30_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[32], (STRPTR) MSG_PROPERTIES_PAGES_L31_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[33], (STRPTR) MSG_PROPERTIES_PAGES_L32_GAD, FS_NORMAL, NULL, NULL, BBOX_PROPERTIES_PAGES_PGWN_Style, NULL, NULL, + &PAGES_PROPERTIES_PAGES[34], (STRPTR) MSG_PROPERTIES_PAGES_L33_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[35], (STRPTR) MSG_PROPERTIES_PAGES_L34_GAD, FS_NORMAL, NULL, NULL, BBOX_PROPERTIES_PAGES_PGWN_Flags3, NULL, NULL, + &PAGES_PROPERTIES_PAGES[36], (STRPTR) MSG_PROPERTIES_PAGES_L35_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[37], (STRPTR) MSG_PROPERTIES_PAGES_L36_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[38], (STRPTR) MSG_PROPERTIES_PAGES_L37_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[39], (STRPTR) MSG_PROPERTIES_PAGES_L38_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[40], (STRPTR) MSG_PROPERTIES_PAGES_L39_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[41], (STRPTR) MSG_PROPERTIES_PAGES_L40_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PAGES[42], (STRPTR) MSG_PROPERTIES_PAGES_L41_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, (STRPTR) MSG_PROPERTIES_PAGES_L42_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL +}; + + + +/* Preferences Gadget structures */ + +/* Grid Gadget structures */ + +/* PGWN_General Gadget structures */ +UBYTE *LABELS_PGWN_REL_H[]= +{ + (UBYTE *)MSG_PGWN_REL_H_L0_GAD, + (UBYTE *)MSG_PGWN_REL_H_L1_GAD, + NULL +}; +UBYTE *LABELS_PGWN_REL_W[]= +{ + (UBYTE *)MSG_PGWN_REL_W_L0_GAD, + (UBYTE *)MSG_PGWN_REL_W_L1_GAD, + NULL +}; +UBYTE *LABELS_PGWN_REL_Y[]= +{ + (UBYTE *)MSG_PGWN_REL_Y_L0_GAD, + (UBYTE *)MSG_PGWN_REL_Y_L1_GAD, + (UBYTE *)MSG_PGWN_REL_Y_L2_GAD, + NULL +}; +UBYTE *LABELS_PGWN_REL_X[]= +{ + (UBYTE *)MSG_PGWN_REL_X_L0_GAD, + (UBYTE *)MSG_PGWN_REL_X_L1_GAD, + (UBYTE *)MSG_PGWN_REL_X_L2_GAD, + NULL +}; + +/* PGWN_Flags1 Gadget structures */ + +/* PGWN_Style Gadget structures */ +UBYTE *LABELS_PGWN_DRAGGADGET[]= +{ + (UBYTE *)MSG_PGWN_DRAGGADGET_L0_GAD, + (UBYTE *)MSG_PGWN_DRAGGADGET_L1_GAD, + (UBYTE *)MSG_PGWN_DRAGGADGET_L2_GAD, + (UBYTE *)MSG_PGWN_DRAGGADGET_L3_GAD, + NULL +}; + +/* PGWN_Flags2 Gadget structures */ +UBYTE *LABELS_PGWN_REFRESH[]= +{ + (UBYTE *)MSG_PGWN_REFRESH_L0_GAD, + (UBYTE *)MSG_PGWN_REFRESH_L1_GAD, + (UBYTE *)MSG_PGWN_REFRESH_L2_GAD, + NULL +}; + +/* PGWN_Flags3 Gadget structures */ + +/* WN_IDCMPFlags Gadget structures */ + +/* TB_Main Gadget structures */ + +/* TB_Window Gadget structures */ + +/* PGMN_General Gadget structures */ + +/* Working Gadget structures */ + +/* PGFR_General Gadget structures */ +UBYTE *LABELS_PGFR_FRAME[]= +{ + (UBYTE *)MSG_PGFR_FRAME_L0_GAD, + (UBYTE *)MSG_PGFR_FRAME_L1_GAD, + (UBYTE *)MSG_PGFR_FRAME_L2_GAD, + (UBYTE *)MSG_PGFR_FRAME_L3_GAD, + (UBYTE *)MSG_PGFR_FRAME_L4_GAD, + NULL +}; + + + + +/* List Gadget structures */ + +/* PGMN_Item Gadget structures */ + +/* PGPI_General Gadget structures */ +UBYTE *LABELS_PGPI_TYPE[]= +{ + (UBYTE *)MSG_PGPI_TYPE_L0_GAD, + (UBYTE *)MSG_PGPI_TYPE_L1_GAD, + (UBYTE *)MSG_PGPI_TYPE_L2_GAD, + NULL +}; + +/* TB_Pointer Gadget structures */ + +/* Screen Gadget structures */ +struct BevelBox BBOX_SCREEN_PAGES= +{ + NULL, 3, 22, 265, 227, BBFLG_BACKFILL|BBFLG_FRAMEBUTTON, 0, 0, 0, 0 +}; + +struct BevelBox BBOX_SCREEN_PAGES_PGSCR_General[]= +{ + NULL, 16, 152, 240, 1, BBFLG_FRAMEBUTTON|BBFLG_RECESSED, 0, 0, 0, 0 +}; + +struct Page PAGES_SCREEN_PAGES[]= +{ + &PAGES_SCREEN_PAGES[1], (STRPTR) MSG_SCREEN_PAGES_L0_GAD, FS_NORMAL, NULL, NULL, BBOX_SCREEN_PAGES_PGSCR_General, NULL, NULL, + NULL, (STRPTR) MSG_SCREEN_PAGES_L1_GAD, FS_NORMAL, NULL, NULL, NULL, NULL, NULL +}; + + +/* PGSCR_General Gadget structures */ +UBYTE *LABELS_PGSCR_USE[]= +{ + (UBYTE *)MSG_PGSCR_USE_L0_GAD, + (UBYTE *)MSG_PGSCR_USE_L1_GAD, + (UBYTE *)MSG_PGSCR_USE_L2_GAD, + NULL +}; + +/* PGSCR_Flags Gadget structures */ + +/* EditString Gadget structures */ + +/* PGSTR_General Gadget structures */ + +/* EditVersion Gadget structures */ + +/* PG_TRLV_Flags Gadget structures */ + +/* Object Gadget structures */ + +/* EditPalette Gadget structures */ + +/* PGWN_TabOrder Gadget structures */ + +/* Status Gadget structures */ + +/* PGBO_General Gadget tags */ +ULONG PGBO_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGBO_LABEL_GAD, GA_Left, 72, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_LABEL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGBO_X_GAD, GA_Left, 160, GA_Top, 47, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_X_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGBO_Y_GAD, GA_Left, 160, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_Y_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGBO_WIDTH_GAD, GA_Left, 160, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGBO_HEIGHT_GAD, GA_Left, 160, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_HEIGHT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGBO_REL_X, GA_Text, (ULONG) MSG_PGBO_REL_X_GAD, GA_Left, 72, GA_Top, 47, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_REL_X_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGBO_REL_Y, GA_Text, (ULONG) MSG_PGBO_REL_Y_GAD, GA_Left, 72, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_REL_Y_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGBO_REL_W, GA_Text, (ULONG) MSG_PGBO_REL_W_GAD, GA_Left, 72, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_REL_W_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGBO_REL_H, GA_Text, (ULONG) MSG_PGBO_REL_H_GAD, GA_Left, 72, GA_Top, 107, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGBO_REL_H_Clicked, TAG_DONE +}; + +/* About Gadget tags */ +ULONG AboutGTags[]= +{ + TEXTFIELD_KIND, NULL, GA_Disabled, TRUE, TEXTFIELD_ReadOnly, TRUE, TEXTFIELD_Partial, FALSE, TEXTFIELD_BlockCursor, FALSE, TEXTFIELD_VCenter, FALSE, TEXTFIELD_PassCommand, FALSE, TEXTFIELD_NonPrintChars, FALSE, TEXTFIELD_MaxSizeBeep, FALSE, TEXTFIELD_NoGhost, TRUE, TEXTFIELD_Modified, FALSE, TEXTFIELD_UserAlign, FALSE, TEXTFIELD_RuledPaper, FALSE, TEXTFIELD_Inverted, TRUE, GA_TabCycle, FALSE, TEXTFIELD_RejectChars, (ULONG) "", TEXTFIELD_BlinkRate, 0, TEXTFIELD_MaxSize, 0, TEXTFIELD_TabSpaces, 0, TEXTFIELD_Spacing, 0, TEXTFIELD_Border, TEXTFIELD_BORDER_NONE, TEXTFIELD_Alignment, TEXTFIELD_ALIGN_CENTER, GA_Left, 272, GA_Top, 4, GA_Width, 209, GA_Height, 177, GA_UserData, (ULONG) FN_ABOUT_TEXT_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_ABOUT_OK_GAD, GA_Left, 392, GA_Top, 192, GA_Width, 89, GA_Height, 21, GA_UserData, (ULONG) FN_ABOUT_OK_Clicked, TAG_DONE +}; + +/* PG_BUTT_Flags Gadget tags */ +ULONG PG_BUTT_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_BUTT_FLAGS_IMMEDIATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_BUTT_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_BUTT_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_BUTT_FLAGS_DISABLED_Clicked, TAG_DONE, + MX_KIND, PLACETEXT_RIGHT |NG_HIGHLABEL, GTMX_Labels, (ULONG) &LABELS_PG_BUTT_FLAGS_TITLETYPE, GTMX_Active, 0, GTMX_Scaled, TRUE, GTMX_Spacing, 2, GTMX_TitlePlace, PLACETEXT_ABOVE, GA_Text, (ULONG) MSG_PG_BUTT_FLAGS_TITLETYPE_GAD, GA_Left, 199, GA_Top, 41, GA_Width, 17, GA_Height, 13, GA_UserData, (ULONG) FN_PG_BUTT_FLAGS_TITLETYPE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_BUTT_FLAGS_TOGGLE_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_BUTT_FLAGS_TOGGLE_Clicked, TAG_DONE +}; + +/* PG_CBOX_Flags Gadget tags */ +ULONG PG_CBOX_FlagsGTags[]= +{ + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_CBOX_FLAGS_SCALED, GA_Text, (ULONG) MSG_PG_CBOX_FLAGS_SCALED_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CBOX_FLAGS_SCALED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CBOX_FLAGS_CHECKED_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CBOX_FLAGS_CHECKED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CBOX_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CBOX_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CBOX_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CBOX_FLAGS_DISABLED_Clicked, TAG_DONE +}; + +/* PG_CWHL_Flags Gadget tags */ +ULONG PG_CWHL_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 1, GTIN_MaxChars, 3, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_MAXPENS_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_MAXPENS_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTST_MaxChars, 6, STRINGA_ReplaceMode, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_ABBRV_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_ABBRV_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_GSLIDER_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_GSLIDER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_BEVELBOX_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_BEVELBOX_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CWHL_FLAGS_FOLLOWMOUSE_Clicked, TAG_DONE +}; + +/* PG_CYCE_Flags Gadget tags */ +ULONG PG_CYCE_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CYCE_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CYCE_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_CYCE_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_CYCE_FLAGS_DISABLED_Clicked, TAG_DONE +}; + +/* PG_Lists Gadget tags */ +ULONG PG_ListsGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_LISTS_EDIT_GAD, GA_Left, 16, GA_Top, 111, GA_Width, 233, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_EDIT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_LISTS_ACTIVE_GAD, GA_Left, 256, GA_Top, 111, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_ACTIVE_Clicked, TAG_DONE, + LISTVIEW_KIND, PLACETEXT_LEFT, GTLV_ShowSelected, NULL, LAYOUTA_Spacing, 1, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_PG_LISTS_LIST_GAD, GA_Left, 16, GA_Top, 27, GA_Width, 233, GA_Height, 84, GA_UserData, (ULONG) FN_PG_LISTS_LIST_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_LISTS_UP_GAD, GA_Left, 256, GA_Top, 69, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_UP_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_LISTS_DOWN_GAD, GA_Left, 256, GA_Top, 90, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_DOWN_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_LISTS_ADD_GAD, GA_Left, 256, GA_Top, 27, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_ADD_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_LISTS_DEL_GAD, GA_Left, 256, GA_Top, 48, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LISTS_DEL_Clicked, TAG_DONE +}; + +/* PG_DTYP_Flags Gadget tags */ +ULONG PG_DTYP_FlagsGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_DTYP_FLAGS_OBJECT_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_DTYP_FLAGS_OBJECT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_DTYP_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_DTYP_FLAGS_DISABLED_Clicked, TAG_DONE +}; + +/* PG_GRSL_Flags Gadget tags */ +ULONG PG_GRSL_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 3, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_KNOBPIXELS_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_MAXVAL_GAD, GA_Left, 80, GA_Top, 87, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_MAXVAL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_CURVAL_GAD, GA_Left, 80, GA_Top, 107, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_CURVAL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_SKIPVAL_GAD, GA_Left, 224, GA_Top, 87, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_SKIPVAL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 3, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_PENS_GAD, GA_Left, 224, GA_Top, 107, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_PENS_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_GRSL_FLAGS_FREEDOM, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_FREEDOM_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_FREEDOM_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_GRSL_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_GRSL_FLAGS_DISABLED_Clicked, TAG_DONE +}; + +/* PG_INTR_Flags Gadget tags */ +ULONG PG_INTR_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_TABCYCLE_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_TABCYCLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_REPLACEMODE_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_REPLACEMODE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_INTR_FLAGS_EXITHELP_GAD, GA_Left, 264, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_FLAGS_EXITHELP_Clicked, TAG_DONE +}; + +/* PG_INTR_Var Gadget tags */ +ULONG PG_INTR_VarGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_INTR_VAR_MAXCHARS_GAD, GA_Left, 136, GA_Top, 47, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_VAR_MAXCHARS_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_INTR_VAR_NUMBER_GAD, GA_Left, 136, GA_Top, 67, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_VAR_NUMBER_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_INTR_VAR_JUSTIFICATION, GA_Text, (ULONG) MSG_PG_INTR_VAR_JUSTIFICATION_GAD, GA_Left, 136, GA_Top, 27, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_INTR_VAR_JUSTIFICATION_Clicked, TAG_DONE +}; + +/* PG_LVIE_Flags Gadget tags */ +ULONG PG_LVIE_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_ARROWS_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_ARROWS_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_SPACING_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_SPACING_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_READONLY_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_READONLY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_SHOWSELECTED_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_LVIE_FLAGS_ARROWS_SEL, GA_Text, (ULONG) MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD, GA_Left, 184, GA_Top, 87, GA_Width, 105, GA_Height, 17, GA_UserData, (ULONG) FN_PG_LVIE_FLAGS_ARROWS_SEL_Clicked, TAG_DONE +}; + +/* PG_MX_Flags Gadget tags */ +ULONG PG_MX_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_MX_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_MX_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_MX_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_MX_FLAGS_SCALED, GA_Text, (ULONG) MSG_PG_MX_FLAGS_SCALED_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_SCALED_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_MX_FLAGS_PLACEMENT, GA_Text, (ULONG) MSG_PG_MX_FLAGS_PLACEMENT_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_PLACEMENT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_MX_FLAGS_SPACING_GAD, GA_Left, 232, GA_Top, 27, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_MX_FLAGS_SPACING_Clicked, TAG_DONE +}; + +/* PG_NUMB_Flags Gadget tags */ +ULONG PG_NUMB_FlagsGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_ReplaceMode, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_FORMAT_GAD, GA_Left, 136, GA_Top, 87, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_FORMAT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_ReplaceMode, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_DEFAULT_GAD, GA_Left, 88, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_DEFAULT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_ReplaceMode, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD, GA_Left, 240, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_MAXNUMLEN_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_BORDER_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_BORDER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_CLIPPED_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_CLIPPED_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_NUMB_FLAGS_JUSTIFICATION, GA_Text, (ULONG) MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD, GA_Left, 136, GA_Top, 67, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_NUMB_FLAGS_JUSTIFICATION_Clicked, TAG_DONE +}; + +/* PGGT_General Gadget tags */ +ULONG PGGT_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_LABEL_GAD, GA_Left, 72, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_LABEL_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_ABOVE, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_TITLE_GAD, GA_Left, 224, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_TITLE_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_X_GAD, GA_Left, 160, GA_Top, 47, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_X_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_Y_GAD, GA_Left, 160, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_Y_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_WIDTH_GAD, GA_Left, 160, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGGT_HEIGHT_GAD, GA_Left, 160, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_HEIGHT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_ABOVE, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGGT_PLACEMENT, GA_Text, (ULONG) MSG_PGGT_PLACEMENT_GAD, GA_Left, 224, GA_Top, 107, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_PLACEMENT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_Disabled, TRUE, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGGT_REL_X, GA_Text, (ULONG) MSG_PGGT_REL_X_GAD, GA_Left, 72, GA_Top, 47, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_REL_X_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_Disabled, TRUE, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGGT_REL_Y, GA_Text, (ULONG) MSG_PGGT_REL_Y_GAD, GA_Left, 72, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_REL_Y_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_Disabled, TRUE, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGGT_REL_W, GA_Text, (ULONG) MSG_PGGT_REL_W_GAD, GA_Left, 72, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_REL_W_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_Disabled, TRUE, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGGT_REL_H, GA_Text, (ULONG) MSG_PGGT_REL_H_GAD, GA_Left, 72, GA_Top, 107, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGGT_REL_H_Clicked, TAG_DONE +}; + +/* PG_PAGE_Flags Gadget tags */ +ULONG PG_PAGE_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PAGE_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_PAGE_FLAGS_LAYOUT, GA_Text, (ULONG) MSG_PG_PAGE_FLAGS_LAYOUT_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_FLAGS_LAYOUT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_PAGE_FLAGS_STYLE, GA_Text, (ULONG) MSG_PG_PAGE_FLAGS_STYLE_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_FLAGS_STYLE_Clicked, TAG_DONE +}; + +/* PG_PAGE_Lists Gadget tags */ +ULONG PG_PAGE_ListsGTags[]= +{ + LISTVIEW_KIND, PLACETEXT_LEFT, GTLV_ShowSelected, NULL, LAYOUTA_Spacing, 1, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_LIST_GAD, GA_Left, 16, GA_Top, 27, GA_Width, 113, GA_Height, 101, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_LIST_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_ADD_GAD, GA_Left, 136, GA_Top, 27, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_ADD_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_DEL_GAD, GA_Left, 136, GA_Top, 48, GA_Width, 49, GA_Height, 16, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_DEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_UP_GAD, GA_Left, 136, GA_Top, 68, GA_Width, 49, GA_Height, 16, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_UP_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_DOWN_GAD, GA_Left, 136, GA_Top, 90, GA_Width, 49, GA_Height, 16, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_DOWN_Clicked, TAG_DONE, + LISTVIEW_KIND, PLACETEXT_LEFT, GTLV_ShowSelected, NULL, LAYOUTA_Spacing, 1, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_WINDOWS_GAD, GA_Left, 192, GA_Top, 27, GA_Width, 113, GA_Height, 97, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_WINDOWS_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PAGE_LISTS_ACTIVE_GAD, GA_Left, 136, GA_Top, 111, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PAGE_LISTS_ACTIVE_Clicked, TAG_DONE +}; + +/* PG_PALT_Flags Gadget tags */ +ULONG PG_PALT_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_COLOR_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_COLOR_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_OFFSET_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_OFFSET_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_SHOWSELECTED_VAR_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_RIGHT, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_PALT_FLAGS_SHOWSELECTED, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD, GA_Left, 16, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_SHOWSELECTED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_HIGHLABEL_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_RIGHT, GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_PALT_FLAGS_TYPE, GA_Text, (ULONG) MSG_PG_PALT_FLAGS_TYPE_GAD, GA_Left, 16, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PALT_FLAGS_TYPE_Clicked, TAG_DONE +}; + +/* PG_PUPM_Flags Gadget tags */ +ULONG PG_PUPM_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PUPM_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PUPM_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PUPM_FLAGS_NEWLOOK_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PUPM_FLAGS_NEWLOOK_Clicked, TAG_DONE +}; + +/* PG_PRGR_Flags Gadget tags */ +ULONG PG_PRGR_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_MAX_GAD, GA_Left, 232, GA_Top, 47, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_MAX_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_CURRENT_GAD, GA_Left, 232, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_CURRENT_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_FORMAT_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_FORMAT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_BORDER_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_BORDER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_PERCENTS_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_PERCENTS_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_PRGR_FLAGS_PLACEMENT, GA_Text, (ULONG) MSG_PG_PRGR_FLAGS_PLACEMENT_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PRGR_FLAGS_PLACEMENT_Clicked, TAG_DONE +}; + +/* PG_SCRL_Flags Gadget tags */ +ULONG PG_SCRL_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SCRL_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_FLAGS_IMMEDIATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SCRL_FLAGS_RELVERIFY_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_FLAGS_RELVERIFY_Clicked, TAG_DONE +}; + +/* PG_SCRL_Var Gadget tags */ +ULONG PG_SCRL_VarGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SCRL_VAR_TOP_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_TOP_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SCRL_VAR_TOTAL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_TOTAL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SCRL_VAR_VISIBLE_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_VISIBLE_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_SCRL_VAR_FREEDOM, GA_Text, (ULONG) MSG_PG_SCRL_VAR_FREEDOM_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_FREEDOM_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SCRL_VAR_ARROWS_GAD, GA_Left, 216, GA_Top, 107, GA_Width, 73, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_ARROWS_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_SCRL_VAR_ARROW_TYPE, GA_Text, (ULONG) MSG_PG_SCRL_VAR_ARROW_TYPE_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 89, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SCRL_VAR_ARROW_TYPE_Clicked, TAG_DONE +}; + +/* PG_SLIR_Flags Gadget tags */ +ULONG PG_SLIR_FlagsGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_FORMAT_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_FORMAT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 137, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_MAXPIXELLEN_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD, GA_Left, 264, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_MAXPIXELLEN_SET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_IMMEDIATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_SLIR_FLAGS_RELVERIFY_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_FLAGS_RELVERIFY_Clicked, TAG_DONE +}; + +/* PG_SLIR_Var Gadget tags */ +ULONG PG_SLIR_VarGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_VAR_MIN_GAD, GA_Left, 72, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_MIN_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_VAR_MAX_GAD, GA_Left, 72, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_MAX_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_VAR_LEVEL_GAD, GA_Left, 232, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_LEVEL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_SLIR_VAR_MAXLEVLEN_GAD, GA_Left, 232, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_MAXLEVLEN_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_SLIR_VAR_JUSTIFICATION, GA_Text, (ULONG) MSG_PG_SLIR_VAR_JUSTIFICATION_GAD, GA_Left, 144, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_JUSTIFICATION_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_SLIR_VAR_FREEDOM, GA_Text, (ULONG) MSG_PG_SLIR_VAR_FREEDOM_GAD, GA_Left, 144, GA_Top, 47, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_FREEDOM_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_SLIR_VAR_LEVELPLACE, GA_Text, (ULONG) MSG_PG_SLIR_VAR_LEVELPLACE_GAD, GA_Left, 144, GA_Top, 67, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PG_SLIR_VAR_LEVELPLACE_Clicked, TAG_DONE +}; + +/* PG_STRG_Flags Gadget tags */ +ULONG PG_STRG_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_UNDERSCORE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_UNDERSCORE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_TABCYCLE_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_TABCYCLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_REPLACEMODE_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_REPLACEMODE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_STRG_FLAGS_EXITHELP_GAD, GA_Left, 264, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_FLAGS_EXITHELP_Clicked, TAG_DONE +}; + +/* PG_STRG_Var Gadget tags */ +ULONG PG_STRG_VarGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_STRG_VAR_MAXCHARS_GAD, GA_Left, 136, GA_Top, 47, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_VAR_MAXCHARS_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_STRG_VAR_STRING_GAD, GA_Left, 136, GA_Top, 67, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_VAR_STRING_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_STRG_VAR_JUSTIFICATION, GA_Text, (ULONG) MSG_PG_STRG_VAR_JUSTIFICATION_GAD, GA_Left, 136, GA_Top, 27, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_STRG_VAR_JUSTIFICATION_Clicked, TAG_DONE +}; + +/* PG_TDEK_Flags Gadget tags */ +ULONG PG_TDEK_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TDEK_FLAGS_FRAMES_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TDEK_FLAGS_FRAMES_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TDEK_FLAGS_CURRENT_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TDEK_FLAGS_CURRENT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TDEK_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TDEK_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TDEK_FLAGS_TAPE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TDEK_FLAGS_TAPE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TDEK_FLAGS_PAUSED_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TDEK_FLAGS_PAUSED_Clicked, TAG_DONE +}; + +/* PG_TEXT_Flags Gadget tags */ +ULONG PG_TEXT_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_HIGHLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_BORDER_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_BORDER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_CLIPPED_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_CLIPPED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_COPYTEXT_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_COPYTEXT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_TEXT_FLAGS_JUSTIFICATION, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD, GA_Left, 136, GA_Top, 87, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_JUSTIFICATION_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TEXT_FLAGS_DEFAULT_GAD, GA_Left, 136, GA_Top, 107, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TEXT_FLAGS_DEFAULT_Clicked, TAG_DONE +}; + +/* PG_TFLD_Flags Gadget tags */ +ULONG PG_TFLD_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_TABCYCLE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_TABCYCLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_READONLY_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_READONLY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_INVERTED_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_INVERTED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_PARTIAL_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_PARTIAL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_BLOCKCURSOR_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_VCENTER_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_VCENTER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD, GA_Left, 264, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_PASSCOMMAND_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD, GA_Left, 264, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_CLIPBOARD_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_UNDO_GAD, GA_Left, 264, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_UNDO_Clicked, TAG_DONE +}; + +/* PG_TFLD_Flags2 Gadget tags */ +ULONG PG_TFLD_Flags2GTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD, GA_Left, 272, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_NONPRINTCHARS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD, GA_Left, 272, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_MAXSIZEBEEP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_NOGHOST_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_NOGHOST_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_MODIFIED_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_MODIFIED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_USERALIGN_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_USERALIGN_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD, GA_Left, 272, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_RULEDPAPER_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_TFLD_FLAGS_BORDER, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_BORDER_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 177, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_BORDER_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PG_TFLD_FLAGS_ALIGN, GA_Text, (ULONG) MSG_PG_TFLD_FLAGS_ALIGN_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 177, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_FLAGS_ALIGN_Clicked, TAG_DONE +}; + +/* PG_TFLD_Var Gadget tags */ +ULONG PG_TFLD_VarGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_BLINKRATE_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 41, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_BLINKRATE_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_MAXSIZE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 41, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_MAXSIZE_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_TABSPACES_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 41, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_TABSPACES_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 20, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_SPACING_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 41, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_SPACING_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_DELIMITERS_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_DELIMITERS_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_ACCEPTCHARS_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TFLD_VAR_REJECTCHARS_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TFLD_VAR_REJECTCHARS_Clicked, TAG_DONE +}; + +/* Properties Gadget tags */ +ULONG PropertiesGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PROPERTIES_LOCK_GAD, GA_Left, 296, GA_Top, 4, GA_Width, 18, GA_Height, 15, GA_UserData, (ULONG) FN_PROPERTIES_LOCK_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PROPERTIES_APPLY_GAD, GA_Left, 276, GA_Top, 4, GA_Width, 18, GA_Height, 15, GA_UserData, (ULONG) FN_PROPERTIES_APPLY_Clicked, TAG_DONE, + PAGE_KIND, NULL, GA_RelVerify, TRUE, PAGE_Pages, (ULONG) PAGES_PROPERTIES_PAGES, PAGE_Active, 0, PAGE_Layout, PGLYT_SIMPLE, PAGE_ActiveStyle, PGAST_NORMAL, PAGE_ClearBBox, (ULONG) &BBOX_PROPERTIES_PAGES, GA_Left, 8, GA_Top, 4, GA_Width, 257, GA_Height, 20, GA_UserData, (ULONG) FN_PROPERTIES_PAGES_Clicked, TAG_DONE +}; + +/* Preferences Gadget tags */ +ULONG PreferencesGTags[]= +{ + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PREFS_SAVE_GAD, GA_Left, 240, GA_Top, 156, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PREFS_SAVE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PREFS_USE_GAD, GA_Left, 312, GA_Top, 156, GA_Width, 65, GA_Height, 17, GA_UserData, (ULONG) FN_PREFS_USE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PREFS_CANCEL_GAD, GA_Left, 384, GA_Top, 156, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PREFS_CANCEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD, GA_Left, 120, GA_Top, 20, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PREFS_GENERAL_AUTOBACKUP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD, GA_Left, 120, GA_Top, 40, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PREFS_GENERAL_SIZEZOOM_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD, GA_Left, 120, GA_Top, 60, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PREFS_GENERAL_FASTREDRAW_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_GETSCREEN_GAD, GA_Left, 8, GA_Top, 104, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PREFS_GENERAL_GETSCREEN_Clicked, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, TRUE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_SCREENMODE_GAD, GA_Left, 176, GA_Top, 104, GA_Width, 265, GA_Height, 17, TAG_DONE, + LISTVIEW_KIND, PLACETEXT_ABOVE, GT_Underscore, '_', GTLV_ShowSelected, NULL, LAYOUTA_Spacing, 1, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_PG_PREFS_GEN_LIST_GAD, GA_Left, 176, GA_Top, 20, GA_Width, 265, GA_Height, 73, GA_UserData, (ULONG) FN_PG_PREFS_GEN_LIST_Clicked, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, TRUE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_FONTNAME_GAD, GA_Left, 176, GA_Top, 124, GA_Width, 265, GA_Height, 17, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PG_PREFS_GENERAL_EDITFONT_GAD, GA_Left, 8, GA_Top, 124, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PG_PREFS_GENERAL_EDITFONT_Clicked, TAG_DONE +}; + +/* Grid Gadget tags */ +ULONG GridGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_GRID_X_GAD, GA_Left, 120, GA_Top, 4, GA_Width, 73, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_X_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_GRID_Y_GAD, GA_Left, 120, GA_Top, 24, GA_Width, 73, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_Y_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_GRID_SHOW_GAD, GA_Left, 120, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_SHOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_GRID_SNAP_GAD, GA_Left, 120, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_SNAP_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_GRID_OK_GAD, GA_Left, 8, GA_Top, 96, GA_Width, 73, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_OK_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_GRID_CANCEL_GAD, GA_Left, 120, GA_Top, 96, GA_Width, 73, GA_Height, 17, GA_UserData, (ULONG) FN_GRID_CANCEL_Clicked, TAG_DONE +}; + +/* PGWN_General Gadget tags */ +ULONG PGWN_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_LABEL_GAD, GA_Left, 72, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_LABEL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_X_GAD, GA_Left, 160, GA_Top, 47, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_X_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_Y_GAD, GA_Left, 160, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_Y_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_WIDTH_GAD, GA_Left, 160, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_HEIGHT_GAD, GA_Left, 160, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_HEIGHT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_RIGHT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_INNERHEIGHT_GAD, GA_Left, 224, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_INNERHEIGHT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_RIGHT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_INNERWIDTH_GAD, GA_Left, 224, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_INNERWIDTH_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_REL_H, GA_Text, (ULONG) MSG_PGWN_REL_H_GAD, GA_Left, 72, GA_Top, 107, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REL_H_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_REL_W, GA_Text, (ULONG) MSG_PGWN_REL_W_GAD, GA_Left, 72, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REL_W_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_REL_Y, GA_Text, (ULONG) MSG_PGWN_REL_Y_GAD, GA_Left, 72, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REL_Y_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_REL_X, GA_Text, (ULONG) MSG_PGWN_REL_X_GAD, GA_Left, 72, GA_Top, 47, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REL_X_Clicked, TAG_DONE +}; + +/* PGWN_Flags1 Gadget tags */ +ULONG PGWN_Flags1GTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_SCREEN_TITLE_GAD, GA_Left, 144, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_SCREEN_TITLE_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_WINDOW_TITLE_GAD, GA_Left, 144, GA_Top, 47, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_WINDOW_TITLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_PAGED_GAD, GA_Left, 264, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_PAGED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_FONTADAPTIVE_GAD, GA_Left, 144, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_FONTADAPTIVE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_APPWINDOW_GAD, GA_Left, 144, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_APPWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_PROJECT_GAD, GA_Left, 264, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_PROJECT_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGWN_MENU_GET_GAD, GA_Left, 272, GA_Top, 67, GA_Width, 17, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_MENU_GET_Clicked, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, TRUE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PGWN_MENU_GAD, GA_Left, 144, GA_Top, 67, GA_Width, 121, GA_Height, 17, TAG_DONE +}; + +/* PGWN_Style Gadget tags */ +ULONG PGWN_StyleGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_ZOOM_GAD, GA_Left, 64, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_ZOOM_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_BACKDROP_GAD, GA_Left, 264, GA_Top, 103, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_BACKDROP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_BORDERLESS_GAD, GA_Left, 264, GA_Top, 83, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_BORDERLESS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_SIZEBBOTTOM_GAD, GA_Left, 128, GA_Top, 103, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_SIZEBBOTTOM_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_SIZEBRIGHT_GAD, GA_Left, 128, GA_Top, 83, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_SIZEBRIGHT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_CLOSEGADGET_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_CLOSEGADGET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_DEPTHGADGET_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_DEPTHGADGET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_SIZEGADGET_GAD, GA_Left, 160, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_SIZEGADGET_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_DRAGGADGET, GA_Text, (ULONG) MSG_PGWN_DRAGGADGET_GAD, GA_Left, 64, GA_Top, 27, GA_Width, 121, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_DRAGGADGET_Clicked, TAG_DONE +}; + +/* PGWN_Flags2 Gadget tags */ +ULONG PGWN_Flags2GTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_FALLBACK_GAD, GA_Left, 264, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_FALLBACK_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_REPORTMOUSE_GAD, GA_Left, 136, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REPORTMOUSE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_AUTOADJUST_GAD, GA_Left, 264, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_AUTOADJUST_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_ACTIVATE_GAD, GA_Left, 264, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_ACTIVATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_RMBTRAP_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_RMBTRAP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_NEWLOOKMENUS_GAD, GA_Left, 136, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_NEWLOOKMENUS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_NOCAREREFRESH_GAD, GA_Left, 136, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_NOCAREREFRESH_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_GZZ_GAD, GA_Left, 136, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_GZZ_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGWN_REFRESH, GA_Text, (ULONG) MSG_PGWN_REFRESH_GAD, GA_Left, 136, GA_Top, 27, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REFRESH_Clicked, TAG_DONE +}; + +/* PGWN_Flags3 Gadget tags */ +ULONG PGWN_Flags3GTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_MOUSEQUEUE_GAD, GA_Left, 128, GA_Top, 87, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_MOUSEQUEUE_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGWN_REPEATQUEUE_GAD, GA_Left, 128, GA_Top, 107, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REPEATQUEUE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGWN_IDCMP_GAD, GA_Left, 168, GA_Top, 47, GA_Width, 129, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_IDCMP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_REPEATQUEUE_SET_GAD, GA_Left, 192, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_REPEATQUEUE_SET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_MOUSEQUEUE_SET_GAD, GA_Left, 192, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_MOUSEQUEUE_SET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_NOTIFYDEPTH_GAD, GA_Left, 128, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_NOTIFYDEPTH_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_MENUHELP_GAD, GA_Left, 128, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_MENUHELP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGWN_POINTERDELAY_GAD, GA_Left, 128, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_POINTERDELAY_Clicked, TAG_DONE +}; + +/* WN_IDCMPFlags Gadget tags */ +ULONG WN_IDCMPFlagsGTags[]= +{ + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_IDCMP_CANCEL_GAD, GA_Left, 352, GA_Top, 196, GA_Width, 89, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_CANCEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_IDCMP_OK_GAD, GA_Left, 256, GA_Top, 196, GA_Width, 89, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_OK_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_MENUPICK_GAD, GA_Left, 416, GA_Top, 144, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_MENUPICK_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_GADGETHELP_GAD, GA_Left, 104, GA_Top, 164, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_GADGETHELP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_MENUHELP_GAD, GA_Left, 104, GA_Top, 144, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_MENUHELP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_IDCMPUPDATE_GAD, GA_Left, 264, GA_Top, 164, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_IDCMPUPDATE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_DISKINSERTED_GAD, GA_Left, 416, GA_Top, 124, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_DISKINSERTED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_DISKREMOVED_GAD, GA_Left, 416, GA_Top, 104, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_DISKREMOVED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_INACTIVEWINDOW_GAD, GA_Left, 416, GA_Top, 84, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_INACTIVEWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_ACTIVEWINDOW_GAD, GA_Left, 416, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_ACTIVEWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_INTUITICKS_GAD, GA_Left, 264, GA_Top, 144, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_INTUITICKS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_CLOSEWINDOW_GAD, GA_Left, 416, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_CLOSEWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_VANILLAKEY_GAD, GA_Left, 264, GA_Top, 124, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_VANILLAKEY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_RAWKEY_GAD, GA_Left, 264, GA_Top, 104, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_RAWKEY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_GADGETDOWN_GAD, GA_Left, 264, GA_Top, 84, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_GADGETDOWN_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_GADGETUP_GAD, GA_Left, 264, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_GADGETUP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_MOUSEBUTTONS_GAD, GA_Left, 264, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_MOUSEBUTTONS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_NEWPREFS_GAD, GA_Left, 104, GA_Top, 124, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_NEWPREFS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_CHANGEWINDOW_GAD, GA_Left, 416, GA_Top, 24, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_CHANGEWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_REFRESHWINDOW_GAD, GA_Left, 416, GA_Top, 4, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_REFRESHWINDOW_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_NEWSIZE_GAD, GA_Left, 104, GA_Top, 104, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_NEWSIZE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_REQCLEAR_GAD, GA_Left, 104, GA_Top, 84, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_REQCLEAR_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_REQSET_GAD, GA_Left, 104, GA_Top, 64, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_REQSET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_REQVERIFY_GAD, GA_Left, 104, GA_Top, 44, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_REQVERIFY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_SIZEVERIFY_GAD, GA_Left, 104, GA_Top, 24, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_SIZEVERIFY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_MENUVERIFY_GAD, GA_Left, 104, GA_Top, 4, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_MENUVERIFY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_MOUSEMOVE_GAD, GA_Left, 264, GA_Top, 4, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_MOUSEMOVE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_IDCMP_DELTAMOVE_GAD, GA_Left, 264, GA_Top, 24, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_IDCMP_DELTAMOVE_Clicked, TAG_DONE +}; + +/* TB_Main Gadget tags */ +ULONG TB_MainGTags[]= +{ + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWTbr, GA_Left, 0, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEW_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBOPENTbr, GA_Left, 22, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_OPEN_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBSAVETbr, GA_Left, 44, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_SAVE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBCUTTbr, GA_Left, 77, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_CUT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBCOPYTbr, GA_Left, 99, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_COPY_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBPASTETbr, GA_Left, 121, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_PASTE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBUNDOTbr, GA_Left, 143, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_UNDO_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBHELPTbr, GA_Left, 165, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_HELP_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWWINDOWTbr, GA_Left, 198, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWWINDOW_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWMENUTbr, GA_Left, 220, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWMENU_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWIMAGETbr, GA_Left, 242, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWPOINTER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWSTRINGTbr, GA_Left, 264, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWSTRING_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWVERSIONTbr, GA_Left, 286, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWVERSION_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBNEWSCREENTbr, GA_Left, 308, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_NEWSCREEN_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNLEFTTbr, GA_Left, 341, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNLEFT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNHCENTERTbr, GA_Left, 363, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNHCENTER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNRIGHTTbr, GA_Left, 385, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNRIGHT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNTOPTbr, GA_Left, 407, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNTOP_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNVCENTERTbr, GA_Left, 429, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNVCENTER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBALIGNBOTTOMTbr, GA_Left, 451, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_ALIGNBOTTOM_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBSPREADHORIZTbr, GA_Left, 484, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_SPREADHORIZ_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBSPREADVERTTbr, GA_Left, 506, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_SPREADVERT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBCLONEWIDTHTbr, GA_Left, 539, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_CLONEWIDTH_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBCLONEHEIGHTTbr, GA_Left, 561, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_CLONEHEIGHT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) &TBCLONEBOTHTbr, GA_Left, 583, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TB_CLONEBOTH_Clicked, TAG_DONE +}; + +/* TB_Window Gadget tags */ +ULONG TB_WindowGTags[]= +{ + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBPOINTERTbr, GA_Left, 0, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_NONE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBTEXTFIELDTbr, GA_Left, 44, GA_Top, 132, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_TEXTFIELD_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBTEXTTbr, GA_Left, 22, GA_Top, 132, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_TEXT_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBTAPEDECKTbr, GA_Left, 0, GA_Top, 132, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_TAPEDECK_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBSTRINGTbr, GA_Left, 44, GA_Top, 110, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_STRING_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBSLIDERTbr, GA_Left, 22, GA_Top, 110, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_SLIDER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBSCROLLERTbr, GA_Left, 0, GA_Top, 110, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_SCROLLER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBPROGRESSTbr, GA_Left, 44, GA_Top, 88, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_PROGRESS_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBPOPUPMENUTbr, GA_Left, 22, GA_Top, 88, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_POPUPMENU_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBPALETTETbr, GA_Left, 0, GA_Top, 88, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_PALETTE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBPAGETbr, GA_Left, 44, GA_Top, 66, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_PAGE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBNUMBERTbr, GA_Left, 22, GA_Top, 66, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_NUMBER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBMXTbr, GA_Left, 0, GA_Top, 66, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_MX_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBLISTVIEWTbr, GA_Left, 44, GA_Top, 44, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_LISTVIEW_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBINTEGERTbr, GA_Left, 22, GA_Top, 44, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_INTEGER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBGRADIENTSLIDERTbr, GA_Left, 0, GA_Top, 44, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_GRADIENTSLIDER_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBDATATYPETbr, GA_Left, 44, GA_Top, 22, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_DATATYPE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBCYCLETbr, GA_Left, 22, GA_Top, 22, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_CYCLE_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBCOLORWHEELTbr, GA_Left, 0, GA_Top, 22, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_COLORWHEEL_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBCHECKMARKTbr, GA_Left, 44, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_CHECKBOX_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBBUTTONTbr, GA_Left, 22, GA_Top, 0, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_BUTTON_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBTESTTbr, GA_Left, 0, GA_Top, 187, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_MODE_TEST_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBGADGETSTbr, GA_Left, 22, GA_Top, 187, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_MODE_GADGET_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBFRAMESTbr, GA_Left, 44, GA_Top, 187, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_MODE_FRAME_Clicked, TAG_DONE, + TOOLIMAGE_KIND, PLACETEXT_IN, GA_ToggleSelect, TRUE, GA_Text, (ULONG) &TBTREEVIEWTbr, GA_Left, 0, GA_Top, 154, GA_Width, 22, GA_Height, 22, GA_UserData, (ULONG) FN_TBG_TREEVIEW_Clicked, TAG_DONE +}; + +/* PGMN_General Gadget tags */ +ULONG PGMN_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, FALSE, GTST_MaxChars, 30, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGMN_LABEL_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_LABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_NEWLOOK_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_NEWLOOK_Clicked, TAG_DONE +}; + +/* Working Gadget tags */ +ULONG WorkingGTags[]= +{ + PROGRESS_KIND, NULL, PROG_MaxVal, 100, PROG_CurVal, 0, PROG_ConvertToPercents, TRUE, PROG_Format, (ULONG) MSG_WORK_PROGRESS_FORMAT_GAD, PROG_Border, TRUE, PROG_Placement, PLACETEXT_IN, GA_Left, 8, GA_Top, 12, GA_Width, 233, GA_Height, 17, TAG_DONE +}; + +/* PGFR_General Gadget tags */ +ULONG PGFR_GeneralGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGFR_X_GAD, GA_Left, 88, GA_Top, 27, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_X_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGFR_Y_GAD, GA_Left, 88, GA_Top, 47, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_Y_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGFR_WIDTH_GAD, GA_Left, 88, GA_Top, 67, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGFR_HEIGHT_GAD, GA_Left, 88, GA_Top, 87, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_HEIGHT_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGFR_FRAME, GA_Text, (ULONG) MSG_PGFR_FRAME_GAD, GA_Left, 88, GA_Top, 107, GA_Width, 201, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_FRAME_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGFR_RECESSED_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGFR_RECESSED_Clicked, TAG_DONE +}; + +/* List Gadget tags */ +ULONG ListGTags[]= +{ + LISTVIEW_KIND, PLACETEXT_LEFT, LAYOUTA_Spacing, 1, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_LIST_GAD, GA_Left, 0, GA_Top, 0, GA_Width, 153, GA_Height, 213, GA_UserData, (ULONG) FN_LIST_Clicked, TAG_DONE +}; + +/* PGMN_Item Gadget tags */ +ULONG PGMN_ItemGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGMN_ITEM_LABEL_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_LABEL_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGMN_ITEM_TITLE_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 145, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_TITLE_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 1, STRINGA_ReplaceMode, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGMN_ITEM_COMMKEY_GAD, GA_Left, 240, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_COMMKEY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_ITEM_POPUP_GAD, GA_Left, 240, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_POPUP_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_ITEM_BARLABEL_GAD, GA_Left, 240, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_BARLABEL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_ITEM_DISABLED_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_ITEM_CHECKED_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_CHECKED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGMN_ITEM_TOGGLE_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGMN_ITEM_TOGGLE_Clicked, TAG_DONE +}; + +/* PGPI_General Gadget tags */ +ULONG PGPI_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGPI_LABEL_GAD, GA_Left, 104, GA_Top, 27, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_LABEL_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 6, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGPI_WIDTH_GAD, GA_Left, 56, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 6, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGPI_HEIGHT_GAD, GA_Left, 144, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_HEIGHT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 6, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGPI_DEPTH_GAD, GA_Left, 232, GA_Top, 67, GA_Width, 57, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_DEPTH_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGPI_TYPE, GA_Text, (ULONG) MSG_PGPI_TYPE_GAD, GA_Left, 104, GA_Top, 47, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_TYPE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, TRUE, GA_Text, (ULONG) MSG_PGPI_SETPOINT_GAD, GA_Left, 104, GA_Top, 87, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_SETPOINT_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGPI_PALETTE_GAD, GA_Left, 104, GA_Top, 107, GA_Width, 185, GA_Height, 17, GA_UserData, (ULONG) FN_PGPI_PALETTE_Clicked, TAG_DONE +}; + +/* TB_Pointer Gadget tags */ +ULONG TB_PointerGTags[]= +{ + PALETTE_KIND, PLACETEXT_LEFT, GTPA_Depth, 2, GTPA_Color, 0, GTPA_ColorOffset, 16, GTPA_IndicatorHeight, 20, GA_Text, (ULONG) MSG_TBP_PALETTE_GAD, GA_Left, 0, GA_Top, 0, GA_Width, 21, GA_Height, 190, GA_UserData, (ULONG) FN_TBP_PALETTE_Clicked, TAG_DONE +}; + +/* Screen Gadget tags */ +ULONG ScreenGTags[]= +{ + PAGE_KIND, NULL, GA_RelVerify, TRUE, PAGE_Pages, (ULONG) PAGES_SCREEN_PAGES, PAGE_Active, 0, PAGE_Layout, PGLYT_SIMPLE, PAGE_ActiveStyle, PGAST_NORMAL, PAGE_ClearBBox, (ULONG) &BBOX_SCREEN_PAGES, GA_Left, 8, GA_Top, 4, GA_Width, 201, GA_Height, 19, GA_UserData, (ULONG) FN_SCREEN_PAGES_Clicked, TAG_DONE +}; + +/* PGSCR_General Gadget tags */ +ULONG PGSCR_GeneralGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSCR_WIDTH_GAD, GA_Left, 88, GA_Top, 26, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_WIDTH_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSCR_HEIGHT_GAD, GA_Left, 88, GA_Top, 46, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_HEIGHT_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 2, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSCR_DEPTH_GAD, GA_Left, 88, GA_Top, 66, GA_Width, 81, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_DEPTH_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 255, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSCR_TITLE_GAD, GA_Left, 88, GA_Top, 86, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_TITLE_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSCR_PUBNAME_GAD, GA_Left, 152, GA_Top, 158, GA_Width, 105, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_PUBNAME_Clicked, TAG_DONE, + CYCLE_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCY_Active, 0, GTCY_Labels, (ULONG) &LABELS_PGSCR_USE, GA_Text, (ULONG) MSG_PGSCR_USE_GAD, GA_Left, 88, GA_Top, 106, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_USE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_MAKEPUBLIC_GAD, GA_Left, 152, GA_Top, 178, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_MAKEPUBLIC_Clicked, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, TRUE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PGSCR_MODEID_GAD, GA_Left, 88, GA_Top, 126, GA_Width, 120, GA_Height, 17, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGSCR_MODEID_GET_GAD, GA_Left, 208, GA_Top, 126, GA_Width, 17, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_MODEID_GET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_DEFAULTID_GAD, GA_Left, 232, GA_Top, 126, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_DEFAULTID_Clicked, TAG_DONE +}; + +/* PGSCR_Flags Gadget tags */ +ULONG PGSCR_FlagsGTags[]= +{ + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_SHOWTITLE_GAD, GA_Left, 152, GA_Top, 26, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_SHOWTITLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_BEHIND_GAD, GA_Left, 152, GA_Top, 46, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_BEHIND_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_QUIET_GAD, GA_Left, 152, GA_Top, 66, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_QUIET_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_AUTOSCROLL_GAD, GA_Left, 152, GA_Top, 86, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_AUTOSCROLL_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_FULLPALETTE_GAD, GA_Left, 152, GA_Top, 106, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_FULLPALETTE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_DRAGGABLE_GAD, GA_Left, 152, GA_Top, 126, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_DRAGGABLE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_EXCLUSIVE_GAD, GA_Left, 152, GA_Top, 146, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_EXCLUSIVE_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_SHAREPENS_GAD, GA_Left, 152, GA_Top, 166, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_SHAREPENS_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_INTERLEAVED_GAD, GA_Left, 152, GA_Top, 186, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_INTERLEAVED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_LIKEWORKBENCH_GAD, GA_Left, 152, GA_Top, 206, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_LIKEWORKBENCH_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PGSCR_MINIMIZEISG_GAD, GA_Left, 152, GA_Top, 226, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PGSCR_MINIMIZEISG_Clicked, TAG_DONE +}; + +/* EditString Gadget tags */ +ULONG EditStringGTags[]= +{ + TREEVIEW_KIND, NULL, GA_RelVerify, TRUE, GA_Immediate, TRUE, LIST_Labels, NULL, LIST_Border, TRUE, LIST_MultiSelect, FALSE, LIST_ShowTreeLines, FALSE, LIST_IsTree, FALSE, LIST_Columns, 3, LIST_Format, (ULONG) MSG_PGSTR_STRINGS_FORMAT_GAD, GA_Left, 0, GA_Top, 17, GA_RelWidth, 0, GA_RelHeight, 0, GA_UserData, (ULONG) FN_PGSTR_STRINGS_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGSTR_ADD_GAD, GA_Left, 0, GA_Top, 0, GA_Width, 72, GA_Height, 17, GA_UserData, (ULONG) FN_PGSTR_ADD_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGSTR_DELETE_GAD, GA_Left, 72, GA_Top, 0, GA_Width, 72, GA_Height, 17, GA_UserData, (ULONG) FN_PGSTR_DELETE_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGSTR_EDIT_GAD, GA_Left, 144, GA_Top, 0, GA_Width, 72, GA_Height, 17, GA_UserData, (ULONG) FN_PGSTR_EDIT_Clicked, TAG_DONE +}; + +/* PGSTR_General Gadget tags */ +ULONG PGSTR_GeneralGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 30, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSTR_LABEL_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PGSTR_LABEL_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 999999, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGSTR_STRING_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PGSTR_STRING_Clicked, TAG_DONE +}; + +/* EditVersion Gadget tags */ +ULONG EditVersionGTags[]= +{ + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 256, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGVER_PROGRAMNAME_GAD, GA_Left, 112, GA_Top, 4, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PGVER_PROGRAMNAME_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 256, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGVER_AUTHOR_GAD, GA_Left, 112, GA_Top, 24, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PGVER_AUTHOR_Clicked, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGVER_VERSION_GAD, GA_Left, 112, GA_Top, 44, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PGVER_VERSION_Clicked, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, FALSE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PGVER_DATE_GAD, GA_Left, 112, GA_Top, 84, GA_Width, 153, GA_Height, 17, TAG_DONE, + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 5, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PGVER_REVISION_GAD, GA_Left, 112, GA_Top, 64, GA_Width, 153, GA_Height, 17, GA_UserData, (ULONG) FN_PGVER_REVISION_Clicked, TAG_DONE +}; + +/* PG_TRLV_Flags Gadget tags */ +ULONG PG_TRLV_FlagsGTags[]= +{ + INTEGER_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTIN_Number, 0, GTIN_MaxChars, 2, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_COLUMNS_GAD, GA_Left, 120, GA_Top, 87, GA_Width, 89, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_COLUMNS_Clicked, TAG_DONE, + STRING_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GA_TabCycle, TRUE, GTST_MaxChars, 1000, STRINGA_ExitHelp, TRUE, STRINGA_Justification, STRINGLEFT, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_FORMAT_GAD, GA_Left, 120, GA_Top, 107, GA_Width, 169, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_FORMAT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_DISABLED_GAD, GA_Left, 120, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_DISABLED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_MULTISELECT_GAD, GA_Left, 120, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_MULTISELECT_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_BORDER_GAD, GA_Left, 120, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_BORDER_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_READONLY_GAD, GA_Left, 264, GA_Top, 27, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_READONLY_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD, GA_Left, 264, GA_Top, 67, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_SHOWTREELINES_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD, GA_Left, 264, GA_Top, 47, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_SHOWSELECTED_Clicked, TAG_DONE, + CHECKBOX_KIND, PLACETEXT_LEFT, GT_Underscore, '_', GTCB_Scaled, TRUE, GA_Text, (ULONG) MSG_PG_TRLV_FLAGS_TREE_GAD, GA_Left, 264, GA_Top, 87, GA_Width, 25, GA_Height, 17, GA_UserData, (ULONG) FN_PG_TRLV_FLAGS_TREE_Clicked, TAG_DONE +}; + +/* Object Gadget tags */ +ULONG ObjectGTags[]= +{ + TREEVIEW_KIND, NULL, GA_RelVerify, TRUE, GA_Immediate, TRUE, LIST_Labels, NULL, LIST_Border, TRUE, LIST_MultiSelect, FALSE, LIST_ShowTreeLines, TRUE, LIST_IsTree, TRUE, LIST_Columns, 1, GA_Left, 0, GA_Top, 0, GA_RelWidth, 0, GA_RelHeight, 0, GA_UserData, (ULONG) FN_OBJLIST_Clicked, TAG_DONE +}; + +/* EditPalette Gadget tags */ +ULONG EditPaletteGTags[]= +{ + PALETTE_KIND, PLACETEXT_LEFT, GTPA_Depth, 8, GTPA_Color, 0, GA_Text, (ULONG) MSG_PAL_PALETTE_GAD, GA_Left, 184, GA_Top, 4, GA_Width, 153, GA_Height, 117, GA_UserData, (ULONG) FN_PAL_PALETTE_Clicked, TAG_DONE, + SLIDER_KIND, PLACETEXT_LEFT, GA_Immediate, TRUE, GTSL_Min, 0, GTSL_Max, 255, GTSL_Level, 0, GTSL_MaxLevelLen, 10, GTSL_LevelFormat, (ULONG) MSG_PAL_GREEN_FORMAT_GAD, GTSL_LevelPlace, PLACETEXT_LEFT, GTSL_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PAL_GREEN_GAD, GA_Left, 104, GA_Top, 148, GA_Width, 233, GA_Height, 17, GA_UserData, (ULONG) FN_PAL_GREEN_Clicked, TAG_DONE, + SLIDER_KIND, PLACETEXT_LEFT, GA_Immediate, TRUE, GTSL_Min, 0, GTSL_Max, 255, GTSL_Level, 0, GTSL_MaxLevelLen, 10, GTSL_LevelFormat, (ULONG) MSG_PAL_BLUE_FORMAT_GAD, GTSL_LevelPlace, PLACETEXT_LEFT, GTSL_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PAL_BLUE_GAD, GA_Left, 104, GA_Top, 168, GA_Width, 233, GA_Height, 17, GA_UserData, (ULONG) FN_PAL_BLUE_Clicked, TAG_DONE, + SLIDER_KIND, PLACETEXT_LEFT, GA_Immediate, TRUE, GTSL_Min, 0, GTSL_Max, 255, GTSL_Level, 0, GTSL_MaxLevelLen, 10, GTSL_LevelFormat, (ULONG) MSG_PAL_RED_FORMAT_GAD, GTSL_LevelPlace, PLACETEXT_LEFT, GTSL_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_PAL_RED_GAD, GA_Left, 104, GA_Top, 128, GA_Width, 233, GA_Height, 17, GA_UserData, (ULONG) FN_PAL_RED_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PAL_CANCEL_GAD, GA_Left, 248, GA_Top, 200, GA_Width, 89, GA_Height, 21, GA_UserData, (ULONG) FN_PAL_CANCEL_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PAL_OK_GAD, GA_Left, 8, GA_Top, 200, GA_Width, 89, GA_Height, 21, GA_UserData, (ULONG) FN_PAL_OK_Clicked, TAG_DONE, + GRADIENTSLIDER_KIND, NULL, GRAD_MaxVal, 0xFFFF, GRAD_CurVal, 0x0, GRAD_SkipVal, 0x1111, GRAD_KnobPixels, 5, GRAD_PenArray, NULL, PGA_Freedom, LORIENT_VERT, GA_Left, 136, GA_Top, 4, GA_Width, 25, GA_Height, 117, GA_UserData, (ULONG) FN_PAL_GSLIDER_Clicked, TAG_DONE, + COLORWHEEL_KIND, NULL, GA_FollowMouse, FALSE, WHEEL_Abbrv, (ULONG) "GCBMRY", WHEEL_MaxPens, 1, WHEEL_Screen, NULL, GA_Left, 8, GA_Top, 4, GA_Width, 117, GA_Height, 117, GA_UserData, (ULONG) FN_PAL_COLORWHEEL_Clicked, TAG_DONE +}; + +/* PGWN_TabOrder Gadget tags */ +ULONG PGWN_TabOrderGTags[]= +{ + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGWN_TABORDER_DOWN_GAD, GA_Left, 256, GA_Top, 48, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_TABORDER_DOWN_Clicked, TAG_DONE, + BUTTON_KIND, PLACETEXT_IN, GT_Underscore, '_', GA_ToggleSelect, FALSE, GA_Text, (ULONG) MSG_PGWN_TABORDER_UP_GAD, GA_Left, 256, GA_Top, 27, GA_Width, 49, GA_Height, 17, GA_UserData, (ULONG) FN_PGWN_TABORDER_UP_Clicked, TAG_DONE, + LISTVIEW_KIND, PLACETEXT_LEFT, GTLV_ShowSelected, NULL, GTLV_ScrollWidth, 16, GA_Text, (ULONG) MSG_PGWN_TABORDER_LIST_GAD, GA_Left, 16, GA_Top, 27, GA_Width, 233, GA_Height, 97, GA_UserData, (ULONG) FN_PGWN_TABORDER_LIST_Clicked, TAG_DONE +}; + +/* Status Gadget tags */ +ULONG StatusGTags[]= +{ + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, FALSE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_CENTER, GA_Text, (ULONG) MSG_STATUS_CHANGED_GAD, GA_Left, 0, GA_Top, 0, GA_Width, 17, GA_Height, 21, TAG_DONE, + TEXT_KIND, PLACETEXT_LEFT, GTTX_Border, TRUE, GTTX_Clipped, TRUE, GTTX_CopyText, FALSE, GTTX_Justification, GTJ_LEFT, GA_Text, (ULONG) MSG_STATUS_TEXT_GAD, GA_Left, 18, GA_Top, 0, GA_Width, 587, GA_Height, 21, TAG_DONE +}; + +/* Application functions */ + +UWORD InitApplication(STRPTR language) +{ + if(!(Locale=OpenLocale(NULL))) return GTBERR_LOCALE; + Catalog=OpenCatalog(Locale,"GadToolsBox.catalog", + OC_BuiltInLanguage,"english", OC_Version, VER_VERSION, + language?OC_Language:TAG_IGNORE, language, TAG_DONE); + if(!(ProjectMsgPort=CreateMsgPort())) return GTBERR_CREATEPROJECTPORT; + if(!(ColorWheelBase=OpenLibrary("gadgets/colorwheel.gadget",39))) return GTBERR_OPENLIB_COLORWHEEL; + if(!(GradientSliderBase=OpenLibrary("gadgets/gradientslider.gadget",39))) return GTBERR_OPENLIB_GRADIENTSLIDER; + if(!(PageBase=OpenLibrary("gadgets/page.gadget",1))) return GTBERR_OPENLIB_PAGE; + PageClass=PAGE_GetClass(); + if(!(ProgressBase=OpenLibrary("gadgets/progress.gadget",37))) return GTBERR_OPENLIB_PROGRESS; + ProgressClass=GetProgressClass(); + if(!(TextFieldBase=OpenLibrary("gadgets/textfield.gadget",3))) return GTBERR_OPENLIB_TEXTFIELD; + TextFieldClass=TEXTFIELD_GetClass(); + if(!(ListViewBase=OpenLibrary("gadgets/listview.gadget",37))) return GTBERR_OPENLIB_TREEVIEW; + ListViewClass=GetListViewClass(); + if(!(SmartBitMapBase=OpenLibrary("images/smartbitmap.image",39))) return GTBERR_OPENLIB_SMARTBITMAP; + SmartBitMapClass=GetSmartBitMapClass(); + return GTBERR_OK; +} + +void FreeApplication() +{ + if(SmartBitMapBase) CloseLibrary(SmartBitMapBase); SmartBitMapBase=NULL; SmartBitMapClass=NULL; + if(ListViewBase) CloseLibrary(ListViewBase); ListViewBase=NULL; ListViewClass=NULL; + if(TextFieldBase) CloseLibrary(TextFieldBase); TextFieldBase=NULL; TextFieldClass=NULL; + if(ProgressBase) CloseLibrary(ProgressBase); ProgressBase=NULL; ProgressClass=NULL; + if(PageBase) CloseLibrary(PageBase); PageBase=NULL; PageClass=NULL; + if(GradientSliderBase) CloseLibrary(GradientSliderBase); GradientSliderBase=NULL; + if(ColorWheelBase) CloseLibrary(ColorWheelBase); ColorWheelBase=NULL; + if(ProjectMsgPort) DeleteMsgPort(ProjectMsgPort); ProjectMsgPort=NULL; + if(Catalog) CloseCatalog(Catalog); Catalog=NULL; +} + +void CloseWindowSafely(struct Window *win) +{ + if(win) + { + Forbid(); + StripIntuiMessages( win->UserPort, win ); + win->UserPort = NULL; + ModifyIDCMP( win, 0L ); + Permit(); + CloseWindowEx( win ); + } +} + +void StripIntuiMessages(struct MsgPort *mp,struct Window *win) +{ + struct IntuiMessage *msg; + struct Node *succ; + + msg = (struct IntuiMessage *) mp->mp_MsgList.lh_Head; + while( succ = msg->ExecMessage.mn_Node.ln_Succ ) + { + if( msg->IDCMPWindow == win ) + { + Remove((struct Node *)msg); + ReplyMsg((struct Message *)msg); + } + msg = (struct IntuiMessage *) succ; + } +} + +STRPTR GetCatString(APTR fcstr) +{ + STRPTR defaultstr; + LONG strnum; + + strnum=((struct FC_Type *)fcstr)->ID; + defaultstr=((struct FC_Type *)fcstr)->Str; + + return(Catalog ? GetCatalogStr(Catalog,strnum,defaultstr) : defaultstr); +} + +struct Gadget *CreateGadgetExA(UWORD offx,UWORD offy,UWORD offr,UWORD offb,struct Gadget *prev,struct TagItem *tags) +{ + struct Gadget *g; + struct NewGadget ng; + ULONG kind,flags,x,y,w,h; + BOOL rx=0,ry=0,rw=0,rh=0; + struct TagItem *ti; + + kind=tags[0].ti_Tag; + flags=tags[0].ti_Data; + tags=&tags[1]; + + if(ti=FindTagItem(GA_Left,tags)) x=AdaptX(ti->ti_Data)+offx; + else { x=AdaptX(GetTagData(GA_RelRight,0,tags))-offr; rx=TRUE; } + + if(ti=FindTagItem(GA_Top,tags)) y=AdaptY(ti->ti_Data)+offy; + else { y=AdaptY(GetTagData(GA_RelBottom,0,tags))-offb; ry=TRUE; } + + if(ti=FindTagItem(GA_Width,tags)) w=AdaptX(ti->ti_Data); + else { w=AdaptX(GetTagData(GA_RelWidth,0,tags))-x-offr; rw=TRUE; } + + if(ti=FindTagItem(GA_Height,tags)) h=AdaptY(ti->ti_Data); + else { h=AdaptY(GetTagData(GA_RelHeight,0,tags))-y-offb; rh=TRUE; } + + switch(kind) + { + case TOOLIMAGE_KIND: + ng.ng_LeftEdge=x; + ng.ng_TopEdge=y; + ng.ng_Width=w; + ng.ng_Height=h; + ng.ng_Flags=flags; + ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags); + ng.ng_GadgetID=GetTagData(GA_ID,0,tags); + ng.ng_GadgetText=NULL; + ng.ng_VisualInfo=VisualInfo; + ng.ng_TextAttr=Font; + g=CreateGadgetA(BUTTON_KIND,prev,&ng,tags); + if(!g) return g; + if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT; + if(rx) g->Flags|=GFLG_RELRIGHT; + if(ry) g->Flags|=GFLG_RELBOTTOM; + if(rw) g->Flags|=GFLG_RELWIDTH; + if(rh) g->Flags|=GFLG_RELHEIGHT; + g->Flags|=GFLG_GADGIMAGE|GFLG_GADGHIMAGE; + g->Activation|=GACT_RELVERIFY; + g->GadgetRender=g->SelectRender=*((ULONG **)GetTagData(GA_Text,0,tags)); + break; + case BUTTON_KIND: + case CHECKBOX_KIND: + case INTEGER_KIND: + case LISTVIEW_KIND: + case MX_KIND: + case NUMBER_KIND: + case CYCLE_KIND: + case PALETTE_KIND: + case SCROLLER_KIND: + case SLIDER_KIND: + case STRING_KIND: + case TEXT_KIND: + ng.ng_LeftEdge=x; + ng.ng_TopEdge=y; + ng.ng_Width=w; + ng.ng_Height=h; + ng.ng_Flags=flags; + ng.ng_UserData=(APTR)GetTagData(GA_UserData,0,tags); + ng.ng_GadgetID=GetTagData(GA_ID,0,tags); + ng.ng_GadgetText=(char *)GetTagData(GA_Text,0,tags); + ng.ng_VisualInfo=VisualInfo; + ng.ng_TextAttr=Font; + g=CreateGadgetA(kind,prev,&ng,tags); + if(!g) return g; + if(GetTagData(GA_ToggleSelect,0,tags)) g->Activation|=GACT_TOGGLESELECT; + if(rx) g->Flags|=GFLG_RELRIGHT; + if(ry) g->Flags|=GFLG_RELBOTTOM; + if(rw) g->Flags|=GFLG_RELWIDTH; + if(rh) g->Flags|=GFLG_RELHEIGHT; + break; + case COLORWHEEL_KIND: + FindTagItem(WHEEL_Screen,ti)->ti_Data=(ULONG) Scr; + g=(struct Gadget *)NewObject(NULL,"colorwheel.gadget", + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + case GRADIENTSLIDER_KIND: + g=(struct Gadget *)NewObject(NULL,"gradientslider.gadget", + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + case PAGE_KIND: + g=(struct Gadget *)NewObject(PageClass,NULL, + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + case PROGRESS_KIND: + g=(struct Gadget *)NewObject(ProgressClass,NULL, + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + case TEXTFIELD_KIND: + g=(struct Gadget *)NewObject(TextFieldClass,NULL, + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + case TREEVIEW_KIND: + g=(struct Gadget *)NewObject(ListViewClass,NULL, + (rx?GA_RelRight:GA_Left), x, (ry?GA_RelBottom:GA_Top), y, (rw?GA_RelWidth:GA_Width), w, (rh?GA_RelHeight:GA_Height), h, (prev?GA_Previous:TAG_IGNORE),prev,TAG_MORE,tags); + break; + } + return g; +} + +void DeleteGadgetExA(struct Gadget *g,struct TagItem *tags) +{ + switch(tags[0].ti_Tag) + { + case COLORWHEEL_KIND: + case GRADIENTSLIDER_KIND: + case PAGE_KIND: + case POPUPMENU_KIND: + case PROGRESS_KIND: + case TAPEDECK_KIND: + case TEXTFIELD_KIND: + case TREEVIEW_KIND: + DisposeObject(g); + break; + case TOOLIMAGE_KIND: + g->GadgetRender=g->SelectRender=NULL; + break; + } +} + +struct Window *OpenWindowTagsEx(ULONG tags,...) +{ + struct Gadget *g=NULL; + struct Window *win; + struct TagItem *ti,*clone=NULL; + BOOL tbg=FALSE,rx=FALSE,ry=FALSE,rw=FALSE,rh=FALSE; + ULONG left,top,width,height; + + clone=CloneTagItems((struct TagItem *)&tags); + if(ti=FindTagItem(WA_ToolDragBar,clone)) + { + if(g=AllocMem(sizeof(struct Gadget),MEMF_ANY|MEMF_CLEAR)) + { + g->LeftEdge=0; + g->TopEdge=0; + g->Flags=GFLG_GADGHNONE; + g->GadgetType=GTYP_WDRAGGING; + g->UserData=(APTR)DRAG_ID; + if(ti->ti_Data==TOOL_HORIZ) + { + g->Activation=GACT_TOPBORDER|GACT_BORDERSNIFF; + g->Width=32767; + g->Height=8; + } + else + { + g->Activation=GACT_LEFTBORDER|GACT_BORDERSNIFF; + g->Width=8; + g->Height=32767; + } + } + else return NULL; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_RelWidth,clone)) + { + rw=TRUE; + width=(Scr->Width)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelHeight,clone)) + { + rh=TRUE; + height=(Scr->Height)-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_CenterX,clone)) + { + rx=TRUE; + left=(Scr->Width/2)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_CenterY,clone)) + { + ry=TRUE; + top=(Scr->Height/2)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone)/2); + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelRight,clone)) + { + rx=TRUE; + left=(Scr->Width)-(GetTagData(WA_Width,GetTagData(WA_InnerWidth,width,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + if(ti=FindTagItem(WA_RelBottom,clone)) + { + ry=TRUE; + top=(Scr->Height)-(GetTagData(WA_Height,GetTagData(WA_InnerHeight,height,clone),clone))-ti->ti_Data; + ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_Gadgets,clone)) + { + if(g) + { + g->NextGadget=(struct Gadget *)ti->ti_Data; + ti->ti_Data=(ULONG)g; + tbg=TRUE; + } + if(ti->ti_Data==NULL) ti->ti_Tag=TAG_IGNORE; + } + + if(ti=FindTagItem(WA_FontAdaptive,clone)) + { + width=AdaptX(width); + height=AdaptY(height); + ti->ti_Tag=TAG_IGNORE; + if(ti=FindTagItem(WA_Width,clone)) ti->ti_Data=AdaptX(ti->ti_Data); + if(ti=FindTagItem(WA_Height,clone)) ti->ti_Data=AdaptY(ti->ti_Data); + } + + if(!(win=OpenWindowTags(NULL, + rx?WA_Left:TAG_IGNORE,left, + ry?WA_Top:TAG_IGNORE,top, + rw?WA_Width:TAG_IGNORE,width, + rh?WA_Height:TAG_IGNORE,height, + TAG_MORE,(ULONG)clone))) + if(g) FreeMem(win,sizeof(struct Gadget)); + + if(clone) FreeTagItems(clone); + return win; +} + +void CloseWindowEx(struct Window *win) +{ + struct Gadget *g,*drag=NULL; + + g=win->FirstGadget; + while(g) + { + if(((ULONG)g->UserData)==DRAG_ID) { drag=g; break; } + g=g->NextGadget; + } + CloseWindow(win); + if(drag) FreeMem(drag,sizeof(struct Gadget)); +} + +void CalcLeftTop(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=((GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS)?TRUE:FALSE); + + if(ti=FindTagItem(WA_ToolDragBar,tags)) + { + if(ti->ti_Data==TOOL_HORIZ) + { + (*offy)+=8; + if(!bl) (*offx)+=Scr->WBorLeft; + } + else + { + (*offx)+=8; + if(!bl) (*offy)+=Scr->WBorTop; + } + } + else + { + if(!bl) + { + (*offx)+=Scr->WBorLeft; + if(GetTagData(WA_Title,NULL,tags)) + (*offy)+=Scr->WBorTop+Scr->RastPort.TxHeight+1; + else + (*offy)+=Scr->WBorTop; + } + } +} + +void CalcRightBottom(UWORD *offx,UWORD *offy,struct TagItem *tags) +{ + struct TagItem *ti; + BOOL bl,sg,sbb,sbr; + UWORD sw,sh; + struct Image *im; + + *offx=0; + *offy=0; + + if(ti=FindTagItem(WA_Borderless,tags)) + bl=ti->ti_Data; + else + bl=(GetTagData(WA_Flags,NULL,tags)&WFLG_BORDERLESS); + + if(ti=FindTagItem(WA_SizeGadget,tags)) + sg=ti->ti_Data; + else + sg=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEGADGET); + + if(ti=FindTagItem(WA_SizeBBottom,tags)) + sbb=ti->ti_Data; + else + sbb=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBBOTTOM); + + if(ti=FindTagItem(WA_SizeBRight,tags)) + sbr=ti->ti_Data; + else + sbr=(GetTagData(WA_Flags,NULL,tags)&WFLG_SIZEBRIGHT); + + if(im=(struct Image *)NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, SIZEIMAGE, + SYSIA_Size, (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES), + TAG_DONE)) + { + sw=im->Width; + sh=im->Height; + DisposeObject((Object *)im); + } + else + { + sw=18; + sh=10; + } + + if(!bl) + { + if(sg && (!sbb) && (!sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if(sg && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if(sg && sbb && sbr) { (*offx)+=sw; (*offy)+=sh; } + if((!sg) && (sbb) && (!sbr)) { (*offx)+=Scr->WBorRight; (*offy)+=sh; } + if((!sg) && (!sbb) && (sbr)) { (*offx)+=sw; (*offy)+=Scr->WBorBottom; } + if((!sg) && (sbb) && (sbr)) { (*offx)+=sw; (*offy)+=sh; } + } +} +UWORD AdaptX(UWORD value) +{ + return((UWORD)(((FontX*value)+3)/7)); +} + +UWORD AdaptY(UWORD value) +{ + return((UWORD)(((FontY*value)+6)/13)); +} + +void CalcAdaptivity(UWORD width, UWORD height) +{ + Font = &Attr; + Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name; + Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize; + FontX = Scr->RastPort.Font->tf_XSize; + + if(width && height) + if((AdaptX(width) > Scr->Width) || (AdaptY(height) > Scr->Height)) goto UseTopaz; + return; + +UseTopaz: + Font->ta_Name = (STRPTR)"topaz.font"; + FontX = FontY = Font->ta_YSize = 8; +} + +void FixGadgetTags(struct TagItem *tags) +{ + ULONG kind,a; + UBYTE **labels; + struct TagItem *ti; + struct Node *node; + struct Page *page; + + kind=tags[0].ti_Tag; + tags=&tags[1]; + + if(kind!=TOOLIMAGE_KIND && kind!=DATATYPE_KIND) if(ti=FindTagItem(GA_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + + switch(kind) + { + case LISTVIEW_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(node=(struct Node *)ti->ti_Data;node->ln_Succ;node=node->ln_Succ) + node->ln_Name=GetCatString((APTR)node->ln_Name); + break; + case MX_KIND: + if(ti=FindTagItem(GTMX_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case NUMBER_KIND: + if(ti=FindTagItem(GTNM_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case CYCLE_KIND: + if(ti=FindTagItem(GTCY_Labels,tags)) + for(labels=(UBYTE **) ti->ti_Data,a=0;labels[a];a++) labels[a]=(UBYTE *) GetCatString((APTR)labels[a]); + break; + case SLIDER_KIND: + if(ti=FindTagItem(GTSL_LevelFormat,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case STRING_KIND: + if(ti=FindTagItem(GTST_String,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case TEXT_KIND: + if(ti=FindTagItem(GTTX_Text,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case PAGE_KIND: + if(ti=FindTagItem(PAGE_Pages,tags)) + for(page=(struct Page *)ti->ti_Data;page;page=page->NextPage) + page->Name=GetCatString((APTR)page->Name); + break; + case PROGRESS_KIND: + if(ti=FindTagItem(PROG_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + case TREEVIEW_KIND: + if(ti=FindTagItem(LIST_Format,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + break; + } +} + +void FixWindowTags(struct TagItem *tags) +{ + struct TagItem *ti; + + if(ti=FindTagItem(WA_Title,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); + if(ti=FindTagItem(WA_ScreenTitle,tags)) ti->ti_Data=(ULONG) GetCatString((APTR)ti->ti_Data); +} + +void FixMenus(struct NewMenu *menu) +{ + ULONG a; + + for(a=0;menu[a].nm_Type!=NM_END;a++) + if((menu[a].nm_Label!=NM_BARLABEL) && (menu[a].nm_Label)) + { + menu[a].nm_CommKey=GetCatString(menu[a].nm_Label); + menu[a].nm_Label=menu[a].nm_CommKey+2; + if(menu[a].nm_CommKey[0]=='\0') menu[a].nm_CommKey=NULL; + } +} + +/* Screen functions */ + +UWORD SetupScreen(UBYTE Num) +{ + UWORD OffX,OffY; + + sprintf(ScrPubName,"GTB.%ld",Num); + sprintf(ScrTitle,GetCatString(MSG_SCREENTITLE_SCR),Num); + if(!(Scr=OpenScreenTags(NULL, + SA_Left, 0, + SA_Top, 0, + SA_Width, ScrWidth, + SA_Height, ScrHeight, + SA_Depth, ScrDepth, + SA_DisplayID, ScrDisplayID, + SA_Type, PUBLICSCREEN, + SA_PubName, ScrPubName, + SA_LikeWorkbench, TRUE, + SA_SharePens, TRUE, + SA_AutoScroll, TRUE, + SA_Interleaved, TRUE, + SA_Title, ScrTitle, + TAG_DONE))) return GTBERR_OPENSCREEN; + PubScreenStatus(Scr,0); + + OffX=Scr->WBorLeft; OffY=Scr->RastPort.TxHeight+Scr->WBorTop+1; + + CalcAdaptivity(0,0); + if(!(VisualInfo=GetVisualInfo(Scr,TAG_DONE))) return GTBERR_VISUALINFO; + + if(!(DrawInfo=GetScreenDrawInfo(Scr))) return GTBERR_SCRDRAWINFO; + + GetRGB32(Scr->ViewPort.ColorMap,DrawInfo->dri_Pens[BACKGROUNDPEN],1,&ToolBarPalette[0].R); + + if(!MenuLocaleDone[MN_Main]) FixMenus(MainNewMenu); + MenuLocaleDone[MN_Main]=TRUE; + + if(!(MainMenus=CreateMenus(MainNewMenu, GTMN_FrontPen, DrawInfo->dri_Pens[BARDETAILPEN], GTMN_NewLookMenus, TRUE, TAG_DONE))) return GTBERR_CREATEMENUS; + LayoutMenus(MainMenus, VisualInfo, TAG_DONE); + + BBOX_PROPERTIES_PAGES.Left=AdaptX(BBOX_PROPERTIES_PAGES.Left)+OffX; + BBOX_PROPERTIES_PAGES.Top=AdaptY(BBOX_PROPERTIES_PAGES.Top)+OffY; + BBOX_PROPERTIES_PAGES.Width=AdaptX(BBOX_PROPERTIES_PAGES.Width); + BBOX_PROPERTIES_PAGES.Height=AdaptY(BBOX_PROPERTIES_PAGES.Height); + BBOX_PROPERTIES_PAGES.BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + BBOX_PROPERTIES_PAGES.BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + BBOX_PROPERTIES_PAGES_PGWN_Style[0].Left=AdaptX(BBOX_PROPERTIES_PAGES_PGWN_Style[0].Left)+OffX; + BBOX_PROPERTIES_PAGES_PGWN_Style[0].Top=AdaptY(BBOX_PROPERTIES_PAGES_PGWN_Style[0].Top)+OffY; + BBOX_PROPERTIES_PAGES_PGWN_Style[0].Width=AdaptX(BBOX_PROPERTIES_PAGES_PGWN_Style[0].Width); + BBOX_PROPERTIES_PAGES_PGWN_Style[0].Height=AdaptY(BBOX_PROPERTIES_PAGES_PGWN_Style[0].Height); + BBOX_PROPERTIES_PAGES_PGWN_Style[0].BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + BBOX_PROPERTIES_PAGES_PGWN_Style[0].BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Left=AdaptX(BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Left)+OffX; + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Top=AdaptY(BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Top)+OffY; + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Width=AdaptX(BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Width); + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Height=AdaptY(BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].Height); + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + BBOX_PROPERTIES_PAGES_PGWN_Flags3[0].BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + BBOX_SCREEN_PAGES.Left=AdaptX(BBOX_SCREEN_PAGES.Left)+OffX; + BBOX_SCREEN_PAGES.Top=AdaptY(BBOX_SCREEN_PAGES.Top)+OffY; + BBOX_SCREEN_PAGES.Width=AdaptX(BBOX_SCREEN_PAGES.Width); + BBOX_SCREEN_PAGES.Height=AdaptY(BBOX_SCREEN_PAGES.Height); + BBOX_SCREEN_PAGES.BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + BBOX_SCREEN_PAGES.BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + BBOX_SCREEN_PAGES_PGSCR_General[0].Left=AdaptX(BBOX_SCREEN_PAGES_PGSCR_General[0].Left)+OffX; + BBOX_SCREEN_PAGES_PGSCR_General[0].Top=AdaptY(BBOX_SCREEN_PAGES_PGSCR_General[0].Top)+OffY; + BBOX_SCREEN_PAGES_PGSCR_General[0].Width=AdaptX(BBOX_SCREEN_PAGES_PGSCR_General[0].Width); + BBOX_SCREEN_PAGES_PGSCR_General[0].Height=AdaptY(BBOX_SCREEN_PAGES_PGSCR_General[0].Height); + BBOX_SCREEN_PAGES_PGSCR_General[0].BoxShine=DrawInfo->dri_Pens[SHINEPEN]; + BBOX_SCREEN_PAGES_PGSCR_General[0].BoxShadow=DrawInfo->dri_Pens[SHADOWPEN]; + if(!(Size45UDPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&Size45UDBitMap,POINTERA_XOffset,0,POINTERA_YOffset,0,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(Size45DUPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&Size45DUBitMap,POINTERA_XOffset,-6,POINTERA_YOffset,-6,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(SizeVertPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&SizeVertBitMap,POINTERA_XOffset,-3,POINTERA_YOffset,-7,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(SizeHorizPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&SizeHorizBitMap,POINTERA_XOffset,-8,POINTERA_YOffset,-3,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(MovePtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&MoveBitMap,POINTERA_XOffset,-7,POINTERA_YOffset,-7,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(SplitHorizPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&SplitHorizBitMap,POINTERA_XOffset,-6,POINTERA_YOffset,-7,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(SplitVertPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&SplitVertBitMap,POINTERA_XOffset,-7,POINTERA_YOffset,-6,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(DrawPtr=NewObject(NULL,POINTERCLASS,POINTERA_BitMap,(ULONG)&DrawBitMap,POINTERA_XOffset,-6,POINTERA_YOffset,-6,TAG_DONE))) return GTBERR_CREATEPOINTER; + if(!(TBNEWTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBOPENTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBOPENBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSAVETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSAVEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCUTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCUTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCOPYTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCOPYBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPASTETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPASTEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBUNDOTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBUNDOBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBHELPTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBHELPBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWWINDOWTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWWINDOWBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWMENUTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWMENUBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWIMAGETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWIMAGEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWSTRINGTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWSTRINGBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWSCREENTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWSCREENBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNEWVERSIONTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNEWVERSIONBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBBUTTONTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBBUTTONBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCYCLETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCYCLEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCHECKMARKTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCHECKMARKBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCOLORWHEELTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCOLORWHEELBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBDATATYPETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBDATATYPEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBGRADIENTSLIDERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBGRADIENTSLIDERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBINTEGERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBINTEGERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBLISTVIEWTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBLISTVIEWBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBMXTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBMXBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBNUMBERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBNUMBERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPAGETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPAGEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPALETTETbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPALETTEBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPOPUPMENUTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPOPUPMENUBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPROGRESSTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPROGRESSBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSCROLLERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSCROLLERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSLIDERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSLIDERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSTRINGTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSTRINGBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBTAPEDECKTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBTAPEDECKBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBTEXTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBTEXTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBTEXTFIELDTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBTEXTFIELDBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBTREEVIEWTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBTREEVIEWBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBTESTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBTESTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBGADGETSTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBGADGETSBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBFRAMESTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBFRAMESBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBPOINTERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBPOINTERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNLEFTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNLEFTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNHCENTERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNHCENTERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNRIGHTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNRIGHTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNTOPTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNTOPBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNVCENTERTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNVCENTERBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBALIGNBOTTOMTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBALIGNBOTTOMBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSPREADHORIZTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSPREADHORIZBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBSPREADVERTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBSPREADVERTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCLONEWIDTHTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCLONEWIDTHBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCLONEHEIGHTTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCLONEHEIGHTBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(TBCLONEBOTHTbr=NewObject(SmartBitMapClass,NULL,IA_Width,20,SMBM_Border,FALSE,SMBM_SelBorder,TRUE,SMBM_BitMap,(ULONG)&TBCLONEBOTHBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)ToolBarPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + if(!(GTBLOGOImg=NewObject(SmartBitMapClass,NULL,IA_Width,252,SMBM_Border,FALSE,SMBM_BitMap,(ULONG)>BLOGOBitMap,SMBM_Screen,Scr,SMBM_Palette,(ULONG)GTBLOGOPalette,TAG_DONE))) return GTBERR_CREATEIMAGE; + return GTBERR_OK; +} + +void CloseDownScreen() +{ + if(Size45UDPtr) DisposeObject(Size45UDPtr); + if(Size45DUPtr) DisposeObject(Size45DUPtr); + if(SizeVertPtr) DisposeObject(SizeVertPtr); + if(SizeHorizPtr) DisposeObject(SizeHorizPtr); + if(MovePtr) DisposeObject(MovePtr); + if(SplitHorizPtr) DisposeObject(SplitHorizPtr); + if(SplitVertPtr) DisposeObject(SplitVertPtr); + if(DrawPtr) DisposeObject(DrawPtr); + if(TBNEWTbr) DisposeObject(TBNEWTbr); + if(TBOPENTbr) DisposeObject(TBOPENTbr); + if(TBSAVETbr) DisposeObject(TBSAVETbr); + if(TBCUTTbr) DisposeObject(TBCUTTbr); + if(TBCOPYTbr) DisposeObject(TBCOPYTbr); + if(TBPASTETbr) DisposeObject(TBPASTETbr); + if(TBUNDOTbr) DisposeObject(TBUNDOTbr); + if(TBHELPTbr) DisposeObject(TBHELPTbr); + if(TBNEWWINDOWTbr) DisposeObject(TBNEWWINDOWTbr); + if(TBNEWMENUTbr) DisposeObject(TBNEWMENUTbr); + if(TBNEWIMAGETbr) DisposeObject(TBNEWIMAGETbr); + if(TBNEWSTRINGTbr) DisposeObject(TBNEWSTRINGTbr); + if(TBNEWSCREENTbr) DisposeObject(TBNEWSCREENTbr); + if(TBNEWVERSIONTbr) DisposeObject(TBNEWVERSIONTbr); + if(TBBUTTONTbr) DisposeObject(TBBUTTONTbr); + if(TBCYCLETbr) DisposeObject(TBCYCLETbr); + if(TBCHECKMARKTbr) DisposeObject(TBCHECKMARKTbr); + if(TBCOLORWHEELTbr) DisposeObject(TBCOLORWHEELTbr); + if(TBDATATYPETbr) DisposeObject(TBDATATYPETbr); + if(TBGRADIENTSLIDERTbr) DisposeObject(TBGRADIENTSLIDERTbr); + if(TBINTEGERTbr) DisposeObject(TBINTEGERTbr); + if(TBLISTVIEWTbr) DisposeObject(TBLISTVIEWTbr); + if(TBMXTbr) DisposeObject(TBMXTbr); + if(TBNUMBERTbr) DisposeObject(TBNUMBERTbr); + if(TBPAGETbr) DisposeObject(TBPAGETbr); + if(TBPALETTETbr) DisposeObject(TBPALETTETbr); + if(TBPOPUPMENUTbr) DisposeObject(TBPOPUPMENUTbr); + if(TBPROGRESSTbr) DisposeObject(TBPROGRESSTbr); + if(TBSCROLLERTbr) DisposeObject(TBSCROLLERTbr); + if(TBSLIDERTbr) DisposeObject(TBSLIDERTbr); + if(TBSTRINGTbr) DisposeObject(TBSTRINGTbr); + if(TBTAPEDECKTbr) DisposeObject(TBTAPEDECKTbr); + if(TBTEXTTbr) DisposeObject(TBTEXTTbr); + if(TBTEXTFIELDTbr) DisposeObject(TBTEXTFIELDTbr); + if(TBTREEVIEWTbr) DisposeObject(TBTREEVIEWTbr); + if(TBTESTTbr) DisposeObject(TBTESTTbr); + if(TBGADGETSTbr) DisposeObject(TBGADGETSTbr); + if(TBFRAMESTbr) DisposeObject(TBFRAMESTbr); + if(TBPOINTERTbr) DisposeObject(TBPOINTERTbr); + if(TBALIGNLEFTTbr) DisposeObject(TBALIGNLEFTTbr); + if(TBALIGNHCENTERTbr) DisposeObject(TBALIGNHCENTERTbr); + if(TBALIGNRIGHTTbr) DisposeObject(TBALIGNRIGHTTbr); + if(TBALIGNTOPTbr) DisposeObject(TBALIGNTOPTbr); + if(TBALIGNVCENTERTbr) DisposeObject(TBALIGNVCENTERTbr); + if(TBALIGNBOTTOMTbr) DisposeObject(TBALIGNBOTTOMTbr); + if(TBSPREADHORIZTbr) DisposeObject(TBSPREADHORIZTbr); + if(TBSPREADVERTTbr) DisposeObject(TBSPREADVERTTbr); + if(TBCLONEWIDTHTbr) DisposeObject(TBCLONEWIDTHTbr); + if(TBCLONEHEIGHTTbr) DisposeObject(TBCLONEHEIGHTTbr); + if(TBCLONEBOTHTbr) DisposeObject(TBCLONEBOTHTbr); + if(GTBLOGOImg) DisposeObject(GTBLOGOImg); + if(MainMenus) FreeMenus(MainMenus); MainMenus=NULL; + if(DrawInfo) FreeScreenDrawInfo(Scr,DrawInfo); DrawInfo=NULL; + if(VisualInfo) FreeVisualInfo(VisualInfo); VisualInfo=NULL; + if(Scr) CloseScreen(Scr); Scr=NULL; +} + +UWORD OpenWindow_PGBO_General() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&PGBO_GeneralGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PropertiesWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PropertiesWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&AboutMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(AboutMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_About(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + func=(int (*)(void))(( struct Gadget * )AboutMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_About() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&AboutGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)AboutWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)AboutWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)AboutWTags),(struct TagItem *)AboutWTags),(struct TagItem *)AboutWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)AboutWTags),(struct TagItem *)AboutWTags),(struct TagItem *)AboutWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&PropertiesMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(PropertiesMsg.Class) + { + case IDCMP_MOUSEMOVE: + running=FN_MouseMove_Properties(); + if(running > 1) return running; + break; + case IDCMP_INTUITICKS: + running=FN_IntuiTicks_Properties(); + if(running > 1) return running; + break; + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_Properties(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Properties(); + if(running > 1) return running; + break; + case IDCMP_INACTIVEWINDOW: + running=FN_InActiveWindow_Properties(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(PropertiesMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,PropertiesMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + PropertiesMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )PropertiesMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_Properties() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + UWORD retval; + + if(!(g=CreateContext(&PropertiesGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PropertiesWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PropertiesWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags)); else { FontX=7; FontY=13; } + + if(retval=OpenWindow_PGBO_General()) return(retval); + if(retval=OpenWindow_PG_BUTT_Flags()) return(retval); + if(retval=OpenWindow_PG_CBOX_Flags()) return(retval); + if(retval=OpenWindow_PG_CWHL_Flags()) return(retval); + if(retval=OpenWindow_PG_CYCE_Flags()) return(retval); + if(retval=OpenWindow_PG_Lists()) return(retval); + if(retval=OpenWindow_PG_DTYP_Flags()) return(retval); + if(retval=OpenWindow_PG_GRSL_Flags()) return(retval); + if(retval=OpenWindow_PG_INTR_Flags()) return(retval); + if(retval=OpenWindow_PG_INTR_Var()) return(retval); + if(retval=OpenWindow_PG_LVIE_Flags()) return(retval); + if(retval=OpenWindow_PG_MX_Flags()) return(retval); + if(retval=OpenWindow_PG_NUMB_Flags()) return(retval); + if(retval=OpenWindow_PGGT_General()) return(retval); + if(retval=OpenWindow_PG_PAGE_Flags()) return(retval); + if(retval=OpenWindow_PG_PAGE_Lists()) return(retval); + if(retval=OpenWindow_PG_PALT_Flags()) return(retval); + if(retval=OpenWindow_PG_PUPM_Flags()) return(retval); + if(retval=OpenWindow_PG_PRGR_Flags()) return(retval); + if(retval=OpenWindow_PG_SCRL_Flags()) return(retval); + if(retval=OpenWindow_PG_SCRL_Var()) return(retval); + if(retval=OpenWindow_PG_SLIR_Flags()) return(retval); + if(retval=OpenWindow_PG_SLIR_Var()) return(retval); + if(retval=OpenWindow_PG_STRG_Flags()) return(retval); + if(retval=OpenWindow_PG_STRG_Var()) return(retval); + if(retval=OpenWindow_PG_TDEK_Flags()) return(retval); + if(retval=OpenWindow_PG_TEXT_Flags()) return(retval); + if(retval=OpenWindow_PG_TFLD_Flags()) return(retval); + if(retval=OpenWindow_PG_TFLD_Flags2()) return(retval); + if(retval=OpenWindow_PG_TFLD_Var()) return(retval); + if(retval=OpenWindow_PGWN_General()) return(retval); + if(retval=OpenWindow_PGWN_Flags1()) return(retval); + if(retval=OpenWindow_PGWN_Style()) return(retval); + if(retval=OpenWindow_PGWN_Flags2()) return(retval); + if(retval=OpenWindow_PGWN_Flags3()) return(retval); + if(retval=OpenWindow_PGMN_General()) return(retval); + if(retval=OpenWindow_PGFR_General()) return(retval); + if(retval=OpenWindow_PGEMPTY()) return(retval); + if(retval=OpenWindow_PGMN_Item()) return(retval); + if(retval=OpenWindow_PGSTR_General()) return(retval); + if(retval=OpenWindow_PG_TRLV_Flags()) return(retval); + if(retval=OpenWindow_PGPI_General()) return(retval); + if(retval=OpenWindow_PGWN_TabOrder()) return(retval); + PAGES_PROPERTIES_PAGES[0].FirstGadget=PGBO_GeneralGList; + PAGES_PROPERTIES_PAGES[1].FirstGadget=PG_BUTT_FlagsGList; + PAGES_PROPERTIES_PAGES[2].FirstGadget=PG_CBOX_FlagsGList; + PAGES_PROPERTIES_PAGES[3].FirstGadget=PG_CWHL_FlagsGList; + PAGES_PROPERTIES_PAGES[4].FirstGadget=PG_CYCE_FlagsGList; + PAGES_PROPERTIES_PAGES[5].FirstGadget=PG_ListsGList; + PAGES_PROPERTIES_PAGES[6].FirstGadget=PG_DTYP_FlagsGList; + PAGES_PROPERTIES_PAGES[7].FirstGadget=PG_GRSL_FlagsGList; + PAGES_PROPERTIES_PAGES[8].FirstGadget=PG_INTR_FlagsGList; + PAGES_PROPERTIES_PAGES[9].FirstGadget=PG_INTR_VarGList; + PAGES_PROPERTIES_PAGES[10].FirstGadget=PG_LVIE_FlagsGList; + PAGES_PROPERTIES_PAGES[11].FirstGadget=PG_MX_FlagsGList; + PAGES_PROPERTIES_PAGES[12].FirstGadget=PG_NUMB_FlagsGList; + PAGES_PROPERTIES_PAGES[13].FirstGadget=PGGT_GeneralGList; + PAGES_PROPERTIES_PAGES[14].FirstGadget=PG_PAGE_FlagsGList; + PAGES_PROPERTIES_PAGES[15].FirstGadget=PG_PAGE_ListsGList; + PAGES_PROPERTIES_PAGES[16].FirstGadget=PG_PALT_FlagsGList; + PAGES_PROPERTIES_PAGES[17].FirstGadget=PG_PUPM_FlagsGList; + PAGES_PROPERTIES_PAGES[18].FirstGadget=PG_PRGR_FlagsGList; + PAGES_PROPERTIES_PAGES[19].FirstGadget=PG_SCRL_FlagsGList; + PAGES_PROPERTIES_PAGES[20].FirstGadget=PG_SCRL_VarGList; + PAGES_PROPERTIES_PAGES[21].FirstGadget=PG_SLIR_FlagsGList; + PAGES_PROPERTIES_PAGES[22].FirstGadget=PG_SLIR_VarGList; + PAGES_PROPERTIES_PAGES[23].FirstGadget=PG_STRG_FlagsGList; + PAGES_PROPERTIES_PAGES[24].FirstGadget=PG_STRG_VarGList; + PAGES_PROPERTIES_PAGES[25].FirstGadget=PG_TDEK_FlagsGList; + PAGES_PROPERTIES_PAGES[26].FirstGadget=PG_TEXT_FlagsGList; + PAGES_PROPERTIES_PAGES[27].FirstGadget=PG_TFLD_FlagsGList; + PAGES_PROPERTIES_PAGES[28].FirstGadget=PG_TFLD_Flags2GList; + PAGES_PROPERTIES_PAGES[29].FirstGadget=PG_TFLD_VarGList; + PAGES_PROPERTIES_PAGES[30].FirstGadget=PGWN_GeneralGList; + PAGES_PROPERTIES_PAGES[31].FirstGadget=PGWN_Flags1GList; + PAGES_PROPERTIES_PAGES[32].FirstGadget=PGWN_StyleGList; + PAGES_PROPERTIES_PAGES[33].FirstGadget=PGWN_Flags2GList; + PAGES_PROPERTIES_PAGES[34].FirstGadget=PGWN_Flags3GList; + PAGES_PROPERTIES_PAGES[35].FirstGadget=PGMN_GeneralGList; + PAGES_PROPERTIES_PAGES[36].FirstGadget=PGFR_GeneralGList; + PAGES_PROPERTIES_PAGES[37].FirstGadget=NULL; + PAGES_PROPERTIES_PAGES[38].FirstGadget=PGMN_ItemGList; + PAGES_PROPERTIES_PAGES[39].FirstGadget=PGSTR_GeneralGList; + PAGES_PROPERTIES_PAGES[40].FirstGadget=PG_TRLV_FlagsGList; + PAGES_PROPERTIES_PAGES[41].FirstGadget=PGPI_GeneralGList; + PAGES_PROPERTIES_PAGES[42].FirstGadget=PGWN_TabOrderGList; + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&EditMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditMsg.Class) + { + case IDCMP_MENUVERIFY: + running=FN_MenuVerify_Edit(); + if(running > 1) return running; + break; + case IDCMP_NEWSIZE: + running=FN_NewSize_Edit(); + if(running > 1) return running; + break; + case IDCMP_MOUSEMOVE: + running=FN_MouseMove_Edit(); + if(running > 1) return running; + break; + case IDCMP_MOUSEBUTTONS: + running=FN_MouseButtons_Edit(); + if(running > 1) return running; + break; + case IDCMP_RAWKEY: + running=FN_RawKey_Edit(); + if(running > 1) return running; + break; + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_Edit(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Edit(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(EditMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,EditMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + EditMsg.Code=n->NextSelect; + } + break; + } + } + return(running); +} + +UWORD OpenWindow_Edit() +{ + if(!WindowLocaleDone[WND_Edit]) FixWindowTags((struct TagItem *)EditWTags); + WindowLocaleDone[WND_Edit]=TRUE; + + if(!(EditWnd=OpenWindowTagsEx( + WA_CustomScreen, Scr, + TAG_MORE, EditWTags ))) return GTBERR_OPENWINDOW; + + EditWnd->UserPort=ProjectMsgPort; + ModifyIDCMP(EditWnd,IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_MENUVERIFY|IDCMP_NEWSIZE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_RAWKEY|IDCMP_CHANGEWINDOW); + SetMenuStrip(EditWnd,MainMenus); + GT_RefreshWindow(EditWnd,NULL); + return GTBERR_OK; +} + +void CloseWindow_Edit() +{ + if(EditWnd) ClearMenuStrip(EditWnd); + if(EditWnd) CloseWindowSafely(EditWnd); EditWnd=NULL; +} + +int HandleIDCMP_Preferences() +{ + struct IntuiMessage *m; + int (*func)(void); + BOOL running = TRUE; + + while(m=GT_GetIMsg(PreferencesWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&PreferencesMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(PreferencesMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Preferences(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + func=(int (*)(void))(( struct Gadget * )PreferencesMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_Preferences() +{ + UWORD OffX=PreferencesWnd->BorderLeft, OffY=PreferencesWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PreferencesWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( PreferencesWnd->RPort, AdaptX(8)+OffX, AdaptY(96)+OffY, AdaptX(433), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); + DrawBevelBox( PreferencesWnd->RPort, AdaptX(8)+OffX, AdaptY(148)+OffY, AdaptX(433), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); + DrawBevelBox( PreferencesWnd->RPort, AdaptX(160)+OffX, AdaptY(12)+OffY, AdaptX(2), AdaptY(73), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_Preferences() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&PreferencesGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PreferencesWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PreferencesWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags),(struct TagItem *)PreferencesWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&GridMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(GridMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Grid(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + func=(int (*)(void))(( struct Gadget * )GridMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_Grid() +{ + UWORD OffX=GridWnd->BorderLeft, OffY=GridWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)GridWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),(struct TagItem *)GridWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( GridWnd->RPort, AdaptX(0)+OffX, AdaptY(90)+OffY, AdaptX(201), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_Grid() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&GridGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)GridWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)GridWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)GridWTags),(struct TagItem *)GridWTags),(struct TagItem *)GridWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&WN_IDCMPFlagsMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(WN_IDCMPFlagsMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_WN_IDCMPFlags(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )WN_IDCMPFlagsMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_WN_IDCMPFlags() +{ + UWORD OffX=WN_IDCMPFlagsWnd->BorderLeft, OffY=WN_IDCMPFlagsWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)WN_IDCMPFlagsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( WN_IDCMPFlagsWnd->RPort, AdaptX(8)+OffX, AdaptY(188)+OffY, AdaptX(433), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_WN_IDCMPFlags() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&WN_IDCMPFlagsGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)WN_IDCMPFlagsWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)WN_IDCMPFlagsWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags),(struct TagItem *)WN_IDCMPFlagsWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&TB_MainMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(TB_MainMsg.Class) + { + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_TB_Main(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_TB_Main(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(TB_MainMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,TB_MainMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + TB_MainMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )TB_MainMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_TB_Main() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&TB_MainGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)TB_MainWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)TB_MainWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)TB_MainWTags),(struct TagItem *)TB_MainWTags),(struct TagItem *)TB_MainWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)TB_MainWTags),(struct TagItem *)TB_MainWTags),(struct TagItem *)TB_MainWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&TB_WindowMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(TB_WindowMsg.Class) + { + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_TB_Window(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_TB_Window(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(TB_WindowMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,TB_WindowMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + TB_WindowMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )TB_WindowMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_TB_Window() +{ + UWORD OffX=TB_WindowWnd->BorderLeft, OffY=TB_WindowWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)TB_WindowWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( TB_WindowWnd->RPort, AdaptX(0)+OffX, AdaptY(180)+OffY, AdaptX(66), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_TB_Window() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&TB_WindowGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)TB_WindowWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)TB_WindowWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags),(struct TagItem *)TB_WindowWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&WorkingMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(WorkingMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Working(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_Working() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&WorkingGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)WorkingWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)WorkingWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)WorkingWTags),(struct TagItem *)WorkingWTags),(struct TagItem *)WorkingWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)WorkingWTags),(struct TagItem *)WorkingWTags),(struct TagItem *)WorkingWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&EditMenuMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditMenuMsg.Class) + { + case IDCMP_MENUVERIFY: + running=FN_MenuVerify_EditMenu(); + if(running > 1) return running; + break; + case IDCMP_NEWSIZE: + running=FN_NewSize_EditMenu(); + if(running > 1) return running; + break; + case IDCMP_MOUSEMOVE: + running=FN_MouseMove_EditMenu(); + if(running > 1) return running; + break; + case IDCMP_MOUSEBUTTONS: + running=FN_MouseButtons_EditMenu(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_EditMenu(); + if(running > 1) return running; + break; + case IDCMP_ACTIVEWINDOW: + running=FN_ActiveWindow_EditMenu(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_EditMenu() +{ + if(!WindowLocaleDone[WND_EditMenu]) FixWindowTags((struct TagItem *)EditMenuWTags); + WindowLocaleDone[WND_EditMenu]=TRUE; + + if(!(EditMenuWnd=OpenWindowTagsEx( + WA_CustomScreen, Scr, + TAG_MORE, EditMenuWTags ))) return GTBERR_OPENWINDOW; + + EditMenuWnd->UserPort=ProjectMsgPort; + ModifyIDCMP(EditMenuWnd,IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_GADGETUP|IDCMP_MENUVERIFY|IDCMP_NEWSIZE|IDCMP_MOUSEBUTTONS|IDCMP_ACTIVEWINDOW); + SetMenuStrip(EditMenuWnd,MainMenus); + GT_RefreshWindow(EditMenuWnd,NULL); + return GTBERR_OK; +} + +void CloseWindow_EditMenu() +{ + if(EditMenuWnd) ClearMenuStrip(EditMenuWnd); + if(EditMenuWnd) CloseWindowSafely(EditMenuWnd); EditMenuWnd=NULL; +} + +int HandleIDCMP_EditImage() +{ + struct IntuiMessage *m; + struct MenuItem *n; + int (*func)(void); + BOOL running = TRUE; + + while(m=GT_GetIMsg(EditImageWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&EditImageMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditImageMsg.Class) + { + case IDCMP_MENUVERIFY: + running=FN_MenuVerify_EditImage(); + if(running > 1) return running; + break; + case IDCMP_NEWSIZE: + running=FN_NewSize_EditImage(); + if(running > 1) return running; + break; + case IDCMP_MOUSEBUTTONS: + running=FN_MouseButtons_EditImage(); + if(running > 1) return running; + break; + case IDCMP_IDCMPUPDATE: + running=FN_IDCMPUpdate_EditImage(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_EditImage(); + if(running > 1) return running; + break; + case IDCMP_ACTIVEWINDOW: + running=FN_ActiveWindow_EditImage(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(EditImageMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,EditImageMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + EditImageMsg.Code=n->NextSelect; + } + break; + } + } + return(running); +} + +UWORD OpenWindow_EditImage() +{ + if(!WindowLocaleDone[WND_EditImage]) FixWindowTags((struct TagItem *)EditImageWTags); + WindowLocaleDone[WND_EditImage]=TRUE; + + if(!(EditImageWnd=OpenWindowTagsEx( + WA_CustomScreen, Scr, + TAG_MORE, EditImageWTags ))) return GTBERR_OPENWINDOW; + + EditImageWnd->UserPort=ProjectMsgPort; + ModifyIDCMP(EditImageWnd,IDCMP_CLOSEWINDOW|IDCMP_MENUVERIFY|IDCMP_NEWSIZE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW|IDCMP_IDCMPUPDATE); + SetMenuStrip(EditImageWnd,MainMenus); + GT_RefreshWindow(EditImageWnd,NULL); + return GTBERR_OK; +} + +void CloseWindow_EditImage() +{ + if(EditImageWnd) ClearMenuStrip(EditImageWnd); + if(EditImageWnd) CloseWindowSafely(EditImageWnd); EditImageWnd=NULL; +} + +int HandleIDCMP_List() +{ + struct IntuiMessage *m; + int (*func)(void); + BOOL running = TRUE; + + while(m=GT_GetIMsg(ListWnd->UserPort)) + { + CopyMem((APTR)m,(APTR)&ListMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(ListMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_List(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + func=(int (*)(void))(( struct Gadget * )ListMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_List() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&ListGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)ListWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)ListWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)ListWTags),(struct TagItem *)ListWTags),(struct TagItem *)ListWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)ListWTags),(struct TagItem *)ListWTags),(struct TagItem *)ListWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&TB_PointerMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(TB_PointerMsg.Class) + { + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_TB_Pointer(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_TB_Pointer(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(TB_PointerMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,TB_PointerMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + TB_PointerMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )TB_PointerMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_TB_Pointer() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&TB_PointerGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)TB_PointerWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)TB_PointerWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)TB_PointerWTags),(struct TagItem *)TB_PointerWTags),(struct TagItem *)TB_PointerWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)TB_PointerWTags),(struct TagItem *)TB_PointerWTags),(struct TagItem *)TB_PointerWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&ScreenMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(ScreenMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Screen(); + if(running > 1) return running; + break; + case IDCMP_ACTIVEWINDOW: + running=FN_ActiveWindow_Screen(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(ScreenMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,ScreenMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + ScreenMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )ScreenMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_Screen() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + UWORD retval; + + if(!(g=CreateContext(&ScreenGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)ScreenWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)ScreenWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)ScreenWTags),(struct TagItem *)ScreenWTags),(struct TagItem *)ScreenWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)ScreenWTags),(struct TagItem *)ScreenWTags),(struct TagItem *)ScreenWTags)); else { FontX=7; FontY=13; } + + if(retval=OpenWindow_PGSCR_General()) return(retval); + if(retval=OpenWindow_PGSCR_Flags()) return(retval); + PAGES_SCREEN_PAGES[0].FirstGadget=PGSCR_GeneralGList; + PAGES_SCREEN_PAGES[1].FirstGadget=PGSCR_FlagsGList; + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&EditStringMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditStringMsg.Class) + { + case IDCMP_MOUSEBUTTONS: + running=FN_MouseButtons_EditString(); + if(running > 1) return running; + break; + case IDCMP_IDCMPUPDATE: + running=FN_IDCMPUpdate_EditString(); + if(running > 1) return running; + break; + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_EditString(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_EditString(); + if(running > 1) return running; + break; + case IDCMP_ACTIVEWINDOW: + running=FN_ActiveWindow_EditString(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(EditStringMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,EditStringMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + EditStringMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )EditStringMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_EditString() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + UWORD OffR,OffB; + + if(!(g=CreateContext(&EditStringGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)EditStringWTags); + CalcRightBottom(&OffR,&OffB,(struct TagItem *)EditStringWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)EditStringWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)EditStringWTags),(struct TagItem *)EditStringWTags),(struct TagItem *)EditStringWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)EditStringWTags),(struct TagItem *)EditStringWTags),(struct TagItem *)EditStringWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&EditVersionMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditVersionMsg.Class) + { + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_EditVersion(); + if(running > 1) return running; + break; + case IDCMP_ACTIVEWINDOW: + running=FN_ActiveWindow_EditVersion(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(EditVersionMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,EditVersionMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + EditVersionMsg.Code=n->NextSelect; + } + break; + } + } + return(running); +} + +UWORD OpenWindow_EditVersion() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&EditVersionGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)EditVersionWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)EditVersionWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)EditVersionWTags),(struct TagItem *)EditVersionWTags),(struct TagItem *)EditVersionWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)EditVersionWTags),(struct TagItem *)EditVersionWTags),(struct TagItem *)EditVersionWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&ObjectMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(ObjectMsg.Class) + { + case IDCMP_NEWSIZE: + running=FN_NewSize_Object(); + if(running > 1) return running; + break; + case IDCMP_MOUSEMOVE: + running=FN_MouseMove_Object(); + if(running > 1) return running; + break; + case IDCMP_RAWKEY: + running=FN_RawKey_Object(); + if(running > 1) return running; + break; + case IDCMP_IDCMPUPDATE: + running=FN_IDCMPUpdate_Object(); + if(running > 1) return running; + break; + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_Object(); + if(running > 1) return running; + break; + case IDCMP_CLOSEWINDOW: + running=FN_CloseWindow_Object(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(ObjectMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,ObjectMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + ObjectMsg.Code=n->NextSelect; + } + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )ObjectMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +UWORD OpenWindow_Object() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + UWORD OffR,OffB; + + if(!(g=CreateContext(&ObjectGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)ObjectWTags); + CalcRightBottom(&OffR,&OffB,(struct TagItem *)ObjectWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)ObjectWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)ObjectWTags),(struct TagItem *)ObjectWTags),(struct TagItem *)ObjectWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)ObjectWTags),(struct TagItem *)ObjectWTags),(struct TagItem *)ObjectWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&EditPaletteMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(EditPaletteMsg.Class) + { + case IDCMP_IDCMPUPDATE: + running=FN_IDCMPUpdate_EditPalette(); + if(running > 1) return running; + break; + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + func=(int (*)(void))(( struct Gadget * )EditPaletteMsg.IAddress )->UserData; + running=func(); + if(running > 1) return running; + break; + } + } + return(running); +} + +void Render_EditPalette() +{ + UWORD OffX=EditPaletteWnd->BorderLeft, OffY=EditPaletteWnd->BorderTop; + + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)EditPaletteWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags)); else { FontX=7; FontY=13; } + + DrawBevelBox( EditPaletteWnd->RPort, AdaptX(8)+OffX, AdaptY(190)+OffY, AdaptX(329), AdaptY(2), GT_VisualInfo, VisualInfo, GTBB_FrameType, BBFT_BUTTON, GTBB_Recessed, TRUE, TAG_DONE); +} + +UWORD OpenWindow_EditPalette() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&EditPaletteGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)EditPaletteWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)EditPaletteWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags),(struct TagItem *)EditPaletteWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lcUserPort)) + { + CopyMem((APTR)m,(APTR)&StatusMsg,sizeof(struct IntuiMessage)); + GT_ReplyIMsg(m); + switch(StatusMsg.Class) + { + case IDCMP_CHANGEWINDOW: + running=FN_ChangeWindow_Status(); + if(running > 1) return running; + break; + case IDCMP_MENUPICK: + while(StatusMsg.Code!=MENUNULL) + { + n=ItemAddress(MainMenus,StatusMsg.Code); + func=(int (*)(void))(GTMENUITEM_USERDATA(n)); + running=func(); + if(running > 1) return running; + StatusMsg.Code=n->NextSelect; + } + break; + } + } + return(running); +} + +UWORD OpenWindow_Status() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX,OffY; + + if(!(g=CreateContext(&StatusGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)StatusWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)StatusWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)StatusWTags),(struct TagItem *)StatusWTags),(struct TagItem *)StatusWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)StatusWTags),(struct TagItem *)StatusWTags),(struct TagItem *)StatusWTags)); else { FontX=7; FontY=13; } + + + for(lc=0,tc=0;lc%QM@yux2!9 zG=8KZqfqWmXm69Ww3kr0wNHPXd$_mlFKN$dn_eiMlv23omLyQlZ8*?+DBPO1r+7jD zJJ=rG|F_nDX}_dBmOYQHZLir|>$&&;TkBij`qsDB8cL=|Sl5C78qE&wiAG0bjIoWZ zhjro3d~8=Fox#I4)=9t3R|XLn>*zrUj}gs}XG^8x^kC_jIkE?QvZaaq^n?D9ndt|Q zPfi~$c;J)kJ~0zYCs1z^o&JtJtS2zYI#`FUPWX@9<-Z*@ZO3iJ@we0^T*E))?`0Fx zee~UiFWoaN6^}@j!dN~P-*KQcS*Z`-!q_jxcE=K7w6dQg=)J!8u#fR5?`0oleNkyr zD(8#!Y1+R$gFq@en9QyIN&qfV!$oB45VZ66ZPgLcm&vB1;44qC0D7h;Ss#T7KaM~= zI2eiR;#)nUkMdP}kO5;kU$v9*{ORFV`1tVPM_Z#fo&IYTA6`x;QoWsgc={c9x;Yom z@0W`A;L)>}4`05S#S&Tc|GvlBQ;-qv7IYDQoGyFVP__|5L>I&%N8mS47oz4JB2^E& z6A$Z{rzt{Ea2PvvRM~DpmAyQs^Pe_VobhoNN|jqrm4F3RcE`fm;Re~ZsnP%-SHVWA zWG$#N9EnAT8}P6;Rb0W|ATp;)Xm2P2X7(_;>uoG0`W4~F`;~Mgp4-zPpDyaujr~1? z&sOs8rPLi&!7w}6y0~-zlK1*_;ozYP%kA-}O4IkSBa&x36rw`6jtbjtsL-e{aYco$ zY-tL`4wfpF(ge%xZBs!%c;%31 zn*ssLn*)>E15qMtLy1N`_+?UJSRw}HWl{)As2Y*qXMgVdF+0=I!9KmK_l`adxpr!{d~c}qlNbdUylnN)PLmhu0_%w>!9rAB6RwS>nWMJ^yFd3 z?7R?&nhU&Cp3T^wK#ToR{^ftdN~~|Fm_In}1t8krXo)~7nxjUT6ZN1{nzW3y;yv{| zTfD46iyazFV$|xJW>aiC#=>-!=B5ljBl(daP9TEcnz*)?we} zgnc-c2@b|1RF#dFYwW{?>HPkpH16H8lE8jskKYe|@Q3Uadkr`amz9KHJ?v44$W&3Ru=P|44i2VwS!2~4RRF!P!q%u_w!&T?+`qqk#LGkx!-LJTB|NO-bt5(_ zxqH`q{Mbx?}tjoV(I8eX=d89I&4wzbz_IWP{$5` z(H=WcBlh-1eGb&PYkurtr?C^gE=PcKp9UH`RF5T7+0dVY_Kszn{kZ}bz`EeOlP=)?FVboox z8R}v0rpT(Aq63JFMH_hN7C}8Ijj=w&snWU#C|P9@mx4Wh5mmaB)gkOW+o7}-;YVDY z^RUsBGf=cT1c(O^tG=z+tPaVIPB~||_CsmX#iy>!0rnvq?8C|32`4z*Vjs?xj;_+B z22L=z2{U2eWrKY%Y-N?L73CKDTyT6`OYO-g6ZWsQ!9LtzZzI>(hb64;_VgvN*Xc^X zq3TM%(bkoEx@z!`M}Hs2Vu-b=E7i!W?W;D0bp}rvMr{HCt}9Ir-X95Bi=#9;u#|Xi zMLB#TziwYO5>bVng?Z+YtfcFYJ6Uo6;Y)>R^Ho#kQuVB&{b>?vAxP+?DtA9;imDWSyuI8ckmf zs)T0BZK~+@+I-2mtz>q_QZ{61Wn0M{E=+lwEcI>WC9EuT;9zzp-Qa1hqe^Ga>o(nD zu+b^+YWFC{8ru}BZsDiOJHlEo9f^dKBUT-YH7Kh*w3meF4fO8_G_>HUn-PqG97p!3E*o}BdA+> zrL&%_(>!r2GJyc^4cgqNmDOBuA075)yLlb<4Xh_!Y5m&flP2uV>-=@tH?SIZg?-y> zxE_1_a^yML;2;E3%N>s_B~a2O(X=&R$=OBiRWW(-<+Azxq2ps-o^3E;@5pn~kyJbw zii{+~CQC8b*r%nbVtz~-DUEw|v5pD*I-bL4d2~D{vL}`uj>Jr%UYYy%y~npv%<|9^JH+~S<;#4JVGFd|ULHU|k@QgyR`b_dTWsqjePS@^5g%t& zZSG(AsR#tqIm{-6hJ*YRP%|2>)5cv#^9i9t`Lb81cmOUjChe4{Dt5k*Ei%khNsNvR zS}){B9<8KGVrF7LE#vp@#i^p|NUM-gWvZw;Qr=VVLR-0iG?R@D#X`YsENQY-wd|>_ zb)?u6ukJh|oWvtdR-`h^-9Iy3DI9>lv{EQddXg$cj&A*4@=vQa8c(-vG`!nPl`lu% zMGGm`rk+muNc0tI?@fF0+-A+*E$7FnQ3E9fbf^^xoRJ3ugV2uC26n+NRog86E_E-99{K z{gMv*wodyppf)8nVPB_T;&VAV?AtnR6M&cDQI9=-Ir5xzBp6O6;#TKqT8cq0-TeRFuXlUfncX#vU7uKp6TpoJbcS zZ7MY+b)>B0IYKVY0e(|cBkbWxPFv7yJ5sjYJ>HbB_dE!~Zbj3L=NHtm@(b;;viGWk z@ryB59$EG0S&)#~QNu-F*C9TU&Rx@Kx^;FH=DwH^Xk^hseK?;)4j_O1x_!x=g@ z*t?g5+NbDnQLu@-n1PHB z*5>@0Zp@(WXIOuB#G`qcuKw zuG?Rd``C=4Z_dR%eX2I$N}Ne|V&qHcDN-6;$TAFc$;Pslt8DdzX(3%|xon~0<)yg5 zm6j*#v>Q)hO_o6$4!Z2o6Ts$q$#gMkH`cK|{#41+M%`i@t40&Qh?ESw!SlELu1l~mbX7_S`i>|7oJOI?eeDy9_>pvrJ079FB%_`879tm~+tO2oPrLR4tf&%2^R zSGF_->JOGGmC^*uwfl5E6&^ub2-viR-NsgA`0a`c-3gjjg&wARcVTjz%yQb@I46X{ zm535nJqERhM$*+~Qli~;3rgs0aoVTU7#h2`f5H|g6^yRYweC7w9LITVfj}b*ek)!C zqk^{mzI_WK?qk1xm(S2~TPhW&8MNoeOEaDyOsgZdUk6>@3t=mh)wZh)vfL*uP-{;SH{d8Ru_HTE>-r+!Xx7fGOQs;&ob@iUk zQn#=7_6MrF#lC%(x{STr3qK2fKgISD&#~%-NvmhGF<-kECeT`S@m^T9;Ha`aN-s=) znifOug+tlcE=W-p7tKn;n;fl1VOy1lTjdA8jUAeWT@9u1_C+x2SDAiC-I?Y)?VV}7 zT{Y_`w)v6;oSZM| zsG`n&T2UoAG?a;0>s?z&m0a?`foaL}YFEv&jI^!}ZAHJUUk=-{>!{p9s_1g{>LYI} zvfa$1SnaM-MX{T~>?HAU&cXClF#txoaCni^BrCf)igjYYzxCWs1A1^_CBW`sUf+I^ z?|o)}dZ?~XZO@e&D&Xb+q`GTAS8Bw*Jy&}9h-*32V~=0vHNQGO)Lw6`A$R#tGWKGg z`V;5_R4LY~56JFKMVR$j1iC&z+h5VH4_F_TrYeWP{6nQ;sXR@yp<_5adJ?^W=dTVR zpv{Kj$5+&m^;g;>YtL5?KC&K7jjZ{RwX@9_N1!bSwY)jh_r=hEoA-c7Y1k(syW`2^ zPOG=Dw2yJJ*Gou8U%iZPDV*a7M%Vj;&5x=Mx-^`q)SI))T(yJAGm*wXyy$UU! zhJAbYxXS|Dkl2L1`NRStz3_UUiljs6C9HHwZbuGuaFf3<>CfGE55s>iUNZK|9s!oC z8nk-vuvvg5_SRaw_8tMv)ik0_oj$LDZ9P<~**kPfNvJQn_%zy9ekB>~(Vp z-%{rgzD1|G?#h>Uw6dMG^IBa9DAFeC!RmVP`nPSkmR4s0yiL)IsusYU^TV(-mrbVX z^VR=qrM4P-g?Y9+5SS8U(&i9!`(ap7B^xv!DlL&SBmy0)V3hGC}4 zu2?2EXtx_i3#pRZRhTa9_w;7cysfBq*;9~R<(VDTCQs#HL+MB)oE*{fE$!J-ezMl) zb+AptrE=lH(j=M$_KblTRVj?&F*gLmyz$b6huIgAqnoL%9Aj zkxA=X$vTb5o_*4{l3#vd|QY9-RBtw-y~$a)w2_)PsY<m2&=mFZWj7+twn^}=Zm(m z#+b0T(2r}_x98+q2)$u$0;2|tIXMmc_MF_6!yc``k>|AMrf{ zQ^&=B*PfGWCDN-iFGbF!IXSF_UaeR2b8-RfG-5b~PiO{cPHrTYut%VULVHAQu7w;78lS5f?0mY>QIKg3kT0Y4kgms8gndR=EnXVKLVAix!D0#DMp$y;1 zZqJii)IN`S(ReVMj(U7W5J#ZBBB_G{O*#`~#Y;X|63QKcWOIgTbwz(>XC%#-Zzdv+*%*z(7_4OXV9C=PUB37s;!>09E zuCY%`QzU4Pl*YX*Y-;=-*w^tKVJE58`^cVHb~qBZS{C6N`^d3EWmqbDc;$nr_c}@c zMOD&&u|4zCO76Zo^HL=JHMtr~BZ;=7TNRxDDWl~baUVYO6WkLT4yLX4glV)DnBzV zjeC8>(7|*Xrsq`&_4&4hYFW!X9B9_b$&&$cdYlJcr2B&7I|DtJfUJ?YRc0hPkp_&T*0ZU z_n~BJFa5NjzFX`=xzg0}taQx72RX~wYx?PcNk6T_-a$iciM{pCRM>N;ZEtN+eaVaH z(apr(BEBauUyxPkA^cS7Psl!zq2OrTswpgeRf5GlPB}rZj+;bKKLYs#uw(rTn-*Ia&1j-sd`=6EN*3CAco>R3QoTGZGu3{RRNZJg_|$FDj~kdfyM#*?9) zm=ew;(?-VU8vDUwY3wjg;+!t6>fPjxIJo$2!rrm3-9=~KMNGI;d9JbFC6*m~c=F4H zy<=aS3T85)^YceKQ@Fi^+n%jDx8=V|4d6?kDhW@nxqVSPiz z{K4sW+Th*xUh@dlX?9j`J+R)(OQW7T-|p+NSj(rA^b^TM3hM{577IIEb02KIpTY`( zigy=p7<%0vi?w_@?6G5VCiXyNFcL8>=W~rc_8RhM3J*&DK}quFg1&m}tt||-UN@19 z4kt5~b1iPMPn2@eL#1i2&!=b-kM*3dhW$t~jE$aJqS+bAmBz89Q(Lp6)2caY7hv0& z4#s0q(+*opkn~5VrE;)XIOxs2w5YSK=Q-$W9kEZ3#v|brOq1 zTI2189S(RuL2Ky;nUg{Y^frTldT)-l6N?u z+50;vPkOi$_v>;PMAI1Bs}dDq0jE+0KOEW$>{2qRV90toaVx2U?YS~j*dxlj3yO_Y zacC<<65H)ST1gcmiMMwH;Z#v=d+DU2XGOoF+4hpogZh4fd$zR@SvG4n*EBA)rAsgrilnS`-^in-HrKh}*qAisVa>ScTI%SMwWmuu za(^UrRp^qIJ}iy3>7uuVf82LJ`#ov^>~Z#MtS?nALCaJrNUQkh8~!!zKTATOS^AIU z3zJJK;OZn&XG}YWJEu^jkNMeFebI^r-FG{r-fKh{`N3WzorKOd8;fLeWSgf?RR2sm zE1os|sdkDy9Cn_qPwmNHgjWX}9L-`X&NuD5PQzaK>97x`QkIt30=G`qVTFAsyPm>* zRie23&_NGD`s3}Z51)_P9gJeHmCkjLce()4wS)=x^XafB4=dSK0N8C^?{$!`r-(#^ zPM!h}46ET-cL)9uUEapFq@sh#TvVEr%6TZ(w?Z*RH9%Q{L%*pt*8Sc+9IyM0xd7$& z2E>mSrYq>QC}}vmH>Cv8?`S$xmz1_;Qo=VQod4!JF^V1E6;m^&(2=^=NQ{mQDrxZ* z(QN%!5Ohi~WyXK&UM&@j*L`JbG&NEeKOI$HjnZdAY4z3VW%zIPRrLqB^H6@g4i2v4 zFwn?E$(x7r%?g!Ju?Y+rNQu~Dsi^KZpTZTtdr`8OUXcx|C_AA?qwIjg?u3Q|0`ZgE zUcG~{P5f7;a=a)(RM&!Fj-&f^7tduxmkTl-N^6<+q@t0LR2GXfHm0J87pq7U{KfH= zS}cMrn~v{NJ{y^&Vs*iIGpHDnG;_l=Ip|jQZr_L5XHYls#D0_Y-8(ZmiEYis?}JzS z@*V<_@j|7UuU<8B5PS3M81v(QU$6eV)VZQBvj67$D*JLr2m2%T|FGYok$`kSDoc}4 z#px5YpFM)W8lk^B5`g3x0O>Fi=v&XuZ+wY6cqq~+TVS7s_K3tJ*)Nrj3}tee;I0V6 ze}{{tQA{fY5JkT_&{i7FW%5VR8G88=(x`&H?`~`CVZX%i-|2FVJ?xmA^7BBL0sAVj zzuR2zL%~D{$C=unXiDO}%X%NmqdS4T@7+sauV^3GF?OA4Rjgn;(MW=9_j19}Y;rId z+Bur42hGxA#zFfKoT-#@gZZ(;Gu|{926{B~)Y+{b!yNQBQSSvkFm|ZNp6sf|K-j`au?IjN z2NkXZ6^02F;isoUE*`^5ksSKpj2Sl4eQJ_^4|GMiRJwE^NY;J!U?(sh)Wb02&-xIj zN}6aSmuVtvr79)wPTqF`kS<-@c&I_!7)mCx37lzwWOY}&ZPdZx?uTd_y58X-eeb~6 zFV{;&k#HYT|qy8 z4D-vwLfR63(R3`F+tUQ~9j)}xhj;q7P%iXvE#2vXOLZh2)Y%!Y%kAMybv-)v;8;@^ zquLpRD%&PKLy46JGGKWe> z{ltts+a{<%)M=s&`}GLy6G4OC>GHA9O8vM&e1yMGZxiejD|xVUe*oi#C&joy_;Cc{!9h%h#`F6f zW-ym5p_*6s+??Y@c~(Xu5>a2hnW^Ksr!aDmXR3uCr%SWrIXOQ~U5h~*%>CriThrq? zB=GuGKc0IEYvIgPX?8pZEGfG-RW7?y8L1Mmpvvx8I6K^+B;sL25Q;`kg!9ODTWNrr zU9gcVSqrKRM`F=olRmvZ$2L{!@wmKSoGPmBUoVpqy9?u$L!KXF zsFZjVbl7e~iAEBw3rcjt?4dM;1~FKwR7zOK)Gdw=V7a~iRLQfOIdFbPU2`2hw%O35 z(YVhQJ?u_3+|#B9r-!B;WWS+k2ib3^d#q!fU;FYV0$gTL7JIH<2&}b(+BzXkJNTHT zc2L-D=CZMD++?4oph9Cf*armgyMCQeBQ2C!J6Oxf#bA&x{6qgYho2)e{EGajz}1T3|HE!u7}tZs~anDvR>Z`%84G^&JaHJo$6)n5s$$H*Gd)N{x% z$7wow6?}-VrPiWbKDq9HAMo8h zpvfC=)_oK9R`s4^pLVuwSt9mn4^JT1V~<~^bI8DRLh)oK5)Fo(hFos34;4$(-c;?V zoWq2Dot#6frGb4I+sqHQ82fMzJIZ6GK0kg?@~E<*9($}(uftx}uMy8_06p3ZR~`pI zRsB4StzJ1N&WZ6b^om|tSPp#}@_m=0XV6&=VYi;>lCZb79O`20#QA%w0nw&xsZ{h2 zm&y-fGa2z?7j~=P!E)hp{-CED2d7XsQ`h(Ouy^|Wm6qoP{L}YkRBP#rWV228hoMe8;auY#(2zRYpu0Ikw@ zu^%BH5c@wkBh7eqE{FJ%em_F1HTlp;M1omovb2&a&{jzKikHd4siIhsvXhWqt0pVb zSU5D|Xu?92b$coa&(zPCFnM|(Vr9h!PHL{xk7_zPrA6d2Hio=zW!E*{!!`4Hvh0e} zE}<)(2KH7uI<1eeh2Hh7W-~9h#^V^UKL+b*^Jtvca1$Mi2TD+(YsnY6ZTdXM5!bM*GM`Xi3e@BK5&hF zs#KV)Nae6p%pdopszTO}s`K3 z8s-b_PqRY+mSwyOa7ooJ(#rSOkC*r1b?HP-{XU%PiJZQD?627#{TP6Mey)iPf?baR z+WP~Gm1N5J3#`Zz`zAKVc8z^|Uu=QBGXCiO;U2$oym)u2UEQ_=$Qrf4Urdpt;H^8wta1IEJs@cd3k>t z1NJ@Eat_pOqp>Umd|Q(^_dF*yS(zzhA>n(}BF-e|oHXkAMZM?CB^?+JgeA8;CzPY* zl3uR%Mtpi%=rA`40FZgNh zmfS{oy2U;r9nGc6(gBa+ZozZNcFm%%4GjkqQKwO@`@S}mJCvV1=xHIdzTRW*#9+%H zc#drR?7t@mju$5*>}Si-Nz9z4fV#stryT{#?Bj%yh+2c{!7<#5V%O^2DVx0Er{ zkq?IAkzm>Z3itK?BcWnW%9rn9Z5b2t<}_-(rHl#e?d)U~ax4M+T*j;W{|L}b_1;p( z1opckY1nNlNSp6&vB!e0k6^bMm~DEs+8gA1&h0Ja9Afqjz;}&3F?(-=Z>sl}at_&u zv>JPwEN^44ovMJja%=2q`x2TmH1it8hw43^$u(!EK%1A0V8&3%ziuH9A*z0)h?BnOPVWYOeyvL6^^bpQ`=;_$@?V2@1NO%)uulauS%-m_42pZ~o6C0%Vy=9W0sAK`uph+{n@V*1yL;@L z%h$fdRUcx&{y*Y_jQqaA!U!1x_t-a=@2W@G{sRoy|BVIqki(rO6qk&BbNSl8`l=5x zVE`B+z;8We#dtl#0z72|9&A|rje{7Atyg7i=hb{^G*a*%AcFJ{4ht*>bU8kAf zqkd+x=~yD_2*i@GZz5mELRWX70sEV+vB%s>CYE&6EG!B8Ch}d~@H)P|0sD7ZW1k77 zBMp=~OTxa1d>!9@bq5--rykWPV+P}~Xd)gNa@H)k$G*9IS2w(lZ*Rc_26Peb)KB(j{Zx zFkkyuU-cmd?ElCP`(0Ov=QPZB)gx^G0S4^9Y=?b=^GcUo?;GZ8|LUtg#DM(|EU?dD zX+$tQoJ_|aaQIyJeQk63IuyCugACaJ+!lKbgB*p-rDESG-_;JV!~54`-|>12?6LS6 zYK2%hYj+$7&)z-u&E@Ox?yEh>fc-n{upf>%ACk=Xv_@hVGA75qVZN&!V2AfNU{Cro z5Mci(f8#U0-&viK!Wja@LSnJ?97S`M8nuM|0W8p6pO8 z5(k5_zuaTrRJQg7uKo}M_BYsJ-|$P9hJC|q*Kz~{_RJFdU@8)hIPM|qTDt(AlWitj z4`IKZO`3U5Q}e6t>wQz%dI5cW4%VxLTnrWzTOEdl#xvh@)5%o6)x zJd$l>5WWQLo5|Kg*l%Zp7CfgJ6TYQj?_tY8s#6B}{st@T6Qd)84SL$8$oEZU>!Es& zMV{t*KY|nd8eZ<}eN)*sEO!-0Fx30)(CC=toOmpg-4$!F-qt<#O=Y`^p>6o;2JCOJ z!k&(ai#B39?y+ww+lC*oiX#}Xr&$zJy^p4Y;TVhqGfo3h_t-a;?J9=0;j0_4-;Oor zChT!2N-(=O<*dVZk9||wHvE899KnG74OZBP_F`MRM&IZj`=+vORP1UFH(<{!u}{X6 z>D|MTNZjE|mwVpi}TkNb5&4q@cyys^{JACdEu%~QCg6W+OxvuFT1NIg> zibQi_%jyO&xW~S!Y#Wris)G&KGxh~@UptZvM=)udX{B`_&096daaH5m%*z|FzrhxJ zv0=V_mhS7l$kACdZC~CR2r*#4-4^?yba2E;*l~|N&(Xus8+B=n{jQnkWU<`v3g{G? z%61J@Z`)50^50 zM-sW!UkTJ*1?3(6U^iHI0=f?-9k5sSJ;A21)9jPt1a#rY5r_u|9mif&39xs7&*GH6 zPIfDW;*4DX7Ukhu@*p2-n5+}2-cCL|{SG|coQvo8OT~LA)TqtlQ<#WXTAE_6lEP{~enszrUly*XQfy*5qET zl?mt%9f1sEB9~4P#xr}{9mFK?Fmgfi?Z(phCP}&Rf9HuhS z7<`YTx9U=QEaAry*uxT$bTFQCvLA4i=eYD%C(m&Sk2h120`H(|Mh|!5zAm@NpDKA& zmXO;U@x4wRRkm4BrHQRv!HGGn0c4lcF;*dEyQIqAHdPE%5o-nEscS0@mnkE9E2*-( zFkU(2`Js=#tpqIEN;3!A3*!eR_zsuK zg$H-|n69jWuhvUJ0elb5qtx{Q zaTxW$`*HrQPqA;&o&0=^miutuMt?BtL1PMX{Ev93cCxMH(}BSlpSht?8O@h)B_Z@5 zm~g3fR%xyU<1{%ret7*N^tx2O1bZN5bOy_y1FSDrktVzjk(a-p+g7apN}%UUf}CXa zLvy=gez%d;Pb?c5$u%(jS+b7RZ1q!XTm5j>zM1K)v9?)QV{y7@-Igbk?1IvXVnTZfhmy3za4&ayzBt-c_^8 z?Ipz5C;6sfqY_Z)BK!m=Cq9;_Tj>Get)q&x1;i$Df@cQ*G}3(Z#@(0 zG_MvqB#j;RGW49^*VTJlexFT7qYeU++j>u`YJWCYI(X2tl91pzHlybDS{ZxU!XqK6 zXe#Cf+e&qGwhtWq+4@lc5O9)ol$y}oD1Zz9jn>MvN6kVK-7MSeLCbn4q@lY7T@*V$ z(B%r)@$q4rwax4L+-@wOnJ$zjr|9$1JIG1?>17sWPll#hXOoB9umz zc}uEwl(@Eeb)-tTO%-Y@vUTO}v3(dx%RP%?T?r1>aO)@JVJX*ITUU0nEs0Wj zB46|uxDf)|nk|)z`}1Y>cdAsFtVqi5T=w{sx3z%0?R2YWZ0v)!Nv4wU;}TFNlH~_t zI5B+MKLIm!0mP}d;=i6!sWWx-z~}CA8L0weeNcnKJ$X?#>tj0XvliH=n%FJZCH9P) z>Eu%RqEx9!-n3N^*y~1qee4ae{-&#s+wy^LKqtpN+JC%<08Uquy9(!TUoDnQ9jtR7 z=k@;j?*V&(wTAB`_q~q&CEbM|4nfK_!+cl|I6qR6%P9|C)E7`2Q-iJ}pX=a*2ie4f ze6E2Hx9oTg?y&3-`SAXNx(RY#zX;PFl~X;zvcA{)2rWFZKZnKHSXq)L{V6OY!CH}m zH0^b~Jof#9{*6C+wQwrd)wvH}Ll$S;5KQ^9l-Lpfv*0&f=&7j%fKy>RdtWAmO{NlH zR?$dCiEVkWvpCbZkdEib7H1f^@C>T-7k|2y z@LkV-iqv>&uhJ(Ny?q&K&1wb1%KnP4Z`xCXk~LXw?8;< z0bFSrwaLdr-eQhLwJMzl_S-}YP%L^0`*36^I2zA7H3GNX$3qy~eX8I->i*z8>|<;} zXw$i7OWPm3UQ<EZpmNFXGMRENE~;!ocn ze{eMBAO>-c;2Qf6&J-k1?=)z}-n7btcusIMo5VdCkK1xy*VqSVDkY4FOGVEfK47Z% zrd54}{m^JU-oW0$HTFX@#iDFx<xz*Fc2J z`GW^(U7tshx8U~=S@pG%J)!t$Cbp}U*hh|y6=$XkN7~pYu^%~BaX*QFIvG=ub27uh zbR-o?IG8QCt@oMSp?q0NNm!&|-7QX&I)_XR7cYBNN`sRSF^^*w!A3ik9c-P zs|ovOt+0>Bc1GyDjloDFG;CcN-PZeDyl`0Zt8)Whto$bI|JDlokys)&5_=#L%h;+Y zU1L8|m@G^b9+dpZ)QiX~eXVMx$=L0_qwE5&+PBkwH{9etQz_$&owk9db&FrqzC?dP ze&^3zEmoQxAMeEcD~7fHzJC1|Wz+Fp`2FW_*ZB6)-mpF&`T2a%>|~);%cf(AsDr%2 z7>0}a?eX^nj(9J8Mr6$rV;o_OLK2e-lJ3G8)J zgMQb}_WmOc&|CY#qR(9QhxJ;`#p%~})bHA9w7EpD+r$PWkO0UOCV)zz*AF&6Ma*n- z**>cmSOQ0#%_W`HYe5$w%{jKimeHkma3Ck-HgAqF13d0ABwvmqPiZy5)t!x`<=}3XZH}5tM z-ZoSjm$7%LXPLZ$v}l|EZWARdfna-n2= zbi~?*q;-6$BNr+aXC^#sRw9%l+WKJXvkf{CJynL1>5-td&V0#KG3ly0f0!Gh4G%qS zTq{N%s$KI`y*)qKTIuQHaC(4iyNCA40ffEIrkwPI+v?YN>9HT7gK7W-^DCwW{|B(PU>5*_Oxv~UbZVE)*AGfa}i^U%L zC4AHe{S;K)p5D|%<;Zy8TjL;+*Dpe^ClilhJns7{_Qm;aoHa_>}#biqfXWjc@|* zQ-~q&y?%b<3uv475^YmmTXG(I z$M4|>QOIk3h}VXKiBQCT&ka$S>-7zx{N$KaZ2nExUQDsRLB+nu3j5?v)|fB4#y)wN zNox;JH(w;MkESzJuRn%8b4f$ZWkK%e<1z-AoZX~=S{9v}po(|@6YuP5H6I?hFh>tC z(Y)pwdY~10>lhx^Aw?gxJRAxpy2p*7-NW=IRYrS-R>YfdKmI0|!%n7m4?|6hICfVz zvQpm!k*EOX`#58?n1H|JjpWk_A6f_49SseRr1$a|n<;=HV1sT?yf68N#YYGmQ$@SO zCVd-aixWJtUuS*U{C_pKId!;nbW)#z_nr;C#p4Q5AS`Z*j-L>*NT&8-iBnBK!^_juj<0Q%+ei`dW>Z4dv~fJpai zRPZsG3W6j~ST#ol-a8of@OR49BVmFHBasB4iB7G6Hr;{Mel*>`Z1^kX7bQ~WU;T?H z;uporuac0CUj5gg5~*O2V%f@9XS5Pbh9Ws7Ezf|43Z~P%CzhvDh%qJ6BuRgk^}2mh zI_fV}q~(M{?#ks_k-?^r%K`~6c$uN#AD&Sf2)$9T3F)ona8bej;PkScc(3w`pdN}$ zX{J1Owd)3lLX^BLaHvr1ZaJ0RX1MZrMXD?vkjgmX>}nt8tt)tWYemW}5nCRA<<*Md z{?g2{h@8A&st?O8R}8eA%5F1Ud9?yZYb;BpV7%a!AXj{lE%!!(y!=X`vI2%<^eUs1 z<0ZEhyH)Xd*(;$|aAj7jzG_MNtRP-NwIZ}Uod<`G%3ki_7=MvHoL7WOQ^%J?(iSA* zWv_$=65>##^3%(<{jDf_c?ap7qPs+`z`+g6W#AFwWv>7z200XBon5e4Y(a&0n}sOb zzdVKGWz~^s(CwSIJpKynL89ftc+0=B$qcD%8iFjRLXW>{w8fCo1#w&;X zW6Myo_&#n;Djs!EqzeZRUG-`q3SDWnB3qhbrHQLk8PrnbLRVM=*|i)EWLToQxO^?d zx`7OqDwV5VE962~O05VLOOsc7DoAM|qU;sZnex}+tXz4)t9KX0t{Aq-p%9Js>R}+4 zBp17)8VDNgp{ouAW4zdvBVuKy%Ge5O8E`<6a@osjU*Q*@P9m0go#9fs@ZeR)gO^&G ztmKzNS%R-Mbfy9d?5|xZj9u+lTAorhitC_gc0U#^aciHH{eV`$ln`EJcL7sE%VeO( zO|6D;Z*h#(Avi|J($IYqI{*PB{Fu}p^n%EhjPTG3i2=sq{n zZB8#=rQn^ZY`3ZMinMf~EKOf^fpeLPRcWR+kTe4nBhuuI8g#WEc;U-DXX+OpEkm(P z{RcO9UqL+x5oVeC53B^_9oOm zr+vtR_eyCX&75|7#hQ&$_{!)(&UzR>HBVkcdnaL@)6Rc`V91|j+{&$^73`v%fmN+v~(oktU zO)?cpWRuDGV31ydy-uV73!n5?N~PldeA$0gOm54iy&tizr_v~;D2(=zOY(gNZq_9i z1^SDH>57ttQaT-0{u(8ZP&}3zOa{|oD*t+224ls-)c#Vw3=)sOZCl{pXgNP#fGPEK5v^0DDb9Vt(E&(-^JpVcajalZ45r=(wK!_ov}+tC$YCqbA(0U-=d^{J<92cCsDJ+r)-LsP^Bgh(ma+DhxT^t&IEVKQ8r?G5<`qP zBF3g@BoRpmvvRDhQE5^t=PQPo`w(+IcB&oC;(?{3`SC0`#WdQN|Hy5{@f~m;Dm5;KfT#m(& zM66ggGD6?BNxu|Gj>C~eoXqGTMcK%sh$(eB1|hjYY#cbkTTS1+V~6sS2POZ6bRVIk zz7-uJ(i;iKvgiVGa5C<_z@#GTi>e}b zhOuyHBn5IzPlKQNr%Gk5ro0=uT%+ZZBnHes>ZZCJrb-1`c%yWy3I*PQ)V*rz*oe$G z^Nf4djLUpwjvSMC_y!&m5(J)63@vb@7pP#_iX4k1R8jset^Dgm%tQ67E94Zn zBE@E&?_d(b0dK#3YS#P3+6OrVu+xq0lM^rOVIWD#R%|mH4QB4lpGE_z@HPV}MB}pY3A#%$i+g4P5ur15DLdw#` z6*9CjE`I}F@wBL0_=K1-CVvCLb+o8k1>Z5oCB!x)l3Kj$6KIiKr1Vc|<8B#+enN~o zdoBKE>g|oWl3cVUluQi8=qPuYC0rjWO&%!Fnd^npq(3dBU8P=7>)f1tP9AdT zdl0HhwqoZ|O|pHhuB(~myW=WCt(^Kkq<*a;(}MY=P*q})jFyAGfohN$av{n18hO`K zh(Xk=3ub>qTF>y&pPrBWWgPL?*ro8BlkOY@JF#wGtjA$aKDRbMLS z@b#sJXq01JD%F{7^81Rza@C|<%)DN#h}RN}4eVsP5=HuSTvri=Z`4(YDe!Y6r+qJd zt3I7huzkHgtt{gj)4vbtsW(%&eVq^~_eG*hROCrx4#qdoiw!f#T(qH zdxOkKFr6KYWk-UXZ|m#x^hCZ~*VM5dM01=7bXvAt(T}wbjqQWa5{)~Clcz1(0);t zf4rPOTA!LuW!p@tM-!^-bK|HGef$zhGyc-p*bF3B@K^awP5A1D3VM7i@~FXxugY&^ zfkhc1@k%N48(CtQqVW>sl}T*MEth@|-dJBhQc808Gd*p1T1vX3SlD0Amyatss2s~s zekdLk<1aZE{X0-T{;^_S8&7%4$W6l0Ayen_iZ)TUk|Sb!`ZDt$=5yekG6GwE!( zWT^<9dfrF%c`I>OIem~5>sr3sqmnjX$3Ljdtz3i}3}zxEyu*Xt65-P0etJ`qVo8pt z@)X9WFY|81N8g)OnfjYk@>` z>)oSV=BL8#u8t1o$3OWxkNabAPr`j3?pttl>d!j3jwil4EY z(L~<*dBzey0Gb`*PQS^Y!YLl-hpaUhl~4Swdk&)0JY)SR=l#zD#fv}_h|-;YlRt%1 zJkAeUYc2)7%v7;ZX`=F}e2-WQ-`$CLTu&7(Apl8aPVl_id3fTYJB5=!g;PBG4PaYx zQ9kq{y;UGICmj9OmruWyFp5XNTUCA?dQC7sweGFQOYnL`b&1^Tp3&;v$3CXjJMvfJ z(7lzHK3^*59@MjkQQsC(@90jyuVncOdSM9Y&3uIGswo8cg;^z_1kDLJ`baQQ}8H~3ZePvGc|`sCyq<+T#S zHS}q$+xQLb(O1&mgoj%|34f1pZ>-I+H?bKx{Mo_0B0T3Tt(Kjmm2j zuAv_ivw{s0*rV?Qp;h+`vN;Ji4;PT{&qCVy9HcJAJ%!&0S`pVtyu~uSpAP+GYHwpC z?9uP9qNUBjorH=Pt++3Qmi$+!^SL>8<6Hpu03@dXW4N;b-0U1{bfNoTy#a63xv+zQfqNwlH?b1;*YDox@wf9p3$`xPPq5-u;C+_SR~Ez55iXfIF+rIhI6$ zH({{9ZM|^)plCn*`X7S(C|nqBw#xbgRZtSH(KQFTeTN}G$`kL`kN4}x`_X&#vGeMeU4My|(ukd8!u$4|>kLw^)TNS0CRJgw2Mi$Xs@iJmWGateHT zD_k!*d?f>tOStsc2kYO`*4R_-822Ry{eb}ej56a_qB;e+Y-&_b2$Pp5<{A|)~f6pxGA8t>2Ip+ z{(!jm(C_nA$Q;_;PTs+gfsg1XaHk0hG-&oK;9$S}KE?{CFmr-?H-2|v$gRI4n&n0B z7q8;|;O@Y?y&tXuKQIjzhof*eS6zNcNbk7R{OZu>mTk^sE^G7$@I|@VDtjwQmR(i$ z5!^Sy#qj)=A3)Z}{kFfB??0)sd%LS#R%aHMf_?#E^kt*R7<&-+Uxqt;9vXygsIs_s z+%4Y$2mQ9Y2(4LqKe#*ad{0$FYXrZSg8ne_;MBa#{OZtG?QD>#&1H>#PZe)-2=%Fm zQBZ=hDSYOJQk5(1Uq4Z0&hrZ5~(fAF@?`F^k-+vBuA1Lnu>f7HB_cri++3om3mHFX6KoqdJ zjOdTf$#owH{mMrf`^B$-yZtwCG1*-cVXPn2u)B=t^SX~b--i4?^av=8JC|mScbg1b znV*Kfwg$kaSnh2`-#&Jgtw*Kn`9DF4f5r13RuQ$z`au=9*8tM^k;u-u&2Oc|*U%3s z>meLp%^mu00NU5XT?0qYmyJHM@ar9N^uw*zONTzKZh<-0PRCDa2K_38aX4b$eZqAB zGG9PAR)rsHt_?J*^M2%{clf!gE*<)HtA^}8!WwS9IdWpM|&Uzbh?24Sn+pHmi@bM&BxCXKs#l z4#3Ix{su@}<)QcymF|9kv3u`@{fT_{D}hVBBOiwRm~vlgK1w{LGU|f}dE#LH18@((JqULMZW3+~+5=f0 zs!!F#FN}9N@(<#E1P&a64Z>Z;OG973&eHw`9MJEWW4%9~!_WnHIDY>t`Of_VtoLI9 z?$0{3yA>rk;y%XwO*>G6$Hkqko=Za?3s;kk-`fFwB&MFI1B|%~&pq>C)%dMA`c3{z zx+r0Xg@Zqp*QkeFQkhpFk%qpuM%bxXXY?th;1rC#aT|2`w=#Ac5PBmJdSf4cf06OJ z>31r^GAsaJduP>tEVEf*o*Mefq7&yAbVeVcjGVXvxH&r~)NY0j$X^vsp{O4@Hgbrv zYA!wc>iTwvw|7RLCtRq);99ue-YTf&zzaqS&Z*v-|C=r_aN1ot}mng0%;ZQ-}uYpMBZ z=Ty_*c6N#!m$x?hD$hrVtXEc=4((P#Mf-Xyq80Qb0j-znb}{}K6jB7o>{ zNMluRi7I}C-i|-ywj1tN{(i*4f9`Ozyn5hEj=JJU+f2zvHJko->L3Xlqz@Kw^mu# z=Y*?!-X_8+9%&JrF1K^Key7YzJ_PT_ndp@&L(bQLzHX;I>w=xp=knrgPRKvF_uw}cjg{t-<|DUk3E$y&&yNbw*!5o3QoAkQzS)hcT|=w&IzQdlGIb2=3GR z4z&+~A8$*zxw_C6c}GQeqjQzf(jyzt*X^-sou@PUJk7oMdn@YC=kQT*Th9nb&*Vp8 z+>VAvZt~AI#Dnu0?&QZ^li94aXa@AP{Yq_Kv;q25pQ&D>ep5YH>O8-r9Z-9qOW#I> zkHg=62$P*s-<7*VD(4_$UDvk*=aelC)zCNW0Bci91N4_rM(z&)g4kzkd|&F#PcBboEy; z&kCnrcjNa{aG!?{p7}L^-@gO*2l$0&R~O~64eoY0U4DF_`P<-kh4V9@KO9lE%0|&v zmo@q~pR2Oh{I<2DF!uk#{VCkf;MT#dhwFxOxHgYrL}uZ5k|pHlP}Gv%uNCk;+&gvobyVR8_d2*vxJH*gzYgR_`5N={As@>3O6Dif|Jbf*b}*idCL6srYA(CT zzOF>8iR-2&?ygrQonr{$ZtLgH$NPk7cXQ@Dk@=twdpjJDJ zI12t0Uw57Q+$R^hox;B`u>b=$+w}kWSGOY^ZDL-RsrI<|nJ(t1@b!I~r~c_5{v^yB zR)=-?rEmQA@i}UEHsQ6Ge>`57{=%OtxzF;4OFtj?o!`c~d@25OvG!RdT-^WRcctfe z!}iPmC+fm4z4Ec~=X&t|FtnrVmD-7Z{-FN(n*+YvIb#q$7ky8tLE>TY&TYEzOSLnG z@Y>5gel`D7FPuJS8Qxpv-m?R*T&OL~)@qONpD)yE7m@x=bL^Uc2(MkbP&@r}O|*f< zsf+CP_w)R(;onD%=ckLa=TOE89>0cZP+!lT9n8nSZ}9?r7i$;JovEG1)4AFUi?#1R zcX#i+oIf(JA@57_J5n5K>Q66re~*{Xi$$DsCn%(Lsz&i=YbROtdsF1W!_Qqjaqd)= ze$M{-g>x5i&+j`X<4YNztDQNwI6HtRyvn(=r)#x+{`0!HYCFvuA5(PS^JL ztKkcXc#P?sQed+9}b7yN~v}+pWhrDaG(y7|dE>N4GuRT4Br;{Z)TzuHpQ9j(ym%VnB0W5Ev-tCp?|lCP?)q?)kC!}s zn#%u2c1#Y3*K7^t^T_nJy!>y>o$ux8@x^G(r!M`BzXjfZ5z)`qUfido=b7^G6a4$W zMDc4c_8se=r=+!0{1qtU0s4vbwR5Ly|D=XfzUR)KJ2(5KS%ku!JNv@v+V}1}*2f73 zKV)~Y|6J`m^mrDt_1)e8`pQzy(Wd`)&`0Pud$!Ub3`r?|c&5``h zpI=3FLXE)toxtxiwX=(}fMkv|UOc=u`zr3QoO_kN1Ua4N@t)~c!%v`joqFNi;{UaP zCbD=Rt~GNUtM6`->39n`1;@7 z;qRO>hCeaSIw_A!UwGl~7W|$2XAR}w43>6GgugiN?>t}#UnCjr-dRfj^ou2b=RQOD z0tm`(rtr^9Q2EC2@1dQutqA|=e=1&E^81nl_2qwc9^u^sNMHNWol|~h41Z#-bDnjd zpm0>LeWvi6X3XZ2{~%Z5Mui!FT>|P zDgWw!{jC$TwJ*=Jf1~gVr)$U9dVJsc;oj%=^*(tEyHNV$|8I7&f6jM-htEHJo^??8 zL(#dD{na+uwfXf9d#9?a}jWpnv`YuUtBJN)CTD_krhN!u{Cy&iz&I;xUZF9)AB% zYOjFZE8#m4-dla_Gd_=E6Cif9+WwUYpzS z+^Nn-K6=fm`Tkd-!$SC(+ND=(Rd52{{ukc&+^I*NtG#+^uJ=L};nT>!M)}L(7uV07 zdZb!=Wk3!;PMsr&&pss5FLuwJ^3BzLFpCK&N`LHiKHd|~-_65czOVbaFLut=<_1{j zqbKGDYUjHkcGoUk!mK)#PvHyQ^Cttd{k303`q~Lp(kgrXzxY+Xe1t$c*Mya(0 z)Gwa?r(f*+S=Uy0)V_-FpZ=5r`+4&b;phHyZ2_NhZULNpvG($-ix7YZ5a%X2{VPvj zT40-y9_x4sD1jx z>?a|D>BIkF%GX=FAj+@(%kRy8GG`2D3FZBfzV=(Ek-TR%oOuU|aI-Y3!{+}};__xH5{@_FHv zfm*V5ah@F);V)d8nxp!ohW~i_yZyCS)$s3J`Uo|pg;!sIq~-!G@HEuvdRlM|m$`JbhTy6|Jf`1&6u-#K4h`RFxpah>Be^Zc2W zRQx{gBb+G_g@8BHH7|!hhx|cbUer8=cZ=}za(H#2);;&D#KG_?6fUx=T|E1xZ_Kl< zXZ{i4k9xCCY-aLOfJSm4iws`O^U2sj#|4WI5S8~s8 zuYLN{&pm(3U!2m?zw(_UpP6HwpGr)<@`;BEr$7Da?>+Co`Pvg`CW3yK{ystBPX-oV zxpenK2tV=sEwxXbrg7!~<#OrthkkvIbw4$~0L9phhH#;2YHI; zXK6@WJKf2{FP;u;^aF2EmbR9n$L-@k%>3hM!XKRb!P{RL}!ZGllpB*@N`os&T z@4Hlc;mn1XUpg(n-@pB&vxnW=fnAgQU4gl6ebtY%xvq|Ne{(_(|5xhl{}ehADyH_+ zTHwNB?b0ItDCtjMJck-~>YD$*y|V$2qdM>X8Lg~YVxd_u!FC~<#U`=aa6v#4oM1Ey z_6_;QDIw+F02YKBxJgr#La`~fX4Xm~wwSqnJeL4Y0nU zjopjw9Yx0L#I|-6*`ASic258AnVH>LeUUzS()PJe-pAhEIluG1=X1`SIbXsf8O>aI zccsdMpgLwIINXZ|3spW@E|!MZAp!cvXY`1dpkEENa?z6i;?$&C;?KICZVryc{3O|T z-Lk1~Dx5xouDFJ=m!f%B%uj(=Ml0?Z|NB1)%H1-PrQcIDcH|yRQZOZa!v?@dSpy#qDqpG|a3|f)Whp%Ac)5IIjYFRg2Yk|B zC{K>}T=M;(Ok+PcC3(fIp8C>bW%Fct=c~Ig_Jpyx{V_id{Yts&4ssKEySUy%`8W7@ z%#VVL@io1NSKN*0&bZ}rksr{b_&q}0FO-W1P|8*GA*#HhnHw>n7{-4uIF)}H00=!Z z{0}N$(ISr8MD>R+Bu4*T*w|S4>$MSwK^IS8eSVSZU#ZYTZCTZQ;hcq`eZk8C4~j+Z z=I*AZ%0v(^E|Np;_WBAxBy-m)q~BXyw(ky&JF2IeyIu%+LFZyLrm|sS-}q1N-~$@2 zIp4+6*+paM#Js4zQF*RdiuvH@r|2)!zN`O3olnyr)yDLHF4XiJxh?YpodJfAo{H_8 zvHe%{2{h-5KYmqb^Pll6VqVi1yu>HRwI0UIIrtU9eZL&Iq8O#G(S8a2^~)5c^2im1 zsp*gGbETtwer507t}e2Nzxev+!u*MNfW`^!RGB{+@|yi8=sMAKN6*Lm(UTPUD;hDz z@=e)vUL4IV91MEWP`f7{N^k;ad2xE+%v@^1A!N#kfcP-Z$l_H!p)bKPh^bhjsq#{S z=QlUiX~-S9&e3t0B3UKLr$D+?--L(H;%RmhmJ;D7TzIUv~)mlbG_R*0ml#kT7R*f^F##x*D z53U#4*MFo&8KD|z286V^1@4_?h~Id35Brc57F>r;po7K47Hq_O60^Ojj*=#9PDt zNZ&)m)tDnTnreV&w1`WTFqKK;LSJwULwlKpvA!Sbk9%aF_y9{mKjkYAQUWB{4^%^{ zbCvWvBp>4ubq*(tG?BilGKBwo%%_1p=p+Aigpc8Aqz`Wyh#x#(Y((ipiY2n|1X21r z5&v=T5^H6s&rm-iPWeOWvy>6<5+~*~)uh<6!zq7pf^VQ$^2p@>1>a8LW9fnF$wwAC zx+ouT*+%}p2K(J1NBx#je){Vi_Vr<3KB48kEQ{lZ?Ab%*k8f~{A>ks)Q5_7bKX@Sp zSGj}N9LdW{QU0RtA%(mOUIdqMv+w|%#hmG={`xqo-2k{m^%pz`eM`g-2|$BAFT9lzI3fwnVP;fl}326CMEY&-=(XxlT-N$o%6@Rn^s?T(VoI1_fO?CxbUjr9TzEM z?z*YG1dfgY^gAw5r*kp%Pot1ctJhre;Fx>w6n#a5{v`3+AG&DIn2Y%#7^_RW4qi2| z()GrNk3s*gDg3>_Jg}h8&MNfpotVlg`aI|&j!OUViSiVE>YEBq-3?X8MML(ZNDCsPcGD7gk?EvzjSUZ;$uVvWeaKzh9p?Ggr?@k3=Y9(R_xYF6cD6A~U{>H0{rqwH z+}yeBs^i4bu5ZKot8BcNA=rgd$Q6ddB`@{O3sfF$0Ssr_eUzF zFO5ZD9g_3_d+t1ghQD48dA<+tirh(~x3LZ92QFUperXY=2snRU@Gc2Ii7$CO@pmj% zuaPcdof_x&E;xkn?U+k1fal(^c%g;Ozw0^oPb~~u=PNNkW6dThi$7R#)|S;Nsc$!K z|DUE@Rw53SJ6Q!eWN+a=jFbS0gs^@7Vo(5(uX}A?<(gua4B~U{ywlY zPkLli=CxkLcptc5x6iOhO(9fi^U>;oN;2OUc7swyu{oriV$hK^zMHgJ32C}dMHM`+jK?g7c*3zdhh0M~i&~^^tkBPUFm+_8r!p~TET_0m zTd>i|d)!j^Rdnm{Q`xgq!hX8X!*kP7$D3PN#lZYbQw~O0i}pNa7UI7U^D~N{@|zd( z-AoOeXYl3+L*D#BD<=&|HYv#lY*OJ8i02`_CGtw{fd}(fg_{9 z7d5f-(sw+d4JTkW%;Fh;C@DAzqKpNq&a;4hp}{(cm~pfe3%m^9X-?lBc`C z$Av!Pzvwf!Zuw6ir*O}!#b0pbzzUXPnIGJ;$i_jsOubnpafcZEt<-i7gCI z_+vtU(a$hD7~tT#m~VdRzHeGId9*L&Hr;F1O?Cc*_in{sf98Bk#9P4W{t@;A_VC*; z*lMtK9Mj4qi)`X_{|es8HveE`tBvZ+5KLE5_y~P)Zby97X}*?Y zJeS-A>Z4zrd;6>?|6BS4wB_VRZ%6coP2%VB7oS~v`FnxW(mzlMxpyrJTosrHYkqRD zwTN+3aB~9lGr=kSU>2=Wi230ge)6%_;ySHLJe;4|(Te&Xndbp`+w1F0H{$HsdoRbR zZ%qW>Er<4@znQPQTqGi4zm2=#>3-A1{LJoy%O=g5I{)QAeem{+4{-A?C;jZs5_t9C zvf@CU`#*o~_KPu+3w>qZ2Jqs+rMMyypZ=5Ix~Frr;Eg+HmXUjxU)p~Bj;(@_7v%4A zy)>A>dCaf5`pz3watOtK&S=%>XUuJT!%E>mj-+4b`xPF}&*%b)k0j3t7tGHHDTvSN zlUg)CFb`wXVt!^cl-h1(JfcAK)Du!_OZC$kY>d`(L1=|;1WUV=?#Jrt_J z^07W~I%hZw{toPKSbFg+bds`70yh(7Z7H04I7W>F@f-vwdt4%|`qoE+a3~Plh z?Yd_xYhG^U$sD^NPTv`uS`ZsaYU;99Y%^A0guFp|(!U$W?^4 z{wlUe7vW#J30KIIrq5*4OU}#h;kj+Zua0>K^wVk9Y}}sx(Gp3@el)i&hXCsw`rz}V z+ga}SGDh|q*iUD2R;+&++0WoVoU_RHtLaxpT4hAxuK;h(r0K|_%~>i&i9QTGv%~l` z34M#e53qR*JLA}Z4!N>tc_Z-MCg+T>9*K@#B-j| zS8Oosf0@@k|410V;G)iC(#x5$XNc6<8UMZPh5Rz36}i)lP_{cQUE4dpoMV|x`mE2a z`asCfHmEO*{2%tbwyPdwT{*gxZfp8T1827Nz7w}(Gp!N7_4$2`e4lmW1LtDVfQ@;)Ar9Kc`(EN8G0DS`qT*0 z{T_*qCRjXHW8O2v{+SXyN8F1aT(JRObd&_IIoE$+RaafV?wt7b@5ptE#vI|BuWNI2 z+CMXwKJA~8X{?X}nl57h3^=!^Gq{BNXNbq;GsT|4f1p7oq^{ zuv%dM4C}xPnA9QM13i3*;zAb=w0{PDB{WLnvKqTb-(vp^=I3G#PetLe<`4U468d1} zM$Ur{)VZ2IR_R5&tB0}$;xy>T>QVe+E*ZkFZbJQ(PSei#py^T{`mF`b&j>C)%rV)I z;^#B%#}3~8Fux)YmRu;51DG|_$-(5B&#?YI=H!MvphW2OiSMfAv8>lF^a%+mM)qkA zzQ-+l{w1OP2*Yj|e=&#eVzJZ+6G$Zfw9fe`aUGWxebBwtTA!?6#_vsfSDzs%Oh zoMJ}HW<>n(v&a$ttF`?zFieF;qEjiF_z}1TdxaX_KRR5=sY>}ng7}QN1!sk7i%V{b zokLI#eFo^O2kr>?Ho;A|C=#V>@IuRT5CiZ%E9(1axO*C2OT>Ah>iTBjHtvssJBcnL zTH$;!!C~AaDDoGHqxuuL24<4N`T_4cE&ssIEnP$&>oo$`YKpl?zYbrtq?Cv6Gl9E( zUd;Kkd&8HY9+VFchVT}AN#H)NRCsv*b22ai)F6)+XKkN^zX5#C+&&4+e-qq_?}#FI zX0mTEERQBBa(e(@Q{smV5$|YK+CMV`cQC$1?T^?$GXuAD&U?Yd{uvcNrr0Nj+y%$} z8Era`n|$y+_H-VoP@#@pmG;j}=fb4mw0~wgx1q{?e2D!s(>Xvple`d1IF+UT&+F*i>|57E+^jPobzg)rCiM<@FwIGiEBwJw-)38Sn zUkX39jtBnX+*wihYfW>&oj9O5>WC>Sr@OALY5yCK+z|2}UL5?UJNCGaC6FE}zs66l zE1&k?*!jsw-z=LZ|IRIs-m~%1OGKspMY(u#@)s#{Cqm=S{U*n+YoGc2$-n(`1N9Hh zC-I}4hg^Swn@V|Yx#brhul|!Bq&R#@%DzeH0uy6@?!hH2eA559|C3$FE2Eb8Di3Z{&l6S5>xM zDG%>_^%>X5@8Mq^?BwHrddJ>BZ0~}3a4bcnjha{D0_CSYI;e4b<3e0e z%OrSy5|bbmT!60|9Mm?Ncyxi2%kGH@Ok&_i#5Wq?gS?79oZutCV*d<92KqgGP(x83 z!SYJM?XyvtFh65ZWVq84@WEZ2>jzAq=k2(jS$K;U70&4?qWmg6o0HHu0b{I3=a{BE z56Jq%m`n8aGoMcUAb7HOikiG~$0c zaN=6rI6lMt43@7%nZQTC^1Oiy=#ODEs943?&vJ1GjUW0tocZY4e@RUpcQ#_k3iq#$ zPEmP38IQQiI%opG(XZDn?4PkTv3~~7jFA8IJr8%wTsxnkPc(r2v}6-P&o7;R{NpE5 z_h6}O*$(!CA3sHIDk=r~{5t*q$4~KfCp)Suk-p$4(~zJ3#go+=IO*?>_)FJ8zwBrcKmBaw2GFUzSd92jp5!<9MQ~&= zdE=qJDePna%o3B|5ES5!DGxp5Kie!7^oaAPx9ef}b&dhILLC3#>1XsCRu+@`Yr$WQ zIsdQE@=t7}^o`ciCpfqLQVIR8(@*H1dWQ7l^jV>P%-=UwTKO?G!C(4=nm$_9y2SbS z()HDQQxv{mqQy8h84hnE{=@65_oOKPV*g4FBmc!s#(((nYPVd_r*XVf3D3i8Hm;Wo zrW@*q)dTs5@(&mA5AS(fPAM155!d7WGiuBql$c88C&EX|{M2!y1N!0tgAj&sw`f%U zSRJl$*nfeyc8JO|5{7R{OvfEw=RxYnIz>L>`y?zlLi*zUGj}{Xvh@*qx{V6`{=udc z%$92Wx(`imd4!aQLvC(DahU@N{@$&aAq}@bV;zTix{TYQzJDh7maAdEuaU!t2)}Ca zPduI9>Z1D7KS-z_b2xnB>HD_Q^B4a}rtvkOy>IIghTBt{!pq{Z#%~$3!9@-<>eqPl z)?=s%$blL8%ENb1=|$O>2tU%Nq9H*Jko0K*(vSI>$theGxTbH_xk@Au+>+|)gFbFb zw0r%;(ZC2%ME+9#;H{LN{?P;87C)I<=SReVDx8rxwAvw;uZ#67xlW%(RUsqQa&iD&kA*{fG; znf{@En`XX*r_|n$#k_3?@l~14>=NQ(5>o>=eJRvGH8$XaUvojs;R#tauwh;!mp11V zp)ayf9neoU@Rbkr%5dX7i>BhdHLOxcYUJRR-Qp`m^xS2I2y^OMA}HrDt&^WT-uAF?!TgjJ0- zdZd2}+)H^aU4BRNh4S%3NTuqi)`K;^6nud%e~s_yJUjCzhb-CFJk@?J&Yx4@&VoQ* zz^%>?opth%mBO%#V!x&z3iDU+OjD|rKX}>e%HJI_Buk$xyWbG@QJDnqXi7B&xj(** zoq4DyZ|R8dBXRhprB&IvoToNDv+V=gqIrijM%=5_kK?;N*;y7eNuGV;WlR3~h8*$n zckrVoikCabSApa3;x7efz4Y$AZ5O008+;@i^JCzi9JJ)Q-Tm(Jypavy-ZbvF)+uuj-)nlURirwzagmevy=91ng8IHw|({9#dl7#Ux@b4oV;n*c%;$ab%=zwj|7vfX{y6>-=llW!q|Z_D6Uz`}oqk1+Tj4nML$s7r9TV4Y z#zjk-@IUqEo9X|Sv*>MLYR-k%ze4`JY58VmHZ5G=%sw6zP2tfB7OZK-*vbG+MQDZJirz8MCboz!@@@GVk@^PQ?3elWC+=pa6o6RGhGal)8LI|L#P_;8EjyC@Q)^X-`U7vW=gK?v5{keDI_ z{Lp)qdilD(=8Caht{3P`3C=gDz4iRXb=lQ*9pAK#6MJlVkCx=fB5dR|ks1VtH!sZN z)b-H=!^%3GZ&oCIB-lh+HrDc=GG7Wjg}U zM-e$v=Q@5CPp6zUf|GkuPw=%mTwI=VGQ>%OVxvBsPV!!C6oF8RAmPN1_*o?T7%+)A z>My2VqVvrt{zwGYMr*r6&S`c7>A@%kNFdUWYe(H(4(pz;s9p74lqLL|y! zvR!ww7$i=t_%_5wuh?liN9H33XXSWv<4D3BJT)ixQ8vh;S@p&E>zrImF4>qCf9%nG z6ON##*oTG@*9f1oeg+=LmZ0_@qz4#)6G3q86Z@84Lo1T#u=kK!E$l;1GHf zTos(WvvAw?=|&!HQzUEDDd0TGjZT51M9@PU9PjLr{U=z@?xZ6Ude(!lP_{4Wy8nx-ba321f*Y*PEoJ*s>E3I%k8!F#O9da`5#O&Embz`} z;=|WAp_xavf3A@S>kUiW_O`91_cvkY!D8&FlS244{h|+j)NL-2w-YHWXC zS3aj$2gaXzsX3tF<)bdIoa8nAUU1nuF!Iz(t<>dWY9rrZ?8;j>0_^8ceY^7*QqQ!h zd}IE_)RX@BmQNSI0P{7DqmD>=jF09AQ%_XCw#8P-JUEKzBoacNQR3{Qd7N*ChcUPT z2jcoknP9PaWsIZl05#h&HeM z@>3~;Jlu!pB6cpbwv?y$LNyYcZ`NxGzNJ~?4)y}1N|uh=$-;VG`O5RXxL|B!zpVu- z_HkfXM76f^!I4n%7IL-5-#B>3&X>u(kz>wD z*ni_VctIl%kqG;$r4T<~JAA;3cu=!H+8?0GMEvGLX=j1Luk#@}z+7`^zjSkPZoUiQ zf0cr+$4}^E%lTf+&y=qkDZRK>o1J5;OenGbiDfl?yY|3@mpK1UEDa`oil4u?VSa`R zh2+%Ipb~M>rxT9&sPPL>{*-=yZvz*r2I0@m_JAY*1gGv@C^+Ft{BXCm4^xecxK8Kq z7C`J8mt@pOaXy(zGv~z#!L68El5D{g>1!PJ3!@XHZ!jo9TyO(PNpP#VKf(7&EmV}@ z`By&Y10~v9i90;hFArkHv4r|L`7C-JLV@XZPI+{$hDul*-V^+F0MkA%x(&4!#Kw)|rXmae#Of zex$$q?)5#%@DtoxC=`>FC-rxSRdyCGE4Vo!#aa0Lh{p}2@XYy*Y81aSF#AF0jkuVf z(Jhts&scIG=LRC4?!|(+FH*l>jE~zr;rvX_jP-YeH#6;VF+U?8%ZKwb4LoROD&7se zPG$HQW=qfpNVzzFehz)VnYFDVe%A1@Xnw|y`AOm_r;Xj>eerz@`;J-Y4WPeP<1RSn zXJotJ`R`MY9<#0!^E2CGeZet5GhWyiT%=ZxS=WmBnb9Pt`5Cp~1RL7#KW42G^D~Vc z^D|1pd9|uQ|7uIevexekeF^8AA$$k(Gg4vOSF7y9#|DSQ{LE9a{lmKhnxARP7rQ)b z%c^7C67w_9#(WHM$NY?hV|V=tr++f!aNyoU8*KYbRg!~n~Li00KzC%$a z3NDs%(H#<))ke-Wv!IL?-HC_~zJ6DOKKR(g>xCLO-_UI`w=$-4(?8mf5g8RxRv5MoFjHI02AEgBmr!E0?%<%vsu5ko}^Q&~8 z3iUDKB;MQMLLBcK2#C0hO+2JZ9C;XVyd~md$P2V6|3Z#t9qVhM&r>+xOdIihHOW<5 z_G;&IskRD^ltlIsaU5xeQ{6S3--WEeoA0=Xl`aWBV5M+=yc%-6`Hg$Jk>og1EaZrd z7IF+r)a`4AG=*z%{-u0`-@r{epG-miA>pWs)3`=F#bui?3I|JKYT={c!|<8jXA{Ot z1)Xmu;vc7v;*Z0WZNeyj15p6S$!~G`i7S0JQS{d=*$?xNBYy+NRU7A@`QVw5dm8#g ziii0#%6}=$|3K}Fsx`{psh6KF7P`@2Lx?$&Z==Yg`Vp2t@hJbO?C}=DJ@|wDdi{wx z)l1^=2QKO#&Obx_i^4~BL?WxGzeRAmYxS`HMx460RR1Nef+M?_sQ;qyL;|tKP24}? z;Ywi`L#`*iRg zM|L_x+=Q>XKBmBXRynC%c*kBDavHZMKcV!2U+X9bo?z=|<#;9EA4oes7HUk$Aw$QwgY_Bqy_vbqpsyM4$Xz)b@4-p~)|R_6%B3mc`;10niAT+OBk$#` zN5{&)mfU&PO!4c*6J?cu3v25-KRXl8^X)xX`(5CwJrg&;bAAuPpN01uJ-L9mHe>vZ zUJqPnZ5Vc#(SDw|#@=S}ME-<6>9c>xL;N*EtMQ0M^}Bz>>*09#Yla;GeCc!|cxbL4 z`^mzHrF(=2JZEw1G@tqHkoOsQGDh_~iU4_QW*^)jy!VwVVf{uSz-uhce;n~%ntQY{ zFN`jm6;tRRkN%{6uWQl$i)XtXXCV1%wwXA0gXPPHj`(S)LbSd)mNRgkix8=mbwxju zU-RSKlF~EtI4x2-oHk1;<9BVwRZ8Q$km>So$w#f3!au)TxFUWt^Ukn3%^Lq-k*Cr) z|7^M_PNY8zpYPQ;h6bn0{5bzp>1d+5(a#xm&T@@NT%8dc#b0ljiKpWiHo@!7VQea` z+bhKHkQ=dk{GHZ=F#l%bTAf>o=C-E)W_($s-;!ZQG*uew(s$z$3qjuYU!XjD%kNGok+*;ft&&q?XKY#C{_FD8K3QEA!@#>6H`a zYWmF`T6`-cLrL&#*ia^EgMOACh*Kr0|7-EqY%V?3IIgosJKCgSG$3va_GxKG3WG`5cMV1)7!QR!Bq1g&skNq`xw~aa9 zfbj;MV<^Ithq$NavFad@{MxfLAWpB(1)ul==Hme_1q~b>UK?8YLv$+^FuWvl15^7^ z`0db#hO?5my<$OUH@%GOHU1Xjcz9zlBsFBOU!WOykmHZ(#QJG)8B;VWBc55HZO7Pw zt?3Q?7)I>bGHJ+W3$z^=h_Tg`Nv<4|Jew&}p7@KZfwdZqyj=B>NfL9w2Ql{IDEBq! z7pgvnZm|D%`vR#GV<(QXKIV%MKjmfSZ(yp-?%1(_#!ga>+#T}_;;!tIe2=xKn9|)6 z^0rA9iQt}uQ@`6%7EZwwXUjY7wFZ;8i~_@7`;#r^wG)@8@sx*Q3-Ar9I9uQD)RXpU zf(u9Y_YFHeszGBfc2A9;L(^ZFg3=5w4|{=%u@$T<=&9wePn>IxHp+2!0&y9qGzSfw z%AWu>zpCNb8>RxI2vng@^#^-DQGdXxHuU;y?TC|oQU6S;e~xN)V=gA;UDv=>3_zK- zY;jxZMDG&OeSf6RJY3LfAnfTu`g8Ik^sQ{!&c(dLK=T8~DUyq?|4q1x_%%u{zU(m2 zysA;xJ$7XEK8N6Q#vl6sj{H`J=DDLD@#vQkyHMvn{{41H^7>K;UC)CwL*5IaYZ=l4 z`Ogr#J_C}5+zO%V3m}UiH$&+9t&wy?VtyXvPa$-@7;+(G3xuw(fLsoF2twB%gnS6{ zG=#2y7eaB_38CxvK{UwsAawm-Aiod!-w?VcM%Tj-y1otaS;)%}y1ox`59AdHUH>`c z&memsbp02QUPuWNUq1keuOEdx40#AV(o|{T;~Tkb@Aq{!7SrA)^qw{w9QM z_z=4OJIFJT*gpAx3Ni^H{`U~_Q-;trrR)2U6A-%o5#)yu`c3j0qyP!8IH!306hhbk E0$=5vqyPW_ literal 0 HcmV?d00001 diff --git a/GadToolsBox/gadtools.h b/GadToolsBox/gadtools.h new file mode 100755 index 0000000..6ed738c --- /dev/null +++ b/GadToolsBox/gadtools.h @@ -0,0 +1,1876 @@ +#ifndef gadtools_H +#define gadtools_H +/* +** gadtools.h Header File +*/ + +#include + +#include +#include + +#define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer ) +#define GetInteger( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt ) +#define TOOL_HORIZ 0 +#define TOOL_VERT 1 + +#define DRAG_ID MAKE_ID('D','R','A','G') + +#define COLORWHEEL_KIND 10000 +#define DATATYPE_KIND 10001 +#define GRADIENTSLIDER_KIND 10002 +#define PAGE_KIND 10003 +#define POPUPMENU_KIND 10004 +#define PROGRESS_KIND 10005 +#define TAPEDECK_KIND 10006 +#define TEXTFIELD_KIND 10007 +#define TOOLIMAGE_KIND 10008 + +#define TREEVIEW_KIND 10009 +#define VER_PROGRAMNAME "GadToolsBox" +#define VER_AUTHOR "Tomasz Muszynski" +#define VER_VERSION 3 +#define VER_REVISION 0 +#define VER_SVER "\0$VER: "VER_PROGRAMNAME" 3.0 "__AMIGADATE__"" + +#define WA_CenterX (WA_Dummy + 0x100) +#define WA_CenterY (WA_Dummy + 0x101) +#define WA_RelRight (WA_Dummy + 0x102) +#define WA_RelBottom (WA_Dummy + 0x103) +#define WA_RelWidth (WA_Dummy + 0x104) +#define WA_RelHeight (WA_Dummy + 0x105) +#define WA_ToolDragBar (WA_Dummy + 0x106) +#define WA_FontAdaptive (WA_Dummy + 0x107) +#define GTBERR_OK 0 +#define GTBERR_LOCALE 12 +#define GTBERR_CREATEPROJECTPORT 14 +#define GTBERR_CREATEPOINTER 15 +#define GTBERR_CREATEIMAGE 16 +#define GTBERR_OPENLIB_COLORWHEEL 100 +#define GTBERR_OPENLIB_GRADIENTSLIDER 101 +#define GTBERR_OPENLIB_PAGE 103 +#define GTBERR_OPENLIB_PROGRESS 105 +#define GTBERR_OPENLIB_TEXTFIELD 106 +#define GTBERR_OPENLIB_TREEVIEW 107 +#define GTBERR_OPENLIB_SMARTBITMAP 150 +#define GTBERR_OPENSCREEN 200 +#define GTBERR_VISUALINFO 201 +#define GTBERR_SCRDRAWINFO 202 +#define GTBERR_CREATECONTEXT 300 +#define GTBERR_CREATEGADGET 301 +#define GTBERR_CREATEMENUS 302 +#define GTBERR_OPENWINDOW 303 + +extern TEXT ScrTitle[]; +extern TEXT ScrPubName[]; +extern UWORD ScrWidth,ScrHeight,ScrDepth; +extern ULONG ScrDisplayID; +extern struct Screen *Scr; +extern struct DrawInfo *DrawInfo; +extern APTR VisualInfo; +extern struct MsgPort *ProjectMsgPort; +extern struct TextAttr *Font, Attr; + +extern struct Gadget *PGBO_GeneralGList; +extern struct Gadget *PGBO_GeneralGadgets[]; +#define WND_PGBO_General 0 +extern struct Window *AboutWnd; +extern struct Gadget *AboutGList; +extern ULONG AboutWTags[]; +extern struct IntuiMessage AboutMsg; +extern struct Gadget *AboutGadgets[]; +#define WND_About 1 +extern struct Gadget *PG_BUTT_FlagsGList; +extern struct Gadget *PG_BUTT_FlagsGadgets[]; +#define WND_PG_BUTT_Flags 2 +extern struct Gadget *PG_CBOX_FlagsGList; +extern struct Gadget *PG_CBOX_FlagsGadgets[]; +#define WND_PG_CBOX_Flags 3 +extern struct Gadget *PG_CWHL_FlagsGList; +extern struct Gadget *PG_CWHL_FlagsGadgets[]; +#define WND_PG_CWHL_Flags 4 +extern struct Gadget *PG_CYCE_FlagsGList; +extern struct Gadget *PG_CYCE_FlagsGadgets[]; +#define WND_PG_CYCE_Flags 5 +extern struct Gadget *PG_ListsGList; +extern struct Gadget *PG_ListsGadgets[]; +#define WND_PG_Lists 6 +extern struct Gadget *PG_DTYP_FlagsGList; +extern struct Gadget *PG_DTYP_FlagsGadgets[]; +#define WND_PG_DTYP_Flags 7 +extern struct Gadget *PG_GRSL_FlagsGList; +extern struct Gadget *PG_GRSL_FlagsGadgets[]; +#define WND_PG_GRSL_Flags 8 +extern struct Gadget *PG_INTR_FlagsGList; +extern struct Gadget *PG_INTR_FlagsGadgets[]; +#define WND_PG_INTR_Flags 9 +extern struct Gadget *PG_INTR_VarGList; +extern struct Gadget *PG_INTR_VarGadgets[]; +#define WND_PG_INTR_Var 10 +extern struct Gadget *PG_LVIE_FlagsGList; +extern struct Gadget *PG_LVIE_FlagsGadgets[]; +#define WND_PG_LVIE_Flags 11 +extern struct Gadget *PG_MX_FlagsGList; +extern struct Gadget *PG_MX_FlagsGadgets[]; +#define WND_PG_MX_Flags 12 +extern struct Gadget *PG_NUMB_FlagsGList; +extern struct Gadget *PG_NUMB_FlagsGadgets[]; +#define WND_PG_NUMB_Flags 13 +extern struct Gadget *PGGT_GeneralGList; +extern struct Gadget *PGGT_GeneralGadgets[]; +#define WND_PGGT_General 14 +extern struct Gadget *PG_PAGE_FlagsGList; +extern struct Gadget *PG_PAGE_FlagsGadgets[]; +#define WND_PG_PAGE_Flags 15 +extern struct Gadget *PG_PAGE_ListsGList; +extern struct Gadget *PG_PAGE_ListsGadgets[]; +#define WND_PG_PAGE_Lists 16 +extern struct Gadget *PG_PALT_FlagsGList; +extern struct Gadget *PG_PALT_FlagsGadgets[]; +#define WND_PG_PALT_Flags 17 +extern struct Gadget *PG_PUPM_FlagsGList; +extern struct Gadget *PG_PUPM_FlagsGadgets[]; +#define WND_PG_PUPM_Flags 18 +extern struct Gadget *PG_PRGR_FlagsGList; +extern struct Gadget *PG_PRGR_FlagsGadgets[]; +#define WND_PG_PRGR_Flags 19 +extern struct Gadget *PG_SCRL_FlagsGList; +extern struct Gadget *PG_SCRL_FlagsGadgets[]; +#define WND_PG_SCRL_Flags 20 +extern struct Gadget *PG_SCRL_VarGList; +extern struct Gadget *PG_SCRL_VarGadgets[]; +#define WND_PG_SCRL_Var 21 +extern struct Gadget *PG_SLIR_FlagsGList; +extern struct Gadget *PG_SLIR_FlagsGadgets[]; +#define WND_PG_SLIR_Flags 22 +extern struct Gadget *PG_SLIR_VarGList; +extern struct Gadget *PG_SLIR_VarGadgets[]; +#define WND_PG_SLIR_Var 23 +extern struct Gadget *PG_STRG_FlagsGList; +extern struct Gadget *PG_STRG_FlagsGadgets[]; +#define WND_PG_STRG_Flags 24 +extern struct Gadget *PG_STRG_VarGList; +extern struct Gadget *PG_STRG_VarGadgets[]; +#define WND_PG_STRG_Var 25 +extern struct Gadget *PG_TDEK_FlagsGList; +extern struct Gadget *PG_TDEK_FlagsGadgets[]; +#define WND_PG_TDEK_Flags 26 +extern struct Gadget *PG_TEXT_FlagsGList; +extern struct Gadget *PG_TEXT_FlagsGadgets[]; +#define WND_PG_TEXT_Flags 27 +extern struct Gadget *PG_TFLD_FlagsGList; +extern struct Gadget *PG_TFLD_FlagsGadgets[]; +#define WND_PG_TFLD_Flags 28 +extern struct Gadget *PG_TFLD_Flags2GList; +extern struct Gadget *PG_TFLD_Flags2Gadgets[]; +#define WND_PG_TFLD_Flags2 29 +extern struct Gadget *PG_TFLD_VarGList; +extern struct Gadget *PG_TFLD_VarGadgets[]; +#define WND_PG_TFLD_Var 30 +extern struct Window *PropertiesWnd; +extern struct Gadget *PropertiesGList; +extern ULONG PropertiesWTags[]; +extern struct IntuiMessage PropertiesMsg; +extern struct Gadget *PropertiesGadgets[]; +#define WND_Properties 31 +extern struct Window *EditWnd; +extern APTR EditWApp; +extern ULONG EditWTags[]; +extern struct IntuiMessage EditMsg; +#define WND_Edit 32 +extern struct Window *PreferencesWnd; +extern struct Gadget *PreferencesGList; +extern ULONG PreferencesWTags[]; +extern struct IntuiMessage PreferencesMsg; +extern struct Gadget *PreferencesGadgets[]; +#define WND_Preferences 33 +extern struct Window *GridWnd; +extern struct Gadget *GridGList; +extern ULONG GridWTags[]; +extern struct IntuiMessage GridMsg; +extern struct Gadget *GridGadgets[]; +#define WND_Grid 34 +extern struct Gadget *PGWN_GeneralGList; +extern struct Gadget *PGWN_GeneralGadgets[]; +#define WND_PGWN_General 35 +extern struct Gadget *PGWN_Flags1GList; +extern struct Gadget *PGWN_Flags1Gadgets[]; +#define WND_PGWN_Flags1 36 +extern struct Gadget *PGWN_StyleGList; +extern struct Gadget *PGWN_StyleGadgets[]; +#define WND_PGWN_Style 37 +extern struct Gadget *PGWN_Flags2GList; +extern struct Gadget *PGWN_Flags2Gadgets[]; +#define WND_PGWN_Flags2 38 +extern struct Gadget *PGWN_Flags3GList; +extern struct Gadget *PGWN_Flags3Gadgets[]; +#define WND_PGWN_Flags3 39 +extern struct Window *WN_IDCMPFlagsWnd; +extern struct Gadget *WN_IDCMPFlagsGList; +extern ULONG WN_IDCMPFlagsWTags[]; +extern struct IntuiMessage WN_IDCMPFlagsMsg; +extern struct Gadget *WN_IDCMPFlagsGadgets[]; +#define WND_WN_IDCMPFlags 40 +extern struct Window *TB_MainWnd; +extern struct Gadget *TB_MainGList; +extern ULONG TB_MainWTags[]; +extern struct IntuiMessage TB_MainMsg; +extern struct Gadget *TB_MainGadgets[]; +#define WND_TB_Main 41 +extern struct Window *TB_WindowWnd; +extern struct Gadget *TB_WindowGList; +extern ULONG TB_WindowWTags[]; +extern struct IntuiMessage TB_WindowMsg; +extern struct Gadget *TB_WindowGadgets[]; +#define WND_TB_Window 42 +extern struct Gadget *PGMN_GeneralGList; +extern struct Gadget *PGMN_GeneralGadgets[]; +#define WND_PGMN_General 43 +extern struct Window *WorkingWnd; +extern struct Gadget *WorkingGList; +extern ULONG WorkingWTags[]; +extern struct IntuiMessage WorkingMsg; +extern struct Gadget *WorkingGadgets[]; +#define WND_Working 44 +extern struct Gadget *PGFR_GeneralGList; +extern struct Gadget *PGFR_GeneralGadgets[]; +#define WND_PGFR_General 45 +#define WND_PGEMPTY 46 +extern struct Window *EditMenuWnd; +extern APTR EditMenuWApp; +extern ULONG EditMenuWTags[]; +extern struct IntuiMessage EditMenuMsg; +#define WND_EditMenu 47 +extern struct Window *EditImageWnd; +extern APTR EditImageWApp; +extern ULONG EditImageWTags[]; +extern struct IntuiMessage EditImageMsg; +#define WND_EditImage 48 +extern struct Window *ListWnd; +extern struct Gadget *ListGList; +extern ULONG ListWTags[]; +extern struct IntuiMessage ListMsg; +extern struct Gadget *ListGadgets[]; +#define WND_List 49 +extern struct Gadget *PGMN_ItemGList; +extern struct Gadget *PGMN_ItemGadgets[]; +#define WND_PGMN_Item 50 +extern struct Gadget *PGPI_GeneralGList; +extern struct Gadget *PGPI_GeneralGadgets[]; +#define WND_PGPI_General 51 +extern struct Window *TB_PointerWnd; +extern struct Gadget *TB_PointerGList; +extern ULONG TB_PointerWTags[]; +extern struct IntuiMessage TB_PointerMsg; +extern struct Gadget *TB_PointerGadgets[]; +#define WND_TB_Pointer 52 +extern struct Window *ScreenWnd; +extern struct Gadget *ScreenGList; +extern ULONG ScreenWTags[]; +extern struct IntuiMessage ScreenMsg; +extern struct Gadget *ScreenGadgets[]; +#define WND_Screen 53 +extern struct Gadget *PGSCR_GeneralGList; +extern struct Gadget *PGSCR_GeneralGadgets[]; +#define WND_PGSCR_General 54 +extern struct Gadget *PGSCR_FlagsGList; +extern struct Gadget *PGSCR_FlagsGadgets[]; +#define WND_PGSCR_Flags 55 +extern struct Window *EditStringWnd; +extern struct Gadget *EditStringGList; +extern ULONG EditStringWTags[]; +extern struct IntuiMessage EditStringMsg; +extern struct Gadget *EditStringGadgets[]; +#define WND_EditString 56 +extern struct Gadget *PGSTR_GeneralGList; +extern struct Gadget *PGSTR_GeneralGadgets[]; +#define WND_PGSTR_General 57 +extern struct Window *EditVersionWnd; +extern struct Gadget *EditVersionGList; +extern ULONG EditVersionWTags[]; +extern struct IntuiMessage EditVersionMsg; +extern struct Gadget *EditVersionGadgets[]; +#define WND_EditVersion 58 +extern struct Gadget *PG_TRLV_FlagsGList; +extern struct Gadget *PG_TRLV_FlagsGadgets[]; +#define WND_PG_TRLV_Flags 59 +extern struct Window *ObjectWnd; +extern struct Gadget *ObjectGList; +extern ULONG ObjectWTags[]; +extern struct IntuiMessage ObjectMsg; +extern struct Gadget *ObjectGadgets[]; +#define WND_Object 60 +extern struct Window *EditPaletteWnd; +extern struct Gadget *EditPaletteGList; +extern ULONG EditPaletteWTags[]; +extern struct IntuiMessage EditPaletteMsg; +extern struct Gadget *EditPaletteGadgets[]; +#define WND_EditPalette 61 +extern struct Gadget *PGWN_TabOrderGList; +extern struct Gadget *PGWN_TabOrderGadgets[]; +#define WND_PGWN_TabOrder 62 +extern struct Window *StatusWnd; +extern struct Gadget *StatusGList; +extern ULONG StatusWTags[]; +extern struct IntuiMessage StatusMsg; +extern struct Gadget *StatusGadgets[]; +#define WND_Status 63 + +#define CNTWND_WINDOWS 65 + +extern ULONG PGBO_GeneralGTags[]; +extern ULONG AboutGTags[]; +extern ULONG PG_BUTT_FlagsGTags[]; +extern ULONG PG_CBOX_FlagsGTags[]; +extern ULONG PG_CWHL_FlagsGTags[]; +extern ULONG PG_CYCE_FlagsGTags[]; +extern ULONG PG_ListsGTags[]; +extern ULONG PG_DTYP_FlagsGTags[]; +extern ULONG PG_GRSL_FlagsGTags[]; +extern ULONG PG_INTR_FlagsGTags[]; +extern ULONG PG_INTR_VarGTags[]; +extern ULONG PG_LVIE_FlagsGTags[]; +extern ULONG PG_MX_FlagsGTags[]; +extern ULONG PG_NUMB_FlagsGTags[]; +extern ULONG PGGT_GeneralGTags[]; +extern ULONG PG_PAGE_FlagsGTags[]; +extern ULONG PG_PAGE_ListsGTags[]; +extern ULONG PG_PALT_FlagsGTags[]; +extern ULONG PG_PUPM_FlagsGTags[]; +extern ULONG PG_PRGR_FlagsGTags[]; +extern ULONG PG_SCRL_FlagsGTags[]; +extern ULONG PG_SCRL_VarGTags[]; +extern ULONG PG_SLIR_FlagsGTags[]; +extern ULONG PG_SLIR_VarGTags[]; +extern ULONG PG_STRG_FlagsGTags[]; +extern ULONG PG_STRG_VarGTags[]; +extern ULONG PG_TDEK_FlagsGTags[]; +extern ULONG PG_TEXT_FlagsGTags[]; +extern ULONG PG_TFLD_FlagsGTags[]; +extern ULONG PG_TFLD_Flags2GTags[]; +extern ULONG PG_TFLD_VarGTags[]; +extern ULONG PropertiesGTags[]; +extern ULONG PreferencesGTags[]; +extern ULONG GridGTags[]; +extern ULONG PGWN_GeneralGTags[]; +extern ULONG PGWN_Flags1GTags[]; +extern ULONG PGWN_StyleGTags[]; +extern ULONG PGWN_Flags2GTags[]; +extern ULONG PGWN_Flags3GTags[]; +extern ULONG WN_IDCMPFlagsGTags[]; +extern ULONG TB_MainGTags[]; +extern ULONG TB_WindowGTags[]; +extern ULONG PGMN_GeneralGTags[]; +extern ULONG WorkingGTags[]; +extern ULONG PGFR_GeneralGTags[]; +extern ULONG ListGTags[]; +extern ULONG PGMN_ItemGTags[]; +extern ULONG PGPI_GeneralGTags[]; +extern ULONG TB_PointerGTags[]; +extern ULONG ScreenGTags[]; +extern ULONG PGSCR_GeneralGTags[]; +extern ULONG PGSCR_FlagsGTags[]; +extern ULONG EditStringGTags[]; +extern ULONG PGSTR_GeneralGTags[]; +extern ULONG EditVersionGTags[]; +extern ULONG PG_TRLV_FlagsGTags[]; +extern ULONG ObjectGTags[]; +extern ULONG EditPaletteGTags[]; +extern ULONG PGWN_TabOrderGTags[]; +extern ULONG StatusGTags[]; +extern struct SmartBitMapIRGB ToolBarPalette[];extern Object *Size45UDPtr; +extern struct BitMap Size45UDBitMap; +extern Object *Size45DUPtr; +extern struct BitMap Size45DUBitMap; +extern Object *SizeVertPtr; +extern struct BitMap SizeVertBitMap; +extern Object *SizeHorizPtr; +extern struct BitMap SizeHorizBitMap; +extern Object *MovePtr; +extern struct BitMap MoveBitMap; +extern Object *SplitHorizPtr; +extern struct BitMap SplitHorizBitMap; +extern Object *SplitVertPtr; +extern struct BitMap SplitVertBitMap; +extern Object *DrawPtr; +extern struct BitMap DrawBitMap; +extern Object *TBNEWTbr; +extern struct BitMap TBNEWBitMap; +extern Object *TBOPENTbr; +extern struct BitMap TBOPENBitMap; +extern Object *TBSAVETbr; +extern struct BitMap TBSAVEBitMap; +extern Object *TBCUTTbr; +extern struct BitMap TBCUTBitMap; +extern Object *TBCOPYTbr; +extern struct BitMap TBCOPYBitMap; +extern Object *TBPASTETbr; +extern struct BitMap TBPASTEBitMap; +extern Object *TBUNDOTbr; +extern struct BitMap TBUNDOBitMap; +extern Object *TBHELPTbr; +extern struct BitMap TBHELPBitMap; +extern Object *TBNEWWINDOWTbr; +extern struct BitMap TBNEWWINDOWBitMap; +extern Object *TBNEWMENUTbr; +extern struct BitMap TBNEWMENUBitMap; +extern Object *TBNEWIMAGETbr; +extern struct BitMap TBNEWIMAGEBitMap; +extern Object *TBNEWSTRINGTbr; +extern struct BitMap TBNEWSTRINGBitMap; +extern Object *TBNEWSCREENTbr; +extern struct BitMap TBNEWSCREENBitMap; +extern Object *TBNEWVERSIONTbr; +extern struct BitMap TBNEWVERSIONBitMap; +extern Object *TBBUTTONTbr; +extern struct BitMap TBBUTTONBitMap; +extern Object *TBCYCLETbr; +extern struct BitMap TBCYCLEBitMap; +extern Object *TBCHECKMARKTbr; +extern struct BitMap TBCHECKMARKBitMap; +extern Object *TBCOLORWHEELTbr; +extern struct BitMap TBCOLORWHEELBitMap; +extern Object *TBDATATYPETbr; +extern struct BitMap TBDATATYPEBitMap; +extern Object *TBGRADIENTSLIDERTbr; +extern struct BitMap TBGRADIENTSLIDERBitMap; +extern Object *TBINTEGERTbr; +extern struct BitMap TBINTEGERBitMap; +extern Object *TBLISTVIEWTbr; +extern struct BitMap TBLISTVIEWBitMap; +extern Object *TBMXTbr; +extern struct BitMap TBMXBitMap; +extern Object *TBNUMBERTbr; +extern struct BitMap TBNUMBERBitMap; +extern Object *TBPAGETbr; +extern struct BitMap TBPAGEBitMap; +extern Object *TBPALETTETbr; +extern struct BitMap TBPALETTEBitMap; +extern Object *TBPOPUPMENUTbr; +extern struct BitMap TBPOPUPMENUBitMap; +extern Object *TBPROGRESSTbr; +extern struct BitMap TBPROGRESSBitMap; +extern Object *TBSCROLLERTbr; +extern struct BitMap TBSCROLLERBitMap; +extern Object *TBSLIDERTbr; +extern struct BitMap TBSLIDERBitMap; +extern Object *TBSTRINGTbr; +extern struct BitMap TBSTRINGBitMap; +extern Object *TBTAPEDECKTbr; +extern struct BitMap TBTAPEDECKBitMap; +extern Object *TBTEXTTbr; +extern struct BitMap TBTEXTBitMap; +extern Object *TBTEXTFIELDTbr; +extern struct BitMap TBTEXTFIELDBitMap; +extern Object *TBTREEVIEWTbr; +extern struct BitMap TBTREEVIEWBitMap; +extern Object *TBTESTTbr; +extern struct BitMap TBTESTBitMap; +extern Object *TBGADGETSTbr; +extern struct BitMap TBGADGETSBitMap; +extern Object *TBFRAMESTbr; +extern struct BitMap TBFRAMESBitMap; +extern Object *TBPOINTERTbr; +extern struct BitMap TBPOINTERBitMap; +extern Object *TBALIGNLEFTTbr; +extern struct BitMap TBALIGNLEFTBitMap; +extern Object *TBALIGNHCENTERTbr; +extern struct BitMap TBALIGNHCENTERBitMap; +extern Object *TBALIGNRIGHTTbr; +extern struct BitMap TBALIGNRIGHTBitMap; +extern Object *TBALIGNTOPTbr; +extern struct BitMap TBALIGNTOPBitMap; +extern Object *TBALIGNVCENTERTbr; +extern struct BitMap TBALIGNVCENTERBitMap; +extern Object *TBALIGNBOTTOMTbr; +extern struct BitMap TBALIGNBOTTOMBitMap; +extern Object *TBSPREADHORIZTbr; +extern struct BitMap TBSPREADHORIZBitMap; +extern Object *TBSPREADVERTTbr; +extern struct BitMap TBSPREADVERTBitMap; +extern Object *TBCLONEWIDTHTbr; +extern struct BitMap TBCLONEWIDTHBitMap; +extern Object *TBCLONEHEIGHTTbr; +extern struct BitMap TBCLONEHEIGHTBitMap; +extern Object *TBCLONEBOTHTbr; +extern struct BitMap TBCLONEBOTHBitMap; +extern Object *GTBLOGOImg; +extern struct BitMap GTBLOGOBitMap; +extern struct SmartBitMapIRGB GTBLOGOPalette[]; + +extern struct Menu *MainMenus; +extern struct NewMenu MainNewMenu[]; +#define MN_Main 0 +#define CNTMN_MENUS 2 + + +#define CNT_PGBO_General 9 +#define GD_PGBO_LABEL 0 +#define GD_PGBO_X 1 +#define GD_PGBO_Y 2 +#define GD_PGBO_WIDTH 3 +#define GD_PGBO_HEIGHT 4 +#define GD_PGBO_REL_X 5 +#define GD_PGBO_REL_Y 6 +#define GD_PGBO_REL_W 7 +#define GD_PGBO_REL_H 8 + +#define CNT_About 2 +#define GD_ABOUT_TEXT 0 +#define GD_ABOUT_OK 1 + +#define CNT_PG_BUTT_Flags 5 +#define GD_PG_BUTT_FLAGS_IMMEDIATE 0 +#define GD_PG_BUTT_FLAGS_UNDERSCORE 1 +#define GD_PG_BUTT_FLAGS_DISABLED 2 +#define GD_PG_BUTT_FLAGS_TITLETYPE 3 +#define GD_PG_BUTT_FLAGS_TOGGLE 4 + +#define CNT_PG_CBOX_Flags 5 +#define GD_PG_CBOX_FLAGS_SCALED 0 +#define GD_PG_CBOX_FLAGS_CHECKED 1 +#define GD_PG_CBOX_FLAGS_HIGHLABEL 2 +#define GD_PG_CBOX_FLAGS_UNDERSCORE 3 +#define GD_PG_CBOX_FLAGS_DISABLED 4 + +#define CNT_PG_CWHL_Flags 6 +#define GD_PG_CWHL_FLAGS_MAXPENS 0 +#define GD_PG_CWHL_FLAGS_ABBRV 1 +#define GD_PG_CWHL_FLAGS_GSLIDER 2 +#define GD_PG_CWHL_FLAGS_BEVELBOX 3 +#define GD_PG_CWHL_FLAGS_DISABLED 4 +#define GD_PG_CWHL_FLAGS_FOLLOWMOUSE 5 + +#define CNT_PG_CYCE_Flags 3 +#define GD_PG_CYCE_FLAGS_HIGHLABEL 0 +#define GD_PG_CYCE_FLAGS_UNDERSCORE 1 +#define GD_PG_CYCE_FLAGS_DISABLED 2 + +#define CNT_PG_Lists 7 +#define GD_PG_LISTS_EDIT 0 +#define GD_PG_LISTS_ACTIVE 1 +#define GD_PG_LISTS_LIST 2 +#define GD_PG_LISTS_UP 3 +#define GD_PG_LISTS_DOWN 4 +#define GD_PG_LISTS_ADD 5 +#define GD_PG_LISTS_DEL 6 + +#define CNT_PG_DTYP_Flags 2 +#define GD_PG_DTYP_FLAGS_OBJECT 0 +#define GD_PG_DTYP_FLAGS_DISABLED 1 + +#define CNT_PG_GRSL_Flags 7 +#define GD_PG_GRSL_FLAGS_KNOBPIXELS 0 +#define GD_PG_GRSL_FLAGS_MAXVAL 1 +#define GD_PG_GRSL_FLAGS_CURVAL 2 +#define GD_PG_GRSL_FLAGS_SKIPVAL 3 +#define GD_PG_GRSL_FLAGS_PENS 4 +#define GD_PG_GRSL_FLAGS_FREEDOM 5 +#define GD_PG_GRSL_FLAGS_DISABLED 6 + +#define CNT_PG_INTR_Flags 6 +#define GD_PG_INTR_FLAGS_DISABLED 0 +#define GD_PG_INTR_FLAGS_UNDERSCORE 1 +#define GD_PG_INTR_FLAGS_HIGHLABEL 2 +#define GD_PG_INTR_FLAGS_TABCYCLE 3 +#define GD_PG_INTR_FLAGS_REPLACEMODE 4 +#define GD_PG_INTR_FLAGS_EXITHELP 5 + +#define CNT_PG_INTR_Var 3 +#define GD_PG_INTR_VAR_MAXCHARS 0 +#define GD_PG_INTR_VAR_NUMBER 1 +#define GD_PG_INTR_VAR_JUSTIFICATION 2 + +#define CNT_PG_LVIE_Flags 8 +#define GD_PG_LVIE_FLAGS_ARROWS 0 +#define GD_PG_LVIE_FLAGS_SPACING 1 +#define GD_PG_LVIE_FLAGS_DISABLED 2 +#define GD_PG_LVIE_FLAGS_UNDERSCORE 3 +#define GD_PG_LVIE_FLAGS_HIGHLABEL 4 +#define GD_PG_LVIE_FLAGS_READONLY 5 +#define GD_PG_LVIE_FLAGS_SHOWSELECTED 6 +#define GD_PG_LVIE_FLAGS_ARROWS_SEL 7 + +#define CNT_PG_MX_Flags 6 +#define GD_PG_MX_FLAGS_DISABLED 0 +#define GD_PG_MX_FLAGS_UNDERSCORE 1 +#define GD_PG_MX_FLAGS_HIGHLABEL 2 +#define GD_PG_MX_FLAGS_SCALED 3 +#define GD_PG_MX_FLAGS_PLACEMENT 4 +#define GD_PG_MX_FLAGS_SPACING 5 + +#define CNT_PG_NUMB_Flags 8 +#define GD_PG_NUMB_FLAGS_FORMAT 0 +#define GD_PG_NUMB_FLAGS_DEFAULT 1 +#define GD_PG_NUMB_FLAGS_MAXNUMLEN 2 +#define GD_PG_NUMB_FLAGS_DISABLED 3 +#define GD_PG_NUMB_FLAGS_HIGHLABEL 4 +#define GD_PG_NUMB_FLAGS_BORDER 5 +#define GD_PG_NUMB_FLAGS_CLIPPED 6 +#define GD_PG_NUMB_FLAGS_JUSTIFICATION 7 + +#define CNT_PGGT_General 11 +#define GD_PGGT_LABEL 0 +#define GD_PGGT_TITLE 1 +#define GD_PGGT_X 2 +#define GD_PGGT_Y 3 +#define GD_PGGT_WIDTH 4 +#define GD_PGGT_HEIGHT 5 +#define GD_PGGT_PLACEMENT 6 +#define GD_PGGT_REL_X 7 +#define GD_PGGT_REL_Y 8 +#define GD_PGGT_REL_W 9 +#define GD_PGGT_REL_H 10 + +#define CNT_PG_PAGE_Flags 4 +#define GD_PG_PAGE_FLAGS_DISABLED 0 +#define GD_PG_PAGE_FLAGS_UNDERSCORE 1 +#define GD_PG_PAGE_FLAGS_LAYOUT 2 +#define GD_PG_PAGE_FLAGS_STYLE 3 + +#define CNT_PG_PAGE_Lists 7 +#define GD_PG_PAGE_LISTS_LIST 0 +#define GD_PG_PAGE_LISTS_ADD 1 +#define GD_PG_PAGE_LISTS_DEL 2 +#define GD_PG_PAGE_LISTS_UP 3 +#define GD_PG_PAGE_LISTS_DOWN 4 +#define GD_PG_PAGE_LISTS_WINDOWS 5 +#define GD_PG_PAGE_LISTS_ACTIVE 6 + +#define CNT_PG_PALT_Flags 8 +#define GD_PG_PALT_FLAGS_COLOR 0 +#define GD_PG_PALT_FLAGS_OFFSET 1 +#define GD_PG_PALT_FLAGS_SHOWSELECTED_VAR 2 +#define GD_PG_PALT_FLAGS_SHOWSELECTED 3 +#define GD_PG_PALT_FLAGS_DISABLED 4 +#define GD_PG_PALT_FLAGS_UNDERSCORE 5 +#define GD_PG_PALT_FLAGS_HIGHLABEL 6 +#define GD_PG_PALT_FLAGS_TYPE 7 + +#define CNT_PG_PUPM_Flags 2 +#define GD_PG_PUPM_FLAGS_DISABLED 0 +#define GD_PG_PUPM_FLAGS_NEWLOOK 1 + +#define CNT_PG_PRGR_Flags 7 +#define GD_PG_PRGR_FLAGS_MAX 0 +#define GD_PG_PRGR_FLAGS_CURRENT 1 +#define GD_PG_PRGR_FLAGS_FORMAT 2 +#define GD_PG_PRGR_FLAGS_DISABLED 3 +#define GD_PG_PRGR_FLAGS_BORDER 4 +#define GD_PG_PRGR_FLAGS_PERCENTS 5 +#define GD_PG_PRGR_FLAGS_PLACEMENT 6 + +#define CNT_PG_SCRL_Flags 5 +#define GD_PG_SCRL_FLAGS_DISABLED 0 +#define GD_PG_SCRL_FLAGS_UNDERSCORE 1 +#define GD_PG_SCRL_FLAGS_HIGHLABEL 2 +#define GD_PG_SCRL_FLAGS_IMMEDIATE 3 +#define GD_PG_SCRL_FLAGS_RELVERIFY 4 + +#define CNT_PG_SCRL_Var 6 +#define GD_PG_SCRL_VAR_TOP 0 +#define GD_PG_SCRL_VAR_TOTAL 1 +#define GD_PG_SCRL_VAR_VISIBLE 2 +#define GD_PG_SCRL_VAR_FREEDOM 3 +#define GD_PG_SCRL_VAR_ARROWS 4 +#define GD_PG_SCRL_VAR_ARROW_TYPE 5 + +#define CNT_PG_SLIR_Flags 8 +#define GD_PG_SLIR_FLAGS_FORMAT 0 +#define GD_PG_SLIR_FLAGS_MAXPIXELLEN 1 +#define GD_PG_SLIR_FLAGS_MAXPIXELLEN_SET 2 +#define GD_PG_SLIR_FLAGS_DISABLED 3 +#define GD_PG_SLIR_FLAGS_UNDERSCORE 4 +#define GD_PG_SLIR_FLAGS_HIGHLABEL 5 +#define GD_PG_SLIR_FLAGS_IMMEDIATE 6 +#define GD_PG_SLIR_FLAGS_RELVERIFY 7 + +#define CNT_PG_SLIR_Var 7 +#define GD_PG_SLIR_VAR_MIN 0 +#define GD_PG_SLIR_VAR_MAX 1 +#define GD_PG_SLIR_VAR_LEVEL 2 +#define GD_PG_SLIR_VAR_MAXLEVLEN 3 +#define GD_PG_SLIR_VAR_JUSTIFICATION 4 +#define GD_PG_SLIR_VAR_FREEDOM 5 +#define GD_PG_SLIR_VAR_LEVELPLACE 6 + +#define CNT_PG_STRG_Flags 6 +#define GD_PG_STRG_FLAGS_DISABLED 0 +#define GD_PG_STRG_FLAGS_UNDERSCORE 1 +#define GD_PG_STRG_FLAGS_HIGHLABEL 2 +#define GD_PG_STRG_FLAGS_TABCYCLE 3 +#define GD_PG_STRG_FLAGS_REPLACEMODE 4 +#define GD_PG_STRG_FLAGS_EXITHELP 5 + +#define CNT_PG_STRG_Var 3 +#define GD_PG_STRG_VAR_MAXCHARS 0 +#define GD_PG_STRG_VAR_STRING 1 +#define GD_PG_STRG_VAR_JUSTIFICATION 2 + +#define CNT_PG_TDEK_Flags 5 +#define GD_PG_TDEK_FLAGS_FRAMES 0 +#define GD_PG_TDEK_FLAGS_CURRENT 1 +#define GD_PG_TDEK_FLAGS_DISABLED 2 +#define GD_PG_TDEK_FLAGS_TAPE 3 +#define GD_PG_TDEK_FLAGS_PAUSED 4 + +#define CNT_PG_TEXT_Flags 7 +#define GD_PG_TEXT_FLAGS_DISABLED 0 +#define GD_PG_TEXT_FLAGS_HIGHLABEL 1 +#define GD_PG_TEXT_FLAGS_BORDER 2 +#define GD_PG_TEXT_FLAGS_CLIPPED 3 +#define GD_PG_TEXT_FLAGS_COPYTEXT 4 +#define GD_PG_TEXT_FLAGS_JUSTIFICATION 5 +#define GD_PG_TEXT_FLAGS_DEFAULT 6 + +#define CNT_PG_TFLD_Flags 10 +#define GD_PG_TFLD_FLAGS_DISABLED 0 +#define GD_PG_TFLD_FLAGS_TABCYCLE 1 +#define GD_PG_TFLD_FLAGS_READONLY 2 +#define GD_PG_TFLD_FLAGS_INVERTED 3 +#define GD_PG_TFLD_FLAGS_PARTIAL 4 +#define GD_PG_TFLD_FLAGS_BLOCKCURSOR 5 +#define GD_PG_TFLD_FLAGS_VCENTER 6 +#define GD_PG_TFLD_FLAGS_PASSCOMMAND 7 +#define GD_PG_TFLD_FLAGS_CLIPBOARD 8 +#define GD_PG_TFLD_FLAGS_UNDO 9 + +#define CNT_PG_TFLD_Flags2 8 +#define GD_PG_TFLD_FLAGS_NONPRINTCHARS 0 +#define GD_PG_TFLD_FLAGS_MAXSIZEBEEP 1 +#define GD_PG_TFLD_FLAGS_NOGHOST 2 +#define GD_PG_TFLD_FLAGS_MODIFIED 3 +#define GD_PG_TFLD_FLAGS_USERALIGN 4 +#define GD_PG_TFLD_FLAGS_RULEDPAPER 5 +#define GD_PG_TFLD_FLAGS_BORDER 6 +#define GD_PG_TFLD_FLAGS_ALIGN 7 + +#define CNT_PG_TFLD_Var 7 +#define GD_PG_TFLD_VAR_BLINKRATE 0 +#define GD_PG_TFLD_VAR_MAXSIZE 1 +#define GD_PG_TFLD_VAR_TABSPACES 2 +#define GD_PG_TFLD_VAR_SPACING 3 +#define GD_PG_TFLD_VAR_DELIMITERS 4 +#define GD_PG_TFLD_VAR_ACCEPTCHARS 5 +#define GD_PG_TFLD_VAR_REJECTCHARS 6 + +#define CNT_Properties 3 +#define GD_PROPERTIES_LOCK 0 +#define GD_PROPERTIES_APPLY 1 +#define GD_PROPERTIES_PAGES 2 + + +#define CNT_Preferences 11 +#define GD_PREFS_SAVE 0 +#define GD_PREFS_USE 1 +#define GD_PREFS_CANCEL 2 +#define GD_PG_PREFS_GENERAL_AUTOBACKUP 3 +#define GD_PG_PREFS_GENERAL_SIZEZOOM 4 +#define GD_PG_PREFS_GENERAL_FASTREDRAW 5 +#define GD_PG_PREFS_GENERAL_GETSCREEN 6 +#define GD_PG_PREFS_GENERAL_SCREENMODE 7 +#define GD_PG_PREFS_GEN_LIST 8 +#define GD_PG_PREFS_GENERAL_FONTNAME 9 +#define GD_PG_PREFS_GENERAL_EDITFONT 10 + +#define CNT_Grid 6 +#define GD_GRID_X 0 +#define GD_GRID_Y 1 +#define GD_GRID_SHOW 2 +#define GD_GRID_SNAP 3 +#define GD_GRID_OK 4 +#define GD_GRID_CANCEL 5 + +#define CNT_PGWN_General 11 +#define GD_PGWN_LABEL 0 +#define GD_PGWN_X 1 +#define GD_PGWN_Y 2 +#define GD_PGWN_WIDTH 3 +#define GD_PGWN_HEIGHT 4 +#define GD_PGWN_INNERHEIGHT 5 +#define GD_PGWN_INNERWIDTH 6 +#define GD_PGWN_REL_H 7 +#define GD_PGWN_REL_W 8 +#define GD_PGWN_REL_Y 9 +#define GD_PGWN_REL_X 10 + +#define CNT_PGWN_Flags1 8 +#define GD_PGWN_SCREEN_TITLE 0 +#define GD_PGWN_WINDOW_TITLE 1 +#define GD_PGWN_PAGED 2 +#define GD_PGWN_FONTADAPTIVE 3 +#define GD_PGWN_APPWINDOW 4 +#define GD_PGWN_PROJECT 5 +#define GD_PGWN_MENU_GET 6 +#define GD_PGWN_MENU 7 + +#define CNT_PGWN_Style 9 +#define GD_PGWN_ZOOM 0 +#define GD_PGWN_BACKDROP 1 +#define GD_PGWN_BORDERLESS 2 +#define GD_PGWN_SIZEBBOTTOM 3 +#define GD_PGWN_SIZEBRIGHT 4 +#define GD_PGWN_CLOSEGADGET 5 +#define GD_PGWN_DEPTHGADGET 6 +#define GD_PGWN_SIZEGADGET 7 +#define GD_PGWN_DRAGGADGET 8 + +#define CNT_PGWN_Flags2 9 +#define GD_PGWN_FALLBACK 0 +#define GD_PGWN_REPORTMOUSE 1 +#define GD_PGWN_AUTOADJUST 2 +#define GD_PGWN_ACTIVATE 3 +#define GD_PGWN_RMBTRAP 4 +#define GD_PGWN_NEWLOOKMENUS 5 +#define GD_PGWN_NOCAREREFRESH 6 +#define GD_PGWN_GZZ 7 +#define GD_PGWN_REFRESH 8 + +#define CNT_PGWN_Flags3 8 +#define GD_PGWN_MOUSEQUEUE 0 +#define GD_PGWN_REPEATQUEUE 1 +#define GD_PGWN_IDCMP 2 +#define GD_PGWN_REPEATQUEUE_SET 3 +#define GD_PGWN_MOUSEQUEUE_SET 4 +#define GD_PGWN_NOTIFYDEPTH 5 +#define GD_PGWN_MENUHELP 6 +#define GD_PGWN_POINTERDELAY 7 + +#define CNT_WN_IDCMPFlags 28 +#define GD_IDCMP_CANCEL 0 +#define GD_IDCMP_OK 1 +#define GD_IDCMP_MENUPICK 2 +#define GD_IDCMP_GADGETHELP 3 +#define GD_IDCMP_MENUHELP 4 +#define GD_IDCMP_IDCMPUPDATE 5 +#define GD_IDCMP_DISKINSERTED 6 +#define GD_IDCMP_DISKREMOVED 7 +#define GD_IDCMP_INACTIVEWINDOW 8 +#define GD_IDCMP_ACTIVEWINDOW 9 +#define GD_IDCMP_INTUITICKS 10 +#define GD_IDCMP_CLOSEWINDOW 11 +#define GD_IDCMP_VANILLAKEY 12 +#define GD_IDCMP_RAWKEY 13 +#define GD_IDCMP_GADGETDOWN 14 +#define GD_IDCMP_GADGETUP 15 +#define GD_IDCMP_MOUSEBUTTONS 16 +#define GD_IDCMP_NEWPREFS 17 +#define GD_IDCMP_CHANGEWINDOW 18 +#define GD_IDCMP_REFRESHWINDOW 19 +#define GD_IDCMP_NEWSIZE 20 +#define GD_IDCMP_REQCLEAR 21 +#define GD_IDCMP_REQSET 22 +#define GD_IDCMP_REQVERIFY 23 +#define GD_IDCMP_SIZEVERIFY 24 +#define GD_IDCMP_MENUVERIFY 25 +#define GD_IDCMP_MOUSEMOVE 26 +#define GD_IDCMP_DELTAMOVE 27 + +#define CNT_TB_Main 25 +#define GD_TB_NEW 0 +#define GD_TB_OPEN 1 +#define GD_TB_SAVE 2 +#define GD_TB_CUT 3 +#define GD_TB_COPY 4 +#define GD_TB_PASTE 5 +#define GD_TB_UNDO 6 +#define GD_TB_HELP 7 +#define GD_TB_NEWWINDOW 8 +#define GD_TB_NEWMENU 9 +#define GD_TB_NEWPOINTER 10 +#define GD_TB_NEWSTRING 11 +#define GD_TB_NEWVERSION 12 +#define GD_TB_NEWSCREEN 13 +#define GD_TB_ALIGNLEFT 14 +#define GD_TB_ALIGNHCENTER 15 +#define GD_TB_ALIGNRIGHT 16 +#define GD_TB_ALIGNTOP 17 +#define GD_TB_ALIGNVCENTER 18 +#define GD_TB_ALIGNBOTTOM 19 +#define GD_TB_SPREADHORIZ 20 +#define GD_TB_SPREADVERT 21 +#define GD_TB_CLONEWIDTH 22 +#define GD_TB_CLONEHEIGHT 23 +#define GD_TB_CLONEBOTH 24 + +#define CNT_TB_Window 25 +#define GD_TBG_NONE 0 +#define GD_TBG_TEXTFIELD 1 +#define GD_TBG_TEXT 2 +#define GD_TBG_TAPEDECK 3 +#define GD_TBG_STRING 4 +#define GD_TBG_SLIDER 5 +#define GD_TBG_SCROLLER 6 +#define GD_TBG_PROGRESS 7 +#define GD_TBG_POPUPMENU 8 +#define GD_TBG_PALETTE 9 +#define GD_TBG_PAGE 10 +#define GD_TBG_NUMBER 11 +#define GD_TBG_MX 12 +#define GD_TBG_LISTVIEW 13 +#define GD_TBG_INTEGER 14 +#define GD_TBG_GRADIENTSLIDER 15 +#define GD_TBG_DATATYPE 16 +#define GD_TBG_CYCLE 17 +#define GD_TBG_COLORWHEEL 18 +#define GD_TBG_CHECKBOX 19 +#define GD_TBG_BUTTON 20 +#define GD_TBG_MODE_TEST 21 +#define GD_TBG_MODE_GADGET 22 +#define GD_TBG_MODE_FRAME 23 +#define GD_TBG_TREEVIEW 24 + +#define CNT_PGMN_General 2 +#define GD_PGMN_LABEL 0 +#define GD_PGMN_NEWLOOK 1 + +#define CNT_Working 1 +#define GD_WORK_PROGRESS 0 + +#define CNT_PGFR_General 6 +#define GD_PGFR_X 0 +#define GD_PGFR_Y 1 +#define GD_PGFR_WIDTH 2 +#define GD_PGFR_HEIGHT 3 +#define GD_PGFR_FRAME 4 +#define GD_PGFR_RECESSED 5 + + + + +#define CNT_List 1 +#define GD_LIST 0 + +#define CNT_PGMN_Item 8 +#define GD_PGMN_ITEM_LABEL 0 +#define GD_PGMN_ITEM_TITLE 1 +#define GD_PGMN_ITEM_COMMKEY 2 +#define GD_PGMN_ITEM_POPUP 3 +#define GD_PGMN_ITEM_BARLABEL 4 +#define GD_PGMN_ITEM_DISABLED 5 +#define GD_PGMN_ITEM_CHECKED 6 +#define GD_PGMN_ITEM_TOGGLE 7 + +#define CNT_PGPI_General 7 +#define GD_PGPI_LABEL 0 +#define GD_PGPI_WIDTH 1 +#define GD_PGPI_HEIGHT 2 +#define GD_PGPI_DEPTH 3 +#define GD_PGPI_TYPE 4 +#define GD_PGPI_SETPOINT 5 +#define GD_PGPI_PALETTE 6 + +#define CNT_TB_Pointer 1 +#define GD_TBP_PALETTE 0 + +#define CNT_Screen 1 +#define GD_SCREEN_PAGES 0 + +#define CNT_PGSCR_General 10 +#define GD_PGSCR_WIDTH 0 +#define GD_PGSCR_HEIGHT 1 +#define GD_PGSCR_DEPTH 2 +#define GD_PGSCR_TITLE 3 +#define GD_PGSCR_PUBNAME 4 +#define GD_PGSCR_USE 5 +#define GD_PGSCR_MAKEPUBLIC 6 +#define GD_PGSCR_MODEID 7 +#define GD_PGSCR_MODEID_GET 8 +#define GD_PGSCR_DEFAULTID 9 + +#define CNT_PGSCR_Flags 11 +#define GD_PGSCR_SHOWTITLE 0 +#define GD_PGSCR_BEHIND 1 +#define GD_PGSCR_QUIET 2 +#define GD_PGSCR_AUTOSCROLL 3 +#define GD_PGSCR_FULLPALETTE 4 +#define GD_PGSCR_DRAGGABLE 5 +#define GD_PGSCR_EXCLUSIVE 6 +#define GD_PGSCR_SHAREPENS 7 +#define GD_PGSCR_INTERLEAVED 8 +#define GD_PGSCR_LIKEWORKBENCH 9 +#define GD_PGSCR_MINIMIZEISG 10 + +#define CNT_EditString 4 +#define GD_PGSTR_STRINGS 0 +#define GD_PGSTR_ADD 1 +#define GD_PGSTR_DELETE 2 +#define GD_PGSTR_EDIT 3 + +#define CNT_PGSTR_General 2 +#define GD_PGSTR_LABEL 0 +#define GD_PGSTR_STRING 1 + +#define CNT_EditVersion 5 +#define GD_PGVER_PROGRAMNAME 0 +#define GD_PGVER_AUTHOR 1 +#define GD_PGVER_VERSION 2 +#define GD_PGVER_DATE 3 +#define GD_PGVER_REVISION 4 + +#define CNT_PG_TRLV_Flags 9 +#define GD_PG_TRLV_FLAGS_COLUMNS 0 +#define GD_PG_TRLV_FLAGS_FORMAT 1 +#define GD_PG_TRLV_FLAGS_DISABLED 2 +#define GD_PG_TRLV_FLAGS_MULTISELECT 3 +#define GD_PG_TRLV_FLAGS_BORDER 4 +#define GD_PG_TRLV_FLAGS_READONLY 5 +#define GD_PG_TRLV_FLAGS_SHOWTREELINES 6 +#define GD_PG_TRLV_FLAGS_SHOWSELECTED 7 +#define GD_PG_TRLV_FLAGS_TREE 8 + +#define CNT_Object 1 +#define GD_OBJLIST 0 + +#define CNT_EditPalette 8 +#define GD_PAL_PALETTE 0 +#define GD_PAL_GREEN 1 +#define GD_PAL_BLUE 2 +#define GD_PAL_RED 3 +#define GD_PAL_CANCEL 4 +#define GD_PAL_OK 5 +#define GD_PAL_GSLIDER 6 +#define GD_PAL_COLORWHEEL 7 + +#define CNT_PGWN_TabOrder 3 +#define GD_PGWN_TABORDER_DOWN 0 +#define GD_PGWN_TABORDER_UP 1 +#define GD_PGWN_TABORDER_LIST 2 + +#define CNT_Status 2 +#define GD_STATUS_CHANGED 0 +#define GD_STATUS_TEXT 1 + +/* Prototypes */ +int FN_PGBO_LABEL_Clicked(void); +int FN_PGBO_X_Clicked(void); +int FN_PGBO_Y_Clicked(void); +int FN_PGBO_WIDTH_Clicked(void); +int FN_PGBO_HEIGHT_Clicked(void); +int FN_PGBO_REL_X_Clicked(void); +int FN_PGBO_REL_Y_Clicked(void); +int FN_PGBO_REL_W_Clicked(void); +int FN_PGBO_REL_H_Clicked(void); + +int FN_ABOUT_TEXT_Clicked(void); +int FN_ABOUT_OK_Clicked(void); + +int FN_PG_BUTT_FLAGS_IMMEDIATE_Clicked(void); +int FN_PG_BUTT_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_BUTT_FLAGS_DISABLED_Clicked(void); +int FN_PG_BUTT_FLAGS_TITLETYPE_Clicked(void); +int FN_PG_BUTT_FLAGS_TOGGLE_Clicked(void); + +int FN_PG_CBOX_FLAGS_SCALED_Clicked(void); +int FN_PG_CBOX_FLAGS_CHECKED_Clicked(void); +int FN_PG_CBOX_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_CBOX_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_CBOX_FLAGS_DISABLED_Clicked(void); + +int FN_PG_CWHL_FLAGS_MAXPENS_Clicked(void); +int FN_PG_CWHL_FLAGS_ABBRV_Clicked(void); +int FN_PG_CWHL_FLAGS_GSLIDER_Clicked(void); +int FN_PG_CWHL_FLAGS_BEVELBOX_Clicked(void); +int FN_PG_CWHL_FLAGS_DISABLED_Clicked(void); +int FN_PG_CWHL_FLAGS_FOLLOWMOUSE_Clicked(void); + +int FN_PG_CYCE_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_CYCE_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_CYCE_FLAGS_DISABLED_Clicked(void); + +int FN_PG_LISTS_EDIT_Clicked(void); +int FN_PG_LISTS_ACTIVE_Clicked(void); +int FN_PG_LISTS_LIST_Clicked(void); +int FN_PG_LISTS_UP_Clicked(void); +int FN_PG_LISTS_DOWN_Clicked(void); +int FN_PG_LISTS_ADD_Clicked(void); +int FN_PG_LISTS_DEL_Clicked(void); + +int FN_PG_DTYP_FLAGS_OBJECT_Clicked(void); +int FN_PG_DTYP_FLAGS_DISABLED_Clicked(void); + +int FN_PG_GRSL_FLAGS_KNOBPIXELS_Clicked(void); +int FN_PG_GRSL_FLAGS_MAXVAL_Clicked(void); +int FN_PG_GRSL_FLAGS_CURVAL_Clicked(void); +int FN_PG_GRSL_FLAGS_SKIPVAL_Clicked(void); +int FN_PG_GRSL_FLAGS_PENS_Clicked(void); +int FN_PG_GRSL_FLAGS_FREEDOM_Clicked(void); +int FN_PG_GRSL_FLAGS_DISABLED_Clicked(void); + +int FN_PG_INTR_FLAGS_DISABLED_Clicked(void); +int FN_PG_INTR_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_INTR_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_INTR_FLAGS_TABCYCLE_Clicked(void); +int FN_PG_INTR_FLAGS_REPLACEMODE_Clicked(void); +int FN_PG_INTR_FLAGS_EXITHELP_Clicked(void); + +int FN_PG_INTR_VAR_MAXCHARS_Clicked(void); +int FN_PG_INTR_VAR_NUMBER_Clicked(void); +int FN_PG_INTR_VAR_JUSTIFICATION_Clicked(void); + +int FN_PG_LVIE_FLAGS_ARROWS_Clicked(void); +int FN_PG_LVIE_FLAGS_SPACING_Clicked(void); +int FN_PG_LVIE_FLAGS_DISABLED_Clicked(void); +int FN_PG_LVIE_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_LVIE_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_LVIE_FLAGS_READONLY_Clicked(void); +int FN_PG_LVIE_FLAGS_SHOWSELECTED_Clicked(void); +int FN_PG_LVIE_FLAGS_ARROWS_SEL_Clicked(void); + +int FN_PG_MX_FLAGS_DISABLED_Clicked(void); +int FN_PG_MX_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_MX_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_MX_FLAGS_SCALED_Clicked(void); +int FN_PG_MX_FLAGS_PLACEMENT_Clicked(void); +int FN_PG_MX_FLAGS_SPACING_Clicked(void); + +int FN_PG_NUMB_FLAGS_FORMAT_Clicked(void); +int FN_PG_NUMB_FLAGS_DEFAULT_Clicked(void); +int FN_PG_NUMB_FLAGS_MAXNUMLEN_Clicked(void); +int FN_PG_NUMB_FLAGS_DISABLED_Clicked(void); +int FN_PG_NUMB_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_NUMB_FLAGS_BORDER_Clicked(void); +int FN_PG_NUMB_FLAGS_CLIPPED_Clicked(void); +int FN_PG_NUMB_FLAGS_JUSTIFICATION_Clicked(void); + +int FN_PGGT_LABEL_Clicked(void); +int FN_PGGT_TITLE_Clicked(void); +int FN_PGGT_X_Clicked(void); +int FN_PGGT_Y_Clicked(void); +int FN_PGGT_WIDTH_Clicked(void); +int FN_PGGT_HEIGHT_Clicked(void); +int FN_PGGT_PLACEMENT_Clicked(void); +int FN_PGGT_REL_X_Clicked(void); +int FN_PGGT_REL_Y_Clicked(void); +int FN_PGGT_REL_W_Clicked(void); +int FN_PGGT_REL_H_Clicked(void); + +int FN_PG_PAGE_FLAGS_DISABLED_Clicked(void); +int FN_PG_PAGE_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_PAGE_FLAGS_LAYOUT_Clicked(void); +int FN_PG_PAGE_FLAGS_STYLE_Clicked(void); + +int FN_PG_PAGE_LISTS_LIST_Clicked(void); +int FN_PG_PAGE_LISTS_ADD_Clicked(void); +int FN_PG_PAGE_LISTS_DEL_Clicked(void); +int FN_PG_PAGE_LISTS_UP_Clicked(void); +int FN_PG_PAGE_LISTS_DOWN_Clicked(void); +int FN_PG_PAGE_LISTS_WINDOWS_Clicked(void); +int FN_PG_PAGE_LISTS_ACTIVE_Clicked(void); + +int FN_PG_PALT_FLAGS_COLOR_Clicked(void); +int FN_PG_PALT_FLAGS_OFFSET_Clicked(void); +int FN_PG_PALT_FLAGS_SHOWSELECTED_VAR_Clicked(void); +int FN_PG_PALT_FLAGS_SHOWSELECTED_Clicked(void); +int FN_PG_PALT_FLAGS_DISABLED_Clicked(void); +int FN_PG_PALT_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_PALT_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_PALT_FLAGS_TYPE_Clicked(void); + +int FN_PG_PUPM_FLAGS_DISABLED_Clicked(void); +int FN_PG_PUPM_FLAGS_NEWLOOK_Clicked(void); + +int FN_PG_PRGR_FLAGS_MAX_Clicked(void); +int FN_PG_PRGR_FLAGS_CURRENT_Clicked(void); +int FN_PG_PRGR_FLAGS_FORMAT_Clicked(void); +int FN_PG_PRGR_FLAGS_DISABLED_Clicked(void); +int FN_PG_PRGR_FLAGS_BORDER_Clicked(void); +int FN_PG_PRGR_FLAGS_PERCENTS_Clicked(void); +int FN_PG_PRGR_FLAGS_PLACEMENT_Clicked(void); + +int FN_PG_SCRL_FLAGS_DISABLED_Clicked(void); +int FN_PG_SCRL_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_SCRL_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_SCRL_FLAGS_IMMEDIATE_Clicked(void); +int FN_PG_SCRL_FLAGS_RELVERIFY_Clicked(void); + +int FN_PG_SCRL_VAR_TOP_Clicked(void); +int FN_PG_SCRL_VAR_TOTAL_Clicked(void); +int FN_PG_SCRL_VAR_VISIBLE_Clicked(void); +int FN_PG_SCRL_VAR_FREEDOM_Clicked(void); +int FN_PG_SCRL_VAR_ARROWS_Clicked(void); +int FN_PG_SCRL_VAR_ARROW_TYPE_Clicked(void); + +int FN_PG_SLIR_FLAGS_FORMAT_Clicked(void); +int FN_PG_SLIR_FLAGS_MAXPIXELLEN_Clicked(void); +int FN_PG_SLIR_FLAGS_MAXPIXELLEN_SET_Clicked(void); +int FN_PG_SLIR_FLAGS_DISABLED_Clicked(void); +int FN_PG_SLIR_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_SLIR_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_SLIR_FLAGS_IMMEDIATE_Clicked(void); +int FN_PG_SLIR_FLAGS_RELVERIFY_Clicked(void); + +int FN_PG_SLIR_VAR_MIN_Clicked(void); +int FN_PG_SLIR_VAR_MAX_Clicked(void); +int FN_PG_SLIR_VAR_LEVEL_Clicked(void); +int FN_PG_SLIR_VAR_MAXLEVLEN_Clicked(void); +int FN_PG_SLIR_VAR_JUSTIFICATION_Clicked(void); +int FN_PG_SLIR_VAR_FREEDOM_Clicked(void); +int FN_PG_SLIR_VAR_LEVELPLACE_Clicked(void); + +int FN_PG_STRG_FLAGS_DISABLED_Clicked(void); +int FN_PG_STRG_FLAGS_UNDERSCORE_Clicked(void); +int FN_PG_STRG_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_STRG_FLAGS_TABCYCLE_Clicked(void); +int FN_PG_STRG_FLAGS_REPLACEMODE_Clicked(void); +int FN_PG_STRG_FLAGS_EXITHELP_Clicked(void); + +int FN_PG_STRG_VAR_MAXCHARS_Clicked(void); +int FN_PG_STRG_VAR_STRING_Clicked(void); +int FN_PG_STRG_VAR_JUSTIFICATION_Clicked(void); + +int FN_PG_TDEK_FLAGS_FRAMES_Clicked(void); +int FN_PG_TDEK_FLAGS_CURRENT_Clicked(void); +int FN_PG_TDEK_FLAGS_DISABLED_Clicked(void); +int FN_PG_TDEK_FLAGS_TAPE_Clicked(void); +int FN_PG_TDEK_FLAGS_PAUSED_Clicked(void); + +int FN_PG_TEXT_FLAGS_DISABLED_Clicked(void); +int FN_PG_TEXT_FLAGS_HIGHLABEL_Clicked(void); +int FN_PG_TEXT_FLAGS_BORDER_Clicked(void); +int FN_PG_TEXT_FLAGS_CLIPPED_Clicked(void); +int FN_PG_TEXT_FLAGS_COPYTEXT_Clicked(void); +int FN_PG_TEXT_FLAGS_JUSTIFICATION_Clicked(void); +int FN_PG_TEXT_FLAGS_DEFAULT_Clicked(void); + +int FN_PG_TFLD_FLAGS_DISABLED_Clicked(void); +int FN_PG_TFLD_FLAGS_TABCYCLE_Clicked(void); +int FN_PG_TFLD_FLAGS_READONLY_Clicked(void); +int FN_PG_TFLD_FLAGS_INVERTED_Clicked(void); +int FN_PG_TFLD_FLAGS_PARTIAL_Clicked(void); +int FN_PG_TFLD_FLAGS_BLOCKCURSOR_Clicked(void); +int FN_PG_TFLD_FLAGS_VCENTER_Clicked(void); +int FN_PG_TFLD_FLAGS_PASSCOMMAND_Clicked(void); +int FN_PG_TFLD_FLAGS_CLIPBOARD_Clicked(void); +int FN_PG_TFLD_FLAGS_UNDO_Clicked(void); + +int FN_PG_TFLD_FLAGS_NONPRINTCHARS_Clicked(void); +int FN_PG_TFLD_FLAGS_MAXSIZEBEEP_Clicked(void); +int FN_PG_TFLD_FLAGS_NOGHOST_Clicked(void); +int FN_PG_TFLD_FLAGS_MODIFIED_Clicked(void); +int FN_PG_TFLD_FLAGS_USERALIGN_Clicked(void); +int FN_PG_TFLD_FLAGS_RULEDPAPER_Clicked(void); +int FN_PG_TFLD_FLAGS_BORDER_Clicked(void); +int FN_PG_TFLD_FLAGS_ALIGN_Clicked(void); + +int FN_PG_TFLD_VAR_BLINKRATE_Clicked(void); +int FN_PG_TFLD_VAR_MAXSIZE_Clicked(void); +int FN_PG_TFLD_VAR_TABSPACES_Clicked(void); +int FN_PG_TFLD_VAR_SPACING_Clicked(void); +int FN_PG_TFLD_VAR_DELIMITERS_Clicked(void); +int FN_PG_TFLD_VAR_ACCEPTCHARS_Clicked(void); +int FN_PG_TFLD_VAR_REJECTCHARS_Clicked(void); + +int FN_PROPERTIES_LOCK_Clicked(void); +int FN_PROPERTIES_APPLY_Clicked(void); +int FN_PROPERTIES_PAGES_Clicked(void); + + +int FN_PREFS_SAVE_Clicked(void); +int FN_PREFS_USE_Clicked(void); +int FN_PREFS_CANCEL_Clicked(void); +int FN_PG_PREFS_GENERAL_AUTOBACKUP_Clicked(void); +int FN_PG_PREFS_GENERAL_SIZEZOOM_Clicked(void); +int FN_PG_PREFS_GENERAL_FASTREDRAW_Clicked(void); +int FN_PG_PREFS_GENERAL_GETSCREEN_Clicked(void); +int FN_PG_PREFS_GEN_LIST_Clicked(void); +int FN_PG_PREFS_GENERAL_EDITFONT_Clicked(void); + +int FN_GRID_X_Clicked(void); +int FN_GRID_Y_Clicked(void); +int FN_GRID_SHOW_Clicked(void); +int FN_GRID_SNAP_Clicked(void); +int FN_GRID_OK_Clicked(void); +int FN_GRID_CANCEL_Clicked(void); + +int FN_PGWN_LABEL_Clicked(void); +int FN_PGWN_X_Clicked(void); +int FN_PGWN_Y_Clicked(void); +int FN_PGWN_WIDTH_Clicked(void); +int FN_PGWN_HEIGHT_Clicked(void); +int FN_PGWN_INNERHEIGHT_Clicked(void); +int FN_PGWN_INNERWIDTH_Clicked(void); +int FN_PGWN_REL_H_Clicked(void); +int FN_PGWN_REL_W_Clicked(void); +int FN_PGWN_REL_Y_Clicked(void); +int FN_PGWN_REL_X_Clicked(void); + +int FN_PGWN_SCREEN_TITLE_Clicked(void); +int FN_PGWN_WINDOW_TITLE_Clicked(void); +int FN_PGWN_PAGED_Clicked(void); +int FN_PGWN_FONTADAPTIVE_Clicked(void); +int FN_PGWN_APPWINDOW_Clicked(void); +int FN_PGWN_PROJECT_Clicked(void); +int FN_PGWN_MENU_GET_Clicked(void); + +int FN_PGWN_ZOOM_Clicked(void); +int FN_PGWN_BACKDROP_Clicked(void); +int FN_PGWN_BORDERLESS_Clicked(void); +int FN_PGWN_SIZEBBOTTOM_Clicked(void); +int FN_PGWN_SIZEBRIGHT_Clicked(void); +int FN_PGWN_CLOSEGADGET_Clicked(void); +int FN_PGWN_DEPTHGADGET_Clicked(void); +int FN_PGWN_SIZEGADGET_Clicked(void); +int FN_PGWN_DRAGGADGET_Clicked(void); + +int FN_PGWN_FALLBACK_Clicked(void); +int FN_PGWN_REPORTMOUSE_Clicked(void); +int FN_PGWN_AUTOADJUST_Clicked(void); +int FN_PGWN_ACTIVATE_Clicked(void); +int FN_PGWN_RMBTRAP_Clicked(void); +int FN_PGWN_NEWLOOKMENUS_Clicked(void); +int FN_PGWN_NOCAREREFRESH_Clicked(void); +int FN_PGWN_GZZ_Clicked(void); +int FN_PGWN_REFRESH_Clicked(void); + +int FN_PGWN_MOUSEQUEUE_Clicked(void); +int FN_PGWN_REPEATQUEUE_Clicked(void); +int FN_PGWN_IDCMP_Clicked(void); +int FN_PGWN_REPEATQUEUE_SET_Clicked(void); +int FN_PGWN_MOUSEQUEUE_SET_Clicked(void); +int FN_PGWN_NOTIFYDEPTH_Clicked(void); +int FN_PGWN_MENUHELP_Clicked(void); +int FN_PGWN_POINTERDELAY_Clicked(void); + +int FN_IDCMP_CANCEL_Clicked(void); +int FN_IDCMP_OK_Clicked(void); +int FN_IDCMP_MENUPICK_Clicked(void); +int FN_IDCMP_GADGETHELP_Clicked(void); +int FN_IDCMP_MENUHELP_Clicked(void); +int FN_IDCMP_IDCMPUPDATE_Clicked(void); +int FN_IDCMP_DISKINSERTED_Clicked(void); +int FN_IDCMP_DISKREMOVED_Clicked(void); +int FN_IDCMP_INACTIVEWINDOW_Clicked(void); +int FN_IDCMP_ACTIVEWINDOW_Clicked(void); +int FN_IDCMP_INTUITICKS_Clicked(void); +int FN_IDCMP_CLOSEWINDOW_Clicked(void); +int FN_IDCMP_VANILLAKEY_Clicked(void); +int FN_IDCMP_RAWKEY_Clicked(void); +int FN_IDCMP_GADGETDOWN_Clicked(void); +int FN_IDCMP_GADGETUP_Clicked(void); +int FN_IDCMP_MOUSEBUTTONS_Clicked(void); +int FN_IDCMP_NEWPREFS_Clicked(void); +int FN_IDCMP_CHANGEWINDOW_Clicked(void); +int FN_IDCMP_REFRESHWINDOW_Clicked(void); +int FN_IDCMP_NEWSIZE_Clicked(void); +int FN_IDCMP_REQCLEAR_Clicked(void); +int FN_IDCMP_REQSET_Clicked(void); +int FN_IDCMP_REQVERIFY_Clicked(void); +int FN_IDCMP_SIZEVERIFY_Clicked(void); +int FN_IDCMP_MENUVERIFY_Clicked(void); +int FN_IDCMP_MOUSEMOVE_Clicked(void); +int FN_IDCMP_DELTAMOVE_Clicked(void); + +int FN_TB_NEW_Clicked(void); +int FN_TB_OPEN_Clicked(void); +int FN_TB_SAVE_Clicked(void); +int FN_TB_CUT_Clicked(void); +int FN_TB_COPY_Clicked(void); +int FN_TB_PASTE_Clicked(void); +int FN_TB_UNDO_Clicked(void); +int FN_TB_HELP_Clicked(void); +int FN_TB_NEWWINDOW_Clicked(void); +int FN_TB_NEWMENU_Clicked(void); +int FN_TB_NEWPOINTER_Clicked(void); +int FN_TB_NEWSTRING_Clicked(void); +int FN_TB_NEWVERSION_Clicked(void); +int FN_TB_NEWSCREEN_Clicked(void); +int FN_TB_ALIGNLEFT_Clicked(void); +int FN_TB_ALIGNHCENTER_Clicked(void); +int FN_TB_ALIGNRIGHT_Clicked(void); +int FN_TB_ALIGNTOP_Clicked(void); +int FN_TB_ALIGNVCENTER_Clicked(void); +int FN_TB_ALIGNBOTTOM_Clicked(void); +int FN_TB_SPREADHORIZ_Clicked(void); +int FN_TB_SPREADVERT_Clicked(void); +int FN_TB_CLONEWIDTH_Clicked(void); +int FN_TB_CLONEHEIGHT_Clicked(void); +int FN_TB_CLONEBOTH_Clicked(void); + +int FN_TBG_NONE_Clicked(void); +int FN_TBG_TEXTFIELD_Clicked(void); +int FN_TBG_TEXT_Clicked(void); +int FN_TBG_TAPEDECK_Clicked(void); +int FN_TBG_STRING_Clicked(void); +int FN_TBG_SLIDER_Clicked(void); +int FN_TBG_SCROLLER_Clicked(void); +int FN_TBG_PROGRESS_Clicked(void); +int FN_TBG_POPUPMENU_Clicked(void); +int FN_TBG_PALETTE_Clicked(void); +int FN_TBG_PAGE_Clicked(void); +int FN_TBG_NUMBER_Clicked(void); +int FN_TBG_MX_Clicked(void); +int FN_TBG_LISTVIEW_Clicked(void); +int FN_TBG_INTEGER_Clicked(void); +int FN_TBG_GRADIENTSLIDER_Clicked(void); +int FN_TBG_DATATYPE_Clicked(void); +int FN_TBG_CYCLE_Clicked(void); +int FN_TBG_COLORWHEEL_Clicked(void); +int FN_TBG_CHECKBOX_Clicked(void); +int FN_TBG_BUTTON_Clicked(void); +int FN_TBG_MODE_TEST_Clicked(void); +int FN_TBG_MODE_GADGET_Clicked(void); +int FN_TBG_MODE_FRAME_Clicked(void); +int FN_TBG_TREEVIEW_Clicked(void); + +int FN_PGMN_LABEL_Clicked(void); +int FN_PGMN_NEWLOOK_Clicked(void); + + +int FN_PGFR_X_Clicked(void); +int FN_PGFR_Y_Clicked(void); +int FN_PGFR_WIDTH_Clicked(void); +int FN_PGFR_HEIGHT_Clicked(void); +int FN_PGFR_FRAME_Clicked(void); +int FN_PGFR_RECESSED_Clicked(void); + + + + +int FN_LIST_Clicked(void); + +int FN_PGMN_ITEM_LABEL_Clicked(void); +int FN_PGMN_ITEM_TITLE_Clicked(void); +int FN_PGMN_ITEM_COMMKEY_Clicked(void); +int FN_PGMN_ITEM_POPUP_Clicked(void); +int FN_PGMN_ITEM_BARLABEL_Clicked(void); +int FN_PGMN_ITEM_DISABLED_Clicked(void); +int FN_PGMN_ITEM_CHECKED_Clicked(void); +int FN_PGMN_ITEM_TOGGLE_Clicked(void); + +int FN_PGPI_LABEL_Clicked(void); +int FN_PGPI_WIDTH_Clicked(void); +int FN_PGPI_HEIGHT_Clicked(void); +int FN_PGPI_DEPTH_Clicked(void); +int FN_PGPI_TYPE_Clicked(void); +int FN_PGPI_SETPOINT_Clicked(void); +int FN_PGPI_PALETTE_Clicked(void); + +int FN_TBP_PALETTE_Clicked(void); + +int FN_SCREEN_PAGES_Clicked(void); + +int FN_PGSCR_WIDTH_Clicked(void); +int FN_PGSCR_HEIGHT_Clicked(void); +int FN_PGSCR_DEPTH_Clicked(void); +int FN_PGSCR_TITLE_Clicked(void); +int FN_PGSCR_PUBNAME_Clicked(void); +int FN_PGSCR_USE_Clicked(void); +int FN_PGSCR_MAKEPUBLIC_Clicked(void); +int FN_PGSCR_MODEID_GET_Clicked(void); +int FN_PGSCR_DEFAULTID_Clicked(void); + +int FN_PGSCR_SHOWTITLE_Clicked(void); +int FN_PGSCR_BEHIND_Clicked(void); +int FN_PGSCR_QUIET_Clicked(void); +int FN_PGSCR_AUTOSCROLL_Clicked(void); +int FN_PGSCR_FULLPALETTE_Clicked(void); +int FN_PGSCR_DRAGGABLE_Clicked(void); +int FN_PGSCR_EXCLUSIVE_Clicked(void); +int FN_PGSCR_SHAREPENS_Clicked(void); +int FN_PGSCR_INTERLEAVED_Clicked(void); +int FN_PGSCR_LIKEWORKBENCH_Clicked(void); +int FN_PGSCR_MINIMIZEISG_Clicked(void); + +int FN_PGSTR_STRINGS_Clicked(void); +int FN_PGSTR_ADD_Clicked(void); +int FN_PGSTR_DELETE_Clicked(void); +int FN_PGSTR_EDIT_Clicked(void); + +int FN_PGSTR_LABEL_Clicked(void); +int FN_PGSTR_STRING_Clicked(void); + +int FN_PGVER_PROGRAMNAME_Clicked(void); +int FN_PGVER_AUTHOR_Clicked(void); +int FN_PGVER_VERSION_Clicked(void); +int FN_PGVER_REVISION_Clicked(void); + +int FN_PG_TRLV_FLAGS_COLUMNS_Clicked(void); +int FN_PG_TRLV_FLAGS_FORMAT_Clicked(void); +int FN_PG_TRLV_FLAGS_DISABLED_Clicked(void); +int FN_PG_TRLV_FLAGS_MULTISELECT_Clicked(void); +int FN_PG_TRLV_FLAGS_BORDER_Clicked(void); +int FN_PG_TRLV_FLAGS_READONLY_Clicked(void); +int FN_PG_TRLV_FLAGS_SHOWTREELINES_Clicked(void); +int FN_PG_TRLV_FLAGS_SHOWSELECTED_Clicked(void); +int FN_PG_TRLV_FLAGS_TREE_Clicked(void); + +int FN_OBJLIST_Clicked(void); + +int FN_PAL_PALETTE_Clicked(void); +int FN_PAL_GREEN_Clicked(void); +int FN_PAL_BLUE_Clicked(void); +int FN_PAL_RED_Clicked(void); +int FN_PAL_CANCEL_Clicked(void); +int FN_PAL_OK_Clicked(void); +int FN_PAL_GSLIDER_Clicked(void); +int FN_PAL_COLORWHEEL_Clicked(void); + +int FN_PGWN_TABORDER_DOWN_Clicked(void); +int FN_PGWN_TABORDER_UP_Clicked(void); +int FN_PGWN_TABORDER_LIST_Clicked(void); + + +int FN_MainProject_Selected(void); +int FN_MainProjectNew_Selected(void); +int FN_MainProjectOpen_Selected(void); +int FN_MainProjectSave_Selected(void); +int FN_MainProjectSaveAs_Selected(void); +int FN_MainProjectSaveSource_Selected(void); +int FN_MainProjectPreferences_Selected(void); +int FN_MainProjectAbout_Selected(void); +int FN_MainProjectQuit_Selected(void); +int FN_MainEdit_Selected(void); +int FN_MainEditUndo_Selected(void); +int FN_MainEditCut_Selected(void); +int FN_MainEditCopy_Selected(void); +int FN_MainEditPaste_Selected(void); +int FN_MainEditClear_Selected(void); +int FN_MainEditSelectAll_Selected(void); +int FN_MainEditGrid_Selected(void); +int FN_MainEditAlign_Selected(void); +int FN_MainEditAlignToLeft_Selected(void); +int FN_MainEditAlignToHCenter_Selected(void); +int FN_MainEditAlignToRight_Selected(void); +int FN_MainEditAlignToTop_Selected(void); +int FN_MainEditAlignToVCenter_Selected(void); +int FN_MainEditAlignToBottom_Selected(void); +int FN_MainEditClone_Selected(void); +int FN_MainEditCloneWidth_Selected(void); +int FN_MainEditCloneHeight_Selected(void); +int FN_MainEditCloneBoth_Selected(void); +int FN_MainEditSpread_Selected(void); +int FN_MainEditSpreadHoriz_Selected(void); +int FN_MainEditSpreadVertical_Selected(void); +int FN_MainObject_Selected(void); +int FN_MainObjWindow_Selected(void); +int FN_MainObjWindowNew_Selected(void); +int FN_MainObjWindowClose_Selected(void); +int FN_MainObjWindowDelete_Selected(void); +int FN_MainObjWindowRefresh_Selected(void); +int FN_MainObjMenu_Selected(void); +int FN_MainObjMenuNew_Selected(void); +int FN_MainObjMenuClose_Selected(void); +int FN_MainObjMenuDelete_Selected(void); +int FN_MainObjImage_Selected(void); +int FN_MainObjImageNew_Selected(void); +int FN_MainObjImageClose_Selected(void); +int FN_MainObjImageDelete_Selected(void); +int FN_MainObjStrings_Selected(void); +int FN_MainObjStringsOpen_Selected(void); +int FN_MainObjStringsClose_Selected(void); +int FN_MainObjScreen_Selected(void); +int FN_MainObjScreenOpen_Selected(void); +int FN_MainObjScreenClose_Selected(void); +int FN_MainObjVersion_Selected(void); +int FN_MainObjVersionOpen_Selected(void); +int FN_MainObjVersionClose_Selected(void); +int FN_MainWindow_Selected(void); +int FN_MainWindowProperties_Selected(void); +int FN_MainWindowObjects_Selected(void); +int FN_MainWindowStatus_Selected(void); +int FN_MainWindowHideAll_Selected(void); +int FN_MainWindowHideAll_Selected(void); + +UWORD OpenWindow_PGBO_General(void); +void CloseWindow_PGBO_General(void); + +int HandleIDCMP_About(void); +void Render_About(void); +int FN_CloseWindow_About(void); +UWORD OpenWindow_About(void); +void CloseWindow_About(void); + +UWORD OpenWindow_PG_BUTT_Flags(void); +void CloseWindow_PG_BUTT_Flags(void); + +UWORD OpenWindow_PG_CBOX_Flags(void); +void CloseWindow_PG_CBOX_Flags(void); + +UWORD OpenWindow_PG_CWHL_Flags(void); +void CloseWindow_PG_CWHL_Flags(void); + +UWORD OpenWindow_PG_CYCE_Flags(void); +void CloseWindow_PG_CYCE_Flags(void); + +UWORD OpenWindow_PG_Lists(void); +void CloseWindow_PG_Lists(void); + +UWORD OpenWindow_PG_DTYP_Flags(void); +void CloseWindow_PG_DTYP_Flags(void); + +UWORD OpenWindow_PG_GRSL_Flags(void); +void CloseWindow_PG_GRSL_Flags(void); + +UWORD OpenWindow_PG_INTR_Flags(void); +void CloseWindow_PG_INTR_Flags(void); + +UWORD OpenWindow_PG_INTR_Var(void); +void CloseWindow_PG_INTR_Var(void); + +UWORD OpenWindow_PG_LVIE_Flags(void); +void CloseWindow_PG_LVIE_Flags(void); + +UWORD OpenWindow_PG_MX_Flags(void); +void CloseWindow_PG_MX_Flags(void); + +UWORD OpenWindow_PG_NUMB_Flags(void); +void CloseWindow_PG_NUMB_Flags(void); + +UWORD OpenWindow_PGGT_General(void); +void CloseWindow_PGGT_General(void); + +UWORD OpenWindow_PG_PAGE_Flags(void); +void CloseWindow_PG_PAGE_Flags(void); + +UWORD OpenWindow_PG_PAGE_Lists(void); +void CloseWindow_PG_PAGE_Lists(void); + +UWORD OpenWindow_PG_PALT_Flags(void); +void CloseWindow_PG_PALT_Flags(void); + +UWORD OpenWindow_PG_PUPM_Flags(void); +void CloseWindow_PG_PUPM_Flags(void); + +UWORD OpenWindow_PG_PRGR_Flags(void); +void CloseWindow_PG_PRGR_Flags(void); + +UWORD OpenWindow_PG_SCRL_Flags(void); +void CloseWindow_PG_SCRL_Flags(void); + +UWORD OpenWindow_PG_SCRL_Var(void); +void CloseWindow_PG_SCRL_Var(void); + +UWORD OpenWindow_PG_SLIR_Flags(void); +void CloseWindow_PG_SLIR_Flags(void); + +UWORD OpenWindow_PG_SLIR_Var(void); +void CloseWindow_PG_SLIR_Var(void); + +UWORD OpenWindow_PG_STRG_Flags(void); +void CloseWindow_PG_STRG_Flags(void); + +UWORD OpenWindow_PG_STRG_Var(void); +void CloseWindow_PG_STRG_Var(void); + +UWORD OpenWindow_PG_TDEK_Flags(void); +void CloseWindow_PG_TDEK_Flags(void); + +UWORD OpenWindow_PG_TEXT_Flags(void); +void CloseWindow_PG_TEXT_Flags(void); + +UWORD OpenWindow_PG_TFLD_Flags(void); +void CloseWindow_PG_TFLD_Flags(void); + +UWORD OpenWindow_PG_TFLD_Flags2(void); +void CloseWindow_PG_TFLD_Flags2(void); + +UWORD OpenWindow_PG_TFLD_Var(void); +void CloseWindow_PG_TFLD_Var(void); + +int HandleIDCMP_Properties(void); +void Render_Properties(void); +int FN_MouseMove_Properties(void); +int FN_IntuiTicks_Properties(void); +int FN_ChangeWindow_Properties(void); +int FN_CloseWindow_Properties(void); +int FN_InActiveWindow_Properties(void); +UWORD OpenWindow_Properties(void); +void CloseWindow_Properties(void); + +int HandleIDCMP_Edit(void); +void Render_Edit(void); +int FN_MenuVerify_Edit(void); +int FN_NewSize_Edit(void); +int FN_MouseMove_Edit(void); +int FN_MouseButtons_Edit(void); +int FN_RawKey_Edit(void); +int FN_ChangeWindow_Edit(void); +int FN_CloseWindow_Edit(void); +UWORD OpenWindow_Edit(void); +void CloseWindow_Edit(void); + +int HandleIDCMP_Preferences(void); +void Render_Preferences(void); +int FN_CloseWindow_Preferences(void); +UWORD OpenWindow_Preferences(void); +void CloseWindow_Preferences(void); + +int HandleIDCMP_Grid(void); +void Render_Grid(void); +int FN_CloseWindow_Grid(void); +UWORD OpenWindow_Grid(void); +void CloseWindow_Grid(void); + +UWORD OpenWindow_PGWN_General(void); +void CloseWindow_PGWN_General(void); + +UWORD OpenWindow_PGWN_Flags1(void); +void CloseWindow_PGWN_Flags1(void); + +UWORD OpenWindow_PGWN_Style(void); +void CloseWindow_PGWN_Style(void); + +UWORD OpenWindow_PGWN_Flags2(void); +void CloseWindow_PGWN_Flags2(void); + +UWORD OpenWindow_PGWN_Flags3(void); +void CloseWindow_PGWN_Flags3(void); + +int HandleIDCMP_WN_IDCMPFlags(void); +void Render_WN_IDCMPFlags(void); +int FN_CloseWindow_WN_IDCMPFlags(void); +UWORD OpenWindow_WN_IDCMPFlags(void); +void CloseWindow_WN_IDCMPFlags(void); + +int HandleIDCMP_TB_Main(void); +void Render_TB_Main(void); +int FN_ChangeWindow_TB_Main(void); +int FN_CloseWindow_TB_Main(void); +UWORD OpenWindow_TB_Main(void); +void CloseWindow_TB_Main(void); + +int HandleIDCMP_TB_Window(void); +void Render_TB_Window(void); +int FN_ChangeWindow_TB_Window(void); +int FN_CloseWindow_TB_Window(void); +UWORD OpenWindow_TB_Window(void); +void CloseWindow_TB_Window(void); + +UWORD OpenWindow_PGMN_General(void); +void CloseWindow_PGMN_General(void); + +int HandleIDCMP_Working(void); +void Render_Working(void); +int FN_CloseWindow_Working(void); +UWORD OpenWindow_Working(void); +void CloseWindow_Working(void); + +UWORD OpenWindow_PGFR_General(void); +void CloseWindow_PGFR_General(void); + +UWORD OpenWindow_PGEMPTY(void); +void CloseWindow_PGEMPTY(void); + +int HandleIDCMP_EditMenu(void); +void Render_EditMenu(void); +int FN_MenuVerify_EditMenu(void); +int FN_NewSize_EditMenu(void); +int FN_MouseMove_EditMenu(void); +int FN_MouseButtons_EditMenu(void); +int FN_CloseWindow_EditMenu(void); +int FN_ActiveWindow_EditMenu(void); +UWORD OpenWindow_EditMenu(void); +void CloseWindow_EditMenu(void); + +int HandleIDCMP_EditImage(void); +void Render_EditImage(void); +int FN_MenuVerify_EditImage(void); +int FN_NewSize_EditImage(void); +int FN_MouseButtons_EditImage(void); +int FN_IDCMPUpdate_EditImage(void); +int FN_CloseWindow_EditImage(void); +int FN_ActiveWindow_EditImage(void); +UWORD OpenWindow_EditImage(void); +void CloseWindow_EditImage(void); + +int HandleIDCMP_List(void); +void Render_List(void); +int FN_CloseWindow_List(void); +UWORD OpenWindow_List(void); +void CloseWindow_List(void); + +UWORD OpenWindow_PGMN_Item(void); +void CloseWindow_PGMN_Item(void); + +UWORD OpenWindow_PGPI_General(void); +void CloseWindow_PGPI_General(void); + +int HandleIDCMP_TB_Pointer(void); +void Render_TB_Pointer(void); +int FN_ChangeWindow_TB_Pointer(void); +int FN_CloseWindow_TB_Pointer(void); +UWORD OpenWindow_TB_Pointer(void); +void CloseWindow_TB_Pointer(void); + +int HandleIDCMP_Screen(void); +void Render_Screen(void); +int FN_CloseWindow_Screen(void); +int FN_ActiveWindow_Screen(void); +UWORD OpenWindow_Screen(void); +void CloseWindow_Screen(void); + +UWORD OpenWindow_PGSCR_General(void); +void CloseWindow_PGSCR_General(void); + +UWORD OpenWindow_PGSCR_Flags(void); +void CloseWindow_PGSCR_Flags(void); + +int HandleIDCMP_EditString(void); +void Render_EditString(void); +int FN_MouseButtons_EditString(void); +int FN_IDCMPUpdate_EditString(void); +int FN_ChangeWindow_EditString(void); +int FN_CloseWindow_EditString(void); +int FN_ActiveWindow_EditString(void); +UWORD OpenWindow_EditString(void); +void CloseWindow_EditString(void); + +UWORD OpenWindow_PGSTR_General(void); +void CloseWindow_PGSTR_General(void); + +int HandleIDCMP_EditVersion(void); +void Render_EditVersion(void); +int FN_CloseWindow_EditVersion(void); +int FN_ActiveWindow_EditVersion(void); +UWORD OpenWindow_EditVersion(void); +void CloseWindow_EditVersion(void); + +UWORD OpenWindow_PG_TRLV_Flags(void); +void CloseWindow_PG_TRLV_Flags(void); + +int HandleIDCMP_Object(void); +void Render_Object(void); +int FN_NewSize_Object(void); +int FN_MouseMove_Object(void); +int FN_RawKey_Object(void); +int FN_IDCMPUpdate_Object(void); +int FN_ChangeWindow_Object(void); +int FN_CloseWindow_Object(void); +UWORD OpenWindow_Object(void); +void CloseWindow_Object(void); + +int HandleIDCMP_EditPalette(void); +void Render_EditPalette(void); +int FN_IDCMPUpdate_EditPalette(void); +UWORD OpenWindow_EditPalette(void); +void CloseWindow_EditPalette(void); + +UWORD OpenWindow_PGWN_TabOrder(void); +void CloseWindow_PGWN_TabOrder(void); + +int HandleIDCMP_Status(void); +void Render_Status(void); +int FN_ChangeWindow_Status(void); +UWORD OpenWindow_Status(void); +void CloseWindow_Status(void); + +UWORD SetupScreen(UBYTE); +void CloseDownScreen(void); +UWORD InitApplication(STRPTR); +void FreeApplication(void); + +void CloseWindowSafely(struct Window *); +void StripIntuiMessages(struct MsgPort *,struct Window *); +struct Gadget *CreateGadgetExA(UWORD,UWORD,UWORD,UWORD,struct Gadget *,struct TagItem *); +void DeleteGadgetExA(struct Gadget *,struct TagItem *); +struct Window *OpenWindowTagsEx(ULONG, ...); +void CloseWindowEx(struct Window *); +void CalcLeftTop(UWORD *,UWORD *,struct TagItem *); +void CalcRightBottom(UWORD *,UWORD *,struct TagItem *); +UWORD AdaptX(UWORD); +UWORD AdaptY(UWORD); +void CalcAdaptivity(UWORD,UWORD); +STRPTR GetCatString(APTR); + +#endif /* gadtools_H */ diff --git a/GadToolsBox/gadtools_cat.c b/GadToolsBox/gadtools_cat.c new file mode 100755 index 0000000..6acde56 --- /dev/null +++ b/GadToolsBox/gadtools_cat.c @@ -0,0 +1,699 @@ +/* +** gadtools_cat.c Catalog File +*/ + +#include +#include"gadtools_cat.h" + +const struct FC_Type _MSG_MainProject_MTITLE = { 0, "\000\000Project" }; +const struct FC_Type _MSG_MainProjectNew_MITEM= { 1, "N\000New" }; +const struct FC_Type _MSG_MainProjectOpen_MITEM= { 2, "O\000Open..." }; +const struct FC_Type _MSG_MainProjectSave_MITEM= { 3, "S\000Save" }; +const struct FC_Type _MSG_MainProjectSaveAs_MITEM= { 4, "A\000Save As..." }; +const struct FC_Type _MSG_MainProjectSaveSource_MITEM= { 5, "W\000Save Source..." }; +const struct FC_Type _MSG_MainProjectPreferences_MITEM= { 6, "P\000Preferences..." }; +const struct FC_Type _MSG_MainProjectAbout_MITEM= { 7, "?\000About..." }; +const struct FC_Type _MSG_MainProjectQuit_MITEM= { 8, "Q\000Quit" }; +const struct FC_Type _MSG_MainEdit_MTITLE = { 9, "\000\000Edit" }; +const struct FC_Type _MSG_MainEditUndo_MITEM= { 10, "U\000Undo" }; +const struct FC_Type _MSG_MainEditCut_MITEM= { 11, "X\000Cut" }; +const struct FC_Type _MSG_MainEditCopy_MITEM= { 12, "C\000Copy" }; +const struct FC_Type _MSG_MainEditPaste_MITEM= { 13, "V\000Paste" }; +const struct FC_Type _MSG_MainEditClear_MITEM= { 14, "B\000Clear" }; +const struct FC_Type _MSG_MainEditSelectAll_MITEM= { 15, "A\000Select All" }; +const struct FC_Type _MSG_MainEditGrid_MITEM= { 16, "G\000Grid..." }; +const struct FC_Type _MSG_MainEditAlign_MITEM= { 17, "\000\000Align" }; +const struct FC_Type _MSG_MainEditAlignToLeft_MSUB = { 18, "\000\000Left" }; +const struct FC_Type _MSG_MainEditAlignToHCenter_MSUB = { 19, "\000\000Width center" }; +const struct FC_Type _MSG_MainEditAlignToRight_MSUB = { 20, "\000\000Right" }; +const struct FC_Type _MSG_MainEditAlignToTop_MSUB = { 21, "\000\000Top" }; +const struct FC_Type _MSG_MainEditAlignToVCenter_MSUB = { 22, "\000\000Height center" }; +const struct FC_Type _MSG_MainEditAlignToBottom_MSUB = { 23, "\000\000Bottom" }; +const struct FC_Type _MSG_MainEditClone_MITEM= { 24, "\000\000Clone" }; +const struct FC_Type _MSG_MainEditCloneWidth_MSUB = { 25, "\000\000Width" }; +const struct FC_Type _MSG_MainEditCloneHeight_MSUB = { 26, "\000\000Height" }; +const struct FC_Type _MSG_MainEditCloneBoth_MSUB = { 27, "\000\000Both" }; +const struct FC_Type _MSG_MainEditSpread_MITEM= { 28, "\000\000Spread" }; +const struct FC_Type _MSG_MainEditSpreadHoriz_MSUB = { 29, "\000\000Horizontal" }; +const struct FC_Type _MSG_MainEditSpreadVertical_MSUB = { 30, "\000\000Vertical" }; +const struct FC_Type _MSG_MainObject_MTITLE = { 31, "\000\000Objects" }; +const struct FC_Type _MSG_MainObjWindow_MITEM= { 32, "\000\000Window" }; +const struct FC_Type _MSG_MainObjWindowNew_MSUB = { 33, "\000\000New..." }; +const struct FC_Type _MSG_MainObjWindowClose_MSUB = { 34, "\000\000Close" }; +const struct FC_Type _MSG_MainObjWindowDelete_MSUB = { 35, "\000\000Delete" }; +const struct FC_Type _MSG_MainObjWindowRefresh_MSUB = { 36, "R\000Refresh" }; +const struct FC_Type _MSG_MainObjMenu_MITEM= { 37, "\000\000Menu" }; +const struct FC_Type _MSG_MainObjMenuNew_MSUB = { 38, "\000\000New..." }; +const struct FC_Type _MSG_MainObjMenuClose_MSUB = { 39, "\000\000Close" }; +const struct FC_Type _MSG_MainObjMenuDelete_MSUB = { 40, "\000\000Delete" }; +const struct FC_Type _MSG_MainObjImage_MITEM= { 41, "\000\000Image" }; +const struct FC_Type _MSG_MainObjImageNew_MSUB = { 42, "\000\000New..." }; +const struct FC_Type _MSG_MainObjImageClose_MSUB = { 43, "\000\000Close" }; +const struct FC_Type _MSG_MainObjImageDelete_MSUB = { 44, "\000\000Delete" }; +const struct FC_Type _MSG_MainObjStrings_MITEM= { 45, "\000\000Strings" }; +const struct FC_Type _MSG_MainObjStringsOpen_MSUB = { 46, "\000\000Open" }; +const struct FC_Type _MSG_MainObjStringsClose_MSUB = { 47, "\000\000Close" }; +const struct FC_Type _MSG_MainObjScreen_MITEM= { 48, "\000\000Screen" }; +const struct FC_Type _MSG_MainObjScreenOpen_MSUB = { 49, "\000\000Open" }; +const struct FC_Type _MSG_MainObjScreenClose_MSUB = { 50, "\000\000Close" }; +const struct FC_Type _MSG_MainObjVersion_MITEM= { 51, "\000\000Version" }; +const struct FC_Type _MSG_MainObjVersionOpen_MSUB = { 52, "\000\000Open" }; +const struct FC_Type _MSG_MainObjVersionClose_MSUB = { 53, "\000\000Close" }; +const struct FC_Type _MSG_MainWindow_MTITLE = { 54, "\000\000Windows" }; +const struct FC_Type _MSG_MainWindowProperties_MITEM= { 55, "\000\000Properties" }; +const struct FC_Type _MSG_MainWindowObjects_MITEM= { 56, "\000\000Objects" }; +const struct FC_Type _MSG_MainWindowStatus_MITEM= { 57, "\000\000Status" }; +const struct FC_Type _MSG_MainWindowHideAll_MITEM= { 58, "\000\000Hide All" }; +const struct FC_Type _MSG_SCREENTITLE_SCR = { 59, "GadToolsBox v3 (GTB.%ld)" }; +const struct FC_Type _MSG_PGBO_LABEL_GAD = { 60, "_Label:" }; +const struct FC_Type _MSG_PGBO_X_GAD = { 61, "" }; +const struct FC_Type _MSG_PGBO_Y_GAD = { 62, "" }; +const struct FC_Type _MSG_PGBO_WIDTH_GAD = { 63, "" }; +const struct FC_Type _MSG_PGBO_HEIGHT_GAD = { 64, "" }; +const struct FC_Type _MSG_PGBO_REL_X_GAD = { 65, "_X Pos:" }; +const struct FC_Type _MSG_PGBO_REL_X_L0_GAD = { 66, "Left" }; +const struct FC_Type _MSG_PGBO_REL_X_L1_GAD = { 67, "Right" }; +const struct FC_Type _MSG_PGBO_REL_Y_GAD = { 68, "_Y Pos:" }; +const struct FC_Type _MSG_PGBO_REL_Y_L0_GAD = { 69, "Top" }; +const struct FC_Type _MSG_PGBO_REL_Y_L1_GAD = { 70, "Bottom" }; +const struct FC_Type _MSG_PGBO_REL_W_GAD = { 71, "_Width:" }; +const struct FC_Type _MSG_PGBO_REL_W_L0_GAD = { 72, "Normal" }; +const struct FC_Type _MSG_PGBO_REL_W_L1_GAD = { 73, "Window" }; +const struct FC_Type _MSG_PGBO_REL_H_GAD = { 74, "_Height:" }; +const struct FC_Type _MSG_PGBO_REL_H_L0_GAD = { 75, "Normal" }; +const struct FC_Type _MSG_PGBO_REL_H_L1_GAD = { 76, "Window" }; +const struct FC_Type _MSG_ABOUT_OK_GAD = { 77, "Ok" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD = { 78, "_Immediate:" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD = { 79, "_Underscore:" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_DISABLED_GAD = { 80, "_Disabled:" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_GAD = { 81, "Title Type:" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD = { 82, "Text" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD = { 83, "Toolbar" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD = { 84, "Image" }; +const struct FC_Type _MSG_PG_BUTT_FLAGS_TOGGLE_GAD = { 85, "_Toggle:" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_GAD = { 86, "_Scaled:" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L0_GAD = { 87, "None" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L1_GAD = { 88, "Normal" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L2_GAD = { 89, "Adaptive" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_CHECKED_GAD = { 90, "_Checked:" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD = { 91, "_Highlabel:" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD = { 92, "_Underscore:" }; +const struct FC_Type _MSG_PG_CBOX_FLAGS_DISABLED_GAD = { 93, "_Disabled:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_MAXPENS_GAD = { 94, "MaxPens:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_ABBRV_GAD = { 95, "Abbrv:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_GSLIDER_GAD = { 96, "Grad-Slider:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_BEVELBOX_GAD = { 97, "BevelBox:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_DISABLED_GAD = { 98, "Disabled:" }; +const struct FC_Type _MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD = { 99, "FollowMouse:" }; +const struct FC_Type _MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD = { 100, "Highlabel:" }; +const struct FC_Type _MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD = { 101, "Underscore:" }; +const struct FC_Type _MSG_PG_CYCE_FLAGS_DISABLED_GAD = { 102, "Disabled:" }; +const struct FC_Type _MSG_PG_LISTS_EDIT_GAD = { 103, "" }; +const struct FC_Type _MSG_PG_LISTS_ACTIVE_GAD = { 104, "" }; +const struct FC_Type _MSG_PG_LISTS_LIST_GAD = { 105, "" }; +const struct FC_Type _MSG_PG_LISTS_UP_GAD = { 106, "_Up" }; +const struct FC_Type _MSG_PG_LISTS_DOWN_GAD = { 107, "D_own" }; +const struct FC_Type _MSG_PG_LISTS_ADD_GAD = { 108, "_Add" }; +const struct FC_Type _MSG_PG_LISTS_DEL_GAD = { 109, "_Del" }; +const struct FC_Type _MSG_PG_DTYP_FLAGS_OBJECT_GAD = { 110, "_File:" }; +const struct FC_Type _MSG_PG_DTYP_FLAGS_DISABLED_GAD = { 111, "_Disabled:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD = { 112, "_Knob Pixels:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_MAXVAL_GAD = { 113, "_MaxVal:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_CURVAL_GAD = { 114, "_CurVal:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_SKIPVAL_GAD = { 115, "_SkipVal:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_PENS_GAD = { 116, "_Pens:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_GAD = { 117, "_Freedom:" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD = { 118, "Horizontal" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD = { 119, "Vertical" }; +const struct FC_Type _MSG_PG_GRSL_FLAGS_DISABLED_GAD = { 120, "_Disabled:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_DISABLED_GAD = { 121, "_Disabled:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_UNDERSCORE_GAD = { 122, "_Underscore:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_HIGHLABEL_GAD = { 123, "_Highlabel:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_TABCYCLE_GAD = { 124, "_TabCycle:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_REPLACEMODE_GAD = { 125, "_ReplaceMode:" }; +const struct FC_Type _MSG_PG_INTR_FLAGS_EXITHELP_GAD = { 126, "_ExitHelp:" }; +const struct FC_Type _MSG_PG_INTR_VAR_MAXCHARS_GAD = { 127, "_MaxChars:" }; +const struct FC_Type _MSG_PG_INTR_VAR_NUMBER_GAD = { 128, "_Number:" }; +const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_GAD = { 129, "_Justification:" }; +const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD = { 130, "Left" }; +const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD = { 131, "Right" }; +const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD = { 132, "Center" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_GAD = { 133, "_Arrows:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_SPACING_GAD = { 134, "S_pacing:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_DISABLED_GAD = { 135, "_Disabled:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD = { 136, "_Underscore:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD = { 137, "_Highlabel:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_READONLY_GAD = { 138, "_ReadOnly:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD = { 139, "_ShowSelected:" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD = { 140, "" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD = { 141, "None" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD = { 142, "Normal" }; +const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD = { 143, "Adaptive" }; +const struct FC_Type _MSG_PG_MX_FLAGS_DISABLED_GAD = { 144, "_Disabled:" }; +const struct FC_Type _MSG_PG_MX_FLAGS_UNDERSCORE_GAD = { 145, "_Underscore:" }; +const struct FC_Type _MSG_PG_MX_FLAGS_HIGHLABEL_GAD = { 146, "_Highlabel:" }; +const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_GAD = { 147, "_Scaled:" }; +const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L0_GAD = { 148, "None" }; +const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L1_GAD = { 149, "Normal" }; +const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L2_GAD = { 150, "Adaptive" }; +const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_GAD = { 151, "_Placement:" }; +const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD = { 152, "Left" }; +const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD = { 153, "Right" }; +const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD = { 154, "Above" }; +const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD = { 155, "Below" }; +const struct FC_Type _MSG_PG_MX_FLAGS_SPACING_GAD = { 156, "Sp_acing:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_FORMAT_GAD = { 157, "_Format:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_DEFAULT_GAD = { 158, "D_efault:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD = { 159, "_MaxNumLen:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_DISABLED_GAD = { 160, "_Disabled:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD = { 161, "_Highlabel:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_BORDER_GAD = { 162, "_Border:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_CLIPPED_GAD = { 163, "_Clipped:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD = { 164, "_Justification:" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD = { 165, "Left" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD = { 166, "Right" }; +const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD = { 167, "Center" }; +const struct FC_Type _MSG_PGGT_LABEL_GAD = { 168, "_Label:" }; +const struct FC_Type _MSG_PGGT_TITLE_GAD = { 169, "_Title:" }; +const struct FC_Type _MSG_PGGT_X_GAD = { 170, "" }; +const struct FC_Type _MSG_PGGT_Y_GAD = { 171, "" }; +const struct FC_Type _MSG_PGGT_WIDTH_GAD = { 172, "" }; +const struct FC_Type _MSG_PGGT_HEIGHT_GAD = { 173, "" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_GAD = { 174, "_Placement:" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_L0_GAD = { 175, "In" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_L1_GAD = { 176, "Left" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_L2_GAD = { 177, "Right" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_L3_GAD = { 178, "Above" }; +const struct FC_Type _MSG_PGGT_PLACEMENT_L4_GAD = { 179, "Below" }; +const struct FC_Type _MSG_PGGT_REL_X_GAD = { 180, "_X Pos:" }; +const struct FC_Type _MSG_PGGT_REL_X_L0_GAD = { 181, "Left" }; +const struct FC_Type _MSG_PGGT_REL_X_L1_GAD = { 182, "Right" }; +const struct FC_Type _MSG_PGGT_REL_Y_GAD = { 183, "_Y Pos:" }; +const struct FC_Type _MSG_PGGT_REL_Y_L0_GAD = { 184, "Top" }; +const struct FC_Type _MSG_PGGT_REL_Y_L1_GAD = { 185, "Bottom" }; +const struct FC_Type _MSG_PGGT_REL_W_GAD = { 186, "_Width:" }; +const struct FC_Type _MSG_PGGT_REL_W_L0_GAD = { 187, "Normal" }; +const struct FC_Type _MSG_PGGT_REL_W_L1_GAD = { 188, "Window" }; +const struct FC_Type _MSG_PGGT_REL_H_GAD = { 189, "_Height:" }; +const struct FC_Type _MSG_PGGT_REL_H_L0_GAD = { 190, "Normal" }; +const struct FC_Type _MSG_PGGT_REL_H_L1_GAD = { 191, "Window" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_DISABLED_GAD = { 192, "_Disabled:" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD = { 193, "_Underscore:" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_GAD = { 194, "_Layout:" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD = { 195, "Simple" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD = { 196, "MUI Style" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD = { 197, "GadTools" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_GAD = { 198, "_Style:" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L0_GAD = { 199, "Normal" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L1_GAD = { 200, "Hilight" }; +const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L2_GAD = { 201, "Shadow" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_LIST_GAD = { 202, "" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_ADD_GAD = { 203, "< _Add" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_DEL_GAD = { 204, "> _Del" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_UP_GAD = { 205, "_Up" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_DOWN_GAD = { 206, "D_own" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_WINDOWS_GAD = { 207, "" }; +const struct FC_Type _MSG_PG_PAGE_LISTS_ACTIVE_GAD = { 208, "" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_COLOR_GAD = { 209, "" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_OFFSET_GAD = { 210, "_Offset:" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD = { 211, "" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD = { 212, ":" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD = { 213, "None" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD = { 214, "Width" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD = { 215, "Height" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_DISABLED_GAD = { 216, "_Disabled:" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_UNDERSCORE_GAD = { 217, "_Underscore:" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_HIGHLABEL_GAD = { 218, "_Highlabel:" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_GAD = { 219, ":" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L0_GAD = { 220, "Depth" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L1_GAD = { 221, "Colors" }; +const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L2_GAD = { 222, "Screen" }; +const struct FC_Type _MSG_PG_PUPM_FLAGS_DISABLED_GAD = { 223, "_Disabled:" }; +const struct FC_Type _MSG_PG_PUPM_FLAGS_NEWLOOK_GAD = { 224, "_NewLook:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_MAX_GAD = { 225, "_Max:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_CURRENT_GAD = { 226, "_Current:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_FORMAT_GAD = { 227, "_Format:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_DISABLED_GAD = { 228, "_Disabled:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_BORDER_GAD = { 229, "_Border:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PERCENTS_GAD = { 230, "Show in _%:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_GAD = { 231, "_Placement:" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD = { 232, "In" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD = { 233, "Left" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD = { 234, "Right" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD = { 235, "Above" }; +const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD = { 236, "Below" }; +const struct FC_Type _MSG_PG_SCRL_FLAGS_DISABLED_GAD = { 237, "_Disabled:" }; +const struct FC_Type _MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD = { 238, "_Underscore:" }; +const struct FC_Type _MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD = { 239, "_Highlabel:" }; +const struct FC_Type _MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD = { 240, "_Immediate:" }; +const struct FC_Type _MSG_PG_SCRL_FLAGS_RELVERIFY_GAD = { 241, "_RelVerify:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_TOP_GAD = { 242, "_Top:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_TOTAL_GAD = { 243, "T_otal:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_VISIBLE_GAD = { 244, "_Visible:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_GAD = { 245, "_Freedom:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_L0_GAD = { 246, "Horizontal" }; +const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_L1_GAD = { 247, "Vertical" }; +const struct FC_Type _MSG_PG_SCRL_VAR_ARROWS_GAD = { 248, "" }; +const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_GAD = { 249, "_Arrows:" }; +const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD = { 250, "None" }; +const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD = { 251, "Normal" }; +const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD = { 252, "Adaptive" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_FORMAT_GAD = { 253, "_Format:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD = { 254, "Max_PixelLen:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD = { 255, "" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_DISABLED_GAD = { 256, "_Disabled:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD = { 257, "_Underscore:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD = { 258, "_Highlabel:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD = { 259, "_Immediate:" }; +const struct FC_Type _MSG_PG_SLIR_FLAGS_RELVERIFY_GAD = { 260, "_RelVerify:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_MIN_GAD = { 261, "_Min:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_MAX_GAD = { 262, "M_ax:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVEL_GAD = { 263, "_Level:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_MAXLEVLEN_GAD = { 264, "MaxLe_vLen:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_GAD = { 265, "_Justification:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD = { 266, "Left" }; +const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD = { 267, "Right" }; +const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD = { 268, "Center" }; +const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_GAD = { 269, "_Freedom:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_L0_GAD = { 270, "Horizontal" }; +const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_L1_GAD = { 271, "Vertical" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_GAD = { 272, "Level _Place:" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD = { 273, "Left" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD = { 274, "Right" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD = { 275, "Above" }; +const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD = { 276, "Below" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_DISABLED_GAD = { 277, "_Disabled:" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_UNDERSCORE_GAD = { 278, "_Underscore:" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_HIGHLABEL_GAD = { 279, "_Highlabel:" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_TABCYCLE_GAD = { 280, "_TabCycle:" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_REPLACEMODE_GAD = { 281, "_ReplaceMode:" }; +const struct FC_Type _MSG_PG_STRG_FLAGS_EXITHELP_GAD = { 282, "_ExitHelp:" }; +const struct FC_Type _MSG_PG_STRG_VAR_MAXCHARS_GAD = { 283, "MaxChars:" }; +const struct FC_Type _MSG_PG_STRG_VAR_STRING_GAD = { 284, "_String:" }; +const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_GAD = { 285, "_Justification:" }; +const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD = { 286, "Left" }; +const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD = { 287, "Right" }; +const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD = { 288, "Center" }; +const struct FC_Type _MSG_PG_TDEK_FLAGS_FRAMES_GAD = { 289, "_Frames:" }; +const struct FC_Type _MSG_PG_TDEK_FLAGS_CURRENT_GAD = { 290, "_Current:" }; +const struct FC_Type _MSG_PG_TDEK_FLAGS_DISABLED_GAD = { 291, "_Disabled:" }; +const struct FC_Type _MSG_PG_TDEK_FLAGS_TAPE_GAD = { 292, "_Tape:" }; +const struct FC_Type _MSG_PG_TDEK_FLAGS_PAUSED_GAD = { 293, "_Paused:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_DISABLED_GAD = { 294, "_Disabled:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD = { 295, "_Highlabel:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_BORDER_GAD = { 296, "_Border:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_CLIPPED_GAD = { 297, "_Clipped:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_COPYTEXT_GAD = { 298, "C_opyText:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD = { 299, "_Justification:" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD = { 300, "Left" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD = { 301, "Right" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD = { 302, "Center" }; +const struct FC_Type _MSG_PG_TEXT_FLAGS_DEFAULT_GAD = { 303, "D_efault:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_DISABLED_GAD = { 304, "_Disabled:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_TABCYCLE_GAD = { 305, "_TabCycle:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_READONLY_GAD = { 306, "_Read Only:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_INVERTED_GAD = { 307, "_Inverted:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_PARTIAL_GAD = { 308, "_Partial:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD = { 309, "_BlockCursor" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_VCENTER_GAD = { 310, "_VCenter:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD = { 311, "Pass Command:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD = { 312, "_Clipboard:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_UNDO_GAD = { 313, "_Undo:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD = { 314, "_NonPrintChars:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD = { 315, "_Max Size Beep:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_NOGHOST_GAD = { 316, "No_Ghost:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_MODIFIED_GAD = { 317, "M_odified:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_USERALIGN_GAD = { 318, "_UserAlign:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD = { 319, "_RuledPaper:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_GAD = { 320, "_Border:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L0_GAD = { 321, "None" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L1_GAD = { 322, "Bevel" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L2_GAD = { 323, "Double Bevel" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_GAD = { 324, "_Align:" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD = { 325, "Left" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD = { 326, "Right" }; +const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD = { 327, "Center" }; +const struct FC_Type _MSG_PG_TFLD_VAR_BLINKRATE_GAD = { 328, "_BlinkRate:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_MAXSIZE_GAD = { 329, "_MaxSize:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_TABSPACES_GAD = { 330, "_TabSpaces:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_SPACING_GAD = { 331, "_Spacing:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_DELIMITERS_GAD = { 332, "_Delimiters:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD = { 333, "_AcceptChars:" }; +const struct FC_Type _MSG_PG_TFLD_VAR_REJECTCHARS_GAD = { 334, "_RejectChars:" }; +const struct FC_Type _MSG_Properties_WND = { 335, "Properties" }; +const struct FC_Type _MSG_PROPERTIES_LOCK_GAD = { 336, "" }; +const struct FC_Type _MSG_PROPERTIES_APPLY_GAD = { 337, "A" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L0_GAD = { 338, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L1_GAD = { 339, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L2_GAD = { 340, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L3_GAD = { 341, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L4_GAD = { 342, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L5_GAD = { 343, "Lists" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L6_GAD = { 344, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L7_GAD = { 345, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L8_GAD = { 346, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L9_GAD = { 347, "Var." }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L10_GAD = { 348, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L11_GAD = { 349, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L12_GAD = { 350, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L13_GAD = { 351, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L14_GAD = { 352, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L15_GAD = { 353, "Lists" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L16_GAD = { 354, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L17_GAD = { 355, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L18_GAD = { 356, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L19_GAD = { 357, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L20_GAD = { 358, "Var." }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L21_GAD = { 359, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L22_GAD = { 360, "Var." }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L23_GAD = { 361, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L24_GAD = { 362, "Var." }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L25_GAD = { 363, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L26_GAD = { 364, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L27_GAD = { 365, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L28_GAD = { 366, "Flags2" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L29_GAD = { 367, "Var." }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L30_GAD = { 368, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L31_GAD = { 369, "Flags1" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L32_GAD = { 370, "Style" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L33_GAD = { 371, "Flags2" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L34_GAD = { 372, "Flags3" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L35_GAD = { 373, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L36_GAD = { 374, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L37_GAD = { 375, "" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L38_GAD = { 376, "Item" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L39_GAD = { 377, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L40_GAD = { 378, "Flags" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L41_GAD = { 379, "General" }; +const struct FC_Type _MSG_PROPERTIES_PAGES_L42_GAD = { 380, "Tab Order" }; +const struct FC_Type _MSG_Edit_WND = { 381, "" }; +const struct FC_Type _MSG_Preferences_WND = { 382, "Preferences" }; +const struct FC_Type _MSG_PREFS_SAVE_GAD = { 383, "_Save" }; +const struct FC_Type _MSG_PREFS_USE_GAD = { 384, "_Use" }; +const struct FC_Type _MSG_PREFS_CANCEL_GAD = { 385, "_Cancel" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD = { 386, "Auto_Backup:" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD = { 387, "S_ize zoom:" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD = { 388, "_Fast redraw:" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_GETSCREEN_GAD = { 389, "Screen _mode..." }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_SCREENMODE_GAD = { 390, "" }; +const struct FC_Type _MSG_PG_PREFS_GEN_LIST_GAD = { 391, "_Generators:" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_FONTNAME_GAD = { 392, "" }; +const struct FC_Type _MSG_PG_PREFS_GENERAL_EDITFONT_GAD = { 393, "Editor _font..." }; +const struct FC_Type _MSG_Grid_WND = { 394, "Grid" }; +const struct FC_Type _MSG_GRID_X_GAD = { 395, "_X Size:" }; +const struct FC_Type _MSG_GRID_Y_GAD = { 396, "_Y Size:" }; +const struct FC_Type _MSG_GRID_SHOW_GAD = { 397, "_Show Grid:" }; +const struct FC_Type _MSG_GRID_SNAP_GAD = { 398, "S_nap To Grid:" }; +const struct FC_Type _MSG_GRID_OK_GAD = { 399, "_Ok" }; +const struct FC_Type _MSG_GRID_CANCEL_GAD = { 400, "_Cancel" }; +const struct FC_Type _MSG_PGWN_LABEL_GAD = { 401, "_Label:" }; +const struct FC_Type _MSG_PGWN_X_GAD = { 402, "" }; +const struct FC_Type _MSG_PGWN_Y_GAD = { 403, "" }; +const struct FC_Type _MSG_PGWN_WIDTH_GAD = { 404, "" }; +const struct FC_Type _MSG_PGWN_HEIGHT_GAD = { 405, "" }; +const struct FC_Type _MSG_PGWN_INNERHEIGHT_GAD = { 406, "Inner" }; +const struct FC_Type _MSG_PGWN_INNERWIDTH_GAD = { 407, "Inner" }; +const struct FC_Type _MSG_PGWN_REL_H_GAD = { 408, "_Height:" }; +const struct FC_Type _MSG_PGWN_REL_H_L0_GAD = { 409, "Normal" }; +const struct FC_Type _MSG_PGWN_REL_H_L1_GAD = { 410, "Screen" }; +const struct FC_Type _MSG_PGWN_REL_W_GAD = { 411, "_Width:" }; +const struct FC_Type _MSG_PGWN_REL_W_L0_GAD = { 412, "Normal" }; +const struct FC_Type _MSG_PGWN_REL_W_L1_GAD = { 413, "Screen" }; +const struct FC_Type _MSG_PGWN_REL_Y_GAD = { 414, "_Y Pos:" }; +const struct FC_Type _MSG_PGWN_REL_Y_L0_GAD = { 415, "Top" }; +const struct FC_Type _MSG_PGWN_REL_Y_L1_GAD = { 416, "Bottom" }; +const struct FC_Type _MSG_PGWN_REL_Y_L2_GAD = { 417, "Center" }; +const struct FC_Type _MSG_PGWN_REL_X_GAD = { 418, "_X Pos:" }; +const struct FC_Type _MSG_PGWN_REL_X_L0_GAD = { 419, "Left" }; +const struct FC_Type _MSG_PGWN_REL_X_L1_GAD = { 420, "Right" }; +const struct FC_Type _MSG_PGWN_REL_X_L2_GAD = { 421, "Center" }; +const struct FC_Type _MSG_PGWN_SCREEN_TITLE_GAD = { 422, "_Screen Title:" }; +const struct FC_Type _MSG_PGWN_WINDOW_TITLE_GAD = { 423, "_Window Title:" }; +const struct FC_Type _MSG_PGWN_PAGED_GAD = { 424, "Pa_ged:" }; +const struct FC_Type _MSG_PGWN_FONTADAPTIVE_GAD = { 425, "_Font Adaptive:" }; +const struct FC_Type _MSG_PGWN_APPWINDOW_GAD = { 426, "_App Window:" }; +const struct FC_Type _MSG_PGWN_PROJECT_GAD = { 427, "_Project:" }; +const struct FC_Type _MSG_PGWN_MENU_GET_GAD = { 428, "S" }; +const struct FC_Type _MSG_PGWN_MENU_GAD = { 429, "Menu:" }; +const struct FC_Type _MSG_PGWN_ZOOM_GAD = { 430, "_Zoom:" }; +const struct FC_Type _MSG_PGWN_BACKDROP_GAD = { 431, "B_ackdrop:" }; +const struct FC_Type _MSG_PGWN_BORDERLESS_GAD = { 432, "_Borderless:" }; +const struct FC_Type _MSG_PGWN_SIZEBBOTTOM_GAD = { 433, "Size B_Bottom:" }; +const struct FC_Type _MSG_PGWN_SIZEBRIGHT_GAD = { 434, "Size B_Right:" }; +const struct FC_Type _MSG_PGWN_CLOSEGADGET_GAD = { 435, "Close:" }; +const struct FC_Type _MSG_PGWN_DEPTHGADGET_GAD = { 436, "D_epth:" }; +const struct FC_Type _MSG_PGWN_SIZEGADGET_GAD = { 437, "_Size:" }; +const struct FC_Type _MSG_PGWN_DRAGGADGET_GAD = { 438, "_Drag:" }; +const struct FC_Type _MSG_PGWN_DRAGGADGET_L0_GAD = { 439, "None" }; +const struct FC_Type _MSG_PGWN_DRAGGADGET_L1_GAD = { 440, "Normal" }; +const struct FC_Type _MSG_PGWN_DRAGGADGET_L2_GAD = { 441, "Tool Horz." }; +const struct FC_Type _MSG_PGWN_DRAGGADGET_L3_GAD = { 442, "Tool Vert." }; +const struct FC_Type _MSG_PGWN_FALLBACK_GAD = { 443, "_FallBack:" }; +const struct FC_Type _MSG_PGWN_REPORTMOUSE_GAD = { 444, "Report_Mouse:" }; +const struct FC_Type _MSG_PGWN_AUTOADJUST_GAD = { 445, "A_utoAdjust:" }; +const struct FC_Type _MSG_PGWN_ACTIVATE_GAD = { 446, "_Activate:" }; +const struct FC_Type _MSG_PGWN_RMBTRAP_GAD = { 447, "RMB_Trap:" }; +const struct FC_Type _MSG_PGWN_NEWLOOKMENUS_GAD = { 448, "N_ewLookMenus:" }; +const struct FC_Type _MSG_PGWN_NOCAREREFRESH_GAD = { 449, "_NoCareRefresh:" }; +const struct FC_Type _MSG_PGWN_GZZ_GAD = { 450, "_GimmeZeroZero:" }; +const struct FC_Type _MSG_PGWN_REFRESH_GAD = { 451, "_Refresh:" }; +const struct FC_Type _MSG_PGWN_REFRESH_L0_GAD = { 452, "Simple" }; +const struct FC_Type _MSG_PGWN_REFRESH_L1_GAD = { 453, "Smart" }; +const struct FC_Type _MSG_PGWN_REFRESH_L2_GAD = { 454, "SuperBitmap" }; +const struct FC_Type _MSG_PGWN_MOUSEQUEUE_GAD = { 455, "_Mouse Queue:" }; +const struct FC_Type _MSG_PGWN_REPEATQUEUE_GAD = { 456, "_Repeat Queue:" }; +const struct FC_Type _MSG_PGWN_IDCMP_GAD = { 457, "_IDCMP Flags..." }; +const struct FC_Type _MSG_PGWN_REPEATQUEUE_SET_GAD = { 458, "" }; +const struct FC_Type _MSG_PGWN_MOUSEQUEUE_SET_GAD = { 459, "" }; +const struct FC_Type _MSG_PGWN_NOTIFYDEPTH_GAD = { 460, "_Notify Depth:" }; +const struct FC_Type _MSG_PGWN_MENUHELP_GAD = { 461, "_Menu Help:" }; +const struct FC_Type _MSG_PGWN_POINTERDELAY_GAD = { 462, "_PointerDelay:" }; +const struct FC_Type _MSG_WN_IDCMPFlags_WND = { 463, "IDCMP Flags" }; +const struct FC_Type _MSG_IDCMP_CANCEL_GAD = { 464, "_Cancel" }; +const struct FC_Type _MSG_IDCMP_OK_GAD = { 465, "_Ok" }; +const struct FC_Type _MSG_IDCMP_MENUPICK_GAD = { 466, "MenuPick:" }; +const struct FC_Type _MSG_IDCMP_GADGETHELP_GAD = { 467, "GadgetHelp:" }; +const struct FC_Type _MSG_IDCMP_MENUHELP_GAD = { 468, "MenuHelp:" }; +const struct FC_Type _MSG_IDCMP_IDCMPUPDATE_GAD = { 469, "IDCM_PUpdate:" }; +const struct FC_Type _MSG_IDCMP_DISKINSERTED_GAD = { 470, "Dis_kInserted:" }; +const struct FC_Type _MSG_IDCMP_DISKREMOVED_GAD = { 471, "_DiskRemoved:" }; +const struct FC_Type _MSG_IDCMP_INACTIVEWINDOW_GAD = { 472, "InActiveWin_dow:" }; +const struct FC_Type _MSG_IDCMP_ACTIVEWINDOW_GAD = { 473, "Ac_tiveWindow:" }; +const struct FC_Type _MSG_IDCMP_INTUITICKS_GAD = { 474, "_IntuiTicks:" }; +const struct FC_Type _MSG_IDCMP_CLOSEWINDOW_GAD = { 475, "C_loseWindow:" }; +const struct FC_Type _MSG_IDCMP_VANILLAKEY_GAD = { 476, "_VanillaKey:" }; +const struct FC_Type _MSG_IDCMP_RAWKEY_GAD = { 477, "R_AWKey:" }; +const struct FC_Type _MSG_IDCMP_GADGETDOWN_GAD = { 478, "Gadget_Down:" }; +const struct FC_Type _MSG_IDCMP_GADGETUP_GAD = { 479, "Gadget_Up:" }; +const struct FC_Type _MSG_IDCMP_MOUSEBUTTONS_GAD = { 480, "Mouse_Buttons:" }; +const struct FC_Type _MSG_IDCMP_NEWPREFS_GAD = { 481, "New_Prefs:" }; +const struct FC_Type _MSG_IDCMP_CHANGEWINDOW_GAD = { 482, "C_hangeWindow:" }; +const struct FC_Type _MSG_IDCMP_REFRESHWINDOW_GAD = { 483, "Re_freshWindow:" }; +const struct FC_Type _MSG_IDCMP_NEWSIZE_GAD = { 484, "_NewSize:" }; +const struct FC_Type _MSG_IDCMP_REQCLEAR_GAD = { 485, "ReqCl_ear:" }; +const struct FC_Type _MSG_IDCMP_REQSET_GAD = { 486, "Req_Set:" }; +const struct FC_Type _MSG_IDCMP_REQVERIFY_GAD = { 487, "_ReqVerify:" }; +const struct FC_Type _MSG_IDCMP_SIZEVERIFY_GAD = { 488, "_SizeVerify:" }; +const struct FC_Type _MSG_IDCMP_MENUVERIFY_GAD = { 489, "_MenuVerify:" }; +const struct FC_Type _MSG_IDCMP_MOUSEMOVE_GAD = { 490, "MouseMove" }; +const struct FC_Type _MSG_IDCMP_DELTAMOVE_GAD = { 491, "DeltaMove" }; +const struct FC_Type _MSG_PGMN_LABEL_GAD = { 492, "_Label:" }; +const struct FC_Type _MSG_PGMN_NEWLOOK_GAD = { 493, "_NewLook:" }; +const struct FC_Type _MSG_Working_WND = { 494, "" }; +const struct FC_Type _MSG_WORK_PROGRESS_FORMAT_GAD = { 495, "%ld%%" }; +const struct FC_Type _MSG_PGFR_X_GAD = { 496, "_X Pos:" }; +const struct FC_Type _MSG_PGFR_Y_GAD = { 497, "_Y Pos:" }; +const struct FC_Type _MSG_PGFR_WIDTH_GAD = { 498, "_Width:" }; +const struct FC_Type _MSG_PGFR_HEIGHT_GAD = { 499, "_Height:" }; +const struct FC_Type _MSG_PGFR_FRAME_GAD = { 500, "_Frame:" }; +const struct FC_Type _MSG_PGFR_FRAME_L0_GAD = { 501, "Button" }; +const struct FC_Type _MSG_PGFR_FRAME_L1_GAD = { 502, "IconDropBox" }; +const struct FC_Type _MSG_PGFR_FRAME_L2_GAD = { 503, "Ridge" }; +const struct FC_Type _MSG_PGFR_FRAME_L3_GAD = { 504, "Horiz. Line" }; +const struct FC_Type _MSG_PGFR_FRAME_L4_GAD = { 505, "Vert. Line" }; +const struct FC_Type _MSG_PGFR_RECESSED_GAD = { 506, "_Recessed:" }; +const struct FC_Type _MSG_EditMenu_WND = { 507, "" }; +const struct FC_Type _MSG_EditImage_WND = { 508, "Edit Image" }; +const struct FC_Type _MSG_List_WND = { 509, "Select..." }; +const struct FC_Type _MSG_LIST_GAD = { 510, "" }; +const struct FC_Type _MSG_PGMN_ITEM_LABEL_GAD = { 511, "_Label:" }; +const struct FC_Type _MSG_PGMN_ITEM_TITLE_GAD = { 512, "_Title:" }; +const struct FC_Type _MSG_PGMN_ITEM_COMMKEY_GAD = { 513, "Comm_Key:" }; +const struct FC_Type _MSG_PGMN_ITEM_POPUP_GAD = { 514, "_PopUp:" }; +const struct FC_Type _MSG_PGMN_ITEM_BARLABEL_GAD = { 515, "_BarLabel:" }; +const struct FC_Type _MSG_PGMN_ITEM_DISABLED_GAD = { 516, "_Disabled:" }; +const struct FC_Type _MSG_PGMN_ITEM_CHECKED_GAD = { 517, "_Checked:" }; +const struct FC_Type _MSG_PGMN_ITEM_TOGGLE_GAD = { 518, "Menu T_oggle:" }; +const struct FC_Type _MSG_PGPI_LABEL_GAD = { 519, "_Label:" }; +const struct FC_Type _MSG_PGPI_WIDTH_GAD = { 520, "_W:" }; +const struct FC_Type _MSG_PGPI_HEIGHT_GAD = { 521, "_H:" }; +const struct FC_Type _MSG_PGPI_DEPTH_GAD = { 522, "_D:" }; +const struct FC_Type _MSG_PGPI_TYPE_GAD = { 523, "_Type:" }; +const struct FC_Type _MSG_PGPI_TYPE_L0_GAD = { 524, "Normal image" }; +const struct FC_Type _MSG_PGPI_TYPE_L1_GAD = { 525, "Toolbar image" }; +const struct FC_Type _MSG_PGPI_TYPE_L2_GAD = { 526, "Pointer image" }; +const struct FC_Type _MSG_PGPI_SETPOINT_GAD = { 527, "_Set Point" }; +const struct FC_Type _MSG_PGPI_PALETTE_GAD = { 528, "Edit _Palette..." }; +const struct FC_Type _MSG_TBP_PALETTE_GAD = { 529, "" }; +const struct FC_Type _MSG_Screen_WND = { 530, "Screen Properties" }; +const struct FC_Type _MSG_SCREEN_PAGES_L0_GAD = { 531, "General" }; +const struct FC_Type _MSG_SCREEN_PAGES_L1_GAD = { 532, "Flags" }; +const struct FC_Type _MSG_PGSCR_WIDTH_GAD = { 533, "_Width:" }; +const struct FC_Type _MSG_PGSCR_HEIGHT_GAD = { 534, "_Height:" }; +const struct FC_Type _MSG_PGSCR_DEPTH_GAD = { 535, "_Depth:" }; +const struct FC_Type _MSG_PGSCR_TITLE_GAD = { 536, "_Title:" }; +const struct FC_Type _MSG_PGSCR_PUBNAME_GAD = { 537, "_PubName:" }; +const struct FC_Type _MSG_PGSCR_USE_GAD = { 538, "_Use:" }; +const struct FC_Type _MSG_PGSCR_USE_L0_GAD = { 539, "Workbench" }; +const struct FC_Type _MSG_PGSCR_USE_L1_GAD = { 540, "CustomScreen" }; +const struct FC_Type _MSG_PGSCR_USE_L2_GAD = { 541, "PublicScreen" }; +const struct FC_Type _MSG_PGSCR_MAKEPUBLIC_GAD = { 542, "_MakePublic:" }; +const struct FC_Type _MSG_PGSCR_MODEID_GAD = { 543, "ModeID:" }; +const struct FC_Type _MSG_PGSCR_MODEID_GET_GAD = { 544, "G" }; +const struct FC_Type _MSG_PGSCR_DEFAULTID_GAD = { 545, "" }; +const struct FC_Type _MSG_PGSCR_SHOWTITLE_GAD = { 546, "_ShowTitle:" }; +const struct FC_Type _MSG_PGSCR_BEHIND_GAD = { 547, "_Behind:" }; +const struct FC_Type _MSG_PGSCR_QUIET_GAD = { 548, "_Quiet:" }; +const struct FC_Type _MSG_PGSCR_AUTOSCROLL_GAD = { 549, "_AutoScroll:" }; +const struct FC_Type _MSG_PGSCR_FULLPALETTE_GAD = { 550, "_FullPalette:" }; +const struct FC_Type _MSG_PGSCR_DRAGGABLE_GAD = { 551, "_Draggable:" }; +const struct FC_Type _MSG_PGSCR_EXCLUSIVE_GAD = { 552, "_Exclusive:" }; +const struct FC_Type _MSG_PGSCR_SHAREPENS_GAD = { 553, "S_harePens:" }; +const struct FC_Type _MSG_PGSCR_INTERLEAVED_GAD = { 554, "_Interleaved:" }; +const struct FC_Type _MSG_PGSCR_LIKEWORKBENCH_GAD = { 555, "_Like Workbench:" }; +const struct FC_Type _MSG_PGSCR_MINIMIZEISG_GAD = { 556, "_Minimize ISG:" }; +const struct FC_Type _MSG_EditString_WND = { 557, "Edit Strings" }; +const struct FC_Type _MSG_PGSTR_STRINGS_FORMAT_GAD = { 558, "b2MSG ID|b2Type|b2String" }; +const struct FC_Type _MSG_PGSTR_ADD_GAD = { 559, "_Add" }; +const struct FC_Type _MSG_PGSTR_DELETE_GAD = { 560, "_Delete" }; +const struct FC_Type _MSG_PGSTR_EDIT_GAD = { 561, "_Edit" }; +const struct FC_Type _MSG_PGSTR_LABEL_GAD = { 562, "_Label:" }; +const struct FC_Type _MSG_PGSTR_STRING_GAD = { 563, "_String:" }; +const struct FC_Type _MSG_EditVersion_WND = { 564, "Edit Version" }; +const struct FC_Type _MSG_PGVER_PROGRAMNAME_GAD = { 565, "_ProgramName:" }; +const struct FC_Type _MSG_PGVER_AUTHOR_GAD = { 566, "_Author:" }; +const struct FC_Type _MSG_PGVER_VERSION_GAD = { 567, "_Version:" }; +const struct FC_Type _MSG_PGVER_DATE_GAD = { 568, "Date:" }; +const struct FC_Type _MSG_PGVER_REVISION_GAD = { 569, "_Revision:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_COLUMNS_GAD = { 570, "_Columns:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_FORMAT_GAD = { 571, "_Format:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_DISABLED_GAD = { 572, "_Disabled:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_MULTISELECT_GAD = { 573, "_MultiSelect:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_BORDER_GAD = { 574, "_Border:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_READONLY_GAD = { 575, "_ReadOnly:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD = { 576, "Show_TreeLines:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD = { 577, "_ShowSelected:" }; +const struct FC_Type _MSG_PG_TRLV_FLAGS_TREE_GAD = { 578, "Tr_ee:" }; +const struct FC_Type _MSG_Object_WND = { 579, "Objects" }; +const struct FC_Type _MSG_EditPalette_WND = { 580, "Edit Palette" }; +const struct FC_Type _MSG_PAL_PALETTE_GAD = { 581, "" }; +const struct FC_Type _MSG_PAL_GREEN_GAD = { 582, "" }; +const struct FC_Type _MSG_PAL_GREEN_FORMAT_GAD = { 583, "Green: %3ld" }; +const struct FC_Type _MSG_PAL_BLUE_GAD = { 584, "" }; +const struct FC_Type _MSG_PAL_BLUE_FORMAT_GAD = { 585, "Blue: %3ld" }; +const struct FC_Type _MSG_PAL_RED_GAD = { 586, "" }; +const struct FC_Type _MSG_PAL_RED_FORMAT_GAD = { 587, "Red: %3ld" }; +const struct FC_Type _MSG_PAL_CANCEL_GAD = { 588, "_Cancel" }; +const struct FC_Type _MSG_PAL_OK_GAD = { 589, "_Ok" }; +const struct FC_Type _MSG_PGWN_TABORDER_DOWN_GAD = { 590, "_Down" }; +const struct FC_Type _MSG_PGWN_TABORDER_UP_GAD = { 591, "_Up" }; +const struct FC_Type _MSG_PGWN_TABORDER_LIST_GAD = { 592, "" }; +const struct FC_Type _MSG_STATUS_CHANGED_GAD = { 593, "" }; +const struct FC_Type _MSG_STATUS_TEXT_GAD = { 594, "" }; +const struct FC_Type _MSG_CANTALLOCREQ = { 595, "Can't allocate asl requester" }; +const struct FC_Type _MSG_CANTALLOCOBJECT = { 596, "Can't create object" }; +const struct FC_Type _MSG_CANTOPENTOOLBAR = { 597, "Can't open toolbar window" }; +const struct FC_Type _MSG_CANTOPENOBJECTWINDOW = { 598, "Can't open object list window" }; +const struct FC_Type _MSG_CANTOPENCLIPBOARD = { 599, "Can't open clipboard" }; +const struct FC_Type _MSG_GAD_BUTTON = { 600, "Button" }; +const struct FC_Type _MSG_GAD_CHECKBOX = { 601, "CheckBox" }; +const struct FC_Type _MSG_GAD_COLORWHEEL = { 602, "ColorWheel" }; +const struct FC_Type _MSG_GAD_CYCLE = { 603, "Cycle" }; +const struct FC_Type _MSG_GAD_DATATYPE = { 604, "Datatype" }; +const struct FC_Type _MSG_GAD_GRADIENTSLIDER = { 605, "Gradientslider" }; +const struct FC_Type _MSG_GAD_INTEGER = { 606, "Integer" }; +const struct FC_Type _MSG_GAD_LISTVIEW = { 607, "Listview" }; +const struct FC_Type _MSG_GAD_MX = { 608, "MX" }; +const struct FC_Type _MSG_GAD_NUMBER = { 609, "Number" }; +const struct FC_Type _MSG_GAD_PAGE = { 610, "Page" }; +const struct FC_Type _MSG_GAD_PALETTE = { 611, "Palette" }; +const struct FC_Type _MSG_GAD_POPUPMENU = { 612, "PopupMenu" }; +const struct FC_Type _MSG_GAD_PROGRESS = { 613, "Progress" }; +const struct FC_Type _MSG_GAD_SCROLLER = { 614, "Scroller" }; +const struct FC_Type _MSG_GAD_SLIDER = { 615, "Slider" }; +const struct FC_Type _MSG_GAD_STRING = { 616, "String" }; +const struct FC_Type _MSG_GAD_TAPEDECK = { 617, "Tapedeck" }; +const struct FC_Type _MSG_GAD_TEXT = { 618, "Text" }; +const struct FC_Type _MSG_GAD_TEXTFIELD = { 619, "Textfield" }; +const struct FC_Type _MSG_GAD_TREEVIEW = { 620, "TreeView" }; +const struct FC_Type _MSG_NEW = { 621, "(new)" }; +const struct FC_Type _MSG_LOADING = { 622, "Loading..." }; +const struct FC_Type _MSG_SAVING = { 623, "Saving..." }; +const struct FC_Type _MSG_GENERATING = { 624, "Generating..." }; +const struct FC_Type _MSG_ABOUT = { 625, "GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nRegistered to:\n%s\n%s\n\nSerialNr: %s" }; +const struct FC_Type _MSG_ERROPENLIB_GRADIENTSLIDER = { 626, "Can't open gradientslider.gadget" }; +const struct FC_Type _MSG_NEWTITLE = { 627, "(new title)" }; +const struct FC_Type _MSG_NEWITEM = { 628, "(new item)" }; +const struct FC_Type _MSG_NEWSUB = { 629, "(new sub)" }; +const struct FC_Type _MSG_CHANGEME = { 630, ".%ld" }; +const struct FC_Type _MSG_EDITSTR_STRING = { 631, "%s\tString\t%s" }; +const struct FC_Type _MSG_UNNAMED = { 632, "" }; +const struct FC_Type _MSG_EMPTY = { 633, "" }; +const struct FC_Type _MSG_UNTITLED = { 634, "" }; +const struct FC_Type _MSG_UNKNOWN = { 635, "" }; +const struct FC_Type _MSG_OK = { 636, "Ok" }; +const struct FC_Type _MSG_ERROR = { 637, "Error" }; +const struct FC_Type _MSG_YOUNEEDNEWERVERSION = { 638, "You need at least GadToolsBox v%ld.%ld to open this resource file." }; +const struct FC_Type _MSG_ERRCREATEPROJECTPORT = { 639, "Can't create IDCMP message port" }; +const struct FC_Type _MSG_ERRCREATEPOINTER = { 640, "Can't create pointer object" }; +const struct FC_Type _MSG_ERRCREATEIMAGE = { 641, "Can't create image object" }; +const struct FC_Type _MSG_PGDT_DTOBJ = { 642, "DT Obj" }; +const struct FC_Type _MSG_ERROPENLIB_COLORWHEEL = { 643, "Can't open colorwheel.gadget" }; +const struct FC_Type _MSG_ALIGNLEFT = { 644, "Align to left" }; +const struct FC_Type _MSG_ALIGNHCENTER = { 645, "Align width center" }; +const struct FC_Type _MSG_ALIGNRIGHT = { 646, "Align to right" }; +const struct FC_Type _MSG_ALIGNTOP = { 647, "Align to top" }; +const struct FC_Type _MSG_ALIGNVCENTER = { 648, "Align height center" }; +const struct FC_Type _MSG_ALIGNBOTTOM = { 649, "Align to bottom" }; +const struct FC_Type _MSG_SPREADHORIZ = { 650, "Spread horizontal" }; +const struct FC_Type _MSG_SPREADVERT = { 651, "Spread vertical" }; +const struct FC_Type _MSG_FRAMEOBJECT = { 652, "Frame object" }; +const struct FC_Type _MSG_GADGETOBJECT = { 653, "Gadget object" }; +const struct FC_Type _MSG_WINDOWOBJECT = { 654, "Window object" }; +const struct FC_Type _MSG_IMAGEOBJECT = { 655, "Image object" }; +const struct FC_Type _MSG_STRINGOBJECT = { 656, "String object" }; +const struct FC_Type _MSG_NOOBJECT = { 657, "No object properties" }; +const struct FC_Type _MSG_MENUOBJECT = { 658, "Menu object" }; +const struct FC_Type _MSG_CONFIRMATION = { 659, "Confirmation Request" }; +const struct FC_Type _MSG_REPLACEFILE = { 660, "File %s already exists. Replace?" }; +const struct FC_Type _MSG_YESNO = { 661, "Yes|No" }; +const struct FC_Type _MSG_CANTOPENSTATUSWINDOW = { 662, "Can't open status window" }; +const struct FC_Type _MSG_CANTOPENPROPERTIESWINDOW = { 663, "Can't open properties window" }; +const struct FC_Type _MSG_STATUS_RESLOADED = { 664, "Resource file loaded." }; +const struct FC_Type _MSG_STATUS_RESSAVED = { 665, "Resource file saved." }; +const struct FC_Type _MSG_STATUS_MOVINGOBJECT = { 666, "Moving object..." }; +const struct FC_Type _MSG_STATUS_RESIZINGOBJECT = { 667, "Resizing object..." }; +const struct FC_Type _MSG_STATUS_RESGENERATED = { 668, "Source code generated." }; +const struct FC_Type _MSG_STATUS_CREATINGOBJECT = { 669, "Creating object..." }; +const struct FC_Type _MSG_STATUS_SELECTINGOBJECTS = { 670, "Selecting objects..." }; +const struct FC_Type _MSG_ERROPENLIB_PAGE = { 671, "Can't open page.gadget" }; +const struct FC_Type _MSG_ERROPENLIB_PROGRESS = { 672, "Can't open progress.gadget" }; +const struct FC_Type _MSG_ERROPENLIB_TEXTFIELD = { 673, "Can't open textfield.gadget" }; +const struct FC_Type _MSG_ERROPENLIB_TREEVIEW = { 674, "Can't open listview.gadget" }; +const struct FC_Type _MSG_ERROPENLIB_SMARTBITMAP = { 675, "Can't open smartbitmap.image" }; +const struct FC_Type _MSG_ERR_OPENSCREEN = { 676, "Can't open screen" }; +const struct FC_Type _MSG_ERR_VISUALINFO = { 677, "Can't alloc visual info" }; +const struct FC_Type _MSG_ERR_SCRDRAWINFO = { 678, "Can't alloc screen draw info" }; +const struct FC_Type _MSG_ERR_UNKNOWN = { 679, "Unknown error occured!" }; +const struct FC_Type _MSG_ERROPENLIB_TAPEDECK = { 680, "Can't open tapedeck.gadget" }; +const struct FC_Type _MSG_CANTCREATEPOPUPMENUS = { 681, "Can't create popup menus" }; +const struct FC_Type _MSG_ERROPENLIB_POPUPMENU = { 682, "Can't open popupmenu.library" }; +const struct FC_Type _MSG_CANTCREATEPOPUPMENUCLASS = { 683, "Can't create popupmenu class" }; +const struct FC_Type _MSG_CANTCREATEDRAWCLASS = { 684, "Can't create draw class" }; +const struct FC_Type _MSG_ABOUTUNREG = { 685, "GadToolsBox v%ld.%ld\n(c) 1996-98 by %s\n\nUnregistered version\nPlease register!\n" }; +const struct FC_Type _MSG_SELECTPROJECTFILE = { 686, "Select project file to open..." }; +const struct FC_Type _MSG_SAVEPROJECTAS = { 687, "Save project as..." }; +const struct FC_Type _MSG_ENTERBASENAME = { 688, "Enter base filename to generate..." }; +const struct FC_Type _MSG_NOTSAVED = { 689, "Project %s has been changed. Continue?" }; + + diff --git a/GadToolsBox/gadtools_cat.h b/GadToolsBox/gadtools_cat.h new file mode 100755 index 0000000..01561a6 --- /dev/null +++ b/GadToolsBox/gadtools_cat.h @@ -0,0 +1,1397 @@ +#ifndef gadtools_cat_H +#define gadtools_cat_H +/* +** gadtools_cat.h Catalog Header File +*/ + +#include + +struct FC_Type +{ + LONG ID; + STRPTR Str; +}; + +extern const struct FC_Type _MSG_MainProject_MTITLE; +#define MSG_MainProject_MTITLE ((APTR) &_MSG_MainProject_MTITLE) +extern const struct FC_Type _MSG_MainProjectNew_MITEM; +#define MSG_MainProjectNew_MITEM ((APTR) &_MSG_MainProjectNew_MITEM) +extern const struct FC_Type _MSG_MainProjectOpen_MITEM; +#define MSG_MainProjectOpen_MITEM ((APTR) &_MSG_MainProjectOpen_MITEM) +extern const struct FC_Type _MSG_MainProjectSave_MITEM; +#define MSG_MainProjectSave_MITEM ((APTR) &_MSG_MainProjectSave_MITEM) +extern const struct FC_Type _MSG_MainProjectSaveAs_MITEM; +#define MSG_MainProjectSaveAs_MITEM ((APTR) &_MSG_MainProjectSaveAs_MITEM) +extern const struct FC_Type _MSG_MainProjectSaveSource_MITEM; +#define MSG_MainProjectSaveSource_MITEM ((APTR) &_MSG_MainProjectSaveSource_MITEM) +extern const struct FC_Type _MSG_MainProjectPreferences_MITEM; +#define MSG_MainProjectPreferences_MITEM ((APTR) &_MSG_MainProjectPreferences_MITEM) +extern const struct FC_Type _MSG_MainProjectAbout_MITEM; +#define MSG_MainProjectAbout_MITEM ((APTR) &_MSG_MainProjectAbout_MITEM) +extern const struct FC_Type _MSG_MainProjectQuit_MITEM; +#define MSG_MainProjectQuit_MITEM ((APTR) &_MSG_MainProjectQuit_MITEM) +extern const struct FC_Type _MSG_MainEdit_MTITLE; +#define MSG_MainEdit_MTITLE ((APTR) &_MSG_MainEdit_MTITLE) +extern const struct FC_Type _MSG_MainEditUndo_MITEM; +#define MSG_MainEditUndo_MITEM ((APTR) &_MSG_MainEditUndo_MITEM) +extern const struct FC_Type _MSG_MainEditCut_MITEM; +#define MSG_MainEditCut_MITEM ((APTR) &_MSG_MainEditCut_MITEM) +extern const struct FC_Type _MSG_MainEditCopy_MITEM; +#define MSG_MainEditCopy_MITEM ((APTR) &_MSG_MainEditCopy_MITEM) +extern const struct FC_Type _MSG_MainEditPaste_MITEM; +#define MSG_MainEditPaste_MITEM ((APTR) &_MSG_MainEditPaste_MITEM) +extern const struct FC_Type _MSG_MainEditClear_MITEM; +#define MSG_MainEditClear_MITEM ((APTR) &_MSG_MainEditClear_MITEM) +extern const struct FC_Type _MSG_MainEditSelectAll_MITEM; +#define MSG_MainEditSelectAll_MITEM ((APTR) &_MSG_MainEditSelectAll_MITEM) +extern const struct FC_Type _MSG_MainEditGrid_MITEM; +#define MSG_MainEditGrid_MITEM ((APTR) &_MSG_MainEditGrid_MITEM) +extern const struct FC_Type _MSG_MainEditAlign_MITEM; +#define MSG_MainEditAlign_MITEM ((APTR) &_MSG_MainEditAlign_MITEM) +extern const struct FC_Type _MSG_MainEditAlignToLeft_MSUB; +#define MSG_MainEditAlignToLeft_MSUB ((APTR) &_MSG_MainEditAlignToLeft_MSUB) +extern const struct FC_Type _MSG_MainEditAlignToHCenter_MSUB; +#define MSG_MainEditAlignToHCenter_MSUB ((APTR) &_MSG_MainEditAlignToHCenter_MSUB) +extern const struct FC_Type _MSG_MainEditAlignToRight_MSUB; +#define MSG_MainEditAlignToRight_MSUB ((APTR) &_MSG_MainEditAlignToRight_MSUB) +extern const struct FC_Type _MSG_MainEditAlignToTop_MSUB; +#define MSG_MainEditAlignToTop_MSUB ((APTR) &_MSG_MainEditAlignToTop_MSUB) +extern const struct FC_Type _MSG_MainEditAlignToVCenter_MSUB; +#define MSG_MainEditAlignToVCenter_MSUB ((APTR) &_MSG_MainEditAlignToVCenter_MSUB) +extern const struct FC_Type _MSG_MainEditAlignToBottom_MSUB; +#define MSG_MainEditAlignToBottom_MSUB ((APTR) &_MSG_MainEditAlignToBottom_MSUB) +extern const struct FC_Type _MSG_MainEditClone_MITEM; +#define MSG_MainEditClone_MITEM ((APTR) &_MSG_MainEditClone_MITEM) +extern const struct FC_Type _MSG_MainEditCloneWidth_MSUB; +#define MSG_MainEditCloneWidth_MSUB ((APTR) &_MSG_MainEditCloneWidth_MSUB) +extern const struct FC_Type _MSG_MainEditCloneHeight_MSUB; +#define MSG_MainEditCloneHeight_MSUB ((APTR) &_MSG_MainEditCloneHeight_MSUB) +extern const struct FC_Type _MSG_MainEditCloneBoth_MSUB; +#define MSG_MainEditCloneBoth_MSUB ((APTR) &_MSG_MainEditCloneBoth_MSUB) +extern const struct FC_Type _MSG_MainEditSpread_MITEM; +#define MSG_MainEditSpread_MITEM ((APTR) &_MSG_MainEditSpread_MITEM) +extern const struct FC_Type _MSG_MainEditSpreadHoriz_MSUB; +#define MSG_MainEditSpreadHoriz_MSUB ((APTR) &_MSG_MainEditSpreadHoriz_MSUB) +extern const struct FC_Type _MSG_MainEditSpreadVertical_MSUB; +#define MSG_MainEditSpreadVertical_MSUB ((APTR) &_MSG_MainEditSpreadVertical_MSUB) +extern const struct FC_Type _MSG_MainObject_MTITLE; +#define MSG_MainObject_MTITLE ((APTR) &_MSG_MainObject_MTITLE) +extern const struct FC_Type _MSG_MainObjWindow_MITEM; +#define MSG_MainObjWindow_MITEM ((APTR) &_MSG_MainObjWindow_MITEM) +extern const struct FC_Type _MSG_MainObjWindowNew_MSUB; +#define MSG_MainObjWindowNew_MSUB ((APTR) &_MSG_MainObjWindowNew_MSUB) +extern const struct FC_Type _MSG_MainObjWindowClose_MSUB; +#define MSG_MainObjWindowClose_MSUB ((APTR) &_MSG_MainObjWindowClose_MSUB) +extern const struct FC_Type _MSG_MainObjWindowDelete_MSUB; +#define MSG_MainObjWindowDelete_MSUB ((APTR) &_MSG_MainObjWindowDelete_MSUB) +extern const struct FC_Type _MSG_MainObjWindowRefresh_MSUB; +#define MSG_MainObjWindowRefresh_MSUB ((APTR) &_MSG_MainObjWindowRefresh_MSUB) +extern const struct FC_Type _MSG_MainObjMenu_MITEM; +#define MSG_MainObjMenu_MITEM ((APTR) &_MSG_MainObjMenu_MITEM) +extern const struct FC_Type _MSG_MainObjMenuNew_MSUB; +#define MSG_MainObjMenuNew_MSUB ((APTR) &_MSG_MainObjMenuNew_MSUB) +extern const struct FC_Type _MSG_MainObjMenuClose_MSUB; +#define MSG_MainObjMenuClose_MSUB ((APTR) &_MSG_MainObjMenuClose_MSUB) +extern const struct FC_Type _MSG_MainObjMenuDelete_MSUB; +#define MSG_MainObjMenuDelete_MSUB ((APTR) &_MSG_MainObjMenuDelete_MSUB) +extern const struct FC_Type _MSG_MainObjImage_MITEM; +#define MSG_MainObjImage_MITEM ((APTR) &_MSG_MainObjImage_MITEM) +extern const struct FC_Type _MSG_MainObjImageNew_MSUB; +#define MSG_MainObjImageNew_MSUB ((APTR) &_MSG_MainObjImageNew_MSUB) +extern const struct FC_Type _MSG_MainObjImageClose_MSUB; +#define MSG_MainObjImageClose_MSUB ((APTR) &_MSG_MainObjImageClose_MSUB) +extern const struct FC_Type _MSG_MainObjImageDelete_MSUB; +#define MSG_MainObjImageDelete_MSUB ((APTR) &_MSG_MainObjImageDelete_MSUB) +extern const struct FC_Type _MSG_MainObjStrings_MITEM; +#define MSG_MainObjStrings_MITEM ((APTR) &_MSG_MainObjStrings_MITEM) +extern const struct FC_Type _MSG_MainObjStringsOpen_MSUB; +#define MSG_MainObjStringsOpen_MSUB ((APTR) &_MSG_MainObjStringsOpen_MSUB) +extern const struct FC_Type _MSG_MainObjStringsClose_MSUB; +#define MSG_MainObjStringsClose_MSUB ((APTR) &_MSG_MainObjStringsClose_MSUB) +extern const struct FC_Type _MSG_MainObjScreen_MITEM; +#define MSG_MainObjScreen_MITEM ((APTR) &_MSG_MainObjScreen_MITEM) +extern const struct FC_Type _MSG_MainObjScreenOpen_MSUB; +#define MSG_MainObjScreenOpen_MSUB ((APTR) &_MSG_MainObjScreenOpen_MSUB) +extern const struct FC_Type _MSG_MainObjScreenClose_MSUB; +#define MSG_MainObjScreenClose_MSUB ((APTR) &_MSG_MainObjScreenClose_MSUB) +extern const struct FC_Type _MSG_MainObjVersion_MITEM; +#define MSG_MainObjVersion_MITEM ((APTR) &_MSG_MainObjVersion_MITEM) +extern const struct FC_Type _MSG_MainObjVersionOpen_MSUB; +#define MSG_MainObjVersionOpen_MSUB ((APTR) &_MSG_MainObjVersionOpen_MSUB) +extern const struct FC_Type _MSG_MainObjVersionClose_MSUB; +#define MSG_MainObjVersionClose_MSUB ((APTR) &_MSG_MainObjVersionClose_MSUB) +extern const struct FC_Type _MSG_MainWindow_MTITLE; +#define MSG_MainWindow_MTITLE ((APTR) &_MSG_MainWindow_MTITLE) +extern const struct FC_Type _MSG_MainWindowProperties_MITEM; +#define MSG_MainWindowProperties_MITEM ((APTR) &_MSG_MainWindowProperties_MITEM) +extern const struct FC_Type _MSG_MainWindowObjects_MITEM; +#define MSG_MainWindowObjects_MITEM ((APTR) &_MSG_MainWindowObjects_MITEM) +extern const struct FC_Type _MSG_MainWindowStatus_MITEM; +#define MSG_MainWindowStatus_MITEM ((APTR) &_MSG_MainWindowStatus_MITEM) +extern const struct FC_Type _MSG_MainWindowHideAll_MITEM; +#define MSG_MainWindowHideAll_MITEM ((APTR) &_MSG_MainWindowHideAll_MITEM) +extern const struct FC_Type _MSG_SCREENTITLE_SCR; +#define MSG_SCREENTITLE_SCR ((APTR) &_MSG_SCREENTITLE_SCR) +extern const struct FC_Type _MSG_PGBO_LABEL_GAD; +#define MSG_PGBO_LABEL_GAD ((APTR) &_MSG_PGBO_LABEL_GAD) +extern const struct FC_Type _MSG_PGBO_X_GAD; +#define MSG_PGBO_X_GAD ((APTR) &_MSG_PGBO_X_GAD) +extern const struct FC_Type _MSG_PGBO_Y_GAD; +#define MSG_PGBO_Y_GAD ((APTR) &_MSG_PGBO_Y_GAD) +extern const struct FC_Type _MSG_PGBO_WIDTH_GAD; +#define MSG_PGBO_WIDTH_GAD ((APTR) &_MSG_PGBO_WIDTH_GAD) +extern const struct FC_Type _MSG_PGBO_HEIGHT_GAD; +#define MSG_PGBO_HEIGHT_GAD ((APTR) &_MSG_PGBO_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGBO_REL_X_GAD; +#define MSG_PGBO_REL_X_GAD ((APTR) &_MSG_PGBO_REL_X_GAD) +extern const struct FC_Type _MSG_PGBO_REL_X_L0_GAD; +#define MSG_PGBO_REL_X_L0_GAD ((APTR) &_MSG_PGBO_REL_X_L0_GAD) +extern const struct FC_Type _MSG_PGBO_REL_X_L1_GAD; +#define MSG_PGBO_REL_X_L1_GAD ((APTR) &_MSG_PGBO_REL_X_L1_GAD) +extern const struct FC_Type _MSG_PGBO_REL_Y_GAD; +#define MSG_PGBO_REL_Y_GAD ((APTR) &_MSG_PGBO_REL_Y_GAD) +extern const struct FC_Type _MSG_PGBO_REL_Y_L0_GAD; +#define MSG_PGBO_REL_Y_L0_GAD ((APTR) &_MSG_PGBO_REL_Y_L0_GAD) +extern const struct FC_Type _MSG_PGBO_REL_Y_L1_GAD; +#define MSG_PGBO_REL_Y_L1_GAD ((APTR) &_MSG_PGBO_REL_Y_L1_GAD) +extern const struct FC_Type _MSG_PGBO_REL_W_GAD; +#define MSG_PGBO_REL_W_GAD ((APTR) &_MSG_PGBO_REL_W_GAD) +extern const struct FC_Type _MSG_PGBO_REL_W_L0_GAD; +#define MSG_PGBO_REL_W_L0_GAD ((APTR) &_MSG_PGBO_REL_W_L0_GAD) +extern const struct FC_Type _MSG_PGBO_REL_W_L1_GAD; +#define MSG_PGBO_REL_W_L1_GAD ((APTR) &_MSG_PGBO_REL_W_L1_GAD) +extern const struct FC_Type _MSG_PGBO_REL_H_GAD; +#define MSG_PGBO_REL_H_GAD ((APTR) &_MSG_PGBO_REL_H_GAD) +extern const struct FC_Type _MSG_PGBO_REL_H_L0_GAD; +#define MSG_PGBO_REL_H_L0_GAD ((APTR) &_MSG_PGBO_REL_H_L0_GAD) +extern const struct FC_Type _MSG_PGBO_REL_H_L1_GAD; +#define MSG_PGBO_REL_H_L1_GAD ((APTR) &_MSG_PGBO_REL_H_L1_GAD) +extern const struct FC_Type _MSG_ABOUT_OK_GAD; +#define MSG_ABOUT_OK_GAD ((APTR) &_MSG_ABOUT_OK_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD; +#define MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_IMMEDIATE_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_DISABLED_GAD; +#define MSG_PG_BUTT_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_GAD; +#define MSG_PG_BUTT_FLAGS_TITLETYPE_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_TITLETYPE_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD; +#define MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_TITLETYPE_L0_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD; +#define MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_TITLETYPE_L1_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD; +#define MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_TITLETYPE_L2_GAD) +extern const struct FC_Type _MSG_PG_BUTT_FLAGS_TOGGLE_GAD; +#define MSG_PG_BUTT_FLAGS_TOGGLE_GAD ((APTR) &_MSG_PG_BUTT_FLAGS_TOGGLE_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_GAD; +#define MSG_PG_CBOX_FLAGS_SCALED_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_SCALED_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L0_GAD; +#define MSG_PG_CBOX_FLAGS_SCALED_L0_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_SCALED_L0_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L1_GAD; +#define MSG_PG_CBOX_FLAGS_SCALED_L1_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_SCALED_L1_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_SCALED_L2_GAD; +#define MSG_PG_CBOX_FLAGS_SCALED_L2_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_SCALED_L2_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_CHECKED_GAD; +#define MSG_PG_CBOX_FLAGS_CHECKED_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_CHECKED_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_CBOX_FLAGS_DISABLED_GAD; +#define MSG_PG_CBOX_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_CBOX_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_MAXPENS_GAD; +#define MSG_PG_CWHL_FLAGS_MAXPENS_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_MAXPENS_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_ABBRV_GAD; +#define MSG_PG_CWHL_FLAGS_ABBRV_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_ABBRV_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_GSLIDER_GAD; +#define MSG_PG_CWHL_FLAGS_GSLIDER_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_GSLIDER_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_BEVELBOX_GAD; +#define MSG_PG_CWHL_FLAGS_BEVELBOX_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_BEVELBOX_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_DISABLED_GAD; +#define MSG_PG_CWHL_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD; +#define MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD ((APTR) &_MSG_PG_CWHL_FLAGS_FOLLOWMOUSE_GAD) +extern const struct FC_Type _MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_CYCE_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_CYCE_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_CYCE_FLAGS_DISABLED_GAD; +#define MSG_PG_CYCE_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_CYCE_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_LISTS_EDIT_GAD; +#define MSG_PG_LISTS_EDIT_GAD ((APTR) &_MSG_PG_LISTS_EDIT_GAD) +extern const struct FC_Type _MSG_PG_LISTS_ACTIVE_GAD; +#define MSG_PG_LISTS_ACTIVE_GAD ((APTR) &_MSG_PG_LISTS_ACTIVE_GAD) +extern const struct FC_Type _MSG_PG_LISTS_LIST_GAD; +#define MSG_PG_LISTS_LIST_GAD ((APTR) &_MSG_PG_LISTS_LIST_GAD) +extern const struct FC_Type _MSG_PG_LISTS_UP_GAD; +#define MSG_PG_LISTS_UP_GAD ((APTR) &_MSG_PG_LISTS_UP_GAD) +extern const struct FC_Type _MSG_PG_LISTS_DOWN_GAD; +#define MSG_PG_LISTS_DOWN_GAD ((APTR) &_MSG_PG_LISTS_DOWN_GAD) +extern const struct FC_Type _MSG_PG_LISTS_ADD_GAD; +#define MSG_PG_LISTS_ADD_GAD ((APTR) &_MSG_PG_LISTS_ADD_GAD) +extern const struct FC_Type _MSG_PG_LISTS_DEL_GAD; +#define MSG_PG_LISTS_DEL_GAD ((APTR) &_MSG_PG_LISTS_DEL_GAD) +extern const struct FC_Type _MSG_PG_DTYP_FLAGS_OBJECT_GAD; +#define MSG_PG_DTYP_FLAGS_OBJECT_GAD ((APTR) &_MSG_PG_DTYP_FLAGS_OBJECT_GAD) +extern const struct FC_Type _MSG_PG_DTYP_FLAGS_DISABLED_GAD; +#define MSG_PG_DTYP_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_DTYP_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD; +#define MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_KNOBPIXELS_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_MAXVAL_GAD; +#define MSG_PG_GRSL_FLAGS_MAXVAL_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_MAXVAL_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_CURVAL_GAD; +#define MSG_PG_GRSL_FLAGS_CURVAL_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_CURVAL_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_SKIPVAL_GAD; +#define MSG_PG_GRSL_FLAGS_SKIPVAL_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_SKIPVAL_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_PENS_GAD; +#define MSG_PG_GRSL_FLAGS_PENS_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_PENS_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_GAD; +#define MSG_PG_GRSL_FLAGS_FREEDOM_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_FREEDOM_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD; +#define MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_FREEDOM_L0_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD; +#define MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_FREEDOM_L1_GAD) +extern const struct FC_Type _MSG_PG_GRSL_FLAGS_DISABLED_GAD; +#define MSG_PG_GRSL_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_GRSL_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_DISABLED_GAD; +#define MSG_PG_INTR_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_INTR_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_INTR_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_INTR_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_INTR_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_INTR_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_TABCYCLE_GAD; +#define MSG_PG_INTR_FLAGS_TABCYCLE_GAD ((APTR) &_MSG_PG_INTR_FLAGS_TABCYCLE_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_REPLACEMODE_GAD; +#define MSG_PG_INTR_FLAGS_REPLACEMODE_GAD ((APTR) &_MSG_PG_INTR_FLAGS_REPLACEMODE_GAD) +extern const struct FC_Type _MSG_PG_INTR_FLAGS_EXITHELP_GAD; +#define MSG_PG_INTR_FLAGS_EXITHELP_GAD ((APTR) &_MSG_PG_INTR_FLAGS_EXITHELP_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_MAXCHARS_GAD; +#define MSG_PG_INTR_VAR_MAXCHARS_GAD ((APTR) &_MSG_PG_INTR_VAR_MAXCHARS_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_NUMBER_GAD; +#define MSG_PG_INTR_VAR_NUMBER_GAD ((APTR) &_MSG_PG_INTR_VAR_NUMBER_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_GAD; +#define MSG_PG_INTR_VAR_JUSTIFICATION_GAD ((APTR) &_MSG_PG_INTR_VAR_JUSTIFICATION_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD; +#define MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD ((APTR) &_MSG_PG_INTR_VAR_JUSTIFICATION_L0_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD; +#define MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD ((APTR) &_MSG_PG_INTR_VAR_JUSTIFICATION_L1_GAD) +extern const struct FC_Type _MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD; +#define MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD ((APTR) &_MSG_PG_INTR_VAR_JUSTIFICATION_L2_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_GAD; +#define MSG_PG_LVIE_FLAGS_ARROWS_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_ARROWS_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_SPACING_GAD; +#define MSG_PG_LVIE_FLAGS_SPACING_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_SPACING_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_DISABLED_GAD; +#define MSG_PG_LVIE_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_READONLY_GAD; +#define MSG_PG_LVIE_FLAGS_READONLY_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_READONLY_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD; +#define MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_SHOWSELECTED_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD; +#define MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_ARROWS_SEL_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD; +#define MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_ARROWS_SEL_L0_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD; +#define MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_ARROWS_SEL_L1_GAD) +extern const struct FC_Type _MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD; +#define MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD ((APTR) &_MSG_PG_LVIE_FLAGS_ARROWS_SEL_L2_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_DISABLED_GAD; +#define MSG_PG_MX_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_MX_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_MX_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_MX_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_MX_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_MX_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_GAD; +#define MSG_PG_MX_FLAGS_SCALED_GAD ((APTR) &_MSG_PG_MX_FLAGS_SCALED_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L0_GAD; +#define MSG_PG_MX_FLAGS_SCALED_L0_GAD ((APTR) &_MSG_PG_MX_FLAGS_SCALED_L0_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L1_GAD; +#define MSG_PG_MX_FLAGS_SCALED_L1_GAD ((APTR) &_MSG_PG_MX_FLAGS_SCALED_L1_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_SCALED_L2_GAD; +#define MSG_PG_MX_FLAGS_SCALED_L2_GAD ((APTR) &_MSG_PG_MX_FLAGS_SCALED_L2_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_GAD; +#define MSG_PG_MX_FLAGS_PLACEMENT_GAD ((APTR) &_MSG_PG_MX_FLAGS_PLACEMENT_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD; +#define MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD ((APTR) &_MSG_PG_MX_FLAGS_PLACEMENT_L0_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD; +#define MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD ((APTR) &_MSG_PG_MX_FLAGS_PLACEMENT_L1_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD; +#define MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD ((APTR) &_MSG_PG_MX_FLAGS_PLACEMENT_L2_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD; +#define MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD ((APTR) &_MSG_PG_MX_FLAGS_PLACEMENT_L3_GAD) +extern const struct FC_Type _MSG_PG_MX_FLAGS_SPACING_GAD; +#define MSG_PG_MX_FLAGS_SPACING_GAD ((APTR) &_MSG_PG_MX_FLAGS_SPACING_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_FORMAT_GAD; +#define MSG_PG_NUMB_FLAGS_FORMAT_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_FORMAT_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_DEFAULT_GAD; +#define MSG_PG_NUMB_FLAGS_DEFAULT_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_DEFAULT_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD; +#define MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_MAXNUMLEN_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_DISABLED_GAD; +#define MSG_PG_NUMB_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_BORDER_GAD; +#define MSG_PG_NUMB_FLAGS_BORDER_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_BORDER_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_CLIPPED_GAD; +#define MSG_PG_NUMB_FLAGS_CLIPPED_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_CLIPPED_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD; +#define MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_JUSTIFICATION_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD; +#define MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_JUSTIFICATION_L0_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD; +#define MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_JUSTIFICATION_L1_GAD) +extern const struct FC_Type _MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD; +#define MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD ((APTR) &_MSG_PG_NUMB_FLAGS_JUSTIFICATION_L2_GAD) +extern const struct FC_Type _MSG_PGGT_LABEL_GAD; +#define MSG_PGGT_LABEL_GAD ((APTR) &_MSG_PGGT_LABEL_GAD) +extern const struct FC_Type _MSG_PGGT_TITLE_GAD; +#define MSG_PGGT_TITLE_GAD ((APTR) &_MSG_PGGT_TITLE_GAD) +extern const struct FC_Type _MSG_PGGT_X_GAD; +#define MSG_PGGT_X_GAD ((APTR) &_MSG_PGGT_X_GAD) +extern const struct FC_Type _MSG_PGGT_Y_GAD; +#define MSG_PGGT_Y_GAD ((APTR) &_MSG_PGGT_Y_GAD) +extern const struct FC_Type _MSG_PGGT_WIDTH_GAD; +#define MSG_PGGT_WIDTH_GAD ((APTR) &_MSG_PGGT_WIDTH_GAD) +extern const struct FC_Type _MSG_PGGT_HEIGHT_GAD; +#define MSG_PGGT_HEIGHT_GAD ((APTR) &_MSG_PGGT_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_GAD; +#define MSG_PGGT_PLACEMENT_GAD ((APTR) &_MSG_PGGT_PLACEMENT_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_L0_GAD; +#define MSG_PGGT_PLACEMENT_L0_GAD ((APTR) &_MSG_PGGT_PLACEMENT_L0_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_L1_GAD; +#define MSG_PGGT_PLACEMENT_L1_GAD ((APTR) &_MSG_PGGT_PLACEMENT_L1_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_L2_GAD; +#define MSG_PGGT_PLACEMENT_L2_GAD ((APTR) &_MSG_PGGT_PLACEMENT_L2_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_L3_GAD; +#define MSG_PGGT_PLACEMENT_L3_GAD ((APTR) &_MSG_PGGT_PLACEMENT_L3_GAD) +extern const struct FC_Type _MSG_PGGT_PLACEMENT_L4_GAD; +#define MSG_PGGT_PLACEMENT_L4_GAD ((APTR) &_MSG_PGGT_PLACEMENT_L4_GAD) +extern const struct FC_Type _MSG_PGGT_REL_X_GAD; +#define MSG_PGGT_REL_X_GAD ((APTR) &_MSG_PGGT_REL_X_GAD) +extern const struct FC_Type _MSG_PGGT_REL_X_L0_GAD; +#define MSG_PGGT_REL_X_L0_GAD ((APTR) &_MSG_PGGT_REL_X_L0_GAD) +extern const struct FC_Type _MSG_PGGT_REL_X_L1_GAD; +#define MSG_PGGT_REL_X_L1_GAD ((APTR) &_MSG_PGGT_REL_X_L1_GAD) +extern const struct FC_Type _MSG_PGGT_REL_Y_GAD; +#define MSG_PGGT_REL_Y_GAD ((APTR) &_MSG_PGGT_REL_Y_GAD) +extern const struct FC_Type _MSG_PGGT_REL_Y_L0_GAD; +#define MSG_PGGT_REL_Y_L0_GAD ((APTR) &_MSG_PGGT_REL_Y_L0_GAD) +extern const struct FC_Type _MSG_PGGT_REL_Y_L1_GAD; +#define MSG_PGGT_REL_Y_L1_GAD ((APTR) &_MSG_PGGT_REL_Y_L1_GAD) +extern const struct FC_Type _MSG_PGGT_REL_W_GAD; +#define MSG_PGGT_REL_W_GAD ((APTR) &_MSG_PGGT_REL_W_GAD) +extern const struct FC_Type _MSG_PGGT_REL_W_L0_GAD; +#define MSG_PGGT_REL_W_L0_GAD ((APTR) &_MSG_PGGT_REL_W_L0_GAD) +extern const struct FC_Type _MSG_PGGT_REL_W_L1_GAD; +#define MSG_PGGT_REL_W_L1_GAD ((APTR) &_MSG_PGGT_REL_W_L1_GAD) +extern const struct FC_Type _MSG_PGGT_REL_H_GAD; +#define MSG_PGGT_REL_H_GAD ((APTR) &_MSG_PGGT_REL_H_GAD) +extern const struct FC_Type _MSG_PGGT_REL_H_L0_GAD; +#define MSG_PGGT_REL_H_L0_GAD ((APTR) &_MSG_PGGT_REL_H_L0_GAD) +extern const struct FC_Type _MSG_PGGT_REL_H_L1_GAD; +#define MSG_PGGT_REL_H_L1_GAD ((APTR) &_MSG_PGGT_REL_H_L1_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_DISABLED_GAD; +#define MSG_PG_PAGE_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_GAD; +#define MSG_PG_PAGE_FLAGS_LAYOUT_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_LAYOUT_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD; +#define MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_LAYOUT_L0_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD; +#define MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_LAYOUT_L1_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD; +#define MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_LAYOUT_L2_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_GAD; +#define MSG_PG_PAGE_FLAGS_STYLE_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_STYLE_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L0_GAD; +#define MSG_PG_PAGE_FLAGS_STYLE_L0_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_STYLE_L0_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L1_GAD; +#define MSG_PG_PAGE_FLAGS_STYLE_L1_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_STYLE_L1_GAD) +extern const struct FC_Type _MSG_PG_PAGE_FLAGS_STYLE_L2_GAD; +#define MSG_PG_PAGE_FLAGS_STYLE_L2_GAD ((APTR) &_MSG_PG_PAGE_FLAGS_STYLE_L2_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_LIST_GAD; +#define MSG_PG_PAGE_LISTS_LIST_GAD ((APTR) &_MSG_PG_PAGE_LISTS_LIST_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_ADD_GAD; +#define MSG_PG_PAGE_LISTS_ADD_GAD ((APTR) &_MSG_PG_PAGE_LISTS_ADD_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_DEL_GAD; +#define MSG_PG_PAGE_LISTS_DEL_GAD ((APTR) &_MSG_PG_PAGE_LISTS_DEL_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_UP_GAD; +#define MSG_PG_PAGE_LISTS_UP_GAD ((APTR) &_MSG_PG_PAGE_LISTS_UP_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_DOWN_GAD; +#define MSG_PG_PAGE_LISTS_DOWN_GAD ((APTR) &_MSG_PG_PAGE_LISTS_DOWN_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_WINDOWS_GAD; +#define MSG_PG_PAGE_LISTS_WINDOWS_GAD ((APTR) &_MSG_PG_PAGE_LISTS_WINDOWS_GAD) +extern const struct FC_Type _MSG_PG_PAGE_LISTS_ACTIVE_GAD; +#define MSG_PG_PAGE_LISTS_ACTIVE_GAD ((APTR) &_MSG_PG_PAGE_LISTS_ACTIVE_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_COLOR_GAD; +#define MSG_PG_PALT_FLAGS_COLOR_GAD ((APTR) &_MSG_PG_PALT_FLAGS_COLOR_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_OFFSET_GAD; +#define MSG_PG_PALT_FLAGS_OFFSET_GAD ((APTR) &_MSG_PG_PALT_FLAGS_OFFSET_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD; +#define MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD ((APTR) &_MSG_PG_PALT_FLAGS_SHOWSELECTED_VAR_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD; +#define MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD ((APTR) &_MSG_PG_PALT_FLAGS_SHOWSELECTED_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD; +#define MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD ((APTR) &_MSG_PG_PALT_FLAGS_SHOWSELECTED_L0_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD; +#define MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD ((APTR) &_MSG_PG_PALT_FLAGS_SHOWSELECTED_L1_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD; +#define MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD ((APTR) &_MSG_PG_PALT_FLAGS_SHOWSELECTED_L2_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_DISABLED_GAD; +#define MSG_PG_PALT_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_PALT_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_PALT_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_PALT_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_PALT_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_PALT_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_GAD; +#define MSG_PG_PALT_FLAGS_TYPE_GAD ((APTR) &_MSG_PG_PALT_FLAGS_TYPE_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L0_GAD; +#define MSG_PG_PALT_FLAGS_TYPE_L0_GAD ((APTR) &_MSG_PG_PALT_FLAGS_TYPE_L0_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L1_GAD; +#define MSG_PG_PALT_FLAGS_TYPE_L1_GAD ((APTR) &_MSG_PG_PALT_FLAGS_TYPE_L1_GAD) +extern const struct FC_Type _MSG_PG_PALT_FLAGS_TYPE_L2_GAD; +#define MSG_PG_PALT_FLAGS_TYPE_L2_GAD ((APTR) &_MSG_PG_PALT_FLAGS_TYPE_L2_GAD) +extern const struct FC_Type _MSG_PG_PUPM_FLAGS_DISABLED_GAD; +#define MSG_PG_PUPM_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_PUPM_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_PUPM_FLAGS_NEWLOOK_GAD; +#define MSG_PG_PUPM_FLAGS_NEWLOOK_GAD ((APTR) &_MSG_PG_PUPM_FLAGS_NEWLOOK_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_MAX_GAD; +#define MSG_PG_PRGR_FLAGS_MAX_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_MAX_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_CURRENT_GAD; +#define MSG_PG_PRGR_FLAGS_CURRENT_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_CURRENT_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_FORMAT_GAD; +#define MSG_PG_PRGR_FLAGS_FORMAT_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_FORMAT_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_DISABLED_GAD; +#define MSG_PG_PRGR_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_BORDER_GAD; +#define MSG_PG_PRGR_FLAGS_BORDER_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_BORDER_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PERCENTS_GAD; +#define MSG_PG_PRGR_FLAGS_PERCENTS_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PERCENTS_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_L0_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_L1_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_L2_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_L3_GAD) +extern const struct FC_Type _MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD; +#define MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD ((APTR) &_MSG_PG_PRGR_FLAGS_PLACEMENT_L4_GAD) +extern const struct FC_Type _MSG_PG_SCRL_FLAGS_DISABLED_GAD; +#define MSG_PG_SCRL_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_SCRL_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_SCRL_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_SCRL_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD; +#define MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD ((APTR) &_MSG_PG_SCRL_FLAGS_IMMEDIATE_GAD) +extern const struct FC_Type _MSG_PG_SCRL_FLAGS_RELVERIFY_GAD; +#define MSG_PG_SCRL_FLAGS_RELVERIFY_GAD ((APTR) &_MSG_PG_SCRL_FLAGS_RELVERIFY_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_TOP_GAD; +#define MSG_PG_SCRL_VAR_TOP_GAD ((APTR) &_MSG_PG_SCRL_VAR_TOP_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_TOTAL_GAD; +#define MSG_PG_SCRL_VAR_TOTAL_GAD ((APTR) &_MSG_PG_SCRL_VAR_TOTAL_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_VISIBLE_GAD; +#define MSG_PG_SCRL_VAR_VISIBLE_GAD ((APTR) &_MSG_PG_SCRL_VAR_VISIBLE_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_GAD; +#define MSG_PG_SCRL_VAR_FREEDOM_GAD ((APTR) &_MSG_PG_SCRL_VAR_FREEDOM_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_L0_GAD; +#define MSG_PG_SCRL_VAR_FREEDOM_L0_GAD ((APTR) &_MSG_PG_SCRL_VAR_FREEDOM_L0_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_FREEDOM_L1_GAD; +#define MSG_PG_SCRL_VAR_FREEDOM_L1_GAD ((APTR) &_MSG_PG_SCRL_VAR_FREEDOM_L1_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_ARROWS_GAD; +#define MSG_PG_SCRL_VAR_ARROWS_GAD ((APTR) &_MSG_PG_SCRL_VAR_ARROWS_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_GAD; +#define MSG_PG_SCRL_VAR_ARROW_TYPE_GAD ((APTR) &_MSG_PG_SCRL_VAR_ARROW_TYPE_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD; +#define MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD ((APTR) &_MSG_PG_SCRL_VAR_ARROW_TYPE_L0_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD; +#define MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD ((APTR) &_MSG_PG_SCRL_VAR_ARROW_TYPE_L1_GAD) +extern const struct FC_Type _MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD; +#define MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD ((APTR) &_MSG_PG_SCRL_VAR_ARROW_TYPE_L2_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_FORMAT_GAD; +#define MSG_PG_SLIR_FLAGS_FORMAT_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_FORMAT_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD; +#define MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_MAXPIXELLEN_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD; +#define MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_MAXPIXELLEN_SET_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_DISABLED_GAD; +#define MSG_PG_SLIR_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD; +#define MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_IMMEDIATE_GAD) +extern const struct FC_Type _MSG_PG_SLIR_FLAGS_RELVERIFY_GAD; +#define MSG_PG_SLIR_FLAGS_RELVERIFY_GAD ((APTR) &_MSG_PG_SLIR_FLAGS_RELVERIFY_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_MIN_GAD; +#define MSG_PG_SLIR_VAR_MIN_GAD ((APTR) &_MSG_PG_SLIR_VAR_MIN_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_MAX_GAD; +#define MSG_PG_SLIR_VAR_MAX_GAD ((APTR) &_MSG_PG_SLIR_VAR_MAX_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVEL_GAD; +#define MSG_PG_SLIR_VAR_LEVEL_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVEL_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_MAXLEVLEN_GAD; +#define MSG_PG_SLIR_VAR_MAXLEVLEN_GAD ((APTR) &_MSG_PG_SLIR_VAR_MAXLEVLEN_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_GAD; +#define MSG_PG_SLIR_VAR_JUSTIFICATION_GAD ((APTR) &_MSG_PG_SLIR_VAR_JUSTIFICATION_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD; +#define MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD ((APTR) &_MSG_PG_SLIR_VAR_JUSTIFICATION_L0_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD; +#define MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD ((APTR) &_MSG_PG_SLIR_VAR_JUSTIFICATION_L1_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD; +#define MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD ((APTR) &_MSG_PG_SLIR_VAR_JUSTIFICATION_L2_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_GAD; +#define MSG_PG_SLIR_VAR_FREEDOM_GAD ((APTR) &_MSG_PG_SLIR_VAR_FREEDOM_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_L0_GAD; +#define MSG_PG_SLIR_VAR_FREEDOM_L0_GAD ((APTR) &_MSG_PG_SLIR_VAR_FREEDOM_L0_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_FREEDOM_L1_GAD; +#define MSG_PG_SLIR_VAR_FREEDOM_L1_GAD ((APTR) &_MSG_PG_SLIR_VAR_FREEDOM_L1_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_GAD; +#define MSG_PG_SLIR_VAR_LEVELPLACE_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVELPLACE_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD; +#define MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVELPLACE_L0_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD; +#define MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVELPLACE_L1_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD; +#define MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVELPLACE_L2_GAD) +extern const struct FC_Type _MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD; +#define MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD ((APTR) &_MSG_PG_SLIR_VAR_LEVELPLACE_L3_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_DISABLED_GAD; +#define MSG_PG_STRG_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_STRG_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_UNDERSCORE_GAD; +#define MSG_PG_STRG_FLAGS_UNDERSCORE_GAD ((APTR) &_MSG_PG_STRG_FLAGS_UNDERSCORE_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_STRG_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_STRG_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_TABCYCLE_GAD; +#define MSG_PG_STRG_FLAGS_TABCYCLE_GAD ((APTR) &_MSG_PG_STRG_FLAGS_TABCYCLE_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_REPLACEMODE_GAD; +#define MSG_PG_STRG_FLAGS_REPLACEMODE_GAD ((APTR) &_MSG_PG_STRG_FLAGS_REPLACEMODE_GAD) +extern const struct FC_Type _MSG_PG_STRG_FLAGS_EXITHELP_GAD; +#define MSG_PG_STRG_FLAGS_EXITHELP_GAD ((APTR) &_MSG_PG_STRG_FLAGS_EXITHELP_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_MAXCHARS_GAD; +#define MSG_PG_STRG_VAR_MAXCHARS_GAD ((APTR) &_MSG_PG_STRG_VAR_MAXCHARS_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_STRING_GAD; +#define MSG_PG_STRG_VAR_STRING_GAD ((APTR) &_MSG_PG_STRG_VAR_STRING_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_GAD; +#define MSG_PG_STRG_VAR_JUSTIFICATION_GAD ((APTR) &_MSG_PG_STRG_VAR_JUSTIFICATION_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD; +#define MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD ((APTR) &_MSG_PG_STRG_VAR_JUSTIFICATION_L0_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD; +#define MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD ((APTR) &_MSG_PG_STRG_VAR_JUSTIFICATION_L1_GAD) +extern const struct FC_Type _MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD; +#define MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD ((APTR) &_MSG_PG_STRG_VAR_JUSTIFICATION_L2_GAD) +extern const struct FC_Type _MSG_PG_TDEK_FLAGS_FRAMES_GAD; +#define MSG_PG_TDEK_FLAGS_FRAMES_GAD ((APTR) &_MSG_PG_TDEK_FLAGS_FRAMES_GAD) +extern const struct FC_Type _MSG_PG_TDEK_FLAGS_CURRENT_GAD; +#define MSG_PG_TDEK_FLAGS_CURRENT_GAD ((APTR) &_MSG_PG_TDEK_FLAGS_CURRENT_GAD) +extern const struct FC_Type _MSG_PG_TDEK_FLAGS_DISABLED_GAD; +#define MSG_PG_TDEK_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_TDEK_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_TDEK_FLAGS_TAPE_GAD; +#define MSG_PG_TDEK_FLAGS_TAPE_GAD ((APTR) &_MSG_PG_TDEK_FLAGS_TAPE_GAD) +extern const struct FC_Type _MSG_PG_TDEK_FLAGS_PAUSED_GAD; +#define MSG_PG_TDEK_FLAGS_PAUSED_GAD ((APTR) &_MSG_PG_TDEK_FLAGS_PAUSED_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_DISABLED_GAD; +#define MSG_PG_TEXT_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD; +#define MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_HIGHLABEL_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_BORDER_GAD; +#define MSG_PG_TEXT_FLAGS_BORDER_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_BORDER_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_CLIPPED_GAD; +#define MSG_PG_TEXT_FLAGS_CLIPPED_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_CLIPPED_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_COPYTEXT_GAD; +#define MSG_PG_TEXT_FLAGS_COPYTEXT_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_COPYTEXT_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD; +#define MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_JUSTIFICATION_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD; +#define MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_JUSTIFICATION_L0_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD; +#define MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_JUSTIFICATION_L1_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD; +#define MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_JUSTIFICATION_L2_GAD) +extern const struct FC_Type _MSG_PG_TEXT_FLAGS_DEFAULT_GAD; +#define MSG_PG_TEXT_FLAGS_DEFAULT_GAD ((APTR) &_MSG_PG_TEXT_FLAGS_DEFAULT_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_DISABLED_GAD; +#define MSG_PG_TFLD_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_TABCYCLE_GAD; +#define MSG_PG_TFLD_FLAGS_TABCYCLE_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_TABCYCLE_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_READONLY_GAD; +#define MSG_PG_TFLD_FLAGS_READONLY_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_READONLY_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_INVERTED_GAD; +#define MSG_PG_TFLD_FLAGS_INVERTED_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_INVERTED_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_PARTIAL_GAD; +#define MSG_PG_TFLD_FLAGS_PARTIAL_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_PARTIAL_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD; +#define MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_BLOCKCURSOR_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_VCENTER_GAD; +#define MSG_PG_TFLD_FLAGS_VCENTER_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_VCENTER_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD; +#define MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_PASSCOMMAND_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD; +#define MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_CLIPBOARD_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_UNDO_GAD; +#define MSG_PG_TFLD_FLAGS_UNDO_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_UNDO_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD; +#define MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_NONPRINTCHARS_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD; +#define MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_MAXSIZEBEEP_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_NOGHOST_GAD; +#define MSG_PG_TFLD_FLAGS_NOGHOST_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_NOGHOST_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_MODIFIED_GAD; +#define MSG_PG_TFLD_FLAGS_MODIFIED_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_MODIFIED_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_USERALIGN_GAD; +#define MSG_PG_TFLD_FLAGS_USERALIGN_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_USERALIGN_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD; +#define MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_RULEDPAPER_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_GAD; +#define MSG_PG_TFLD_FLAGS_BORDER_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_BORDER_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L0_GAD; +#define MSG_PG_TFLD_FLAGS_BORDER_L0_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_BORDER_L0_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L1_GAD; +#define MSG_PG_TFLD_FLAGS_BORDER_L1_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_BORDER_L1_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_BORDER_L2_GAD; +#define MSG_PG_TFLD_FLAGS_BORDER_L2_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_BORDER_L2_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_GAD; +#define MSG_PG_TFLD_FLAGS_ALIGN_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_ALIGN_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD; +#define MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_ALIGN_L0_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD; +#define MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_ALIGN_L1_GAD) +extern const struct FC_Type _MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD; +#define MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD ((APTR) &_MSG_PG_TFLD_FLAGS_ALIGN_L2_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_BLINKRATE_GAD; +#define MSG_PG_TFLD_VAR_BLINKRATE_GAD ((APTR) &_MSG_PG_TFLD_VAR_BLINKRATE_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_MAXSIZE_GAD; +#define MSG_PG_TFLD_VAR_MAXSIZE_GAD ((APTR) &_MSG_PG_TFLD_VAR_MAXSIZE_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_TABSPACES_GAD; +#define MSG_PG_TFLD_VAR_TABSPACES_GAD ((APTR) &_MSG_PG_TFLD_VAR_TABSPACES_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_SPACING_GAD; +#define MSG_PG_TFLD_VAR_SPACING_GAD ((APTR) &_MSG_PG_TFLD_VAR_SPACING_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_DELIMITERS_GAD; +#define MSG_PG_TFLD_VAR_DELIMITERS_GAD ((APTR) &_MSG_PG_TFLD_VAR_DELIMITERS_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD; +#define MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD ((APTR) &_MSG_PG_TFLD_VAR_ACCEPTCHARS_GAD) +extern const struct FC_Type _MSG_PG_TFLD_VAR_REJECTCHARS_GAD; +#define MSG_PG_TFLD_VAR_REJECTCHARS_GAD ((APTR) &_MSG_PG_TFLD_VAR_REJECTCHARS_GAD) +extern const struct FC_Type _MSG_Properties_WND; +#define MSG_Properties_WND ((APTR) &_MSG_Properties_WND) +extern const struct FC_Type _MSG_PROPERTIES_LOCK_GAD; +#define MSG_PROPERTIES_LOCK_GAD ((APTR) &_MSG_PROPERTIES_LOCK_GAD) +extern const struct FC_Type _MSG_PROPERTIES_APPLY_GAD; +#define MSG_PROPERTIES_APPLY_GAD ((APTR) &_MSG_PROPERTIES_APPLY_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L0_GAD; +#define MSG_PROPERTIES_PAGES_L0_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L0_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L1_GAD; +#define MSG_PROPERTIES_PAGES_L1_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L1_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L2_GAD; +#define MSG_PROPERTIES_PAGES_L2_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L2_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L3_GAD; +#define MSG_PROPERTIES_PAGES_L3_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L3_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L4_GAD; +#define MSG_PROPERTIES_PAGES_L4_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L4_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L5_GAD; +#define MSG_PROPERTIES_PAGES_L5_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L5_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L6_GAD; +#define MSG_PROPERTIES_PAGES_L6_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L6_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L7_GAD; +#define MSG_PROPERTIES_PAGES_L7_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L7_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L8_GAD; +#define MSG_PROPERTIES_PAGES_L8_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L8_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L9_GAD; +#define MSG_PROPERTIES_PAGES_L9_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L9_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L10_GAD; +#define MSG_PROPERTIES_PAGES_L10_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L10_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L11_GAD; +#define MSG_PROPERTIES_PAGES_L11_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L11_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L12_GAD; +#define MSG_PROPERTIES_PAGES_L12_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L12_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L13_GAD; +#define MSG_PROPERTIES_PAGES_L13_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L13_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L14_GAD; +#define MSG_PROPERTIES_PAGES_L14_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L14_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L15_GAD; +#define MSG_PROPERTIES_PAGES_L15_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L15_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L16_GAD; +#define MSG_PROPERTIES_PAGES_L16_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L16_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L17_GAD; +#define MSG_PROPERTIES_PAGES_L17_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L17_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L18_GAD; +#define MSG_PROPERTIES_PAGES_L18_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L18_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L19_GAD; +#define MSG_PROPERTIES_PAGES_L19_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L19_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L20_GAD; +#define MSG_PROPERTIES_PAGES_L20_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L20_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L21_GAD; +#define MSG_PROPERTIES_PAGES_L21_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L21_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L22_GAD; +#define MSG_PROPERTIES_PAGES_L22_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L22_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L23_GAD; +#define MSG_PROPERTIES_PAGES_L23_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L23_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L24_GAD; +#define MSG_PROPERTIES_PAGES_L24_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L24_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L25_GAD; +#define MSG_PROPERTIES_PAGES_L25_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L25_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L26_GAD; +#define MSG_PROPERTIES_PAGES_L26_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L26_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L27_GAD; +#define MSG_PROPERTIES_PAGES_L27_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L27_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L28_GAD; +#define MSG_PROPERTIES_PAGES_L28_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L28_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L29_GAD; +#define MSG_PROPERTIES_PAGES_L29_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L29_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L30_GAD; +#define MSG_PROPERTIES_PAGES_L30_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L30_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L31_GAD; +#define MSG_PROPERTIES_PAGES_L31_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L31_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L32_GAD; +#define MSG_PROPERTIES_PAGES_L32_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L32_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L33_GAD; +#define MSG_PROPERTIES_PAGES_L33_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L33_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L34_GAD; +#define MSG_PROPERTIES_PAGES_L34_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L34_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L35_GAD; +#define MSG_PROPERTIES_PAGES_L35_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L35_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L36_GAD; +#define MSG_PROPERTIES_PAGES_L36_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L36_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L37_GAD; +#define MSG_PROPERTIES_PAGES_L37_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L37_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L38_GAD; +#define MSG_PROPERTIES_PAGES_L38_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L38_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L39_GAD; +#define MSG_PROPERTIES_PAGES_L39_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L39_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L40_GAD; +#define MSG_PROPERTIES_PAGES_L40_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L40_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L41_GAD; +#define MSG_PROPERTIES_PAGES_L41_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L41_GAD) +extern const struct FC_Type _MSG_PROPERTIES_PAGES_L42_GAD; +#define MSG_PROPERTIES_PAGES_L42_GAD ((APTR) &_MSG_PROPERTIES_PAGES_L42_GAD) +extern const struct FC_Type _MSG_Edit_WND; +#define MSG_Edit_WND ((APTR) &_MSG_Edit_WND) +extern const struct FC_Type _MSG_Preferences_WND; +#define MSG_Preferences_WND ((APTR) &_MSG_Preferences_WND) +extern const struct FC_Type _MSG_PREFS_SAVE_GAD; +#define MSG_PREFS_SAVE_GAD ((APTR) &_MSG_PREFS_SAVE_GAD) +extern const struct FC_Type _MSG_PREFS_USE_GAD; +#define MSG_PREFS_USE_GAD ((APTR) &_MSG_PREFS_USE_GAD) +extern const struct FC_Type _MSG_PREFS_CANCEL_GAD; +#define MSG_PREFS_CANCEL_GAD ((APTR) &_MSG_PREFS_CANCEL_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD; +#define MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_AUTOBACKUP_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD; +#define MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_SIZEZOOM_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD; +#define MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_FASTREDRAW_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_GETSCREEN_GAD; +#define MSG_PG_PREFS_GENERAL_GETSCREEN_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_GETSCREEN_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_SCREENMODE_GAD; +#define MSG_PG_PREFS_GENERAL_SCREENMODE_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_SCREENMODE_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GEN_LIST_GAD; +#define MSG_PG_PREFS_GEN_LIST_GAD ((APTR) &_MSG_PG_PREFS_GEN_LIST_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_FONTNAME_GAD; +#define MSG_PG_PREFS_GENERAL_FONTNAME_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_FONTNAME_GAD) +extern const struct FC_Type _MSG_PG_PREFS_GENERAL_EDITFONT_GAD; +#define MSG_PG_PREFS_GENERAL_EDITFONT_GAD ((APTR) &_MSG_PG_PREFS_GENERAL_EDITFONT_GAD) +extern const struct FC_Type _MSG_Grid_WND; +#define MSG_Grid_WND ((APTR) &_MSG_Grid_WND) +extern const struct FC_Type _MSG_GRID_X_GAD; +#define MSG_GRID_X_GAD ((APTR) &_MSG_GRID_X_GAD) +extern const struct FC_Type _MSG_GRID_Y_GAD; +#define MSG_GRID_Y_GAD ((APTR) &_MSG_GRID_Y_GAD) +extern const struct FC_Type _MSG_GRID_SHOW_GAD; +#define MSG_GRID_SHOW_GAD ((APTR) &_MSG_GRID_SHOW_GAD) +extern const struct FC_Type _MSG_GRID_SNAP_GAD; +#define MSG_GRID_SNAP_GAD ((APTR) &_MSG_GRID_SNAP_GAD) +extern const struct FC_Type _MSG_GRID_OK_GAD; +#define MSG_GRID_OK_GAD ((APTR) &_MSG_GRID_OK_GAD) +extern const struct FC_Type _MSG_GRID_CANCEL_GAD; +#define MSG_GRID_CANCEL_GAD ((APTR) &_MSG_GRID_CANCEL_GAD) +extern const struct FC_Type _MSG_PGWN_LABEL_GAD; +#define MSG_PGWN_LABEL_GAD ((APTR) &_MSG_PGWN_LABEL_GAD) +extern const struct FC_Type _MSG_PGWN_X_GAD; +#define MSG_PGWN_X_GAD ((APTR) &_MSG_PGWN_X_GAD) +extern const struct FC_Type _MSG_PGWN_Y_GAD; +#define MSG_PGWN_Y_GAD ((APTR) &_MSG_PGWN_Y_GAD) +extern const struct FC_Type _MSG_PGWN_WIDTH_GAD; +#define MSG_PGWN_WIDTH_GAD ((APTR) &_MSG_PGWN_WIDTH_GAD) +extern const struct FC_Type _MSG_PGWN_HEIGHT_GAD; +#define MSG_PGWN_HEIGHT_GAD ((APTR) &_MSG_PGWN_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGWN_INNERHEIGHT_GAD; +#define MSG_PGWN_INNERHEIGHT_GAD ((APTR) &_MSG_PGWN_INNERHEIGHT_GAD) +extern const struct FC_Type _MSG_PGWN_INNERWIDTH_GAD; +#define MSG_PGWN_INNERWIDTH_GAD ((APTR) &_MSG_PGWN_INNERWIDTH_GAD) +extern const struct FC_Type _MSG_PGWN_REL_H_GAD; +#define MSG_PGWN_REL_H_GAD ((APTR) &_MSG_PGWN_REL_H_GAD) +extern const struct FC_Type _MSG_PGWN_REL_H_L0_GAD; +#define MSG_PGWN_REL_H_L0_GAD ((APTR) &_MSG_PGWN_REL_H_L0_GAD) +extern const struct FC_Type _MSG_PGWN_REL_H_L1_GAD; +#define MSG_PGWN_REL_H_L1_GAD ((APTR) &_MSG_PGWN_REL_H_L1_GAD) +extern const struct FC_Type _MSG_PGWN_REL_W_GAD; +#define MSG_PGWN_REL_W_GAD ((APTR) &_MSG_PGWN_REL_W_GAD) +extern const struct FC_Type _MSG_PGWN_REL_W_L0_GAD; +#define MSG_PGWN_REL_W_L0_GAD ((APTR) &_MSG_PGWN_REL_W_L0_GAD) +extern const struct FC_Type _MSG_PGWN_REL_W_L1_GAD; +#define MSG_PGWN_REL_W_L1_GAD ((APTR) &_MSG_PGWN_REL_W_L1_GAD) +extern const struct FC_Type _MSG_PGWN_REL_Y_GAD; +#define MSG_PGWN_REL_Y_GAD ((APTR) &_MSG_PGWN_REL_Y_GAD) +extern const struct FC_Type _MSG_PGWN_REL_Y_L0_GAD; +#define MSG_PGWN_REL_Y_L0_GAD ((APTR) &_MSG_PGWN_REL_Y_L0_GAD) +extern const struct FC_Type _MSG_PGWN_REL_Y_L1_GAD; +#define MSG_PGWN_REL_Y_L1_GAD ((APTR) &_MSG_PGWN_REL_Y_L1_GAD) +extern const struct FC_Type _MSG_PGWN_REL_Y_L2_GAD; +#define MSG_PGWN_REL_Y_L2_GAD ((APTR) &_MSG_PGWN_REL_Y_L2_GAD) +extern const struct FC_Type _MSG_PGWN_REL_X_GAD; +#define MSG_PGWN_REL_X_GAD ((APTR) &_MSG_PGWN_REL_X_GAD) +extern const struct FC_Type _MSG_PGWN_REL_X_L0_GAD; +#define MSG_PGWN_REL_X_L0_GAD ((APTR) &_MSG_PGWN_REL_X_L0_GAD) +extern const struct FC_Type _MSG_PGWN_REL_X_L1_GAD; +#define MSG_PGWN_REL_X_L1_GAD ((APTR) &_MSG_PGWN_REL_X_L1_GAD) +extern const struct FC_Type _MSG_PGWN_REL_X_L2_GAD; +#define MSG_PGWN_REL_X_L2_GAD ((APTR) &_MSG_PGWN_REL_X_L2_GAD) +extern const struct FC_Type _MSG_PGWN_SCREEN_TITLE_GAD; +#define MSG_PGWN_SCREEN_TITLE_GAD ((APTR) &_MSG_PGWN_SCREEN_TITLE_GAD) +extern const struct FC_Type _MSG_PGWN_WINDOW_TITLE_GAD; +#define MSG_PGWN_WINDOW_TITLE_GAD ((APTR) &_MSG_PGWN_WINDOW_TITLE_GAD) +extern const struct FC_Type _MSG_PGWN_PAGED_GAD; +#define MSG_PGWN_PAGED_GAD ((APTR) &_MSG_PGWN_PAGED_GAD) +extern const struct FC_Type _MSG_PGWN_FONTADAPTIVE_GAD; +#define MSG_PGWN_FONTADAPTIVE_GAD ((APTR) &_MSG_PGWN_FONTADAPTIVE_GAD) +extern const struct FC_Type _MSG_PGWN_APPWINDOW_GAD; +#define MSG_PGWN_APPWINDOW_GAD ((APTR) &_MSG_PGWN_APPWINDOW_GAD) +extern const struct FC_Type _MSG_PGWN_PROJECT_GAD; +#define MSG_PGWN_PROJECT_GAD ((APTR) &_MSG_PGWN_PROJECT_GAD) +extern const struct FC_Type _MSG_PGWN_MENU_GET_GAD; +#define MSG_PGWN_MENU_GET_GAD ((APTR) &_MSG_PGWN_MENU_GET_GAD) +extern const struct FC_Type _MSG_PGWN_MENU_GAD; +#define MSG_PGWN_MENU_GAD ((APTR) &_MSG_PGWN_MENU_GAD) +extern const struct FC_Type _MSG_PGWN_ZOOM_GAD; +#define MSG_PGWN_ZOOM_GAD ((APTR) &_MSG_PGWN_ZOOM_GAD) +extern const struct FC_Type _MSG_PGWN_BACKDROP_GAD; +#define MSG_PGWN_BACKDROP_GAD ((APTR) &_MSG_PGWN_BACKDROP_GAD) +extern const struct FC_Type _MSG_PGWN_BORDERLESS_GAD; +#define MSG_PGWN_BORDERLESS_GAD ((APTR) &_MSG_PGWN_BORDERLESS_GAD) +extern const struct FC_Type _MSG_PGWN_SIZEBBOTTOM_GAD; +#define MSG_PGWN_SIZEBBOTTOM_GAD ((APTR) &_MSG_PGWN_SIZEBBOTTOM_GAD) +extern const struct FC_Type _MSG_PGWN_SIZEBRIGHT_GAD; +#define MSG_PGWN_SIZEBRIGHT_GAD ((APTR) &_MSG_PGWN_SIZEBRIGHT_GAD) +extern const struct FC_Type _MSG_PGWN_CLOSEGADGET_GAD; +#define MSG_PGWN_CLOSEGADGET_GAD ((APTR) &_MSG_PGWN_CLOSEGADGET_GAD) +extern const struct FC_Type _MSG_PGWN_DEPTHGADGET_GAD; +#define MSG_PGWN_DEPTHGADGET_GAD ((APTR) &_MSG_PGWN_DEPTHGADGET_GAD) +extern const struct FC_Type _MSG_PGWN_SIZEGADGET_GAD; +#define MSG_PGWN_SIZEGADGET_GAD ((APTR) &_MSG_PGWN_SIZEGADGET_GAD) +extern const struct FC_Type _MSG_PGWN_DRAGGADGET_GAD; +#define MSG_PGWN_DRAGGADGET_GAD ((APTR) &_MSG_PGWN_DRAGGADGET_GAD) +extern const struct FC_Type _MSG_PGWN_DRAGGADGET_L0_GAD; +#define MSG_PGWN_DRAGGADGET_L0_GAD ((APTR) &_MSG_PGWN_DRAGGADGET_L0_GAD) +extern const struct FC_Type _MSG_PGWN_DRAGGADGET_L1_GAD; +#define MSG_PGWN_DRAGGADGET_L1_GAD ((APTR) &_MSG_PGWN_DRAGGADGET_L1_GAD) +extern const struct FC_Type _MSG_PGWN_DRAGGADGET_L2_GAD; +#define MSG_PGWN_DRAGGADGET_L2_GAD ((APTR) &_MSG_PGWN_DRAGGADGET_L2_GAD) +extern const struct FC_Type _MSG_PGWN_DRAGGADGET_L3_GAD; +#define MSG_PGWN_DRAGGADGET_L3_GAD ((APTR) &_MSG_PGWN_DRAGGADGET_L3_GAD) +extern const struct FC_Type _MSG_PGWN_FALLBACK_GAD; +#define MSG_PGWN_FALLBACK_GAD ((APTR) &_MSG_PGWN_FALLBACK_GAD) +extern const struct FC_Type _MSG_PGWN_REPORTMOUSE_GAD; +#define MSG_PGWN_REPORTMOUSE_GAD ((APTR) &_MSG_PGWN_REPORTMOUSE_GAD) +extern const struct FC_Type _MSG_PGWN_AUTOADJUST_GAD; +#define MSG_PGWN_AUTOADJUST_GAD ((APTR) &_MSG_PGWN_AUTOADJUST_GAD) +extern const struct FC_Type _MSG_PGWN_ACTIVATE_GAD; +#define MSG_PGWN_ACTIVATE_GAD ((APTR) &_MSG_PGWN_ACTIVATE_GAD) +extern const struct FC_Type _MSG_PGWN_RMBTRAP_GAD; +#define MSG_PGWN_RMBTRAP_GAD ((APTR) &_MSG_PGWN_RMBTRAP_GAD) +extern const struct FC_Type _MSG_PGWN_NEWLOOKMENUS_GAD; +#define MSG_PGWN_NEWLOOKMENUS_GAD ((APTR) &_MSG_PGWN_NEWLOOKMENUS_GAD) +extern const struct FC_Type _MSG_PGWN_NOCAREREFRESH_GAD; +#define MSG_PGWN_NOCAREREFRESH_GAD ((APTR) &_MSG_PGWN_NOCAREREFRESH_GAD) +extern const struct FC_Type _MSG_PGWN_GZZ_GAD; +#define MSG_PGWN_GZZ_GAD ((APTR) &_MSG_PGWN_GZZ_GAD) +extern const struct FC_Type _MSG_PGWN_REFRESH_GAD; +#define MSG_PGWN_REFRESH_GAD ((APTR) &_MSG_PGWN_REFRESH_GAD) +extern const struct FC_Type _MSG_PGWN_REFRESH_L0_GAD; +#define MSG_PGWN_REFRESH_L0_GAD ((APTR) &_MSG_PGWN_REFRESH_L0_GAD) +extern const struct FC_Type _MSG_PGWN_REFRESH_L1_GAD; +#define MSG_PGWN_REFRESH_L1_GAD ((APTR) &_MSG_PGWN_REFRESH_L1_GAD) +extern const struct FC_Type _MSG_PGWN_REFRESH_L2_GAD; +#define MSG_PGWN_REFRESH_L2_GAD ((APTR) &_MSG_PGWN_REFRESH_L2_GAD) +extern const struct FC_Type _MSG_PGWN_MOUSEQUEUE_GAD; +#define MSG_PGWN_MOUSEQUEUE_GAD ((APTR) &_MSG_PGWN_MOUSEQUEUE_GAD) +extern const struct FC_Type _MSG_PGWN_REPEATQUEUE_GAD; +#define MSG_PGWN_REPEATQUEUE_GAD ((APTR) &_MSG_PGWN_REPEATQUEUE_GAD) +extern const struct FC_Type _MSG_PGWN_IDCMP_GAD; +#define MSG_PGWN_IDCMP_GAD ((APTR) &_MSG_PGWN_IDCMP_GAD) +extern const struct FC_Type _MSG_PGWN_REPEATQUEUE_SET_GAD; +#define MSG_PGWN_REPEATQUEUE_SET_GAD ((APTR) &_MSG_PGWN_REPEATQUEUE_SET_GAD) +extern const struct FC_Type _MSG_PGWN_MOUSEQUEUE_SET_GAD; +#define MSG_PGWN_MOUSEQUEUE_SET_GAD ((APTR) &_MSG_PGWN_MOUSEQUEUE_SET_GAD) +extern const struct FC_Type _MSG_PGWN_NOTIFYDEPTH_GAD; +#define MSG_PGWN_NOTIFYDEPTH_GAD ((APTR) &_MSG_PGWN_NOTIFYDEPTH_GAD) +extern const struct FC_Type _MSG_PGWN_MENUHELP_GAD; +#define MSG_PGWN_MENUHELP_GAD ((APTR) &_MSG_PGWN_MENUHELP_GAD) +extern const struct FC_Type _MSG_PGWN_POINTERDELAY_GAD; +#define MSG_PGWN_POINTERDELAY_GAD ((APTR) &_MSG_PGWN_POINTERDELAY_GAD) +extern const struct FC_Type _MSG_WN_IDCMPFlags_WND; +#define MSG_WN_IDCMPFlags_WND ((APTR) &_MSG_WN_IDCMPFlags_WND) +extern const struct FC_Type _MSG_IDCMP_CANCEL_GAD; +#define MSG_IDCMP_CANCEL_GAD ((APTR) &_MSG_IDCMP_CANCEL_GAD) +extern const struct FC_Type _MSG_IDCMP_OK_GAD; +#define MSG_IDCMP_OK_GAD ((APTR) &_MSG_IDCMP_OK_GAD) +extern const struct FC_Type _MSG_IDCMP_MENUPICK_GAD; +#define MSG_IDCMP_MENUPICK_GAD ((APTR) &_MSG_IDCMP_MENUPICK_GAD) +extern const struct FC_Type _MSG_IDCMP_GADGETHELP_GAD; +#define MSG_IDCMP_GADGETHELP_GAD ((APTR) &_MSG_IDCMP_GADGETHELP_GAD) +extern const struct FC_Type _MSG_IDCMP_MENUHELP_GAD; +#define MSG_IDCMP_MENUHELP_GAD ((APTR) &_MSG_IDCMP_MENUHELP_GAD) +extern const struct FC_Type _MSG_IDCMP_IDCMPUPDATE_GAD; +#define MSG_IDCMP_IDCMPUPDATE_GAD ((APTR) &_MSG_IDCMP_IDCMPUPDATE_GAD) +extern const struct FC_Type _MSG_IDCMP_DISKINSERTED_GAD; +#define MSG_IDCMP_DISKINSERTED_GAD ((APTR) &_MSG_IDCMP_DISKINSERTED_GAD) +extern const struct FC_Type _MSG_IDCMP_DISKREMOVED_GAD; +#define MSG_IDCMP_DISKREMOVED_GAD ((APTR) &_MSG_IDCMP_DISKREMOVED_GAD) +extern const struct FC_Type _MSG_IDCMP_INACTIVEWINDOW_GAD; +#define MSG_IDCMP_INACTIVEWINDOW_GAD ((APTR) &_MSG_IDCMP_INACTIVEWINDOW_GAD) +extern const struct FC_Type _MSG_IDCMP_ACTIVEWINDOW_GAD; +#define MSG_IDCMP_ACTIVEWINDOW_GAD ((APTR) &_MSG_IDCMP_ACTIVEWINDOW_GAD) +extern const struct FC_Type _MSG_IDCMP_INTUITICKS_GAD; +#define MSG_IDCMP_INTUITICKS_GAD ((APTR) &_MSG_IDCMP_INTUITICKS_GAD) +extern const struct FC_Type _MSG_IDCMP_CLOSEWINDOW_GAD; +#define MSG_IDCMP_CLOSEWINDOW_GAD ((APTR) &_MSG_IDCMP_CLOSEWINDOW_GAD) +extern const struct FC_Type _MSG_IDCMP_VANILLAKEY_GAD; +#define MSG_IDCMP_VANILLAKEY_GAD ((APTR) &_MSG_IDCMP_VANILLAKEY_GAD) +extern const struct FC_Type _MSG_IDCMP_RAWKEY_GAD; +#define MSG_IDCMP_RAWKEY_GAD ((APTR) &_MSG_IDCMP_RAWKEY_GAD) +extern const struct FC_Type _MSG_IDCMP_GADGETDOWN_GAD; +#define MSG_IDCMP_GADGETDOWN_GAD ((APTR) &_MSG_IDCMP_GADGETDOWN_GAD) +extern const struct FC_Type _MSG_IDCMP_GADGETUP_GAD; +#define MSG_IDCMP_GADGETUP_GAD ((APTR) &_MSG_IDCMP_GADGETUP_GAD) +extern const struct FC_Type _MSG_IDCMP_MOUSEBUTTONS_GAD; +#define MSG_IDCMP_MOUSEBUTTONS_GAD ((APTR) &_MSG_IDCMP_MOUSEBUTTONS_GAD) +extern const struct FC_Type _MSG_IDCMP_NEWPREFS_GAD; +#define MSG_IDCMP_NEWPREFS_GAD ((APTR) &_MSG_IDCMP_NEWPREFS_GAD) +extern const struct FC_Type _MSG_IDCMP_CHANGEWINDOW_GAD; +#define MSG_IDCMP_CHANGEWINDOW_GAD ((APTR) &_MSG_IDCMP_CHANGEWINDOW_GAD) +extern const struct FC_Type _MSG_IDCMP_REFRESHWINDOW_GAD; +#define MSG_IDCMP_REFRESHWINDOW_GAD ((APTR) &_MSG_IDCMP_REFRESHWINDOW_GAD) +extern const struct FC_Type _MSG_IDCMP_NEWSIZE_GAD; +#define MSG_IDCMP_NEWSIZE_GAD ((APTR) &_MSG_IDCMP_NEWSIZE_GAD) +extern const struct FC_Type _MSG_IDCMP_REQCLEAR_GAD; +#define MSG_IDCMP_REQCLEAR_GAD ((APTR) &_MSG_IDCMP_REQCLEAR_GAD) +extern const struct FC_Type _MSG_IDCMP_REQSET_GAD; +#define MSG_IDCMP_REQSET_GAD ((APTR) &_MSG_IDCMP_REQSET_GAD) +extern const struct FC_Type _MSG_IDCMP_REQVERIFY_GAD; +#define MSG_IDCMP_REQVERIFY_GAD ((APTR) &_MSG_IDCMP_REQVERIFY_GAD) +extern const struct FC_Type _MSG_IDCMP_SIZEVERIFY_GAD; +#define MSG_IDCMP_SIZEVERIFY_GAD ((APTR) &_MSG_IDCMP_SIZEVERIFY_GAD) +extern const struct FC_Type _MSG_IDCMP_MENUVERIFY_GAD; +#define MSG_IDCMP_MENUVERIFY_GAD ((APTR) &_MSG_IDCMP_MENUVERIFY_GAD) +extern const struct FC_Type _MSG_IDCMP_MOUSEMOVE_GAD; +#define MSG_IDCMP_MOUSEMOVE_GAD ((APTR) &_MSG_IDCMP_MOUSEMOVE_GAD) +extern const struct FC_Type _MSG_IDCMP_DELTAMOVE_GAD; +#define MSG_IDCMP_DELTAMOVE_GAD ((APTR) &_MSG_IDCMP_DELTAMOVE_GAD) +extern const struct FC_Type _MSG_PGMN_LABEL_GAD; +#define MSG_PGMN_LABEL_GAD ((APTR) &_MSG_PGMN_LABEL_GAD) +extern const struct FC_Type _MSG_PGMN_NEWLOOK_GAD; +#define MSG_PGMN_NEWLOOK_GAD ((APTR) &_MSG_PGMN_NEWLOOK_GAD) +extern const struct FC_Type _MSG_Working_WND; +#define MSG_Working_WND ((APTR) &_MSG_Working_WND) +extern const struct FC_Type _MSG_WORK_PROGRESS_FORMAT_GAD; +#define MSG_WORK_PROGRESS_FORMAT_GAD ((APTR) &_MSG_WORK_PROGRESS_FORMAT_GAD) +extern const struct FC_Type _MSG_PGFR_X_GAD; +#define MSG_PGFR_X_GAD ((APTR) &_MSG_PGFR_X_GAD) +extern const struct FC_Type _MSG_PGFR_Y_GAD; +#define MSG_PGFR_Y_GAD ((APTR) &_MSG_PGFR_Y_GAD) +extern const struct FC_Type _MSG_PGFR_WIDTH_GAD; +#define MSG_PGFR_WIDTH_GAD ((APTR) &_MSG_PGFR_WIDTH_GAD) +extern const struct FC_Type _MSG_PGFR_HEIGHT_GAD; +#define MSG_PGFR_HEIGHT_GAD ((APTR) &_MSG_PGFR_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_GAD; +#define MSG_PGFR_FRAME_GAD ((APTR) &_MSG_PGFR_FRAME_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_L0_GAD; +#define MSG_PGFR_FRAME_L0_GAD ((APTR) &_MSG_PGFR_FRAME_L0_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_L1_GAD; +#define MSG_PGFR_FRAME_L1_GAD ((APTR) &_MSG_PGFR_FRAME_L1_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_L2_GAD; +#define MSG_PGFR_FRAME_L2_GAD ((APTR) &_MSG_PGFR_FRAME_L2_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_L3_GAD; +#define MSG_PGFR_FRAME_L3_GAD ((APTR) &_MSG_PGFR_FRAME_L3_GAD) +extern const struct FC_Type _MSG_PGFR_FRAME_L4_GAD; +#define MSG_PGFR_FRAME_L4_GAD ((APTR) &_MSG_PGFR_FRAME_L4_GAD) +extern const struct FC_Type _MSG_PGFR_RECESSED_GAD; +#define MSG_PGFR_RECESSED_GAD ((APTR) &_MSG_PGFR_RECESSED_GAD) +extern const struct FC_Type _MSG_EditMenu_WND; +#define MSG_EditMenu_WND ((APTR) &_MSG_EditMenu_WND) +extern const struct FC_Type _MSG_EditImage_WND; +#define MSG_EditImage_WND ((APTR) &_MSG_EditImage_WND) +extern const struct FC_Type _MSG_List_WND; +#define MSG_List_WND ((APTR) &_MSG_List_WND) +extern const struct FC_Type _MSG_LIST_GAD; +#define MSG_LIST_GAD ((APTR) &_MSG_LIST_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_LABEL_GAD; +#define MSG_PGMN_ITEM_LABEL_GAD ((APTR) &_MSG_PGMN_ITEM_LABEL_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_TITLE_GAD; +#define MSG_PGMN_ITEM_TITLE_GAD ((APTR) &_MSG_PGMN_ITEM_TITLE_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_COMMKEY_GAD; +#define MSG_PGMN_ITEM_COMMKEY_GAD ((APTR) &_MSG_PGMN_ITEM_COMMKEY_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_POPUP_GAD; +#define MSG_PGMN_ITEM_POPUP_GAD ((APTR) &_MSG_PGMN_ITEM_POPUP_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_BARLABEL_GAD; +#define MSG_PGMN_ITEM_BARLABEL_GAD ((APTR) &_MSG_PGMN_ITEM_BARLABEL_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_DISABLED_GAD; +#define MSG_PGMN_ITEM_DISABLED_GAD ((APTR) &_MSG_PGMN_ITEM_DISABLED_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_CHECKED_GAD; +#define MSG_PGMN_ITEM_CHECKED_GAD ((APTR) &_MSG_PGMN_ITEM_CHECKED_GAD) +extern const struct FC_Type _MSG_PGMN_ITEM_TOGGLE_GAD; +#define MSG_PGMN_ITEM_TOGGLE_GAD ((APTR) &_MSG_PGMN_ITEM_TOGGLE_GAD) +extern const struct FC_Type _MSG_PGPI_LABEL_GAD; +#define MSG_PGPI_LABEL_GAD ((APTR) &_MSG_PGPI_LABEL_GAD) +extern const struct FC_Type _MSG_PGPI_WIDTH_GAD; +#define MSG_PGPI_WIDTH_GAD ((APTR) &_MSG_PGPI_WIDTH_GAD) +extern const struct FC_Type _MSG_PGPI_HEIGHT_GAD; +#define MSG_PGPI_HEIGHT_GAD ((APTR) &_MSG_PGPI_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGPI_DEPTH_GAD; +#define MSG_PGPI_DEPTH_GAD ((APTR) &_MSG_PGPI_DEPTH_GAD) +extern const struct FC_Type _MSG_PGPI_TYPE_GAD; +#define MSG_PGPI_TYPE_GAD ((APTR) &_MSG_PGPI_TYPE_GAD) +extern const struct FC_Type _MSG_PGPI_TYPE_L0_GAD; +#define MSG_PGPI_TYPE_L0_GAD ((APTR) &_MSG_PGPI_TYPE_L0_GAD) +extern const struct FC_Type _MSG_PGPI_TYPE_L1_GAD; +#define MSG_PGPI_TYPE_L1_GAD ((APTR) &_MSG_PGPI_TYPE_L1_GAD) +extern const struct FC_Type _MSG_PGPI_TYPE_L2_GAD; +#define MSG_PGPI_TYPE_L2_GAD ((APTR) &_MSG_PGPI_TYPE_L2_GAD) +extern const struct FC_Type _MSG_PGPI_SETPOINT_GAD; +#define MSG_PGPI_SETPOINT_GAD ((APTR) &_MSG_PGPI_SETPOINT_GAD) +extern const struct FC_Type _MSG_PGPI_PALETTE_GAD; +#define MSG_PGPI_PALETTE_GAD ((APTR) &_MSG_PGPI_PALETTE_GAD) +extern const struct FC_Type _MSG_TBP_PALETTE_GAD; +#define MSG_TBP_PALETTE_GAD ((APTR) &_MSG_TBP_PALETTE_GAD) +extern const struct FC_Type _MSG_Screen_WND; +#define MSG_Screen_WND ((APTR) &_MSG_Screen_WND) +extern const struct FC_Type _MSG_SCREEN_PAGES_L0_GAD; +#define MSG_SCREEN_PAGES_L0_GAD ((APTR) &_MSG_SCREEN_PAGES_L0_GAD) +extern const struct FC_Type _MSG_SCREEN_PAGES_L1_GAD; +#define MSG_SCREEN_PAGES_L1_GAD ((APTR) &_MSG_SCREEN_PAGES_L1_GAD) +extern const struct FC_Type _MSG_PGSCR_WIDTH_GAD; +#define MSG_PGSCR_WIDTH_GAD ((APTR) &_MSG_PGSCR_WIDTH_GAD) +extern const struct FC_Type _MSG_PGSCR_HEIGHT_GAD; +#define MSG_PGSCR_HEIGHT_GAD ((APTR) &_MSG_PGSCR_HEIGHT_GAD) +extern const struct FC_Type _MSG_PGSCR_DEPTH_GAD; +#define MSG_PGSCR_DEPTH_GAD ((APTR) &_MSG_PGSCR_DEPTH_GAD) +extern const struct FC_Type _MSG_PGSCR_TITLE_GAD; +#define MSG_PGSCR_TITLE_GAD ((APTR) &_MSG_PGSCR_TITLE_GAD) +extern const struct FC_Type _MSG_PGSCR_PUBNAME_GAD; +#define MSG_PGSCR_PUBNAME_GAD ((APTR) &_MSG_PGSCR_PUBNAME_GAD) +extern const struct FC_Type _MSG_PGSCR_USE_GAD; +#define MSG_PGSCR_USE_GAD ((APTR) &_MSG_PGSCR_USE_GAD) +extern const struct FC_Type _MSG_PGSCR_USE_L0_GAD; +#define MSG_PGSCR_USE_L0_GAD ((APTR) &_MSG_PGSCR_USE_L0_GAD) +extern const struct FC_Type _MSG_PGSCR_USE_L1_GAD; +#define MSG_PGSCR_USE_L1_GAD ((APTR) &_MSG_PGSCR_USE_L1_GAD) +extern const struct FC_Type _MSG_PGSCR_USE_L2_GAD; +#define MSG_PGSCR_USE_L2_GAD ((APTR) &_MSG_PGSCR_USE_L2_GAD) +extern const struct FC_Type _MSG_PGSCR_MAKEPUBLIC_GAD; +#define MSG_PGSCR_MAKEPUBLIC_GAD ((APTR) &_MSG_PGSCR_MAKEPUBLIC_GAD) +extern const struct FC_Type _MSG_PGSCR_MODEID_GAD; +#define MSG_PGSCR_MODEID_GAD ((APTR) &_MSG_PGSCR_MODEID_GAD) +extern const struct FC_Type _MSG_PGSCR_MODEID_GET_GAD; +#define MSG_PGSCR_MODEID_GET_GAD ((APTR) &_MSG_PGSCR_MODEID_GET_GAD) +extern const struct FC_Type _MSG_PGSCR_DEFAULTID_GAD; +#define MSG_PGSCR_DEFAULTID_GAD ((APTR) &_MSG_PGSCR_DEFAULTID_GAD) +extern const struct FC_Type _MSG_PGSCR_SHOWTITLE_GAD; +#define MSG_PGSCR_SHOWTITLE_GAD ((APTR) &_MSG_PGSCR_SHOWTITLE_GAD) +extern const struct FC_Type _MSG_PGSCR_BEHIND_GAD; +#define MSG_PGSCR_BEHIND_GAD ((APTR) &_MSG_PGSCR_BEHIND_GAD) +extern const struct FC_Type _MSG_PGSCR_QUIET_GAD; +#define MSG_PGSCR_QUIET_GAD ((APTR) &_MSG_PGSCR_QUIET_GAD) +extern const struct FC_Type _MSG_PGSCR_AUTOSCROLL_GAD; +#define MSG_PGSCR_AUTOSCROLL_GAD ((APTR) &_MSG_PGSCR_AUTOSCROLL_GAD) +extern const struct FC_Type _MSG_PGSCR_FULLPALETTE_GAD; +#define MSG_PGSCR_FULLPALETTE_GAD ((APTR) &_MSG_PGSCR_FULLPALETTE_GAD) +extern const struct FC_Type _MSG_PGSCR_DRAGGABLE_GAD; +#define MSG_PGSCR_DRAGGABLE_GAD ((APTR) &_MSG_PGSCR_DRAGGABLE_GAD) +extern const struct FC_Type _MSG_PGSCR_EXCLUSIVE_GAD; +#define MSG_PGSCR_EXCLUSIVE_GAD ((APTR) &_MSG_PGSCR_EXCLUSIVE_GAD) +extern const struct FC_Type _MSG_PGSCR_SHAREPENS_GAD; +#define MSG_PGSCR_SHAREPENS_GAD ((APTR) &_MSG_PGSCR_SHAREPENS_GAD) +extern const struct FC_Type _MSG_PGSCR_INTERLEAVED_GAD; +#define MSG_PGSCR_INTERLEAVED_GAD ((APTR) &_MSG_PGSCR_INTERLEAVED_GAD) +extern const struct FC_Type _MSG_PGSCR_LIKEWORKBENCH_GAD; +#define MSG_PGSCR_LIKEWORKBENCH_GAD ((APTR) &_MSG_PGSCR_LIKEWORKBENCH_GAD) +extern const struct FC_Type _MSG_PGSCR_MINIMIZEISG_GAD; +#define MSG_PGSCR_MINIMIZEISG_GAD ((APTR) &_MSG_PGSCR_MINIMIZEISG_GAD) +extern const struct FC_Type _MSG_EditString_WND; +#define MSG_EditString_WND ((APTR) &_MSG_EditString_WND) +extern const struct FC_Type _MSG_PGSTR_STRINGS_FORMAT_GAD; +#define MSG_PGSTR_STRINGS_FORMAT_GAD ((APTR) &_MSG_PGSTR_STRINGS_FORMAT_GAD) +extern const struct FC_Type _MSG_PGSTR_ADD_GAD; +#define MSG_PGSTR_ADD_GAD ((APTR) &_MSG_PGSTR_ADD_GAD) +extern const struct FC_Type _MSG_PGSTR_DELETE_GAD; +#define MSG_PGSTR_DELETE_GAD ((APTR) &_MSG_PGSTR_DELETE_GAD) +extern const struct FC_Type _MSG_PGSTR_EDIT_GAD; +#define MSG_PGSTR_EDIT_GAD ((APTR) &_MSG_PGSTR_EDIT_GAD) +extern const struct FC_Type _MSG_PGSTR_LABEL_GAD; +#define MSG_PGSTR_LABEL_GAD ((APTR) &_MSG_PGSTR_LABEL_GAD) +extern const struct FC_Type _MSG_PGSTR_STRING_GAD; +#define MSG_PGSTR_STRING_GAD ((APTR) &_MSG_PGSTR_STRING_GAD) +extern const struct FC_Type _MSG_EditVersion_WND; +#define MSG_EditVersion_WND ((APTR) &_MSG_EditVersion_WND) +extern const struct FC_Type _MSG_PGVER_PROGRAMNAME_GAD; +#define MSG_PGVER_PROGRAMNAME_GAD ((APTR) &_MSG_PGVER_PROGRAMNAME_GAD) +extern const struct FC_Type _MSG_PGVER_AUTHOR_GAD; +#define MSG_PGVER_AUTHOR_GAD ((APTR) &_MSG_PGVER_AUTHOR_GAD) +extern const struct FC_Type _MSG_PGVER_VERSION_GAD; +#define MSG_PGVER_VERSION_GAD ((APTR) &_MSG_PGVER_VERSION_GAD) +extern const struct FC_Type _MSG_PGVER_DATE_GAD; +#define MSG_PGVER_DATE_GAD ((APTR) &_MSG_PGVER_DATE_GAD) +extern const struct FC_Type _MSG_PGVER_REVISION_GAD; +#define MSG_PGVER_REVISION_GAD ((APTR) &_MSG_PGVER_REVISION_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_COLUMNS_GAD; +#define MSG_PG_TRLV_FLAGS_COLUMNS_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_COLUMNS_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_FORMAT_GAD; +#define MSG_PG_TRLV_FLAGS_FORMAT_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_FORMAT_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_DISABLED_GAD; +#define MSG_PG_TRLV_FLAGS_DISABLED_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_DISABLED_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_MULTISELECT_GAD; +#define MSG_PG_TRLV_FLAGS_MULTISELECT_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_MULTISELECT_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_BORDER_GAD; +#define MSG_PG_TRLV_FLAGS_BORDER_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_BORDER_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_READONLY_GAD; +#define MSG_PG_TRLV_FLAGS_READONLY_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_READONLY_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD; +#define MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_SHOWTREELINES_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD; +#define MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_SHOWSELECTED_GAD) +extern const struct FC_Type _MSG_PG_TRLV_FLAGS_TREE_GAD; +#define MSG_PG_TRLV_FLAGS_TREE_GAD ((APTR) &_MSG_PG_TRLV_FLAGS_TREE_GAD) +extern const struct FC_Type _MSG_Object_WND; +#define MSG_Object_WND ((APTR) &_MSG_Object_WND) +extern const struct FC_Type _MSG_EditPalette_WND; +#define MSG_EditPalette_WND ((APTR) &_MSG_EditPalette_WND) +extern const struct FC_Type _MSG_PAL_PALETTE_GAD; +#define MSG_PAL_PALETTE_GAD ((APTR) &_MSG_PAL_PALETTE_GAD) +extern const struct FC_Type _MSG_PAL_GREEN_GAD; +#define MSG_PAL_GREEN_GAD ((APTR) &_MSG_PAL_GREEN_GAD) +extern const struct FC_Type _MSG_PAL_GREEN_FORMAT_GAD; +#define MSG_PAL_GREEN_FORMAT_GAD ((APTR) &_MSG_PAL_GREEN_FORMAT_GAD) +extern const struct FC_Type _MSG_PAL_BLUE_GAD; +#define MSG_PAL_BLUE_GAD ((APTR) &_MSG_PAL_BLUE_GAD) +extern const struct FC_Type _MSG_PAL_BLUE_FORMAT_GAD; +#define MSG_PAL_BLUE_FORMAT_GAD ((APTR) &_MSG_PAL_BLUE_FORMAT_GAD) +extern const struct FC_Type _MSG_PAL_RED_GAD; +#define MSG_PAL_RED_GAD ((APTR) &_MSG_PAL_RED_GAD) +extern const struct FC_Type _MSG_PAL_RED_FORMAT_GAD; +#define MSG_PAL_RED_FORMAT_GAD ((APTR) &_MSG_PAL_RED_FORMAT_GAD) +extern const struct FC_Type _MSG_PAL_CANCEL_GAD; +#define MSG_PAL_CANCEL_GAD ((APTR) &_MSG_PAL_CANCEL_GAD) +extern const struct FC_Type _MSG_PAL_OK_GAD; +#define MSG_PAL_OK_GAD ((APTR) &_MSG_PAL_OK_GAD) +extern const struct FC_Type _MSG_PGWN_TABORDER_DOWN_GAD; +#define MSG_PGWN_TABORDER_DOWN_GAD ((APTR) &_MSG_PGWN_TABORDER_DOWN_GAD) +extern const struct FC_Type _MSG_PGWN_TABORDER_UP_GAD; +#define MSG_PGWN_TABORDER_UP_GAD ((APTR) &_MSG_PGWN_TABORDER_UP_GAD) +extern const struct FC_Type _MSG_PGWN_TABORDER_LIST_GAD; +#define MSG_PGWN_TABORDER_LIST_GAD ((APTR) &_MSG_PGWN_TABORDER_LIST_GAD) +extern const struct FC_Type _MSG_STATUS_CHANGED_GAD; +#define MSG_STATUS_CHANGED_GAD ((APTR) &_MSG_STATUS_CHANGED_GAD) +extern const struct FC_Type _MSG_STATUS_TEXT_GAD; +#define MSG_STATUS_TEXT_GAD ((APTR) &_MSG_STATUS_TEXT_GAD) +extern const struct FC_Type _MSG_CANTALLOCREQ; +#define MSG_CANTALLOCREQ ((APTR) &_MSG_CANTALLOCREQ) +extern const struct FC_Type _MSG_CANTALLOCOBJECT; +#define MSG_CANTALLOCOBJECT ((APTR) &_MSG_CANTALLOCOBJECT) +extern const struct FC_Type _MSG_CANTOPENTOOLBAR; +#define MSG_CANTOPENTOOLBAR ((APTR) &_MSG_CANTOPENTOOLBAR) +extern const struct FC_Type _MSG_CANTOPENOBJECTWINDOW; +#define MSG_CANTOPENOBJECTWINDOW ((APTR) &_MSG_CANTOPENOBJECTWINDOW) +extern const struct FC_Type _MSG_CANTOPENCLIPBOARD; +#define MSG_CANTOPENCLIPBOARD ((APTR) &_MSG_CANTOPENCLIPBOARD) +extern const struct FC_Type _MSG_GAD_BUTTON; +#define MSG_GAD_BUTTON ((APTR) &_MSG_GAD_BUTTON) +extern const struct FC_Type _MSG_GAD_CHECKBOX; +#define MSG_GAD_CHECKBOX ((APTR) &_MSG_GAD_CHECKBOX) +extern const struct FC_Type _MSG_GAD_COLORWHEEL; +#define MSG_GAD_COLORWHEEL ((APTR) &_MSG_GAD_COLORWHEEL) +extern const struct FC_Type _MSG_GAD_CYCLE; +#define MSG_GAD_CYCLE ((APTR) &_MSG_GAD_CYCLE) +extern const struct FC_Type _MSG_GAD_DATATYPE; +#define MSG_GAD_DATATYPE ((APTR) &_MSG_GAD_DATATYPE) +extern const struct FC_Type _MSG_GAD_GRADIENTSLIDER; +#define MSG_GAD_GRADIENTSLIDER ((APTR) &_MSG_GAD_GRADIENTSLIDER) +extern const struct FC_Type _MSG_GAD_INTEGER; +#define MSG_GAD_INTEGER ((APTR) &_MSG_GAD_INTEGER) +extern const struct FC_Type _MSG_GAD_LISTVIEW; +#define MSG_GAD_LISTVIEW ((APTR) &_MSG_GAD_LISTVIEW) +extern const struct FC_Type _MSG_GAD_MX; +#define MSG_GAD_MX ((APTR) &_MSG_GAD_MX) +extern const struct FC_Type _MSG_GAD_NUMBER; +#define MSG_GAD_NUMBER ((APTR) &_MSG_GAD_NUMBER) +extern const struct FC_Type _MSG_GAD_PAGE; +#define MSG_GAD_PAGE ((APTR) &_MSG_GAD_PAGE) +extern const struct FC_Type _MSG_GAD_PALETTE; +#define MSG_GAD_PALETTE ((APTR) &_MSG_GAD_PALETTE) +extern const struct FC_Type _MSG_GAD_POPUPMENU; +#define MSG_GAD_POPUPMENU ((APTR) &_MSG_GAD_POPUPMENU) +extern const struct FC_Type _MSG_GAD_PROGRESS; +#define MSG_GAD_PROGRESS ((APTR) &_MSG_GAD_PROGRESS) +extern const struct FC_Type _MSG_GAD_SCROLLER; +#define MSG_GAD_SCROLLER ((APTR) &_MSG_GAD_SCROLLER) +extern const struct FC_Type _MSG_GAD_SLIDER; +#define MSG_GAD_SLIDER ((APTR) &_MSG_GAD_SLIDER) +extern const struct FC_Type _MSG_GAD_STRING; +#define MSG_GAD_STRING ((APTR) &_MSG_GAD_STRING) +extern const struct FC_Type _MSG_GAD_TAPEDECK; +#define MSG_GAD_TAPEDECK ((APTR) &_MSG_GAD_TAPEDECK) +extern const struct FC_Type _MSG_GAD_TEXT; +#define MSG_GAD_TEXT ((APTR) &_MSG_GAD_TEXT) +extern const struct FC_Type _MSG_GAD_TEXTFIELD; +#define MSG_GAD_TEXTFIELD ((APTR) &_MSG_GAD_TEXTFIELD) +extern const struct FC_Type _MSG_GAD_TREEVIEW; +#define MSG_GAD_TREEVIEW ((APTR) &_MSG_GAD_TREEVIEW) +extern const struct FC_Type _MSG_NEW; +#define MSG_NEW ((APTR) &_MSG_NEW) +extern const struct FC_Type _MSG_LOADING; +#define MSG_LOADING ((APTR) &_MSG_LOADING) +extern const struct FC_Type _MSG_SAVING; +#define MSG_SAVING ((APTR) &_MSG_SAVING) +extern const struct FC_Type _MSG_GENERATING; +#define MSG_GENERATING ((APTR) &_MSG_GENERATING) +extern const struct FC_Type _MSG_ABOUT; +#define MSG_ABOUT ((APTR) &_MSG_ABOUT) +extern const struct FC_Type _MSG_ERROPENLIB_GRADIENTSLIDER; +#define MSG_ERROPENLIB_GRADIENTSLIDER ((APTR) &_MSG_ERROPENLIB_GRADIENTSLIDER) +extern const struct FC_Type _MSG_NEWTITLE; +#define MSG_NEWTITLE ((APTR) &_MSG_NEWTITLE) +extern const struct FC_Type _MSG_NEWITEM; +#define MSG_NEWITEM ((APTR) &_MSG_NEWITEM) +extern const struct FC_Type _MSG_NEWSUB; +#define MSG_NEWSUB ((APTR) &_MSG_NEWSUB) +extern const struct FC_Type _MSG_CHANGEME; +#define MSG_CHANGEME ((APTR) &_MSG_CHANGEME) +extern const struct FC_Type _MSG_EDITSTR_STRING; +#define MSG_EDITSTR_STRING ((APTR) &_MSG_EDITSTR_STRING) +extern const struct FC_Type _MSG_UNNAMED; +#define MSG_UNNAMED ((APTR) &_MSG_UNNAMED) +extern const struct FC_Type _MSG_EMPTY; +#define MSG_EMPTY ((APTR) &_MSG_EMPTY) +extern const struct FC_Type _MSG_UNTITLED; +#define MSG_UNTITLED ((APTR) &_MSG_UNTITLED) +extern const struct FC_Type _MSG_UNKNOWN; +#define MSG_UNKNOWN ((APTR) &_MSG_UNKNOWN) +extern const struct FC_Type _MSG_OK; +#define MSG_OK ((APTR) &_MSG_OK) +extern const struct FC_Type _MSG_ERROR; +#define MSG_ERROR ((APTR) &_MSG_ERROR) +extern const struct FC_Type _MSG_YOUNEEDNEWERVERSION; +#define MSG_YOUNEEDNEWERVERSION ((APTR) &_MSG_YOUNEEDNEWERVERSION) +extern const struct FC_Type _MSG_ERRCREATEPROJECTPORT; +#define MSG_ERRCREATEPROJECTPORT ((APTR) &_MSG_ERRCREATEPROJECTPORT) +extern const struct FC_Type _MSG_ERRCREATEPOINTER; +#define MSG_ERRCREATEPOINTER ((APTR) &_MSG_ERRCREATEPOINTER) +extern const struct FC_Type _MSG_ERRCREATEIMAGE; +#define MSG_ERRCREATEIMAGE ((APTR) &_MSG_ERRCREATEIMAGE) +extern const struct FC_Type _MSG_PGDT_DTOBJ; +#define MSG_PGDT_DTOBJ ((APTR) &_MSG_PGDT_DTOBJ) +extern const struct FC_Type _MSG_ERROPENLIB_COLORWHEEL; +#define MSG_ERROPENLIB_COLORWHEEL ((APTR) &_MSG_ERROPENLIB_COLORWHEEL) +extern const struct FC_Type _MSG_ALIGNLEFT; +#define MSG_ALIGNLEFT ((APTR) &_MSG_ALIGNLEFT) +extern const struct FC_Type _MSG_ALIGNHCENTER; +#define MSG_ALIGNHCENTER ((APTR) &_MSG_ALIGNHCENTER) +extern const struct FC_Type _MSG_ALIGNRIGHT; +#define MSG_ALIGNRIGHT ((APTR) &_MSG_ALIGNRIGHT) +extern const struct FC_Type _MSG_ALIGNTOP; +#define MSG_ALIGNTOP ((APTR) &_MSG_ALIGNTOP) +extern const struct FC_Type _MSG_ALIGNVCENTER; +#define MSG_ALIGNVCENTER ((APTR) &_MSG_ALIGNVCENTER) +extern const struct FC_Type _MSG_ALIGNBOTTOM; +#define MSG_ALIGNBOTTOM ((APTR) &_MSG_ALIGNBOTTOM) +extern const struct FC_Type _MSG_SPREADHORIZ; +#define MSG_SPREADHORIZ ((APTR) &_MSG_SPREADHORIZ) +extern const struct FC_Type _MSG_SPREADVERT; +#define MSG_SPREADVERT ((APTR) &_MSG_SPREADVERT) +extern const struct FC_Type _MSG_FRAMEOBJECT; +#define MSG_FRAMEOBJECT ((APTR) &_MSG_FRAMEOBJECT) +extern const struct FC_Type _MSG_GADGETOBJECT; +#define MSG_GADGETOBJECT ((APTR) &_MSG_GADGETOBJECT) +extern const struct FC_Type _MSG_WINDOWOBJECT; +#define MSG_WINDOWOBJECT ((APTR) &_MSG_WINDOWOBJECT) +extern const struct FC_Type _MSG_IMAGEOBJECT; +#define MSG_IMAGEOBJECT ((APTR) &_MSG_IMAGEOBJECT) +extern const struct FC_Type _MSG_STRINGOBJECT; +#define MSG_STRINGOBJECT ((APTR) &_MSG_STRINGOBJECT) +extern const struct FC_Type _MSG_NOOBJECT; +#define MSG_NOOBJECT ((APTR) &_MSG_NOOBJECT) +extern const struct FC_Type _MSG_MENUOBJECT; +#define MSG_MENUOBJECT ((APTR) &_MSG_MENUOBJECT) +extern const struct FC_Type _MSG_CONFIRMATION; +#define MSG_CONFIRMATION ((APTR) &_MSG_CONFIRMATION) +extern const struct FC_Type _MSG_REPLACEFILE; +#define MSG_REPLACEFILE ((APTR) &_MSG_REPLACEFILE) +extern const struct FC_Type _MSG_YESNO; +#define MSG_YESNO ((APTR) &_MSG_YESNO) +extern const struct FC_Type _MSG_CANTOPENSTATUSWINDOW; +#define MSG_CANTOPENSTATUSWINDOW ((APTR) &_MSG_CANTOPENSTATUSWINDOW) +extern const struct FC_Type _MSG_CANTOPENPROPERTIESWINDOW; +#define MSG_CANTOPENPROPERTIESWINDOW ((APTR) &_MSG_CANTOPENPROPERTIESWINDOW) +extern const struct FC_Type _MSG_STATUS_RESLOADED; +#define MSG_STATUS_RESLOADED ((APTR) &_MSG_STATUS_RESLOADED) +extern const struct FC_Type _MSG_STATUS_RESSAVED; +#define MSG_STATUS_RESSAVED ((APTR) &_MSG_STATUS_RESSAVED) +extern const struct FC_Type _MSG_STATUS_MOVINGOBJECT; +#define MSG_STATUS_MOVINGOBJECT ((APTR) &_MSG_STATUS_MOVINGOBJECT) +extern const struct FC_Type _MSG_STATUS_RESIZINGOBJECT; +#define MSG_STATUS_RESIZINGOBJECT ((APTR) &_MSG_STATUS_RESIZINGOBJECT) +extern const struct FC_Type _MSG_STATUS_RESGENERATED; +#define MSG_STATUS_RESGENERATED ((APTR) &_MSG_STATUS_RESGENERATED) +extern const struct FC_Type _MSG_STATUS_CREATINGOBJECT; +#define MSG_STATUS_CREATINGOBJECT ((APTR) &_MSG_STATUS_CREATINGOBJECT) +extern const struct FC_Type _MSG_STATUS_SELECTINGOBJECTS; +#define MSG_STATUS_SELECTINGOBJECTS ((APTR) &_MSG_STATUS_SELECTINGOBJECTS) +extern const struct FC_Type _MSG_ERROPENLIB_PAGE; +#define MSG_ERROPENLIB_PAGE ((APTR) &_MSG_ERROPENLIB_PAGE) +extern const struct FC_Type _MSG_ERROPENLIB_PROGRESS; +#define MSG_ERROPENLIB_PROGRESS ((APTR) &_MSG_ERROPENLIB_PROGRESS) +extern const struct FC_Type _MSG_ERROPENLIB_TEXTFIELD; +#define MSG_ERROPENLIB_TEXTFIELD ((APTR) &_MSG_ERROPENLIB_TEXTFIELD) +extern const struct FC_Type _MSG_ERROPENLIB_TREEVIEW; +#define MSG_ERROPENLIB_TREEVIEW ((APTR) &_MSG_ERROPENLIB_TREEVIEW) +extern const struct FC_Type _MSG_ERROPENLIB_SMARTBITMAP; +#define MSG_ERROPENLIB_SMARTBITMAP ((APTR) &_MSG_ERROPENLIB_SMARTBITMAP) +extern const struct FC_Type _MSG_ERR_OPENSCREEN; +#define MSG_ERR_OPENSCREEN ((APTR) &_MSG_ERR_OPENSCREEN) +extern const struct FC_Type _MSG_ERR_VISUALINFO; +#define MSG_ERR_VISUALINFO ((APTR) &_MSG_ERR_VISUALINFO) +extern const struct FC_Type _MSG_ERR_SCRDRAWINFO; +#define MSG_ERR_SCRDRAWINFO ((APTR) &_MSG_ERR_SCRDRAWINFO) +extern const struct FC_Type _MSG_ERR_UNKNOWN; +#define MSG_ERR_UNKNOWN ((APTR) &_MSG_ERR_UNKNOWN) +extern const struct FC_Type _MSG_ERROPENLIB_TAPEDECK; +#define MSG_ERROPENLIB_TAPEDECK ((APTR) &_MSG_ERROPENLIB_TAPEDECK) +extern const struct FC_Type _MSG_CANTCREATEPOPUPMENUS; +#define MSG_CANTCREATEPOPUPMENUS ((APTR) &_MSG_CANTCREATEPOPUPMENUS) +extern const struct FC_Type _MSG_ERROPENLIB_POPUPMENU; +#define MSG_ERROPENLIB_POPUPMENU ((APTR) &_MSG_ERROPENLIB_POPUPMENU) +extern const struct FC_Type _MSG_CANTCREATEPOPUPMENUCLASS; +#define MSG_CANTCREATEPOPUPMENUCLASS ((APTR) &_MSG_CANTCREATEPOPUPMENUCLASS) +extern const struct FC_Type _MSG_CANTCREATEDRAWCLASS; +#define MSG_CANTCREATEDRAWCLASS ((APTR) &_MSG_CANTCREATEDRAWCLASS) +extern const struct FC_Type _MSG_ABOUTUNREG; +#define MSG_ABOUTUNREG ((APTR) &_MSG_ABOUTUNREG) +extern const struct FC_Type _MSG_SELECTPROJECTFILE; +#define MSG_SELECTPROJECTFILE ((APTR) &_MSG_SELECTPROJECTFILE) +extern const struct FC_Type _MSG_SAVEPROJECTAS; +#define MSG_SAVEPROJECTAS ((APTR) &_MSG_SAVEPROJECTAS) +extern const struct FC_Type _MSG_ENTERBASENAME; +#define MSG_ENTERBASENAME ((APTR) &_MSG_ENTERBASENAME) +extern const struct FC_Type _MSG_NOTSAVED; +#define MSG_NOTSAVED ((APTR) &_MSG_NOTSAVED) + + +#endif /* gadtools_cat_H */ diff --git a/GadToolsBox/gadtools_img.c b/GadToolsBox/gadtools_img.c new file mode 100755 index 0000000..64ecaf8 --- /dev/null +++ b/GadToolsBox/gadtools_img.c @@ -0,0 +1,1656 @@ +/* +** gadtools_img.c Images File +*/ + +#include +#include +#include"gadtools.h" + +#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24))) + +struct SmartBitMapIRGB ToolBarPalette[]={ + { 0,Bit32(189),Bit32(189),Bit32(189)}, // Background + {-1,Bit32( 0),Bit32( 0),Bit32( 0)}, // Black + {-1,Bit32(255),Bit32(255),Bit32(255)}, // White + {-1,Bit32(123),Bit32( 0),Bit32( 0)}, // Red 50 + {-1,Bit32( 0),Bit32(123),Bit32( 0)}, // Green 50 + {-1,Bit32( 0),Bit32( 0),Bit32(123)}, // Blue 50 + {-1,Bit32(123),Bit32(123),Bit32( 0)}, // Yellow 50 + {-1,Bit32( 0),Bit32(123),Bit32(123)}, // Cyan 50 + {-1,Bit32(123),Bit32( 0),Bit32(123)}, // Magenta 50 + {-1,Bit32(255),Bit32( 0),Bit32( 0)}, // Red 100 + {-1,Bit32( 0),Bit32(255),Bit32( 0)}, // Green 100 + {-1,Bit32( 0),Bit32( 0),Bit32(255)}, // Blue 100 + {-1,Bit32(255),Bit32(255),Bit32( 0)}, // Yellow 100 + {-1,Bit32( 0),Bit32(255),Bit32(255)}, // Cyan 100 + {-1,Bit32(255),Bit32( 0),Bit32(255)}, // Magenta 100 + {-1,Bit32(123),Bit32(123),Bit32(123)} // Dark Gray +}; + +ULONG __chip Size45UDPlanes[] = { + 0xF8000000, 0x88000000, 0x90000000, 0xA8000000, 0xD4000000, 0xA000000, 0x5000000, 0x2800000, + 0x1580000, 0xA80000, 0x480000, 0x880000, 0xF80000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF8000000, 0xF8000000, 0xF0000000, 0xF8000000, 0xDC000000, 0xE000000, 0x7000000, 0x3800000, + 0x1D80000, 0xF80000, 0x780000, 0xF80000, 0xF80000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *Size45UDPtr=NULL; +struct BitMap Size45UDBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&Size45UDPlanes[0],(PLANEPTR)&Size45UDPlanes[32]} }; + +ULONG __chip Size45DUPlanes[] = { + 0xF80000, 0x880000, 0x480000, 0xA80000, 0x1500000, 0x2800000, 0x5000000, 0xA000000, + 0xD4000000, 0xA8000000, 0x90000000, 0x88000000, 0xF8000000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF80000, 0xF80000, 0x780000, 0xF80000, 0x1D00000, 0x3800000, 0x7000000, 0xE000000, + 0xDC000000, 0xF8000000, 0xF0000000, 0xF8000000, 0xF8000000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *Size45DUPtr=NULL; +struct BitMap Size45DUBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&Size45DUPlanes[0],(PLANEPTR)&Size45DUPlanes[32]} }; + +ULONG __chip SizeVertPlanes[] = { + 0x10000000, 0x28000000, 0x44000000, 0x82000000, 0xEE000000, 0x28000000, 0x28000000, 0x28000000, + 0x28000000, 0x28000000, 0x28000000, 0xEE000000, 0x82000000, 0x44000000, 0x28000000, 0x10000000, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10000000, 0x38000000, 0x7C000000, 0xFE000000, 0xFE000000, 0x38000000, 0x38000000, 0x38000000, + 0x38000000, 0x38000000, 0x38000000, 0xFE000000, 0xFE000000, 0x7C000000, 0x38000000, 0x10000000, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *SizeVertPtr=NULL; +struct BitMap SizeVertBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&SizeVertPlanes[0],(PLANEPTR)&SizeVertPlanes[32]} }; + +ULONG __chip SizeHorizPlanes[] = { + 0x18180000, 0x28140000, 0x4FF20000, 0x80010000, 0x4FF20000, 0x28140000, 0x18180000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x18180000, 0x381C0000, 0x7FFE0000, 0xFFFF0000, 0x7FFE0000, 0x381C0000, 0x18180000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *SizeHorizPtr=NULL; +struct BitMap SizeHorizBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&SizeHorizPlanes[0],(PLANEPTR)&SizeHorizPlanes[32]} }; + +ULONG __chip MovePlanes[] = { + 0x1000000, 0x2800000, 0x4400000, 0x8200000, 0x1EF00000, 0x2AA80000, 0x4EE40000, 0x80020000, + 0x4EE40000, 0x2AA80000, 0x1EF00000, 0x8200000, 0x4400000, 0x2800000, 0x1000000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1000000, 0x3800000, 0x7C00000, 0xFE00000, 0x1FF00000, 0x3BB80000, 0x7FFC0000, 0xFFFE0000, + 0x7FFC0000, 0x3BB80000, 0x1FF00000, 0xFE00000, 0x7C00000, 0x3800000, 0x1000000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *MovePtr=NULL; +struct BitMap MoveBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&MovePlanes[0],(PLANEPTR)&MovePlanes[32]} }; + +ULONG __chip SplitHorizPlanes[] = { + 0x2000000, 0x5000000, 0x8800000, 0x10400000, 0x1DC00000, 0x5000000, 0xFFF80000, 0x0, + 0xFFF80000, 0x5000000, 0x1DC00000, 0x10400000, 0x8800000, 0x5000000, 0x2000000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x2000000, 0x7000000, 0xF800000, 0x1FC00000, 0x1FC00000, 0x7000000, 0xFFF80000, 0x0, + 0xFFF80000, 0x7000000, 0x1FC00000, 0x1FC00000, 0xF800000, 0x7000000, 0x2000000, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *SplitHorizPtr=NULL; +struct BitMap SplitHorizBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&SplitHorizPlanes[0],(PLANEPTR)&SplitHorizPlanes[32]} }; + +ULONG __chip SplitVertPlanes[] = { + 0x2800000, 0x2800000, 0x2800000, 0x1AB00000, 0x2AA80000, 0x4EE40000, 0x82820000, 0x4EE40000, + 0x2AA80000, 0x1AB00000, 0x2800000, 0x2800000, 0x2800000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x2800000, 0x2800000, 0x2800000, 0x1AB00000, 0x3AB80000, 0x7EFC0000, 0xFEFE0000, 0x7EFC0000, + 0x3AB80000, 0x1AB00000, 0x2800000, 0x2800000, 0x2800000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *SplitVertPtr=NULL; +struct BitMap SplitVertBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&SplitVertPlanes[0],(PLANEPTR)&SplitVertPlanes[32]} }; + +ULONG __chip DrawPlanes[] = { + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x0, 0xF8F80000, 0x0, + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *DrawPtr=NULL; +struct BitMap DrawBitMap = { 4, 32, NULL, 2, NULL, {(PLANEPTR)&DrawPlanes[0],(PLANEPTR)&DrawPlanes[32]} }; + +UBYTE __chip TBNEWPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF8, 0x0, 0x0, 0x8, 0xC, 0x0, 0x0, 0x8, 0xA, 0x0, 0x0, 0x8, 0xF, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xF4, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWTbr=NULL; +struct BitMap TBNEWBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWPlanes[0],(PLANEPTR)&TBNEWPlanes[80],(PLANEPTR)&TBNEWPlanes[160],(PLANEPTR)&TBNEWPlanes[240]} }; + +UBYTE __chip TBOPENPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x0, 0x0, 0x0, 0x23, 0xF8, 0x0, 0x0, 0x20, 0x8, 0x0, 0x0, 0x20, 0x8, 0x0, 0x0, 0x21, 0xFF, 0xC0, 0x0, 0x22, 0x0, 0x80, 0x0, 0x24, 0x1, 0x0, 0x0, 0x28, 0x2, 0x0, 0x0, 0x30, 0x4, 0x0, 0x0, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x15, 0x50, 0x0, 0x0, 0xA, 0xA0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x9, 0xFF, 0x0, 0x0, 0x13, 0xFE, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0xF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0xA, 0xA0, 0x0, 0x0, 0x15, 0x50, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x15, 0xFF, 0x0, 0x0, 0xB, 0xFE, 0x0, 0x0, 0x17, 0xFC, 0x0, 0x0, 0xF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0xA, 0xA0, 0x0, 0x0, 0x15, 0x50, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBOPENTbr=NULL; +struct BitMap TBOPENBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBOPENPlanes[0],(PLANEPTR)&TBOPENPlanes[80],(PLANEPTR)&TBOPENPlanes[160],(PLANEPTR)&TBOPENPlanes[240]} }; + +UBYTE __chip TBSAVEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x14, 0x2, 0x80, 0x0, 0x14, 0x3, 0x80, 0x0, 0x14, 0x2, 0x80, 0x0, 0x14, 0x2, 0x80, 0x0, 0x14, 0x2, 0x80, 0x0, 0x14, 0x2, 0x80, 0x0, 0x13, 0xFC, 0x80, 0x0, 0x10, 0x0, 0x80, 0x0, 0x13, 0xFE, 0x80, 0x0, 0x13, 0xF2, 0x80, 0x0, 0x13, 0xF2, 0x80, 0x0, 0x13, 0xF2, 0x80, 0x0, 0xF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0xC, 0x3, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0xC, 0x3, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSAVETbr=NULL; +struct BitMap TBSAVEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSAVEPlanes[0],(PLANEPTR)&TBSAVEPlanes[80],(PLANEPTR)&TBSAVEPlanes[160],(PLANEPTR)&TBSAVEPlanes[240]} }; + +UBYTE __chip TBCUTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x1, 0x10, 0x0, 0x0, 0x1, 0xB0, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x0, 0xE0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0xE0, 0x0, 0x0, 0x0, 0xB8, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x4, 0xA4, 0x0, 0x0, 0x4, 0xA4, 0x0, 0x0, 0x4, 0x98, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x0, 0xB8, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x4, 0xA4, 0x0, 0x0, 0x4, 0xA4, 0x0, 0x0, 0x4, 0x98, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCUTTbr=NULL; +struct BitMap TBCUTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCUTPlanes[0],(PLANEPTR)&TBCUTPlanes[80],(PLANEPTR)&TBCUTPlanes[160],(PLANEPTR)&TBCUTPlanes[240]} }; + +UBYTE __chip TBCOPYPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x0, 0x0, 0x10, 0xC0, 0x0, 0x0, 0x10, 0xA0, 0x0, 0x0, 0x16, 0xFE, 0x0, 0x0, 0x10, 0x43, 0x0, 0x0, 0x17, 0xC2, 0x80, 0x0, 0x10, 0x5F, 0xC0, 0x0, 0x17, 0xC0, 0x40, 0x0, 0x10, 0x5F, 0x40, 0x0, 0x1F, 0xC0, 0x40, 0x0, 0x0, 0x5F, 0x40, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x7F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0x0, 0x0, 0x0, 0xF, 0x40, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0xF, 0xBC, 0x0, 0x0, 0x8, 0x3D, 0x0, 0x0, 0xF, 0xA0, 0x0, 0x0, 0x8, 0x3F, 0x80, 0x0, 0xF, 0xA0, 0x80, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x42, 0x80, 0x0, 0x0, 0x5F, 0xC0, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x5F, 0x40, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x5F, 0x40, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x7F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCOPYTbr=NULL; +struct BitMap TBCOPYBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCOPYPlanes[0],(PLANEPTR)&TBCOPYPlanes[80],(PLANEPTR)&TBCOPYPlanes[160],(PLANEPTR)&TBCOPYPlanes[240]} }; + +UBYTE __chip TBPASTEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xE0, 0x0, 0x0, 0x1F, 0x3E, 0x0, 0x0, 0x2A, 0xDB, 0x0, 0x0, 0x34, 0xD, 0x0, 0x0, 0x2F, 0xFB, 0x0, 0x0, 0x35, 0x55, 0x0, 0x0, 0x2A, 0xFF, 0x0, 0x0, 0x35, 0x83, 0x0, 0x0, 0x2A, 0x82, 0x80, 0x0, 0x35, 0xBB, 0xC0, 0x0, 0x2A, 0x80, 0x40, 0x0, 0x35, 0xBF, 0x40, 0x0, 0x1F, 0x80, 0x40, 0x0, 0x0, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1C, 0xE, 0x0, 0x0, 0x18, 0x6, 0x0, 0x0, 0x18, 0x6, 0x0, 0x0, 0x1F, 0xFE, 0x0, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x1F, 0x7C, 0x0, 0x0, 0x1F, 0x7D, 0x0, 0x0, 0x1F, 0x44, 0x0, 0x0, 0x1F, 0x7F, 0x80, 0x0, 0x1F, 0x40, 0x80, 0x0, 0x0, 0x7F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC0, 0x0, 0x0, 0x1D, 0x2E, 0x0, 0x0, 0x18, 0x6, 0x0, 0x0, 0x18, 0x6, 0x0, 0x0, 0x1F, 0xFE, 0x0, 0x0, 0x1F, 0xFE, 0x0, 0x0, 0x1F, 0x83, 0x0, 0x0, 0x1F, 0x82, 0x80, 0x0, 0x1F, 0xBB, 0xC0, 0x0, 0x1F, 0x80, 0x40, 0x0, 0x1F, 0xBF, 0x40, 0x0, 0x0, 0x80, 0x40, 0x0, 0x0, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC0, 0x0, 0x0, 0x9, 0x2A, 0x0, 0x0, 0x10, 0x4, 0x0, 0x0, 0x8, 0x2, 0x0, 0x0, 0x15, 0x54, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0xA, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPASTETbr=NULL; +struct BitMap TBPASTEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPASTEPlanes[0],(PLANEPTR)&TBPASTEPlanes[80],(PLANEPTR)&TBPASTEPlanes[160],(PLANEPTR)&TBPASTEPlanes[240]} }; + +UBYTE __chip TBUNDOPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E, 0x0, 0x0, 0x8, 0xC3, 0x0, 0x0, 0xD, 0x1, 0x0, 0x0, 0xE, 0x1, 0x0, 0x0, 0xF, 0x1, 0x0, 0x0, 0xF, 0x83, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E, 0x0, 0x0, 0x8, 0xC3, 0x0, 0x0, 0xD, 0x1, 0x0, 0x0, 0xE, 0x1, 0x0, 0x0, 0xF, 0x1, 0x0, 0x0, 0xF, 0x83, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBUNDOTbr=NULL; +struct BitMap TBUNDOBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBUNDOPlanes[0],(PLANEPTR)&TBUNDOPlanes[80],(PLANEPTR)&TBUNDOPlanes[160],(PLANEPTR)&TBUNDOPlanes[240]} }; + +UBYTE __chip TBHELPPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x1F, 0x80, 0x0, 0x30, 0x33, 0xC0, 0x0, 0x38, 0x71, 0xC0, 0x0, 0x3C, 0x71, 0xC0, 0x0, 0x3E, 0x73, 0xC0, 0x0, 0x3F, 0x3, 0x80, 0x0, 0x3F, 0x86, 0x0, 0x0, 0x3F, 0xCE, 0x0, 0x0, 0x3E, 0xE, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x23, 0xE, 0x0, 0x0, 0x3, 0xE, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x2, 0x40, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x42, 0x40, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x0, 0x0, 0x33, 0xC0, 0x0, 0x0, 0x71, 0xC0, 0x0, 0x0, 0x71, 0xC0, 0x0, 0x0, 0x73, 0xC0, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x2, 0x40, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x42, 0x40, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBHELPTbr=NULL; +struct BitMap TBHELPBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBHELPPlanes[0],(PLANEPTR)&TBHELPPlanes[80],(PLANEPTR)&TBHELPPlanes[160],(PLANEPTR)&TBHELPPlanes[240]} }; + +UBYTE __chip TBNEWWINDOWPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x2A, 0xFF, 0x80, 0x0, 0x11, 0xFF, 0x80, 0x0, 0x70, 0x0, 0x80, 0x0, 0xB, 0xC6, 0x80, 0x0, 0x4A, 0x40, 0x80, 0x0, 0xB, 0xC6, 0x80, 0x0, 0x8, 0x0, 0x80, 0x0, 0xB, 0xF8, 0x80, 0x0, 0x8, 0x0, 0x80, 0x0, 0xB, 0xF8, 0x80, 0x0, 0x8, 0x0, 0x80, 0x0, 0xF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x6D, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x54, 0x0, 0x0, 0x0, 0x7B, 0xFF, 0x0, 0x0, 0x5E, 0x39, 0x0, 0x0, 0x69, 0xBF, 0x0, 0x0, 0x4C, 0x39, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x4, 0x7, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x4, 0x7, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0xFF, 0x80, 0x0, 0x3B, 0xFF, 0x80, 0x0, 0x74, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x74, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWWINDOWTbr=NULL; +struct BitMap TBNEWWINDOWBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWWINDOWPlanes[0],(PLANEPTR)&TBNEWWINDOWPlanes[80],(PLANEPTR)&TBNEWWINDOWPlanes[160],(PLANEPTR)&TBNEWWINDOWPlanes[240]} }; + +UBYTE __chip TBNEWMENUPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x80, 0x0, 0x5F, 0x7F, 0x80, 0x0, 0x2A, 0xFC, 0x80, 0x0, 0x10, 0x4, 0x80, 0x0, 0x71, 0xFC, 0x80, 0x0, 0xB, 0xFC, 0x80, 0x0, 0x49, 0x4, 0x80, 0x0, 0x29, 0xE4, 0x80, 0x0, 0x24, 0x4, 0x80, 0x0, 0x25, 0xC4, 0x80, 0x0, 0x24, 0x4, 0x80, 0x0, 0x25, 0xF4, 0x80, 0x0, 0x3C, 0x7, 0x80, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x69, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x55, 0x78, 0x0, 0x0, 0x7A, 0x0, 0x0, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6B, 0xF8, 0x0, 0x0, 0x4E, 0x18, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x2, 0x38, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x2, 0x8, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x5F, 0xFF, 0x80, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x80, 0x0, 0x0, 0x74, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x48, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x80, 0x0, 0x0, 0x74, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x4D, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWMENUTbr=NULL; +struct BitMap TBNEWMENUBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWMENUPlanes[0],(PLANEPTR)&TBNEWMENUPlanes[80],(PLANEPTR)&TBNEWMENUPlanes[160],(PLANEPTR)&TBNEWMENUPlanes[240]} }; + +UBYTE __chip TBNEWIMAGEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x49, 0x68, 0x0, 0x0, 0x2A, 0x6C, 0x0, 0x0, 0x13, 0x4E, 0x0, 0x0, 0x70, 0x2F, 0x0, 0x0, 0x9, 0x6F, 0x80, 0x0, 0x48, 0x0, 0x0, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0xC0, 0x0, 0x0, 0x6D, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x57, 0x44, 0x0, 0x0, 0x7A, 0xA6, 0x0, 0x0, 0x5D, 0x60, 0x0, 0x0, 0x69, 0x0, 0x0, 0x0, 0x4B, 0x6C, 0x0, 0x0, 0xB, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3B, 0xC4, 0x0, 0x0, 0x75, 0x66, 0x0, 0x0, 0x2B, 0x60, 0x0, 0x0, 0x4C, 0x0, 0x0, 0x0, 0xB, 0xEC, 0x0, 0x0, 0xB, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3B, 0xC4, 0x0, 0x0, 0x75, 0x66, 0x0, 0x0, 0x2B, 0x60, 0x0, 0x0, 0x4C, 0x0, 0x0, 0x0, 0xB, 0xEC, 0x0, 0x0, 0xB, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x3, 0x6C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWIMAGETbr=NULL; +struct BitMap TBNEWIMAGEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWIMAGEPlanes[0],(PLANEPTR)&TBNEWIMAGEPlanes[80],(PLANEPTR)&TBNEWIMAGEPlanes[160],(PLANEPTR)&TBNEWIMAGEPlanes[240]} }; + +UBYTE __chip TBNEWSTRINGPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x71, 0xFF, 0x80, 0x0, 0xA, 0x8, 0x80, 0x0, 0x49, 0x0, 0x0, 0x0, 0x9, 0x80, 0x0, 0x0, 0x39, 0xE7, 0x0, 0x0, 0x6D, 0xBD, 0x80, 0x0, 0x3D, 0xBC, 0x0, 0x0, 0x6D, 0xBD, 0x80, 0x0, 0x3F, 0xE7, 0x0, 0x0, 0x42, 0x8, 0x80, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x6D, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x15, 0xC0, 0x0, 0x0, 0x7B, 0xC0, 0x0, 0x0, 0x5E, 0x0, 0x0, 0x0, 0x6B, 0x0, 0x0, 0x0, 0x4C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x75, 0xFF, 0x80, 0x0, 0x2B, 0x8, 0x80, 0x0, 0x4D, 0x80, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x8, 0x80, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x75, 0xC0, 0x0, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x4D, 0x80, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWSTRINGTbr=NULL; +struct BitMap TBNEWSTRINGBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWSTRINGPlanes[0],(PLANEPTR)&TBNEWSTRINGPlanes[80],(PLANEPTR)&TBNEWSTRINGPlanes[160],(PLANEPTR)&TBNEWSTRINGPlanes[240]} }; + +UBYTE __chip TBNEWSCREENPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x10, 0x3F, 0x0, 0x0, 0x71, 0xFF, 0x80, 0x0, 0xB, 0xFF, 0x80, 0x0, 0x4B, 0x3, 0x80, 0x0, 0xB, 0x3, 0x80, 0x0, 0x7, 0x3, 0x80, 0x0, 0x7, 0x3, 0x80, 0x0, 0x7, 0xFF, 0x80, 0x0, 0x7, 0xFF, 0x80, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x6D, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x35, 0xC0, 0x0, 0x0, 0x7B, 0xFF, 0x0, 0x0, 0x5E, 0x1, 0x0, 0x0, 0x6A, 0xFD, 0x0, 0x0, 0x4E, 0xFD, 0x0, 0x0, 0x2, 0xFD, 0x0, 0x0, 0x2, 0xFD, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x75, 0xFF, 0x0, 0x0, 0x2A, 0x1, 0x0, 0x0, 0x4E, 0x1, 0x0, 0x0, 0xA, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x75, 0xFF, 0x0, 0x0, 0x2A, 0x1, 0x0, 0x0, 0x4E, 0x1, 0x0, 0x0, 0xA, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWSCREENTbr=NULL; +struct BitMap TBNEWSCREENBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWSCREENPlanes[0],(PLANEPTR)&TBNEWSCREENPlanes[80],(PLANEPTR)&TBNEWSCREENPlanes[160],(PLANEPTR)&TBNEWSCREENPlanes[240]} }; + +UBYTE __chip TBNEWVERSIONPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x10, 0x3F, 0x80, 0x0, 0x71, 0xC1, 0x80, 0x0, 0xA, 0xFF, 0x80, 0x0, 0x58, 0x3, 0x80, 0x0, 0x2C, 0x3B, 0x80, 0x0, 0x2C, 0x2B, 0x80, 0x0, 0x24, 0x2B, 0x80, 0x0, 0x24, 0x2B, 0x80, 0x0, 0x2E, 0xBB, 0x80, 0x0, 0x20, 0x3, 0x80, 0x0, 0x3F, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x6D, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x55, 0xC0, 0x0, 0x0, 0x7B, 0xC0, 0x0, 0x0, 0x5E, 0x1, 0x0, 0x0, 0x7B, 0x7D, 0x0, 0x0, 0x5B, 0xC5, 0x0, 0x0, 0x13, 0xD5, 0x0, 0x0, 0x1B, 0xD5, 0x0, 0x0, 0x1B, 0xD5, 0x0, 0x0, 0x11, 0x45, 0x0, 0x0, 0x1F, 0xFD, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x75, 0xC0, 0x0, 0x0, 0x2B, 0x1, 0x0, 0x0, 0x5C, 0x81, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4C, 0x80, 0x0, 0x0, 0x49, 0x80, 0x0, 0x0, 0x2F, 0x0, 0x0, 0x0, 0x3A, 0x0, 0x0, 0x0, 0x75, 0xC0, 0x0, 0x0, 0x2B, 0x1, 0x0, 0x0, 0x5C, 0x81, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNEWVERSIONTbr=NULL; +struct BitMap TBNEWVERSIONBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNEWVERSIONPlanes[0],(PLANEPTR)&TBNEWVERSIONPlanes[80],(PLANEPTR)&TBNEWVERSIONPlanes[160],(PLANEPTR)&TBNEWVERSIONPlanes[240]} }; + +UBYTE __chip TBBUTTONPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x6, 0x4C, 0x80, 0x0, 0x8, 0xAA, 0x80, 0x0, 0xA, 0xEA, 0x80, 0x0, 0x6, 0xAC, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBBUTTONTbr=NULL; +struct BitMap TBBUTTONBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBBUTTONPlanes[0],(PLANEPTR)&TBBUTTONPlanes[80],(PLANEPTR)&TBBUTTONPlanes[160],(PLANEPTR)&TBBUTTONPlanes[240]} }; + +UBYTE __chip TBCYCLEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x1D, 0x0, 0x80, 0x0, 0x15, 0x0, 0x80, 0x0, 0x11, 0x0, 0x80, 0x0, 0x1D, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCYCLETbr=NULL; +struct BitMap TBCYCLEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCYCLEPlanes[0],(PLANEPTR)&TBCYCLEPlanes[80],(PLANEPTR)&TBCYCLEPlanes[160],(PLANEPTR)&TBCYCLEPlanes[240]} }; + +UBYTE __chip TBCHECKMARKPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x4, 0x80, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x10, 0x80, 0x0, 0x0, 0x10, 0x80, 0x0, 0x2, 0x20, 0x80, 0x0, 0x1, 0x40, 0x80, 0x0, 0x1, 0x40, 0x80, 0x0, 0x0, 0x80, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCHECKMARKTbr=NULL; +struct BitMap TBCHECKMARKBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCHECKMARKPlanes[0],(PLANEPTR)&TBCHECKMARKPlanes[80],(PLANEPTR)&TBCHECKMARKPlanes[160],(PLANEPTR)&TBCHECKMARKPlanes[240]} }; + +UBYTE __chip TBCOLORWHEELPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0xB, 0xFA, 0x0, 0x0, 0x11, 0x7D, 0x0, 0x0, 0x11, 0xB5, 0x0, 0x0, 0x20, 0x5C, 0x80, 0x0, 0x20, 0x0, 0x80, 0x0, 0x3D, 0x0, 0x80, 0x0, 0x3E, 0x80, 0x80, 0x0, 0x3B, 0x40, 0x80, 0x0, 0x1D, 0xB1, 0x0, 0x0, 0x1F, 0x61, 0x0, 0x0, 0xF, 0xFA, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xE, 0x80, 0x0, 0x0, 0xE, 0x48, 0x0, 0x0, 0x1F, 0xA0, 0x0, 0x0, 0x1F, 0xD4, 0x0, 0x0, 0x1F, 0xFF, 0x0, 0x0, 0x1F, 0xFF, 0x0, 0x0, 0x1F, 0xBF, 0x0, 0x0, 0xE, 0x4E, 0x0, 0x0, 0xE, 0x9E, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0xE, 0x2, 0x0, 0x0, 0xC, 0x2, 0x0, 0x0, 0x1F, 0x3, 0x0, 0x0, 0x1A, 0xAB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x1, 0xB0, 0x0, 0x0, 0x1, 0x60, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0xF, 0x62, 0x0, 0x0, 0xD, 0xA2, 0x0, 0x0, 0x1F, 0x43, 0x0, 0x0, 0x1A, 0xAB, 0x0, 0x0, 0x1D, 0x17, 0x0, 0x0, 0x1E, 0xAF, 0x0, 0x0, 0x1B, 0x5B, 0x0, 0x0, 0xD, 0xB6, 0x0, 0x0, 0xF, 0x6E, 0x0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCOLORWHEELTbr=NULL; +struct BitMap TBCOLORWHEELBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCOLORWHEELPlanes[0],(PLANEPTR)&TBCOLORWHEELPlanes[80],(PLANEPTR)&TBCOLORWHEELPlanes[160],(PLANEPTR)&TBCOLORWHEELPlanes[240]} }; + +UBYTE __chip TBDATATYPEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x40, 0x0, 0x23, 0x8F, 0x40, 0x0, 0x22, 0x89, 0x40, 0x0, 0x2E, 0x89, 0x40, 0x0, 0x2A, 0xEF, 0x40, 0x0, 0x2A, 0xD0, 0x40, 0x0, 0x2C, 0xD0, 0x40, 0x0, 0x3E, 0xBF, 0xC0, 0x0, 0x22, 0x40, 0x40, 0x0, 0x22, 0x9B, 0x40, 0x0, 0x22, 0xA4, 0x40, 0x0, 0x27, 0xBC, 0x40, 0x0, 0x2F, 0x0, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBDATATYPETbr=NULL; +struct BitMap TBDATATYPEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBDATATYPEPlanes[0],(PLANEPTR)&TBDATATYPEPlanes[80],(PLANEPTR)&TBDATATYPEPlanes[160],(PLANEPTR)&TBDATATYPEPlanes[240]} }; + +UBYTE __chip TBGRADIENTSLIDERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x5F, 0xC0, 0x0, 0x3, 0x3F, 0xC0, 0x0, 0x3, 0x5F, 0xC0, 0x0, 0x3, 0x3F, 0xC0, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x38, 0x5A, 0x0, 0x0, 0x3C, 0x3C, 0x0, 0x0, 0x38, 0x5A, 0x0, 0x0, 0x3C, 0x3C, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBGRADIENTSLIDERTbr=NULL; +struct BitMap TBGRADIENTSLIDERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBGRADIENTSLIDERPlanes[0],(PLANEPTR)&TBGRADIENTSLIDERPlanes[80],(PLANEPTR)&TBGRADIENTSLIDERPlanes[160],(PLANEPTR)&TBGRADIENTSLIDERPlanes[240]} }; + +UBYTE __chip TBINTEGERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0x40, 0x0, 0x11, 0x7E, 0x40, 0x0, 0x13, 0x7E, 0x40, 0x0, 0x15, 0x7E, 0x40, 0x0, 0x11, 0x7E, 0x40, 0x0, 0x11, 0x7E, 0x40, 0x0, 0x13, 0xFE, 0x40, 0x0, 0x10, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x80, 0x0, 0x20, 0x66, 0x80, 0x0, 0x20, 0x5A, 0x80, 0x0, 0x20, 0x7A, 0x80, 0x0, 0x20, 0x76, 0x80, 0x0, 0x20, 0x6E, 0x80, 0x0, 0x20, 0x42, 0x80, 0x0, 0x2F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x7A, 0x0, 0x0, 0x0, 0x76, 0x0, 0x0, 0x0, 0x6E, 0x0, 0x0, 0x0, 0x42, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBINTEGERTbr=NULL; +struct BitMap TBINTEGERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBINTEGERPlanes[0],(PLANEPTR)&TBINTEGERPlanes[80],(PLANEPTR)&TBINTEGERPlanes[160],(PLANEPTR)&TBINTEGERPlanes[240]} }; + +UBYTE __chip TBLISTVIEWPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xC0, 0x0, 0xF, 0xF2, 0xC0, 0x0, 0x0, 0x2, 0xC0, 0x0, 0xF, 0x2, 0xC0, 0x0, 0x0, 0x2, 0xC0, 0x0, 0xF, 0xC2, 0xC0, 0x0, 0x0, 0x2, 0xC0, 0x0, 0xF, 0xF2, 0xC0, 0x0, 0x0, 0x2, 0x40, 0x0, 0xF, 0x82, 0x40, 0x0, 0x0, 0x2, 0xC0, 0x0, 0x0, 0x2, 0x40, 0x0, 0x0, 0x2, 0xC0, 0x0, 0x0, 0x2, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x80, 0x0, 0x20, 0x1, 0x0, 0x0, 0x20, 0x1, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBLISTVIEWTbr=NULL; +struct BitMap TBLISTVIEWBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBLISTVIEWPlanes[0],(PLANEPTR)&TBLISTVIEWPlanes[80],(PLANEPTR)&TBLISTVIEWPlanes[160],(PLANEPTR)&TBLISTVIEWPlanes[240]} }; + +UBYTE __chip TBMXPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x2, 0x8, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x8, 0xE0, 0x0, 0x0, 0x9, 0xF0, 0x0, 0x0, 0x9, 0xF0, 0x0, 0x0, 0x9, 0xF0, 0x0, 0x0, 0x8, 0xE0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x2, 0x8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBMXTbr=NULL; +struct BitMap TBMXBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBMXPlanes[0],(PLANEPTR)&TBMXPlanes[80],(PLANEPTR)&TBMXPlanes[160],(PLANEPTR)&TBMXPlanes[240]} }; + +UBYTE __chip TBNUMBERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x21, 0x18, 0x0, 0x0, 0x23, 0x24, 0x0, 0x0, 0x25, 0x4, 0x0, 0x0, 0x21, 0x8, 0x0, 0x0, 0x21, 0x10, 0x0, 0x0, 0x23, 0xBC, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBNUMBERTbr=NULL; +struct BitMap TBNUMBERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBNUMBERPlanes[0],(PLANEPTR)&TBNUMBERPlanes[80],(PLANEPTR)&TBNUMBERPlanes[160],(PLANEPTR)&TBNUMBERPlanes[240]} }; + +UBYTE __chip TBPAGEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x0, 0x0, 0x1, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x78, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPAGETbr=NULL; +struct BitMap TBPAGEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPAGEPlanes[0],(PLANEPTR)&TBPAGEPlanes[80],(PLANEPTR)&TBPAGEPlanes[160],(PLANEPTR)&TBPAGEPlanes[240]} }; + +UBYTE __chip TBPALETTEPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x80, 0x0, 0x0, 0xF0, 0x80, 0x0, 0x0, 0xF0, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xF, 0x80, 0x0, 0xF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x10, 0xF, 0x0, 0x0, 0x10, 0xF, 0x0, 0x0, 0x10, 0xF, 0x0, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x1F, 0x0, 0x0, 0x0, 0x10, 0xFF, 0x0, 0x0, 0x10, 0xFF, 0x0, 0x0, 0x10, 0xFF, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPALETTETbr=NULL; +struct BitMap TBPALETTEBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPALETTEPlanes[0],(PLANEPTR)&TBPALETTEPlanes[80],(PLANEPTR)&TBPALETTEPlanes[160],(PLANEPTR)&TBPALETTEPlanes[240]} }; + +UBYTE __chip TBPOPUPMENUPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1, 0x13, 0x40, 0x0, 0xD, 0x2B, 0x40, 0x0, 0x1, 0x3A, 0xC0, 0x0, 0xD, 0x2B, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x4, 0x0, 0x40, 0x0, 0x5, 0x91, 0x40, 0x0, 0x5, 0x5B, 0x40, 0x0, 0x5, 0x95, 0x40, 0x0, 0x5, 0x11, 0x40, 0x0, 0x4, 0x0, 0x40, 0x0, 0x7, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x2C, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x2C, 0x80, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x3, 0xFF, 0x80, 0x0, 0x2, 0x6E, 0x80, 0x0, 0x2, 0xA4, 0x80, 0x0, 0x2, 0x6A, 0x80, 0x0, 0x2, 0xEE, 0x80, 0x0, 0x3, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPOPUPMENUTbr=NULL; +struct BitMap TBPOPUPMENUBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPOPUPMENUPlanes[0],(PLANEPTR)&TBPOPUPMENUPlanes[80],(PLANEPTR)&TBPOPUPMENUPlanes[160],(PLANEPTR)&TBPOPUPMENUPlanes[240]} }; + +UBYTE __chip TBPROGRESSPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x3F, 0xC0, 0x0, 0x0, 0x3F, 0xD8, 0x0, 0x0, 0x3F, 0xE4, 0x0, 0x0, 0x3F, 0xC4, 0x0, 0x0, 0x3F, 0xC8, 0x0, 0x0, 0x3F, 0xD0, 0x0, 0x0, 0x3F, 0xFC, 0x0, 0x0, 0x3F, 0xC0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1C, 0xC0, 0x0, 0x0, 0x1A, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1C, 0x40, 0x0, 0x0, 0x1F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1C, 0xC0, 0x0, 0x0, 0x1A, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1E, 0xC0, 0x0, 0x0, 0x1C, 0x40, 0x0, 0x0, 0x1F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPROGRESSTbr=NULL; +struct BitMap TBPROGRESSBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPROGRESSPlanes[0],(PLANEPTR)&TBPROGRESSPlanes[80],(PLANEPTR)&TBPROGRESSPlanes[160],(PLANEPTR)&TBPROGRESSPlanes[240]} }; + +UBYTE __chip TBSCROLLERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x8, 0x40, 0x0, 0x31, 0x1A, 0x40, 0x0, 0x31, 0x29, 0x40, 0x0, 0x31, 0x48, 0xC0, 0x0, 0x31, 0x29, 0x40, 0x0, 0x31, 0x1A, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xC0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x84, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSCROLLERTbr=NULL; +struct BitMap TBSCROLLERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSCROLLERPlanes[0],(PLANEPTR)&TBSCROLLERPlanes[80],(PLANEPTR)&TBSCROLLERPlanes[160],(PLANEPTR)&TBSCROLLERPlanes[240]} }; + +UBYTE __chip TBSLIDERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0x0, 0x40, 0x0, 0xF, 0x0, 0x40, 0x0, 0xF, 0x0, 0x40, 0x0, 0xF, 0x0, 0x40, 0x0, 0xF, 0x0, 0x40, 0x0, 0xF, 0x0, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xC0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSLIDERTbr=NULL; +struct BitMap TBSLIDERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSLIDERPlanes[0],(PLANEPTR)&TBSLIDERPlanes[80],(PLANEPTR)&TBSLIDERPlanes[160],(PLANEPTR)&TBSLIDERPlanes[240]} }; + +UBYTE __chip TBSTRINGPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0x40, 0x0, 0x13, 0x3F, 0x40, 0x0, 0x14, 0xBF, 0x40, 0x0, 0x14, 0xBF, 0x40, 0x0, 0x17, 0xBF, 0x40, 0x0, 0x14, 0xBF, 0x40, 0x0, 0x14, 0xBF, 0x40, 0x0, 0x10, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x80, 0x0, 0x20, 0x23, 0x80, 0x0, 0x20, 0x2D, 0x80, 0x0, 0x20, 0x23, 0x80, 0x0, 0x20, 0x2D, 0x80, 0x0, 0x20, 0x2D, 0x80, 0x0, 0x20, 0x23, 0x80, 0x0, 0x2F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x2D, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSTRINGTbr=NULL; +struct BitMap TBSTRINGBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSTRINGPlanes[0],(PLANEPTR)&TBSTRINGPlanes[80],(PLANEPTR)&TBSTRINGPlanes[160],(PLANEPTR)&TBSTRINGPlanes[240]} }; + +UBYTE __chip TBTAPEDECKPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x8, 0xA7, 0x40, 0x0, 0xC, 0xA7, 0x40, 0x0, 0x8, 0xA7, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xC0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBTAPEDECKTbr=NULL; +struct BitMap TBTAPEDECKBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBTAPEDECKPlanes[0],(PLANEPTR)&TBTAPEDECKPlanes[80],(PLANEPTR)&TBTAPEDECKPlanes[160],(PLANEPTR)&TBTAPEDECKPlanes[240]} }; + +UBYTE __chip TBTEXTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x23, 0x1C, 0x0, 0x0, 0x24, 0x92, 0x0, 0x0, 0x24, 0x9C, 0x0, 0x0, 0x27, 0x92, 0x0, 0x0, 0x24, 0x92, 0x0, 0x0, 0x24, 0x9C, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBTEXTTbr=NULL; +struct BitMap TBTEXTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBTEXTPlanes[0],(PLANEPTR)&TBTEXTPlanes[80],(PLANEPTR)&TBTEXTPlanes[160],(PLANEPTR)&TBTEXTPlanes[240]} }; + +UBYTE __chip TBTEXTFIELDPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x2F, 0xEC, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x2E, 0xF4, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x2F, 0x70, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x2E, 0xE0, 0x40, 0x0, 0x20, 0xC, 0x40, 0x0, 0x2B, 0xDC, 0x40, 0x0, 0x20, 0xC, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xC0, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0xC, 0x80, 0x0, 0x40, 0x4, 0x80, 0x0, 0x40, 0xC, 0x80, 0x0, 0x5F, 0xFF, 0x80, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBTEXTFIELDTbr=NULL; +struct BitMap TBTEXTFIELDBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBTEXTFIELDPlanes[0],(PLANEPTR)&TBTEXTFIELDPlanes[80],(PLANEPTR)&TBTEXTFIELDPlanes[160],(PLANEPTR)&TBTEXTFIELDPlanes[240]} }; + +UBYTE __chip TBTREEVIEWPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0xF, 0x4F, 0x40, 0x0, 0x8, 0x40, 0x40, 0x0, 0xF, 0x4C, 0x40, 0x0, 0x8, 0x40, 0x40, 0x0, 0xF, 0x4B, 0x40, 0x0, 0x8, 0x40, 0x40, 0x0, 0xF, 0x4F, 0x40, 0x0, 0x8, 0x40, 0x40, 0x0, 0xF, 0x4D, 0x40, 0x0, 0x8, 0x40, 0x40, 0x0, 0xF, 0x4E, 0x40, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x0, 0x40, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x2C, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x2C, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x2C, 0x20, 0x0, 0x0, 0x28, 0x20, 0x0, 0x0, 0x2C, 0x20, 0x0, 0x0, 0x20, 0x20, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBTREEVIEWTbr=NULL; +struct BitMap TBTREEVIEWBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBTREEVIEWPlanes[0],(PLANEPTR)&TBTREEVIEWPlanes[80],(PLANEPTR)&TBTREEVIEWPlanes[160],(PLANEPTR)&TBTREEVIEWPlanes[240]} }; + +UBYTE __chip TBTESTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x8, 0xFC, 0x0, 0x0, 0x8, 0xCC, 0x0, 0x0, 0xF, 0xE4, 0x0, 0x0, 0x7, 0xF4, 0x0, 0x0, 0x3, 0xF4, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x1, 0x7E, 0x0, 0x0, 0x1, 0x3F, 0x0, 0x0, 0x1, 0x1F, 0x0, 0x0, 0x1, 0xC, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0xA, 0x80, 0x0, 0x0, 0xD, 0xC8, 0x0, 0x0, 0x8, 0xE0, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x2, 0x30, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0x7A, 0x0, 0x0, 0x1, 0x3B, 0x0, 0x0, 0x1, 0x1B, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x8, 0xC8, 0x0, 0x0, 0x8, 0xE0, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x2, 0x30, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0x7A, 0x0, 0x0, 0x1, 0x3B, 0x0, 0x0, 0x1, 0x1B, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x8, 0x80, 0x0, 0x0, 0x8, 0xC8, 0x0, 0x0, 0x8, 0xE0, 0x0, 0x0, 0x4, 0x70, 0x0, 0x0, 0x2, 0x30, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0x7A, 0x0, 0x0, 0x1, 0x3B, 0x0, 0x0, 0x1, 0x1B, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBTESTTbr=NULL; +struct BitMap TBTESTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBTESTPlanes[0],(PLANEPTR)&TBTESTPlanes[80],(PLANEPTR)&TBTESTPlanes[160],(PLANEPTR)&TBTESTPlanes[240]} }; + +UBYTE __chip TBGADGETSPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x7, 0x24, 0x80, 0x0, 0x4, 0xA4, 0x80, 0x0, 0x4, 0xA4, 0x80, 0x0, 0x7, 0x24, 0x80, 0x0, 0x4, 0xA4, 0x80, 0x0, 0x4, 0xA4, 0x80, 0x0, 0x7, 0x18, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x1F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x80, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBGADGETSTbr=NULL; +struct BitMap TBGADGETSBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBGADGETSPlanes[0],(PLANEPTR)&TBGADGETSPlanes[80],(PLANEPTR)&TBGADGETSPlanes[160],(PLANEPTR)&TBGADGETSPlanes[240]} }; + +UBYTE __chip TBFRAMESPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x3, 0xC0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x3A, 0x3F, 0x40, 0x0, 0x22, 0x0, 0x40, 0x0, 0x22, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x20, 0x0, 0x40, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x3F, 0xC0, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x40, 0x0, 0x80, 0x0, 0x5F, 0xFF, 0x80, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBFRAMESTbr=NULL; +struct BitMap TBFRAMESBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBFRAMESPlanes[0],(PLANEPTR)&TBFRAMESPlanes[80],(PLANEPTR)&TBFRAMESPlanes[160],(PLANEPTR)&TBFRAMESPlanes[240]} }; + +UBYTE __chip TBPOINTERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x7, 0xC0, 0x0, 0x0, 0x7, 0xE0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xF8, 0x0, 0x0, 0x7, 0xC0, 0x0, 0x0, 0x6, 0xC0, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBPOINTERTbr=NULL; +struct BitMap TBPOINTERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBPOINTERPlanes[0],(PLANEPTR)&TBPOINTERPlanes[80],(PLANEPTR)&TBPOINTERPlanes[160],(PLANEPTR)&TBPOINTERPlanes[240]} }; + +UBYTE __chip TBALIGNLEFTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD, 0xF8, 0x0, 0x0, 0xD, 0x8, 0x0, 0x0, 0xD, 0xF8, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0xD, 0xFF, 0x0, 0x0, 0xD, 0x1, 0x0, 0x0, 0xD, 0x1, 0x0, 0x0, 0xD, 0xFF, 0x0, 0x0, 0xC, 0x0, 0x0, 0x0, 0xC, 0x80, 0x0, 0x0, 0xD, 0xFC, 0x0, 0x0, 0xC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNLEFTTbr=NULL; +struct BitMap TBALIGNLEFTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNLEFTPlanes[0],(PLANEPTR)&TBALIGNLEFTPlanes[80],(PLANEPTR)&TBALIGNLEFTPlanes[160],(PLANEPTR)&TBALIGNLEFTPlanes[240]} }; + +UBYTE __chip TBALIGNHCENTERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xA0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNHCENTERTbr=NULL; +struct BitMap TBALIGNHCENTERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNHCENTERPlanes[0],(PLANEPTR)&TBALIGNHCENTERPlanes[80],(PLANEPTR)&TBALIGNHCENTERPlanes[160],(PLANEPTR)&TBALIGNHCENTERPlanes[240]} }; + +UBYTE __chip TBALIGNRIGHTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFB, 0x0, 0x0, 0x1, 0xB, 0x0, 0x0, 0x1, 0xFB, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0xF, 0xFB, 0x0, 0x0, 0x8, 0xB, 0x0, 0x0, 0x8, 0xB, 0x0, 0x0, 0xF, 0xFB, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x3, 0xFB, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNRIGHTTbr=NULL; +struct BitMap TBALIGNRIGHTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNRIGHTPlanes[0],(PLANEPTR)&TBALIGNRIGHTPlanes[80],(PLANEPTR)&TBALIGNRIGHTPlanes[160],(PLANEPTR)&TBALIGNRIGHTPlanes[240]} }; + +UBYTE __chip TBALIGNTOPPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0xF2, 0x0, 0x0, 0xA, 0x97, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xE, 0x92, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNTOPTbr=NULL; +struct BitMap TBALIGNTOPBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNTOPPlanes[0],(PLANEPTR)&TBALIGNTOPPlanes[80],(PLANEPTR)&TBALIGNTOPPlanes[160],(PLANEPTR)&TBALIGNTOPPlanes[240]} }; + +UBYTE __chip TBALIGNVCENTERPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x2, 0xA4, 0x0, 0x0, 0xE, 0xE7, 0x0, 0x0, 0xE, 0xE7, 0x0, 0x0, 0x2, 0xA4, 0x0, 0x0, 0x3, 0xA4, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x1, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNVCENTERTbr=NULL; +struct BitMap TBALIGNVCENTERBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNVCENTERPlanes[0],(PLANEPTR)&TBALIGNVCENTERPlanes[80],(PLANEPTR)&TBALIGNVCENTERPlanes[160],(PLANEPTR)&TBALIGNVCENTERPlanes[240]} }; + +UBYTE __chip TBALIGNBOTTOMPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0xE, 0x92, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xA, 0x92, 0x0, 0x0, 0xA, 0x97, 0x0, 0x0, 0xE, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x4, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBALIGNBOTTOMTbr=NULL; +struct BitMap TBALIGNBOTTOMBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBALIGNBOTTOMPlanes[0],(PLANEPTR)&TBALIGNBOTTOMPlanes[80],(PLANEPTR)&TBALIGNBOTTOMPlanes[160],(PLANEPTR)&TBALIGNBOTTOMPlanes[240]} }; + +UBYTE __chip TBSPREADHORIZPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x3C, 0x90, 0x0, 0x0, 0x24, 0x93, 0xC0, 0x0, 0x27, 0x9E, 0x40, 0x0, 0x27, 0x9E, 0x40, 0x0, 0x24, 0x93, 0xC0, 0x0, 0x3C, 0x90, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x18, 0x60, 0x0, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x1B, 0x6D, 0x80, 0x0, 0x18, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xC, 0x0, 0x0, 0x3, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xC, 0x0, 0x0, 0x3, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSPREADHORIZTbr=NULL; +struct BitMap TBSPREADHORIZBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSPREADHORIZPlanes[0],(PLANEPTR)&TBSPREADHORIZPlanes[80],(PLANEPTR)&TBSPREADHORIZPlanes[160],(PLANEPTR)&TBSPREADHORIZPlanes[240]} }; + +UBYTE __chip TBSPREADVERTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x2, 0x4, 0x0, 0x0, 0x2, 0x4, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0x8, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBSPREADVERTTbr=NULL; +struct BitMap TBSPREADVERTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBSPREADVERTPlanes[0],(PLANEPTR)&TBSPREADVERTPlanes[80],(PLANEPTR)&TBSPREADVERTPlanes[160],(PLANEPTR)&TBSPREADVERTPlanes[240]} }; + +UBYTE __chip TBCLONEWIDTHPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xC0, 0x0, 0x0, 0x20, 0x40, 0x0, 0x0, 0x20, 0x40, 0x0, 0x0, 0x3F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF8, 0x0, 0x0, 0x20, 0x58, 0x0, 0x0, 0x20, 0x68, 0x0, 0x0, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0x0, 0x0, 0x20, 0x55, 0x0, 0x0, 0x20, 0x6B, 0x0, 0x0, 0x3F, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x0, 0x0, 0x1F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x1F, 0x98, 0x0, 0x0, 0x1F, 0xA8, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x1F, 0x95, 0x0, 0x0, 0x1F, 0xAB, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x2B, 0x0, 0x0, 0x0, 0x3F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCLONEWIDTHTbr=NULL; +struct BitMap TBCLONEWIDTHBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCLONEWIDTHPlanes[0],(PLANEPTR)&TBCLONEWIDTHPlanes[80],(PLANEPTR)&TBCLONEWIDTHPlanes[160],(PLANEPTR)&TBCLONEWIDTHPlanes[240]} }; + +UBYTE __chip TBCLONEHEIGHTPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0xF7, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x12, 0x94, 0x80, 0x0, 0x1E, 0xF7, 0x80, 0x0, 0x0, 0xD6, 0x80, 0x0, 0x0, 0xB5, 0x80, 0x0, 0x0, 0xF6, 0x80, 0x0, 0x0, 0x5, 0x80, 0x0, 0x0, 0x6, 0x80, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0xC, 0x63, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD6, 0x80, 0x0, 0x0, 0xB5, 0x80, 0x0, 0x0, 0xF6, 0x80, 0x0, 0x0, 0x5, 0x80, 0x0, 0x0, 0x6, 0x80, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD6, 0x80, 0x0, 0x0, 0xB5, 0x80, 0x0, 0x0, 0xF6, 0x80, 0x0, 0x0, 0x5, 0x80, 0x0, 0x0, 0x6, 0x80, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD6, 0x80, 0x0, 0x0, 0xB5, 0x80, 0x0, 0x0, 0xF6, 0x80, 0x0, 0x0, 0x5, 0x80, 0x0, 0x0, 0x6, 0x80, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCLONEHEIGHTTbr=NULL; +struct BitMap TBCLONEHEIGHTBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCLONEHEIGHTPlanes[0],(PLANEPTR)&TBCLONEHEIGHTPlanes[80],(PLANEPTR)&TBCLONEHEIGHTPlanes[160],(PLANEPTR)&TBCLONEHEIGHTPlanes[240]} }; + +UBYTE __chip TBCLONEBOTHPlanes[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x2A, 0xB0, 0x0, 0x0, 0x3D, 0x50, 0x0, 0x0, 0x26, 0xB0, 0x0, 0x0, 0x25, 0x50, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x3E, 0x80, 0x0, 0x0, 0x25, 0x80, 0x0, 0x0, 0x26, 0x80, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x2A, 0xB0, 0x0, 0x0, 0x1, 0x50, 0x0, 0x0, 0x1A, 0xB0, 0x0, 0x0, 0x19, 0x50, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x19, 0x80, 0x0, 0x0, 0x1A, 0x80, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x2A, 0xB0, 0x0, 0x0, 0x1, 0x50, 0x0, 0x0, 0x2, 0xB0, 0x0, 0x0, 0x1, 0x50, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x2A, 0xB0, 0x0, 0x0, 0x1, 0x50, 0x0, 0x0, 0x2, 0xB0, 0x0, 0x0, 0x1, 0x50, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0x80, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x2, 0x80, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +}; +Object *TBCLONEBOTHTbr=NULL; +struct BitMap TBCLONEBOTHBitMap = { 4, 20, NULL, 4, NULL, {(PLANEPTR)&TBCLONEBOTHPlanes[0],(PLANEPTR)&TBCLONEBOTHPlanes[80],(PLANEPTR)&TBCLONEBOTHPlanes[160],(PLANEPTR)&TBCLONEBOTHPlanes[240]} }; + +struct SmartBitMapIRGB GTBLOGOPalette[]= +{ + {-1, Bit32( 0), Bit32( 0), Bit32( 37)}, + {-1, Bit32( 0), Bit32( 0), Bit32( 49)}, + {-1, Bit32( 5), Bit32( 4), Bit32( 57)}, + {-1, Bit32( 7), Bit32( 6), Bit32( 69)}, + {-1, Bit32( 9), Bit32( 8), Bit32( 97)}, + {-1, Bit32( 33), Bit32( 24), Bit32( 93)}, + {-1, Bit32( 21), Bit32( 21), Bit32(112)}, + {-1, Bit32( 33), Bit32( 27), Bit32(122)}, + {-1, Bit32( 25), Bit32( 36), Bit32(152)}, + {-1, Bit32( 55), Bit32( 51), Bit32(146)}, + {-1, Bit32( 73), Bit32( 74), Bit32(170)}, + {-1, Bit32( 41), Bit32( 57), Bit32(187)}, + {-1, Bit32( 58), Bit32( 63), Bit32(185)}, + {-1, Bit32( 89), Bit32( 82), Bit32(180)}, + {-1, Bit32( 63), Bit32( 82), Bit32(199)}, + {-1, Bit32( 98), Bit32(106), Bit32(204)}, + {-1, Bit32(121), Bit32(116), Bit32(205)}, + {-1, Bit32(138), Bit32(137), Bit32(208)}, + {-1, Bit32(139), Bit32(131), Bit32(231)}, + {-1, Bit32(139), Bit32(140), Bit32(231)}, + {-1, Bit32(154), Bit32(147), Bit32(219)}, + {-1, Bit32(152), Bit32(148), Bit32(235)}, + {-1, Bit32(165), Bit32(156), Bit32(222)}, + {-1, Bit32(169), Bit32(166), Bit32(227)}, + {-1, Bit32(157), Bit32(154), Bit32(252)}, + {-1, Bit32(181), Bit32(174), Bit32(231)}, + {-1, Bit32(169), Bit32(167), Bit32(249)}, + {-1, Bit32(186), Bit32(181), Bit32(239)}, + {-1, Bit32(199), Bit32(194), Bit32(244)}, + {-1, Bit32(200), Bit32(198), Bit32(255)}, + {-1, Bit32(211), Bit32(207), Bit32(255)}, + {-1, Bit32(222), Bit32(214), Bit32(255)}, +}; + +UBYTE __chip GTBLOGOPlanes[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFD, 0xDF, 0xF7, 0x7E, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0xC, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFD, 0xDF, 0xFF, 0x7E, 0xF7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0xC, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xEF, 0x7F, 0xF0, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF6, 0xDF, 0xE0, 0x0, 0xC, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0x18, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x77, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0xF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF0, 0xF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xDB, 0x3F, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xA4, 0x93, 0xF0, 0x7, 0xEF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xBB, 0x6D, 0xF0, 0x0, 0x10, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x83, 0x2C, 0xF0, 0x0, 0x10, 0x0, 0x0, 0x3F, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x9B, 0x4, 0x0, 0x20, 0x0, 0x10, 0x0, 0x0, 0x6, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xB2, 0x44, 0x0, 0x0, 0x18, 0x0, 0x0, 0x2, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0xDA, 0x64, 0xC0, 0x0, 0x18, 0x0, 0x0, 0x2, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xF2, 0x64, 0x0, 0x0, 0x18, 0x0, 0x0, 0x2, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFA, 0x64, 0x1, 0xF8, 0x18, 0x0, 0x4, 0x1, 0x50, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x9A, 0x65, 0xC1, 0x0, 0x18, 0x0, 0x0, 0x0, 0x20, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0x82, 0x64, 0xC1, 0x8, 0x10, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0x9F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x66, 0x1, 0x28, 0x18, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x30, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8, 0x20, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xCF, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8, 0x20, 0x0, 0x0, 0xF, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0xF3, 0xFB, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFF, 0xF1, 0x8, 0x22, 0xC0, 0x0, 0x11, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFB, 0xFF, 0xDF, 0xAF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x70, 0xFC, 0x0, 0x28, 0x3B, 0xF1, 0x8, 0x20, 0x0, 0x0, 0x11, 0x20, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF5, 0xFE, 0x7F, 0xF7, 0xF7, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x0, 0x1, 0x8, 0x30, 0x2, 0x0, 0x1, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xF7, 0xE7, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xCF, 0xFE, 0xFF, 0xE3, 0xC1, 0x38, 0xF, 0xE0, 0x0, 0x11, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xAF, 0xFE, 0x7, 0xE1, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xF7, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xA0, 0x0, 0x80, 0xE1, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFC, 0x9F, 0xF7, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x8B, 0xFB, 0xF7, 0xFC, 0xFF, 0xFF, 0xFF, 0x61, 0x60, 0x78, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xE7, 0xF7, 0xFE, 0x7F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xF7, 0xEF, 0xDF, 0xFF, 0xFF, 0x60, 0x20, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFB, 0xF7, 0x7E, 0xFF, 0x9F, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xEF, 0xFF, 0xE7, 0xDF, 0xFF, 0x62, 0x1F, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xF0, 0x0, 0x0, 0xFF, 0xBF, 0xFB, 0xF6, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xBE, 0xEF, 0xBF, 0xF7, 0xEF, 0xFF, 0x63, 0xF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x6F, 0xBF, 0xFF, 0xF6, 0xFB, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFB, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xEF, 0xFF, 0xA0, 0x6F, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0xA0, 0xF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFB, 0xEF, 0xFF, 0xC0, 0x5, 0xF8, 0x1F, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFE, 0xDF, 0xFF, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFF, 0xFF, 0xFF, 0xD8, 0x1, 0xF8, 0x1F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFE, 0xDF, 0xFF, 0xFF, 0xF7, 0xFB, 0xFF, 0xEF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xDF, 0xDF, 0x7F, 0xFF, 0xEF, 0xFF, 0xDE, 0x0, 0x78, 0x1F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0x7F, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0xD1, 0xC0, 0xF8, 0xF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF6, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFE, 0xFB, 0xFF, 0xFE, 0xFF, 0x7F, 0xFF, 0xEF, 0xFF, 0xD0, 0x60, 0x78, 0x1F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xF6, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFE, 0xFB, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xD0, 0x10, 0x78, 0x1F, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xDF, 0xFF, 0xE2, 0x10, 0x78, 0x1F, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF7, 0xEF, 0xF7, 0xF7, 0x7F, 0xBE, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xF7, 0xEF, 0xCF, 0xDF, 0xFF, 0xE1, 0x30, 0x78, 0x10, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x1F, 0xF7, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x45, 0xFD, 0xF7, 0xF0, 0x7F, 0xBF, 0xFF, 0xC0, 0x0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFB, 0xFF, 0xFF, 0xF7, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x40, 0x0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFD, 0xF7, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0x1, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFE, 0x7F, 0xFC, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xEF, 0xFE, 0x7F, 0xFD, 0xFF, 0xFF, 0xC0, 0x3, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF9, 0xFF, 0xFF, 0xFF, 0xF3, 0xF7, 0xF9, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xDF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xB0, 0x7, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xE7, 0xFF, 0xFF, 0xBF, 0xCF, 0xF7, 0xFE, 0xBA, 0xF0, 0xFF, 0x81, 0xFF, 0xFE, 0x3E, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF, 0xBC, 0xF, 0xFB, 0xFF, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF4, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, 0xA0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xE0, 0xA0, 0xF, 0xFB, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0xDC, 0x79, 0xCE, 0xA0, 0xF, 0xF1, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xD9, 0xBF, 0x58, 0x78, 0xCE, 0xA0, 0x6, 0x75, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x0, 0x7, 0xE3, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCD, 0xD3, 0x2F, 0x20, 0x3, 0x70, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xE0, 0x0, 0x3, 0xF1, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCF, 0xD3, 0xF0, 0x20, 0x3, 0x62, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x0, 0x0, 0x0, 0x78, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCF, 0xD0, 0xE0, 0x20, 0x3, 0x66, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0x0, 0x0, 0x0, 0x3C, 0x7F, 0xFF, 0xFF, 0xFD, 0xBB, 0xAF, 0xD0, 0x6F, 0x20, 0x3, 0x60, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0x0, 0x0, 0x0, 0x1E, 0x7F, 0xFF, 0xFF, 0xFD, 0x9B, 0x6D, 0xD3, 0x2F, 0x20, 0x3, 0x60, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x0, 0x0, 0x0, 0xE, 0x7F, 0xFF, 0xFF, 0xF5, 0xA7, 0x6C, 0x13, 0x6F, 0x20, 0x1, 0x4F, 0x3F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xE0, 0x0, 0x0, 0x0, 0x7, 0x3F, 0xFF, 0xFF, 0xFD, 0xFF, 0xEE, 0x30, 0x70, 0x20, 0x0, 0x4F, 0x3F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xC0, 0x3, 0xE0, 0x0, 0x7, 0x9F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xC0, 0x60, 0x0, 0x4F, 0x3F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x0, 0x7, 0xF0, 0x0, 0x7, 0x9F, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xE0, 0xC0, 0x8, 0x6F, 0xBF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0x0, 0x3F, 0xF8, 0x0, 0x3, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x0, 0x7F, 0xFC, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0x1, 0xF8, 0x1E, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xE0, 0x3, 0xF0, 0xF, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC0, 0x1F, 0xC7, 0xCF, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x80, 0x3F, 0x8F, 0xE7, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x0, 0x7C, 0x3F, 0xF3, 0x80, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x0, 0xF8, 0x7F, 0xF3, 0xC0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x1, 0xE3, 0xFF, 0xF3, 0xC0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x3, 0xC7, 0xFF, 0xF3, 0xC0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x7, 0x8F, 0xFF, 0xF3, 0xC0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xF, 0x1F, 0xFF, 0xF3, 0xC0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFE, 0x3F, 0xFF, 0xF3, 0x80, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0xC0, 0xC, 0x3F, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFC, 0x7F, 0xFF, 0xE7, 0x7, 0xF9, 0x3E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xC0, 0x8, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3, 0xFF, 0xC0, 0x38, 0xFF, 0xF8, 0x90, 0x0, 0x0, 0x4A, 0xFF, 0xFF, 0xE1, 0xFE, 0x0, 0x9, 0x9F, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x7F, 0xE0, 0x18, 0xE0, 0xC, 0x7F, 0xFF, 0xFF, 0xF6, 0xDB, 0xB6, 0x4F, 0xFA, 0x0, 0xF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0xFF, 0xF0, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xCE, 0x0, 0xD, 0x9F, 0xFF, 0xFF, 0xF6, 0xDB, 0x0, 0x97, 0xF9, 0x0, 0xC, 0x3F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x80, 0x7D, 0x98, 0xF, 0xF0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0x0, 0xC, 0x38, 0x0, 0x7E, 0xF6, 0xDB, 0xB6, 0xF, 0xFA, 0x0, 0xC, 0x3F, 0xFF, 0xF0, + 0xFF, 0xED, 0x80, 0x47, 0xE7, 0xF7, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x0, 0xE, 0x70, 0x0, 0x1, 0xFC, 0xEB, 0xFF, 0xF9, 0xFE, 0x0, 0x8, 0x7F, 0xFF, 0xF0, + 0xFF, 0x3F, 0x3F, 0xC1, 0xDC, 0x7, 0xFF, 0xE3, 0xBF, 0xF7, 0xFF, 0xEF, 0xBF, 0xFF, 0xFF, 0xFE, 0x3C, 0x0, 0x17, 0x78, 0xF1, 0x65, 0xDC, 0xED, 0x97, 0x5D, 0xFD, 0x0, 0x9, 0xCF, 0xFF, 0xF0, + 0xFF, 0xA0, 0x1F, 0xC0, 0xDE, 0x7, 0xEB, 0xA2, 0x8F, 0x38, 0x1F, 0xC1, 0xF8, 0xFF, 0xFF, 0xFC, 0x78, 0x0, 0x3D, 0x79, 0xE3, 0xF9, 0xFC, 0xED, 0xBB, 0x5E, 0xFF, 0x0, 0x9, 0xCF, 0xFF, 0xF0, + 0xFC, 0x40, 0xF, 0xC1, 0xFC, 0xF, 0x96, 0x62, 0x62, 0x74, 0xF, 0xC2, 0xAB, 0xFF, 0xFF, 0xE1, 0xF0, 0x0, 0x7A, 0xE3, 0xC7, 0xF3, 0xFD, 0xFA, 0x7F, 0xCE, 0xB8, 0x0, 0x4, 0xF, 0xFF, 0xF0, + 0xF8, 0x40, 0xF, 0xC1, 0xF8, 0xF, 0x60, 0x22, 0x61, 0xF9, 0xCA, 0x92, 0x9F, 0x7F, 0xFF, 0xC3, 0xE0, 0x0, 0xEB, 0xE3, 0xC7, 0xF3, 0xFD, 0xFB, 0xDF, 0xFF, 0x78, 0x0, 0x6, 0x1F, 0xFF, 0xF0, + 0xF8, 0x48, 0xF, 0xC1, 0x60, 0xF, 0x90, 0x23, 0x0, 0xFB, 0x6F, 0xB1, 0xE5, 0x7F, 0xFE, 0x1F, 0xC0, 0x1, 0xFB, 0xE3, 0xC7, 0xF3, 0xFD, 0xFB, 0xE0, 0x7E, 0xF8, 0x0, 0x2, 0x1F, 0xFF, 0xF0, + 0xF8, 0x7C, 0x47, 0xC0, 0xA0, 0x1F, 0x80, 0x22, 0x19, 0xFE, 0x89, 0x32, 0xE7, 0xFF, 0xFC, 0x7F, 0x80, 0x3, 0xDF, 0xE3, 0xC7, 0xF3, 0xFD, 0xFB, 0xFF, 0xFE, 0xF8, 0x0, 0x3, 0xFF, 0xFF, 0xF0, + 0xF8, 0x7E, 0x59, 0xC0, 0xA0, 0x3F, 0xA0, 0x79, 0xD9, 0xF0, 0xE, 0x2, 0xDF, 0xFF, 0xC1, 0xFC, 0x0, 0x7, 0x9F, 0xE1, 0xE7, 0xF3, 0xFD, 0xFA, 0x7F, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF8, 0x5F, 0xDB, 0xC0, 0xA0, 0x1F, 0xA0, 0xD9, 0xD9, 0xB0, 0x8C, 0x2, 0xEE, 0xFF, 0x87, 0xF8, 0x0, 0x3F, 0x1F, 0xE0, 0x3D, 0xF3, 0xFD, 0xF7, 0xBF, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0x5F, 0x3D, 0xC1, 0x0, 0x1F, 0xC0, 0x88, 0xE1, 0xF7, 0xC2, 0xF, 0xFE, 0x78, 0x3F, 0x80, 0x0, 0x7E, 0x3B, 0xF4, 0xFF, 0xF3, 0xF9, 0xFF, 0xFF, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0x4B, 0x3D, 0xC1, 0x0, 0xF, 0x80, 0x88, 0xF1, 0xBF, 0x2, 0x1F, 0xFE, 0x71, 0xFF, 0x0, 0x0, 0xF8, 0x7B, 0xF3, 0xFF, 0xF3, 0xF9, 0xFF, 0xFF, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFD, 0x41, 0xBD, 0xC1, 0xF0, 0x7, 0x41, 0xE8, 0xF9, 0xBF, 0xA8, 0x2F, 0x7F, 0x7, 0xF8, 0x0, 0x0, 0xF0, 0xFB, 0xF3, 0xFF, 0xF3, 0xF9, 0xFF, 0xFF, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFD, 0x40, 0x3D, 0xC1, 0xBE, 0x7, 0xEE, 0xF9, 0xF1, 0x8F, 0xE7, 0xCF, 0x22, 0x7F, 0xF0, 0x0, 0x0, 0xE7, 0xFB, 0xF3, 0xFF, 0x3, 0xF9, 0xFF, 0xFF, 0xFF, 0x78, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0x40, 0xD, 0xC1, 0xBE, 0x3, 0x90, 0xF8, 0x81, 0x97, 0xF0, 0x1E, 0xEE, 0xFE, 0x0, 0x0, 0x0, 0xE7, 0xFB, 0xF7, 0xFF, 0xF3, 0xF9, 0xFF, 0xFF, 0xFF, 0xB8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xC0, 0x9, 0xC1, 0xBF, 0x3, 0x81, 0x7D, 0x11, 0xBF, 0xE0, 0x1F, 0xF9, 0xFC, 0x0, 0x0, 0x0, 0xE7, 0xFB, 0xE7, 0xFF, 0xFD, 0xF9, 0xFF, 0x80, 0x3F, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xF0, 0x39, 0xC1, 0xBF, 0x81, 0xC1, 0xFF, 0xF9, 0xBF, 0xC0, 0xF, 0xFB, 0x80, 0x0, 0x0, 0x0, 0x73, 0xFB, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFC, 0x6, 0xC0, 0xBF, 0x81, 0x80, 0xFF, 0xF3, 0x3F, 0xC0, 0xF, 0xFB, 0x80, 0x0, 0x0, 0x0, 0x79, 0xFB, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0x0, 0x0, 0x5C, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFE, 0x7, 0xC0, 0xBF, 0x1, 0xC0, 0xFF, 0xE4, 0x7F, 0x0, 0x3, 0xFB, 0x80, 0x0, 0x0, 0x0, 0x78, 0x1A, 0x1, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xE0, 0x38, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF1, 0x3E, 0x7, 0xC1, 0xBC, 0x3, 0xC0, 0xFF, 0xC0, 0x3F, 0x0, 0x3, 0x87, 0x9F, 0xC0, 0x3F, 0xFF, 0xF8, 0x4, 0x0, 0x0, 0x3F, 0xFF, 0xFB, 0xFD, 0x0, 0x6, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF1, 0x3E, 0x7, 0xC1, 0xF0, 0x7, 0xE0, 0xA0, 0x40, 0x7F, 0x1F, 0xFF, 0x83, 0x80, 0x0, 0x0, 0xFF, 0x9F, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x1B, 0xE9, 0xB4, 0xF8, 0x80, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0x33, 0xE7, 0xC1, 0x4F, 0xFF, 0x8F, 0xFF, 0x1, 0x87, 0xF7, 0x1, 0x7, 0x83, 0xC0, 0xF, 0xFF, 0x24, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xEB, 0xD2, 0x5F, 0xF8, 0x40, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xF8, 0x8, 0x3F, 0xF0, 0xF, 0x4, 0x0, 0xFE, 0x0, 0xB, 0xC0, 0x3, 0x0, 0x6, 0x0, 0x0, 0xD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xB6, 0xB8, 0x20, 0xF, 0xFF, 0xFF, 0xF0, + 0xFD, 0x18, 0xF4, 0x78, 0x0, 0xC, 0x4, 0x3, 0xFE, 0x7, 0xF7, 0xFF, 0x7C, 0xFF, 0xFE, 0x0, 0x0, 0x1E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xAD, 0xB6, 0xB8, 0x10, 0xF, 0xFF, 0xFF, 0xF0, + 0xFD, 0x9, 0xF0, 0x7F, 0xFF, 0x9F, 0xFE, 0x0, 0x7, 0xF0, 0xF, 0xC0, 0x78, 0x7F, 0xFF, 0xC0, 0x0, 0xE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x52, 0xBB, 0xD8, 0x8, 0xF, 0xFF, 0xFF, 0xF0, + 0xFD, 0xA, 0x3F, 0xE0, 0x0, 0xFF, 0xFF, 0x80, 0x7, 0xF0, 0x3F, 0xF0, 0x1C, 0x0, 0xF, 0xE0, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDF, 0x7F, 0xB8, 0x8, 0xF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xBC, 0x7F, 0xE0, 0xF, 0xE7, 0xFC, 0xCF, 0xBF, 0xE0, 0x3F, 0xF0, 0x1F, 0xFF, 0xE1, 0xF8, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xD2, 0xDB, 0xF0, 0x4, 0xF, 0xBF, 0x7C, 0x10, + 0xFF, 0xF7, 0xFF, 0x9F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFC, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xBC, 0x3, 0xF6, 0x4, 0xE, 0xFF, 0xFF, 0xF0, + 0xFF, 0xC7, 0xFF, 0x9F, 0xFF, 0xF5, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFE, 0x3C, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xB3, 0xFF, 0xF0, 0x0, 0xD, 0xFF, 0xF7, 0xF0, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xF1, 0xF9, 0xFE, 0xFF, 0xF5, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0x1C, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xFD, 0xF0, 0x0, 0xB, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xF1, 0xF9, 0xD1, 0x77, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0xFD, 0xF0, 0x0, 0x17, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xF6, 0xFD, 0x91, 0xF1, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xBF, 0xFD, 0xF0, 0x0, 0x1F, 0xF7, 0xBF, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xF9, 0xF9, 0x9F, 0xF7, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xFD, 0xF0, 0x0, 0xF, 0xDF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xF9, 0xD9, 0x91, 0xFF, 0x93, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xFD, 0xF0, 0x0, 0x2F, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0x1C, 0x3F, 0xFD, 0xB1, 0x80, 0xFF, 0x93, 0xFE, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xE3, 0x8F, 0xFF, 0x2F, 0x7F, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0x1C, 0x3F, 0xFF, 0x99, 0x9F, 0x7F, 0x93, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xDD, 0x70, 0x1, 0xF, 0xFF, 0xFB, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xFF, 0xE9, 0x9E, 0x7F, 0x93, 0x5F, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xDD, 0x70, 0x0, 0x4E, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xF7, 0xFC, 0xFF, 0xFF, 0x99, 0x9F, 0xFF, 0x92, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0xDD, 0x70, 0x0, 0x4E, 0xFF, 0xFF, 0xF0, + 0xFC, 0xE7, 0xE7, 0xFF, 0xFF, 0xEF, 0xF8, 0xBD, 0x7F, 0x98, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xCF, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xAF, 0xDD, 0x70, 0x0, 0x4F, 0xFF, 0xFF, 0xF0, + 0xFC, 0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFA, 0xFE, 0xFF, 0x7F, 0x6E, 0xDF, 0xFF, 0xFF, 0xFF, 0xCF, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0xDD, 0x70, 0x2, 0x4E, 0xFF, 0xFF, 0xF0, + 0xFC, 0xE7, 0xE0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x0, 0xE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xAB, 0xFD, 0xF0, 0x2, 0x4E, 0xFF, 0xFF, 0xF0, + 0xFC, 0xE7, 0xF0, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x0, 0x1E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0xFD, 0xF2, 0x4, 0xF, 0xFF, 0xFF, 0xF0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x0, 0x1E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xAF, 0xFD, 0xF4, 0x4, 0x2F, 0x7F, 0xFB, 0xF0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0x7D, 0xF8, 0x8, 0x2F, 0xFF, 0xF7, 0xF0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFE, 0x3C, 0x0, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xAF, 0xDD, 0xD0, 0x0, 0xF, 0xDF, 0xEF, 0xF0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0xAF, 0xF5, 0xC0, 0x31, 0xFF, 0xFF, 0xFE, 0x7C, 0x0, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF, 0xFD, 0x70, 0x10, 0x1F, 0xF7, 0xBF, 0xF0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0x97, 0xE9, 0x87, 0xF0, 0xFF, 0xFF, 0xFE, 0x78, 0x0, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF, 0xFD, 0x70, 0x20, 0x7, 0xFF, 0xFF, 0xF0, + 0xFC, 0xD7, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF3, 0x3F, 0xFF, 0x4F, 0xFF, 0xFC, 0xE0, 0x0, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xCF, 0xFD, 0x70, 0xC0, 0xB, 0xFF, 0xFF, 0xF0, + 0xFC, 0xD7, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF2, 0x73, 0xDC, 0x1F, 0xFF, 0xF9, 0xE0, 0x0, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xDB, 0xFD, 0x71, 0x0, 0xD, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xF2, 0xFE, 0x6C, 0xF7, 0xFF, 0xF1, 0xE0, 0x0, 0x73, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBE, 0xFA, 0xE6, 0x0, 0xF, 0xFF, 0xEF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x37, 0x33, 0x72, 0x63, 0xAF, 0xFF, 0xE3, 0xC0, 0x0, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0x9A, 0x80, 0x0, 0xF, 0xBF, 0xBF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x37, 0x32, 0xE2, 0x67, 0xEF, 0xFF, 0xC7, 0x80, 0x1, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x2C, 0xD2, 0xFA, 0x67, 0xEF, 0xFF, 0x8F, 0x0, 0x3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFE, 0xFF, 0x33, 0x32, 0xC2, 0x64, 0xEF, 0xFF, 0x1E, 0x0, 0x7, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0xE2, 0x64, 0xFB, 0xFE, 0x3C, 0x0, 0xF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xF3, 0xE2, 0x64, 0xF8, 0x0, 0xF8, 0x0, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xF7, 0x77, 0x22, 0x6C, 0x7, 0xF0, 0x0, 0x3C, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xF6, 0xE2, 0x26, 0x1F, 0xFF, 0xE0, 0x0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xE6, 0xFC, 0x0, 0x1F, 0xFF, 0xC0, 0x0, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x0, 0x3, 0xF8, 0x0, 0x1, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F, 0xFE, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x70, 0x0, 0x1, 0xF0, 0x0, 0xF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFB, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1, 0xEF, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0x0, 0x0, 0x0, 0x0, 0x11, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6F, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xA8, 0x1, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x6F, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0xC1, 0xF0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x6F, 0xBF, 0xFB, 0xE0, 0x0, 0xF, 0xFF, 0x80, 0xF0, + 0xFF, 0x7, 0xC0, 0x83, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xEF, 0xBE, 0xD1, 0xE0, 0x0, 0x4, 0xB0, 0xDE, 0xF0, + 0xFF, 0x7, 0x81, 0x9B, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x40, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xAD, 0x21, 0xF0, 0x0, 0x0, 0x30, 0x78, 0xF0, + 0xFF, 0x7, 0x90, 0x3, 0xFF, 0x9B, 0x33, 0xF0, 0xF0, 0x3C, 0x1E, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xEA, 0xAD, 0xB1, 0xF0, 0x0, 0x3, 0x26, 0x61, 0xF0, + 0xFF, 0x7, 0x8F, 0xFB, 0xFF, 0x98, 0x1, 0xC0, 0x60, 0x38, 0xC, 0x10, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEA, 0xAD, 0xB1, 0xF0, 0x0, 0x3, 0xBE, 0x63, 0xF0, + 0xFF, 0x7, 0x8F, 0xFB, 0xFF, 0x98, 0x0, 0x8E, 0x66, 0x33, 0xCF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEA, 0xAD, 0xB1, 0xF0, 0x0, 0x3, 0xBE, 0x4F, 0xF0, + 0xFF, 0x7, 0x8F, 0xFB, 0xFF, 0x98, 0x88, 0xFE, 0x67, 0x33, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xEA, 0xAD, 0xB1, 0xF0, 0x0, 0x3, 0xBE, 0x4E, 0xF0, + 0xF3, 0x5F, 0xB8, 0x2C, 0xFF, 0x99, 0x99, 0xC1, 0xCE, 0x23, 0xB9, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xDB, 0x76, 0x9B, 0xC0, 0x0, 0x3, 0x97, 0x4E, 0x70, + 0xF3, 0x89, 0x7C, 0x69, 0xDF, 0x99, 0x99, 0xE1, 0xCE, 0x20, 0x1E, 0x13, 0x9F, 0xFF, 0xFF, 0xCF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD7, 0x4E, 0x9B, 0xC0, 0x0, 0x3, 0x90, 0x40, 0xF0, + 0xF3, 0xFD, 0x38, 0x7C, 0xDF, 0x99, 0x99, 0x9F, 0xCE, 0x23, 0xFF, 0x97, 0xDF, 0xFF, 0xFF, 0xDF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xDF, 0x5C, 0x8B, 0xC0, 0x0, 0x7, 0x98, 0xE0, 0xF0, + 0xFE, 0xFD, 0xFF, 0xF7, 0xDF, 0x33, 0x31, 0x1C, 0xCC, 0x67, 0x99, 0x97, 0xDF, 0xFF, 0xFF, 0xDF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xDF, 0x7C, 0xB, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFD, 0xFF, 0xF7, 0xDF, 0x33, 0x31, 0x2, 0x40, 0x68, 0x58, 0x17, 0xDF, 0xFF, 0xFF, 0xDF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xDF, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFD, 0xFF, 0xF7, 0xDF, 0x33, 0x31, 0xC0, 0x60, 0x78, 0x3C, 0x37, 0xDF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xDF, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFD, 0x3F, 0xFF, 0xDF, 0xBB, 0xBB, 0xC3, 0x72, 0x78, 0x7E, 0x77, 0xDF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xDF, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFD, 0x41, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x7F, 0xFF, 0xF7, 0xDF, 0xFF, 0xFF, 0xDF, 0x3, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xDF, 0x40, 0xA, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xE, 0xFD, 0xFF, 0xF7, 0xFF, 0xFE, 0x3F, 0xFF, 0xEE, 0x63, 0xFF, 0xF7, 0xDF, 0xF0, 0x7F, 0xDF, 0x3C, 0xF9, 0xFF, 0xF8, 0x7F, 0xFF, 0xFE, 0xD1, 0x40, 0xA, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEA, 0xFD, 0xFF, 0xF7, 0xFF, 0xF7, 0xFB, 0xFF, 0xE0, 0x7F, 0x3F, 0xF7, 0xDF, 0x9F, 0xCF, 0xDF, 0x3E, 0xFD, 0xFF, 0xCF, 0xE7, 0xFB, 0xF1, 0xD8, 0xDF, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEB, 0xF4, 0x3, 0x8, 0x0, 0x3C, 0x2, 0x0, 0x1D, 0x0, 0x20, 0x4, 0x40, 0xC0, 0x18, 0x10, 0x80, 0x84, 0x0, 0xC0, 0x4, 0x2, 0x5, 0xC6, 0x9F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEA, 0xFF, 0xFF, 0xF7, 0xFF, 0xB5, 0xFF, 0x7F, 0x8B, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xF5, 0xFF, 0x40, 0xFB, 0xFE, 0xFF, 0xFD, 0xFE, 0xFB, 0xFE, 0xFF, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEB, 0xDF, 0xFC, 0xF7, 0xFF, 0x7F, 0xFF, 0xBF, 0x11, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xC3, 0xFB, 0xFD, 0xFF, 0xFE, 0xFE, 0xFD, 0xEE, 0xBF, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEB, 0xDF, 0xFC, 0xF7, 0xFE, 0xFF, 0xFF, 0xDF, 0xDE, 0xCF, 0xFD, 0xFF, 0xF9, 0xEF, 0xDF, 0xE7, 0xC7, 0x77, 0xFB, 0xFF, 0xFF, 0x7F, 0x7D, 0xAE, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xE7, 0xDF, 0xFC, 0xF7, 0xFD, 0xFE, 0x3F, 0xEF, 0xDF, 0xC0, 0x7, 0x8B, 0xF6, 0xF9, 0x1F, 0xE7, 0xFF, 0xAF, 0xF7, 0xF8, 0x7F, 0xBF, 0xBE, 0xEE, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF5, 0xDF, 0xFC, 0xF7, 0xFF, 0xF7, 0xF7, 0xEF, 0xBF, 0x7F, 0x82, 0xCF, 0xFA, 0xE8, 0xBF, 0xE7, 0xFF, 0x3F, 0xF7, 0xEF, 0xDF, 0xDF, 0xBF, 0x6F, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xDF, 0xFC, 0xF7, 0xFB, 0xE3, 0xFB, 0xF7, 0xEE, 0xFF, 0xBA, 0x75, 0xFE, 0xEF, 0xEF, 0xE7, 0xFF, 0x4F, 0xEF, 0xDF, 0xF7, 0xDF, 0xDF, 0xAC, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF7, 0x5F, 0xFC, 0xF7, 0xFF, 0xF3, 0xFD, 0xF7, 0x91, 0xFF, 0xD2, 0xBF, 0x8E, 0xF8, 0x73, 0xE7, 0xFF, 0x5F, 0xEF, 0xBF, 0xFF, 0xFF, 0xEF, 0xEB, 0x40, 0xA, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xDF, 0xFC, 0xF7, 0xF7, 0xD3, 0xFE, 0xFF, 0x73, 0xFF, 0xEE, 0xBF, 0xEE, 0xFF, 0xF3, 0xE7, 0xFF, 0x5F, 0xFF, 0x7F, 0xFB, 0xEF, 0xEF, 0xEB, 0x7F, 0xE2, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xDF, 0xFC, 0xF7, 0xF7, 0xD4, 0x2, 0xFB, 0x6F, 0xFF, 0xFE, 0xFB, 0xDD, 0xEF, 0xB3, 0xE7, 0x87, 0x5D, 0xDF, 0x7F, 0xFA, 0xF, 0xF8, 0xAE, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF7, 0xDF, 0xFC, 0xF7, 0xF7, 0xF4, 0x2, 0xFB, 0x7B, 0xFE, 0xCE, 0xCB, 0x64, 0x67, 0x4B, 0xE7, 0x7E, 0xDF, 0xDF, 0x7F, 0xFF, 0xEF, 0xF7, 0xA7, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xE7, 0x5F, 0xFC, 0xF7, 0xF7, 0xF3, 0xFF, 0xFB, 0xFB, 0x9F, 0x2E, 0xCB, 0x60, 0x3F, 0x17, 0xE7, 0xFF, 0x5E, 0xDF, 0x7F, 0xFD, 0xEF, 0xFF, 0xAF, 0x7F, 0xF3, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEF, 0xBF, 0xFB, 0xF7, 0xF7, 0xE7, 0xFE, 0xFB, 0x7B, 0xFF, 0xED, 0xF6, 0xDA, 0xEE, 0xB7, 0xEF, 0x7F, 0xFE, 0xDF, 0x7F, 0xFD, 0xEF, 0xF7, 0x56, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEF, 0x3F, 0xFB, 0xF7, 0xF7, 0xC7, 0xFE, 0xFB, 0x85, 0xFD, 0xDD, 0xF7, 0xF9, 0xF7, 0x3E, 0x27, 0x3, 0xFE, 0xFF, 0x7F, 0xFF, 0xEF, 0xEF, 0x58, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEF, 0xBF, 0xFB, 0xF7, 0xFF, 0xC7, 0xFE, 0xFF, 0xF9, 0xFC, 0x17, 0x7, 0xF9, 0xF1, 0x7E, 0x2F, 0xC2, 0xFE, 0xEF, 0x7F, 0xFB, 0xEF, 0xFF, 0x5C, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEF, 0xBF, 0xFB, 0xF7, 0xFB, 0xF7, 0xFD, 0xF6, 0x85, 0x9B, 0xEF, 0xBF, 0xF5, 0xEF, 0xBB, 0xCE, 0xBD, 0xBE, 0xEF, 0xBF, 0xFB, 0xFF, 0xDF, 0xDC, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xED, 0xBF, 0xFB, 0xF7, 0xFB, 0xEF, 0xFD, 0xF7, 0xBE, 0xFF, 0xBF, 0x7F, 0xFB, 0xEF, 0xBD, 0xFF, 0x7F, 0x7E, 0xEF, 0xDF, 0xF7, 0xDF, 0xBE, 0x9C, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xEB, 0xBF, 0xFB, 0xF7, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0x7F, 0x7E, 0xFF, 0xFB, 0xF7, 0x7D, 0xFF, 0xC7, 0xFF, 0xF7, 0xEF, 0xEF, 0xDF, 0xFF, 0xDD, 0x7F, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0x97, 0xBF, 0xFB, 0xF7, 0xFD, 0xFC, 0xCF, 0xEF, 0xDF, 0xDD, 0xFE, 0xFF, 0xFF, 0xFD, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xFB, 0x3F, 0xBF, 0x7D, 0xFD, 0xFF, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xD7, 0xBF, 0xFB, 0xF7, 0xFE, 0xFF, 0xFF, 0xDF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xFE, 0xFB, 0x8D, 0x3F, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xFF, 0xFD, 0xF7, 0xFF, 0x7F, 0xFF, 0xFF, 0x17, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0x7D, 0xFB, 0xAD, 0x5F, 0xE7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFD, 0xF7, 0xFF, 0xBF, 0xFF, 0x7F, 0xB, 0xDF, 0xF7, 0xFF, 0xFE, 0xFF, 0xE7, 0xCF, 0x7E, 0xEF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xB7, 0x14, 0x17, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFD, 0xF7, 0xFF, 0xEF, 0xFE, 0xFF, 0xFE, 0xDF, 0xDF, 0xFF, 0xF7, 0x40, 0x73, 0xFF, 0x9F, 0xFF, 0xFF, 0xBF, 0xFB, 0xFB, 0xFF, 0xBC, 0x18, 0x7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xF7, 0x83, 0xFC, 0xF, 0xFF, 0xE4, 0x7, 0xFF, 0xF7, 0xC0, 0xCF, 0x8, 0x39, 0xDF, 0x27, 0xD8, 0x67, 0x3F, 0xFF, 0xF0, 0x1F, 0xF8, 0x1F, 0xBF, 0xBD, 0xB7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFB, 0x7C, 0x17, 0x87, 0xF1, 0xD2, 0x67, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0x3F, 0xE5, 0xFB, 0xB1, 0xDF, 0xE7, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x6D, 0xB7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x27, 0x3F, 0xA6, 0x7F, 0xC9, 0xDF, 0xE7, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0x3F, 0xEE, 0x7F, 0xD9, 0xCF, 0xE7, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7, 0xFF, 0xDD, 0x3E, 0xFE, 0xF7, 0xF9, 0xFF, 0xA7, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6D, 0xB7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE0, 0xF, 0xFC, 0xF1, 0x3D, 0x3E, 0x4, 0x89, 0xFF, 0x37, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xF9, 0xF1, 0x3F, 0x7E, 0x0, 0x0, 0xBF, 0x37, 0xFF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xF9, 0xF1, 0x37, 0xFE, 0x79, 0xF2, 0x9F, 0x37, 0xDF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6D, 0xB7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFB, 0xFD, 0x32, 0xF, 0xF, 0xFB, 0x97, 0x37, 0xCF, 0x9F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFB, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF, 0x30, 0x1E, 0xB, 0xFB, 0xD7, 0x73, 0xF7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x6B, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0xF7, 0xDF, 0xFF, 0xF7, 0xFF, 0xFF, 0xEF, 0xFF, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6D, 0xB7, 0x80, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0x9E, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xF7, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x81, 0x2, 0x20, 0x8, 0x81, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x81, 0x2, 0x20, 0x0, 0x81, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x0, 0x10, 0x80, 0xF, 0xE1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x9, 0x20, 0x1F, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1F, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x81, 0x88, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1F, 0xF0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0xF, 0xF0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xF0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x24, 0xC0, 0x0, 0x0, 0x17, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x5B, 0x6C, 0xF, 0xF8, 0x17, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x44, 0x92, 0xF, 0xFF, 0xE7, 0xFF, 0xFF, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4C, 0x7C, 0xD3, 0xF, 0xFF, 0xE7, 0xFE, 0xFF, 0xFF, 0xE0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x64, 0xFB, 0xFF, 0xDF, 0xFF, 0xE7, 0xFE, 0x1F, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x4D, 0xBB, 0xFF, 0xFF, 0xE9, 0xBE, 0xEF, 0xFD, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x2E, 0x25, 0x9B, 0x3F, 0xFF, 0xEC, 0x96, 0xEF, 0xFD, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0xD, 0x9B, 0xFF, 0xFF, 0xEE, 0xE6, 0xEF, 0xFD, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4F, 0xE4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x2, 0x5, 0x9B, 0xFE, 0x37, 0xEE, 0xF7, 0xC, 0x2, 0xB0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x22, 0x65, 0x9A, 0x3F, 0xFF, 0xE8, 0xF7, 0xC8, 0x2, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x2, 0xC, 0x7D, 0x9B, 0x3F, 0xF7, 0xE6, 0xF7, 0xE8, 0x2, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x39, 0x99, 0xFF, 0xD7, 0xEE, 0xF7, 0xE8, 0x2, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xCF, 0xEF, 0xE8, 0xF7, 0xE8, 0x2, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFD, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0xF7, 0xC9, 0xF7, 0xF8, 0x2, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xC8, 0x1F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0xF7, 0xCF, 0xFF, 0xF8, 0x11, 0x80, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x7E, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0xE, 0xF7, 0xCD, 0x2F, 0xF8, 0xE, 0x80, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0x0, 0x1, 0xFC, 0x0, 0x1F, 0xE1, 0xF0, 0x0, 0xFF, 0x9F, 0x80, 0x7E, 0x0, 0x3, 0x7D, 0x83, 0xFF, 0xF7, 0xE4, 0xE, 0xF7, 0xCC, 0xF, 0xF8, 0xE, 0xE0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x0, 0xFC, 0x0, 0x7F, 0xF9, 0xF0, 0xF, 0xFF, 0x9F, 0x80, 0x7E, 0x0, 0xF, 0xFF, 0xC0, 0x0, 0x3F, 0xFB, 0xFE, 0xF7, 0xD0, 0x3, 0xF8, 0x1E, 0xC0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFC, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xF9, 0xF0, 0xF, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0xF, 0xFF, 0xE0, 0x1, 0xFF, 0xFE, 0x3E, 0xCF, 0xCF, 0xC1, 0xF8, 0xE, 0xC0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x3F, 0xFF, 0xF0, 0x3, 0xFF, 0xFF, 0x1, 0xF8, 0x50, 0x7, 0x7, 0xDF, 0xC0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x3F, 0xFF, 0xF8, 0x7, 0xFF, 0xFF, 0x81, 0xF8, 0x50, 0x80, 0x78, 0xE, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x0, 0x7, 0xF8, 0x5F, 0xF0, 0x3F, 0x80, 0xFF, 0x80, 0x7E, 0x0, 0x7F, 0xA7, 0xFC, 0x7, 0xFC, 0xFF, 0xC1, 0xF8, 0x53, 0xE0, 0xFC, 0x1F, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0xF, 0xF0, 0xF, 0xF0, 0x7F, 0x0, 0x7F, 0x80, 0x7E, 0x0, 0xFF, 0x81, 0xFE, 0xF, 0xF0, 0x1F, 0xC1, 0xF8, 0x53, 0xC0, 0x7C, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x0, 0xF, 0xE0, 0xF, 0xF0, 0x7E, 0x0, 0x3F, 0x80, 0x7E, 0x0, 0xFE, 0x0, 0x7F, 0xF, 0xC0, 0xF, 0xC1, 0xF8, 0x51, 0xE0, 0x7C, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF0, 0x0, 0x0, 0x0, 0x9F, 0x80, 0x3, 0xF0, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x0, 0xF8, 0x0, 0x7F, 0x1F, 0xC0, 0x7, 0xE1, 0xF8, 0x50, 0xFF, 0xFC, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x1F, 0xFF, 0xFF, 0x1F, 0x80, 0x3, 0xF0, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x3F, 0x1F, 0x80, 0x7, 0xE1, 0xF8, 0x10, 0x3F, 0xFC, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xF0, 0x1F, 0xFF, 0xFF, 0x1F, 0x0, 0x1, 0xF1, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x3F, 0x1F, 0x0, 0x3, 0xF1, 0xF8, 0x10, 0x17, 0xFC, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xFC, 0x1F, 0xFF, 0xFF, 0x1F, 0x80, 0x3, 0xF1, 0xF8, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x3F, 0x9F, 0x0, 0x3, 0xE1, 0xF8, 0x10, 0x3, 0xFC, 0xF, 0x90, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x1F, 0xFF, 0xFE, 0x1F, 0x80, 0x1, 0xF1, 0xF8, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x3F, 0x1F, 0x0, 0x3, 0xF1, 0xF8, 0x30, 0x1, 0xFC, 0xF, 0xE0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x1F, 0xFF, 0xFE, 0x1F, 0x80, 0x3, 0xF1, 0xF8, 0x0, 0xF, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x1F, 0x1F, 0x0, 0x7, 0xE1, 0xF8, 0x2A, 0x0, 0xFC, 0xF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x7F, 0x1F, 0x0, 0x1, 0xF0, 0xF8, 0x0, 0x3F, 0x80, 0x7E, 0x1, 0xF0, 0x0, 0x3F, 0x1F, 0x80, 0x3, 0xF1, 0xF8, 0x2E, 0x80, 0x7C, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFE, 0x0, 0x1, 0xFE, 0x1F, 0x80, 0x1, 0xF0, 0xFE, 0x0, 0x1F, 0x80, 0x7E, 0x0, 0xF8, 0x0, 0x3E, 0x1F, 0x80, 0x7, 0xF1, 0xF8, 0x2F, 0xC0, 0x3C, 0xF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0x0, 0x3, 0xFE, 0x1F, 0x80, 0x1, 0xF0, 0xFE, 0x0, 0x3F, 0x80, 0x7E, 0x0, 0xF8, 0x0, 0x3F, 0x1F, 0xC0, 0xF, 0xE1, 0xF8, 0x2F, 0xF0, 0x3C, 0xF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xA0, 0xF, 0xF8, 0xF, 0xE0, 0x7, 0xF0, 0xFF, 0x0, 0x7F, 0x80, 0x7E, 0x1, 0xFE, 0x0, 0xFE, 0xF, 0xC0, 0x7, 0xE1, 0xF9, 0xD1, 0xF0, 0x3C, 0xF, 0xB0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x1F, 0xF8, 0x7, 0xE8, 0x17, 0xF0, 0x7F, 0x80, 0xFF, 0x80, 0x7E, 0x0, 0xFE, 0x0, 0xFE, 0x7, 0xE0, 0xF, 0xC1, 0xF8, 0xD3, 0xC0, 0x3C, 0xF, 0x70, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7, 0xF8, 0x5F, 0xF0, 0x7F, 0xDB, 0xFF, 0x80, 0x7E, 0x0, 0x7F, 0xC7, 0xFC, 0x7, 0xF4, 0x3F, 0x81, 0xF8, 0x20, 0x0, 0x7C, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xD0, 0x3, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x3F, 0xFF, 0xF8, 0x3, 0xFF, 0xFF, 0x81, 0xF8, 0x20, 0x0, 0x7C, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0x80, 0x7, 0xFF, 0xFF, 0xF0, 0xF, 0xFF, 0xEF, 0x80, 0x7E, 0x0, 0x1F, 0xFF, 0xF0, 0x1, 0xFF, 0xFF, 0x1, 0xF8, 0x20, 0x1, 0xFC, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFE, 0x0, 0x1, 0xFF, 0xFD, 0xF0, 0xF, 0xFF, 0xDF, 0x80, 0x7E, 0x0, 0x7, 0xFF, 0xF0, 0x0, 0xFF, 0xFE, 0x1, 0xF8, 0x20, 0x0, 0xFC, 0x1F, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xF8, 0x0, 0x0, 0x7F, 0xF1, 0xF0, 0x3, 0xFF, 0x9F, 0x80, 0x7E, 0x0, 0x1, 0xFF, 0xC0, 0x0, 0x3F, 0xFE, 0x1, 0xF8, 0x40, 0x1, 0xFC, 0x1F, 0xC0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0x1F, 0xC1, 0xF0, 0x0, 0xFA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7C, 0x80, 0x0, 0x7, 0xE0, 0x0, 0x0, 0x58, 0xF, 0xFC, 0x1, 0xB0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5D, 0x1F, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0xF, 0x5F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x1F, 0x5F, 0xBF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xC0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x0, 0x2, 0x41, 0x23, 0x86, 0x31, 0x5F, 0xBF, 0xFB, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0x1F, 0xFF, 0xFC, 0x78, 0x0, 0x0, 0x0, 0x26, 0x40, 0xA7, 0x87, 0x31, 0x43, 0x3F, 0xF5, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x7F, 0xFF, 0xFF, 0x9C, 0x0, 0x0, 0x0, 0x2, 0x44, 0x32, 0x2C, 0xD0, 0xCF, 0x97, 0x7B, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xFF, 0xFF, 0xFF, 0xCE, 0x0, 0x0, 0x0, 0x2, 0x44, 0x30, 0x2C, 0xF, 0xEE, 0xF7, 0x77, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE7, 0xFF, 0xFF, 0xFF, 0xF7, 0x0, 0x0, 0x0, 0x2, 0x44, 0x30, 0x2F, 0x1F, 0xEE, 0xF7, 0x77, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFB, 0x80, 0x0, 0x0, 0x2, 0x44, 0x50, 0x2F, 0x90, 0xEE, 0xF7, 0x76, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF9, 0x80, 0x0, 0x0, 0x2, 0x64, 0x92, 0x2C, 0xD0, 0xEE, 0xF7, 0x70, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFD, 0x80, 0x0, 0x0, 0xA, 0x58, 0x93, 0xEC, 0x90, 0xEE, 0xF7, 0x6F, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xC0, 0x0, 0x0, 0x2, 0x0, 0x11, 0xCF, 0x8F, 0xD7, 0xF3, 0x6F, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x60, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x3F, 0x93, 0xF4, 0xEF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x60, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xDF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xBF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x7F, 0xFF, 0xC7, 0xEF, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE, 0xFF, 0xFF, 0x8F, 0xF7, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1D, 0xFF, 0xFE, 0x38, 0x33, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0xFF, 0xFC, 0x70, 0x1B, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1B, 0xFF, 0xF3, 0xC0, 0xD, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xFF, 0xE7, 0x80, 0xC, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xFF, 0xDC, 0x0, 0xC, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xFF, 0xB8, 0x0, 0xC, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xFF, 0x70, 0x0, 0xC, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xFE, 0xE0, 0x0, 0xC, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0xF9, 0xC0, 0x0, 0xD, 0xFF, 0xFF, 0x20, 0x0, 0x0, 0x1, 0xFF, 0xF8, 0x0, 0x0, 0x3F, 0xDC, 0x7F, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x3, 0x80, 0x0, 0x1B, 0xFF, 0xF8, 0xDE, 0x0, 0x0, 0xFB, 0x5C, 0x70, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFC, 0xFF, 0xC0, 0x3C, 0xFF, 0xFB, 0x9F, 0xFF, 0x0, 0x4D, 0xD8, 0x0, 0x1E, 0x0, 0x70, 0xFF, 0xDF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xDC, 0xE0, 0x6, 0x9F, 0x0, 0x0, 0xC, 0xA4, 0x49, 0xB0, 0x5, 0xF7, 0xDF, 0xDF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x7F, 0xEF, 0xF0, 0x0, 0x3F, 0xFF, 0xDF, 0xFF, 0xC0, 0x0, 0x7F, 0xF8, 0x37, 0xFF, 0xF6, 0x60, 0x0, 0x0, 0xC, 0xA4, 0xFF, 0x68, 0x7, 0xBF, 0xDF, 0x3F, 0xFF, 0xF0, + 0x0, 0x7F, 0x80, 0x7C, 0x90, 0xD, 0xFF, 0xFC, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6F, 0xFF, 0xF7, 0xC7, 0xFF, 0x81, 0xC, 0xA7, 0xFF, 0xF0, 0x5, 0xBB, 0xDC, 0xFF, 0xFF, 0xF0, + 0x0, 0x52, 0xFF, 0x86, 0xE0, 0x7, 0xF8, 0xE, 0x0, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xCF, 0xFF, 0xF3, 0x8F, 0xFF, 0x9C, 0x7, 0x16, 0x40, 0x16, 0x0, 0x3D, 0xED, 0xFF, 0xFF, 0xF0, + 0x0, 0x1F, 0x80, 0x1, 0xA0, 0x0, 0x3, 0x80, 0x20, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xDF, 0xFF, 0xFA, 0x81, 0xA, 0x9A, 0x27, 0x16, 0x68, 0xB2, 0x3, 0xFE, 0xED, 0xFF, 0xFF, 0xF0, + 0x2, 0xA0, 0x0, 0x0, 0xA0, 0x0, 0x1E, 0x1, 0x8, 0xC0, 0x0, 0x1, 0x87, 0x0, 0x0, 0x3, 0xBF, 0xFF, 0xFC, 0x81, 0x1A, 0x6, 0x7, 0x16, 0x44, 0xB1, 0x1, 0xFF, 0xED, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0xE0, 0x8, 0x68, 0x0, 0x1, 0x88, 0x9, 0x81, 0x5E, 0x0, 0x0, 0x1E, 0x7F, 0xFF, 0xF1, 0x12, 0x34, 0xC, 0xB, 0xD, 0x83, 0xBF, 0xC6, 0x3F, 0x6D, 0xEF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0xE0, 0x0, 0xD0, 0x20, 0x1, 0x82, 0x7, 0xC1, 0xE0, 0x80, 0x0, 0x3C, 0xFF, 0xFF, 0xEC, 0x12, 0x34, 0xC, 0xB, 0xC, 0x7F, 0xFF, 0x87, 0xF8, 0x6E, 0x1F, 0xFF, 0xF0, + 0x0, 0x0, 0x8, 0x1, 0x80, 0x0, 0x30, 0x1, 0x1, 0x8C, 0x0, 0xB1, 0x1B, 0x80, 0x1, 0xE3, 0xFF, 0xFF, 0xCC, 0x12, 0x34, 0xC, 0xB, 0xC, 0x7F, 0x81, 0x87, 0xFF, 0xC7, 0xFF, 0xFF, 0xF0, + 0x8, 0x0, 0x8, 0x0, 0xA0, 0x0, 0x20, 0x1, 0x19, 0x18, 0x46, 0x1, 0x18, 0x0, 0x3, 0x87, 0xFF, 0xFF, 0xB6, 0x12, 0x34, 0xC, 0xB, 0xC, 0x60, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x8, 0x22, 0x25, 0x0, 0xA0, 0x0, 0x20, 0x26, 0x19, 0x1F, 0x42, 0x1, 0x2C, 0x0, 0x3E, 0x3F, 0xFF, 0xFF, 0x76, 0x13, 0xE4, 0xC, 0xB, 0xD, 0xE0, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x8, 0x1, 0xB7, 0x0, 0xA0, 0x0, 0x40, 0x26, 0x19, 0x17, 0xC0, 0x1, 0x1F, 0x0, 0x78, 0xFF, 0xFF, 0xFC, 0xF6, 0x17, 0xFE, 0xC, 0xB, 0xF, 0xE0, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x9, 0x50, 0x82, 0x1, 0x20, 0x0, 0x0, 0x55, 0x11, 0x98, 0x44, 0x3, 0x1, 0x87, 0xC3, 0xFF, 0xFF, 0xF9, 0xD6, 0x3, 0x0, 0xC, 0xE, 0x0, 0x60, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x1, 0x40, 0x82, 0x1, 0x20, 0x0, 0x40, 0x55, 0x11, 0x98, 0xC4, 0x3, 0x1, 0x8E, 0xF, 0xFF, 0xFF, 0xE7, 0x96, 0x4, 0x0, 0xC, 0xE, 0x0, 0x60, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x5, 0x40, 0xC2, 0x0, 0xC0, 0x4, 0xC1, 0x55, 0x19, 0xB8, 0x24, 0x31, 0x93, 0xF8, 0x7F, 0xFF, 0xFF, 0xCF, 0x16, 0x4, 0x0, 0xC, 0xE, 0x0, 0x60, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x1, 0x40, 0x42, 0x0, 0x44, 0x0, 0x1, 0x5, 0x1, 0x97, 0x82, 0x10, 0xD3, 0x83, 0xFF, 0xFF, 0xFF, 0xD8, 0x16, 0x4, 0x0, 0xFC, 0xE, 0x0, 0x60, 0x1, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x40, 0x42, 0x0, 0x40, 0x2, 0xE, 0x5, 0x71, 0x8F, 0x0, 0x1, 0x11, 0xF, 0xFF, 0xFF, 0xFF, 0xD8, 0x16, 0x7, 0xFF, 0xFC, 0xE, 0x0, 0x3F, 0xFF, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x80, 0x46, 0x0, 0x40, 0x2, 0x0, 0x82, 0xE1, 0xA0, 0x20, 0x10, 0x6, 0x7F, 0xFF, 0xFF, 0xFF, 0xD8, 0x16, 0x1F, 0xFF, 0x82, 0xE, 0x0, 0x7F, 0xC0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0xD0, 0x44, 0x0, 0x40, 0x0, 0x0, 0x0, 0x1, 0xA0, 0x0, 0x0, 0x4, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0xC, 0x0, 0x0, 0xE, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0xC0, 0x1, 0x1, 0x40, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x16, 0x0, 0x0, 0x0, 0xE, 0x1, 0xFF, 0xFF, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0xC0, 0x4, 0x1, 0x41, 0x0, 0x40, 0x80, 0x2, 0x0, 0x0, 0x0, 0x4, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xF1, 0xFE, 0x0, 0x0, 0xC, 0xFF, 0xFF, 0x9F, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x60, 0x4, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x79, 0x1F, 0xFF, 0xC0, 0x0, 0x1B, 0xEF, 0xF0, 0x1F, 0xFF, 0xC0, 0x4, 0x2, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x42, 0x0, 0x0, 0x0, 0x0, 0x20, 0x1F, 0x80, 0x1, 0x1F, 0x7D, 0xFB, 0x0, 0x0, 0x0, 0x0, 0x74, 0xFF, 0x80, 0x3F, 0x80, 0x1F, 0xF6, 0x10, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x40, 0xF, 0xF7, 0xF0, 0xE, 0xFE, 0x7D, 0xF0, 0x81, 0xF8, 0xFF, 0xC0, 0xF, 0xFF, 0x3D, 0xFF, 0xF8, 0x0, 0x0, 0xFF, 0xF6, 0x20, 0x12, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x8, 0x87, 0xF8, 0xC1, 0xF0, 0x0, 0xF0, 0x1F, 0xF1, 0x4, 0x6, 0x0, 0xFB, 0x80, 0x6, 0x0, 0x0, 0x2, 0x40, 0x0, 0x0, 0x0, 0x0, 0x6, 0x3F, 0xB6, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x17, 0xF4, 0x78, 0x0, 0xF, 0xFC, 0x3, 0xFC, 0x4, 0x17, 0xFF, 0xC3, 0x0, 0x1F, 0xFF, 0xFF, 0xF9, 0x80, 0x0, 0x0, 0x0, 0x0, 0x6, 0x4, 0x90, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x49, 0xC0, 0x40, 0x1, 0x9F, 0x1, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x3, 0xFF, 0xFF, 0xFD, 0x80, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0xCD, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x1, 0x4A, 0x20, 0x30, 0x0, 0x80, 0x1, 0x0, 0x0, 0x10, 0x0, 0x0, 0x3, 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7, 0x1E, 0x80, 0x53, 0xF7, 0xFF, 0xF0, 0xFF, 0xF0, + 0x0, 0x8, 0x0, 0x0, 0xC, 0x18, 0x3, 0x0, 0x20, 0x0, 0x20, 0x10, 0x0, 0x0, 0x1E, 0x3F, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x11, 0x25, 0xF, 0xFF, 0xFF, 0x40, 0x9F, 0xE0, + 0x1, 0x92, 0x0, 0x40, 0x0, 0x8, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0x1F, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x14, 0x97, 0xD, 0xFB, 0xFF, 0x0, 0xC, 0x0, + 0x1, 0xA4, 0xF, 0xDF, 0x0, 0x6, 0xC, 0x0, 0x0, 0x0, 0x0, 0xE0, 0x0, 0x0, 0x1, 0xCF, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x7B, 0xFD, 0xF, 0xFF, 0xFA, 0x0, 0xC, 0x0, + 0x3, 0x14, 0x1E, 0x3E, 0x0, 0x16, 0x0, 0x1, 0x1, 0xE, 0x1, 0xC0, 0x0, 0x0, 0x0, 0xEF, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x68, 0x3, 0xF, 0xFF, 0xFC, 0x0, 0x0, 0x0, + 0x3, 0x14, 0x1F, 0xFE, 0x0, 0x16, 0x0, 0x3E, 0x9B, 0xA8, 0x30, 0x0, 0x0, 0x0, 0x0, 0x37, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x60, 0x3, 0xF, 0xFF, 0xF8, 0x0, 0x0, 0x0, + 0x3, 0x14, 0x18, 0x2, 0x0, 0x1B, 0x8, 0x6F, 0x92, 0x28, 0x33, 0x10, 0x0, 0x0, 0x0, 0x33, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x60, 0x3, 0xF, 0xFF, 0xE0, 0x8, 0x40, 0x0, + 0x3, 0x14, 0x18, 0x2, 0x0, 0x1E, 0x1E, 0x61, 0x98, 0x28, 0x33, 0x0, 0x0, 0x0, 0x0, 0x33, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x3, 0xF, 0xFF, 0xF0, 0x3F, 0xC0, 0x0, + 0x3, 0x14, 0x18, 0x2, 0x0, 0x1E, 0x36, 0x6F, 0x98, 0x28, 0x32, 0xC0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x3, 0xF, 0xFF, 0xF0, 0x3F, 0xF0, 0x0, + 0x3, 0x14, 0x19, 0x13, 0x0, 0x1B, 0x6E, 0x60, 0x98, 0x28, 0x31, 0xD0, 0x0, 0x0, 0x0, 0x9, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x20, 0x0, 0x1, 0xD0, 0xFF, 0xF8, 0x0, + 0x3, 0x14, 0x19, 0xF3, 0x0, 0x19, 0xE6, 0x70, 0x98, 0x28, 0x30, 0x10, 0x0, 0x0, 0x0, 0x9, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x0, 0x7, 0xFF, 0xF0, 0xFF, 0xFC, 0x0, + 0x3, 0x14, 0x18, 0x2, 0x0, 0x18, 0xB6, 0x61, 0x98, 0x28, 0xB0, 0x10, 0x0, 0x0, 0x0, 0x9, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x60, 0x0, 0x7, 0xFF, 0xF1, 0xFF, 0xF8, 0x0, + 0x3, 0x14, 0x18, 0x2, 0x0, 0x18, 0x66, 0x61, 0x98, 0x2D, 0x51, 0x0, 0x0, 0x0, 0x0, 0x1B, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x60, 0x0, 0x7, 0xFF, 0xF1, 0xFF, 0xFC, 0x0, + 0x0, 0x38, 0x0, 0x3, 0x0, 0x10, 0xC5, 0x5E, 0x98, 0x66, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x33, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0x8, 0x68, 0x0, 0x7, 0xFF, 0xF0, 0xFF, 0xFC, 0x0, + 0x0, 0x38, 0x0, 0x7, 0x0, 0x10, 0x7, 0xF, 0x0, 0x80, 0x91, 0x20, 0x0, 0x0, 0x0, 0x33, 0xFF, 0xFC, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x0, 0x7, 0xFD, 0xF1, 0xFF, 0xFC, 0x0, + 0x0, 0x38, 0xF, 0xFD, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0xFF, 0xFD, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x3, 0xF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0, + 0x0, 0x38, 0x10, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27, 0xFF, 0xF9, 0x80, 0x0, 0x0, 0x0, 0x0, 0xE, 0x62, 0x3, 0xD, 0xFB, 0xF0, 0xFF, 0xF8, 0x0, + 0x0, 0x38, 0x0, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27, 0xFF, 0xF9, 0x80, 0x0, 0x0, 0x0, 0x0, 0xC, 0x61, 0x3, 0xB, 0xFF, 0xD0, 0xFF, 0xFC, 0x0, + 0x0, 0x38, 0x0, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xEF, 0xFF, 0xFB, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x3, 0xF, 0xF7, 0xD0, 0x3F, 0xF8, 0x0, + 0x0, 0x38, 0x0, 0xC0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x1, 0xCF, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0xE0, 0x13, 0x47, 0xFF, 0xF0, 0x3F, 0xF0, 0x0, + 0x0, 0x38, 0x0, 0xC0, 0x0, 0x1, 0x0, 0x0, 0x70, 0xE, 0x3F, 0xFE, 0x0, 0x0, 0x1, 0x9F, 0xFF, 0xF2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x20, 0x0, 0x7, 0xFF, 0xE0, 0x8, 0x40, 0x0, + 0x0, 0x38, 0x0, 0xC0, 0x0, 0x1, 0x0, 0x0, 0x48, 0x1A, 0x78, 0x3F, 0x0, 0x0, 0x1, 0xBF, 0xFF, 0xF6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x0, 0x7, 0xFF, 0xF8, 0x0, 0x0, 0x0, + 0x2, 0x20, 0x0, 0x40, 0x0, 0x1, 0x80, 0x0, 0x0, 0x14, 0xCC, 0x30, 0xB0, 0x0, 0x3, 0x7F, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x60, 0x0, 0x7, 0x7F, 0xFC, 0x0, 0x0, 0x0, + 0x2, 0x20, 0x0, 0x40, 0x0, 0x1, 0x80, 0x0, 0x0, 0x15, 0xBD, 0xF9, 0xD0, 0x0, 0x6, 0x7F, 0xFF, 0xE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x70, 0x0, 0x7, 0xFF, 0xFE, 0x0, 0x0, 0x0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x2, 0x0, 0x0, 0xA0, 0x15, 0x9B, 0x9E, 0x98, 0x0, 0xE, 0xFF, 0xFF, 0xEC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE2, 0x0, 0xB, 0xFF, 0xFE, 0x0, 0x14, 0x0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x2, 0x0, 0x0, 0x88, 0xC4, 0x79, 0x9D, 0xC0, 0x0, 0x1D, 0xFF, 0xFF, 0xD8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x0, 0x1F, 0xFF, 0xFF, 0xC0, 0x5C, 0x0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x2, 0x0, 0x0, 0x88, 0xC5, 0x39, 0x99, 0x0, 0x0, 0x3B, 0xFF, 0xFF, 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xF0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x2, 0xFE, 0x0, 0x93, 0x25, 0x21, 0x99, 0x80, 0x0, 0x77, 0xFF, 0xFF, 0xB8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x2, 0x3E, 0x0, 0x88, 0xC5, 0xE1, 0x99, 0xE0, 0x0, 0xEF, 0xFF, 0xFF, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x3, 0xFE, 0x0, 0x88, 0xC4, 0xF9, 0x99, 0xF4, 0x1, 0xDF, 0xFF, 0xFE, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x0, 0x70, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x88, 0x4, 0xF9, 0x99, 0xFF, 0xFF, 0x3F, 0xFF, 0xFD, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8, 0x19, 0x99, 0xDB, 0xF8, 0x7F, 0xFF, 0xFB, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x22, 0x9, 0x40, 0x99, 0xC4, 0x1, 0xFF, 0xFF, 0xF7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x81, 0x19, 0x58, 0x99, 0xEE, 0xF, 0xFF, 0xFF, 0xEE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x60, 0xB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x4, 0x40, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFE, 0x18, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x98, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x4, 0x40, 0x1, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x98, 0xE0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xE3, 0xF0, + 0x4, 0x47, 0xFF, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xD8, 0xC0, 0x6, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x6, 0x8F, 0xFE, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x40, 0x81, 0x2E, 0x12, 0xE7, 0xCC, 0xB9, 0xFE, 0xF0, + 0x6, 0x8F, 0x9F, 0xFB, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x47, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x50, 0xD2, 0xDE, 0xC, 0xDF, 0xFF, 0xBF, 0xFF, 0xF0, + 0x6, 0x8F, 0xBF, 0xF3, 0xFF, 0x9B, 0x33, 0xFE, 0xF6, 0x7F, 0xDE, 0x20, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x55, 0xD2, 0x4E, 0xC, 0xDF, 0x77, 0x3F, 0xFD, 0xF0, + 0x6, 0x8F, 0xBF, 0xFB, 0xFF, 0x98, 0x1, 0xC0, 0x60, 0xB8, 0xC, 0x30, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x55, 0xD2, 0x4E, 0xE, 0xDB, 0x77, 0xBF, 0xF7, 0xF0, + 0x6, 0x8F, 0xBF, 0xFB, 0xFF, 0x98, 0x0, 0xAF, 0x76, 0x33, 0xEF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x55, 0xD2, 0x4E, 0xE, 0xC3, 0x7, 0xBF, 0xFF, 0xF0, + 0x6, 0x8F, 0xBF, 0xFB, 0xFF, 0x98, 0x88, 0xFF, 0x77, 0x33, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x55, 0xD2, 0x4E, 0xE, 0xFF, 0xF7, 0xBF, 0xFF, 0xF0, + 0x8, 0x8F, 0xBF, 0xBF, 0xFF, 0x99, 0x99, 0xC3, 0xDE, 0x27, 0xF9, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xD5, 0x49, 0x64, 0x2E, 0xDD, 0xFF, 0xBF, 0x6F, 0xF0, + 0x8, 0xAF, 0xBB, 0xE7, 0xFF, 0x99, 0x99, 0xFD, 0xDE, 0x27, 0xDF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE9, 0xB1, 0x64, 0x2E, 0xFF, 0xFF, 0xBF, 0xFF, 0xF0, + 0x8, 0xF, 0xD8, 0x7C, 0xFF, 0x99, 0x99, 0xDF, 0xDE, 0x23, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xA1, 0xA3, 0x74, 0x3E, 0xE3, 0xCF, 0xF8, 0xF1, 0xF0, + 0xD, 0xEF, 0xFF, 0xEF, 0xFF, 0x33, 0x31, 0x1E, 0xED, 0x67, 0x99, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xB1, 0x83, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xD, 0xEF, 0xFF, 0xEF, 0xFF, 0x33, 0x31, 0x42, 0x41, 0x68, 0x58, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xB1, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xD, 0xEF, 0xFF, 0xEF, 0xFF, 0x33, 0x31, 0xE0, 0xE0, 0x7C, 0x3C, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xB1, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xD, 0xEF, 0xDC, 0xF, 0xFF, 0xBB, 0xBB, 0xC3, 0x72, 0x78, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xB1, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xD, 0xEF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xA1, 0x3F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x5, 0xEF, 0xFE, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xEE, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xFD, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xAF, 0x3F, 0xF1, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xB, 0xEF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x7F, 0xBF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xBF, 0xFD, 0xFF, 0xDF, 0xF7, 0xFB, 0xF8, 0xB8, 0x90, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xC, 0xE6, 0x0, 0x8, 0x0, 0x54, 0x3, 0x80, 0xB, 0x0, 0x30, 0xC, 0x6F, 0xC0, 0x17, 0xF0, 0xFF, 0x87, 0xFF, 0x40, 0x7, 0xFE, 0x2, 0xA1, 0x0, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xC, 0x62, 0x1, 0x0, 0x0, 0xC, 0x0, 0x0, 0x70, 0x0, 0x0, 0x8, 0x20, 0x0, 0x2, 0x20, 0x3E, 0x0, 0x0, 0x0, 0x1, 0x2, 0x0, 0xA1, 0x20, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x19, 0x42, 0x3, 0x0, 0x1, 0x8, 0x0, 0x0, 0xEC, 0x0, 0x0, 0x8, 0x22, 0x0, 0x0, 0x24, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x81, 0x0, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x19, 0x42, 0x3, 0x0, 0x2, 0x8, 0x0, 0x0, 0x20, 0x0, 0x0, 0x8, 0x26, 0x0, 0x0, 0x28, 0x38, 0x4, 0x0, 0x0, 0x0, 0x40, 0x1, 0xE1, 0xC0, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x89, 0x42, 0x3, 0x0, 0x0, 0x8, 0x0, 0x1, 0xC1, 0x0, 0x1, 0x70, 0x28, 0xE, 0xC0, 0x28, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x80, 0x20, 0x0, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x1C, 0x42, 0x3, 0x0, 0x4, 0x8, 0x0, 0x9, 0x80, 0x61, 0x78, 0x78, 0x24, 0x1F, 0x80, 0x28, 0x0, 0x70, 0x10, 0x0, 0x0, 0x0, 0x0, 0xA0, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x19, 0x42, 0x3, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x30, 0x40, 0x88, 0x4, 0x10, 0x2C, 0x28, 0x0, 0x8, 0x0, 0x0, 0x10, 0x0, 0x0, 0x20, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x18, 0xC2, 0x3, 0x0, 0x8, 0x14, 0x0, 0x4, 0x61, 0x30, 0x18, 0x48, 0x32, 0x7, 0x8C, 0x28, 0x0, 0x4, 0x20, 0x0, 0x8, 0x10, 0x20, 0x43, 0x3F, 0xF5, 0xD0, 0x1, 0xFF, 0xFF, 0xFF, 0xF0, + 0x18, 0x42, 0x3, 0x0, 0x0, 0x4, 0x0, 0x4, 0xC, 0x30, 0x10, 0x48, 0x12, 0x1, 0x8C, 0x28, 0x0, 0x2, 0x20, 0x40, 0x0, 0x0, 0x0, 0x41, 0x0, 0x1D, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x18, 0x2, 0x3, 0x0, 0x0, 0x4, 0x0, 0x1, 0x8, 0x30, 0x0, 0x34, 0xA3, 0x0, 0x4C, 0x28, 0x40, 0x0, 0x0, 0x0, 0x0, 0x8, 0x10, 0x34, 0xC0, 0xE, 0x3F, 0xFF, 0xFF, 0xFE, 0x0, 0x0, + 0x18, 0x2, 0x3, 0x0, 0x0, 0x27, 0xF8, 0x0, 0x2, 0x31, 0x60, 0x74, 0x99, 0x0, 0x4, 0x28, 0xC0, 0x81, 0x0, 0x0, 0x4, 0x0, 0x0, 0x21, 0xC0, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x9, 0x82, 0x6, 0x0, 0x0, 0x20, 0x1, 0x1, 0x2, 0x60, 0xC0, 0x38, 0xA0, 0x80, 0x44, 0x2C, 0x0, 0x80, 0x0, 0x0, 0x4, 0x8, 0x8, 0x29, 0x80, 0xC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x31, 0x2, 0x4, 0x0, 0x0, 0x28, 0x0, 0x2, 0x4, 0x60, 0x0, 0xC8, 0xA9, 0x10, 0x8, 0x10, 0x80, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x43, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x31, 0x82, 0x4, 0x0, 0x0, 0x8, 0x0, 0x0, 0x2, 0x66, 0x20, 0x8, 0x22, 0x1B, 0x81, 0xD0, 0xFF, 0x40, 0xA0, 0x0, 0x4, 0x0, 0x0, 0x41, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x30, 0x2, 0x4, 0x0, 0x8, 0x8, 0x0, 0x4, 0x80, 0x64, 0x20, 0xC8, 0x22, 0x1, 0x1, 0x20, 0x4D, 0x40, 0xA0, 0x40, 0x0, 0x0, 0x20, 0x41, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x30, 0x82, 0x4, 0x0, 0x8, 0x8, 0x0, 0x5, 0x1, 0x64, 0x0, 0x40, 0x2A, 0x10, 0x80, 0x20, 0x42, 0x0, 0x0, 0x0, 0x8, 0x10, 0x40, 0xC0, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x32, 0x82, 0x4, 0x0, 0x0, 0x10, 0x4, 0x0, 0x0, 0x0, 0x0, 0x8, 0x20, 0x0, 0x80, 0x20, 0x41, 0x0, 0x0, 0x0, 0x0, 0x10, 0x1, 0x43, 0x80, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x38, 0x82, 0x4, 0x0, 0x4, 0x10, 0x8, 0x8, 0x40, 0x40, 0x0, 0x88, 0x20, 0x0, 0x0, 0x20, 0x0, 0x1, 0x0, 0x0, 0x20, 0x0, 0x80, 0x2, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x2, 0x82, 0x4, 0x0, 0x0, 0x10, 0xC0, 0x0, 0x0, 0x14, 0x0, 0x8, 0x24, 0x0, 0x0, 0x20, 0x0, 0x0, 0x8, 0x3, 0x0, 0x21, 0x0, 0x42, 0x40, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x32, 0x82, 0x4, 0x0, 0x0, 0x10, 0x0, 0x10, 0x0, 0x0, 0x0, 0x8, 0x20, 0x0, 0x2, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x3, 0x42, 0x20, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x20, 0x2, 0xC, 0x0, 0x0, 0x0, 0x0, 0x20, 0xE0, 0x0, 0x2, 0x8, 0x22, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x0, 0x18, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x20, 0x2, 0xC, 0x0, 0x0, 0x0, 0x0, 0x40, 0xF8, 0x0, 0x0, 0x8, 0x20, 0x0, 0xF, 0xE0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x4, 0x5, 0x70, 0xB, 0xE8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x20, 0x2, 0xC, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x28, 0x0, 0xF, 0xD0, 0xC1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x69, 0xEF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x32, 0x80, 0xC, 0x8, 0x0, 0x4, 0x4, 0x2, 0xC, 0x0, 0xB0, 0xF0, 0x6, 0x60, 0xB0, 0x30, 0x86, 0x40, 0x0, 0x10, 0x10, 0x8, 0x11, 0x66, 0x43, 0x48, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x12, 0x80, 0xE, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0xC7, 0xF8, 0xF8, 0xE, 0x3D, 0x90, 0x0, 0x60, 0x40, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x2, 0x4C, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x12, 0x80, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE0, 0xC0, 0x3A, 0xF4, 0x5E, 0x20, 0x10, 0xC, 0x60, 0x40, 0x0, 0x0, 0x0, 0x0, 0x1, 0x61, 0xB6, 0xD8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x12, 0x80, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD8, 0xC0, 0x58, 0x8C, 0x16, 0x30, 0x10, 0xC, 0x60, 0x40, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x0, 0x4, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x12, 0x80, 0xE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2C, 0xC0, 0x70, 0x8C, 0x66, 0x3E, 0x10, 0xC, 0x60, 0x40, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x12, 0x4C, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x12, 0x80, 0xE, 0x0, 0x0, 0xF, 0x0, 0x0, 0x26, 0xC1, 0x0, 0x8C, 0x6, 0x1F, 0x50, 0xC, 0x60, 0x40, 0x0, 0x0, 0x0, 0x0, 0x1, 0x61, 0xB6, 0xD8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x18, 0x8, 0x3, 0xA, 0x82, 0xC0, 0xFA, 0x7E, 0x0, 0xC0, 0xC, 0x60, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x0, 0x4, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x10, 0x0, 0x6, 0xA, 0x81, 0x81, 0xFE, 0xF3, 0x60, 0xC0, 0xC, 0x60, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x92, 0x4C, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x10, 0x0, 0x6, 0xA, 0x88, 0x1, 0x86, 0xFF, 0x60, 0xC0, 0x28, 0x60, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x61, 0xB6, 0xD8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x10, 0x0, 0x6, 0x6, 0x8F, 0xF1, 0xF8, 0x4, 0x68, 0xC0, 0x20, 0x60, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x62, 0x0, 0x4, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x10, 0x0, 0x1, 0x8, 0x8C, 0x11, 0xF4, 0x4, 0x2E, 0x87, 0xE8, 0xBE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x63, 0xB6, 0xDC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x80, 0x4, 0x0, 0x0, 0x10, 0x0, 0x1, 0x8, 0x20, 0x0, 0x8, 0x0, 0xE, 0x1F, 0xC0, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x61, 0xB6, 0xD8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x25, 0x0, 0x1C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xC4, 0x0, 0x8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFD, 0xDF, 0xF7, 0x7E, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFD, 0xDF, 0xFF, 0x7E, 0xF7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xEF, 0x7F, 0xF0, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF6, 0xDF, 0xE0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x77, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0xF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF0, 0xF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xDB, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xA4, 0x93, 0xF0, 0x7, 0xE7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xBB, 0x6D, 0xF0, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x83, 0x2C, 0xF0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x9B, 0x4, 0x0, 0x20, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xB2, 0x44, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFD, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0xDA, 0x64, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xFD, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xF2, 0x64, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFD, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFD, 0xFA, 0x64, 0x0, 0x30, 0xF, 0xFF, 0xFC, 0x1, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x9A, 0x65, 0xC1, 0xF0, 0xF, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0x82, 0x64, 0xC1, 0xF0, 0x7, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x66, 0x1, 0xF0, 0xF, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x30, 0xF8, 0xF, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x7E, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF, 0xFF, 0xF8, 0x1, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xF7, 0xFF, 0xFF, 0xF6, 0x7F, 0xFF, 0xFF, 0xBD, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFF, 0xF0, 0xF0, 0xC, 0xCF, 0xF8, 0xE, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xEE, 0x7, 0xFC, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3F, 0xCB, 0xF0, 0xF0, 0x0, 0x3, 0xF8, 0xE, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFE, 0xF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xDF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x3F, 0xFC, 0x0, 0xF0, 0x20, 0x3, 0xF8, 0xE, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFD, 0xC0, 0xF8, 0x0, 0x20, 0xF8, 0x1E, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0x7E, 0xF7, 0xEF, 0xF8, 0xFC, 0x2F, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xFE, 0xF7, 0xE0, 0x0, 0x78, 0xE1, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xF7, 0xFF, 0xFF, 0xFB, 0x7F, 0xBE, 0xF7, 0x61, 0xC0, 0x78, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xEF, 0xFF, 0x7F, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0x7E, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xF7, 0x61, 0xC0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xEF, 0xFE, 0xF7, 0x63, 0xE7, 0x78, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEE, 0xF7, 0x62, 0xFF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFB, 0xFF, 0xBE, 0xDF, 0xFF, 0xFF, 0xFE, 0xF7, 0xE0, 0x7F, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, 0xEF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFB, 0xEE, 0xF7, 0xA0, 0xF, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xFE, 0xFB, 0xFF, 0xEF, 0x7F, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xF7, 0xE0, 0x5, 0xF8, 0xF, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0x7F, 0xFF, 0xFD, 0xF7, 0xFF, 0xDF, 0x7F, 0xFF, 0xFF, 0xFE, 0xF7, 0xD8, 0x1, 0xF8, 0xF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF7, 0xCC, 0x0, 0x78, 0xF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xEE, 0xF7, 0xCE, 0xC0, 0xF8, 0xF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF7, 0xCF, 0xE0, 0x38, 0x1F, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEE, 0xF7, 0xCF, 0xF0, 0x38, 0x1F, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFB, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xDF, 0xFF, 0xFE, 0xF7, 0xE1, 0xF0, 0x38, 0x1F, 0xA0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF7, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xDF, 0xFE, 0xF7, 0xE1, 0xD0, 0x38, 0x10, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xCF, 0xFD, 0xF7, 0xFC, 0xBF, 0xFE, 0xF7, 0x40, 0x0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xBE, 0xF7, 0x40, 0x0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7F, 0xFF, 0xFF, 0xDF, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0xFE, 0xF7, 0x80, 0x0, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFD, 0xFF, 0xF7, 0xFF, 0xCF, 0x7F, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xF7, 0xC0, 0x2, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0x2F, 0x7F, 0xFF, 0xFF, 0xFB, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFE, 0xF7, 0xB0, 0x5, 0xF8, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xD7, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0x7E, 0xEF, 0x7F, 0xFF, 0xFF, 0xFE, 0xC1, 0xFF, 0xFF, 0xEC, 0x2F, 0xFE, 0xF7, 0x9C, 0xF, 0xFB, 0xFF, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF3, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xDF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xE0, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0xDC, 0x79, 0xCE, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x7, 0xFF, 0xFF, 0xFF, 0xD9, 0xBF, 0x58, 0x78, 0xCE, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCD, 0xD3, 0x2F, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCF, 0xD3, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFD, 0xBB, 0xCF, 0xD0, 0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFD, 0xBB, 0xAF, 0xD0, 0x6F, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFD, 0x9B, 0x6D, 0xD3, 0x2F, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xF5, 0xA7, 0x6C, 0x13, 0x6F, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFD, 0xFF, 0xEE, 0x30, 0x70, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xC0, 0xF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFE, 0x7, 0xC3, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFC, 0xF, 0xE3, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF1, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xE0, 0x7F, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0x87, 0xFF, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xF, 0xFF, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x80, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFE, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF8, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0xBF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x7F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3, 0xFF, 0xC0, 0x3F, 0x0, 0x7, 0x80, 0x0, 0x0, 0x4A, 0xFF, 0xFF, 0xE1, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x0, 0xF, 0x7F, 0xFF, 0xFF, 0xF4, 0xDB, 0xB6, 0x4F, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xF0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xC7, 0xFF, 0xF2, 0x1F, 0xFF, 0xFF, 0xF4, 0xDB, 0x0, 0x7, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x43, 0x77, 0xF2, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xF2, 0x38, 0x0, 0x0, 0xF4, 0xD7, 0xFF, 0xF7, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xA1, 0x0, 0x38, 0xC0, 0x7, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xF, 0xFF, 0xF6, 0x77, 0xFF, 0xFE, 0xFC, 0xE6, 0x40, 0x11, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x5F, 0xBF, 0xBF, 0x9F, 0xF7, 0xF3, 0xDD, 0x3F, 0xF0, 0x1F, 0xE1, 0xBF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xF7, 0x77, 0xE, 0x2, 0xDC, 0xE5, 0x97, 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0xFF, 0xDF, 0xBE, 0x9D, 0xF7, 0xEE, 0x9C, 0x7F, 0x3F, 0xEF, 0xDF, 0xF8, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xF5, 0x77, 0xEF, 0xFA, 0xFC, 0xE5, 0xBB, 0x56, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xBF, 0xEF, 0xBF, 0xBF, 0xFF, 0xA5, 0x5E, 0x9A, 0x74, 0x7D, 0x9A, 0x2F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xEA, 0xEF, 0xDF, 0xF5, 0xF9, 0xEA, 0x3, 0xBF, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7B, 0xBF, 0xFF, 0xBF, 0xBB, 0xFF, 0x47, 0xAE, 0x6D, 0xF5, 0xB3, 0x8A, 0x80, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xFB, 0xEF, 0xDF, 0xF5, 0xF9, 0xEB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xB7, 0xFF, 0xBF, 0xF, 0xEF, 0x5F, 0xEF, 0x6, 0xEA, 0x51, 0xFD, 0xD5, 0x7F, 0xFE, 0x3, 0xFF, 0xFF, 0xDB, 0xEF, 0xDF, 0xF5, 0xF9, 0xEB, 0xE0, 0x7E, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x9F, 0x80, 0xBE, 0xFF, 0xDF, 0x5F, 0xE0, 0x7F, 0x7E, 0x11, 0xCF, 0xD7, 0xFF, 0xFC, 0x7, 0xFF, 0xFF, 0x93, 0xEF, 0xDF, 0xF5, 0xF9, 0xEB, 0xFF, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xBF, 0xD7, 0xBE, 0xFF, 0xBF, 0x7F, 0xAA, 0xBF, 0xF8, 0x16, 0xFD, 0xCD, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x13, 0xEF, 0xFF, 0xF5, 0xF9, 0xEA, 0x7F, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x9F, 0x9B, 0xBE, 0xFF, 0xDF, 0x5F, 0x6A, 0xDF, 0xBF, 0x95, 0xF9, 0xEE, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x13, 0xEF, 0xFD, 0xF5, 0xF9, 0xEF, 0xFF, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0x5E, 0xBF, 0x7F, 0xEF, 0x3F, 0xAA, 0xE7, 0xB8, 0x71, 0xF7, 0xFD, 0x78, 0x3, 0xFF, 0xFF, 0xF8, 0x33, 0xE8, 0xFF, 0xF5, 0xF9, 0xE0, 0x7F, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xF3, 0x5E, 0xBF, 0x7F, 0xF7, 0x3E, 0xAA, 0xF7, 0xFF, 0x31, 0xCF, 0xCD, 0x70, 0xF, 0xFF, 0xFF, 0xE0, 0x73, 0xEB, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFE, 0xDE, 0xBF, 0x8F, 0xFF, 0x5F, 0x4B, 0x7F, 0xFF, 0x71, 0xED, 0x53, 0x0, 0x7F, 0xFF, 0xFF, 0xC0, 0xF3, 0xEB, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xFE, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7D, 0xFF, 0xBE, 0xBE, 0x3D, 0xFB, 0xA0, 0x3B, 0x7, 0xC7, 0xBB, 0xCE, 0xAE, 0x3, 0xFF, 0xFF, 0xFF, 0xC7, 0xF3, 0xEB, 0xFF, 0x5, 0xF9, 0xFF, 0xE0, 0x1, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0xFF, 0x8E, 0xBE, 0x3E, 0xFF, 0xF1, 0x7A, 0x67, 0xD7, 0x6C, 0x1E, 0x60, 0xF, 0xFF, 0xFF, 0xFF, 0xC7, 0xF3, 0xEF, 0xFF, 0xFD, 0xF9, 0xFF, 0xBF, 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x3F, 0x9A, 0xBE, 0x3F, 0xFF, 0xE0, 0x7D, 0x17, 0xFF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xC7, 0xF3, 0xEF, 0xFF, 0x81, 0xF9, 0xFF, 0x80, 0x3F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x77, 0xBE, 0xBE, 0x3F, 0x7D, 0xBF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xF3, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x7D, 0x80, 0xBE, 0x3F, 0x7D, 0xBE, 0xFF, 0xFD, 0x7F, 0xBF, 0xF7, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF3, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0x7E, 0xFF, 0xBE, 0x3F, 0xFD, 0xFF, 0xFF, 0xE8, 0xBF, 0x7F, 0xFB, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x12, 0x0, 0x0, 0x0, 0xC, 0xFF, 0xFF, 0x80, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0xFE, 0xFF, 0xBE, 0xBD, 0xFF, 0xFF, 0x7F, 0xDD, 0xBF, 0xFC, 0xFF, 0x81, 0xE0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x1, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0xDF, 0xFF, 0xBF, 0xF, 0xFB, 0xFF, 0x20, 0x40, 0x1, 0x1F, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x1B, 0xE8, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x76, 0xC0, 0x0, 0x41, 0xF, 0xFF, 0xEF, 0xEE, 0x1, 0x7D, 0xF0, 0x1, 0x0, 0xFF, 0xC0, 0x0, 0x0, 0xDC, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xE3, 0xC2, 0x5B, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0x78, 0xF, 0xBF, 0xF0, 0x8, 0x3, 0xFF, 0xF1, 0x3, 0xF1, 0xBF, 0x3, 0xFF, 0xF8, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xB6, 0x80, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7A, 0x9F, 0xF4, 0x47, 0xFF, 0xE0, 0x3, 0xFC, 0x0, 0x4, 0x17, 0xFF, 0xFC, 0x0, 0x1F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x8D, 0xB6, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7E, 0xEE, 0x0, 0x40, 0x1, 0xDF, 0xFD, 0xFF, 0xFB, 0xF7, 0xEF, 0xDF, 0xB8, 0x0, 0x3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x12, 0xA9, 0xC0, 0xF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7D, 0xEF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0x7F, 0xF7, 0xFF, 0xDF, 0xEF, 0xDC, 0x0, 0x1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x1F, 0x0, 0x30, 0x7, 0xFF, 0xF0, 0xFF, 0xF0, + 0x7F, 0x53, 0x7F, 0xC0, 0xF, 0xE7, 0xFC, 0xC0, 0x3F, 0xE0, 0x3F, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x36, 0x93, 0x70, 0x7, 0xFF, 0x3F, 0x1C, 0x0, + 0xFE, 0xFB, 0xFF, 0x9F, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x54, 0x3, 0x74, 0x3, 0xFE, 0xFF, 0xEF, 0xE0, + 0xFE, 0xD7, 0xFF, 0x9F, 0xFF, 0xED, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFE, 0xF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x5B, 0xFF, 0x77, 0xFF, 0xF9, 0xFF, 0xF7, 0xE0, + 0xFE, 0xDF, 0xF1, 0xC0, 0xFF, 0xFD, 0xF6, 0xE0, 0xE5, 0x75, 0xCE, 0xDF, 0xFF, 0xFF, 0xFF, 0xF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0xFD, 0x77, 0xFF, 0xFB, 0xFF, 0xFB, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFD, 0xF6, 0xDE, 0x7B, 0x95, 0xFC, 0xF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0xFD, 0x77, 0xFF, 0xF7, 0xFF, 0xFF, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFA, 0xEA, 0xA1, 0xFD, 0x55, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x4F, 0xFD, 0x77, 0xFF, 0xEF, 0xF0, 0x3F, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFA, 0xFA, 0xAF, 0xFB, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x4F, 0xFD, 0x77, 0xFF, 0xEF, 0xDF, 0xDF, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFA, 0xD2, 0xA1, 0xFF, 0x55, 0xFC, 0xDF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x4F, 0xFD, 0x77, 0xFF, 0xEF, 0xBF, 0xFF, 0xE0, + 0xFE, 0xDF, 0xF7, 0x1C, 0x3F, 0xFD, 0x22, 0xBF, 0xFF, 0x55, 0xFE, 0xCF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x4F, 0xE2, 0x88, 0x1, 0xCF, 0x7F, 0xFF, 0xE0, + 0xFE, 0xDF, 0xF7, 0x1C, 0x3F, 0xFF, 0xAA, 0xB0, 0x7F, 0x55, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x4F, 0xC1, 0x0, 0x1, 0xCF, 0xFF, 0xFB, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFE, 0xAA, 0xAE, 0x7F, 0x55, 0x3C, 0xDF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x5F, 0xC1, 0x0, 0x1, 0xCE, 0xFF, 0xFB, 0xE0, + 0xFE, 0xDF, 0xF7, 0xFC, 0xFF, 0xFF, 0x5A, 0xAF, 0xFF, 0x54, 0x7D, 0xF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0xC1, 0x0, 0x1, 0xCE, 0xFF, 0xFF, 0xE0, + 0xFC, 0xE7, 0xE7, 0xFD, 0xFF, 0xF7, 0xFA, 0x9E, 0x7F, 0x5B, 0xAE, 0xDF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5F, 0xC1, 0x0, 0x1, 0xCE, 0xFF, 0xFF, 0xE0, + 0xFC, 0xE7, 0xE7, 0xFD, 0xFF, 0xF7, 0x3A, 0xEE, 0xE7, 0x3C, 0x4E, 0x1F, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x57, 0xC1, 0x0, 0x1, 0xCE, 0xFF, 0xFF, 0xE0, + 0xFC, 0xE7, 0xE0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x53, 0xFD, 0x76, 0x3, 0xCE, 0xFF, 0xFB, 0xE0, + 0xFC, 0xE7, 0xF0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x53, 0xFD, 0x74, 0x3, 0xCF, 0xFF, 0xFB, 0xE0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x51, 0xFD, 0x70, 0x7, 0xCF, 0x7F, 0xFB, 0xE0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x50, 0x7D, 0x78, 0x7, 0xCF, 0xBF, 0xF7, 0xE0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFE, 0xF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD0, 0x1D, 0x40, 0xF, 0xEF, 0xDF, 0xEF, 0xE0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0xAF, 0xF5, 0xC0, 0x31, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x90, 0x1, 0x0, 0x1F, 0xEF, 0xF0, 0x3F, 0xE0, + 0xFC, 0xE7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0xA7, 0xED, 0x80, 0x30, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1, 0x0, 0x3F, 0xF7, 0xFF, 0xFF, 0xE0, + 0xFC, 0xF7, 0xFF, 0x3F, 0xFF, 0xFE, 0xFF, 0xFF, 0xB7, 0xFF, 0xC, 0x30, 0xF, 0xFF, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xC0, 0x1, 0x0, 0x7F, 0xFB, 0xFF, 0xFF, 0xE0, + 0xFC, 0xF7, 0xFF, 0x3F, 0xFF, 0xFE, 0xFF, 0xFF, 0xB7, 0xFE, 0x3, 0xCB, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD8, 0x1, 0x1, 0xFF, 0xFD, 0xFF, 0xFB, 0xE0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x67, 0x9A, 0xE1, 0x99, 0x97, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBE, 0x2, 0x3, 0xFF, 0xFE, 0xFF, 0xE7, 0xE0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x4F, 0x4A, 0xF9, 0x98, 0x97, 0xFF, 0xE1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0x82, 0xF, 0xFF, 0xFF, 0xBF, 0x9F, 0xE0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x4F, 0x4A, 0x39, 0x99, 0x17, 0xFF, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xF0, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x40, 0xA, 0x41, 0x99, 0x97, 0xFF, 0x87, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFD, 0xC0, 0xFF, 0x54, 0xAA, 0x81, 0x99, 0xF7, 0xFF, 0xF, 0xFF, 0xFF, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0xAA, 0x79, 0x99, 0xE3, 0xFE, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xCF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x6A, 0x79, 0x99, 0xE8, 0x0, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0xEE, 0xE0, 0x99, 0xE8, 0x0, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0xEE, 0x4, 0x99, 0xEC, 0x1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0xE6, 0x67, 0xFF, 0xFE, 0xF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x3F, 0xFE, 0xEF, 0xFF, 0xFF, 0xFF, 0xF4, 0x0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1, 0x8F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFE, 0x7F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xEF, 0xFF, 0x7F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xF, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF9, 0xE8, 0x1, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x4F, 0xBF, 0xFA, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x3E, 0xFC, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xCF, 0xBE, 0xD2, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x40, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xCF, 0xAD, 0x22, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x5F, 0xF0, 0x0, 0x22, 0x0, 0x1E, 0x6, 0x43, 0xC0, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0xCA, 0xAD, 0xB2, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x50, 0x8, 0x0, 0x22, 0x0, 0x0, 0x0, 0xC0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xCA, 0xAD, 0xB2, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x50, 0x8, 0x0, 0x23, 0x32, 0x21, 0x10, 0xC4, 0x23, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xCA, 0xAD, 0xB2, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFB, 0x40, 0x50, 0x8, 0x0, 0x22, 0x22, 0x1, 0x10, 0x44, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0xCA, 0xAD, 0xB2, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF3, 0xD0, 0x27, 0xD7, 0x0, 0x44, 0x44, 0x3, 0x10, 0x8F, 0xE1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xD, 0xDB, 0x76, 0x95, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF3, 0xAE, 0xDC, 0x60, 0xE0, 0x44, 0x44, 0x3F, 0x10, 0x8F, 0xC1, 0x8F, 0xE0, 0x0, 0x0, 0x3F, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xD7, 0x4E, 0x95, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF3, 0xE, 0xB8, 0x60, 0xE0, 0x44, 0x44, 0x43, 0x10, 0x88, 0x0, 0x2F, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x9F, 0x5C, 0x85, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xEE, 0x9F, 0xF7, 0xE0, 0x44, 0x44, 0x42, 0x21, 0x88, 0x0, 0x2F, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0x7C, 0x5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xEE, 0x9F, 0xF7, 0xE0, 0x44, 0x44, 0x42, 0x1, 0x88, 0x40, 0xF, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xEE, 0x9F, 0xF7, 0xE0, 0x44, 0x44, 0x3C, 0x8C, 0x87, 0x81, 0x8F, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xEE, 0xA3, 0xEF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0xF, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xEE, 0xC0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0xF, 0xE0, 0x0, 0x0, 0x3F, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x2, 0x9F, 0x40, 0x4, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE, 0xEE, 0x1, 0xF8, 0x0, 0x1, 0xC0, 0x0, 0x20, 0x9C, 0x0, 0xF, 0xE0, 0xF, 0x80, 0x3F, 0xC3, 0xFE, 0x0, 0x7, 0x80, 0x0, 0x0, 0x91, 0x40, 0x4, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x16, 0xEE, 0x1, 0xF8, 0x0, 0xF, 0xFC, 0x0, 0xE, 0xFF, 0xC0, 0xF, 0xE0, 0x7F, 0xF0, 0x3F, 0xC1, 0xFE, 0x0, 0x3F, 0xF8, 0x7, 0xFF, 0x99, 0x9F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x15, 0xE7, 0xFF, 0xF, 0xFF, 0xB0, 0x3, 0x7F, 0xE9, 0x0, 0x3F, 0xFC, 0x70, 0xC0, 0x18, 0x30, 0xC1, 0x86, 0x0, 0xC0, 0x4, 0x2, 0x5, 0x81, 0x5F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x14, 0x63, 0xFF, 0x7, 0xFF, 0x8A, 0x0, 0x7F, 0x88, 0x0, 0x7, 0xF8, 0x3E, 0x0, 0x5, 0xE0, 0x40, 0x3, 0xFE, 0x0, 0x1, 0xFE, 0x3, 0x81, 0x3F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x15, 0xA3, 0xFF, 0x7, 0xFF, 0x8, 0x0, 0x3F, 0x60, 0x30, 0x3, 0xF8, 0x3E, 0x0, 0x1, 0xEC, 0xFF, 0x3, 0xFC, 0x0, 0x0, 0xFE, 0x1, 0xB1, 0x3F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x15, 0xA3, 0xFF, 0x7, 0xFE, 0x8, 0x0, 0x1E, 0x1E, 0x0, 0x1, 0xF8, 0x38, 0xF, 0xC1, 0xE4, 0x87, 0x7, 0xF8, 0x0, 0x0, 0x7F, 0x1, 0xB1, 0xFF, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE1, 0xA3, 0xFF, 0x7, 0xFC, 0x8, 0x0, 0xF, 0xC3, 0x0, 0x1, 0x88, 0x30, 0x1E, 0x1, 0xE4, 0xC1, 0x8F, 0xF0, 0x0, 0x0, 0x3F, 0x80, 0x51, 0xFF, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF5, 0xA3, 0xFF, 0x7, 0xFC, 0xF, 0xF0, 0xF, 0x80, 0x6D, 0x0, 0xFC, 0x34, 0x8, 0x81, 0xE4, 0xC0, 0x3F, 0xF0, 0xF, 0xC0, 0x1F, 0x80, 0x50, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0xA3, 0xFF, 0x7, 0xF8, 0x3, 0xF8, 0x6, 0x60, 0xFC, 0x30, 0x4, 0x24, 0x7, 0xED, 0xE4, 0xC0, 0xF, 0xE0, 0x1F, 0xF0, 0x1F, 0xC0, 0x90, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0x23, 0xFF, 0x7, 0xF8, 0x13, 0xFC, 0x7, 0x91, 0xFF, 0xD0, 0x3E, 0x12, 0x10, 0x75, 0xE4, 0xC0, 0x7, 0xE0, 0x3F, 0xF8, 0x1F, 0xE0, 0xD3, 0x40, 0x4, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0x23, 0xFF, 0x7, 0xF0, 0x13, 0xFE, 0x7, 0x13, 0xFF, 0xC0, 0x3E, 0x4A, 0x11, 0xF5, 0xE4, 0xC0, 0x3, 0xE0, 0x7F, 0xF8, 0xF, 0xE0, 0xD3, 0x7F, 0xE4, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xF6, 0x23, 0xFF, 0x7, 0xF0, 0x10, 0x2, 0x3, 0xC, 0xFF, 0x90, 0x32, 0xDB, 0xF, 0xB5, 0xE4, 0x80, 0x1, 0xC0, 0x7F, 0xF9, 0xEF, 0xF7, 0x96, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, + 0xF6, 0x23, 0xFF, 0x7, 0xF0, 0x30, 0x2, 0x3, 0x2, 0xFE, 0x40, 0x72, 0x62, 0x0, 0xD, 0xE4, 0x7E, 0x81, 0xC0, 0x7F, 0xFC, 0xF, 0xF0, 0x97, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE7, 0x23, 0xFD, 0x7, 0xF0, 0x33, 0xFF, 0x3, 0x82, 0xAE, 0xA0, 0x48, 0x3F, 0x18, 0x5, 0xE4, 0x3F, 0x0, 0xC0, 0x7F, 0xFC, 0xF, 0xF8, 0x9F, 0x7F, 0xF5, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xED, 0xC3, 0xF8, 0x7, 0xF0, 0x27, 0xFE, 0x2, 0x1, 0xF8, 0xE0, 0xF4, 0xCC, 0xC0, 0x7, 0xE9, 0x7C, 0x40, 0xC0, 0x7F, 0xFC, 0xF, 0xF1, 0x26, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xED, 0x43, 0xF8, 0x7, 0xF0, 0x7, 0xFE, 0x0, 0x85, 0xFE, 0x11, 0xC4, 0x35, 0xD7, 0xE, 0x21, 0x3, 0xC0, 0xE0, 0x7F, 0xFC, 0xF, 0xE1, 0x20, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xEC, 0x43, 0xF8, 0x7, 0xF8, 0x7, 0xFE, 0x6, 0x81, 0xFF, 0xE0, 0x70, 0x35, 0xEF, 0x5, 0xE1, 0x7C, 0xC0, 0xE0, 0x7F, 0xF8, 0xF, 0xE1, 0x20, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xEC, 0x43, 0xF8, 0x7, 0xF8, 0x7, 0xFC, 0x6, 0x81, 0x98, 0x20, 0x88, 0x31, 0xE0, 0x82, 0x0, 0x81, 0x80, 0xE0, 0x3F, 0xF8, 0x1F, 0xC1, 0xA3, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xED, 0x43, 0xF8, 0x7, 0xF8, 0x1F, 0xFC, 0x7, 0x80, 0xFF, 0x80, 0x78, 0x38, 0xF, 0x81, 0xE0, 0x7F, 0x0, 0xE0, 0x1F, 0xF0, 0x1F, 0x80, 0xA3, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xEB, 0x43, 0xF8, 0x7, 0xFC, 0x13, 0xF8, 0xF, 0xC0, 0x7F, 0x0, 0xF8, 0x38, 0x7, 0x1, 0xE0, 0x0, 0x1, 0xF0, 0xF, 0xE0, 0x1F, 0x80, 0x62, 0x7F, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x2B, 0x43, 0xF8, 0x7, 0xFC, 0x10, 0xC0, 0xF, 0xC0, 0x1C, 0x0, 0xF8, 0x3C, 0x0, 0x1, 0xE0, 0x0, 0x1, 0xF8, 0x3, 0x0, 0x3F, 0x0, 0x2, 0x7F, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x2B, 0x43, 0xF8, 0x7, 0xFE, 0x10, 0x0, 0x1F, 0xE0, 0x0, 0x1, 0xF8, 0x3C, 0x0, 0x3, 0xE0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x7E, 0x3, 0x2, 0xBF, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x22, 0x3, 0xF8, 0x7, 0xFF, 0x0, 0x0, 0x3F, 0x10, 0x0, 0x3, 0xF8, 0x3E, 0x0, 0x3, 0xE0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x7C, 0x3, 0x22, 0x9F, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x23, 0x83, 0xF8, 0x7, 0xFF, 0x80, 0x0, 0x7E, 0xF8, 0x40, 0x7, 0xF8, 0x3E, 0x0, 0x7, 0xC0, 0x40, 0x8F, 0xFF, 0x0, 0x1, 0xFC, 0x7, 0x30, 0x10, 0xB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x20, 0x83, 0xF8, 0x7, 0xFF, 0xF8, 0x0, 0xFC, 0x2, 0x40, 0x1F, 0xF8, 0x33, 0x0, 0x1F, 0xD0, 0x81, 0x7F, 0xFF, 0x80, 0x3, 0xF8, 0xF, 0x38, 0xF, 0xFB, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x36, 0x3, 0xF8, 0xF, 0xFF, 0xE4, 0x7, 0xFE, 0xF5, 0xC0, 0xCF, 0x8, 0x35, 0xC0, 0x2B, 0xD8, 0x26, 0xBF, 0xFF, 0xF0, 0x1F, 0xF8, 0x1F, 0x3F, 0x23, 0x4B, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0xFB, 0x5F, 0xF7, 0xF7, 0xED, 0xF2, 0x6B, 0xE3, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x2, 0x4B, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFC, 0xDF, 0x58, 0x34, 0xF3, 0x9D, 0xEF, 0xEB, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x24, 0x97, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0xC7, 0x5F, 0x95, 0x7F, 0xA5, 0xFF, 0xEB, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x0, 0x3, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFB, 0x5F, 0xED, 0x7F, 0x55, 0xFE, 0xEB, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x12, 0x4B, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x7F, 0xFB, 0xFF, 0xFF, 0xE0, 0x7, 0xFF, 0xC5, 0x5E, 0x1D, 0x8E, 0x35, 0xDF, 0x2B, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x24, 0x97, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE0, 0xF, 0xFC, 0xF5, 0x5C, 0xBD, 0xF9, 0xD, 0xFE, 0xAB, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x0, 0x3, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFA, 0xF5, 0x5D, 0x7D, 0x1, 0xFE, 0xAE, 0xAB, 0xFF, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x92, 0x4B, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFA, 0xF5, 0x50, 0xFD, 0x70, 0xFE, 0xAE, 0xAB, 0xCB, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x24, 0x97, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFA, 0x5, 0x56, 0xD, 0xB, 0xF7, 0xA6, 0xAB, 0xD7, 0x5E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x0, 0x3, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0x57, 0xFE, 0xF3, 0xF7, 0xCE, 0x6F, 0xE7, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x92, 0x4B, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCF, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0x7, 0x98, 0xF, 0x7, 0xF3, 0xEE, 0xEF, 0xDF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x24, 0x97, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x9C, 0xFF, 0xF7, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0x0, 0x7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x2, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x2, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x2, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xC7, 0xF0, 0x0, 0x4, 0x1, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xD0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xF8, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xF0, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xF7, 0xFB, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xF3, 0xF0, 0x3, 0xF1, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xCF, 0xF7, 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xEF, 0xEF, 0xFF, 0xFF, 0xFB, 0xF4, 0x3, 0xF1, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xFF, 0xF7, 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x7F, 0xFB, 0xFF, 0xFF, 0xEF, 0xFE, 0x3, 0xF1, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xF7, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF7, 0xF0, 0x1F, 0x3, 0xF1, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x0, 0x4, 0x10, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x83, 0xF, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFC, 0x3F, 0xF7, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xCF, 0xFF, 0xF7, 0xFC, 0xFF, 0xFF, 0xFF, 0x7C, 0x1F, 0x83, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xF7, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFD, 0xFF, 0xEF, 0xDF, 0xDF, 0xFF, 0x7E, 0x3F, 0x83, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0xDF, 0xFF, 0xF7, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xEF, 0xDF, 0xEF, 0xFF, 0xFF, 0x7E, 0x1F, 0x83, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE0, 0x0, 0x0, 0xEF, 0xFF, 0xFB, 0xF6, 0xFD, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xF7, 0xEF, 0xFF, 0x7D, 0x0, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xFD, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, 0xDF, 0xFF, 0xFB, 0xEF, 0xFF, 0xFF, 0x40, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0xE8, 0x3, 0xE0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFB, 0xFF, 0xFF, 0xDF, 0xFA, 0x3, 0xF0, 0x50, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x3, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDF, 0xFF, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0x83, 0xF0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFB, 0xFF, 0xFF, 0xF1, 0xBF, 0x3, 0xF0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFE, 0xFD, 0xFF, 0xBF, 0xFD, 0xF6, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, 0xFF, 0xFF, 0xFB, 0xEF, 0xFF, 0xF0, 0x3F, 0xC3, 0xF0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xF0, 0x1F, 0xC3, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xEF, 0xDF, 0xFB, 0xF7, 0xFE, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x7E, 0xEF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0xC3, 0xF0, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xE7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7F, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xEF, 0xDF, 0xDF, 0xFF, 0xFC, 0x2F, 0xC3, 0xE0, 0x70, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFC, 0x3F, 0xF7, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xFD, 0xF7, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0x3F, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xBF, 0xFF, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFE, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFD, 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0x3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFB, 0xF7, 0xFB, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xDF, 0xFF, 0xBF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFA, 0x3, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xE7, 0xFF, 0xFF, 0xBF, 0xEF, 0xF7, 0xFE, 0xFC, 0xE0, 0x7F, 0x81, 0xFF, 0xFE, 0x3E, 0xFF, 0xFF, 0xE3, 0xCF, 0xFE, 0x7, 0xEB, 0xF8, 0x7, 0xFF, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xE0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x3, 0xC0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x7, 0xE0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x3F, 0xF0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x7F, 0xF8, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x1, 0xFF, 0xFC, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x3, 0xFF, 0xFC, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0xF, 0xFF, 0xFE, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x1F, 0xFF, 0xFF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3F, 0xFF, 0xFF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x7F, 0xFF, 0xFF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x7, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x4E, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xF8, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0xFF, 0x80, 0x3E, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x0, 0xF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x9E, 0x0, 0x7E, 0xC3, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xF8, 0x0, 0x1, 0xFA, 0xF9, 0xBF, 0xEF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x60, 0x3F, 0x81, 0x5C, 0x7, 0xFC, 0x41, 0x3F, 0x30, 0x1F, 0xE1, 0xBF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x3, 0xF8, 0xF1, 0xFD, 0xFA, 0xFB, 0xFF, 0xEF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7E, 0x40, 0x1F, 0x80, 0x5C, 0x7, 0xF1, 0x81, 0xF, 0xF8, 0xF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x1, 0xF8, 0xF1, 0xFD, 0xFA, 0xFB, 0xFF, 0xEF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7C, 0xC0, 0xF, 0x81, 0x3C, 0xF, 0xDC, 0x42, 0x3, 0xFC, 0xE, 0x43, 0xF1, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x3, 0xF1, 0xE3, 0xFB, 0xF5, 0xF7, 0xFC, 0x40, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0xC0, 0xF, 0x81, 0x38, 0xF, 0xB0, 0x22, 0x60, 0x7B, 0x84, 0x43, 0x7F, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x3, 0xF1, 0xE3, 0xFB, 0xF5, 0xF7, 0x80, 0x0, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0xC0, 0xF, 0x81, 0xC0, 0xF, 0xB0, 0x23, 0x1, 0x76, 0x47, 0xB0, 0xEE, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x23, 0xF1, 0xE3, 0xFB, 0xF5, 0xF7, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0xDC, 0xF, 0x80, 0xC0, 0x1F, 0xA0, 0x23, 0x19, 0xE6, 0x47, 0x2, 0xEF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x6B, 0xF1, 0xE3, 0xFB, 0xF5, 0xF7, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0xFE, 0x78, 0x80, 0xC0, 0x3F, 0xA0, 0x1D, 0x99, 0xE7, 0x46, 0x2, 0xF3, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0xEB, 0xF0, 0x3, 0xFB, 0xF5, 0xF7, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0xDF, 0xFC, 0x80, 0xC0, 0x1F, 0x80, 0x5D, 0xD9, 0xA0, 0x44, 0x2, 0xF1, 0xFF, 0xFF, 0x0, 0x0, 0x3, 0xEB, 0xF0, 0x3, 0xFB, 0xF5, 0xF0, 0x1F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0x9F, 0xBD, 0x81, 0x40, 0xF, 0xC0, 0xDD, 0xF1, 0xA7, 0xC4, 0x4, 0xFE, 0xFF, 0xFC, 0x0, 0x0, 0x7, 0xEB, 0xF7, 0xFF, 0xFB, 0xF5, 0xFF, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x78, 0x83, 0xBD, 0x81, 0x40, 0x7, 0xC0, 0xDD, 0xE1, 0xA7, 0xC4, 0xC, 0xFE, 0xFF, 0xF0, 0x0, 0x0, 0x1F, 0xEB, 0xF7, 0xFF, 0xFB, 0xF5, 0xFF, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7C, 0x80, 0xBD, 0x81, 0xC0, 0x7, 0xC1, 0xBC, 0xE9, 0xA7, 0xA4, 0x3E, 0xEC, 0xFF, 0x80, 0x0, 0x0, 0x3F, 0xEB, 0xF7, 0xFF, 0xFB, 0xF5, 0xFF, 0x9F, 0xFF, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7C, 0x80, 0x7D, 0x81, 0xBC, 0x3, 0xA1, 0xFC, 0xF1, 0x98, 0x63, 0xDF, 0x71, 0xFC, 0x0, 0x0, 0x0, 0x3F, 0xEB, 0xF7, 0xFF, 0xFB, 0xF5, 0xFF, 0x9F, 0xFE, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7E, 0x80, 0x4D, 0x81, 0xBE, 0x3, 0x9E, 0xFD, 0x91, 0x98, 0xE0, 0x1F, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x3F, 0xEB, 0xF0, 0x0, 0x3, 0xF5, 0xFF, 0xC0, 0x0, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x0, 0x4D, 0x81, 0xBF, 0x3, 0x81, 0xFF, 0xF1, 0xBF, 0xE0, 0x1F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x3F, 0xEB, 0xF0, 0x0, 0x7F, 0xF5, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x70, 0x79, 0x81, 0xBF, 0x1, 0x81, 0xFF, 0xF1, 0xBF, 0xC0, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xEB, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x7C, 0x7, 0x81, 0xBF, 0x1, 0x80, 0xFF, 0xF1, 0x3F, 0x80, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xEB, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7F, 0x7E, 0x7, 0x81, 0xBF, 0x1, 0xC0, 0xFF, 0xE2, 0x3F, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xEB, 0xFF, 0xFF, 0xFF, 0xF3, 0x0, 0x0, 0x7F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x71, 0xBE, 0x7, 0x81, 0xBC, 0x3, 0xC0, 0x7F, 0xC0, 0x3F, 0x0, 0x3, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x71, 0x9E, 0x7, 0x81, 0x40, 0x3, 0xE0, 0x3F, 0xC0, 0x7F, 0x1C, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x1B, 0xF8, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x71, 0x80, 0x7, 0xC1, 0xF, 0xF8, 0x1F, 0xF1, 0xFF, 0x83, 0xF7, 0x81, 0xFF, 0x0, 0x3F, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFB, 0xF2, 0x5B, 0x3, 0x80, 0x0, 0x0, 0x0, 0x0, + 0x79, 0xFF, 0xF0, 0x7F, 0xF0, 0xF, 0xF0, 0x0, 0xE, 0x3, 0xF8, 0x7F, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xB6, 0x83, 0xC0, 0x0, 0x0, 0x0, 0x0, + 0x79, 0x98, 0x4, 0x3F, 0xFF, 0xF0, 0x7, 0xFF, 0xFE, 0x3, 0xE7, 0xC0, 0x7F, 0xFF, 0xE0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x8D, 0xB6, 0x83, 0xE0, 0x0, 0x0, 0x0, 0x0, + 0x7D, 0x8F, 0xE0, 0x3F, 0xFE, 0x1F, 0xFC, 0x0, 0x3, 0xF0, 0xF, 0xC0, 0x3F, 0xFF, 0xFC, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x12, 0xF6, 0xC3, 0xF0, 0x0, 0x0, 0x0, 0x0, + 0x7C, 0x8C, 0x3F, 0x80, 0x0, 0xFF, 0xFF, 0x0, 0x7, 0xF0, 0x1F, 0xE0, 0x1F, 0xFF, 0xFE, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x1F, 0xFF, 0xF3, 0xF8, 0x0, 0xF, 0x0, 0x0, + 0x7E, 0x1C, 0x7F, 0x80, 0xF, 0xFF, 0xFF, 0xC0, 0x3F, 0xE0, 0x3F, 0xF0, 0x1F, 0xFF, 0xFF, 0xC0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x13, 0xFE, 0xFF, 0xF8, 0x0, 0xFF, 0xE3, 0xF0, + 0xFE, 0xE3, 0xFF, 0x9F, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x28, 0x2, 0xFB, 0xFC, 0x1, 0xFF, 0xF3, 0xF0, + 0xFE, 0xE7, 0xFF, 0x9F, 0xFF, 0xF3, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x23, 0xFE, 0xF8, 0x0, 0x7, 0xFF, 0xFB, 0xF0, + 0xFE, 0xE7, 0xF0, 0x0, 0xFF, 0xE3, 0xF9, 0xFF, 0xFE, 0xFB, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xFE, 0xF8, 0x0, 0x7, 0xFF, 0xFF, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE3, 0xF9, 0xE1, 0xE4, 0x7B, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xFE, 0xF8, 0x0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE5, 0xF5, 0xDE, 0x63, 0xBB, 0xCC, 0xEF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xFE, 0xF8, 0x0, 0x1F, 0xFF, 0xFF, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE5, 0xE5, 0xDE, 0x67, 0xBB, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xFE, 0xF8, 0x0, 0x1F, 0xE0, 0x3F, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE5, 0xED, 0xDE, 0x67, 0xBB, 0xCF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xFE, 0xF8, 0x0, 0x1F, 0xC0, 0xF, 0xF0, + 0xFE, 0xE7, 0xF7, 0x1C, 0x3F, 0xE6, 0xDD, 0xC0, 0x67, 0xBB, 0xCF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xE3, 0x8F, 0xFE, 0x3F, 0x80, 0x7, 0xF0, + 0xFE, 0xE7, 0xF7, 0x1C, 0x3F, 0xE6, 0x5D, 0xCF, 0xE7, 0xBB, 0xCF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xC1, 0x7, 0xFE, 0x3F, 0x0, 0x7, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE7, 0x5D, 0xDF, 0xE7, 0xBB, 0xCF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xC1, 0x7, 0xFE, 0x3F, 0x0, 0x7, 0xF0, + 0xFE, 0xE7, 0xF7, 0xFC, 0xFF, 0xE7, 0xBD, 0xDE, 0x67, 0xBB, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xC1, 0x7, 0xFE, 0x3F, 0x0, 0x3, 0xF0, + 0xFC, 0xD7, 0xE7, 0xFD, 0xFF, 0xEF, 0x3D, 0xE1, 0xE7, 0xBC, 0x5F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x2F, 0xC1, 0x7, 0xFE, 0x3F, 0x0, 0x3, 0xF0, + 0xFC, 0xD7, 0xE7, 0xFD, 0xFF, 0xEF, 0xFD, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x27, 0xC1, 0x7, 0xFE, 0x3F, 0x0, 0x3, 0xF0, + 0xFC, 0xD7, 0xE0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x23, 0xFE, 0xF9, 0xFC, 0x3F, 0x0, 0x7, 0xF0, + 0xFC, 0xD7, 0xF0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x23, 0xFE, 0xFB, 0xFC, 0x3F, 0x0, 0x7, 0xF0, + 0xFC, 0xD7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x21, 0xFE, 0xFF, 0xF8, 0x3F, 0x80, 0x7, 0xF0, + 0xFC, 0xD7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x20, 0x7E, 0xFF, 0xF8, 0x3F, 0xC0, 0xF, 0xF0, + 0xFC, 0xD7, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xA0, 0x1E, 0xC7, 0xF0, 0x1F, 0xE0, 0x1F, 0xF0, + 0xFC, 0xD7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFB, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xA0, 0x1, 0x7, 0xE0, 0x1F, 0xFF, 0xFF, 0xF0, + 0xFC, 0xD7, 0xFF, 0xBF, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xC0, 0x1, 0x7, 0xC0, 0xF, 0xFF, 0xFF, 0xF0, + 0xFC, 0xD7, 0xFF, 0x3F, 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xE3, 0xF3, 0xCF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xC0, 0x1, 0x7, 0x80, 0x7, 0xFF, 0xFF, 0xF0, + 0xFC, 0xD7, 0xFF, 0x3F, 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xE3, 0xC0, 0x4, 0x8F, 0xFF, 0xFF, 0x80, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xD8, 0x1, 0x6, 0x0, 0x3, 0xFF, 0xFF, 0xF0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0x9F, 0xE7, 0x0, 0x0, 0x6F, 0xFF, 0xFF, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBE, 0x2, 0xC, 0x0, 0x1, 0xFF, 0xFB, 0xF0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xB7, 0xB7, 0x0, 0x0, 0x6F, 0xFF, 0xFE, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0x82, 0x10, 0x0, 0x0, 0x7F, 0xE3, 0xF0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xB7, 0xB7, 0xC0, 0x0, 0xEF, 0xFF, 0xFC, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0xF, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xF7, 0x80, 0x0, 0x6F, 0xFF, 0xF8, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFC, 0x0, 0xFF, 0xBB, 0x77, 0x0, 0x0, 0xF, 0xFF, 0xF0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x77, 0x0, 0x0, 0xF, 0xFF, 0xE0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF7, 0x0, 0x0, 0x7, 0xFF, 0xC0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0x0, 0x0, 0x7, 0xFF, 0x80, 0x0, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0x80, 0x0, 0x3, 0xFE, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x1, 0xF0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3F, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0xB, 0xF0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x30, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF9, 0xAF, 0xFF, 0x7F, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xC0, 0x3, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xDF, 0xF3, 0xFF, 0xDD, 0xFF, 0xE1, 0xF9, 0xBC, 0x3F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xDF, 0xFB, 0xFF, 0xDD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xDF, 0xFB, 0xFF, 0xDC, 0xCD, 0xDE, 0xEF, 0x3B, 0xDC, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFB, 0x8F, 0xDF, 0xFB, 0xFF, 0xDD, 0xDD, 0xFE, 0xEF, 0xBB, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBF, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF3, 0x5F, 0xBF, 0xF7, 0xFF, 0xBB, 0xBB, 0xFC, 0xEF, 0x70, 0x1E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF3, 0xF, 0x9B, 0xEE, 0xFF, 0xBB, 0xBB, 0xC0, 0xEF, 0x70, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF3, 0xAF, 0xD8, 0x68, 0xFF, 0xBB, 0xBB, 0xBC, 0xEF, 0x77, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xF, 0xDF, 0xEF, 0xFF, 0xBB, 0xBB, 0xBD, 0xDE, 0x77, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xF, 0xDF, 0xEF, 0xFF, 0xBB, 0xBB, 0xBD, 0xFE, 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xF, 0xDF, 0xEF, 0xFF, 0xBB, 0xBB, 0xC3, 0x73, 0x78, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xF, 0xC0, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xF, 0xC3, 0x7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7, 0xF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xB, 0xF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x1F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x9, 0x7, 0xFC, 0xF, 0xFF, 0xF0, 0x3, 0xFF, 0xF7, 0x0, 0x3F, 0xFC, 0x7F, 0xC0, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, 0xC0, 0x7, 0xFE, 0x7, 0x40, 0x9F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x83, 0xFC, 0x7, 0xFF, 0x84, 0x0, 0x7F, 0xF8, 0x0, 0x7, 0xF8, 0x3E, 0x0, 0x7, 0xE0, 0x7E, 0x3, 0xFE, 0x0, 0x1, 0xFE, 0x3, 0x40, 0xBF, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x9, 0xC3, 0xFC, 0x7, 0xFF, 0x4, 0x0, 0x3F, 0x9C, 0x30, 0x3, 0xF8, 0x3E, 0x0, 0x7, 0xEC, 0x81, 0x3, 0xFC, 0x0, 0x0, 0xFE, 0x1, 0x40, 0xBF, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x9, 0xC3, 0xFC, 0x7, 0xFE, 0x4, 0x0, 0x1F, 0xFE, 0x0, 0x1, 0xF8, 0x3E, 0xF, 0xC7, 0xEC, 0xFF, 0x7, 0xF8, 0x0, 0x0, 0x7F, 0x1, 0x40, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xE9, 0xC3, 0xFC, 0x7, 0xFC, 0x4, 0x0, 0xE, 0x43, 0x0, 0x1, 0xF8, 0x3E, 0x11, 0xC7, 0xEC, 0xC1, 0x8F, 0xF0, 0x0, 0x0, 0x3F, 0x80, 0xE0, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF5, 0xC3, 0xFC, 0x7, 0xFC, 0x3, 0xF0, 0xE, 0x0, 0x5E, 0xF8, 0x84, 0x3A, 0x17, 0x87, 0xEC, 0xC0, 0x7F, 0xF0, 0xF, 0xC0, 0x1F, 0x80, 0xE0, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xC3, 0xFC, 0x7, 0xF8, 0x3, 0xF8, 0x7, 0xE0, 0xCF, 0xF8, 0xFC, 0x3A, 0x1F, 0xEB, 0xEC, 0xC0, 0x4F, 0xE0, 0x1F, 0xF0, 0x1F, 0xC0, 0xA0, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xC3, 0xFC, 0x7, 0xF8, 0x13, 0xFC, 0x7, 0xF1, 0xCF, 0xD8, 0xFE, 0x2C, 0x1F, 0xFB, 0xEC, 0xC0, 0x47, 0xE0, 0x3F, 0xF8, 0x1F, 0xE0, 0xE3, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xC3, 0xFC, 0x7, 0xF0, 0x13, 0xFE, 0x7, 0x1F, 0xCF, 0xF0, 0xFE, 0x7C, 0x1E, 0x7B, 0xEC, 0xC0, 0x43, 0xE0, 0x7F, 0xF8, 0xF, 0xE0, 0xE3, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF7, 0xC3, 0xFC, 0x7, 0xF0, 0x10, 0x2, 0x3, 0xF, 0xCF, 0xF0, 0xCE, 0xFD, 0xF, 0xFB, 0xEC, 0xC0, 0x41, 0xC0, 0x7F, 0xF8, 0xF, 0xF0, 0xA6, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x1, 0xFF, 0xF0, + 0xF7, 0xC3, 0xFC, 0x7, 0xF0, 0x30, 0x2, 0x3, 0x1, 0xCF, 0xA0, 0x8E, 0xFD, 0x0, 0x4B, 0xEC, 0xBE, 0xC1, 0xC0, 0x7F, 0xFC, 0xF, 0xF0, 0xA7, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xE6, 0xC3, 0xFE, 0x7, 0xF0, 0x33, 0xFF, 0x2, 0x81, 0xDF, 0x60, 0xF8, 0xC0, 0x98, 0x43, 0xEC, 0xFF, 0xC0, 0xC0, 0x7F, 0xFC, 0xF, 0xF8, 0xAF, 0x7F, 0xFB, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEE, 0x3, 0xF8, 0x7, 0xF0, 0x27, 0xFE, 0x1, 0x7, 0x9F, 0xE1, 0xFC, 0xF3, 0xF0, 0x8F, 0xF9, 0xFF, 0xC0, 0xC0, 0x7F, 0xFC, 0xF, 0xF1, 0x46, 0xFF, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEE, 0x83, 0xF8, 0x7, 0xF0, 0x7, 0xFE, 0x3, 0x87, 0x99, 0xF1, 0xFC, 0x3B, 0xEF, 0x8F, 0xF1, 0xFC, 0xC0, 0xE0, 0x7F, 0xFC, 0xF, 0xE1, 0x40, 0xFF, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEF, 0x83, 0xF8, 0x7, 0xF8, 0x7, 0xFE, 0x7, 0x79, 0x98, 0x10, 0x88, 0x3B, 0xF0, 0x6, 0x1, 0x83, 0xC0, 0xE0, 0x7F, 0xF8, 0xF, 0xE1, 0x40, 0xFF, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEF, 0x83, 0xF8, 0x7, 0xF8, 0x7, 0xFC, 0x7, 0x81, 0xFF, 0xE0, 0xF8, 0x3F, 0xFF, 0x83, 0xE0, 0xFF, 0x80, 0xE0, 0x3F, 0xF8, 0x1F, 0xC1, 0xC0, 0xFF, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEF, 0x83, 0xF8, 0x7, 0xF8, 0x7, 0xFC, 0x7, 0x80, 0xFF, 0x80, 0x78, 0x38, 0xF, 0x81, 0xE0, 0x7F, 0x0, 0xE0, 0x1F, 0xF0, 0x1F, 0x81, 0xC0, 0xFF, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xEB, 0x83, 0xF8, 0x7, 0xFC, 0xB, 0xF8, 0xF, 0xC0, 0x7F, 0x0, 0xF8, 0x38, 0x7, 0x1, 0xE0, 0x0, 0x1, 0xF0, 0xF, 0xE0, 0x1F, 0x81, 0x81, 0x7F, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x13, 0x83, 0xF8, 0x7, 0xFC, 0x8, 0xC0, 0xF, 0xC0, 0x1C, 0x0, 0xF8, 0x3C, 0x0, 0x1, 0xE0, 0x0, 0x1, 0xF8, 0x3, 0x0, 0x3F, 0x1, 0x81, 0x7F, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x13, 0x83, 0xF8, 0x7, 0xFE, 0x8, 0x0, 0x1F, 0xE0, 0x0, 0x1, 0xF8, 0x3C, 0x0, 0x3, 0xE0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x7E, 0x2, 0x81, 0x3F, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x12, 0x83, 0xF8, 0x7, 0xFF, 0x18, 0x0, 0x3F, 0xF0, 0x0, 0x3, 0xF8, 0x3E, 0x0, 0x3, 0xE0, 0x0, 0x7, 0xFC, 0x0, 0x0, 0x7C, 0x2, 0xA1, 0x1F, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x13, 0x3, 0xF8, 0x7, 0xFF, 0x98, 0x0, 0x7F, 0x0, 0x40, 0x7, 0xF8, 0x3E, 0x0, 0x8, 0x20, 0x40, 0x8F, 0xFF, 0x0, 0x1, 0xFC, 0x6, 0xB0, 0x1F, 0xF7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x13, 0x3, 0xF8, 0x7, 0xFF, 0xE0, 0x0, 0xFF, 0xFE, 0x40, 0x1F, 0xF8, 0x3F, 0x0, 0x10, 0x30, 0xC1, 0xFF, 0xFF, 0x80, 0x3, 0xF8, 0xE, 0xB9, 0xF0, 0x7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x5, 0x3, 0xF8, 0xF, 0xFF, 0xE4, 0x7, 0xFD, 0xFB, 0xC0, 0xFF, 0xF8, 0x3B, 0xFF, 0xB7, 0xE8, 0xE7, 0x7F, 0xFF, 0xF0, 0x1F, 0xF8, 0x1E, 0xBF, 0xFC, 0xB7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFD, 0xFF, 0xB8, 0xF, 0xF, 0xF3, 0xCF, 0xF7, 0xFF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFD, 0xB7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0xBF, 0xCF, 0xF, 0xE3, 0xDF, 0xF7, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBE, 0xDB, 0x6F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0xBF, 0xEE, 0xF3, 0xDB, 0xCF, 0xF7, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xC7, 0xBF, 0x9E, 0xF3, 0xBB, 0xC1, 0xF7, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xED, 0xB7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xFB, 0xFF, 0xFF, 0xE0, 0x7, 0xFF, 0xFB, 0xBF, 0xFE, 0x73, 0xFB, 0xE0, 0xF7, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBE, 0xDB, 0x6F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE0, 0xF, 0xFF, 0xFB, 0xBF, 0x7E, 0x6, 0xF3, 0xFF, 0x77, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFD, 0xFB, 0xBE, 0xFE, 0xFE, 0x1, 0xDF, 0x77, 0xF3, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0x6D, 0xB7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFD, 0xFB, 0xBF, 0xFE, 0xFF, 0x1, 0xDF, 0x77, 0xF7, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBE, 0xDB, 0x6F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFD, 0xFB, 0xB9, 0xFE, 0xF7, 0xFB, 0xDF, 0x77, 0xEF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFF, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0x7, 0xB8, 0xF, 0xF, 0xFB, 0xF1, 0xF0, 0x1F, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBF, 0x6D, 0xB7, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xCD, 0x7F, 0xF3, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xF0, 0x3F, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBE, 0xDB, 0x6F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x9A, 0xFF, 0xF7, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x7F, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x3, 0xFE, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xFF, 0xE0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x9F, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xF0, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x80, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xE0, 0x70, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xC0, 0xF, 0xFC, 0x0, 0xF, 0x80, 0x0, 0x0, 0x7E, 0x1F, 0x80, 0x7E, 0x0, 0x0, 0x30, 0x0, 0x0, 0x3, 0x0, 0x1, 0xF8, 0x0, 0x0, 0x7, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x0, 0x3, 0xFC, 0x0, 0x7F, 0xF1, 0xF8, 0x3, 0xFF, 0x9F, 0x80, 0x7E, 0x0, 0x1, 0xFF, 0x0, 0x0, 0x1F, 0xF0, 0x1, 0xF8, 0x7, 0xF8, 0x7, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x1, 0xFE, 0x1, 0xFF, 0xF9, 0xF8, 0x7, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x7, 0xFF, 0xC0, 0x0, 0xFF, 0xFC, 0x1, 0xF8, 0x1F, 0xFC, 0x7, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFD, 0xF8, 0x1F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x1F, 0xFF, 0xF0, 0x1, 0xFF, 0xFE, 0x1, 0xF8, 0x3F, 0xFE, 0x7, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xFC, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x3F, 0xFF, 0xF8, 0x3, 0xFF, 0xFF, 0x81, 0xF8, 0x7F, 0xFF, 0x3, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x7F, 0xFF, 0xFC, 0x7, 0xFF, 0xFF, 0x81, 0xF8, 0x7F, 0xFF, 0x7, 0xF0, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0xFF, 0xFF, 0xFC, 0xF, 0xFF, 0xFF, 0xC1, 0xF8, 0xFE, 0x3F, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, 0xFF, 0x80, 0x7E, 0x0, 0xFF, 0x3, 0xFE, 0xF, 0xF0, 0x3F, 0xE1, 0xF8, 0xFC, 0x1F, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x0, 0x0, 0x0, 0x1F, 0xE0, 0x7, 0xF8, 0xFF, 0x0, 0x7F, 0x80, 0x7E, 0x1, 0xFE, 0x0, 0xFE, 0x1F, 0xE0, 0x1F, 0xE1, 0xF8, 0xFC, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x1F, 0xFF, 0xFF, 0x1F, 0xC0, 0x7, 0xF9, 0xFE, 0x0, 0x3F, 0x80, 0x7E, 0x1, 0xFC, 0x0, 0x7F, 0x1F, 0xC0, 0xF, 0xF1, 0xF8, 0xFE, 0x0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x1F, 0xFF, 0xFF, 0x9F, 0xC0, 0x3, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xFC, 0x0, 0x7F, 0x3F, 0x80, 0x7, 0xF1, 0xF8, 0x7F, 0x80, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x1F, 0xFF, 0xFF, 0x1F, 0x80, 0x3, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x3, 0xF8, 0x0, 0x3F, 0x3F, 0x80, 0x7, 0xF1, 0xF8, 0x7F, 0xF0, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xF8, 0x1F, 0xFF, 0xFF, 0x3F, 0x80, 0x1, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x3, 0xF8, 0x0, 0x3F, 0x3F, 0x80, 0x7, 0xF1, 0xF8, 0x3F, 0xFC, 0x7, 0xE0, 0x30, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xFC, 0x1F, 0xFF, 0xFF, 0x3F, 0x80, 0x1, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x3, 0xF8, 0x0, 0x3F, 0xBF, 0x80, 0x3, 0xF1, 0xF8, 0xF, 0xFE, 0x7, 0xE0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFC, 0x1F, 0xFF, 0xFF, 0x3F, 0x80, 0x1, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x3, 0xF8, 0x0, 0x3F, 0x3F, 0x80, 0x3, 0xF1, 0xF8, 0x3, 0xFF, 0x7, 0xE0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFE, 0x0, 0x0, 0xFE, 0x1F, 0x80, 0x3, 0xF9, 0xFC, 0x0, 0x1F, 0x80, 0x7E, 0x1, 0xF8, 0x0, 0x3F, 0x3F, 0x80, 0x7, 0xF1, 0xF8, 0x0, 0x7F, 0x87, 0xE0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x0, 0x1, 0xFE, 0x1F, 0xC0, 0x3, 0xF9, 0xFC, 0x0, 0x3F, 0x80, 0x7E, 0x1, 0xFC, 0x0, 0x7F, 0x1F, 0x80, 0x7, 0xF1, 0xF8, 0x0, 0x1F, 0x87, 0xE0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x80, 0x3, 0xFC, 0x1F, 0xC0, 0x3, 0xF9, 0xFE, 0x0, 0x7F, 0x80, 0x7E, 0x1, 0xFC, 0x0, 0x7F, 0x1F, 0xC0, 0x7, 0xF1, 0xF8, 0x0, 0xF, 0x87, 0xE0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xC0, 0x7, 0xFC, 0x1F, 0xE0, 0x7, 0xF8, 0xFF, 0x0, 0xFF, 0x80, 0x7E, 0x0, 0xFE, 0x0, 0xFF, 0x1F, 0xE0, 0xF, 0xE1, 0xF8, 0xFC, 0xF, 0x87, 0xE0, 0x10, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xF8, 0x3F, 0xF8, 0xF, 0xF0, 0xF, 0xF8, 0xFF, 0xC1, 0xFF, 0x80, 0x7E, 0x0, 0xFF, 0x1, 0xFE, 0xF, 0xF0, 0x3F, 0xE1, 0xF8, 0xFE, 0x1F, 0x87, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xFF, 0xFF, 0xF0, 0xF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x7F, 0xFF, 0xFE, 0xF, 0xFF, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0xFF, 0xFF, 0xE0, 0x7, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x7F, 0xFF, 0xFC, 0x7, 0xFF, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xC0, 0x3, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x3F, 0xFF, 0xF8, 0x3, 0xFF, 0xFF, 0x81, 0xF8, 0x7F, 0xFF, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0x80, 0x3, 0xFF, 0xFF, 0xF8, 0xF, 0xFF, 0xFF, 0x80, 0x7E, 0x0, 0x1F, 0xFF, 0xF0, 0x1, 0xFF, 0xFF, 0x1, 0xF8, 0x3F, 0xFE, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFE, 0x0, 0x0, 0xFF, 0xFD, 0xF8, 0x7, 0xFF, 0xDF, 0x80, 0x7E, 0x0, 0x7, 0xFF, 0xE0, 0x0, 0x7F, 0xFC, 0x1, 0xF8, 0x1F, 0xFC, 0x7, 0xFF, 0xF0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xF8, 0x0, 0x0, 0x7F, 0xF1, 0xF8, 0x1, 0xFF, 0x1F, 0x80, 0x7E, 0x0, 0x1, 0xFF, 0x0, 0x0, 0x1F, 0xF0, 0x1, 0xF8, 0x7, 0xF0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xFF, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3F, 0xC0, 0x0, 0x0, 0x7F, 0xFF, 0xFF, 0xB1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x0, 0x7F, 0xFF, 0xF0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x7F, 0xFF, 0xFF, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0xFF, 0xC0, 0x7E, 0x23, 0xF8, 0x0, 0x3E, 0xC0, 0xF, 0xE0, 0x1E, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x81, 0xFF, 0xE0, 0x7F, 0x23, 0xF8, 0x0, 0x7E, 0xF0, 0x7, 0xF0, 0x3E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x83, 0xFF, 0xF0, 0x7E, 0x43, 0xF0, 0x3, 0xBD, 0xFC, 0x3, 0xF0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xFF, 0xF0, 0x7E, 0x47, 0xF0, 0xF, 0xDD, 0x9E, 0x0, 0x78, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xFF, 0xF0, 0x7E, 0x7F, 0xF0, 0xF, 0xDC, 0xFE, 0x1, 0xB8, 0x4E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xE3, 0xF0, 0x7F, 0x7F, 0xE0, 0x1F, 0xDC, 0xE6, 0x1, 0xB8, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xC1, 0x80, 0x7F, 0x7F, 0xC0, 0x1F, 0xC0, 0x66, 0x0, 0xB9, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xE0, 0x0, 0x7F, 0x7F, 0xE0, 0x3F, 0x80, 0x26, 0x40, 0x3B, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xE0, 0x0, 0x7E, 0xFF, 0xF0, 0x3F, 0x0, 0xE, 0x40, 0x3B, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xFC, 0x0, 0x7E, 0xFF, 0xF8, 0x3F, 0x0, 0xE, 0x40, 0x3B, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x83, 0xFF, 0x0, 0x7E, 0x7F, 0xF8, 0x3E, 0x0, 0x6, 0x40, 0x1B, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x83, 0xFF, 0x80, 0x7E, 0x43, 0xFC, 0x5E, 0x0, 0xE, 0x60, 0x1C, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x81, 0xFF, 0xB0, 0x7E, 0x41, 0xFC, 0x60, 0x0, 0xE, 0x60, 0x1F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0xFF, 0xB0, 0x7E, 0x40, 0xFC, 0x7E, 0x0, 0xE, 0x40, 0x1F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x8F, 0x80, 0x7E, 0x40, 0xFE, 0x7E, 0x0, 0xE, 0x40, 0x3F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x83, 0xF8, 0x7E, 0x40, 0xFE, 0x7F, 0x0, 0xE, 0xC0, 0x7F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x81, 0xF8, 0x7E, 0x40, 0xFE, 0x3F, 0x0, 0x1D, 0xC0, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8F, 0xC1, 0xF8, 0x7E, 0x43, 0xFC, 0x3F, 0x80, 0x3F, 0xC0, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8F, 0xE1, 0xF8, 0x7E, 0xFF, 0xFC, 0x1F, 0xC0, 0x3F, 0x80, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0xFF, 0xE4, 0x7, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8F, 0xFF, 0xF8, 0x3E, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x7E, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x4, 0xD, 0xA4, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0x80, 0x0, 0x0, 0xF, 0xF0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x49, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x87, 0xE7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x72, 0x49, 0x7C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x83, 0xF7, 0xFF, 0xFF, 0xFF, 0xE0, 0x3, 0xFF, 0xFC, 0xF, 0xF0, 0x3F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xED, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x83, 0xF7, 0xC0, 0x7F, 0xFF, 0x0, 0x0, 0xFF, 0xF8, 0xF, 0xE0, 0x1F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xE0, 0x0, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x81, 0xEF, 0x80, 0x7F, 0xF0, 0x0, 0x0, 0x3F, 0xC0, 0x1F, 0xC0, 0xF, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xEC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xC, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0xFF, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0xF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0xE3, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x1C, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0xE3, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x3E, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x3E, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x8, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x3E, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x18, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF0, 0x3E, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x18, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0xF8, 0x3E, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x1F, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0xF, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xFF, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0x40, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x7F, 0xE0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0x40, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x7F, 0xFE, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0x40, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x3F, 0xFE, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0xC0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x3F, 0xFE, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0x8, 0x0, 0xC0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x27, 0xFE, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x41, 0xFD, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x7D, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x3, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6, 0x10, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x3F, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x20, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x20, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x20, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x30, 0x20, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xC, 0x20, 0x40, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xC, 0x70, 0x67, 0x9F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xC, 0x70, 0x67, 0x9F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x70, 0x60, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x70, 0x60, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x70, 0x60, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x70, 0x7F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x70, 0x3F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF8, 0x70, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFC, 0x70, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFE, 0x78, 0x3, 0xF0, 0x0, 0xF, 0xFC, 0x0, 0x0, 0xFF, 0xC0, 0x3, 0x80, 0x3F, 0xE0, 0xF, 0x0, 0x78, 0x0, 0x3F, 0xF8, 0x1, 0xF8, 0x3F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFF, 0x7C, 0x3, 0xF8, 0x0, 0x7F, 0xFF, 0x80, 0x7, 0xFF, 0xF8, 0x7, 0xC1, 0xFF, 0xF8, 0x1F, 0x81, 0xFC, 0x1, 0xFF, 0xFE, 0x1, 0xFC, 0x3F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFE, 0x7C, 0x3, 0xF8, 0x0, 0xFF, 0xFF, 0xC0, 0x3, 0xCF, 0xFC, 0x7, 0xC1, 0xFF, 0xF8, 0x13, 0x0, 0xFC, 0x3, 0xFF, 0xFF, 0x1, 0xFE, 0x3F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFE, 0x7C, 0x3, 0xF8, 0x1, 0xFF, 0xFF, 0xE0, 0x1, 0xFF, 0xFE, 0x7, 0xC1, 0xF0, 0x38, 0x13, 0x0, 0xF8, 0x7, 0xFF, 0xFF, 0x80, 0xFE, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1E, 0x7C, 0x3, 0xF8, 0x3, 0xFF, 0xFF, 0xF0, 0x3C, 0xFF, 0xFE, 0x7, 0xC1, 0xE0, 0x38, 0x13, 0x3E, 0x70, 0xF, 0xFF, 0xFF, 0xC0, 0x7F, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xA, 0x7C, 0x3, 0xF8, 0x3, 0xFC, 0xF, 0xF0, 0x7F, 0x80, 0x7, 0x3, 0xC1, 0xE0, 0x78, 0x13, 0x3F, 0x80, 0xF, 0xF0, 0x3F, 0xE0, 0x7F, 0x3F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x7C, 0x3, 0xF8, 0x7, 0xFC, 0x7, 0xF8, 0x1F, 0x0, 0x7, 0x3, 0xC1, 0xE0, 0x10, 0x13, 0x3F, 0xB0, 0x1F, 0xE0, 0xF, 0xE0, 0x3F, 0x7F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x7C, 0x3, 0xF8, 0x7, 0xEC, 0x3, 0xF8, 0xE, 0x0, 0x27, 0x1, 0xC1, 0xE0, 0x0, 0x13, 0x3F, 0xB8, 0x1F, 0xC0, 0x7, 0xE0, 0x1F, 0x3C, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x7C, 0x3, 0xF8, 0xF, 0xEC, 0x1, 0xF8, 0xE0, 0x0, 0xF, 0x1, 0x81, 0xE0, 0x0, 0x13, 0x3F, 0xBC, 0x1F, 0x80, 0x7, 0xF0, 0x1F, 0x3C, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x7C, 0x3, 0xF8, 0xF, 0xEF, 0xFD, 0xFC, 0xF0, 0x0, 0xF, 0x1, 0x0, 0xF0, 0x0, 0x13, 0x3F, 0xBE, 0x3F, 0x80, 0x7, 0xF0, 0xF, 0x79, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x8, 0x7C, 0x3, 0xF8, 0xF, 0xCF, 0xFD, 0xFC, 0xFC, 0x0, 0x1F, 0x1, 0x0, 0xFF, 0xB0, 0x13, 0x1, 0x3E, 0x3F, 0x80, 0x3, 0xF0, 0xF, 0x78, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x18, 0x7C, 0x3, 0xF8, 0xF, 0xCC, 0x0, 0xFC, 0x7C, 0x0, 0x1F, 0x7, 0x0, 0x67, 0xB8, 0x13, 0x0, 0x3F, 0x3F, 0x80, 0x3, 0xF0, 0x7, 0x70, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10, 0xFC, 0x7, 0xF8, 0xF, 0xD8, 0x1, 0xFC, 0xF8, 0x0, 0x1E, 0x3, 0x0, 0xF, 0x70, 0x6, 0x0, 0x3F, 0x3F, 0x80, 0x3, 0xF0, 0xE, 0xF9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10, 0xFC, 0x7, 0xF8, 0xF, 0xF8, 0x1, 0xFC, 0x78, 0x0, 0xE, 0x3, 0xC0, 0x0, 0x70, 0xE, 0x0, 0x3F, 0x1F, 0x80, 0x3, 0xF0, 0x1E, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10, 0xFC, 0x7, 0xF8, 0x7, 0xF8, 0x1, 0xF8, 0x6, 0x0, 0xF, 0x7, 0xC0, 0x0, 0xF8, 0x1E, 0x0, 0x3F, 0x1F, 0x80, 0x7, 0xF0, 0x1E, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10, 0xFC, 0x7, 0xF8, 0x7, 0xF8, 0x3, 0xF8, 0x7E, 0x0, 0x1F, 0x7, 0xC0, 0x0, 0x7C, 0x1F, 0x0, 0x7F, 0x1F, 0xC0, 0x7, 0xE0, 0x3E, 0x7F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10, 0xFC, 0x7, 0xF8, 0x7, 0xF8, 0x3, 0xF8, 0x7F, 0x0, 0x7F, 0x87, 0xC7, 0xF0, 0x7E, 0x1F, 0x80, 0xFF, 0x1F, 0xE0, 0xF, 0xE0, 0x7E, 0x7F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x14, 0xFC, 0x7, 0xF8, 0x3, 0xFC, 0x7, 0xF0, 0x3F, 0x80, 0xFF, 0x7, 0xC7, 0xF8, 0xFE, 0x1F, 0xFF, 0xFE, 0xF, 0xF0, 0x1F, 0xE0, 0x7E, 0x7F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFC, 0xFC, 0x7, 0xF8, 0x3, 0xFF, 0x3F, 0xF0, 0x3F, 0xE3, 0xFF, 0x7, 0xC3, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x7, 0xFC, 0xFF, 0xC0, 0xFE, 0x7F, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFC, 0xFC, 0x7, 0xF8, 0x1, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x7, 0xC3, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x7, 0xFF, 0xFF, 0x81, 0xFC, 0x7F, 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFD, 0xFC, 0x7, 0xF8, 0x0, 0xFF, 0xFF, 0xC0, 0xF, 0xFF, 0xFC, 0x7, 0xC1, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x3, 0xFF, 0xFF, 0x83, 0xFC, 0x5F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFC, 0xFC, 0x7, 0xF8, 0x0, 0x7F, 0xFF, 0x80, 0x7, 0xBF, 0xF8, 0x7, 0xC1, 0xFF, 0xF0, 0x1F, 0xBF, 0x70, 0x0, 0xFF, 0xFE, 0x3, 0xF8, 0x4F, 0xE0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xFC, 0xFC, 0x7, 0xF8, 0x0, 0x1F, 0xFF, 0x0, 0x1, 0xBF, 0xE0, 0x7, 0xC0, 0xFF, 0xE0, 0xF, 0x3E, 0x0, 0x0, 0x7F, 0xFC, 0x7, 0xF0, 0x46, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF8, 0xFC, 0x7, 0xF0, 0x0, 0x1B, 0xF8, 0x0, 0x0, 0x3F, 0x0, 0x7, 0xC0, 0x0, 0x40, 0x7, 0x18, 0x0, 0x0, 0xF, 0xE0, 0x7, 0xE0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0x4, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0x4, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0x4, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0x4, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0x4, 0x0, 0x0, 0x1F, 0xF8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x1F, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x30, 0x80, 0xC, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x61, 0x0, 0x8, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + +}; + +Object *GTBLOGOImg=NULL; +struct BitMap GTBLOGOBitMap = { 32, 205, NULL, 5, NULL, {(PLANEPTR)>BLOGOPlanes[0],(PLANEPTR)>BLOGOPlanes[6560],(PLANEPTR)>BLOGOPlanes[13120],(PLANEPTR)>BLOGOPlanes[19680],(PLANEPTR)>BLOGOPlanes[26240]} }; + + diff --git a/GadToolsBox/guifunc.c b/GadToolsBox/guifunc.c new file mode 100755 index 0000000..589534e --- /dev/null +++ b/GadToolsBox/guifunc.c @@ -0,0 +1,2900 @@ +/* This file contains empty template routines that + * the IDCMP handler will call uppon. Fill out these + * routines with your code or use them as a reference + * to create your program. + */ + +#include"includes.h" + +struct List *GenList; +ULONG ActiveGadget=NULL,PropertiesMode=PM_NONE,ActiveObject=NULL; +piObject *CurrentWindow=NULL; +piObject *CurrentGadget=NULL; +piObject *CurrentFrame=NULL; +piObject *CurrentMenu=NULL; +piObject *CurrentScreen=NULL; +piObject *CurrentString=NULL; +piObject *CurrentVersion=NULL; +piObject *CurrentImage=NULL; +struct Node_Window *CurrentWindowNode=NULL; +BOOL Shift=FALSE; +LONG SelectedLV=-1; +TEXT ProjectName[256]="\0",FontName[256]="\0"; +struct NameInfo NameInfo; +#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24))) +struct TextAttr EditFontTA; +struct TextFont *EditFontTF=NULL; +BOOL ProjectChanged=FALSE; + +/*********** Status ***********************************************************/ + +void SetStatusWindow(int changed,STRPTR status) +{ + switch(changed) + { + case 0: ProjectChanged=changed; break; + case 1: ProjectChanged=changed; break; + } + + if(StatusWnd) + { + switch(changed) + { + case 0: SetText(StatusWnd,StatusGadgets[GD_STATUS_CHANGED]," "); break; + case 1: SetText(StatusWnd,StatusGadgets[GD_STATUS_CHANGED],"*"); break; + } + if(status!=(STRPTR)-1) SetText(StatusWnd,StatusGadgets[GD_STATUS_TEXT],status); + } +} + +int OpenStatusWindow(void) +{ + int retval; + + if(!StatusWnd) + { + if(!(retval=OpenWindow_Status())) + { + SetStatusWindow(ProjectChanged,(STRPTR)-1); + SetWndSignals(); + MenuCheck(MainMenus,FULLMENUNUM(3,2,0),TRUE); + SetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_STATUSOPEN); + return 0; + } + else return retval; + } + else + { + ActivateWindow(StatusWnd); + WindowToFront(StatusWnd); + } + return 0; +} + +void CloseStatusWindow(void) +{ + if(StatusWnd) + { + CloseWindow_Status(); + MenuCheck(MainMenus,FULLMENUNUM(3,2,0),FALSE); + ClearFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_STATUSOPEN); + } +} + +int FN_ChangeWindow_Status(void) +{ + GUI.gui_Prefs->pr_WinPos[WIN_STATUS].X=StatusWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_STATUS].Y=StatusWnd->TopEdge; + FindTagItem(WA_Left,(struct TagItem *)StatusWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_STATUS].X; + FindTagItem(WA_Top,(struct TagItem *)StatusWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_STATUS].Y; + return 1; +} + +/*********** Prefs ************************************************************/ + +int FN_PG_PREFS_GENERAL_SIZEZOOM_Clicked(void) +{ + return 1; +} + +int FN_PG_PREFS_GENERAL_FASTREDRAW_Clicked(void) +{ + return 1; +} + +int FN_PG_PREFS_GENERAL_AUTOBACKUP_Clicked(void) +{ + return 1; +} + +int FN_PG_PREFS_GENERAL_WRITEICONS_Clicked( void ) +{ + return 1; +} + +int FN_PG_PREFS_GENERAL_GETSCREEN_Clicked( void ) +{ + if(AslRequestTags(ScreenModeReq, + ASLSM_PubScreenName,GUI.gui_PubScreenName, + ASLSM_InitialHeight,Scr->Height-50, + ASLSM_InitialDisplayID,GUI.gui_Prefs->pr_DisplayID, + ASLSM_InitialDisplayWidth,GUI.gui_Prefs->pr_Width, + ASLSM_InitialDisplayHeight,GUI.gui_Prefs->pr_Height, + ASLSM_InitialDisplayDepth,GUI.gui_Prefs->pr_Depth, + ASLSM_DoWidth,TRUE, + ASLSM_DoHeight,TRUE, + ASLSM_DoDepth,TRUE, + ASLSM_PropertyMask,NULL, + TAG_DONE)) + { + GUI.gui_Prefs->pr_DisplayID=ScreenModeReq->sm_DisplayID; + GUI.gui_Prefs->pr_Width=ScreenModeReq->sm_DisplayWidth; + GUI.gui_Prefs->pr_Height=ScreenModeReq->sm_DisplayHeight; + GUI.gui_Prefs->pr_Depth=ScreenModeReq->sm_DisplayDepth; + GetDisplayInfoData(FindDisplayInfo(GUI.gui_Prefs->pr_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_SCREENMODE],NameInfo.Name); + } + return 1; +} + +UWORD RecalcObjectSizeX(struct TextFont *from,struct TextFont *to,UWORD value) +{ + return ((UWORD) (to->tf_XSize*value+(from->tf_XSize))/from->tf_XSize); +} + +UWORD RecalcObjectSizeY(struct TextFont *from,struct TextFont *to,UWORD value) +{ + return ((UWORD) (to->tf_YSize*value+(from->tf_YSize))/from->tf_YSize); +} + +void RecalculateGUI(struct TextFont *from,struct TextFont *to) +{ + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node_Window *nw; + piObject *wo,*go,*fo; + + for(wo=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + nw->nw_X=RecalcObjectSizeX(from,to,nw->nw_X); + nw->nw_Y=RecalcObjectSizeY(from,to,nw->nw_Y); + nw->nw_Width=RecalcObjectSizeX(from,to,nw->nw_Width); + nw->nw_Height=RecalcObjectSizeY(from,to,nw->nw_Height); + + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + ng->ng_X=RecalcObjectSizeX(from,to,ng->ng_X); + ng->ng_Y=RecalcObjectSizeY(from,to,ng->ng_Y); + ng->ng_Width=RecalcObjectSizeX(from,to,ng->ng_Width); + ng->ng_Height=RecalcObjectSizeY(from,to,ng->ng_Height); + } + for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + nf->nf_X=RecalcObjectSizeX(from,to,nf->nf_X); + nf->nf_Y=RecalcObjectSizeY(from,to,nf->nf_Y); + nf->nf_Width=RecalcObjectSizeX(from,to,nf->nf_Width); + nf->nf_Height=RecalcObjectSizeY(from,to,nf->nf_Height); + } + } +} + +int FN_PG_PREFS_GENERAL_EDITFONT_Clicked( void ) +{ + struct Node_Screen *ns; + UWORD OldSize; + struct TextFont oldtf; + + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + if(AslRequestTags(FontReq, + ASLFO_PubScreenName,GUI.gui_PubScreenName, + ASLFO_InitialHeight,Scr->Height-50, + ASLFO_InitialName,GUI.gui_Prefs->pr_FontName, + ASLFO_InitialSize,GUI.gui_Prefs->pr_FontSize, + ASLFO_MaxHeight,128, + TAG_DONE)) + { + OldSize=ns->ns_FontSize; + strncpy(ns->ns_FontName,FontReq->fo_Attr.ta_Name,30); + strncpy(GUI.gui_Prefs->pr_FontName,FontReq->fo_Attr.ta_Name,30); + ns->ns_FontSize=GUI.gui_Prefs->pr_FontSize=FontReq->fo_Attr.ta_YSize; + sprintf(FontName,"%s %ld, %s %ld",GUI.gui_Prefs->pr_FontName,GUI.gui_Prefs->pr_FontSize, ns->ns_FontName, ns->ns_FontSize); + SetText(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_FONTNAME],FontName); + + CopyMem(EditFontTF,&oldtf,sizeof(struct TextFont)); + if(EditFontTF) CloseFont(EditFontTF); + EditFontTA.ta_Name=ns->ns_FontName; + EditFontTA.ta_YSize=ns->ns_FontSize; + EditFontTA.ta_Style=FS_NORMAL; + EditFontTA.ta_Flags=FPF_DISKFONT|FPF_DESIGNED; + EditFontTF=OpenDiskFont(&EditFontTA); + + // GUI Font size, adapt GUI! + if(ns->ns_FontSize!=OldSize) + { + if(RequestOk(/*GetCatString(MSG_INFORMATION),GetCatString(MSG_FONTSIZECHANGED)*/"Information","Font size has been changed\nOld size was: %ld, New size is: %ld\nDo you want to recalculate all objects?",GetCatString(MSG_YESNO),oldtf.tf_YSize,EditFontTF->tf_YSize)) + RecalculateGUI(&oldtf,EditFontTF); + LayoutAllWindows(); + } + } + return 1; +} + +int FN_PG_PREFS_GEN_LIST_Clicked( void ) +{ + ULONG code; + TEXT executestr[256],buf2[256]; + + NameFromLock(GetProgramDir(),executestr,256); + GetListView(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GEN_LIST],&code); + sprintf(buf2,"generators/%s",FindNodeNum(GenList,code)->ln_Name); + AddPart(executestr,buf2,256); + sprintf(buf2," SETPREFS SEMAPHORE=\"%s\"",GTBSem.gs_Semaphore.ss_Link.ln_Name); + strcat(executestr,buf2); + Execute(executestr,NULL,NULL); + return 1; +} + +int FN_PREFS_SAVE_Clicked( void ) +{ + FN_PREFS_USE_Clicked(); + SavePrefs("ENV:GadToolsBox/GadToolsBox3.prefs"); + SavePrefs("ENVARC:GadToolsBox/GadToolsBox3.prefs"); + return 0; +} + +int FN_PREFS_USE_Clicked( void ) +{ + ULONG code; + + GetListView(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GEN_LIST],&code); + strcpy(GUI.gui_Prefs->pr_Generator,FindNodeNum(GenList,code)->ln_Name); +// GetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_WRITEICONS],&code); +// DoFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_WRITEICONS); + GetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_AUTOBACKUP],&code); + DoFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_AUTOBACKUP); + GetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_FASTREDRAW],&code); + DoFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_FASTREDRAW); + GetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_SIZEZOOM],&code); + DoFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_SIZEZOOM); + + return 0; +} + +int FN_PREFS_CANCEL_Clicked( void ) +{ + return 0; +} + +int FN_CloseWindow_Preferences( void ) +{ + return FN_PREFS_USE_Clicked(); +} + +void MakeGeneratorsList(struct List *l) +{ + struct FileInfoBlock *fib; + struct Node *n; + BPTR lock; + + if(fib=AllocDosObjectTags(DOS_FIB,TAG_DONE)) + { + if(lock=Lock("generators",ACCESS_READ)) + { + if(Examine(lock,fib)) + { + while(ExNext(lock,fib)) + { + if(fib->fib_DirEntryType<0) + { + if(strstr(fib->fib_FileName,".generator")) + { + n=MyAllocVec(sizeof(struct Node)+108,MEMF_PUBLIC); + n->ln_Name=((UBYTE *)n)+(sizeof(struct Node)); + strcpy(n->ln_Name,fib->fib_FileName); + AddTail(l,n); + } + } + } + } + UnLock(lock); + } + FreeDosObject(DOS_FIB,fib); + } +} + +void FreeGeneratorsList(struct List *l) +{ + struct Node *n; + + while(n=RemTail(l)) MyFreeVec(n); +} + +/*********** Grid *************************************************************/ + +int FN_GRID_OK_Clicked( void ) +{ + GUI.gui_Grid[0]=GetInteger(GridGadgets[GD_GRID_X]); + GUI.gui_Grid[1]=GetInteger(GridGadgets[GD_GRID_Y]); + if(GUI.gui_Grid[0]<1) GUI.gui_Grid[0]=2; + if(GUI.gui_Grid[1]<1) GUI.gui_Grid[1]=2; + GUI.gui_Prefs->pr_Grid[0]=GUI.gui_Grid[0]; + GUI.gui_Prefs->pr_Grid[1]=GUI.gui_Grid[1]; + switch(ActiveObject) + { + case ID_WIND: + piEraseObject(CurrentWindow); + break; + case ID_IMGE: + break; + } + + LayoutAllWindows(); + return 0; +} + +int FN_GRID_CANCEL_Clicked( void ) +{ + return 0; +} + +int FN_GRID_X_Clicked( void ) +{ + /* routine when gadget "X Size:" is clicked. */ + return 1; +} + +int FN_GRID_Y_Clicked( void ) +{ + /* routine when gadget "Y Size:" is clicked. */ + return 1; +} + +int FN_GRID_SNAP_Clicked( void ) +{ + /* routine when gadget "Grid On" is clicked. */ + GUI.gui_Prefs->pr_GridOn=GUI.gui_GridOn=GridMsg.Code; + return 1; +} + +int FN_GRID_SHOW_Clicked( void ) +{ + /* routine when gadget "Show Grid" is clicked. */ + GUI.gui_Prefs->pr_GridShow=GUI.gui_GridShow=GridMsg.Code; + return 1; +} + +int FN_CloseWindow_Grid(void) +{ + return FN_GRID_OK_Clicked(); +} + +/*********** About ************************************************************/ + +int FN_ABOUT_OK_Clicked( void ) +{ + return 0; +} + +int FN_ABOUT_TEXT_Clicked( void ) +{ + return 1; +} + +int FN_CloseWindow_About( void ) +{ + return 0; +} + +/*********** Lists ************************************************************/ + +ULONG ListSelected; + +int FN_LIST_Clicked(void) +{ + ListSelected=ListMsg.Code; + return 2; +} + +int FN_CloseWindow_List(void) +{ + return 0; +} + +/*********** Menus ************************************************************/ + +int FN_MainProjectNew_Selected( void ) +{ + FreeProject(); + ProjectName[0]='\0'; + return 1; +} + +extern struct GTBSemaphore GTBSem; + +int FN_MainProjectOpen_Selected( void ) +{ + if(ProjectChanged) + if(!RequestOk(GetCatString(MSG_CONFIRMATION),GetCatString(MSG_NOTSAVED),GetCatString(MSG_YESNO),(int)FilePart(ProjectName))) + return 1; + + if(AslRequestTags(OpenReq, + ASLFR_PubScreenName,GUI.gui_PubScreenName, + ASLFR_InitialPattern,"#?.(gtr|gui)", + ASLFR_RejectIcons,TRUE, + ASLFR_InitialFile,FilePart(ProjectName), + ASLFR_TitleText,GetCatString(MSG_SELECTPROJECTFILE), + TAG_DONE)) + { + OpenWindow_Working(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=WorkingWnd; + GTBSem.gs_Progress=WorkingGadgets[GD_WORK_PROGRESS]; + ReleaseSemaphore(>BSem.gs_Semaphore); + SetWindowTitles(WorkingWnd,GetCatString(MSG_LOADING),(UBYTE *)-1); + strcpy(ProjectName,OpenReq->fr_Drawer); + AddPart(ProjectName,OpenReq->fr_File,108); + + SetStatusWindow(0,GetCatString(MSG_LOADING)); + + FreeProject(); + + LoadGUI(ProjectName); +// LayoutAllWindows(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=NULL; + GTBSem.gs_Progress=NULL; + ReleaseSemaphore(>BSem.gs_Semaphore); + CloseWindow_Working(); + UpdateObjectList(); + SetStatusWindow(0,GetCatString(MSG_STATUS_RESLOADED)); + } + return 2; +} + +int FN_MainProjectSave_Selected( void ) +{ + TEXT bakname[256]; + + if(ProjectName[0]=='\0') FN_MainProjectSaveAs_Selected(); + else + { + OpenWindow_Working(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=WorkingWnd; + GTBSem.gs_Progress=WorkingGadgets[GD_WORK_PROGRESS]; + ReleaseSemaphore(>BSem.gs_Semaphore); + SetWindowTitles(WorkingWnd,GetCatString(MSG_SAVING),(UBYTE *)-1); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_AUTOBACKUP) + { + sprintf(bakname,"%s.bak",ProjectName); + Rename(ProjectName,bakname); + } + SetStatusWindow(0,GetCatString(MSG_SAVING)); + SaveGUI(ProjectName); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=NULL; + GTBSem.gs_Progress=NULL; + ReleaseSemaphore(>BSem.gs_Semaphore); + CloseWindow_Working(); + SetStatusWindow(0,GetCatString(MSG_STATUS_RESSAVED)); + } + return 1; +} + +int Exists(STRPTR fname) +{ + BPTR lock; + if(lock=Lock(fname,ACCESS_READ)) + { + UnLock(lock); + return 1; + } + return 0; +} + +int FN_MainProjectSaveAs_Selected( void ) +{ + TEXT bakname[256]; + + if(AslRequestTags(SaveReq, + ASLFR_PubScreenName,GUI.gui_PubScreenName, + ASLFR_InitialPattern,"#?.gtr", + ASLFR_RejectIcons,TRUE, + ASLFR_DoSaveMode,TRUE, + ASLFR_InitialFile,FilePart(ProjectName), + ASLFR_TitleText,GetCatString(MSG_SAVEPROJECTAS), + TAG_DONE)) + { + strcpy(ProjectName,SaveReq->fr_Drawer); + AddPart(ProjectName,SaveReq->fr_File,108); + if(!strstr(ProjectName,".gtr")) strcat(ProjectName,".gtr"); + + if(Exists(ProjectName)) + if(!RequestOk(GetCatString(MSG_CONFIRMATION),GetCatString(MSG_REPLACEFILE),GetCatString(MSG_YESNO),(int)FilePart(ProjectName))) + return 1; + + OpenWindow_Working(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=WorkingWnd; + GTBSem.gs_Progress=WorkingGadgets[GD_WORK_PROGRESS]; + ReleaseSemaphore(>BSem.gs_Semaphore); + SetWindowTitles(WorkingWnd,GetCatString(MSG_SAVING),(UBYTE *)-1); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_AUTOBACKUP) + { + sprintf(bakname,"%s.bak",ProjectName); + Rename(ProjectName,bakname); + } + SetStatusWindow(0,GetCatString(MSG_SAVING)); + SaveGUI(ProjectName); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=NULL; + GTBSem.gs_Progress=NULL; + ReleaseSemaphore(>BSem.gs_Semaphore); + CloseWindow_Working(); + SetStatusWindow(0,GetCatString(MSG_STATUS_RESSAVED)); + } + return 1; +} + +int FN_MainProjectSaveSource_Selected( void ) +{ + TEXT fname[108]; + TEXT executestr[256],buf2[256]; + TEXT bakname[256]; + TEXT baksname[256]; + char *c; + + if(GUI.gui_Prefs->pr_Generator[0]) + { + if(AslRequestTags(GenReq, + ASLFR_PubScreenName,GUI.gui_PubScreenName, + ASLFR_InitialPattern,"(#?.c|#?.h|#?.gtr)", + ASLFR_RejectIcons,TRUE, + ASLFR_DoSaveMode,TRUE, + ASLFR_InitialFile,FilePart(ProjectName), + ASLFR_TitleText,GetCatString(MSG_ENTERBASENAME), + TAG_DONE)) + { + strcpy(fname,GenReq->fr_Drawer); + AddPart(fname,GenReq->fr_File,108); + if(c=strstr(fname,".c")) *c='\0'; + if(c=strstr(fname,".h")) *c='\0'; + if(c=strstr(fname,".gtr")) *c='\0'; + + NameFromLock(GetProgramDir(),executestr,256); + sprintf(buf2,"generators/%s",GUI.gui_Prefs->pr_Generator); + AddPart(executestr,buf2,256); + sprintf(buf2," FILE=\"%s\" SEMAPHORE=\"%s\"",fname,GTBSem.gs_Semaphore.ss_Link.ln_Name); + strcat(executestr,buf2); + + strcpy(fname,GenReq->fr_Drawer); + AddPart(fname,GenReq->fr_File,108); + if(c=strstr(fname,".c")) *c='\0'; + if(c=strstr(fname,".h")) *c='\0'; + if(c=strstr(fname,".gtr")) *c='\0'; + strcat(fname,".c"); + + if(Exists(fname)) + if(!RequestOk(GetCatString(MSG_CONFIRMATION),GetCatString(MSG_REPLACEFILE),GetCatString(MSG_YESNO),(int)FilePart(fname))) + return 1; + + OpenWindow_Working(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=WorkingWnd; + GTBSem.gs_Progress=WorkingGadgets[GD_WORK_PROGRESS]; + GTBSem.gs_FontTF=EditFontTF; + ReleaseSemaphore(>BSem.gs_Semaphore); + SetWindowTitles(WorkingWnd,GetCatString(MSG_GENERATING),(UBYTE *)-1); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_AUTOBACKUP) + { + sprintf(baksname,"%s.c",fname); + sprintf(bakname,"%s.c.bak",fname); + Rename(baksname,bakname); + sprintf(baksname,"%s.h",fname); + sprintf(bakname,"%s.h.bak",fname); + Rename(baksname,bakname); + } + SetStatusWindow(0,GetCatString(MSG_GENERATING)); + Execute(executestr,NULL,NULL); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=NULL; + GTBSem.gs_Progress=NULL; + ReleaseSemaphore(>BSem.gs_Semaphore); + CloseWindow_Working(); + SetStatusWindow(2,GetCatString(MSG_STATUS_RESGENERATED)); + } + } + return 1; +} + +int FN_MainProjectPreferences_Selected( void ) +{ + int run=1,a; + struct List l; + struct Node *n; + struct Node_Screen *ns; + + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + NewList(&l); + MakeGeneratorsList(&l); + GenList=&l; + if(!OpenWindow_Preferences()) + { + GetDisplayInfoData(FindDisplayInfo(GUI.gui_Prefs->pr_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_SCREENMODE],NameInfo.Name); + sprintf(FontName,"%s %ld, %s %ld",GUI.gui_Prefs->pr_FontName,GUI.gui_Prefs->pr_FontSize, ns->ns_FontName, ns->ns_FontSize); + SetText(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_FONTNAME],FontName); + SetListView(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GEN_LIST],&l); + SetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_SIZEZOOM],GUI.gui_Prefs->pr_Flags&PRFLAG_SIZEZOOM); + SetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_AUTOBACKUP],GUI.gui_Prefs->pr_Flags&PRFLAG_AUTOBACKUP); + SetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_FASTREDRAW],GUI.gui_Prefs->pr_Flags&PRFLAG_FASTREDRAW); +// SetCheckMark(PreferencesWnd,PreferencesGadgets[GD_PG_PREFS_GENERAL_WRITEICONS],GUI.gui_Prefs->pr_Flags&PRFLAG_WRITEICONS); + if(n=FindName(&l,GUI.gui_Prefs->pr_Generator)) + { + a=GetNumNode(&l,n); + GT_SetGadgetAttrs(PreferencesGadgets[GD_PG_PREFS_GEN_LIST],PreferencesWnd,NULL,GTLV_Selected,a,GTLV_MakeVisible,a,TAG_DONE); + } + while(run) + { + Wait(1L<UserPort->mp_SigBit); + run=HandleIDCMP_Preferences(); + } + CloseWindow_Preferences(); + } + GenList=NULL; + FreeGeneratorsList(&l); + return 1; +} + +int FN_MainProjectAbout_Selected( void ) +{ + int run=1; + char regtext[2000]; + + if(!OpenWindow_About()) + { + if(CheckRegistration()) + sprintf(regtext,GetCatString(MSG_ABOUT),VER_VERSION,VER_REVISION,VER_AUTHOR,_FakeUserName,_FakeAddress,_FakeSerial); + else + sprintf(regtext,GetCatString(MSG_ABOUTUNREG),VER_VERSION,VER_REVISION,VER_AUTHOR); + SetGadgetAttrs(AboutGadgets[GD_ABOUT_TEXT],AboutWnd,NULL,TEXTFIELD_Text,regtext,TAG_DONE); + SetAttrs(GTBLOGOImg,SMBM_Recessed,TRUE,SMBM_Border,TRUE,TAG_DONE); + DrawImageState(AboutWnd->RPort,(struct Image *) GTBLOGOImg, AboutWnd->BorderLeft + AdaptX(8) , AboutWnd->BorderTop + AdaptY(4), IDS_NORMAL, DrawInfo); + while(run) + { + Wait(1L<UserPort->mp_SigBit); + run=HandleIDCMP_About(); + } + CloseWindow_About(); + } + return 1; +} + +int FN_MainProjectQuit_Selected( void ) +{ + if(ProjectChanged) + if(!RequestOk(GetCatString(MSG_CONFIRMATION),GetCatString(MSG_NOTSAVED),GetCatString(MSG_YESNO),(int)FilePart(ProjectName))) + return 1; + return 3; +} + +int FN_MainEditUndo_Selected( void ) +{ + ULONG a,error=0; + struct ContextNode *cn; + struct IFFHandle *iffh; + piObject *wo; + BOOL refresh=FALSE; + + switch(LastCommand) + { + case CMD_CUT: + wo=CurrentWindow; + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)UndoHandle; + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_GTBX,ID_WIND)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_FRME)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_LSTR)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_MENU)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_IMGE)) goto skip; + for(a=0;acn_Type==ID_GTBX) + { + switch(cn->cn_ID) + { + case ID_WIND: + refresh=TRUE; + piReadWindow(iffh,&wo); + break; + case ID_FRME: + piReadFrame(iffh,wo); break; + break; + case ID_MENU: + piReadMenu(iffh); break; + break; + case ID_IMGE: + piReadPointer(iffh); break; + break; + case ID_LSTR: + piReadObject(CurrentString,iffh); break; + break; + case BUTTON_ID: + case CHECKBOX_ID: + case COLORWHEEL_ID: + case CYCLE_ID: + case DATATYPE_ID: + case GRADIENTSLIDER_ID: + case INTEGER_ID: + case LISTVIEW_ID: + case MX_ID: + case NUMBER_ID: + case PAGE_ID: + case PALETTE_ID: + case POPUPMENU_ID: + case PROGRESS_ID: + case SCROLLER_ID: + case SLIDER_ID: + case STRING_ID: + case TAPEDECK_ID: + case TEXT_ID: + case TEXTFIELD_ID: + case TREEVIEW_ID: + refresh=TRUE; + piReadGadget(iffh,wo); + break; + } + } + } + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + if(refresh) + { + piOpenWindow(wo); + piRenderObject(wo); + RefreshProperties(); + } + break; + } + LastCommand=CMD_NONE; + return 1; +} + +int FN_MainEditRedo_Selected( void ) +{ + return 1; +} + +int FN_MainEditCut_Selected( void ) +{ + switch(ActiveObject) + { + case ID_WIND: + switch(GUI.gui_Mode) + { + case MODE_TEST: + break; + case MODE_GADGET: + case MODE_FRAME: + LastCommand=CMD_CUT; + if(piCutObject(CurrentWindow)==2) CurrentWindow=NULL; + else CurrentGadget=NULL; + break; + } + break; + case ID_MENU: + if(CurrentMenu) + { + LastCommand=CMD_CUT; + if(piCutObject(CurrentMenu)==2) CurrentMenu=NULL; + else piRenderObject(CurrentMenu); + } + break; + case ID_IMGE: + if(CurrentImage) + { + LastCommand=CMD_CUT; + piCutObject(CurrentImage); + CurrentImage=NULL; + } + break; + } + PropertiesMode=PM_NONE; + ActiveObject=NULL; + RefreshProperties(); + UpdateObjectList(); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 2; +} + +int FN_MainEditCopy_Selected( void ) +{ + switch(ActiveObject) + { + case ID_WIND: + switch(GUI.gui_Mode) + { + case MODE_TEST: + break; + case MODE_GADGET: + case MODE_FRAME: + piCopyObject(CurrentWindow,COPY_CLIP); + break; + } + break; + case ID_MENU: + if(CurrentMenu) + piCopyObject(CurrentMenu,COPY_CLIP); + break; + case ID_IMGE: + if(CurrentImage) + piCopyObject(CurrentImage,COPY_CLIP); + break; + } + return 1; +} + +int FN_MainEditPaste_Selected( void ) +{ + ULONG a,error=0; + struct ContextNode *cn; + struct IFFHandle *iffh; + piObject *wo; + BOOL refresh=FALSE,unknown=TRUE; + + LastCommand=CMD_PASTE; + wo=CurrentWindow; + if(!(ClipHandle=OpenClipboard(PRIMARY_CLIP))) return 1; + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)ClipHandle; + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_GTBX,ID_WIND)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_FRME)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_LSTR)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_MENU)) goto skip; + if(error=StopChunk(iffh,ID_GTBX,ID_IMGE)) goto skip; + for(a=0;acn_Type==ID_GTBX) + { + unknown=FALSE; + switch(cn->cn_ID) + { + case ID_WIND: + refresh=TRUE; + piReadWindow(iffh,&wo); + break; + case ID_FRME: + piReadFrame(iffh,wo); break; + break; + case ID_MENU: + piReadMenu(iffh); break; + break; + case ID_IMGE: + piReadImage(iffh); break; + break; + case ID_LSTR: + piReadObject(CurrentString,iffh); break; + break; + case BUTTON_ID: + case CHECKBOX_ID: + case COLORWHEEL_ID: + case CYCLE_ID: + case DATATYPE_ID: + case GRADIENTSLIDER_ID: + case INTEGER_ID: + case LISTVIEW_ID: + case MX_ID: + case NUMBER_ID: + case PAGE_ID: + case PALETTE_ID: + case POPUPMENU_ID: + case PROGRESS_ID: + case SCROLLER_ID: + case SLIDER_ID: + case STRING_ID: + case TAPEDECK_ID: + case TEXT_ID: + case TEXTFIELD_ID: + case TREEVIEW_ID: + refresh=TRUE; + piReadGadget(iffh,wo); + break; + } + } + } + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + if(unknown) + { + // Paste unknown object, currently only picture objects are supported + Object *dtobj; + piObject *io; + char *name; + struct BitMap *bm,*newbm; + struct Node_Image *ni; + struct ColorRegister *cr; + +// printf("Unknown object\n"); + + if(dtobj=NewDTObject(0, + DTA_SourceType,DTST_CLIPBOARD, + DTA_GroupID,GID_PICTURE, + OBP_Precision,PRECISION_EXACT, + PDTA_Screen,Scr, + PDTA_Remap,FALSE, + TAG_DONE)) + { +// printf("Picture datatype found!\n"); + if(io=piNewObject(piImageClass,TAG_DONE)) + { + piAddObject(io,NULL); + piGetAttr(io,OBJ_Node,(ULONG *)&ni); + GetDTAttrs(dtobj, + DTA_ObjName,&name, + PDTA_BitMap,&bm, + PDTA_ColorRegisters,&cr, + TAG_DONE); + strncpy(ni->ni_Label,name,40); + if(newbm=AllocBitMap(GetBitMapAttr(bm,BMA_WIDTH),GetBitMapAttr(bm,BMA_HEIGHT),GetBitMapAttr(bm,BMA_DEPTH),BMF_CLEAR,bm)) + { + ni->ni_Width=GetBitMapAttr(bm,BMA_WIDTH); + ni->ni_Height=GetBitMapAttr(bm,BMA_HEIGHT); + ni->ni_Depth=GetBitMapAttr(bm,BMA_DEPTH); +// printf("Bitmap allocated: %dx%dx%d\n",ni->ni_Width,ni->ni_Height,ni->ni_Depth); + BltBitMap(bm,0,0,newbm,0,0,ni->ni_Width,ni->ni_Height,0xc0,0xff,NULL); + if(ni->ni_BitMap) FreeBitMap(ni->ni_BitMap); + ni->ni_BitMap=newbm; + for(a=0;a<(2<ni_Depth);a++) + { + ni->ni_Pens[a]=ni->ni_CT[a].cp_I=-1; + ni->ni_CT[a].cp_R=Bit32(cr[a].red); + ni->ni_CT[a].cp_G=Bit32(cr[a].green); + ni->ni_CT[a].cp_B=Bit32(cr[a].blue); + } + } + } + DisposeDTObject(dtobj); + } + } + if(ClipHandle) CloseClipboard(ClipHandle); ClipHandle=NULL; + if(refresh) + { + piOpenWindow(wo); + piRenderObject(wo); + } + UpdateObjectList(); + RefreshObjectList(); + return 1; +} + +int FN_MainEditClear_Selected( void ) +{ + piObject *go,*fo,*o; + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node_Window *nw; + BOOL s=FALSE; + + switch(ActiveObject) + { + case ID_WIND: + o=CurrentWindow; + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + switch(GUI.gui_Mode) + { + case MODE_TEST: + break; + case MODE_GADGET: + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) { s=TRUE; break; } + } + if(s) + { +repg: for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) + { + piRemoveObject(go); + piDisposeObject(go); + goto repg; + } + } + piEraseObject(o); + piRenderObject(o); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + return 1; + } + else FN_MainObjWindowDelete_Selected(); + break; + case MODE_FRAME: + for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) { s=TRUE; break; } + } + if(s) + { +repf: for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) + { + piRemoveObject(fo); + piDisposeObject(fo); + goto repg; + } + } + piEraseObject(o); + piRenderObject(o); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + return 1; + } + else FN_MainObjWindowDelete_Selected(); + break; + } + break; + case ID_MENU: + FN_MainObjMenuDelete_Selected(); + break; + case ID_IMGE: + FN_MainObjImageDelete_Selected(); + break; + } + PropertiesMode=PM_NONE; + ActiveObject=NULL; + RefreshProperties(); + UpdateObjectList(); + return 2; +} + +int FN_MainEditDuplicate_Selected( void ) +{ + return 1; +} + +int FN_MainEditSelectAll_Selected( void ) +{ + piObject *o; + + switch(GUI.gui_Mode) + { + case MODE_GADGET: + for(o=(piObject *)GetHead(&CurrentWindowNode->nw_List_Gadget);GetSucc(o);o=(piObject *)GetSucc(o)) piSetAttrs(o,OBJ_Select,TRUE,TAG_DONE); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + for(o=(piObject *)GetHead(&CurrentWindowNode->nw_List_Frame);GetSucc(o);o=(piObject *)GetSucc(o)) piSetAttrs(o,OBJ_Select,TRUE,TAG_DONE); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditGrid_Selected( void ) +{ + BOOL ret=TRUE; + + unless(OpenWindow_Grid()) + { + SetInteger(GridWnd,GridGadgets[GD_GRID_X],GUI.gui_Grid[0]); + SetInteger(GridWnd,GridGadgets[GD_GRID_Y],GUI.gui_Grid[1]); + SetCheckMark(GridWnd,GridGadgets[GD_GRID_SNAP],GUI.gui_GridOn); + SetCheckMark(GridWnd,GridGadgets[GD_GRID_SHOW],GUI.gui_GridShow); + while(ret) + { + Wait(1L<UserPort->mp_SigBit); + ret=HandleIDCMP_Grid(); + } + CloseWindow_Grid(); + } + return 1; +} + +int FN_MainEditAlignToLeft_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_LEFT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_LEFT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditAlignToHCenter_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_HCENTER); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_HCENTER); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditAlignToRight_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_RIGHT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_RIGHT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditAlignToTop_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_TOP); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_TOP); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditAlignToVCenter_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_VCENTER); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_VCENTER); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditAlignToBottom_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,ALIGN_BOTTOM); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,ALIGN_BOTTOM); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditCloneWidth_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,CLONE_WIDTH); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,CLONE_WIDTH); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditCloneHeight_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,CLONE_HEIGHT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,CLONE_HEIGHT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditCloneBoth_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,CLONE_BOTH); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,CLONE_BOTH); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditSpreadHoriz_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,SPREAD_HORIZ); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,SPREAD_HORIZ); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainEditSpreadVertical_Selected( void ) +{ + switch(GUI.gui_Mode) + { + case MODE_GADGET: + AlignObjects(&CurrentWindowNode->nw_List_Gadget,SPREAD_VERT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + case MODE_FRAME: + AlignObjects(&CurrentWindowNode->nw_List_Frame,SPREAD_VERT); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + break; + } + return 1; +} + +int FN_MainObjTypeTest_Selected( void ) +{ + piObject *wo; + struct Node_Window *nw; + + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + SetWndSignals(); + if(GUI.gui_Mode!=MODE_TEST) + { + GUI.gui_Mode=MODE_TEST; + if(!ListEmpty(&GUI.gui_List_Window)) + { + for(wo=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + piCloseWindow(wo); + piOpenWindow(wo); + } + } + } + } + return 2; +} + +int FN_MainObjTypeGadget_Selected( void ) +{ + piObject *wo; + struct Node_Window *nw; + + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + SetWndSignals(); + if(GUI.gui_Mode==MODE_TEST) + { + GUI.gui_Mode=MODE_GADGET; + if(!ListEmpty(&GUI.gui_List_Window)) + { + for(wo=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + piCloseWindow(wo); + piOpenWindow(wo); + } + } + } + } + + GUI.gui_Mode=MODE_GADGET; + return 2; +} + +int FN_MainObjTypeFrame_Selected( void ) +{ + piObject *wo; + struct Node_Window *nw; + + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + SetWndSignals(); + if(GUI.gui_Mode==MODE_TEST) + { + GUI.gui_Mode=MODE_FRAME; + if(!ListEmpty(&GUI.gui_List_Window)) + { + for(wo=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(wo);wo=(piObject *)GetSucc(wo)) + { + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + piCloseWindow(wo); + piOpenWindow(wo); + } + } + } + } + + GUI.gui_Mode=MODE_FRAME; + return 2; +} + +int FN_MainObjWindowNew_Selected( void ) +{ + /* routine when (sub)item "New..." is selected. */ + piObject *tmp; + + if(tmp=piNewObject(piWindowClass,TAG_DONE)) + { + CurrentWindow=tmp; + ActiveObject=ID_WIND; + PropertiesMode=PM_WINDOW; + piAddObject(CurrentWindow,NULL); + piOpenWindow(CurrentWindow); + if(!TB_WindowWnd) + { + OpenWindow_TB_Window(); + ApplySelectionWindow(); + } + SetWndSignals(); + ApplySelectionWindow(); + UpdateObjectList(); + RefreshObjectList(); + } + return 1; +} + +int FN_MainObjWindowClose_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentWindow) + { + piCloseWindow(CurrentWindow); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentWindow=NULL; + RefreshProperties(); + } + if(TB_WindowWnd) CloseWindow_TB_Window(); + return 2; +} + +int FN_MainObjWindowDelete_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentWindow) + { + piRemoveObject(CurrentWindow); + piDisposeObject(CurrentWindow); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentWindow=NULL; + RefreshProperties(); + UpdateObjectList(); + } + if(TB_WindowWnd) CloseWindow_TB_Window(); + return 2; +} + +int FN_MainObjWindowRefresh_Selected( void ) +{ + /* routine when (sub)item "Refresh" is selected. */ + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + RefreshWindowFrame(CurrentWindowNode->nw_Window); + return 1; +} + +int FN_MainObjMenuNew_Selected( void ) +{ + /* routine when (sub)item "New..." is selected. */ + piObject *tmp; + + if(tmp=piNewObject(piMenuClass,TAG_DONE)) + { + CurrentMenu=tmp; + ActiveObject=ID_MENU; + PropertiesMode=PM_MENU; + piAddObject(CurrentMenu,NULL); + piOpenWindow(CurrentMenu); + UpdateObjectList(); + RefreshObjectList(); + } + return 1; +} + +int FN_MainObjMenuClose_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentMenu) + { + piCloseWindow(CurrentMenu); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentMenu=NULL; + RefreshProperties(); + } + return 2; +} + +int FN_MainObjMenuDelete_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentMenu) + { + piRemoveObject(CurrentMenu); + piDisposeObject(CurrentMenu); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentMenu=NULL; + RefreshProperties(); + UpdateObjectList(); + } + return 2; +} + +int FN_MainObjImageNew_Selected( void ) +{ + /* routine when (sub)item "New..." is selected. */ + piObject *tmp; + + if(tmp=piNewObject(piImageClass,TAG_DONE)) + { + CurrentImage=tmp; + ActiveObject=ID_IMGE; + PropertiesMode=PM_IMAGE; + piAddObject(CurrentImage,NULL); + piOpenWindow(CurrentImage); + FN_ActiveWindow_EditImage(); + UpdateObjectList(); + } + return 1; +} + +int FN_MainObjImageClose_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentImage) + { + piCloseWindow(CurrentImage); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentImage=NULL; + RefreshProperties(); + } + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 2; +} + +int FN_MainObjImageDelete_Selected( void ) +{ + /* routine when (sub)item "Delete..." is selected. */ + if(CurrentImage) + { + piRemoveObject(CurrentImage); + piDisposeObject(CurrentImage); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + CurrentImage=NULL; + RefreshProperties(); + UpdateObjectList(); + } + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 2; +} + +int FN_MainObjVersionOpen_Selected( void ) +{ + piOpenWindow(CurrentVersion); + ActiveObject=ID_SVER; + PropertiesMode=PM_NONE; + RefreshProperties(); + return 1; +} + +int FN_MainObjVersionClose_Selected( void ) +{ + piCloseWindow(CurrentVersion); + RefreshProperties(); + return 2; +} + +int FN_MainObjScreenOpen_Selected( void ) +{ + piOpenWindow(CurrentScreen); + ActiveObject=ID_SCRN; + PropertiesMode=PM_NONE; + RefreshProperties(); + return 1; +} + +int FN_MainObjScreenClose_Selected( void ) +{ + piCloseWindow(CurrentScreen); + RefreshProperties(); + return 2; +} + +int FN_MainObjStringsOpen_Selected( void ) +{ + piOpenWindow(CurrentString); + ActiveObject=ID_LSTR; + PropertiesMode=PM_STRING; + RefreshProperties(); + return 1; +} + +int FN_MainObjStringsClose_Selected( void ) +{ + piCloseWindow(CurrentString); + PropertiesMode=PM_NONE; + RefreshProperties(); + return 2; +} + +int FN_MainWindowProperties_Selected( void ) +{ + if(!PropertiesWnd) OpenWindow_Props(); + else CloseWindow_Props(); + return 2; +} + +int FN_MainWindowObjects_Selected( void ) +{ + if(!ObjectWnd) OpenObjectList(); + else CloseObjectList(); + return 2; +} + +int FN_MainWindowStatus_Selected( void ) +{ + if(!StatusWnd) OpenStatusWindow(); + else CloseStatusWindow(); + return 2; +} + +int FN_MainWindowHideAll_Selected( void ) +{ + DeleteAllWindows(); + DeleteAllMenus(); + DeleteAllImages(); + FN_CloseWindow_Screen(); + FN_CloseWindow_EditVersion(); + FN_CloseWindow_EditString(); + PropertiesMode=PM_NONE; + CurrentWindow=NULL; + CurrentMenu=NULL; + CurrentImage=NULL; + ActiveObject=NULL; + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + RefreshProperties(); + return 2; +} + +int FN_CloseWindow_Edit( void ) +{ + return FN_MainObjWindowClose_Selected(); +} + +int FN_NewSize_Edit( void ) +{ + /* routine for "IDCMP_NEWSIZE". */ + ULONG active; + struct Window *PropsWnd; + + if(GUI.gui_Mode!=MODE_TEST) + { + GetFlag(CurrentWindowNode->nw_MyFlags,MYWA_InnerWidth) + CurrentWindowNode->nw_Width=CurrentWindowNode->nw_Window->Width-CurrentWindowNode->nw_Window->BorderLeft-CurrentWindowNode->nw_Window->BorderRight; + else + CurrentWindowNode->nw_Width=CurrentWindowNode->nw_Window->Width; + GetFlag(CurrentWindowNode->nw_MyFlags,MYWA_InnerHeight) + CurrentWindowNode->nw_Height=CurrentWindowNode->nw_Window->Height-CurrentWindowNode->nw_Window->BorderTop-CurrentWindowNode->nw_Window->BorderBottom; + else + CurrentWindowNode->nw_Height=CurrentWindowNode->nw_Window->Height; + + switch(CurrentWindowNode->nw_XPos) + { + case WPOS_REL_LEFT_TOP: + CurrentWindowNode->nw_X=CurrentWindowNode->nw_Window->LeftEdge; + break; + case WPOS_REL_RIGHT_BOTTOM: + CurrentWindowNode->nw_X=(Scr->Width-CurrentWindowNode->nw_Window->LeftEdge-WinWidth(CurrentWindow)); + break; + case WPOS_CENTER: + CurrentWindowNode->nw_X=Scr->Width/2-WinWidth(CurrentWindow)/2; + break; + } + switch(CurrentWindowNode->nw_YPos) + { + case WPOS_REL_LEFT_TOP: + CurrentWindowNode->nw_Y=CurrentWindowNode->nw_Window->TopEdge; + break; + case WPOS_REL_RIGHT_BOTTOM: + CurrentWindowNode->nw_Y=(Scr->Height-CurrentWindowNode->nw_Window->TopEdge-WinHeight(CurrentWindow)); + break; + case WPOS_CENTER: + CurrentWindowNode->nw_Y=Scr->Height/2-WinHeight(CurrentWindow)/2; + break; + } + + piRenderObject(CurrentWindow); + if(PropertiesWnd) + { + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_X],CurrentWindowNode->nw_X); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_Y],CurrentWindowNode->nw_Y); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_WIDTH],CurrentWindowNode->nw_Width); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_HEIGHT],CurrentWindowNode->nw_Height); + } + SetStatusWindow(1,(STRPTR)-1); +// RefreshPropertiesWindow((UBYTE *)-1); + } + return 1; +} + +int FN_ChangeWindow_Edit( void ) +{ + /* routine for "IDCMP_CHANGEWINDOW". */ + ULONG active; + struct Window *PropsWnd; + + if(GUI.gui_Mode!=MODE_TEST) + { + GetFlag(CurrentWindowNode->nw_MyFlags,MYWA_InnerWidth) + CurrentWindowNode->nw_Width=CurrentWindowNode->nw_Window->Width-CurrentWindowNode->nw_Window->BorderLeft-CurrentWindowNode->nw_Window->BorderRight; + else + CurrentWindowNode->nw_Width=CurrentWindowNode->nw_Window->Width; + GetFlag(CurrentWindowNode->nw_MyFlags,MYWA_InnerHeight) + CurrentWindowNode->nw_Height=CurrentWindowNode->nw_Window->Height-CurrentWindowNode->nw_Window->BorderTop-CurrentWindowNode->nw_Window->BorderBottom; + else + CurrentWindowNode->nw_Height=CurrentWindowNode->nw_Window->Height; + + switch(CurrentWindowNode->nw_XPos) + { + case WPOS_REL_LEFT_TOP: + CurrentWindowNode->nw_X=CurrentWindowNode->nw_Window->LeftEdge; + break; + case WPOS_REL_RIGHT_BOTTOM: + CurrentWindowNode->nw_X=(Scr->Width-CurrentWindowNode->nw_Window->LeftEdge-WinWidth(CurrentWindow)); + break; + case WPOS_CENTER: + CurrentWindowNode->nw_X=Scr->Width/2-WinWidth(CurrentWindow)/2; + break; + } + switch(CurrentWindowNode->nw_YPos) + { + case WPOS_REL_LEFT_TOP: + CurrentWindowNode->nw_Y=CurrentWindowNode->nw_Window->TopEdge; + break; + case WPOS_REL_RIGHT_BOTTOM: + CurrentWindowNode->nw_Y=(Scr->Height-CurrentWindowNode->nw_Window->TopEdge-WinHeight(CurrentWindow)); + break; + case WPOS_CENTER: + CurrentWindowNode->nw_Y=Scr->Height/2-WinHeight(CurrentWindow)/2; + break; + } + if(PropertiesWnd) + { + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_X],CurrentWindowNode->nw_X); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_Y],CurrentWindowNode->nw_Y); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_WIDTH],CurrentWindowNode->nw_Width); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_HEIGHT],CurrentWindowNode->nw_Height); + } + SetStatusWindow(1,(STRPTR)-1); + } + return 1; +} + +int prevsel=-1; + +#define IDMN_EDIT 1 +#define IDMN_CUT 2 +#define IDMN_COPY 3 +#define IDMN_ALIGN 10 +#define IDMN_CLONE 11 +#define IDMN_SPREAD 12 + +#define IDMN_OBJECT 2 +#define IDMN_WINDOW 0 +#define IDMN_MENU 1 +#define IDMN_IMAGE 2 +#define IDMN_STRING 3 +#define IDMN_SCREEN 4 +#define IDMN_VERSION 5 + +#define IDMN_NEW 0 +#define IDMN_CLOSE 1 +#define IDMN_DELETE 2 +#define IDMN_REFRESH 4 + +void RefreshProperties(void) +{ + int sel; + + switch(ActiveObject) + { + case ID_WIND: + if(CurrentWindowNode->nw_Window) PropertiesMode=PM_WINDOW; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + if(CurrentWindowNode->nw_Window) sel=HowManySelected(&CurrentWindowNode->nw_List_Gadget); + else sel=0; + if(sel==1) PropertiesMode=PM_GADGET; + if(sel>1) PropertiesMode=PM_NONE; + if(sel==0) + { + if(CurrentWindowNode->nw_Window) PropertiesMode=PM_WINDOW; + RefreshPropertiesWindow(GetCatString(MSG_WINDOWOBJECT)); + } + else RefreshPropertiesWindow(GetCatString(MSG_GADGETOBJECT)); + break; + case MODE_FRAME: + sel=HowManySelected(&CurrentWindowNode->nw_List_Frame); + if(sel==1) PropertiesMode=PM_FRAME; + if(sel>1) PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_FRAMEOBJECT)); + break; + case MODE_TEST: + PropertiesMode=PM_NONE; + sel=0; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + break; + } + if(sel!=prevsel) + { + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CUT,-1)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_COPY,-1)); + DisableGadget(TB_MainGadgets[GD_TB_CUT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_COPY],TB_MainWnd,0); + + if(sel>1) + { + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_ALIGN,-1)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CLONE,-1)); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNLEFT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNHCENTER],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNRIGHT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNTOP],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNVCENTER],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNBOTTOM],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_CLONEWIDTH],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_CLONEHEIGHT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_CLONEBOTH],TB_MainWnd,0); + } + else + { + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_ALIGN,-1)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CLONE,-1)); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNLEFT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNHCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNRIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNTOP],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNVCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNBOTTOM],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEWIDTH],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEHEIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEBOTH],TB_MainWnd,1); + } + if(sel>2) + { + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_SPREAD,-1)); + DisableGadget(TB_MainGadgets[GD_TB_SPREADHORIZ],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_SPREADVERT],TB_MainWnd,0); + } + else + { + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_SPREAD,-1)); + DisableGadget(TB_MainGadgets[GD_TB_SPREADHORIZ],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_SPREADVERT],TB_MainWnd,1); + } + } + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_CLOSE)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_DELETE)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_REFRESH)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_DELETE)); + prevsel=sel; + break; + case ID_MENU: + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CUT,-1)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_COPY,-1)); + DisableGadget(TB_MainGadgets[GD_TB_CUT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_COPY],TB_MainWnd,0); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_ALIGN,-1)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CLONE,-1)); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNLEFT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNHCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNRIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNTOP],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNVCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNBOTTOM],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEWIDTH],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEHEIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEBOTH],TB_MainWnd,1); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_SPREAD,-1)); + DisableGadget(TB_MainGadgets[GD_TB_SPREADHORIZ],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_SPREADVERT],TB_MainWnd,1); + prevsel=-1; + RefreshPropertiesWindow(GetCatString(MSG_MENUOBJECT)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_REFRESH)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_CLOSE)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_DELETE)); + break; + case ID_IMGE: + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CUT,-1)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_COPY,-1)); + DisableGadget(TB_MainGadgets[GD_TB_CUT],TB_MainWnd,0); + DisableGadget(TB_MainGadgets[GD_TB_COPY],TB_MainWnd,0); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_ALIGN,-1)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CLONE,-1)); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNLEFT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNHCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNRIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNTOP],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNVCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNBOTTOM],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEWIDTH],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEHEIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEBOTH],TB_MainWnd,1); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_SPREAD,-1)); + DisableGadget(TB_MainGadgets[GD_TB_SPREADHORIZ],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_SPREADVERT],TB_MainWnd,1); + prevsel=-1; + RefreshPropertiesWindow(GetCatString(MSG_IMAGEOBJECT)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_REFRESH)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_DELETE)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_CLOSE)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_DELETE)); + break; + default: + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CUT,-1)); + OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_COPY,-1)); + DisableGadget(TB_MainGadgets[GD_TB_CUT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_COPY],TB_MainWnd,1); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_ALIGN,-1)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_CLONE,-1)); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNLEFT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNHCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNRIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNTOP],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNVCENTER],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_ALIGNBOTTOM],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEWIDTH],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEHEIGHT],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_CLONEBOTH],TB_MainWnd,1); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_EDIT,IDMN_SPREAD,-1)); + DisableGadget(TB_MainGadgets[GD_TB_SPREADHORIZ],TB_MainWnd,1); + DisableGadget(TB_MainGadgets[GD_TB_SPREADVERT],TB_MainWnd,1); + prevsel=-1; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_WINDOW,IDMN_REFRESH)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_MENU,IDMN_DELETE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_CLOSE)); + OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_IMAGE,IDMN_DELETE)); + break; + } + if(EditStringWnd) OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_STRING,IDMN_CLOSE)); + else OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_STRING,IDMN_CLOSE)); + if(ScreenWnd) OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_SCREEN,IDMN_CLOSE)); + else OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_SCREEN,IDMN_CLOSE)); + if(EditVersionWnd) OnMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_VERSION,IDMN_CLOSE)); + else OffMenu(TB_MainWnd,FULLMENUNUM(IDMN_OBJECT,IDMN_VERSION,IDMN_CLOSE)); + MenuCheck(MainMenus,FULLMENUNUM(3,0,0),PropertiesWnd?TRUE:FALSE); + MenuCheck(MainMenus,FULLMENUNUM(3,1,0),ObjectWnd?TRUE:FALSE); + MenuCheck(MainMenus,FULLMENUNUM(3,2,0),StatusWnd?TRUE:FALSE); +} + +ULONG SSec=0,SMic=0,ESec=0,EMic=0; +UBYTE GadgetStatus=GS_NOTHING; +WORD StartX,StartY,EndX=(UWORD)-1,EndY=(UWORD)-1,DeltaX,DeltaY,px,py,MoveX,MoveY; +WORD SMMoveX=0,SMMoveY=0,EMMoveX=0,EMMoveY=0; +WORD MinMoveX,MinMoveY,MaxMoveX,MaxMoveY; +WORD ObjX,ObjY,ObjW,ObjH; +BOOL First,Shifted=FALSE; + +int FN_MouseButtons_Edit( void ) +{ + /* routine for "IDCMP_MOUSEBUTTONS". */ + piObject *o; + struct Node_Gadget *ng; + struct Node_Frame *nf; + int (*func)(); + BOOL running=TRUE,objsel; + + switch(EditMsg.Code) + { + case MENUDOWN: + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + objsel=FALSE; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + if(o=CurrentGadget=piFindGadget(CurrentWindow,EditMsg.MouseX,EditMsg.MouseY)) + { + if(HowManySelected(&CurrentWindowNode->nw_List_Gadget)>1) + func=(void *) PM_OpenPopupMenu(CurrentWindowNode->nw_Window,PM_Menu,PM_ObjSelGadget,PM_Code, EditMsg.Code, TAG_DONE); + else + func=(void *) PM_OpenPopupMenu(CurrentWindowNode->nw_Window,PM_Menu,PM_ObjGadget,PM_Code, EditMsg.Code, TAG_DONE); + + if(func) + { + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(!ng->ng_Selected) + { + objsel=TRUE; ng->ng_Selected=TRUE; + PropertiesMode=PM_GADGET; + } + running = func(); + if(objsel) { ng->ng_Selected=FALSE; } + if(running > 1) return running; + } + } + else + { + PropertiesMode=PM_WINDOW; + func=(void *) PM_OpenPopupMenu(CurrentWindowNode->nw_Window,PM_Menu,PM_ObjWindow,PM_Code, EditMsg.Code, TAG_DONE); + if(func) + { + running = func(); + if(running > 1) return running; + } + } + break; + case MODE_FRAME: + if(o=CurrentFrame=piFindFrame(CurrentWindow,EditMsg.MouseX,EditMsg.MouseY)) + { + func=(void *) PM_OpenPopupMenu(CurrentWindowNode->nw_Window,PM_Menu,PM_ObjGadget,PM_Code, EditMsg.Code, TAG_DONE); + if(func) + { + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + if(!nf->nf_Selected) + { + objsel=TRUE; nf->nf_Selected=TRUE; + PropertiesMode=PM_FRAME; + } + running = func(); + if(objsel) { nf->nf_Selected=FALSE; } + if(running > 1) return running; + } + } + else + { + PropertiesMode=PM_WINDOW; + func=(void *) PM_OpenPopupMenu(CurrentWindowNode->nw_Window,PM_Menu,PM_ObjWindow,PM_Code, EditMsg.Code, TAG_DONE); + if(func) + { + running = func(); + if(running > 1) return running; + } + } + break; + } + break; + case MENUUP: + break; + case SELECTDOWN: + if(GUI.gui_Mode!=MODE_TEST) + { + CurrentTime(&ESec,&EMic); + EMMoveX=EditMsg.MouseX; + EMMoveY=EditMsg.MouseY; + if(DoubleClick(SSec,SMic,ESec,EMic) && abs(SMMoveX-EMMoveX)<6 && abs(SMMoveY-EMMoveY)<6) + { + CurrentTime(&SSec,&SMic); + if(!PropertiesWnd) OpenWindow_Props(); + goto cancel; + } + CurrentTime(&SSec,&SMic); + SMMoveX=EMMoveX; + SMMoveY=EMMoveY; + + PropertiesMode=PM_WINDOW; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + if(o=CurrentGadget=piFindGadget(CurrentWindow,EditMsg.MouseX,EditMsg.MouseY)) + { + PropertiesMode=PM_GADGET; + SetStatusWindow(1,""); + HandleSelectDown(CurrentWindow,o); + } + else + { + if(!Shift) + { + if(HowManySelected(&CurrentWindowNode->nw_List_Gadget)>0) + { + UnSelectAllObjects(CurrentWindow); + RefreshProperties(); + piRenderObject(CurrentWindow); + } + } + if(ActiveGadget) + { + GadgetStatus=GS_CREATING; + SetStatusWindow(1,GetCatString(MSG_STATUS_CREATINGOBJECT)); + } + else + { + GadgetStatus=GS_SELECTING; + SetStatusWindow(2,GetCatString(MSG_STATUS_SELECTINGOBJECTS)); + } + StartX=GridX(CurrentWindow,EditMsg.MouseX); + StartY=GridY(CurrentWindow,EditMsg.MouseY); + EndX=EndY=(UWORD) -1; + } + break; + case MODE_FRAME: + if(o=CurrentFrame=piFindFrame(CurrentWindow,EditMsg.MouseX,EditMsg.MouseY)) + { + PropertiesMode=PM_FRAME; + HandleSelectDown(CurrentWindow,o); + } + else + { + if(!Shift) + { + if(HowManySelected(&CurrentWindowNode->nw_List_Frame)>0) + { + UnSelectAllObjects(CurrentWindow); + RefreshProperties(); + piRenderObject(CurrentWindow); + } + } + GadgetStatus=GS_CREATING; + SetStatusWindow(1,GetCatString(MSG_STATUS_CREATINGOBJECT)); + StartX=GridX(CurrentWindow,EditMsg.MouseX); + StartY=GridY(CurrentWindow,EditMsg.MouseY); + EndX=EndY=(UWORD) -1; + } + break; + } + } + break; + case SELECTUP: + SetStatusWindow(1,""); + if(GUI.gui_Mode!=MODE_TEST) + { + switch(GadgetStatus) + { + case GS_SIZING_LEFT: + case GS_SIZING_RIGHT: + case GS_SIZING_UP: + case GS_SIZING_DOWN: + case GS_SIZING_LEFTUP: + case GS_SIZING_RIGHTUP: + case GS_SIZING_RIGHTDOWN: + case GS_SIZING_LEFTDOWN: + GadgetStatus=GS_NOTHING; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + if(Shifted) piEraseObject(CurrentWindow); + else piEraseObject(CurrentGadget); + SetObjectDims(CurrentGadget,StartX,StartY,EndX,EndY); + piRenderObject(CurrentWindow); + RefreshPropertiesWindow(GetCatString(MSG_GADGETOBJECT)); +// RefreshProperties(); + break; + case MODE_FRAME: + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + if(Shifted) piEraseObject(CurrentWindow); + else piEraseObject(CurrentFrame); + SetObjectDims(CurrentFrame,StartX,StartY,EndX,EndY); + piRenderObject(CurrentWindow); + RefreshPropertiesWindow(GetCatString(MSG_FRAMEOBJECT)); +// RefreshProperties(); + break; + } + break; + case GS_MOVING: + GadgetStatus=GS_NOTHING; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + if((StartX!=EndX && StartY!=EndY) || (EndX!=-1 && EndY!=-1)) + { + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + if(Shifted) piEraseObject(CurrentWindow); + else piEraseObject(CurrentGadget); + for(o=(piObject *)GetHead(&CurrentWindowNode->nw_List_Gadget);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) + { + ng->ng_X=GridX(CurrentWindow,piCX(o)+MoveX+DeltaX)-CurrentWindowNode->nw_Window->BorderLeft; + ng->ng_Y=GridY(CurrentWindow,piCY(o)+MoveY+DeltaY)-CurrentWindowNode->nw_Window->BorderTop; + } + } + piRenderObject(CurrentWindow); +// RefreshProperties(); + } + break; + case MODE_FRAME: + if((StartX!=EndX && StartY!=EndY) || (EndX!=-1 && EndY!=-1)) + { + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + if(Shifted) piEraseObject(CurrentWindow); + else piEraseObject(CurrentFrame); + for(o=(piObject *)GetHead(&CurrentWindowNode->nw_List_Frame);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) + { + nf->nf_X=GridX(CurrentWindow,piCX(o)+MoveX+DeltaX)-CurrentWindowNode->nw_Window->BorderLeft; + nf->nf_Y=GridY(CurrentWindow,piCY(o)+MoveY+DeltaY)-CurrentWindowNode->nw_Window->BorderTop; + } + } + piRenderObject(CurrentWindow); +// RefreshProperties(); + } + break; + } + break; + case GS_SELECTING: + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + GadgetStatus=GS_NOTHING; + EndX=GridX(CurrentWindow,EditMsg.MouseX); + EndY=GridY(CurrentWindow,EditMsg.MouseY); + SetDrPt(CurrentWindowNode->nw_Window->RPort,0xffff); + if(StartX!=EndX && StartY!=EndY) + { + SelectObjects(CurrentWindow,StartX,StartY,EndX,EndY); + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + } + RefreshProperties(); + break; + case GS_CREATING: + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + GadgetStatus=GS_NOTHING; + EndX=GridX(CurrentWindow,EditMsg.MouseX); + EndY=GridY(CurrentWindow,EditMsg.MouseY); + switch(GUI.gui_Mode) + { + case MODE_GADGET: + CurrentGadget=piNewObject(piGadgets[GetGadgetPtr(ActiveGadget)].Class,TAG_DONE); + piAddObject(CurrentGadget,CurrentWindow); + if((StartX==EndX) && (StartY==EndY)) + { + SetObjectDims(CurrentGadget,StartX,StartY,StartX+2,StartY+2); + piResetToDefaults(CurrentGadget); + } + else + { + piResetToDefaults(CurrentGadget); + SetObjectDims(CurrentGadget,StartX,StartY,EndX,EndY); + } + piRenderObject(CurrentWindow); + PropertiesMode=PM_GADGET; + RefreshPropertiesWindow(GetCatString(MSG_GADGETOBJECT)); +// ActiveGadget=NULL; +// ApplySelectionWindow(); + break; + case MODE_FRAME: + CurrentFrame=piNewObject(piFrameClass,TAG_DONE); + piAddObject(CurrentFrame,CurrentWindow); + if((StartX==EndX) && (StartY==EndY)) + { + SetObjectDims(CurrentFrame,StartX,StartY,StartX+2,StartY+2); + piResetToDefaults(CurrentFrame); + } + else + { + piResetToDefaults(CurrentFrame); + SetObjectDims(CurrentFrame,StartX,StartY,EndX,EndY); + } + piRenderObject(CurrentWindow); + PropertiesMode=PM_FRAME; + RefreshPropertiesWindow(GetCatString(MSG_FRAMEOBJECT)); + break; + } // switch(GUI.gui_Mode) + break; + } // switch(GadgetStatus) + } // if(GUI.gui_Mode!=MODE_TEST) + break; + } // switch(EditMsg.Code) +cancel: + return 1; +} + +int FN_MouseMove_Edit( void ) +{ + /* routine for "IDCMP_MOUSEMOVE". */ + + switch(GUI.gui_Mode) + { + case MODE_TEST: + break; + case MODE_GADGET: + HandleMouseMove(CurrentWindow,CurrentGadget); + break; + case MODE_FRAME: + HandleMouseMove(CurrentWindow,CurrentFrame); + break; + } + return 1; +} + +int FN_MenuVerify_Edit(void) +{ + return 1; +} + +ULONG AP_Window,GType; + +void HandleMouseMove(piObject *wo,piObject *o) +{ + struct Node_Window *nw; + struct Node_Gadget *ng; + struct RastPort *rport; + struct List *l; + struct Window *PropsWnd; + piObject *go; + UWORD x,y,w,h; + ULONG sel; + + switch(GUI.gui_Mode) + { + case MODE_TEST: + return; + case MODE_GADGET: + piGetAttr(wo,WNOBJ_GadgetList,(ULONG *)&l); + break; + case MODE_FRAME: + piGetAttr(wo,WNOBJ_FrameList,(ULONG *)&l); + break; + } + piGetAttr(wo,WNOBJ_RastPort,(ULONG *)&rport); + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(GadgetStatus==GS_MOVING) + { + EndX=GridX(wo,EditMsg.MouseX); + EndY=GridY(wo,EditMsg.MouseY); + MoveX=EndX-StartX; + MoveY=EndY-StartY; + if(MoveX+DeltaXMaxMoveX) MoveX=MaxMoveX-DeltaX; + if(MoveY+DeltaY>MaxMoveY) MoveY=MaxMoveY-DeltaY; + for(go=(piObject *)GetHead(l);GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Select,&sel); + if(sel) + { + x=piCX(go); y=piCY(go); w=piCW(go); h=piCH(go); + SetAPen(rport,1); + SetDrMd(rport,COMPLEMENT); + if(!First) + { + Move(rport,GridX(wo,x+DeltaX+px), GridY(wo,y+DeltaY+py)); + Draw(rport,GridX(wo,x+DeltaX+px)+w,GridY(wo,y+DeltaY+py)); + Draw(rport,GridX(wo,x+DeltaX+px)+w,GridY(wo,y+DeltaY+py)+h); + Draw(rport,GridX(wo,x+DeltaX+px), GridY(wo,y+DeltaY+py)+h); + Draw(rport,GridX(wo,x+DeltaX+px), GridY(wo,y+DeltaY+py)+1); + } + Move(rport,GridX(wo,x+DeltaX+MoveX), GridY(wo,y+DeltaY+MoveY)); + Draw(rport,GridX(wo,x+DeltaX+MoveX)+w,GridY(wo,y+DeltaY+MoveY)); + Draw(rport,GridX(wo,x+DeltaX+MoveX)+w,GridY(wo,y+DeltaY+MoveY)+h); + Draw(rport,GridX(wo,x+DeltaX+MoveX), GridY(wo,y+DeltaY+MoveY)+h); + Draw(rport,GridX(wo,x+DeltaX+MoveX), GridY(wo,y+DeltaY+MoveY)+1); + if(PropertiesWnd && !Shifted) + { + if(AP_Window==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Type==GTYPE_GADTOOLS) + { + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_X],GridX(wo,x+DeltaX+MoveX)-nw->nw_Window->BorderLeft); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_Y],GridY(wo,y+DeltaY+MoveY)-nw->nw_Window->BorderTop); + } + else + { + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_X],GridX(wo,x+DeltaX+MoveX)-nw->nw_Window->BorderLeft); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_Y],GridY(wo,y+DeltaY+MoveY)-nw->nw_Window->BorderTop); + } + break; + case MODE_FRAME: + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_X],GridX(wo,x+DeltaX+MoveX)-nw->nw_Window->BorderLeft); + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_Y],GridY(wo,y+DeltaY+MoveY)-nw->nw_Window->BorderTop); + break; + } + } + } + } + First=FALSE; + px=MoveX; + py=MoveY; + } + else + { + if(GadgetStatus!=GS_NOTHING) + { + SetAPen(rport,1); + SetDrMd(rport,COMPLEMENT); + if(GadgetStatus==GS_SELECTING) { SetDrPt(rport,0xf0f0); } + else { SetDrPt(rport,0xffff); } + if(EndX!=-1 && EndY!=-1) + { + Move(rport,StartX,StartY); + Draw(rport,EndX,StartY); + Draw(rport,EndX,EndY); + Draw(rport,StartX,EndY); + Draw(rport,StartX,StartY+1); + } + if(GadgetStatus!=GS_CREATING && GadgetStatus!=GS_SELECTING) + { + x=piCX(o); y=piCY(o); w=piCW(o); h=piCH(o); + } + switch(GadgetStatus) + { + case GS_SIZING_LEFT: + StartX=GridX(wo,EditMsg.MouseX-DeltaX); + StartY=y; + EndX=x+w; + EndY=y+h; + if(((WORD)StartX)nw_Window->BorderLeft) StartX=nw->nw_Window->BorderLeft; + if(StartX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) StartX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + break; + case GS_SIZING_RIGHT: + StartX=x; + StartY=y; + EndX=(GridX(wo,EditMsg.MouseX+DeltaX)); + EndY=y+h; + if(((WORD)EndX)nw_Window->BorderLeft) EndX=nw->nw_Window->BorderLeft; + if(EndX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) EndX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + break; + case GS_SIZING_UP: + StartX=x; + StartY=(GridY(wo,EditMsg.MouseY-DeltaY)); + EndX=x+w; + EndY=y+h; + if(((WORD)StartY)nw_Window->BorderTop) StartY=nw->nw_Window->BorderTop; + if(StartY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) StartY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_SIZING_DOWN: + StartX=x; + StartY=y; + EndX=x+w; + EndY=(GridY(wo,EditMsg.MouseY+DeltaY)); + if(((WORD)EndY)nw_Window->BorderTop) EndY=nw->nw_Window->BorderTop; + if(EndY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) EndY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_SIZING_LEFTUP: + StartX=(GridX(wo,EditMsg.MouseX-DeltaX)); + StartY=(GridY(wo,EditMsg.MouseY-DeltaY)); + EndX=x+w; + EndY=y+h; + if(((WORD)StartX)nw_Window->BorderLeft) StartX=nw->nw_Window->BorderLeft; + if(((WORD)StartY)nw_Window->BorderTop) StartY=nw->nw_Window->BorderTop; + if(StartX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) StartX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + if(StartY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) StartY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_SIZING_RIGHTUP: + StartX=x; + StartY=(GridY(wo,EditMsg.MouseY-DeltaY)); + EndX=(GridX(wo,EditMsg.MouseX+DeltaX)); + EndY=y+h; + if(((WORD)EndX)nw_Window->BorderLeft) EndX=nw->nw_Window->BorderLeft; + if(((WORD)StartY)nw_Window->BorderTop) StartY=nw->nw_Window->BorderTop; + if(EndX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) EndX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + if(StartY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) StartY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_SIZING_RIGHTDOWN: + StartX=x; + StartY=y; + EndX=(GridX(wo,EditMsg.MouseX+DeltaX)); + EndY=(GridY(wo,EditMsg.MouseY+DeltaY)); + if(((WORD)EndX)nw_Window->BorderLeft) EndX=nw->nw_Window->BorderLeft; + if(((WORD)EndY)nw_Window->BorderTop) EndY=nw->nw_Window->BorderTop; + if(EndX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) EndX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + if(EndY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) EndY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_SIZING_LEFTDOWN: + StartX=(GridX(wo,EditMsg.MouseX-DeltaX)); + StartY=y; + EndX=x+w; + EndY=(GridY(wo,EditMsg.MouseY+DeltaY)); + if(((WORD)StartX)nw_Window->BorderLeft) StartX=nw->nw_Window->BorderLeft; + if(((WORD)EndY)nw_Window->BorderTop) EndY=nw->nw_Window->BorderTop; + if(StartX>=nw->nw_Window->Width-nw->nw_Window->BorderRight) StartX=nw->nw_Window->Width-nw->nw_Window->BorderRight-1; + if(EndY>=nw->nw_Window->Height-nw->nw_Window->BorderBottom) EndY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-1; + break; + case GS_CREATING: + case GS_SELECTING: + EndX=(GridX(wo,EditMsg.MouseX)); + EndY=(GridY(wo,EditMsg.MouseY)); + break; + } + Move(rport,StartX,StartY); + Draw(rport,EndX,StartY); + Draw(rport,EndX,EndY); + Draw(rport,StartX,EndY); + Draw(rport,StartX,StartY+1); +/* if(GadgetStatus!=GS_CREATING && GadgetStatus!=GS_SELECTING && PropertiesWnd) + { + if(AP_Window==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + if(ng->ng_Type==GTYPE_GADTOOLS) + { + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_WIDTH],w); + SetInteger(PropsWnd,PGGT_GeneralGadgets[GD_PGGT_HEIGHT],h); + } + else + { + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_WIDTH],w); + SetInteger(PropsWnd,PGBO_GeneralGadgets[GD_PGBO_HEIGHT],h); + } + break; + case MODE_FRAME: + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_WIDTH],w); + SetInteger(PropsWnd,PGFR_GeneralGadgets[GD_PGFR_HEIGHT],h); + break; + } + } +*/ + } + } +} + +piObject *HandleSelectDown(piObject *wo,piObject *go) +{ + struct Node_Window *nw; + ULONG sel; + UWORD lx,ly,rx,ry; + + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + + Shifted=FALSE; + if(!Shift) UnSelectAllObjects(wo); + else Shifted=TRUE; + piSetAttrs(go,OBJ_Select,TRUE,TAG_DONE); + RefreshProperties(); + piRenderObject(go); + StartX=piCX(go); + StartY=piCY(go); + EndX=EndY=(UWORD) -1; + First=TRUE; + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &AP_Window); + switch(CheckObjectClickPosition(go,EditMsg.MouseX,EditMsg.MouseY)) + { + case CP_MOVE: + SetStatusWindow(1,GetCatString(MSG_STATUS_MOVINGOBJECT)); + DeltaX=-(GridX(wo,EditMsg.MouseX)-piCX(go)); + DeltaY=-(GridY(wo,EditMsg.MouseY)-piCY(go)); + GadgetStatus=GS_MOVING; + MoveX=-DeltaX; + MoveY=-DeltaY; + lx=ly=65535; + rx=ry=0; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + for(go=(piObject *)GetHead(&nw->nw_List_Gadget);GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Select,&sel); + if(sel) + { + SetWindowPointer(nw->nw_Window,WA_Pointer,MovePtr,TAG_DONE); + if(piCX(go)rx) rx=piCX(go)+piCW(go); + if(piCY(go)+piCH(go)>ry) ry=piCY(go)+piCH(go); + } + } + break; + case MODE_FRAME: + for(go=(piObject *)GetHead(&nw->nw_List_Frame);GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Select,&sel); + if(sel) + { + SetWindowPointer(nw->nw_Window,WA_Pointer,MovePtr,TAG_DONE); + if(piCX(go)rx) rx=piCX(go)+piCW(go); + if(piCY(go)+piCH(go)>ry) ry=piCY(go)+piCH(go); + } + } + break; + } + MinMoveX=-(lx-nw->nw_Window->BorderLeft); + MinMoveY=-(ly-nw->nw_Window->BorderTop); + MaxMoveX=nw->nw_Window->Width-nw->nw_Window->BorderRight-rx-1; + MaxMoveY=nw->nw_Window->Height-nw->nw_Window->BorderBottom-ry-1; + break; + case CP_SIZE_LEFT: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,SizeHorizPtr,TAG_DONE); + DeltaX=(GridX(wo,EditMsg.MouseX)-piCX(go)); + GadgetStatus=GS_SIZING_LEFT; + break; + case CP_SIZE_RIGHT: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,SizeHorizPtr,TAG_DONE); + DeltaX=GridX(wo,(piCX(go)+piCW(go)-EditMsg.MouseX)); + GadgetStatus=GS_SIZING_RIGHT; + break; + case CP_SIZE_UP: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,SizeVertPtr,TAG_DONE); + DeltaY=(GridY(wo,EditMsg.MouseY)-piCY(go)); + GadgetStatus=GS_SIZING_UP; + break; + case CP_SIZE_DOWN: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,SizeVertPtr,TAG_DONE); + DeltaY=(piCY(go)+piCH(go)-GridY(wo,EditMsg.MouseY)); + GadgetStatus=GS_SIZING_DOWN; + break; + case CP_SIZE_LEFTUP: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,Size45UDPtr,TAG_DONE); + DeltaX=(GridX(wo,EditMsg.MouseX)-piCX(go)); + DeltaY=(GridY(wo,EditMsg.MouseY)-piCY(go)); + GadgetStatus=GS_SIZING_LEFTUP; + break; + case CP_SIZE_RIGHTUP: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,Size45DUPtr,TAG_DONE); + DeltaX=(piCX(go)+piCW(go)-GridX(wo,EditMsg.MouseX)); + DeltaY=(GridY(wo,EditMsg.MouseY)-piCY(go)); + GadgetStatus=GS_SIZING_RIGHTUP; + break; + case CP_SIZE_RIGHTDOWN: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,Size45UDPtr,TAG_DONE); + DeltaX=(piCX(go)+piCW(go)-GridX(wo,EditMsg.MouseX)); + DeltaY=(piCY(go)+piCH(go)-GridY(wo,EditMsg.MouseY)); + GadgetStatus=GS_SIZING_RIGHTDOWN; + break; + case CP_SIZE_LEFTDOWN: + SetStatusWindow(1,GetCatString(MSG_STATUS_RESIZINGOBJECT)); + SetWindowPointer(nw->nw_Window,WA_Pointer,Size45DUPtr,TAG_DONE); + DeltaX=(GridX(wo,EditMsg.MouseX)-piCX(go)); + DeltaY=(piCY(go)+piCH(go)-GridY(wo,EditMsg.MouseY)); + GadgetStatus=GS_SIZING_LEFTDOWN; + break; + } + return go; +} + +int FN_RawKey_Edit( void ) +{ + /* routine for "IDCMP_RAWKEY". */ + + switch(EditMsg.Code) + { + case 0x60: // Left Shift Down + case 0x61: // Right Shift Down + Shift=TRUE; + break; + case 0xE0: // Left Shift Up + case 0xE1: // Right Shift Up + Shift=FALSE; + break; + case 0x46: // Del + FN_MainEditClear_Selected(); + break; + case 0x5f: // Help + if(AmigaGuideObj) gtbSendAmigaGuideCmd(AmigaGuideObj,"ALINK main"); + break; + } + return 1; +} + +int FN_CloseWindow_Working( void ) +{ + /* routine for "IDCMP_CLOSEWINDOW". */ + return 1; +} + +int FN_ActiveWindow_Edit( void ) +{ + /* routine for "IDCMP_CLOSEWINDOW". */ + PropertiesMode=PM_WINDOW; + RefreshProperties(); + if(!TB_WindowWnd) { OpenWindow_TB_Window(); ApplySelectionWindow(); } + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + SetWndSignals(); + return 1; +} + +void AlignObjects(struct MinList *list,ULONG how) +{ + piObject *o,*ot; + LONG sel,l,t,w,h,r,b,ml=65535,mt=65535,mr=0,mb=0,mw=0,mh=0,s=0,i,pl,pt,a,aa,la,lb; + piObject **objs=NULL,*swap; + + for(o=(piObject *)GetHead(list);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Select,(ULONG *)&sel); + if(sel) + { + s++; + piGetAttr(o,GA_Left,(ULONG *)&l); + piGetAttr(o,GA_Top,(ULONG *)&t); + piGetAttr(o,GA_Width,(ULONG *)&w); + piGetAttr(o,GA_Height,(ULONG *)&h); + r=l+w; + b=t+h; + if(lmr) { mr=r; } + if(b>mb) { mb=b; } + if(w>mw) { mw=w; } + if(h>mh) { mh=h; } + } + } + if(s>1) + { + objs=MyAllocVec(sizeof(struct piObject *)*s,MEMF_ANY); + s=0; + for(o=(piObject *)GetHead(list);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Select,(ULONG *)&sel); + if(sel) + { + objs[s]=o; + s++; + } + } + switch(how) + { + case SPREAD_HORIZ: + mw=mr-ml; // maksymalny rozstaw obiektow + w=0; // suma szerokosci obiektow + i=0; // ilosc obiektow + for(o=(piObject *)GetHead(list);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Select,(ULONG *)&sel); + if(sel) + { + piGetAttr(o,GA_Width,(ULONG *)&l); + w+=l; + i++; + } + } + l=(mw-w)/(i-1); + pl=ml; + + for(a=0;a - gadtoolsbox resource file to load + +On Workbench to load gadtoolsbox resource file you can drag resource icon on GadToolsBox icon or create project icon with GadToolsBox as default tool. + +@endnode + +@rem /* +@rem ** Requirements +@rem */ +@node REQUIREMENTS "Requirements" + +@{b}Requirements@{ub} +@{b}============@{ub} + +GadToolsBox v3 requires to run: + +@{i}OS:@{ui} + AmigaOS 3.0+ + +@{i}Processor:@{ui} + MC680x0 + +@{i}LIBS:@{ui} + gadgets/listview.gadget (V37) + gadgets/page.gadget (V1) + gadgets/progress.gadget (V37) + gadgets/textfield.gadget (V3) + images/smartbitmap.image (V39) + popupmenu.library (V7) + + +@{b}Recomended@{ub} +@{b}==========@{ub} + +Recomendations for GadToolsBox v3: + +- font size larger than 8 (GUI with topaz/8 looks very ugly - this will be fixed in next releases) +- big screen size (minimal recomended is 640x480) +- 16 free pens on screen (toolbars need 16 colors) +- faster processor and graphics card + +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Copyrights +@rem */ +@node COPYRIGHTS "Copyrights" + +@{b}Copyrights@{ub} +@{b}==========@{ub} + +@{i}GadToolsBox@{ui} + +GadToolsBox 3 is Copyright (C) 1996-98 by Tomasz Muszynski. +This program is @{b}SHAREWARE@{ub}. Demo version can be freely distributed but only in original archive. Copying a registered version is illegal! +GadToolsBox 3 source code is NOT based on old GadToolsBox v1 and v2. There is no support by me for GTB v1 and v2 - I'm not author of it. + +@{i}Installer@{ui} + +Installer and Installer project icon +(c) Copyright 1991-93 Commodore-Amiga, Inc. All Rights Reserved. +Reproduced and distributed under license from Commodore. + +INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE; +NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY +OR RESPONSIBILITY IS ASSUMED. + +@{i}Other@{ui} + +Localized MagicWB icons by Eric Gerard +GadToolsBox v1 and v2 is Copyright (C) 1991-93 by Jaba Development +PopupMenu is Copyright(C) by Henrik Isaksson +@endnode + +@rem /* +@rem ** Disclaimer +@rem */ +@node DISCLAIMER "Disclaimer" + +@{b}Disclaimer@{ub} +@{b}==========@{ub} + +GADTOOLSBOX IS A SHAREWARE PRODUCT. TO USE IT YOU SHOULD REGISTER! DON'T GIVE ANYBODY YOUR KEYFILE, IT'S ILLEGAL! USE IT AT YOUR OWN RISK. THERE IS NO WARRANTY FOR RELIABLE FUNCTIONING OF THIS PROGRAM. +@endnode + +@rem /* +@rem ** History +@rem */ +@node HISTORY "History" + +@{b}History@{ub} +@{b}=======@{ub} + +Versions before v3 aren't developed by me. + +27.5.98 - v3.0 + - initial release. +@endnode + +@rem /* +@rem ** Author +@rem */ +@node AUTHOR "How to contact" + +@{b}Author@{ub} +@{b}======@{ub} + +This program was developed and tested on my Amiga 4000/040/28MHz/16MB and SAS/C v6.58. + +If you have new ideas, bug reports, catalog translations or something other - write to me: + +mailto:thom@union.waw.pl +@endnode + +@rem /* +@rem ** Registration +@rem */ +@node REGISTRATION "Registration" + +@{b}Registration@{ub} +@{b}============@{ub} + +Unregistered version of GadToolsBox v3 has some limitations. To register you should fill the @{"registration form" link RegForm.txt/Main} and send it to me via @{"e-mail" link AUTHOR} or by @{"post" link AUTHOR}. Of course you must send me the money in form as selected in @{"registration form" link RegForm.txt/Main}. +If you don't need to use all of features of GadToolsBox v3 you don't need to register, saving and generating source code is not disabled. Use it for free, but please don't pirate it because I will not release any new versions. + + +@{b}Limitations@{ub} +@{b}===========@{ub} + +- 1 window object +- 1 menu object +- 1 image object +- no GadToolsBox v2 import +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Menus +@rem */ +@node MENUS "Menus" + +@{b}Menus@{ub} +@{b}=====@{ub} + +Project + @{" New " link MN_PROJECT_NEW} + @{" Open " link MN_PROJECT_OPEN} + + @{" Save " link MN_PROJECT_SAVE} + @{" Save As... " link MN_PROJECT_SAVEAS} + @{" Save Source... " link MN_PROJECT_SAVESOURCE} + + @{" Preferences... " link MN_PROJECT_PREFERENCES} + + @{" About... " link MN_PROJECT_ABOUT} + + @{" Quit " link MN_PROJECT_QUIT} + +Edit + @{" Undo " link MN_EDIT_UNDO} + + @{" Cut " link MN_EDIT_CUT} + @{" Copy " link MN_EDIT_COPY} + @{" Paste " link MN_EDIT_PASTE} + @{" Clear " link MN_EDIT_CLEAR} + @{" Select All " link MN_EDIT_SELECTALL} + + @{" Grid... " link MN_EDIT_GRID} + + Align + @{" Left " link MN_EDIT_ALIGN_LEFT} + @{" Width center " link MN_EDIT_ALIGN_WCENTER} + @{" Right " link MN_EDIT_ALIGN_RIGHT} + @{" Top " link MN_EDIT_ALIGN_TOP} + @{" Height center " link MN_EDIT_ALIGN_HCENTER} + @{" Bottom " link MN_EDIT_ALIGN_BOTTOM} + Clone + @{" Width " link MN_EDIT_CLONE_WIDTH} + @{" Height " link MN_EDIT_CLONE_HEIGHT} + @{" Both " link MN_EDIT_CLONE_BOTH} + Spread + @{" Horizontal " link MN_EDIT_SPREAD_HORIZONTAL} + @{" Vertical " link MN_EDIT_SPREAD_VERTICAL} + +Object + Window + @{" New... " link MN_OBJECT_WINDOW_NEW} + @{" Close " link MN_OBJECT_WINDOW_CLOSE} + @{" Delete " link MN_OBJECT_WINDOW_DELETE} + + @{" Refresh " link MN_OBJECT_WINDOW_REFRESH} + Menu + @{" New... " link MN_OBJECT_MENU_NEW} + @{" Close " link MN_OBJECT_MENU_CLOSE} + @{" Delete " link MN_OBJECT_MENU_DELETE} + Image + @{" New... " link MN_OBJECT_IMAGE_NEW} + @{" Close " link MN_OBJECT_IMAGE_CLOSE} + @{" Delete " link MN_OBJECT_IMAGE_DELETE} + Strings + @{" Open... " link MN_OBJECT_STRINGS_OPEN} + @{" Close " link MN_OBJECT_STRINGS_CLOSE} + Screen + @{" Open... " link MN_OBJECT_SCREEN_OPEN} + @{" Close " link MN_OBJECT_SCREEN_CLOSE} + Version + @{" Open... " link MN_OBJECT_VERSION_OPEN} + @{" Close " link MN_OBJECT_VERSION_CLOSE} + +Window + @{" Properties... " link MN_WINDOW_PROPERTIES} + @{" Object... " link MN_WINDOW_OBJECTS} + @{" Status... " link MN_WINDOW_STATUS} + + @{" Hide All " link MN_WINDOW_HIDEALL} + +@endnode + + +@node MN_PROJECT_NEW "Project/New" + +@{b}New@{ub} +@{b}===@{ub} + +Closes previous opened project and creates new one. +@endnode + +@node MN_PROJECT_OPEN "Project/Open..." + +@{b}Open@{ub} +@{b}====@{ub} + +Closes previous opened project and loads new one in memory. +@endnode + +@node MN_PROJECT_SAVE "Project/Save" + +@{b}Save@{ub} +@{b}====@{ub} + +Saves to disk current project. +@endnode + +@node MN_PROJECT_SAVEAS "Project/Save As..." + +@{b}Save As...@{ub} +@{b}==========@{ub} + +Saves to disk current project under new name. +@endnode + +@node MN_PROJECT_SAVESOURCE "Project/Save Source..." + +@{b}Save Source...@{ub} +@{b}==============@{ub} + +Generates to disk source file using currently selected @{"source generator" link WND_PREFERENCES_GENERATORS}. +@endnode + +@node MN_PROJECT_PREFERENCES "Project/Preferences..." + +@{b}Preferences...@{ub} +@{b}==============@{ub} + +Opens window with preferences. + +@{i}Gadgets@{ui} + +@{i}Auto Backup@{ui} +When saving project old file will be renamed to '#?.bak'. + +@{i}Size zoom@{ui} +Zoom of image object will be adaptive to size of image window. + +@{i}Fast redraw@{ui} +Don't render images in BUTTON_KIND gadgets. + +@{i}Generators@{ui} +List of all available generators. Selecting generator causes to run it's preferences. + +@{i}Screen mode...@{ui} +Screen mode to use. + +@{i}Editor font...@{ui} +Font to use in Edit windows. + +@{i}Save@{ui} +Save preferences in ENVARC:GadToolsBox/GadToolsBox3.prefs. + +@{i}Use@{ui} +Use current preferences. + +@{i}Cancel@{ui} +Cancel all settings to previous. +@endnode + +@node MN_PROJECT_ABOUT "Project/About..." + +@{b}About...@{ub} +@{b}========@{ub} + +Opens window with informations about program and @{"registered" link REGISTRATION} user. +@endnode + +@node MN_PROJECT_QUIT "Project/Quit" + +@{b}Quit@{ub} +@{b}====@{ub} + +Closes current project and quits. +@endnode + +@node MN_EDIT_HELP "Edit/Help" + +@{b}Help@{ub} +@{b}====@{ub} + +Opens help file. +@endnode + +@node MN_EDIT_UNDO "Edit/Undo" + +@{b}Undo@{ub} +@{b}====@{ub} + +Undoes last operation (currently only @{"CUT" link MN_EDIT_CUT} can by undoed}). +@endnode + +@node MN_EDIT_CUT "Edit/Cut" + +@{b}Cut@{ub} +@{b}===@{ub} + +Copies currently selected objects to clipboard and removes them. + +@{u}Windows@{uu} + If there are selected gadgets/frames they will be cutted. Otherwise window will be cutted. + +@{u}Menus@{uu} + If items are selected they will be deleted (not cutted). Only whole menu can be cutted. + +@{u}Images@{uu} + Whole image is cutted. + +@{u}Strings@{uu} + Only selected items are cutted. + +@{u}Screen@{uu} + Do nothing. + +@{u}Version@{uu} + Do nothing. +@endnode + +@node MN_EDIT_COPY "Edit/Copy" + +@{b}Copy@{ub} +@{b}====@{ub} + +Copies currently selected objects to clipboard. + +@{u}Windows@{uu} + If there are selected gadgets/frames they will be copied. Otherwise window with all objects on it will be copied. + +@{u}Menus@{uu} + Only whole menu can be copied. + +@{u}Images@{uu} + Whole image is copied. + +@{u}Strings@{uu} + Only selected items are copied. + +@{u}Screen@{uu} + Do nothing. + +@{u}Version@{uu} + Do nothing. +@endnode + +@node MN_EDIT_PASTE "Edit/Paste" + +@{b}Paste@{ub} +@{b}=====@{ub} + +If possible inserts objects from clipboard. + +@{u}Windows@{uu} + If in clipboard is window it will be pasted as new window. If there are gadgets/frames they will be pasted on current window. + +@{u}Menus@{uu} + New menu will be created. + +@{u}Images@{uu} + New image will be created. If in clipboard is picture object it will be pasted as new image using datatypes. + +@{u}Strings@{uu} + Inserts new string. + +@{u}Screen@{uu} + Do nothing. + +@{u}Version@{uu} + Do nothing. +@endnode + +@node MN_EDIT_CLEAR "Edit/Clear" + +@{b}Clear@{ub} +@{b}=====@{ub} + +Works like @{"cut" link MN_EDIT_CUT}, but not copies objects to clipboard. + +@{i}Shortcut: @{ui} Del +@endnode + +@node MN_EDIT_SELECTALL "Edit/Select All" + +@{b}Select All@{ub} +@{b}==========@{ub} + +Selects all objects (gadgets/frames) on window. Default selected object has filled corners. When you select more than one object all actions will be taken with that object. + +@endnode + +@node MN_EDIT_GRID "Edit/Grid..." + +@{b}Grid...@{ub} +@{b}=======@{ub} + +Opens window with grid settings. + +@{i}Gadgets@{ui} + +@{i}X Size@{ui} +Size of grid in X dimension. + +@{i}Y Size@{ui} +Size of grid in Y dimension. + +@{i}Show grid@{ui} +Show grid on edit windows (only on Window object and Image object). + +@{i}Snap to grid@{ui} +Snap objects to grid (only on WIndow object). + +@{i}Ok@{ui} +Accept changes. + +@{i}Cancel@{ui} +Cancel changes. +@endnode + +@node MN_EDIT_ALIGN_LEFT "Edit/Align/Left" + +@{b}Align/Left@{ub} +@{b}==========@{ub} + +Aligns all selected objects to left edge of default selected object. +@endnode + +@node MN_EDIT_ALIGN_WCENTER "Edit/Align/Width center" + +@{b}Align/Width center@{ub} +@{b}==================@{ub} + +Centers all selected objects to horizontal centre of default selected object. +@endnode + +@node MN_EDIT_ALIGN_RIGHT "Edit/Align/Right" + +@{b}Align/Right@{ub} +@{b}===========@{ub} + +Aligns all selected objects to right edge of default selected object. +@endnode + +@node MN_EDIT_ALIGN_TOP "Edit/Align/Top" + +@{b}Align/Top@{ub} +@{b}=========@{ub} + +Aligns all selected objects to top edge of default selected object. +@endnode + +@node MN_EDIT_ALIGN_HCENTER "Edit/Align/Height center" + +@{b}Align/Height center@{ub} +@{b}===================@{ub} + +Centers all selected objects to vertical centre of default selected object. +@endnode + +@node MN_EDIT_ALIGN_BOTTOM "Edit/Align/Bottom" + +@{b}Align/Bottom@{ub} +@{b}============@{ub} + +Aligns all selected objects to bottom edge of default selected object. +@endnode + +@node MN_EDIT_CLONE_WIDTH "Edit/Clone/Width" + +@{b}Clone/Width@{ub} +@{b}===========@{ub} + +Makes all selected objects with the same width as default selected gadget. +@endnode + +@node MN_EDIT_CLONE_HEIGHT "Edit/Clone/Height" + +@{b}Clone/Height@{ub} +@{b}============@{ub} + +Makes all selected objects with the same height as default selected gadget. +@endnode + +@node MN_EDIT_CLONE_BOTH "Edit/Clone/Both" + +@{b}Clone/Both@{ub} +@{b}==========@{ub} + +Makes all selected objects with the same width and height as default selected gadget. +@endnode + +@node MN_EDIT_SPREAD_HORIZONTAL "Edit/Spread/Horizontal" + +@{b}Spread/Horizontal@{ub} +@{b}=================@{ub} + +Spreads all selected objects in horizontal line. +@endnode + +@node MN_EDIT_SPREAD_VERTICAL "Edit/Spread/Vertical" + +@{b}Spread/Vertical@{ub} +@{b}===============@{ub} + +Spreads all selected objects in vertical line. +@endnode + +@node MN_OBJECT_WINDOW_NEW "Object/Window/New" + +@{b}Window/New@{ub} +@{b}==========@{ub} + +Creates new window object and opens it. + + +@{b}Objects/Window@{ub} +@{b}==============@{ub} + +On this window you can edit gadgets and frames. Using clipboard they can be copied to other window or to other GadToolsBox, simply do @{"Copy" link MN_EDIT_COPY} and @{"Paste" link MN_EDIT_PASTE}. You can edit properties of object under mouse pointer from popup menu (use right mouse button). +To test how all gadgets are working you can click on @{"TEST" link WND_TBW_TEST} on @{"window toolbar" link WND_WNDTOOLBAR}. Switching between creating gadgets and frames is done by clicking on @{"GADGET" link WND_TBW_GADGET} or @{"FRAME" link WND_TBW_FRAME} on @{"window toolbar" link WND_WNDTOOLBAR}. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_WIND_GENERAL} +@{"Style" link OBJ_WIND_STYLE} +@{"Flags1" link OBJ_WIND_FLAGS1} +@{"Flags2" link OBJ_WIND_FLAGS2} +@{"Flags3" link OBJ_WIND_FLAGS3} +@{"Tab Order" link OBJ_WIND_TABORDER} +@endnode + +@node MN_OBJECT_WINDOW_CLOSE "Object/Window/Close" + +@{b}Window/Close@{ub} +@{b}============@{ub} + +Hides window object. +@endnode + +@node MN_OBJECT_WINDOW_DELETE "Object/Window/Delete" + +@{b}Window/Delete@{ub} +@{b}=============@{ub} + +Hides and deletes window object. +@endnode + +@node MN_OBJECT_WINDOW_REFRESH "Object/Window/Refresh" + +@{b}Window/Refresh@{ub} +@{b}==============@{ub} + +Clears and redraws window contents and frame. +@endnode + +@node MN_OBJECT_MENU_NEW "Object/Menu/New" + +@{b}Menu/New@{ub} +@{b}========@{ub} + +Creates new menu object and opens it. + + +@{b}Objects/Menu@{ub} +@{b}============@{ub} + +Menu object. On this window you can edit menus. To add menu titles click on right position from last menu. To add menu items click one line below last menu item. To create sub menu item you must select menu item to which add sub menu, select @{"popup" link OBJ_MENU_FLAGS} option and click on right position from this menu item. To add sub menu item click one line below last sub menu item. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_MENU_GENERAL} +@{"Flags" link OBJ_MENU_FLAGS} +@endnode + +@node MN_OBJECT_MENU_CLOSE "Object/Menu/Close" + +@{b}Menu/Close@{ub} +@{b}==========@{ub} + +Hides menu object. +@endnode + +@node MN_OBJECT_MENU_DELETE "Object/Menu/Delete" + +@{b}Menu/Delete@{ub} +@{b}===========@{ub} + +Hides and deletes menu object. +@endnode + +@node MN_OBJECT_IMAGE_NEW "Object/Image/New" + +@{b}Image/New@{ub} +@{b}=========@{ub} + +Creates new image object and opens it. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_IMAGE_GENERAL} +@endnode + +@node MN_OBJECT_IMAGE_CLOSE "Object/Image/Close" + +@{b}Image/Close@{ub} +@{b}===========@{ub} + +Hides image object. +@endnode + +@node MN_OBJECT_IMAGE_DELETE "Object/Image/Delete" + +@{b}Image/Delete@{ub} +@{b}============@{ub} + +Hides and deletes image object. +@endnode + +@node MN_OBJECT_STRINGS_OPEN "Object/Strings/Open" + +@{b}Strings/Open@{ub} +@{b}============@{ub} + +Opens window with strings object. You can edit here a table of all string that will exists in your application. These strings can by localized if source code generator support localization. + +@{i}Gadgets@{ui} + +@{i}Add@{ui} +Add new string. + +@{i}Delete@{ui} +Delete current string. + +@{i}Edit@{ui} +Edit current string (opens @{"Properties" link MN_WINDOW_PROPERTIES} window) + +@{i}@{ui} +List of all strings. + - MSG ID - label of string which will be used in your code + - Type - type of string. Currently only String. In next version you will be able to edit all strings which exists in the project + - String - string text +@endnode + +@node MN_OBJECT_STRINGS_CLOSE "Object/Strings/Close" + +@{b}Strings/Close@{ub} +@{b}=============@{ub} + +Hides window with strings object. +@endnode + +@node MN_OBJECT_SCREEN_OPEN "Object/Screen/Open" + +@{b}Screen/Open@{ub} +@{b}===========@{ub} + +Opens window with screen object. Now you can create screen for your application. + +@{i}Gadgets@{ui} + +@{i}General@{ui} + @{i}Width@{ui} +Width of the screen. + + @{i}Height@{ui} +Height of the screen. + + @{i}Depth@{ui} +Depth of screen. + + @{i}Title@{ui} +Title of screen. + + @{i}Use@{ui} +Which type of screen to use. You can use Workbench screen, PublicScreen or CustomScreen. When PublicScreen is set please set also the @{i}PubName@{ui} flag to name of PubScreen you create. + + @{i}ModeID@{ui} +DisplayID of screen. + + @{i}ModeID (checkmark)@{ui} +Use selected DisplayID or default DisplayID. + + @{i}PubName@{ui} +Name of PublicScreen to use or to create. + + @{i}MakePublic@{ui} +Make PublicScreen public for others. PublicScreens can be private. + +@{i}Flags@{ui} + @{i}ShowTitle@{ui} +See SA_ShowTitle. Default is TRUE. + + @{i}Behind@{ui} +See SA_Behind. + + @{i}Quiet@{ui} +See SA_Quiet. + + @{i}AutoScroll@{ui} +See SA_AutoScroll. + + @{i}FullPalette@{ui} +See SA_FullPalette. + + @{i}Draggable@{ui} +See SA_Draggable. Default is TRUE. + + @{i}Exclusive@{ui} +See SA_Exclusive. + + @{i}SharePens@{ui} +See SA_SharePens. Default is TRUE. Please use this flag always when you can! + + @{i}Interleaved@{ui} +See SA_Interleaved. + + @{i}Like Workbench@{ui} +See SA_LikeWorkbench. Default is TRUE. + + @{i}Minimize ISG@{ui} +See SA_MinimizeISG. +@endnode + +@node MN_OBJECT_SCREEN_CLOSE "Object/Screen/Close" + +@{b}Screen/Close@{ub} +@{b}============@{ub} + +Hides window with screen object. +@endnode + +@node MN_OBJECT_VERSION_OPEN "Object/Version/Open" + +@{b}Version/Open@{ub} +@{b}============@{ub} + +Opens window with version object. This is standard version string ($VER). You can also use these variables in your program (eg. in about window). + +@{i}Gadgets@{ui} + +@{i}ProgramName@{ui} +Name of the program which uses the resource. This is full name without spaces. + +@{i}Author@{ui} +Author of the program. + +@{i}Version@{ui} +Version of the program. + +@{i}Revision@{ui} +Revision of the program. + +@{i}Date@{ui} +Date of compilation. SAS/C '__AMIGADATE__' built-in compilator define is used. +@endnode + +@node MN_OBJECT_VERSION_CLOSE "Object/Version/Close" + +@{b}Version/Close@{ub} +@{b}=============@{ub} + +Hides window with version object. +@endnode + +@node MN_WINDOW_PROPERTIES "Window/Properties" + +@{b}Properties@{ub} +@{b}==========@{ub} + +Opens object properties window. On this window you can edit settings specific to selected object. + +@{i}Gadgets@{ui} + +@{i}@{ui} +Settings for objects. + +@{i}A@{ui} +Apply changes to object. + +@{i}@{ui} +Lock - Make properties window always open. Otherwise every inactivation of window closes it. +@endnode + +@node MN_WINDOW_OBJECTS "Window/Objects" + +@{b}Objects@{ub} +@{b}=======@{ub} + +Opens objects window and displays tree list of all objects. + +@{i}Gadgets@{ui} + +@{i}@{ui} +Tree list of all objects. Double clicking on object name opens that object. You can also select object simply by clicking on it and make some functions with it (eg: @{"Cut" link MN_EDIT_CUT}, @{"Copy" link MN_EDIT_COPY}). +@endnode + +@node MN_WINDOW_STATUS "Window/Status" + +@{b}Status@{ub} +@{b}======@{ub} + +Opens status window. You can on this window see useful informations. On this window you will find two displays: + +@{i}<*>@{ui} +'*' character informs you about any changes in project that was made since last save. + +@{i}@{ui} +Displays a lot of useful informations about what GadToolsBox is currently doing, shows help tips, and other. +@endnode + +@node MN_WINDOW_HIDEALL "Window/Hide All" + +@{b}Hide All@{ub} +@{b}========@{ub} + +Hides all opened object windows. +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Windows +@rem */ +@node WINDOWS "Windows" + +@{b}Windows@{ub} +@{b}=======@{ub} + +@{" Main toolbar " link WND_MAINTOOLBAR} +@{" Window toolbar " link WND_WNDTOOLBAR} +@{" Image toolbar " link WND_IMAGETOOLBAR} + +@{" Object " link MN_WINDOW_OBJECTS} +@{" Status " link MN_WINDOW_STATUS} +@{" Properties " link MN_WINDOW_PROPERTIES} + @{" Objects " link OBJECTS} + +@{" Preferences " link MN_PROJECT_PREFERENCES} +@{" Grid " link MN_EDIT_GRID} +@endnode + +@node WND_MAINTOOLBAR "Main Toolbar" + +@{b}Main toolbar@{ub} +@{b}============@{ub} + +@{" 1 " link MN_PROJECT_NEW}@{" 2 " link MN_PROJECT_OPEN}@{" 3 " link MN_PROJECT_SAVE} @{" 4 " link MN_EDIT_CUT}@{" 5 " link MN_EDIT_COPY}@{" 6 " link MN_EDIT_PASTE}@{" 7 " link MN_EDIT_UNDO}@{" 8 " link MN_EDIT_HELP} @{" 9 " link MN_OBJECT_WINDOW_NEW}@{" 10 " link MN_OBJECT_MENU_NEW}@{" 11 " link MN_OBJECT_IMAGE_NEW}@{" 12 " link MN_OBJECT_STRINGS_OPEN}@{" 13 " link MN_OBJECT_SCREEN_OPEN}@{" 14 " link MN_OBJECT_VERSION_OPEN} @{" 15 " link MN_EDIT_ALIGN_LEFT}@{" 16 " link MN_EDIT_ALIGN_WCENTER}@{" 17 " link MN_EDIT_ALIGN_RIGHT}@{" 18 " link MN_EDIT_ALIGN_TOP}@{" 19 " link MN_EDIT_ALIGN_HCENTER}@{" 20 " link MN_EDIT_ALIGN_BOTTOM} @{" 21 " link MN_EDIT_SPREAD_HORIZONTAL}@{" 22 " link MN_EDIT_SPREAD_VERTICAL} @{" 23 " link MN_EDIT_CLONE_WIDTH}@{" 24 " link MN_EDIT_CLONE_HEIGHT}@{" 25 " link MN_EDIT_CLONE_BOTH} + +_____________________ + + +1. @{" New " link MN_PROJECT_NEW} +2. @{" Open " link MN_PROJECT_OPEN} +3. @{" Save " link MN_PROJECT_SAVE} + +4. @{" Cut " link MN_EDIT_CUT +5. @{" Copy " link MN_EDIT_COPY} +6. @{" Paste " link MN_EDIT_PASTE} +7. @{" Undo " link MN_EDIT_UNDO} +8. @{" Help " link MN_EDIT_HELP} + +9. @{" New Window " link MN_OBJECT_WINDOW_NEW} +10. @{" New Menu " link MN_OBJECT_MENU_NEW} +11. @{" New Image " link MN_OBJECT_IMAGE_NEW} +12. @{" Open Strings " link MN_OBJECT_STRINGS_OPEN} +13. @{" Open Screen " link MN_OBJECT_SCREEN_OPEN} +14. @{" Open Version " link MN_OBJECT_SCREEN_VERSION} + +15. @{" Align left " link MN_EDIT_ALIGN_LEFT} +16. @{" Align width center " link MN_EDIT_ALIGN_WCENTER} +17. @{" Align right " link MN_EDIT_ALIGN_RIGHT} +18. @{" Align top " link MN_EDIT_ALIGN_TOP} +19. @{" Align height center " link MN_EDIT_ALIGN_HCENTER} +20. @{" Align bottom " link MN_EDIT_ALIGN_BOTTOM} + +21. @{" Spread horizontal " link MN_EDIT_SPREAD_HORIZONTAL} +22. @{" Spread vertical " link MN_EDIT_SPREAD_VERTICAL} + +23. @{" Clone width " link MN_EDIT_CLONE_WIDTH} +24. @{" Clone height " link MN_EDIT_CLONE_HEIGHT} +25. @{" Clone both " link MN_EDIT_CLONE_BOTH} +@endnode + +@node WND_WNDTOOLBAR "Window toolbar" + +@{b}Window toolbar@{ub} +@{b}==============@{ub} + +@{" 1 " link WND_TBW_SELECT}@{" 2 " link OBJ_WND_BUTTON}@{" 3 " link OBJ_WND_CHECKBOX} +@{" 4 " link OBJ_WND_COLORWHEEL}@{" 5 " link OBJ_WND_CYCLE}@{" 6 " link OBJ_WND_DATATYPE} +@{" 7 " link OBJ_WND_GRADIENTSLIDER}@{" 8 " link OBJ_WND_INTEGER}@{" 9 " link OBJ_WND_LISTVIEW} +@{" 10 " link OBJ_WND_MX}@{" 11 " link OBJ_WND_NUMBER}@{" 12 " link OBJ_WND_PAGE} +@{" 13 " link OBJ_WND_PALETTE}@{" 14 " link OBJ_WND_POPUPMENU}@{" 15 " link OBJ_WND_PROGRESS} +@{" 16 " link OBJ_WND_SCROLLER}@{" 17 " link OBJ_WND_SLIDER}@{" 18 " link OBJ_WND_STRING} +@{" 19 " link OBJ_WND_TAPEDECK}@{" 20 " link OBJ_WND_TEXT}@{" 21 " link OBJ_WND_TEXTFIELD} +@{" 22 " link OBJ_WND_TREEVIEW} + +@{" 23 " link WND_TBW_TEST}@{" 24 " link WND_TBW_GADGET}@{" 25 " link WND_TBW_FRAME} + +_____________________ + +1. @{" Select " link WND_TBW_SELECT} +2. @{" Button " link OBJ_WND_BUTTON} GadTools +3. @{" CheckBox " link OBJ_WND_CHECKBOX} GadTools +4. @{" Colorwheel " link OBJ_WND_COLORWHEEL} BOOPSI +5. @{" Cycle " link OBJ_WND_CYCLE} GadTools +6. @{" Datatype " link OBJ_WND_DATATYPE} Datatype +7. @{" Gradientslider " link OBJ_WND_GRADIENTSLIDER} BOOPSI +8. @{" Integer " link OBJ_WND_INTEGER} GadTools +9. @{" Listview " link OBJ_WND_LISTVIEW} GadTools +10. @{" MX " link OBJ_WND_MX} GadTools +11. @{" Number " link OBJ_WND_NUMBER} GadTools +12. @{" Page " link OBJ_WND_PAGE} BOOPSI +13. @{" Palette " link OBJ_WND_PALETTE} GadTools +14. @{" PopupMenu " link OBJ_WND_POPUPMENU} BOOPSI +15. @{" Progress " link OBJ_WND_PROGRESS} BOOPSI +16. @{" Scroller " link OBJ_WND_SCROLLER} GadTools +17. @{" Slider " link OBJ_WND_SLIDER} GadTools +18. @{" String " link OBJ_WND_STRING} GadTools +19. @{" TapeDeck " link OBJ_WND_TAPEDECK} BOOPSI +20. @{" Text " link OBJ_WND_TEXT} GadTools +21. @{" TextField " link OBJ_WND_TEXTFIELD} BOOPSI +22. @{" TreeView " link OBJ_WND_TREEVIEW} BOOPSI +23. @{" Mode Test " link WND_TBW_TEST} BOOPSI +24. @{" Mode Gadget " link WND_TBW_GADGET} BOOPSI +25. @{" Mode Frame " link WND_TBW_FRAME} BOOPSI +@endnode + +@node WND_TBW_SELECT "Window toolbar/Select" + +@{b}Select@{ub} +@{b}======@{ub} + +Tool for selecting objects. You can do selecting by draging. + +@{i}Shortcut: @{ui} Shift (for multiselecting) +@endnode + +@node WND_TBW_TEST "Window toolbar/Mode Test" + +@{b}Mode Test@{ub} +@{b}=========@{ub} + +Opens window for testing gadgets. No editing is possible. +@endnode + +@node WND_TBW_GADGET "Window toolbar/Mode Gadget" + +@{b}Mode Gadget@{ub} +@{b}===========@{ub} + +Changes mode for editing gadgets (frames are transparent). +@endnode + +@node WND_TBW_FRAME "Window toolbar/Mode Frame" + +@{b}Mode Frame@{ub} +@{b}==========@{ub} + +Changes mode for editing frames (gadgets are transparent). +@endnode + +@node WND_IMAGETOOLBAR "Image toolbar" + +@{b}Image toolbar@{ub} +@{b}=============@{ub} + +This is palette of current image. Currently you cannot customize your palette. +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Objects +@rem */ +@node OBJECTS "Objects" + +@{b}Objects@{ub} +@{b}=======@{ub} + +@{" Window " link MN_OBJECT_WINDOW_NEW} Intuition + @{" Frame " link OBJ_WND_FRAME} GadTools frame + @{" Button " link OBJ_WND_BUTTON} GadTools + @{" CheckBox " link OBJ_WND_CHECKBOX} GadTools + @{" Colorwheel " link OBJ_WND_COLORWHEEL} BOOPSI + @{" Cycle " link OBJ_WND_CYCLE} GadTools + @{" Datatype " link OBJ_WND_DATATYPE} Datatype + @{" Gradientslider " link OBJ_WND_GRADIENTSLIDER} BOOPSI + @{" Integer " link OBJ_WND_INTEGER} GadTools + @{" Listview " link OBJ_WND_LISTVIEW} GadTools + @{" MX " link OBJ_WND_MX} GadTools + @{" Number " link OBJ_WND_NUMBER} GadTools + @{" Page " link OBJ_WND_PAGE} BOOPSI + @{" Palette " link OBJ_WND_PALETTE} GadTools + @{" PopupMenu " link OBJ_WND_POPUPMENU} BOOPSI + @{" Progress " link OBJ_WND_PROGRESS} BOOPSI + @{" Scroller " link OBJ_WND_SCROLLER} GadTools + @{" Slider " link OBJ_WND_SLIDER} GadTools + @{" String " link OBJ_WND_STRING} GadTools + @{" TapeDeck " link OBJ_WND_TAPEDECK} BOOPSI + @{" Text " link OBJ_WND_TEXT} GadTools + @{" TextField " link OBJ_WND_TEXTFIELD} BOOPSI + @{" TreeView " link OBJ_WND_TREEVIEW} BOOPSI +@{" Menu " link MN_OBJECT_MENU_NEW} GadTools +@{" Image " link MN_OBJECT_IMAGE_NEW} BOOPSI, BitMap +@{" String " link MN_OBJECT_STRINGS_OPEN} Locale +@{" Screen " link MN_OBJECT_SCREEN_OPEN} Intuition +@{" Version " link MN_OBJECT_VERSION_OPEN} Version +@endnode + +@node OBJ_WIND_GENERAL "Window/General" + +@{b}Window/General@{ub} +@{b}==============@{ub} + +@{i}Label@{ui} +Label of the window which will be used in your code. + +@{i}X Pos@{ui} +X position of the window. Can be relative to left edge of screen, right edge of screen or centered on screen. + +@{i}Y Pos@{ui} +Y position of the window. Can be relative to top edge of screen, bottom edge of screen or centered on screen. + +@{i}Width@{ui} +Width of the window. Can be also reletive to width of screen. + +@{i}Height@{ui} +Height of the window. Can be also reletive to height of screen. + +@{i}Inner@{ui} +Inner width or inner height. See flags WA_InnerWidth and WA_InnerHeight. +@endnode + +@node OBJ_WIND_STYLE "Window/Style" + +@{b}Window/Style@{ub} +@{b}============@{ub} + +@{i}Drag@{ui} +Type of window drag bar. You can make window without dragbar, with standard dragbar and with tool alike drag bar (it's especially for toolbars). See WFLG_DRAGBAR. + +@{i}Zoom@{ui} +Window has a zoom gadget. + +@{i}Size@{ui} +Window has a size gadget See WFLG_SIZEGADGET. + +@{i}Close@{ui} +Window has a close gadget. See WFLG_CLOSEGADGET. + +@{i}Depth@{ui} +Window has a depth gadget See WFLG_DEPTHGADGET. + +@{i}Size BRight@{ui} +Window has a wide right border. + +@{i}Size BBottom@{ui} +Window has a wide bottom border. + +@{i}Borderless@{ui} +Window is borderless. + +@{i}Backdrop@{ui} +Window is backdrop. +@endnode + +@node OBJ_WIND_FLAGS1 "Window/Flags1" + +@{b}Window/Flags1@{ub} +@{b}=============@{ub} + +@{i}Screen Title@{ui} +Title of screen when window is active. + +@{i}Window Title@{ui} +Title of window. + +@{i}Menu@{ui} +Menu which will be assigned to this window. + +@{i}Font adaptive@{ui} +Window will be font adaptive. + +@{i}App window@{ui} +Window accepts dropping icons. + +@{i}Project@{ui} +Window is a project window. This window uses shared IDCMP. You should set UserData field of window structure to check from what window message has arrived. + +@{i}Paged@{ui} +Window is only a page on page.gadget. This gadget is automaticially checked when you add this window to page.gadget. +@endnode + +@node OBJ_WIND_FLAGS2 "Window/Flags2" + +@{b}Window/Flags2@{ub} +@{b}=============@{ub} + +@{i}Refresh@{ui} +Refresh type of window. Can be Simple, Smart or SuperBitmap. Default is Simple. + +@{i}NoCareRefresh@{ui} +See WFLG_NOCAREREFRESH. + +@{i}GimmeZeroZero@{ui} +See WFLG_GIMMEZEROZERO. + +@{i}NewLookMenus@{ui} +See WFLG_NEWLOOKMENUS. Default is TRUE. + +@{i}ReportMouse@{ui} +See WFLG_REPORTMOUSE. + +@{i}RMBTrap@{ui} +See WFLG_RMPTRAP. + +@{i}Activate@{ui} +See WFLG_ACTIVATE. Default is TRUE. + +@{i}AutoAdjust@{ui} +See WA_AutoAdjust. + +@{i}FallBack@{ui} +See WA_FallBack. +@endnode + +@node OBJ_WIND_FLAGS3 "Window/Flags3" + +@{b}Window/Flags3@{ub} +@{b}=============@{ub} + +@{i}PointerDelay@{ui} +See WA_PointerDelay. + +@{i}Menu Help@{ui} +See WA_MenuHelp. + +@{i}Notify Depth@{ui} +See WA_NotifyDepth. + +@{i}Mouse Queue@{ui} +See WA_MouseQueue. + +@{i}Repeat Queue@{ui} +See WA_ReportMouse. + +@{i}IDCMP Flags...@{ui} +See IDCMP_#? flags. GadTools gadgets always sets their default IDCMP flags when source code is generated. +@endnode + +@node OBJ_WIND_TABORDER "Window/Tab Order" + +@{b}Window/Tab Order@{ub} +@{b}================@{ub} + +Tab Cycle order of gadgets (for STRING and INTEGER gadget kinds). Page.gadget is always last. + +@{i}@{ui} +List of all gadgets on window. + +@{i}Up@{ui} +Move gadget up in the list. + +@{i}Down@{ui} +Move gadget down in the list. +@endnode + +@node OBJ_MENU_GENERAL "Menu/General" + +@{b}Menu/General@{ub} +@{b}============@{ub} + +@{i}Label@{ui} +Label of the menu which will be used in your code. + +@{i}NewLook@{ui} +Menu has GTMN_NewLookMenus flag set. +@endnode + +@node OBJ_MENU_FLAGS "Menu/Flags" + +@{b}Menu/Flags@{ub} +@{b}==========@{ub} + +@{i}Label@{ui} +Label of the menu item which will be used in your code. + +@{i}Title@{ui} +Title of the menu item. + +@{i}Disabled@{ui} +Menu title or item has MN_MENUDISABLED or MN_ITEMDISABLED flag set. + +@{i}Menu Toggle@{ui} +Menu item has CHECKIT flag set. + +@{i}Checked@{ui} +Menu item has CHECKED flag set. + +@{i}CommKey@{ui} +Menu item has a shortcut set to value. + +@{i}PopUp@{ui} +Menu title or item has sub menus. You must set it if you want to create sub menus. Menu titles always should have this flag set. + +@{i}BarLabel@{ui} +Menu title is set to MN_BARLABEL. +@endnode + +@node OBJ_IMAGE_GENERAL "Image/General" + +@{b}Image/General@{ub} +@{b}=============@{ub} + +@{i}Label@{ui} +Label of the image which will be used in your code. + +@{i}Type@{ui} +- Normal image - image is a standard. Custom palette is used. To set palette, paste it from clipboard. +- Toolbar image - image is a toolbar. Only default palette can be used. Width: 20, Height: 20, Depth: 4. +- Pointer image - image is a mouse pointer. Only default palette can be used. Width: 32, Height: 32, Depth: 2. + +@{i}Set Point@{ui} +Set mouse pointer click point. + +@{i}Edit palette...@{ui} +(doesn't work) +@endnode + +@node OBJ_WND_FRAME "Objects/Window/Frame" + +@{b}Objects/Window/Frame@{ub} +@{b}====================@{ub} + +GadTools.library DrawBevelBox() frame. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_FRAME_GENERAL} +@endnode + +@node OBJ_FRAME_GENERAL "Frame/General" + +@{b}Frame/General@{ub} +@{b}=============@{ub} + +@{i}X Pos@{ui} +X position of the frame. + +@{i}Y Pos@{ui} +Y position of the frame. + +@{i}Width@{ui} +Width of the frame. + +@{i}Height@{ui} +Height of the frame. + +@{i}Recessed@{ui} +Frame has GTBB_Recessed flag set to TRUE. + +@{i}Frame@{ui} +Frame has GTBB_FrameType flag set to value. +@endnode + +@node OBJ_GADTOOLS_GENERAL "Gadtools/General" + +@{b}Gadtools/General@{ub} +@{b}================@{ub} + +@{i}Label@{ui} +Label of the gadget which will be used in your code. + +@{i}X Pos@{ui} +X position of the gadget. Can be relative only to left edge of window. +GadTools gadget doesn't support relativilty. + +@{i}Y Pos@{ui} +Y position of the gadget. Can be relative only to top edge of window. +GadTools gadget doesn't support relativilty. + +@{i}Width@{ui} +Width of the gadget. +GadTools gadget doesn't support relativilty. + +@{i}Height@{ui} +Height of the gadget. +GadTools gadget doesn't support relativilty. + +@{i}Title@{ui} +Title of gadget. + +@{i}Placement@{ui} +Placement of gadgets title. Can be on left side, right side, above, below and inside gadget (inside makes only sense in BUTTON_KIND). +@endnode + +@node OBJ_BOOPSI_GENERAL "BOOPSI/General" + +@{b}BOOPSI/General@{ub} +@{b}==============@{ub} + +@{i}Label@{ui} +Label of the gadget which will be used in your code. + +@{i}X Pos@{ui} +X position of the gadget. Can be relative to left and right edge of window. + +@{i}Y Pos@{ui} +Y position of the gadget. Can be relative to top and bottom edge of window. + +@{i}Width@{ui} +Width of the gadget. Can be relative to width of window. + +@{i}Height@{ui} +Height of the gadget. Can be relative to height of window. +@endnode + +@node OBJ_LISTS "Objects/#?/Lists" + +@{b}Objects/#?/Lists@{ub} +@{b}================@{ub} + +@{i}@{ui} +List of nodes. + +@{i}@{ui} +Edition string of current node. + +@{i}Add@{ui} +Add node to the list. + +@{i}Del@{ui} +Remove node from the list. + +@{i}Up@{ui} +Swap node with upper node in the list. + +@{i}Down@{ui} +Swap node with bottom node in the list. + +@{i}@{ui} +Default active node in gadget (eg. GTLV_Active). + +@endnode + +@node OBJ_WND_BUTTON "Objects/Window/Button" + +@{b}Objects/Window/Button@{ub} +@{b}=====================@{ub} + +GadTools.library BUTTON_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_BUTT_FLAGS} +@endnode + +@node OBJ_BUTT_FLAGS "Button/Flags" + +@{b}Button/Flags@{ub} +@{b}============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Immediate@{ui} +Gadget has GA_Immediate flag set. + +@{i}Toggle@{ui} +Gadget has GA_Toggle flag set. + +@{i}Title Type@{ui} +Type of title. You can use images instead of text titles: + - Text - Gadget uses normal text as a title + - Toolbar - Title of gadget is label of image to use. Toolbars have frame only when selected. + - Image - Title of gadget is label of image to use. Gadget will have no frames. +@endnode + +@node OBJ_WND_CHECKBOX "Objects/Window/Checkbox" + +@{b}Objects/Window/Checkbox@{ub} +@{b}=======================@{ub} + +GadTools.library CHECKBOX_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_CBOX_FLAGS} +@endnode + +@node OBJ_CBOX_FLAGS "Checkbox/Flags" + +@{b}Checkbox/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}Checked@{ui} +Gadget has GTCB_Checked flag set. + +@{i}Scaled@{ui} +Gadget has GTCB_Scaled flag set. + - None - Gadget has default dimensions + - Normal - Gadget is scaled + - Adaptive - (doesn't work) +@endnode + +@node OBJ_WND_COLORWHEEL "Objects/Window/ColorWheel" + +@{b}Objects/Window/Colorwheel@{ub} +@{b}=========================@{ub} + +Colorwheel.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_CWHL_FLAGS} +@endnode + +@node OBJ_CWHL_FLAGS "Colorwheel/Flags" + +@{b}Colorwheel/Flags@{ub} +@{b}================@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}FollowMouse@{ui} +Gadget has GA_FollowMouse flag set to true. + +@{i}BevelBox@{ui} +Gadget has WHEEL_BevelBox flag set. + +@{i}MaxPens@{ui} +Gadget has WHEEL_MaxPens flag set to value. + +@{i}Abbrv@{ui} +Gadget has WHEEL_Abbrv flag set to value. + +@{i}Grad-Slider@{ui} +Gadget has WHEEL_GradientSlider flag set to value. WARNING: Gradientslider gadget must be before colorwheel in the list! +@endnode + +@node OBJ_WND_CYCLE "Objects/Window/Cycle" + +@{b}Objects/Window/Cycle@{ub} +@{b}====================@{ub} + +GadTools.library CYCLE_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_CYCE_FLAGS} +@{"Lists" link OBJ_LISTS} +@endnode + +@node OBJ_CYCE_FLAGS "Cycle/Flags" + +@{b}Cycle/Flags@{ub} +@{b}===========@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. +@endnode + +@node OBJ_WND_DATATYPE "Objects/Window/Datatype" + +@{b}Objects/Window/Datatype@{ub} +@{b}=======================@{ub} + +Datatype.library BOOPSI object file. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_DTYP_FLAGS} +@endnode + +@node OBJ_DTYP_FLAGS "Datatype/Flags" + +@{b}Datatype/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}File@{ui} +File name of datatype object to load. +@endnode + +@node OBJ_WND_GRADIENTSLIDER "Objects/Window/Gradientslider" + +@{b}Objects/Window/Gradientslider@{ub} +@{b}=============================@{ub} + +Gradientslider.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_GRSL_FLAGS} +@endnode + +@node OBJ_GRSL_FLAGS "Gradientslider/Flags" + +@{b}Gradientslider/Flags@{ub} +@{b}====================@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Freedom@{ui} +Gadget has PGA_Freedom flag set to value. + +@{i}Knob Pixels@{ui} +Gadget has GRAD_KnobPixels flag set to value. + +@{i}MaxVal@{ui} +Gadget has GRAD_MaxVal flag set to value. + +@{i}CurVal@{ui} +Gadget has GRAD_CurVal flag set to value. + +@{i}SkipVal@{ui} +Gadget has GRAD_SkipVal flag set to value. + +@{i}Pens@{ui} +(doesn't work) +@endnode + +@node OBJ_WND_INTEGER "Objects/Window/Integer" + +@{b}Objects/Window/Integer@{ub} +@{b}======================@{ub} + +GadTools.library INTEGER_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_INTR_FLAGS} +@{"Var" link OBJ_INTR_VAR} +@endnode + +@node OBJ_INTR_FLAGS "Integer/Flags" + +@{b}Integer/Flags@{ub} +@{b}=============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}TabCycle@{ui} +Gadget has GA_TabCycle flag set. + +@{i}ReplaceMode@{ui} +Gadget has STRINGA_ReplaceMode flag set. + +@{i}ExitHelp@{ui} +Gadget has STRINGA_ExitHelp flag set. +@endnode + +@node OBJ_INTR_Var "Integer/Var" + +@{b}Integer/Var@{ub} +@{b}===========@{ub} + +@{i}Justification@{ui} +Gadget has STRINGA_Justification flag set to value. + +@{i}MaxChars@{ui} +Gadget has GTIN_MaxChars flag set to value. + +@{i}Number@{ui} +Gadget has GTIN_Number flag set to value. +@endnode + +@node OBJ_WND_LISTVIEW "Objects/Window/Listview" + +@{b}Objects/Window/Listview@{ub} +@{b}=======================@{ub} + +GadTools.library LISTVIEW_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_LVIE_FLAGS} +@{"Lists" link OBJ_LISTS} +@endnode + +@node OBJ_LVIE_FLAGS "Listview/Flags" + +@{b}Listview/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}ReadOnly@{ui} +Gadget has GTLV_ReadOnly flag set. + +@{i}ShowSelected@{ui} +Gadget has GTLV_ShowSelected flag set to NULL. + +@{i}Arrows@{ui} +Gadget has GTLV_ScrollWidth flag set to value. + - None - Arrows have default dimensions + - Normal - Arrows have dimensions set to value + - Adaptive - (doesn't work) + +@{i}Spacing@{ui} +Gadget has LAYOUTA_Spacing flag set to value. +@endnode + +@node OBJ_WND_MX "Objects/Window/MX" + +@{b}Objects/Window/MX@{ub} +@{b}=================@{ub} + +GadTools.library MX_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_MX_FLAGS} +@{"Lists" link OBJ_LISTS} +@endnode + +@node OBJ_MX_FLAGS "MX/Flags" + +@{b}MX/Flags@{ub} +@{b}========@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}Spacing@{ui} +Gadget has GTMX_Spacing flag set to value. + +@{i}Scaled@{ui} +Gadget has GTMX_Scaled flag set. + - None - Gadget has default dimensions + - Normal - Gadget is scaled + - Adaptive - (doesn't work) + +@{i}Placement@{ui} +Gadget has GTMX_TitlePlace flag set to value. +@endnode + +@node OBJ_WND_NUMBER "Objects/Window/Number" + +@{b}Objects/Window/Number@{ub} +@{b}=====================@{ub} + +GadTools.library NUMBER_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_NUMB_FLAGS} +@endnode + +@node OBJ_NUMB_FLAGS "Number/Flags" + +@{b}Number/Flags@{ub} +@{b}============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}Border@{ui} +Gadget has GTNM_Border flag set. + +@{i}Clipped@{ui} +Gadget has GTNM_Clipped flag set. + +@{i}Justification@{ui} +Gadget has GTNM_Justification flag set to value. + +@{i}Format@{ui} +Gadget has GTNM_Format flag set to value. + +@{i}Default@{ui} +Gadget has GTNM_Number flag set to value. + +@{i}MaxNumLen@{ui} +Gadget has GTNM_MaxNumberLen flag set to value. +@endnode + +@node OBJ_WND_PAGE "Objects/Window/Page" + +@{b}Objects/Window/Page@{ub} +@{b}===================@{ub} + +Page.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_PAGE_FLAGS} +@{"Lists" link OBJ_PAGE_LISTS} +@endnode + +@node OBJ_PAGE_FLAGS "Page/Flags" + +@{b}Page/Flags@{ub} +@{b}==========@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget has PAGE_Underscore flag set and supports underscore. Only '_' character is acceptable. + +@{i}Layout@{ui} +Gadget has PAGE_Layout flag set to value. + +@{i}Style@{ui} +Gadget has PAGE_ActiveStyle flag set to value. + +@{u}Note:@{uu} +GA_RelVerify is always set to TRUE. +PAGE_ClearBBox has the same dimensions as first window in the list. +@endnode + +@node OBJ_PAGE_LISTS "Page/Lists" + +@{b}Page/Lists@{ub} +@{b}==========@{ub} + +@{i} Del@{ui} +Remove window from left listview + +@{i}Up@{ui} +Swap window with upper window in the list. + +@{i}Down@{ui} +Swap window with bottom window in the list. + +@{i}@{ui} +Gadget has PAGE_Active flag set to value. +@endnode + +@node OBJ_WND_PALETTE "Objects/Window/Palette" + +@{b}Objects/Window/Palette@{ub} +@{b}======================@{ub} + +GadTools.library PALETTE_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_PALT_FLAGS} +@endnode + +@node OBJ_PALT_FLAGS "Palette/Flags" + +@{b}Palette/Flags@{ub} +@{b}=============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}@{ui} +- Depth - Gadget has GTPA_Depth flag set to value. +- Colors - Gadget has GTPA_NumColors flag set to value. +- Screen - Gadget has GTPA_Depth flag set to screen depth. + +@{i}@{ui} +- None - GTPA_IndicatorWidth and GTPA_IndicatorHeight doesn't exists +- Width - Gadget has GTPA_IndicatorWidth flag set to value. +- Height - Gadget has GTPA_IndicatorHeight flag set to value. + +@{i}Offset@{ui} +Gadget has GTPA_ColorOffset flag set to value. +@endnode + +@node OBJ_WND_POPUPMENU "Objects/Window/PopupMenu" + +@{b}Objects/Window/PopupMenu@{ub} +@{b}========================@{ub} + +Popupmenu.o BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_PUPM_FLAGS} +@{"Lists" link OBJ_LISTS} +@endnode + +@node OBJ_PUPM_FLAGS "Popupmenu/Flags" + +@{b}Popupmenu/Flags@{ub} +@{b}===============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}NewLook@{ui} +Gadget has PUMG_NewLook flag set. +@endnode + +@node OBJ_WND_PROGRESS "Objects/Window/Progress" + +@{b}Objects/Window/Progress@{ub} +@{b}=======================@{ub} + +Progress.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_PRGR_FLAGS} +@endnode + +@node OBJ_PRGR_FLAGS "Progress/Flags" + +@{b}Progress/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Border@{ui} +Gadget has PROG_Border flag set. + +@{i}Show in %@{ui} +Gadget has PROG_ConvertToPercents flag set. + +@{i}Max@{ui} +Gadget has PROG_MaxVal flag set to value. + +@{i}Current@{ui} +Gadget has PROG_CurVal flag set to value. + +@{i}Placement@{ui} +Gadget has PROG_Placement flag set to value. + +@{i}Format@{ui} +Gadget has PROG_Format flag set to value. +@endnode + +@node OBJ_WND_SCROLLER "Objects/Window/Scroller" + +@{b}Objects/Window/Scroller@{ub} +@{b}=======================@{ub} + +GadTools.library SCROLLER_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_SCRL_FLAGS} +@{"Var" link OBJ_SCRL_VAR} +@endnode + +@node OBJ_SCRL_FLAGS "Scroller/Flags" + +@{b}Scroller/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}Immediate@{ui} +Gadget has GA_Immediate flag set. + +@{i}RelVerify@{ui} +Gadget has GA_RelVerify flag set. +@endnode + +@node OBJ_SCRL_VAR "Scroller/Var" + +@{b}Scroller/Var@{ub} +@{b}============@{ub} + +@{i}Freedom@{ui} +Gadget has PGA_Freedom flag set to true. + +@{i}Top@{ui} +Gadget has GTSC_Top flag set to value. + +@{i}Total@{ui} +Gadget has GTSC_Total flag set to value. + +@{i}Visible@{ui} +Gadget has GTSC_Visible flag set to value. + +@{i}Arrows@{ui} +Gadget has GTSC_Arrows flag set to value: +- None - GTSC_Arrows flag doesn't exists +- Normal - GTSC_Arrows flag is set to value +- Adaptive - GTSC_Arrows flag is set to gadget height (incorrect if gadget is font adaptive - don't use this) +@endnode + +@node OBJ_WND_SLIDER "Objects/Window/Slider" + +@{b}Objects/Window/Slider@{ub} +@{b}=====================@{ub} + +GadTools.library SLIDER_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_SLDR_FLAGS} +@{"Var" link OBJ_SLDR_VAR} +@endnode + +@node OBJ_SLDR_FLAGS "Slider/Flags" + +@{b}Slider/Flags@{ub} +@{b}============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}Immediate@{ui} +Gadget has GA_Immediate flag set. + +@{i}RelVerify@{ui} +Gadget has GA_RelVerify flag set. + +@{i}Format@{ui} +Gadget has GTSL_LevelFormat flag set to value. + +@{i}MaxPixelLen@{ui} +Gadget has GTSL_MaxPixelLen flag set to value. +@endnode + +@node OBJ_SLDR_VAR "Slider/Var" + +@{b}Slider/Var@{ub} +@{b}==========@{ub} + +@{i}Justification@{ui} +Gadget has GTSL_Justification flag set to value. + +@{i}Freedom@{ui} +Gadget has PGA_Freedom flag set to value. + +@{i}Level Place@{ui} +Gadget has GTSL_LevelPlace flag set to value. + +@{i}Min@{ui} +Gadget has GTSL_Min flag set to value. + +@{i}Max@{ui} +Gadget has GTSL_Max flag set to value. + +@{i}Level@{ui} +Gadget has GTSL_Level flag set to value. + +@{i}MaxLevLen@{ui} +Gadget has GTSL_MaxLevelLen flag set to value. +@endnode + +@node OBJ_WND_STRING "Objects/Window/String" + +@{b}Objects/Window/String@{ub} +@{b}=====================@{ub} + +GadTools.library STRING_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_STRG_FLAGS} +@{"Var" link OBJ_STRG_VAR} +@endnode + +@node OBJ_STRG_FLAGS "String/Flags" + +@{b}String/Flags@{ub} +@{b}============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Underscore@{ui} +Gadget supports underscore. Only '_' character is acceptable. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}TabCycle@{ui} +Gadget has GA_TabCycle flag set. + +@{i}ReplaceMode@{ui} +Gadget has STRINGA_ReplaceMode flag set. + +@{i}ExitHelp@{ui} +Gadget has STRINGA_ExitHelp flag set. +@endnode + +@node OBJ_STRG_Var "String/Var" + +@{b}String/Var@{ub} +@{b}==========@{ub} + +@{i}Justification@{ui} +Gadget has STRINGA_Justification flag set to value. + +@{i}MaxChars@{ui} +Gadget has GTST_MaxChars flag set to value. + +@{i}String@{ui} +Gadget has GTST_String flag set to value. +@endnode + +@node OBJ_WND_TAPEDECK "Objects/Window/Tapedeck" + +@{b}Objects/Window/Tapedeck@{ub} +@{b}=======================@{ub} + +Tapedeck.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_TDEK_FLAGS} +@endnode + +@node OBJ_TDEK_FLAGS "Tapedeck/Flags" + +@{b}Tapedeck/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Tape@{ui} +Gadget has TDECK_Tape flag set. + +@{i}Paused@{ui} +Gadget has TDECK_Paused flag set. + +@{i}Frames@{ui} +Gadget has TDECK_Frames flag set to value. + +@{i}Current@{ui} +Gadget has TDECK_CurrentFrame flag set to value. +@endnode + +@node OBJ_WND_TEXT "Objects/Window/Text" + +@{b}Objects/Window/Text@{ub} +@{b}===================@{ub} + +GadTools.library TEXT_KIND gadget. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_GADTOOLS_GENERAL} +@{"Flags" link OBJ_TEXT_FLAGS} +@endnode + +@node OBJ_TEXT_FLAGS "Text/Flags" + +@{b}Text/Flags@{ub} +@{b}==========@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}Highlabel@{ui} +Gadget has highlighted label. + +@{i}CopyText@{ui} +Gadget has GTTX_CopyText flag set. + +@{i}Border@{ui} +Gadget has GTTX_Border flag set. + +@{i}Clipped@{ui} +Gadget has GTTX_Clipped flag set. + +@{i}Justification@{ui} +Gadget has GTTX_Justification flag set to value. + +@{i}Default@{ui} +Gadget has GTTX_Text flag set to value. +@endnode + +@node OBJ_WND_TEXTFIELD "Objects/Window/Textfield" + +@{b}Objects/Window/Textfield@{ub} +@{b}========================@{ub} + +Textfield.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_TFLD_FLAGS} +@{"Flags2" link OBJ_TFLD_FLAGS2} +@{"Var" link OBJ_TFLD_VAR} +@endnode + +@node OBJ_TFLD_FLAGS "Textfield/Flags" + +@{b}Textfield/Flags@{ub} +@{b}===============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}TabCycle@{ui} +Gadget has GA_TabCycle flag set. + +@{i}Read Only@{ui} +Gadget has TEXTFIELD_ReadOnly flag set. + +@{i}Inverted@{ui} +Gadget has TEXTFIELD_Inverted flag set. + +@{i}Partial@{ui} +Gadget has TEXTFIELD_Partial flag set. + +@{i}BlockCursor@{ui} +Gadget has TEXTFIELD_BlockCursor flag set. + +@{i}VCenter@{ui} +Gadget has TEXTFIELD_VCenter flag set. + +@{i}PassCommand@{ui} +Gadget has TEXTFIELD_PassCommand flag set. + +@{i}Clipboard@{ui} +(doesn't work) + +@{i}Undo@{ui} +(doesn't work) +@endnode + +@node OBJ_TFLD_FLAGS2 "Textfield/Flags2" + +@{b}Textfield/Flags2@{ub} +@{b}===============@{ub} + +@{i}UserAlign@{ui} +Gadget has TEXTFIELD_UserAlign flag set. + +@{i}NoGhost@{ui} +Gadget has TEXTFIELD_NoGhost flag set. + +@{i}Modified@{ui} +Gadget has TEXTFIELD_Modified flag set. + +@{i}RuledPaper@{ui} +Gadget has TEXTFIELD_RuledPaper flag set. + +@{i}NonPrintChars@{ui} +Gadget has TEXTFIELD_NonPrintChars flag set. + +@{i}Max Size Beep@{ui} +Gadget has TEXTFIELD_MaxSizeBeep flag set. + +@{i}Border@{ui} +Gadget has TEXTFIELD_Border flag set to value. + +@{i}Align@{ui} +Gadget has TEXTFIELD_Alignment flag set to value. +@endnode + +@node OBJ_TFLD_VAR "Textfield/Var" + +@{b}Textfield/Var@{ub} +@{b}=============@{ub} + +@{i}BlinkRate@{ui} +Gadget has TEXTFIELD_BlinkRate flag set to value. + +@{i}MaxSize@{ui} +Gadget has TEXTFIELD_MaxSize flag set to value. + +@{i}TabSpaces@{ui} +Gadget has TEXTFIELD_TabSpaces flag set to value. + +@{i}Spacing@{ui} +Gadget has TEXTFIELD_Spacing flag set to value. + +@{i}Delimiters@{ui} +Gadget has TEXTFIELD_Delimiters flag set to value. + +@{i}AcceptChars@{ui} +Gadget has TEXTFIELD_AcceptChars flag set to value. + +@{i}RejectChars@{ui} +Gadget has TEXTFIELD_RejectChars flag set to value. +@endnode + +@node OBJ_WND_TREEVIEW "Objects/Window/Treeview" + +@{b}Objects/Window/Treeview@{ub} +@{b}=======================@{ub} + +Listview.gadget BOOPSI object. + +@{i}Gadgets@{ui} + +@{"General" link OBJ_BOOPSI_GENERAL} +@{"Flags" link OBJ_TVIE_FLAGS} +@endnode + +@node OBJ_TVIE_FLAGS "Treeview/Flags" + +@{b}Treeview/Flags@{ub} +@{b}==============@{ub} + +@{i}Disabled@{ui} +Gadget has GA_Disabled flag set to true. + +@{i}MultiSelect@{ui} +Gadget has LIST_MultiSelect flag set. + +@{i}Border@{ui} +Gadget has LIST_Border flag set. + +@{i}ReadOnly@{ui} +Gadget has LIST_ReadOnly flag set. + +@{i}ShowSelected@{ui} +Gadget has LIST_ShowSelected flag set. + +@{i}ShowTreeLines@{ui} +Gadget has LIST_ShowTreeLines flag set. + +@{i}Tree@{ui} +Gadget has LIST_IsTree flag set. + +@{i}Columns@{ui} +Gadget has LIST_Columns flag set to value. + +@{i}Format@{ui} +Gadget has LIST_Format flag set to value. +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Generators +@rem */ +@node GENERATORS "Generators" + +@{b}Generators@{ub} +@{b}==========@{ub} + +All source generators are designed as external plugins. You can add them simply by copying them to generators directory where you have installed your GadToolsBox v3. If you want to develop new source code generator please contact with @{"me" link AUTHOR}. + +@{" c.generator " link c.generator.guide/Main} SAS/C source code generator +@{" amigae.generator " link AMIGAEGENERATOR} Amiga E source code generator +@endnode + +@node AMIGAEGENERATOR "AmigaE.generator" + +@{b}Amiga E Source code generator@{ub} +@{b}=============================@{ub} + +Source code generator for Amiga E is currently under development. +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** Developer Kits +@rem */ +@node DEVKITS "Developer kits" + +@{b}Developer kits@{ub} +@{b}==============@{ub} + +Informations about generated functions and how to use them you will find in @{"generators" link GENERATORS} section. +AutoDocs for external BOOPSI classes are in directory @{i}Developers@{ui}. You will find there full developer kit for @{"smartbitmap.image" link MN_OBJECT_IMAGE_NEW}, @{"progress.gadget" link OBJ_WND_PROGRESS} and @{"listview.gadget" link OBJ_WND_TREEVIEW}. All these three BOOPSI classes are developed by @{"me" link AUTHOR}. + +AutoDocs for other objects are available on AmiNet: +- @{"dev/gui/PageGadget.lha" link OBJ_WND_PAGE} +- @{"dev/gui/PopUpMenuC_1.1.lha" link OBJ_WND_POPUPMENU} +- @{"dev/gui/textfield.lha" link OBJ_WND_TEXTFIELD} +@endnode + + + + +@rem /************************************************************************/ + + + + +@rem /* +@rem ** +@rem */ +@node "" + +@{b}@{ub} +@{b}======@{ub} + +@endnode diff --git a/GadToolsBox/image.c b/GadToolsBox/image.c new file mode 100755 index 0000000..058273c --- /dev/null +++ b/GadToolsBox/image.c @@ -0,0 +1,1154 @@ +/* +** GadToolsBox v3 - Image Managment +*/ + +#include"includes.h" +#include + +/* +** Defines +*/ + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGPI_General[]; + +struct Page PAGES_PROPERTIES_PGPI_PAGES[]= +{ + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +#define IM_WIDTH(o) ((struct Image *) o)->Width +#define IM_HEIGHT(o) ((struct Image *) o)->Height +#define Bit32(x) ((ULONG)(x|(x<<8)|(x<<16)|(x<<24))) +#define Bit8(x) ((UBYTE)((x&0xff000000)>>24)) + +/* +** Functions +*/ + +ULONG Dispatcher_Image(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_NEW: + retval=NEW_Image(cl,o,(struct piSet *)msg); + break; + case OM_INIT: + retval=INIT_Image(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Image(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGPI_General(); + PAGES_PROPERTIES_PGPI_PAGES[0].FirstGadget=PGPI_GeneralGList; + PAGES_PROPERTIES_PGPI_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L41_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PGPI_PAGES[0].FirstGadget=NULL; + CloseWindow_PGPI_General(); + break; + case OM_CREATE: + retval=CREATE_Image(cl,o,(struct piSet *)msg); + break; + case OM_DELETE: + retval=DELETE_Image(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Image(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Image(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Image(cl,o,msg); + break; + case OM_RENDER: + retval=RENDER_Image(cl,o,msg); + break; + case OM_ADDTAIL: + AddTail(List(&GUI.gui_List_Image),Node(o)); + break; + case OM_REMOVE: + Remove(Node(o)); + break; + case OM_READ: + retval=READ_Image(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Image(cl,o,(struct piIO *)msg); + break; + case OM_CUT: + retval=CUT_Image(cl,o,msg); + break; + case OM_COPY: + retval=COPY_Image(cl,o,(struct piCopy *)msg); + break; + } + return retval; +} + +ULONG CUT_Image(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + + piCopyObject(o,COPY_CLIP); + piCopyObject(o,COPY_UNDO); + + piRemoveObject(o); + piDisposeObject(o); + + return TRUE; +} + +ULONG COPY_Image(piClass *cl,piObject *o,struct piCopy *msg) +{ + struct IFFHandle *iffh; + ULONG error=0; + + if(!(ClipHandle=OpenClipboard(PRIMARY_CLIP))) return 1; + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)((msg->Copy==COPY_CLIP)?ClipHandle:UndoHandle); + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_WRITE)) + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + piWriteObject(o,iffh); + if(error=PopChunk(iffh)) goto skip;; + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + if(ClipHandle) CloseClipboard(ClipHandle); ClipHandle=NULL; + return TRUE; +} + +ULONG INIT_Image(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Image *ni; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetString(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_LABEL],ni->ni_Label); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_WIDTH],ni->ni_Width); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_HEIGHT],ni->ni_Height); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_DEPTH],ni->ni_Depth); + SetCycle(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_TYPE],ni->ni_Type); + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,TRUE); // FALSE + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,TRUE); + break; + case IMTYPE_TOOLBAR: + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,TRUE); + break; + case IMTYPE_POINTER: + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,FALSE); + break; + } + return TRUE; +} + +ULONG APPLY_Image(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Image *ni; + struct Window *PropsWnd=NULL; + struct BitMap *newbm; + ULONG active=0,v,t; + UWORD ow,oh,od; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + strcpy(ni->ni_Label,GetString(PGPI_GeneralGadgets[GD_PGPI_LABEL])); + + ow=ni->ni_Width; + oh=ni->ni_Height; + od=ni->ni_Depth; + + ni->ni_Width=GetInteger(PGPI_GeneralGadgets[GD_PGPI_WIDTH]); + ni->ni_Height=GetInteger(PGPI_GeneralGadgets[GD_PGPI_HEIGHT]); + ni->ni_Depth=GetInteger(PGPI_GeneralGadgets[GD_PGPI_DEPTH]); + + if(ni->ni_Width!=ow || ni->ni_Height!=oh || ni->ni_Depth!=od) + { + if(newbm=AllocBitMap(ni->ni_Width,ni->ni_Height,ni->ni_Depth,BMF_CLEAR,NULL)) + { + if(ni->ni_BitMap) + { + BltBitMap(ni->ni_BitMap,0,0,newbm,0,0,(ni->ni_Widthni_Width:ow,(ni->ni_Heightni_Height:oh,0xc0,0xff,NULL); + FreeBitMap(ni->ni_BitMap); + } + ni->ni_BitMap=newbm; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_BitMap,ni->ni_BitMap,TAG_DONE); + + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Left,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Top,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL, PGA_Top, t, PGA_Visible, v, TAG_DONE); + } + else + { + ni->ni_Width=ow; + ni->ni_Height=oh; + ni->ni_Depth=od; + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_WIDTH],ni->ni_Width); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_HEIGHT],ni->ni_Height); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_DEPTH],ni->ni_Depth); + } + } + + RefreshObjectList(); + if(ni->ni_Window) RefreshWindowFrame(ni->ni_Window); + return TRUE; +} + +ULONG RENDER_Image(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + return TRUE; +} + +ULONG NEW_Image(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Image *ni; + + if(!CheckRegistration()) + if(!ListEmpty(&GUI.gui_List_Image)) return NULL; + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + ni=(struct Node_Image *)OBJECT_DATA(obj); + ni->ni_ID=ID_IMGE; + ni->ni_Pages=PAGES_PROPERTIES_PGPI_PAGES; + unless(ni->ni_BitMap=AllocBitMap(32,32,2,BMF_CLEAR,NULL)) return NULL; + ni->ni_Width=32; + ni->ni_Height=32; + ni->ni_Depth=2; + ni->ni_Type=IMTYPE_NORMAL; + ni->ni_CT=(struct ColorPalette *)MyAllocVec(sizeof(struct ColorPalette)*256,MEMF_ANY|MEMF_CLEAR); + ni->ni_Pens=(UBYTE *)MyAllocVec(sizeof(UBYTE)*256,MEMF_ANY|MEMF_CLEAR); + obj->ln_Name=ni->ni_Label; + return (ULONG) obj; + } + return NULL; +} + +ULONG DISPOSE_Image(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + if(ni->ni_Pens) MyFreeVec(ni->ni_Pens); + if(ni->ni_CT) MyFreeVec(ni->ni_CT); + if(ni->ni_BitMap) FreeBitMap(ni->ni_BitMap); + piDoMethod(o,OM_DELETE); + MyFreeVec(o); + return TRUE; +} + +int FN_DrawUp_Image(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + ni->ni_Top--; + if(ni->ni_Top<0L) ni->ni_Top=0L; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Top,ni->ni_Top,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL,PGA_Top,ni->ni_Top,TAG_DONE); + return 1; +} + +int FN_DrawDown_Image(void) +{ + struct Node_Image *ni; + ULONG v; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + ni->ni_Top++; + if(ni->ni_Top>(32-v)) ni->ni_Top=32-v; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Top,ni->ni_Top,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL,PGA_Top,ni->ni_Top,TAG_DONE); + return 1; +} + +int FN_DrawVert_Image(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetAttr(PGA_Top,ni->ni_VertProp,(ULONG *)&ni->ni_Top); + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Top,ni->ni_Top,TAG_DONE); + return 1; +} + +int FN_DrawLeft_Image(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + ni->ni_Left--; + if(ni->ni_Left<0L) ni->ni_Left=0L; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Left,ni->ni_Left,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL,PGA_Top,ni->ni_Left,TAG_DONE); + return 1; +} + +int FN_DrawRight_Image(void) +{ + struct Node_Image *ni; + ULONG v; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + ni->ni_Left++; + if(ni->ni_Left>(32-v)) ni->ni_Left=32-v; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Left,ni->ni_Left,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL,PGA_Top,ni->ni_Left,TAG_DONE); + return 1; +} + +int FN_DrawHoriz_Image(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetAttr(PGA_Top,ni->ni_HorizProp,(ULONG *)&ni->ni_Left); + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Left,ni->ni_Left,TAG_DONE); + return 1; +} + +int FN_DrawDraw_Image(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); +// RefreshGList((struct Gadget *)ni->ni_Preview,ni->ni_Window,NULL,1); + return 1; +} + +struct ColorPalette PointerPens[]= +{ + { 0,0,0,0}, // Transparent + {17,0,0,0}, // Black + {18,0,0,0}, // Red + {19,0,0,0} // Pink +}; + +struct ColorPalette ToolbarPens[]= +{ + { 0,189,189,189}, // Background + { 0, 0, 0, 0}, // Black + { 0,255,255,255}, // White + { 0,123, 0, 0}, // Red 50% + { 0, 0,123, 0}, // Green 50% + { 0, 0, 0,123}, // Blue 50% + { 0,123,123, 0}, // Yellow 50% + { 0, 0,123,123}, // Cyan 50% + { 0,123, 0,123}, // Magenta 50% + { 0,255, 0, 0}, // Red 100% + { 0, 0,255, 0}, // Green 100% + { 0, 0, 0,255}, // Blue 100% + { 0,255,255, 0}, // Yellow 100% + { 0, 0,255,255}, // Cyan 100% + { 0,255, 0,255}, // Magenta 100% + { 0,123,123,123} // Dark Gray +}; + +ULONG CREATE_Image(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Image *ni; + ULONG v,t,x,z; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + if(!ni->ni_Window) + { + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + for(x=0;x<(2<<(ni->ni_Depth-1));x++) + ni->ni_Pens[x]=ni->ni_CT[x].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ni->ni_CT[x].cp_R),Bit32(ni->ni_CT[x].cp_G),Bit32(ni->ni_CT[x].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + break; + case IMTYPE_POINTER: + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[0].cp_I,1,&ni->ni_CT[0].cp_R); ni->ni_Pens[0]=ni->ni_CT[0].cp_I=PointerPens[0].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[1].cp_I,1,&ni->ni_CT[1].cp_R); ni->ni_Pens[1]=ni->ni_CT[1].cp_I=PointerPens[1].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[2].cp_I,1,&ni->ni_CT[2].cp_R); ni->ni_Pens[2]=ni->ni_CT[2].cp_I=PointerPens[2].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[3].cp_I,1,&ni->ni_CT[3].cp_R); ni->ni_Pens[3]=ni->ni_CT[3].cp_I=PointerPens[3].cp_I; + break; + case IMTYPE_TOOLBAR: + ni->ni_Pens[0]=ni->ni_CT[0].cp_I=DrawInfo->dri_Pens[BACKGROUNDPEN]; + ni->ni_Pens[1]=ni->ni_CT[1].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[1].cp_R),Bit32(ToolbarPens[1].cp_G),Bit32(ToolbarPens[1].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[2]=ni->ni_CT[2].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[2].cp_R),Bit32(ToolbarPens[2].cp_G),Bit32(ToolbarPens[2].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[3]=ni->ni_CT[3].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[3].cp_R),Bit32(ToolbarPens[3].cp_G),Bit32(ToolbarPens[3].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[4]=ni->ni_CT[4].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[4].cp_R),Bit32(ToolbarPens[4].cp_G),Bit32(ToolbarPens[4].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[5]=ni->ni_CT[5].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[5].cp_R),Bit32(ToolbarPens[5].cp_G),Bit32(ToolbarPens[5].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[6]=ni->ni_CT[6].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[6].cp_R),Bit32(ToolbarPens[6].cp_G),Bit32(ToolbarPens[6].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[7]=ni->ni_CT[7].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[7].cp_R),Bit32(ToolbarPens[7].cp_G),Bit32(ToolbarPens[7].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[8]=ni->ni_CT[8].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[8].cp_R),Bit32(ToolbarPens[8].cp_G),Bit32(ToolbarPens[8].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[9]=ni->ni_CT[9].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[9].cp_R),Bit32(ToolbarPens[9].cp_G),Bit32(ToolbarPens[9].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[10]=ni->ni_CT[10].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[10].cp_R),Bit32(ToolbarPens[10].cp_G),Bit32(ToolbarPens[10].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[11]=ni->ni_CT[11].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[11].cp_R),Bit32(ToolbarPens[11].cp_G),Bit32(ToolbarPens[11].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[12]=ni->ni_CT[12].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[12].cp_R),Bit32(ToolbarPens[12].cp_G),Bit32(ToolbarPens[12].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[13]=ni->ni_CT[13].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[13].cp_R),Bit32(ToolbarPens[13].cp_G),Bit32(ToolbarPens[13].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[14]=ni->ni_CT[14].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[14].cp_R),Bit32(ToolbarPens[14].cp_G),Bit32(ToolbarPens[14].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[15]=ni->ni_CT[15].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[15].cp_R),Bit32(ToolbarPens[15].cp_G),Bit32(ToolbarPens[15].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + break; + } + unless(ni->ni_DownButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_DownImage, + GA_RelRight, 1-(IM_WIDTH(gui_DownImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)), + GA_RightBorder,TRUE, + GA_UserData,FN_DrawDown_Image, + GA_ID, 2, + TAG_DONE)) return 1; + unless(ni->ni_UpButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_UpImage, + GA_RelRight, 1-(IM_WIDTH(gui_UpImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)+IM_HEIGHT(gui_UpImage)), + GA_RightBorder,TRUE, + GA_Previous,ni->ni_DownButton, + GA_UserData, FN_DrawUp_Image, + GA_ID, 3, + TAG_DONE)) return 1; + unless(ni->ni_VertProp=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEVERT, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_RelRight, -(IM_WIDTH(gui_SizeImage)-5), + GA_Top, Scr->WBorTop+Scr->Font->ta_YSize+1+1, + GA_Width, IM_WIDTH(gui_SizeImage)-2-2-4, + GA_RelHeight, -(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_UpImage)+IM_HEIGHT(gui_DownImage)+Scr->WBorTop+Scr->Font->ta_YSize+1+1+1), + GA_RightBorder, TRUE, + GA_Previous,ni->ni_UpButton, + GA_UserData, FN_DrawVert_Image, + GA_ID, 4, + PGA_Top, 0, + PGA_Total, 1, + PGA_Visible, 1, + TAG_DONE)) return 1; + unless(ni->ni_LeftButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_LeftImage, + GA_RelRight, 1-(IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_SizeImage)+IM_WIDTH(gui_RightImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_LeftImage)), + GA_BottomBorder,TRUE, + GA_Previous,ni->ni_VertProp, + GA_UserData, FN_DrawLeft_Image, + GA_ID, 5, + TAG_DONE)) return 1; + unless(ni->ni_RightButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_RightImage, + GA_RelRight, 1-(IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_RightImage)), + GA_BottomBorder,TRUE, + GA_Previous,ni->ni_LeftButton, + GA_UserData, FN_DrawRight_Image, + GA_ID, 6, + TAG_DONE)) return 1; + unless(ni->ni_HorizProp=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEHORIZ, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_Left, 3, + GA_RelBottom, -(IM_HEIGHT(gui_SizeImage)-3), + GA_RelWidth, -(4+IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)+1), + GA_Height, IM_HEIGHT(gui_SizeImage)-4, + GA_BottomBorder, TRUE, + GA_Previous,ni->ni_RightButton, + GA_UserData, FN_DrawHoriz_Image, + GA_ID, 7, + PGA_Top, 0, + PGA_Total, 1, + PGA_Visible, 1, + TAG_DONE)) return 1; + + if(!(ni->ni_Window=OpenWindowTags(NULL, + WA_Title, ni->ni_Label, + WA_CustomScreen, Scr, + TAG_MORE, EditImageWTags))) return GTBERR_OPENWINDOW; + + SetWindowPointer(ni->ni_Window,WA_Pointer,DrawPtr,TAG_DONE); + + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_SIZEZOOM) + { + z=min(ni->ni_Window->Width-ni->ni_Window->BorderLeft-ni->ni_Window->BorderRight,ni->ni_Window->Height-ni->ni_Window->BorderTop-ni->ni_Window->BorderBottom); + if(z==ni->ni_Window->Width-ni->ni_Window->BorderLeft-ni->ni_Window->BorderRight) + z=z/ni->ni_Width; + else + z=z/ni->ni_Height; + } + else z=7; + + ni->ni_Draw=NewObject(DrawClass,NULL, + ICA_TARGET, ICTARGET_IDCMP, + GA_Left,ni->ni_Window->BorderLeft, + GA_Top,ni->ni_Window->BorderTop, + GA_RelWidth,-ni->ni_Window->BorderLeft-ni->ni_Window->BorderRight, + GA_RelHeight,-ni->ni_Window->BorderTop-ni->ni_Window->BorderBottom, + GA_Previous, ni->ni_HorizProp, + GA_ID,8, + GA_RelVerify,TRUE, + GA_Immediate,TRUE, + GA_UserData, FN_DrawDraw_Image, + GA_FollowMouse,TRUE, + DRAW_Zoom,z<2?1:z-(GUI.gui_GridShow?1:0), + DRAW_Grid,z<2?FALSE:GUI.gui_GridShow, + DRAW_BitMap,ni->ni_BitMap, + DRAW_Palette,(ULONG)ni->ni_CT, + DRAW_Width,ni->ni_Width, + DRAW_Border,TRUE, + DRAW_PointX,ni->ni_PointX, + DRAW_PointY,ni->ni_PointY, + DRAW_ShowPoint,(ni->ni_Type==IMTYPE_POINTER)?TRUE:FALSE, + TAG_DONE); + +/* ni->ni_Preview=NewObject(DrawClass,NULL, + GA_RelRight,-ni->ni_Window->BorderRight-33-4, + GA_Top,ni->ni_Window->BorderTop+4, + GA_Width,34, + GA_Height,34, + GA_Previous, ni->ni_Draw, + GA_ID,9, + DRAW_Zoom,1, + DRAW_Grid,FALSE, + DRAW_BitMap,ni->ni_BitMap, + DRAW_Palette,(ULONG)ni->ni_CT, + DRAW_Border,TRUE, + DRAW_ReadOnly,TRUE, + TAG_DONE); +*/ + + AddGList(ni->ni_Window,(struct Gadget *)ni->ni_DownButton,-1,-1,NULL); + RefreshGList((struct Gadget *)ni->ni_DownButton,ni->ni_Window,NULL,-1); + + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Left,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Width, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Top,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Height, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + ni->ni_Window->UserPort=ProjectMsgPort; + ni->ni_Window->UserData=(BYTE *)o; + ModifyIDCMP(ni->ni_Window,IDCMP_IDCMPUPDATE|IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_GADGETUP|IDCMP_GADGETDOWN|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_ACTIVEWINDOW|IDCMP_MENUVERIFY); + SetMenuStrip(ni->ni_Window,MainMenus); + piRenderObject(o); + } + else + ActivateWindow(ni->ni_Window); + return GTBERR_OK; +} + +ULONG DELETE_Image(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Image *ni; + ULONG x; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + + if(ni->ni_Window) + { + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + for(x=0;x<(2<<(ni->ni_Depth-1));x++) + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[x].cp_I); + break; + case IMTYPE_TOOLBAR: + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[1].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[2].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[3].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[4].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[5].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[6].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[7].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[8].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[9].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[10].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[11].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[12].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[13].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[14].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[15].cp_I); + break; + } + ClearMenuStrip(ni->ni_Window); + if(ni->ni_Draw) + { + GetAttr(DRAW_PointX,ni->ni_Draw,&x); ni->ni_PointX=(UWORD)x; + GetAttr(DRAW_PointY,ni->ni_Draw,&x); ni->ni_PointY=(UWORD)x; + RemoveGList(ni->ni_Window,(struct Gadget *)ni->ni_DownButton,-1); + if(ni->ni_UpButton) DisposeObject(ni->ni_UpButton); + if(ni->ni_DownButton) DisposeObject(ni->ni_DownButton); + if(ni->ni_VertProp) DisposeObject(ni->ni_VertProp); + if(ni->ni_LeftButton) DisposeObject(ni->ni_LeftButton); + if(ni->ni_RightButton) DisposeObject(ni->ni_RightButton); + if(ni->ni_HorizProp) DisposeObject(ni->ni_HorizProp); + if(ni->ni_Draw) DisposeObject(ni->ni_Draw); +// if(ni->ni_Preview) DisposeObject(ni->ni_Preview); + } + if(ni->ni_Window) CloseWindowSafely(ni->ni_Window); ni->ni_Window=NULL; + } + return TRUE; +} + +ULONG SET_Image(piClass *cl,piObject *o,struct piSet *msg) +{ +// struct TagItem *t; + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + +// if(t=FindTagItem(OBJ_Select,msg->Tags)) nf->nf_Selected=t->ti_Data; + return TRUE; +} + +ULONG GET_Image(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Image *ni=(struct Node_Image *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case OBJ_Node: *(msg->TagData)=(ULONG)ni; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)ni->ni_Pages; return TRUE; + default: return FALSE; + } +} + +ULONG READ_Image(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,a; + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + ReadChunkBytes(msg->IFFh,(APTR)ni->ni_Label,SIZE(Node_Image,ni_Label)); + if(ni->ni_BitMap) FreeBitMap(ni->ni_BitMap); + if(ni->ni_BitMap=AllocBitMap(ni->ni_Width,ni->ni_Height,ni->ni_Depth,BMF_CLEAR,NULL)) + { + if(ni->ni_Depth<9) // planar bitmap + { + for(a=0;ani_Depth;a++) + ReadChunkBytes(msg->IFFh,(APTR)ni->ni_BitMap->Planes[a],GetBitMapAttr(ni->ni_BitMap,BMA_WIDTH)*ni->ni_Height/8); + } + else // chunky bitmap + { + // can't load + } + } + if(ni->ni_Type==IMTYPE_NORMAL) + { + if(ni->ni_CT) MyFreeVec(ni->ni_CT); + if(ni->ni_CT=MyAllocVec(sizeof(struct ColorPalette)*(2<<(ni->ni_Depth-1)),MEMF_ANY)) + { + ReadChunkBytes(msg->IFFh,(APTR)ni->ni_CT,sizeof(struct ColorPalette)*(2<<(ni->ni_Depth-1))); + } + if(ni->ni_Pens) MyFreeVec(ni->ni_Pens); + ni->ni_Pens=MyAllocVec(sizeof(UBYTE)*(2<<(ni->ni_Depth-1)),MEMF_ANY); + for(a=0;a<(2<<(ni->ni_Depth-1));a++) ni->ni_Pens[a]=ni->ni_CT[a].cp_I=-1; + } + return (ULONG)error; +} + +ULONG WRITE_Image(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,a; + struct Node_Image *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + if(error=PushChunk(msg->IFFh,NULL,ID_IMGE,IFFSIZE_UNKNOWN)) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)ni->ni_Label,SIZE(Node_Image,ni_Label)); + if(ni->ni_Depth<9) // planar bitmap + { + for(a=0;ani_Depth;a++) + WriteChunkBytes(msg->IFFh,(APTR)ni->ni_BitMap->Planes[a],GetBitMapAttr(ni->ni_BitMap,BMA_WIDTH)*ni->ni_Height/8); + } + else // chunky bitmap + { + // can't save + } + if(ni->ni_Type==IMTYPE_NORMAL) + WriteChunkBytes(msg->IFFh,(APTR)ni->ni_CT,sizeof(struct ColorPalette)*(2<<(ni->ni_Depth-1))); + + if(error=PopChunk(msg->IFFh)) return (ULONG)error; + return (ULONG)error; +} + +/****************************************************************************/ + +void DisposeAllImages() +{ + piObject *obj; + + while(obj=(piObject *)RemTail(List(&GUI.gui_List_Image))) piDisposeObject(obj); +} + +void DeleteAllImages() +{ + piObject *obj; + + for(obj=(piObject *)GetHead(&GUI.gui_List_Image);GetSucc(obj);obj=(piObject *)GetSucc(obj)) piCloseWindow(obj); +} + +/****************************************************************************/ + +int FN_MouseButtons_EditImage(void) +{ + int (*func)(); + BOOL running=TRUE; + struct Node_Image *ni; + + switch(EditMsg.Code) + { + case MENUDOWN: + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + func=(void *) PM_OpenPopupMenu(ni->ni_Window,PM_Menu,PM_ObjMenu,PM_Code, EditMsg.Code, TAG_DONE); + if(func) + { + running = func(); + if(running > 1) return running; + } + break; + } + return 1; +} + +int FN_MouseMove_EditImage(void) +{ + return 1; +} + +int FN_MenuVerify_EditImage(void) +{ + return 1; +} + +int FN_CloseWindow_EditImage(void) +{ + piCloseWindow(CurrentImage); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 0; +} + +int FN_NewSize_EditImage(void) +{ + struct Node_Image *ni; + ULONG v,t,z; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_SIZEZOOM) + { + z=min(ni->ni_Window->Width-ni->ni_Window->BorderLeft-ni->ni_Window->BorderRight,ni->ni_Window->Height-ni->ni_Window->BorderTop-ni->ni_Window->BorderBottom); + if(z==ni->ni_Window->Width-ni->ni_Window->BorderLeft-ni->ni_Window->BorderRight) + z=z/ni->ni_Width; + else + z=z/ni->ni_Height; + if(z<2) + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Left,0,DRAW_Top,0,DRAW_Zoom,z-(GUI.gui_GridShow?1:0),DRAW_Grid,GUI.gui_GridShow,TAG_DONE); + else + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_Left,0,DRAW_Top,0,DRAW_Zoom,1,DRAW_Grid,FALSE, TAG_DONE); + } + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Left,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Top,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL, PGA_Top, t, PGA_Visible, v, TAG_DONE); + return 1; +} + +int FN_IDCMPUpdate_EditImage(void) +{ + switch(GetTagData(GA_ID,0,(struct TagItem *)EditMsg.IAddress)) + { + case 2: FN_DrawDown_Image(); break; + case 3: FN_DrawUp_Image(); break; + case 4: FN_DrawVert_Image(); break; + case 5: FN_DrawLeft_Image(); break; + case 6: FN_DrawRight_Image(); break; + case 7: FN_DrawHoriz_Image(); break; + case 8: FN_DrawDraw_Image(); break; + } + return 1; +} + +int FN_PGPI_LABEL_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGPI_TYPE_Clicked(void) +{ + struct Node_Image *ni; + struct Window *PropsWnd=NULL; + struct BitMap *newbm; + ULONG active=0,v,t,x; + UWORD ow,oh,od,ot; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + ot=ni->ni_Type; + ow=ni->ni_Width; + oh=ni->ni_Height; + od=ni->ni_Depth; + + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + for(x=0;x<(2<<(ni->ni_Depth-1));x++) + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[x].cp_I); + break; + case IMTYPE_TOOLBAR: + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[1].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[2].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[3].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[4].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[5].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[6].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[7].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[8].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[9].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[10].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[11].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[12].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[13].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[14].cp_I); + ReleasePen(Scr->ViewPort.ColorMap,ni->ni_CT[15].cp_I); + break; + } + + ni->ni_Type=PropertiesMsg.Code; + + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + for(x=0;x<(2<<(ni->ni_Depth-1));x++) + ni->ni_Pens[x]=ni->ni_CT[x].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ni->ni_CT[x].cp_R),Bit32(ni->ni_CT[x].cp_G),Bit32(ni->ni_CT[x].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + break; + case IMTYPE_POINTER: + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[0].cp_I,1,&ni->ni_CT[0].cp_R); ni->ni_Pens[0]=ni->ni_CT[0].cp_I=PointerPens[0].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[1].cp_I,1,&ni->ni_CT[1].cp_R); ni->ni_Pens[1]=ni->ni_CT[1].cp_I=PointerPens[1].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[2].cp_I,1,&ni->ni_CT[2].cp_R); ni->ni_Pens[2]=ni->ni_CT[2].cp_I=PointerPens[2].cp_I; + GetRGB32(Scr->ViewPort.ColorMap,PointerPens[3].cp_I,1,&ni->ni_CT[3].cp_R); ni->ni_Pens[3]=ni->ni_CT[3].cp_I=PointerPens[3].cp_I; + break; + case IMTYPE_TOOLBAR: + ni->ni_Pens[0]=ni->ni_CT[0].cp_I=DrawInfo->dri_Pens[BACKGROUNDPEN]; + ni->ni_Pens[1]=ni->ni_CT[1].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[1].cp_R),Bit32(ToolbarPens[1].cp_G),Bit32(ToolbarPens[1].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[2]=ni->ni_CT[2].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[2].cp_R),Bit32(ToolbarPens[2].cp_G),Bit32(ToolbarPens[2].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[3]=ni->ni_CT[3].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[3].cp_R),Bit32(ToolbarPens[3].cp_G),Bit32(ToolbarPens[3].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[4]=ni->ni_CT[4].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[4].cp_R),Bit32(ToolbarPens[4].cp_G),Bit32(ToolbarPens[4].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[5]=ni->ni_CT[5].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[5].cp_R),Bit32(ToolbarPens[5].cp_G),Bit32(ToolbarPens[5].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[6]=ni->ni_CT[6].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[6].cp_R),Bit32(ToolbarPens[6].cp_G),Bit32(ToolbarPens[6].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[7]=ni->ni_CT[7].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[7].cp_R),Bit32(ToolbarPens[7].cp_G),Bit32(ToolbarPens[7].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[8]=ni->ni_CT[8].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[8].cp_R),Bit32(ToolbarPens[8].cp_G),Bit32(ToolbarPens[8].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[9]=ni->ni_CT[9].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[9].cp_R),Bit32(ToolbarPens[9].cp_G),Bit32(ToolbarPens[9].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[10]=ni->ni_CT[10].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[10].cp_R),Bit32(ToolbarPens[10].cp_G),Bit32(ToolbarPens[10].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[11]=ni->ni_CT[11].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[11].cp_R),Bit32(ToolbarPens[11].cp_G),Bit32(ToolbarPens[11].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[12]=ni->ni_CT[12].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[12].cp_R),Bit32(ToolbarPens[12].cp_G),Bit32(ToolbarPens[12].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[13]=ni->ni_CT[13].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[13].cp_R),Bit32(ToolbarPens[13].cp_G),Bit32(ToolbarPens[13].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[14]=ni->ni_CT[14].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[14].cp_R),Bit32(ToolbarPens[14].cp_G),Bit32(ToolbarPens[14].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + ni->ni_Pens[15]=ni->ni_CT[15].cp_I=ObtainBestPen(Scr->ViewPort.ColorMap,Bit32(ToolbarPens[15].cp_R),Bit32(ToolbarPens[15].cp_G),Bit32(ToolbarPens[15].cp_B),OBP_Precision,PRECISION_IMAGE,TAG_DONE); + break; + } + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + switch(ni->ni_Type) + { + case IMTYPE_NORMAL: + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,FALSE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,TRUE); + break; + case IMTYPE_TOOLBAR: + ni->ni_Width=20; + ni->ni_Height=20; + ni->ni_Depth=4; + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,TRUE); + break; + case IMTYPE_POINTER: + ni->ni_Width=32; + ni->ni_Height=32; + ni->ni_Depth=2; + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_WIDTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_DEPTH],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_PALETTE],PropsWnd,TRUE); + DisableGadget(PGPI_GeneralGadgets[GD_PGPI_SETPOINT],PropsWnd,FALSE); + break; + } + if(newbm=AllocBitMap(ni->ni_Width,ni->ni_Height,ni->ni_Depth,BMF_CLEAR,NULL)) + { + if(ni->ni_BitMap) + { + BltBitMap(ni->ni_BitMap,0,0,newbm,0,0,(ni->ni_Widthni_Width:ow,(ni->ni_Heightni_Height:oh,0xc0,0xff,NULL); + FreeBitMap(ni->ni_BitMap); + } + ni->ni_BitMap=newbm; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_BitMap,ni->ni_BitMap,DRAW_Palette,(ULONG)ni->ni_CT,DRAW_Width,ni->ni_Width,TAG_DONE); + RefreshGList((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,1); + + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Left,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Width, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Top,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Height, PGA_Top, t, PGA_Visible, v, TAG_DONE); + } + else + { + ni->ni_Width=ow; + ni->ni_Height=oh; + ni->ni_Depth=od; + ni->ni_Type=ot; + SetCycle(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_TYPE],ni->ni_Type); + } + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_WIDTH],ni->ni_Width); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_HEIGHT],ni->ni_Height); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_DEPTH],ni->ni_Depth); + PropertiesChanged=TRUE; + FN_ActiveWindow_EditImage(); + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGPI_WIDTH_Clicked(void) +{ + return FN_PGPI_DEPTH_Clicked(); +} + +int FN_PGPI_HEIGHT_Clicked(void) +{ + return FN_PGPI_DEPTH_Clicked(); +} + +int FN_PGPI_DEPTH_Clicked(void) +{ + struct Node_Image *ni; + struct Window *PropsWnd=NULL; + struct BitMap *newbm; + ULONG active=0,v,t; + UWORD ow,oh,od; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + + ow=ni->ni_Width; + oh=ni->ni_Height; + od=ni->ni_Depth; + + ni->ni_Width=GetInteger(PGPI_GeneralGadgets[GD_PGPI_WIDTH]); + ni->ni_Height=GetInteger(PGPI_GeneralGadgets[GD_PGPI_HEIGHT]); + ni->ni_Depth=GetInteger(PGPI_GeneralGadgets[GD_PGPI_DEPTH]); + + if(newbm=AllocBitMap(ni->ni_Width,ni->ni_Height,ni->ni_Depth,BMF_CLEAR,NULL)) + { + if(ni->ni_BitMap) + { + BltBitMap(ni->ni_BitMap,0,0,newbm,0,0,(ni->ni_Widthni_Width:ow,(ni->ni_Heightni_Height:oh,0xc0,0xff,NULL); + FreeBitMap(ni->ni_BitMap); + } + ni->ni_BitMap=newbm; + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_BitMap,ni->ni_BitMap,DRAW_Palette,(ULONG)ni->ni_CT,DRAW_Width,ni->ni_Width,TAG_DONE); + RefreshGList((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,1); + + GetAttr(DRAW_VisibleX,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Left,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_HorizProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Width, PGA_Top, t, PGA_Visible, v, TAG_DONE); + + GetAttr(DRAW_VisibleY,ni->ni_Draw,(ULONG *)&v); + GetAttr(DRAW_Top,ni->ni_Draw,(ULONG *)&t); + SetGadgetAttrs((struct Gadget *)ni->ni_VertProp,ni->ni_Window,NULL, PGA_Total, ni->ni_Height, PGA_Top, t, PGA_Visible, v, TAG_DONE); + } + else + { + ni->ni_Width=ow; + ni->ni_Height=oh; + ni->ni_Depth=od; + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_WIDTH],ni->ni_Width); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_HEIGHT],ni->ni_Height); + SetInteger(PropsWnd,PGPI_GeneralGadgets[GD_PGPI_DEPTH],ni->ni_Depth); + } + PropertiesChanged=TRUE; + FN_ActiveWindow_EditImage(); + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGPI_SETPOINT_Clicked(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_SetPoint,TRUE,TAG_DONE); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +UBYTE SelectedPen; +ULONG SelectedPenGuns[3]; +struct Node_Image *CurrentImageNode; + +int FN_PGPI_PALETTE_Clicked(void) +{ + struct Node_Image *ni; + int run=1; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + if(!OpenWindow_EditPalette()) + { + CurrentImageNode=ni; + while(run) + { + Wait(1L<UserPort->mp_SigBit); + run=HandleIDCMP_EditPalette(); + } + CloseWindow_EditPalette(); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PAL_PALETTE_Clicked(void) +{ + SelectedPen=EditPaletteMsg.Code; + GetRGB32(Scr->ViewPort.ColorMap,SelectedPen,1,SelectedPenGuns); + CurrentImageNode->ni_CT[SelectedPen].cp_I=SelectedPen; + CurrentImageNode->ni_CT[SelectedPen].cp_R=SelectedPenGuns[0]; + CurrentImageNode->ni_CT[SelectedPen].cp_G=SelectedPenGuns[1]; + CurrentImageNode->ni_CT[SelectedPen].cp_B=SelectedPenGuns[2]; + GT_SetGadgetAttrs(EditPaletteGadgets[GD_PAL_RED],EditPaletteWnd,NULL,GTSL_Level,Bit8(CurrentImageNode->ni_CT[SelectedPen].cp_R)); + GT_SetGadgetAttrs(EditPaletteGadgets[GD_PAL_GREEN],EditPaletteWnd,NULL,GTSL_Level,Bit8(CurrentImageNode->ni_CT[SelectedPen].cp_G)); + GT_SetGadgetAttrs(EditPaletteGadgets[GD_PAL_BLUE],EditPaletteWnd,NULL,GTSL_Level,Bit8(CurrentImageNode->ni_CT[SelectedPen].cp_B)); + return 1; +} + +int FN_PAL_RED_Clicked(void) +{ + SelectedPenGuns[0]=EditPaletteMsg.Code; + SetRGB32(&Scr->ViewPort,SelectedPen,Bit32(SelectedPenGuns[0]),Bit32(SelectedPenGuns[1]),Bit32(SelectedPenGuns[2])); + CurrentImageNode->ni_CT[SelectedPen].cp_I=SelectedPen; + CurrentImageNode->ni_CT[SelectedPen].cp_R=SelectedPenGuns[0]; + return 1; +} + +int FN_PAL_GREEN_Clicked(void) +{ + SelectedPenGuns[1]=EditPaletteMsg.Code; + SetRGB32(&Scr->ViewPort,SelectedPen,Bit32(SelectedPenGuns[0]),Bit32(SelectedPenGuns[1]),Bit32(SelectedPenGuns[2])); + CurrentImageNode->ni_CT[SelectedPen].cp_I=SelectedPen; + CurrentImageNode->ni_CT[SelectedPen].cp_G=SelectedPenGuns[1]; + return 1; +} + +int FN_PAL_BLUE_Clicked(void) +{ + SelectedPenGuns[2]=EditPaletteMsg.Code; + SetRGB32(&Scr->ViewPort,SelectedPen,Bit32(SelectedPenGuns[0]),Bit32(SelectedPenGuns[1]),Bit32(SelectedPenGuns[2])); + CurrentImageNode->ni_CT[SelectedPen].cp_I=SelectedPen; + CurrentImageNode->ni_CT[SelectedPen].cp_B=SelectedPenGuns[2]; + return 1; +} + +int FN_PAL_OK_Clicked(void) +{ + return 0; +} + +int FN_PAL_CANCEL_Clicked(void) +{ + return 0; +} + +int FN_PAL_GSLIDER_Clicked(void) +{ + return 1; +} + +int FN_PAL_COLORWHEEL_Clicked(void) +{ + return 1; +} + +ULONG ToolColors=0; + +int FN_ActiveWindow_EditImage(void) +{ + struct Node_Image *ni; + struct TagItem *ti; + ULONG color; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(ToolColors!=ni->ni_Depth)// || (!TB_PointerWnd)) + { + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + if(ti=FindTagItem(GTPA_Depth,(struct TagItem *)&TB_PointerGTags[2])) + ti->ti_Data=ni->ni_Depth; + if(!TB_PointerWnd) OpenWindow_TB_Pointer(); + ToolColors=ni->ni_Depth; + } + SetWndSignals(); + + GetAttr(DRAW_ActualPen,ni->ni_Draw,(ULONG *)&color); + GT_SetGadgetAttrs(TB_PointerGadgets[GD_TBP_PALETTE],TB_PointerWnd,NULL,GTPA_ColorOffset,0,GTPA_ColorTable,ni->ni_Pens,GTPA_Color,ni->ni_Pens[color],TAG_DONE); + + PropertiesMode=PM_IMAGE; + RefreshProperties(); + return 1; +} + +int FN_IDCMPUpdate_EditPalette(void) +{ + return 1; +} diff --git a/GadToolsBox/image.h b/GadToolsBox/image.h new file mode 100755 index 0000000..45908c7 --- /dev/null +++ b/GadToolsBox/image.h @@ -0,0 +1,69 @@ +#ifndef GTB_IMAGE_H +#define GTB_IMAGE_H +/* +** Image +*/ + +#define ID_IMGE MAKE_ID('I','M','G','E') // Image Chunk +#define ID_PNTR MAKE_ID('P','N','T','R') // Image Chunk + +#define IMTYPE_NORMAL 0 +#define IMTYPE_TOOLBAR 1 +#define IMTYPE_POINTER 2 + +struct Node_Pointer +{ + ULONG ni_ID; + struct Window *ni_Window; + struct Page *ni_Pages; + Object *ni_Draw,*ni_Preview,*ni_UpButton,*ni_DownButton,*ni_VertProp,*ni_LeftButton,*ni_RightButton,*ni_HorizProp; + LONG ni_Top,ni_Left; + struct BitMap *ni_BitMap; + + UBYTE ni_Label[40]; + UWORD ni_PointX,ni_PointY; + ULONG ni_Flags; + UBYTE ni_ImageData[32*32/8*2]; +}; + +struct Node_Image +{ + ULONG ni_ID; + struct Window *ni_Window; + struct Page *ni_Pages; + Object *ni_Draw,*ni_Preview,*ni_UpButton,*ni_DownButton,*ni_VertProp,*ni_LeftButton,*ni_RightButton,*ni_HorizProp; + LONG ni_Top,ni_Left; + struct BitMap *ni_BitMap; + struct ColorPalette *ni_CT; + UBYTE *ni_Pens; + + UBYTE ni_Label[40]; + UBYTE ni_Type,ni_Depth; + UWORD ni_Width,ni_Height; + UWORD ni_PointX,ni_PointY; + ULONG ni_Flags; +}; + +ULONG Dispatcher_Image(piClass *,piObject *,Msg); +ULONG NEW_Image(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Image(piClass *,piObject *,Msg ); +ULONG CREATE_Image(piClass *,piObject *,Msg ); +ULONG DELETE_Image(piClass *,piObject *,Msg ); +ULONG RENDER_Image(piClass *,piObject *,Msg ); +ULONG SET_Image(piClass *,piObject *,struct piSet *); +ULONG GET_Image(piClass *,piObject *,struct piGet *); +ULONG READ_Image(piClass *,piObject *,struct piIO *); +ULONG WRITE_Image(piClass *,piObject *,struct piIO *); +ULONG INIT_Image(piClass *,piObject *,Msg ); +ULONG APPLY_Image(piClass *,piObject *,Msg ); +ULONG CUT_Image(piClass *,piObject *,Msg ); +ULONG COPY_Image(piClass *,piObject *,Msg ); + +void DisposeAllImages(void); +void DeleteAllImages(void); +int FN_MouseButtons_EditImage(void); +int FN_MouseMove_EditImage(void); +int FN_CloseWindow_EditImage(void); +int FN_ChangeWindow_EditImage(void); + +#endif /* GTB_Image_H */ diff --git a/GadToolsBox/includes.h b/GadToolsBox/includes.h new file mode 100755 index 0000000..1b05f68 --- /dev/null +++ b/GadToolsBox/includes.h @@ -0,0 +1,76 @@ +#ifndef GTB_INCLUDES_H +#define GTB_INCLUDES_H +/* +** GadToolsBox v3 - Includes +*/ + +#define INTUI_V36_NAMES_ONLY + +/* Standard C includes */ + +#include +#include +#include + +/* Amiga Shared Library includes */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Gadgets includes */ + +#include +#include +#include +#include +#include +#include"proto/smartbitmap.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Local includes */ + +#include"amigaguide.h" +#include"memory.h" +#include"objects.h" +#include"gadget.h" +#include"frame.h" +#include"defines.h" +#include"screen.h" +#include"window.h" +#include"menu.h" +#include"inout.h" +#include"gadtools.h" +#include"main.h" +#include"Prog:Thom/GadToolsBox/string.h" +#include"version.h" +#include"image.h" +#include"draw.h" +#include"gadtools_cat.h" +#include"toolbar.h" + +#endif diff --git a/GadToolsBox/inout.c b/GadToolsBox/inout.c new file mode 100755 index 0000000..9b93627 --- /dev/null +++ b/GadToolsBox/inout.c @@ -0,0 +1,788 @@ +/* +** GadToolsBox v3 - Load/Save fuctions +*/ + +#include"includes.h" + +/* +** Defines +*/ + +#define IFF_Error(num) \ + { \ + printf("IFFError #%d",num); \ + goto skip; \ + } + + +/* +** Functions +*/ + +void SaveGUI(STRPTR name) +{ + struct IFFHandle *iffh; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_NEWFILE)) + { + SetGadgetAttrs(GTBSem.gs_Progress,GTBSem.gs_Window,NULL,PROG_MaxVal,10,TAG_DONE); + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_WRITE)) + { + unless(PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + SetWorkingProgress(0); + if(error=WriteGUI(iffh)) IFF_Error(error); + SetWorkingProgress(1); + piWriteObject(CurrentVersion,iffh); + SetWorkingProgress(2); + piWriteObject(CurrentScreen,iffh); + SetWorkingProgress(3); + piWriteWindow(iffh); + SetWorkingProgress(5); + piWriteMenu(iffh); + SetWorkingProgress(6); + piWriteObject(CurrentString,iffh); + SetWorkingProgress(8); + piWriteImage(iffh); + SetWorkingProgress(10); + if(error=PopChunk(iffh)) IFF_Error(error); + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +void LoadGUI(STRPTR name) +{ + struct IFFHandle *iffh; + struct ContextNode *cn; + LONG error=0,a; + piObject *wo,*mo=NULL; + struct GTB_Version gtbver; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_OLDFILE)) + { + Seek(iffh->iff_Stream,0,OFFSET_END); + SetGadgetAttrs(GTBSem.gs_Progress,GTBSem.gs_Window,NULL,PROG_MaxVal,Seek(iffh->iff_Stream,0,OFFSET_BEGINNING),TAG_DONE); + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_READ)) + { + /* GadToolsBox v3 FORMs */ + if(error=StopChunk(iffh,ID_GTBX,ID_GGUI)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_WIND)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_SCRN)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_FRME)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_LSTR)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_MENU)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_SVER)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_IMGE)) IFF_Error(error); + if(error=StopChunk(iffh,ID_GTBX,ID_PNTR)) IFF_Error(error); + for(a=0;aiff_Stream,0,OFFSET_CURRENT)); + error=ParseIFF(iffh,IFFPARSE_SCAN); + if(error==IFFERR_EOC) continue; /* enter next context */ + else if(error) break; + if(cn=CurrentChunk(iffh)) + { + switch(cn->cn_Type) + { + case ID_GTBX: + switch(cn->cn_ID) + { + case ID_GGUI: + ReadGUI(iffh); + break; + case ID_VERS: + ReadChunkBytes(iffh,(APTR)>bver,sizeof(struct GTB_Version)); + if(gtbver.vr_Version>VER_VERSION || (gtbver.vr_Revision>VER_REVISION && gtbver.vr_Version>VER_VERSION)) + { + RequestOk(GetCatString(MSG_ERROR),GetCatString(MSG_YOUNEEDNEWERVERSION),GetCatString(MSG_OK),gtbver.vr_Version,gtbver.vr_Revision); + goto skip; + } + break; + case ID_WIND: + piReadWindow(iffh,&wo); + break; + case ID_FRME: + if(wo) piReadFrame(iffh,wo); + break; + case ID_MENU: + piReadMenu(iffh); + break; + case ID_IMGE: + piReadImage(iffh); + break; + case ID_PNTR: + piReadPointer(iffh); + break; + case ID_SCRN: + piReadObject(CurrentScreen,iffh); + break; + case ID_SVER: + piReadObject(CurrentVersion,iffh); + break; + case ID_LSTR: + piReadObject(CurrentString,iffh); + break; + case BUTTON_ID: + case CHECKBOX_ID: + case COLORWHEEL_ID: + case CYCLE_ID: + case DATATYPE_ID: + case GRADIENTSLIDER_ID: + case INTEGER_ID: + case LISTVIEW_ID: + case MX_ID: + case NUMBER_ID: + case PAGE_ID: + case PALETTE_ID: + case POPUPMENU_ID: + case PROGRESS_ID: + case SCROLLER_ID: + case SLIDER_ID: + case STRING_ID: + case TAPEDECK_ID: + case TEXT_ID: + case TEXTFIELD_ID: + case TREEVIEW_ID: + if(wo) piReadGadget(iffh,wo); + break; + } + break; + case ID_GXUI: + if(cn->cn_ID==ID_GGUI) gtb2_ReadGUI(iffh); + break; + case ID_GXWD: + if(cn->cn_ID==ID_WDDA) gtb2_piReadWindow(iffh,&wo); + mo=NULL; + break; + case ID_GXGA: + if(cn->cn_ID==ID_GADA && wo) gtb2_piReadGadget(iffh,wo); + break; + case ID_GXBX: + if(cn->cn_ID==ID_BBOX && wo) gtb2_piReadFrame(iffh,wo); + break; + case ID_GXMN: + if(cn->cn_ID==ID_MEDA) gtb2_piReadMenu(iffh,mo,wo,&mo); + break; + } + } + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +struct GUI_Store +{ + UWORD gs_Grid[2]; + BOOL gs_GridOn,gs_GridShow; + UBYTE gs_Mode; +}; + +LONG WriteGUI(struct IFFHandle *iffh) +{ + LONG error=0; + struct GUI_Store gui; + struct GTB_Version gtbver={3,0,NULL,NULL}; + + gui.gs_Mode=GUI.gui_Mode; + gui.gs_GridOn=GUI.gui_GridOn; + gui.gs_GridShow=GUI.gui_GridShow; + gui.gs_Grid[0]=GUI.gui_Grid[0]; + gui.gs_Grid[1]=GUI.gui_Grid[1]; + + if(error=PushChunk(iffh,NULL,ID_GGUI,sizeof(struct GUI_Store))) return error; + WriteChunkBytes(iffh,(APTR)&gui,sizeof(struct GUI_Store)); + if(error=PopChunk(iffh)) return error; + + if(error=PushChunk(iffh,NULL,ID_VERS,sizeof(struct GTB_Version))) return error; + WriteChunkBytes(iffh,(APTR)>bver,sizeof(struct GTB_Version)); + if(error=PopChunk(iffh)) return error; + return 0; +} + +LONG ReadGUI(struct IFFHandle *iffh) +{ + struct GUI_Store gui; + + ReadChunkBytes(iffh,(APTR)&gui,sizeof(struct GUI_Store)); + GUI.gui_Mode=gui.gs_Mode; + GUI.gui_GridOn=gui.gs_GridOn; + GUI.gui_GridShow=gui.gs_GridShow; + GUI.gui_Grid[0]=gui.gs_Grid[0]; + GUI.gui_Grid[1]=gui.gs_Grid[1]; + + return 0; +} + +LONG gtb2_ReadGUI(struct IFFHandle *iffh) +{ + GUIDATA gd; + struct Node_Screen *ns; + + ReadChunkBytes(iffh,(APTR)&gd,sizeof(GUIDATA)); + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + GUI.gui_Grid[0]=gd.gui_GridX; + GUI.gui_Grid[1]=gd.gui_GridY; + +// GlobalOffX=gd.gui_Font + + ns->ns_Width=gd.gui_Width; + ns->ns_Height=gd.gui_Height; + ns->ns_Depth=gd.gui_Depth; + ns->ns_DisplayID=gd.gui_DisplayID; + strncpy(ns->ns_FontName,gd.gui_FontName,30); + strcpy(ns->ns_Title,gd.gui_ScreenTitle); + if(gd.gui_Font.ta_YSize) ns->ns_FontSize=gd.gui_Font.ta_YSize; + else ns->ns_FontSize=8; + + if(EditFontTF) CloseFont(EditFontTF); + EditFontTA.ta_Name=ns->ns_FontName; + EditFontTA.ta_YSize=ns->ns_FontSize; + EditFontTA.ta_Style=FS_NORMAL; + EditFontTA.ta_Flags=FPF_DISKFONT|FPF_DESIGNED; + EditFontTF=OpenDiskFont(&EditFontTA); + + GetFlag(gd.gui_Flags0,GU0_AUTOSCROLL) SetFlag(ns->ns_MyFlags,MYSC_AutoScroll); else ClearFlag(ns->ns_MyFlags,MYSC_AutoScroll); + GetFlag(gd.gui_Flags0,GU0_WORKBENCH) ns->ns_Type=TYPE_WORKBENCH; + GetFlag(gd.gui_Flags0,GU0_PUBLIC) ns->ns_Type=TYPE_PUBLICSCREEN; + GetFlag(gd.gui_Flags0,GU0_CUSTOM) ns->ns_Type=TYPE_CUSTOMSCREEN; + return 0; +} + +LONG piReadWindow(struct IFFHandle *iffh,piObject **ro) +{ + piObject *o; + + if(o=piNewObject(piWindowClass,TAG_DONE)) + { + piAddObject(o,NULL); + piReadObject(o,iffh); + } + *ro=o; + return 0; +} + +LONG gtb2_piReadWindow(struct IFFHandle *iffh,piObject **ro) +{ + piObject *o; + WINDOWDATA wd; + struct Node_Window *nw; + + if(o=piNewObject(piWindowClass,TAG_DONE)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + piAddObject(o,NULL); + ReadChunkBytes(iffh,(APTR)&wd,sizeof(WINDOWDATA)); + strcpy(nw->nw_Label,wd.wda_Name); + strcpy(nw->nw_WindowTitle,wd.wda_Title); + strcpy(nw->nw_ScreenTitle,wd.wda_ScreenTitle); + nw->nw_IDCMP=wd.wda_IDCMP; + nw->nw_Flags=wd.wda_WindowFlags|WFLG_NEWLOOKMENUS; + ClearFlag(nw->nw_Flags,WFLG_RMBTRAP); +// ClearFlag(nw->nw_Flags,WFLG_AUTOADJUST); +// ClearFlag(nw->nw_Flags,WFLG_PUBSCREENFALLBACK); +// ClearFlag(nw->nw_Flags,WFLG_NOTIFYDEPTH); + nw->nw_MouseQueue=wd.wda_MouseQueue; + nw->nw_RptQueue=wd.wda_RptQueue; + nw->nw_X=wd.wda_LeftBorder; + nw->nw_Y=wd.wda_TopBorder; + GetFlag(wd.wda_WindowFlags,WDF_INNERWIDTH) + { + SetFlag(nw->nw_MyFlags,MYWA_InnerWidth); + nw->nw_Width=wd.wda_InnerWidth; + } + else + nw->nw_Width=wd.wda_InnerWidth+8; + GetFlag(wd.wda_WindowFlags,WDF_INNERHEIGHT) + { + SetFlag(nw->nw_MyFlags,MYWA_InnerHeight); + nw->nw_Height=wd.wda_InnerHeight; + } + else + nw->nw_Height=wd.wda_InnerHeight+2; + GetFlag(wd.wda_WindowFlags,WDF_ZOOM) SetFlag(nw->nw_MyFlags,MYWA_Zoom); + GetFlag(wd.wda_WindowFlags,WDF_MOUSEQUEUE) SetFlag(nw->nw_MyFlags,MYWA_MouseQueue); + GetFlag(wd.wda_WindowFlags,WDF_RPTQUEUE) SetFlag(nw->nw_MyFlags,MYWA_RptQueue); + GetFlag(wd.wda_WindowFlags,WDF_AUTOADJUST) SetFlag(nw->nw_MyFlags,MYWA_AutoAdjust); + GetFlag(wd.wda_WindowFlags,WDF_FALLBACK) SetFlag(nw->nw_MyFlags,MYWA_PubScreenFallBack); + } + *ro=o; + return 0; +} + +LONG piWriteWindow(struct IFFHandle *iffh) +{ + piObject *o; + LONG error=0; + + if(!IsListEmpty(List(&GUI.gui_List_Window))) + { + for(o=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(o);o=(piObject *)GetSucc(o)) piWriteObject(o,iffh); + } + return error; +} + +LONG piReadGadget(struct IFFHandle *iffh,piObject *wo) +{ + piObject *o; + struct ContextNode *cn; + + if(cn=CurrentChunk(iffh)) + { + if(o=piNewObject(piGadgets[GetGadgetPtr(cn->cn_ID)].Class,TAG_DONE)) + { + piAddObject(o,wo); + piReadObject(o,iffh); + } + } + return 0; +} + +LONG gtb2_piReadGadget(struct IFFHandle *iffh,piObject *wo) +{ + piObject *o; + GADGETDATA gd; + ULONG idkind; + struct Node_Gadget *ng; + struct GadToolsData *gtd; + struct Node_Screen *ns; + + ReadChunkBytes(iffh,(APTR)&gd,sizeof(GADGETDATA)); + switch(gd.gd_Kind) + { + case GENERIC_KIND: idkind=BUTTON_ID; break; + case BUTTON_KIND: idkind=BUTTON_ID; break; + case CHECKBOX_KIND: idkind=CHECKBOX_ID; break; + case INTEGER_KIND: idkind=INTEGER_ID; break; + case LISTVIEW_KIND: idkind=LISTVIEW_ID; break; + case MX_KIND: idkind=MX_ID; break; + case NUMBER_KIND: idkind=NUMBER_ID; break; + case CYCLE_KIND: idkind=CYCLE_ID; break; + case PALETTE_KIND: idkind=PALETTE_ID; break; + case SCROLLER_KIND: idkind=SCROLLER_ID; break; + case SLIDER_KIND: idkind=SLIDER_ID; break; + case STRING_KIND: idkind=STRING_ID; break; + case TEXT_KIND: idkind=TEXT_ID; break; + } + if(o=piNewObject(piGadgets[GetGadgetPtr(idkind)].Class,TAG_DONE)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(o,GAOBJ_NodeData,(ULONG *)>d); + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + piAddObject(o,wo); + ng->ng_X=gd.gd_NewGadget.ng_LeftEdge-4; + ng->ng_Y=gd.gd_NewGadget.ng_TopEdge-ns->ns_FontSize-ns->ns_FontSize/3; + ng->ng_Width=gd.gd_NewGadget.ng_Width-1; + ng->ng_Height=gd.gd_NewGadget.ng_Height-1; + ng->ng_PlugInID=idkind; + ng->ng_Type=gd.gd_NumTags; + strcpy(ng->ng_Label,gd.gd_GadgetLabel); + strcpy(gtd->g_Text,gd.gd_GadgetText); + gtd->g_Flags=gd.gd_NewGadget.ng_Flags; + gtd->g_Kind=gd.gd_Kind; + piReadObject(o,iffh); + ng->ng_Type=GTYPE_GADTOOLS; + } + return 0; +} + +LONG piReadFrame(struct IFFHandle *iffh,piObject *wo) +{ + piObject *o; + + if(o=piNewObject(piFrameClass,TAG_DONE)) + { + piAddObject(o,wo); + piReadObject(o,iffh); + } + return 0; +} + +LONG gtb2_piReadFrame(struct IFFHandle *iffh,piObject *wo) +{ + piObject *o; + BBOXDATA bd; + struct Node_Frame *nf; + struct Node_Screen *ns; + + if(o=piNewObject(piFrameClass,TAG_DONE)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + piAddObject(o,wo); + ReadChunkBytes(iffh,(APTR)&bd,sizeof(BBOXDATA)); + nf->nf_X=bd.bbx_Left-4; + nf->nf_Y=bd.bbx_Top-ns->ns_FontSize-ns->ns_FontSize/3; + nf->nf_Width=bd.bbx_Width-1; + nf->nf_Height=bd.bbx_Height-1; + GetFlag(bd.bbx_Flags,BBF_RECESSED) SetFlag(nf->nf_Flags,MYFR_Recessed); + GetFlag(bd.bbx_Flags,BBF_DROPBOX) nf->nf_FrameType=FTYPE_ICONDROPBOX; else nf->nf_FrameType=FTYPE_BUTTON; + } + return 0; +} + +LONG piReadMenu(struct IFFHandle *iffh) +{ + piObject *o; + + if(o=piNewObject(piMenuClass,TAG_DONE)) + { + piAddObject(o,NULL); + piReadObject(o,iffh); + } + return 0; +} + +LONG gtb2_piReadMenu(struct IFFHandle *iffh,piObject *o,piObject *wo,piObject **ro) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + struct Node_Window *nw; + MENUDATA md; + + if(!o) + { + if(o=piNewObject(piMenuClass,TAG_DONE)) + { + piAddObject(o,NULL); + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + strcpy(nm->nm_Label,nw->nw_Label); + SetFlag(nm->nm_Flags,MYMN_NewLookMenus); + } + } + *ro=o; + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + ReadChunkBytes(iffh,(APTR)&md,sizeof(MENUDATA)); + if(ni=(struct Node_MenuItem *)MyAllocVec(sizeof(struct Node_MenuItem),MEMF_ANY|MEMF_CLEAR)) + { + ni->nm_Node.ln_Name=ni->nm_Title; + AddTail(List(&nm->nm_MenuItem),Node(ni)); + strcpy(ni->nm_Label,md.mda_Label); + strcpy(ni->nm_Title,md.mda_Title); + strcpy(ni->nm_Key,md.mda_ShortCut); + ni->nm_Type=md.mda_NewMenu.nm_Type; + if(!strcmp("NM_BARLABEL",md.mda_Title)) SetFlag(ni->nm_Flags,MYMN_BarLabel); + GetFlag(md.mda_NewMenu.nm_Flags,CHECKIT) SetFlag(ni->nm_Flags,MYMN_Toggle); + GetFlag(md.mda_NewMenu.nm_Flags,CHECKED) SetFlag(ni->nm_Flags,MYMN_Checked); + GetFlag(md.mda_NewMenu.nm_Flags,NM_MENUDISABLED) SetFlag(ni->nm_Flags,MYMN_Disabled); + GetFlag(md.mda_NewMenu.nm_Flags,NM_ITEMDISABLED) SetFlag(ni->nm_Flags,MYMN_Disabled); + if(ni->nm_Type==NM_TITLE) SetFlag(ni->nm_Flags,MYMN_PopUp); + if(ni->nm_Type==NM_SUB && ((struct Node_MenuItem *)ni->nm_Node.ln_Pred)->nm_Type==NM_ITEM) + SetFlag(((struct Node_MenuItem *)ni->nm_Node.ln_Pred)->nm_Flags,MYMN_PopUp); + } + return 0; +} + +LONG piWriteMenu(struct IFFHandle *iffh) +{ + LONG error=0; + piObject *o; + + if(!IsListEmpty(List(&GUI.gui_List_Menu))) + { + for(o=(piObject *)GetHead(&GUI.gui_List_Menu);GetSucc(o);o=(piObject *)GetSucc(o)) piWriteObject(o,iffh); + } + return error; +} + +LONG piReadImage(struct IFFHandle *iffh) +{ + piObject *o; + + if(o=piNewObject(piImageClass,TAG_DONE)) + { + piAddObject(o,NULL); + piReadObject(o,iffh); + } + return 0; +} + +LONG piReadPointer(struct IFFHandle *iffh) +{ + piObject *o; + struct Node_Pointer np; + struct Node_Image *ni; + + if(o=piNewObject(piImageClass,TAG_DONE)) + { + piAddObject(o,NULL); + + piGetAttr(o,OBJ_Node,(ULONG *)&ni); + ReadChunkBytes(iffh,(APTR)np.ni_Label,SIZE(Node_Pointer,ni_Label)); + + CopyMem(&np.ni_ImageData[0],ni->ni_BitMap->Planes[0],32*32/8); + CopyMem(&np.ni_ImageData[32*32/8],ni->ni_BitMap->Planes[1],32*32/8); + strcpy(ni->ni_Label,np.ni_Label); + ni->ni_Width=32; + ni->ni_Height=32; + ni->ni_Depth=2; + ni->ni_Type=IMTYPE_POINTER; + ni->ni_PointX=np.ni_PointX; + ni->ni_PointY=np.ni_PointY; + } + return 0; +} + +LONG piWriteImage(struct IFFHandle *iffh) +{ + LONG error=0; + piObject *o; + + if(!IsListEmpty(List(&GUI.gui_List_Image))) + { + for(o=(piObject *)GetHead(&GUI.gui_List_Image);GetSucc(o);o=(piObject *)GetSucc(o)) piWriteObject(o,iffh); + } + return error; +} + +LONG WriteTagItem(struct IFFHandle *iffh,struct TagItem *t,UBYTE type) +{ + LONG error=0; + struct Node *n; + int a; + ULONG ld; + UWORD wd; + UBYTE bd; + + bd=type; + WriteChunkBytes(iffh,(APTR)&bd,1); + ld=t->ti_Tag; + WriteChunkBytes(iffh,(APTR)&ld,4); + switch(type) + { + case TAGTYPE_NONE: + break; + case TAGTYPE_NUMBER: + ld=t->ti_Data; + WriteChunkBytes(iffh,(APTR)&ld,4); + break; + case TAGTYPE_TEXT: + ld=strlen((char *)t->ti_Data)+1; + WriteChunkBytes(iffh,(APTR)&ld,4); + WriteChunkBytes(iffh,(APTR)t->ti_Data,ld); + break; + case TAGTYPE_LIST: + for(a=0,n=GetHead(List(t->ti_Data));GetSucc(n);a++,n=GetSucc(n)); + ld=a; + WriteChunkBytes(iffh,(APTR)&ld,4); + + for(n=GetHead(List(t->ti_Data));GetSucc(n);n=GetSucc(n)) + { + wd=strlen(n->ln_Name)+1; + WriteChunkBytes(iffh,(APTR)&wd,2); + WriteChunkBytes(iffh,(APTR)n->ln_Name,strlen(n->ln_Name)+1); + } + break; + } + return error; +} + +LONG ReadTagItem(struct IFFHandle *iffh,struct TagItem *t) +{ + UBYTE type; + UWORD l2; + ULONG len,a; + struct Node *n; + + ReadChunkBytes(iffh,(APTR)&type,1); + ReadChunkBytes(iffh,(APTR)&t->ti_Tag,4); + switch(type) + { + case TAGTYPE_NONE: + break; + case TAGTYPE_NUMBER: + ReadChunkBytes(iffh,(APTR)(&t->ti_Data),4); + break; + case TAGTYPE_TEXT: + ReadChunkBytes(iffh,(APTR)&len,4); + t->ti_Data=(ULONG)MyAllocVec(len,MEMF_ANY); + ReadChunkBytes(iffh,(APTR)t->ti_Data,len); + break; + case TAGTYPE_LIST: + t->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_ANY); + NewList(List(t->ti_Data)); + ReadChunkBytes(iffh,(APTR)&len,4); + for(a=0;aln_Name=MyAllocVec(l2,MEMF_ANY); + ReadChunkBytes(iffh,(APTR)n->ln_Name,l2); + AddTail(List(t->ti_Data),n); + } + break; + } + return 0; +} + + + + + + + +extern UWORD ScrWidth,ScrHeight,ScrDepth; +extern ULONG ScrDisplayID; + +void SavePrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct PrefHeader prefhdr={0,0,0}; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_NEWFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_WRITE)) + { + unless(PushChunk(iffh,ID_PREF,ID_FORM,IFFSIZE_UNKNOWN)) + { + if(error=PushChunk(iffh,NULL,ID_PRHD,sizeof(struct PrefHeader))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)&prefhdr,sizeof(struct PrefHeader)); + if(error=PopChunk(iffh)) IFF_Error(error); + if(error=PushChunk(iffh,NULL,ID_GTBX,sizeof(struct Prefs))) IFF_Error(error); + WriteChunkBytes(iffh,(APTR)GUI.gui_Prefs,sizeof(struct Prefs)); + if(error=PopChunk(iffh)) IFF_Error(error); + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + FreeIFF(iffh); + } +} + +void LoadPrefs(STRPTR name) +{ + struct IFFHandle *iffh; + struct ContextNode *cn; + LONG error=0; + + if(iffh=AllocIFF()) + { + if(iffh->iff_Stream=Open(name,MODE_OLDFILE)) + { + InitIFFasDOS(iffh); + unless(error=OpenIFF(iffh,IFFF_READ)) + { + if(error=StopChunk(iffh,ID_PREF,ID_GTBX)) IFF_Error(error); + while(1) + { + error=ParseIFF(iffh,IFFPARSE_SCAN); + if(error==IFFERR_EOC) continue; /* enter next context */ + else if(error) break; + if(cn=CurrentChunk(iffh)) + { + if(cn->cn_Type==ID_PREF) + { + switch(cn->cn_ID) + { + case ID_GTBX: + ReadChunkBytes(iffh,(APTR)GUI.gui_Prefs,sizeof(struct Prefs)); + ScrWidth=GUI.gui_Prefs->pr_Width; + ScrHeight=GUI.gui_Prefs->pr_Height; + ScrDepth=GUI.gui_Prefs->pr_Depth; + ScrDisplayID=GUI.gui_Prefs->pr_DisplayID; + FindTagItem(WA_Left,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X; + FindTagItem(WA_Top,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y; + FindTagItem(WA_Width,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X; + FindTagItem(WA_Height,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y; + FindTagItem(WA_Left,(struct TagItem *)PropertiesWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].X; + FindTagItem(WA_Top,(struct TagItem *)PropertiesWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].Y; + FindTagItem(WA_Left,(struct TagItem *)TB_MainWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].X; + FindTagItem(WA_Top,(struct TagItem *)TB_MainWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].Y; + FindTagItem(WA_Left,(struct TagItem *)TB_WindowWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].X; + FindTagItem(WA_Top,(struct TagItem *)TB_WindowWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].Y; + FindTagItem(WA_Left,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X; + FindTagItem(WA_Top,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y; + FindTagItem(WA_Left,(struct TagItem *)StatusWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_STATUS].X; + FindTagItem(WA_Top,(struct TagItem *)StatusWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_STATUS].Y; + break; + } + } + } + } +skip:; + CloseIFF(iffh); + } else IFF_Error(error); + Close(iffh->iff_Stream); + } + else + { + if(AslRequestTags(ScreenModeReq, + ASLSM_DoWidth,TRUE, + ASLSM_DoHeight,TRUE, + ASLSM_DoDepth,TRUE, + ASLSM_PropertyMask,NULL, + TAG_DONE)) + { + ScrDisplayID=ScreenModeReq->sm_DisplayID; + ScrWidth=ScreenModeReq->sm_DisplayWidth; + ScrHeight=ScreenModeReq->sm_DisplayHeight; + ScrDepth=ScreenModeReq->sm_DisplayDepth; + } + +/* + ScrWidth=640; + ScrHeight=256; + ScrDepth=4; + ScrDisplayID=HIRES_KEY; +*/ + GUI.gui_Prefs->pr_Flags=0; + GUI.gui_Prefs->pr_Grid[0]=8; + GUI.gui_Prefs->pr_Grid[1]=4; + strcpy(GUI.gui_Prefs->pr_FontName,"topaz.font"); + GUI.gui_Prefs->pr_FontSize=8; + strcpy(GUI.gui_Prefs->pr_Generator,"c.generator"); + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X=FindTagItem(WA_Left,(struct TagItem *)ObjectWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y=FindTagItem(WA_Top,(struct TagItem *)ObjectWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X=FindTagItem(WA_Width,(struct TagItem *)ObjectWTags)->ti_Data=150; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y=FindTagItem(WA_Height,(struct TagItem *)ObjectWTags)->ti_Data=200; + GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].X=FindTagItem(WA_Left,(struct TagItem *)PropertiesWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].Y=FindTagItem(WA_Top,(struct TagItem *)PropertiesWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].X=FindTagItem(WA_Left,(struct TagItem *)TB_MainWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].Y=FindTagItem(WA_Top,(struct TagItem *)TB_MainWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].X=FindTagItem(WA_Left,(struct TagItem *)TB_WindowWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].Y=FindTagItem(WA_Top,(struct TagItem *)TB_WindowWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X=FindTagItem(WA_Left,(struct TagItem *)TB_PointerWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y=FindTagItem(WA_Top,(struct TagItem *)TB_PointerWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_STATUS].X=FindTagItem(WA_Left,(struct TagItem *)StatusWTags)->ti_Data=0; + GUI.gui_Prefs->pr_WinPos[WIN_STATUS].Y=FindTagItem(WA_Top,(struct TagItem *)StatusWTags)->ti_Data=0; + } + FreeIFF(iffh); + } +} diff --git a/GadToolsBox/inout.h b/GadToolsBox/inout.h new file mode 100755 index 0000000..9aebe5c --- /dev/null +++ b/GadToolsBox/inout.h @@ -0,0 +1,55 @@ +#ifndef GTB_INOUT_H +#define GTB_IBOUT_H +/* +** InOut +*/ + +#include // Import for GadToolsBox v2.x + +#define ID_VERS MAKE_ID('V','E','R','S') // Image Chunk + +struct GTB_Version +{ + UWORD vr_Version; + UWORD vr_Revision; + ULONG vr_Flags; + ULONG vr_Reserved[ 4 ]; +}; + +#define TAGTYPE_NONE 0 +#define TAGTYPE_NUMBER 1 +#define TAGTYPE_LIST 2 +#define TAGTYPE_TEXT 3 +#define TAGTYPE_DONE TAGTYPE_NONE + +// Size of structure 'sn' from node 'se' +#define SIZE(sn, se) (sizeof(struct sn)-(ULONG)(&(((struct sn *) 0)->se))) + +void SaveGUI(STRPTR); +void LoadGUI(STRPTR); +LONG WriteTagItem(struct IFFHandle *,struct TagItem *,UBYTE); +LONG ReadTagItem(struct IFFHandle *,struct TagItem *); +LONG piReadGadTools(struct IFFHandle *,struct Node *); +LONG piReadBOOPSI(struct IFFHandle *,struct Node *); +LONG piWriteGadTools(struct IFFHandle *,piObject *,UBYTE *,UBYTE *); +LONG piWriteBOOPSI(struct IFFHandle *,piObject *,UBYTE *,UBYTE *); +LONG WriteGUI(struct IFFHandle *); +LONG ReadGUI(struct IFFHandle *); +LONG gtb2_ReadGUI(struct IFFHandle *); +LONG piReadWindow(struct IFFHandle *,piObject **); +LONG gtb2_piReadWindow(struct IFFHandle *,piObject **); +LONG piWriteWindow(struct IFFHandle *); +LONG piReadGadget(struct IFFHandle *,piObject *); +LONG gtb2_piReadGadget(struct IFFHandle *,piObject *); +LONG piReadFrame(struct IFFHandle *,piObject *); +LONG gtb2_piReadFrame(struct IFFHandle *,piObject *); +LONG piReadMenu(struct IFFHandle *); +LONG gtb2_piReadMenu(struct IFFHandle *,piObject *,piObject *,piObject **); +LONG piWriteMenu(struct IFFHandle *); +LONG piReadImage(struct IFFHandle *); +LONG piReadPointer(struct IFFHandle *); +LONG piWriteImage(struct IFFHandle *); +void SavePrefs(STRPTR); +void LoadPrefs(STRPTR); + +#endif /* GTB_INOUT_H */ diff --git a/GadToolsBox/main.c b/GadToolsBox/main.c new file mode 100755 index 0000000..040eeb9 --- /dev/null +++ b/GadToolsBox/main.c @@ -0,0 +1,1266 @@ +/* +** GadToolsBox v3.0 (C) 1996-98 by Tomasz Muszynski +*/ + +long __oslibversion = 39; + +#include"includes.h" + +/* +** Defines +*/ + +TEXT _FakeUserName[256]; +TEXT _FakeAddress[512]; +TEXT _FakeSerial[30]; + +#define Leave(x) { RequestOk(GetCatString(MSG_ERROR),x,GetCatString(MSG_OK),NULL); goto end; } + +/* +** Global Variables +*/ + +struct ClipboardHandle *ClipHandle=NULL; +struct ClipboardHandle *UndoHandle=NULL; +struct FileRequester *OpenReq=NULL,*SaveReq=NULL,*GenReq=NULL; +struct ScreenModeRequester *ScreenModeReq=NULL; +struct FontRequester *FontReq=NULL; +//struct Library *ColorWheelBase=NULL,*GradientSliderBase=NULL; +struct Library *TapeDeckBase=NULL,*CyberGfxBase=NULL; +struct PopupMenuBase *PopupMenuBase; +Class *PopUpMenuClass=NULL,*DrawClass=NULL,*AmigaGuideClass=NULL; +piClass *piWindowClass=NULL,*piGadgetClass=NULL,*piFrameClass=NULL,*piMenuClass=NULL,*piScreenClass=NULL,*piStringClass=NULL,*piVersionClass=NULL,*piImageClass=NULL; +Object *gui_LeftImage=NULL,*gui_RightImage=NULL,*gui_UpImage=NULL,*gui_DownImage=NULL,*gui_SizeImage=NULL,*AmigaGuideObj=NULL; +struct GUI GUI; +struct Prefs Prefs; +BOOL running=TRUE,PropertiesChanged=FALSE,Semaphore=FALSE,PropertiesLock=TRUE; +ULONG WinSig,ScreenNum=0,LastCommand=CMD_NONE; +extern struct WBStartup *WBenchMsg; + +extern UBYTE GadgetStatus; +extern struct BevelBox BBOX_PROPERTIES_PAGES; +extern UWORD FontX,FontY; +extern TEXT ProjectName[]; + +struct GTBSemaphore GTBSem; + +#define TEMPLATE "FILE" +#define ARG_FILE 0 +#define ARG_COUNT 1 + +/* +** Functions +*/ + +/* +void __saveds Trap_FreeAll(void) +{ + struct Task *task; + + geta4(); + task=FindTask(NULL); + putreg( REG_A6, (long)task->tc_TrapData); + + FreeProject(); + if(Semaphore) RemSemaphore(>BSem.gs_Semaphore); + CloseDownScreen(); + FreeClasses(); + if(PopUpMenuClass) DisposePopUpMenuClass(PopUpMenuClass); + if(GradientSliderBase) CloseLibrary(GradientSliderBase); + if(ColorWheelBase) CloseLibrary(ColorWheelBase); + if(TapeDeckBase) CloseLibrary(TapeDeckBase); + FreeApplication(); +} +*/ + +//void *GlobalMemoryPool=NULL; + +void *MyAllocVec(ULONG size,ULONG flags) +{ +// return AllocVecPooled(GlobalMemoryPool,size); + return AllocVec(size,flags|MEMF_CLEAR); +// return calloc(1,size); +} + +void MyFreeVec(void *ptr) +{ +// FreeVecPooled(GlobalMemoryPool,ptr); + FreeVec(ptr); +// free(ptr); +} + +void main(void) +{ + struct RDArgs *rdargs; + ULONG signal; + UWORD err; + long *(opts[ARG_COUNT]); + BOOL PreLoadFile=FALSE; + ULONG AGSig; +// struct Task *task; + +// task=FindTask(NULL); +// task->tc_TrapData=(APTR)getreg( REG_A6 ); +// task->tc_TrapCode=Trap_FreeAll; + + if(!WBenchMsg) + { + opts[ARG_FILE]=(long *)ProjectName; + + if(rdargs=ReadArgs(TEMPLATE,(long *) opts, NULL)) + { + strcpy(ProjectName,(char *)opts[ARG_FILE]); + if(ProjectName[0]) PreLoadFile=TRUE; + FreeArgs(rdargs); + } + } + + LoadRegistration(); + CheckRegistration(); + InitGUI(); + if(err=InitApplication(NULL)) Leave(GetErrorString(err)); +// unless(GlobalMemoryPool=CreatePool(MEMF_CLEAR|MEMF_ANY,30000,30000)) Leave("Can't create memory pool"); + CyberGfxBase=OpenLibrary("cybergraphics.library",39L); + unless(PopupMenuBase=(struct PopupMenuBase *)OpenLibrary(POPUPMENU_NAME,POPUPMENU_VERSION)) Leave(GetCatString(MSG_ERROPENLIB_POPUPMENU)); + unless(TapeDeckBase=OpenLibrary("gadgets/tapedeck.gadget",3L)) Leave(GetCatString(MSG_ERROPENLIB_TAPEDECK)); + + unless(PopUpMenuClass=CreatePopUpMenuClass()) Leave(GetCatString(MSG_CANTCREATEPOPUPMENUCLASS)); + unless(DrawClass=CreateDrawClass()) Leave(GetCatString(MSG_CANTCREATEDRAWCLASS)); + AmigaGuideClass=CreateAmigaGuideClass(); + unless(CreatePopupMenus()) Leave(GetCatString(MSG_CANTCREATEPOPUPMENUS)); + if(!(UndoHandle=OpenClipboard(1))) Leave(GetCatString(MSG_CANTOPENCLIPBOARD)); + + unless(SaveReq=(struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,TAG_DONE)) Leave(GetCatString(MSG_CANTALLOCREQ)); + unless(OpenReq=(struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,TAG_DONE)) Leave(GetCatString(MSG_CANTALLOCREQ)); + unless(GenReq=(struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,TAG_DONE)) Leave(GetCatString(MSG_CANTALLOCREQ)); + unless(ScreenModeReq=(struct ScreenModeRequester *)AllocAslRequestTags(ASL_ScreenModeRequest,TAG_DONE)) Leave(GetCatString(MSG_CANTALLOCREQ)); + unless(FontReq=(struct FontRequester *)AllocAslRequestTags(ASL_FontRequest,TAG_DONE)) Leave(GetCatString(MSG_CANTALLOCREQ)); + + LoadPrefs("ENV:GadToolsBox/GadToolsBox3.prefs"); + + do + { + ScreenNum++; + if(ScreenNum>256) Leave(GetErrorString(err)); + } + while(err=SetupScreen(ScreenNum)); + + GUI.gui_PubScreenName=ScrPubName; + + InitClasses(); + + InitSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Semaphore.ss_Link.ln_Name=ScrPubName; + AddSemaphore(>BSem.gs_Semaphore); + Semaphore=TRUE; + + unless(gui_LeftImage=NewImageObject(LEFTIMAGE)) Leave(GetCatString(MSG_CANTALLOCOBJECT)); + unless(gui_RightImage=NewImageObject(RIGHTIMAGE)) Leave(GetCatString(MSG_CANTALLOCOBJECT)); + unless(gui_UpImage=NewImageObject(UPIMAGE)) Leave(GetCatString(MSG_CANTALLOCOBJECT)); + unless(gui_DownImage=NewImageObject(DOWNIMAGE)) Leave(GetCatString(MSG_CANTALLOCOBJECT)); + unless(gui_SizeImage=NewImageObject(SIZEIMAGE)) Leave(GetCatString(MSG_CANTALLOCOBJECT)); + + if(OpenWindow_TB_Main()) Leave(GetCatString(MSG_CANTOPENTOOLBAR)); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_OBJECTSOPEN) if(OpenObjectList()) Leave(GetCatString(MSG_CANTOPENOBJECTWINDOW)); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_STATUSOPEN) if(OpenStatusWindow()) Leave(GetCatString(MSG_CANTOPENSTATUSWINDOW)); + GetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_PROPSOPEN) if(OpenWindow_Props()) Leave(GetCatString(MSG_CANTOPENPROPERTIESWINDOW)); + + SetWndSignals(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_GUI=&GUI; + ReleaseSemaphore(>BSem.gs_Semaphore); + + RefreshProperties(); + + if(WBenchMsg) + { + if(WBenchMsg->sm_NumArgs>1) + { + NameFromLock(WBenchMsg->sm_ArgList[1].wa_Lock,ProjectName,108); + AddPart(ProjectName,WBenchMsg->sm_ArgList[1].wa_Name,108); + + PreLoadFile=TRUE; + } + } + + if(AmigaGuideClass) + { + if(AmigaGuideObj=NewObject(AmigaGuideClass,NULL, + AGUI_Name,"GadToolsBox.guide", + AGUI_Screen,Scr, + AGUI_Activate,TRUE, + AGUI_BaseName,"GadToolsBox", + TAG_DONE)) + GetAttr(AGUI_SigBit,AmigaGuideObj,&AGSig); + } + + if(PreLoadFile) + { + OpenWindow_Working(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=WorkingWnd; + GTBSem.gs_Progress=WorkingGadgets[GD_WORK_PROGRESS]; + ReleaseSemaphore(>BSem.gs_Semaphore); + SetWindowTitles(WorkingWnd,GetCatString(MSG_LOADING),(UBYTE *)-1); + + SetStatusWindow(0,GetCatString(MSG_LOADING)); + + LoadGUI(ProjectName); + +// LayoutAllWindows(); + ObtainSemaphore(>BSem.gs_Semaphore); + GTBSem.gs_Window=NULL; + GTBSem.gs_Progress=NULL; + ReleaseSemaphore(>BSem.gs_Semaphore); + CloseWindow_Working(); + UpdateObjectList(); + SetStatusWindow(0,GetCatString(MSG_STATUS_RESLOADED)); + } + + while(running==1 || running==2) + { + signal=Wait(WinSig|(1L<mp_SigBit)) running=HandleWorkIDCMP(); + if(TB_MainWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_TB_Main(); + if(TB_WindowWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_TB_Window(); + if(TB_PointerWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_TB_Pointer(); + if(PropertiesWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_Properties(); + if(ScreenWnd) if(signal & (1L<UserPort->mp_SigBit)) HandleIDCMP_Screen(); + if(EditStringWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_EditString(); + if(EditVersionWnd) if(signal & (1L<UserPort->mp_SigBit)) HandleIDCMP_EditVersion(); + if(ObjectWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_Object(); + if(StatusWnd) if(signal & (1L<UserPort->mp_SigBit)) running=HandleIDCMP_Status(); + } + +end: + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_MainWnd) CloseWindow_TB_Main(); + if(ScreenWnd) CloseWindow_Screen(); + CloseStatusWindow(); + CloseObjectList(); + CloseWindow_Props(); + + FreeProject(); + + if(AmigaGuideObj) DisposeObject(AmigaGuideObj); + if(Semaphore) RemSemaphore(>BSem.gs_Semaphore); + CloseDownScreen(); + if(gui_SizeImage) DisposeObject(gui_SizeImage); + if(gui_DownImage) DisposeObject(gui_DownImage); + if(gui_UpImage) DisposeObject(gui_UpImage); + if(gui_RightImage) DisposeObject(gui_RightImage); + if(gui_LeftImage) DisposeObject(gui_LeftImage); + if(FontReq) FreeAslRequest(FontReq); + if(ScreenModeReq) FreeAslRequest(ScreenModeReq); + if(GenReq) FreeAslRequest(GenReq); + if(OpenReq) FreeAslRequest(OpenReq); + if(SaveReq) FreeAslRequest(SaveReq); + FreeClasses(); + if(UndoHandle) CloseClipboard(UndoHandle); UndoHandle=NULL; + FreePopupMenus(); + if(EditFontTF) CloseFont(EditFontTF); + if(AmigaGuideClass) DisposeAmigaGuideClass(AmigaGuideClass); + if(DrawClass) DisposeDrawClass(DrawClass); + if(PopUpMenuClass) DisposePopUpMenuClass(PopUpMenuClass); +// if(GradientSliderBase) CloseLibrary(GradientSliderBase); +// if(ColorWheelBase) CloseLibrary(ColorWheelBase); + if(TapeDeckBase) CloseLibrary(TapeDeckBase); + if(PopupMenuBase) CloseLibrary((struct Library *)PopupMenuBase); + if(CyberGfxBase) CloseLibrary(CyberGfxBase); +// if(GlobalMemoryPool) DeletePool(GlobalMemoryPool); + FreeRegistration(); + FreeApplication(); +} + +Object *NewImageObject(ULONG which) +{ + return NewObject(NULL, SYSICLASS, + SYSIA_DrawInfo, DrawInfo, + SYSIA_Which, which, + SYSIA_Size, SysISize(), + TAG_DONE); +} + +int SysISize() +{ + return (Scr->Flags & SCREENHIRES ? SYSISIZE_MEDRES : SYSISIZE_LOWRES); +} + +BOOL HandleWorkIDCMP() +{ + struct IntuiMessage *m; + struct MenuItem *n; + int (*func)(); + BOOL run = TRUE; + piObject *obj; + struct Node_Window *nw; + struct Node_Image *ni; + struct Node_Menu *nm; + + while( m = GT_GetIMsg( ProjectMsgPort )) { + + CopyMem(( char * )m, ( char * )&EditMsg, (long)sizeof( struct IntuiMessage )); + if(!EditMsg.IDCMPWindow) + { + GT_ReplyIMsg( m ); + return 1; + } + if(obj=(piObject *) EditMsg.IDCMPWindow->UserData) + { + nw=(struct Node_Window *)OBJECT_DATA(obj); + ActiveObject=nw->nw_ID; + switch(nw->nw_ID) + { + case ID_WIND: + CurrentWindow=obj; + CurrentWindowNode=nw; + break; + case ID_MENU: + CurrentMenu=obj; + break; + case ID_IMGE: + CurrentImage=obj; + break; + default: + CurrentWindow=NULL; + CurrentImage=NULL; + CurrentMenu=NULL; + break; + } + } +/* if(PM_FilterIMsg(EditMsg.IDCMPWindow,PM_ObjGadget,m,TAG_DONE)) + { + if(n = ItemAddress( MainMenus, EditMsg.Code )) + { + func = (void *)(GTMENUITEM_USERDATA( n )); + run = func(); + if(running > 1) + { + GT_ReplyIMsg( m ); + return running; + } + } + } +*/ + if((EditMsg.Class==IDCMP_MENUVERIFY) && obj) + { + switch(nw->nw_ID) + { + case ID_WIND: + if(GadgetStatus!=GS_NOTHING) + { + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + GadgetStatus=GS_NOTHING; + piEraseObject(CurrentWindow); + piRenderObject(CurrentWindow); + m->Code=MENUCANCEL; + EditMsg.Class=NULL; + } + else + { + if(EditMsg.MouseX>0 && EditMsg.MouseY>0 && EditMsg.MouseXnw_Window->Width && EditMsg.MouseYnw_Window->Height) + { + m->Code=MENUCANCEL; + EditMsg.Class=IDCMP_MOUSEBUTTONS; + EditMsg.Code=MENUDOWN; + } + else + EditMsg.Class=NULL; + } +// PM_FilterIMsg(EditMsg.IDCMPWindow,PM_ObjGadget,m,TAG_DONE); + break; + case ID_MENU: + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(EditMsg.MouseX>0 && EditMsg.MouseY>0 && EditMsg.MouseXnm_Window->Width && EditMsg.MouseYnm_Window->Height) + { + m->Code=MENUCANCEL; + EditMsg.Class=IDCMP_MOUSEBUTTONS; + EditMsg.Code=MENUDOWN; + } + else + EditMsg.Class=NULL; +// PM_FilterIMsg(EditMsg.IDCMPWindow,PM_ObjMenu,m,TAG_DONE); + break; + case ID_IMGE: + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + if(EditMsg.MouseX>0 && EditMsg.MouseY>0 && EditMsg.MouseXni_Window->Width && EditMsg.MouseYni_Window->Height) + { + m->Code=MENUCANCEL; + EditMsg.Class=IDCMP_MOUSEBUTTONS; + EditMsg.Code=MENUDOWN; + } + else + EditMsg.Class=NULL; +// PM_FilterIMsg(EditMsg.IDCMPWindow,PM_ObjMenu,m,TAG_DONE); + break; + } + } + GT_ReplyIMsg( m ); + + switch ( EditMsg.Class ) { + + case IDCMP_REFRESHWINDOW: + GT_BeginRefresh( EditMsg.IDCMPWindow ); + GT_EndRefresh( EditMsg.IDCMPWindow, TRUE ); + break; + + case IDCMP_CLOSEWINDOW: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_CloseWindow_Edit(); break; + case ID_MENU: running = FN_CloseWindow_EditMenu(); break; + case ID_IMGE: running = FN_CloseWindow_EditImage(); break; + } + break; + + case IDCMP_ACTIVEWINDOW: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_ActiveWindow_Edit(); break; + case ID_MENU: running = FN_ActiveWindow_EditMenu(); break; + case ID_IMGE: running = FN_ActiveWindow_EditImage(); break; + } + break; + + case IDCMP_NEWSIZE: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_NewSize_Edit(); break; + case ID_MENU: running = FN_NewSize_EditMenu(); break; + case ID_IMGE: running = FN_NewSize_EditImage(); break; + } + break; + + case IDCMP_CHANGEWINDOW: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_ChangeWindow_Edit(); break; +// case ID_MENU: running = FN_NewSize_EditMenu(); break; +// case ID_IMGE: running = FN_NewSize_EditImage(); break; + } + break; + + case IDCMP_IDCMPUPDATE: + switch(nw->nw_ID) + { +// case ID_WIND: running = FN_IDCMPUpdate_Edit(); break; + case ID_MENU: running = FN_IDCMPUpdate_EditMenu(); break; + case ID_IMGE: running = FN_IDCMPUpdate_EditImage(); break; + } + break; + + case IDCMP_MOUSEBUTTONS: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_MouseButtons_Edit(); break; + case ID_MENU: running = FN_MouseButtons_EditMenu(); break; + case ID_IMGE: running = FN_MouseButtons_EditImage(); break; + } + break; + + case IDCMP_MOUSEMOVE: + switch(nw->nw_ID) + { + case ID_WIND: running = FN_MouseMove_Edit(); break; + case ID_MENU: running = FN_MouseMove_EditMenu(); break; + case ID_IMGE: running = FN_MouseMove_EditImage(); break; + } + break; + + case IDCMP_GADGETUP: + case IDCMP_GADGETDOWN: + break; + + case IDCMP_RAWKEY: + running = FN_RawKey_Edit(); + break; + + case IDCMP_MENUPICK: + while( EditMsg.Code != MENUNULL ) { + n = ItemAddress( MainMenus, EditMsg.Code ); + func = (void *)(GTMENUITEM_USERDATA( n )); + run = func(); + if(running > 1) return running; + EditMsg.Code = n->NextSelect; + } + break; + } + } + return( run ); +} + +void SetWndSignals() +{ + WinSig=NULL; + + WinSig|=1L<mp_SigBit; + if(TB_MainWnd) WinSig|=1L<UserPort->mp_SigBit; + if(TB_WindowWnd) WinSig|=1L<UserPort->mp_SigBit; + if(TB_PointerWnd) WinSig|=1L<UserPort->mp_SigBit; + if(PropertiesWnd) WinSig|=1L<UserPort->mp_SigBit; + if(ScreenWnd) WinSig|=1L<UserPort->mp_SigBit; + if(EditStringWnd) WinSig|=1L<UserPort->mp_SigBit; + if(EditVersionWnd) WinSig|=1L<UserPort->mp_SigBit; + if(ObjectWnd) WinSig|=1L<UserPort->mp_SigBit; + if(StatusWnd) WinSig|=1L<UserPort->mp_SigBit; +} + +struct Node *FindNodeNum(struct List *l,ULONG num) +{ + struct Node *node; + ULONG a; + + node=l->lh_Head; + + for(a=0;aln_Succ) return NULL; + node=node->ln_Succ; + } + if(!node->ln_Succ) return NULL; + return node; +} + +ULONG GetNumNode(struct List *l,struct Node *n) +{ + ULONG a=0; + struct Node *node; + + node=l->lh_Head; + while(node!=n) + { + if(!node->ln_Succ) return a; + node=node->ln_Succ; + a++; + } + return a; +} + +void MoveNodeUp(struct List *l,struct Node *n) +{ + struct Node *after; + + if(l->lh_Head==n) return; // already first + after=GetPred(GetPred(n)); + Remove(n); + Insert(l,n,after); +} + +void MoveNodeDown(struct List *l,struct Node *n) +{ + struct Node *after; + + if(l->lh_TailPred==n) return; // already last + after=GetSucc(n); + Remove(n); + Insert(l,n,after); +} + +void ShowGrid(piObject *o) +{ + int x,y; + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(GUI.gui_GridShow && GUI.gui_Grid[0]>0 && GUI.gui_Grid[0]>0 && GUI.gui_Mode!=MODE_TEST) + { + SetDrMd(nw->nw_Window->RPort,JAM1); + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[SHADOWPEN]); + for(x=0;xnw_Window->Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight;x+=GUI.gui_Grid[0]) + { + for(y=0;ynw_Window->Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom;y+=GUI.gui_Grid[1]) + { + WritePixel(nw->nw_Window->RPort,nw->nw_Window->BorderLeft+x,nw->nw_Window->BorderTop+y); + } + } + } +} + +UWORD GridX(piObject *o,UWORD x) +{ + struct Node_Window *nw=(struct Node_Window *)OBJECT_DATA(o); + + if(GUI.gui_GridOn) + { + return((UWORD)(((x-nw->nw_Window->BorderLeft)-((x-nw->nw_Window->BorderLeft)%GUI.gui_Grid[0]))+nw->nw_Window->BorderLeft)); + } + else return x; +} + +UWORD GridY(piObject *o,UWORD y) +{ + struct Node_Window *nw=(struct Node_Window *)OBJECT_DATA(o); + + if(GUI.gui_GridOn) + { + return((UWORD)(((y-nw->nw_Window->BorderTop)-((y-nw->nw_Window->BorderTop)%GUI.gui_Grid[1]))+nw->nw_Window->BorderTop)); + } + else return y; +} + +void InitGUI() +{ + NewList(List(&GUI.gui_List_Window)); + NewList(List(&GUI.gui_List_Menu)); + NewList(List(&GUI.gui_List_Image)); + NewList(List(&GUI.gui_List_Binary)); + GUI.gui_Mode=MODE_GADGET; + GUI.gui_PubScreenName=ScrPubName; + GUI.gui_Grid[0]=1; + GUI.gui_Grid[1]=1; + GUI.gui_Prefs=&Prefs; + GUI.gui_Version=VER_VERSION; + GUI.gui_Revision=VER_REVISION; +} + +void FreeProject() +{ + struct Node_Screen *ns; + + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + if(TB_WindowWnd) CloseWindow_TB_Window(); + PropertiesMode=PM_NONE; + ActiveObject=NULL; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + DisposeAllWindows(); CurrentWindow=NULL; CurrentGadget=NULL; CurrentFrame=NULL; + DisposeAllMenus(); CurrentMenu=NULL; + DisposeAllImages(); CurrentImage=NULL; + if(GUI.gui_Node_Version) piDisposeObject(GUI.gui_Node_Version); + if(GUI.gui_Node_String) piDisposeObject(GUI.gui_Node_String); + if(GUI.gui_Node_Screen) piDisposeObject(GUI.gui_Node_Screen); + GUI.gui_Node_Screen=CurrentScreen=piNewObject(piScreenClass,TAG_DONE); + GUI.gui_Node_String=CurrentString=piNewObject(piStringClass,TAG_DONE); + GUI.gui_Node_Version=CurrentVersion=piNewObject(piVersionClass,TAG_DONE); + UpdateObjectList(); + RefreshObjectList(); + + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + if(EditFontTF) CloseFont(EditFontTF); + EditFontTA.ta_Name=ns->ns_FontName; + EditFontTA.ta_YSize=ns->ns_FontSize; + EditFontTA.ta_Style=FS_NORMAL; + EditFontTA.ta_Flags=FPF_DISKFONT|FPF_DESIGNED; + EditFontTF=OpenDiskFont(&EditFontTA); +} + +struct TagItem *AllocTagItems(ULONG num) +{ + return MyAllocVec((num+1)*sizeof(struct TagItem),MEMF_ANY|MEMF_CLEAR); +} + +void MyFreeTagItems(struct TagItem *t) +{ + MyFreeVec(t); +} + +void CopyTagItems(struct TagItem *s,struct TagItem *d,ULONG num) +{ + CopyMem(s,d,num*sizeof(struct TagItem)); +} + +void InitClasses() +{ + int a; + + OpenWindow_PGEMPTY(); + + piScreenClass=piMakeClass(CLASS_SCREEN,NULL,sizeof(struct Node_Screen)); + piOpenClass(piScreenClass); + GUI.gui_Node_Screen=CurrentScreen=piNewObject(piScreenClass,TAG_DONE); + + piVersionClass=piMakeClass(CLASS_VERSION,NULL,sizeof(struct Node_Version)); + piOpenClass(piVersionClass); + GUI.gui_Node_Version=CurrentVersion=piNewObject(piVersionClass,TAG_DONE); + + piStringClass=piMakeClass(CLASS_STRING,NULL,sizeof(struct Node_String)); + piOpenClass(piStringClass); + GUI.gui_Node_String=CurrentString=piNewObject(piStringClass,TAG_DONE); + + piWindowClass=piMakeClass(CLASS_WINDOW,NULL,sizeof(struct Node_Window)); + piOpenClass(piWindowClass); + + piFrameClass=piMakeClass(CLASS_FRAME,NULL,sizeof(struct Node_Frame)); + piOpenClass(piFrameClass); + + piImageClass=piMakeClass(CLASS_IMAGE,NULL,sizeof(struct Node_Image)); + piOpenClass(piImageClass); + + piMenuClass=piMakeClass(CLASS_MENU,NULL,sizeof(struct Node_Menu)); + piOpenClass(piMenuClass); + + piGadgetClass=piMakeClass(CLASS_GADGET,NULL,sizeof(struct Node_Gadget)); + piOpenClass(piGadgetClass); + for(a=0;aDispatcher=piGadgets[a].Dispatcher; + piOpenClass(piGadgets[a].Class); + } +} + +void FreeClasses() +{ + int a; + + for(a=0;aBorderLeft,PropertiesWnd->BorderTop,PropertiesWnd->BorderRight,PropertiesWnd->BorderBottom,NULL,(struct TagItem *) &PropsGTags[34]); + AddGList(PropertiesWnd,PropertiesGadgets[GD_PROPERTIES_PAGES],-1,-1,NULL); + RefreshGList(PropertiesGadgets[GD_PROPERTIES_PAGES],PropertiesWnd,NULL,-1); + + SetWindowTitles(PropertiesWnd,title,(UBYTE *)-1); + + DisableGadget(PropertiesGadgets[GD_PROPERTIES_APPLY],PropertiesWnd,FALSE); + switch(PropertiesMode) + { + case PM_WINDOW: + piInitObjectGUI(CurrentWindow); + break; + case PM_GADGET: + piInitObjectGUI(CurrentGadget); + break; + case PM_IMAGE: + piInitObjectGUI(CurrentImage); + break; + case PM_FRAME: + piInitObjectGUI(CurrentFrame); + break; + case PM_MENU: + piInitObjectGUI(CurrentMenu); + break; + case PM_STRING: + piInitObjectGUI(CurrentString); + break; + case PM_NONE: + DisableGadget(PropertiesGadgets[GD_PROPERTIES_APPLY],PropertiesWnd,TRUE); + break; + } + } + CurPMode=PropertiesMode; +} + +UWORD OpenWindow_Props() +{ + struct Gadget *g; + UWORD lc,tc; + UWORD OffX, OffY; + + if(PropertiesWnd) + RefreshPropertiesWindow((UBYTE *)-1); + else + { + if(!(g=CreateContext(&PropertiesGList))) return GTBERR_CREATECONTEXT; + + CalcLeftTop(&OffX,&OffY,(struct TagItem *)PropertiesWTags); + if(FindTagItem(WA_FontAdaptive,(struct TagItem *)PropertiesWTags)) CalcAdaptivity(GetTagData(WA_Width,GetTagData(WA_InnerWidth,GetTagData(WA_RelWidth,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),GetTagData(WA_Height,GetTagData(WA_InnerHeight,GetTagData(WA_RelHeight,0,(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags),(struct TagItem *)PropertiesWTags)); else { FontX=7; FontY=13; } + +// BBOX_PROPERTIES_PAGES.Top=AdaptY()+OffY; + + PropsGTags[22]=(ULONG)GetCatString(MSG_PROPERTIES_APPLY_GAD); +// PropsGTags[5]=(ULONG)GetCatString(MSG_PROPERTIES_LOCK_GAD); + + for(lc=0,tc=0;lcpr_Flags,PRFLAG_PROPSOPEN); + SetMenuStrip(PropertiesWnd,MainMenus); + GT_RefreshWindow(PropertiesWnd,NULL); + SetWndSignals(); + } + return GTBERR_OK; +} + +void CloseWindow_Props() +{ + if(PropertiesGadgets[GD_PROPERTIES_PAGES]) + { + RemoveGList(PropertiesWnd,PropertiesGadgets[GD_PROPERTIES_PAGES],-1); + DisposeObject((Object *)PropertiesGadgets[GD_PROPERTIES_PAGES]); + PropertiesGadgets[GD_PROPERTIES_PAGES]=NULL; + } + if(PropertiesWnd) CloseWindowEx(PropertiesWnd); PropertiesWnd=NULL; + if(PropertiesGList) { FreeGadgets(PropertiesGList); PropertiesGList=NULL; } + SetWndSignals(); + MenuCheck(MainMenus,FULLMENUNUM(3,0,0),FALSE); + ClearFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_PROPSOPEN); +} + +int FN_CloseWindow_Properties() +{ + FN_PROPERTIES_APPLY_Clicked(); + CloseWindow_Props(); + return 2; +} + +int FN_MouseMove_Properties() +{ + return 1; +} + +int FN_ChangeWindow_Properties() +{ + GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].X=PropertiesWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].Y=PropertiesWnd->TopEdge; + FindTagItem(WA_Left,(struct TagItem *)PropertiesWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].X; + FindTagItem(WA_Top,(struct TagItem *)PropertiesWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_PROPERTIES].Y; + return 1; +} + +int FN_IntuiTicks_Properties() +{ + return 1; +} + +int FN_InActiveWindow_Properties() +{ + if(!PropertiesLock) + { + FN_PROPERTIES_APPLY_Clicked(); + CloseWindow_Props(); + return 2; + } + else return 1; +} + +int FN_PROPERTIES_APPLY_Clicked() +{ + switch(PropertiesMode) + { + case PM_WINDOW: + piApplyObject(CurrentWindow); + if(PropertiesChanged) + { + piCloseWindow(CurrentWindow); + piOpenWindow(CurrentWindow); + } + break; + case PM_GADGET: + piApplyObject(CurrentGadget); + if(PropertiesChanged) + piRenderObject(CurrentGadget); + break; + case PM_IMAGE: + piApplyObject(CurrentImage); + if(PropertiesChanged) + piRenderObject(CurrentImage); + break; + case PM_FRAME: + piApplyObject(CurrentFrame); + if(PropertiesChanged) + piRenderObject(CurrentFrame); + break; + case PM_MENU: + piApplyObject(CurrentMenu); + if(PropertiesChanged) + piRenderObject(CurrentMenu); + break; + case PM_STRING: + piApplyObject(CurrentString); + if(PropertiesChanged) + piRenderObject(CurrentString); + break; + case PM_NONE: + break; + } + SetStatusWindow(1,(STRPTR)-1); + PropertiesChanged=FALSE; + return 1; +} + +int FN_PROPERTIES_LOCK_Clicked() +{ + PropertiesLock=PropertiesMsg.Code; + return 1; +} + +int FN_PROPERTIES_PAGES_Clicked() +{ + GT_RefreshWindow(PropertiesWnd,NULL); + return 1; +} + +struct PopupMenu *PM_Object=NULL; +struct PopupMenu *PM_ObjGadget=NULL; +struct PopupMenu *PM_ObjSelGadget=NULL; +struct PopupMenu *PM_ObjWindow=NULL; +struct PopupMenu *PM_ObjMenu=NULL; +struct PopupMenu *PM_ObjImage=NULL; + +int CreatePopupMenus() +{ + PM_Object=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainObjStringsOpen_MSUB)+2), PM_UserData, NULL, End, + PMItem(GetCatString(MSG_MainObjWindowClose_MSUB)+2), PM_UserData, NULL, End, + End; + unless(PM_Object) return NULL; + + PM_ObjGadget=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainWindowProperties_MITEM)+2), PM_UserData, OpenWindow_Props, End, + End; + unless(PM_ObjGadget) return NULL; + + PM_ObjSelGadget=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_ALIGNLEFT)), PM_UserData, FN_MainEditAlignToLeft_Selected, End, + PMItem(GetCatString(MSG_ALIGNHCENTER)), PM_UserData, FN_MainEditAlignToHCenter_Selected, End, + PMItem(GetCatString(MSG_ALIGNRIGHT)), PM_UserData, FN_MainEditAlignToRight_Selected, End, + PMItem(GetCatString(MSG_ALIGNTOP)), PM_UserData, FN_MainEditAlignToTop_Selected, End, + PMItem(GetCatString(MSG_ALIGNVCENTER)), PM_UserData, FN_MainEditAlignToVCenter_Selected, End, + PMItem(GetCatString(MSG_ALIGNBOTTOM)), PM_UserData, FN_MainEditAlignToBottom_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_SPREADHORIZ)), PM_UserData, FN_MainEditSpreadHoriz_Selected, End, + PMItem(GetCatString(MSG_SPREADVERT)), PM_UserData, FN_MainEditSpreadVertical_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainWindowProperties_MITEM)+2), PM_UserData, OpenWindow_Props, End, + End; + unless(PM_ObjSelGadget) return NULL; + + PM_ObjWindow=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainObjWindowClose_MSUB)+2), PM_UserData, FN_MainObjWindowClose_Selected, End, + PMItem(GetCatString(MSG_MainObjWindowRefresh_MSUB)+2), PM_UserData, FN_MainObjWindowRefresh_Selected, End, + PMItem(GetCatString(MSG_MainWindowProperties_MITEM)+2), PM_UserData, OpenWindow_Props, End, + End; + unless(PM_ObjWindow) return NULL; + + PM_ObjMenu=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainObjMenuClose_MSUB)+2), PM_UserData, FN_MainObjMenuClose_Selected, End, + PMItem(GetCatString(MSG_MainWindowProperties_MITEM)+2), PM_UserData, OpenWindow_Props, End, + End; + unless(PM_ObjMenu) return NULL; + + PM_ObjImage=PM_MakeMenu( + PMItem(GetCatString(MSG_MainEditCut_MITEM)+2), PM_UserData, FN_MainEditCut_Selected, End, + PMItem(GetCatString(MSG_MainEditCopy_MITEM)+2), PM_UserData, FN_MainEditCopy_Selected, End, + PMItem(GetCatString(MSG_MainEditPaste_MITEM)+2), PM_UserData, FN_MainEditPaste_Selected, End, + PMBar, PMEnd, + PMItem(GetCatString(MSG_MainObjImageClose_MSUB)+2), PM_UserData, FN_MainObjImageClose_Selected, End, + PMItem(GetCatString(MSG_MainWindowProperties_MITEM)+2), PM_UserData, OpenWindow_Props, End, + End; + unless(PM_ObjImage) return NULL; + + return TRUE; +} + +void FreePopupMenus() +{ + if(PM_Object) PM_FreePopupMenu(PM_Object); + if(PM_ObjImage) PM_FreePopupMenu(PM_ObjImage); + if(PM_ObjMenu) PM_FreePopupMenu(PM_ObjMenu); + if(PM_ObjWindow) PM_FreePopupMenu(PM_ObjWindow); + if(PM_ObjGadget) PM_FreePopupMenu(PM_ObjGadget); + if(PM_ObjSelGadget) PM_FreePopupMenu(PM_ObjSelGadget); +} + +/****************************************************************************/ + +KEYFILE *key=NULL; +UBYTE *keybuf=NULL; +int keylen; + +void LoadRegistration() +{ + int a; + BPTR in=FALSE; + BOOL ok=FALSE; + ULONG chsum,*lens; + TEXT keyfilename[256]; + STRPTR paths[]= + { + "PROGDIR:", + "S:", + "L:", + NULL, + "KEYFILES:", + "KEYPATH:", + NULL + }; + STRPTR vars[]= + { + "KEYFILES", + "KEYPATH", + NULL + }; + + strcpy(_FakeUserName,"Not registered"); + strcpy(_FakeAddress,"Please register!"); + strcpy(_FakeSerial,"mailto:thom@union.org.pl"); + + for(a=0;vars[a];a++) + { + if(GetVar(vars[a],keyfilename,256,NULL)!=-1) + { + AddPart(keyfilename,"GadToolsBox3.key",256); + if(in=Open(keyfilename,MODE_OLDFILE)) goto fileok; + } + } + + for(a=0;paths[a];a++) + { + strcpy(keyfilename,paths[a]); + AddPart(keyfilename,"GadToolsBox3.key",256); + if(in=Open(keyfilename,MODE_OLDFILE)) goto fileok; + } + +fileok: + if(in) + { + Seek(in,0,OFFSET_END); + keylen=Seek(in,0,OFFSET_BEGINNING); + if(keybuf=MyAllocVec(keylen,MEMF_ANY)) + { + Read(in,keybuf,keylen); + key=(KEYFILE *)keybuf; + if(key->kf_KeyID==MAKE_ID('K','E','Y','F') && key->kf_KeyVersion==0 && + key->kf_ProgramID==0 && key->kf_Version==3 && key->kf_Revision==0) + { + chsum=0; + for(a=0;akf_Serial); + ok=TRUE; + } + } + } + Close(in); + } +filefail: + if(!ok) FreeRegistration(); +} + +void FreeRegistration() +{ + if(keybuf) MyFreeVec(keybuf); keybuf=NULL; key=NULL; +} + +BOOL __inline CheckRegistration(void) +{ + int a; + ULONG chsum; + + if(key) + { + chsum=0; + for(a=0;aFlags,CHECKED); else ClearFlag(mi->Flags,CHECKED); + } +} + +int RequestOk(STRPTR title,STRPTR string,STRPTR gads, int ble, ...) +{ + struct EasyStruct es; + + es.es_StructSize=sizeof(struct EasyStruct); + es.es_Flags=0; + es.es_Title=title; + es.es_TextFormat=string; + es.es_GadgetFormat=gads; + return EasyRequestArgs(TB_MainWnd,&es,NULL,&ble); +} + +STRPTR GetErrorString(UWORD errnum) +{ + switch(errnum) + { + case GTBERR_LOCALE: return "Can't open Locale"; + case GTBERR_CREATEPROJECTPORT: return GetCatString(MSG_ERRCREATEPROJECTPORT); + case GTBERR_CREATEPOINTER: return GetCatString(MSG_ERRCREATEPOINTER); + case GTBERR_CREATEIMAGE: return GetCatString(MSG_ERRCREATEIMAGE); + case GTBERR_OPENLIB_COLORWHEEL: return GetCatString(MSG_ERROPENLIB_COLORWHEEL); + case GTBERR_OPENLIB_GRADIENTSLIDER: return GetCatString(MSG_ERROPENLIB_GRADIENTSLIDER); + case GTBERR_OPENLIB_PAGE: return GetCatString(MSG_ERROPENLIB_PAGE); + case GTBERR_OPENLIB_PROGRESS: return GetCatString(MSG_ERROPENLIB_PROGRESS); + case GTBERR_OPENLIB_TEXTFIELD: return GetCatString(MSG_ERROPENLIB_TEXTFIELD); + case GTBERR_OPENLIB_TREEVIEW: return GetCatString(MSG_ERROPENLIB_TREEVIEW); + case GTBERR_OPENLIB_SMARTBITMAP: return GetCatString(MSG_ERROPENLIB_SMARTBITMAP); + case GTBERR_OPENSCREEN: return GetCatString(MSG_ERR_OPENSCREEN); + case GTBERR_VISUALINFO: return GetCatString(MSG_ERR_VISUALINFO); + case GTBERR_SCRDRAWINFO: return GetCatString(MSG_ERR_SCRDRAWINFO); + default: return GetCatString(MSG_ERR_UNKNOWN); + } +} diff --git a/GadToolsBox/main.h b/GadToolsBox/main.h new file mode 100755 index 0000000..6a85e75 --- /dev/null +++ b/GadToolsBox/main.h @@ -0,0 +1,111 @@ +#ifndef GTB_PROTOTYPES_H +#define GTB_PROTOTYPES_H +/* +** GadToolsBox v3 - Prototypes +*/ + +#include"defines.h" + +/* +** Prototypes +*/ + +// main.c + +void *MyAllocVec(ULONG,ULONG); +void MyFreeVec(void *); +void main(void); +void InitGUI(void); +Object *NewImageObject(ULONG); +int SysISize(void); +BOOL HandleWorkIDCMP(void); +int EditCloseWindow(void); +void SetWndSignals(void); +struct Node *FindNodeNum(struct List *,ULONG); +ULONG GetNumNode(struct List *,struct Node *); +void MoveNodeUp(struct List *,struct Node *); +void MoveNodeDown(struct List *,struct Node *); +void ShowGrid(piObject *); +UWORD GridX(piObject *,UWORD); +UWORD GridY(piObject *,UWORD); +void FreeProject(void); +struct TagItem *AllocTagItems(ULONG); +void MyFreeTagItems(struct TagItem *); +void CopyTagItems(struct TagItem *,struct TagItem *,ULONG); +void InitClasses(void); +void FreeClasses(void); +UWORD OpenWindow_Props(void); +void CloseWindow_Props(void); +void RefreshPropertiesWindow(STRPTR); +int CreatePopupMenus(void); +void FreePopupMenus(void); +void MenuCheck(struct Menu *,UWORD,BOOL); +int RequestOk(STRPTR,STRPTR,STRPTR, int, ...); +STRPTR GetErrorString(UWORD); +extern BOOL CheckRegistration(void); +void LoadRegistration(void); +void FreeRegistration(void); + +// guifunc.c + +void SetStatusWindow(int,STRPTR); +int OpenStatusWindow(void); +void CloseStatusWindow(void); +void HandleMouseMove(piObject *,piObject *); +piObject *HandleSelectDown(piObject *,piObject *); +int FN_ActiveWindow_Edit(void); +void AlignObjects(struct MinList *,ULONG); +int HowManySelected(struct MinList *); +void RefreshProperties(void); + +// toolbar.c + +void ApplySelectionWindow(void); + +/* +** Externs +*/ + +extern struct MsgPort *WndPort; +extern struct GUI GUI; +extern struct DrawInfo *DrawInfo; +extern struct Library *TapeDeckBase,*PageBase,*TextFieldBase,*ProgressBase,*ColorWheelBase,*GradientSliderBase; +extern Class *TextFieldClass,*ProgressClass,*PopUpMenuClass,*GadgetImageClass,*PageClass,*DrawClass; +extern ULONG ActiveGadget; +extern struct FileRequester *OpenReq,*SaveReq,*GenReq; +extern struct ScreenModeRequester *ScreenModeReq; +extern struct FontRequester *FontReq; +extern struct GTBSemaphore GTBSem; +extern struct PopupMenu *PM_Object; +extern struct PopupMenu *PM_ObjGadget; +extern struct PopupMenu *PM_ObjSelGadget; +extern struct PopupMenu *PM_ObjWindow; +extern struct PopupMenu *PM_ObjMenu; +extern struct PopupMenu *PM_ObjImage; + +extern struct ClipboardHandle *ClipHandle; +extern struct ClipboardHandle *UndoHandle; + +extern struct Node_Window *CurrentWindowNode; +extern piObject *CurrentWindow; +extern piObject *CurrentGadget; +extern piObject *CurrentFrame; +extern piObject *CurrentMenu; +extern piObject *CurrentScreen; +extern piObject *CurrentString; +extern piObject *CurrentVersion; +extern piObject *CurrentImage; +extern piClass *piWindowClass,*piGadgetClass,*piFrameClass,*piMenuClass,*piScreenClass,*piImageClass,*piStringClass,*piVersionClass; +extern Object *gui_LeftImage,*gui_RightImage,*gui_UpImage,*gui_DownImage,*gui_SizeImage; +extern ULONG PropertiesMode,ActiveObject,LastCommand; +extern BOOL PropertiesChanged; +extern struct TextAttr EditFontTA; +extern struct TextFont *EditFontTF; + +#define SetWorkingProgress(prg) SetGadgetAttrs(GTBSem.gs_Progress,GTBSem.gs_Window,NULL,PROG_CurVal,prg,TAG_DONE) + +extern TEXT _FakeUserName[]; +extern TEXT _FakeAddress[]; +extern TEXT _FakeSerial[]; + +#endif /* GTB_PROTOTYPES_H */ diff --git a/GadToolsBox/memory.a b/GadToolsBox/memory.a new file mode 100755 index 0000000..b1374ca --- /dev/null +++ b/GadToolsBox/memory.a @@ -0,0 +1,25 @@ + SECTION assembly,code + + include "lvo/exec_lib.i" + + XDEF _AllocVecPooled +; void *AllocVecPooled(void *pool,ULONG size); +_AllocVecPooled: + addq.l #4,d0 ; Get space for tracking + move.l d0,-(sp) ; Save the size + jsr _LVOAllocPooled(a6) ; Call pool... + move.l (sp)+,d1 ; Get size back... + tst.l d0 ; Check for error + beq.s avp_fail ; If NULL, failed! + move.l d0,a0 ; Get pointer... + move.l d1,(a0)+ ; Store size + move.l a0,d0 ; Get result +avp_fail: rts ; return + + XDEF _FreeVecPooled +; void FreeVecPooled(void *pool,void *memory); +_FreeVecPooled: + move.l -(a1),d0 ; Get size / ajust pointer + jmp _LVOFreePooled(a6) + + end diff --git a/GadToolsBox/memory.h b/GadToolsBox/memory.h new file mode 100755 index 0000000..43447e4 --- /dev/null +++ b/GadToolsBox/memory.h @@ -0,0 +1,4 @@ +#include + +void *AllocVecPooled(void *,ULONG); +void FreeVecPooled(void *,void *); diff --git a/GadToolsBox/menu.c b/GadToolsBox/menu.c new file mode 100755 index 0000000..f33e9bc --- /dev/null +++ b/GadToolsBox/menu.c @@ -0,0 +1,1286 @@ +/* +** GadToolsBox v3 - Menu Managment +*/ + +#include"includes.h" + +/* +** Defines +*/ + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGMN_General[]; + +struct Page PAGES_PROPERTIES_PGMN_PAGES[]= +{ + &PAGES_PROPERTIES_PGMN_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +/* +** Functions +*/ + + +struct Node_MenuItem *FindSelectedMenu(piObject *o) +{ + struct Node_MenuItem *ni=NULL,*sni=NULL; + struct Node_Menu *nm; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + if(ni->nm_Selected) sni=ni; + + return sni; +} + +ULONG GetMenuNum(struct Node_MenuItem *ni) +{ + ULONG xp=0; + + for(;ni->nm_Node.ln_Pred;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred) + if(ni) if(ni->nm_Type==NM_TITLE) xp++; + + return xp-1; +} + +struct Node_MenuItem *FindNumMenu(piObject *o,LONG t,LONG i,LONG s) +{ + struct Node_MenuItem *ni=NULL; + struct Node_Menu *nm; + LONG ct=0,ci=0,cs=0,nt=0,nj=0; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + if(ni->nm_Type==NM_TITLE) + { + nt=ct; + ci=0; cs=0; + if(ct++==t) if(i==-1) return ni; + } + if(ni->nm_Type==NM_ITEM) + { + nj=ci; + cs=0; + if(ci++==i && nt==t) if(s==-1) return ni; + } + if(ni->nm_Type==NM_SUB) + { + if(cs++==s && nj==i && nt==t) return ni; + } + } + return NULL; +} + +void SelectMenu(struct Node_MenuItem *ni) +{ + switch(ni->nm_Type) + { + case NM_SUB: + ni->nm_Selected=TRUE; + for(;ni->nm_Node.ln_Pred;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred) + if(ni->nm_Type==NM_ITEM) + break; + case NM_ITEM: + ni->nm_Selected=TRUE; + for(;ni->nm_Node.ln_Pred;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred) + if(ni->nm_Type==NM_TITLE) + break; + case NM_TITLE: + ni->nm_Selected=TRUE; + break; + } +} + +LONG CountItems(struct Node_MenuItem *ni,UBYTE type) +{ + LONG c=0; + + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ; + while(ni->nm_Node.ln_Succ) + { + if(ni->nm_Type==type) c++; + switch(type) + { + case NM_ITEM: if(ni->nm_Type==NM_TITLE) return c; break; + case NM_SUB: if(ni->nm_Type==NM_ITEM || ni->nm_Type==NM_TITLE) return c; break; + } + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ; + } + return c; +} + +LONG RevCountItems(struct Node_MenuItem *ni,UBYTE type) +{ + LONG c=0; + + switch(type) + { + case NM_TITLE: + while(ni->nm_Node.ln_Pred) + { + if(ni->nm_Type==type) c++; + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred; + } + return c; + case NM_ITEM: + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred; + while(ni->nm_Node.ln_Pred) + { + if(ni->nm_Type==type) c++; + if(ni->nm_Type==NM_TITLE) return c; + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred; + } + return c; + case NM_SUB: + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred; + while(ni->nm_Node.ln_Pred) + { + if(ni->nm_Type==type) c++; + if(ni->nm_Type==NM_ITEM && ni->nm_Type==NM_TITLE) return c; + ni=(struct Node_MenuItem *)ni->nm_Node.ln_Pred; + } + return c; + } +} + +void UnSelectAllMenus(piObject *o) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + ni->nm_Selected=FALSE; +} + +ULONG Dispatcher_Menu(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval; + + switch(msg->MethodID) + { + case OM_NEW: + retval=NEW_Menu(cl,o,(struct piSet *)msg); + break; + case OM_INIT: + retval=INIT_Menu(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Menu(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGMN_General(); + OpenWindow_PGMN_Item(); + PAGES_PROPERTIES_PGMN_PAGES[0].FirstGadget=PGMN_GeneralGList; + PAGES_PROPERTIES_PGMN_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L35_GAD); + PAGES_PROPERTIES_PGMN_PAGES[1].FirstGadget=PGMN_ItemGList; + PAGES_PROPERTIES_PGMN_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L38_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PGMN_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PGMN_PAGES[0].FirstGadget=NULL; + CloseWindow_PGMN_Item(); + CloseWindow_PGMN_General(); + break; + case OM_CREATE: + retval=CREATE_Menu(cl,o,(struct piSet *)msg); + break; + case OM_DELETE: + retval=DELETE_Menu(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Menu(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Menu(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Menu(cl,o,msg); + break; + case OM_RENDER: + retval=RENDER_Menu(cl,o,msg); + break; + case OM_ADDTAIL: + AddTail(List(&GUI.gui_List_Menu),Node(o)); + break; + case OM_REMOVE: + Remove(Node(o)); + break; + case OM_READ: + retval=READ_Menu(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Menu(cl,o,(struct piIO *)msg); + break; + case OM_CUT: + retval=CUT_Menu(cl,o,msg); + break; + case OM_COPY: + retval=COPY_Menu(cl,o,(struct piCopy *)msg); + break; + } + return retval; +} + +ULONG CUT_Menu(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi,*nmi; + + if(mi=FindSelectedMenu(o)) + { + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + switch(mi->nm_Type) + { + case NM_TITLE: + while(mi->nm_Node.ln_Succ) + { + nmi=(struct Node_MenuItem *)mi->nm_Node.ln_Succ; + Remove(Node(mi)); + FreeVec(mi); + mi=nmi; + if(mi->nm_Type==NM_TITLE) break; + nm->nm_Total--; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL, + PGA_Top, nm->nm_Top, + PGA_Total, nm->nm_Total, + PGA_Visible, nm->nm_Visible, + TAG_DONE); + } + break; + case NM_ITEM: + while(mi->nm_Node.ln_Succ) + { + nmi=(struct Node_MenuItem *)mi->nm_Node.ln_Succ; + Remove(Node(mi)); + FreeVec(mi); + mi=nmi; + if(mi->nm_Type!=NM_SUB) break; + } + break; + case NM_SUB: + Remove(Node(mi)); + FreeVec(mi); + break; + } + } + else + { + piCopyObject(o,COPY_CLIP); + piCopyObject(o,COPY_UNDO); + + piRemoveObject(o); + piDisposeObject(o); +// PropertiesMode=PM_NONE; +// RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + } + return TRUE; +} + +ULONG COPY_Menu(piClass *cl,piObject *o,struct piCopy *msg) +{ + struct IFFHandle *iffh; + struct Node_MenuItem *mi; + ULONG error=0; + + if(mi=FindSelectedMenu(o)) + { + // menu selected, copy selected item + } + else + { + if(!(ClipHandle=OpenClipboard(PRIMARY_CLIP))) return 1; + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)((msg->Copy==COPY_CLIP)?ClipHandle:UndoHandle); + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_WRITE)) + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + piWriteObject(o,iffh); + if(error=PopChunk(iffh)) goto skip;; + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + if(ClipHandle) CloseClipboard(ClipHandle); ClipHandle=NULL; + } + return TRUE; +} + +ULONG INIT_Menu(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Menu *nm; + struct Node_MenuItem *sn; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetString(PropsWnd,PGMN_GeneralGadgets[GD_PGMN_LABEL],nm->nm_Label); + SetCheckMark(PropsWnd,PGMN_GeneralGadgets[GD_PGMN_NEWLOOK],(nm->nm_Flags&MYMN_NewLookMenus)?TRUE:FALSE); + + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + if(sn=FindSelectedMenu(o)) + { + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_LABEL],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TITLE],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_COMMKEY],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_DISABLED],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TOGGLE],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_CHECKED],PropsWnd,(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_POPUP],PropsWnd,((sn->nm_Flags&MYMN_BarLabel)||(sn->nm_Type==NM_SUB))?TRUE:FALSE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_BARLABEL],PropsWnd,FALSE); + SetString(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_LABEL],sn->nm_Label); + SetString(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_TITLE],sn->nm_Title); + SetString(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_COMMKEY],sn->nm_Key); + SetCheckMark(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_DISABLED],(sn->nm_Flags&MYMN_Disabled)?TRUE:FALSE); + SetCheckMark(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_TOGGLE],(sn->nm_Flags&MYMN_Toggle)?TRUE:FALSE); + SetCheckMark(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_CHECKED],(sn->nm_Flags&MYMN_Checked)?TRUE:FALSE); + SetCheckMark(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_BARLABEL],(sn->nm_Flags&MYMN_BarLabel)?TRUE:FALSE); + SetCheckMark(PropsWnd,PGMN_ItemGadgets[GD_PGMN_ITEM_POPUP],(sn->nm_Flags&MYMN_PopUp)?TRUE:FALSE); + } + else + { + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_LABEL],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TITLE],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_COMMKEY],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_DISABLED],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TOGGLE],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_CHECKED],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_BARLABEL],PropsWnd,TRUE); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_POPUP],PropsWnd,TRUE); + } + return TRUE; +} + +ULONG APPLY_Menu(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + + strcpy(nm->nm_Label,GetString(PGMN_GeneralGadgets[GD_PGMN_LABEL])); + RefreshObjectList(); + if(mi=FindSelectedMenu(o)) + { + strcpy(mi->nm_Label,GetString(PGMN_ItemGadgets[GD_PGMN_ITEM_LABEL])); + strcpy(mi->nm_Title,GetString(PGMN_ItemGadgets[GD_PGMN_ITEM_TITLE])); + strncpy(mi->nm_Key,GetString(PGMN_ItemGadgets[GD_PGMN_ITEM_COMMKEY]),2); + } + return TRUE; +} + +ULONG RENDER_Menu(piClass *cl,piObject *o,Msg msg) +{ + struct Node_MenuItem *ni; + struct Node_Menu *nm; + ULONG xp,yp,syp,a,b,numtitle; + BOOL renderi=FALSE,renders=FALSE; + UWORD fh,fb,bl,br,bt,bb,ww,wh; + struct RastPort *rp; + struct Region *region1=NULL,*oldregion; + struct Rectangle rect; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + + region1=NewRegion(); + rect.MinX=nm->nm_Window->BorderLeft; + rect.MinY=nm->nm_Window->BorderTop; + rect.MaxX=nm->nm_Window->Width-nm->nm_Window->BorderRight-1; + rect.MaxY=nm->nm_Window->Height-nm->nm_Window->BorderBottom-1; + OrRectRegion(region1,&rect); + oldregion=InstallClipRegion(nm->nm_Window->WLayer,region1); + + ww=nm->nm_Window->Width; + wh=nm->nm_Window->Height; + rp=nm->nm_Window->RPort; + bl=nm->nm_Window->BorderLeft; + br=nm->nm_Window->BorderRight; + bt=nm->nm_Window->BorderTop; + bb=nm->nm_Window->BorderBottom; + fh=rp->TxHeight+2; + fb=fh-rp->TxBaseline-1; + + SetAPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + RectFill(rp,bl,bt,ww-br-1,wh-bb-1); + + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,bl,bt,ww-br-1,bt+fh); + + SetAPen(rp,DrawInfo->dri_Pens[BARTRIMPEN]); + Move(rp,bl,bt+fh); + Draw(rp,ww-br-1,bt+fh); + Draw(rp,ww-br-1,bt); + + xp=-150; yp=0; + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem)),numtitle=0;ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + if(ni->nm_Type==NM_TITLE) numtitle++; + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem)),a=0;ni->nm_Node.ln_Succ && anm_Top;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + if(ni->nm_Type==NM_TITLE) a++; + if(numtitle==0) + { + SetAPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + RectFill(rp,xp+bl+150,yp+bt,xp+bl+150+150,yp+bt+fh-1); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl+150,yp+bt); + Draw(rp,xp+bl+150+150,yp+bt); + Draw(rp,xp+bl+150+150,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+5+150,yp+bt+fh-fb); + Text(rp,GetCatString(MSG_NEWTITLE),strlen(GetCatString(MSG_NEWTITLE))); + } + for(b=0;ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + { + switch(ni->nm_Type) + { + case NM_TITLE: + xp+=150; yp=0; b++; + if(ni->nm_Selected) SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + else SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,xp+bl,yp+bt,xp+bl+150,yp+bt+fh-1); + if(ni->nm_Selected) + { + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + renderi=TRUE; + } + else + { + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + renderi=FALSE; + renders=FALSE; + } + if(ni->nm_Flags&MYMN_Toggle) + { + Move(rp,xp+bl+3+20,yp+bt+fh-fb); + if(ni->nm_Flags&MYMN_Checked) + DrawImageState(rp,DrawInfo->dri_CheckMark,xp+bl+3,yp+bt+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + } + else + Move(rp,xp+bl+5,yp+bt+fh-fb); + if(ni->nm_Flags&MYMN_BarLabel) Text(rp,"~~~~~~~~~~~~~",13); + else Text(rp,ni->nm_Title,strlen(ni->nm_Title)); + if(ni->nm_Key[0]!='\0') + { + DrawImageState(rp,DrawInfo->dri_AmigaKey,xp+bl+150-41-3,yp+bt+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + Move(rp,xp+bl+150-10-3,yp+bt+fh-fb); + Text(rp,ni->nm_Key,strlen(ni->nm_Key)); + } + if((b+a)==numtitle) + { + SetAPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + RectFill(rp,xp+bl+150,yp+bt,xp+bl+150+150,yp+bt+fh-1); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl+150,yp+bt); + Draw(rp,xp+bl+150+150,yp+bt); + Draw(rp,xp+bl+150+150,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+5+150,yp+bt+fh-fb); + Text(rp,GetCatString(MSG_NEWTITLE),strlen(GetCatString(MSG_NEWTITLE))); + } + if(((struct Node_MenuItem *)ni->nm_Node.ln_Succ)->nm_Type!=NM_ITEM && ni->nm_Selected) + { + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt+fh); + Draw(rp,xp+bl+150,yp+bt+fh+fh); + Draw(rp,xp+bl,yp+bt+fh+fh); + Draw(rp,xp+bl,yp+bt+fh); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+5,yp+bt+fh-fb+fh); + Text(rp,GetCatString(MSG_NEWITEM),strlen(GetCatString(MSG_NEWITEM))); + } + break; + case NM_ITEM: + yp+=fh; + syp=yp-fh; + if(renderi) + { + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,xp+bl,yp+bt+1,xp+bl+150,yp+bt+fh+1); + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + if(yp==fh) + { + Move(rp,xp+bl+2,yp+bt); + Draw(rp,xp+bl+148,yp+bt); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + Move(rp,xp+bl,yp+bt-1); + Draw(rp,xp+bl+150,yp+bt-1); + } + else + Move(rp,xp+bl+150,yp+bt); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + Draw(rp,xp+bl+150,yp+bt+1+fh); + Draw(rp,xp+bl,yp+bt+1+fh); + Draw(rp,xp+bl,yp+bt+1); + Move(rp,xp+bl+1,yp+bt+1); + Draw(rp,xp+bl+1,yp+bt+1+fh); + Move(rp,xp+bl+149,yp+bt+1); + Draw(rp,xp+bl+149,yp+bt+1+fh); + if(ni->nm_Selected) SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + else SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,xp+bl+4,yp+bt+1,xp+bl+146,yp+bt+fh-2+1); + if(ni->nm_Selected) + { + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + renders=TRUE; + } + else + { + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + renders=FALSE; + } + if(ni->nm_Flags&MYMN_Toggle) + { + Move(rp,xp+bl+3+20,yp+bt+fh-fb+1); + if(ni->nm_Flags&MYMN_Checked) + DrawImageState(rp,DrawInfo->dri_CheckMark,xp+bl+3,yp+bt+1+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + } + else + Move(rp,xp+bl+5,yp+bt+fh-fb+1); + if(ni->nm_Flags&MYMN_BarLabel) Text(rp,"~~~~~~~~~~~~~",13); + else Text(rp,ni->nm_Title,strlen(ni->nm_Title)); + if(ni->nm_Key[0]!='\0') + { + DrawImageState(rp,DrawInfo->dri_AmigaKey,xp+bl+150-41-3,yp+bt+1+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + Move(rp,xp+bl+150-10-3,yp+bt+1+fh-fb); + Text(rp,ni->nm_Key,strlen(ni->nm_Key)); + } + if(((struct Node_MenuItem *)ni->nm_Node.ln_Succ)->nm_Type!=NM_SUB && ni->nm_Selected && ni->nm_Flags&MYMN_PopUp) + { + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl+1+150,yp+bt); + Draw(rp,xp+bl+1+150+150,yp+bt); + Draw(rp,xp+bl+1+150+150,yp+bt+fh); + Draw(rp,xp+bl+1+150,yp+bt+fh); + Draw(rp,xp+bl+1+150,yp+bt); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+5+150,yp+bt+fh-fb); + Text(rp,GetCatString(MSG_NEWSUB),strlen(GetCatString(MSG_NEWSUB))); + } + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl,yp+bt+fh+2); + Draw(rp,xp+bl+150,yp+bt+fh+2); + Draw(rp,xp+bl+150,yp+bt+fh+fh+2); + Draw(rp,xp+bl,yp+bt+fh+fh+2); + Draw(rp,xp+bl,yp+bt+fh+2); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+1+5,yp+bt+fh-fb+fh+2); + Text(rp,GetCatString(MSG_NEWITEM),strlen(GetCatString(MSG_NEWITEM))); + } + break; + case NM_SUB: + xp+=150; + syp+=fh; + if(renders) + { + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,xp+bl,syp+bt+1,xp+bl+150,syp+bt+fh+1); + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + if(syp==yp) + { + Move(rp,xp+bl+2,syp+bt); + Draw(rp,xp+bl+148,syp+bt); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + Move(rp,xp+bl,syp+bt-1); + Draw(rp,xp+bl+150,syp+bt-1); + } + else + Move(rp,xp+bl+150,syp+bt); + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + Draw(rp,xp+bl+150,syp+bt+1+fh); + Draw(rp,xp+bl,syp+bt+1+fh); + Draw(rp,xp+bl,syp+bt+1); + Move(rp,xp+bl+1,syp+bt+1); + Draw(rp,xp+bl+1,syp+bt+1+fh); + Move(rp,xp+bl+149,syp+bt+1); + Draw(rp,xp+bl+149,syp+bt+1+fh); + if(ni->nm_Selected) SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + else SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + RectFill(rp,xp+bl+4,syp+bt+1,xp+bl+146,syp+bt+fh-2+1); + if(ni->nm_Selected) + { + SetAPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + } + else + { + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BARBLOCKPEN]); + } + if(ni->nm_Flags&MYMN_Toggle) + { + Move(rp,xp+bl+3+20,syp+bt+fh-fb+1); + if(ni->nm_Flags&MYMN_Checked) + DrawImageState(rp,DrawInfo->dri_CheckMark,xp+bl+3,syp+bt+1+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + } + else + Move(rp,xp+bl+5,syp+bt+fh-fb+1); + if(ni->nm_Flags&MYMN_BarLabel) Text(rp,"~~~~~~~~~~~~~",13); + else Text(rp,ni->nm_Title,strlen(ni->nm_Title)); + if(ni->nm_Key[0]!='\0') + { + DrawImageState(rp,DrawInfo->dri_AmigaKey,xp+bl+150-41-3,syp+bt+1+(fb/2),ni->nm_Selected?IDS_INACTIVENORMAL:IDS_NORMAL,DrawInfo); + Move(rp,xp+bl+150-10-3,syp+bt+1+fh-fb); + Text(rp,ni->nm_Key,strlen(ni->nm_Key)); + } + SetAPen(rp,DrawInfo->dri_Pens[BARDETAILPEN]); + SetBPen(rp,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrPt(rp,0x5555); + Move(rp,xp+bl,syp+bt+fh+2); + Draw(rp,xp+bl+150,syp+bt+fh+2); + Draw(rp,xp+bl+150,syp+bt+fh+fh+2); + Draw(rp,xp+bl,syp+bt+fh+fh+2); + Draw(rp,xp+bl,syp+bt+fh+2); + SetDrPt(rp,0xffff); + Move(rp,xp+bl+5,syp+bt+fh-fb+fh+2); + Text(rp,GetCatString(MSG_NEWSUB),strlen(GetCatString(MSG_NEWSUB))); + } + xp-=150; + break; + } + } + + InstallClipRegion(nm->nm_Window->WLayer,oldregion); + if(region1) ClearRegion(region1); + + return TRUE; +} + +ULONG NEW_Menu(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Menu *nm; + + if(!CheckRegistration()) + if(!ListEmpty(&GUI.gui_List_Menu)) return NULL; + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + nm=(struct Node_Menu *)OBJECT_DATA(obj); + nm->nm_ID=ID_MENU; + nm->nm_Pages=PAGES_PROPERTIES_PGMN_PAGES, + obj->ln_Name=nm->nm_Label; + NewList(List(&nm->nm_MenuItem)); + nm->nm_Menu=NULL; + nm->nm_NewMenu=NULL; + nm->nm_LeftButton=nm->nm_RightButton=nm->nm_HorizProp=NULL; + nm->nm_Top=nm->nm_Visible=nm->nm_Total=0; + return (ULONG) obj; + } + return NULL; +} + +ULONG DISPOSE_Menu(piClass *cl,piObject *o,Msg msg) +{ + struct Node_MenuItem *ni; + struct Node_Menu *nm; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + piDoMethod(o,OM_DELETE); + while(ni=(struct Node_MenuItem *)RemTail(List(&nm->nm_MenuItem))) + MyFreeVec((APTR)ni); + + MyFreeVec(o); + return TRUE; +} + +#define IM_WIDTH(o) ((struct Image *) o)->Width +#define IM_HEIGHT(o) ((struct Image *) o)->Height + +int MENUFN_Left(void) +{ + struct Node_Menu *nm; + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + + nm->nm_Top--; + if(nm->nm_Top<0L) nm->nm_Top=0L; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL,PGA_Top,nm->nm_Top,TAG_DONE); + piRenderObject(CurrentMenu); + return 1; +} + +int MENUFN_Right(void) +{ + struct Node_Menu *nm; + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + + nm->nm_Top++; + if(nm->nm_Visiblenm_Total) + if(nm->nm_Top>nm->nm_Total-nm->nm_Visible) nm->nm_Top=nm->nm_Total-nm->nm_Visible; + if(nm->nm_Top>=nm->nm_Total) nm->nm_Top=nm->nm_Total-1; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL,PGA_Top,nm->nm_Top,TAG_DONE); + piRenderObject(CurrentMenu); + return 1; +} + +int MENUFN_Horiz(void) +{ + struct Node_Menu *nm; + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + + GetAttr(PGA_Top,nm->nm_HorizProp,(ULONG *)&nm->nm_Top); + piRenderObject(CurrentMenu); + return 1; +} + +ULONG CREATE_Menu(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + if(!nm->nm_Window) + { + unless(nm->nm_RightButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_RightImage, + GA_RelRight, 1-(IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_RightImage)), + GA_RightBorder,TRUE, + GA_UserData,MENUFN_Right, + GA_ID, 2, + TAG_DONE)) return 1; + unless(nm->nm_LeftButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_LeftImage, + GA_RelRight, 1-(IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_SizeImage)+IM_WIDTH(gui_RightImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_LeftImage)), + GA_RightBorder,TRUE, + GA_Previous,nm->nm_RightButton, + GA_UserData, MENUFN_Left, + GA_ID, 3, + TAG_DONE)) return 1; + unless(nm->nm_HorizProp=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEHORIZ, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_RelBottom, -(IM_HEIGHT(gui_SizeImage)-3), + GA_RelWidth, -(4+IM_WIDTH(gui_LeftImage)+IM_WIDTH(gui_RightImage)+IM_WIDTH(gui_SizeImage)+1), + GA_Left, 3, + GA_Height, IM_HEIGHT(gui_SizeImage)-4, + GA_RightBorder, TRUE, + GA_Previous,nm->nm_LeftButton, + GA_UserData, MENUFN_Horiz, + GA_ID, 4, + PGA_Top, nm->nm_Top, + PGA_Total, nm->nm_Total, + PGA_Visible, nm->nm_Visible, + TAG_DONE)) return 1; + + if(!(nm->nm_Window=OpenWindowTags(NULL, + WA_Title, nm->nm_Label, + WA_CustomScreen, Scr, + TAG_MORE, EditMenuWTags ))) return GTBERR_OPENWINDOW; + + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem)),nm->nm_Total=0;ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + if(ni->nm_Type==NM_TITLE) nm->nm_Total++; + nm->nm_Visible=nm->nm_Window->Width/150; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL, + PGA_Top, nm->nm_Top, + PGA_Total, nm->nm_Total, + PGA_Visible, nm->nm_Visible, + TAG_DONE); + + AddGList(nm->nm_Window,(struct Gadget *)nm->nm_RightButton,-1,-1,NULL); + RefreshGList((struct Gadget *)nm->nm_RightButton,nm->nm_Window,NULL,-1); + + nm->nm_Window->UserPort=ProjectMsgPort; + nm->nm_Window->UserData=(BYTE *)o; + ModifyIDCMP(nm->nm_Window,IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_GADGETUP|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_NEWSIZE|IDCMP_ACTIVEWINDOW|IDCMP_MENUVERIFY|IDCMP_IDCMPUPDATE); + SetMenuStrip(nm->nm_Window,MainMenus); + SetFont(nm->nm_Window->RPort,DrawInfo->dri_Font); + piRenderObject(o); + } + else + ActivateWindow(nm->nm_Window); + return GTBERR_OK; +} + +ULONG DELETE_Menu(piClass *cl,piObject *o,struct piSet *msg) +{ + struct Node_Menu *nm; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + + if(nm->nm_Window) + { + ClearMenuStrip(nm->nm_Window); + RemoveGList(nm->nm_Window,(struct Gadget *)nm->nm_RightButton,-1); + DisposeObject(nm->nm_HorizProp); + DisposeObject(nm->nm_RightButton); + DisposeObject(nm->nm_LeftButton); + if(nm->nm_Window) CloseWindowSafely(nm->nm_Window); nm->nm_Window=NULL; + } + return TRUE; +} + +ULONG SET_Menu(piClass *cl,piObject *o,struct piSet *msg) +{ +// struct TagItem *t; + struct Node_Menu *nm; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + +// if(t=FindTagItem(OBJ_Select,msg->Tags)) nf->nf_Selected=t->ti_Data; + return TRUE; +} + +ULONG GET_Menu(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Menu *nm=(struct Node_Menu *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case OBJ_Node: *(msg->TagData)=(ULONG)nm; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)nm->nm_Pages; return TRUE; + default: return FALSE; + } +} + +ULONG READ_Menu(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Menu *nm; + struct Node_MenuItem *ni,n; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + ReadChunkBytes(msg->IFFh,(APTR)nm->nm_Label,SIZE(Node_Menu,nm_Label)); + while(ReadChunkBytes(msg->IFFh,(APTR)&n.nm_Label,SIZE(Node_MenuItem,nm_Label))) + { + if(ni=(struct Node_MenuItem *)MyAllocVec(sizeof(struct Node_MenuItem),MEMF_ANY|MEMF_CLEAR)) + { + CopyMem(&n.nm_Label,&ni->nm_Label,SIZE(Node_MenuItem,nm_Label)); + ni->nm_Node.ln_Name=ni->nm_Title; + AddTail(List(&nm->nm_MenuItem),Node(ni)); + } + } + return (ULONG)error; +} + +ULONG WRITE_Menu(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Menu *nm; + struct Node_MenuItem *ni; + + piGetAttr(o,OBJ_Node,(ULONG *)&nm); + if(error=PushChunk(msg->IFFh,NULL,ID_MENU,IFFSIZE_UNKNOWN)) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)nm->nm_Label,SIZE(Node_Menu,nm_Label)); + for(ni=(struct Node_MenuItem *)GetHead(List(&nm->nm_MenuItem));ni->nm_Node.ln_Succ;ni=(struct Node_MenuItem *)ni->nm_Node.ln_Succ) + WriteChunkBytes(msg->IFFh,(APTR)&ni->nm_Label,SIZE(Node_MenuItem,nm_Label)); + if(error=PopChunk(msg->IFFh)) return (ULONG)error; + return (ULONG)error; +} + +/****************************************************************************/ + +void DisposeAllMenus() +{ + piObject *obj; + + while(obj=(piObject *)RemTail(List(&GUI.gui_List_Menu))) piDisposeObject(obj); +} + +void DeleteAllMenus() +{ + piObject *obj; + + for(obj=(piObject *)GetHead(&GUI.gui_List_Menu);GetSucc(obj);obj=(piObject *)GetSucc(obj)) piCloseWindow(obj); +} + +/****************************************************************************/ + +int FN_PGMN_LABEL_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_NEWLOOK_Clicked(void) +{ + struct Node_Menu *nm; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + code=PropertiesMsg.Code; + DoFlag(nm->nm_Flags,MYMN_NewLookMenus); + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_LABEL_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_TITLE_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_COMMKEY_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_BARLABEL_Clicked(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(mi=FindSelectedMenu(CurrentMenu)) + { + code=PropertiesMsg.Code; + DoFlag(mi->nm_Flags,MYMN_BarLabel); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_LABEL],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TITLE],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_COMMKEY],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_DISABLED],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_TOGGLE],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_CHECKED],PropertiesWnd,code); + DisableGadget(PGMN_ItemGadgets[GD_PGMN_ITEM_POPUP],PropertiesWnd,code); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_DISABLED_Clicked(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(mi=FindSelectedMenu(CurrentMenu)) + { + code=PropertiesMsg.Code; + DoFlag(mi->nm_Flags,MYMN_Disabled); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_TOGGLE_Clicked(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(mi=FindSelectedMenu(CurrentMenu)) + { + code=PropertiesMsg.Code; + DoFlag(mi->nm_Flags,MYMN_Toggle); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_CHECKED_Clicked(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(mi=FindSelectedMenu(CurrentMenu)) + { + code=PropertiesMsg.Code; + DoFlag(mi->nm_Flags,MYMN_Checked); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGMN_ITEM_POPUP_Clicked(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *mi; + ULONG code; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + if(mi=FindSelectedMenu(CurrentMenu)) + { + code=PropertiesMsg.Code; + DoFlag(mi->nm_Flags,MYMN_PopUp); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + + +struct Node_MenuItem *selectmi=NULL,*SelMenuItem=NULL; + +int FN_MouseButtons_EditMenu(void) +{ + struct Node_Menu *nm; + struct Node_MenuItem *ni,*pni,*ppni; + LONG xp,yp,i,i2; + UWORD fh,fb,bl,br,bt,bb,ww,wh; + int (*func)(); + BOOL running=TRUE; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + + ww=nm->nm_Window->Width; + wh=nm->nm_Window->Height; + bl=nm->nm_Window->BorderLeft; + br=nm->nm_Window->BorderRight; + bt=nm->nm_Window->BorderTop; + bb=nm->nm_Window->BorderBottom; + fh=nm->nm_Window->RPort->TxHeight+2; + fb=fh-nm->nm_Window->RPort->TxBaseline-1; + + switch(EditMsg.Code) + { + case MENUDOWN: + func=(void *) PM_OpenPopupMenu(nm->nm_Window,PM_Menu,PM_ObjMenu,PM_Code, EditMsg.Code, TAG_DONE); + if(func) + { + running = func(); + if(running > 1) return running; + } + break; + case SELECTDOWN: + xp=(EditMsg.MouseX-bl)/150; + yp=(EditMsg.MouseY-bt)/fh; + selectmi=NULL; + xp+=nm->nm_Top; + if(yp==0) // Title selected + { + selectmi=FindNumMenu(CurrentMenu,xp,-1,-1); + } + else + { + yp--; + if(pni=ni=FindNumMenu(CurrentMenu,xp,-1,-1)) + if(ni->nm_Selected) + selectmi=FindNumMenu(CurrentMenu,xp,yp,-1); + } + break; + case SELECTUP: + xp=(EditMsg.MouseX-bl)/150; + yp=(EditMsg.MouseY-bt)/fh; + xp+=nm->nm_Top; + { + if(yp==0) // Title selected + { + SelMenuItem=NULL; + UnSelectAllMenus(CurrentMenu); + if(ni=FindNumMenu(CurrentMenu,xp,-1,-1)) + SelectMenu(ni); + else + { + if(xp==(CountItems((struct Node_MenuItem *)&nm->nm_MenuItem,NM_TITLE))) + { + if(ni=(struct Node_MenuItem *)MyAllocVec(sizeof(struct Node_MenuItem),MEMF_ANY|MEMF_CLEAR)) + { + ni->nm_Node.ln_Name=ni->nm_Title; + ni->nm_Type=NM_TITLE; + strcpy(ni->nm_Title,GetCatString(MSG_NEWTITLE)); + SetFlag(ni->nm_Flags,MYMN_PopUp); + AddTail(List(&nm->nm_MenuItem),Node(ni)); + SelectMenu(ni); + nm->nm_Total++; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL, + PGA_Top, nm->nm_Top, + PGA_Total, nm->nm_Total, + PGA_Visible, nm->nm_Visible, + TAG_DONE); + if(nm->nm_Total==1) + { + PropertiesMode=PM_MENU; + RefreshProperties(); + } + } + } + } + } + else + { + yp--; + if(xp>0) + { + if(SelMenuItem) if(SelMenuItem->nm_Selected && SelMenuItem->nm_Flags&MYMN_PopUp) + { + i=RevCountItems(SelMenuItem,NM_ITEM); + if(GetMenuNum(FindNumMenu(CurrentMenu,xp-1,i,-1))==GetMenuNum(FindSelectedMenu(CurrentMenu))) + { // have i selected sub menu? + if(ni=FindNumMenu(CurrentMenu,xp-1,i,yp-i)) + { + UnSelectAllMenus(CurrentMenu); + SelectMenu(ni); + goto skip; + } + else + { + UnSelectAllMenus(CurrentMenu); + if((yp-i)==(i2=CountItems(SelMenuItem,NM_SUB))) + { + if(ni=(struct Node_MenuItem *)MyAllocVec(sizeof(struct Node_MenuItem),MEMF_ANY|MEMF_CLEAR)) + { + ni->nm_Node.ln_Name=ni->nm_Title; + ni->nm_Type=NM_SUB; + strcpy(ni->nm_Title,GetCatString(MSG_NEWSUB)); + Insert(List(&nm->nm_MenuItem),Node(ni),Node(FindNumMenu(CurrentMenu,xp-1,i,yp-i-1))); + SelectMenu(ni); + goto skip; + } + } + } + } + } + } + if(pni=ni=FindNumMenu(CurrentMenu,xp,-1,-1)) + { + if(ni->nm_Selected) + { + if(ni=FindNumMenu(CurrentMenu,xp,yp,-1)) + { + UnSelectAllMenus(CurrentMenu); + SelectMenu(ni); + SelMenuItem=ni; + } + else + { + UnSelectAllMenus(CurrentMenu); + if(yp==(i=CountItems(pni,NM_ITEM))) + { + if(ni=(struct Node_MenuItem *)MyAllocVec(sizeof(struct Node_MenuItem),MEMF_ANY|MEMF_CLEAR)) + { + ni->nm_Node.ln_Name=ni->nm_Title; + ni->nm_Type=NM_ITEM; + strcpy(ni->nm_Title,GetCatString(MSG_NEWITEM)); + ppni=pni=(struct Node_MenuItem *)FindNumMenu(CurrentMenu,xp,yp-1,-1); + if(pni) + { + pni=(struct Node_MenuItem *)pni->nm_Node.ln_Succ; + if(pni->nm_Type==NM_SUB) + { + while(pni->nm_Node.ln_Succ) + { + if(pni->nm_Type!=NM_SUB) { pni=ppni; break; } + ppni=pni; + pni=(struct Node_MenuItem *)pni->nm_Node.ln_Succ; + } + } + else + pni=FindNumMenu(CurrentMenu,xp,yp-1,-1); + } + Insert(List(&nm->nm_MenuItem),Node(ni),Node(pni)); + SelectMenu(ni); + SelMenuItem=ni; + } + } + } + } + else + UnSelectAllMenus(CurrentMenu); + } + } + } +skip: + piRenderObject(CurrentMenu); + if(PropertiesMode==PM_MENU) if(PropertiesWnd) piInitObjectGUI(CurrentMenu); + PropertiesMode=PM_MENU; + break; + } + return 1; +} + +int FN_MouseMove_EditMenu(void) +{ + return 1; +} + +int FN_NewSize_EditMenu(void) +{ + struct Node_Menu *nm; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + nm->nm_Visible=nm->nm_Window->Width/150; + SetGadgetAttrs((struct Gadget *)nm->nm_HorizProp,nm->nm_Window,NULL, + PGA_Top, nm->nm_Top, + PGA_Total, nm->nm_Total, + PGA_Visible, nm->nm_Visible, + TAG_DONE); + piRenderObject(CurrentMenu); + return 1; +} + +int FN_MenuVerify_EditMenu(void) +{ + return 1; +} + +int FN_CloseWindow_EditMenu(void) +{ + piCloseWindow(CurrentMenu); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + return 0; +} + +int FN_ActiveWindow_EditMenu(void) +{ + struct Node_Menu *nm; + + piGetAttr(CurrentMenu,OBJ_Node,(ULONG *)&nm); + PropertiesMode=PM_MENU; + RefreshProperties(); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + SetWndSignals(); + return 1; +} + +int FN_IDCMPUpdate_EditMenu() +{ + switch(GetTagData(GA_ID,0,(struct TagItem *)EditMsg.IAddress)) + { + case 2: MENUFN_Right(); break; + case 3: MENUFN_Left(); break; + case 4: MENUFN_Horiz(); break; + } + return 1; +} diff --git a/GadToolsBox/menu.h b/GadToolsBox/menu.h new file mode 100755 index 0000000..5519899 --- /dev/null +++ b/GadToolsBox/menu.h @@ -0,0 +1,63 @@ +#ifndef GTB_MENU_H +#define GTB_MENU_H +/* +** Menu +*/ + +#define ID_MENU MAKE_ID('M','E','N','U') // Menu Chunk + +#define MYMN_Toggle (1<<0) +#define MYMN_NewLookMenus (1<<1) +#define MYMN_Disabled (1<<2) +#define MYMN_Checked (1<<3) +#define MYMN_BarLabel (1<<4) +#define MYMN_PopUp (1<<5) + +struct Node_Menu +{ + ULONG nm_ID; + struct MinList nm_MenuItem; // List of menus + struct Menu *nm_Menu; + struct NewMenu *nm_NewMenu; + struct Window *nm_Window; + struct Page *nm_Pages; + LONG nm_Top,nm_Visible,nm_Total; + Object *nm_LeftButton,*nm_RightButton,*nm_HorizProp; + + TEXT nm_Label[128]; + ULONG nm_Flags; +}; + +struct Node_MenuItem +{ + struct Node nm_Node; // Next item in list + UBYTE nm_Selected; + + TEXT nm_Label[128]; + TEXT nm_Title[128]; + UBYTE nm_Type; + ULONG nm_Flags; + ULONG nm_MutEx; + TEXT nm_Key[2]; +}; + +ULONG Dispatcher_Menu(piClass *,piObject *,Msg); +ULONG INIT_Menu(piClass *,piObject *,Msg); +ULONG APPLY_Menu(piClass *,piObject *,Msg); +ULONG CREATE_Menu(piClass *,piObject *,Msg); +ULONG DELETE_Menu(piClass *,piObject *,Msg); +ULONG NEW_Menu(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Menu(piClass *,piObject *,Msg); +ULONG RENDER_Menu(piClass *,piObject *,Msg); +ULONG SET_Menu(piClass *,piObject *,struct piSet *); +ULONG GET_Menu(piClass *,piObject *,struct piGet *); +ULONG READ_Menu(piClass *,piObject *,struct piIO *); +ULONG WRITE_Menu(piClass *,piObject *,struct piIO *); +ULONG CUT_Menu(piClass *,piObject *,Msg); +ULONG COPY_Menu(piClass *,piObject *,struct piCopy *); +void DisposeAllMenus(void); +void DeleteAllMenus(void); +int FN_MouseButtons_EditMenu(void); +int FN_IDCMPUpdate_EditMenu(void); + +#endif diff --git a/GadToolsBox/objects.c b/GadToolsBox/objects.c new file mode 100755 index 0000000..1a4f3d7 --- /dev/null +++ b/GadToolsBox/objects.c @@ -0,0 +1,882 @@ +/* +** Objects handling +*/ + +#include"includes.h" + +piClass *piMakeClass(ULONG Type,piClass *Super,ULONG size) +{ + piClass *cl=NULL; + + if(cl=AllocVec(sizeof(piClass),MEMF_PUBLIC)) + { + cl->Super=Super; + cl->Type=Type; + cl->Size=size; + if(!Super) + switch(Type) + { + case CLASS_GUI: +// cl->Dispatcher=Dispatcher_GUI; + break; + case CLASS_GADGET: + cl->Dispatcher=Dispatcher_Gadget; + break; + case CLASS_WINDOW: + cl->Dispatcher=Dispatcher_Window; + break; + case CLASS_FRAME: + cl->Dispatcher=Dispatcher_Frame; + break; + case CLASS_MENU: + cl->Dispatcher=Dispatcher_Menu; + break; + case CLASS_IMAGE: + cl->Dispatcher=Dispatcher_Image; + break; + case CLASS_BINARY: +// cl->Dispatcher=Dispatcher_Binary; + break; + case CLASS_VERSION: + cl->Dispatcher=Dispatcher_Version; + break; + case CLASS_STRING: + cl->Dispatcher=Dispatcher_String; + break; + case CLASS_TEXT: +// cl->Dispatcher=Dispatcher_Text; + break; + case CLASS_SCREEN: + cl->Dispatcher=Dispatcher_Screen; + break; + } + } + return cl; +} + +void piFreeClass(piClass *cl) +{ + MyFreeVec(cl); +} + +ULONG piOpenClass(piClass *cl) +{ + ULONG msg; + + msg=OM_OPEN; + if(cl) + return cl->Dispatcher(cl,NULL,(Msg)&msg); + else return FALSE; +} + +void piCloseClass(piClass *cl) +{ + ULONG msg; + + msg=OM_CLOSE; + if(cl) + cl->Dispatcher(cl,NULL,(Msg)&msg); +} + +ULONG piDoMethodA(piObject *o,Msg msg) +{ + if(o) if(o->piClass) return o->piClass->Dispatcher(o->piClass,o,msg); + else return NULL; +} + +ULONG piDoMethod(piObject *o,ULONG MethodID,...) +{ + return piDoMethodA(o,(Msg)&MethodID); +} + +ULONG piDoSuperMethodA(piClass *cl,piObject *o,Msg msg) +{ + if(cl) if(cl->Super) return cl->Super->Dispatcher(cl,o,msg); + else return NULL; +} + +ULONG piDoSuperMethod(piClass *cl,piObject *o,ULONG MethodID,...) +{ + return piDoSuperMethodA(cl,o,(Msg) &MethodID); +} + +piObject *piNewObject(piClass *cl,ULONG tags,...) +{ + piObject o,*obj; + + if(cl) + { + o.piClass=cl; + obj=(piObject *)piDoMethod(&o,OM_NEW,(ULONG)&tags); + obj->piClass=cl; + return obj; + } + return NULL; +} + +void piDisposeObject(piObject *o) +{ + if(o) piDoMethod(o,OM_DISPOSE); +} + +void piResetToDefaults(piObject *o) +{ + piDoMethod(o,OM_DEFAULT); +} + +void piInitObjectGUI(piObject *o) +{ + piDoMethod(o,OM_INIT); +} + +void piApplyObject(piObject *o) +{ + piDoMethod(o,OM_APPLY); +} + +void piRenderObject(piObject *o) +{ + piDoMethod(o,OM_RENDER); +} + +void piEraseObject(piObject *o) +{ + piDoMethod(o,OM_ERASE); +} + +void piAddObject(piObject *o,piObject *w) +{ + piDoMethod(o,OM_ADDTAIL,(ULONG)w); +} + +void piRemoveObject(piObject *o) +{ + piDoMethod(o,OM_REMOVE); +} + +void piSetAttrs(piObject *o,ULONG tags, ...) +{ + piDoMethod(o,OM_SET,(ULONG)&tags); +} + +ULONG piGetAttr(piObject *o,ULONG tag,ULONG *storage) +{ + return piDoMethod(o,OM_GET,(ULONG)tag,(ULONG)storage); +} + +ULONG piOpenWindow(piObject *o) +{ + return piDoMethod(o,OM_CREATE); +} + +void piCloseWindow(piObject *o) +{ + piDoMethod(o,OM_DELETE); +} + +int piSetupObject(piObject *o) +{ + return (int)piDoMethod(o,OM_SETUP); +} + +LONG piReadObject(piObject *o,struct IFFHandle *iffh) +{ + return (LONG) piDoMethod(o,OM_READ,iffh); +} + +LONG piWriteObject(piObject *o,struct IFFHandle *iffh) +{ + return (LONG) piDoMethod(o,OM_WRITE,iffh); +} + +UWORD piCX(piObject *o) +{ + return (UWORD) piDoMethod(o,OM_COMPUTE,CT_LEFT); +} + +UWORD piCY(piObject *o) +{ + return (UWORD) piDoMethod(o,OM_COMPUTE,CT_TOP); +} + +UWORD piCW(piObject *o) +{ + return (UWORD) piDoMethod(o,OM_COMPUTE,CT_WIDTH); +} + +UWORD piCH(piObject *o) +{ + return (UWORD) piDoMethod(o,OM_COMPUTE,CT_HEIGHT); +} + +int piCutObject(piObject *o) +{ + return (int) piDoMethod(o,OM_CUT); +} + +int piCopyObject(piObject *o,ULONG where) +{ + return (int) piDoMethod(o,OM_COPY,where); +} + +void piPasteObject(piObject *o) +{ + piDoMethod(o,OM_PASTE); +} + +/****************************************************************************/ + +UBYTE CheckObjectClickPosition(piObject *o,UWORD x,UWORD y) +{ + UWORD gx,gy,gw,gh; + struct Node_Gadget *ng; + struct Node_Window *nw; + + switch(o->piClass->Type) + { + case CLASS_GADGET: + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); + gx=piCX(o); + gy=piCY(o); +// if(!ng->ng_RelWidth) + gw=piCW(o);// else gw=nw->nw_Width+ng->ng_Width+gx; +// if(!ng->ng_RelHeight) +gh=piCH(o);// else gh=nw->nw_Height+ng->ng_Height+gy; + break; + default: + gx=piCX(o); + gy=piCY(o); + gw=piCW(o); + gh=piCH(o); + break; + } + + + if(xgx+gw || ygy+gh) return CP_OUTSIDE; + + if(x>=gx && x<=gx+5 && y>=gy && y<=gy+5 ) return CP_SIZE_LEFTUP; + if(x<=gx+gw && x>=gx+gw-5 && y>=gy && y<=gy+5 ) return CP_SIZE_RIGHTUP; + if(x<=gx+gw && x>=gx+gw-5 && y<=gy+gh && y>=gy+gh-5) return CP_SIZE_RIGHTDOWN; + if(x>=gx && x<=gx+5 && y<=gy+gh && y>=gy+gh-5) return CP_SIZE_LEFTDOWN; + + if(x<=gx+(gw)/2+3 && x>=gx+(gw)/2-3 && y>=gy && y<=gy+5 ) return CP_SIZE_UP; + if(x<=gx+(gw)/2+3 && x>=gx+(gw)/2-3 && y<=gy+gh && y>=gy+gh-5 ) return CP_SIZE_DOWN; + if(x>=gx && x<=gx+5 && y<=gy+(gh)/2+3 && y>=gy+(gh)/2-3) return CP_SIZE_LEFT; + if(x<=gx+gw && x>=gx+gw-5 && y<=gy+(gh)/2+3 && y>=gy+(gh)/2-3) return CP_SIZE_RIGHT; + + return CP_MOVE; +} + +int UnSelectAllObjects(piObject *w) +{ + piObject *o; + struct List *l; + ULONG sel,s=0; + + piGetAttr(w,WNOBJ_GadgetList,(ULONG *)&l); + for(o=(piObject *)GetHead(l);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Select,(ULONG *)&sel); + if(sel) + { + s=1; + piSetAttrs(o,OBJ_Select,FALSE,TAG_DONE); + piRenderObject(o); + } + } + piGetAttr(w,WNOBJ_FrameList,(ULONG *)&l); + for(o=(piObject *)GetHead(l);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,OBJ_Select,(ULONG *)&sel); + if(sel) + { + s=1; + piSetAttrs(o,OBJ_Select,FALSE,TAG_DONE); + piRenderObject(o); + } + } + return (int)s; +} + +void SetObjectDims(piObject *o,UWORD sx,UWORD sy,UWORD ex,UWORD ey) +{ + ULONG OffX,OffY; + struct Node_Window *nw; + struct Node_Gadget *ng; + struct Node_Frame *nf; + BOOL rw=FALSE,rh=FALSE; + + switch(o->piClass->Type) + { + case CLASS_GADGET: + piGetAttr(o,OBJ_Node,(ULONG *)&ng); + piGetAttr(ng->ng_Window,OBJ_Node,(ULONG *)&nw); +// if(ng->ng_RelWidth) rw=TRUE; +// if(ng->ng_RelHeight) rh=TRUE; + break; + case CLASS_FRAME: + piGetAttr(o,OBJ_Node,(ULONG *)&nf); + piGetAttr(nf->nf_Window,OBJ_Node,(ULONG *)&nw); + break; + } + if(nw->nw_MyFlags&MYWA_DragToolVert) + OffX=(8); + else + OffX=(Scr->WBorLeft); + + if(nw->nw_MyFlags&MYWA_DragToolVert) + OffY=(Scr->WBorTop); + else + { + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + OffY=(8); + else + OffY=(Scr->RastPort.TxHeight+Scr->WBorTop+1); + } + + if(sxnw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)-ng->ng_X-(ex-sx):(ex-sx),TAG_DONE); + } + else + { + piSetAttrs(o,GA_Left,ex-OffX,TAG_DONE); + if(ex!=-1) piSetAttrs(o,GA_Width,rw?(nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight)-ng->ng_X-(sx-ex):(sx-ex),TAG_DONE); + } + if(synw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)-ng->ng_Y-(ey-sy):(ey-sy),TAG_DONE); + } + else + { + piSetAttrs(o,GA_Top,ey-OffY,TAG_DONE); + if(ey!=-1) piSetAttrs(o,GA_Height,rh?(nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom)-ng->ng_Y-(sy-ey):(sy-ey),TAG_DONE); + } +} + +void piShowGrid(piObject *o) +{ + ULONG x,y,xs,ys,xo,yo,wo,ho; + struct Node_Window *nw; + piObject *wobj; + + if(GUI.gui_GridShow) + { + piGetAttr(o,GA_Left,&xo); + piGetAttr(o,GA_Top,&yo); + piGetAttr(o,GA_Width,&wo); + piGetAttr(o,GA_Height,&ho); + piGetAttr(o,OBJ_Window,(ULONG *)&wobj); + piGetAttr(wobj,OBJ_Node,(ULONG *)&nw); + xs=xo/GUI.gui_Grid[0]; + ys=yo/GUI.gui_Grid[1]; + + SetDrMd(nw->nw_Window->RPort,JAM1); + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[SHADOWPEN]); + for(x=xs*GUI.gui_Grid[0];xnw_Window->RPort,nw->nw_Window->BorderLeft+x,nw->nw_Window->BorderTop+y); + } + } + } +} + +void SelectObjects(piObject *wo,UWORD x,UWORD y,UWORD w,UWORD h) +{ + struct List *l; + piObject *o; + ULONG x1,y1,w1,h1,f=TRUE; + ULONG OffX,OffY; + struct Node_Window *nw; + + piGetAttr(wo,OBJ_Node,(ULONG *)&nw); + if(nw->nw_MyFlags&MYWA_DragToolVert) + OffX=(8); + else + OffX=(Scr->WBorLeft); + + if(nw->nw_MyFlags&MYWA_DragToolVert) + OffY=(Scr->WBorTop); + else + { + if(nw->nw_MyFlags&MYWA_DragToolHoriz) + OffY=(8); + else + OffY=(Scr->RastPort.TxHeight+Scr->WBorTop+1); + } + + x-=OffX; y-=OffY; + w-=OffX; h-=OffY; + if(x>w) { x1=x; x=w; w=x1; } + if(y>h) { y1=y; y=h; h=y1; } + + piGetAttr(wo,WNOBJ_GadgetList,(ULONG *)&l); + for(o=(piObject *)GetHead(l);GetSucc(o);o=(piObject *)GetSucc(o)) + { + piGetAttr(o,GA_Left,&x1); + piGetAttr(o,GA_Top,&y1); + piGetAttr(o,GA_Width,&w1); + piGetAttr(o,GA_Height,&h1); + if((x1>=x) && (y1>=y) && (x1+w1<=w) && (y1+h1<=h)) + { + if(f) CurrentGadget=o; + f=FALSE; + piSetAttrs(o,OBJ_Select,TRUE,TAG_DONE); + } + } +} + +/****************************************************************************/ + +struct OLVNode +{ + struct LVNode lvnode; + piObject *obj; +}; + +struct LVList ObjectList; +struct OLVNode ObjectNode[]= +{ + NULL,NULL,NULL,"Windows",NULL,NULL,0,(piObject *)0, + NULL,NULL,NULL,"Menus",NULL,NULL,0,(piObject *)1, + NULL,NULL,NULL,"Images",NULL,NULL,0,(piObject *)2, + NULL,NULL,NULL,"Strings",NULL,NULL,0,(piObject *)3, + NULL,NULL,NULL,"Screen",NULL,NULL,0,(piObject *)4, + NULL,NULL,NULL,"Version",NULL,NULL,0,(piObject *)5 +}; + +LONG ObjTop=0,ObjVisible=0,ObjTotal=0; + +#define IM_WIDTH(o) ((struct Image *) o)->Width +#define IM_HEIGHT(o) ((struct Image *) o)->Height +Object *ObjDownButton,*ObjUpButton,*ObjVertProp; + +int OBJFN_Up(void) +{ + ObjTop--; + if(ObjTop<0L) ObjTop=0L; + SetGadgetAttrs(ObjectGadgets[GD_OBJLIST],ObjectWnd,NULL,LIST_Top,ObjTop,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ObjVertProp,ObjectWnd,NULL,PGA_Top,ObjTop,TAG_DONE); + return 1; +} + +int OBJFN_Down(void) +{ + ObjTop++; + if((ObjVisible(ObjTotal-ObjVisible))) ObjTop=ObjTotal-ObjVisible; + SetGadgetAttrs(ObjectGadgets[GD_OBJLIST],ObjectWnd,NULL,LIST_Top,ObjTop,TAG_DONE); + SetGadgetAttrs((struct Gadget *)ObjVertProp,ObjectWnd,NULL,PGA_Top,ObjTop,TAG_DONE); + return 1; +} + +int OBJFN_Vert(void) +{ + GetAttr(PGA_Top,ObjVertProp,(ULONG *)&ObjTop); + SetGadgetAttrs(ObjectGadgets[GD_OBJLIST],ObjectWnd,NULL,LIST_Top,ObjTop,TAG_DONE); + return 1; +} + +int OpenObjectList() +{ + if(!ObjectWnd) + { + ObjectNode[0].lvnode.ln_Name=GetCatString(MSG_MainObjWindow_MITEM)+2; + ObjectNode[1].lvnode.ln_Name=GetCatString(MSG_MainObjMenu_MITEM)+2; + ObjectNode[2].lvnode.ln_Name=GetCatString(MSG_MainObjImage_MITEM)+2; + ObjectNode[3].lvnode.ln_Name=GetCatString(MSG_MainObjStrings_MITEM)+2; + ObjectNode[4].lvnode.ln_Name=GetCatString(MSG_MainObjScreen_MITEM)+2; + ObjectNode[5].lvnode.ln_Name=GetCatString(MSG_MainObjVersion_MITEM)+2; + unless(ObjDownButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_DownImage, + GA_RelRight, 1-(IM_WIDTH(gui_DownImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)), + GA_RightBorder,TRUE, + GA_UserData,OBJFN_Down, + GA_ID, 2, + TAG_DONE)) return 1; + unless(ObjUpButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_UpImage, + GA_RelRight, 1-(IM_WIDTH(gui_UpImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)+IM_HEIGHT(gui_UpImage)), + GA_RightBorder,TRUE, + GA_Previous,ObjDownButton, + GA_UserData, OBJFN_Up, + GA_ID, 3, + TAG_DONE)) return 1; + unless(ObjVertProp=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEVERT, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_RelRight, -(IM_WIDTH(gui_SizeImage)-5), + GA_Top, Scr->WBorTop+Scr->Font->ta_YSize+1+1, + GA_Width, IM_WIDTH(gui_SizeImage)-2-2-4, + GA_RelHeight, -(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_UpImage)+IM_HEIGHT(gui_DownImage)+Scr->WBorTop+Scr->Font->ta_YSize+1+1+1), + GA_RightBorder, TRUE, + GA_Previous,ObjUpButton, + GA_UserData, OBJFN_Vert, + GA_ID, 4, + PGA_Top, ObjTop, + PGA_Total, ObjTotal, + PGA_Visible, ObjVisible, + TAG_DONE)) return 1; + + OpenWindow_Object(); + Tree_NewList(&ObjectList); + UpdateObjectList(); + + GetAttr(LIST_Visible,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjVisible); + GetAttr(LIST_Top,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjTop); + SetGadgetAttrs((struct Gadget *)ObjVertProp,ObjectWnd,NULL, + PGA_Top, ObjTop, + PGA_Total, ObjTotal, + PGA_Visible, ObjVisible, + TAG_DONE); + + AddGList(ObjectWnd,(struct Gadget *)ObjDownButton,-1,-1,NULL); + RefreshGList((struct Gadget *)ObjDownButton,ObjectWnd,NULL,-1); + SetWndSignals(); + MenuCheck(MainMenus,FULLMENUNUM(3,1,0),TRUE); + SetFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_OBJECTSOPEN); + } + else + { + ActivateWindow(ObjectWnd); + WindowToFront(ObjectWnd); + UpdateObjectList(); + } + return NULL; +} + +void CloseObjectList() +{ + struct LVNode *ln,*sln; + + if(ObjectWnd) + { + while(ln=Tree_RemTail(&ObjectList)) + if(ln->ln_Sub) while(sln=Tree_RemSubTail(ln)) if(sln->ln_Parent) MyFreeVec(sln); + Tree_NewList(&ObjectList); + RemoveGList(ObjectWnd,(struct Gadget *)ObjDownButton,-1); + if(ObjVertProp) DisposeObject(ObjVertProp); + if(ObjDownButton) DisposeObject(ObjDownButton); + if(ObjUpButton) DisposeObject(ObjUpButton); + CloseWindow_Object(); + SetWndSignals(); + MenuCheck(MainMenus,FULLMENUNUM(3,1,0),FALSE); + ClearFlag(GUI.gui_Prefs->pr_Flags,PRFLAG_OBJECTSOPEN); + } +} + +void RefreshObjectList() +{ + if(ObjectWnd) SetGadgetAttrs(ObjectGadgets[GD_OBJLIST],ObjectWnd,NULL,LIST_Labels,&ObjectList,TAG_DONE); +} + +void UpdateObjectList() +{ + piObject *o; + struct LVNode *ln,*sln; + + if(ObjectWnd) + { + while(ln=Tree_RemTail(&ObjectList)) + if(ln->ln_Sub) while(sln=Tree_RemSubTail(ln)) if(sln->ln_Parent) MyFreeVec(sln); + + Tree_NewList(&ObjectList); + Tree_AddTail(&ObjectList,&ObjectNode[0]); + for(o=(piObject *)GetHead(List(&GUI.gui_List_Window));GetSucc(o);o=(piObject *)GetSucc(o)) + { + if(ln=MyAllocVec(sizeof(struct LVNode)+4,MEMF_ANY|MEMF_CLEAR)) + { + ln->ln_Name=o->ln_Name; + ((struct OLVNode *)ln)->obj=o; + Tree_AddSubTail(&ObjectList,&ObjectNode[0],ln); + } + } + Tree_AddTail(&ObjectList,&ObjectNode[1]); + for(o=(piObject *)GetHead(List(&GUI.gui_List_Menu));GetSucc(o);o=(piObject *)GetSucc(o)) + { + if(ln=MyAllocVec(sizeof(struct LVNode)+4,MEMF_ANY|MEMF_CLEAR)) + { + ln->ln_Name=o->ln_Name; + ((struct OLVNode *)ln)->obj=o; + Tree_AddSubTail(&ObjectList,&ObjectNode[1],ln); + } + } + Tree_AddTail(&ObjectList,&ObjectNode[2]); + for(o=(piObject *)GetHead(List(&GUI.gui_List_Image));GetSucc(o);o=(piObject *)GetSucc(o)) + { + if(ln=MyAllocVec(sizeof(struct LVNode)+4,MEMF_ANY|MEMF_CLEAR)) + { + ln->ln_Name=o->ln_Name; + ((struct OLVNode *)ln)->obj=o; + Tree_AddSubTail(&ObjectList,&ObjectNode[2],ln); + } + } + Tree_AddTail(&ObjectList,&ObjectNode[3]); + Tree_AddTail(&ObjectList,&ObjectNode[4]); + Tree_AddTail(&ObjectList,&ObjectNode[5]); + SetGadgetAttrs(ObjectGadgets[GD_OBJLIST],ObjectWnd,NULL,LIST_Labels,&ObjectList,TAG_DONE); + + for(ln=ObjectList.lh_Head,ObjTotal=0;Tree_NextNode(ln);ln=Tree_NextNode(ln),ObjTotal++); + GetAttr(LIST_Visible,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjVisible); + GetAttr(LIST_Top,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjTop); + SetGadgetAttrs((struct Gadget *)ObjVertProp,ObjectWnd,NULL, + PGA_Top, ObjTop, + PGA_Total, ObjTotal, + PGA_Visible, ObjVisible, + TAG_DONE); + } +} + +int FN_MouseMove_Object() +{ + return 1; +} + +int FN_IDCMPUpdate_Object() +{ + switch(GetTagData(GA_ID,0,(struct TagItem *)ObjectMsg.IAddress)) + { + case 2: OBJFN_Down(); break; + case 3: OBJFN_Up(); break; + case 4: OBJFN_Vert(); break; + default: FN_OBJLIST_Clicked(); break; + } + return 1; +} + +int FN_CloseWindow_Object() +{ + CloseObjectList(); + return 2; +} + +int FN_NewSize_Object(void) +{ + struct LVNode *ln; + + for(ln=ObjectList.lh_Head,ObjTotal=0;Tree_NextNode(ln);ln=Tree_NextNode(ln),ObjTotal++); + GetAttr(LIST_Visible,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjVisible); + GetAttr(LIST_Top,ObjectGadgets[GD_OBJLIST],(ULONG *)&ObjTop); + SetGadgetAttrs((struct Gadget *)ObjVertProp,ObjectWnd,NULL, + PGA_Top, ObjTop, + PGA_Total, ObjTotal, + PGA_Visible, ObjVisible, + TAG_DONE); + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X=ObjectWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y=ObjectWnd->TopEdge; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X=ObjectWnd->Width; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y=ObjectWnd->Height; + FindTagItem(WA_Left,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X; + FindTagItem(WA_Top,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y; + FindTagItem(WA_Width,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X; + FindTagItem(WA_Height,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y; + return 1; +} + +int FN_ChangeWindow_Object(void) +{ + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X=ObjectWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y=ObjectWnd->TopEdge; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X=ObjectWnd->Width; + GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y=ObjectWnd->Height; + FindTagItem(WA_Left,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].X; + FindTagItem(WA_Top,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT].Y; + FindTagItem(WA_Width,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].X; + FindTagItem(WA_Height,(struct TagItem *)ObjectWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_OBJECT_DIMS].Y; + return 1; +} + +ULONG OSSec=0,OSMic=0,OESec=0,OEMic=0; +struct LVNode *prev=NULL; + +int FN_OBJLIST_Clicked() +{ + struct LVNode *lvn; + piObject *o,*po; + + CurrentTime(&OESec,&OEMic); + GetAttr(LIST_Selected,ObjectGadgets[GD_OBJLIST],(ULONG *)&lvn); + FN_NewSize_Object(); + if(DoubleClick(OSSec,OSMic,OESec,OEMic) && lvn==prev) + { + if(lvn->ln_Parent) + { + po=(((struct OLVNode *)lvn->ln_Parent)->obj); + o=(((struct OLVNode *)lvn)->obj); + } + else + { + po=(((struct OLVNode *)lvn)->obj); + o=NULL; + } + + switch((ULONG)po) + { + case 0: + if(o) + { + ActiveObject=ID_WIND; + CurrentWindow=o; + CurrentWindowNode=(struct Node_Window *)OBJECT_DATA(CurrentWindow); + piOpenWindow(o); + FN_ActiveWindow_Edit(); + } + break; + case 1: + if(o) + { + ActiveObject=ID_MENU; + CurrentMenu=o; + piOpenWindow(o); + FN_ActiveWindow_EditMenu(); + } + break; + case 2: + if(o) + { + ActiveObject=ID_IMGE; + CurrentImage=o; + piOpenWindow(o); + FN_ActiveWindow_EditImage(); + } + break; + case 3: + FN_MainObjStringsOpen_Selected(); + break; + case 4: + FN_MainObjScreenOpen_Selected(); + break; + case 5: + FN_MainObjVersionOpen_Selected(); + break; + } + CurrentTime(&OSSec,&OSMic); + return 1; + } + else + { + if(lvn->ln_Parent) + { + po=(((struct OLVNode *)lvn->ln_Parent)->obj); + o=(((struct OLVNode *)lvn)->obj); + } + else + { + po=(((struct OLVNode *)lvn)->obj); + o=NULL; + } + ActiveObject=NULL; + switch((ULONG)po) + { + case 0: + if(o) + { + ActiveObject=ID_WIND; + CurrentWindow=o; + CurrentWindowNode=(struct Node_Window *)OBJECT_DATA(CurrentWindow); + } + break; + case 1: + if(o) + { + ActiveObject=ID_MENU; + CurrentMenu=o; + } + break; + case 2: + if(o) + { + ActiveObject=ID_IMGE; + CurrentImage=o; + } + break; + case 3: + FN_MainObjStringsClose_Selected(); + break; + case 4: + FN_MainObjScreenClose_Selected(); + break; + case 5: + FN_MainObjVersionClose_Selected(); + break; + } + RefreshProperties(); + } + prev=lvn; + CurrentTime(&OSSec,&OSMic); + return 1; +} + +int FN_RawKey_Object() +{ + struct LVNode *lvn; + piObject *o,*po; + + GetAttr(LIST_Selected,ObjectGadgets[GD_OBJLIST],(ULONG *)&lvn); + switch(ObjectMsg.Code) + { + case 0x5f: // Help + if(AmigaGuideObj) gtbSendAmigaGuideCmd(AmigaGuideObj,"ALINK main"); + break; + case 0x46: // Del + if(lvn->ln_Parent) + { + po=(((struct OLVNode *)lvn->ln_Parent)->obj); + o=(((struct OLVNode *)lvn)->obj); + } + else + { + po=(((struct OLVNode *)lvn)->obj); + o=NULL; + } + switch((ULONG)po) + { + case 0: + if(o) + { + CurrentWindow=o; + CurrentWindowNode=(struct Node_Window *)OBJECT_DATA(CurrentWindow); + FN_MainObjWindowDelete_Selected(); + } + break; + case 1: + if(o) + { + CurrentMenu=o; + FN_MainObjMenuDelete_Selected(); + } + break; + case 2: + if(o) + { + CurrentImage=o; + FN_MainObjImageDelete_Selected(); + } + break; + case 3: + FN_MainObjStringsClose_Selected(); + break; + case 4: + FN_MainObjScreenClose_Selected(); + break; + case 5: + FN_MainObjVersionClose_Selected(); + break; + } + ActiveObject=NULL; + break; + } + UpdateObjectList(); + RefreshProperties(); + return 1; +} diff --git a/GadToolsBox/objects.h b/GadToolsBox/objects.h new file mode 100755 index 0000000..dfdf4ab --- /dev/null +++ b/GadToolsBox/objects.h @@ -0,0 +1,180 @@ +#ifndef GTB_OBJECTS_H +#define GTB_OBJECTS_H +/* +** Objects +*/ + +#define OBJECT_DATA(o) (((UBYTE *)o)+sizeof(piObject)) +#define GetHead(x) (((struct List *)x)->lh_Head) +#define GetSucc(x) (x->ln_Succ) +#define GetPred(x) (x->ln_Pred) + +// ClassIDs + +#define CLASS_GUI 0 // struct GUI +#define CLASS_GADGET 1 // struct Node_Gadget +#define CLASS_WINDOW 2 // struct Node_Window +#define CLASS_FRAME 3 // struct Node_Frame +#define CLASS_MENU 4 // struct Node_Menu +#define CLASS_POINTER 5 // struct Node_Pointer +#define CLASS_BINARY 6 // struct Node_Binary +#define CLASS_VERSION 7 // struct Node_Version +#define CLASS_STRING 8 // struct Node_String +#define CLASS_TEXT 9 // struct Node_Text +#define CLASS_SCREEN 10 // struct Node_Screen +#define CLASS_TOOLBAR 11 // struct Node_ToolBar +#define CLASS_IMAGE 12 // struct Node_Image + +typedef struct piClass piClass; +typedef struct piObject piObject; + +struct piClass +{ + ULONG (*Dispatcher)(piClass *s,piObject *o,Msg m); + piClass *Super; + ULONG Size; + ULONG Type; +}; + +struct piObject +{ + piObject *ln_Succ; + piObject *ln_Pred; + UWORD ln_pad; + STRPTR ln_Name; + piClass *piClass; +}; + +// OM_NEW, OM_SET +struct piSet +{ + ULONG MethodID; + struct TagItem *Tags; +}; + +// OM_GET +struct piGet +{ + ULONG MethodID; + ULONG TagID; + ULONG *TagData; +}; + +// OM_ADDTAIL, OM_RENDER +struct piWindow +{ + ULONG MethodID; + piObject *Window; +}; + +// OM_HITTEST +struct piHitTest +{ + ULONG MethodID; + ULONG X; + ULONG Y; +}; + +// OM_COMPUTE +struct piCompute +{ + ULONG MethodID; + ULONG Type; +}; + +// OM_READ, OM_WRITE +struct piIO +{ + ULONG MethodID; + struct IFFHandle *IFFh; +}; + +// OM_COPY +struct piCopy +{ + ULONG MethodID; + ULONG Copy; +}; + +#define CT_LEFT 0 +#define CT_TOP 1 +#define CT_WIDTH 2 +#define CT_HEIGHT 3 + +#define OM_SETUP 201 // Not used +#define OM_CREATE 202 // Add object to window +#define OM_DELETE 203 // Remove object from window +#define OM_COMPUTE 204 // Compute positions +#define OM_ERASE 205 // Erase object on window +#define OM_READ 206 // Read object from file +#define OM_WRITE 207 // Write object to file +#define OM_RENDER 208 // Render object on window +#define OM_HITTEST 209 // Check object for hit +#define OM_OPEN 210 // Create properties gadgets +#define OM_CLOSE 211 // Free properties gadgets +#define OM_INIT 212 // Init properties gadgets +#define OM_APPLY 213 // Apply changes to object +#define OM_DEFAULT 214 // Reset gadget to default values (only for new gadgets) +#define OM_CUT 215 // Cut object to clipboard +#define OM_COPY 216 // Copy object to clipboard +#define OM_PASTE 217 // Paste object from clipboard + +#define OBJ_Select (TAG_USER+1) +#define OBJ_Window (TAG_USER+2) +#define OBJ_Node (TAG_USER+3) +#define OBJ_Properties (TAG_USER+4) + +#define COPY_CLIP 0 +#define COPY_UNDO 1 + +// prototypes + +piClass *piMakeClass(ULONG, piClass *, ULONG); +void piFreeClass(piClass *); +ULONG piOpenClass(piClass *); +void piCloseClass(piClass *); +ULONG piDoMethod(piObject *, ULONG, ...); +ULONG piDoSuperMethod(piClass *, piObject *, ULONG, ...); +ULONG piDoMethodA(piObject *, Msg); +ULONG piDoSuperMethodA(piClass *, piObject *, Msg); +piObject *piNewObject(piClass *, ULONG, ...); +void piDisposeObject(piObject *); +void piResetToDefaults(piObject *); +void piInitObjectGUI(piObject *); +void piApplyObject(piObject *); +void piSetAttrs(piObject *,ULONG, ...); +ULONG piGetAttr(piObject *, ULONG, ULONG *); +void piRenderObject(piObject *); +void piEraseObject(piObject *); +ULONG piOpenWindow(piObject *); +void piCloseWindow(piObject *); +UWORD piCX(piObject *); +UWORD piCY(piObject *); +UWORD piCW(piObject *); +UWORD piCH(piObject *); +int piCutObject(piObject *); +int piCopyObject(piObject *,ULONG); +void piPasteObject(piObject *); +int piSetupObject(piObject *); +LONG piWriteObject(piObject *,struct IFFHandle *); +LONG piReadObject(piObject *,struct IFFHandle *); +void piAddObject(piObject *,piObject *); +void piRemoveObject(piObject *); +LONG piReadObject(piObject *,struct IFFHandle *); +LONG piWriteObject(piObject *,struct IFFHandle *); + +UBYTE CheckObjectClickPosition(piObject *,UWORD,UWORD); +int UnSelectAllObjects(piObject *); +void SetObjectDims(piObject *,UWORD,UWORD,UWORD,UWORD); +void piShowGrid(piObject *); +//UWORD IGX(UWORD); +//UWORD IGY(UWORD); +//UWORD IGW(UWORD); +//UWORD IGH(UWORD); +void SelectObjects(piObject *,UWORD,UWORD,UWORD,UWORD); +void UpdateObjectList(void); +void RefreshObjectList(void); +int OpenObjectList(void); +void CloseObjectList(void); + +#endif /* GTB_OBJECTS_H */ diff --git a/GadToolsBox/screen.c b/GadToolsBox/screen.c new file mode 100755 index 0000000..3ab80f4 --- /dev/null +++ b/GadToolsBox/screen.c @@ -0,0 +1,600 @@ +/* +** GadToolsBox v3 - Screen Managment +*/ + +#include"includes.h" + +/* +** Defines +*/ + +extern ULONG ScreenNum; + +/* +** Functions +*/ + +ULONG Dispatcher_Screen(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval=NULL; + + switch(msg->MethodID) + { + case OM_INIT: + retval=INIT_Screen(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Screen(cl,o,msg); + break; + case OM_NEW: + retval=NEW_Screen(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Screen(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Screen(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Screen(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=OPEN_Screen(cl,o,msg); + break; + case OM_DELETE: + retval=CLOSE_Screen(cl,o,msg); + break; + case OM_READ: + retval=READ_Screen(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Screen(cl,o,(struct piIO *)msg); + break; + } + return retval; +} + +ULONG NEW_Screen(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Screen *ns; + + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + ns=(struct Node_Screen *)OBJECT_DATA(obj); + obj->ln_Name=ns->ns_Title; + ns->ns_Width=ScrWidth; + ns->ns_Height=ScrHeight; + ns->ns_Depth=ScrDepth; + ns->ns_Type=PUBLICSCREEN; + ns->ns_DisplayID=ScrDisplayID; + strcpy(ns->ns_Title,GetCatString(MSG_CHANGEME)); + strcpy(ns->ns_Public,GetCatString(MSG_CHANGEME)); + strcpy(ns->ns_FontName,GUI.gui_Prefs->pr_FontName); + ns->ns_MyFlags=MYSC_ShowTitle|MYSC_Draggable|MYSC_SharePens|MYSC_LikeWB; + ns->ns_FontSize=GUI.gui_Prefs->pr_FontSize; + + if(EditFontTF) CloseFont(EditFontTF); + EditFontTA.ta_Name=ns->ns_FontName; + EditFontTA.ta_YSize=ns->ns_FontSize; + EditFontTA.ta_Style=FS_NORMAL; + EditFontTA.ta_Flags=FPF_DISKFONT|FPF_DESIGNED; + EditFontTF=OpenDiskFont(&EditFontTA); + } + return (ULONG) obj; +} + +ULONG DISPOSE_Screen(piClass *cl,piObject *o,Msg msg) +{ + piDoMethod(o,OM_DELETE); + MyFreeVec(o); + return TRUE; +} + +ULONG OPEN_Screen(piClass *cl,piObject *o,Msg msg) +{ + if(!ScreenWnd) + { + OpenWindow_Screen(); + piInitObjectGUI(o); + SetWndSignals(); + } + else + ActivateWindow(ScreenWnd); + return TRUE; +} + +ULONG CLOSE_Screen(piClass *cl,piObject *o,Msg msg) +{ + if(ScreenWnd) + { + piApplyObject(o); + CloseWindow_Screen(); + SetWndSignals(); + } + return TRUE; +} + +ULONG SET_Screen(piClass *cl,piObject *o,struct piSet *msg) +{ +// struct TagItem *t; +// struct Node_Screen *ns=(struct Node_Screen *)OBJECT_DATA(o); + + return TRUE; +} + +ULONG GET_Screen(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Screen *ns=(struct Node_Screen *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case OBJ_Node: *(msg->TagData)=(ULONG)ns; return TRUE; + case GA_Width: *(msg->TagData)=(ULONG)ns->ns_Width; return TRUE; + case GA_Height: *(msg->TagData)=(ULONG)ns->ns_Height; return TRUE; + default: *(msg->TagData)=NULL; return FALSE; + } +} + +ULONG READ_Screen(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Screen *ns; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + ReadChunkBytes(msg->IFFh,(APTR)&ns->ns_Width,SIZE(Node_Screen,ns_Width)); + + if(EditFontTF) CloseFont(EditFontTF); + EditFontTA.ta_Name=ns->ns_FontName; + EditFontTA.ta_YSize=ns->ns_FontSize; + EditFontTA.ta_Style=FS_NORMAL; + EditFontTA.ta_Flags=FPF_DISKFONT|FPF_DESIGNED; + EditFontTF=OpenDiskFont(&EditFontTA); + + return (ULONG)error; +} + +ULONG WRITE_Screen(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Screen *ns; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + if(error=PushChunk(msg->IFFh,NULL,ID_SCRN,SIZE(Node_Screen,ns_Width))) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)&ns->ns_Width,SIZE(Node_Screen,ns_Width)); + if(error=PopChunk(msg->IFFh)) return (ULONG) error; + return (ULONG)error; +} + +extern struct NameInfo NameInfo; + +ULONG INIT_Screen(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Screen *ns; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + GetAttr(PAGE_Active,ScreenGadgets[GD_SCREEN_PAGES], &active); + +// General + if(active==0) PropsWnd=ScreenWnd; else PropsWnd=NULL; + if(ns->ns_Type==TYPE_WORKBENCH) + { + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEFAULTID],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MAKEPUBLIC],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,TRUE); + } + else + { + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEFAULTID],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MAKEPUBLIC],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,ns->ns_MyFlags&MYSC_DefaultID); + } + SetString(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_TITLE],ns->ns_Title); + SetString(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_PUBNAME],ns->ns_Public); + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],ns->ns_Width); + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],ns->ns_Height); + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],ns->ns_Depth); + SetCheckMark(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MAKEPUBLIC],ns->ns_MyFlags&MYSC_MakePublic); + SetCheckMark(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_DEFAULTID],ns->ns_MyFlags&MYSC_DefaultID?FALSE:TRUE); + SetCycle(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_USE],ns->ns_Type); + if(ns->ns_MyFlags&MYSC_DefaultID) + { + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],"---"); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,TRUE); + } + else + { + GetDisplayInfoData(FindDisplayInfo(ns->ns_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],NameInfo.Name); + if(ns->ns_Type!=TYPE_WORKBENCH) DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,FALSE); + } + +// Flags + if(active==1) PropsWnd=ScreenWnd; else PropsWnd=NULL; + if(ns->ns_Type==TYPE_WORKBENCH) + { + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHOWTITLE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_BEHIND],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_QUIET],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_AUTOSCROLL],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_FULLPALETTE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_DRAGGABLE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_EXCLUSIVE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHAREPENS],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_INTERLEAVED],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_LIKEWORKBENCH],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_MINIMIZEISG],PropsWnd,TRUE); + } + else + { + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHOWTITLE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_BEHIND],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_QUIET],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_AUTOSCROLL],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_FULLPALETTE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_DRAGGABLE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_EXCLUSIVE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHAREPENS],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_INTERLEAVED],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_LIKEWORKBENCH],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_MINIMIZEISG],PropsWnd,FALSE); + } + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_SHOWTITLE],ns->ns_MyFlags&MYSC_ShowTitle); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_BEHIND],ns->ns_MyFlags&MYSC_Behind); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_QUIET],ns->ns_MyFlags&MYSC_Quiet); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_AUTOSCROLL],ns->ns_MyFlags&MYSC_AutoScroll); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_FULLPALETTE],ns->ns_MyFlags&MYSC_FullPalette); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_DRAGGABLE],ns->ns_MyFlags&MYSC_Draggable); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_EXCLUSIVE],ns->ns_MyFlags&MYSC_Exclusive); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_SHAREPENS],ns->ns_MyFlags&MYSC_SharePens); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_INTERLEAVED],ns->ns_MyFlags&MYSC_Interleaved); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_LIKEWORKBENCH],ns->ns_MyFlags&MYSC_LikeWB); + SetCheckMark(PropsWnd,PGSCR_FlagsGadgets[GD_PGSCR_MINIMIZEISG],ns->ns_MyFlags&MYSC_MinimizeISG); + return TRUE; +} + +ULONG APPLY_Screen(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Screen *ns; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + + strcpy(ns->ns_Title,GetString(PGSCR_GeneralGadgets[GD_PGSCR_TITLE])); + strcpy(ns->ns_Public,GetString(PGSCR_GeneralGadgets[GD_PGSCR_PUBNAME])); + ns->ns_Width=GetInteger(PGSCR_GeneralGadgets[GD_PGSCR_WIDTH]); + ns->ns_Height=GetInteger(PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT]); + ns->ns_Depth=GetInteger(PGSCR_GeneralGadgets[GD_PGSCR_DEPTH]); + + return TRUE; +} + +/******************************************************************************/ + +extern UWORD ScrWidth; +extern UWORD ScrHeight; +extern UWORD ScrDepth; +extern ULONG ScrDisplayID; +extern struct BevelBox BBOX_PROPERTIES_PAGES; +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Style[]; +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Flags[]; +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Flags3[]; +extern struct BevelBox BBOX_PREFS_PAGES; +extern struct BevelBox BBOX_SCREEN_PAGES; +extern struct BevelBox BBOX_SCREEN_PAGES_PGSCR_General[]; + +int FN_CloseWindow_Screen(void) +{ + piApplyObject(CurrentScreen); + piCloseWindow(CurrentScreen); + return 2; +} + +int FN_PGSCR_DEFAULTID_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + struct Window *PropsWnd; + + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code?FALSE:TRUE; + DoFlag(ns->ns_MyFlags,MYSC_DefaultID); + + PropsWnd=ScreenWnd; + if(ns->ns_MyFlags&MYSC_DefaultID) + { + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],"---"); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,TRUE); + } + else + { + GetDisplayInfoData(FindDisplayInfo(ns->ns_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],NameInfo.Name); + if(ns->ns_Type!=TYPE_WORKBENCH) DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,FALSE); + } + return 1; +} + +int FN_PGSCR_MODEID_GET_Clicked(void) +{ + struct Node_Screen *ns; + struct Window *PropsWnd; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + PropsWnd=ScreenWnd; + if(AslRequestTags(ScreenModeReq, + ASLSM_PubScreenName,GUI.gui_PubScreenName, + ASLSM_InitialHeight,Scr->Height-50, + ASLSM_InitialDisplayID,ns->ns_DisplayID, + ASLSM_InitialDisplayWidth,ns->ns_Width, + ASLSM_InitialDisplayHeight,ns->ns_Height, + ASLSM_InitialDisplayDepth,ns->ns_Depth, + ASLSM_DoWidth,TRUE, + ASLSM_DoHeight,TRUE, + ASLSM_DoDepth,TRUE, + ASLSM_PropertyMask,NULL, + TAG_DONE)) + { + ns->ns_DisplayID=ScreenModeReq->sm_DisplayID; + ns->ns_Width=ScreenModeReq->sm_DisplayWidth; + ns->ns_Height=ScreenModeReq->sm_DisplayHeight; + ns->ns_Depth=ScreenModeReq->sm_DisplayDepth; + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],ns->ns_Width); + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],ns->ns_Height); + SetInteger(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],ns->ns_Depth); + GetDisplayInfoData(FindDisplayInfo(ns->ns_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],NameInfo.Name); + } + return 1; +} + +int FN_PGSCR_USE_Clicked(void) +{ + struct Node_Screen *ns; + struct Window *PropsWnd; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + ns->ns_Type=ScreenMsg.Code; + PropsWnd=ScreenWnd; + if(ns->ns_Type==TYPE_WORKBENCH) + { + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEFAULTID],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MAKEPUBLIC],PropsWnd,TRUE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,TRUE); + PropsWnd=NULL; + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHOWTITLE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_BEHIND],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_QUIET],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_AUTOSCROLL],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_FULLPALETTE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_DRAGGABLE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_EXCLUSIVE],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHAREPENS],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_INTERLEAVED],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_LIKEWORKBENCH],PropsWnd,TRUE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_MINIMIZEISG],PropsWnd,TRUE); + } + else + { + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_WIDTH],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_HEIGHT],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEPTH],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_DEFAULTID],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MAKEPUBLIC],PropsWnd,FALSE); + DisableGadget(PGSCR_GeneralGadgets[GD_PGSCR_MODEID_GET],PropsWnd,ns->ns_MyFlags&MYSC_DefaultID); + PropsWnd=NULL; + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHOWTITLE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_BEHIND],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_QUIET],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_AUTOSCROLL],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_FULLPALETTE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_DRAGGABLE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_EXCLUSIVE],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_SHAREPENS],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_INTERLEAVED],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_LIKEWORKBENCH],PropsWnd,FALSE); + DisableGadget(PGSCR_FlagsGadgets[GD_PGSCR_MINIMIZEISG],PropsWnd,FALSE); + } + return 1; +} + +int FN_PGSCR_PUBNAME_Clicked(void) +{ + return 1; +} + +int FN_PGSCR_WIDTH_Clicked(void) +{ + return 1; +} + +int FN_PGSCR_HEIGHT_Clicked(void) +{ + return 1; +} + +int FN_PGSCR_DEPTH_Clicked(void) +{ + return 1; +} + +int FN_PGSCR_TITLE_Clicked(void) +{ + return 1; +} + +int FN_PGSCR_MINIMIZEISG_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_MinimizeISG); + return 1; +} + +int FN_PGSCR_SHAREPENS_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_SharePens); + return 1; +} + +int FN_PGSCR_FULLPALETTE_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_FullPalette); + return 1; +} + +int FN_PGSCR_EXCLUSIVE_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_Exclusive); + return 1; +} + +int FN_PGSCR_QUIET_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_Quiet); + return 1; +} + +int FN_PGSCR_LIKEWORKBENCH_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_LikeWB); + return 1; +} + +int FN_PGSCR_SHOWTITLE_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_ShowTitle); + return 1; +} + +int FN_PGSCR_MAKEPUBLIC_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_MakePublic); + return 1; +} + +int FN_PGSCR_BEHIND_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_Behind); + return 1; +} + +int FN_PGSCR_DRAGGABLE_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_Draggable); + return 1; +} + +int FN_PGSCR_AUTOSCROLL_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_AutoScroll); + return 1; +} + +int FN_PGSCR_INTERLEAVED_Clicked(void) +{ + struct Node_Screen *ns; + ULONG code; + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + + code=ScreenMsg.Code; + DoFlag(ns->ns_MyFlags,MYSC_Interleaved); + return 1; +} + +int FN_SCREEN_PAGES_Clicked(void) +{ + struct Node_Screen *ns; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(CurrentScreen,OBJ_Node,(ULONG *)&ns); + GetAttr(PAGE_Active,ScreenGadgets[GD_SCREEN_PAGES], &active); + +// General + if(active==0) PropsWnd=ScreenWnd; else PropsWnd=NULL; + if(ns->ns_MyFlags&MYSC_DefaultID) + { + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],"---"); + } + else + { + GetDisplayInfoData(FindDisplayInfo(ns->ns_DisplayID),(UBYTE *)&NameInfo,sizeof(struct NameInfo),DTAG_NAME,NULL); + SetText(PropsWnd,PGSCR_GeneralGadgets[GD_PGSCR_MODEID],NameInfo.Name); + } + return 1; +} + +int FN_ActiveWindow_Screen( void ) +{ + ActiveObject=ID_SCRN; + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 1; +} diff --git a/GadToolsBox/screen.h b/GadToolsBox/screen.h new file mode 100755 index 0000000..4f563ba --- /dev/null +++ b/GadToolsBox/screen.h @@ -0,0 +1,51 @@ +#ifndef GTB_SCREEN_H +#define GTB_SCREEN_H +/* +** Screen +*/ + +#define ID_SCRN MAKE_ID('S','C','R','N') // Screen Chunk + +#define TYPE_WORKBENCH 0 +#define TYPE_CUSTOMSCREEN 1 +#define TYPE_PUBLICSCREEN 2 + +#define MYSC_MakePublic (1<<0) +#define MYSC_ShowTitle (1<<3) +#define MYSC_Behind (1<<4) +#define MYSC_Quiet (1<<5) +#define MYSC_AutoScroll (1<<6) +#define MYSC_FullPalette (1<<7) +#define MYSC_Draggable (1<<8) +#define MYSC_Exclusive (1<<9) +#define MYSC_SharePens (1<<10) +#define MYSC_Interleaved (1<<11) +#define MYSC_LikeWB (1<<12) +#define MYSC_MinimizeISG (1<<13) +#define MYSC_DefaultID (1<<14) + +struct Node_Screen +{ + UWORD ns_Width,ns_Height,ns_Depth; + ULONG ns_DisplayID; + UWORD ns_Type; + TEXT ns_Title[256]; + TEXT ns_Public[30]; + TEXT ns_FontName[30]; + UWORD ns_FontSize; + ULONG ns_MyFlags; +}; + +ULONG Dispatcher_Screen(piClass *,piObject *,Msg); +ULONG NEW_Screen(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Screen(piClass *,piObject *,Msg ); +ULONG OPEN_Screen(piClass *,piObject *,Msg ); +ULONG CLOSE_Screen(piClass *,piObject *,Msg ); +ULONG SET_Screen(piClass *,piObject *,struct piSet *); +ULONG GET_Screen(piClass *,piObject *,struct piGet *); +ULONG READ_Screen(piClass *,piObject *,struct piIO *); +ULONG WRITE_Screen(piClass *,piObject *,struct piIO *); +ULONG INIT_Screen(piClass *,piObject *,Msg ); +ULONG APPLY_Screen(piClass *,piObject *,Msg ); + +#endif diff --git a/GadToolsBox/smakefile b/GadToolsBox/smakefile new file mode 100755 index 0000000..1099c71 --- /dev/null +++ b/GadToolsBox/smakefile @@ -0,0 +1,89 @@ +# +# Makefile for GadToolsBox by Tomasz Muszynski +# + +all: GadToolsBox + +VERSION = 3 +REVISION = 0 + +#OPTIONS = StripDebug +OPTIONS = +PROGRAMNAME = GadToolsBox +CATALOGLANG = Polski +PUBSCREEN = SASPRJ.1 +GTPI = plugins/button.c plugins/checkbox.c plugins/cycle.c plugins/integer.c plugins/listview.c plugins/mx.c plugins/number.c plugins/palette.c plugins/scroller.c plugins/slider.c plugins/string.c plugins/text.c +BOOPSIPI = plugins/colorwheel.c plugins/datatype.c plugins/gradientslider.c plugins/page.c plugins/popupmenu.c plugins/progress.c plugins/tapedeck.c plugins/textfield.c plugins/treeview.c +OBJECTS = main.c amigaguide.c gadtools.c gadtools_cat.c gadtools_img.c guifunc.c objects.c window.c gadget.c frame.c menu.c inout.c toolbar.c image.c screen.c string.c version.c draw.c memory.a $(GTPI) $(BOOPSIPI) + +$(PROGRAMNAME): $(OBJECTS) + sc link $(OPTIONS) TO $(PROGRAMNAME) NIL: diff --git a/GadToolsBox/string.c b/GadToolsBox/string.c new file mode 100755 index 0000000..97d46e9 --- /dev/null +++ b/GadToolsBox/string.c @@ -0,0 +1,523 @@ +/* +** GadToolsBox v3 - String Management +*/ + +#include"includes.h" + +/* +** Defines +*/ + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGSTR_General[]; + +struct Page PAGES_PROPERTIES_PGSTR_PAGES[]= +{ + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +LONG Top=0,Visible=0,Total=0; + +#define IM_WIDTH(o) ((struct Image *) o)->Width +#define IM_HEIGHT(o) ((struct Image *) o)->Height +Object *DownButton,*UpButton,*VertProp; + +/* +** Functions +*/ + +ULONG Dispatcher_String(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval=NULL; + + switch(msg->MethodID) + { + case OM_INIT: + retval=INIT_String(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_String(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGSTR_General(); + PAGES_PROPERTIES_PGSTR_PAGES[0].FirstGadget=PGSTR_GeneralGList; + PAGES_PROPERTIES_PGSTR_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L39_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PGSTR_PAGES[0].FirstGadget=NULL; + CloseWindow_PGSTR_General(); + break; + case OM_NEW: + retval=NEW_String(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_String(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_String(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=CREATE_String(cl,o,msg); + break; + case OM_DELETE: + retval=DELETE_String(cl,o,msg); + break; + case OM_READ: + retval=READ_String(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_String(cl,o,(struct piIO *)msg); + break; + case OM_CUT: + retval=CUT_String(cl,o,msg); + break; + case OM_COPY: + retval=COPY_String(cl,o,(struct piCopy *)msg); + break; + } + return retval; +} + +ULONG CUT_String(piClass *cl,piObject *o,Msg msg) +{ + struct Node_String *ns; + + piCopyObject(o,COPY_CLIP); + piCopyObject(o,COPY_UNDO); + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + if(ns->ns_Selected) + { + Tree_Remove(ns->ns_Selected); + if(ns->ns_Selected->ns_Label) MyFreeVec(ns->ns_Selected->ns_Label); + if(ns->ns_Selected->ns_String) MyFreeVec(ns->ns_Selected->ns_String); + if(ns->ns_Selected->ns_GadString) MyFreeVec(ns->ns_Selected->ns_GadString); + MyFreeVec(ns->ns_Selected); + ns->ns_Selected=NULL; + Total--; + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL, + PGA_Top, Top, + PGA_Total, Total, + PGA_Visible, Visible, + TAG_DONE); + RefreshGList(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,1); + + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + } + return TRUE; +} + +ULONG COPY_String(piClass *cl,piObject *o,struct piCopy *msg) +{ + struct IFFHandle *iffh; + LONG error=0,len; + struct Node_String *ns; + struct Node_StringData *nd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + if(!(ClipHandle=OpenClipboard(PRIMARY_CLIP))) return 1; + if(nd=ns->ns_Selected) + { + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)((msg->Copy==COPY_CLIP)?ClipHandle:UndoHandle); + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_WRITE)) + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + if(error=PushChunk(iffh,NULL,ID_LSTR,strlen(nd->ns_Label)+strlen(nd->ns_String)+10)) goto skip; + len=strlen(nd->ns_Label)+1; + WriteChunkBytes(iffh,(APTR)&len,sizeof(LONG)); + WriteChunkBytes(iffh,(APTR)nd->ns_Label,len); + len=strlen(nd->ns_String)+1; + WriteChunkBytes(iffh,(APTR)&len,sizeof(LONG)); + WriteChunkBytes(iffh,(APTR)nd->ns_String,len); + if(error=PopChunk(iffh)) return (ULONG) error; + if(error=PopChunk(iffh)) return (ULONG) error; + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + } + if(ClipHandle) CloseClipboard(ClipHandle); ClipHandle=NULL; + return TRUE; +} + +ULONG NEW_String(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_String *ns; + + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + ns=(struct Node_String *)OBJECT_DATA(obj); + ns->ns_Pages=PAGES_PROPERTIES_PGSTR_PAGES, + obj->ln_Name="Locale strings"; + Tree_NewList(&ns->ns_Strings); + } + + Total=0; + + ns->ns_Selected=NULL; + return (ULONG) obj; +} + +ULONG DISPOSE_String(piClass *cl,piObject *o,Msg msg) +{ + struct Node_String *ns; + struct Node_StringData *nd; + + piDoMethod(o,OM_DELETE); + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + while(nd=(struct Node_StringData *)Tree_RemTail(&ns->ns_Strings)) + { + if(nd->ns_Label) MyFreeVec(nd->ns_Label); + if(nd->ns_String) MyFreeVec(nd->ns_String); + if(nd->ns_GadString) MyFreeVec(nd->ns_GadString); + MyFreeVec(nd); + } + MyFreeVec(o); + return TRUE; +} + +int FN_Up(void) +{ + Top--; + if(Top<0L) Top=0L; + SetGadgetAttrs(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,LIST_Top,Top,TAG_DONE); + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL,PGA_Top,Top,TAG_DONE); + return 1; +} + +int FN_Down(void) +{ + Top++; + if(VisibleTotal-Visible) Top=Total-Visible; + SetGadgetAttrs(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,LIST_Top,Top,TAG_DONE); + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL,PGA_Top,Top,TAG_DONE); + return 1; +} + +int FN_Vert(void) +{ + GetAttr(PGA_Top,VertProp,(ULONG *)&Top); + SetGadgetAttrs(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,LIST_Top,Top,TAG_DONE); + return 1; +} + +ULONG CREATE_String(piClass *cl,piObject *o,Msg msg) +{ + struct Node_String *ns; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + if(!EditStringWnd) + { + ns->ns_Selected=NULL; + unless(DownButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_DownImage, + GA_RelRight, 1-(IM_WIDTH(gui_DownImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)), + GA_RightBorder,TRUE, + GA_UserData,FN_Down, + GA_ID, 2, + TAG_DONE)) return 1; + unless(UpButton=NewObject(NULL, BUTTONGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + GA_Image, gui_UpImage, + GA_RelRight, 1-(IM_WIDTH(gui_UpImage)), + GA_RelBottom, 1-(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_DownImage)+IM_HEIGHT(gui_UpImage)), + GA_RightBorder,TRUE, + GA_Previous,DownButton, + GA_UserData, FN_Up, + GA_ID, 3, + TAG_DONE)) return 1; + unless(VertProp=NewObject(NULL, PROPGCLASS, + ICA_TARGET, ICTARGET_IDCMP, + PGA_Freedom, FREEVERT, + PGA_NewLook, TRUE, + PGA_Borderless, ((DrawInfo->dri_Flags & DRIF_NEWLOOK) && DrawInfo->dri_Depth != 1), + GA_RelRight, -(IM_WIDTH(gui_SizeImage)-5), + GA_Top, Scr->WBorTop+Scr->Font->ta_YSize+1+1, + GA_Width, IM_WIDTH(gui_SizeImage)-2-2-4, + GA_RelHeight, -(IM_HEIGHT(gui_SizeImage)+IM_HEIGHT(gui_UpImage)+IM_HEIGHT(gui_DownImage)+Scr->WBorTop+Scr->Font->ta_YSize+1+1+1), + GA_RightBorder, TRUE, + GA_Previous,UpButton, + GA_UserData, FN_Vert, + GA_ID, 4, + PGA_Top, Top, + PGA_Total, Total, + PGA_Visible, Visible, + TAG_DONE)) return 1; + + OpenWindow_EditString(); + SetGadgetAttrs(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,LIST_Labels,&ns->ns_Strings,TAG_DONE); + + GetAttr(LIST_Visible,EditStringGadgets[GD_PGSTR_STRINGS],(ULONG *)&Visible); + GetAttr(LIST_Top,EditStringGadgets[GD_PGSTR_STRINGS],(ULONG *)&Top); + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL, + PGA_Top, Top, + PGA_Total, Total, + PGA_Visible, Visible, + TAG_DONE); + + AddGList(EditStringWnd,(struct Gadget *)DownButton,-1,-1,NULL); + RefreshGList((struct Gadget *)DownButton,EditStringWnd,NULL,-1); + piInitObjectGUI(o); + SetWndSignals(); + } + else + ActivateWindow(EditStringWnd); + return TRUE; +} + +ULONG DELETE_String(piClass *cl,piObject *o,Msg msg) +{ + if(EditStringWnd) + { + piApplyObject(o); + RemoveGList(EditStringWnd,(struct Gadget *)DownButton,-1); + DisposeObject(VertProp); + DisposeObject(DownButton); + DisposeObject(UpButton); + CloseWindow_EditString(); + SetWndSignals(); + } + return TRUE; +} + +ULONG GET_String(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_String *ns=(struct Node_String *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case OBJ_Node: *(msg->TagData)=(ULONG)ns; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)ns->ns_Pages; return TRUE; + default: *(msg->TagData)=NULL; return FALSE; + } +} + +ULONG READ_String(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,len; + struct Node_String *ns; + struct Node_StringData *nd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + + if(nd=(struct Node_StringData *)MyAllocVec(sizeof(struct Node_StringData),MEMF_ANY|MEMF_CLEAR)) + { + ReadChunkBytes(msg->IFFh,&len,sizeof(LONG)); + if(nd->ns_Label=MyAllocVec(len,MEMF_ANY)) + ReadChunkBytes(msg->IFFh,nd->ns_Label,len); + + ReadChunkBytes(msg->IFFh,&len,sizeof(LONG)); + if(nd->ns_String=MyAllocVec(len,MEMF_ANY)) + ReadChunkBytes(msg->IFFh,nd->ns_String,len); + + if(nd->ns_GadString=MyAllocVec(strlen(nd->ns_String)+strlen(nd->ns_Label)+strlen(GetCatString(MSG_EDITSTR_STRING))+1,MEMF_ANY)) + sprintf(nd->ns_GadString,GetCatString(MSG_EDITSTR_STRING),nd->ns_Label,nd->ns_String); + nd->ns_Node.ln_Name=nd->ns_GadString; + Tree_AddTail(&ns->ns_Strings,(struct LVNode *)nd); + Total++; + } + return (ULONG)error; +} + +ULONG WRITE_String(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0,len; + struct Node_String *ns; + struct Node_StringData *nd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + if(!Tree_IsListEmpty(&ns->ns_Strings)) + { + for(nd=(struct Node_StringData *)GetHead(&ns->ns_Strings);GetSucc(Node(nd));nd=(struct Node_StringData *)GetSucc(Node(nd))) + { + if(error=PushChunk(msg->IFFh,NULL,ID_LSTR,strlen(nd->ns_Label)+strlen(nd->ns_String)+10)) return (ULONG)error; + len=strlen(nd->ns_Label)+1; + WriteChunkBytes(msg->IFFh,(APTR)&len,sizeof(LONG)); + WriteChunkBytes(msg->IFFh,(APTR)nd->ns_Label,len); + len=strlen(nd->ns_String)+1; + WriteChunkBytes(msg->IFFh,(APTR)&len,sizeof(LONG)); + WriteChunkBytes(msg->IFFh,(APTR)nd->ns_String,len); + if(error=PopChunk(msg->IFFh)) return (ULONG) error; + } + } + return (ULONG)error; +} + +ULONG INIT_String(piClass *cl,piObject *o,Msg msg) +{ + struct Node_String *ns; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + +// General + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + if(ns->ns_Selected) + { + SetString(PropsWnd,PGSTR_GeneralGadgets[GD_PGSTR_LABEL],ns->ns_Selected->ns_Label); + SetString(PropsWnd,PGSTR_GeneralGadgets[GD_PGSTR_STRING],ns->ns_Selected->ns_String); + } + return TRUE; +} + +ULONG APPLY_String(piClass *cl,piObject *o,Msg msg) +{ + struct Node_String *ns; + struct Node_StringData *nd; + + piGetAttr(o,OBJ_Node,(ULONG *)&ns); + + nd=ns->ns_Selected; + if(nd) + { + if(nd->ns_Label) MyFreeVec(nd->ns_Label); nd->ns_Label=NULL; + if(nd->ns_Label=MyAllocVec(strlen(GetString(PGSTR_GeneralGadgets[GD_PGSTR_LABEL]))+1,MEMF_PUBLIC)) + strcpy(nd->ns_Label,GetString(PGSTR_GeneralGadgets[GD_PGSTR_LABEL])); + if(nd->ns_String) MyFreeVec(nd->ns_String); nd->ns_String=NULL; + if(nd->ns_String=MyAllocVec(strlen(GetString(PGSTR_GeneralGadgets[GD_PGSTR_STRING]))+1,MEMF_PUBLIC)) + strcpy(nd->ns_String,GetString(PGSTR_GeneralGadgets[GD_PGSTR_STRING])); + if(nd->ns_GadString) MyFreeVec(nd->ns_GadString); nd->ns_GadString=NULL; + if(nd->ns_GadString=MyAllocVec(strlen(nd->ns_String)+strlen(nd->ns_Label)+strlen(GetCatString(MSG_EDITSTR_STRING))+1,MEMF_ANY)) + sprintf(nd->ns_GadString,GetCatString(MSG_EDITSTR_STRING),nd->ns_Label,nd->ns_String); + nd->ns_Node.ln_Name=nd->ns_GadString; + } + if(EditStringWnd) RefreshGList(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,1); + return TRUE; +} + +/******************************************************************************/ + +int FN_PGSTR_STRINGS_Clicked(void) +{ + struct Node_String *ns; + + piGetAttr(CurrentString,OBJ_Node,(ULONG *)&ns); + + GetAttr(LIST_Selected,EditStringGadgets[GD_PGSTR_STRINGS],(ULONG *)&ns->ns_Selected); + if(PropertiesMode!=PM_STRING) + { + PropertiesMode=PM_STRING; + if(!PropertiesWnd) OpenWindow_Props(); + } + if(PropertiesWnd) piInitObjectGUI(CurrentString); + return 1; +} + +int FN_PGSTR_ADD_Clicked(void) +{ + struct Node_String *ns; + struct Node_StringData *nd; + + piGetAttr(CurrentString,OBJ_Node,(ULONG *)&ns); + + if(nd=(struct Node_StringData *)MyAllocVec(sizeof(struct Node_StringData),MEMF_ANY|MEMF_CLEAR)) + { + if(nd->ns_Label=MyAllocVec(strlen(GetCatString(MSG_UNNAMED))+1,MEMF_ANY)) strcpy(nd->ns_Label,GetCatString(MSG_UNNAMED)); + if(nd->ns_String=MyAllocVec(strlen(GetCatString(MSG_EMPTY))+1,MEMF_ANY)) strcpy(nd->ns_String,GetCatString(MSG_EMPTY)); + if(nd->ns_GadString=MyAllocVec(strlen(nd->ns_String)+strlen(nd->ns_Label)+strlen(GetCatString(MSG_EDITSTR_STRING))+1,MEMF_ANY)) + sprintf(nd->ns_GadString,GetCatString(MSG_EDITSTR_STRING),nd->ns_Label,nd->ns_String); + nd->ns_Node.ln_Name=nd->ns_GadString; + ns->ns_Selected=nd; + Tree_AddTail(&ns->ns_Strings,(struct LVNode *)nd); + SetGadgetAttrs(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,LIST_Selected,(ULONG)nd,TAG_DONE); + Total++; + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL, + PGA_Top, Top, + PGA_Total, Total, + PGA_Visible, Visible, + TAG_DONE); + RefreshGList(EditStringGadgets[GD_PGSTR_STRINGS],EditStringWnd,NULL,1); + if(PropertiesWnd) piInitObjectGUI(CurrentString); + } + return 1; +} + +int FN_PGSTR_DELETE_Clicked(void) +{ + piCutObject(CurrentString); + return 1; +} + +int FN_PGSTR_EDIT_Clicked(void) +{ + PropertiesMode=PM_STRING; + OpenWindow_Props(); + piInitObjectGUI(CurrentString); + return 1; +} + +int FN_PGSTR_LABEL_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGSTR_STRING_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_CloseWindow_EditString(void) +{ + piCloseWindow(CurrentString); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + return 2; +} + +int FN_ChangeWindow_EditString(void) +{ + GetAttr(LIST_Visible,EditStringGadgets[GD_PGSTR_STRINGS],(ULONG *)&Visible); + GetAttr(LIST_Top,EditStringGadgets[GD_PGSTR_STRINGS],(ULONG *)&Top); + SetGadgetAttrs((struct Gadget *)VertProp,EditStringWnd,NULL, + PGA_Top, Top, + PGA_Total, Total, + PGA_Visible, Visible, + TAG_DONE); + return 1; +} + +int FN_IDCMPUpdate_EditString(void) +{ + switch(GetTagData(GA_ID,0,(struct TagItem *)EditStringMsg.IAddress)) + { + case 2: FN_Down(); break; + case 3: FN_Up(); break; + case 4: FN_Vert(); break; + default: FN_PGSTR_STRINGS_Clicked(); break; + } + return 1; +} + +int FN_MouseButtons_EditString(void) +{ + switch(EditStringMsg.Code) + { + case SELECTUP: + break; + } + return 1; +} + +int FN_ActiveWindow_EditString( void ) +{ + ActiveObject=ID_LSTR; + PropertiesMode=PM_STRING; + RefreshPropertiesWindow(GetCatString(MSG_STRINGOBJECT)); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 1; +} diff --git a/GadToolsBox/string.h b/GadToolsBox/string.h new file mode 100755 index 0000000..37c4b63 --- /dev/null +++ b/GadToolsBox/string.h @@ -0,0 +1,38 @@ +#ifndef GTB_STRING_H +#define GTB_STRING_H +/* +** String +*/ + +#define ID_LSTR MAKE_ID('L','S','T','R') // String Data + +struct Node_String +{ + struct LVList ns_Strings; + struct Page *ns_Pages; + struct Node_StringData *ns_Selected; +}; + +struct Node_StringData +{ + struct LVNode ns_Node; + STRPTR ns_GadString; + STRPTR ns_Label; + STRPTR ns_String; +}; + +ULONG Dispatcher_String(piClass *,piObject *,Msg); +ULONG CUT_String(piClass *,piObject *,Msg); +ULONG COPY_String(piClass *,piObject *,struct piCopy *Msg); +ULONG NEW_String(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_String(piClass *,piObject *,Msg ); +ULONG CREATE_String(piClass *,piObject *,Msg ); +ULONG DELETE_String(piClass *,piObject *,Msg ); +ULONG RENDER_String(piClass *,piObject *,Msg ); +ULONG GET_String(piClass *,piObject *,struct piGet *); +ULONG READ_String(piClass *,piObject *,struct piIO *); +ULONG WRITE_String(piClass *,piObject *,struct piIO *); +ULONG INIT_String(piClass *,piObject *,Msg ); +ULONG APPLY_String(piClass *,piObject *,Msg ); + +#endif /* GTB_STRING_H */ diff --git a/GadToolsBox/toolbar.c b/GadToolsBox/toolbar.c new file mode 100755 index 0000000..2a79c57 --- /dev/null +++ b/GadToolsBox/toolbar.c @@ -0,0 +1,482 @@ +/* +** GadToolsBox v3 - Toolbar management +*/ + +#include"includes.h" + +int FN_CloseWindow_TB_Main(void) +{ + CloseWindow_TB_Main(); + SetWndSignals(); + if(TB_MainWnd || TB_WindowWnd || TB_PointerWnd) + return 2; + else + return 3; +} + +int FN_ChangeWindow_TB_Main() +{ + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].X=TB_MainWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].Y=TB_MainWnd->TopEdge; + FindTagItem(WA_Left,(struct TagItem *)TB_MainWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].X; + FindTagItem(WA_Top,(struct TagItem *)TB_MainWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_MAIN].Y; + return 1; +} + +int FN_CloseWindow_TB_Window(void) +{ + CloseWindow_TB_Window(); + SetWndSignals(); + if(TB_MainWnd || TB_WindowWnd || TB_PointerWnd) + return 2; + else + return 3; +} + +int FN_ChangeWindow_TB_Window() +{ + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].X=TB_WindowWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].Y=TB_WindowWnd->TopEdge; + FindTagItem(WA_Left,(struct TagItem *)TB_WindowWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].X; + FindTagItem(WA_Top,(struct TagItem *)TB_WindowWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_GADGETS].Y; + return 1; +} + +int FN_CloseWindow_TB_Pointer(void) +{ + CloseWindow_TB_Pointer(); + SetWndSignals(); + if(TB_MainWnd || TB_WindowWnd || TB_PointerWnd) + return 2; + else + return 3; +} + +int FN_ChangeWindow_TB_Pointer() +{ + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X=TB_PointerWnd->LeftEdge; + GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y=TB_PointerWnd->TopEdge; + FindTagItem(WA_Left,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X; + FindTagItem(WA_Top,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y; + return 1; +} + +void ApplySelectionWindow(void) +{ + if((TB_WindowGadgets[GD_TBG_BUTTON]->Flags&GFLG_SELECTED) && (ActiveGadget!=BUTTON_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_BUTTON]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_BUTTON],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_CHECKBOX]->Flags&GFLG_SELECTED) && (ActiveGadget!=CHECKBOX_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_CHECKBOX]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_CHECKBOX],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_COLORWHEEL]->Flags&GFLG_SELECTED) && (ActiveGadget!=COLORWHEEL_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_COLORWHEEL]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_COLORWHEEL],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_CYCLE]->Flags&GFLG_SELECTED) && (ActiveGadget!=CYCLE_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_CYCLE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_CYCLE],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_DATATYPE]->Flags&GFLG_SELECTED) && (ActiveGadget!=DATATYPE_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_DATATYPE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_DATATYPE],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_GRADIENTSLIDER]->Flags&GFLG_SELECTED) && (ActiveGadget!=GRADIENTSLIDER_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_GRADIENTSLIDER]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_GRADIENTSLIDER],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_INTEGER]->Flags&GFLG_SELECTED) && (ActiveGadget!=INTEGER_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_INTEGER]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_INTEGER],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_LISTVIEW]->Flags&GFLG_SELECTED) && (ActiveGadget!=LISTVIEW_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_LISTVIEW]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_LISTVIEW],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_MX]->Flags&GFLG_SELECTED) && (ActiveGadget!=MX_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_MX]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MX],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_NUMBER]->Flags&GFLG_SELECTED) && (ActiveGadget!=NUMBER_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_NUMBER]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_NUMBER],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_PAGE]->Flags&GFLG_SELECTED) && (ActiveGadget!=PAGE_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_PAGE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_PAGE],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_PALETTE]->Flags&GFLG_SELECTED) && (ActiveGadget!=PALETTE_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_PALETTE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_PALETTE],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_POPUPMENU]->Flags&GFLG_SELECTED) && (ActiveGadget!=POPUPMENU_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_POPUPMENU]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_POPUPMENU],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_PROGRESS]->Flags&GFLG_SELECTED) && (ActiveGadget!=PROGRESS_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_PROGRESS]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_PROGRESS],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_SCROLLER]->Flags&GFLG_SELECTED) && (ActiveGadget!=SCROLLER_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_SCROLLER]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_SCROLLER],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_SLIDER]->Flags&GFLG_SELECTED) && (ActiveGadget!=SLIDER_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_SLIDER]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_SLIDER],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_STRING]->Flags&GFLG_SELECTED) && (ActiveGadget!=STRING_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_STRING]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_STRING],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_TAPEDECK]->Flags&GFLG_SELECTED) && (ActiveGadget!=TAPEDECK_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_TAPEDECK]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_TAPEDECK],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_TEXT]->Flags&GFLG_SELECTED) && (ActiveGadget!=TEXT_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_TEXT]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_TEXT],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_TEXTFIELD]->Flags&GFLG_SELECTED) && (ActiveGadget!=TEXTFIELD_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_TEXTFIELD]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_TEXTFIELD],TB_WindowWnd,NULL,1); } + if((TB_WindowGadgets[GD_TBG_TREEVIEW]->Flags&GFLG_SELECTED) && (ActiveGadget!=TREEVIEW_ID)) { ClearFlag(TB_WindowGadgets[GD_TBG_TREEVIEW]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_TREEVIEW],TB_WindowWnd,NULL,1); } + if(ActiveGadget==NULL) { SetFlag(TB_WindowGadgets[GD_TBG_NONE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_NONE],TB_WindowWnd,NULL,1); } + else { ClearFlag(TB_WindowGadgets[GD_TBG_NONE]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_NONE],TB_WindowWnd,NULL,1); } + + if(GUI.gui_Mode!=MODE_TEST) { ClearFlag(TB_WindowGadgets[GD_TBG_MODE_TEST]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_TEST],TB_WindowWnd,NULL,1); } + else { SetFlag(TB_WindowGadgets[GD_TBG_MODE_TEST]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_TEST],TB_WindowWnd,NULL,1); } + if(GUI.gui_Mode!=MODE_GADGET) { ClearFlag(TB_WindowGadgets[GD_TBG_MODE_GADGET]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_GADGET],TB_WindowWnd,NULL,1); } + else { SetFlag(TB_WindowGadgets[GD_TBG_MODE_GADGET]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_GADGET],TB_WindowWnd,NULL,1); } + if(GUI.gui_Mode!=MODE_FRAME) { ClearFlag(TB_WindowGadgets[GD_TBG_MODE_FRAME]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_FRAME],TB_WindowWnd,NULL,1); } + else { SetFlag(TB_WindowGadgets[GD_TBG_MODE_FRAME]->Flags,GFLG_SELECTED); RefreshGList(TB_WindowGadgets[GD_TBG_MODE_FRAME],TB_WindowWnd,NULL,1); } +} + +int FN_TBG_NONE_Clicked(void) +{ + ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + return 1; +} + +int FN_TBG_BUTTON_Clicked(void) +{ + if(ActiveGadget!=BUTTON_ID) ActiveGadget=BUTTON_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_CHECKBOX_Clicked(void) +{ + if(ActiveGadget!=CHECKBOX_ID) ActiveGadget=CHECKBOX_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_COLORWHEEL_Clicked(void) +{ + if(ActiveGadget!=COLORWHEEL_ID) ActiveGadget=COLORWHEEL_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_CYCLE_Clicked(void) +{ + if(ActiveGadget!=CYCLE_ID) ActiveGadget=CYCLE_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_DATATYPE_Clicked(void) +{ + if(ActiveGadget!=DATATYPE_ID) ActiveGadget=DATATYPE_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_GRADIENTSLIDER_Clicked(void) +{ + if(ActiveGadget!=GRADIENTSLIDER_ID) ActiveGadget=GRADIENTSLIDER_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_INTEGER_Clicked(void) +{ + if(ActiveGadget!=INTEGER_ID) ActiveGadget=INTEGER_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_LISTVIEW_Clicked(void) +{ + if(ActiveGadget!=LISTVIEW_ID) ActiveGadget=LISTVIEW_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_MX_Clicked(void) +{ + if(ActiveGadget!=MX_ID) ActiveGadget=MX_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_NUMBER_Clicked(void) +{ + if(ActiveGadget!=NUMBER_ID) ActiveGadget=NUMBER_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_PAGE_Clicked(void) +{ + if(ActiveGadget!=PAGE_ID) ActiveGadget=PAGE_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_PALETTE_Clicked(void) +{ + if(ActiveGadget!=PALETTE_ID) ActiveGadget=PALETTE_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_POPUPMENU_Clicked(void) +{ + if(ActiveGadget!=POPUPMENU_ID) ActiveGadget=POPUPMENU_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_PROGRESS_Clicked(void) +{ + if(ActiveGadget!=PROGRESS_ID) ActiveGadget=PROGRESS_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_SCROLLER_Clicked(void) +{ + if(ActiveGadget!=SCROLLER_ID) ActiveGadget=SCROLLER_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_SLIDER_Clicked(void) +{ + if(ActiveGadget!=SLIDER_ID) ActiveGadget=SLIDER_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_STRING_Clicked(void) +{ + if(ActiveGadget!=STRING_ID) ActiveGadget=STRING_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_TAPEDECK_Clicked(void) +{ + if(ActiveGadget!=TAPEDECK_ID) ActiveGadget=TAPEDECK_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_TEXT_Clicked(void) +{ + if(ActiveGadget!=TEXT_ID) ActiveGadget=TEXT_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_TEXTFIELD_Clicked(void) +{ + if(ActiveGadget!=TEXTFIELD_ID) ActiveGadget=TEXTFIELD_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_TBG_TREEVIEW_Clicked(void) +{ + if(ActiveGadget!=TREEVIEW_ID) ActiveGadget=TREEVIEW_ID; else ActiveGadget=NULL; + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return 1; +} + +int FN_MainObjTypeTest_Selected(void); +int FN_MainObjTypeGadget_Selected(void); +int FN_MainObjTypeFrame_Selected(void); + +int FN_TBG_MODE_TEST_Clicked(void) +{ + int ret; + ret=FN_MainObjTypeTest_Selected(); + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + return ret; +} + +int FN_TBG_MODE_GADGET_Clicked(void) +{ + int ret; + ret=FN_MainObjTypeGadget_Selected(); + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,TAG_DONE); + return ret; +} + +int FN_TBG_MODE_FRAME_Clicked(void) +{ + int ret; + ret=FN_MainObjTypeFrame_Selected(); + ApplySelectionWindow(); + SetWindowPointer(CurrentWindowNode->nw_Window,WA_Pointer,DrawPtr,TAG_DONE); + return ret; +} + + + + +ULONG FindPen(struct Node_Image *ni,ULONG code) +{ + int a; + + for(a=0;a<(2<ni_Depth);a++) + if(ni->ni_Pens[a]==(UBYTE)code) + return (ULONG)a; + return (ULONG)0; +} + +int FN_TBP_PALETTE_Clicked(void) +{ + struct Node_Image *ni; + + piGetAttr(CurrentImage,OBJ_Node,(ULONG *)&ni); + SetGadgetAttrs((struct Gadget *)ni->ni_Draw,ni->ni_Window,NULL,DRAW_ActualPen,FindPen(ni,TB_PointerMsg.Code),TAG_DONE); + return 1; +} + + + + +int FN_TB_NEW_Clicked(void) +{ + return FN_MainProjectNew_Selected(); +} + +int FN_TB_OPEN_Clicked(void) +{ + return FN_MainProjectOpen_Selected(); +} + +int FN_TB_SAVE_Clicked(void) +{ + return FN_MainProjectSave_Selected(); +} + +int FN_TB_CUT_Clicked(void) +{ + return FN_MainEditCut_Selected(); +} + +int FN_TB_COPY_Clicked(void) +{ + return FN_MainEditCopy_Selected(); +} + +int FN_TB_PASTE_Clicked(void) +{ + return FN_MainEditPaste_Selected(); +} + +int FN_TB_UNDO_Clicked(void) +{ + return FN_MainEditPaste_Selected(); +} + +int FN_TB_NEWWINDOW_Clicked(void) +{ + return FN_MainObjWindowNew_Selected(); +} + +int FN_TB_NEWMENU_Clicked(void) +{ + return FN_MainObjMenuNew_Selected(); +} + +int FN_TB_NEWPOINTER_Clicked(void) +{ + return FN_MainObjImageNew_Selected(); +} + +int FN_TB_NEWTOOLBAR_Clicked(void) +{ +// piOpenWindow(CurrentToolbar); + return 1; +} + +int FN_TB_NEWIMAGE_Clicked(void) +{ + return FN_MainObjImageNew_Selected(); +} + +int FN_TB_NEWSTRING_Clicked(void) +{ + piOpenWindow(CurrentString); + return 1; +} + +int FN_TB_NEWVERSION_Clicked(void) +{ + piOpenWindow(CurrentVersion); + return 1; +} + +int FN_TB_NEWSCREEN_Clicked(void) +{ + piOpenWindow(CurrentScreen); + return 1; +} + +extern Object *AmigaGuideObj; + +int FN_TB_HELP_Clicked(void) +{ + if(AmigaGuideObj) gtbSendAmigaGuideCmd(AmigaGuideObj,"ALINK main"); + return 1; +} + +int FN_TB_ALIGNLEFT_Clicked(void) +{ + FN_MainEditAlignToLeft_Selected(); + return 1; +} + +int FN_TB_ALIGNHCENTER_Clicked(void) +{ + FN_MainEditAlignToHCenter_Selected(); + return 1; +} + +int FN_TB_ALIGNRIGHT_Clicked(void) +{ + FN_MainEditAlignToRight_Selected(); + return 1; +} + +int FN_TB_ALIGNTOP_Clicked(void) +{ + FN_MainEditAlignToTop_Selected(); + return 1; +} + +int FN_TB_ALIGNVCENTER_Clicked(void) +{ + FN_MainEditAlignToVCenter_Selected(); + return 1; +} + +int FN_TB_ALIGNBOTTOM_Clicked(void) +{ + FN_MainEditAlignToBottom_Selected(); + return 1; +} + +int FN_TB_SPREADHORIZ_Clicked(void) +{ + FN_MainEditSpreadHoriz_Selected(); + return 1; +} + +int FN_TB_SPREADVERT_Clicked(void) +{ + FN_MainEditSpreadVertical_Selected(); + return 1; +} + +int FN_TB_CLONEWIDTH_Clicked(void) +{ + FN_MainEditCloneWidth_Selected(); + return 1; +} + +int FN_TB_CLONEHEIGHT_Clicked(void) +{ + FN_MainEditCloneHeight_Selected(); + return 1; +} + +int FN_TB_CLONEBOTH_Clicked(void) +{ + FN_MainEditCloneBoth_Selected(); + return 1; +} + diff --git a/GadToolsBox/toolbar.h b/GadToolsBox/toolbar.h new file mode 100755 index 0000000..8d69f33 --- /dev/null +++ b/GadToolsBox/toolbar.h @@ -0,0 +1,34 @@ +#ifndef GTB_TOOLBAR_H +#define GTB_TOOLBAR_H +/* +** Menu +*/ + +#define ID_TBAR MAKE_ID('T','B','A','R') // Toolbar Chunk + +struct Node_Toolbar +{ + ULONG np_ID; + struct Window *nt_Window; + struct Page *nt_Pages; + Object *nt_Draw,*nt_Preview,*nt_UpButton,*nt_DownButton,*nt_VertProp,*nt_LeftButton,*nt_RightButton,*nt_HorizProp; + LONG nt_Top,nt_Left; + struct ColorPalette nt_Palette[16]; + struct BitMap *nt_BitMap,*nt_TmpBitMap; + + UBYTE np_Label[40]; + UBYTE np_PointerData[20*20/8*4]; +}; + +ULONG Dispatcher_Toolbar(piClass *,piObject *,Msg); +ULONG INIT_Toolbar(piClass *,piObject *,Msg); +ULONG APPLY_Toolbar(piClass *,piObject *,Msg); +ULONG CREATE_Toolbar(piClass *,piObject *,Msg); +ULONG DELETE_Toolbar(piClass *,piObject *,Msg); +ULONG NEW_Toolbar(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Toolbar(piClass *,piObject *,Msg); +ULONG GET_Toolbar(piClass *,piObject *,struct piGet *); +ULONG READ_Toolbar(piClass *,piObject *,struct piIO *); +ULONG WRITE_Toolbar(piClass *,piObject *,struct piIO *); + +#endif diff --git a/GadToolsBox/version.c b/GadToolsBox/version.c new file mode 100755 index 0000000..aae534e --- /dev/null +++ b/GadToolsBox/version.c @@ -0,0 +1,211 @@ +/* +** GadToolsBox v3 - Version Management +*/ + +#include"includes.h" + +/* +** Defines +*/ + +/* +** Functions +*/ + +ULONG Dispatcher_Version(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval=NULL; + + switch(msg->MethodID) + { + case OM_INIT: + retval=INIT_Version(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Version(cl,o,msg); + break; + case OM_NEW: + retval=NEW_Version(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Version(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Version(cl,o,(struct piSet *)msg); + break; + case OM_CREATE: + retval=OPEN_Version(cl,o,msg); + break; + case OM_DELETE: + retval=CLOSE_Version(cl,o,msg); + break; + case OM_READ: + retval=READ_Version(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Version(cl,o,(struct piIO *)msg); + break; + } + return retval; +} + +ULONG NEW_Version(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Version *nv; + + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + nv=(struct Node_Version *)OBJECT_DATA(obj); + obj->ln_Name=nv->nv_ProgramName; + nv->nv_Version=1; + nv->nv_Revision=0; + strcpy(nv->nv_ProgramName,GetCatString(MSG_UNTITLED)); + strcpy(nv->nv_Author,GetCatString(MSG_UNKNOWN)); + } + return (ULONG) obj; +} + +ULONG DISPOSE_Version(piClass *cl,piObject *o,Msg msg) +{ + piDoMethod(o,OM_DELETE); + MyFreeVec(o); + return TRUE; +} + +ULONG OPEN_Version(piClass *cl,piObject *o,Msg msg) +{ + if(!EditVersionWnd) + { + OpenWindow_EditVersion(); + piInitObjectGUI(o); + SetWndSignals(); + } + else + ActivateWindow(EditVersionWnd); + return TRUE; +} + +ULONG CLOSE_Version(piClass *cl,piObject *o,Msg msg) +{ + if(EditVersionWnd) + { + piApplyObject(o); + CloseWindow_EditVersion(); + SetWndSignals(); + } + return TRUE; +} + +ULONG GET_Version(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Version *nv=(struct Node_Version *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case OBJ_Node: *(msg->TagData)=(ULONG)nv; return TRUE; + default: *(msg->TagData)=NULL; return FALSE; + } +} + +ULONG READ_Version(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Version *nv; + + piGetAttr(o,OBJ_Node,(ULONG *)&nv); + ReadChunkBytes(msg->IFFh,(APTR)&nv->nv_Version,SIZE(Node_Version,nv_Version)); + return (ULONG)error; +} + +ULONG WRITE_Version(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Version *nv; + + piGetAttr(o,OBJ_Node,(ULONG *)&nv); + if(error=PushChunk(msg->IFFh,NULL,ID_SVER,SIZE(Node_Version,nv_Version))) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)&nv->nv_Version,SIZE(Node_Version,nv_Version)); + if(error=PopChunk(msg->IFFh)) return (ULONG) error; + return (ULONG)error; +} + +TEXT DateString[15]; + +ULONG INIT_Version(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Version *nv; + struct Window *PropsWnd=NULL; + struct DateTime dt; + + piGetAttr(o,OBJ_Node,(ULONG *)&nv); + + PropsWnd=EditVersionWnd; + SetString(PropsWnd,EditVersionGadgets[GD_PGVER_PROGRAMNAME],nv->nv_ProgramName); + SetString(PropsWnd,EditVersionGadgets[GD_PGVER_AUTHOR],nv->nv_Author); + SetInteger(PropsWnd,EditVersionGadgets[GD_PGVER_VERSION],nv->nv_Version); + SetInteger(PropsWnd,EditVersionGadgets[GD_PGVER_REVISION],nv->nv_Revision); + + dt.dat_Format=FORMAT_CDN; + dt.dat_Flags=NULL; + dt.dat_StrDay=NULL; + dt.dat_StrDate=DateString; + dt.dat_StrTime=NULL; + DateStamp(&dt.dat_Stamp); + DateToStr(&dt); + SetText(PropsWnd,EditVersionGadgets[GD_PGVER_DATE],DateString); + return TRUE; +} + +ULONG APPLY_Version(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Version *nv; + + piGetAttr(o,OBJ_Node,(ULONG *)&nv); + + strcpy(nv->nv_ProgramName,GetString(EditVersionGadgets[GD_PGVER_PROGRAMNAME])); + strcpy(nv->nv_Author,GetString(EditVersionGadgets[GD_PGVER_AUTHOR])); + nv->nv_Version=GetInteger(EditVersionGadgets[GD_PGVER_VERSION]); + nv->nv_Revision=GetInteger(EditVersionGadgets[GD_PGVER_REVISION]); + + return TRUE; +} + +/******************************************************************************/ + +int FN_CloseWindow_EditVersion(void) +{ + piApplyObject(CurrentVersion); + piCloseWindow(CurrentVersion); + return 2; +} + +int FN_PGVER_PROGRAMNAME_Clicked(void) +{ + return 1; +} + +int FN_PGVER_AUTHOR_Clicked(void) +{ + return 1; +} + +int FN_PGVER_VERSION_Clicked(void) +{ + return 1; +} + +int FN_PGVER_REVISION_Clicked(void) +{ + return 1; +} + +int FN_ActiveWindow_EditVersion( void ) +{ + ActiveObject=ID_SVER; + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + if(TB_WindowWnd) CloseWindow_TB_Window(); + if(TB_PointerWnd) CloseWindow_TB_Pointer(); + return 1; +} diff --git a/GadToolsBox/version.h b/GadToolsBox/version.h new file mode 100755 index 0000000..d70c550 --- /dev/null +++ b/GadToolsBox/version.h @@ -0,0 +1,29 @@ +#ifndef GTB_VERSION_H +#define GTB_VERSION_H +/* +** Version +*/ + +#define ID_SVER MAKE_ID('S','V','E','R') // Version Chunk + +struct Node_Version +{ + ULONG nv_Version; + ULONG nv_Revision; + TEXT nv_ProgramName[256]; + TEXT nv_Author[256]; +}; + +ULONG Dispatcher_Version(piClass *,piObject *,Msg); +ULONG NEW_Version(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Version(piClass *,piObject *,Msg ); +ULONG OPEN_Version(piClass *,piObject *,Msg ); +ULONG CLOSE_Version(piClass *,piObject *,Msg ); +ULONG SET_Version(piClass *,piObject *,struct piSet *); +ULONG GET_Version(piClass *,piObject *,struct piGet *); +ULONG READ_Version(piClass *,piObject *,struct piIO *); +ULONG WRITE_Version(piClass *,piObject *,struct piIO *); +ULONG INIT_Version(piClass *,piObject *,Msg ); +ULONG APPLY_Version(piClass *,piObject *,Msg ); + +#endif /* GTB_VERSION_H */ diff --git a/GadToolsBox/window.c b/GadToolsBox/window.c new file mode 100755 index 0000000..6041014 --- /dev/null +++ b/GadToolsBox/window.c @@ -0,0 +1,1671 @@ +/* +** GadToolsBox v3 - Window management +*/ + +#include"includes.h" +#include"defines.h" + +/* +** Defines +*/ + +/* +** Functions +*/ + +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Style[]; +extern struct BevelBox BBOX_PROPERTIES_PAGES_PGWN_Flags3[]; + +struct Page PAGES_PROPERTIES_PGWN_PAGES[]= +{ + &PAGES_PROPERTIES_PGWN_PAGES[1], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PGWN_PAGES[2], NULL, FS_NORMAL, NULL, NULL, BBOX_PROPERTIES_PAGES_PGWN_Style, NULL, NULL, + &PAGES_PROPERTIES_PGWN_PAGES[3], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PGWN_PAGES[4], NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, + &PAGES_PROPERTIES_PGWN_PAGES[5], NULL, FS_NORMAL, NULL, NULL, BBOX_PROPERTIES_PAGES_PGWN_Flags3, NULL, NULL, + NULL, NULL, FS_NORMAL, NULL, NULL, NULL, NULL, NULL, +}; + +ULONG Dispatcher_Window(piClass *cl,piObject *o,Msg msg) +{ + ULONG retval=NULL; + + switch(msg->MethodID) + { + case OM_INIT: + retval=INIT_Window(cl,o,msg); + break; + case OM_APPLY: + retval=APPLY_Window(cl,o,msg); + break; + case OM_OPEN: + OpenWindow_PGWN_General(); + OpenWindow_PGWN_Style(); + OpenWindow_PGWN_Flags1(); + OpenWindow_PGWN_Flags2(); + OpenWindow_PGWN_Flags3(); + OpenWindow_PGWN_TabOrder(); + PAGES_PROPERTIES_PGWN_PAGES[0].FirstGadget=PGWN_GeneralGList; + PAGES_PROPERTIES_PGWN_PAGES[0].Name=GetCatString(MSG_PROPERTIES_PAGES_L30_GAD); + PAGES_PROPERTIES_PGWN_PAGES[1].FirstGadget=PGWN_StyleGList; + PAGES_PROPERTIES_PGWN_PAGES[1].Name=GetCatString(MSG_PROPERTIES_PAGES_L32_GAD); + PAGES_PROPERTIES_PGWN_PAGES[2].FirstGadget=PGWN_Flags1GList; + PAGES_PROPERTIES_PGWN_PAGES[2].Name=GetCatString(MSG_PROPERTIES_PAGES_L31_GAD); + PAGES_PROPERTIES_PGWN_PAGES[3].FirstGadget=PGWN_Flags2GList; + PAGES_PROPERTIES_PGWN_PAGES[3].Name=GetCatString(MSG_PROPERTIES_PAGES_L33_GAD); + PAGES_PROPERTIES_PGWN_PAGES[4].FirstGadget=PGWN_Flags3GList; + PAGES_PROPERTIES_PGWN_PAGES[4].Name=GetCatString(MSG_PROPERTIES_PAGES_L34_GAD); + PAGES_PROPERTIES_PGWN_PAGES[5].FirstGadget=PGWN_TabOrderGList; + PAGES_PROPERTIES_PGWN_PAGES[5].Name=GetCatString(MSG_PROPERTIES_PAGES_L42_GAD); + break; + case OM_CLOSE: + PAGES_PROPERTIES_PGWN_PAGES[5].FirstGadget=NULL; + PAGES_PROPERTIES_PGWN_PAGES[4].FirstGadget=NULL; + PAGES_PROPERTIES_PGWN_PAGES[3].FirstGadget=NULL; + PAGES_PROPERTIES_PGWN_PAGES[2].FirstGadget=NULL; + PAGES_PROPERTIES_PGWN_PAGES[1].FirstGadget=NULL; + PAGES_PROPERTIES_PGWN_PAGES[0].FirstGadget=NULL; + CloseWindow_PGWN_TabOrder(); + CloseWindow_PGWN_Flags3(); + CloseWindow_PGWN_Flags2(); + CloseWindow_PGWN_Flags1(); + CloseWindow_PGWN_Style(); + CloseWindow_PGWN_General(); + break; + case OM_NEW: + retval=NEW_Window(cl,o,(struct piSet *)msg); + break; + case OM_SET: + retval=SET_Window(cl,o,(struct piSet *)msg); + break; + case OM_GET: + retval=GET_Window(cl,o,(struct piGet *)msg); + break; + case OM_DISPOSE: + retval=DISPOSE_Window(cl,o,(struct piSet *)msg); + break; + case OM_RENDER: + retval=RENDER_Window(cl,o,msg); + break; + case OM_ERASE: + retval=ERASE_Window(cl,o,msg); + break; + case OM_ADDTAIL: + AddTail(List(&GUI.gui_List_Window),Node(o)); + break; + case OM_REMOVE: + Remove((struct Node *)o); + break; + case OM_CREATE: + retval=OPEN_Window(cl,o,msg); + break; + case OM_DELETE: + retval=CLOSE_Window(cl,o,msg); + break; + case OM_READ: + retval=READ_Window(cl,o,(struct piIO *)msg); + break; + case OM_WRITE: + retval=WRITE_Window(cl,o,(struct piIO *)msg); + break; + case OM_CUT: + retval=CUT_Window(cl,o,msg); + break; + case OM_COPY: + retval=COPY_Window(cl,o,(struct piCopy *)msg); + break; + } + return retval; +} + +ULONG CUT_Window(piClass *cl,piObject *o,Msg msg) +{ + piObject *go,*fo; + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node_Window *nw; + BOOL s=FALSE; + + piCopyObject(o,COPY_CLIP); + piCopyObject(o,COPY_UNDO); + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + switch(GUI.gui_Mode) + { + case MODE_GADGET: + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) { s=TRUE; break; } + } + if(s) + { +repg: for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) + { + piRemoveObject(go); + piDisposeObject(go); + goto repg; + } + } + piEraseObject(o); + piRenderObject(o); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + } + break; + case MODE_FRAME: + for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) { s=TRUE; break; } + } + if(s) + { +repf: for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) + { + piRemoveObject(fo); + piDisposeObject(fo); + goto repf; + } + } + piEraseObject(o); + piRenderObject(o); + PropertiesMode=PM_NONE; + RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + } + break; + } + if((!s) && (GUI.gui_Mode!=MODE_TEST)) + { + piRemoveObject(o); + piDisposeObject(o); +// PropertiesMode=PM_NONE; +// RefreshPropertiesWindow(GetCatString(MSG_NOOBJECT)); + return 2; + } + return TRUE; +} + +ULONG COPY_Window(piClass *cl,piObject *o,struct piCopy *msg) +{ + struct IFFHandle *iffh; + ULONG error=0; + piObject *go,*fo; + struct Node_Gadget *ng; + struct Node_Frame *nf; + struct Node_Window *nw; + BOOL sg=FALSE,sf=FALSE; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(!(ClipHandle=OpenClipboard(PRIMARY_CLIP))) return 1; + switch(GUI.gui_Mode) + { + case MODE_GADGET: + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) { sg=TRUE; break; } + } + break; + case MODE_FRAME: + for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) { sf=TRUE; break; } + } + break; + case MODE_TEST: + return TRUE; + } + if(iffh=AllocIFF()) + { + iffh->iff_Stream=(ULONG)((msg->Copy==COPY_CLIP)?ClipHandle:UndoHandle); + InitIFFasClip(iffh); + if(!OpenIFF(iffh,IFFF_WRITE)) + { + if(sg) // Copy Selected Gadgets + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + for(go=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(go);go=(piObject *)GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_Selected) piWriteObject(go,iffh); + } + if(error=PopChunk(iffh)) goto skip; + } + } + if(sf) // Copy Selected Frames + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + for(fo=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(fo);fo=(piObject *)GetSucc(fo)) + { + piGetAttr(fo,OBJ_Node,(ULONG *)&nf); + if(nf->nf_Selected) piWriteObject(fo,iffh); + } + if(error=PopChunk(iffh)) goto skip; + } + } + if((!sf) && (!sg)) // Copy Window + { + if(!PushChunk(iffh,ID_GTBX,ID_FORM,IFFSIZE_UNKNOWN)) + { + piWriteObject(o,iffh); + if(error=PopChunk(iffh)) goto skip; + } + } +skip: CloseIFF(iffh); + } + FreeIFF(iffh); + } + if(ClipHandle) CloseClipboard(ClipHandle); ClipHandle=NULL; + return TRUE; +} + +ULONG NEW_Window(piClass *cl,piObject *o,struct piSet *msg) +{ + piObject *obj; + struct Node_Window *nw; + + if(!CheckRegistration()) + if(!ListEmpty(&GUI.gui_List_Window)) return NULL; + if(obj=MyAllocVec(sizeof(piObject)+cl->Size,MEMF_PUBLIC|MEMF_CLEAR)) + { + nw=(struct Node_Window *)OBJECT_DATA(obj); + nw->nw_ID=ID_WIND; + obj->ln_Name=nw->nw_Label; + NewList(List(&nw->nw_List_Gadget)); + NewList(List(&nw->nw_List_Frame)); + nw->nw_Flags=WFLG_SIZEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_ACTIVATE|WFLG_NEWLOOKMENUS|WFLG_SIMPLE_REFRESH; + nw->nw_MyFlags=MYWA_FontAdaptive; + nw->nw_IDCMP=IDCMP_CLOSEWINDOW; + nw->nw_XPos=WPOS_REL_LEFT_TOP; + nw->nw_YPos=WPOS_REL_LEFT_TOP; + nw->nw_X=10; + nw->nw_Y=15; + nw->nw_Width=400; + nw->nw_Height=100; + nw->nw_Dimensions[0]=2; // min width + nw->nw_Dimensions[1]=2; // min height + nw->nw_Dimensions[2]=65535; // max width + nw->nw_Dimensions[3]=65535; // max hright + nw->nw_PageGadget=0; // 0 - no lock + nw->nw_Window=NULL; + } + return (ULONG) obj; +} + +ULONG DISPOSE_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Window *nw; + piObject *obj; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + piDoMethod(o,OM_DELETE); + while(obj=(piObject *)RemTail(List(&nw->nw_List_Frame))) piDoMethod(obj,OM_DISPOSE); + while(obj=(piObject *)RemTail(List(&nw->nw_List_Gadget))) piDoMethod(obj,OM_DISPOSE); + + MyFreeVec(o); + return TRUE; +} + +ULONG RENDER_Window(piClass *cl,piObject *o,Msg msg) +{ + piObject *obj; + struct Node_Window *nw; + struct Node_Gadget *ng; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + ShowGrid(o); + for(obj=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(obj);obj=(piObject *)GetSucc(obj)) piDoMethod(obj,OM_RENDER); + if(GUI.gui_Mode!=MODE_TEST) + { + for(obj=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(obj);obj=(piObject *)GetSucc(obj)) piDoMethod(obj,OM_RENDER); + } + else + { + for(obj=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(obj);obj=(piObject *)GetSucc(obj)) + { + piGetAttr(obj,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==DATATYPE_ID) + { + RefreshDTObject((Object *)ng->ng_Gadget,nw->nw_Window,NULL,TAG_DONE); + RefreshGadgets(ng->ng_Gadget,nw->nw_Window,NULL); + } + } + GT_RefreshWindow(nw->nw_Window,NULL); + } + } + return TRUE; +} + +ULONG ERASE_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(nw->nw_Window) + { + SetAPen(nw->nw_Window->RPort,DrawInfo->dri_Pens[BACKGROUNDPEN]); + SetDrMd(nw->nw_Window->RPort,JAM1); + RectFill(nw->nw_Window->RPort,nw->nw_Window->BorderLeft,nw->nw_Window->BorderTop,nw->nw_Window->Width-nw->nw_Window->BorderRight-1,nw->nw_Window->Height-nw->nw_Window->BorderBottom-1); + ShowGrid(o); + } + return TRUE; +} + +ULONG OPEN_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Gadget *gads,*drag=NULL; + struct Node_Window *nw; + struct List *l; + piObject *so; + ULONG flags; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(nw) + { + if(nw->nw_Window) + { + WindowToFront(nw->nw_Window); + ActivateWindow(nw->nw_Window); + return TRUE; + } + else + { + piGetAttr(o,WNOBJ_GadgetList,(ULONG *)&l); + for(so=(piObject *)GetHead(l);GetSucc(so);so=(piObject *)GetSucc(so)) piSetAttrs(so,OBJ_Select,FALSE,TAG_DONE); + piGetAttr(o,WNOBJ_FrameList,(ULONG *)&l); + for(so=(piObject *)GetHead(l);GetSucc(so);so=(piObject *)GetSucc(so)) piSetAttrs(so,OBJ_Select,FALSE,TAG_DONE); + + nw->nw_Zoom[0]=WinLeft(o); + nw->nw_Zoom[1]=WinTop(o); + if(nw->nw_WindowTitle[0]) nw->nw_Zoom[2]=TextLength(&Scr->RastPort,(UBYTE *)nw->nw_WindowTitle,strlen((char *)nw->nw_WindowTitle))+80; + else nw->nw_Zoom[2]=80L; + nw->nw_Zoom[3]=Scr->WBorTop+Scr->RastPort.TxHeight+1; + + if((nw->nw_MyFlags & MYWA_DragToolHoriz) || (nw->nw_MyFlags & MYWA_DragToolVert)) + { + if(drag=MyAllocVec(sizeof(struct Gadget),MEMF_PUBLIC|MEMF_CLEAR)) + { + if((nw->nw_MyFlags & MYWA_DragToolVert)) + { drag->Width=8; drag->Height=nw->nw_Height; } + if((nw->nw_MyFlags & MYWA_DragToolHoriz)) + { drag->Width=nw->nw_Width; drag->Height=8; } + drag->Flags=GFLG_GADGHNONE; + drag->Activation=((nw->nw_MyFlags & MYWA_DragToolHoriz)?GACT_TOPBORDER:GACT_LEFTBORDER)|GACT_BORDERSNIFF; + drag->GadgetType=GTYP_WDRAGGING; + drag->NextGadget=NULL; + drag->UserData=(APTR)DRAG_ID; + } + } + + flags=nw->nw_Flags; + ClearFlag(flags,WFLG_SIMPLE_REFRESH); + ClearFlag(flags,WFLG_SMART_REFRESH); + ClearFlag(flags,WFLG_SUPER_BITMAP); + if(nw->nw_Window=OpenWindowTags(NULL, + WA_Left,WinLeft(o), + WA_Top,WinTop(o), + WA_Flags,flags, + WA_CustomScreen,Scr, + (nw->nw_ScreenTitle[0]) ? WA_ScreenTitle : TAG_IGNORE,nw->nw_ScreenTitle, + (nw->nw_WindowTitle[0]) ? WA_Title : TAG_IGNORE,nw->nw_WindowTitle, + (nw->nw_MyFlags&MYWA_InnerWidth) ? WA_InnerWidth : WA_Width,WinWidth(o), + (nw->nw_MyFlags&MYWA_InnerHeight) ? WA_InnerHeight : WA_Height,WinHeight(o), + (nw->nw_MyFlags&MYWA_MouseQueue) ? WA_MouseQueue : TAG_IGNORE,nw->nw_MouseQueue, + (nw->nw_MyFlags&MYWA_RptQueue) ? WA_RptQueue : TAG_IGNORE,nw->nw_RptQueue, + (nw->nw_MyFlags&MYWA_AutoAdjust) ? WA_AutoAdjust : TAG_IGNORE,TRUE, + (nw->nw_MyFlags&MYWA_PubScreenFallBack) ? WA_PubScreenFallBack : TAG_IGNORE,TRUE, + (nw->nw_MyFlags&MYWA_MenuHelp) ? WA_MenuHelp : TAG_IGNORE,TRUE, + (nw->nw_MyFlags&MYWA_NotifyDepth) ? WA_NotifyDepth : TAG_IGNORE,TRUE, + (nw->nw_MyFlags&MYWA_PointerDelay) ? WA_PointerDelay : TAG_IGNORE,TRUE, + (nw->nw_Flags&WFLG_SIZEGADGET) ? WA_MinWidth : TAG_IGNORE,nw->nw_Dimensions[0], + (nw->nw_Flags&WFLG_SIZEGADGET) ? WA_MinHeight : TAG_IGNORE,nw->nw_Dimensions[1], + (nw->nw_Flags&WFLG_SIZEGADGET) ? WA_MaxWidth : TAG_IGNORE,nw->nw_Dimensions[2], + (nw->nw_Flags&WFLG_SIZEGADGET) ? WA_MaxHeight : TAG_IGNORE,nw->nw_Dimensions[3], + (nw->nw_MyFlags&MYWA_PubScreenFallBack) ? WA_PubScreenFallBack : TAG_IGNORE, TRUE, + (nw->nw_MyFlags&MYWA_Zoom) ? WA_Zoom : TAG_IGNORE, nw->nw_Zoom, + WA_ReportMouse,TRUE, + WA_SmartRefresh,TRUE, + drag ? WA_Gadgets : TAG_IGNORE, drag, + TAG_DONE)) + { + SetFont(nw->nw_Window->RPort,EditFontTF); + + if(gads=CreateAllGadgets(o)) + { + AddGList(nw->nw_Window,gads,-1,-1,NULL); + RefreshGList(gads,nw->nw_Window,NULL,-1); + } + + nw->nw_Window->UserData=(BYTE *)o; + nw->nw_Window->UserPort=ProjectMsgPort; + ModifyIDCMP(nw->nw_Window,IDCMP_CLOSEWINDOW|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|IDCMP_NEWSIZE|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_RAWKEY|IDCMP_MENUVERIFY|IDCMP_ACTIVEWINDOW); + SetMenuStrip(nw->nw_Window,MainMenus); + piRenderObject(o); + return TRUE; + } + } + } + return FALSE; +} + +ULONG CLOSE_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Gadget *gadg=NULL,*drag=NULL; + struct Node_Window *nw; + piObject *obj; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(GUI.gui_Mode==MODE_TEST) + for(obj=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(obj);obj=(piObject *)GetSucc(obj)) + piDoMethod(obj,OM_DELETE); + if(nw->nw_Window) + { + ClearMenuStrip(nw->nw_Window); + gadg=nw->nw_Window->FirstGadget; + while(gadg) + { + if(((ULONG)gadg->UserData)==DRAG_ID) { drag=gadg; break; } + gadg=gadg->NextGadget; + } + if(drag) + { + RemoveGadget(nw->nw_Window,drag); + MyFreeVec(drag); + } + CloseWindowSafely(nw->nw_Window); nw->nw_Window=NULL; + } + if(nw->nw_Gadgets) FreeGadgets(nw->nw_Gadgets); nw->nw_Gadgets=NULL; + return TRUE; +} + +ULONG SET_Window(piClass *cl,piObject *o,struct piSet *msg) +{ +// struct TagItem *t; +// struct Node_Window *nw=(struct Node_Window *)OBJECT_DATA(o); + + return TRUE; +} + +ULONG GET_Window(piClass *cl,piObject *o,struct piGet *msg) +{ + struct Node_Window *nw=(struct Node_Window *)OBJECT_DATA(o); + + switch(msg->TagID) + { + case WNOBJ_GadgetList: *(msg->TagData)=(ULONG)&nw->nw_List_Gadget; return TRUE; + case WNOBJ_FrameList: *(msg->TagData)=(ULONG)&nw->nw_List_Frame; return TRUE; + case WNOBJ_RastPort: *(msg->TagData)=(ULONG)nw->nw_Window->RPort; return TRUE; + case OBJ_Node: *(msg->TagData)=(ULONG)nw; return TRUE; + case OBJ_Properties: *(msg->TagData)=(ULONG)PAGES_PROPERTIES_PGWN_PAGES; return TRUE; + case GA_Left: *(msg->TagData)=(ULONG)nw->nw_X; return TRUE; + case GA_Top: *(msg->TagData)=(ULONG)nw->nw_Y; return TRUE; + case GA_Width: *(msg->TagData)=(ULONG)nw->nw_Width; return TRUE; + case GA_Height: *(msg->TagData)=(ULONG)nw->nw_Height; return TRUE; + default: *(msg->TagData)=NULL; return FALSE; + } +} + +ULONG READ_Window(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + ReadChunkBytes(msg->IFFh,(APTR)&nw->nw_X,SIZE(Node_Window,nw_X)); + return (ULONG)error; +} + +ULONG WRITE_Window(piClass *cl,piObject *o,struct piIO *msg) +{ + LONG error=0; + struct Node_Window *nw; + piObject *to; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + if(error=PushChunk(msg->IFFh,NULL,ID_WIND,SIZE(Node_Window,nw_X))) return (ULONG)error; + WriteChunkBytes(msg->IFFh,(APTR)&nw->nw_X,SIZE(Node_Window,nw_X)); + if(error=PopChunk(msg->IFFh)) return (ULONG) error; + + if(!IsListEmpty(List(&nw->nw_List_Gadget))) + { + for(to=(piObject *)GetHead(List(&nw->nw_List_Gadget));GetSucc(to);to=(piObject *)GetSucc(to)) piWriteObject(to,msg->IFFh); + } + if(!IsListEmpty(List(&nw->nw_List_Frame))) + { + for(to=(piObject *)GetHead(List(&nw->nw_List_Frame));GetSucc(to);to=(piObject *)GetSucc(to)) piWriteObject(to,msg->IFFh); + } + return (ULONG)error; +} + +ULONG INIT_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Window *nw; + ULONG active=0; + struct Window *PropsWnd=NULL; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + GetAttr(PAGE_Active,PropertiesGadgets[GD_PROPERTIES_PAGES], &active); + +// General + if(active==0) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_INNERWIDTH],nw->nw_MyFlags&MYWA_InnerWidth); + SetCheckMark(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_INNERHEIGHT],nw->nw_MyFlags&MYWA_InnerHeight); + SetCycle(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_REL_X],nw->nw_XPos); + SetCycle(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_REL_Y],nw->nw_YPos); + SetString(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_LABEL],nw->nw_Label); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_X],nw->nw_X); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_Y],nw->nw_Y); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_WIDTH],nw->nw_Width); + SetInteger(PropsWnd,PGWN_GeneralGadgets[GD_PGWN_HEIGHT],nw->nw_Height); + if(nw->nw_XPos==WPOS_CENTER) DisableGadget(PGWN_GeneralGadgets[GD_PGWN_X],PropsWnd,TRUE); + else DisableGadget(PGWN_GeneralGadgets[GD_PGWN_X],PropsWnd,FALSE); + if(nw->nw_YPos==WPOS_CENTER) DisableGadget(PGWN_GeneralGadgets[GD_PGWN_Y],PropsWnd,TRUE); + else DisableGadget(PGWN_GeneralGadgets[GD_PGWN_Y],PropsWnd,FALSE); + +// Style + if(active==1) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCycle(PropsWnd,PGWN_StyleGadgets[GD_PGWN_DRAGGADGET],0); + GetFlag(nw->nw_Flags,WFLG_DRAGBAR) SetCycle(PropsWnd,PGWN_StyleGadgets[GD_PGWN_DRAGGADGET],1); + GetFlag(nw->nw_MyFlags,MYWA_DragToolHoriz) SetCycle(PropsWnd,PGWN_StyleGadgets[GD_PGWN_DRAGGADGET],2); + GetFlag(nw->nw_MyFlags,MYWA_DragToolVert) SetCycle(PropsWnd,PGWN_StyleGadgets[GD_PGWN_DRAGGADGET],3); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_SIZEGADGET],nw->nw_Flags&WFLG_SIZEGADGET); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_CLOSEGADGET],nw->nw_Flags&WFLG_CLOSEGADGET); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_DEPTHGADGET],nw->nw_Flags&WFLG_DEPTHGADGET); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_SIZEBRIGHT],nw->nw_Flags&WFLG_SIZEBRIGHT); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_SIZEBBOTTOM],nw->nw_Flags&WFLG_SIZEBBOTTOM); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_BACKDROP],nw->nw_Flags&WFLG_BACKDROP); + SetCheckMark(PropsWnd,PGWN_StyleGadgets[GD_PGWN_BORDERLESS],nw->nw_Flags&WFLG_BORDERLESS); + +// Flags1 + if(active==2) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PGWN_Flags1Gadgets[GD_PGWN_PROJECT],nw->nw_MyFlags&MYWA_Project); + SetCheckMark(PropsWnd,PGWN_Flags1Gadgets[GD_PGWN_FONTADAPTIVE],nw->nw_MyFlags&MYWA_FontAdaptive); + SetString(PropsWnd,PGWN_Flags1Gadgets[GD_PGWN_WINDOW_TITLE],nw->nw_WindowTitle); + SetString(PropsWnd,PGWN_Flags1Gadgets[GD_PGWN_SCREEN_TITLE],nw->nw_ScreenTitle); + SetText(PropsWnd,PGWN_Flags1Gadgets[GD_PGWN_MENU],nw->nw_MenuTitle); + +// Flags2 + if(active==3) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_GZZ],nw->nw_Flags&WFLG_GIMMEZEROZERO); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_NEWLOOKMENUS],nw->nw_Flags&WFLG_NEWLOOKMENUS); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_NOCAREREFRESH],nw->nw_Flags&WFLG_NOCAREREFRESH); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_REPORTMOUSE],nw->nw_Flags&WFLG_REPORTMOUSE); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_RMBTRAP],nw->nw_Flags&WFLG_RMBTRAP); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_ACTIVATE],nw->nw_Flags&WFLG_ACTIVATE); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_FALLBACK],nw->nw_MyFlags&MYWA_PubScreenFallBack); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_ZOOM],nw->nw_MyFlags&MYWA_Zoom); + SetCheckMark(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_AUTOADJUST],nw->nw_MyFlags&MYWA_AutoAdjust); + GetFlag(nw->nw_Flags,WFLG_SIMPLE_REFRESH) SetCycle(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_REFRESH],0); + GetFlag(nw->nw_Flags,WFLG_SMART_REFRESH) SetCycle(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_REFRESH],1); + GetFlag(nw->nw_Flags,WFLG_SUPER_BITMAP) SetCycle(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_REFRESH],2); +// GetFlag(nw->nw_Flags,WFLG_OTHER_REFRESH) SetCycle(PropsWnd,PGWN_Flags2Gadgets[GD_PGWN_REFRESH],3); + +// Flags3 + if(active==4) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetCheckMark(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_MENUHELP],nw->nw_MyFlags&MYWA_MenuHelp); + SetCheckMark(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_MOUSEQUEUE_SET],nw->nw_MyFlags&MYWA_MouseQueue); + SetCheckMark(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_REPEATQUEUE_SET],nw->nw_MyFlags&MYWA_RptQueue); + SetCheckMark(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_POINTERDELAY],nw->nw_MyFlags&MYWA_PointerDelay); + SetCheckMark(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_NOTIFYDEPTH],nw->nw_MyFlags&MYWA_NotifyDepth); + SetInteger(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_MOUSEQUEUE],nw->nw_MouseQueue); + SetInteger(PropsWnd,PGWN_Flags3Gadgets[GD_PGWN_REPEATQUEUE],nw->nw_RptQueue); + +// TabOrder + if(active==5) PropsWnd=PropertiesWnd; else PropsWnd=NULL; + SetListView(PropsWnd,PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],&nw->nw_List_Gadget); + return TRUE; +} + +ULONG APPLY_Window(piClass *cl,piObject *o,Msg msg) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + + strcpy(nw->nw_Label,GetString(PGWN_GeneralGadgets[GD_PGWN_LABEL])); + RefreshObjectList(); + nw->nw_X=GetInteger(PGWN_GeneralGadgets[GD_PGWN_X]); + nw->nw_Y=GetInteger(PGWN_GeneralGadgets[GD_PGWN_Y]); + nw->nw_Width=GetInteger(PGWN_GeneralGadgets[GD_PGWN_WIDTH]); + nw->nw_Height=GetInteger(PGWN_GeneralGadgets[GD_PGWN_HEIGHT]); + + strcpy(nw->nw_WindowTitle,GetString(PGWN_Flags1Gadgets[GD_PGWN_WINDOW_TITLE])); + strcpy(nw->nw_ScreenTitle,GetString(PGWN_Flags1Gadgets[GD_PGWN_SCREEN_TITLE])); + + nw->nw_MouseQueue=GetInteger(PGWN_Flags3Gadgets[GD_PGWN_MOUSEQUEUE]); + nw->nw_RptQueue=GetInteger(PGWN_Flags3Gadgets[GD_PGWN_REPEATQUEUE]); + + return TRUE; +} + +/****************************************************************************/ + +void DeleteAllWindows() +{ + piObject *obj; + + for(obj=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(obj);obj=(piObject *)GetSucc(obj)) piCloseWindow(obj); +} + +void DisposeAllWindows() +{ + piObject *obj; + + while(obj=(piObject *)RemTail(List(&GUI.gui_List_Window))) piDisposeObject(obj); +} + +void LayoutAllWindows() +{ + piObject *obj; + + for(obj=(piObject *)GetHead(&GUI.gui_List_Window);GetSucc(obj);obj=(piObject *)GetSucc(obj)) piRenderObject(obj); +} + +UWORD WinLeft(piObject *o) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + switch(nw->nw_XPos) + { + case WPOS_CENTER: return(UWORD)(Scr->Width/2-WinWidth(o)/2); + case WPOS_REL_LEFT_TOP: return(UWORD)(nw->nw_X); + case WPOS_REL_RIGHT_BOTTOM: return(UWORD)(Scr->Width-WinWidth(o)-nw->nw_X); + } +} + +UWORD WinTop(piObject *o) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + switch(nw->nw_YPos) + { + case WPOS_CENTER: return(UWORD)(Scr->Height/2-WinHeight(o)/2); + case WPOS_REL_LEFT_TOP: return(UWORD)(nw->nw_Y); + case WPOS_REL_RIGHT_BOTTOM: return(UWORD)( Scr->Height-WinHeight(o)-nw->nw_Y); + } +} + +UWORD WinWidth(piObject *o) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + return (UWORD) nw->nw_Width; +// return(UWORD) ( nw->nw_MyFlags & MYWA_FontAdaptive ? ComputeX(nw->nw_Width) : nw->nw_Width); +} + +UWORD WinHeight(piObject *o) +{ + struct Node_Window *nw; + + piGetAttr(o,OBJ_Node,(ULONG *)&nw); + return (UWORD) nw->nw_Height; +// return(UWORD)( nw->nw_MyFlags & MYWA_FontAdaptive ? (UWORD)ComputeY(nw->nw_Height) : (UWORD)nw->nw_Height); +} + +/****************************************************************************/ + +int FN_PGWN_INNERWIDTH_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_InnerWidth); + + if(code) nw->nw_Width=nw->nw_Width-nw->nw_Window->BorderLeft-nw->nw_Window->BorderRight; + else nw->nw_Width=nw->nw_Width+nw->nw_Window->BorderLeft+nw->nw_Window->BorderRight; + + SetInteger(PropertiesWnd,PGWN_GeneralGadgets[GD_PGWN_WIDTH],nw->nw_Width); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_INNERHEIGHT_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_InnerHeight); + + if(code) nw->nw_Height=nw->nw_Height-nw->nw_Window->BorderTop-nw->nw_Window->BorderBottom; + else nw->nw_Height=nw->nw_Height+nw->nw_Window->BorderTop+nw->nw_Window->BorderBottom; + + SetInteger(PropertiesWnd,PGWN_GeneralGadgets[GD_PGWN_HEIGHT],nw->nw_Height); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REL_X_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + nw->nw_XPos=PropertiesMsg.Code; + + if(nw->nw_XPos==WPOS_CENTER) DisableGadget(PGWN_GeneralGadgets[GD_PGWN_X],PropertiesWnd,TRUE); + else DisableGadget(PGWN_GeneralGadgets[GD_PGWN_X],PropertiesWnd,FALSE); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REL_Y_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + nw->nw_YPos=PropertiesMsg.Code; + + if(nw->nw_YPos==WPOS_CENTER) DisableGadget(PGWN_GeneralGadgets[GD_PGWN_Y],PropertiesWnd,TRUE); + else DisableGadget(PGWN_GeneralGadgets[GD_PGWN_Y],PropertiesWnd,FALSE); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REL_W_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REL_H_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_LABEL_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_X_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_Y_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_WIDTH_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_HEIGHT_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_SIZEGADGET_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_SIZEGADGET); + + if(code) + { + DisableGadget(PGWN_StyleGadgets[GD_PGWN_SIZEBBOTTOM],PropertiesWnd,FALSE); + DisableGadget(PGWN_StyleGadgets[GD_PGWN_SIZEBRIGHT],PropertiesWnd,FALSE); + } + else + { + DisableGadget(PGWN_StyleGadgets[GD_PGWN_SIZEBBOTTOM],PropertiesWnd,TRUE); + DisableGadget(PGWN_StyleGadgets[GD_PGWN_SIZEBRIGHT],PropertiesWnd,TRUE); + } + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_CLOSEGADGET_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_CLOSEGADGET); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_DEPTHGADGET_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_DEPTHGADGET); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_DRAGGADGET_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + ClearFlag(nw->nw_Flags,WFLG_DRAGBAR); + ClearFlag(nw->nw_MyFlags,MYWA_DragToolHoriz); + ClearFlag(nw->nw_MyFlags,MYWA_DragToolVert); + switch(PropertiesMsg.Code) + { + case 0: break; + case 1: SetFlag(nw->nw_Flags,WFLG_DRAGBAR); break; + case 2: SetFlag(nw->nw_MyFlags,MYWA_DragToolHoriz); break; + case 3: SetFlag(nw->nw_MyFlags,MYWA_DragToolVert); break; + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_SIZEBRIGHT_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_SIZEBRIGHT); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_SIZEBBOTTOM_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_SIZEBBOTTOM); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_BACKDROP_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_BACKDROP); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_BORDERLESS_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_BORDERLESS); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_PROJECT_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_Project); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_FONTADAPTIVE_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_FontAdaptive); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_WINDOW_TITLE_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_SCREEN_TITLE_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +extern ULONG ListSelected; + +int FN_PGWN_MENU_GET_Clicked(void) +{ + piObject *mo; + int run=1; + struct Node_Window *nw; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + if(!OpenWindow_List()) + { + SetListView(ListWnd,ListGadgets[GD_LIST],&GUI.gui_List_Menu); + while(run==1) + { + Wait(1L<UserPort->mp_SigBit); + run=HandleIDCMP_List(); + } + CloseWindow_List(); + if(run==2) + { + mo=(piObject *)FindNodeNum(List(&GUI.gui_List_Menu),ListSelected); + strcpy(nw->nw_MenuTitle,mo->ln_Name); + SetText(PropertiesWnd,PGWN_Flags1Gadgets[GD_PGWN_MENU],nw->nw_MenuTitle); + } + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_PAGED_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + if(PropertiesMsg.Code) nw->nw_PageGadget++; + else nw->nw_PageGadget--; + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_APPWINDOW_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_AppWindow); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_GZZ_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_GIMMEZEROZERO); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_NEWLOOKMENUS_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_NEWLOOKMENUS); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_NOCAREREFRESH_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_NOCAREREFRESH); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REPORTMOUSE_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_REPORTMOUSE); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_RMBTRAP_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_RMBTrap); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_ACTIVATE_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_Flags,WFLG_ACTIVATE); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_FALLBACK_Clicked(void) +{ + struct Node_Window *nw; +// ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + +// code=PropertiesMsg.Code; +// DoFlag(nw->nw_Flags,WFLG_FALLBACK); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_ZOOM_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_Zoom); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_AUTOADJUST_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_AutoAdjust); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REFRESH_Clicked(void) +{ + struct Node_Window *nw; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + ClearFlag(nw->nw_Flags,WFLG_SIMPLE_REFRESH); + ClearFlag(nw->nw_Flags,WFLG_SMART_REFRESH); + ClearFlag(nw->nw_Flags,WFLG_SUPER_BITMAP); +// ClearFlag(nw->nw_Flags,WFLG_OTHER_REFRESH); + switch(PropertiesMsg.Code) + { + case 0: SetFlag(nw->nw_Flags,WFLG_SIMPLE_REFRESH); break; + case 1: SetFlag(nw->nw_Flags,WFLG_SMART_REFRESH); break; + case 2: SetFlag(nw->nw_Flags,WFLG_SUPER_BITMAP); break; +// case 3: SetFlag(nw->nw_Flags,WFLG_OTHER_REFRESH); break; + } + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_MENUHELP_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_MenuHelp); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_MOUSEQUEUE_SET_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_MouseQueue); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REPEATQUEUE_SET_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_RptQueue); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_POINTERDELAY_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_PointerDelay); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_NOTIFYDEPTH_Clicked(void) +{ + struct Node_Window *nw; + ULONG code; + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + + code=PropertiesMsg.Code; + DoFlag(nw->nw_MyFlags,MYWA_NotifyDepth); + + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_MOUSEQUEUE_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_REPEATQUEUE_Clicked(void) +{ + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +ULONG PGWNListSelectedLabel=-1; + +int FN_PGWN_TABORDER_LIST_Clicked( void ) +{ + struct Node_Window *nw; + BOOL du,dd; + struct piObject *go; + struct Node_Gadget *ng; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + PGWNListSelectedLabel=PropertiesMsg.Code; + if(!GetSucc(GetSucc(FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)))) + dd=TRUE; + else + dd=FALSE; + if(PGWNListSelectedLabel==0) du=TRUE; + else du=FALSE; + + if(!du) + { + if(go=(piObject *)FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==PAGE_ID) + { + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,TRUE); + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,TRUE); + return 1; + } + if(GetSucc(GetSucc(go))) + { + if(go=GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==PAGE_ID) + { + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,du); + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,TRUE); + return 1; + } + } + } + } + } + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,du); + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,dd); + return 1; +} + +int FN_PGWN_TABORDER_UP_Clicked( void ) +{ + struct Node_Window *nw; + struct piObject *go; + struct Node_Gadget *ng; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + if(PGWNListSelectedLabel!=-1) + { + if(go=(piObject *)FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==PAGE_ID) return 1; + } + SetListView(PropertiesWnd,PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],NULL); + MoveNodeUp(List(&nw->nw_List_Gadget),FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)); + if(PGWNListSelectedLabel>0) PGWNListSelectedLabel--; + SetListView(PropertiesWnd,PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],&nw->nw_List_Gadget); + if(!GetSucc(GetSucc(FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)))) + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,FALSE); + if(PGWNListSelectedLabel==0) DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,TRUE); + else DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,FALSE); + GT_SetGadgetAttrs(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],PropertiesWnd,NULL,GTLV_Selected,PGWNListSelectedLabel,GTLV_MakeVisible,PGWNListSelectedLabel,TAG_DONE); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_PGWN_TABORDER_DOWN_Clicked( void ) +{ + struct Node_Window *nw; + struct piObject *go; + struct Node_Gadget *ng; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + if(PGWNListSelectedLabel!=-1) + { + if(go=(piObject *)FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==PAGE_ID) return 1; + if(GetSucc(GetSucc(go))) + if(go=GetSucc(go)) + { + piGetAttr(go,OBJ_Node,(ULONG *)&ng); + if(ng->ng_PlugInID==PAGE_ID) return 1; + } + } + SetListView(PropertiesWnd,PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],NULL); + MoveNodeDown(List(&nw->nw_List_Gadget),FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)); + if(FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel+1)) PGWNListSelectedLabel++; + SetListView(PropertiesWnd,PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],&nw->nw_List_Gadget); + if(!GetSucc(GetSucc(FindNodeNum(List(&nw->nw_List_Gadget),PGWNListSelectedLabel)))) + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,TRUE); + else + DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_DOWN],PropertiesWnd,FALSE); + if(PGWNListSelectedLabel==0) DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,TRUE); + else DisableGadget(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_UP],PropertiesWnd,FALSE); + GT_SetGadgetAttrs(PGWN_TabOrderGadgets[GD_PGWN_TABORDER_LIST],PropertiesWnd,NULL,GTLV_Selected,PGWNListSelectedLabel,GTLV_MakeVisible,PGWNListSelectedLabel,TAG_DONE); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +ULONG IDCMPs; + +int FN_PGWN_IDCMP_Clicked(void) +{ + struct Node_Window *nw; + int run=1; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + IDCMPs=nw->nw_IDCMP; + if(!OpenWindow_WN_IDCMPFlags()) + { + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_MENUVERIFY],IDCMPs&IDCMP_MENUVERIFY); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_SIZEVERIFY],IDCMPs&IDCMP_SIZEVERIFY); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_REQVERIFY],IDCMPs&IDCMP_REQVERIFY); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_REQSET],IDCMPs&IDCMP_REQSET); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_REQCLEAR],IDCMPs&IDCMP_REQCLEAR); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_NEWSIZE],IDCMPs&IDCMP_NEWSIZE); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_NEWPREFS],IDCMPs&IDCMP_NEWPREFS); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_REFRESHWINDOW],IDCMPs&IDCMP_REFRESHWINDOW); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_CHANGEWINDOW],IDCMPs&IDCMP_CHANGEWINDOW); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_CLOSEWINDOW],IDCMPs&IDCMP_CLOSEWINDOW); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_IDCMPUPDATE],IDCMPs&IDCMP_IDCMPUPDATE); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_MENUHELP],IDCMPs&IDCMP_MENUHELP); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_GADGETHELP],IDCMPs&IDCMP_GADGETHELP); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_MOUSEMOVE],IDCMPs&IDCMP_MOUSEMOVE); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_DELTAMOVE],IDCMPs&IDCMP_DELTAMOVE); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_MOUSEBUTTONS],IDCMPs&IDCMP_MOUSEBUTTONS); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_GADGETUP],IDCMPs&IDCMP_GADGETUP); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_GADGETDOWN],IDCMPs&IDCMP_GADGETDOWN); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_RAWKEY],IDCMPs&IDCMP_RAWKEY); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_VANILLAKEY],IDCMPs&IDCMP_VANILLAKEY); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_INTUITICKS],IDCMPs&IDCMP_INTUITICKS); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_ACTIVEWINDOW],IDCMPs&IDCMP_ACTIVEWINDOW); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_INACTIVEWINDOW],IDCMPs&IDCMP_INACTIVEWINDOW); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_DISKREMOVED],IDCMPs&IDCMP_DISKREMOVED); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_DISKINSERTED],IDCMPs&IDCMP_DISKINSERTED); + SetCheckMark(WN_IDCMPFlagsWnd,WN_IDCMPFlagsGadgets[GD_IDCMP_MENUPICK],IDCMPs&IDCMP_MENUPICK); + while(run) + { + Wait(1L<UserPort->mp_SigBit); + run=HandleIDCMP_WN_IDCMPFlags(); + } + CloseWindow_WN_IDCMPFlags(); + } + PropertiesChanged=TRUE; + FN_PROPERTIES_APPLY_Clicked(); + return 1; +} + +int FN_IDCMP_OK_Clicked(void) +{ + struct Node_Window *nw; + + piGetAttr(CurrentWindow,OBJ_Node,(ULONG *)&nw); + nw->nw_IDCMP=IDCMPs; + return 0; +} + +int FN_IDCMP_CANCEL_Clicked(void) +{ + return 0; +} + +int FN_IDCMP_MENUVERIFY_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_MENUVERIFY); + return 1; +} + +int FN_IDCMP_SIZEVERIFY_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_SIZEVERIFY); + return 1; +} + +int FN_IDCMP_REQVERIFY_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_REQVERIFY); + return 1; +} + +int FN_IDCMP_REQSET_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_REQSET); + return 1; +} + +int FN_IDCMP_REQCLEAR_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_REQCLEAR); + return 1; +} + +int FN_IDCMP_NEWSIZE_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_NEWSIZE); + return 1; +} + +int FN_IDCMP_NEWPREFS_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_NEWPREFS); + return 1; +} + +int FN_IDCMP_REFRESHWINDOW_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_REFRESHWINDOW); + return 1; +} + +int FN_IDCMP_CHANGEWINDOW_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_CHANGEWINDOW); + return 1; +} + +int FN_IDCMP_CLOSEWINDOW_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_CLOSEWINDOW); + return 1; +} + +int FN_IDCMP_IDCMPUPDATE_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_IDCMPUPDATE); + return 1; +} + +int FN_IDCMP_MENUHELP_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_MENUHELP); + return 1; +} + +int FN_IDCMP_GADGETHELP_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_GADGETHELP); + return 1; +} + +int FN_IDCMP_MOUSEMOVE_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_MOUSEMOVE); + return 1; +} + +int FN_IDCMP_DELTAMOVE_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_DELTAMOVE); + return 1; +} + +int FN_IDCMP_MOUSEBUTTONS_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_MOUSEBUTTONS); + return 1; +} + +int FN_IDCMP_GADGETUP_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_GADGETUP); + return 1; +} + +int FN_IDCMP_GADGETDOWN_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_GADGETDOWN); + return 1; +} + +int FN_IDCMP_RAWKEY_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_RAWKEY); + return 1; +} + +int FN_IDCMP_VANILLAKEY_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_VANILLAKEY); + return 1; +} + +int FN_IDCMP_INTUITICKS_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_INTUITICKS); + return 1; +} + +int FN_IDCMP_ACTIVEWINDOW_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_ACTIVEWINDOW); + return 1; +} + +int FN_IDCMP_INACTIVEWINDOW_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_INACTIVEWINDOW); + return 1; +} + +int FN_IDCMP_DISKREMOVED_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_DISKREMOVED); + return 1; +} + +int FN_IDCMP_DISKINSERTED_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_DISKINSERTED); + return 1; +} + +int FN_IDCMP_MENUPICK_Clicked(void) +{ + ULONG code=WN_IDCMPFlagsMsg.Code; + DoFlag(IDCMPs,IDCMP_MENUPICK); + return 1; +} + +int FN_CloseWindow_WN_IDCMPFlags(void) +{ + return 0; +} diff --git a/GadToolsBox/window.h b/GadToolsBox/window.h new file mode 100755 index 0000000..89ae127 --- /dev/null +++ b/GadToolsBox/window.h @@ -0,0 +1,95 @@ +#ifndef GTB_WINDOW_H +#define GTB_WINDOW_H +/* +** Window +*/ + +/* +** Window +*/ + +#define ID_WIND MAKE_ID('W','I','N','D') // Window Chunk + +#define WPOS_REL_LEFT_TOP 0 +#define WPOS_REL_RIGHT_BOTTOM 1 +#define WPOS_CENTER 2 + +#define MYWA_FontAdaptive (1<<0) +#define MYWA_BRightSlider (1<<1) +#define MYWA_BBottomSlider (1<<2) +#define MYWA_InnerWidth (1<<3) +#define MYWA_InnerHeight (1<<4) +#define MYWA_MouseQueue (1<<5) +#define MYWA_RptQueue (1<<6) +#define MYWA_AutoAdjust (1<<7) +#define MYWA_PubScreenFallBack (1<<8) +#define MYWA_MenuHelp (1<<9) +#define MYWA_NotifyDepth (1<<10) +#define MYWA_PointerDelay (1<<11) +#define MYWA_RMBTrap (1<<12) +#define MYWA_Project (1<<13) +#define MYWA_Zoom (1<<14) +#define MYWA_AppWindow (1<<15) +#define MYWA_DragToolHoriz (1<<16) +#define MYWA_DragToolVert (1<<17) + +struct Node_Window +{ + ULONG nw_ID; + struct Window *nw_Window; + struct Gadget *nw_Gadgets; + Object *(nw_Object[6]); + struct MinList nw_List_Gadget; + struct MinList nw_List_Frame; + + UWORD nw_X,nw_Y,nw_Width,nw_Height; // saveable datas follows + UBYTE nw_XPos,nw_YPos; // nw_RelX,nw_RelY,nw_RelWidth,nw_RelHeight; + UWORD nw_Zoom[4]; + TEXT nw_WindowTitle[256]; + TEXT nw_ScreenTitle[256]; + TEXT nw_Label[40]; + TEXT nw_MenuTitle[128]; + TEXT nw_FontName[30]; + UWORD nw_Dimensions[4]; // Mins, Maxs + UWORD nw_FontSize; + ULONG nw_IDCMP; // Standard IDCMP Flags + ULONG nw_MyFlags; // My Window Flags + ULONG nw_Flags; // Standard Window Flags + ULONG nw_MouseQueue; + ULONG nw_RptQueue; + ULONG nw_PageGadget; // LockCounter for PageGadget +}; + +#define WNOBJ_GadgetList (TAG_USER+40+1) +#define WNOBJ_FrameList (TAG_USER+40+2) +#define WNOBJ_RastPort (TAG_USER+40+3) + +void LayoutAllWindows(void); +void DeleteAllWindows(void); +void DisposeAllWindows(void); +UWORD WinLeft(piObject *); +UWORD WinTop(piObject *); +UWORD WinWidth(piObject *); +UWORD WinHeight(piObject *); +void CloseWindowSafely(struct Window *); +void StripIntuiMessages(struct MsgPort *,struct Window *); +void SetWindowAttrWindow(piObject *); +void SetWindowIDCMPWindow(piObject *); + +ULONG Dispatcher_Window(piClass *,piObject *,Msg); +ULONG NEW_Window(piClass *,piObject *,struct piSet *); +ULONG DISPOSE_Window(piClass *,piObject *,Msg ); +ULONG RENDER_Window(piClass *,piObject *,Msg ); +ULONG ERASE_Window(piClass *,piObject *,Msg ); +ULONG OPEN_Window(piClass *,piObject *,Msg ); +ULONG CLOSE_Window(piClass *,piObject *,Msg ); +ULONG SET_Window(piClass *,piObject *,struct piSet *); +ULONG GET_Window(piClass *,piObject *,struct piGet *); +ULONG READ_Window(piClass *,piObject *,struct piIO *); +ULONG WRITE_Window(piClass *,piObject *,struct piIO *); +ULONG INIT_Window(piClass *,piObject *,Msg ); +ULONG APPLY_Window(piClass *,piObject *,Msg ); +ULONG CUT_Window(piClass *,piObject *,Msg ); +ULONG COPY_Window(piClass *,piObject *,struct piCopy *); + +#endif diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..6378c09 --- /dev/null +++ b/README.markdown @@ -0,0 +1,19 @@ +GadToolsBox v3 is a powerful GUI generator for AmigaOS. It uses +gadtools.library and some other external gadgets. With GTB v3 You can +highly expand your GUI with a lot of features like toolbars, tree +listviews, page gadgets, clipboards. GTB v3 is something like resource +editor, You can create here almost everything using all of OS features. +You can draw pictures, mouse pointers, edit locale strings, create menus, +windows, toolbars, version strings and much more, everything with one +program. + +Generated source code is similiar to very well known source code +generated by old GadToolsBox by Jaba Development. So, turning to new GTB +is very easy, but programs need to be reworked (there are a new functions +and there is other naming convention). Of course GTB v3 can load old +resources from GadToolsBox v2 (all #?.gui files), but you cannot load GTB +v1 resources. + +Copyright +--------- +GadToolsBox source is provided AS IS. You can use it in any form.