1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb
nagai 3514110b89 * ext/tk/lib/tk/*: untabify
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-11 04:51:21 +00:00

221 lines
9.5 KiB
Ruby

#
# 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