diff options
-rw-r--r-- | ext/tk/ChangeLog.tkextlib | 10 | ||||
-rw-r--r-- | ext/tk/sample/tkextlib/tile/demo.rb | 40 |
2 files changed, 42 insertions, 8 deletions
diff --git a/ext/tk/ChangeLog.tkextlib b/ext/tk/ChangeLog.tkextlib index 85b4cf619..c16daadb4 100644 --- a/ext/tk/ChangeLog.tkextlib +++ b/ext/tk/ChangeLog.tkextlib @@ -1,12 +1,18 @@ 2005-08-01 ocean <ocean@ruby-lang.org> + * sample/tkextlib/tile/demo.rb: added repeating buttons demo. + + * sample/tkextlib/tile/repeater.tcl: ditto. (new file) + +2005-08-01 ocean <ocean@ruby-lang.org> + * lib/tkextlib/tile.rb: fixed autoload for Treeview. * lib/tkextlib/tile/treeview.rb: replaced `ary2tk_list(items)' with `*items'. - * sample/tkextlib/tile: added treeview demo. (tile 0.5 or later is - needed) [ruby-dev:26668] + * sample/tkextlib/tile/demo.rb: added treeview demo. (tile 0.5 or + later is required) [ruby-dev:26668] 2005-08-01 ocean <ocean@ruby-lang.org> diff --git a/ext/tk/sample/tkextlib/tile/demo.rb b/ext/tk/sample/tkextlib/tile/demo.rb index 473e5b4bd..7c58704c5 100644 --- a/ext/tk/sample/tkextlib/tile/demo.rb +++ b/ext/tk/sample/tkextlib/tile/demo.rb @@ -10,6 +10,7 @@ Tk::AUTO_PATH.lappend('.', demodir, File.join(demodir, 'themes')) require 'tkextlib/tile' Tk.load_tclscript(File.join(demodir, 'toolbutton.tcl')) +Tk.load_tclscript(File.join(demodir, 'repeater.tcl')) # This forces an update of the available packages list. It's required # for package names to find the themes in demos/themes/*.tcl @@ -307,10 +308,6 @@ def makeNotebook nb.add(tree, :text=>'Tree') others = Tk::Tile::TFrame.new(nb) nb.add(others, :text=>'Others', :underline=>4) - nb.add(Tk::Tile::TLabel.new(nb, :text=>'Nothing to see here...'), - :text=>'Stuff', :sticky=>:new) - nb.add(Tk::Tile::TLabel.new(nb, :text=>'Nothing to see here either.'), - :text=>'More Stuff', :sticky=>:se) [nb, client, combo, tree, others] end @@ -624,7 +621,11 @@ showDescription.bind('Leave', proc{|w| msg.text('')}, '%W') "Shows how Tile and standard scrollbars differ when they're sized too large" ], [ :trackFocus, "Track keyboard focus..." , - "Display the name of the widget that currently has focus" ] + "Display the name of the widget that currently has focus" ], + + [ :repeatDemo, "Repeating buttons...", + "Demonstrates custom classes (see demos/repeater.tcl)" ] + ].each{|demo_cmd, label, description| b = Tk::Tile::TButton.new(others, :text=>label, :command=>proc{ self.__send__(demo_cmd) }) @@ -722,7 +723,6 @@ end # # Widget state demo: # - $Widget = TkVariable.new TkBindTag::ALL.bind('Control-Shift-ButtonPress-1', @@ -808,4 +808,32 @@ def changeState(st) end end +# +# Repeating buttons demo: +# +def repeatDemo + if defined?($repeatDemo) && $repeatDemo.exist? + $repeatDemo.deiconify; return + end + $repeatDemo = TkToplevel.new(:title=>'Repeating button') + + f = Tk::Tile::TFrame.new($repeatDemo) + b = Tk::Tile::TButton.new(f, :class=>'Repeater', :text=>'Press and hold') + begin + p = Tk::Tile::TProgressbar.new(f, :orient=>:horizontal, :maximum=>10) + rescue # progressbar is not supported (tile 0.4) + p = Tk::Tile::TLabel.new(f, :text=>0) + def p.step + i = self.text.to_i + 1 + i = 0 if i >= 10 + self.text(i.to_s) + end + end + b.command {p.step} + + b.pack(:side=>:left, :expand=>false, :fill=>:none, :padx=>6, :pady=>6) + p.pack(:side=>:right, :expand=>true, :fill=>:x, :padx=>6, :pady=>6) + f.pack(:expand=>true, :fill=>:both) +end + Tk.mainloop |