diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2007-10-18 14:34:06 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2007-10-18 14:34:06 (GMT) |
commit | 07afeec69934f6b60286fb552272d2913e0614c2 (patch) | |
tree | 70afca83c8f1cf3aefff032f0256d424f9727a4a /library/demos | |
parent | 1a72e7527449c754a0edde0085f4eb4ad867fde5 (diff) | |
download | tk-07afeec69934f6b60286fb552272d2913e0614c2.zip tk-07afeec69934f6b60286fb552272d2913e0614c2.tar.gz tk-07afeec69934f6b60286fb552272d2913e0614c2.tar.bz2 |
More Ttk demos
Diffstat (limited to 'library/demos')
-rw-r--r-- | library/demos/ttkmenu.tcl | 55 | ||||
-rw-r--r-- | library/demos/ttkpane.tcl | 95 | ||||
-rw-r--r-- | library/demos/widget | 6 |
3 files changed, 155 insertions, 1 deletions
diff --git a/library/demos/ttkmenu.tcl b/library/demos/ttkmenu.tcl new file mode 100644 index 0000000..6cda290 --- /dev/null +++ b/library/demos/ttkmenu.tcl @@ -0,0 +1,55 @@ +# ttkmenu.tcl -- +# +# This demonstration script creates a toplevel window containing several Ttk +# menubutton widgets. +# +# RCS: @(#) $Id: ttkmenu.tcl,v 1.1 2007/10/18 14:34:06 dkf Exp $ + +if {![info exists widgetDemo]} { + error "This script should be run from the \"widget\" demo." +} + +package require Tk +package require Ttk + +set w .ttkmenu +catch {destroy $w} +toplevel $w +wm title $w "Ttk Menu Buttons" +wm iconname $w "ttkmenu" +positionWindow $w + +ttk::label $w.msg -font $font -wraplength 4i -justify left -text "Ttk is the new Tk themed widget set, and one widget that is available in themed form is the menubutton. Below are some themed menu buttons that allow you to pick the current theme in use. Notice how picking a theme changes the way that the menu buttons themselves look, and that the central menu button is styled differently (in a way that is normally suitable for toolbars). However, there are no themed menus; the standard Tk menus were judged to have a sufficiently good look-and-feel on all platforms, especially as they are implemented as native controls in many places." +pack $w.msg [ttk::separator $w.msgSep] -side top -fill x + +## See Code / Dismiss +pack [addSeeDismiss $w.seeDismiss $w] -side bottom -fill x + +ttk::menubutton $w.m1 -menu $w.m1.menu -text "Select a theme" -direction above +ttk::menubutton $w.m2 -menu $w.m1.menu -text "Select a theme" -direction left +ttk::menubutton $w.m3 -menu $w.m1.menu -text "Select a theme" -direction right +ttk::menubutton $w.m4 -menu $w.m1.menu -text "Select a theme" \ + -direction flush -style TMenubutton.Toolbutton +ttk::menubutton $w.m5 -menu $w.m1.menu -text "Select a theme" -direction below + +menu $w.m1.menu -tearoff 0 +menu $w.m2.menu -tearoff 0 +menu $w.m3.menu -tearoff 0 +menu $w.m4.menu -tearoff 0 +menu $w.m5.menu -tearoff 0 + +foreach theme [ttk::themes] { + $w.m1.menu add command -label $theme -command [list ttk::setTheme $theme] + $w.m2.menu add command -label $theme -command [list ttk::setTheme $theme] + $w.m3.menu add command -label $theme -command [list ttk::setTheme $theme] + $w.m4.menu add command -label $theme -command [list ttk::setTheme $theme] + $w.m5.menu add command -label $theme -command [list ttk::setTheme $theme] +} + +pack [ttk::frame $w.f] -fill x +lower $w.f + +grid anchor $w.f center +grid x $w.m1 x -in $w.f -padx 3 -pady 2 +grid $w.m2 $w.m4 $w.m3 -in $w.f -padx 3 -pady 2 +grid x $w.m5 x -in $w.f -padx 3 -pady 2 diff --git a/library/demos/ttkpane.tcl b/library/demos/ttkpane.tcl new file mode 100644 index 0000000..fc1d74c --- /dev/null +++ b/library/demos/ttkpane.tcl @@ -0,0 +1,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 diff --git a/library/demos/widget b/library/demos/widget index 784bb91..ff4a0de 100644 --- a/library/demos/widget +++ b/library/demos/widget @@ -10,7 +10,7 @@ exec wish "$0" "$@" # separate ".tcl" files is this directory, which are sourced by this script as # needed. # -# RCS: @(#) $Id: widget,v 1.36 2007/10/17 20:22:41 das Exp $ +# RCS: @(#) $Id: widget,v 1.37 2007/10/18 14:34:06 dkf Exp $ package require Tcl 8.5 package require Tk 8.5 @@ -344,10 +344,14 @@ addFormattedText { @@subtitle Paned Windows @@demo paned1 Horizontal paned window @@demo paned2 Vertical paned window + @@new + @@demo ttkpane Themed nested panes @@subtitle Menus @@demo menu Menus and cascades (sub-menus) @@demo menubu Menu-buttons + @@new + @@demo ttkmenu Themed menu buttons @@subtitle Common Dialogs @@demo msgbox Message boxes |