mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
3514110b89
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
221 lines
9.5 KiB
Ruby
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
|
|
|