diff options
Diffstat (limited to 'trunk/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb')
-rw-r--r-- | trunk/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/trunk/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb b/trunk/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb new file mode 100644 index 0000000000..3d19c8d092 --- /dev/null +++ b/trunk/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb @@ -0,0 +1,221 @@ +# +# templdlg 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 DemoDialog + @@tmpl = TkVariable.new_hash + @@msg = TkVariable.new_hash + @@msgdlg = nil + @@progmsg = TkVariable.new + @@progval = TkVariable.new + @@progdlg = nil + @@resources = TkVariable.new('en') + + def self.create(nb) + frame = nb.insert('end', 'demoDlg', :text=>'Dialog') + + titf1 = Tk::BWidget::TitleFrame.new(frame, :text=>'Resources') + titf2 = Tk::BWidget::TitleFrame.new(frame, :text=>'Template Dialog') + titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>'Message Dialog') + titf4 = Tk::BWidget::TitleFrame.new(frame, :text=>'Other dialog') + + subf = titf1.get_frame + cmd = proc{ TkOption.read_file(File.join(Tk::BWidget::LIBRARY, 'lang', + @@resources.value + '.rc')) } + Tk.pack(TkRadiobutton.new(subf, :text=>'English', :value=>'en', + :variable=>@@resources, :command=>cmd), + TkRadiobutton.new(subf, :text=>'French', :value=>'fr', + :variable=>@@resources, :command=>cmd), + TkRadiobutton.new(subf, :text=>'German', :value=>'de', + :variable=>@@resources, :command=>cmd), + :side=>:left) + + _tmpldlg(titf2.get_frame) + _msgdlg(titf3.get_frame) + _stddlg(titf4.get_frame) + + titf1.pack(:fill=>:x, :pady=>2, :padx=>2) + titf4.pack(:side=>:bottom, :fill=>:x, :pady=>2, :padx=>2) + Tk.pack(titf2, titf3, :side=>:left, :padx=>2, :fill=>:both, :expand=>true) + end + + def self._tmpldlg(parent) + @@tmpl['side'] = :bottom + @@tmpl['anchor'] = :c + + labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Button side', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>1) + subf = labf1.get_frame + Tk.pack(TkRadiobutton.new(subf, :text=>'Bottom', :value=>:bottom, + :variable=>@@tmpl.ref('side'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Left', :value=>:left, + :variable=>@@tmpl.ref('side'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Right', :value=>:right, + :variable=>@@tmpl.ref('side'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Top', :value=>:top, + :variable=>@@tmpl.ref('side'), :anchor=>:w), + :fill=>:x, :anchor=>:w) + + labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Button anchor', + :side=>:top, :anchor=>:w, + :relief=>:sunken, :borderwidth=>1) + subf = labf2.get_frame + Tk.pack(TkRadiobutton.new(subf, :text=>'North', :value=>:n, + :variable=>@@tmpl.ref('anchor'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'West', :value=>:w, + :variable=>@@tmpl.ref('anchor'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'East', :value=>:e, + :variable=>@@tmpl.ref('anchor'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'South', :value=>:s, + :variable=>@@tmpl.ref('anchor'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Center', :value=>:c, + :variable=>@@tmpl.ref('anchor'), :anchor=>:w), + :fill=>:x, :anchor=>:w) + + sep = Tk::BWidget::Separator.new(parent, :orient=>:horizontal) + button = TkButton.new(parent, :text=>'Show', :command=>proc{_show_tmpldlg}) + + button.pack(:side=>:bottom) + sep.pack(:side=>:bottom, :fill=>:x, :pady=>10) + Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :anchor=>:n) + end + + def self._msgdlg(parent) + @@msg['type'] = 'ok' + @@msg['icon'] = 'info' + + labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Type', :side=>:top, + :anchor=>:w, :relief=>:sunken, + :borderwidth=>1) + subf = labf1.get_frame + Tk.pack(TkRadiobutton.new(subf, :text=>'Ok', :value=>'ok', + :variable=>@@msg.ref('type'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Ok, Cancel', :value=>'okcancel', + :variable=>@@msg.ref('type'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Retry, Cancel', + :value=>'retrycancel', + :variable=>@@msg.ref('type'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Yes, No', :value=>'yesno', + :variable=>@@msg.ref('type'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Yes, No, Cancel', + :value=>'yesnocancel', + :variable=>@@msg.ref('type'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Abort, Retry, Ignore', + :value=>'abortretryignore', + :variable=>@@msg.ref('type'), :anchor=>:w), + :fill=>:x, :anchor=>:w) + + Tk.pack(TkRadiobutton.new(subf, :text=>'User', :value=>'user', + :variable=>@@msg.ref('type'), :anchor=>:w), + Tk::BWidget::Entry.new(subf, :textvariable=>@@msg.ref('buttons')), + :side=>:left) + + labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Icon', :side=>:top, + :anchor=>:w, :relief=>:sunken, + :borderwidth=>1) + subf = labf2.get_frame + Tk.pack(TkRadiobutton.new(subf, :text=>'Information', :value=>'info', + :variable=>@@msg.ref('icon'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Question', :value=>'question', + :variable=>@@msg.ref('icon'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Warning', :value=>'warning', + :variable=>@@msg.ref('icon'), :anchor=>:w), + TkRadiobutton.new(subf, :text=>'Error', :value=>'error', + :variable=>@@msg.ref('icon'), :anchor=>:w), + :fill=>:x, :anchor=>:w) + + sep = Tk::BWidget::Separator.new(parent, :orient=>:horizontal) + button = TkButton.new(parent, :text=>'Show', :command=>proc{_show_msgdlg}) + + button.pack(:side=>:bottom) + sep.pack(:side=>:bottom, :fill=>:x, :pady=>10) + Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :anchor=>:n) + end + + def self._stddlg(parent) + Tk.pack(TkButton.new(parent, :text=>'Select a color '){|w| + command(proc{DemoDialog._show_color(w)}) + }, + TkButton.new(parent, :text=>'Font selector dialog', + :command=>proc{_show_fontdlg}), + TkButton.new(parent, :text=>'Progression dialog', + :command=>proc{_show_progdlg}), + TkButton.new(parent, :text=>'Password dialog', + :command=>proc{_show_passdlg}), + :side=>:left, :padx=>5, :anchor=>:w) + end + + def self._show_color(w) + dlg = Tk::BWidget::SelectColor.new(w, :color=>w.background) + color = dlg.menu([:below, w]) + unless color.empty? + w.background(color) + end + end + + def self._show_tmpldlg + dlg = Tk::BWidget::Dialog.new(:relative=>Tk.root, :modal=>:local, + :separator=>true, :title=>'Template dialog', + :side=>@@tmpl['side'], + :anchor=>@@tmpl['anchor'], + :default=>0, :cancel=>1) + dlg.add('name'=>'ok') + dlg.add('name'=>'cancel') + TkMessage.new(dlg.get_frame, :text=>"Template\nDialog", :justify=>:center, + :anchor=>:c, :width=>80).pack(:fill=>:both, :expand=>true, + :padx=>100, :pady=>100) + dlg.draw + dlg.destroy + end + + def self._show_msgdlg + @@msgdlg.destroy if @@msgdlg + @@msgdlg = Tk::BWidget::MessageDlg.new(:relative=>Tk.root, + :message=>'Message for MessageBox', + :type=>@@msg['type'], + :icon=>@@msg['icon'], + :buttons=>@@msg['buttons']) + @@msgdlg.create + end + + def self._show_fontdlg + font = Tk::BWidget::SelectFont.new(:relative=>Tk.root, + :font=>DemoVar.font).create + DemoVar::Demo.update_font(font) + end + + def self._show_progdlg + @@progmsg.value = "Compute in progress..." + @@progval.value = 0 + + @@progdlg = Tk::BWidget::ProgressDlg.new(:relative=>Tk.root, + :title=>'Wait...', + :type=>'infinite', :width=>20, + :textvariable=>@@progmsg, + :variable=>@@progval, + :stop=>'Stop') { + command(proc{self.destroy}) + create + } + _update_progdlg + end + + def self._update_progdlg + TkTimer.new(20, -1, proc{ + if @@progdlg && @@progdlg.winfo_exist? + @@progval.value = 2 + else + stop + end + }).start + end + + def self._show_passdlg + Tk::BWidget::PasswdDlg.new(:relative=>Tk.root).create + end +end + |