blob: fc1d74c09d7f723bd1a990f226c176f052b47b83 (
plain)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# ttkpane.tcl --
#
# This demonstration script creates a Ttk pane with some content.
#
# RCS: @(#) $Id: ttkpane.tcl,v 1.1 2007/10/18 14:34:10 dkf Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
}
package require Tk
package require Ttk
set w .ttkpane
catch {destroy $w}
toplevel $w
wm title $w "Ttk Menu Buttons"
wm iconname $w "ttkpane"
positionWindow $w
ttk::label $w.msg -font $font -wraplength 4i -justify left -text "This demonstration shows off a nested set of themed paned windows. Their sizes can be changed by grabbing the area between each contained pane and dragging the divider."
pack $w.msg [ttk::separator $w.msgSep] -side top -fill x
## See Code / Dismiss
pack [addSeeDismiss $w.seeDismiss $w] -side bottom -fill x
ttk::panedwindow $w.outer -orient horizontal
$w.outer add [ttk::panedwindow $w.outer.inLeft -orient vertical]
$w.outer add [ttk::panedwindow $w.outer.inRight -orient vertical]
$w.outer.inLeft add [ttk::labelframe $w.outer.inLeft.top -text Button]
$w.outer.inLeft add [ttk::labelframe $w.outer.inLeft.bot -text Clocks]
$w.outer.inRight add [ttk::labelframe $w.outer.inRight.top -text Progress]
$w.outer.inRight add [ttk::labelframe $w.outer.inRight.bot -text Text]
# Fill the button pane
ttk::button $w.outer.inLeft.top.b -text "Press Me" -command {
tk_messageBox -type ok -icon info -message "Ouch!" -detail "That hurt..." \
-parent .ttkpane -title "Button Pressed"
}
pack $w.outer.inLeft.top.b -padx 2 -pady 5
# Fill the clocks pane
set i 0
proc every {delay script} {
uplevel #0 $script
after $delay [list every $delay $script]
}
set zones {
:Europe/Berlin
:America/Argentina/Buenos_Aires
:Africa/Johannesburg
:Europe/London
:America/Los_Angeles
:Europe/Moscow
:America/New_York
:Asia/Singapore
:Australia/Sydney
:Asia/Tokyo
}
# Force a pre-load of all the timezones needed; otherwise can end up
# poor-looking synch problems!
foreach zone $zones {clock format 0 -timezone $zone}
foreach zone $zones {
set city [string map {_ " "} [regexp -inline {[^/]+$} $zone]]
if {$i} {
pack [ttk::separator $w.outer.inLeft.bot.s$i] -fill x
}
ttk::label $w.outer.inLeft.bot.l$i -text $city -anchor w
ttk::label $w.outer.inLeft.bot.t$i -textvariable time($zone) -anchor w
pack $w.outer.inLeft.bot.l$i $w.outer.inLeft.bot.t$i -fill x
every 1000 "set time($zone) \[clock format \[clock seconds\] -timezone $zone -format %T\]"
incr i
}
# Fill the progress pane
ttk::progressbar $w.outer.inRight.top.progress -mode indeterminate
pack $w.outer.inRight.top.progress -fill both -expand 1
$w.outer.inRight.top.progress start
# Fill the text pane
# The trick with the ttk::frame makes the text widget look like it fits with
# the current Ttk theme despite not being a themed widget itself. It is done
# by styling the frame like an entry, turning off the border in the text
# widget, and putting the text widget in the frame with enough space to allow
# the surrounding border to show through (2 pixels seems to be enough).
ttk::frame $w.outer.inRight.bot.f -style TEntry
text $w.txt -wrap word -yscroll "$w.sb set" -width 30 -borderwidth 0
pack $w.txt -fill both -expand 1 -in $w.outer.inRight.bot.f -pady 2 -padx 2
ttk::scrollbar $w.sb -orient vertical -command "$w.txt yview"
pack $w.sb -side right -fill y -in $w.outer.inRight.bot
pack $w.outer.inRight.bot.f -fill both -expand 1
pack $w.outer -fill both -expand 1
|