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

  1. #!/usr/bin/wish -f
  2. #
  3. #  'CBB' -- Check Book Balancer
  4. #
  5. #   prefs.tcl -- additional preferences (startdate, cryptography)
  6. #
  7. #  Written by Martin Schenk <schenkm@ping.at>
  8. #
  9. #  Copyright (C) 1997  Martin Schenk <schenkm@ping.at>
  10. #
  11. #  This program is free software; you can redistribute it and/or modify
  12. #  it under the terms of the GNU General Public License as published by
  13. #  the Free Software Foundation; either version 2 of the License, or
  14. #  (at your option) any later version.
  15. #
  16. #  This program is distributed in the hope that it will be useful,
  17. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. #  GNU General Public License for more details.
  20. #
  21. #  You should have received a copy of the GNU General Public License
  22. #  along with this program; if not, write to the Free Software
  23. #  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24. #
  25. # $Id: prefs.tcl,v 2.3 1997/06/12 21:57:22 curt Exp $
  26. # (Log is kept at end of this file)
  27.  
  28.  
  29. # use cryptography
  30. proc useCrypt {} {
  31.     global cbb eng
  32.  
  33.     if { "$cbb(use_crypt)" == 0 } {    # disable cryptography
  34.     set cbb(pref_chg) 1
  35.  
  36.     puts $eng "encrypt"; flush $eng;
  37.     gets $eng result;
  38.  
  39.     puts $eng "decrypt"; flush $eng;
  40.     gets $eng result;
  41.  
  42.     puts $eng "logging 1"; flush $eng;
  43.     gets $eng result;
  44.  
  45.     return;
  46.     }
  47.     # test whether program is already defined
  48.     if { (("$cbb(decrypt)" == "") || ( "$cbb(encrypt)" == "")) } {
  49.     setCryptProgram
  50.     # return, because setCryptProgram called us again
  51.     return
  52.     }
  53.  
  54.     # test whether code is already defined
  55.     if { "$cbb(crypt_code)" == "" } {
  56.     setCryptCode
  57.     # return, because setCryptCode called us again
  58.     return
  59.     }
  60.  
  61.     set cbb(pref_chg) 1
  62.  
  63.     # both program and code are defined, send new methods to backend
  64.     puts $eng "encrypt $cbb(encrypt) \"$cbb(crypt_code)\""; flush $eng;
  65.     gets $eng result;
  66.  
  67.     puts $eng "decrypt $cbb(decrypt) \"$cbb(crypt_code)\""; flush $eng;
  68.     gets $eng result;
  69.  
  70.     puts $eng "logging 0"; flush $eng;
  71.     gets $eng result;
  72. }
  73.  
  74. proc setCryptProgram {} {
  75.     global cbb
  76.  
  77.     set oen $cbb(encrypt)
  78.     set ode $cbb(decrypt)
  79.  
  80.     if { [cbbWindows.opt "Set Cryptprograms" "Enter New Cryptprograms" \
  81.     {{"encoding" cbb(encrypt)} {"decoding" cbb(decrypt)}}] } {
  82.  
  83.     set cbb(pref_chg) 1
  84.  
  85.     } else {
  86.         set cbb(encrypt) $oen
  87.         set cbb(decrypt) $ode
  88.     }
  89.  
  90.     if { $cbb(use_crypt) } {
  91.     if { (( "$cbb(decrypt)" != "") && ( "$cbb(encrypt)" != "")) } {
  92.         # change the settings in the backend
  93.         useCrypt
  94.         } else {
  95.         cbbWindow.ok "no valid cryptprogram, cannot use cryptography"
  96.         tkwait window .ok
  97.         set cbb(use_crypt) 0
  98.     }
  99.     }
  100. }
  101.  
  102. proc setCryptCode {} {
  103.     global cbb
  104.  
  105.     set oc $cbb(crypt_code)
  106.  
  107.     cbbWindows.prefCryptCode
  108.     tkwait window .prefCryptCode
  109.  
  110.     if { ($cbb(use_crypt) && ( "$cbb(crypt_code)" != -1)) } {
  111.     # change the settings in the backend
  112.     useCrypt
  113.     }
  114.     if { ($cbb(crypt_code) == -1) } {
  115.         set cbb(crypt_code) $oc
  116.     } else {
  117.     set cbb(pref_chg) 1
  118.     }
  119.  
  120.     if { ($cbb(use_crypt) && ("$cbb(crypt_code)" == "")) } {
  121.     cbbWindow.ok "no valid cryptcode, cannot use cryptography"
  122.     tkwait window .ok
  123.     set cbb(use_crypt) 0
  124.     }
  125. }
  126.  
  127. # set new StartDate
  128. proc setStartDate {} {
  129.     global cbb eng
  130.  
  131.     set oldsdate $cbb(sdate)
  132.  
  133.     if { [cbbWindows.opt "Set Startdate" "enter startdate" \
  134.      {{"new startdate" cbb(sdate)}}] } {
  135.  
  136.     set cbb(pref_chg) 1
  137.     puts $eng "start_date $cbb(sdate)"; flush $eng
  138.     gets $eng cbb(int_sdate)
  139.     } else {
  140.     set cbb(sdate) $oldsdate
  141.     }
  142. }
  143.  
  144. # set dimensions (of list boxes)
  145. proc setDimensions {} {
  146.     global cbb dim
  147.  
  148.     set dim(list_width) $cbb(list_width)
  149.     set dim(list_height) $cbb(list_height)
  150.     set dim(acctlist_height) $cbb(acctlist_height)
  151.  
  152.     if { [cbbWindows.opt "Dimensions" "Enter width in columns, height in rows" \
  153.     {{"listbox width" dim(list_width)} {"listbox height" dim(list_height)}
  154.      {"accountbox height" dim(acctlist_height)}}] } {
  155.  
  156.     set cbb(pref_chg) 1
  157.  
  158.         set cbb(list_width) $dim(list_width)
  159.         set cbb(list_height) $dim(list_height)
  160.         set cbb(acctlist_height) $dim(acctlist_height)
  161.     }
  162. }
  163.  
  164. # specify CryptCodes
  165. proc cbbWindows.prefCryptCode {} {
  166.     global cbb
  167.  
  168.     if {[winfo exists .prefCryptCode] == 1} {
  169.     wm withdraw .prefCryptCode
  170.         wm deiconify .prefCryptCode
  171.     return                
  172.     }
  173.  
  174.     set cryptcode2 $cbb(crypt_code)
  175.  
  176.     toplevel .prefCryptCode
  177.  
  178.     option add *font $cbb(dialog_font)
  179.     wm title .prefCryptCode "Set Cryptcode"
  180.     wm iconname .prefCryptCode "Set Cryptcode"
  181.     frame .prefCryptCode.frame -borderwidth 2
  182.     frame .prefCryptCode.frame.n
  183.     frame .prefCryptCode.frame.d
  184.     frame .prefCryptCode.frame.b
  185.  
  186.     label .prefCryptCode.frame.label -text \
  187.     "Enter New Cryptcode"
  188.  
  189.     label .prefCryptCode.frame.n.label -text "code"
  190.     entry .prefCryptCode.frame.n.entry -textvariable cbb(crypt_code)  -relief sunken \
  191.         -font $cbb(default_font) -show "*"
  192.     .prefCryptCode.frame.n.entry icursor 0
  193.     .prefCryptCode.frame.n.entry icursor end
  194.  
  195.     label .prefCryptCode.frame.d.label -text "reenter"
  196.     entry .prefCryptCode.frame.d.entry -textvariable cryptcode2 -relief sunken \
  197.         -font $cbb(default_font) -show "*"
  198.  
  199.     button .prefCryptCode.frame.b.create -text "Set Code" \
  200.         -font $cbb(button_font) -command { 
  201.     if { "$cryptcode2" == "$cbb(crypt_code)" } {
  202.         destroy .prefCryptCode 
  203.     } else {
  204.         cbbWindow.ok "you did not type the same code twice, please try again"
  205.         tkwait window .ok
  206.     }
  207.     }
  208.     button .prefCryptCode.frame.b.cancel -text "Cancel" -font $cbb(button_font) \
  209.         -command { 
  210.     set cbb(crypt_code) -1
  211.     destroy .prefCryptCode
  212.     }
  213.  
  214.     pack .prefCryptCode.frame -fill both -expand 1 -padx 4 -pady 4
  215.     pack .prefCryptCode.frame.label -padx 4 -pady 2
  216.     pack .prefCryptCode.frame.b -side bottom -fill x -padx 4 -pady 2
  217.     pack .prefCryptCode.frame.n .prefCryptCode.frame.d \
  218.         -fill both -expand 1 -padx 4 -pady 2 
  219.     pack .prefCryptCode.frame.n.label -side left
  220.     pack .prefCryptCode.frame.d.label -side left
  221.     pack .prefCryptCode.frame.d.entry -side left -fill x -expand 1
  222.     pack .prefCryptCode.frame.n.entry -side left -fill x -expand 1
  223.     pack .prefCryptCode.frame.b.create .prefCryptCode.frame.b.cancel -side left \
  224.         -fill x -expand 1 -padx 4 -pady 4
  225.  
  226.     focus .prefCryptCode.frame.n.entry 
  227. }
  228.  
  229.  
  230. # cbbWindows.opt automatically constructs a window to enter options
  231. #
  232. # title is the window title
  233. # desc is a description text shown in the first line
  234. # entries is a list of entry descriptions
  235. # each entry description consists of a label and a (global) variable name
  236. #
  237. # sample :
  238. # cbbWindows.opt "title" "this is a test" {{"test 1" a} {"test 2" b}}
  239. #
  240. # return 1 if ok, 0 if canceled
  241. #
  242. proc cbbWindows.opt { title desc entries } {
  243.  
  244.     global optcancel cbb
  245.  
  246.     set optcancel 0
  247.  
  248.     toplevel .opt
  249.     option add *font $cbb(dialog_font)
  250.     wm title .opt $title
  251.     wm iconname .opt $title
  252.     frame .opt.frame -borderwidth 2
  253.     frame .opt.frame.b
  254.     label .opt.frame.label -text $desc
  255.  
  256.     set ll [llength $entries]
  257.     set l {}
  258.  
  259.     for { set i 0 } { $i < $ll } { incr i } {
  260.     set l [concat $l .opt.frame.$i]
  261.     frame .opt.frame.$i
  262.     set e [lindex $entries $i]
  263.     label .opt.frame.$i.label -text [lindex $e 0]
  264.     entry .opt.frame.$i.entry -textvariable [lindex $e 1] -relief sunken \
  265.         -font $cbb(default_font)
  266.     }
  267.     .opt.frame.0.entry icursor 0
  268.     .opt.frame.0.entry icursor end
  269.  
  270.     button .opt.frame.b.ok -text "Ok" -font $cbb(button_font) -command { destroy .opt }
  271.     button .opt.frame.b.cancel -text "Cancel" -font $cbb(button_font) -command {
  272.     set optcancel 1
  273.     destroy .opt
  274.     }
  275.  
  276.     pack .opt.frame -fill both -expand 1 -padx 4 -pady 4
  277.     pack .opt.frame.label -padx 4 -pady 2
  278.     pack .opt.frame.b -side bottom -fill x -padx 4 -pady 2
  279.     # expand $l before executing pack
  280.     eval "pack $l -fill both -expand 1 -padx 4 -pady 2"
  281.  
  282.     for { set i 0 } { $i < $ll } { incr i } {
  283.     pack .opt.frame.$i.label -side left
  284.     pack .opt.frame.$i.entry -side left -fill x -expand 1
  285.     }
  286.  
  287.     pack .opt.frame.b.ok .opt.frame.b.cancel -side left -fill x -expand 1 \
  288.     -padx 4 -pady 4
  289.     focus .opt.frame.0.entry
  290.  
  291.     tkwait window .opt
  292.  
  293.     if { $optcancel == 1 } { return 0 }
  294.     return 1
  295. }
  296.  
  297.  
  298. # ----------------------------------------------------------------------------
  299. # $Log: prefs.tcl,v $
  300. # Revision 2.3  1997/06/12 21:57:22  curt
  301. # Added cvs headers/log.
  302. #
  303.