chiark
/
gitweb
/
~ian
/
chiark-tcl-applet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sort out debugging
[chiark-tcl-applet.git]
/
applet.tcl
diff --git
a/applet.tcl
b/applet.tcl
index 66d1a81251e26ae700dc02f056bacd57d5fe2b93..e3a27eda42fd2d464ee88854b929ee48adf00b3c 100644
(file)
--- a/
applet.tcl
+++ b/
applet.tcl
@@
-41,6
+41,13
@@
package require tktray
# menus, when an item is selected, call
# applet::msel
#
# 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:
# Icon:
#
# Caller should call:
@@
-71,11
+78,23
@@
wm withdraw .
tktray::icon .i -class example
.i configure -docked 1
tktray::icon .i -class example
.i configure -docked 1
-fconfigure stdout -buffering line
+fconfigure stdout -buffering none
+fconfigure stderr -buffering none
namespace eval applet {
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
# 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} {
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
.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
}
set posted $b
.m$b post $x $y
}
@@
-192,7
+211,7
@@
variable subwindow_on_ready
proc subwindow-need-recreate {} {
variable innerwindow_after
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]
}
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
variable subwindow_border_width
unset innerwindow_after
-puts RESETUP
-
+ debug RESETUP
if {![winfo exists .i.i]} return
destroy [frame .i.i.make-exist]
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
proc subproc-destroying {} {
variable subproc
-
puts
"DESTROYING $subproc"
+
debug
"DESTROYING $subproc"
catch { destroy .i.i.b.c }
catch { destroy .i.i.b.c }
@@
-276,7
+294,7
@@
proc subproc-destroying {} {
proc subproc-ready {} {
variable subproc
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
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"
}
}
error "unexpected state $subproc"
}
}
-
puts
"READY-done $subproc"
+
debug
"READY-done $subproc"
}
proc run-child {} {
}
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]]
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} {
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
}
exit 127
}
@@
-318,11
+336,11
@@
proc run-child {} {
set subproc [subproc::fork applet::child-died {
execl [lindex $cmd 0] [lrange $cmd 1 end]
}]
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} {
}
proc child-died {how how2} {
-
puts
"DIED $how $how2"
+
debug
"DIED $how $how2"
variable subproc
switch -exact $subproc {
old {
variable subproc
switch -exact $subproc {
old {