|
|
|
|
|
|
|
|
|
if {![info exists widgetDemo]} { |
|
error "This script should be run from the \"widget\" demo." |
|
} |
|
|
|
package require Tk |
|
|
|
set w .clrpick |
|
catch {destroy $w} |
|
toplevel $w |
|
wm title $w "Color Selection Dialog" |
|
wm iconname $w "colors" |
|
positionWindow $w |
|
|
|
label $w.msg -font $font -wraplength 4i -justify left -text "Press the buttons below to choose the foreground and background colors for the widgets in this window." |
|
pack $w.msg -side top |
|
|
|
|
|
set btns [addSeeDismiss $w.buttons $w] |
|
pack $btns -side bottom -fill x |
|
|
|
button $w.back -text "Set background color ..." \ |
|
-command \ |
|
"setColor $w $w.back background {-background -highlightbackground}" |
|
button $w.fore -text "Set foreground color ..." \ |
|
-command \ |
|
"setColor $w $w.back foreground -foreground" |
|
|
|
pack $w.back $w.fore -side top -anchor c -pady 2m |
|
|
|
proc setColor {w button name options} { |
|
grab $w |
|
set initialColor [$button cget -$name] |
|
set color [tk_chooseColor -title "Choose a $name color" -parent $w \ |
|
-initialcolor $initialColor] |
|
if {[string compare $color ""]} { |
|
setColor_helper $w $options $color |
|
} |
|
grab release $w |
|
} |
|
|
|
proc setColor_helper {w options color} { |
|
foreach option $options { |
|
catch { |
|
$w config $option $color |
|
} |
|
} |
|
foreach child [winfo children $w] { |
|
setColor_helper $child $options $color |
|
} |
|
} |
|
|