chiark / gitweb /
wip
[chiark-tcl-applet.git] / applet.tcl
index 0b0fcf6847807681008ca6a0bb7b50de73e4678e..1a75f1419dd406f4348d08a235c31f40d8302057 100644 (file)
@@ -1,7 +1,30 @@
 
 #----- general machinery -----
 
+# Interface:
+#
+#  tk::tktray widget is called .i
+#
+# Inner window:
+#  Caller that needs access to inner window should define
+#     proc innerwindow {} { ... }
+#  and run
+#     innerwindow
+#  This will create
+#     .i.i.b      frame to contain container
+#     .i.i.b.c    actual container
+# 
+#  Button presses
+#    Caller should provide
+#       proc pressed {b x y} { ... }
+#    which should examine b and do something appropriate.
+#    
+
+
+
 package require tktray
+#load /home/ian/things/Systray/tktray-1.3.8/libtktray1.3.8.so
+
 
 wm withdraw .
 
@@ -14,7 +37,7 @@ foreach b {1 3} {
     menu .m$b -tearoff 0
 }
 
-proc pressed {b x y} {
+proc menubuttonpressed {b x y} {
     global posted
     tooltip_cancel
     if {$posted == $b} {
@@ -37,6 +60,56 @@ proc msel {} {
     set posted 0
 }
 
+proc innerwindow-event {why} {
+    global innerwindow_after
+puts "IW-EVENT $why"
+    if {[info exists innerwindow_after]} return
+    set innerwindow_after [after idle innerwindow-resetup]
+}
+
+proc innerwindow-resetup {} {
+    global innerwindow_after
+    unset innerwindow_after
+
+puts RESETUP
+
+    catch { destroy .i.i.c }
+    if {![winfo exists .i.i]} return
+    destroy [frame .i.i.make-exist]
+    catch { destroy .i.i.b.c }
+    catch { destroy .i.i.b }
+    frame .i.i.b
+    pack .i.i.b -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
+    bind .i.i <ButtonPress> { pressed %b %X %Y }
+#
+    global inner_lastw inner_lasth
+    #set w [winfo width .i.i]
+#    set w [winfo width .i.i]
+#    set h [winfo height .i.i]
+
+#    if {$w != $inner_lastw || $h != $inner_lasth} {
+#      set inner_lastw $w
+#      set inner_lasth $h
+#      innerwindow-ph-dummy configure -width $w -height 2
+       innerwindow [winfo id .i.i.b.c]
+#    }
+}
+
+proc setupinnerwindow {w} {
+    global inner_lastw inner_lasth
+    set inner_lastw -2
+    set inner_lasth -2
+
+    image create photo innerwindow-ph-dummy -width $w -height 2
+    .i configure -image innerwindow-ph-dummy
+
+    destroy [frame .i.make-exist]
+    destroy [frame .i.i.make-exist]
+    bind .i <<IconConfigure>> { innerwindow-event "%w" }
+}
+
 bind .i <ButtonPress> { pressed %b %X %Y }
 
 proc tooltip_starttimer {state x y} {