1# -*- coding: utf-8 -*- 2# 3# widget demo prompts the user to select a color (called by 'widget') 4# 5# Note: don't support ttk_wrapper. work with standard widgets only. 6# 7 8# toplevel widget が存在すれば削除する 9if defined?($clrpick_demo) && $clrpick_demo 10 $clrpick_demo.destroy 11 $clrpick_demo = nil 12end 13 14# demo 用の toplevel widget を生成 15$clrpick_demo = TkToplevel.new {|w| 16 title("Color Selection Dialogs") 17 iconname("colors") 18 positionWindow(w) 19} 20 21# label 生成 22#TkLabel.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left', 23Tk::Label.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left', 24 'text'=>"以下のボタンを押して、このウィンドウ上にあるウィジェットの前景色と背景色を選択して下さい。").pack('side'=>'top') 25 26# frame 生成 27# TkFrame.new($clrpick_demo) {|frame| 28Tk::Frame.new($clrpick_demo) {|frame| 29 # TkButton.new(frame) { 30 Tk::Button.new(frame) { 31 #text '了解' 32 text '閉じる' 33 command proc{ 34 tmppath = $clrpick_demo 35 $clrpick_demo = nil 36 tmppath.destroy 37 } 38 }.pack('side'=>'left', 'expand'=>'yes') 39 40 # TkButton.new(frame) { 41 Tk::Button.new(frame) { 42 text 'コード参照' 43 command proc{showCode 'clrpick'} 44 }.pack('side'=>'left', 'expand'=>'yes') 45}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m') 46 47# button 生成 48# TkButton.new($clrpick_demo, 'text'=>'背景色を設定 ...') {|b| 49Tk::Button.new($clrpick_demo, 'text'=>'背景色を設定 ...') {|b| 50 command(proc{setColor $clrpick_demo, b, 'background', 51 ['background', 'highlightbackground']}) 52 pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m') 53} 54 55# TkButton.new($clrpick_demo, 'text'=>'前景色を設定 ...') {|b| 56Tk::Button.new($clrpick_demo, 'text'=>'前景色を設定 ...') {|b| 57 command(proc{setColor $clrpick_demo, b, 'foreground', ['foreground']}) 58 pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m') 59} 60 61def setColor(w,button,name,options) 62 w.grab 63 initialColor = button[name] 64 color = Tk.chooseColor('title'=>"Choose a #{name} color", 'parent'=>w, 65 'initialcolor'=>initialColor) 66 if color != "" 67 setColor_helper(w,options,color) 68 end 69 70 w.grab('release') 71end 72 73def setColor_helper(w, options, color) 74 options.each{|opt| 75 begin 76 w[opt] = color 77 rescue 78 end 79 } 80 TkWinfo.children(w).each{|child| 81 setColor_helper child, options, color 82 } 83end 84 85