home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_oth / gadtlbox.lha / GadToolsBox.DOC < prev    next >
Encoding:
Text File  |  1992-09-26  |  110.6 KB  |  2,099 lines

  1.  
  2.                       GadToolsBox 1.4 (The Sequel)
  3.  
  4.                                 v37.177
  5.  
  6.                  (c) Copyright 1991,92 Jaba Development
  7.                     Written using DICE C v2.06.40 by
  8.                             Jan van den Baard
  9.                             Bakkerstraat  176
  10.                             3082 HE Rotterdam
  11.                                  Holland
  12.  
  13.                             Fido: 2:285/502.7
  14.  
  15.                         Oberon Source Generator by
  16.                              Kai Bolay (AMOK)
  17.                             Hoffmannstraße 168
  18.                              D-7250 Leonberg
  19.                                  Germany
  20.  
  21.                             Fido: 2:247/706.3
  22.                       UUCP: kai@amokle.adsu.sub.org
  23.  
  24.                                User Manual
  25.                  (c) Copyright 1991,92 Jaba Development
  26.  
  27.               This program uses both the powerpacker.library
  28.                   and reqtools.library  (OS 2.0 version)
  29.            These two libraries are  (c) Copyright Nico François
  30.                                     __  __
  31.                                    / / /  \
  32.                             __    / / / /\ \
  33.                        _____\ \__/ /_/ /_/ /_____
  34.                       (__________________________)
  35.  
  36.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  37.  » How to obtain an update.                                                »
  38.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  39.  Many people have written to me asking for updates.  This kind of gotton out
  40.  of hand (it was beginning to cost me a lot of money)  so here is the way to
  41.  get an update  directly  from  me.  Send me a self addressed envelope, 1 US
  42.  dollar (EUROPE) or 2 US dollars if you don't live in europe and a 3½" disk.
  43.  Then I will send you an update as soon as it becomes available.
  44.  
  45.   Disclaimer................ 1
  46.   Copyright/Distribution.... 2
  47.   Electronic Distribution... 3
  48.   Introduction.............. 4
  49.   Requirements.............. 5
  50.   Starting GadToolsBox...... 6
  51.   Making a Gadget........... 7
  52.   Program Menus............. 8
  53.     The Project Menu........ 8.1
  54.     The Gadgets Menu........ 8.2
  55.     The Window Menu......... 8.3
  56.     The Screen Menu......... 8.4
  57.     The Menus Menu.......... 8.5
  58.   Gadget Kind Requester..... 9
  59.     The CheckBox Gadget..... 9.1
  60.     The Integer Gadget...... 9.2
  61.     The ListView Gadget..... 9.3
  62.     The Mx Gadget........... 9.4
  63.     The Cycle Gadget........ 9.5
  64.     The Palette Gadget...... 9.6
  65.     The Scroller Gadget..... 9.7
  66.     The Slider Gadget....... 9.8
  67.     The String Gadget....... 9.9
  68.     The Number Gadget....... 9.10
  69.     The Text Gadget......... 9.11
  70.   Menu Requesters........... 10
  71.     The Menu Requester...... 10.1
  72.     The (Sub)Item Requester. 10.2
  73.   The Generated Source...... 11
  74.     The IDCMP handler....... 11.1
  75.   The Keyboard & Mouse...... 12
  76.   The GetFile Boopsi image.. 13
  77.   Adapt Font................ 14
  78.   Keyboard Shortcuts........ 15
  79.   Oberon Source............. 16
  80.   Notes..................... 17
  81.   Credit.................... 18
  82.   __IMPORTANT__............. 19
  83.  
  84.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  85.  » 1) Disclaimer                                                           »
  86.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  87.  The author cannot be held liable for the  suitability or  accuracy  of this
  88.  manual  and/or  the  program(s)  it  describes.   Any  damage  directly  or
  89.  indirectly caused by the use or misuse of  this manual  and/or the  program
  90.  it describes is the sole responsibility of the user her/him self.
  91.  
  92.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  93.  » 2) Copyright/Distribution                                               »
  94.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  95.  GadToolsBox, (c) Copyright 1991,92 Jaba  Development.  All rights reserved.
  96.  This  program  is  FREEWARE  so  no financial  donations are required ( but
  97.  welcome ).  This   program   may  be  freely  distributed  as  long  as all
  98.  source  code,   documentation  and  executable(s)  remain unchanged and are
  99.  included  with the distribution.  Also no profit is to be made  by  selling
  100.  this  program. You may not charge more than  Fred Fish  does  for a  single
  101.  library disk.    When  you  use  this  program  on a  regular base  I would
  102.  appreciate  a postcard of your  home  town.  If  this  program  is used  to
  103.  create a  GadTools user interface  for  commercial  or  shareware  programs
  104.  I  would  appreciate  a  little  note   about  this  in  the  program  it's
  105.  documentation.  Commercial  distribution  is  NOT allowed  without  written
  106.  permission from the author.
  107.  
  108.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  109.  » 3) Electronic Distribution                                              »
  110.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  111.  It is allowed for non-commercial BBSs to distribute  an archive  with  only
  112.  the following files in it to save your users some  money when they  want to
  113.  download this program. NOTE: All files listed  below  MUST  be  distributed
  114.  together. None of the files listed below may be  distributed  on it's  own!
  115.  They may of course be archived with LHarc or any other archiver.
  116.  
  117.     GadToolsBox             - Main Program
  118.     GadToolsBox.info        - Main Program icon.
  119.     GadToolsBox.DOC         - Main Program Manual (This file)
  120.     nofrag.library          - Shared library ( (c)1991,92 Jaba Development )
  121.     reqtools.library        -    "      "    ( (c) Nico François )
  122.     powerpacker.library     -    "      "    ( (c) Nico François )
  123.     boopsi.s                - Boopsi routine source
  124.     boopsi.o                - Boopsi routine link object code
  125.     OberonBoopsi (dir)
  126.         bases.s             - Library base definitions source
  127.         bases.o             - Library base link object code
  128.         boopsi.s            - Somewhat adjusted boopsi routine source
  129.         boopsi.o            - Somewhat adjusted boopsi link object code
  130.         getfile.mod         - Oberon interface module for the boopsi image
  131.  
  132.  You may NOT upload this or any  other form of  this  software on  BBSs that
  133.  claim copyrights on the uploaded material!
  134.  
  135.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  136.  » 4) Introduction                                                         »
  137.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  138.  GadToolsBox  is a program that will save you a gigantic amount of time  and
  139.  anguish  in  creating  a  GadTools  user interface  for your programs. This
  140.  program is  a follow-up of my other  source  generator  "PowerSource". It's
  141.  main purpose is to let you create  your user  interface without  having  to
  142.  type  in  the  necessary  code  and  structures  yourself.  This version of
  143.  GadToolsBox has the following features:
  144.  
  145.     -:  A complete intuition/gadtools user interface
  146.     -:  Editing on many different screen resolutions
  147.     -:  Editing/Generating source on/for big autoscrolling screens
  148.     -:  All GadTools gadget kinds supported + a custom gadget
  149.     -:  GadTools menus supported
  150.     -:  Full control over the window flags and most tags
  151.     -:  Editing IntuiTexts for the window
  152.     -:  Editing, loading and saving of colors (ILBM)
  153.     -:  Fully mouse and keyboard controlled
  154.     -:  Generation of complete routines in either C, Assembly & Oberon
  155.     -:  Generation of "RAW" Assembly source (No headers necessary)
  156.     -:  Generation of "static" data
  157.     -:  Binary saving for later loading and editing
  158.     -:  The possibility to save powerpacker __CRUNCHED!__ binaries.
  159.     -:  The ability to print a status report.
  160.     -:  Multiple windows
  161.     -:  User selectable font
  162.     -:  The editing of "DRIPENS" (what gives OS 2.0 that special look)
  163.     -:  The possibility to change screen resolution while editing
  164.     -:  The possibility to edit "BevelBoxes"
  165.     -:  Editing in a user-definable grid
  166.     -:  The editing of minimal window border offsets
  167.     -:  Easy gadget alignment and spacing
  168.     -:  The generation of font-adaptable code (Thanks Sebastiano...)
  169.     -:  Multiple gadget moves, deletes, edits and copies.
  170.     -:  The generation of event-handlers.
  171.     -:  etc. etc. etc........
  172.  
  173.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  174.  » 5) Requirements                                                         »
  175.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  176.  GadToolsBox was programmed with DICE C v2.06 (Thanks Matt) on an Amiga 2500
  177.  Kickstart  V37.175  Workbench  V37.67  with  7 MB  memory  +  ECS  +  A2630
  178.  accelerator card + 52 MB harddisk. It should however run happily on  a 1 MB
  179.  machine  without  a  harddisk  and  special  chips but  at least  1.5 MB is
  180.  suggested. It MUST have Kickstart V37++ and Workbench V37++.  A C  Compiler
  181.  ( try registering DICE ) and/or an assembler with the 2.0 headers can  also
  182.  come  in  handy  when  you try to compile/assemble  the  generated  source.
  183.  Note however that  the program can generate assembler source which does not
  184.  require the headers to assemble. The program needs the following libraries:
  185.  
  186.  reqtools.library           version 38 or better (required)
  187.  icon.library               version 36 or better (required)
  188.  nofrag.library             version 2  or better (required)
  189.  diskfont.library           version 36 or better (required)
  190.  iffparse.library           version 37 or better (required)
  191.  powerpacker.library        version 35 or better (optional)
  192.  
  193.  If you have the nofrag.library v2.2 please use it instead of v2.1.  Version
  194.  2.2 is identical in function except that it has some bugs removed. When you
  195.  also install the powerpacker.library v35++ you are able to load and/or save
  196.  crunched binary files. I have had a user saying that  GadToolsBox  requires
  197.  70000 bytes of stack!  I'm using  4096  bytes and  haven't  encountered any
  198.  problems yet.  If you have problems try to up the stack size you are using.
  199.  
  200.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  201.  » 6) Starting GadToolsBox                                                 »
  202.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  203.  You can start GadToolsBox from either the Shell or the Workbench.  To start
  204.  GadToolsBox from the Shell you must type the following:
  205.  
  206.     GadToolsBox [filename]
  207.  
  208.  Where filename is an optional name of a previously  created file  which you
  209.  want to edit. To  start  GadToolsBox  from  the  workbench  you must either
  210.  double-click the program it's icon or one of the ".G" icons.  When you have
  211.  started GadToolsBox without any arguments the program opens a screen in the
  212.  workbench  resolution  with  a  little  window  on  it.  This window is the
  213.  "drawing board" on which you design your GUI.   When  it's  started  with a
  214.  ".G" file as an argument the contents of the file will be in the window.
  215.  
  216.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  217.  » 7) Making a Gadget                                                      »
  218.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  219.  To make a gadget is quite simple. Move the mouse pointer to the place where
  220.  you want the top-left of the gadget to be. Now click the left  mouse-button
  221.  once and move the mouse. You'll see a  box  which will  size  according  to
  222.  your mouse moves.  When the box  is  the size  you want it  click the  left
  223.  mouse button again. Now a window pops up  which  allows  you  to  edit  the
  224.  gadget kind specifics ( refer to the "Gadget Kind Requester" for more info)
  225.  After you have edited the gadget specifics click  on  OK and the  gadget is
  226.  on the window ready to be played around with.  NOTE: When you are  making a
  227.  CheckBox, Mx or GetFile gadget the box appears after the first mouse-click.
  228.  This is because these kinds of gadgets have a fixed size.
  229.  
  230.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  231.  » 8) Program Menus                                                        »
  232.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  233.  GadToolsBox  uses  a set  of menus  to let you  control  the  program.  The
  234.  program supports multi-selection of menus although in some cases the multi-
  235.  selection  loop will  break.  The  following describes  each  menu and it's
  236.  items.
  237.  
  238.  »»» 8.1) The Project Menu
  239.  
  240.  About............. This opens a little window  with some  information about
  241.                     the copyright, author and memory  status.  Just click on
  242.                     the Continue gadget to get rid of it.
  243.  
  244.  New............... Reset's the program to the default deleting every change
  245.                     made sofar. When there are changes  made  that  are  not
  246.                     saved yet the program asks for confirmation.  NOTE:  All
  247.                     windows currently in memory will be deleted by this!!!
  248.  
  249.  Load.............. This opens the  FileRequester  in  which  you can select
  250.                     the file you want to load.  The  program can  only  load
  251.                     binaries created by GadToolsBox.  Any other kind of file
  252.                     will simply be refused. NOTE: When a requester  pop's up
  253.                     telling you  that the  file uses a  monitor  that  isn't
  254.                     available it means  that  either you have not added  the
  255.                     monitor by clicking on the specific monitor icon in  the
  256.                     MonitorStore drawer  of your  Extras disk  or you  don't
  257.                     have the ECS chips installed.  If this is  the  case the
  258.                     program just opens a screen in the standard resolution.
  259.  
  260.  Save.............. This will  save  the  GadTools interface to  the default
  261.                     file name. NOTE:  The default name is "unnamed.g".  When
  262.                     the crunch  gadget  is  enabled  (Preferences)  and  the
  263.                     powerpacker.library  was  opened  successfully a  window
  264.                     opens which  will  keep  you informed  about  the crunch
  265.                     progress:
  266.  
  267.                         Crunched       » This indicates  the  percentage  of
  268.                                          the file crunched sofar in a  human
  269.                                          readable form and a graphical form.
  270.  
  271.                         Saved          » This indicates  the  percentage  of
  272.                                          the  file  saved by  the  crunching
  273.                                          sofar in a human readable form  and
  274.                                          a graphical form.
  275.  
  276.                         Stop           » Clicking on this gadget  will  stop
  277.                                          the crunching. NOTE: The file  will
  278.                                          still be  saved  only  it  won't be
  279.                                          crunched.
  280.  
  281.  Save As........... This  opens  the  FileRequester in  which you can select
  282.                     the  path  and  file  name  under  which   the  GadTools
  283.                     interface is saved.
  284.  
  285.  Generate Source...
  286.     C.............. This opens the  FileRequester in  which  you  can select
  287.                     the path and  file  name  under  which  the  generated C
  288.                     source will be saved.
  289.  
  290.     Assembler...... The same as C only the generated source will be in 68000
  291.                     Assembler.
  292.  
  293.  Preferences....... This opens the preferences window.  In this  window  you
  294.                     will see the following gadgets:
  295.  
  296.                     Static Data        » When  this is  switched  on  the  C
  297.                                          source  will only   contain  static
  298.                                          data and  routines.   The assembler
  299.                                          will not export  (XDEF) any globals
  300.  
  301.                     RAW Asm source     » When  this   is  switched   on  the
  302.                                          Assembler source generated  can  be
  303.                                          assembled    without  the   OS  2.0
  304.                                          headers.
  305.  
  306.                     Co-ordinates       » If you want  the  mouse coordinates
  307.                                          to  be   displayed  constantly  you
  308.                                          should switch this gadget on. NOTE:
  309.                                          The   displayed   coordinates   are
  310.                                          relative  to  the  top-left  corner
  311.                                          of the window.
  312.  
  313.                     Write Icon         » When  this  is  switched  on  every
  314.                                          binary written by  GadToolsBox  has
  315.                                          an icon to accompany it.
  316.  
  317.                     Gen. OpenFont      » When this  is  switched  on and the
  318.                                          used font is a diskfont the  source
  319.                                          generator  automatically  generates
  320.                                          code that  opens/closes  the  font.
  321.                                          NOTE:   This has no  effect if  the
  322.                                          "Adapt. Font" option (see below) is
  323.                                          turned on.
  324.  
  325.                     GZZ Adjust         » When  this  is   switched  on   the
  326.                                          program automatically  will  change
  327.                                          the  gadget   positions   when  the
  328.                                          WFLG_GIMMEZEROZERO  flag is  set or
  329.                                          cleared.   When  it's  on  and  you
  330.                                          switch  the WFLG_GIMMEZEROZERO flag
  331.                                          on  or  off  the  gadget  and  text
  332.                                          positions  will  visibly  stay  the
  333.                                          same.
  334.  
  335.                     Close WBench       » This allows you to let the  program
  336.                                          try to close the  workbench  screen
  337.                                          upon  startup. NOTE:  When  this is
  338.                                          selected and  you  press  "Use" the
  339.                                          program will also try to close  the
  340.                                          workbench screen.
  341.  
  342.                     Crunch             » When this gadget is checked and the
  343.                                          powerpacker.library V35+  has  been
  344.                                          opened   successfully   the   saved
  345.                                          binaries will be crunched. This can
  346.                                          save upto 85% of the original size.
  347.                                          Please note that you must have  the
  348.                                          powerpacker.library  v35++  in your
  349.                                          LIBS: for this.
  350.  
  351.                     Password           » When this gadget is checked and the
  352.                                          "Crunch" gadget is checked  you can
  353.                                          protect   your   creations  with  a
  354.                                          password. Note that  this  is  only
  355.                                          available with crunched binaries!
  356.  
  357.                     Speedup Buffer     » This cycle gadget allows you to set
  358.                                          the preferred speedup  buffer  that
  359.                                          should be used by  the  powerpacker
  360.                                          library to crunch the binary files.
  361.  
  362.                     Crunch Depth       » With this cycle gadget you  can set
  363.                                          the crunch depth to use.
  364.  
  365.                     Adapt. Font        » When  this gadget  is  checked  the
  366.                                          source   generator   will  generate
  367.                                          source  that  automatically  adapts
  368.                                          the  gadget,  bevel-box  and window
  369.                                          sizes and positions  to the  active
  370.                                          font.
  371.  
  372.                     Use Amiga.Lib      » When  this   is  switched  on   the
  373.                                          assembler source generator  creates
  374.                                          XDEFs to the  _LVO  table  from the
  375.                                          amiga.lib   instead  of   using the
  376.                                          constants normally generated.
  377.  
  378.                     Use SysFont        » When   this   is  switched  on  the
  379.                                          generated font adaptive source will
  380.                                          use the system default font instead
  381.                                          of the screen font.   Note that the
  382.                                          screen font can be  a  proportional
  383.                                          font.  The font adaptive code might
  384.                                          not  always  have  a  pixel-perfect
  385.                                          result   with  proportional  font's
  386.                                          although  I have not  seen it  fail
  387.                                          yet.
  388.  
  389.                     Overwrite          » With  this  switched on GadToolsBox
  390.                                          won't pop up the requester  telling
  391.                                          you that a file you want to save to
  392.                                          already exists.   Instead  it  will
  393.                                          overwrite the file immediately
  394.  
  395.                     ASL FReq           » When   this    is    switched    on
  396.                                          GadToolsBox   will   use  the   ASL
  397.                                          FileRequester which  enables you to
  398.                                          use the  "Magic File Requester" and
  399.                                          all other sorts of ASL patches  you
  400.                                          desire.
  401.  
  402.                     Pragmas            » This   will   tell   the  C  Source
  403.                                          Generator  to  include  the  pragma
  404.                                          headers to.  It will use SAS  names
  405.                                          when the "Aztec C" switch is of and
  406.                                          Manx names when it's on.
  407.  
  408.                     Aztec C            » When you use the Aztec compiler you
  409.                                          _MUST_ turn this switch  on  before
  410.                                          source generation.   This will tell
  411.                                          GadToolsBox to  use a  special type
  412.                                          cast   in  the  generation  of  the
  413.                                          gadget tags.
  414.  
  415.                     Templates          » This will tell the source generator
  416.                                          to also generate  a template  file.
  417.                                          Note that the templates  file  will
  418.                                          only be generated when you turn the
  419.                                          option from below on.
  420.  
  421.                     Gen. Handler       » This will tell GadToolsBox  to also
  422.                                          generate a IDCMP handler. Currently
  423.                                          only   the   C   source   generator
  424.                                          supports this.
  425.  
  426.                     Save               » Opens the  FileRequester  in  which
  427.                                          you can select the  path  and  name
  428.                                          under  which  the  preferences  are
  429.                                          saved.
  430.  
  431.                     Load               » Opens  the  FileRequester  in which
  432.                                          you   can   select   a  GadToolsBox
  433.                                          preferences file to load. NOTE: The
  434.                                          program  does  NOT  check  if  it's
  435.                                          really  a  GadToolsBox  preferences
  436.                                          file you are loading  so  loading a
  437.                                          strange file can have wierd results
  438.  
  439.                     Use                » This tells GadToolsBox to  use  the
  440.                                          preferences you have set.
  441.  
  442.                     CANCEL             » This cancels the operation.
  443.  
  444.  Close Workbench... This will try to close the workbench screen so  that you
  445.                     can use the memory it took up. When this item reads Open
  446.                     Workbench it will try to open the Workbench screen again
  447.  
  448.  Quit.............. This will quit the program after asking for confirmation
  449.  
  450.  »»» 8.2) The Gadgets Menu
  451.  
  452.  In the following lines I talk a lot about  "selected gadgets".  When  I say
  453.  selected gadgets I mean  gadgets  that  are selected  to  perform a  certan
  454.  action with. To select gadgets you must do the following simple thing:
  455.  
  456.     Click on the gadget. When a box appears  arround  the  gadgets it  means
  457.     that it is selected. When the box dissapears it means  that  the  gadget
  458.     is not selected.
  459.  
  460.  To select more than one gadget you must keep the shift  key pressed  whilst
  461.  clicking on the gadgets.
  462.  
  463.  Kind.............. This item has the  program  supported  gadget  kinds  as
  464.                     sub-items attached to it. Selecting  any of  these  sub-
  465.                     items will change the editing  for  that  gadget   kind.
  466.                     The first kind "GETFILE" is  a  custom  gadget which  is
  467.                     the same as the gadget which you find in the  "Fountain"
  468.                     program left of the filename gadgets. This gadget should
  469.                     be used to let the user open the FileRequester to select
  470.                     the file/path instead of typing it in the string gadget.
  471.  
  472.  Add............... GadToolsBox will only  allow you to  add gadgets  to the
  473.                     window when this menu-item is checked.   This will allow
  474.                     you switch off the add  mode  and  click in  your window
  475.                     without accidentally creating a gadget. This item should
  476.                     also  be  turned  on  before  you can  select gadgets to
  477.                     perform operations like edit, move etc. on.
  478.  
  479.  Move.............. This  will  allow  you  to move  all  currently selected
  480.                     gadgets to another place. When this is selected you will
  481.                     see  a  rubber-band  box  which  overlaps  all  selected
  482.                     gadgets.  Now  move  this  box to the place you want the
  483.                     gadgets and click on the left mouse button to confirm.
  484.  
  485.  Size.............. This asks you to click on the gadget  that you  want  to
  486.                     re-size. When you click  on a  gadget  a  box  is  drawn
  487.                     around the gadget. Just move  the mouse  to  adjust  the
  488.                     size of the box and click  on the  left  mouse-button to
  489.                     confirm  the  size.  NOTE:  The  minimum  possible  size
  490.                     depends on the gadget kind and the font size.
  491.  
  492.  Copy.............. This  will  allow  you  to  make a  copy of all selected
  493.                     gadgets.  When this is selected you must do the  same as
  494.                     with moving gadgets.
  495.  
  496.  Delete............ When you select this a requester  pops-up to ask  you if
  497.                     you are sure that   you want  to delete  those  gadgets.
  498.                     Just click  on "Delete" in  that requester  and  all the
  499.                     selected gadgets are gone.
  500.  
  501.  Edit.............. This will bring up the editor of all gadgets  that where
  502.                     selected. Please  refer to  the  "Gadget Kind Requester"
  503.                     for more info about these requesters.
  504.  
  505.  Join.............. This will Join ListView gadgets and String gadgets. When
  506.                     you have selected, for example, three  listview  gadgets
  507.                     and two string gadgets  the two  string gadgets  will be
  508.                     joined to listview gadgets. This joining  means that the
  509.                     String gadget will be filled with the  entry  name  of a
  510.                     clicked  entry  in  the  ListView gadget. NOTE: Due to a
  511.                     bug (or something)  the  GadTools library  requires  the
  512.                     String Gadget  to  be  of the same Width as the ListView
  513.                     gadget. This is done automatically by  the  program  and
  514.                     it  cannot  be  stopped.     Also the  GadTools  library
  515.                     will  force    the  string  gadget  directly  below  the
  516.                     ListView gadget.  This also cannot be stopped.
  517.  
  518.  Split............. This will do the opposite of Join.   This will split  up
  519.                     all selected "joined" gadgets.  NOTE:  After the Gadgets
  520.                     have been split the string Gadget returns  to the  place
  521.                     where it has been originally drawn.
  522.  
  523.  Align Left........ This asks you to click on the gadget that has  the  left
  524.                     edge you want the other selected gadgets to have.   When
  525.                     you have clicked on the gadget all the selected  gadgets
  526.                     will inherit the same left edge.
  527.  
  528.  Align Right....... The same as "Align Left"  only the gadget  right-edge is
  529.                     used to align the gadgets.
  530.  
  531.  Align Top......... The same as "Align Left"  only  the  gadget  top-edge is
  532.                     used to align the gadgets.
  533.  
  534.  Align Bottom...... The same as "Align  Left" only the gadget bottom-edge is
  535.                     used to align  the gadgets. NOTE: This may not work  for
  536.                     ListView and Palette gadgets because GadTools sizes this
  537.                     gadget in the area given by you when  first drawn.  This
  538.                     means that the gadget is almost always smaller than  you
  539.                     have drawn it.
  540.  
  541.  Close Size........ This does the same  as the  "Align"  routines  mentioned
  542.                     above  only  this  time  it  will  clone the size of the
  543.                     gadget. The MX, CHECKBOX and GETFILE  gadgets  will  not
  544.                     be affected by this.
  545.  
  546.  Set X Spacing..... This will pop up a requester in which you  can  set  the
  547.                     size in pixels of the horizontal spacing of the gadgets.
  548.                     When the number is entered the selected gadgets will all
  549.                     have an equal distance horizontally from eachother.
  550.  
  551.  Set Y Spacing..... The same  as  with  "Set X Spacing"  only  the  vertical
  552.                     positions are affected.
  553.  
  554.  Spread X.......... When you have selected this you will see a vertical line
  555.                     which can be moved using the mouse.    This line is used
  556.                     to  set  the  left  coordinate  of the spread area. Just
  557.                     click on the left mouse button to  confirm  it's  place.
  558.                     Now you must do the same thing, positioning the line, to
  559.                     set the right coordinate of the spread area.   When  you
  560.                     are  done  all  selected  gadgets  are evenly  spread in
  561.                     the area you selected.
  562.  
  563.  Spread Y.......... The same as with "Spread X" only now the gadgets will be
  564.                     spread vertically in the window and you must set the top
  565.                     and bottom coordinate of the spread area.
  566.  
  567.  »»» 8.3) The Window Menu
  568.  
  569.  New............... This will add a new window to  the  windows  already  in
  570.                     memory. NOTE:  Only the  currently  selected  window  is
  571.                     visible on the screen.
  572.  
  573.  Delete............ This will pop-up a window in which you must  select  the
  574.                     window you want to delete. The following gadgets  are in
  575.                     the window.
  576.  
  577.                     ListView gadget   » This  gadget   lists   the   windows
  578.                                         currently in memory. Just select the
  579.                                         name  of  the  window  you  want  to
  580.                                         delete.
  581.  
  582.                     OK                » Clicking on this gadget will  delete
  583.                                         the selected  window  including  all
  584.                                         gadgets, menus, texts and boxes that
  585.                                         where attached to it.  NOTE: You can
  586.                                         also double-click the project window
  587.                                         name to select it.
  588.  
  589.                     CANCEL            » This will cancel the operation.
  590.  
  591.  Other............. This brings up the  window-selector again  in which  you
  592.                     can select the window you want to edit.
  593.  
  594.  Edit Data......... This brings up a small requester  in which  you can  set
  595.                     some data for the current window. In the  requester  the
  596.                     following gadgets can be found:
  597.  
  598.                     Project name     » In  this  gadget  you  can  give  the
  599.                                        window a name. You  should  name  all
  600.                                        windows so  it's  easy to  keep  them
  601.                                        apart.   NOTE: This name  is used  by
  602.                                        the source generator.
  603.  
  604.                     Start ID from    » In  this  gadget  you  can  type  the
  605.                                        GadgetID  from  which  you  want  the
  606.                                        program to start  numbering the  ID's
  607.                                        of the gadgets. This can come in very
  608.                                        handy  if  you plan  to make  windows
  609.                                        that share a global IDCMP port.
  610.  
  611.                     Min X Size       » In these gadgets  you  can  type  the
  612.                     Min Y Size       » minimum/maximum dimensions  that  the
  613.                     Max X Size       » can  be  sized  to  with  the  sizing
  614.                     Max Y Size       » gadget.   The  program  will  try  to
  615.                                        prevent  you  from   entering   wrong
  616.                                        dimensions.  NOTE: The tags for these
  617.                                        positions will only be generated when
  618.                                        the window has a sizing gadget.
  619.  
  620.                     OK               » This will set the desired changes.
  621.  
  622.                     CANCEL           » This will cancel the operation.
  623.  
  624.  Print Info........ This will open the Project Selection window  again.  Now
  625.                     you can select the project of  which you  want to  print
  626.                     the  information  or  click  on  OK  right away to get a
  627.                     printout of all projects.  In the  printout  the  gadget
  628.                     id's, gadget array constants, number  of gadgets  kinds,
  629.                     number of menus,  number  of  texts  and the  number  of
  630.                     BevelBoxes are listed.   GadToolsBox first checks to see
  631.                     if your printer is online and has paper before it starts
  632.                     to print the projects. Note however that this check only
  633.                     works with parallel printers.
  634.  
  635.  Edit Flags........ This opens a requester in  which  all window  flags  are
  636.                     listed using CheckBox gadgets. Just (de)select the flags
  637.                     you want. Clicking on OK will set these flags and CANCEL
  638.                     cancels  the  operation.   NOTE:  Only  the  SIZEGADGET,
  639.                     DRAGBAR,     DEPTHGADGET,    CLOSEGADGET,    SIZEBRIGHT,
  640.                     SIZEBBOTTOM,  GIMMEZEROZERO,   BORDERLESS  and  BACKDROP
  641.                     flags are (un)set on  the edit  window. The rest  of the
  642.                     flags will  only turn up in  the  generated source code.
  643.                     NOTE: When you set the WFLG_BACKDROP flag in the  window
  644.                           The program will automatically re-size the  window
  645.                           to the same size as the current screen.    You can
  646.                           also switch the size gadget on or off by  pressing
  647.                           the F10 key while editing.
  648.  
  649.  Edit IDCMP........ This opens a requester in which all window  IDCMP  flags
  650.                     are listed using CheckBox gadgets.  Just  (de)select the
  651.                     flags you want. Clicking on OK will set these flags  and
  652.                     CANCEL  cancels  the  operation.   NOTE:   The  GadTools
  653.                     specific  IDCMP  flags  will  always be set according to
  654.                     the kind of gadgets on the window. The Three HIGHLIGHTED
  655.                     flags you see on the  bottom of  the  window  are  three
  656.                     of the flags much used by some gadtools gadgets.  If you
  657.                     need them for your own  purpose then  you  will  have to
  658.                     check them to to get them to appear in the event-handler
  659.                     The flags are  IDCMP_INTUITICKS,  IDCMP_MOUSEBUTTONS and
  660.                     IDCMP_MOUSEMOVE. See the "The IDCMP handler" chapter for
  661.                     more info.
  662.  
  663.  Edit Tags......... This will open a window in  which  some  special  window
  664.                     tags can  be  edited.  In  the  window  you'll  see  the
  665.                     following  gadgets:
  666.  
  667.                     InnerWidth   » When   this   gadget   is  selected   the
  668.                                    generated    source    will    use    the
  669.                                    WA_InnerWidth Tag instead of the WA_Width
  670.                                    Tag. The value next to the gadget  is the
  671.                                    current window InnerWidth.
  672.  
  673.                     InnerHeight  » When   this   gadget   is  selected   the
  674.                                    generated    source    will    use    the
  675.                                    WA_InnerHeight   Tag   instead   of   the
  676.                                    WA_Height Tag.  The  value  next  to  the
  677.                                    gadget is the current window InnerHeight.
  678.  
  679.                     MouseQueue   » When this gadget is  selected the  source
  680.                                    will contain the  WA_MouseQueue  tag.  In
  681.                                    the  integer  gadget  next to this gadget
  682.                                    you can type the  amount of MouseQueue's.
  683.                                    NOTE: This value cannot be smaller than 1
  684.  
  685.                     RptQueue     » When this gadget is  selected the  source
  686.                                    will contain the  WA_RptQueue tag. In the
  687.                                    integer gadget  next  to  this gadget you
  688.                                    can type the amount of RptQueue's.  NOTE:
  689.                                    This value cannot be smaller than 1.
  690.  
  691.                     AutoAdjust   » Selecting this will cause  the  generated
  692.                                    source to contain the  WA_AutoAdjust tag.
  693.  
  694.                     Zoom         » When this gadget is selected the  WA_Zoom
  695.                                    Tag is generated in the source  code.  In
  696.                                    the Left, Top, Width, Height gadgets  you
  697.                                    can  type  the   Window  it's   alternate
  698.                                    positions.   NOTE:  This  gadget  is only
  699.                                    enabled when the window sizing  gadget is
  700.                                    turned off. This can be done in the "Edit
  701.                                    Flags" requester.
  702.  
  703.                     Default Zoom » This will tell  GadToolsBox  to  generate
  704.                                    source   that  will  calculate  the  zoom
  705.                                    positions at run time. The Zoom positions
  706.                                    will be the same as  the  Zoom  positions
  707.                                    of the preferences programs.   NOTE: This
  708.                                    gadget is  only enabled  when the  window
  709.                                    sizing gadget is turned off.  This can be
  710.                                    done in the "Edit Flags" requester.
  711.  
  712.                     WindowTitle  » Type the Window title  in here.  If  this
  713.                                    Gadget is empty the WA_Title tag will not
  714.                                    be generated.
  715.  
  716.                     ScreenTitle  » Type the  Screen title in  here. If  this
  717.                                    Gadget is  empty the  WA_ScreenTitle  tag
  718.                                    will not be generated.
  719.  
  720.                     OK           » This will set  the  desired  changes  and
  721.                                    resume to editing.
  722.  
  723.                     CANCEL       » This will cancel the operation.
  724.  
  725.  Edit Grid......... This will open a window to edit the grid size. The grid,
  726.                     which is invisible, is used to let the gadgets be  moved
  727.                     and sized with a specific amount of pixels at  the time.
  728.                     This  can be VERY useful to  get your  gadgets the  same
  729.                     size and in line with each other.   If   you for example
  730.                     have both the X and Y grid spacings on 4  the gadget-box
  731.                     will  size/move 4  pixels at the time but only  when the
  732.                     mouse has moved four pixels from it's previous position.
  733.                     If this sounds a bit confusing  you should  try it  out.
  734.                     It makes  it  a  hell  of a  lot  easier  to  place/size
  735.                     the gadgets on the right spot.  In the grid  window  you
  736.                     will see the following gadgets:
  737.  
  738.                     Grid X Size       :  Type the X spacing of  the grid  in
  739.                                          here. NOTE:  This may not  be  less
  740.                                          than 2 or more than 100.
  741.  
  742.                     Grid Y Size       :  Type the Y spacing of  the grid  in
  743.                                          here. NOTE:  This may not  be  less
  744.                                          than 2 or more than 100.
  745.  
  746.                     Grid On           :  When  this  gadgets is checked  the
  747.                                          grid is switched  on.
  748.  
  749.                     OK                :  Clicking on  this gadget  will  set
  750.                                          the desired grid changes.
  751.  
  752.                     CANCEL            :  This will cancel the  operation.
  753.  
  754.                     NOTE:  When the grid is switched on  all coordinates are
  755.                            updated according to the grid sizes!
  756.  
  757.  Edit Offsets...... This will open a window to edit the border offsets.  The
  758.                     border offsets are used to create a working space within
  759.                     the window borders. This means that if you have set  the
  760.                     horizontal offset to 4 and the vertical offset to 2  the
  761.                     gadgets cannot be moved/sized  closer than  4 pixels  to
  762.                     the window left and right borders and not closer  than 2
  763.                     pixels to the window top and bottom borders.
  764.  
  765.                     Horiz. offset     :  Type the offset in pixels you  want
  766.                                          to have  from the  left  and  right
  767.                                          window borders here. NOTE: This may
  768.                                          not be less than 0 or more than 20.
  769.  
  770.                     Vert. offset      :  Type the offset in pixels you  want
  771.                                          to have from  the  top  and  bottom
  772.                                          window borders here. NOTE: This may
  773.                                          not be less than 0 or more than 20.
  774.  
  775.                     Offset On         :  When  this  gadgets is checked  the
  776.                                          offsets are switched  on.
  777.  
  778.                     OK                :  Clicking on  this gadget  will  set
  779.                                          the desired offset changes.
  780.  
  781.                     CANCEL            :  This will cancel the  operation.
  782.  
  783.  Texts.............
  784.      Add........... This will open the  IntuiText  editor  window.  In  this
  785.                     window you'll find the following gadgets:
  786.  
  787.                     Enter Text   » In this gadget you must  type the  actual
  788.                                    text you want.
  789.  
  790.                     JAM1
  791.                     JAM2
  792.                     COMPLEMENT
  793.                     INVERSVID    » These four gadgets determine the drawmode
  794.                                    used to paint the text in the rastport.
  795.  
  796.                     FrontPen     » With this palette gadget  you can  select
  797.                                    the FrontPen (text) color  which is  used
  798.                                    to draw the text.
  799.  
  800.                     BackPen      » With this palette gadget  you can  select
  801.                                    the BackPen (background)  color  which is
  802.                                    used to draw the text.
  803.  
  804.                     OK           » This gadget will close the window and let
  805.                                    you position the text in the edit window.
  806.                                    Clicking on  the left  mouse-button  will
  807.                                    confirm  the  place.   NOTE: You can also
  808.                                    double-click the text to select it.
  809.  
  810.                     CANCEL       » This will cancel the operation.
  811.  
  812.                     Now you must move the text with mouse to where you  want
  813.                     it and click the left mouse-button.  To get your text in
  814.                     The middle of the window horizontally you must move  the
  815.                     text to the vertical position you want it and  press the
  816.                     F1 key. Then the text will be moved to the center of the
  817.                     window.
  818.  
  819.      Edit.......... This will put up the text selection window if  there was
  820.                     more than one text added. In this text selection  window
  821.                     you'll see the following gadgets:
  822.  
  823.                     Available Texts » In  this  ListView  gadget  the  texts
  824.                                       currently   in   memory   are  listed.
  825.                                       Clicking on the text will select it.
  826.  
  827.                     OK              » This will  select  the  text  for  the
  828.                                       operation that has to be done.
  829.  
  830.                     CANCEL          » This will cancel the operation.
  831.  
  832.                     Now the IntuiText Editor opens  with the  selected  text
  833.                     already  in it.  Now you can edit  the text the  way you
  834.                     want.
  835.  
  836.      Delete........ This will put up the text selector  again if  more  than
  837.                     one text is added to the  window.  Just select  the text
  838.                     and it's gone. NOTE: When only one text is available the
  839.                     text is deleted immediately.
  840.  
  841.      Move.......... The text selector pops up again if.... Now you can  move
  842.                     the text around in the edit window.  Just  click on  the
  843.                     left mouse-button to  confirm it's  new  place.  You can
  844.                     center it with F1 of course (see Add a text).
  845.  
  846.  BevelBoxes........
  847.     Add............ When this item has been selected  the  program will  ask
  848.                     you to click on the place where you  want  the  top-left
  849.                     corner of the BevelBox. When clicked you can drag a  box
  850.                     just like when you are editing gadgets.  Just  click  on
  851.                     the left mouse button again to confirm  that the  box is
  852.                     the way you want it.    NOTE:  By  default  the  box  is
  853.                     "raised".  Look at the  "Flip BevelBox" item  to get  it
  854.                     "recessed."
  855.  
  856.     Move........... This  works  the  same  as  moving  a  gadget  with  the
  857.                     exception that multi-selection isn't available.
  858.  
  859.     Size........... This  works  the  same  as  sizing  a  gadget  with  the
  860.                     exception that multi-selection isn't available.
  861.  
  862.     Delete......... This works the  same  as  deleting  a  gadget  with  the
  863.                     exception that multi-selection isn't available.
  864.  
  865.     Flip Recessed.. By default all created BevelBoxes are  "raised".  To get
  866.                     a BevelBox "recessed" you must select this item and then
  867.                     ( when  the  program  asks  you to )  click  inside  the
  868.                     box and it will be recessed.
  869.  
  870.     Flip DropBox... This ask you to click in the box you want to make into a
  871.                     Icon Drop box or in the Icon Drop box  you want  to flip
  872.                     back into a normal box. The usage of the Icon  Drop  box
  873.                     is described in the "User Interface Style Guide".
  874.  
  875.  »»» 8.4) The Screen Menu
  876.  
  877.  Palette........... This will open the palette editor. In the palette editor
  878.                     you'll see the following gadgets:
  879.  
  880.                     Red         » With this slider gadget you can adjust the
  881.                                   Red intensity  of the  currently  selected
  882.                                   color.
  883.  
  884.                     Green       » With this slider gadget you can adjust the
  885.                                   Green intensity of the currently  selected
  886.                                   color.
  887.  
  888.                     Blue        » With this slider gadget you can adjust the
  889.                                   Blue intensity of the  currently  selected
  890.                                   color.
  891.  
  892.                     Colors      » This gadget consists of 2, 4, 8, 16 or  32
  893.                                   colored gadgets and a color indicator left
  894.                                   of it. Just click on the color you want to
  895.                                   edit to switch to editing that color.
  896.  
  897.                     OK          » This will close the Palette editor and set
  898.                                   the desired colors on the edit screen.
  899.  
  900.                     Load        » This opens the file requester in which you
  901.                                   can select the  name of an  IFF-ILBM  file
  902.                                   from which you wish to load the colors.
  903.  
  904.                     Save        » This opens the file requester in which you
  905.                                   can select  a name.  The  selected  colors
  906.                                   will then  be saved  to an  IFF-ILBM file.
  907.                                   The generated IFF-ILBM file is  compatible
  908.                                   with DPaint IV it's palette files.
  909.  
  910.                     Reset       » This will reset all  colors to  what  they
  911.                                   where before the palette editor opened.
  912.  
  913.                     CANCEL      » This will first reset all colors  and then
  914.                                   exit the palette editor.
  915.  
  916.  Load WB Colors.... This  will  load  the  workbench  colors  from the  file
  917.                     "ENV:sys/palette.ilbm". Note that this will change.
  918.  
  919.  Get Font.......... This will  open the  FontSelector  for  you  to select a
  920.                     new font. To select a font you must first  click  on the
  921.                     desired font name and then enter or click on the desired
  922.                     font height. Clicking on Ok  will set the  font  on  the
  923.                     screen and clicking on Cancel will cancel the operation.
  924.                     NOTE: When the "Adapt. Font" switch  in the  Preferences
  925.                     window is switched on then this item cannot be selected.
  926.  
  927.  Set DriPens....... This will open the DriPen editor.  DriPens are the  pens
  928.                     which the system uses to  give that  special new  OS 2.0
  929.                     look  to  the  window  and  gadgets etc.  The  following
  930.                     gadgets are in the DriPen editor:
  931.  
  932.                     Pens        » This cycle gadget is  used to  select  the
  933.                                   DriPen you want  to  edit.  The  following
  934.                                   DriPens are available:
  935.  
  936.                                   DETAILPEN
  937.                                       This  is  the  same  as  the  standard
  938.                                       NewScreen detailpen.
  939.  
  940.                                   BLOCKPEN
  941.                                       This  is  the  same  as  the  standard
  942.                                       NewScreen blockpen.
  943.  
  944.                                   TEXTPEN
  945.                                       This is  the  pen  used  to  draw  the
  946.                                       gadget text and the Window title.
  947.  
  948.                                   SHINEPEN
  949.                                       This is  the  pen  used  to  draw  the
  950.                                       "light-side" of the gadget and  window
  951.                                       borders.
  952.  
  953.                                   SHADOWPEN
  954.                                       This is  the  pen  used  to  draw  the
  955.                                       "dark-side"  of the gadget and  window
  956.                                       borders.
  957.  
  958.                                   FILLPEN
  959.                                       This is the pen used to  backfill  the
  960.                                       gadget  when  it's  clicked   and  the
  961.                                       window border when it's active.
  962.  
  963.                                   FILLTEXTPEN
  964.                                       This is the pen used to draw the  text
  965.                                       of a clicked  gadget  and  the  Window
  966.                                       title of an active window.
  967.  
  968.                                   BACKGROUNDPEN
  969.                                       This   pen  is   used   to   fill  the
  970.                                       background of an unselected gadget.
  971.  
  972.                                   HIGHLIGHTTEXTPEN
  973.                                       This pen is used to draw the text of a
  974.                                       gadget   with   the  HighLight  switch
  975.                                       turned on.
  976.  
  977.                     Palette     » This gadgets contains the current   screen
  978.                                   colors. Clicking on a color  will set  the
  979.                                   currently displayed  DriPen  in the  Cycle
  980.                                   gadget to that colors.
  981.  
  982.                     OK          » Clicking  on  this  gadget  will  set  the
  983.                                   desired DriPens.
  984.  
  985.                     CANCEL      » This will cancel the operation.
  986.  
  987.  Edit Tags......... This will open the screen tags  window.  In  this window
  988.                     the following gadgets are located:
  989.  
  990.                     AutoScroll  » With this  gadget  checked  the  generated
  991.                                   source will contain the SA_AutoScroll tag.
  992.  
  993.                     Type        » This cycle gadget has the supported screen
  994.                                   types in it:
  995.  
  996.                                   CUSTOMSCREEN
  997.                                        The generated source will contain the
  998.                                        screen tags and data. The window will
  999.                                        use this screen to open on.
  1000.  
  1001.                                   WBENCHSCREEN
  1002.                                        The generated source will not contain
  1003.                                        the screen tags and data.  The window
  1004.                                        will use the Workbench screen to open
  1005.                                        on.
  1006.  
  1007.                                   CUSTOMSCREEN
  1008.                                        The generated source will not contain
  1009.                                        the screen tags and data.  The window
  1010.                                        will use the default public screen to
  1011.                                        open on.
  1012.  
  1013.                     Title       » In this  string  gadget you  can type  the
  1014.                                   title of the screen when no windows on the
  1015.                                   screen  are  activated.  NOTE:  When  this
  1016.                                   gadget   is  empty  the  Tag  will  no  be
  1017.                                   generated in the source.
  1018.  
  1019.                     OK          » This will set the desired tags.
  1020.  
  1021.                     CANCEL      » This will cancel the operation.
  1022.  
  1023.  Change Type....... This will pop up the Screen Type requester which enables
  1024.                     you to change the  screen you are working on. NOTE: When
  1025.                     you have (for example) edited gadgets on a  hires screen
  1026.                     and you change  the  resolution  to a  lores  screen the
  1027.                     gadgets  that  are  located  outside  the  lores  screen
  1028.                     range (gadget left-edge > 320) cannot be reached anymore
  1029.                     (unless you switch back to the  hires screen of course)!
  1030.  
  1031.                     The screen mode requester has the following gadgets:
  1032.  
  1033.                     Available modes     » In this gadget you  see a list  of
  1034.                                           available   display  modes.   Just
  1035.                                           click on the desired display mode.
  1036.                                           NOTE: The  program currently  only
  1037.                                           checks  for  the  availability  of
  1038.                                           the  LORES,   HIRES,  SUPER-HIRES,
  1039.                                           PRODUCTIVITY  and   A2024    modes
  1040.                                           for the PAL, NTSC, VGA  and  A2024
  1041.                                           monitors. Also the interlace modes
  1042.                                           are supported except for the A2024
  1043.                                           modes because they do not  support
  1044.                                           interlace. THE VGA AND A2024 MODES
  1045.                                           MAY   ONLY   BE   USED   WITH VGA/
  1046.                                           MULTISYNC OR A2024  MONITORS USAGE
  1047.                                           OF  THESE  DISPLAY   MODES   ON  A
  1048.                                           STANDARD RGB MONITOR MAY RESULT IN
  1049.                                           SERIOUS DAMAGE TO THE MONITOR.
  1050.  
  1051.                     Min. Width          » This  gadget  shows   the  minimum
  1052.                                           width the  screen can have.
  1053.  
  1054.                     Min. Height         » This  gadget   shows  the  minimum
  1055.                                           height the  screen can have.
  1056.  
  1057.                     Max. Width          » This  gadget  shows  the   maximum
  1058.                                           width the  screen can have.
  1059.  
  1060.                     Max. Height         » This  gadget  shows  the   maximum
  1061.                                           height the  screen can have.
  1062.  
  1063.                     Width               » In  this  gadget you can type  the
  1064.                                           width  of  the  screen  you   want
  1065.                                           to have.   NOTE:  This  cannot  be
  1066.                                           smaller/larger  than  the   values
  1067.                                           described above.
  1068.  
  1069.                     Height              » In  this gadget you  can type  the
  1070.                                           height  of the  screen you want to
  1071.                                           have.    NOTE:   This   cannot  be
  1072.                                           smaller/larger  than   the  values
  1073.                                           described above.
  1074.  
  1075.                     Depth               » This slider gadget lets you adjust
  1076.                                           the screen depth. The screen depth
  1077.                                           determines the amount of available
  1078.                                           colors.
  1079.  
  1080.                                           Depth = 1, Colors = 2
  1081.                                           Depth = 2, Colors = 4
  1082.                                           Depth = 3, Colors = 8
  1083.                                           Depth = 4, Colors = 16
  1084.                                           Depth = 5, Colors = 32
  1085.  
  1086.                     OK                  » When this  gadget is  clicked  the
  1087.                                           program  will  try   to  open  the
  1088.                                           desired  screen    and  start  the
  1089.                                           editing.
  1090.                                           NOTE:  You  can also  double-click
  1091.                                           the desired display mode to select
  1092.                                           it.
  1093.  
  1094.                     CANCEL              » Clicking on this gadget cancel the
  1095.                                           operation.
  1096.  
  1097.  »»» 8.5) The Menus Menu
  1098.  
  1099.  Edit.............. This will open the Menu Editor  window in which  you can
  1100.                     edit   a   complete  menu-strip.   Refer  to  the  "Menu
  1101.                     Requesters" chapter for more information.
  1102.  
  1103.  Test.............. This will set-up the menus,  items  and  subitems  to be
  1104.                     tested by you. When the message "TESTING MENUS!  ESC  TO
  1105.                     QUIT..." is printed  in  the screen and window title bar
  1106.                     you  can browse  through the menus like you normally do.
  1107.                     You  must  press  the  ESC  (escape)  key  to  resume to
  1108.                     editing.
  1109.  
  1110.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1111.  » 9) Gadget Kind Requester                                                »
  1112.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1113.  GadToolsBox supports all gadget kinds which all have their  own  window  in
  1114.  which the gadget kind specifics can be edited. The following gadgets can be
  1115.  found in nearly all  gadget  kind  requesters  and are  there  for the same
  1116.  reason:
  1117.  
  1118.  Text           » In this gadget you can type the  text which  is  displayed
  1119.                   with the gadget.
  1120.  
  1121.  Label          » In this gadget you can type the source code label which is
  1122.                   used to define  some  important  values  in the  generated
  1123.                   source. Refer to the "Generated Source"  chapter  for more
  1124.                   information.
  1125.  
  1126.  Underscore     » When  this  gadget  is  selected   the  character  in  the
  1127.                   GadgetText  preceded  by a '_' will  be  underlined  which
  1128.                   specifies the keyboard shortcut.
  1129.  
  1130.  Disabled       » When this gadget is selected the gadget will be  disabled.
  1131.                   The gadget will only be disabled in the  generated source.
  1132.                   NOTE: Not all gadgets support this switch.
  1133.  
  1134.  High Label     » This tells that  the  GadgetText  must  be  drawn  in  the
  1135.                   highlight text color. NOTE Not  all  gadgets  support this
  1136.                   switch.
  1137.  
  1138.  Text Place     » This cycle gadget  determines  where that  gadget  text is
  1139.                   placed. The possibilities are IN, LEFT,  RIGHT,  ABOVE and
  1140.                   BELOW. NOTE: Only the Button gadget supports IN.
  1141.  
  1142.  OK             » This  gadget  will  add  the  gadget  with   the  selected
  1143.                   specifics to the edit window or set the desired changes.
  1144.  
  1145.  CANCEL         » This will cancel the operation.
  1146.  
  1147.  Following is a description of the extra specifics  of the  different gadget
  1148.  kinds supported by GadToolsBox.
  1149.  
  1150.  »»» 9.1) The CheckBox Gadget
  1151.  
  1152.  Checked       » When this gadget is switched on it tells that the gadget is
  1153.                  checked by default.
  1154.  
  1155.  »»» 9.2) The Integer Gadget
  1156.  
  1157.  Placement     » In this cycle gadget there are three choises.  LEFT, CENTER
  1158.                  and RIGHT. These represent where the  cursor  should appear
  1159.                  when the gadget is activated.
  1160.  
  1161.  ExitHelp      » When this gadget  is  selected  you  will  get  a  GADGETUP
  1162.                  message with 0x5F as  code to indicate  that the  user  has
  1163.                  pressed the HELP key in the gadget.
  1164.  
  1165.  TabCycle      » When this gadget is selected the integer gadget will  cycle
  1166.                  to the next/previous  integer/string gadget  when the  user
  1167.                  presses TAB or SHIFT+TAB.
  1168.  
  1169.  MaxChars      » You must type the maximum possible digits plus one that may
  1170.                  be typed in the gadget. NOTE: This cannot be smaller than 2
  1171.  
  1172.  Number        » Type the default number in this gadget  that the  resulting
  1173.                  gadget has in it.
  1174.  
  1175.  »»» 9.3) The ListView Gadget
  1176.  
  1177.  Read Only     » When this gadget is selected the  ListView  Gadget  will be
  1178.                  read-only. NOTE: The ListView will only be read-only in the
  1179.                  generated source.
  1180.  
  1181.  ShowSelected  » When this gadget is selected the active (clicked)  entry in
  1182.                  the listview gadget will be shown below the listview gadget
  1183.                  NOTE: This option is only available  if the ListView  isn't
  1184.                  ReadOnly.
  1185.  
  1186.  Spacing       » Type the  extra  number  of  pixels  GadTools  must  insert
  1187.                  between the listview entries. NOTE: This  value  cannot  be
  1188.                  smaller than 0.
  1189.  
  1190.  Scr. Width    » Type the width of the scroller gadget next to the  ListView
  1191.                  gadget in here. NOTE: This value may not be smaller than 16
  1192.  
  1193.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1194.                  the  string  gadget  you can  type  the  entries  that  the
  1195.                  listview must have. To edit an entry you  must first  click
  1196.                  on the entry in the listview and then edit the entry in the
  1197.                  string  gadget.  NOTE:  The  "!!ACTION GADGET!!"  entry  is
  1198.                  always in the list and cannot  be removed  or edited.  This
  1199.                  entry is necessary to keep the ListView  selectable  in the
  1200.                  program. This entry will of course not showup in the source
  1201.                  generated.
  1202.  
  1203.  Remove        » This gadget enables you to remove  entries  from the  list.
  1204.                  Just click on the entry in the ListView gadget and  then on
  1205.                  this gadget and the entry is gone.
  1206.  
  1207.  Up            » With this gadget you can move the selected label  one place
  1208.                  up in the list.
  1209.  
  1210.  Down          » With this gadget you can move the selected node  one  place
  1211.                  down in the list.
  1212.  
  1213.  »»» 9.4) The Mx Gadget
  1214.  
  1215.  Spacing       » In this gadget you can  type the  spacing  in  pixels  that
  1216.                  GadTools should insert between the items of the  MX gadget.
  1217.  
  1218.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1219.                  the  string  gadget  you can  type  the  entries  that  the
  1220.                  mx must have.  To  edit  an  entry  you  must  first  click
  1221.                  on the entry in the listview and then edit the entry in the
  1222.                  string  gadget.  NOTE:  You must enter at least two entries
  1223.                  for the MX gadget.
  1224.  
  1225.  Remove        » This gadget enables you to remove  entries  from the  list.
  1226.                  Just click on the entry in the ListView gadget and  then on
  1227.                  this gadget and the entry is gone.
  1228.  
  1229.  Up            » With this gadget you can move the selected label  one place
  1230.                  up in the list.
  1231.  
  1232.  Down          » With this gadget you can move the selected node  one  place
  1233.                  down in the list.
  1234.  
  1235.  »»» 9.5) The Cycle Gadget
  1236.  
  1237.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1238.                  the  string  gadget  you can  type  the  entries  that  the
  1239.                  cycle must have.  To edit an  entry you  must  first  click
  1240.                  on the entry in the listview and then edit the entry in the
  1241.                  string  gadget.  NOTE:  You must enter at least two entries
  1242.                  for the Cycle gadget.
  1243.  
  1244.  Remove        » This gadget enables you to remove  entries  from the  list.
  1245.                  Just click on the entry in the ListView gadget and  then on
  1246.                  this gadget and the entry is gone.
  1247.  
  1248.  Up            » With this gadget you can move the selected label  one place
  1249.                  up in the list.
  1250.  
  1251.  Down          » With this gadget you can move the selected node  one  place
  1252.                  down in the list.
  1253.  
  1254.  »»» 9.6) The Palette Gadget
  1255.  
  1256.  Width         » In  this  gadget  you  can  type  the  width  of  the color
  1257.                  indicator if you want one on the left of the gadget.  NOTE:
  1258.                  any value smaller than 9 will indicate that you do not want
  1259.                  a color indicator.
  1260.  
  1261.  Height        » In  this  gadget  you  can  type  the height  of  the color
  1262.                  indicator if you want one above the gadget. NOTE: any value
  1263.                  smaller than 9 will indicate that you  do not  want a color
  1264.                  indicator.
  1265.  
  1266.  »»» 9.7) The Scroller Gadget
  1267.  
  1268.  Immediate     » When   this   gadget  is   selected   you   will  hear  any
  1269.                  IDCMP_GADGETDOWN message through the window IDCMP port that
  1270.                  this gadget generates.
  1271.  
  1272.  RelVerify     » When   this   gadget  is   selected   you   will  hear  any
  1273.                  IDCMP_GADGETUP  message  through the window IDCMP port that
  1274.                  this gadget generates.
  1275.  
  1276.  Horizontal
  1277.  Vertical      » With this gadget you can determine whether this  gadget can
  1278.                  be moved horizontally or vertically.
  1279.  
  1280.  Top           » In this gadget  you  can  type  the  top  of the  area  the
  1281.                  scroller is used for.
  1282.  
  1283.  Total         » In this gadget you  can  type  the  total  of  the area the
  1284.                  scroller is used for.
  1285.  
  1286.  Visible       » In this gadget you  can type  the visible  part of the area
  1287.                  this scroller is used for.
  1288.  
  1289.  Arrows        » In this gadget you can type the size in pixels of an arrow.
  1290.                  NOTE: Specifying  a  value smaller  than 8  says you  don't
  1291.                  want arrows.
  1292.  
  1293.  »»» 9.8) The Slider Gadget
  1294.  
  1295.  Immediate     » When   this   gadget  is   selected   you   will  hear  any
  1296.                  IDCMP_GADGETDOWN message through the window IDCMP port that
  1297.                  this gadget generates.
  1298.  
  1299.  RelVerify     » When   this   gadget  is   selected   you   will  hear  any
  1300.                  IDCMP_GADGETUP  message  through the window IDCMP port that
  1301.                  this gadget generates.
  1302.  
  1303.  Horizontal
  1304.  Vertical      » With this gadget you can determine whether this  gadget can
  1305.                  be moved horizontally or vertically.
  1306.  
  1307.  Min           » In this gadget you can type the minimum value of the slider.
  1308.  
  1309.  Max           » In this gadget you can type the maximum value of the slider.
  1310.  
  1311.  Level         » In this gadget you can  type the  initial level  the slider
  1312.                  must have.
  1313.  
  1314.  Level Size    » In  this   gadget  you  can  type  the  maximum  amount  of
  1315.                  characters that may be used to print the slider level.
  1316.  
  1317.  Format        » A formatting string ala RawDoFmt() which  specifies the way
  1318.                  the slider level  should be  printed.  NOTE:  When  this is
  1319.                  omitted the slider level won't be printed.
  1320.  
  1321.  Lev. Place    » With this gadget you can specify where GadTools is to print
  1322.                  the slider level. The possibilities are LEFT,  RIGHT, ABOVE
  1323.                  and below.
  1324.  
  1325.  »»» 9.9) The String Gadget
  1326.  
  1327.  Placement     » In this cycle gadget there are three choises.  LEFT, CENTER
  1328.                  and RIGHT. These represent where the  cursor  should appear
  1329.                  when the gadget is activated.
  1330.  
  1331.  ExitHelp      » When this gadget  is  selected  you  will  get  a  GADGETUP
  1332.                  message with 0x5F as  code to indicate  that the  user  has
  1333.                  pressed the HELP key in the gadget.
  1334.  
  1335.  TabCycle      » When this gadget is selected the string  gadget will  cycle
  1336.                  to the next/previous  integer/string gadget  when the  user
  1337.                  presses TAB or SHIFT+TAB.
  1338.  
  1339.  MaxChars      » You must type the maximum possible characters plus one that
  1340.                  may be typed in the gadget.  NOTE:  This cannot be  smaller
  1341.                  than 2.
  1342.  
  1343.  String        » Type the default string in this gadget  that the  resulting
  1344.                  gadget has in it.
  1345.  
  1346.  »»» 9.10) The Number Gadget
  1347.  
  1348.  NOTE: During the editing the number  gadget can  be selected  to be  moved,
  1349.        sized, deleted etc.   This  is  only  possible in  the  program!  The
  1350.        gadget generated in the source will NOT  respond to clicking  in  it!
  1351.        The NUMBER kind of gadget  is a  READONLY  gadget  which  is used  to
  1352.        display numbers.
  1353.  
  1354.  Border        » When this gadget is  checked  it  means  that a  "recessed"
  1355.                  border will be drawn around the gadget.
  1356.  
  1357.  Number        » In this gadget you can  type  the default  number  that the
  1358.                  gadget should display.
  1359.  
  1360.  »»» 9.11) The Text Gadget
  1361.  
  1362.  NOTE: During the editing  the  text  gadget can  be selected  to be  moved,
  1363.        sized, deleted etc.   This  is  only  possible in  the  program!  The
  1364.        gadget generated in the source will NOT  respond to clicking  in  it!
  1365.        The TEXT kind  of  gadget  is a  READONLY  gadget  which  is used  to
  1366.        display informative texts.
  1367.  
  1368.  Border        » When this gadget is  checked  it  means  that a  "recessed"
  1369.                  border will be drawn  around the gadget. NOTE: When you did
  1370.                  not enter a text in the "Def. Text"  gadget the  border  is
  1371.                  switched on no matter what this gadget says.
  1372.  
  1373.  CopyText      » When this gadget is checked the gadtools.library will  make
  1374.                  it's own private copy of the text.
  1375.  
  1376.  Def. Text     » In this gadget you  can  type  the  default  text  that the
  1377.                  gadget should display.
  1378.  
  1379.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1380.  » 10) Menu Requesters                                                     »
  1381.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1382.  GadToolsBox uses three (actually two) windows to let the user edit complete
  1383.  menu-strips. Following is a description of those windows.
  1384.  
  1385.  »»» 10.1) The Menu Requester
  1386.  
  1387.  This requester is used to edit  the menus.  In the  window you'll  see  the
  1388.  following gadgets:
  1389.  
  1390.  Menus         » This  listview  gadget  contains  the names  of  the  menus
  1391.                  currently in memory.  Below this ListView  gadget a  string
  1392.                  gadget is  located  which  is used  to  enter/edit the menu
  1393.                  names. To add a new menu to  the list  you must  enter it's
  1394.                  name in this string gadget and press return. To edit a menu
  1395.                  name you must  first  click on  the  name  in  the listview
  1396.                  gadget and then edit the name in the string gadget.
  1397.  
  1398.  Disabled      » This CheckBox gadget tells GadToolsBox whether you want the
  1399.                  menu to be disabled or not.
  1400.  
  1401.  ItemEd        » This gadget must be clicked when you want to add some items
  1402.                  to a menu. To do this you must first click on the menu name
  1403.                  in the listview gadget which you want to edit items for and
  1404.                  then click on this gadget.  If  all goes  well you  will be
  1405.                  presented with the "(Sub)Item Requester" (see below).
  1406.  
  1407.  Delete        » When you want to delete a menu you must click  on it's name
  1408.                  in the listview gadget and then click on this gadget.  Then
  1409.                  a requester pops up asking for confirmation. NOTE: Deleting
  1410.                  a menu with  items  attached to it  will also delete  those
  1411.                  items.
  1412.  
  1413.  Up            » This gadget will put the selected menu one place up  in the
  1414.                  list.
  1415.  
  1416.  Down          » This gadget will put the  selected menu  one place  down in
  1417.                  the list.
  1418.  
  1419.  DONE          » Clicking on this gadget will close the requester and resume
  1420.                  to gadget editing.
  1421.  
  1422.  »»» 10.2) The (Sub)Item Requester
  1423.  
  1424.  This requester  is used to  edit  (sub)items  for  a  specific   menu. This
  1425.  requester is the same for editing items and subitems. The following gadgets
  1426.  are in the window:
  1427.  
  1428.  (Sub)Items    » This  listview  gadget  contains  the names  of  the  (sub)
  1429.                  items currently attached to the menu.  Below  this ListView
  1430.                  gadget a string gadget is located  which is used  to  enter
  1431.                  /edit the (sub)item names. To add a new  (sub)item  to  the
  1432.                  list  you must  enter it's name  in this string  gadget and
  1433.                  press return. To edit a menu name you must  first  click on
  1434.                  the  name  in  the listview  gadget and then  edit the name
  1435.                  in the string gadget.
  1436.  
  1437.  Checkit       » This will turn the intuition  CHECKIT  flag on/off  for the
  1438.                  (sub)item.
  1439.  
  1440.  Disabled      » This CheckBox gadget tells GadToolsBox whether you want the
  1441.                  (sub)item to be disabled or not.
  1442.  
  1443.  Checked       » This will turn the intuition  CHECKED  flag on/off  for the
  1444.                  (sub)item.
  1445.  
  1446.  MenuToggle    » This will turn the intuition MENUTOGGLE flag on/off for the
  1447.                  (sub)item.
  1448.  
  1449.  ShortCut      » You can  add a  keyboard  shortcut  for  the  (sub)item  by
  1450.                  entering the shortcut key in this gadget. NOTE: The program
  1451.                  will detect it when you try to use a shortcut key that  you
  1452.                  have already used.
  1453.  
  1454.  Source Label  » In this gadget you can type the  suffix of  the  label that
  1455.                  the routine for the edited item  will have.   For  example:
  1456.  
  1457.                     When your window is called "FileRequester" and  you type
  1458.                     "Open" in this gadget the routine  label called  by this
  1459.                     item will read "FileRequesterOpen()".
  1460.  
  1461.                  See the "The IDCMP handler" chapter for more information.
  1462.  
  1463.  BarLab        » When you click on this gadget a separator bar (NM_BARLABEL)
  1464.                  is inserted in the list automatically.
  1465.  
  1466.  SubEd         » This  gadget  must be  clicked when  you  want to  add some
  1467.                  subitems to a item. To do this you must  first click on the
  1468.                  item name in the listview  gadget which  you want  to  edit
  1469.                  subitems for  and  then  click on  this gadget. If all goes
  1470.                  well the requester will switch to  subitems editing.  NOTE:
  1471.                  This gadget is disabled  when the  requester already  is in
  1472.                  the subitem mode.
  1473.  
  1474.  Delete        » When you want to delete a (sub)item you must click  on it's
  1475.                  name in the listview gadget  and then click on this gadget.
  1476.                  Then a requester  pops  up asking  for confirmation.  NOTE:
  1477.                  Deleting a item  with  subitems  attached to it  will  also
  1478.                  delete those subitems.
  1479.  
  1480.  Up            » This gadget will put the selected (sub)item one place up in
  1481.                  the list.
  1482.  
  1483.  Down          » This gadget will put the  selected (sub)item one place down
  1484.                  in the list.
  1485.  
  1486.  MutEx         » Clicking on this gadget enables  you  to  set  the  Mutual-
  1487.                  Exclusion of (sub)items.  When you click on it you will see
  1488.                  the message "DRAG_SELECT ITEMS TO EXCLUDE" in the title bar
  1489.                  of the item editor window.   Now you must  press  the right
  1490.                  mouse button to select the items to exclude.  The item that
  1491.                  excludes the items is always ghosted.  To select  the items
  1492.                  you must move the mouse  pointer to  the item  you  want to
  1493.                  exclude and press the left mouse button whilst holding down
  1494.                  the right button. All checked items will be the  items that
  1495.                  are excluded by the ghosted item.
  1496.  
  1497.  DONE          » Clicking on this gadget will  close the  requester and  put
  1498.                  you back in the menu requester.
  1499.  
  1500.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1501.  » 11) The Generated Source                                                »
  1502.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1503.  The source output of GadToolsBox is divided into two  separate  files.  The
  1504.  first file is a header (.h|.i) containing EXTERNS or XREF'S to the  data in
  1505.  the  generated main source and  CONSTANTS  for  the  gadget  ID's  and  the
  1506.  positions of the gadgets in the  Gadget  Array.  The  second  file  (.c|.s)
  1507.  (from here on referred to as "main file") contains all data and routines to
  1508.  set-up things. From here on when I refer to <Project_Name>  I mean the name
  1509.  entered in  the "Edit Data" requester from the Window menu and when I refer
  1510.  to  <Gadget_Label> I mean the  name  you have typed  in the "Label"  gadget
  1511.  of one  of the  gadget kind requesters.   When I refer  to  <Menu_Label>  I
  1512.  mean the label you have typed in the "Source Label" gadget of the (Sub)Item
  1513.  editor. In  the  main  file  the following routines are generated:
  1514.  
  1515.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1516.    » long SetupScreen( void );                                         »
  1517.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1518.     This routine will open or lock the screen and get it's visual info.
  1519.     When requested (see Preferences Menu) this routine  will also  open
  1520.     the font. Also it will setup the boopsi image for the GETFILE gadget
  1521.     when such a gadget is used.  This  routine  can  return  one of the
  1522.     following errors:
  1523.  
  1524.         0 = No errors.
  1525.         1 = Could not open or lock the screen.
  1526.         2 = Could not get the screen it's visual info.
  1527.         3 = Could not set-up the GETFILE boopsi class.
  1528.         4 = Could not get a GETFILE boopsi object.
  1529.         5 = Could not open the font.
  1530.  
  1531.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1532.    » void CloseDownScreen( void );                                     »
  1533.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1534.     This routine will free the resources taken by "SetupScreen()".  You
  1535.     must still call this routine when  "SetupScreen()"  failed to close
  1536.     and free the resources that didn't fail to open!!!
  1537.  
  1538.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1539.    » long Open<Project_Name>Window( void );                            »
  1540.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1541.     There are as much of these routines as there are Project Windows in
  1542.     the file you have generated. These routines will set-up the  gadgets
  1543.     and menus and open the window. These routines can return one of the
  1544.     following errors:
  1545.  
  1546.         0 = No errors.
  1547.         1 = Could not create a gadget context.
  1548.         2 = Error during the gadget creation.
  1549.         3 = Could not create the menus.
  1550.         4 = Could not open the window.
  1551.  
  1552.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1553.    » void Close<Project_Name>Window( void );                           »
  1554.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1555.     There are as much of these routines as there are Project Windows in
  1556.     the file you have generated. These routines will free all resources
  1557.     that the "Open<Project_Name>Window()" routine has taken.  You  must
  1558.     still call this routine if "Open<Project_Name>Window()" has failed!
  1559.  
  1560.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1561.    » void <Project_Name>Render( void );                                »
  1562.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1563.     Each Project Window which has texts and/or BevelBoxes  attached  to
  1564.     it will have a routine which renders these texts and/or  BevelBoxes
  1565.     in the window. This routine must also be called by the user program
  1566.     upon  receiving  a IDCMP_REFRESHWINDOW message at the  window port.
  1567.     When such a message  is received  this  routine   must  be   called
  1568.     between   the   GT_BeginRefresh()  and GT_EndRefresh() calls.  Here
  1569.     is a  small example of what I mean:
  1570.  
  1571.         while( 1 ) {
  1572.             WaitPort( <Project_Name>Wnd->UserPort );
  1573.             while( imsg = GT_GetIMsg( <Project_Name>Wnd->UserPort )) {
  1574.  
  1575.                 Class = imsg->Class;
  1576.                 GT_ReplyIMsg( imsg );
  1577.  
  1578.                 switch ( Class ) {
  1579.  
  1580.                     case    IDCMP_REFRESHWINDOW:
  1581.                         GT_BeginRefresh( Project_Name>Wnd );
  1582.  
  1583.                         <Project_Name>Render(); /* re-draw texts and boxes */
  1584.  
  1585.                         GT_EndRefresh( <Project_Name>Wnd, TRUE );
  1586.                         break;
  1587.  
  1588.                     .....
  1589.                 }
  1590.             }
  1591.         }
  1592.  
  1593.     Note  that the  above  is automatically done by the generated IDCMP
  1594.     event-handler.
  1595.  
  1596.  The main file also has the following globals defined  which are  shared  by
  1597.  all project windows:
  1598.  
  1599.     struct Screen *Scr;          A pointer to the opened/locked screen
  1600.     APTR           VisualInfo;   A pointer to the visual info
  1601.  
  1602.  The following globals are only  generated when the file contains gadgets or
  1603.  menus and when the OpenFont routine is generated and  when the window  must
  1604.  have a zoom gadget:
  1605.  
  1606.     struct Gadget   *<Project_Name>GList;  A pointer to the created gadgets
  1607.     struct Menu     *<Project_Name>Menus;  A pointer to the created menus
  1608.     WORD             <ProjectName>Zoom[4]; The window alternate positions
  1609.     struct TextFont *Font;       A pointer to the opened font
  1610.  
  1611.  Also  generated  are  pointers  for each project window  that is in memory.
  1612.  Also the window title is generated as a global pointer.   These pointer are
  1613.  generated as follows:
  1614.  
  1615.     struct Window   *<Project_Name>Wnd;    A pointer to the window;
  1616.     UBYTE           *<Project_Name>Wdt;    A pointer to the window title;
  1617.  
  1618.  When you have generated source for the Workbench or  Default Public  screen
  1619.  a global is generated which is a pointer to the  name of the  public screen
  1620.  to open on. It is generated as follows:
  1621.  
  1622.     When generated for the Workbench screen:
  1623.  
  1624.     UBYTE          *PubScreenName = "Workbench";
  1625.  
  1626.     When generated for the Default Public screen:
  1627.  
  1628.     UBYTE          *PubScreenName = NULL;
  1629.  
  1630.  This will allow you to change the name of the public screen to open on with
  1631.  out having to hack in the generated source.
  1632.  
  1633.  Four words are generated for each window. These words  contain  the  window
  1634.  it's left and top-edge and the window it's width and  height. These globals
  1635.  are build as follows:
  1636.  
  1637.     UWORD       <Project_Name>Left;     Window left-edge
  1638.     UWORD       <Project_Name>Top;      Window top-edge
  1639.     UWORD       <Project_Name>Width;    Window width
  1640.     UWORD       <Project_Name>Height;   Window height
  1641.  
  1642.  These  words   should  be  changed  by  the  application if  the  user  has
  1643.  re-sized   or re-positioned the window. This way when the window  is closed
  1644.  and  then re-opened  again it will be opened the size and  position  it had
  1645.  the last time  it was  open. Note: When the user has changed the window you
  1646.  _must_ substract the window top-border  size  from the window height before
  1647.  setting in the "<Project_Name>Height" global.   Here  is  a  little example
  1648.  of what I mean:
  1649.  
  1650.         int <Project_Name>ChangeWindow( void )
  1651.         {
  1652.             <Project_Name>Left   = <Project_Name>Wnd->LeftEdge;
  1653.             <Project_Name>Top    = <Project_Name>Wnd->TopEdge;
  1654.             <Project_Name>Width  = <Project_Name>Wnd->Width;
  1655.             <Project_Name>Height = <Project_Name>Wnd->Height - Wnd->BorderTop;
  1656.             return( 1 );
  1657.         }
  1658.  
  1659.  Or when the IDCMP handler isn't generated:
  1660.  
  1661.         while( 1 ) {
  1662.             WaitPort( <Project_Name>Wnd->UserPort );
  1663.             while( imsg = GT_GetIMsg( <Project_Name>Wnd->UserPort )) {
  1664.  
  1665.                 Class = imsg->Class;
  1666.                 GT_ReplyIMsg( imsg );
  1667.  
  1668.                 switch ( Class ) {
  1669.  
  1670.                     case    IDCMP_CHANGEWINDOW:
  1671.                         <Project_Name>Left   = <Project_Name>Wnd->LeftEdge;
  1672.                         <Project_Name>Top    = <Project_Name>Wnd->TopEdge;
  1673.                         <Project_Name>Width  = <Project_Name>Wnd->Width;
  1674.                         <Project_Name>Height = <Project_Name>Wnd->Height - Wnd->BorderTop;
  1675.                         break;
  1676.  
  1677.                     .....
  1678.                 }
  1679.             }
  1680.         }
  1681.  
  1682.  Also the main  file contains  the Gadget  Array's for  each  project window
  1683.  which are define as follows:
  1684.  
  1685.  struct Gadget *<Project_Name>Gadgets[];
  1686.  
  1687.  To access the pointers in this array the program generates DEFINES or EQU'S
  1688.  in the header file which specify  the position  of a certain gadget in  the
  1689.  array. These defines are build as follows:
  1690.  
  1691.  #define GDX_<Gadget_Label>
  1692.  
  1693.  Be sure that the "gadtools.library", "intuition.library","graphics.library"
  1694.  and "utility.library" are all open BEFORE any  of  the  generated  routines
  1695.  are called. When you use a diskfont and the "Gen. OpenFont" switch is on in
  1696.  the Preferences window the "diskfont.library" must also be opened. For  the
  1697.  assembler  source  the valid pointers to  these  libraries must  be  stored
  1698.  globally with  the  names  "_GadToolsBase",  "_IntuitionBase",  "_GfxBase",
  1699.  "_UtilityBase" and "_DiskfontBase"  otherwise  you  get  problems  linking.
  1700.  
  1701.  »»» 11.1) The IDCMP handler
  1702.  
  1703.  In  this  version  of  GadToolsBox  (37.168)  the  C  source generator will
  1704.  generate  an  IDCMP  handler  when  wanted.  This IDCMP  handler  is a  bit
  1705.  experimental and it will be changed. The generated IDCMP handler  will work
  1706.  for most people but some may not like  the way  it has  been  done.
  1707.  
  1708.  As of version 37.157 GadToolsBox generates  an IDCMP  handler  routine  for
  1709.  each IDCMP flag. This handler will process all incoming IDCMP messages from
  1710.  the window and it will also process all gadget and menu events. GadToolsBox
  1711.  generates the following routine(s) for the event-handling:
  1712.  
  1713.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1714.    » int Handle<Project_Name>IDCMP( void );                            »
  1715.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1716.    This is the main IDCMP event-handler.  There will be as many of these
  1717.    routines in the file as there are windows in the file you  generated.
  1718.    You must call this routine when you have received a signal that there
  1719.    is a message pending at the window port. This routine will return the
  1720.    value that the IDCMP specific routine returns.   This return code can
  1721.    be used to quit the program etc.
  1722.  
  1723.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1724.    » int Handle<Project_Name>Verify( void );                           »
  1725.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1726.    All windows in the generated file which has one or more of the VERIFY
  1727.    flags turned on will have this routine.  The handling  of the  VERIFY
  1728.    events differs from the normal event  in  that the routine  is called
  1729.    _BEFORE_ the message is replyed.  This means that  the  routines  for
  1730.    these verify messages should _NOT_ take to long to return.
  1731.  
  1732.  The routine labels called for by the various IDCMP messages are constructed
  1733.  the following way:
  1734.  
  1735.     Flag                            Routine Name
  1736.     --------------------------------------------------------------------
  1737.     IDCMP_MOUSEBUTTONS              <Project_Name>MouseButtons();
  1738.     IDCMP_MOUSEMOVE                 <Project_Name>MouseMove();
  1739.     IDCMP_CLOSEWINDOW               <Project_Name>CloseWindow();
  1740.     IDCMP_MENUVERIFY                <Project_Name>MenuVerify();
  1741.     IDCMP_MENUHELP                  <Project_Name>MenuHelp();
  1742.     IDCMP_REQSET                    <Project_Name>ReqSet();
  1743.     IDCMP_REQCLEAR                  <Project_Name>ReqClear();
  1744.     IDCMP_REQVERIFY                 <Project_Name>ReqVerify();
  1745.     IDCMP_NEWSIZE                   <Project_Name>NewSize();
  1746.     IDCMP_SIZEVERIFY                <Project_Name>SizeVerify();
  1747.     IDCMP_ACTIVEWINDOW              <Project_Name>ActiveWindow();
  1748.     IDCMP_INACTIVEWINDOW            <Project_Name>InActiveWindow();
  1749.     IDCMP_VANILLAKEY                <Project_Name>VanillaKey();
  1750.     IDCMP_RAWKEY                    <Project_Name>RawKey();
  1751.     IDCMP_NEWPREFS                  <Project_Name>NewPrefs();
  1752.     IDCMP_DISKINSERTED              <Project_Name>DiskInserted();
  1753.     IDCMP_DISKREMOVED               <Project_Name>DiskRemoved();
  1754.     IDCMP_INTUITICKS                <Project_Name>IntuiTicks();
  1755.     IDCMP_IDCMPUPDATE               <Project_Name>IDCMPUpdate();
  1756.     IDCMP_CHANGEWINDOW              <Project_Name>ChangeWindow();
  1757.  
  1758.  This means that when you receive an IDCMP_MENUHELP  message at  your window
  1759.  the IDCMP event-handler will automatically  call  <Project_Name>MenuHelp().
  1760.  
  1761.  The Menu and Gadget events are processed  a little  differently.   For each
  1762.  gadget and menu a reference to a routine is  generated.  The gadget routine
  1763.  labels are constructed as follows:
  1764.  
  1765.     <Gadget_Label>Clicked();
  1766.  
  1767.  And the menu routine labels are constructed as:
  1768.  
  1769.     <Project_Name><Menu_Label>();
  1770.  
  1771.  None of the routines  called for by  the  generated  event-handler  will be
  1772.  passed any arguments. You can get the IDCMP  event  specific  data  from  a
  1773.  global copy of the arrived message. Each window in  the generated file will
  1774.  have a copy of the IntuiMessage that arrived at the window port. The source
  1775.  generator will generate a struct IntuiMessage for each window and the label
  1776.  for those IntuiMessage is constructed as follows:
  1777.  
  1778.     struct IntuiMessage <Project_Name>Msg;
  1779.  
  1780.  The contents of the message that arrives at the window port will  be copied
  1781.  into this IntuiMessage before the IDCMP specific routine  is  called.  This
  1782.  way you can get the data you need from the IntuiMessage.
  1783.  
  1784.  When you have the "Templates" switch in the Preferences window switched  on
  1785.  the source generator will also generate a file with  template routines  for
  1786.  each routine the IDCMP event-handlers will call  uppon.   The  name  of the
  1787.  generated sources is constructed as follows:
  1788.  
  1789.    When you generate your source as "Source(.c|.s)" the files generated will
  1790.    be called:
  1791.  
  1792.     Source(.c|.s)       -   The main source file
  1793.     Source(.h|.i)       -   The source header file
  1794.     Source_temp(.c|.s)  -   The template source file
  1795.  
  1796.  The way the gadget and/or menu routines are called  is done by  setting the
  1797.  address of the routine in question in the UserData field of the gadget/menu
  1798.  Then when  the  IDCMP  event-handler  receives  a  gadget/menu  message the
  1799.  routine address is picked out of the gadget/menu structure and then called.
  1800.  This  is  a  whole  lot  smaller and faster than to setup a big switch/case
  1801.  table.
  1802.  
  1803.  To keep things clean the source generator will not  generate  routines  for
  1804.  Menus, Items with subitems, BARLABEL (sub)items,  TEXT gadgets  and  NUMBER
  1805.  gadgets. These menus and gadgets never  generate  an  IDCMP event  so  it's
  1806.  not necessary to generate routines  for  them.
  1807.  
  1808.  The generated menu-event handler supports drag-selection which is  the only
  1809.  official way to handle menu messages.
  1810.  
  1811.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1812.  » 12) The Keyboard & Mouse                                                »
  1813.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1814.  There are a few keys which perform more or less important  functions during
  1815.  the editing.  This  chapter  will  describe  what certan  keys do  in which
  1816.  situations:
  1817.  
  1818.     When you are draging the rubber-band box to  add, move,  copy or  size a
  1819.     gadget or when to add, move, size a bevel-box:
  1820.  
  1821.     Key:                            Action:
  1822.     »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1823.     x                               This key, while pressed,  will block the
  1824.                                     horizontal movements of the  rubber-band
  1825.                                     box. The movements will be released when
  1826.                                     you release this key again.
  1827.  
  1828.     y                               This will do the same as the x  key only
  1829.                                     now  the  vertical  movements  will   be
  1830.                                     blocked.
  1831.  
  1832.     ESC                             When you press this key the action  will
  1833.                                     be cancelled and no change whatsoever is
  1834.                                     made to the gadget.
  1835.  
  1836.     When you are in the edit window  not doing  anything in a  requester  or
  1837.     with gadgets, boxes or texts:
  1838.  
  1839.     Key:                            Action:
  1840.     »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1841.     F10                             This will turn the sizing  gadget of the
  1842.                                     window on when it's off or off when it's
  1843.                                     on. This  is  just  a  shortcut  to  the
  1844.                                     WFLG_SIZEGADGET flag.
  1845.  
  1846.     a                               This will  select  all  gadgets  in  the
  1847.                                     window.
  1848.  
  1849.     Shift+a                         This will de-select all gadgets  in  the
  1850.                                     window.
  1851.  
  1852.     When you are prompted via the screen & window title to do something:
  1853.  
  1854.     Key:                            Action:
  1855.     »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1856.     ESC                             This will cancel the operation for which
  1857.                                     you are promted to do something.
  1858.  
  1859.  You can double-click a gadget to put up it's editor(s).
  1860.  
  1861.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1862.  » 13) The GetFile Boopsi Image                                            »
  1863.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1864.  When you use the GetFile gadget and you generate the  source  you  __MUST__
  1865.  link with the supplied object code "boopsi.o"!  This contains the code that
  1866.  will set-up a private  sub-class  which  will  handle  the  drawing  of the
  1867.  GetFile  Image.  The  source  of "boopsi.o"   has been  included  with  the
  1868.  distribution so you  can  see  how  it  has  been  done.   The code of  the
  1869.  boopsi image is re-entrant so it can be used in  residentable  programs and
  1870.  libraries  etc.   Please  note  that  the  Boopsi  image  is  _NOT_  public
  1871.  domain.  It is freely  distributable  and  remains  ©  Copyright  1992 Jaba
  1872.  Development.    You  may  however distribute it with your program no matter
  1873.  whether your  program is public domain, freeware, shareware or commercial.
  1874.  
  1875.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1876.  » 14) Adapt Font                                                          »
  1877.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1878.  When the "Adapt. Font" option in the Preferences window is switched  on the
  1879.  source  generators will  create  source  that  will automatically adapt the
  1880.  gadget, bevel-box and window sizes and positions to the  active  font.  The
  1881.  resulting  source  also checks  to see wether or not the window will fit on
  1882.  the screen.    If  it  doesn't  fit  anymore the topaz 8 font will be used.
  1883.  GadToolsBox  forces  you  to  use  the  topaz  8 font  when creating a user
  1884.  interface with the "Adapt. Font" option on because  when  you  would have a
  1885.  larger font and you would (for example)  create  a  SCROLLER  of  10 pixels
  1886.  high  and  at  run  time  a  smaller  font  is  active  the  routine   that
  1887.  re-calculates the gadget  could make the SCROLLER to small.
  1888.  
  1889.  In the generated source a routine called "ComputeFont()" is generated. This
  1890.  routine calculates the font  size  and it will  check if the  window  still
  1891.  fit's on the screen using the font. If the window does not fit anymore this
  1892.  routine will automatically switch to the topaz 8 font.      This routine is
  1893.  always  static  and  you  should  never  need  to  call  this yourself. Two
  1894.  kinds  of  adaptable  source  can  be generated.   The  first kind uses the
  1895.  font of the screen on  which the  window  opens  and  the second,  when the
  1896.  "Use SysFont" switch in the preferences window is  on, will use  the system
  1897.  default font (GfxBase->DefaultFont).  Also two routines called "ComputeX()"
  1898.  and "ComputeY()"  are  generated  which  re-calculate  the  horizontal  (X)
  1899.  and vertical (Y) values for the gadgets, bevel-boxes, windows and texts.
  1900.  
  1901.  NOTE: You should take special care when you place  fixed-size  gadgets like
  1902.  the CheckBox, GetFile and MX gadgets. Because they  have a  fixed  size the
  1903.  gadgets are not "size-adapted" with different fonts.
  1904.  
  1905.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1906.  » 15) Keyboard Shortcuts                                                  »
  1907.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1908.  GadToolsBox always offered keyboard shortcuts  for most  of  the  requester
  1909.  gadgets. Now the working of those shortcuts has changed.  To  operate  them
  1910.  correctly you must know the following things:
  1911.  
  1912.      Button (Action) Gadgets -: Pressing  the  underlined  key  will do  the
  1913.                                 same thing as clicking on the gadget.
  1914.  
  1915.      Cycle Gadgets           -: When you press the underlined key the gadget
  1916.                                 will be cycle one  choise  forward.   If you
  1917.                                 press the  underlined  key  together  with a
  1918.                                 SHIFT key the gadget will  cycle  backward.
  1919.  
  1920.      MX (Radio) Gadgets      -: Pressing the underlined key will  select the
  1921.                                 choise.
  1922.  
  1923.      String/Integer Gadgets  -: Pressing the underlined  key  will  activate
  1924.                                 the gadget.
  1925.  
  1926.      CheckBox Gadgets        -: Pressing the underlined key  will toggle the
  1927.                                 checked mode  of  the  gadget.  It  used  to
  1928.                                 toggle the mode when a key was repeating but
  1929.                                 this doesn't work that way anymore.
  1930.  
  1931.      Slider Gadgets          -: Pressign the underlined  key will  slide  up
  1932.                                 one digit and pressing  the  underlined  key
  1933.                                 with SHIFT will slide down one digit.
  1934.  
  1935.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1936.  » 16) Special note about the generated Oberon-Source                      »
  1937.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1938.  The  generated  Oberon-Source is much like the C-Source because the Oberon-
  1939.  Sourcode-Generator   was  derived  from  the  C-Sourcecode-Generator.   The
  1940.  functions  (procedures)  and variables are (nearly) named the same and have
  1941.  the same function.  An example of a sourcecode (FAdaptPAL.mod) is provided.
  1942.  There  is  a  little  difference if you use a GetFile gadget.  In this case
  1943.  the generated source imports from the module "GetFile".  After you compiled
  1944.  the  source  for  this  module  you  must  join  the  generated object file
  1945.  ("GetFile.obj(%|a|s|as)")  with  the  supplied  object  code "boopsi.o" and
  1946.  "bases.o"  or  link  with  these  files.   The Oberon manual describes this
  1947.  procedure in detail.
  1948.  
  1949.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1950.  » 17) Notes                                                               »
  1951.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1952.  At this time there really isn't much to say about the program. It is a tool
  1953.  that  will  ( or at least should ) save  you a lot  of time  in creating  a
  1954.  GadTools user interface for your programs.   I've done some  testing  using
  1955.  "Enforcer" and "MungWall" and I didn't find enforcer hits  and the  program
  1956.  (as far as I know) handles low memory conditions well.  When  a big font is
  1957.  used in the program it can  happen  that  some  requesters won't fit on the
  1958.  screen anymore. Intuition will automatically re-size  the requester so that
  1959.  it will fit  on the screen but some gadgets might not be reachable anymore.
  1960.  When  you want to save the binaries crunched you must copy the V35+ version
  1961.  of the PowerPacker.library  in your libs: directory  and you must set-up T:
  1962.  as a logical device.  To do this you must have something like  this in your
  1963.  startup-sequence:
  1964.  
  1965.         MakeDir RAM:T
  1966.         Assign  T:  RAM:T
  1967.  
  1968.  If someone wants to translate this manual into her/his language  permission
  1969.  is hereby granted. The only thing I ask is that you  send me a copy of  the
  1970.  translation  so that  I can  distribute  it with  the next  release of  the
  1971.  program. When you use a screen bigger  than the  normal display  mode  size
  1972.  and you are on a part of the screen that  doesn't display the  screen  it's
  1973.  top-left corner you will not see the title  messages  GadToolsBox  displays
  1974.  sometimes. So if gadtoolsbox doesn't seem to respond to your input  move to
  1975.  the top-left of the screen or window and read the  message.  Although  this
  1976.  program  itself  does  not  follow  all the rules described  in  the  "User
  1977.  Interface Style Guide" I still strongly suggest you try to follow the rules
  1978.  described in in that guide.  From  v1.3  on  GadToolsBox  has  an  embedded
  1979.  version string in the "User Interface Style Guide" format. When  submitting
  1980.  a bug-report please tell me the version of the GadToolsBox  program you are
  1981.  using.   This can be established by  typing  "Version GadToolsBox"  in  the
  1982.  shell.  Also before you start sending me bug-reports and suggestions please
  1983.  read the "TODO" file first.
  1984.  
  1985.  This is a program for programmers. A lot of things in the manual  might not
  1986.  be clear to other Amiga users. If you plan to program the Amiga  you should
  1987.  atleast buy the  RKM manuals: Libraries,  Devices,  Includes and  AutoDocs,
  1988.  User Interface Style Guide.  Also one or  two  good  books  concerning  the
  1989.  language you wish to learn are essential.  I'm  not saying  this  because I
  1990.  like to see you throwing your money  away but  it's  almost  impossible  to
  1991.  program the Amiga without good documentation. Also do not  use  an  illegal
  1992.  copy of your favorite programming language because  a manual  can  be worth
  1993.  it's weight in gold and using an illegal copy makes you a thief.
  1994.  
  1995.  Never make changes to the source that GadToolsBox generates. You should not
  1996.  do this because each time you re-generate the source you have to make these
  1997.  changes again. You should always  code your  program specific  routines and
  1998.  stuff in one or more seperate modules.   This way you can always add things
  1999.  to your GUI using GadToolsBox  without having the  trouble of  adding other
  2000.  things to the GadToolsBox generated source over and over again.
  2001.  
  2002.  Although GadToolsBox generates  very compact  source  there might  be  some
  2003.  things that you think are strange. For example when you generate source for
  2004.  a window with ten GETFILE gadgets and you  look at the  source  the  Gadget
  2005.  Kind array will show GENERIC_KIND  10 times and  the gadget  TagItem  array
  2006.  will show TAG_DONE 10 times.  This is the way the source works.  Do not try
  2007.  to enhance it to save a couple of bytes in the resulting executable. Please
  2008.  remember that it's machine generated source.   Coding this  stuff  by  hand
  2009.  might save you a few bytes on the executable size of the resulting  program
  2010.  but using GadToolsBox will save you hours and hours of  boring GUI  coding.
  2011.  
  2012.  Some people have asked me how they could determine  the size of  the window
  2013.  they had created. This is really simple.  Move the  mouse pointer  past the
  2014.  right and bottom edge of the window and the coordinates  will tell  you the
  2015.  size the window has.
  2016.  
  2017.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2018.  » 18) Credit                                                              »
  2019.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2020.  I would like to thank the following people for their  many suggestions  and
  2021.  bug reports. Without these people GadToolsBox wouldn't be where it is today
  2022.  
  2023.                      ________    T H A N K S    ________
  2024.  
  2025.   Wolfgang Küting,    Kasper Peeters,     Stefan Becker,      Nico François,
  2026.   Sebastiano Vigna,   Andreas Jung,       Ken Simpson,        Kai Bolay,
  2027.   Ola Olsson,         Richard Waspe,      Carsten Feilhaber,  Garry Glendown
  2028.   Jochen Kreimer,     Georg Hessmann,     Martin Laubach,     Eugene Pang,
  2029.   Klaus Nachtigall,   Andreas R Kleinert, Gael Marziou,       Rene Petersen,
  2030.   Magnus Holmgren,    Greg Woolley,       Marcel Offermans,   Peter Kunst,
  2031.   Reza Elghazi,       Steve Loughran,     Ugo Paternostro,    Franz Schwarz
  2032.  
  2033.  And special thanks to:
  2034.  
  2035.     Matthew Dillon      For his incredible Dice ( you should register.... )
  2036.     Stefan Becker       For sending me my Dice update
  2037.     Fred Fish           For the huge pile of AmigaLibDisks he produces
  2038.     Huub Schuivers      For installing 2MB on my A2630 card
  2039.     Andreas Jung        For his donation
  2040.     Ingo Sabel          For his donation
  2041.     Frederic Hahn       For the bottle of white wine
  2042.     Andreas R Kleinert  For his donation
  2043.     Klaus Nachtigall    For his donation
  2044.     Sebastiano Vigna    For the font adaptivity idea (and the way to do it)
  2045.     U2                  For the _great_  concert  in the  Westfalenhallen in
  2046.                         Dortmund.  It's to bad that someone banged up my car
  2047.                         that day..... If you have a chance you really should
  2048.                         go and see U2 on their ZOO TV Tour.
  2049.     Nico François       For sending me ReqTools 2.0.
  2050.     Kai Bolay           For the solution to the Mutual-Exclude  bug  and for
  2051.                         writing the Oberon source generator.
  2052.  
  2053.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2054.  » 19) __IMPORTANT__                                                       »
  2055.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2056.  Due  to  a  bug in  the  previous  releases  of GadToolsBox (v37.79--) it's
  2057.  possible that you have binary files which contains  a  corrupt  menu strip.
  2058.  This because the program counted sub-items for  items which didn't have any
  2059.  sub-items.  This would cause the binary file routine to write the sub-items
  2060.  that  didn't exist to the file.  To fix  these files  you must load them in
  2061.  this version of GadToolsBox and go  into the  Menu Editor  ("Edit Menus..."
  2062.  under the  "Menus" menu). Now select the first menu and click on  "ItemEd".
  2063.  Now   select  each   non-NM_BARLABEL  item  which  should  _NOT_  have  any
  2064.  sub-items  and press "SHIFT+E". Each time the requester pops-up and you are
  2065.  sure that  you have selected the right item you  should click  on "Yes"  in
  2066.  the  requester.  You must repeat this action for all menus and  then  (when
  2067.  you are finished) save the file again.  I know  that this  could  mean some
  2068.  work with big menus  but I think it's better to do  this than to  re-create
  2069.  the  whole  user-interface. I'm very  sorry for this  bug but it was one of
  2070.  those  famous ones  that only occurred sometimes.  NOTE:  BINARIES  CREATED
  2071.  WITH  V1.0  OF  GADTOOLSBOX  CANNOT  BE  READ/REPAIRED  BY  THIS VERSION OF
  2072.  GADTOOLSBOX.  ONLY THE BINARIES CREATED WITH V1.2++ CAN BE READ/REPAIRED BY
  2073.  THIS VERSION OF GADTOOLSBOX.
  2074.  
  2075.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2076.  
  2077.  Bug reports,  suggestions,  postcards,  flames,  criticism,  contributions,
  2078.  ideas, gifts, opinions about the new U2 cd 'Achtung Baby', how  to  make  a
  2079.  million (the easy way....), inspirations, flowers,  etc., etc., etc.... to:
  2080.  
  2081.  Jan van den Baard                     Fido: 2:285/502.7 (Jan van.den.Baard)
  2082.  Bakkerstraat 176
  2083.  3082 HE, Rotterdam
  2084.  Holland
  2085.  
  2086.     »» "Trust me. I know what I'm doing."          -: Sledge Hammer  ««
  2087.  
  2088.     »» "Life sucks."                               -: Al Bundy       ««
  2089.  
  2090.     »» "Hasta la vista, Baby."                     -: The Terminator ««
  2091.  
  2092.     »» "Make noise, Tell the world to fuck off!"   -: Bono           ««
  2093.  
  2094.     »» "The most mercifull thing in the  world, I"
  2095.        "think, is the inability of the human mind"
  2096.        "to correlate all it's contents.          " -: Propaganda     ««
  2097.  
  2098.     »» "Normal is boring."                         -: Fido Dido      ««
  2099.