From 213cbca6ba6d566edbd8bb78d56bbdb6a3950a63 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 9 Jun 2012 21:20:48 +0100 Subject: [PATCH] sort out debugging --- applet.tcl | 46 ++++++++++++++++++++++++++++++++-------------- example | 2 +- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/applet.tcl b/applet.tcl index 66d1a81..e3a27ed 100644 --- a/applet.tcl +++ b/applet.tcl @@ -41,6 +41,13 @@ package require tktray # menus, when an item is selected, call # applet::msel # +# Debug: +# +# Caller may call +# applet::setup-debug ON-DEBUG +# which will result in calls to [concat ON-DEBUG [list MESSAGE]] +# (or ON-DEBUG may be "" in which case messages are discarded) +# # Icon: # # Caller should call: @@ -71,11 +78,23 @@ wm withdraw . tktray::icon .i -class example .i configure -docked 1 -fconfigure stdout -buffering line +fconfigure stdout -buffering none +fconfigure stderr -buffering none namespace eval applet { +variable debug {} + +proc debug {m} { + variable debug + if {![llength debug]} return + uplevel #0 $debug [list $m] +} + +proc setup-debug {d} { + variable debug $d +} # used by both menus and tooltips variable posted 0 @@ -91,15 +110,15 @@ proc menubuttonpressed {b x y} { variable posted tooltip-cancel if {$posted == $b} { - puts "unpost $posted toggle" + debug "unpost $posted toggle" .m$posted unpost set posted 0 } elseif {[winfo exists .m$b]} { if {$posted} { .m$posted unpost - puts "unpost $posted other" + debug "unpost $posted other" } - puts "post $b" + debug "post $b" set posted $b .m$b post $x $y } @@ -192,7 +211,7 @@ variable subwindow_on_ready proc subwindow-need-recreate {} { variable innerwindow_after -puts "IW-EVENT" + debug "IW-EVENT" if {[info exists innerwindow_after]} return set innerwindow_after [after idle applet::innerwindow-resetup] } @@ -205,8 +224,7 @@ proc innerwindow-resetup {} { variable subwindow_border_width unset innerwindow_after -puts RESETUP - + debug RESETUP if {![winfo exists .i.i]} return destroy [frame .i.i.make-exist] @@ -263,7 +281,7 @@ proc setup-subproc {w border_colour border_width get_cmdline} { proc subproc-destroying {} { variable subproc - puts "DESTROYING $subproc" + debug "DESTROYING $subproc" catch { destroy .i.i.b.c } @@ -276,7 +294,7 @@ proc subproc-destroying {} { proc subproc-ready {} { variable subproc - puts "READY $subproc" + debug "READY $subproc" frame .i.i.b.c -container 1 -background orange pack .i.i.b.c -fill both -side left -expand 1 @@ -292,7 +310,7 @@ proc subproc-ready {} { error "unexpected state $subproc" } } - puts "READY-done $subproc" + debug "READY-done $subproc" } proc run-child {} { @@ -303,14 +321,14 @@ proc run-child {} { set id [winfo id .i.i.b.c] set cmd [uplevel #0 [concat [list $subproc_get_cmdline] $id]] - puts "RUN-CHILD $subproc" + debug "RUN-CHILD $subproc" set now [clock seconds] lappend ratelimit $now while {[lindex $ratelimit 0] < {$now - 10}} { set ratelimit [lrange $ratelimit 1 end] } if {[llength $ratelimit] > 10} { - puts stderr "crashing repeatedly, quitting $ratelimit" + debug stderr "crashing repeatedly, quitting $ratelimit" exit 127 } @@ -318,11 +336,11 @@ proc run-child {} { set subproc [subproc::fork applet::child-died { execl [lindex $cmd 0] [lrange $cmd 1 end] }] - puts "FORKED $subproc" + debug "FORKED $subproc" } proc child-died {how how2} { - puts "DIED $how $how2" + debug "DIED $how $how2" variable subproc switch -exact $subproc { old { diff --git a/example b/example index 4edb404..a22ab0b 100755 --- a/example +++ b/example @@ -4,7 +4,7 @@ source applet.tcl source subproc.tcl -#----- menu ----- +applet::setup-debug puts foreach b {1 3} { applet::setup-button-menu $b -- 2.30.2