#
# tk::tktray widget is called .i
#
+# Tooltip:
+#
+# Caller may call
+# applet::setup-tooltip ON-VISIBLE ON-INVISIBLE
+# to make applet have a tooltip.
+#
+# ON-VISIBLE and ON-INVISIBLE will be globally eval'd
+# when the tooltip becomes visible and invisible.
+#
+# Caller should call
+# applet::tooltip-set TEXT-MAYBE-MULTILINE
+# whenever they like.
+#
# Inner window subprocess:
#
# Caller that needs access to inner window should define
namespace eval applet {
+
+# used by both menus and tooltips
variable posted 0
+#----- menus -----
+
proc setup-button-menu {b} {
bind .i.i <ButtonPress> { applet::menubuttonpressed %b %X %Y }
menu .m$b -tearoff 0
set posted 0
}
-}
-
-proc innerwindow-resetup-required {why} {
- variable innerwindow_after
-puts "IW-EVENT $why"
- if {[info exists innerwindow_after]} return
- set innerwindow_after [after idle innerwindow-resetup]
-}
-
-proc innerwindow-resetup {} {
- variable innerwindow_after
- unset innerwindow_after
-
-puts RESETUP
-
- innerwindow-destroying
-
- 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
-#
- 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-ready
-# }
-}
-
-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-resetup-required IconConfigure }
-}
+#----- tooltips -----
-namespace eval applet {
+variable tooltip_on_vis {}
+variable tooltip_on_invis {}
proc tooltip-starttimer {state x y} {
variable tooltip_after
proc tooltip-cancel {} {
variable tooltip_after
+ variable tooltip_on_invis
catch { after cancel $tooltip_after }
catch { unset $tooltip_after }
wm withdraw .tt
+ uplevel #0 $tooltip_on_invis
}
set tooltip_inwindow 0
tooltip-cancel
}
-proc setup-tooltip {} {
+proc setup-tooltip {on_vis on_invis} {
+ foreach v {vis invis} {
+ variable tooltip_on_$v [set on_$v]
+ }
bind .i <Enter> { applet::tooltip-enter %s %X %Y }
bind .i <Leave> { applet::tooltip-leave }
bind .i <ButtonRelease> {
}
proc tooltip-show {x y} {
+ variable tooltip_on_vis
incr x 9
incr y 9
wm geometry .tt +$x+$y
wm deiconify .tt
+ uplevel #0 $tooltip_on_vis
}
}
+
+proc innerwindow-resetup-required {why} {
+ variable innerwindow_after
+puts "IW-EVENT $why"
+ if {[info exists innerwindow_after]} return
+ set innerwindow_after [after idle innerwindow-resetup]
+}
+
+proc innerwindow-resetup {} {
+ variable innerwindow_after
+ unset innerwindow_after
+
+puts RESETUP
+
+ innerwindow-destroying
+
+ 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
+#
+ 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-ready
+# }
+}
+
+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-resetup-required IconConfigure }
+}
+
+
+
proc setimage {image} {
.i configure -image $image
}