From 441546edcfbb1b346c87b69c5f578d1a0e522e06 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Mon, 7 Jul 2008 07:36:34 +0000 Subject: add tag v1_8_6_269 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_269@17937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- .../ext/tk/sample/tkextlib/bwidget/manager.rb | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/manager.rb (limited to 'ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/manager.rb') diff --git a/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/manager.rb b/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/manager.rb new file mode 100644 index 0000000000..776cb3065b --- /dev/null +++ b/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/manager.rb @@ -0,0 +1,150 @@ +# +# manager demo --- called from demo.rb +# +unless Object.const_defined?('DemoVar') + fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. " +end + +module DemoManager + @@progress = TkVariable.new(false) + @@status = TkVariable.new('Compute in progress...') + @@homogeneous = TkVariable.new(false) + @@constw = TkVariable.new + @@afterobj = nil + + def self.create(nb) + frame = nb.insert('end', 'demoManager', :text=>'Manager') + + topf = TkFrame.new(frame) + titf1 = Tk::BWidget::TitleFrame.new(topf, :text=>"MainFrame") + titf2 = Tk::BWidget::TitleFrame.new(topf, :text=>"NoteBook") + titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>"Paned & ScrolledWindow") + + _mainframe(titf1.get_frame) + _notebook(titf2.get_frame) + _paned(titf3.get_frame) + + Tk.pack(titf1, titf2, :padx=>4, :side=>:left, :fill=>:both, :expand=>true) + Tk.pack(topf, :fill=>:x, :pady=>2) + Tk.pack(titf3, :pady=>2, :padx=>4, :fill=>:both, :expand=>true) + + frame + end + + def self._mainframe(parent) + labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Toolbar', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>2) + subf = labf1.get_frame + chk1 = TkCheckbutton.new(subf, :text=>'View toolbar 1', + :variable=>DemoVar.toolbar1, + :command=>proc{ + DemoVar.mainframe.show_toolbar( + 0, DemoVar.toolbar1.value + ) + }) + chk2 = TkCheckbutton.new(subf, :text=>'View toolbar 2', + :variable=>DemoVar.toolbar2, + :command=>proc{ + DemoVar.mainframe.show_toolbar( + 1, DemoVar.toolbar2.value + ) + }) + + Tk.pack(chk1, chk2, :anchor=>:w, :fill=>:x) + labf1.pack(:fill=>:both) + + labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Status bar', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>2) + subf = labf2.get_frame + chk1 = TkCheckbutton.new(subf, :text=>"Show Progress\nindicator", + :justify=>:left, :variable=>@@progress, + :command=>proc{ _show_progress }) + chk1.pack(:anchor=>:w, :fill=>:x) + + Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :fill=>:both) + end + + def self._notebook(parent) + TkCheckbutton.new(parent, :text=>'Homogeneous label', + :variable=>@@homogeneous, + :command=>proc{ + DemoVar.notebook[:homogeneous] = @@homogeneous.value + }).pack(:side=>:left, :anchor=>:n, :fill=>:x) + end + + def self._paned(parent) + pw1 = Tk::BWidget::PanedWindow.new(parent, :side=>:top) + pane = pw1.add(:minsize=>100) + + pw2 = Tk::BWidget::PanedWindow.new(pane, :side=>:left) + pane1 = pw2.add(:minsize=>100) + pane2 = pw2.add(:minsize=>100) + + pane3 = pw1.add(:minsize=>100) + + [pane1, pane2].each{|pane| + sw = Tk::BWidget::ScrolledWindow.new(pane) + lb = TkListbox.new(sw, :height=>8, :width=>20, :highlightthickness=>0) + (1..8).each{|i| lb.insert('end', "Valur #{i}") } + sw.set_widget(lb) + sw.pack(:fill=>:both, :expand=>true) + } + + sw = Tk::BWidget::ScrolledWindow.new(pane3, :relief=>:sunken, + :borderwidth=>2) + sf = Tk::BWidget::ScrollableFrame.new(sw) + sw.set_widget(sf) + subf = sf.get_frame + lab = TkLabel.new(subf, :text=>'This is a ScrollableFrame') + chk = TkCheckbutton.new(subf, :text=>'Constrained with', + :variable=>@@constw, :command=>proc{ + sf['constrainedwidth'] = @@constw.value + }) + lab.pack + chk.pack(:anchor=>:w) + chk.bind('FocusIn', proc{sf.see(chk)}) + (0..20).each{|i| + ent = TkEntry.new(subf, :width=>50).pack(:fill=>:x, :pady=>4) + ent.bind('FocusIn', proc{sf.see(ent)}) + ent.insert('end', "Text field #{i}") + } + + Tk.pack(sw, pw2, pw1, :fill=>:both, :expand=>true) + end + + def self._show_progress + unless @@afterobj + @@afterobj = TkTimer.new(30, -1, proc{_update_progress}) + end + if @@progress.bool + DemoVar.status.value = 'Compute in progress...' + DemoVar.prgindic.value = 0 + DemoVar.mainframe.show_statusbar(:progression) + @@afterobj.start unless @@afterobj.running? + else + DemoVar.status.value = '' + DemoVar.mainframe.show_statusbar(:status) + @@afterobj.stop + end + end + + def self._update_progress + if @@progress.bool + if DemoVar.prgindic.numeric < 100 + DemoVar.prgindic.numeric += 5 + else + @@progress.value = false + DemoVar.mainframe.show_statusbar(:status) + DemoVar.status.value = 'Done' + @@afterobj.stop + Tk.after(500, proc{ DemoVar.status.value = '' }) + end + else + @@afterobj.stop + end + end + +end + -- cgit v1.2.3