wxruby 1.9.0-i686-darwin8.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/wx.rb +35 -0
- data/lib/wx/classes/app.rb +25 -0
- data/lib/wx/classes/artprovider.rb +31 -0
- data/lib/wx/classes/bitmap.rb +23 -0
- data/lib/wx/classes/choice.rb +4 -0
- data/lib/wx/classes/clientdc.rb +13 -0
- data/lib/wx/classes/colour.rb +47 -0
- data/lib/wx/classes/combobox.rb +4 -0
- data/lib/wx/classes/evthandler.rb +824 -0
- data/lib/wx/classes/font.rb +118 -0
- data/lib/wx/classes/grid.rb +130 -0
- data/lib/wx/classes/helpcontroller.rb +5 -0
- data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
- data/lib/wx/classes/htmlwindow.rb +6 -0
- data/lib/wx/classes/icon.rb +14 -0
- data/lib/wx/classes/image.rb +14 -0
- data/lib/wx/classes/listbox.rb +4 -0
- data/lib/wx/classes/locale.rb +28 -0
- data/lib/wx/classes/object.rb +7 -0
- data/lib/wx/classes/paintdc.rb +12 -0
- data/lib/wx/classes/point.rb +5 -0
- data/lib/wx/classes/previewframe.rb +13 -0
- data/lib/wx/classes/rect.rb +5 -0
- data/lib/wx/classes/size.rb +5 -0
- data/lib/wx/classes/texturlevent.rb +6 -0
- data/lib/wx/classes/timer.rb +69 -0
- data/lib/wx/classes/window.rb +38 -0
- data/lib/wx/classes/xmlresource.rb +16 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wxruby2.bundle +0 -0
- data/samples/SAMPLES-LICENSE.TXT +18 -0
- data/samples/aui/aui.rb +1352 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +25 -0
- data/samples/bigdemo/GridSimple.rbw +80 -0
- data/samples/bigdemo/MDIDemo.rbw +59 -0
- data/samples/bigdemo/PopupMenu.rbw +151 -0
- data/samples/bigdemo/ShapedWindow.rbw +135 -0
- data/samples/bigdemo/Sizers.rbw +545 -0
- data/samples/bigdemo/bigdemo.rb +826 -0
- data/samples/bigdemo/demoTemplate.rbw +37 -0
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/choice.xpm +27 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +27 -0
- data/samples/bigdemo/icons/copy.xpm +25 -0
- data/samples/bigdemo/icons/cut.xpm +24 -0
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +27 -0
- data/samples/bigdemo/icons/help.xpm +25 -0
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +27 -0
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +44 -0
- data/samples/bigdemo/icons/new.xpm +24 -0
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -0
- data/samples/bigdemo/icons/open.xpm +26 -0
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +38 -0
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +26 -0
- data/samples/bigdemo/icons/print.xpm +26 -0
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +27 -0
- data/samples/bigdemo/icons/robert.xpm +415 -0
- data/samples/bigdemo/icons/ruby.png +0 -0
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +25 -0
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +39 -0
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +42 -0
- data/samples/bigdemo/icons/stattext.xpm +24 -0
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -0
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +27 -0
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +38 -0
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +38 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +94 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +285 -0
- data/samples/bigdemo/wxBitmapButton.rbw +64 -0
- data/samples/bigdemo/wxButton.rbw +66 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
- data/samples/bigdemo/wxCheckBox.rbw +52 -0
- data/samples/bigdemo/wxCheckListBox.rbw +77 -0
- data/samples/bigdemo/wxChoice.rbw +49 -0
- data/samples/bigdemo/wxChoicebook.rbw +80 -0
- data/samples/bigdemo/wxColourDialog.rbw +34 -0
- data/samples/bigdemo/wxComboBox.rbw +79 -0
- data/samples/bigdemo/wxCursor.rbw +140 -0
- data/samples/bigdemo/wxDialog.rbw +92 -0
- data/samples/bigdemo/wxDirDialog.rbw +32 -0
- data/samples/bigdemo/wxDragImage.rbw +74 -0
- data/samples/bigdemo/wxFileDialog.rbw +39 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
- data/samples/bigdemo/wxFontDialog.rbw +176 -0
- data/samples/bigdemo/wxFrame.rbw +55 -0
- data/samples/bigdemo/wxGauge.rbw +73 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
- data/samples/bigdemo/wxGrid.rbw +68 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
- data/samples/bigdemo/wxListBox.rbw +142 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
- data/samples/bigdemo/wxMDIWindows.rbw +52 -0
- data/samples/bigdemo/wxMenu.rbw +238 -0
- data/samples/bigdemo/wxMessageDialog.rbw +30 -0
- data/samples/bigdemo/wxMiniFrame.rbw +74 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
- data/samples/bigdemo/wxNotebook.rbw +138 -0
- data/samples/bigdemo/wxProgressDialog.rbw +45 -0
- data/samples/bigdemo/wxRadioBox.rbw +74 -0
- data/samples/bigdemo/wxRadioButton.rbw +127 -0
- data/samples/bigdemo/wxSashWindow.rbw +155 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
- data/samples/bigdemo/wxSlider.rbw +44 -0
- data/samples/bigdemo/wxSpinButton.rbw +52 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
- data/samples/bigdemo/wxStaticText.rbw +57 -0
- data/samples/bigdemo/wxStatusBar.rbw +128 -0
- data/samples/bigdemo/wxTextCtrl.rbw +151 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
- data/samples/bigdemo/wxToggleButton.rbw +51 -0
- data/samples/bigdemo/wxToolBar.rbw +133 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
- data/samples/calendar/calendar.rb +275 -0
- data/samples/caret/caret.rb +296 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/controls/controls.rb +1140 -0
- data/samples/controls/get_item_sample.rb +87 -0
- data/samples/controls/icons/choice.xpm +27 -0
- data/samples/controls/icons/combo.xpm +27 -0
- data/samples/controls/icons/gauge.xpm +27 -0
- data/samples/controls/icons/list.xpm +27 -0
- data/samples/controls/icons/radio.xpm +27 -0
- data/samples/controls/icons/stattext.xpm +24 -0
- data/samples/controls/icons/text.xpm +27 -0
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +44 -0
- data/samples/controls/test2.bmp +0 -0
- data/samples/dialogs/dialogs.rb +724 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/etc/activation.rb +108 -0
- data/samples/etc/choice.rb +72 -0
- data/samples/etc/miniframe.rb +84 -0
- data/samples/etc/sash.rb +135 -0
- data/samples/etc/scrollwin.rb +116 -0
- data/samples/etc/system_settings.rb +258 -0
- data/samples/etc/wizard.rb +81 -0
- data/samples/grid/grid.rb +201 -0
- data/samples/html/html.rb +251 -0
- data/samples/images/Thumbs.db +0 -0
- data/samples/images/images.rb +48 -0
- data/samples/images/paperclip.png +0 -0
- data/samples/listbook/listbook.rb +183 -0
- data/samples/listbook/listbook.xrc +370 -0
- data/samples/mdi/mdi.rb +87 -0
- data/samples/minimal/minimal.rb +95 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.xpm +44 -0
- data/samples/minimal/nothing.rb +46 -0
- data/samples/minimal/text.rb +35 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +484 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/scintilla.rb +180 -0
- data/samples/text/textctrl.rb +124 -0
- data/samples/text/unicode.rb +238 -0
- data/samples/text/utf8.txt +15 -0
- data/samples/treectrl/icon1.xpm +79 -0
- data/samples/treectrl/icon2.xpm +53 -0
- data/samples/treectrl/icon3.xpm +79 -0
- data/samples/treectrl/icon4.xpm +43 -0
- data/samples/treectrl/icon5.xpm +79 -0
- data/samples/treectrl/treectrl.rb +1210 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/xrc_sample.rb +107 -0
- metadata +264 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
Startup tips are documented in the "Startup tips overview" section of wxWindows documentation.
|
2
|
+
These tips are being read from the tips.txt text file in this directory. Each line of the file contains a single tip.
|
3
|
+
If you close and open this tips dialog, you will notice that the tip numbers start at the point you were at when you closed the dialog last time. This allows easy cycling through the entire list of tips, instead of always showing the initial tips over and over.
|
4
|
+
Often you will want to save to the application's wxConfig, the last tip that the user saw, as well as whether they want to see tips on startup.
|
5
|
+
Comments in the tips file have a # as the first character. Comments are automatically skipped over. See the tips.txt file in this directory for the example.
|
6
|
+
# This line is a comment since it started with a #, and is skipped.
|
7
|
+
Blank lines in the tip file are also automatically skipped over. Lines with only spaces are also considered empty.
|
8
|
+
The next line in this tip file is empty, so it will be automatically skipped.
|
9
|
+
|
10
|
+
The next line in this tip file is just empty spaces, so it is considered empty too, and is also automatically skipped.
|
11
|
+
|
12
|
+
You can easily add translations to your startup tips via the usual gettext methods by wrapping a string in a gettext macro, which is _(""). See next tip for example.
|
13
|
+
_("This tip is marked as a translatable string by wrapping it inside the usual gettext macro, so it can be collected by gettext and added to a translation catalog. Your application can then use this catalog and serve out a translated version of the tip.")
|
14
|
+
Translatable strings must strictly begin with _(", not _( " or wxGetTranslation(" or something else.
|
15
|
+
If you are using gettext translatable strings, don't forget to escape to replace any " characters within the tip with a \" instead
|
16
|
+
_("This is a translatable tip with the quoted words \"Escape me\" properly escaped.")
|
17
|
+
If you have very specialized needs, you can derive your own wxTipProvider and use that instead.
|
18
|
+
If you want to modify the tip content at runtime for purposes other than translation (for example, variable expansion), one easy option is to use a custom tip provider derived from wxFileTipProvider. Your custom tip provider would contain a single virtual function to override: PreprocessTip().
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# This sample demonstrates the use of Activate Events. These are
|
17
|
+
# generated when a frame becomes active or inactive. This is typically
|
18
|
+
# indicated by a frame's titlebar changing colour, and a widget within
|
19
|
+
# the frame gainin focus. An event is also generated when a whole wxRuby
|
20
|
+
# app starts or stops being the current focussed desktop application.
|
21
|
+
|
22
|
+
class MinimalFrame < Wx::Frame
|
23
|
+
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
|
24
|
+
super(nil, -1, title, pos, size, style)
|
25
|
+
|
26
|
+
|
27
|
+
menuFile = Wx::Menu.new()
|
28
|
+
helpMenu = Wx::Menu.new()
|
29
|
+
helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
30
|
+
menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
31
|
+
menuBar = Wx::MenuBar.new()
|
32
|
+
menuBar.append(menuFile, "&File")
|
33
|
+
menuBar.append(helpMenu, "&Help")
|
34
|
+
set_menu_bar(menuBar)
|
35
|
+
|
36
|
+
create_status_bar(2)
|
37
|
+
set_status_text("Welcome to wxRuby!")
|
38
|
+
|
39
|
+
evt_menu(Wx::ID_EXIT) { on_quit }
|
40
|
+
evt_menu(Wx::ID_ABOUT) { on_about }
|
41
|
+
|
42
|
+
evt_activate { | e | on_activate(e) }
|
43
|
+
evt_iconize { | e | on_iconize(e) }
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def on_iconize(event)
|
48
|
+
if event.iconized
|
49
|
+
puts "Frame '#{get_title}' was iconized"
|
50
|
+
else
|
51
|
+
puts "Frame '#{get_title}' was restored"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def on_activate(event)
|
56
|
+
if event.get_active
|
57
|
+
puts "Frame '#{get_title}' became activated"
|
58
|
+
set_status_text 'Active'
|
59
|
+
else
|
60
|
+
puts "Frame '#{get_title}' became deactivated"
|
61
|
+
set_status_text 'Inactive'
|
62
|
+
end
|
63
|
+
event.skip # important
|
64
|
+
end
|
65
|
+
|
66
|
+
def on_quit
|
67
|
+
Wx::get_app.close_all
|
68
|
+
end
|
69
|
+
|
70
|
+
def on_about
|
71
|
+
msg = sprintf("This is the About dialog of the activate sample.\n" \
|
72
|
+
"Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
|
73
|
+
Wx::message_box(msg, "About Activate", Wx::OK|Wx::ICON_INFORMATION, self)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class RbApp < Wx::App
|
78
|
+
def on_init
|
79
|
+
@frame_1 = MinimalFrame.new("Tall window",
|
80
|
+
Wx::Point.new(50, 50),
|
81
|
+
Wx::Size.new(150, 240))
|
82
|
+
@frame_2 = MinimalFrame.new("Wide window",
|
83
|
+
Wx::Point.new(100, 100),
|
84
|
+
Wx::Size.new(300, 180))
|
85
|
+
evt_activate_app { | e | on_activate_app(e) }
|
86
|
+
@frame_1.show()
|
87
|
+
@frame_2.show()
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
def on_activate_app(event)
|
92
|
+
if event.get_active
|
93
|
+
puts "The app became active"
|
94
|
+
else
|
95
|
+
puts "The app became inactive"
|
96
|
+
end
|
97
|
+
event.skip # important
|
98
|
+
end
|
99
|
+
|
100
|
+
def close_all
|
101
|
+
@frame_1.close(true)
|
102
|
+
@frame_2.close(true)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
app = RbApp.new
|
107
|
+
app.main_loop()
|
108
|
+
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
include Wx
|
16
|
+
|
17
|
+
ID_CHOICE = 1000
|
18
|
+
|
19
|
+
class ChoiceDlg < Dialog
|
20
|
+
def initialize
|
21
|
+
super(nil, -1, "ChoiceDialog", DEFAULT_POSITION, Size.new(185, 185))
|
22
|
+
|
23
|
+
list = [ "ABS", "Airbag", "Air conditioning" ]
|
24
|
+
|
25
|
+
@m_pChoice = Choice.new(self, ID_CHOICE, DEFAULT_POSITION, DEFAULT_SIZE, list)
|
26
|
+
@m_pChoice.append("Automatic gear", 100)
|
27
|
+
|
28
|
+
@m_pLabel = StaticText.new(self, -1, "default")
|
29
|
+
dlgSizer = BoxSizer.new(HORIZONTAL)
|
30
|
+
choiceSizer = BoxSizer.new(VERTICAL)
|
31
|
+
choiceSizer.add(@m_pChoice, 1, GROW)
|
32
|
+
choiceSizer.add(@m_pLabel)
|
33
|
+
dlgSizer.add(choiceSizer, 1, GROW)
|
34
|
+
set_sizer(dlgSizer)
|
35
|
+
set_auto_layout(TRUE)
|
36
|
+
layout()
|
37
|
+
|
38
|
+
evt_choice(ID_CHOICE) {|event| onChoice(event) }
|
39
|
+
evt_close {onClose}
|
40
|
+
end
|
41
|
+
|
42
|
+
def onChoice(event)
|
43
|
+
chose = event.get_selection
|
44
|
+
data = event.get_client_data
|
45
|
+
# NOTE: uninitialized client data will be false, not nil
|
46
|
+
if(!data)
|
47
|
+
data = 0
|
48
|
+
end
|
49
|
+
data += 1
|
50
|
+
@m_pLabel.set_label(data.to_s)
|
51
|
+
|
52
|
+
@m_pChoice.set_selection(chose)
|
53
|
+
@m_pChoice.set_client_data(chose, data)
|
54
|
+
end
|
55
|
+
|
56
|
+
def onClose
|
57
|
+
destroy()
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
class RbApp < App
|
63
|
+
def on_init
|
64
|
+
dlg = ChoiceDlg.new
|
65
|
+
set_top_window(dlg)
|
66
|
+
dlg.show(TRUE)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
a = RbApp.new
|
72
|
+
a.main_loop()
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class MyFrame < Wx::Frame
|
17
|
+
attr_reader :mini
|
18
|
+
|
19
|
+
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
|
20
|
+
super(nil, -1, title, pos, size, style)
|
21
|
+
|
22
|
+
|
23
|
+
menuFile = Wx::Menu.new()
|
24
|
+
helpMenu = Wx::Menu.new()
|
25
|
+
helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
26
|
+
menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
27
|
+
menuBar = Wx::MenuBar.new()
|
28
|
+
menuBar.append(menuFile, "&File")
|
29
|
+
menuBar.append(helpMenu, "&Help")
|
30
|
+
set_menu_bar(menuBar)
|
31
|
+
|
32
|
+
create_status_bar(2)
|
33
|
+
set_status_text("Welcome to wxRuby!")
|
34
|
+
|
35
|
+
evt_menu(Wx::ID_EXIT) { on_quit }
|
36
|
+
evt_menu(Wx::ID_ABOUT) { on_about }
|
37
|
+
|
38
|
+
make_miniframe()
|
39
|
+
end
|
40
|
+
|
41
|
+
def make_miniframe
|
42
|
+
@mini = Wx::MiniFrame.new(self, -1, 'Mini Frame',
|
43
|
+
Wx::Point.new(300, 75), Wx::Size.new(300, 150),
|
44
|
+
Wx::DEFAULT_FRAME_STYLE|Wx::STAY_ON_TOP)
|
45
|
+
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
46
|
+
text = Wx::StaticText.new(mini, -1, 'This is a MiniFrame.')
|
47
|
+
sizer.add(text, 0, Wx::ALL, 2)
|
48
|
+
text = Wx::StaticText.new(mini, -1, 'It has a small title bar so it')
|
49
|
+
sizer.add(text, 0, Wx::ALL, 2)
|
50
|
+
text = Wx::StaticText.new(mini, -1, 'doesn\'t take up too much space.')
|
51
|
+
sizer.add(text, 0, Wx::ALL, 2)
|
52
|
+
text = Wx::StaticText.new(mini, -1, 'This MiniFrame has been set to')
|
53
|
+
sizer.add(text, 0, Wx::ALL, 2)
|
54
|
+
text = Wx::StaticText.new(mini, -1, 'stay above the main app window.')
|
55
|
+
sizer.add(text, 0, Wx::ALL, 2)
|
56
|
+
mini.set_sizer(sizer)
|
57
|
+
mini.show()
|
58
|
+
mini.raise()
|
59
|
+
end
|
60
|
+
|
61
|
+
def on_quit
|
62
|
+
mini.close()
|
63
|
+
close()
|
64
|
+
end
|
65
|
+
|
66
|
+
def on_about
|
67
|
+
msg = sprintf("This is the About dialog of the miniframe sample.\n" \
|
68
|
+
"Welcome to %s", Wx::VERSION_STRING)
|
69
|
+
Wx::message_box(msg, "About MiniFrame", Wx::OK|Wx::ICON_INFORMATION, self)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class RbApp < Wx::App
|
74
|
+
def on_init
|
75
|
+
frame = MyFrame.new("Mini Frame wxRuby App",
|
76
|
+
Wx::Point.new(50, 50),
|
77
|
+
Wx::Size.new(450, 340))
|
78
|
+
frame.show()
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
app = RbApp.new
|
83
|
+
app.main_loop()
|
84
|
+
|
data/samples/etc/sash.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class MySashFrame < Wx::Frame
|
17
|
+
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
|
18
|
+
super(nil, -1, title, pos, size, style)
|
19
|
+
|
20
|
+
|
21
|
+
menuFile = Wx::Menu.new()
|
22
|
+
helpMenu = Wx::Menu.new()
|
23
|
+
helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
24
|
+
menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
25
|
+
menuBar = Wx::MenuBar.new()
|
26
|
+
menuBar.append(menuFile, "&File")
|
27
|
+
menuBar.append(helpMenu, "&Help")
|
28
|
+
set_menu_bar(menuBar)
|
29
|
+
|
30
|
+
create_status_bar(2)
|
31
|
+
set_status_text("wxRuby Sash sample")
|
32
|
+
|
33
|
+
evt_menu(Wx::ID_EXIT) { on_quit }
|
34
|
+
evt_menu(Wx::ID_ABOUT) { on_about }
|
35
|
+
|
36
|
+
# Start creating the sashes - these are created from outermost
|
37
|
+
# inwards.
|
38
|
+
sash = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
|
39
|
+
Wx::Size.new(150, self.get_size.y) )
|
40
|
+
# The default width of the sash is 150 pixels, and it extends the
|
41
|
+
# full height of the frame
|
42
|
+
sash.set_default_size( Wx::Size.new(150, self.get_size.y) )
|
43
|
+
# This sash splits the frame top to bottom
|
44
|
+
sash.set_orientation(Wx::LAYOUT_VERTICAL)
|
45
|
+
# Place the sash on the left of the frame
|
46
|
+
sash.set_alignment(Wx::LAYOUT_LEFT)
|
47
|
+
# Show a drag bar on the right of the sash
|
48
|
+
sash.set_sash_visible(Wx::SASH_RIGHT, true)
|
49
|
+
sash.set_background_colour(Wx::Colour.new(225, 200, 200) )
|
50
|
+
|
51
|
+
panel = Wx::Panel.new(sash)
|
52
|
+
v_siz = Wx::BoxSizer.new(Wx::VERTICAL)
|
53
|
+
chk_1 = Wx::CheckBox.new(panel, -1, 'test 1')
|
54
|
+
v_siz.add(chk_1, 0, Wx::ADJUST_MINSIZE)
|
55
|
+
chk_2 = Wx::CheckBox.new(panel, -1, 'test 2')
|
56
|
+
v_siz.add(chk_2, 0, Wx::ADJUST_MINSIZE)
|
57
|
+
panel.set_sizer_and_fit(v_siz)
|
58
|
+
|
59
|
+
# handle the sash being dragged
|
60
|
+
evt_sash_dragged( sash.get_id ) { | e | on_v_sash_dragged(sash, e) }
|
61
|
+
|
62
|
+
# Create another small sash on the bottom of the frame
|
63
|
+
sash_2 = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
|
64
|
+
Wx::Size.new(self.get_size.x,
|
65
|
+
100),
|
66
|
+
Wx::SW_3DSASH)
|
67
|
+
sash_2.set_default_size( Wx::Size.new(self.get_size.x, 100) )
|
68
|
+
sash_2.set_orientation(Wx::LAYOUT_HORIZONTAL)
|
69
|
+
sash_2.set_alignment(Wx::LAYOUT_BOTTOM)
|
70
|
+
sash_2.set_sash_visible(Wx::SASH_TOP, true)
|
71
|
+
text = Wx::StaticText.new(sash_2, -1, 'This is the second sash window')
|
72
|
+
evt_sash_dragged( sash_2.get_id ) { | e | on_h_sash_dragged(sash_2, e) }
|
73
|
+
|
74
|
+
# The main panel - the residual part of the frame that takes up all
|
75
|
+
# remaining space not used by the sash windows.
|
76
|
+
@m_panel = Wx::Panel.new(self, -1)
|
77
|
+
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
78
|
+
|
79
|
+
txt = Wx::TextCtrl.new(@m_panel, -1, 'Main panel area',
|
80
|
+
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
|
81
|
+
Wx::SUNKEN_BORDER|Wx::TE_MULTILINE)
|
82
|
+
sizer.add(txt, 1, Wx::EXPAND|Wx::ADJUST_MINSIZE|Wx::ALL, 10)
|
83
|
+
@m_panel.set_sizer_and_fit(sizer)
|
84
|
+
|
85
|
+
# Adjust the size of the sashes when the frame is resized
|
86
|
+
evt_size { | e | on_size(e) }
|
87
|
+
|
88
|
+
# Call LayoutAlgorithm#layout_frame to layout the sashes.
|
89
|
+
# The second argument is the residual window that takes up remaining
|
90
|
+
# space
|
91
|
+
Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
|
92
|
+
end
|
93
|
+
|
94
|
+
def on_v_sash_dragged(sash, e)
|
95
|
+
# Call get_drag_rect to get the new size
|
96
|
+
size = Wx::Size.new( e.get_drag_rect.width(), self.get_size.y )
|
97
|
+
sash.set_default_size( size )
|
98
|
+
Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
|
99
|
+
end
|
100
|
+
|
101
|
+
def on_h_sash_dragged(sash, e)
|
102
|
+
size = Wx::Size.new( self.get_size.x, e.get_drag_rect.height() )
|
103
|
+
sash.set_default_size( size )
|
104
|
+
Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
|
105
|
+
end
|
106
|
+
|
107
|
+
def on_size(e)
|
108
|
+
e.skip()
|
109
|
+
Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
|
110
|
+
end
|
111
|
+
|
112
|
+
def on_quit
|
113
|
+
close(true)
|
114
|
+
end
|
115
|
+
|
116
|
+
def on_about
|
117
|
+
msg = sprintf("This is the About dialog of the sash sample.\n" \
|
118
|
+
"Welcome to %s", Wx::VERSION_STRING)
|
119
|
+
Wx::message_box(msg, "About Sash", Wx::OK|Wx::ICON_INFORMATION, self)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
class SashApp < Wx::App
|
124
|
+
def on_init
|
125
|
+
frame = MySashFrame.new("Sash Layout wxRuby App",
|
126
|
+
Wx::Point.new(50, 50),
|
127
|
+
Wx::Size.new(450, 340))
|
128
|
+
|
129
|
+
frame.show(true)
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
app = SashApp.new
|
135
|
+
app.main_loop()
|
@@ -0,0 +1,116 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'wx'
|
7
|
+
rescue LoadError => no_wx_err
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
require 'wx'
|
11
|
+
rescue LoadError
|
12
|
+
raise no_wx_err
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Example demonstrating the use of Wx::ScrolledWindow and the
|
17
|
+
# ScrollWinEvents
|
18
|
+
|
19
|
+
class ScrollFrame < Wx::Frame
|
20
|
+
def initialize(title)
|
21
|
+
super(nil, -1, 'Thumb Scrolling Test',
|
22
|
+
Wx::DEFAULT_POSITION, Wx::Size.new(400, 300),
|
23
|
+
Wx::SYSTEM_MENU|Wx::CAPTION|Wx::RESIZE_BORDER|
|
24
|
+
Wx::MAXIMIZE_BOX|Wx::MINIMIZE_BOX|Wx::CLOSE_BOX)
|
25
|
+
|
26
|
+
@scroll_win = Wx::ScrolledWindow.new(self, -1)
|
27
|
+
# Set the interior size (pixels) of the scrolling window
|
28
|
+
@scroll_win.set_virtual_size(1000, 1500)
|
29
|
+
# Set the number of pixels moved per 'line' / click on the scrollbars
|
30
|
+
@scroll_win.set_scroll_rate(5, 5)
|
31
|
+
|
32
|
+
@button = Wx::Button.new(@scroll_win, -1, 'Press Me',
|
33
|
+
Wx::Point.new(200,200),
|
34
|
+
Wx::Size.new(125, 20))
|
35
|
+
|
36
|
+
# NOTE that all ScrollWin event hooks do not take an id - i.e. they
|
37
|
+
# are only generated from the originating Window itself - in this
|
38
|
+
# case, the ScrollWindow. So, we need to do:
|
39
|
+
# @scroll_win.evt_scrollwin_xxx { ...
|
40
|
+
# AND NOT
|
41
|
+
# evt_scrollwin_xxx(@scroll_win.get_id) { ...
|
42
|
+
@scroll_win.evt_scrollwin_linedown() { | e | on_line(e, 'down') }
|
43
|
+
@scroll_win.evt_scrollwin_lineup() { | e | on_line(e,'up') }
|
44
|
+
|
45
|
+
@scroll_win.evt_scrollwin_thumbtrack() { | e | on_thumb(e, 'track') }
|
46
|
+
@scroll_win.evt_scrollwin_thumbrelease() { | e | on_thumb(e, 'release') }
|
47
|
+
|
48
|
+
@scroll_win.evt_scrollwin_pagedown() { | e | on_page(e, 'down') }
|
49
|
+
@scroll_win.evt_scrollwin_pageup() { | e | on_page(e, 'up') }
|
50
|
+
|
51
|
+
# not sure how these are meant to be generated
|
52
|
+
@scroll_win.evt_scrollwin_top() { | e | on_top(e) }
|
53
|
+
@scroll_win.evt_scrollwin_bottom() { | e | on_bottom(e) }
|
54
|
+
@scroll_win.evt_scrollwin { | e | p e }
|
55
|
+
end
|
56
|
+
|
57
|
+
# Handle scrolling by page - typically done by clicking on the
|
58
|
+
# scrollbar itself, above or below the thumb position
|
59
|
+
# +direction+ is either 'up' (= left, if dealing with a horizontal
|
60
|
+
# scrollbar) or 'down' (= right) - WxRuby generates different events
|
61
|
+
# for these.
|
62
|
+
def on_page(event, direction)
|
63
|
+
pos = event.get_position
|
64
|
+
orient = event.get_orientation == Wx::VERTICAL ? 'VERTICAL' : 'HORIZONTAL'
|
65
|
+
puts "#{orient} scrollbar page #{direction} @ #{pos}"
|
66
|
+
event.skip() # allow default scrolling action
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
# Handle scrolling by line - typically done by clicking the up/down
|
71
|
+
# (or left/right) scroll buttons at the end of the scrollbar.
|
72
|
+
# +direction+ is either 'up' (= left, if dealing with a horizontal
|
73
|
+
# scrollbar) or 'down' (= right)
|
74
|
+
def on_line(event, direction)
|
75
|
+
orient = event.get_orientation == Wx::VERTICAL ? 'VERTICAL' : 'HORIZONTAL'
|
76
|
+
pos = event.get_position
|
77
|
+
puts "#{orient} scrollbar line #{direction} @ #{pos}"
|
78
|
+
event.skip() # allow default action
|
79
|
+
end
|
80
|
+
|
81
|
+
# Handle scrolling done by click-dragging the 'thumb' within a scrollbar.
|
82
|
+
# +action+ contains either 'track' for thumbtrack drag events, or 'release'
|
83
|
+
# for thumb-release
|
84
|
+
def on_thumb(event, action)
|
85
|
+
pos = event.get_position
|
86
|
+
if event.get_orientation == Wx::VERTICAL
|
87
|
+
puts "VERTICAL thumb #{action} @ #{pos}"
|
88
|
+
else
|
89
|
+
puts "HORIZONTAL thumb #{action} @ #{pos}"
|
90
|
+
end
|
91
|
+
event.skip()
|
92
|
+
end
|
93
|
+
|
94
|
+
# (Assuming this should be triggered when the End key is pressed)?
|
95
|
+
def on_bottom(event)
|
96
|
+
puts "bottom"
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
# (Assuming this should be triggered when the Home/Begin key is pressed)?
|
101
|
+
def on_top(event)
|
102
|
+
puts "top"
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
class ScrollingApp < Wx::App
|
108
|
+
def on_init
|
109
|
+
frame = ScrollFrame.new('')
|
110
|
+
frame.show(TRUE)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
app = ScrollingApp.new
|
115
|
+
app.main_loop()
|
116
|
+
|