Fixing these problems ( 8-Aug-08): Original error: bad variable name "mr_state(done)": upvar won't create a scalar variable that looks like an array element Error in bgerror: bad variable name "bug(done)": upvar won't create a scalar variable that looks like an array element and fialing to bring up the "Edit Monthly..." dialog. due to changes in tcl-8.5 (and maybe pre-existing latent bugs). --- tcllib/support.tcl- 2008-08-08 11:04:56.000000000 -0700 +++ tcllib/support.tcl 2008-08-08 11:12:30.000000000 -0700 @@ -129,7 +129,9 @@ # centered on . proc dialog_run {leader window var {focuswin ""}} { - global $var + # Pre-tcl 8.5 seemed to tolerate not pruning the (), but no longer. + set arrayless_var [regsub {\(.*\)$} $var {}] + global $arrayless_var # Wait for window geometry to be computed if possible update idletasks --- dg_monthr.tcl- 2008-08-08 10:57:08.000000000 -0700 +++ dg_monthr.tcl 2008-08-08 11:11:12.000000000 -0700 @@ -51,7 +51,7 @@ toplevel $f -class Dialog wm title $f "Monthly Repetition" wm iconname $f "Repeat" - wm protocol $f WM_DELETE_WINDOW {set mr_state(done) 0} + wm protocol $f WM_DELETE_WINDOW {global mr_state; set mr_state(done) 0} frame $f.top -class Pane frame $f.left -class Pane @@ -61,8 +61,8 @@ pack $f.text -in $f.top -side top -expand 1 -fill both -padx 5m -pady 5m make_buttons $f.bot 1 { - {Cancel {set mr_state(done) 0}} - {Okay {set mr_state(done) 1}} + {Cancel {global mr_state; set mr_state(done) 0}} + {Okay {global mr_state; set mr_state(done) 1}} } # Create interval buttons @@ -75,6 +75,7 @@ {{Every Six Months} 6} } + global mr_state foreach i $buttons { radiobutton $f.i[lindex $i 1] -text [lindex $i 0]\ -variable mr_state(int) -value [lindex $i 1]\ @@ -104,8 +105,8 @@ pack $f.left -side left -expand 1 -fill both pack $f.right -side left -expand 1 -fill both - bind $f {set mr_state(done) 0} - bind $f {set mr_state(done) 1} + bind $f {global mr_state; set mr_state(done) 0} + bind $f {global mr_state; set mr_state(done) 1} wm withdraw $f update --- dg_range.tcl~ 2004-03-11 02:14:14.000000000 -0800 +++ dg_range.tcl 2008-08-08 11:23:30.000000000 -0700 @@ -47,7 +47,7 @@ toplevel $f -class Dialog wm title $f "Select Range" wm iconname $f "Range" - wm protocol $f WM_DELETE_WINDOW {set dr_state(done) 0} + wm protocol $f WM_DELETE_WINDOW {global dr_state; set dr_state(done) 0} frame $f.top -class Pane message $f.text -aspect 800 -text {Restrict item repetition range...} @@ -62,16 +62,16 @@ pack $f.finish -in $f.mid -side top -expand 1 -fill both -padx 5m -pady 5m make_buttons $f.bot 1 { - {Cancel {set dr_state(done) 0}} - {Okay {set dr_state(done) 1}} + {Cancel {global dr_state; set dr_state(done) 0}} + {Okay {global dr_state; set dr_state(done) 1}} } pack $f.top -side top -fill both -expand 1 pack $f.mid -side top -fill both -expand 1 pack $f.bot -side bottom -fill x - bind $f {set dr_state(done) 0} - bind $f {set dr_state(done) 1} + bind $f {global dr_state; set dr_state(done) 0} + bind $f {global dr_state; set dr_state(done) 1} wm withdraw $f update --- dg_wdays.tcl~ 2004-03-11 02:14:14.000000000 -0800 +++ dg_wdays.tcl 2008-08-08 11:24:47.000000000 -0700 @@ -54,7 +54,7 @@ toplevel $f -class Dialog wm title $f {Weekly Repetition} wm iconname $f Repeat - wm protocol $f WM_DELETE_WINDOW {set ws_state(done) 0} + wm protocol $f WM_DELETE_WINDOW {global ws_state; set ws_state(done) 0} frame $f.top -class Pane frame $f.left -class Pane @@ -64,8 +64,8 @@ pack $f.text -in $f.top -side top -expand 1 -fill both -padx 5m -pady 5m make_buttons $f.bot 1 { - {Cancel {set ws_state(done) 0}} - {Okay {set ws_state(done) 1}} + {Cancel {global ws_state; set ws_state(done) 0}} + {Okay {global ws_state; set ws_state(done) 1}} } # Make set of weekdays @@ -107,8 +107,8 @@ pack $f.right -side left -expand 1 -fill both pack $f.left -side left -expand 1 -fill both - bind $f {set ws_state(done) 0} - bind $f {set ws_state(done) 1} + bind $f {global ws_state; set ws_state(done) 0} + bind $f {global ws_state; set ws_state(done) 1} wm withdraw $f update