Welcome, guest | Sign In | My Account | Store | Cart

One possible way to implement a toolhelp widget. Should be self-explaining.

See also recipe poAppFrame for an example application framework, where this package is used.

Have fun

Tcl, 68 lines
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# poToolhelp.tcl
# Simple package to implement a toolhelp widget.
# Paul Obermeier, 2001.

package provide poToolhelp 1.0

namespace eval ::poToolhelp {
    namespace export AddBinding
    namespace export Init

    variable topWidget
}

proc ::poToolhelp::Init { w { bgColor lightyellow } { fgColor black } } {
    variable topWidget

    # Create Toolbar help window with a simple label in it.
    if { [winfo exists $w] } {
	destroy $w
    }
    toplevel $w
    set topWidget $w
    label $w.l -text "This is toolhelp" -bg $bgColor -fg $fgColor -relief ridge
    pack $w.l
    wm overrideredirect $w true
    wm geometry $w [format "+%d+%d" -100 -100]
}

proc ::poToolhelp::ShowToolhelp { x y str } {
    variable topWidget

    $topWidget.l configure -text $str
    raise $topWidget
    wm geometry $topWidget [format "+%d+%d" $x [expr $y +10]]
}

proc ::poToolhelp::HideToolhelp {} {
    variable topWidget

    wm geometry $topWidget [format "+%d+%d" -100 -100]
}

proc ::poToolhelp::AddBinding { w str } {
    variable topWidget

    if { ![info exists topWidget]} {
	Init .poToolhelp
    }
    bind $w <Enter>  "::poToolhelp::ShowToolhelp %X %Y [list $str]"
    bind $w <Leave>  "::poToolhelp::HideToolhelp"
    bind $w <Button> "::poToolhelp::HideToolhelp"
}

catch {puts "Loaded Package poToolhelp (File [info script])"}

# Demo code. Uncomment for testing.

# package require poToolhelp

# pack [button .b -text "This is a button"] -fill x -expand 1
# ::poToolhelp::AddBinding .b "Toolhelp for a button"
# pack [label .l -text "This is a label"] -fill x -expand 1
# ::poToolhelp::AddBinding .l "Toolhelp for a label"
# set eVar "This is a entry"
# pack [entry .e -textvariable eVar] -fill x -expand 1
# ::poToolhelp::AddBinding .e "Toolhelp for a entry"
# pack [button .q -text "Quit" -command exit] -fill x -expand 1
# ::poToolhelp::AddBinding .q "Really want to quit this fabulous program ?"
Created by Paul Obermeier on Thu, 13 Sep 2001 (MIT)
Tcl recipes (162)
Paul Obermeier's recipes (4)

Required Modules

  • (none specified)

Other Information and Tasks