diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-02 09:58:13 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-02 09:58:13 +0000 |
commit | 6277a66deb30559a8ea991175c274e0fd899e48e (patch) | |
tree | 0f1f15f96c362749e2646ae14a23e9d4a0a5e3e4 /ext/tk/sample/demos-en/labelframe.rb | |
parent | 08719ea2380b179ef98a10cd5e871be7a44fff43 (diff) | |
download | ruby-6277a66deb30559a8ea991175c274e0fd899e48e.tar.gz |
* (bug fix) forgot to entry a widget class name of 'labelframe' widget
* add demo-scripts to the JP/EN widget demos
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/sample/demos-en/labelframe.rb')
-rw-r--r-- | ext/tk/sample/demos-en/labelframe.rb | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/ext/tk/sample/demos-en/labelframe.rb b/ext/tk/sample/demos-en/labelframe.rb new file mode 100644 index 0000000000..8636a4a9b9 --- /dev/null +++ b/ext/tk/sample/demos-en/labelframe.rb @@ -0,0 +1,93 @@ +# labelframe.rb +# +# This demonstration script creates a toplevel window containing +# several labelframe widgets. +# +# based on "Id: labelframe.tcl,v 1.2 2001/10/30 11:21:50 dkf Exp" + + +if defined?($labelframe_demo) && $labelframe_demo + $labelframe_demo.destroy + $labelframe_demo = nil +end + +$labelframe_demo = TkToplevel.new {|w| + title("Labelframe Demonstration") + iconname("labelframe") + positionWindow(w) +} + +# Some information +TkLabel.new($labelframe_demo, + :font=>$font, :wraplength=>'4i', :justify=>:left, + :text=><<EOL).pack(:side=>:top) +Labelframes are used to group related widgets together. \ +The label may be either plain text or another widget. \ +If your Tk library linked to Ruby doesn't include a 'labelframe' widget, \ +this demo doesn't work. Please use later version of Tk \ +which supports a 'labelframe' widget. +EOL + +# The bottom buttons +TkFrame.new($labelframe_demo){|f| + pack(:side=>:bottom, :fill=>:x, :pady=>'2m') + + TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{ + $labelframe_demo.destroy + $labelframe_demo = nil + }).pack(:side=>:left, :expand=>true) + + TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{ + showCode 'labelframe' + }).pack(:side=>:left, :expand=>true) +} + +# Demo area +w = TkFrame.new($labelframe_demo).pack(:side=>:bottom, :fill=>:both, + :expand=>true) + +# A group of radiobuttons in a labelframe +TkLabelFrame.new(w, :text=>'Value', + :padx=>2, :pady=>2) {|f| + grid(:row=>0, :column=>0, :pady=>'2m', :padx=>'2m') + + v = TkVariable.new + (1..4).each{|i| + TkRadiobutton.new(f, :text=>"This is value #{i}", + :variable=>v, :value=>i) { + pack(:side=>:top, :fill=>:x, :pady=>2) + } + } +} + + +# Using a label window to control a group of options. +$lfdummy = TkVariable.new(0) + +def lfEnableButtons(w) + TkWinfo.children(w).each{|child| + next if child.path =~ /\.cb$/ + if $lfdummy == 1 + child.state(:normal) + else + child.state(:disabled) + end + } +end + +TkLabelFrame.new(w, :pady=>2, :padx=>2){|f| + TkCheckButton.new(f, :widgetname=>'cb', :variable=>$lfdummy, + :text=>"Use this option.", :padx=>0) {|cb| + command proc{lfEnableButtons(f)} + f.labelwidget(cb) + } + grid(:row=>0, :column=>1, :pady=>'2m', :padx=>'2m') + + %w(Option1 Option2 Option3).each{|str| + TkCheckbutton.new(f, :text=>str).pack(:side=>:top, :fill=>:x, :pady=>2) + } + + lfEnableButtons(f) +} + +TkGrid.columnconfigure(w, [0,1], :weight=>1) |