mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
287a34ae0d
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
243 lines
7.4 KiB
Ruby
243 lines
7.4 KiB
Ruby
#!/usr/bin/env ruby
|
|
require 'tk'
|
|
require 'tkextlib/bwidget'
|
|
|
|
module DemoVar
|
|
@_wfont = nil
|
|
@notebook = nil
|
|
@mainframe = nil
|
|
@status = TkVariable.new
|
|
@prgtext = TkVariable.new
|
|
@prgindic = TkVariable.new
|
|
@font = nil
|
|
@font_name = nil
|
|
@toolbar1 = TkVariable.new(true)
|
|
@toolbar2 = TkVariable.new(true)
|
|
end
|
|
class << DemoVar
|
|
attr_accessor :_wfont, :notebook, :mainframe, :font, :font_name
|
|
attr_reader :status, :prgtext, :prgindic, :toolbar1, :toolbar2
|
|
end
|
|
|
|
class BWidget_Demo
|
|
DEMODIR = File.dirname(File.expand_path(__FILE__))
|
|
|
|
%w(manager basic select dnd tree tmpldlg).each{|f|
|
|
require File.join(DEMODIR, f << '.rb')
|
|
}
|
|
|
|
def initialize
|
|
TkOption.add('*TitleFrame.l.font', 'helvetica 11 bold italic')
|
|
|
|
root = TkRoot.new(:title=>'BWidget demo')
|
|
root.withdraw
|
|
|
|
_create
|
|
|
|
Tk::BWidget.place(root, 0, 0, :center)
|
|
root.deiconify
|
|
root.raise
|
|
root.focus(true)
|
|
|
|
root.geometry(root.geometry)
|
|
end
|
|
|
|
def _create
|
|
DemoVar.prgtext.value = 'Please wait while loading font...'
|
|
DemoVar.prgindic.value = -1
|
|
|
|
intro = _create_intro
|
|
|
|
Tk.update
|
|
|
|
Tk::BWidget::SelectFont.load_font
|
|
|
|
descmenu = [
|
|
'&File', 'all', 'file', 0, [
|
|
['command', 'E&xit', [], 'Exit BWidget demo', [],
|
|
{:command=>proc{exit}}]
|
|
],
|
|
'&Options', 'all', 'options', 0, [
|
|
['checkbutton', 'Toolbar &1', ['all', 'option'],
|
|
'Show/hide toolbar 1', [],
|
|
{ :variable=>DemoVar.toolbar1,
|
|
:command=>proc{
|
|
DemoVar.mainframe.show_toolbar(0, DemoVar.toolbar1.value)
|
|
}
|
|
}
|
|
],
|
|
['checkbutton', 'Toolbar &2', ['all', 'option'],
|
|
'Show/hide toolbar 2', [],
|
|
{ :variable=>DemoVar.toolbar2,
|
|
:command=>proc{
|
|
DemoVar.mainframe.show_toolbar(1, DemoVar.toolbar2.value)
|
|
}
|
|
}
|
|
]
|
|
]
|
|
]
|
|
|
|
DemoVar.prgtext.value = 'Creating MainFrame...'
|
|
DemoVar.prgindic.value = 0
|
|
|
|
DemoVar.mainframe = Tk::BWidget::MainFrame.new(
|
|
:menu=>descmenu,
|
|
:textvariable=>DemoVar.status,
|
|
:progressvar=>DemoVar.prgindic
|
|
)
|
|
|
|
# toobar 1 creation
|
|
DemoVar.prgindic.numeric += 1
|
|
|
|
DemoVar.mainframe.add_toolbar{|tb1|
|
|
Tk::BWidget::ButtonBox.new(tb1, :spacing=>0, :padx=>1, :pady=>1){|bbox|
|
|
add(:image=>Tk::BWidget::Bitmap.new('new'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Create a new file" icon'},
|
|
:helptext=>"Create a new file")
|
|
|
|
add(:image=>Tk::BWidget::Bitmap.new('open'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Open an existing file" icon'},
|
|
:helptext=>"Open an existing file")
|
|
|
|
add(:image=>Tk::BWidget::Bitmap.new('save'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Save file" icon'},
|
|
:helptext=>"Save file")
|
|
|
|
pack(:side=>:left, :anchor=>:w)
|
|
}
|
|
|
|
Tk::BWidget::Separator.new(tb1, :orient=>:vertical){
|
|
pack(:side=>:left, :fill=>:y, :padx=>4, :anchor=>:w)
|
|
}
|
|
|
|
DemoVar.prgindic.numeric += 1
|
|
|
|
Tk::BWidget::ButtonBox.new(tb1, :spacing=>0, :padx=>1, :pady=>1){|bbox|
|
|
add(:image=>Tk::BWidget::Bitmap.new('cut'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Cut selection" icon'},
|
|
:helptext=>"Cut selection")
|
|
|
|
add(:image=>Tk::BWidget::Bitmap.new('copy'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Copy selection" icon'},
|
|
:helptext=>"Copy selection")
|
|
|
|
add(:image=>Tk::BWidget::Bitmap.new('paste'),
|
|
:highlightthickness=>0, :takefocus=>0, :relief=>:link,
|
|
:borderwidth=>1, :padx=>1, :pady=>1,
|
|
:command=>proc{puts 'select "Paste selection" icon'},
|
|
:helptext=>"Paste selection")
|
|
|
|
pack(:side=>:left, :anchor=>:w)
|
|
}
|
|
}
|
|
|
|
# toolbar 2 creation
|
|
DemoVar.prgindic.numeric += 1
|
|
|
|
tb2 = DemoVar.mainframe.add_toolbar
|
|
DemoVar._wfont = Tk::BWidget::SelectFont::Toolbar.new(tb2,
|
|
:command=>proc{update_font(DemoVar._wfont[:font])}
|
|
)
|
|
DemoVar.font = DemoVar._wfont[:font]
|
|
DemoVar._wfont.pack(:side=>:left, :anchor=>:w)
|
|
|
|
DemoVar.mainframe.add_indicator(
|
|
:text=>"BWidget #{Tk::BWidget.package_version}"
|
|
)
|
|
DemoVar.mainframe.add_indicator(:textvariable=>'tk_patchLevel')
|
|
|
|
# NoteBook creation
|
|
DemoVar.notebook = Tk::BWidget::NoteBook.new(DemoVar.mainframe.get_frame)
|
|
|
|
DemoVar.prgtext.value = "Creating Manager..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoManager.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Creating Basic..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoBasic.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Creating Select..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoSelect.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Creating Dialog..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoDialog.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Creating Drag and Drop..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoDnD.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Creating Tree..."
|
|
DemoVar.prgindic.numeric += 1
|
|
DemoTree.create(DemoVar.notebook)
|
|
|
|
DemoVar.prgtext.value = "Done"
|
|
DemoVar.prgindic.numeric += 1
|
|
|
|
DemoVar.notebook.compute_size
|
|
DemoVar.notebook.pack(:fill=>:both, :expand=>true, :padx=>4, :pady=>4)
|
|
DemoVar.notebook.raise(DemoVar.notebook.get_page(0))
|
|
|
|
DemoVar.mainframe.pack(:fill=>:both, :expand=>true)
|
|
|
|
Tk.update_idletasks
|
|
|
|
intro.destroy
|
|
end
|
|
|
|
def update_font(newfont)
|
|
root = Tk.root
|
|
root[:cursor] = 'watch'
|
|
if newfont != '' && DemoVar.font != newfont
|
|
DemoVar._wfont[:font] = newfont
|
|
DemoVar.notebook[:font] = newfont
|
|
DemoVar.font = newfont
|
|
end
|
|
root[:cursor] = ''
|
|
end
|
|
|
|
def _create_intro
|
|
top = TkToplevel.new(:relief=>:raised, :borderwidth=>2)
|
|
top.withdraw
|
|
top.overrideredirect(true)
|
|
|
|
ximg = TkLabel.new(top, :bitmap=>"@#{File.join(DEMODIR,'x1.xbm')}",
|
|
:foreground=>'grey90', :background=>'white')
|
|
bwimg = TkLabel.new(ximg, :bitmap=>"@#{File.join(DEMODIR,'bwidget.xbm')}",
|
|
:foreground=>'grey90', :background=>'white')
|
|
frame = TkFrame.new(ximg, :background=>'white')
|
|
TkLabel.new(frame, :text=>'Loading demo',
|
|
:background=>'white', :font=>'times 8').pack
|
|
TkLabel.new(frame, :textvariable=>DemoVar.prgtext,
|
|
:background=>'white', :font=>'times 8', :width=>35).pack
|
|
Tk::BWidget::ProgressBar.new(frame, :width=>50, :height=>10,
|
|
:background=>'white',
|
|
:variable=>DemoVar.prgindic,
|
|
:maximum=>10).pack
|
|
frame.place(:x=>0, :y=>0, :anchor=>:nw)
|
|
bwimg.place(:relx=>1, :rely=>1, :anchor=>:se)
|
|
ximg.pack
|
|
Tk::BWidget.place(top, 0, 0, :center)
|
|
top.deiconify
|
|
|
|
top
|
|
end
|
|
end
|
|
|
|
module DemoVar
|
|
Demo = BWidget_Demo.new
|
|
end
|
|
|
|
Tk.mainloop
|