# $Id: Changes,v 1.1.1.1 2004/03/09 15:36:16 clif Exp $
# $Log: Changes,v $
# Revision 1.1.1.1  2004/03/09 15:36:16  clif
# The initial TkReplay from Crowley's website.
#
# Revision 1.2  1996/07/31  16:18:15  crowley
# This is the 1.1 revision of tjreplay.  Lots of small changes.
# Most of them from Dean Brettle.  Connecting and replay are
# faster.  Socket support has been added.
#
# Revision 1.1  1996/07/29  22:47:39  crowley
# Initial revision
#
           Changes to TkReplay

---------------- 5 July 1995 Released version 1.0b1 --------------------

10july95 (addition) Added a subscript capability so a script can call
    another script.

10july95 (change) Changed the big red arrow from a transient window to an
    overrideredirect window.  This removes the window manager decorations.
    Also it now moves the big red arrow before the cursor.  This is only
    important if both are on.

10july95 (change) Send asynchronously to the target application during
    replay.  This saves a little code in the target (see rebind.tcl)
    
10july95 (bug) It was not handling "break" in event bindings right before.

11july95 (change) Added facility to execute arbitrary tcl code as an "event".
    This allows checks to be inserted during regression tests.  The new
    event name is EvalTcl.

11july95 (change) Added a wait cursor (a watch) when connecting, loading a
    script and saving a script.

11july95 (bug) The display of the list of connected applications was not
    getting updated correctly when it connected to an application.

11july95 (change) Got rid of the "Bind," in front of most entries in the
    list of recorded actions.

12july95 (change) The event list display for BeginComment and EvalTcl shows
    the first 25 and last 12 characters of the comment or code.  Newlines are
    removed and replaced with "\n" for comments and ";" for Tcl code.

12july95 (change) Added a special case for scrolling so that it always gets
    the right number of scrolls in the replay.  It chnages the Tk scrollbar
    code so that when recording, the autoscrolls are recorded and when
    replaying, autoscrolingl is disabled and the recorded autoscrolls
    are replayed.

12july95 (bug) The renamed widget creation commands did not used to return
    the name of the widget being defined.  Now they do.  Also the bind
    command and the text and canvas bind subcommands now return an empty
    string when a new binding is defined.

17july95 (addition) wrote a simple text editor application to use as an
    example for demonstrations and regression testing.
    
17july95 (change) during the replay the mouse cursor changes to a picture
    of the mouse with a button pressed when a button is pressed.  I used the
    the cursors in the cursor font, leftbutton, middlebutton and rightbutton.

4august95 (bug fix) Some text and canvas widget commands were not working
    right because of how they were redefined.  The actual command was
    evaluated by the original procedure but with "eval" not "uplevel".
    This meant that the command was not evaluated in the correct context
    and some commands did not work correctly (for example, the "-count"
    variable in the text search command did not store its answer in the
    right variable.

7august95 (change) Added a command "Exec Script" which calls another script
    as a subroutine (sub-script).  The new script is loaded and replayed.
    When it gets to the end we go back to the old script at the place we
    called the sub-script and continue on.  This should make it easier to
    manage scripts since they can be mostly small and combined with other
    scripts that call them.

7august95 (change) Removed the option to not show events as they are recording
    or playing

7august95 (change) Speeded up pointing with the big red arrow by remembering
    where it was last and not moving it again if it is already in the right
    place.

7august95 (change) Now I use the cursorfont pictures of a mouse with a button
    down whenever TkReplay simulates pressing a mouse button.

7august95 (change) Added the ability to move around the file system with
    the file selection box.

8august95 (change) Changed around rebind.tcl to define all the procedures
    first.  This makes it less sensitive to changes.
    
8august95 (change) Added more feedback when connecting.  I send a message
    for each existing widget that gets rebound.
    
8august95 (bug) Now I record full path names for scripts.  Before it would
    only record the relative path name and so would not work correctly as
    the current directory moves around (as the FSBox now allows).  I also
    changed all displays of these full path names to be "tildefied" to keep
    them as short as possible.
    
8august95 (change) Got rid of the option "show focus events" (now I never
    do, that is, the mouse pointer does not move to them) and "show enter
    events" (now I always do).
    
8august95 (change) Changed "*** Beginning of script ***" tp
    "--- Beginning of script ---".  Ditto for "*** End of script ***"
    to ""--- End of script ---".  They seemed less heavy.
    
8august95 (change) Changed the command line options allowed for tkreplay.tcl.
    "-app xxx.tcl" gives a tcl program to load (wish must be in the PATH).
    "-script xx.scr" gives a script to load.  The "-script" is optional.

9august95 (bug) Added "catch"s to several sends so that the target
    application will not fail if TkReplay is exits.

9august95 (change) Added -play and -playfast command line options.  Now you
    can load the target application, connect to the target application,
    load the script and play the script from the command line.

9august95 (change) Added a -mousespeed option so you can set the mouse speed
    from the command line.  The mouse speed is the number of pixels the mouse
    takes each step.  It can range from 1 to 2000 (which is essentially
    infinity since few screens are any bigger than that.  Legal values for
    -mousespeed are: slow (=1), medium (=3), fast (=6), veryfast (=100),
    warp (=2000) or a positive integer.

12august95 (bug) Changed the recording of %-fields so it is not possible
    for {x {%x}} and {y {%y}} to be duplicated.

13august95 (change) Changed ExecScript so that it records a path name
    relative to the directory that TkReplay started up in.  This should
    allow scripts to be recorded and still work if the whole directory
    tree is moved.  This means I can record demo scripts with sub-scripts
    and they will work no matter where TkReplay is installled.

14august95 (change) I have removed the "Move event up" and "Move event down"
    command from the Edit menu.  It is much better to move groups of events
    and it is better to do it with a text editor.  I left the Tcl code
    to do the move just in case I want to use it later.

17august95 (bug) There was still a problem in how TkReplay handled "break"s
    in binding scripts.  The problem is that Tk only allows the "break"
    in the direct binding code, not in a proc.  But even if it is in the
    direct binding code before TkReplay binds it, it is called in a
    procedure by TkReplay.  The fix is to detect the error ("break called
    outside a loop") and convert it to a real break by using the
    "return -code break" command.  I also detect a "cntinue outside of a
    loop" error and convert it to a continue return.

---------------- 17 August 1995 Released version 1.0b2 --------------------

13sept95 (bug) Pointing does not fail for events with no widget

26oct95 (bug) Added code to handle "after" events better.  Before I used a
    special case to get scrollbars to work correctly.  I changed it so that
    all uses of "after" to auto-repeat should work correctly.  This means
    that the auto-repeating in pad++ zoom in and zoom out should work.
    This also fixes some problems in a script that created windows in
    and "after" command

1nov95 (bug) Changed the handling of "tkwait" so that "tkwait visibility"
    works.  Before, events were timing out too quickly.

---------------- 1 November 1995 Released version 1.0b3 --------------------

7nov95 (change) I moved the demo scripts into a "demos" subdirectory.

9nov95 (bug) The problem was that "tkwait visibility" would sometimes fail
    because things take so much longer when connected to TkReplay and so
    the window came up before the "tkwaut visibility" call.  Since it
    tests for a "change" in visibility and the change already happened
    it hung forever.  My fix is to change it to an "update idletasks".
    But this problem may come up in "tkwait variable" and "tkwait window"
    since they also are based on state transitions not absolute states.


---------------- 10 November 1995 Released version 1.0b4 --------------------

2apr96 (bug) in rebind.tcl, proc after, the idle and cancel cases:
    $subcommand should be passed to after_rd

7may96 (bug) Tk4.1 sometimes cancels an "after" with a null string when
    there was not after event waiting.  That is okay normally but when
    I did it in an "uplevel" the empty string disappeared and this
    caused a syntax error (in rebind.tcl).  Fixed by checking for it.

7may96 (change) The default mouse speed on replays was doubled.

7may96 (change) Disabled buttons and commands that are only allowed
    during recording when re ording is off.
    
14may96 (change) Allow communication by sockets instead of send since
    send only works on UNIX (not Windows or Mac versions of Tcl).

15may96 (change) Added command line options:
    -movemouse -- Move the mouse pointer when replaying.  (default)
    -nomovemouse -- Do not move the mouse pointer when replaying.
    -movearrow -- Move the red arrow when replaying.
    -nomovearrow -- Do not move the red arrow when replaying.  (default)
    -usesend -- Use the send command to communication between TkReplay
        and the target application.  (default)
    -usesockets -- Use sockets to communication between TkReplay and the
        target application.

15may96 (bug) Added checks to make it impossible to add events in
    front of the --- Beginning of script --- event.

25june96 (bug) Finally got sockets to work.

---------------- 1 July 1996 Released version 1.0 --------------------

17july96 (bug) Changed startup code so that tkreplay is initialized before 
    loading or connecting to an application. --DWB
  
17july96 (bug) Removed reference to demos directory.
  
17july96 (bug) Removed references to wpwish.

17july96 (bug) Changed "Load application" to use the tail of the path to the 
    application as the name of the remote interpreter. --DWB

17july96 (bug?) Handling of "break" and "continue" in bindings corrected, I
    think... --DWB

17july96 (change) Removed dependencies on installation directory.  It is now
    possible to use the environment variable REPLAY_LIBRARY to point to the
    correct directory. Changed README to reflect it. --DWB

17july96 (change) Removed dependencies on the name of the interpreter. It is
    now possible to use the environment variable REPLAY_WISH to point to the
    correct interpreter. Changed README to reflect it. --DWB

17july96 (change) Removed dependencies on location of wish4.1 executable in 
    tkreplay.tcl and test*.tcl scripts.  --DWB

17july96 (change) Will now run an application with its preferred wish if the
    application is executable.  --DWB

17july96 (change) Can now record and play from Itcl2 apps.  --DWB

17july96 (change) Put a catch around the only Tcl 7.5/Tk 4.1 dependency I 
     could find (i.e. the "package" command).  Changed the README to reflect
     it.  --DWB

18july96 (performance bug) Changes to SubInAction may have improved
    replay speed. --DWB

23july96 (performance bug) Speeded up connecting by recoding GetPercentFields
    to use regsub instead of going through the characters one by one in tcl.
    Went from 60 ms per invocation to 4 ms.  Connecting is about four
    times faster.  Thanks to Dean Brettle for this change.

26july96 (change) I changed the way socket ports are specified in tkreplay.tcl
    and in test1.tcl.  Now they take an argument with four parts:
        tkreplay.tcl -usesockets my_port his_name his_port
    test1.tcl takes similar arguments.

29july96 (bug?) Option menus were displaying where they were recorded instead
    of where they were replayed.  The option menu code in Tk library file
    menu.tcl would use the the X and Y coordinates if they existed.
    Otherwise it would center the menu on the option button.  The fix was
    to detect this case and remove the Y field.  Seems to work.

---------------- 1 August 1996 Released version 1.0 --------------------

14aug96 (documentation) Added a section in the help file about subscripts.








