1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/tk/sample/tkextlib/tile/demo.rb: fixed: Tk::Tile::TProgressbar is

supported on tile 0.6 or later, not tile 0.5.

* ext/tk/sample/tkextlib/tile/demo.rb: updated scales demo to use
  Tk::Tile::TProgressbar for tile 0.6 or later.

* ext/tk/sample/tkextlib/tile/demo.rb: set some TkVariable default values.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ocean 2005-08-04 04:16:27 +00:00
parent b7f6c8989a
commit a767a76ad1
2 changed files with 155 additions and 36 deletions

View file

@ -1,3 +1,13 @@
2005-08-04 ocean <ocean@ruby-lang.org>
* sample/tkextlib/tile/demo.rb: fixed: Tk::Tile::TProgressbar is
supported on tile 0.6 or later, not tile 0.5.
* sample/tkextlib/tile/demo.rb: updated scales demo to use
Tk::Tile::TProgressbar for tile 0.6 or later.
* sample/tkextlib/tile/demo.rb: set some TkVariable default values.
2005-08-03 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* lib/tkextlib/tile/treeview.rb: Tk::Tile::Treeview#headingconfigure

View file

@ -9,6 +9,10 @@ Tk::AUTO_PATH.lappend('.', demodir, File.join(demodir, 'themes'))
require 'tkextlib/tile'
def version?(ver)
TkPackage.vcompare(Tk::Tile.package_version, ver) >= 0
end
Tk.load_tclscript(File.join(demodir, 'toolbutton.tcl'))
Tk.load_tclscript(File.join(demodir, 'repeater.tcl'))
@ -37,7 +41,10 @@ $V = TkVariable.new_hash(:THEME => 'default',
:COMPOUND => 'top',
:CONSOLE => false,
:MENURADIO1 => 'One',
:MENUCHECK1 => true)
:MENUCHECK1 => true,
:PBMODE => 'determinate',
:SELECTED => true,
:CHOICE => 2)
# Add in any available loadable themes.
TkPackage.names.find_all{|n| n =~ /^tile::theme::/}.each{|pkg|
@ -305,6 +312,8 @@ def makeNotebook
nb.add(client, :text=>'Demo', :underline=>0)
nb.select(client)
scales = Tk::Tile::TFrame.new(nb)
nb.add(scales, :text=>'Scales')
combo = Tk::Tile::TFrame.new(nb)
nb.add(combo, :text=>'Combobox', :underline=>7)
tree = Tk::Tile::TFrame.new(nb)
@ -312,10 +321,10 @@ def makeNotebook
others = Tk::Tile::TFrame.new(nb)
nb.add(others, :text=>'Others', :underline=>4)
[nb, client, combo, tree, others]
[nb, client, scales, combo, tree, others]
end
nb, client, combo, tree, others = makeNotebook()
nb, client, scales, combo, tree, others = makeNotebook()
#
# Side-by side check, radio, and menu button comparison:
@ -334,7 +343,7 @@ def fillMenu(menu)
menu.add(:command, :label=>'Quit', :command=>proc{Tk.root.destroy})
end
l = Tk::Tile::TLabelframe.new(client, :text=>'Styled', :padding=>6)
l = Tk::Tile::TLabelframe.new(client, :text=>'Themed', :padding=>6)
r = TkLabelframe.new(client, :text=>'Standard', :padx=>6, :pady=>6)
## Styled frame
@ -360,27 +369,6 @@ e.selection_range(6, :end)
ltext_f, ltext = scrolledWidget(l, TkText, true,
:width=>12, :height=>5, :wrap=>:none)
scales = Tk::Tile::TFrame.new(l)
sc = Tk::Tile::TScale.new(scales, :orient=>:horizontal, :from=>0, :to=>100,
:variable=>$V.ref(:SCALE))
vsc = Tk::Tile::TScale.new(scales, :orient=>:vertical, :from=>-25, :to=>25,
:variable=>$V.ref(:VSCALE))
prg = Tk::Tile::TProgress.new(scales, :orient=>:horizontal,
:from=>0, :to=>100)
vprg = Tk::Tile::TProgress.new(scales, :orient=>:vertical,
:from=>-25, :to=>25)
sc.command{|*args| prg.set(*args)}
vsc.command{|*args| vprg.set(*args)}
Tk.grid(sc, :columnspan=>2, :sticky=>:ew)
Tk.grid(prg, :columnspan=>2, :sticky=>:ew)
Tk.grid(vsc, vprg, :sticky=>:nws)
TkGrid.columnconfigure(scales, 0, :weight=>1)
TkGrid.columnconfigure(scales, 1, :weight=>1)
# NOTE TO MAINTAINERS:
# The checkbuttons are -sticky ew / -expand x on purpose:
# it demonstrates one of the differences between TCheckbuttons
@ -394,7 +382,6 @@ Tk.grid(btn, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(mb, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(e, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(ltext_f, :sticky=>:news)
Tk.grid(scales, :sticky=>:news, :pady=>2)
TkGrid.columnconfigure(l, 0, :weight=>1)
TkGrid.rowconfigure(l, 7, :weight=>1) # text widget (grid is a PITA)
@ -424,11 +411,6 @@ e = TkEntry.new(r, :textvariable=>$entryText)
rtext_f, rtext = scrolledWidget(r, TkText, false,
:width=>12, :height=>5, :wrap=>:none)
sc = TkScale.new(r, :orient=>:horizontal, :from=>0, :to=>100,
:variable=>$V.ref(:SCALE))
vsc = TkScale.new(r, :orient=>:vertical, :from=>-25, :to=>25,
:variable=>$V.ref(:VSCALE))
Tk.grid(cb, :sticky=>:ew)
Tk.grid(rb1, :sticky=>:ew)
Tk.grid(rb2, :sticky=>:ew)
@ -437,8 +419,6 @@ Tk.grid(btn, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(mb, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(e, :sticky=>:ew, :padx=>2, :pady=>2)
Tk.grid(rtext_f, :sticky=>:news)
Tk.grid(sc, :sticky=>:news)
Tk.grid(vsc, :sticky=>:nws)
TkGrid.columnconfigure(l, 0, :weight=>1)
TkGrid.rowconfigure(l, 7, :weight=>1) # text widget (grid is a PITA)
@ -467,6 +447,135 @@ nmsgs = msgs.size
ltext.insert(:end, "#{n}: #{msg}\n")
rtext.insert(:end, "#{n}: #{msg}\n")
}
#
# Scales and sliders pane:
#
l = Tk::Tile::TLabelframe.new(scales, :text=>'Themed', :padding=>6)
r = TkLabelframe.new(scales, :text=>'Standard', :padx=>6, :pady=>6)
if version?('0.6')
# thremed frame
scale = Tk::Tile::TScale.new(l, :orient=>:horizontal, :from=>0, :to=>100,
:variable=>$V.ref(:SCALE))
vscale = Tk::Tile::TScale.new(l, :orient=>:vertical, :from=>0, :to=>100,
:variable=>$V.ref(:VSCALE))
progress = Tk::Tile::TProgressbar.new(l, :orient=>:horizontal, :maximum=>100)
vprogress = Tk::Tile::TProgressbar.new(l, :orient=>:vertical, :maximum=>100)
if true
def progress.inverted(w, value)
w.value(w.maximum - value)
end
scale.command {|value| progress.value(value)}
vscale.command {|value| progress.inverted(vprogress, value) }
else
# This would also work, but the Tk scale widgets
# in the right hand pane cause some interference when
# in autoincrement/indeterminate mode.
#
progress.variable $V.ref(:SCALE)
vprogress.variable $V.ref(:VSCALE)
end
scale.set(50)
vscale.set(50)
lmode = Tk::Tile::TLabel.new(l, :text=>'Progress bar mode')
pbmode0 = Tk::Tile::TRadiobutton.new(l, :variable=>$V.ref(:PBMODE),
:text=>'determinate', :value=>'determinate',
:command=>proc{pbMode(progress, vprogress)})
pbmode1 = Tk::Tile::TRadiobutton.new(l, :variable=>$V.ref(:PBMODE),
:text=>'indeterminate', :value=>'indeterminate',
:command=>proc{pbMode(progress, vprogress)})
def pbMode(progress, vprogress)
progress.mode $V[:PBMODE]
vprogress.mode $V[:PBMODE]
end
start = Tk::Tile::TButton.new(l, :text=>"Start",
:command=>proc{pbStart(progress, vprogress)})
def pbStart(progress, vprogress)
$V[:PBMODE] = 'indeterminate'; pbMode(progress, vprogress)
progress.start 10
vprogress.start
end
stop = Tk::Tile::TButton.new(l, :text=>'Stop',
:command=>proc{pbStop(progress, vprogress)})
def pbStop(progress, vprogress)
progress.stop
vprogress.stop
end
Tk.grid(scale, :columnspan=>2, :sticky=>'ew')
Tk.grid(progress, :columnspan=>2, :sticky=>'ew')
Tk.grid(vscale, vprogress, :sticky=>'nws')
Tk.grid(lmode, :sticky=>'we', :columnspan=>2)
Tk.grid(pbmode0, :sticky=>'we', :columnspan=>2)
Tk.grid(pbmode1, :sticky=>'we', :columnspan=>2)
Tk.grid(start, :sticky=>'we', :columnspan=>2)
Tk.grid(stop, :sticky=>'we', :columnspan=>2)
l.grid_columnconfigure(0, :weight=>1)
l.grid_columnconfigure(1, :weight=>1)
l.grid_rowconfigure(99, :weight=>1)
# standard frame
TkScale.new(r, :orient=>:horizontal, :from=>0, :to=>100,
:variable=>$V.ref(:SCALE)).grid(:sticky=>'news')
TkScale.new(r, :orient=>:vertical, :from=>0, :to=>100,
:variable=>$V.ref(:VSCALE)).grid(:sticky=>'nws')
r.grid_columnconfigure(0, :weight=>1)
r.grid_columnconfigure(1, :weight=>1)
r.grid_rowconfigure(99, :weight=>1)
else # tile 0.5 or earlier
# themed frame
scale = Tk::Tile::TScale.new(l, :variable=>$V.ref(:SCALE),
:orient=>:horizontal, :from=>0, :to=>100)
vscale = Tk::Tile::TScale.new(l, :variable=>$V.ref(:VSCALE),
:orient=>:vertical, :from=>-25, :to=>25)
progress = Tk::Tile::TProgress.new(l,
:orient=>:horizontal, :from=>0, :to=>100)
vprogress = Tk::Tile::TProgress.new(l,
:orient=>:vertical, :from=>-25, :to=>25)
if true
scale.command{|value| progress.set(value)}
vscale.command{|value| vprogress.set(value)}
else # this would also work. (via TkVariable#trace)
v1 = $V.ref(:SCALE)
v2 = $V.ref(:VSCALE)
v1.trace('w', proc{ progress.set(v1.value) })
v2.trace('w', proc{ vprogress.set(v2.value) })
end
Tk.grid(scale, :columnspan=>2, :sticky=>:ew)
Tk.grid(progress, :columnspan=>2, :sticky=>:ew)
Tk.grid(vscale, vprogress, :sticky=>:nws)
TkGrid.columnconfigure(l, 0, :weight=>1)
TkGrid.columnconfigure(l, 1, :weight=>1)
# standard frame
TkScale.new(r, :variable=>$V.ref(:SCALE),
:orient=>:horizontal, :from=>0, :to=>100).grid(:sticky=>'news')
TkScale.new(r, :variable=>$V.ref(:VSCALE),
:orient=>:vertical, :from=>-25, :to=>25).grid(:sticky=>'nws')
TkGrid.columnconfigure(r, 0, :weight=>1)
TkGrid.columnconfigure(r, 1, :weight=>1)
end
# layout frames
Tk.grid(l, r, :sticky=>'nwes', :padx=>6, :pady=>6)
scales.grid_columnconfigure(0, :weight=>1)
scales.grid_columnconfigure(1, :weight=>1)
scales.grid_rowconfigure(0, :weight=>1)
#
# Command box:
@ -560,7 +669,7 @@ values = %w(list abc def ghi jkl mno pqr stu vwx yz)
#
# Treeview widget demo pane:
#
if TkPackage.vcompare(Tk::Tile.package_version, '0.5') >= 0
if version?('0.5')
treeview = nil # avoid 'undefined' error
scrollbar = Tk::Tile::TScrollbar.new(tree,
@ -822,9 +931,9 @@ def repeatDemo
f = Tk::Tile::TFrame.new($repeatDemo)
b = Tk::Tile::TButton.new(f, :class=>'Repeater', :text=>'Press and hold')
begin
if version?('0.6')
p = Tk::Tile::TProgressbar.new(f, :orient=>:horizontal, :maximum=>10)
rescue # progressbar is not supported (tile 0.4)
else # progressbar is not supported
p = Tk::Tile::TProgress.new(f, :orient=>:horizontal, :from=>0, :to=>10)
def p.step
i = self.get + 1