@database
@node MAIN
@title "FLAGS 2.0"
@{fg shine}
                            FLAGS 2.0 (5/6/98)@{fg text}
                              by Vic E Babes
                            in Blitz Basic 2.1
                              First release.
@{fg shine}                       Contents last updated 30/5/99@{fg text}


               @{"Legal stuff  " link Legalities} : Distribution/Disclaimer/Requirements.

               @{"What         " link What} : is it?
               @{"Notes        " link Notes} : about the source code.
               @{"Adding Topics" link Topics} : how to add new topics.

               @{"Credits      " link Credits} : for Commodities Library.

               @{"Rainbow Islands" Link RI} : VERY IMPORTANT!!


@endnode

@node RI
@title "FLAGS 2.0"

 @{fg shine}Rainbow Islands@{fg text}

 I got a @{fg shine}4th@{fg text} rainbow on Rainbow Islands - April '98.

 @{fg shine}@{"Cool..." link MAIN}@{fg text}
@endnode

@node Legalities
@title "FLAGS 2.0"

 @{fg shine}Distribution:@{fg text} Do what you like with it.

 @{fg shine}Disclaimer:@{fg text}   I accept no responsibility if it causes any damage
               to you or your machine.

 @{fg shine}Requirements:@{fg text} Blitz Basic isn't required, but it would be
               pointless without it - well, no, actually it wouldn't.

 @{fg shine}@{"Okay..." link MAIN}@{fg text}
@endnode

@node What
@title "FLAGS 2.0"

 @{fg shine}What is it?@{fg text}

 A Help Commodity for Blitz programmers.

 Ever find  yourself in the middle of typing a command, such as Window, or
 GTGetAttrs, and needed to know the value of a certain flag?  Or wanted
 to know the rawkey-code for a certain key?  Had to turn the light on
 to read the manual?  Then Flags is the program for you.  Simply press
 "LAlt, LShift" and "f" and up will pop Flags.

 In fact if you double click its icon now, and then press the above
 key-combo, you can look at Flags whilst reading this.

 Flags will pop-up onto whichever screen you are on at the time (it doesn't
 check these screens so don't try it in a paint package!), and will list,
 in button form, the following topics:

   Quit                      to quit
   Hide                      to hide

   Screen Flags              Lists flags for Screen command
   Screen Tags               Lists ScreenTags tag values
   Window Flags              Lists flags for Window command
   IDCMP Flags               Lists IDCMP flags
   Gadget Flags              Lists flags for Gadget command
   Gadget Tags               Lists tags for GTGet and GTSetAttrs
   Type Sizes                Lists byte-sizes of types
   InitCopList Flags         Lists flags for InitCopList command
   Interrupt Types           Lists Interrupt types
   Req Flags                 Lists flags for ReqFileRequester
   RawKeys                   Lists RawKey codes
   Test Keys                 a routine that displays the character, ascii
                             Rawkey, and Qualifier codes for any key or
                             key-combo that you press.
   $# Commands Not In Help   a list of string and variable operators
                             that are not listed when you click the Library
                             option - i.e. - if you're looking at 'Chr$'
                             in the Help window, and then click on Library
                             to see associated string commands - these
                             ones won't be there - useful when you can't
                             remember the name of that string command you
                             want.
   CX Events                 Lists the events sent by exchange when a
                             commodity event has taken place.
   MenuItem Flags            Values for flags used in menu items.
   Printer Stuff             Values for printer operation
   Joystick/Joypad           CD32 button values + JoyR values
   Guru Meditations          Taken from Amiga Format
   Misc stuff                Pokes for changing background colour
                             useful for checking that the program is
                             entering certain routines in Blitz mode

 Click on one of these buttons, and a window will appear with the stated
 information - so click on 'Window Flags' and the window will display
 info. on the Window Flags, etc.  The only different one is, Test Keys,
 which will bring a little window up that will display information about
 any key/key-combo that you might do, until you close it.

 Click on "Hide" to make it disappear again.

 Some of this information is available from the online help (if you know
 where to find it, but another thing about flags is you can keep the
 information window on Ted whilst typing your command.

 Highly-useful, if you're a Blitz programmer - though most of the flags
 are pretty global as far as the Amiga is concerned, so should be
 useful for any language.

 @{fg shine}@{"So that's what it is..." link MAIN}@{fg text}
@endnode

@node Notes
@title "FLAGS 2.0"

 @{fg shine}Notes@{fg text}

 I've included the source so that you can make changes/add topics etc,
 just follow the advice in this guide - see the section @{"Adding Topics" link Topics}.
 Feel free to modify/improve the source - this was one of my first programs
 designed to make future programming easier.

 If you want to change the "Hotkey" that brings Flags up, you'll also
 have to do that in the source, just do a 'Find' "SetHotKey" and change
 the string to the key-combo you want.  I could probably have written
 a routine to read the icon, but this would have added to its size.

 There is very little in the way of error-checking, as I wrote it for
 myself, and know my system - but if you're a Blitz Programmer, you
 shouldn't have any trouble altering it to suit you.

 The gadgets are created and deleted each time you call Flags - this
 was for technical reasons that I won't go into, but feel free to alter
 the code to suit yourself.

 @{fg shine}@{"I'll look at the source code then..." link MAIN}@{fg text}
@endnode

@node Topics
@title "FLAGS 2.0"

 @{fg shine}Adding Topics@{fg text}

 There are four program labels that will take you to where you need to
 be to add new topics:

 @{fg shine}.numtops@{fg text}

  Will take you to the #numtopics constant which you should increase
  by however many topics you are adding - this will sort out the topic
  gadgets/window size automatically.

 @{fg shine}.select@{fg text}

  Will take you to the end of the case statement that decides which
  button you clicked - simply add a new statement with the next
  <gadget number> available, followed by your <data label>, i.e.

       @{fg shine}Case@{fg text} <gadget number> : @{fg shine}restore@{fg text} <data label name>

 @{fg shine}.datatitles@{fg text}

  A list of Data$ <topic title> to which you should add your topic
  title at the end - this will be displayed in the topic button, i.e.

       @{fg shine}Data$@{fg text} "Topic Name"

 @{fg shine}.enddata@{fg text}

  will take you to the end of the data statements so that you can
  add yours, which should be in the format:

    .YourDataLabelName            ;as specified in the case statement
     @{fg shine}Data@{fg text}.b n                     ;number of lines of data to follow
     @{fg shine}Data@{fg text}$ "your topic text"      ;followed by the data itself
     @{fg shine}Data@{fg text}$ "etc.........          ;unless you resize the window width
                                  ;you shouldn't go past column 55 in Ted
  You can also include

 @{fg shine}Data@{fg text}$ "x"

  which will cause the next line to be printed in white - @{fg shine}DON'T ADD
  THIS LINE@{fg text} to 'Data.b n' - the loop that prints the text ignores this
  "x".  It will crash if you do - be warned.

  Warning! on a 271 high screen, I can get upto 30 lines - any more
           than this and the program will crash, because it doesn't
           check that the window can fit on the screen - so if you
           need to display more information than will fit, think about
           making the window wider (window 1), and having longer lines.

 That's it.  Hope you find it as useful as I do - I've got ToolsDaemon
 launching flags automatically when I launch Blitz.

 @{fg shine}@{"So that's how I add new topics..." link MAIN}@{fg text}
@endnode

@node Credits
@title "FLAGS 2.0"

 @{fg shine}Credits@{fg text}

 Thanks to Reflective Images for RICommoditiesLib in Blitz Basic 2.1
 which made this possible.  Though I should add that if anyone is trying
 without success to get Ted to recognize @{fg shine}"SetStatus"@{fg text} as a command - my
 version of Blitz (2.1) had a .obj file that was not the same as the .obj
 file created when making an executable of RICommoditiesLib.bb.  I had
 to create a new .obj file by compiling the .bb file, and then running
 MakeDefLibs.bb again.

 One other thing - there seems to be a bug in the commodities lib, because
 it doesn't free up all of the memory when quitted - I have found that
 the usefulness of the program makes up for the amount of memory I may
 lose in a session - I don't know if there is an updated version of the
 RICommoditiesLib that has sorted this.

 *UPDATE*
 Now that Fred (of AlphaSound) has done NCommandSet, with a new commodity
 library, I may do a new version of this program, and will replace this
 version on Aminet.

 @{fg shine}@{"I'll check that then..." link MAIN}@{fg text}
@endnode
