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 --- ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb | 198 +++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb (limited to 'ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb') diff --git a/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb b/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb new file mode 100644 index 0000000000..c1521651fd --- /dev/null +++ b/ruby_1_8_6/ext/tk/sample/tkextlib/bwidget/basic.rb @@ -0,0 +1,198 @@ +# +# basic 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 DemoBasic + @@var = TkVariable.new_hash + @@after = nil + @@count = 0 + + def self.create(nb) + frame = nb.insert('end', 'demoBasic', :text=>'Basic') + topf = TkFrame.new(frame) + + titf1 = Tk::BWidget::TitleFrame.new(topf, :text=>'Label') + titf2 = Tk::BWidget::TitleFrame.new(topf, :text=>'Entry') + + titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>'Button and ArrowButton') + + _label(titf1.get_frame) + _entry(titf2.get_frame) + _button(titf3.get_frame) + + Tk.pack(titf1, titf2, :side=>:left, :fill=>:both, :padx=>4, :expand=>true) + topf.pack(:pady=>2, :fill=>:x) + titf3.pack(:pady=>2, :padx=>4, :fill=>:x) + end + + def self._label(parent) + lab = Tk::BWidget::Label.new(parent, :text=>'This is a Label widget', + :helptext=>'Label widget') + chk = TkCheckbutton.new(parent, :text=>'Disabled', + :variable=>@@var.ref(lab, 'state'), + :onvalue=>'disabled', :offvalue=>'normal', + :command=>proc{lab[:state] = @@var[lab, 'state']}) + lab.pack(:anchor=>:w, :pady=>4) + chk.pack(:anchor=>:w) + end + + def self._entry(parent) + ent = Tk::BWidget::Entry.new(parent, :text=>'Press enter', + :helptext=>'Entry widtet', + :command=>proc{ + @@var['entcmd'] = 'command called' + Tk.after(500, proc{@@var['entcmd'] = ''}) + }) + + chk1 = TkCheckbutton.new(parent, :text=>'Disabled', + :variable=>@@var.ref(ent, 'state'), + :onvalue=>'disabled', :offvalue=>'normal', + :command=>proc{ent.state = @@var[ent, 'state']}) + + chk2 = TkCheckbutton.new(parent, :text=>'Non editable', + :variable=>@@var.ref(ent, 'editable'), + :onvalue=>false, :offvalue=>true, + :command=>proc{ + ent.editable = @@var[ent, 'editable'] + }) + + lab = TkLabel.new(parent, :textvariable=>@@var.ref('entcmd'), + :foreground=>'red') + + ent.pack(:pady=>4, :anchor=>:w) + Tk.pack(chk1, chk2, :anchor=>:w) + lab.pack(:pady=>4) + end + + def self._button(parent) + frame = TkFrame.new(parent) + but = Tk::BWidget::Button.new(frame, :text=>'Press me!', + :repeatdelay=>300, + :command=>proc{_butcmd('command')}, + :helptext=>'This is a Button widget') + + sep1 = Tk::BWidget::Separator.new(frame, :orient=>:vertical) + arr1 = Tk::BWidget::ArrowButton.new(frame, :type=>:button, + :width=>25, :height=>25, :repeatdelay=>300, + :command=>proc{_butcmd('command')}, + :helptext=>"This is an ArrowButton widget\nof type button") + + sep2 = Tk::BWidget::Separator.new(frame, :orient=>:vertical) + arr2 = Tk::BWidget::ArrowButton.new(frame, :type=>:arrow, + :width=>25, :height=>25, :relief=>:sunken, + :ipadx=>0, :ipady=>0, :repeatdelay=>300, + :command=>proc{_butcmd('command')}, + :helptext=>"This is an ArrowButton widget\nof type arrow") + + but.pack(:side=>:left, :padx=>4) + sep1.pack(:side=>:left, :padx=>4, :fill=>:y) + arr1.pack(:side=>:left, :padx=>4) + sep2.pack(:side=>:left, :padx=>4, :fill=>:y) + arr2.pack(:side=>:left, :padx=>4) + frame.pack + + Tk::BWidget::Separator.new(parent, + :orient=>:horizontal).pack(:fill=>:x, :pady=>10) + + labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Command', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>1) + subf = labf1.get_frame + chk1 = TkCheckbutton.new(subf, :text=>'Disabled', + :variable=>@@var.ref('bstate'), + :onvalue=>'disabled', :offvalue=>'normal', + :command=>proc{_bstate(@@var['bstate'], + but, arr1, arr2)}) + chk2 = TkCheckbutton.new(subf, :text=>"Use armcommand/\ndisarmcommand", + :variable=>@@var.ref('barmcmd'), + :command=>proc{_barmcmd(@@var['barmcmd'], + but, arr1, arr2)}) + Tk.pack(chk1, chk2, :anchor=>:w) + + label = TkLabel.new(parent, :textvariable=>@@var.ref('butcmd'), + :foreground=>'red').pack(:side=>:bottom, :pady=>4) + + labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Direction', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>1) + subf = labf2.get_frame + @@var['bside'] = :top + [:top, :left, :bottom, :right].each{|dir| + TkRadiobutton.new(subf, :text=>"#{dir} arrow", + :variable=>@@var.ref('bside'), :value=>dir, + :command=>proc{_bside(@@var['bside'], arr1, arr2)} + ).pack(:anchor=>:w) + } + + labf3 = Tk::BWidget::LabelFrame.new(parent, :text=>'Relief', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>1) + subf = labf3.get_frame + @@var['brelief'] = :raised + [ %w(raised sunken ridge groove), %w(flat solid link)].each{|lrelief| + f = TkFrame.new(subf) + lrelief.each{|relief| + TkRadiobutton.new(f, :text=>relief, + :variable=>@@var.ref('brelief'), :value=>relief, + :command=>proc{ + _brelief(@@var['brelief'], but, arr1, arr2) + }).pack(:anchor=>:w) + } + f.pack(:side=>:left, :padx=>2, :anchor=>:n) + } + Tk.pack(labf1, labf2, labf3, :side=>:left, :fill=>:y, :padx=>4) + end + + def self._bstate(state, but, arr1, arr2) + [but, arr1, arr2].each{|b| b[:state] = state} + end + + def self._brelief(relief, but, arr1, arr2) + but[:relief] = relief + if relief.to_s != 'link' + [arr1, arr2].each{|arr| arr[:relief] = relief} + end + end + + def self._bside(side, *args) + args.each{|arr| arr[:dir] = side} + end + + def self._barmcmd(value, but, arr1, arr2) + if TkComm.bool(value) + but.configure(:armcommand=>proc{_butcmd('arm')}, + :disarmcommand=>proc{_butcmd('disarm')}, + :command=>'') + [arr1, arr2].each{|arr| + arr.configure(:armcommand=>proc{_butcmd('arm')}, + :disarmcommand=>proc{_butcmd('disarm')}, + :command=>'') + } + else + but.configure(:armcommand=>'', :disarmcommand=>'', + :command=>proc{_butcmd('command')}) + [arr1, arr2].each{|arr| + arr.configure(:armcommand=>'', :disarmcommand=>'', + :command=>proc{_butcmd('command')}) + } + end + end + + def self._butcmd(reason) + unless @@after + @@after = TkTimer.new(500, 1, proc{@@var['butcmd'] = ''}) + end + @@after.stop + if (reason == 'arm') + @@count += 1 + @@var['butcmd'] = "#{reason} command called (#{@@count})" + else + @@count = 0 + @@var['butcmd'] = "#{reason} command called" + end + @@after.start + end +end -- cgit v1.2.3