GadToolsBox v1.0 (The Sequel) (c) Copyright 1991 Jaba Development Written using DICE C v2.6 by Jan van den Baard User Manual Disclaimer................ 1 Copyright/Distribution.... 2 Electronic Distribution... 3 Introduction.............. 4 Requirements.............. 5 Starting GadToolsBox...... 6 Making a Gadget........... 7 Program Menus............. 8 The Project Menu........ 8.1 The Gadgets Menu........ 8.2 The Window Menu......... 8.3 The Screen Menu......... 8.4 The Menus Menu.......... 8.5 Gadget Kind Requester..... 9 The CheckBox Gadget..... 9.1 The Integer Gadget...... 9.2 The ListView Gadget..... 9.3 The Mx Gadget........... 9.4 The Cycle Gadget........ 9.5 The Palette Gadget...... 9.6 The Scroller Gadget..... 9.7 The Slider Gadget....... 9.8 The String Gadget....... 9.9 Menu Requesters........... 10 The Menu Requester...... 10.1 The (Sub)Item Requester. 10.2 The Generated Source...... 11 Notes..................... 12 »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 1) Disclaimer » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» The author cannot be held liable for the suitability or accuracy of this manual and/or the program(s) it describes. Any damage directly or indirectly caused by the use or misuse of this manual and/or the program it describes is the sole responsibility of the user her/him self. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 2) Copyright/Distribution » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox, (c) Copyright 1991 Jaba Development. All rights reserved. This Program is FREEWARE so no financial donations are required ( but welcome ). This program may be freely distributed as long as all source code, documentation and executable(s) remain unchanged and are included with the distribution. Also no profit is to be made by selling this program. You may not charge more than Fred Fish does for a single library disk. This program may be distributed on disk magazines, cover disks etc. When you do decide to distribute this program on a disk magazine or cover disk please send me a copy of the distribution. When you use this program on a regular base I would appreciate a postcard of your home town. If this program is used to create a GadTools user interface for commercial or shareware programs I would appreciate a little note about this in the program it's documentation. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 3) Electronic Distribution » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» It is allowed for non-commercial BBSs to distribute an archive with only the following files in it to save your users some money when they want to download this program. GadToolsBox - Main Program GadToolsBox.info - Main Program icon. GadToolsBox.DOC - Main Program Manual (This file) nofrag.library - Shared library ( (c)1991 Jaba Development ) You may NOT upload this or any other form of this software on BBSs that claim copyrights on the uploaded material! »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 4) Introduction » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox is a program that will save you a gigantic amount of time and anguish in creating a GadTools user interface for your programs. This program is a followup of my other source generator "PowerSource". It's main purpose is to let you create your user interface without having to type in the necessary code and structures yourself. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 5) Requirements » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox was programmed with DICE C v2.6 (Thanks Matt) on an Amiga 2500 Kickstart V37.175 Workbench V37.67 with 5 MB memory + ECS + A2630 accelerator card + 52 MB harddisk. It should however run happely on a 1 MB machine without a harddisk and special chips. It MUST have Kickstart V37++ and Workbench V37++. You can try it on Kickstart V36 but I don't really know if it will work properly. A C Compiler ( try registering DICE ) and or an assembler with the 2.0 headers can also come in handy when you try to compile/assemble the generated source. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 6) Starting GadToolsBox » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» You can start GadToolsBox from either the Shell or the Workbench. To start GadToolsBox from the Shell you must type the following: GadToolsBox [filename] Where filename is an optional name of a previously created file which you want to edit. To start GadToolsBox from the workbench you must either double-click the program it's icon or one of the ".G" icons. When you have started PowerSource without any arguments a window appears in the middle of the screen. With this window we can select the Screen type on which we want to edit the GadTools user interface. In this window you will see the following gadgets: Available modes » In this gadget you see a list of available display modes. Just click on the desired display mode. NOTE: The program currently only checks for the availability of the LORES, HIRES and SUPER- HIRES modes for both the PAL and NTSC monitors. Depth » This slider gadget lets you adjust the screen depth. The screen depth determines the amount of available colors. Depth = 1, Colors = 2 Depth = 2, Colors = 4 Depth = 3, Colors = 8 Depth = 4, Colors = 16 Depth = 5, Colors = 32 OK » When this gadget is clicked the program will try to open the desired screen and start the editing. CANCEL » Clicking on this gadget will quit when you got in this window upon program startup or cancel the operation when you got in this window by selecting "New" from the "Project" menu. If everything went OK you now see the selected screen with a little window on it. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 7) Making a Gadget » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» To make a gadget is quite simple. Move the mouse pointer to the place where you want the top-left of the gadget to be. Now click the left mouse-button once and move the mouse. You'll see a box which will size according to your mouse moves. When the box is the size you want it click the left mouse button again. Now a window pops up which allows you to edit the gadget kind specifics ( refer to the "Gadget Kind Requester" for more info) After you have edited the gadget specifics click on OK and the gadget is on the window ready to be played around with. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 8) Program Menus » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox uses a set of menus to let you control the program. The following describes each menu and it's items. »»» 8.1) The Project Menu About............. This opens a little window with some information about the copyright, author and memory status. Just click on the CONTINUE gadget to get rid of it. New............... Reset's the program to the default deleting every change made sofar. When there are changes made that are not saved yet the program asks for confirmation. Load.............. This opens the ASL FileRequester in which you can select the file you want to load. The program can only load binaries created by GadToolsBox. Any other kind of file will simply be refused. Save.............. This will save the GadTools interface to the file specified in the ASL FileRequester. NOTE: The default name is "unnamed.g" Save As........... This opens the ASL FileRequester in which you can select the path and file name under which the GadTools interface is saved. Generate Source... C.............. This opens the ASL FileRequester in which you can select the path and file name under which the generated C source will be generated. Assembler...... The same as C only the generated source will be in 68000 Assembler. Preferences....... This opens the preferences window. In this window you will see the following gadgets: Static Data » When this is switched on the C source will only contain static data and routines. RAW Asm source » When this is switched on the Assembler source generated can be assembled without the OS 2.0 headers. Coordinates » If you want the mouse coordinates to be displayed constantly you should switch this gadget on. Write Icon » When this is switched on every binary written by GadToolsBox has an icon to accompany it. Count ID from » In this gadget you can enter the ID number from which the program starts to count the gadget ID's. Project Prefix » In this gadget you can type a prefix which is used by the source generator. Refer to the "Generated Source" chapter for more info. Save » Opens the ASL FileRequester in which you can select the path and name under which the preferences are saved. Load » Opens the ASL FileRequester in which you can select a GadToolsBox preferences file to load. Use » This tells GadToolsBox to use the preferences you have set. CANCEL » This cancels the operation. Close Workbench... This will try to close the workbench screen so that you can use the memory it took up. When this item reads Open Workbench it will try to open the Workbench screen again Quit.............. This will quit the program after asking for confirmation »»» 8.2) The Gadgets Menu In this menu some items will ask you to click a gadget to perform a certain action. When you accidentally activated one of those items you can abort the routine by pressing the ESC (Escape) key when the question "CLICK GADGET.." pops up in the screen title bar. Kind.............. This item has the program supported gadget kinds as sub-items attached to it. Selecting any of these sub- items will change the editing for that gadget kind. All GadTools gadget kinds except for the NUMBER and TEXT kinds are supported. Move a gadget..... This asks you to click on the gadget you want to move. When you click on a gadget a box is drawed around it. Just move the box to where you want it and click on the left mouse-button to confirm the place. Size a gadget..... This asks you to click on the gadget that you want to re-size. When you click on a gadget a box is drawed around the gadget. Just move the mouse to adjust the size of the box and click on the left mouse-button to confirm the size. NOTE: The minimum possible size depends on the gadget kind and the font size. Copy a gadget..... This ask you to click on the gadget you want to copy. Clicking on the gadget you want to copy will draw a box around the gadget which you must drag to it's place. Just click on the left mouse-button to confirm it's place. Delete a gadget... This asks you to click on the gadget you want to delete. When you click on the gadget to delete it will be removed and deallocated. Edit a gadget..... This asks you to click on the gadget you want to edit. Then the window for the specific kind of gadget will open. Please refer to the "Gadget Kind Requester" chapter for more information about these windows. Join.............. This first asks you to click on a ListView gadget you want to join. The the program asks you to click on the string gadget you want to join with the ListView gadget. The the routine joins the two gadgets together. This joining means that the String gadget will be filled with the entry name of a clicked entry in the ListView gadget. NOTE: Due to a bug (or something) GadTools requires the String Gadget to be of the same Width as the ListView gadget. This is done automatically by the program and it cannot be stopped. Also GadTools will force the string gadget directly below the ListView gadget. This also cannot be stopped. Split............. This will ask you to click on a Joined gadget. Now you can click either the joined ListView gadget or the joined String Gadget and they will be split. NOTE: After the Gadgets has been split the string Gadget returns to the place where it has been originally drawn. »»» 8.3) The Window Menu Edit Flags........ This opens a requester in which all window flags are listed using CheckBox gadgets. Just (de)select the flags you want. Clicking on OK will set these flags and CANCEL cancels the operation. NOTE: Only the SIZEGADGET, DRAGBAR, DEPTHGADGET, CLOSEGADGET, SIZEBRIGHT and SIZEBBOTTOM flags are (un)set on the edit window. The rest of the flags will only turn up in the generated source code. Edit IDCMP........ This opens a requester in which all window IDCMP flags are listed using CheckBox gadgets. Just (de)select the flags you want. Clicking on OK will set these flags and CANCEL cancels the operation. NOTE: The GadTools specific IDCMP flags will always be set according to the kind of gadgets on the window. Edit Tags......... This will open a window in which some special window tags can be edited. In the window you'll see the following gadgets: InnerWidth » When this gadget is selected the generated source will use the WA_InnerWidth Tag instead of the WA_Width Tag. The value next to the gadget is the current window InnerWidth. InnerHeight » When this gadget is selected the generated source will use the WA_InnerHeight Tag instead of the WA_Height Tag. The value next to the gadget is the current window InnerHeight. MouseQueue » When this gadget is selected the source will contain the WA_MouseQueue tag. In the string gadget next to this gadget you can type the amount of MouseQueue's. NOTE This value cannot be smaller than 1. RptQueue » When this gadget is selected the source will contain the WA_RptQueue tag. In the string gadget next to this gadget you can type the amount of RptQueue's. NOTE: This value cannot be smaller than 1. AutoAdjust » Selecting this will cause the generated source to contain the WA_AutoAdjust tag. Zoom » When this gadget is selected the WA_Zoom is generated in the source code. In the Left, Top, Width, Height gadgets you can type the Window it's alternate positions. WindowTitle » Type the Window title in here. If this Gadget is empty the WA_Title tag will not be generated. ScreenTitle » Type the Screen title in here. If this Gadget is empty the WA_ScreenTitle tag will not be generated. OK » This will set the desired changes and resume to editing. CANCEL » This will cancel the operation. Add a text........ This will open the IntuiText editor window. In this window you'll find the following gadgets: Enter Text » In this gadget you must type the actual text you want. JAM1 JAM2 COMPLEMENT INVERSVID » These four gadgets determine the drawmode used to paint the text in the rastport. FrontPen » With this palette gadget you can select the FrontPen (text) color which is used to draw the text. BackPen » With this palette gadget you can select the BackPen (background) color which is used to draw the text. OK » This gadget will close the window and let you position the text in the edit window. Clicking on the left mouse-button will confirm the place. CANCEL » This will cancel the operation. Modify a text..... This will put up the text selection window if there was more than one text added. In this text selection window you'll see the following gadgets: Available Texts » In this ListView gadget the texts currently in memory are listed. Clicking on the text will select it. OK » This will select the text for the operation that has to be done. CANCEL » This will cancel the operation. Now the IntuiText Editor opens with the selected text already in it. Now you can edit the text the way you want. Delete a text..... This will put up the text selector again if more than one text is added to the window. Just select the text and it's gone. NOTE: When only one text is available the text is deleted immediately. Move a text....... The text selector pops up again if.... Now you can move the text around in the edit window. Just click on the left mouse-button to confirm it's new place. »»» 8.4) The Screen Menu Palette........... This will open the palette editor. In the palette editor you'll see the following gadgets: Red » With this slider gadget you can adjust the Red intensity of the currently selected color. Green » With this slider gadget you can adjust the Green intensity of the currently selected color. Blue » With this slider gadget you can adjust the Blue intensity of the currently selected color. Colors » This gadget consists of 2, 4, 8, 16 or 32 colored gadgets and a color indicator left of it. Just click on the color you want to edit to switch to editing that color. OK » This will close the Palette editor and set the desired colors on the edit screen. Reset » This will reset all colors to what they where before the palette editor opened. CANCEL » This will first reset all colors and then exit the palette editor. Get Font.......... This will open the ASL FontSelector for you to select a new font. To select a font you must first click on the desired font name and then enter or click on the desired font height. Clicking on Ok will set the font on the screen and clicking on Cancel will cancel the operation. Set DriPens....... This will open the DriPen editor. DriPens are the pens which the system uses to give that special new OS 2.0 look to the window and gadgets etc. The following gadgets are in the DriPen editor: Pens » This cycle gadget is used to select the DriPen you want to edit. The following DriPens are available: DETAILPEN This is the same as the standard NewScreen detailpen. BLOCKPEN This is the same as the standard NewScreen blockpen. TEXTPEN This is the pen used to draw the gadget text and the Window title. SHINEPEN This is the pen used to draw the "light-side" of the gadget and window borders. SHADOWPEN This is the pen used to draw the "dark-side" of the gadget and window borders. FILLPEN This is the pen used to backfill the gadget when it's clicked and the window border when it's active. FILLTEXTPEN This is the pen used to draw the text of a clicked gadget and the Window title of an active window. BACKGROUNDPEN This pen is used to fill the background of an unselected gadget. HIGHLIGHTTEXTPEN This pen is used to draw the text of a gadget with the HighLight switch turned on. OK » Clicking on this gadget will set the desired DriPens. CANCEL » This will cancel the operation. Edit Tags......... This will open the screen tags window. In this window the following gadgets are located: AutoScroll » With this gadget checked the generated source will contain the SA_AutoScroll tag. Type » This cycle gadget has the supported screen types in it: CUSTOMSCREEN The generated source will contain the screen tags and data. The window will use this screen to open on. WBENCHSCREEN The generated source will not contain the screen tags and data. The window will use the Workbench screen to open on. CUSTOMSCREEN The generated source will not contain the screen tags and data. The window will use the default public screen to open on. OK » This will set the desired tags. CANCEL » This will cancel the operation. »»» 8.5) The Menus Menu Edit Menus........ This will open the Menu Editor window in which you can edit a complete menu-strip. Refer to the "Menu Requesters" chapter for more information. Test Menus........ This will setup the menus, items and subitems to be tested by you. When the message "TESTING MENUS! ESC TO QUIT..." is printed in the screen title bar you can browse through the menus like you normally do. You should press the ESC (escape) key to resume to editing. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 9) Gadget Kind Requester » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox supports 10 gadget kinds which all have their own window in which the gadget kind specifics can be edited. The following gadgets can be found in all gadget kind requesters and are there for the same reason: Text » In this gadget you can type the text which is displayed with the gadget. Label » In this gadget you can type the source code label which is used to define some important values in the generated source. Refer to the "Generated Source" chapter for more information. Underscore » When this gadget is selected the character in the GadgetText preceeded by a '_' will be underlined which specifies the keyboard shortcut. Disabled » When this gadget is selected the gadget will be disabled. The gadget will only be disabled in the generated source. NOTE: Not all gadgets support this switch. High Label » This tells that the GadgetText must be drawn in the highlight text color. NOTE Not all gadgets support this switch. Text Place » This cycle gadget determines where that gadget text is placed. The possibilities are IN, LEFT, RIGHT, ABOVE and BELOW. NOTE: Only the Button gadget supports IN. OK » This gadget will add the gadget with the selected specifics to the edit window or set the desired changes. CANCEL » This will cancel the operation. Following is a description of the extra specifics of the different gadget kinds supported by GadToolsBox. »»» 9.1) The CheckBox Gadget Checked » When this gadget is switched on it tells that the gadget is checked by default. »»» 9.2) The Integer Gadget MaxChars » You must type the maximum possible digits plus one that may be typed in the gadget. NOTE: This cannot be smaller than 2 Number » Type the default number in this gadget that the resulting gadget has in it. »»» 9.3) The ListView Gadget Read Only » When this gadget is selected the ListView Gadget will be read-only. NOTE: The ListView will only be read-only in the generated source. ShowSelected » When this gadget is selected the active (clicked) entry in the listview gadget will be shown below the listview gadget NOTE: This option is only available if the ListView isn't ReadOnly. Spacing » Type the extra number of pixels GadTools must insert between the listview entries. NOTE: This value cannot be smaller than 0. Scr. Width » Type the width of the scroller gadget next to the ListView gadget in here. NOTE: This value may not be smaller than 16 Labels » This is a ListView Gadget combined with a string gadget. In the string gadget you can type the entries that the listview must have. To edit an entry you must first click on the entry in the listview and then edit the entry in the string gadget. NOTE: The "!!ACTION GADGET!!" entry is always in the list and cannot be removed or edited. This entry is necessary to keep the ListView selectable in the program. This entry will ofcourse not showup in the source generated. ^ Remove ^ » This gadget enables you to remove entries from the list. Just click on the entry in the ListView gadget and then on this gadget and the entry is gone. »»» 9.4) The Mx Gadget Spacing » In this gadget you can type the spacing in pixels that GadTools should insert between the items of the MX gadget. Labels » This is a ListView Gadget combined with a string gadget. In the string gadget you can type the entries that the mx must have. To edit an entry you must first click on the entry in the listview and then edit the entry in the string gadget. NOTE: You must enter atleast two entries for the MX gadget. ^ Remove ^ » This gadget enables you to remove entries from the list. Just click on the entry in the ListView gadget and then on this gadget and the entry is gone. »»» 9.5) The Cycle Gadget Labels » This is a ListView Gadget combined with a string gadget. In the string gadget you can type the entries that the cycle must have. To edit an entry you must first click on the entry in the listview and then edit the entry in the string gadget. NOTE: You must enter atleast two entries for the Cycle gadget. ^ Remove ^ » This gadget enables you to remove entries from the list. Just click on the entry in the ListView gadget and then on this gadget and the entry is gone. »»» 9.6) The Palette Gadget Width » In this gadget you can type the width of the color indicator if you want one on the left of the gadget. NOTE: any value smaller than 9 will indicate that you do not want a color indicator. Height » In this gadget you can type the height of the color indicator if you want one above the gadget. NOTE: any value smaller than 9 will indicate that you do not want a color indicator. »»» 9.7) The Scroller Gadget Immediate » When this gadget is selected you will hear any IDCMP_GADGETDOWN message through the window IDCMP port that this gadget generates. RelVerify » When this gadget is selected you will hear any IDCMP_GADGETUP message through the window IDCMP port that this gadget generates. Horizontal Vertical » With this gadget you can determine whether this gadget can be moved horizontally or vertically. Top » In this gadget you can type the top of the area the scroller is used for. Total » In this gadget you can type the total of the area the scroller is used for. Visible » In this gadget you can type the visible part of the area this scroller is used for. Arrows » In this gadget you can type the size in pixels of an arrow. NOTE: Specifying a value smaller than 8 says you don't want arrows. »»» 9.8) The Slider Gadget Immediate » When this gadget is selected you will hear any IDCMP_GADGETDOWN message through the window IDCMP port that this gadget generates. RelVerify » When this gadget is selected you will hear any IDCMP_GADGETUP message through the window IDCMP port that this gadget generates. Horizontal Vertical » With this gadget you can determine whether this gadget can be moved horizontally or vertically. Min » In this gadget you can type the minimum value of the slider. Max » In this gadget you can type the maximum value of the slider. Level » In this gadget you can type the initial level the slider must have. Level Size » In this gadget you can type the maximum amount of characters that may be used to print the slider level. Format » A formatting string ala RawDoFmt() which specifies the way the slider level should be printed. NOTE: When this is omitted the slider level won't be printed. Lev. Place » With this gadget you can specify where GadTools is to print the slider level. The possibilities are LEFT, RIGHT, ABOVE and below. »»» 9.9) The String Gadget MaxChars » You must type the maximum possible characters plus one that may be typed in the gadget. NOTE: This cannot be smaller than 2. String » Type the default string in this gadget that the resulting gadget has in it. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 10) Menu Requesters » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» GadToolsBox uses three (actually two) windows to let the user edit complete menu-strips. Following is a description of those windows. »»» 10.1) The Menu Requester This requester is used to edit the menus. In the window you'll see the following gadgets: Menus » This listview gadget contains the names of the menus currently in memory. Below this ListView gadget a string gadget is located which is used to enter/edit the menu names. To add a new menu to the list you must enter it's name in this string gadget and press return. To edit a menu name you must first click on the name in the listview gadget and then edit the name in the string gadget. Disabled » This CheckBox gadget tells GadToolsBox whether you want the menu to be disabled or not. ItemEd » This gadget must be clicked when you want to add some items to a menu. To do this you must first click on the menu name in the listview gadget which you want to edit items for and then click on this gadget. If all goes well you will be presented with the "(Sub)Item Requester" (see below). Delete » When you want to delete a menu you must click on it's name in the listview gadget and then click on this gadget. Then a requester pops up asking for confirmation. NOTE: Deleting a menu with items attached to it will also delete those items. DONE » Clicking on this gadget will close the requester and resume to gadget editing. »»» 10.1) The (Sub)Item Requester This requester is used to edit (sub)items for a specific menu. This requester is the same for editing items and subitems. The following gadgets are in the window: (Sub)Items » This listview gadget contains the names of the (sub) items currently attached to the menu. Below this ListView gadget a string gadget is located which is used to enter /edit the (sub)item names. To add a new (sub)item to the list you must enter it's name in this string gadget and press return. To edit a menu name you must first click on the name in the listview gadget and then edit the name in the string gadget. Checkit » This will turn the intuition CHECKIT flag on/off for the (sub)item. Disabled » This CheckBox gadget tells GadToolsBox whether you want the (sub)item to be disabled or not. Checked » This will turn the intuition CHECKED flag on/off for the (sub)item. MenuToggle » This will turn the intuition MENUTOGGLE flag on/off for the (sub)item. ShortCut » You can add a keyboard shortcut for the (sub)item by entering the shortcut key in this gadget. BarLab » When you click on this gadget a separator bar (NM_BARLABEL) is inserted in the list automatically. SubEd » This gadget must be clicked when you want to add some subitems to a item. To do this you must first click on the item name in the listview g adget which you want to edit subitems for and then click on this gadget. If all goes well the requester will switch to subitems editing. NOTE: This gadget is disabled when the requester already is in the subitem mode. Delete » When you want to delete a (sub)item you must click on it's name in the listview gadget and then click on this gadget. Then a requester pops up asking for confirmation. NOTE: Deleting a item with subitems attached to it will also delete those subitems. DONE » Clicking on this gadget will close the requester and put you back in the menu requester. NOTE: There is a possibility to set the MutualExclude of an item but this has a bug in it which I can't find. When you click on the (sub)item which must do the excluding and you press the 'x' key you will see the message "DRAG-SELECT ITEMS TO EXCLUDE" in the title bar of the item ed window. Now you must click the menu-button of the mouse and go to the menu. Here's the bug..... YOU MUST KEEP THE MOUSE WITH THE RIGHT-BUTTON PRESSED ON THE MENU FOR ABOUT 10-15 SECONDS BEFORE INTUITION DESIDES TO DROP THE MENU ?????? When the menu is down you must check the items that are to be excluded and the mutual-exclude value will be set. To check several items you must click the left-mouse-button on each item whilst holding down the right mouse- button. If you know what the bug is please tell me about it so that I can fix it. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 11) The Generated Source » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» The source GadToolsBox generates contains complete routines that opens/locks the screen and allocates/initializes the gadgets and menus and opens the window and prints the text's. Therefore there are two routines created. The following globals are exported when necessary and when the generated source isn't static: xxxWnd » A pointer to the window xxxScr » A pointer to the screen xxxVisualInfo » A pointer to the screen it's visualinfo xxxGList » A pointer to the created gadgets xxxGadgets[..] » An array of pointers to the created gadgets xxxMenus » A pointer to the created menus xxxZoom[4] » An array of words with the window alternate positions xxxInitStuf() » The routine which sets up the stuff xxxCleanStuff() » Cleans up all resources used NOTE: The 'xxx' stands for the Project Prefix which you can enter using the preferences requester. The GadgetID are defined as 'GD_SourceLabel'. Some of the above declared data is not always there. For instance when you havent edited any menus the 'xxxMenus' wont be generated. The 'xxxInitStuff()' can return the following return codes: 0 » Everything is OK 1 » The screen could not be opened/locked 2 » GetVisualInfo failed 3 » A GadgetContext could not be created 4 » An error occured with the gadget creation 5 » The window could not be opened 6 » The menus could not be created NOTE: When the 'xxxInitStuff()' routine returns an error you must still call 'xxxCleanStuff()' to deallocate/close the resources that did not fail to open! To get a better impression of the generated source you should load/create a sample file and generate the source for it. Then you can take a look to what was generated. »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» » 12) Notes » »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» At this time there really isn't much to say about the program. It is a tool that will ( or atleast should ) save you a lot of time in creating a GadTools user interface for your programs. I really don't know how the program reacts under low memory conditions because no testing has been done under these conditions ( what can I say.... I'm lazy... ). Bug reports, suggestions, postcards, flames, criticism, contributions, ideas, gifts, etc., etc., etc........... to: Jan van den Baard Fido: 2:500/29 (Jan van.den.Baard) Bakkerstraat 176 3082 HE, Rotterdam Holland