home *** CD-ROM | disk | FTP | other *** search
- # provides an error catching system for the wimp
-
- set w_debug debug_proc
-
- w_text debug_window create -width 6i -close {set debug_window_open 0;join 2}
-
- set debug_window_open 0
- set debug_box_open 0
-
- w_box debug_box create "Debug"\
- { vlist { write Command debug_command}
- { hlist
- {action Variables {debug_showvars;return show}}
- {action Arrays {debug_showarrays;return show}}
- }
- { hlist
- {action Continue {set debug_box_open 0}}
- {action Quit exit}
- {default Execute {debug_action;return show}}
- }
- }
-
- proc debug_action {}\
- { global debug_command debug_window
- w_text debug_window print <$debug_command
- set x [catch {uplevel $debug_command} res]
- if {$x==0}\
- { w_text debug_window write >$res
- } \
- else\
- { w_text debug_window options -pon
- w_text debug_window write |c255:0:0|Error:|c0:0:0|$res
- w_text debug_window options -poff
- }
- join 1
- }
-
- proc debug_proc {}\
- { global errorInfo debug_window debug_box debug_window_open debug_box_open
- global w_where
- set elist [split $errorInfo "\n" ]
- w_text debug_window options -pon -C
- w_text debug_window print |c255:0:0| "Error in $w_where"
- w_text debug_window options -poff -L
- foreach line $elist {w_text debug_window write $line}
- if {!$debug_window_open}\
- { w_text debug_window open
- set debug_window_open 1
- }
- if {!$debug_box_open}\
- { w_box debug_box open
- set debug_box_open 1
- }
- }
-
- proc debug_showvars {}\
- { set glist [info globals]
- w_text debug_window options -pon -C
- w_text debug_window print "|c0:0:255|Global Variables"
- w_text debug_window options -poff -L
- foreach v $glist\
- {
- catch {uplevel "w_text debug_window print $v = \[set $v\]"}
- }
- }
-
- proc debug_showarrays {}\
- { set glist [info globals]
- w_text debug_window options -pon -C
- w_text debug_window print "|c0:0:255|Global Arrays"
- w_text debug_window options -poff -L
- foreach v $glist\
- { catch\
- { set elist [uplevel "array names $v"]
- w_text debug_window print $v
- w_text debug_window options -l.5i
- foreach e $elist\
- { uplevel "w_text debug_window print ${v}($e) = \[set ${v}($e)\]"
- }
- w_text debug_window options -l0
- }
- }
- }
-