wxruby 1.9.0-i386-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/wx.rb +35 -0
- data/lib/wxruby2.so +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 +263 -0
@@ -0,0 +1,118 @@
|
|
1
|
+
class Wx::Font
|
2
|
+
# String names of the constants provided by C++
|
3
|
+
# (enum is originally defined inc include/wx/fontenc.h)
|
4
|
+
ENCODING_NAMES = %w[
|
5
|
+
DEFAULT
|
6
|
+
|
7
|
+
ISO-8859-1
|
8
|
+
ISO-8859-2
|
9
|
+
ISO-8859-3
|
10
|
+
ISO-8859-4
|
11
|
+
ISO-8859-5
|
12
|
+
ISO-8859-6
|
13
|
+
ISO-8859-7
|
14
|
+
ISO-8859-8
|
15
|
+
ISO-8859-9
|
16
|
+
ISO-8859-10
|
17
|
+
ISO-8859-11
|
18
|
+
ISO-8859-12
|
19
|
+
ISO-8859-13
|
20
|
+
ISO-8859-14
|
21
|
+
ISO-8859-15
|
22
|
+
ISO-8859-MAX
|
23
|
+
|
24
|
+
KOI8
|
25
|
+
KOI8-U
|
26
|
+
ALTERNATIVE
|
27
|
+
BULGARIAN
|
28
|
+
|
29
|
+
CP437
|
30
|
+
CP850
|
31
|
+
CP852
|
32
|
+
CP855
|
33
|
+
CP866
|
34
|
+
|
35
|
+
CP874
|
36
|
+
CP932
|
37
|
+
CP936
|
38
|
+
CP949
|
39
|
+
CP950
|
40
|
+
CP1250
|
41
|
+
CP1251
|
42
|
+
CP1252
|
43
|
+
CP1253
|
44
|
+
CP1254
|
45
|
+
CP1255
|
46
|
+
CP1256
|
47
|
+
CP1257
|
48
|
+
CP12-MAX
|
49
|
+
|
50
|
+
UTF7
|
51
|
+
UTF8
|
52
|
+
EUC-JP
|
53
|
+
UTF16BE
|
54
|
+
UTF16LE
|
55
|
+
UTF32BE
|
56
|
+
UTF32LE
|
57
|
+
|
58
|
+
MACROMAN
|
59
|
+
MACJAPANESE
|
60
|
+
MACCHINESETRAD
|
61
|
+
MACKOREAN
|
62
|
+
MACARABIC
|
63
|
+
MACHEBREW
|
64
|
+
MACGREEK
|
65
|
+
MACCYRILLIC
|
66
|
+
MACDEVANAGARI
|
67
|
+
MACGURMUKHI
|
68
|
+
MACGUJARATI
|
69
|
+
MACORIYA
|
70
|
+
MACBENGALI
|
71
|
+
MACTAMIL
|
72
|
+
MACTELUGU
|
73
|
+
MACKANNADA
|
74
|
+
MACMALAJALAM
|
75
|
+
MACSINHALESE
|
76
|
+
MACBURMESE
|
77
|
+
MACKHMER
|
78
|
+
MACTHAI
|
79
|
+
MACLAOTIAN
|
80
|
+
MACGEORGIAN
|
81
|
+
MACARMENIAN
|
82
|
+
MACCHINESESIMP
|
83
|
+
MACTIBETAN
|
84
|
+
MACMONGOLIAN
|
85
|
+
MACETHIOPIC
|
86
|
+
MACCENTRALEUR
|
87
|
+
MACVIATNAMESE
|
88
|
+
MACARABICEXT
|
89
|
+
MACSYMBOL
|
90
|
+
MACDINGBATS
|
91
|
+
MACTURKISH
|
92
|
+
MACCROATIAN
|
93
|
+
MACICELANDIC
|
94
|
+
MACROMANIAN
|
95
|
+
MACCELTIC
|
96
|
+
MACGAELIC
|
97
|
+
MACKEYBOARD
|
98
|
+
MAX
|
99
|
+
]
|
100
|
+
|
101
|
+
class << self
|
102
|
+
# Returns the name of the platform's default font encoding
|
103
|
+
def get_default_encoding_name
|
104
|
+
ENCODING_NAMES[ get_default_encoding ]
|
105
|
+
end
|
106
|
+
|
107
|
+
# Sets the default encoding to be +enc+, which may be the string
|
108
|
+
# name of an encoding (eg 'UTF8') or an internal WxWidgets flag
|
109
|
+
# (eg Wx::FONTENCODING_UTF8).
|
110
|
+
def set_default_encoding_name(enc)
|
111
|
+
if flag_int = ENCODING_NAMES.index(enc.upcase)
|
112
|
+
set_default_encoding(flag_int)
|
113
|
+
else
|
114
|
+
raise ArgumentError, "Unknown font encoding name '#{enc}'"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# A data-oriented editable table control.
|
2
|
+
class Wx::Grid
|
3
|
+
# The following extensions are all to prevent crashes associated with
|
4
|
+
# garbage collection of Grid-related classes; they do not extend the
|
5
|
+
# public functionality of the class in any way.
|
6
|
+
#
|
7
|
+
# The GridCellRenderers and GridCellEditors pose a problem for ruby's
|
8
|
+
# GC, in that Wx makes them owned by the grid once they have been set
|
9
|
+
# for a cell or group of cells. However, because they are SWIG
|
10
|
+
# directors we cannot allow the ruby object they are originally
|
11
|
+
# associated with to be swept by GC.
|
12
|
+
#
|
13
|
+
# The code below stores Ruby redefines all methods that may
|
14
|
+
# potentially set an Editor or Renderer, and stores a reference to
|
15
|
+
# it in an instance variable, so they are not disposed of up when GC sweeps.
|
16
|
+
wx_init = self.instance_method(:initialize)
|
17
|
+
define_method(:initialize) do | *args |
|
18
|
+
wx_init.bind(self).call(*args)
|
19
|
+
@__default_editor = nil
|
20
|
+
@__default_renderer = nil
|
21
|
+
|
22
|
+
@__cell_editors = []
|
23
|
+
@__cell_renderers = []
|
24
|
+
|
25
|
+
@__col_renderers = []
|
26
|
+
@__col_editors = []
|
27
|
+
@__row_renderers = []
|
28
|
+
@__row_editors = []
|
29
|
+
end
|
30
|
+
|
31
|
+
# store default editor
|
32
|
+
wx_set_default_editor = self.instance_method(:set_default_editor)
|
33
|
+
define_method(:set_default_editor) do | editr |
|
34
|
+
wx_set_default_editor.bind(self).call(editr)
|
35
|
+
@__default_editor = editr
|
36
|
+
end
|
37
|
+
|
38
|
+
# store default renderer
|
39
|
+
wx_set_default_renderer = self.instance_method(:set_default_renderer)
|
40
|
+
define_method(:set_default_renderer) do | rendr |
|
41
|
+
wx_set_default_renderer.bind(self).call(rendr)
|
42
|
+
@__default_renderer = rendr
|
43
|
+
end
|
44
|
+
|
45
|
+
# store cell editors
|
46
|
+
wx_set_cell_editor = self.instance_method(:set_cell_editor)
|
47
|
+
define_method(:set_cell_editor) do | row, col, editr |
|
48
|
+
wx_set_cell_editor.bind(self).call(row, col, editr)
|
49
|
+
@__cell_editors[row] ||= []
|
50
|
+
@__cell_editors[row][col] = editr
|
51
|
+
end
|
52
|
+
|
53
|
+
# store cell renderer
|
54
|
+
wx_set_cell_renderer = self.instance_method(:set_cell_renderer)
|
55
|
+
define_method(:set_cell_renderer) do | row, col, rendr |
|
56
|
+
wx_set_cell_renderer.bind(self).call(row, col, rendr)
|
57
|
+
@__cell_renderers[row] ||= []
|
58
|
+
@__cell_renderers[row][col] = rendr
|
59
|
+
end
|
60
|
+
|
61
|
+
wx_set_col_attr = self.instance_method(:set_col_attr)
|
62
|
+
define_method(:set_col_attr) do | col, attr |
|
63
|
+
wx_set_col_attr.bind(self).call(col, attr)
|
64
|
+
if attr.has_editor
|
65
|
+
@__col_editors[col] = attr.get_editor(self, 0, col)
|
66
|
+
end
|
67
|
+
if attr.has_renderer
|
68
|
+
@__col_renderers[col] = attr.get_renderer(self, 0, col)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
wx_set_row_attr = self.instance_method(:set_row_attr)
|
73
|
+
define_method(:set_row_attr) do | row, attr |
|
74
|
+
wx_set_row_attr.bind(self).call(row, attr)
|
75
|
+
if attr.has_editor
|
76
|
+
@__row_editors[row] = attr.get_editor(self, row, 0)
|
77
|
+
end
|
78
|
+
|
79
|
+
if attr.has_renderer
|
80
|
+
@__row_renderers[row] = attr.get_renderer(self, row, 0)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# This and the following methods do a bit of book-keeping - as rows
|
85
|
+
# and columns are deleted and inserted, the position of the columns
|
86
|
+
# and rows with stored editors and renderers may move.
|
87
|
+
wx_insert_rows = self.instance_method(:insert_rows)
|
88
|
+
define_method(:insert_rows) do | pos, num |
|
89
|
+
wx_insert_rows.bind(self).call(pos, num)
|
90
|
+
num.times { @__row_editors.insert(pos, nil) }
|
91
|
+
num.times { @__row_renderers.insert(pos, nil) }
|
92
|
+
num.times { @__cell_editors.insert(pos, []) }
|
93
|
+
num.times { @__cell_renderers.insert(pos, []) }
|
94
|
+
end
|
95
|
+
|
96
|
+
wx_insert_cols = self.instance_method(:insert_cols)
|
97
|
+
define_method(:insert_cols) do | pos, num |
|
98
|
+
wx_insert_cols.bind(self).call(pos, num)
|
99
|
+
num.times { @__col_editors.insert(pos, nil) }
|
100
|
+
num.times { @__col_renderers.insert(pos, nil) }
|
101
|
+
num.times do
|
102
|
+
@__cell_editors.map { | col | col.insert(pos, []) if col }
|
103
|
+
end
|
104
|
+
num.times do
|
105
|
+
@__cell_renderers.map { | col | col.insert(pos, []) if col }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
wx_delete_rows = self.instance_method(:delete_rows)
|
110
|
+
define_method(:delete_rows) do | pos, num |
|
111
|
+
wx_delete_rows.bind(self).call(pos, num)
|
112
|
+
@__row_editors.slice!(pos, num)
|
113
|
+
@__row_renderers.slice!(pos, num)
|
114
|
+
@__cell_editors.slice!(pos, num)
|
115
|
+
@__cell_renderers.slice!(pos, num)
|
116
|
+
end
|
117
|
+
|
118
|
+
wx_delete_cols = self.instance_method(:delete_cols)
|
119
|
+
define_method(:delete_cols) do | pos, num |
|
120
|
+
wx_delete_cols.bind(self).call(pos, num)
|
121
|
+
@__col_editors.slice!(pos, num)
|
122
|
+
@__col_renderers.slice!(pos, num)
|
123
|
+
num.times do
|
124
|
+
@__cell_editors.map { | col | col.slice!(pos, num) if col }
|
125
|
+
end
|
126
|
+
num.times do
|
127
|
+
@__cell_renderers.map { | col | col.slice!(pos, num) if col }
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Wx::Icon
|
2
|
+
# Redefine the initialize method so it raises an exception if a
|
3
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
4
|
+
# just carries on with an empty icon, which may cause faults later
|
5
|
+
wx_init = self.instance_method(:initialize)
|
6
|
+
define_method(:initialize) do | *args |
|
7
|
+
if args[0].kind_of? String
|
8
|
+
if not File.exist?( File.expand_path(args[0]) )
|
9
|
+
Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
wx_init.bind(self).call(*args)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Wx::Image
|
2
|
+
# Redefine the initialize method so it raises an exception if a
|
3
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
4
|
+
# just carries on with an invalid image, which may cause faults later
|
5
|
+
wx_init = self.instance_method(:initialize)
|
6
|
+
define_method(:initialize) do | *args |
|
7
|
+
if args[0].kind_of? String
|
8
|
+
if not File.exist?( File.expand_path(args[0]) )
|
9
|
+
Kernel.raise(ArgumentError, "Image file does not exist: #{args[0]}")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
wx_init.bind(self).call(*args)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Wx::Locale
|
2
|
+
class << self
|
3
|
+
def get_system_language_name
|
4
|
+
get_language_name( get_system_language )
|
5
|
+
end
|
6
|
+
|
7
|
+
def get_system_encoding_name
|
8
|
+
Wx::Font::ENCODING_NAMES[ get_system_encoding ]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Set the current locale by a name, canonical name, or Wx::LANGUAGE_
|
12
|
+
# constant; mainly here because it seems a bit strange in Ruby to
|
13
|
+
# have global side-effects in a constructor
|
14
|
+
def set_locale(locale)
|
15
|
+
if locale.kind_of?(Fixnum)
|
16
|
+
new(locale)
|
17
|
+
elsif locale.kind_of?(String) and lang_info = find_language_info(locale)
|
18
|
+
new(lang_info.language)
|
19
|
+
else
|
20
|
+
raise ArgumentError, "Unknown language #{locale}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_language_name
|
26
|
+
self.class.get_language_name(get_language)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Device Context to paint within an on_paint handler
|
2
|
+
class Wx::PaintDC
|
3
|
+
# This class should not be instantiated directly in wxRuby; it should
|
4
|
+
# always be used via Window#paint, which takes a block receiving the
|
5
|
+
# DC. This ensures that the DC is cleaned up at the correct time,
|
6
|
+
# preventing serious errors on some platforms.
|
7
|
+
def initialize(*args)
|
8
|
+
Kernel.raise RuntimeError,
|
9
|
+
"Do not instantiate PaintDC directly; use Window#paint",
|
10
|
+
caller[1..-1]
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Frame that displays a print preview
|
2
|
+
class Wx::PreviewFrame
|
3
|
+
# a PreviewFrame has a preview associated with it that must be
|
4
|
+
# protected from Ruby's GC. However, there is no C++ method to access
|
5
|
+
# the Wx::PrintPreview (only a protected member), so instead we have
|
6
|
+
# to assign it to an instance variable so it is marked correctly when
|
7
|
+
# the frame displaying it is marked.
|
8
|
+
wx_init = self.instance_method(:initialize)
|
9
|
+
define_method(:initialize) do | *args |
|
10
|
+
wx_init.bind(self).call(*args)
|
11
|
+
@__preview = args[0]
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# Class allowing periodic or timed events to be fired
|
2
|
+
class Wx::Timer
|
3
|
+
# This class can be linked to an owner - an instance of a class
|
4
|
+
# derived from EvtHandler which will receive Timer events. However,
|
5
|
+
# event if a Wx::Timer is attached to a Wx::Window, it is (unlike most
|
6
|
+
# classes) NOT automatically deleted when the window is destroyed. If
|
7
|
+
# the Timer continues ticking, it will send events to the
|
8
|
+
# now-destroyed window, causing segfaults. So the little acrobatics
|
9
|
+
# below set up a hook when a Timer's owner is set, and then ensure the
|
10
|
+
# timer is stopped when the window is destroyed.
|
11
|
+
|
12
|
+
# Redefine initialize
|
13
|
+
wx_init = self.instance_method(:initialize)
|
14
|
+
define_method(:initialize) do | *args |
|
15
|
+
setup_owner_destruction_hook(args[0])
|
16
|
+
wx_init.bind(self).call(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Redefine set_owner
|
20
|
+
wx_set_owner = self.instance_method(:set_owner)
|
21
|
+
define_method(:set_owner) do | *args |
|
22
|
+
setup_owner_destruction_hook(args[0])
|
23
|
+
wx_set_owner.bind(self).call(*args)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
# This method notes in Ruby the ownership of the timer, from both
|
28
|
+
# sides, and sets up an event hook if needed for the window's
|
29
|
+
# destruction.
|
30
|
+
def setup_owner_destruction_hook(new_owner)
|
31
|
+
this_timer = self
|
32
|
+
|
33
|
+
# Class-wide list of global (unowned) timers
|
34
|
+
@@__unowned_timers__ ||= []
|
35
|
+
|
36
|
+
# remove from list of previous owner
|
37
|
+
if @__owner__
|
38
|
+
@__owner__.instance_eval { @__owned_timers__.delete(this_timer) }
|
39
|
+
end
|
40
|
+
|
41
|
+
# If becoming global unowned timer, add to list of those timers
|
42
|
+
if not new_owner
|
43
|
+
@__owner__ = nil
|
44
|
+
@@__unowned_timers__ << self
|
45
|
+
return
|
46
|
+
end
|
47
|
+
|
48
|
+
# Otherwise, if previously unowned, remove from global owned
|
49
|
+
@@__unowned_timers__.delete(self)
|
50
|
+
@__owner__ = new_owner
|
51
|
+
|
52
|
+
# Then add to list of new owner, setting destructor hook if required
|
53
|
+
new_owner.instance_eval do
|
54
|
+
if not @__owned_timers__
|
55
|
+
@__owned_timers__ = []
|
56
|
+
unless self.kind_of?(Wx::App) # Don't set up hook on App
|
57
|
+
evt_window_destroy do | evt |
|
58
|
+
# If it's the owning window being destroyed...
|
59
|
+
if evt.get_event_object == self
|
60
|
+
@__owned_timers__.each { | timer | timer.stop }
|
61
|
+
end
|
62
|
+
evt.skip
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
@__owned_timers__ << this_timer
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright 2004-2007 by Kevin Smith
|
2
|
+
# released under the MIT-style wxruby2 license
|
3
|
+
|
4
|
+
class Wx::Window
|
5
|
+
# Recursively searches all windows below +self+ and returns the first
|
6
|
+
# window which has the id +an_id+. This corresponds to the find_window
|
7
|
+
# method method in WxWidgets when called with an integer.
|
8
|
+
def find_window_by_id(an_id)
|
9
|
+
Wx::Window.find_window_by_id(an_id, self)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Searches all windows below +self+ and returns the first window which
|
13
|
+
# has the name +a_name+ This corresponds to the find_window method method
|
14
|
+
# in WxWidgets when called with an string.
|
15
|
+
def find_window_by_name(a_name)
|
16
|
+
Wx::Window.find_window_by_name(a_name, self)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Searches all windows below +self+ and returns the first window which
|
20
|
+
# has the label +a_label+.
|
21
|
+
def find_window_by_label(a_label)
|
22
|
+
Wx:Window.find_window_by_label(a_label, self)
|
23
|
+
end
|
24
|
+
|
25
|
+
alias :__old_evt_paint :evt_paint
|
26
|
+
# This modified version of evt_paint sets a variable indicating that a
|
27
|
+
# paint event is being handled just before running the event
|
28
|
+
# handler. This ensures that any call to Window#paint within the
|
29
|
+
# handler will supply a Wx::PaintDC (see swig/Window.i).
|
30
|
+
def evt_paint(&block)
|
31
|
+
wrapped_block = proc do | event |
|
32
|
+
instance_variable_set("@__painting__", true)
|
33
|
+
block.call(event)
|
34
|
+
remove_instance_variable("@__painting__")
|
35
|
+
end
|
36
|
+
__old_evt_paint(&wrapped_block)
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Wx::XmlResource
|
2
|
+
# The standard .load method returns a boolean indicating success or
|
3
|
+
# failure. Failure might result from bad XML, or a non-existent
|
4
|
+
# file. In ruby, in these circumstances, it's more natural to raise an
|
5
|
+
# Exception than expect the user to test the return value.
|
6
|
+
wx_load = self.instance_method(:load)
|
7
|
+
define_method(:load) do | fname |
|
8
|
+
result = wx_load.bind(self).call(fname)
|
9
|
+
if not result
|
10
|
+
Kernel.raise( RuntimeError,
|
11
|
+
"Failed to load XRC from '#{fname}'; " +
|
12
|
+
"check the file exists and is valid XML")
|
13
|
+
end
|
14
|
+
fname
|
15
|
+
end
|
16
|
+
end
|
data/lib/wx/version.rb
ADDED
data/lib/wx.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Copyright 2004-2006 by Kevin Smith
|
2
|
+
# released under the MIT-style wxruby2 license
|
3
|
+
|
4
|
+
# This wrapper serves three functions:
|
5
|
+
# 1. It loads the binary library 'wxruby2.so' or 'wxruby.dll', while
|
6
|
+
# still allowing applications to just require 'wx'.
|
7
|
+
# 2. It sets up the version information
|
8
|
+
# 3. It loads in ruby extensions to the core Wx classes.
|
9
|
+
|
10
|
+
|
11
|
+
# load the binary library
|
12
|
+
require 'wxruby2'
|
13
|
+
|
14
|
+
# alias the module
|
15
|
+
Wx = Wxruby2
|
16
|
+
|
17
|
+
# Load the version information (should be bundled with all released versions)
|
18
|
+
begin
|
19
|
+
require 'wx/version'
|
20
|
+
rescue LoadError
|
21
|
+
Wx::WXRUBY_VERSION = '0.0.0'
|
22
|
+
end
|
23
|
+
# Convenience string for WxWidgets version info
|
24
|
+
Wx::WXWIDGETS_VERSION = '%i.%i.%i' % [ Wx::WXWIDGETS_MAJOR_VERSION,
|
25
|
+
Wx::WXWIDGETS_MINOR_VERSION,
|
26
|
+
Wx::WXWIDGETS_RELEASE_NUMBER ]
|
27
|
+
|
28
|
+
|
29
|
+
# Load in all the class extension methods written in ruby
|
30
|
+
# evthandler must be required first b/c it sets up methods modified elsewhere
|
31
|
+
require 'wx/classes/evthandler.rb'
|
32
|
+
class_files = File.join( File.dirname(__FILE__), 'wx', 'classes', '*.rb')
|
33
|
+
Dir.glob(class_files) do | class_file |
|
34
|
+
require 'wx/classes/' + class_file[/\w+\.rb$/]
|
35
|
+
end
|
data/lib/wxruby2.so
ADDED
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
wxRuby2 Sample Code
|
2
|
+
Copyright (c) 2004-2006 Kevin B. Smith
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software, to deal in the Software without restriction,
|
6
|
+
including without limitation the rights to use, copy, modify, merge,
|
7
|
+
publish, distribute, sublicense, and/or sell copies of any portion of
|
8
|
+
this Software, and to permit persons to whom the Software is furnished
|
9
|
+
to do so. This copyright notice need not be retained in any derived
|
10
|
+
work.
|
11
|
+
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
13
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
14
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
15
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
16
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
17
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
18
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|