summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-08-04 04:16:27 +0000
committerocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-08-04 04:16:27 +0000
commitb214246bf1fbb689dc1c5678e3f3c76113584da8 (patch)
tree526014d5af104849925bb5c51ee2fd8ef1b0e38c
parentd042ab1adcc5cd1cc9a23de15ffeb9357d47732a (diff)
* 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/branches/ruby_1_8@8904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ext/tk/ChangeLog.tkextlib10
-rw-r--r--ext/tk/sample/tkextlib/tile/demo.rb181
2 files changed, 155 insertions, 36 deletions
diff --git a/ext/tk/ChangeLog.tkextlib b/ext/tk/ChangeLog.tkextlib
index f12ef04f2f..bc01d92fec 100644
--- a/ext/tk/ChangeLog.tkextlib
+++ b/ext/tk/ChangeLog.tkextlib
@@ -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
diff --git a/ext/tk/sample/tkextlib/tile/demo.rb b/ext/tk/sample/tkextlib/tile/demo.rb
index a8a350a2af..d09af7c3bd 100644
--- a/ext/tk/sample/tkextlib/tile/demo.rb
+++ b/ext/tk/sample/tkextlib/tile/demo.rb
@@ -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