*********
CanDo 1.60 stuff...
*********

New Installation Procedure:
  Systems with less than 1 meg and/or only one floppy:
    CanDo needs at least 1 meg of ram and at least two floppies or a hard
    drive.  You will need about 3 meg of free space on your hard drive to
    successfully install the software.

  AmigaDos 1.3 Systems with 1 meg or greater and two floppies:
    Simply duplicate all three CanDo diskettes.  Reboot you system but
    instead of using your normal workbench diskette boot off the CanDo
    Program diskette.  Once you have rebooted with the CanDo Program
    diskette you will want to delete the three files "Installer",
    "Install-ToHardDisk" and "Install-ToFloppy20", this will give you about
    200k worth of workspace on your boot disk.  You might want to make
    multiple copies of this boot disk and store different projects on each
    one.  That way to switch between projects you simply reboot your system
    with that project's boot disk.
    
    As for the CanDo Extras disk copy that you made, you will need to leave
    that in your second drive.  CanDo will need this disk available while
    it is running.
    
    NOTE: when you duplicate the three CanDo diskettes you must rename them
    back to their original disk names.  CanDo will look for things on those
    diskettes by the name of their disk.
  
  AmigaDos 2.0 Systems with 1.5 meg or greater and two floppies:
    After booting the system with your 2.0 Workbench disk, duplicate all
    three CanDo diskettes (renaming them back to the correct names).  Then
    insert your copy of the CanDo Program diskette into one of your floppy
    drives.  Double click on the disk icon.  Once the diskette's window
    opens up you should click on the icon named "Install-ToFloppy20".  This
    program will then walk you through the installation procedure.
    
    Once you are finished, reboot your system with that CanDo Program
    diskette.  You should then delete three files: "Installer",
    "Install-ToHardDisk" and "Install-ToFloppy20", this will give you about
    200k worth of workspace on your boot disk.  You might want to make
    multiple copies of this boot disk and store different projects on each
    one.  That way to switch between projects you simply reboot your system
    with that project's boot disk.

    As for the CanDo Extras disk copy that you made, you will need to leave
    that in your second drive.  CanDo will need this disk available while
    it is running.
    
    NOTE: when you duplicate the three CanDo diskettes you must rename them
    back to their original disk names.  CanDo will look for things on those
    diskettes by the name of their disk.
  
  Hard drive systems (AmigaDos1.3 or 2.0) with 1 meg or greater:
    After booting your system from the hard drive, insert the CanDo Program
    diskette into one of your floppy drives.  Double click on the disk icon.
    Once the diskette's window opens up you should click on the icon named
    "Install-ToHardDisk".  This program will then walk you through the
    installation procedure.

    NOTE: When running under AmigaDOS 2.0 with a hard drive we recommend
    your system have at least 1.5 meg of RAM.

New ToolTypes:
  AutoBackToBrowse={logical}
    ; when we go back to mainpanel do we go back to browse automagically
    ; defaults to= not set
    ; if not set = NO
  
  AutoIndent={logical}
    ; This allows you to turn on and off the auto-indenting feature of the
    ;  script editor.
    ; defaults to= not set
    ; if not set = YES
    
  BigEd={logical}
    ; adds 5 lines of text and two more editor tool holes in the tool bay.
    ; defaults to= not set
    ; if not set = NO
    
  ButtonBeep={soundfilename}
    ; if this is filled in then when ever you create a new button CanDo
    ;  will automagically generate a OnClick script with a PlaySound
    ;  using the give soundfilename.
    ; defaults to= not set
    ; if not set = nothing is generated
  
  CopyCommand={pathfile}
    ; used in various operations
    ; defaults to= not set
    ; if not set = "Copy"
    
  DeleteCommand={pathfile}
    ; used in various operations
    ; defaults to= not set
    ; if not set = "Delete"
    
  DocumentBeep={soundfilename}
    ; if this is filled in then when ever you create a new document object,
    ;  CanDo will automagically generate a OnClick script with a PlaySound
    ;  using the give soundfilename.
    ; defaults to= not set
    ; if not set = nothing is generated
  
  FieldBeep={soundfilename}
    ; if this is filled in then when ever you create a new field, CanDo
    ;  will automagically generate a Select script with a PlaySound
    ;  using the give soundfilename.
    ; defaults to= not set
    ; if not set = nothing is generated
  
  FixedPointSize={logical}
    ; This will make the font requester disable scaled fonts under 2.0x.
    ;  No means that scaled fonts are available
    ;  Yes means only fonts/sizes that really exists on disk are available
    ; defaults to= not set
    ; if not set = YES under 1.3x and NO under 2.0x
    
  KeyBeep={soundfilename}
    ; if this is filled in then when ever you create a new key object, CanDo
    ;  will automagically generate a OnDown script with a PlaySound
    ;  using the give soundfilename.
    ; defaults to= not set
    ; if not set = nothing is generated
  
  LayOutLeading={0-10}
    ; used by the layout tool from ProPack.  This provides an extra pixel
    ;  (or more) between the lines rendered by the LayOut tool.
    ; defaults to= not set
    ; if not set = 1
    
  MaxHelpEvents={1 to 100}
    ; when remembering past help subject how far back to we record.
    ;  1 would mean don't bother recording history.  the larger the
    ;  number the more memory would be needed.
    ; defaults to= not set
    ; if not set = 25
  
  MenuTool={objtoolname}
    ; any object tool can have it into the new Tools menu.  Up to 5 tools
    ;  may be placed by having multiple lines of the MenuTool tooltype.
    ; defaults to= not set
    ; if not set = no menu appears
    
  NameDelimiter={single ascii character}
    ; In the 1.5 version of CanDo each new object was named 'Button#1',
    ;  or some similar name, but in 1.6 the names have been changed to
    ;  'Button_1'.  The reason for the change (other than to confuse you)
    ;  was that when making database objects the '#' symbol caused problems
    ;  with the created variable names.  The '_' is not much of a change
    ;  and will make creating database objects easier.  Also under 2.0
    ;  of the operating system the '_' character is now used in the
    ;  BumpRevision() function, we use the function for duplicating objects.
    ;  If you want you can change the character now to whatever you like.
    ; defaults to= not set
    ; if not set = "_"
    
  ObjectBeep={soundfilename}
    ; if this proves to be a valid 8svx sound file then this tooltype will
    ;  act as if you had all four tooltypes: ButtonBeep, KeyBeep, FieldBeep
    ;  and DocumentBeep filled in with the same soundfile.
    ; defaults to= not set
    ; if not set = nothing is generated
  
  RenameCommand={pathfile}
    ; used in various operations
    ; defaults to= not set
    ; if not set = "Rename"
    
  SampleWindow={logical}
    ; If this is yes then the font and border requesters open a sample window.
    ;  This is useful but will take a little more memory for these requesters.
    ; defaults to= not set
    ; if not set = YES
    
  SaveMethod={0|1|2}
    ; 0 = same as old way
    ; 1 = copy old file to xxx.bak, save new file, if successful delete
    ;    the old file xxx.bak.
    ; 2 = same as way #1 except we will not delete old file
    ; defaults to= not set
    ; if not set = 0
    
    
Changed ToolTypes:
  IconDefaultTool={pathfile}
    ; if cando creates a deck icon, this will be its default tool.
    ; defaults to= "C:DeckRunner"
    ; if not set = "DeckRunner" <- used to default to "C:DeckRunner"
    ; the reason for the change to that deckrunner can now be anywhere
    ;  in the workbench's path which automagically includes "C:"


Changed ObjectTool:
  ARexx ObjectTool
    The ARexx tool will now allow for a empty string to be used for the
    message that it is waiting for.  If an empty string is given then
    all messages that reach this object will be handled.  In this case
    the first word of the message will not be parsed off and you can
    do it your self in the ARexx object script.  The primary problem with
    this method of trapping arexx messages is that if there are any other
    ARexx object looking for specific message they have to be before (in
    the ARexx object list) this 'Catch All' object or they will never be
    seen.
  
  Menu ObjectTool
    There has been constant confusion about the label in menus since we
    release CanDo.  The label in the text/font requester is and always
    has been the label printed in the menu bar.  This is just like the
    label in text buttons.  The confusion is caused by the fact if you never
    specify a menu label we default to using the object name.  So what we
    have done is this (listen carefully).
    
    1. If you are creating an item (via Add) AND you do not specify a
       label THEN the label will default to the object name.
    
    2. If you are editing an item AND change the object name AND the
       label matches the original object name (including case) THEN we
       change the label to match the new name.
    
    3. If you select Paste or CopyOf AND if the label is the same as
       the objectname (including case) AND if the objectname is changed
       (ie. Copy of...) THEN the label will be changed.
    
    You really don't have to think much about this stuff because it works
    more naturally than the old system.


XtraTools changes and additions:
  You will find a few new xtratools on the CanDo Examples diskette, also
  due to space considerations we have moved the RightMouseButton and
  MenuRender tools from the CanDo Extras diskette to the CanDo Examples
  diskette.  The installer program will move tools in the MoreXtraTools
  drawer on the Examples diskette into the XtraTools directory for you,
  but if you are running from a floppy only system you will have to
  rearrange the CanDo Extras diskette's XtraTools drawer yourself.
  
  There are two new xtratools: GamePort and Proportional.
  
  GamePort XtraTool:
    The gameport tool allows you to attach scripts to the actions of
    the joystick or mouse attached to the 2nd gameport of your Amiga.
    The object's definition requester lets you specify either mouse
    input or two types of joystick input.  These object events operate as
    follows:

      Mouse - When the mouse icon is selected, your script will execute
      based on the conditions defined in the "Triggers..." section.  The
      coordinates for X and Y Movement, in this case control the number of
      of mouse movement pulses or units for which to wait before actually
      causing your script to execute.  The "Jiffies" field is used to
      cause your script to execute every 'n' jiffies (a jiffy is 1/60 of a
      second), for continual analysis of the current mouse position.  We
      suggest that most applications use zero in this field so that
      scripts execute only when the mouse is moved.

      Joystick - The gameport object supports any Amiga compatible
      joystick or hardware that simulates one.  The "Freedom..." object
      requester lets you select either 4 or 8 discrete directions to
      activate your script.  Two styles of input may be selected.  The
      first style (enabled by highlighting the upper joystick icon) will
      cause your script to execute repeatedly as long as the stick is
      held in any direction other than center.  The second style (lower
      joystick icon) will only activate your script when its state
      changes.  The "Jiffies" field may be used as with the mouse to
      continually poll the joystick for its current position.

      The "Button..." selection may be used to specify how buttons will
      execute your script.  You may choose to execute your script
      when a button is pressed, released, either, or ignore any
      button presses.  Note that both 2 and 3(AmigaDOS2.0) button mice
      and 1, 2, and 3 button joysticks are supported.

    Once you've specified the attributes of the gameport object, you
    have four arguments passed to you in your script.  They are as
    follows:

      ARG1 reflects the button status when a button action causes your
      event.  FLAGS returned are:

        NONE, LEFT DOWN, LEFT UP, MIDDLE DOWN, MIDDLE UP, RIGHT DOWN,
        RIGHT UP

      Example:

        If a button did not cause your event then "NONE" will be
        returned in arg1 when your script executes.

        If the left button is pressed down then "LEFT DOWN" will be
        returned in arg1.

      Most popular joysticks with only one button will set the LEFT flag.


      ARG2 is the direction desciption of the joystick.  This is
      inhibited to only 4 flags when the Freedom is set to four
      directions.  FLAGS returned are:

        UP, UP RIGHT, RIGHT, DOWN RIGHT, DOWN, DOWN LEFT, LEFT, UP LEFT


      ARG3 and ARG4 contain relative movement information on how far
      the mouse/joystick has moved in the X (arg3) and Y (arg4) direction.


    Please refer to the decks on your CanDo Examples and Utilities Disk for
    an example implementation of the gameport object.


  Proportional XtraTool:
    The proportional tool allows to add slider like objects to your card.
    These can be your normal left/right or top/down sliders or two
    dimensional sliders like the 1.3 screen position preference tool.


    Adding proportional sliders to your application is similar to adding
    buttons.  Sizing and positioning is the same.  The slider may be
    defined as either an image or an "AutoKnob".  To use an image for
    the slider you may specify a brush as you do for a normal button or
    menu.  The "AutoKnob" option gives you a normal proportional slider
    like those used in many file requesters and lists.  The size of
    the knob as it relates to its container is proportional to the data
    that it manipulates.  You also have the option of having a system
    border around the slider area.

    Your proportional slider can be configured to slide horizontally,
    vertically, or both by selecting the corresponding "Freedom..."
    button.  The slider can then be defined to return a range of values
    based on the integers you supply in the top, bottom, right and left
    fields.  Initial position and size of the slider can be defined
    from the Freedom requester.

    Once you have created a slider, you may query its position with the
    GetPropPosition command.  See it and other new scripting commands to
    set and retrieve various data regarding proportional sliders in the
    new command documentation.  Also refer to the examples on the
    3rd disk for a demo application.
    
  
EditorTools changes and additions:
  We have added one additional editor tool: CoordinateBox.
  
  CoordinateBox EditorTool:
    This works just like the Coordinate tool that you already had but
    instead of returning simply a coordinate this returns both the
    coordinate and size of the dragged out box.

Changed Commands/Functions/Variables:
  FileReadChars {FileReadBuffer}, <varname>, {charcount} [,HEX]
    ; if the HEX keyword is given then the read characters are converted
    ;  into a hex string (see CharsToHex/HexToChars).
    
  FileWriteChars {FileWriteBuffer}, {text} [,{charcount} [,HEX]]
    ; if HEX is given then the text is assumed to be a hex string.  the
    ;  hex string is converted into a character string and written.  you
    ;  have to provide the charcount if you want to use the hex keyword.
    ;  if charcount is MAXINTEGER then the whole text string is used so
    ;  this is the easiest way of just writing binary info without knowing
    ;  how long the string is.
  
  
New Commands/Functions/Variables:
  ClosePendingWindow
    In certain cases subwindows will not close after their card quits.  This
    command will force the subwindow, that may be pending, to close.  This
    command is safe to call at any time so use it as much as you want.

  GetPropPosition {ObjectName}, <HozPosVarName> [,<VertPosVarName>]
    This will retrieve a proportional object's positional values.

  GetPropRange {ObjectName}, <LowHozVarName>, <HighHozVarName>...
         ...[,<LowVertVarName>, <HighVertVarName>]
    This will retrieve a proportional object's upper and lower range limits.

  GetPropVisibleRange {ObjectName}, <DisplayHozVarName> [,<DisplayVertVarName>]
    This will retrieve a proportional object's visible size.
  
  LoadPalette {FilePath} [,{PaletteBufferName} [,<loadflags>]]
    This will load only the palette part of a picture or brush.  The
    resultant buffer can be used only by the ShowPalette command.  See page
    7-7 in the yellow manual for a for a full description of the load flags.
    
  SetPropPosition {ObjectName}, {HozPos} [,{VertPos}]
    This will set a proportional object's positional values.

  SetPropRange {ObjectName}, {LowHoz}, {HighHoz} [,{LowVert}, {HighVert}]
    This will set a proportional object's upper and lower range limits.

  SetPropVisibleRange {ObjectName}, {DisplayHoz} [,{DisplayVert}]
    This will set a proportional object's visible size.
  
  SetSystemRequesterTo WORKBENCH | NOWHERE | WINDOW
    ; this redirects the dos autorequester (the thing that ask for a specific
    ;  disk to be inserted) to a specific place.
    ; WORKBENCH means that the requester should open on workbench (default)
    ; NOWHERE will turn off the requester (it won't open at all)
    ; WINDOW will cause the requester to open on the current window's screen.
  
  Let {hexstring}=CharsToHex( {string} )
  Let {string}=HexToChars( {hexstring} )
    ; these will convert a string into its equivalent hexstring and back
    ;  again. the hex string will be exactly twice as long as the string.
  
  Let {hexstring}=IntegerToHex( {integer} )
  Let {integer}=HexToInteger( {hexstring} )
    ; this will convert a integer into its hex equivalent and back again.
    ;  this convert to the minimum hex values (ie. no leading zeros). if
    ;  you want the hex string with leading zero simply use the
    ;  RightJustify() function.
  
  Let {address}=ScreenAddress
  Let {address}=WindowAddress
    ; these return integers that are the physical address your card's screen
    ;  or window.  Only really useful for 'C' or ASM programmers.
  
  ResizeWindow {NewWidth},{NewHeight}
    ; this will cause the current window to be resized.
  
  
Bugs Fixed:
  1:  # vs NOT operator:
    On page 7-1 of the index it seems that the '#' symbol is the same as the
    'NOT' operator.  They are not the same!  The '#' operator is like the
    '<>' not equal to comparison operator where as the 'NOT' operator is
    is a logical operator.
      
      Let Foo=27
      If Foo # 27
        Echo "Foo is not equal to 27"
      Else
        Echo "Foo is equal to 27"
      EndIf
      
      ..where as..
      
      If Not ObjectState("Button#1")
        Echo "Button#1 is not on"
      EndIf
  
  2:  Early versions of CanDo 1.5 could not handle spaces preceding variable
    names correctly in some cases.  This has been fixed.
  
  3:  In CanDo 1.0x the expression system let zero(0) be the same as a logical
    FALSE.  Under CanDo 1.5 they were not the same.  This bug also causes
    one(1) not be TRUE.  This has been fixed, it works like CanDo 1.0x.
  
  4:  If you where reinstalling CanDo 1.5 into the same place as your old
    CanDo 1.0x then the installer would leave both the old routine object
    and editor tool.  While the old object tool did not cause problems the
    editor tool would show up in the editor tool strip and when clicked on
    would cause a fatal error.  The new installer will now remove these
    old tools if they exist.
  
  5:  The timer objects in CanDo 1.5 caused numerous, but seemingly
    unrelated, problems including: Clearing Integer Fields (including
    CanDo's), Preventing ARexx events from being seen, Preventing 
    button events from being process in a timely fashion and generally
    causing general chaos.  This has been fixed.
  
  6:  In certain PAL machines CanDo's mainpanel would slide too far up the
    user's screen.  It now appears down where it is supposed to be.
  
  7:  If the user specifies alternative screen fonts under 2.0 the utilities
    would not adjust correctly.
  
  8:  Relocator utility was not creating a icon for its saved decks.
  
  9:  If an object did a showpicture, the objects do not refresh the first
    time.  Every time there after the objects refresh correctly, strange.
    This bug has been fixed.
  
  10: If you open a file, with the OpenFile command, in APPEND mode and the
    file does not exist system returns an error (Object Not Found).  It
    was supposed to create the file in that case.  It now does.
  
  11: CanDo's filerequester was getting confused if the user given it
    relative path and/or filename in its tooltypes.
  
  12: The old hard drive installer has been replaced and we now use the
    Commodore Standard Installer.
  
  13: The color bars caused fatal errors in certain cases in 1.5.  This has
    been fixed.
  
  14: The Button object tool had problems with shape only buttons when
    dealing with highlight selection.
  
  15: The Printer utility was forgetting its tabsize settings.
  
  16: The BrushAnim Editor Tool was generating the Sync flag backwards.
  
  17: The TrimString function was causing unpredictable memory munging.
  
  18: Daily timers that were set to go off on a certain day of the week
    were going off everyday.
  
  19: Under certain cases the Script Editor would generate very long
    lines and cause a fatal CanDo crash.
  
  20: Various Dual Floppy problems have been fixed.
  
  21: Strange mask and/or shape problems have been fixed.  You may have
    noticed this will large images on buttons or with ShowBrush if you
    had transparent ON.
  
  22: SetBrushAnimFlags no longer leave brushanims buffers in use.
  
  24: Various memory leaks have been plugged.
  
  25: InsertRecordNames leave a blank line like the rest of the Insert
    commands.
  
  26: SetText and GetTextDimensions both suffered memory leaking problems.
  
  27: FTXT documents that were multibound were not be looked for correctly.
    They will now be found if they are multibound to the deck application.
  
  28: Under 2.0x your deck windows (if set up for workbench) were not
    following the Shanghai flags correctly (if you don't understand don't
    worry).
  
  29: Your decks should now have 2.0x new look window borders and sliders
    when running under 2.0x.  This may cause you to do some color problems
    but for the most part every deck we looked at appeared just fine.
  
  and various cosmetic bugs and help file have been corrected.




*********
Original Errata to The Manual Supplement For CanDo v1.5
*********

This file contains all last minute changes and corrections to the 
manual supplement which came in this package.

*********
Section 1
*********
  
  Page 12, Under "New Shortcut Keys"

The shortcut keys for 'CanDo screen to back' and 'CanDo screen
to front' are incorrectly listed.  They should read:

  Control-Shift-F9  - CanDo screen to back
  Control-Shift-F10 - CanDo screen to front

*********
Section 2
*********

  Page 5, Script Example under "ShutDownDeck - a utility..."

This script example is incorrectly formatted and, as such, is
difficult to understand.  The correct formatting is as follows:

  Let count=1 ;initialize count to zero
  While count<10 ;loop until count becomes ten or greater
    PlaySound "CanDo:Sounds/DogBark.snd"
    Let cnt=cnt=1 ;we misspelled our count variable
  EndLoop ;we'll never end
  NextCard ;go to the next card

*********
Section 3
*********

  Page 2, Command Examples under "Parameters Passing Between
Cards"

  The optional arguments need only be preceded by a comma in
the "GotoCard" command line.  The comma is not required for the 
FirstCard" command line or the subsequent similar commands.  The list 
of command templates is shown properly below:

  GotoCard "CardName" [,Arg1,Arg2,...Arg10]  
  FirstCard [Arg1,Arg2,...Arg10]
  LastCard [Arg1,Arg2,...Arg10]
  NextCard [Arg1,Arg2,...Arg10]
  PreviousCard [Arg1,Arg2,...Arg10]

*********
Section 6
*********

  Page 33, Under "Command: SetViewOffset <x>,<y>

  The sentence which reads, "If your window has menus, it may
be necessary to use the Xtra Tool, MenuRender, to create a
"Before Rendering Menus" script to set the view back to 0,0." is
incorrect.  The recommended procedure is to use GetViewOffset to
determine the 'pre-menu rendering' position and to set them with
SetViewOffset.  Setting the view to 0,0 is not recommended.


