

               
           Gui4Cli VERSION 3.0/3.1 - April 1997 - Changes
--------------------------------------------------------------

************ VISUAL EDITING :
-------------------------------

- You can now visually edit guis with CONTROL-mouseclick.
  Gadgets/Graphics/Icons etc can be moved, resized, cloned into
  other windows, deleted and the gui can be saved out.
  Read all about it.. 


************ LISTVIEWS :
--------------------------------

- Handling Listviews has changed and so have the relevant listview
  commands. Listviews are now handled by CURRENT LISTVIEW and 
  CURRENT LINE of the current listview.

  The listview commands no longer have the GuiFile GadID arguments
  but instead act on the CURRENT listview and it's CURRENT line. 

- LVUSE GuiFile GadID - will make the specified listview the CURRENT
  one and all the LV internal vars will reflect this. When the user
  clicks on a listview, that LV is automatically made the CURRENT LV.
  This command is to allow you to specify any other LV you may want.

- LVGO first|next|prev|last|#LineNumber
  will change the CURRENT LINE to the line specified (without moving
  the actual listview visually).

- LVSEARCH string CI|CS First|Next
  will search the listview for a certain string (CI=case insensitive,
  CS=sensitive) and will return with the first/next lines found.
  The listview's internal vars will point to the line found or "",
  for no (or no more) lines

- LVMODE NUM|TXT|MULTI|DIR will change the listview's mode on the
  fly. Watch out though.. strange things may happen.

- Listview loading of files is now faster.

- You can now use the ARROW buttons to move a listview. You must NOT
  have declared a "xONKEY #R" command for this to happen. G4C will
  itself decide which LV to move (in a totally intuitive way). You
  can use up/down or shift up/down (for top/bottom) or control up/down
  for fast scrolling, or left/right or shift/control left/right. 


************ IMAGES :
--------------------------------

- Now Images can be used, via the datatypes.library (OS V39+ only)
  Images are handled differently from icons, so that memory is saved.
  You first load an image and give it a "Alias" (i.e. any name you want,
  to which you can thereafter refer). Then you can use it in many guis,
  as a background or as an Image, without having to load an other copy
  of it. When you're done, you unload it..

  Image commands :

  o LoadImage ImageFile Alias ScreenName|NoRemap
    will load the ImageFile, call it the Alias you gave and if you give
    a screen name, the image will be remaped to that screen's colors.
    If "NoRemap" is given, the image will not be remaped.

  o UnloadImage Alias - will unload that image

  o WinBackground IMAGE Alias 0 
    will use the (already loaded) image and tile it to the window's 
    background.

  o IMAGE Left Top Alias
    will place the (already loaded) picture at the position specified.
    L T of -1 means center in window.

  o ChangeImage GuiFile GadID Left Top Alias
    will change the specified picture, to the "Alias" named picture
    which must have already been loaded. L T of -1 means position unchanged.

  IMPORTANT !!!

  O ICON L T IconName - is now used (instead of IMAGE) for displaying a
    non-clickable icon (sorry about any changes you have to make..)


*********** NEW GADGETS/EVENTS :
--------------------------------

- xAREA L T W H COMP|BOX|NONE
  is a area hit gadget, like an invisible Button. Nothing will be
  shown unless the gadget is hit, whereupon it will COMPlement the
  area, or draw a BOX around it, or leave it alone (NONE).

- xPALETTE L T W H
  will draw a palette gadget from which you can choose colors.
  Every time a color is selected, the palette will "happen" and the
  internal variables COLOR.R, COLOR.G, COLOR.B, COLOR.NUM, COLOR.TOTAL
  will contain the R G B values, the color number and the total number
  of colors. The number of colors is taken from the screen that the
  window with the palette gadget will open on.
  You can update a palette by choosing an other color :
  > update GuiName gadID NewColorNumber
  Look at the palette.gc gui to see an example 

- GAUGE L T W H IN|OUT BUTTON|RIDGE|ICONDROP APEN BPEN PERCENT
  will draw a gauge which you can give a gadid to and thereafter update
  as you need. The arguments are the same as for a BOX excpept for
  APEN = the number of the foreground color, BPEN = background color
  PERCENT = the starting percentage.


*********** OTHER CHANGES :
---------------------------

- Also added : ELSEIF and ELSEIFEXISTS
  which act the same as a new if within an if construct and can also 
  deal with AND/OR etc constructs.

- Also added : OR, AND, ORIFEXISTS, ANDIFEXISTS
  which take the same arguments as the respective IF and IFEXISTS 
  statements and which *MUST* follow immediately after an IF or IFEXISTS
  or an ELSEIF or ELSEIFEXISTS. 

  AND and OR also work with the WHILE statement.

  The above commands allow for some really tricky logical sequences, 
  so be sure you have it right. Use the DEBUG option to see how they work.

- Added disk information (sizes etc) in the device list of the listviews.
  Disk Errors or validation will also be shown (if they happen).

- Made the following change to env: Variable notation :
  .MyVar denotes an env: variable called .MyVar (as you knew)
  ..MyVar denotes an env: variable called MyVar (new)
  i.e. a double full stop now denotes an env:variable *without* the
       starting full stop.
  This allows you to set/read "normal" env variables also.

- The COPY command is now smarter. It will understand if you give a
  file name (instead of a dir) as the destination and create or overwrite
  the destination file. In short you can use it as 'copy as'.
  This is *not* the case with ACTION or LVACTION.

- CALCVAR ResultVar  Argument operator Argument
  will provide some means of calculating. The Arguments *must* be (or
  evaluate into) numbers and the result of the calculation will go into 
  ResultVar.  All calculation are *Integer* only! 
  As with SetVar, you can also do this which means the same thing :
  ResultVar == Argument operator Argument  (i.e. MyVar == 2 * 3)
  Operators are : + - * / also % (modulus) and ^ (to the power of)

- VARPATH VariableSearchPath   (Global Command)
  introduces the use of PRIVATE VARIABLES in Gui4Cli. This command
  is for defining paths for setting/searching private variables.
  With this, the variable system has changed dramatically and it is now 
  better and faster. Read the variable section in the guide for more.

- The INTERNAL VARIABLES have been rewritten completely, and there
  are now many more of them - look at the guide.

- INFO GUI|GADGET|PALETTE|IMAGE Guiname|Guiname/GadID|ImageAlias
  will choose an other GUI (and thereby it's window and screen) or
  GADGET, PALETTE or IMAGE. After this command is issued, the respective 
  internal variables will show you the information for the new item
  chosen.

- PARSEVAR Variable
  is a command that will take a variable and split it up into arguments
  (words or quoted strings), returning them as internal variables.
  Note - the ; character ends the line (like in G4C)

- A new form of DEBUG is available now. The old one still exists.
  The new one can be started/stopped at any time, with "Set DEBUG ON" 
  (or off), without having to start up G4C in debug mode. The new
  one will show you cryptic statements instead of KeyWords and Opera-
  tors, but is otherwise same. 

- Also, if you press any key while in debug mode you'll get it's 
  Code & Qualifier values.

- xONKEY has now 2 new choices :
  xONKEY #R  - means any raw key pressed
  xONKEY #V  - means any vanilla key (apart from CONTROL keys).
  Raw keys are the arrows, help & function keys - all others are
  called "Vanilla" keys (God knows why..)
  The internal vars $$RAWKEY.CODE, $$RAWKEY.QUAL, $$VANKEY.CODE
  $$VANKEY.QUAL, $$VANKEY.LETTER, will contain the relevant key codes
  and qualifiers (qualifiers are the shift, alt etc keys).

- Added \#number to command line parsing - allows to take control of
  outputing stuff to the console & printer. 
  See the guide at: "Important topics/Constructing command lines"

- Added new ACTION/LVACTION CLI command which will execute a command
  line recursively through dirs&subdirs substituting the $$FILE
  internal var in the command line given, with the file name.

- SETGAD will now also take a range of gadgets to act on.
  SetGad MyGui 1/15 OFF - for example will set gadgets 1 to 15 off.

- Added Event xLVHOOK which is for Multi and Dir LV's and will
  "happen" whenever an item on the LV is clicked on once.
 

*********** Bug Fixes :
-------------------------------

- Fixed listview reading of binary files. Now the whole file is read.

- Fixed H= operator # wildcard to recognise \n,\r,\t as text characters.

- Changed c:Gui and it will now launch Gui4Cli *with* your default paths
  even if started up from the wb.

- Fixed centering of gadgets using -1 -1 for left top (hopefully..)

- EZReq will now use the calling gui's name as its title and not use the 
  gui's window title as it did before.

- Now if a window tries to open in a minimized size, it will be enlarged.

- Fixed multiselect lv handling to recognise a double-click only when
  the user double-clicks the LV same line.

- Fixed the BUFFERS=buffersize CLI argument. It actually works now..

- Fixed window resizing with the GadChange command.

