home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / gtoolb13.lha / GadToolsBox.DOC < prev    next >
Text File  |  1992-03-16  |  87KB  |  1,626 lines

  1.  
  2.                       GadToolsBox v1.3 (The Sequel)
  3.  
  4.                  (c) Copyright 1991,92 Jaba Development
  5.                       Written using DICE C v2.06 by
  6.                             Jan van den Baard
  7.  
  8.                                User Manual
  9.                   (c) Copyright 1991,92 Jaba Development
  10.  
  11.              This program uses  both the powerpacker.library
  12.                   and reqtools.library (OS 2.0 version)
  13.            These two libraries are (c) Copyright Nico François
  14.                    and can be  found on Fish Disk 561.
  15.                                     __  __
  16.                                    / / /  \
  17.                             __    / / / /\ \
  18.                        _____\ \__/ /_/ /_/ /_____
  19.                       (__________________________)
  20.  
  21.   Disclaimer................ 1
  22.   Copyright/Distribution.... 2
  23.   Electronic Distribution... 3
  24.   Introduction.............. 4
  25.   Requirements.............. 5
  26.   Starting GadToolsBox...... 6
  27.   Making a Gadget........... 7
  28.   Program Menus............. 8
  29.     The Project Menu........ 8.1
  30.     The Gadgets Menu........ 8.2
  31.     The Window Menu......... 8.3
  32.     The Screen Menu......... 8.4
  33.     The Menus Menu.......... 8.5
  34.   Gadget Kind Requester..... 9
  35.     The CheckBox Gadget..... 9.1
  36.     The Integer Gadget...... 9.2
  37.     The ListView Gadget..... 9.3
  38.     The Mx Gadget........... 9.4
  39.     The Cycle Gadget........ 9.5
  40.     The Palette Gadget...... 9.6
  41.     The Scroller Gadget..... 9.7
  42.     The Slider Gadget....... 9.8
  43.     The String Gadget....... 9.9
  44.     The Number Gadget....... 9.10
  45.     The Text Gadget......... 9.11
  46.     The Button Gadget....... 9.12
  47.   Menu Requesters........... 10
  48.     The Menu Requester...... 10.1
  49.     The (Sub)Item Requester. 10.2
  50.   The Generated Source...... 11
  51.   The GetFile Boopsi image.. 12
  52.   Adapt Font................ 13
  53.   Notes..................... 14
  54.   Credit.................... 15
  55.   __IMPORTANT__............. 16
  56.  
  57.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  58.  » 1) Disclaimer                                                           »
  59.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  60.  The author cannot be held liable for the  suitability or  accuracy  of this
  61.  manual  and/or  the  program(s)  it  describes.   Any  damage  directly  or
  62.  indirectly caused by the use or misuse of  this manual  and/or the  program
  63.  it describes is the sole responsibility of the user her/him self.
  64.  
  65.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  66.  » 2) Copyright/Distribution                                               »
  67.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  68.  GadToolsBox, (c) Copyright 1991,92 Jaba  Development.  All rights reserved.
  69.  This  program  is  FREEWARE  so  no financial  donations are required ( but
  70.  welcome ).  This   program   may  be  freely  distributed  as  long  as all
  71.  source  code,   documentation  and  executable(s)  remain unchanged and are
  72.  included  with the distribution.  Also no profit is to be made  by  selling
  73.  this  program. You may not charge more than  Fred Fish  does  for a  single
  74.  library disk.    When  you  use  this  program  on a  regular base  I would
  75.  appreciate  a postcard of your  home  town.  If  this  program  is used  to
  76.  create a  GadTools user interface  for  commercial  or  shareware  programs
  77.  I  would  appreciate  a  little  note   about  this  in  the  program  it's
  78.  documentation.  Commercial  distribution  is  NOT allowed  without  written
  79.  permission from the author.
  80.  
  81.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  82.  » 3) Electronic Distribution                                              »
  83.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  84.  It is allowed for non-commercial BBSs to distribute  an archive  with  only
  85.  the following files in it to save your users some  money when they  want to
  86.  download this program. NOTE: All files listed  below  MUST  be  distributed
  87.  together. None of the files listed below may be  distributed  on it's  own!
  88.  They may ofcourse be archived with LHarc or any other archiver.
  89.  
  90.     GadToolsBox             - Main Program
  91.     GadToolsBox.info        - Main Program icon.
  92.     GadToolsBox.DOC         - Main Program Manual (This file)
  93.     nofrag.library          - Shared library ( (c)1991,92 Jaba Development )
  94.     reqtools.library        -    "      "    ( (c) Nico François )
  95.     powerpacker.library     -    "      "    ( (c) Nico François )
  96.  
  97.  You may NOT upload this or any  other form of  this  software on  BBSs that
  98.  claim copyrights on the uploaded material!
  99.  
  100.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  101.  » 4) Introduction                                                         »
  102.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  103.  GadToolsBox  is a program that will save you a gigantic amount of time  and
  104.  anguish  in  creating  a  GadTools  user interface  for your programs. This
  105.  program is  a followup of  my other  source  generator  "PowerSource". It's
  106.  main purpose is to let you create  your user  interface without  having  to
  107.  type  in  the  necessary  code  and  structures  yourself.  This version of
  108.  GadToolsBox has the following features:
  109.  
  110.     -:  A complete intuition/gadtools user interface
  111.     -:  Editing on many different screen resolutions
  112.     -:  Editing/Generating source on/for big autoscrolling screens
  113.     -:  All GadTools gadget kinds supported + a custom gadget
  114.     -:  GadTools menus supported
  115.     -:  Full control over the window flags and most tags
  116.     -:  Editing IntuiTexts for the window
  117.     -:  Editing, loading and saving of colors (ILBM)
  118.     -:  Fully mouse and keyboard controled
  119.     -:  Generation of complete routines in either C or Assembly
  120.     -:  Generation of "RAW" Assembly source (No headers necessary)
  121.     -:  Generation of "static" data
  122.     -:  Binary saving for later loading and editing
  123.     -:  The possibilty to save powerpacker __CRUNCHED!__ binaries.
  124.     -:  The ability to print a status report.
  125.     -:  Multiple windows
  126.     -:  User selectable font
  127.     -:  The editing of "DRIPENS" (what gives OS 2.0 that special look)
  128.     -:  The possibility to change screen resolution while editing
  129.     -:  The possibility to edit "BevelBoxes"
  130.     -:  Editing in a user-definable grid
  131.     -:  The editing of minimal window border offsets
  132.     -:  Easy gadget alignment
  133.     -:  The generation of font-adaptable code (thanks Sebastiano..)
  134.     -:  etc. etc. etc........
  135.  
  136.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  137.  » 5) Requirements                                                         »
  138.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  139.  GadToolsBox was programmed with DICE C v2.06 (Thanks Matt) on an Amiga 2500
  140.  Kickstart  V37.175  Workbench  V37.67  with  7 MB  memory  +  ECS  +  A2630
  141.  accelerator card + 52 MB harddisk. It should however run happely on  a 1 MB
  142.  machine without a harddisk and special chips. It MUST have Kickstart  V37++
  143.  and Workbench  V37++.    A  C  Compiler  ( try registering DICE )    and/or
  144.  an  assembler with the  2.0  headers  can  also  come  in  handy  when  you
  145.  try to compile/assemble  the  generated  source.   Note  however  that  the
  146.  program can generate assembler source which does not require the headers to
  147.  assemble. The  nofrag.library must be copied in the libs: directory of your
  148.  boot  disk.   GadToolsBox  must   also  have  the  OS 2.0  version  of  the
  149.  ReqTools.library in the libs: directory of your  BOOT disk.  When  you also
  150.  have the V35++ version of the  PowerPacker.library in  the libs:  directory
  151.  GadToolsBox can save/load crunched binaries.
  152.  
  153.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  154.  » 6) Starting GadToolsBox                                                 »
  155.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  156.  You can start GadToolsBox from either the Shell or the Workbench.  To start
  157.  GadToolsBox from the Shell you must type the following:
  158.  
  159.     GadToolsBox [filename]
  160.  
  161.  Where filename is an optional name of a previously  created file  which you
  162.  want to edit. To  start  GadToolsBox  from  the  workbench  you must either
  163.  double-click the program it's icon or one of the ".G" icons.  When you have
  164.  started PowerSource without any arguments a window appears in the middle of
  165.  the screen. With this window you can select  the Screen  type on which  you
  166.  want to edit  the  GadTools  user  interface.  In this window  you will see
  167.  the following gadgets:
  168.  
  169.     Available modes     » In this gadget you see a list of available display
  170.                           modes.  Just click on the  desired  display  mode.
  171.                           NOTE: The program currently  only  checks  for the
  172.                                 availability of  the  LORES,  HIRES,  SUPER-
  173.                                 HIRES,  PRODUCTIVITY  and  A2024  modes  for
  174.                                 the PAL, NTSC, VGA and A2024 monitors.  Also
  175.                                 the interlace modes are supported except for
  176.                                 the A2024 modes because they do not  support
  177.                                 interlace. THE VGA AND A2024 MODES  MAY ONLY
  178.                                 BE USED WITH VGA/MULTISYNC OR A2024 MONITORS
  179.                                 USAGE OF THESE DISPLAY MODES  ON A  STANDARD
  180.                                 RGB MONITOR MAY RESULT IN  SERIOUS DAMAGE TO
  181.                                 THE MONITOR.
  182.  
  183.     Min. Width          » This gadgets shows the  minimum  width the  screen
  184.                           can have.
  185.  
  186.     Min. Height         » This gadgets shows the  minimum height the  screen
  187.                           can have.
  188.  
  189.     Max. Width          » This gadgets shows the  maximum  width the  screen
  190.                           can have.
  191.  
  192.     Max. Height         » This gadgets shows the  maximum height the  screen
  193.                           can have.
  194.  
  195.     Width               » In  this  gadget  you  can  type  the width of the
  196.                           screen you want to have.   NOTE:  This  cannot  be
  197.                           smaller/larger than the values described above.
  198.  
  199.     Height              » In  this  gadget  you  can type  the height of the
  200.                           screen you want to have.   NOTE:  This  cannot  be
  201.                           smaller/larger than the values described above.
  202.  
  203.     Depth               » This slider gadget  lets  you  adjust  the  screen
  204.                           depth. The screen depth  determines the  amount of
  205.                           available colors.
  206.  
  207.                           Depth = 1, Colors = 2
  208.                           Depth = 2, Colors = 4
  209.                           Depth = 3, Colors = 8
  210.                           Depth = 4, Colors = 16
  211.                           Depth = 5, Colors = 32
  212.  
  213.     OK                  » When this gadget is clicked the  program will  try
  214.                           to open the desired screen and start  the editing.
  215.  
  216.     CANCEL              » Clicking on this gadget will  quit when you got in
  217.                           this window  upon program  startup  or cancel  the
  218.                           operation when you got in this window by selecting
  219.                           "New" from the "Project" menu.
  220.  
  221.  If everything went OK you now see the selected screen with a little  window
  222.  on it.
  223.  
  224.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  225.  » 7) Making a Gadget                                                      »
  226.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  227.  To make a gadget is quite simple. Move the mouse pointer to the place where
  228.  you want the top-left of the gadget to be. Now click the left  mouse-button
  229.  once and move the mouse. You'll see a  box  which will  size  according  to
  230.  your mouse moves.  When the box  is  the size  you want it  click the  left
  231.  mouse button again. Now a window pops up  which  allows  you  to  edit  the
  232.  gadget kind specifics ( refer to the "Gadget Kind Requester" for more info)
  233.  After you have edited the gadget specifics click  on  OK and the  gadget is
  234.  on the window ready to be played around with.  NOTE: When you are  making a
  235.  CheckBox, Mx or GetFile gadget the box appears after the first mouse-click.
  236.  This is because these kinds of gadgets have a fixed size.
  237.  
  238.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  239.  » 8) Program Menus                                                        »
  240.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  241.  GadToolsBox  uses  a set  of menus  to let you  control  the  program.  The
  242.  following describes each menu and it's items.
  243.  
  244.  »»» 8.1) The Project Menu
  245.  
  246.  About............. This opens a little window  with some  information about
  247.                     the copyright, author and memory  status.  Just click on
  248.                     the Continue gadget to get rid of it.
  249.  
  250.  New............... Reset's the program to the default deleting every change
  251.                     made sofar. When there are changes  made  that  are  not
  252.                     saved yet the program asks for confirmation.  NOTE:  All
  253.                     windows currently in memory will be deleted by this!!!
  254.  
  255.  Load.............. This opens the  FileRequester  in  which  you can select
  256.                     the file you want to load.  The  program can  only  load
  257.                     binaries created by GadToolsBox.  Any other kind of file
  258.                     will simply be refused. NOTE: When a requester  pop's up
  259.                     telling you  that the  file uses a  monitor  that  isn't
  260.                     available it means  that  either you have not added  the
  261.                     monitor by clicking on the specific monitor icon in  the
  262.                     MonitorStore drawer  of your  Extras disk  or you  don't
  263.                     have the ECS chips installed.  If this is  the  case the
  264.                     program just opens a screen in the standard resolution.
  265.  
  266.  Save.............. This will  save  the  GadTools interface to  the default
  267.                     file name. NOTE:  The default name is "unnamed.g".  When
  268.                     the crunch  gadget  is  enabled  (Preferences)  and  the
  269.                     powerpacker.library  was  opened  successfully a  window
  270.                     opens indicating the crunch progress. In this window you
  271.                     see the following things:
  272.  
  273.                         Crunched       » This indicates  the  percentage  of
  274.                                          the file crunched sofar in a  human
  275.                                          readable form and a graphical form.
  276.  
  277.                         Saved          » This indicates  the  percentage  of
  278.                                          the  file  saved by  the  crunching
  279.                                          sofar in a human readable form  and
  280.                                          a graphical form.
  281.  
  282.                         Stop           » Clicking on this gadget  will  stop
  283.                                          the crunching. NOTE: The file  will
  284.                                          still be  saved  only  it  won't be
  285.                                          crunched.
  286.  
  287.  Save As........... This  opens  the  FileRequester in  which you can select
  288.                     the  path  and  file  name  under  which   the  GadTools
  289.                     interface is saved.
  290.  
  291.  Generate Source...
  292.     C.............. This opens the  FileRequester in  which  you  can select
  293.                     the path and  file  name  under  which  the  generated C
  294.                     source will be saved.
  295.  
  296.     Assembler...... The same as C only the generated source will be in 68000
  297.                     Assembler.
  298.  
  299.  Preferences....... This opens the preferences window.  In this  window  you
  300.                     will see the following gadgets:
  301.  
  302.                     Static Data        » When  this is switched  on  the  C
  303.                                          source  will only  contain  static
  304.                                          data and  routines.  The assembler
  305.                                          will not export (XDEF) any globals
  306.  
  307.                     RAW Asm source     » When  this  is  switched   on  the
  308.                                          Assembler source generated can  be
  309.                                          assembled   without  the   OS  2.0
  310.                                          headers.
  311.  
  312.                     Coordinates        » If you want  the  mouse coordinates
  313.                                          to  be   displayed  constantly  you
  314.                                          should switch this gadget on. NOTE:
  315.                                          The   displayed   coordinates   are
  316.                                          relative  to  the  top-left  corner
  317.                                          of the window.
  318.  
  319.                     Write Icon         » When  this  is  switched  on  every
  320.                                          binary written by  GadToolsBox  has
  321.                                          an icon to accompany it.
  322.  
  323.                     Gen. OpenFont      » When this  is  switched  on and the
  324.                                          used font is a diskfont the  source
  325.                                          generator  automatically  generates
  326.                                          code that  opens/closes  the  font.
  327.                                          NOTE:   This has no  efect  if  the
  328.                                          "Adapt. Font" option (see below) is
  329.                                          turned on.
  330.  
  331.                     GZZ Adjust         » When  this  is   switched  on   the
  332.                                          program automatically  will  change
  333.                                          the  gadget   positions   when  the
  334.                                          WFLG_GIMMEZEROZERO  flag is  set or
  335.                                          cleared.   When  it's  on  and  you
  336.                                          switch  the WFLG_GIMMEZEROZERO flag
  337.                                          on  or  off  the  gadget  and  text
  338.                                          positions  will  visibly  stay  the
  339.                                          same.
  340.  
  341.                     Close WBench       » This allows you to let the  program
  342.                                          try to close the  workbench  screen
  343.                                          uppon startup. NOTE:  When  this is
  344.                                          selected and  you  press  "Use" the
  345.                                          program will also try to close  the
  346.                                          workbench screen.
  347.  
  348.                     Crunch             » When this gadget is checked and the
  349.                                          powerpacker.library V35+  has  been
  350.                                          opened   successfully   the   saved
  351.                                          binaries will be crunched.
  352.  
  353.                     Speedup Buffer     » This cycle gadget allows you to set
  354.                                          the preferred speedup  buffer  that
  355.                                          should be used by  the  powerpacker
  356.                                          library to crunch the binary files.
  357.  
  358.                     Crunch Depth       » With this cycle gadget you  can set
  359.                                          the crunch depth to use.
  360.  
  361.                     Adapt. Font        » When  this gadget  is  checked  the
  362.                                          source   generator   will  generate
  363.                                          source  that  automatically  adapts
  364.                                          the  gadget,  bevel-box  and window
  365.                                          sizes and positions  to the  active
  366.                                          font. NOTE: When this  is  switched
  367.                                          on the text's added to  the  window
  368.                                          will  __NOT__  be  generated.  Also
  369.                                          when   this  is  selected  you  are
  370.                                          forced to use the  topaz 8  font to
  371.                                          create your user interface.
  372.  
  373.                     Use Amiga.Lib      » When  this   is  switched  on   the
  374.                                          assembler source generator  creates
  375.                                          XDEFs to the  _LVO  table  from the
  376.                                          amiga.lib   instead  of   using the
  377.                                          constants normally generated.
  378.  
  379.                     Save               » Opens the  FileRequester  in  which
  380.                                          you can select the  path  and  name
  381.                                          under  which  the  preferences  are
  382.                                          saved.
  383.  
  384.                     Load               » Opens  the  FileRequester  in which
  385.                                          you   can   select   a  GadToolsBox
  386.                                          preferences file to load.
  387.  
  388.                     Use                » This tells GadToolsBox to  use  the
  389.                                          preferences you have set.
  390.  
  391.                     CANCEL             » This cancels the operation.
  392.  
  393.  Close Workbench... This will try to close the workbench screen so  that you
  394.                     can use the memory it took up. When this item reads Open
  395.                     Workbench it will try to open the Workbench screen again
  396.  
  397.  Quit.............. This will quit the program after asking for confirmation
  398.  
  399.  »»» 8.2) The Gadgets Menu
  400.  
  401.  In this menu some items will ask you to click a gadget to perform a  certain
  402.  action.  When  you  accidentally  activated one of those items you can abort
  403.  the  routine by pressing the  ESC  (Escape)  key  when  the  question "CLICK
  404.  GADGET.."  pops up  in the  screen  title  bar or  when you are dragging the
  405.  rubber-band box.
  406.  
  407.  Kind.............. This item has the  program  supported  gadget  kinds  as
  408.                     sub-items attached to it. Selecting  any of  these  sub-
  409.                     items will change the editing  for  that  gadget   kind.
  410.                     The first kind "GETFILE" is  a  custom  gadget which  is
  411.                     the same as the gadget which you find in the  "Fountain"
  412.                     program left of the filename gadgets. This gadget should
  413.                     be used to let the user open the FileRequester to select
  414.                     the file/path instead of typing it in the string gadget.
  415.  
  416.  Move a gadget..... This asks you to click on the gadget you  want to  move.
  417.                     When you click on a gadget a box  is drawed  around  it.
  418.                     Just move the box to where you want it and click on  the
  419.                     left mouse-button to confirm the place.
  420.  
  421.  Size a gadget..... This asks you to click on the gadget that  you  want  to
  422.                     re-size. When you click on a  gadget  a  box  is  drawed
  423.                     around the gadget. Just move  the mouse  to  adjust  the
  424.                     size of the box and click  on the  left  mouse-button to
  425.                     confirm  the  size.  NOTE:  The  minimum  possible  size
  426.                     depends on the gadget kind and the font size.
  427.  
  428.  Copy a gadget..... This ask you to click on the  gadget  you want  to copy.
  429.                     Clicking on the gadget you want to copy will draw  a box
  430.                     around the gadget which  you must  drag  to it's  place.
  431.                     Just click on  the  left  mouse-button to  confirm  it's
  432.                     place.
  433.  
  434.  Delete a gadget... This asks you to click on the gadget you want to delete.
  435.                     When you click on  the  gadget  to  delete  it  will  be
  436.                     removed and deallocated.
  437.  
  438.  Edit a gadget..... This  asks  you to click on the gadget you want to edit.
  439.                     Then the window for the specific  kind  of  gadget  will
  440.                     open.  Please  refer  to  the  "Gadget  Kind  Requester"
  441.                     chapter for more information about these windows.
  442.  
  443.  Join.............. This first asks you to click on a  ListView  gadget  you
  444.                     want to join. Then the program asks you to click on  the
  445.                     string gadget you want to join with the ListView gadget.
  446.                     Then the routine joins the  two gadgets  together.  This
  447.                     joining means that the String gadget will be filled with
  448.                     the  entry  name of a  clicked  entry  in  the  ListView
  449.                     gadget. NOTE:  Due to a bug (or something)  the GadTools
  450.                     library requires the String Gadget  to  be  of  the same
  451.                     Width as the ListView gadget. This is done automatically
  452.                     by  the  program  and  it  cannot  be  stopped.     Also
  453.                     the  GadTools  library  will  force  the  string  gadget
  454.                     directly  below  the  ListView gadget.  This also cannot
  455.                     be stopped.
  456.  
  457.  Split............. This will ask you to click on a Joined gadget.  Now  you
  458.                     can click either  the  joined  ListView  gadget  or  the
  459.                     joined String Gadget and they will be split. NOTE: After
  460.                     the Gadgets has been split the string Gadget  returns to
  461.                     the place where it has been originally drawn.
  462.  
  463.  Align Left........ This asks you to click on the gadget that has  the  left
  464.                     edge you want other gadgets to have. When you click on a
  465.                     gadget the program asks you to select the  gadgets  that
  466.                     must get the same left-edge of the  gadget  you  clicked
  467.                     first. Each time you click on a gadget the  gadget  will
  468.                     get a box drawn around it. When you click it  again  the
  469.                     box will disappear again. When the box is there it means
  470.                     that the gadget will be aligned.   When you are done you
  471.                     can  either press  ESC  to cancel or F1 to confirm. When
  472.                     F1 is pressed  all  gadget you have  selected  to  align
  473.                     will have the same left-edge.
  474.  
  475.  Align Right....... The same as "Align Left"  only the gadget  right-edge is
  476.                     used to align the gadgets.
  477.  
  478.  Align Top......... The same as "Align Left"  only  the  gadget  top-edge is
  479.                     used to align the gadgets.
  480.  
  481.  Align Bottom...... The same as "Align  Left" only the gadget bottom-edge is
  482.                     used to align  the gadgets. NOTE: This may not work  for
  483.                     ListView and Palette gadgets because GadTools sizes this
  484.                     gadget in the area given by you when first drawed.  This
  485.                     means that the gadget is almost always smaller than  you
  486.                     have drawn it.
  487.  
  488.  Close Size........ This does the same  as the  "Align"  routines  mensioned
  489.                     above  only  this  time  it  will  clone the size of the
  490.                     gadget. The MX, CHECKBOX and GETFILE  gadgets  will  not
  491.                     be affected by this. Only gadgets of the same  kind   as
  492.                     the first gadget clicked will  be  re-sized.  All  other
  493.                     gadgets you clicked will not be re-sized.
  494.  
  495.  Set X Spacing..... This will pop up a requester in which you  can  set  the
  496.                     size in pixels of the horizontal spacing of the gadgets.
  497.                     When the number has been entered you must  click  on the
  498.                     gadgets which must have the  spacing  requested.    Just
  499.                     press "F1" to confirm and "ESC" to cancel.
  500.  
  501.  Set Y Spacing..... The same  as  with  "Set X Spacing"  only  the  vertical
  502.                     positions are affected.
  503.  
  504.  »»» 8.3) The Window Menu
  505.  
  506.  New Window........ This will add a new window to  the  windows  already  in
  507.                     memory. NOTE:  Only the  currently  selected  window  is
  508.                     visible on the screen.
  509.  
  510.  Delete Window..... This will pop-up a window in which you must  select  the
  511.                     window you want to delete. The following gadgets  are in
  512.                     the window.
  513.  
  514.                     ListView gadget   » This  gadget   lists   the   windows
  515.                                         currently in memory. Just select the
  516.                                         name  of  the  window  you  want  to
  517.                                         delete.
  518.  
  519.                     OK                » Clicking on this gadget will  delete
  520.                                         the selected  window  including  all
  521.                                         gadgets, menus, texts and boxes that
  522.                                         where attached to it.
  523.  
  524.                     CANCEL            » This will cancel the operation.
  525.  
  526.  Other Window...... This brings up the  window-selector again  in which  you
  527.                     can select the window you want to edit.
  528.  
  529.  Edit Data......... This brings up a small requester  in which  you can  set
  530.                     some data for the current window. In the  requester  the
  531.                     follwing gadgets can be found:
  532.  
  533.                     Project name     » In  this  gadget  you  can  give  the
  534.                                        window a name. You  should  name  all
  535.                                        windows so  it's  easy to  keep  them
  536.                                        appart.  NOTE: This name  is used  by
  537.                                        the source generator.
  538.  
  539.                     Start ID from    » In  this  gadget  you  can  type  the
  540.                                        GadgetID  from  which  you  want  the
  541.                                        program to start  numbering the  ID's
  542.                                        of the gadgets. This can come in very
  543.                                        handy  if  you plan  to make  windows
  544.                                        that share a global IDCMP port.
  545.  
  546.                     Min X Size       » In these gadgets  you  can  type  the
  547.                     Min Y Size       » minimum/maximum dimensions  that  the
  548.                     Max X Size       » can  be  sized  to  with  the  sizing
  549.                     Max Y Size       » gadget.   The  program  will  try  to
  550.                                        prevent  you  from   entering   wrong
  551.                                        dimensions.  NOTE: The tags for these
  552.                                        positions will only be generated when
  553.                                        the window has a sizing gadget.
  554.  
  555.                     OK               » This will set the desired changes.
  556.  
  557.                     CANCEL           » This will cancel the operation.
  558.  
  559.  Print Info........ This will open the Project Selection window  again.  Now
  560.                     you can select the project of  which you  want to  print
  561.                     the  information  or  click  on  OK  right away to get a
  562.                     printout of all projects.  In the  printout  the  gadget
  563.                     id's, gadget array constants, number  of gadgets  kinds,
  564.                     number of menus,  number  of  texts  and the  number  of
  565.                     BevelBoxes are listed.
  566.  
  567.  Edit Flags........ This opens a requester in  which  all window  flags  are
  568.                     listed using CheckBox gadgets. Just (de)select the flags
  569.                     you want. Clicking on OK will set these flags and CANCEL
  570.                     cancels  the  operation.   NOTE:  Only  the  SIZEGADGET,
  571.                     DRAGBAR,     DEPTHGADGET,    CLOSEGADGET,    SIZEBRIGHT,
  572.                     SIZEBBOTTOM,  GIMMEZEROZERO,   BORDERLESS  and  BACKDROP
  573.                     flags are (un)set on  the edit  window. The rest  of the
  574.                     flags will  only turn up in  the  generated source code.
  575.                     NOTE: When you set the WFLG_BACKDROP flag in the  window
  576.                           The program will automatically re-size the  window
  577.                           to the same size as the current screen.    You can
  578.                           switch the size gadget on or off by  pressing  the
  579.                           F10 key while editing.
  580.  
  581.  Edit IDCMP........ This opens a requester in which all window  IDCMP  flags
  582.                     are listed using CheckBox gadgets.  Just  (de)select the
  583.                     flags you want. Clicking on OK will set these flags  and
  584.                     CANCEL  cancels  the  operation.   NOTE:   The  GadTools
  585.                     specific  IDCMP  flags  will  always be set according to
  586.                     the kind of gadgets on the window.
  587.  
  588.  Edit Tags......... This will open a window in  which  some  special  window
  589.                     tags can  be  edited.  In  the  window  you'll  see  the
  590.                     following  gadgets:
  591.  
  592.                     InnerWidth   » When   this   gadget   is  selected   the
  593.                                    generated    source    will    use    the
  594.                                    WA_InnerWidth Tag instead of the WA_Width
  595.                                    Tag. The value next to the gadget  is the
  596.                                    current window InnerWidth.
  597.  
  598.                     InnerHeight  » When   this   gadget   is  selected   the
  599.                                    generated    source    will    use    the
  600.                                    WA_InnerHeight   Tag   instead   of   the
  601.                                    WA_Height Tag.  The  value  next  to  the
  602.                                    gadget is the current window InnerHeight.
  603.  
  604.                     MouseQueue   » When this gadget is  selected the  source
  605.                                    will contain the  WA_MouseQueue  tag.  In
  606.                                    the  integer  gadget  next to this gadget
  607.                                    you can type the  amount of MouseQueue's.
  608.                                    NOTE: This value cannot be smaller than 1
  609.  
  610.                     RptQueue     » When this gadget is  selected the  source
  611.                                    will contain the  WA_RptQueue tag. In the
  612.                                    integer gadget  next  to  this gadget you
  613.                                    can type the amount of RptQueue's.  NOTE:
  614.                                    This value cannot be smaller than 1.
  615.  
  616.                     AutoAdjust   » Selecting this will cause  the  generated
  617.                                    source to contain the  WA_AutoAdjust tag.
  618.  
  619.                     Zoom         » When this gadget is selected the  WA_Zoom
  620.                                    Tag is generated in the source  code.  In
  621.                                    the Left, Top, Width, Height gadgets  you
  622.                                    can  type  the   Window  it's   alternate
  623.                                    positions.   NOTE:  This  gadget  is only
  624.                                    enabled when the window sizing  gadget is
  625.                                    turned off. This can be done in the "Edit
  626.                                    Flags" requester.
  627.  
  628.                     Default Zoom » This will tell  GadToolsBox  to  generate
  629.                                    source   that  will  calculate  the  zoom
  630.                                    positions at run time. The Zoom positions
  631.                                    will be the same as  the  Zoom  positions
  632.                                    of the preferences programs.   NOTE: This
  633.                                    gadget is  only enabled  when the  window
  634.                                    sizing gadget is turned off.  This can be
  635.                                    done in the "Edit Flags" requester.
  636.  
  637.                     WindowTitle  » Type the Window title  in here.  If  this
  638.                                    Gadget is empty the WA_Title tag will not
  639.                                    be generated.
  640.  
  641.                     ScreenTitle  » Type the  Screen title in  here. If  this
  642.                                    Gadget is  empty the  WA_ScreenTitle  tag
  643.                                    will not be generated.
  644.  
  645.                     OK           » This will set  the  desired  changes  and
  646.                                    resume to editing.
  647.  
  648.                     CANCEL       » This will cancel the operation.
  649.  
  650.  Edit Grid......... This will open a window to edit the grid size. The grid,
  651.                     which is invisible, is used to let the gadgets be  moved
  652.                     and sized with a specific amount of pixels at  the time.
  653.                     This  can be VERY useful to  get your  gadgets the  same
  654.                     size and in line with eachother. If you for example have
  655.                     both the X and Y grid spacings on 4 the gadget-box  will
  656.                     size/move 4 pixels at the time but only  when the  mouse
  657.                     has moved four pixels from it's  previous  position.  If
  658.                     this sounds a bit confusing  you should  try it  out. It
  659.                     makes  it  a  hell  of a  lot  easier to  place/size the
  660.                     gadgets on the right spot.  In the grid window  you will
  661.                     see the following gadgets:
  662.  
  663.                     Grid X Size       :  Type the X spacing of  the grid  in
  664.                                          here. NOTE:  This may not  be  less
  665.                                          than 2 or more than 100.
  666.  
  667.                     Grid Y Size       :  Type the Y spacing of  the grid  in
  668.                                          here. NOTE:  This may not  be  less
  669.                                          than 2 or more than 100.
  670.  
  671.                     Grid On           :  When  this  gadgets is checked  the
  672.                                          grid is switched  on.
  673.  
  674.                     OK                :  Clicking on  this gadget  will  set
  675.                                          the desired grid changes.
  676.  
  677.                     CANCEL            :  This will cancel the  operation.
  678.  
  679.                     NOTE:  When the grid is switched on  all coordinates are
  680.                            updated according to the grid sizes!
  681.  
  682.  Edit Offsets...... This will open a window to edit the border offsets.  The
  683.                     border offsets are used to create a working space within
  684.                     the window borders. This means that if you have set  the
  685.                     horizontal offset to 4 and the vertical offset to 2  the
  686.                     gadgets cannot be moved/sized  closer than  4 pixels  to
  687.                     the window left and right borders and not closer  than 2
  688.                     pixels to the window top and bottom borders.
  689.  
  690.                     Horiz. offset     :  Type the offset in pixels you  want
  691.                                          to have  from the  left  and  right
  692.                                          window borders here. NOTE: This may
  693.                                          not be less than 0 or more than 20.
  694.  
  695.                     Vert. offset      :  Type the offset in pixels you  want
  696.                                          to have from  the  top  and  bottom
  697.                                          window borders here. NOTE: This may
  698.                                          not be less than 0 or more than 20.
  699.  
  700.                     Offset On         :  When  this  gadgets is checked  the
  701.                                          offsets are switched  on.
  702.  
  703.                     OK                :  Clicking on  this gadget  will  set
  704.                                          the desired offset changes.
  705.  
  706.                     CANCEL            :  This will cancel the  operation.
  707.  
  708.  Texts.............
  709.      Add a text.... This will open the  IntuiText  editor  window.  In  this
  710.                     window you'll find the following gadgets:
  711.  
  712.                     Enter Text   » In this gadget you must  type the  actual
  713.                                    text you want.
  714.  
  715.                     JAM1
  716.                     JAM2
  717.                     COMPLEMENT
  718.                     INVERSVID    » These four gadgets determine the drawmode
  719.                                    used to paint the text in the rastport.
  720.  
  721.                     FrontPen     » With this palette gadget  you can  select
  722.                                    the FrontPen (text) color  which is  used
  723.                                    to draw the text.
  724.  
  725.                     BackPen      » With this palette gadget  you can  select
  726.                                    the BackPen (background)  color  which is
  727.                                    used to draw the text.
  728.  
  729.                     OK           » This gadget will close the window and let
  730.                                    you position the text in the edit window.
  731.                                    Clicking on  the left  mouse-button  will
  732.                                    confirm the place.
  733.  
  734.                     CANCEL       » This will cancel the operation.
  735.  
  736.                     Now you must move the text with mouse to where you  want
  737.                     it and click the left mouse-button.  To get your text in
  738.                     The middle of the window horizontally you must move  the
  739.                     text to the vertical position you want it and  press the
  740.                     F1 key. Then the text will bo moved to the center of the
  741.                     window.
  742.  
  743.      Modify a text. This will put up the text selection window if  there was
  744.                     more than one text added. In this text selection  window
  745.                     you'll see the following gadgets:
  746.  
  747.                     Available Texts » In  this  ListView  gadget  the  texts
  748.                                       currently   in   memory   are  listed.
  749.                                       Clicking on the text will select it.
  750.  
  751.                     OK              » This will  select  the  text  for  the
  752.                                       operation that has to be done.
  753.  
  754.                     CANCEL          » This will cancel the operation.
  755.  
  756.                     Now the IntuiText Editor opens  with the  selected  text
  757.                     already  in it.  Now you can edit  the text the  way you
  758.                     want.
  759.  
  760.      Delete a text. This will put up the text selector  again if  more  than
  761.                     one text is added to the  window.  Just select  the text
  762.                     and it's gone. NOTE: When only one text is available the
  763.                     text is deleted immediately.
  764.  
  765.      Move a text... The text selector pops up again if.... Now you can  move
  766.                     the text around in the edit window.  Just  click on  the
  767.                     left mouse-button to  confirm it's  new  place.  You can
  768.                     center it with F1 ofcourse (see Add a text).
  769.  
  770.  BevelBoxes........
  771.     Add BevelBox... When this item has been selected  the  program will  ask
  772.                     you to click on the place where you  want  the  top-left
  773.                     corner of the BevelBox. When clicked you can drag a  box
  774.                     just like when you are editing gadgets.  Just  click  on
  775.                     the left mouse button again to confirm  that the  box is
  776.                     the way you want it.    NOTE:  By  default  the  box  is
  777.                     "raised".  Look at the  "Flip BevelBox" item  to get  it
  778.                     "recessed."
  779.  
  780.     Move BevelBox.. This works the same as moving a gadget.
  781.  
  782.     Size BevelBox.. This works the same as sizing a gadget.
  783.  
  784.     Delete BevelBox This works the same as deleting a gadget.
  785.  
  786.     Flip BevelBox.. By default all created BevelBoxes are  "raised".  To get
  787.                     a BevelBox "recessed" you must select this item and then
  788.                     ( when  the  program  asks  you to )  click  inside  the
  789.                     box and it will be recessed.
  790.  
  791.  »»» 8.4) The Screen Menu
  792.  
  793.  Palette........... This will open the palette editor. In the palette editor
  794.                     you'll see the following gadgets:
  795.  
  796.                     Red         » With this slider gadget you can adjust the
  797.                                   Red intensity  of the  currently  selected
  798.                                   color.
  799.  
  800.                     Green       » With this slider gadget you can adjust the
  801.                                   Green intensity of the currently  selected
  802.                                   color.
  803.  
  804.                     Blue        » With this slider gadget you can adjust the
  805.                                   Blue intensity of the  currently  selected
  806.                                   color.
  807.  
  808.                     Colors      » This gadget consists of 2, 4, 8, 16 or  32
  809.                                   colored gadgets and a color indicator left
  810.                                   of it. Just click on the color you want to
  811.                                   edit to switch to editing that color.
  812.  
  813.                     OK          » This will close the Palette editor and set
  814.                                   the desired colors on the edit screen.
  815.  
  816.                     Load        » This opens the file requester in which you
  817.                                   can select the  name of an  IFF-ILBM  file
  818.                                   from which you wish to load the colors.
  819.  
  820.                     Save        » This opens the file requester in which you
  821.                                   can select  a name.  The  selected  colors
  822.                                   will then  be saved  to an  IFF-ILBM file.
  823.                                   The generated IFF-ILBM file is  compatible
  824.                                   with DPaint IV it's palette files.
  825.  
  826.                     Reset       » This will reset all  colors to  what  they
  827.                                   where before the palette editor opened.
  828.  
  829.                     CANCEL      » This will first reset all colors  and then
  830.                                   exit the palette editor.
  831.  
  832.  Get Font.......... This will  open the  FontSelector  for  you  to select a
  833.                     new font. To select a font you must first  click  on the
  834.                     desired font name and then enter or click on the desired
  835.                     font height. Clicking on Ok  will set the  font  on  the
  836.                     screen and clicking on Cancel will cancel the operation.
  837.                     NOTE: When the "Adapt. Font" switch  in the  Preferences
  838.                     window is switched on then this item cannot be selected.
  839.  
  840.  Set DriPens....... This will open the DriPen editor.  DriPens are the  pens
  841.                     which the system uses to  give that  special new  OS 2.0
  842.                     look  to  the  window  and  gadgets etc.  The  following
  843.                     gadgets are in the DriPen editor:
  844.  
  845.                     Pens        » This cycle gadget is  used to  select  the
  846.                                   DriPen you want  to  edit.  The  following
  847.                                   DriPens are available:
  848.  
  849.                                   DETAILPEN
  850.                                       This  is  the  same  as  the  standard
  851.                                       NewScreen detailpen.
  852.  
  853.                                   BLOCKPEN
  854.                                       This  is  the  same  as  the  standard
  855.                                       NewScreen blockpen.
  856.  
  857.                                   TEXTPEN
  858.                                       This is  the  pen  used  to  draw  the
  859.                                       gadget text and the Window title.
  860.  
  861.                                   SHINEPEN
  862.                                       This is  the  pen  used  to  draw  the
  863.                                       "light-side" of the gadget and  window
  864.                                       borders.
  865.  
  866.                                   SHADOWPEN
  867.                                       This is  the  pen  used  to  draw  the
  868.                                       "dark-side"  of the gadget and  window
  869.                                       borders.
  870.  
  871.                                   FILLPEN
  872.                                       This is the pen used to  backfill  the
  873.                                       gadget  when  it's  clicked   and  the
  874.                                       window border when it's active.
  875.  
  876.                                   FILLTEXTPEN
  877.                                       This is the pen used to draw the  text
  878.                                       of a clicked  gadget  and  the  Window
  879.                                       title of an active window.
  880.  
  881.                                   BACKGROUNDPEN
  882.                                       This   pen  is   used   to   fill  the
  883.                                       background of an unselected gadget.
  884.  
  885.                                   HIGHLIGHTTEXTPEN
  886.                                       This pen is used to draw the text of a
  887.                                       gadget   with   the  HighLight  switch
  888.                                       turned on.
  889.  
  890.                     Palette     » This gadgets contains the current   screen
  891.                                   colors. Clicking on a color  will set  the
  892.                                   currently displayed  DriPen  in the  Cycle
  893.                                   gadget to that colors.
  894.  
  895.                     OK          » Clicking  on  this  gadget  will  set  the
  896.                                   desired DriPens.
  897.  
  898.                     CANCEL      » This will cancel the operation.
  899.  
  900.  Edit Tags......... This will open the screen tags  window.  In  this window
  901.                     the following gadgets are located:
  902.  
  903.                     AutoScroll  » With this  gadget  checked  the  generated
  904.                                   source will contain the SA_AutoScroll tag.
  905.  
  906.                     Type        » This cycle gadget has the supported screen
  907.                                   types in it:
  908.  
  909.                                   CUSTOMSCREEN
  910.                                        The generated source will contain the
  911.                                        screen tags and data. The window will
  912.                                        use this screen to open on.
  913.  
  914.                                   WBENCHSCREEN
  915.                                        The generated source will not contain
  916.                                        the screen tags and data.  The window
  917.                                        will use the Workbench screen to open
  918.                                        on.
  919.  
  920.                                   CUSTOMSCREEN
  921.                                        The generated source will not contain
  922.                                        the screen tags and data.  The window
  923.                                        will use the default public screen to
  924.                                        open on.
  925.  
  926.                     Title       » In this  string  gadget you  can type  the
  927.                                   title of the screen when no windows on the
  928.                                   screen  are  activated.  NOTE:  When  this
  929.                                   gadget   is  empty  the  Tag  will  no  be
  930.                                   generated in the source.
  931.  
  932.                     OK          » This will set the desired tags.
  933.  
  934.                     CANCEL      » This will cancel the operation.
  935.  
  936.  Change Type....... This will pop up the Screen Type requester (See Starting
  937.                     GadToolsBox) which enables you to change the  screen you
  938.                     are working on. NOTE: When you have (for example) edited
  939.                     gadgets on a hires screen and you change the  resolution
  940.                     to a lores screen the gadgets that  are located  outside
  941.                     the lores  screen  range (gadget left-edge > 320) cannot
  942.                     be reached anymore (unless you switch back to the  hires
  943.                     screen ofcourse)!
  944.  
  945.  »»» 8.5) The Menus Menu
  946.  
  947.  Edit Menus........ This will open the Menu Editor  window in which  you can
  948.                     edit   a   complete  menu-strip.   Refer  to  the  "Menu
  949.                     Requesters" chapter for more information.
  950.  
  951.  Test Menus........ This will setup the menus,  items  and  subitems  to  be
  952.                     tested by you. When the message "TESTING MENUS!  ESC  TO
  953.                     QUIT..." is printed  in  the  screen title  bar you  can
  954.                     browse  through  the  menus  like  you  normally do. You
  955.                     should press the ESC (escape) key to resume to editing.
  956.  
  957.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  958.  » 9) Gadget Kind Requester                                                »
  959.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  960.  GadToolsBox supports all gadget kinds which all have their  own  window  in
  961.  which the gadget kind specifics can be edited. The following gadgets can be
  962.  found in nearly all  gadget  kind  requesters  and are  there  for the same
  963.  reason:
  964.  
  965.  Text           » In this gadget you can type the  text which  is  displayed
  966.                   with the gadget.
  967.  
  968.  Label          » In this gadget you can type the source code label which is
  969.                   used to define  some  important  values  in the  generated
  970.                   source. Refer to the "Generated Source"  chapter  for more
  971.                   information.
  972.  
  973.  Underscore     » When  this  gadget  is  selected   the  character  in  the
  974.                   GadgetText preceeded  by a '_' will  be  underlined  which
  975.                   specifies the keyboard shortcut.
  976.  
  977.  Disabled       » When this gadget is selected the gadget will be  disabled.
  978.                   The gadget will only be disabled in the  generated source.
  979.                   NOTE: Not all gadgets support this switch.
  980.  
  981.  High Label     » This tells that  the  GadgetText  must  be  drawn  in  the
  982.                   highlight text color. NOTE Not  all  gadgets  support this
  983.                   switch.
  984.  
  985.  Text Place     » This cycle gadget  determines  where that  gadget  text is
  986.                   placed. The possibilities are IN, LEFT,  RIGHT,  ABOVE and
  987.                   BELOW. NOTE: Only the Button gadget supports IN.
  988.  
  989.  OK             » This  gadget  will  add  the  gadget  with   the  selected
  990.                   specifics to the edit window or set the desired changes.
  991.  
  992.  CANCEL         » This will cancel the operation.
  993.  
  994.  Following is a description of the extra specifics  of the  different gadget
  995.  kinds supported by GadToolsBox.
  996.  
  997.  »»» 9.1) The CheckBox Gadget
  998.  
  999.  Checked       » When this gadget is switched on it tells that the gadget is
  1000.                  checked by default.
  1001.  
  1002.  »»» 9.2) The Integer Gadget
  1003.  
  1004.  MaxChars      » You must type the maximum possible digits plus one that may
  1005.                  be typed in the gadget. NOTE: This cannot be smaller than 2
  1006.  
  1007.  Number        » Type the default number in this gadget  that the  resulting
  1008.                  gadget has in it.
  1009.  
  1010.  »»» 9.3) The ListView Gadget
  1011.  
  1012.  Read Only     » When this gadget is selected the  ListView  Gadget  will be
  1013.                  read-only. NOTE: The ListView will only be read-only in the
  1014.                  generated source.
  1015.  
  1016.  ShowSelected  » When this gadget is selected the active (clicked)  entry in
  1017.                  the listview gadget will be shown below the listview gadget
  1018.                  NOTE: This option is only available  if the ListView  isn't
  1019.                  ReadOnly.
  1020.  
  1021.  Spacing       » Type the  extra  number  of  pixels  GadTools  must  insert
  1022.                  between the listview entries. NOTE: This  value  cannot  be
  1023.                  smaller than 0.
  1024.  
  1025.  Scr. Width    » Type the width of the scroller gadget next to the  ListView
  1026.                  gadget in here. NOTE: This value may not be smaller than 16
  1027.  
  1028.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1029.                  the  string  gadget  you can  type  the  entries  that  the
  1030.                  listview must have. To edit an entry you  must first  click
  1031.                  on the entry in the listview and then edit the entry in the
  1032.                  string  gadget.  NOTE:  The  "!!ACTION GADGET!!"  entry  is
  1033.                  always in the list and cannot  be removed  or edited.  This
  1034.                  entry is necessary to keep the ListView  selectable  in the
  1035.                  program. This entry will ofcourse not showup in  the source
  1036.                  generated.
  1037.  
  1038.  ^ Remove ^    » This gadget enables you to remove  entries  from the  list.
  1039.                  Just click on the entry in the ListView gadget and  then on
  1040.                  this gadget and the entry is gone.
  1041.  
  1042.  »»» 9.4) The Mx Gadget
  1043.  
  1044.  Spacing       » In this gadget you can  type the  spacing  in  pixels  that
  1045.                  GadTools should insert between the items of the  MX gadget.
  1046.  
  1047.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1048.                  the  string  gadget  you can  type  the  entries  that  the
  1049.                  mx must have.  To  edit  an  entry  you  must  first  click
  1050.                  on the entry in the listview and then edit the entry in the
  1051.                  string  gadget.  NOTE:  You must enter atleast two  entries
  1052.                  for the MX gadget.
  1053.  
  1054.  ^ Remove ^    » This gadget enables you to remove  entries  from the  list.
  1055.                  Just click on the entry in the ListView gadget and  then on
  1056.                  this gadget and the entry is gone.
  1057.  
  1058.  »»» 9.5) The Cycle Gadget
  1059.  
  1060.  Labels        » This is a ListView Gadget combined with a string gadget. In
  1061.                  the  string  gadget  you can  type  the  entries  that  the
  1062.                  cycle must have.  To edit an  entry you  must  first  click
  1063.                  on the entry in the listview and then edit the entry in the
  1064.                  string  gadget.  NOTE:  You must enter atleast two  entries
  1065.                  for the Cycle gadget.
  1066.  
  1067.  ^ Remove ^    » This gadget enables you to remove  entries  from the  list.
  1068.                  Just click on the entry in the ListView gadget and  then on
  1069.                  this gadget and the entry is gone.
  1070.  
  1071.  »»» 9.6) The Palette Gadget
  1072.  
  1073.  Width         » In  this  gadget  you  can  type  the  width  of  the color
  1074.                  indicator if you want one on the left of the gadget.  NOTE:
  1075.                  any value smaller than 9 will indicate that you do not want
  1076.                  a color indicator.
  1077.  
  1078.  Height        » In  this  gadget  you  can  type  the height  of  the color
  1079.                  indicator if you want one above the gadget. NOTE: any value
  1080.                  smaller than 9 will indicate that you  do not  want a color
  1081.                  indicator.
  1082.  
  1083.  »»» 9.7) The Scroller Gadget
  1084.  
  1085.  Immediate     » When   this   gadget  is   selected   you   will  hear  any
  1086.                  IDCMP_GADGETDOWN message through the window IDCMP port that
  1087.                  this gadget generates.
  1088.  
  1089.  RelVerify     » When   this   gadget  is   selected   you   will  hear  any
  1090.                  IDCMP_GADGETUP  message  through the window IDCMP port that
  1091.                  this gadget generates.
  1092.  
  1093.  Horizontal
  1094.  Vertical      » With this gadget you can determine whether this  gadget can
  1095.                  be moved horizontally or vertically.
  1096.  
  1097.  Top           » In this gadget  you  can  type  the  top  of the  area  the
  1098.                  scroller is used for.
  1099.  
  1100.  Total         » In this gadget you  can  type  the  total  of  the area the
  1101.                  scroller is used for.
  1102.  
  1103.  Visible       » In this gadget you  can type  the visible  part of the area
  1104.                  this scroller is used for.
  1105.  
  1106.  Arrows        » In this gadget you can type the size in pixels of an arrow.
  1107.                  NOTE: Specifying  a  value smaller  than 8  says you  don't
  1108.                  want arrows.
  1109.  
  1110.  »»» 9.8) The Slider Gadget
  1111.  
  1112.  Immediate     » When   this   gadget  is   selected   you   will  hear  any
  1113.                  IDCMP_GADGETDOWN message through the window IDCMP port that
  1114.                  this gadget generates.
  1115.  
  1116.  RelVerify     » When   this   gadget  is   selected   you   will  hear  any
  1117.                  IDCMP_GADGETUP  message  through the window IDCMP port that
  1118.                  this gadget generates.
  1119.  
  1120.  Horizontal
  1121.  Vertical      » With this gadget you can determine whether this  gadget can
  1122.                  be moved horizontally or vertically.
  1123.  
  1124.  Min           » In this gadget you can type the minimum value of the slider.
  1125.  
  1126.  Max           » In this gadget you can type the maximum value of the slider.
  1127.  
  1128.  Level         » In this gadget you can  type the  initial level  the slider
  1129.                  must have.
  1130.  
  1131.  Level Size    » In  this   gadget  you  can  type  the  maximum  amount  of
  1132.                  characters that may be used to print the slider level.
  1133.  
  1134.  Format        » A formatting string ala RawDoFmt() which  specifies the way
  1135.                  the slider level  should be  printed.  NOTE:  When  this is
  1136.                  omitted the slider level won't be printed.
  1137.  
  1138.  Lev. Place    » With this gadget you can specify where GadTools is to print
  1139.                  the slider level. The possibilities are LEFT,  RIGHT, ABOVE
  1140.                  and below.
  1141.  
  1142.  »»» 9.9) The String Gadget
  1143.  
  1144.  MaxChars      » You must type the maximum possible characters plus one that
  1145.                  may be typed in the gadget.  NOTE:  This cannot be  smaller
  1146.                  than 2.
  1147.  
  1148.  String        » Type the default string in this gadget  that the  resulting
  1149.                  gadget has in it.
  1150.  
  1151.  »»» 9.10) The Number Gadget
  1152.  
  1153.  NOTE: During the editing the number  gadget can  be selected  to be  moved,
  1154.        sized, deleted etc.   This  is  only  possible in  the  program!  The
  1155.        gadget generated in the source will NOT  respond to clicking  in  it!
  1156.        The NUMBER kind of gadget  is a  READONLY  gadget  which  is used  to
  1157.        display numbers.
  1158.  
  1159.  Border        » When this gadget is  checked  it  means  that a  "recessed"
  1160.                  border will be drawed around the gadget.
  1161.  
  1162.  Number        » In this gadget you can  type  the default  number  that the
  1163.                  gadget should display.
  1164.  
  1165.  »»» 9.11) The Text Gadget
  1166.  
  1167.  NOTE: During the editing  the  text  gadget can  be selected  to be  moved,
  1168.        sized, deleted etc.   This  is  only  possible in  the  program!  The
  1169.        gadget generated in the source will NOT  respond to clicking  in  it!
  1170.        The TEXT kind  of  gadget  is a  READONLY  gadget  which  is used  to
  1171.        display informative texts.
  1172.  
  1173.  Border        » When this gadget is  checked  it  means  that a  "recessed"
  1174.                  border will be drawed around the gadget. NOTE: When you did
  1175.                  not enter a text in the "Def. Text"  gadget the  border  is
  1176.                  switched on no matter what this gadget says.
  1177.  
  1178.  CopyText      » When this gadget is checked the gadtools.library will  make
  1179.                  it's own private copy of the text.
  1180.  
  1181.  Def. Text     » In this gadget you  can  type  the  default  text  that the
  1182.                  gadget should display.
  1183.  
  1184.  »»» 9.12) The Button Gadget
  1185.  
  1186.  Toggle        » When  this  gadget  is  switched  on  you will get a toggle
  1187.                  select gadget (on/off) gadget.   I've  done this by setting
  1188.                  the GACT_TOGGLESELECT  flag in  the  created  gadget.  This
  1189.                  probably isn't the "right" way to do  this but  I don't see
  1190.                  that it can harm either.
  1191.  
  1192.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1193.  » 10) Menu Requesters                                                     »
  1194.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1195.  GadToolsBox uses three (actually two) windows to let the user edit complete
  1196.  menu-strips. Following is a description of those windows.
  1197.  
  1198.  »»» 10.1) The Menu Requester
  1199.  
  1200.  This requester is used to edit  the menus.  In the  window you'll  see  the
  1201.  following gadgets:
  1202.  
  1203.  Menus         » This  listview  gadget  contains  the names  of  the  menus
  1204.                  currently in memory.  Below this ListView  gadget a  string
  1205.                  gadget is  located  which  is used  to  enter/edit the menu
  1206.                  names. To add a new menu to  the list  you must  enter it's
  1207.                  name in this string gadget and press return. To edit a menu
  1208.                  name you must  first  click on  the  name  in  the listview
  1209.                  gadget and then edit the name in the string gadget.
  1210.  
  1211.  Disabled      » This CheckBox gadget tells GadToolsBox whether you want the
  1212.                  menu to be disabled or not.
  1213.  
  1214.  ItemEd        » This gadget must be clicked when you want to add some items
  1215.                  to a menu. To do this you must first click on the menu name
  1216.                  in the listview gadget which you want to edit items for and
  1217.                  then click on this gadget.  If  all goes  well you  will be
  1218.                  presented with the "(Sub)Item Requester" (see below).
  1219.  
  1220.  Delete        » When you want to delete a menu you must click  on it's name
  1221.                  in the listview gadget and then click on this gadget.  Then
  1222.                  a requester pops up asking for confirmation. NOTE: Deleting
  1223.                  a menu with  items  attached to it  will also delete  those
  1224.                  items.
  1225.  
  1226.  DONE          » Clicking on this gadget will close the requester and resume
  1227.                  to gadget editing.
  1228.  
  1229.  »»» 10.2) The (Sub)Item Requester
  1230.  
  1231.  This requester  is used to  edit  (sub)items  for  a  specific   menu. This
  1232.  requester is the same for editing items and subitems. The following gadgets
  1233.  are in the window:
  1234.  
  1235.  (Sub)Items    » This  listview  gadget  contains  the names  of  the  (sub)
  1236.                  items currently attached to the menu.  Below  this ListView
  1237.                  gadget a string gadget is located  which is used  to  enter
  1238.                  /edit the (sub)item names. To add a new  (sub)item  to  the
  1239.                  list  you must  enter it's name  in this string  gadget and
  1240.                  press return. To edit a menu name you must  first  click on
  1241.                  the  name  in  the listview  gadget and then  edit the name
  1242.                  in the string gadget.
  1243.  
  1244.  Checkit       » This will turn the intuition  CHECKIT  flag on/off  for the
  1245.                  (sub)item.
  1246.  
  1247.  Disabled      » This CheckBox gadget tells GadToolsBox whether you want the
  1248.                  (sub)item to be disabled or not.
  1249.  
  1250.  Checked       » This will turn the intuition  CHECKED  flag on/off  for the
  1251.                  (sub)item.
  1252.  
  1253.  MenuToggle    » This will turn the intuition MENUTOGGLE flag on/off for the
  1254.                  (sub)item.
  1255.  
  1256.  ShortCut      » You can  add a  keyboard  shortcut  for  the  (sub)item  by
  1257.                  entering the shortcut key in this gadget. NOTE: The program
  1258.                  will detect it when you try to use a shortcut key that  you
  1259.                  have already used.
  1260.  
  1261.  BarLab        » When you click on this gadget a separator bar (NM_BARLABEL)
  1262.                  is inserted in the list automatically.
  1263.  
  1264.  SubEd        »  This  gadget  must be  clicked when  you  want to  add some
  1265.                  subitems to a item. To do this you must  first click on the
  1266.                  item name in the listview  gadget which  you want  to  edit
  1267.                  subitems for  and  then  click on  this gadget. If all goes
  1268.                  well the requester will switch to  subitems editing.  NOTE:
  1269.                  This gadget is disabled  when the  requester already  is in
  1270.                  the subitem mode.
  1271.  
  1272.  Delete        » When you want to delete a (sub)item you must click  on it's
  1273.                  name in the listview gadget  and then click on this gadget.
  1274.                  Then a requester  pops  up asking  for confirmation.  NOTE:
  1275.                  Deleting a item  with  subitems  attached to it  will  also
  1276.                  delete those subitems.
  1277.  
  1278.  DONE          » Clicking on this gadget will  close the  requester and  put
  1279.                  you back in the menu requester.
  1280.  
  1281.  NOTE: There is a possibility to set the MutualExclude  of an item but  this
  1282.  has a bug in it which I can't find. When you click on  the (sub)item  which
  1283.  must  do  the  excluding and you press the 'x' key you will see the message
  1284.  "DRAG-SELECT ITEMS TO EXCLUDE" in the title bar of the item ed window.  Now
  1285.  you must click the menu-button of the mouse and go to the menu.  Here's the
  1286.  bug..... YOU MUST KEEP THE MOUSE WITH THE RIGHT-BUTTON PRESSED ON  THE MENU
  1287.  FOR ABOUT 10-15 SECONDS BEFORE INTUITION  DECIDES TO DROP  THE  MENU ??????
  1288.  When the menu is down you must check the items that are to be  excluded and
  1289.  the mutual-exclude value will be set. To check several items you must click
  1290.  the left-mouse-button on each item whilst  holding  down  the  right mouse-
  1291.  button. If you know what  the bug is  please tell me about it so that I can
  1292.  fix it.
  1293.  
  1294.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1295.  » 11) The Generated Source                                                »
  1296.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1297.  The source output of GadToolsBox is devided into two  seperate  files.  The
  1298.  first file is a header (.h|.i) containing EXTERNS or XREF'S to the  data in
  1299.  the  generated main source and  CONSTANTS  for  the  gadget  ID's  and  the
  1300.  positions of the gadgets in the  Gadget  Array.  The  second  file  (.c|.s)
  1301.  (from here on refered to as "main file") contains all data  and routines to
  1302.  setup things. From here on when I refer to <Project_Name>  I mean  the name
  1303.  entered in  the "Edit Data" requester from the Window menu and when I refer
  1304.  to  <Gadget_Label> I mean the  name  you have typed  in the "Label"  gadget
  1305.  of one  of the  gadget kind requesters.  In  the  main  file  the following
  1306.  routines are generated:
  1307.  
  1308.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1309.    » long SetupScreen( void );                                         »
  1310.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1311.     This routine will open or lock the screen and get it's visual info.
  1312.     When requested (see Preferences Menu) this routine  will also  open
  1313.     the font. This routine can return one of the following errors:
  1314.  
  1315.         0 = No errors.
  1316.         1 = Could not open or lock the screen.
  1317.         2 = Could not get the screen it's visual info.
  1318.         3 = Could not setup the GETFILE boopsi class.
  1319.         4 = Could not get a GETFILE boopsi object.
  1320.         5 = Could not open the font.
  1321.  
  1322.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1323.    » void CloseDownScreen( void );                                     »
  1324.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1325.     This routine will free the resources taken by "SetupScreen()".  You
  1326.     must still call this routine when  "SetupScreen()"  failed to close
  1327.     or free the resources that didn't fail to open!!!
  1328.  
  1329.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1330.    » long Open<Project_Name>Window( void );                            »
  1331.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1332.     There are as much of these routines as there are Project Windows in
  1333.     the file you have generated. These routines will setup the  gadgets
  1334.     and menus and open the window. These routines can return one of the
  1335.     following errors:
  1336.  
  1337.         0 = No errors.
  1338.         1 = Could not create a gadget context.
  1339.         2 = Error during the gadget creation.
  1340.         3 = Could not create the menus.
  1341.         4 = Could not open the window.
  1342.  
  1343.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1344.    » void Close<Project_Name>Window( void );                           »
  1345.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1346.     There are as much of these routines as there are Project Windows in
  1347.     the file you have generated. These routines will free all resources
  1348.     that the "Open<Project_Name>Window()" routine has taken.  You  must
  1349.     still call this routine if "Open<Project_Name>Window()" has failed!
  1350.  
  1351.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1352.    » void <Project_Name>Render( void );                                »
  1353.    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1354.     Each Project Window which has texts and/or BevelBoxes  attached  to
  1355.     it will have a routine which renders these texts and/or  BevelBoxes
  1356.     in the window. This routine must also be called by the user program
  1357.     uppon  receiving a IDCMP_REFRESHWINDOW message at the  window port.
  1358.     When such a message  is received  this  routine   must  be   called
  1359.     between   the   GT_BeginRefresh()  and GT_EndRefresh() calls.  Here
  1360.     is a  small example of what I mean:
  1361.  
  1362.         while( 1 ) {
  1363.             WaitPort( Wnd->UserPort );
  1364.             while( imsg = GT_GetIMsg( Wnd->UserPort )) {
  1365.  
  1366.                 Class = imsg->Class;
  1367.                 GT_ReplyIMsg( imsg );
  1368.  
  1369.                 switch ( Class ) {
  1370.  
  1371.                     case    IDCMP_REFRESHWINDOW:
  1372.                         GT_BeginRefresh( Wnd );
  1373.  
  1374.                         <Project_Name>Render(); /* re-draw texts and boxes */
  1375.  
  1376.                         GT_EndRefresh( Wnd, TRUE );
  1377.                         break;
  1378.  
  1379.                     .....
  1380.                 }
  1381.             }
  1382.         }
  1383.  
  1384.  The main file also has the following globals defined  which are  shared  by
  1385.  all project windows:
  1386.  
  1387.     struct Screen *Scr;          A pointer to the opened/locked screen
  1388.     APTR           VisualInfo;   A pointer to the visual info
  1389.  
  1390.  The following globals are only  generated when the file contains gadgets or
  1391.  menus and when the OpenFont routine is generated and  when the window  must
  1392.  have a zoom gadget:
  1393.  
  1394.     struct Gadget   *<Project_Name>GList;  A pointer to the created gadgets
  1395.     struct Menu     *<Project_Name>Menus;  A pointer to the created menus
  1396.     WORD             <ProjectName>Zoom[4]; The window alternate positions
  1397.     struct TextFont *Font;       A pointer to the opened font
  1398.  
  1399.  Also  generated  are  pointers  for each project window  that is in memory.
  1400.  Also the window title is generated as a global pointer.   These pointer are
  1401.  generated as follows:
  1402.  
  1403.     struct Window   *<Project_Name>Wnd;    A pointer to the window;
  1404.     UBYTE           *<Project_Name>Wdt;    A pointer to the window title;
  1405.  
  1406.  Four words are generated for each window. These words  contain  the  window
  1407.  it's left and top-edge and the window it's width and  height. These globals
  1408.  are build as follows:
  1409.  
  1410.     UWORD       <Project_Name>Left;     Window left-edge
  1411.     UWORD       <Project_Name>Top;      Window top-edge
  1412.     UWORD       <Project_Name>Width;    Window width
  1413.     UWORD       <Project_Name>Height;   Window height
  1414.  
  1415.  These  words   should  be  changed  by  the  aplication  if  the  user  has
  1416.  re-sized   or re-positioned the window. This way when the window  is closed
  1417.  and  then re-opened  again it will be opened the size and  position  it had
  1418.  the last time  it was  open. Note: When the user has changed the window you
  1419.  _must_ substract the window top-border  size  from the window height before
  1420.  setting in the the "<Project_Name>Height" global. Here is a  little example
  1421.  of what I mean:
  1422.  
  1423.     while( 1 ) {
  1424.         WaitPort( Wnd->UserPort );
  1425.         while( imsg = GT_GetIMsg( Wnd->UserPort )) {
  1426.  
  1427.             Class = imsg->Class;
  1428.             GT_ReplyIMsg( imsg );
  1429.  
  1430.             switch( Class ) {
  1431.  
  1432.                 case    IDCMP_CHANGEWINDOW:
  1433.                     <Project_Name>Left   = Wnd->LeftEdge;
  1434.                     <Project_Name>Top    = Wnd->TopEdge;
  1435.                     <Project_Name>Width  = Wnd->Width;
  1436.                     <Project_Name>Height = Wnd->Height - Wnd->BorderTop;
  1437.                     break;
  1438.  
  1439.                 .....
  1440.  
  1441.             }
  1442.         }
  1443.     }
  1444.  
  1445.  Also the main  file contains  the Gadget  Array's for  each  project window
  1446.  which are define as follows:
  1447.  
  1448.  struct Gadget *<Project_Name>Gadgets[];
  1449.  
  1450.  To access the pointers in this array the program generates DEFINES or EQU'S
  1451.  in the header file which specify  the position  of a certan  gadget in  the
  1452.  array. These defines are build as follows:
  1453.  
  1454.  #define GDX_<Gadget_Label>
  1455.  
  1456.  Be   sure  that  the   "gadtools.library",   "intuition.library"  and   the
  1457.  "graphics.library" are all open BEFORE any of  the  generated  routines are
  1458.  called. When you use a diskfont and the "Gen. OpenFont" switch is on in the
  1459.  Preferences  window  the  "diskfont.library" must also be opened.  For  the
  1460.  assembler  source  the valid pointers to  these  libraries must  be  stored
  1461.  globally with  the  names "_GadToolsBase", "_IntuitionBase", "_GfxBase" and
  1462.  "_DiskfontBase"  otherwise  you  get  problems  linking.   When you use the
  1463.  GETFILE  gadget  you  must  also have   opened  the  "utility.library" with
  1464.  the base pointer  in a variable called "_UtilityBase".
  1465.  
  1466.  The generated source tries to be smart. With smart I mean that if you,  for
  1467.  example, have created five gadgets which are of the  same  size the  source
  1468.  generator will only  generate  the  setting of  the size  in the  NewGadget
  1469.  once using it on all five gadgets. The same goes for  all other  entries in
  1470.  the NewGadget structure.  The generated  source  will  _ALWAYS_  check  the
  1471.  screen  font  at run time  so  that the  gadgets, texts and bevel boxes are
  1472.  always placed at the correct border offsets in the window.
  1473.  
  1474.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1475.  » 12) The GetFile Boopsi Image                                            »
  1476.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1477.  When you use the GetFile gadget and you generate the  source  you  __MUST__
  1478.  link with the supplied object code "boopsi.o"!  This contains the code that
  1479.  will setup a private sub-class which will handle the drawing of the GetFile
  1480.  Image. The source of "boopsi.o"  has been included with the distribution so
  1481.  you  can  see  how  it  has  been  done.   The code of  the boopsi image is
  1482.  re-entrant so it can be used in residentable  programs and  libraries  etc.
  1483.  
  1484.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1485.  » 13) Adapt Font                                                          »
  1486.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1487.  When the "Adapt. Font" option in the Preferences window is switched  on the
  1488.  source  generator  will  create  source  that  will automatically adapt the
  1489.  gadget, bevel-box and window sizes and positions to the  active  font.  The
  1490.  way this has been done is thought up by Sebastiano Vigna who had the clever
  1491.  idea  to use a simulated  floating  point  calculation  simular  to the one
  1492.  proportional  gadgets  use.  With this calculation  0 is 0 and  65536 is 1.
  1493.  GadToolsBox uses a fraction from 65536 of the topaz 8 font.   This fraction
  1494.  is used as a constant in the generated source  to re-calculate  the gadget,
  1495.  bevel-box and window sizes and positions using another font.
  1496.  
  1497.  GadToolsBox uses the "fraction" from  65536 of the topaz  8 font  which  is
  1498.  the font used to edit. This  "fraction"  can be calculated  the   following
  1499.  way:
  1500.  
  1501.     fraction = font->ta_YSize;
  1502.     fraction = 65536 / fraction;
  1503.  
  1504.  This will have the following result with the topaz 8 font:
  1505.  
  1506.     65536 / 8 = 8192; /* fraction */
  1507.  
  1508.  When  for  example the  gadget  was created 40 pixels wide with the topaz 8
  1509.  font and at run time the topaz 11 font  is used the  program  re-calculates
  1510.  the gadget width the following way:
  1511.  
  1512.     gadget->Width = ( topaz11->ta_YSize * ( 40 * x_size_fraction )) / 65536;
  1513.  
  1514.  Which will have the following result:
  1515.  
  1516.     ( 11 * ( 40 * 8192 )) / 65536 = 55;
  1517.  
  1518.  This is correct because 40 / 8 = 5 and 55 / 11 = 5.      NOTE: The C source
  1519.  generator really writes ( 40 * 8192 ) but the compiler will  optimize  this
  1520.  into  a constant so changing it into 327680 will have no efect in  terms of
  1521.  saving  a  few bytes in  the code.  This way you can always see the "parent
  1522.  size" on which the calculation is based.
  1523.  
  1524.  The same method is used for the the gadget height, left  and  top-edges and
  1525.  the bevel-box width, height, left and top-edges  and for the  window  width
  1526.  and  height.  The  resulting  source  also checks  to see wether or not the
  1527.  window will fit on the screen.  If it doesn't fit  anymore the topaz 8 font
  1528.  will be used. GadToolsBox forces you to use the topaz 8 font  when creating
  1529.  a user interface with the "Adapt. Font" option on because  when  you  would
  1530.  have a larger font and you would (for example)  create  a  SCROLLER  of  10
  1531.  pixels  high and at run time a smaller font  is  active  the  routine  that
  1532.  re-calculates the gadget  could make the SCROLLER to small.
  1533.  
  1534.  In the generated source a routine called "ComputeFont()" is generated. This
  1535.  routine calculates the font  size  and it will  check if the  window  still
  1536.  fit's on the screen using the font. If the window does not fit anymore this
  1537.  routine will automatically switch to the topaz 8 font.      This routine is
  1538.  always  static  and  you  should  never  need  to  call  this yourself. The
  1539.  generated assembler source with the  "Font. Adapt" option  on  requires the
  1540.  "utility.library"  open  with  it's  base   pointer  in  a  global   called
  1541.  "_UtilityBase". This because the source requires the  32 bit math  routines
  1542.  from that library.
  1543.  
  1544.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1545.  » 14) Notes                                                               »
  1546.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1547.  At this time there really isn't much to say about the program. It is a tool
  1548.  that  will  ( or atleast should )  save  you a lot  of time  in creating  a
  1549.  GadTools user interface for your programs.   I've done some  testing  using
  1550.  "Enforcer" and "MungWall" and I didn't find enforcer hits  and the  program
  1551.  (as far as I know) handles low memory conditions well.  When  a big font is
  1552.  used in the program it can  happen  that  some  requesters won't fit on the
  1553.  screen anymore. Intuition will automatically resize  the requester  so that
  1554.  it will fit  on the screen but some gadgets might not be reachable anymore.
  1555.  When  you want to save the binaries crunched you must copy the V35+ version
  1556.  of the PowerPacker.library  in your libs: directory  and you  must setup T:
  1557.  as a logical device.  To do this you must have something like  this in your
  1558.  startup-sequence:
  1559.  
  1560.         MakeDir RAM:T
  1561.         Assign  T:  RAM:T
  1562.  
  1563.  If someone wants to translate this manual into her/his language  permission
  1564.  is herby granted. The only thing I ask is that you  send me a  copy of  the
  1565.  translation  so that  I can  distribute  it with  the next  release of  the
  1566.  program. When you use a screen bigger  than the  normal display  mode  size
  1567.  and you are on a part of the screen that  doesn't display the  screen  it's
  1568.  top-left corner you will not see the title  messages  GadToolsBox  displays
  1569.  sometimes. So if gadtoolsbox doesn't seem to respond to your input  move to
  1570.  the top-left of the screen and read the  message.   Although  this  program
  1571.  itself does not follow all the rules layed out in the "User Interface Style
  1572.  Guide" I still strongly suggest you try to follow the rules  layed  out  in
  1573.  in that guide.  From  v1.3  on  GadToolsBox  has an embedded version string
  1574.  in the "User Interface Style Guide" format.  When  submitting  a bug-report
  1575.  please tell me the version of the GadToolsBox program you are using.   This
  1576.  can be established by typing "Version GadToolsBox" in the shell.
  1577.  
  1578.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1579.  » 15) Credit                                                              »
  1580.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1581.  I would like to thank the following people for their  many suggestions  and
  1582.  bug reports. Without these people GadToolsBox wouldn't be where it is today
  1583.  
  1584.                      ________    T H A N K S    ________
  1585.  
  1586.     Wolfgang Küting,    Kasper Peeters,    Stefan Becker,      Nico Fraçois,
  1587.     Sebastiano Vigna,   Andreas Jung,      Ken Simpson,        Kai Bolay,
  1588.     Matthew Dillon,     Fred Fish,         Huub Schuivers,     Ola Olsson,
  1589.     Richard Waspe,      Carsten Feilhaber, Garry Glendown
  1590.  
  1591.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1592.  » 16) __IMPORTANT__                                                       »
  1593.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1594.  Due to a bug in the previous releases of GadToolsBox it's possible that you
  1595.  have binary files which contains  a  corrupt  menu strip.  This because the
  1596.  program counted sub-items for items which didn't have any  sub-items.  This
  1597.  would cause the binary file routine to  write  the  sub-items  that  didn't
  1598.  exist to the file. To fix these files you must load them in this version of
  1599.  GadToolsBox and go into the Menu Editor ("Edit Menus..." under the  "Menus"
  1600.  menu). Now select the first menu and  click  on  "ItemEd".  Now select each
  1601.  non-NM_BARLABEL item  which  should  _NOT_  have any  sub-items  and  press
  1602.  "SHIFT+E". Each time the requester pops-up and you are  sure that  you have
  1603.  selected the right item you should click  on "Yes"  in the  requester.  You
  1604.  must repeat this action for all menus and then (when you are finished) save
  1605.  the file again. I know that this could mean some work with big menus  but I
  1606.  think it's better to do this than to  re-create the  whole  user-interface.
  1607.  I'm very sorry for this bug but it was one of those  famous ones  that only
  1608.  occured sometimes.  NOTE: BINARIES CREATED WITH V1.0 OF GADTOOLSBOX  CANNOT
  1609.  BE READ/REPAIRED BY THIS VERSION OF GADTOOLSBOX.  ONLY THE BINARIES CREATED
  1610.  WITH V1.2++ CAN BE READ/REPAIRED BY THIS VERSION OF GADTOOLSBOX.
  1611.  
  1612.  »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1613.  
  1614.  Bug reports,  suggestions,  postcards,  flames,  criticism,  contributions,
  1615.  ideas, gifts, opinions about the new U2 cd 'Achtung Baby',  how  to  make a
  1616.  million, inspirations, flowers,  etc., etc., etc........... to:
  1617.  
  1618.  Jan van den Baard                        Fido: 2:500/29 (Jan van.den.Baard)
  1619.  Bakkerstraat 176
  1620.  3082 HE, Rotterdam
  1621.  Holland
  1622.  
  1623.       »» "Trust me. I know what I'm doing." -: Sledge Hammer         ««
  1624.       »» "Life sucks"                       -: Al Bundy              ««
  1625.       »» "It's better to dream about an Amiga than to have an Atari" ««
  1626.