home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / X11R6 / lib / X11 / cbb / undo.tcl < prev    next >
Text File  |  1998-10-07  |  4KB  |  129 lines

  1. #!/usr/bin/wish -f
  2. #  'CBB' -- Check Book Balancer
  3. #
  4. #   undo.tcl -- Undo routines.
  5. #
  6. #  Written by Curtis Olson.  Started December 7, 1996.
  7. #
  8. #  Copyright (C) 1994 - 1997  Curtis L. Olson  - curt@sledge.mn.org
  9. #
  10. #  This program is free software; you can redistribute it and/or modify
  11. #  it under the terms of the GNU General Public License as published by
  12. #  the Free Software Foundation; either version 2 of the License, or
  13. #  (at your option) any later version.
  14. #
  15. #  This program is distributed in the hope that it will be useful,
  16. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. #  GNU General Public License for more details.
  19. #
  20. #  You should have received a copy of the GNU General Public License
  21. #  along with this program; if not, write to the Free Software
  22. #  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23. #
  24. # $Id: undo.tcl,v 2.5 1997/04/11 20:26:52 curt Exp $
  25. # (Log is kept at end of this file)
  26.  
  27.  
  28. #------------------------------------------------------------------------------
  29. # Procedures to handle undo functionality
  30. #------------------------------------------------------------------------------
  31.  
  32. proc undoInit {} {
  33.     global undo
  34.  
  35.     set undo(command) ""
  36.     set undo(data) ""
  37. }
  38.  
  39. proc undoRegister arg {
  40.     global undo
  41.  
  42.     set pos [string first " " $arg]
  43.     set undo(command) [string range $arg 0 [expr $pos - 1]]
  44.     set undo(data) [string range $arg [expr $pos + 1] end]
  45. }
  46.  
  47. proc undoAction {} {
  48.     global cbb key eng undo
  49.  
  50.     if { $cbb(debug) } { puts "un$undo(command) $undo(data)" }
  51.  
  52.     if { "$undo(command)" == "delete" } {
  53.         # reinsert
  54.  
  55.         update_globals $undo(data)
  56.         set key ""
  57.         done_entering
  58.     } elseif { "$undo(command)" == "insert" } {
  59.         # delete
  60.  
  61.         set pos [string first "\t" $undo(data)]
  62.         set key [string range $undo(data) 0 [expr $pos - 1]]
  63.  
  64.         puts $eng "delete_trans $key"; flush $eng
  65.         gets $eng result
  66.         if { $cbb(debug) } { puts "deleting:  $result" }
  67.  
  68.         set cbb(index1) [find_index_from_key [listGetSize] $key]
  69.         if { [expr $cbb(index1) < 0] } {
  70.             set cbb(index1) 0
  71.         }
  72.         update_rest $cbb(index1) $key
  73.     } elseif { "$undo(command)" == "edit" } {
  74.         # change back
  75.  
  76.     set newkey [string range $undo(data) 0 10]
  77.     if { $cbb(debug) } { puts "first need to delete $newkey" }
  78.     puts $eng "delete_trans $newkey"; flush $eng
  79.     gets $eng result
  80.     if { $cbb(debug) } { puts "deleting:  $result" }
  81.  
  82.     set cbb(index1) [find_index_from_key [listGetSize] $newkey]
  83.     if { [expr $cbb(index1) < 0] } {
  84.         set cbb(index1) 0
  85.     }
  86.     update_rest $cbb(index1) $newkey
  87.  
  88.     if { $cbb(debug) } {
  89.         puts "-> [string range $undo(data) 12 end]"
  90.     }
  91.  
  92.         update_globals [string range $undo(data) 12 end]
  93.         done_entering
  94.     } else {
  95.         cbbWindow.ok "Nothing to undo  :-("
  96.         tkwait window .ok
  97.     }
  98.  
  99.     undoInit
  100.     clear_entry_area
  101. }
  102.  
  103.  
  104. # ----------------------------------------------------------------------------
  105. # $Log: undo.tcl,v $
  106. # Revision 2.5  1997/04/11 20:26:52  curt
  107. # $index1, $index2 wrapped up so they are now $cbb(index1), and $cbb(index2)
  108. #
  109. # Revision 2.4  1997/01/02 04:38:39  curt
  110. # Changes over the 1996 holidays:
  111. #   - Converted listbox to text widget.  This allows us to do nice
  112. #     things with alternating background colors, highliting, red
  113. #     negative numbers, etc.
  114. #   - Negative transactions are now drawn in red.
  115. #   - Added a Goto <Today> option.
  116. #   - <Home> & <End> were double bound.  Now, listbox can be traversed with
  117. #     <Meta-Home> and <Meta-End>
  118. #
  119. # Revision 2.3  1996/12/17 14:54:03  curt
  120. # Updated copyright date.
  121. #
  122. # Revision 2.2  1996/12/14 17:15:26  curt
  123. # The great overhaul of December '96.
  124. #
  125. # Revision 2.1  1996/12/08 07:37:50  curt
  126. # Initial revision.
  127. #
  128.  
  129.