-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* TkRoot.new and TkToplevel.new accept Wm commands as elements of a hash argument. e.g. TkRoot.new(:title=>'App Title') TkToplevel.new(:parent=>Tk.root, :title=>'XXX', :class=>'ZZZ') * TkMenu :: add some methods * TkOptionMenubutton :: bug fix sample/tktimer2.rb * add comments about the usage of a TkTimer object. sample/tkmenubutton.rb * sample of TkMenubutton and TkOptionMenubutton git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
- Loading branch information
nagai
committed
Jun 22, 2003
1 parent
25f8578
commit f34b15e
Showing
2 changed files
with
165 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
#!/usr/bin/env ruby | ||
# | ||
# menubutton sample : based on sample menubuttons on the Tcl/Tk demo script | ||
# | ||
require 'tk' | ||
|
||
TkLabel.new(:text=>'Sample of TkMenubutton').pack(:side=>:top) | ||
|
||
TkFrame.new{|f| | ||
pack(:side=>:top) | ||
|
||
|
||
TkMenubutton.new(:parent=>f, :text=>'Right', :underline=>0, | ||
:direction=>:right, :relief=>:raised){|mb| | ||
menu TkMenu.new(:parent=>mb, :tearoff=>0){ | ||
add(:command, :label=>'Right menu: first item', | ||
:command=>proc{print 'You have selected the first item' + | ||
" from the Right menu.\n"}) | ||
add(:command, :label=>'Right menu: second item', | ||
:command=>proc{print 'You have selected the second item' + | ||
" from the Right menu.\n"}) | ||
} | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
} | ||
|
||
TkMenubutton.new(:parent=>f, :text=>'Below', :underline=>0, | ||
:direction=>:below, :relief=>:raised){|mb| | ||
menu(TkMenu.new(:parent=>mb, :tearoff=>0){ | ||
add(:command, :label=>'Below menu: first item', | ||
:command=>proc{print 'You have selected the first item' + | ||
" from the Below menu.\n"}) | ||
add(:command, :label=>'Below menu: second item', | ||
:command=>proc{print 'You have selected the second item' + | ||
" from the Below menu.\n"}) | ||
}) | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
} | ||
|
||
TkMenubutton.new(:parent=>f, :text=>'Above', :underline=>0, | ||
:direction=>:above, :relief=>:raised){|mb| | ||
menu TkMenu.new(:parent=>mb, :tearoff=>0){ | ||
add(:command, :label=>'Above menu: first item', | ||
:command=>proc{print 'You have selected the first item' + | ||
" from the Above menu.\n"}) | ||
add(:command, :label=>'Above menu: second item', | ||
:command=>proc{print 'You have selected the second item' + | ||
" from the Above menu.\n"}) | ||
} | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
} | ||
|
||
TkMenubutton.new(:parent=>f, :text=>'Left', :underline=>0, | ||
:direction=>:left, :relief=>:raised){|mb| | ||
menu(TkMenu.new(:parent=>mb, :tearoff=>0){ | ||
add(:command, :label=>'Left menu: first item', | ||
:command=>proc{print 'You have selected the first item' + | ||
" from the Left menu.\n"}) | ||
add(:command, :label=>'Left menu: second item', | ||
:command=>proc{print 'You have selected the second item' + | ||
" from the Left menu.\n"}) | ||
}) | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
} | ||
} | ||
|
||
############################ | ||
TkFrame.new(:borderwidth=>2, :relief=>:sunken, | ||
:height=>5).pack(:side=>:top, :fill=>:x, :padx=>20) | ||
############################ | ||
|
||
TkLabel.new(:text=>'Sample of TkOptionMenu').pack(:side=>:top) | ||
|
||
colors = %w(Black red4 DarkGreen NavyBlue gray75 Red Green Blue gray50 | ||
Yellow Cyan Magenta White Brown DarkSeaGreen DarkViolet) | ||
|
||
TkFrame.new{|f| | ||
pack(:side=>:top) | ||
|
||
b1 = TkOptionMenubutton . | ||
new(:parent=>f, :values=>%w(one two three)) . | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
|
||
b2 = TkOptionMenubutton.new(:parent=>f, :values=>colors) {|optMB| | ||
colors.each{|color| | ||
no_sel = TkPhotoImage.new(:height=>16, :width=>16){ | ||
put 'gray50', *[ 0, 0, 16, 1] | ||
put 'gray50', *[ 0, 1, 1, 16] | ||
put 'gray75', *[ 0, 15, 16, 16] | ||
put 'gray75', *[15, 1, 16, 16] | ||
put color, *[ 1, 1, 15, 15] | ||
} | ||
sel = TkPhotoImage.new(:height=>16, :width=>16){ | ||
put 'Black', *[ 0, 0, 16, 2] | ||
put 'Black', *[ 0, 2, 2, 16] | ||
put 'Black', *[ 2, 14, 16, 16] | ||
put 'Black', *[14, 2, 16, 14] | ||
put color, *[ 2, 2, 14, 14] | ||
} | ||
optMB.entryconfigure(color, :hidemargin=>1, | ||
:image=>no_sel, :selectimage=>sel) | ||
} | ||
optMB.menuconfigure(:tearoff, 1) | ||
%w(Black gray75 gray50 White).each{|color| | ||
optMB.entryconfigure(color, :columnbreak=>true) | ||
} | ||
pack(:side=>:left, :padx=>25, :pady=>25) | ||
} | ||
|
||
TkButton.new(:parent=>f){ | ||
text 'show values' | ||
command proc{p [b1.value, b2.value]} | ||
pack(:side=>:left, :padx=>25, :pady=>5, :anchor=>:s) | ||
} | ||
} | ||
|
||
|
||
############################ | ||
TkFrame.new(:borderwidth=>2, :relief=>:sunken, | ||
:height=>5).pack(:side=>:top, :fill=>:x, :padx=>20) | ||
############################ | ||
|
||
root = TkRoot.new(:title=>'menubutton samples') | ||
|
||
TkButton.new(root, :text=>'exit', :command=>proc{exit}){ | ||
pack(:side=>:top, :padx=>25, :pady=>5, :anchor=>:e) | ||
} | ||
|
||
# VirtualEvent <<MenuSelect>> on Tcl/Tk ==> '<MenuSelect>' on Ruby/Tk | ||
# ( remove the most external <, > for Ruby/Tk notation ) | ||
TkMenu.bind('<MenuSelect>', proc{|widget| | ||
p widget.entrycget('active', :label) | ||
}, '%W') | ||
|
||
############################ | ||
|
||
Tk.mainloop |