wxruby 1.9.2-i686-darwin8.8.2

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.
Files changed (214) hide show
  1. data/LICENSE +53 -0
  2. data/README +299 -0
  3. data/lib/wx.rb +42 -0
  4. data/lib/wx/accessors.rb +52 -0
  5. data/lib/wx/classes/app.rb +39 -0
  6. data/lib/wx/classes/artprovider.rb +31 -0
  7. data/lib/wx/classes/bitmap.rb +23 -0
  8. data/lib/wx/classes/checklistbox.rb +30 -0
  9. data/lib/wx/classes/choice.rb +4 -0
  10. data/lib/wx/classes/clientdc.rb +13 -0
  11. data/lib/wx/classes/colour.rb +47 -0
  12. data/lib/wx/classes/combobox.rb +4 -0
  13. data/lib/wx/classes/commandevent.rb +7 -0
  14. data/lib/wx/classes/controlwithitems.rb +10 -0
  15. data/lib/wx/classes/evthandler.rb +884 -0
  16. data/lib/wx/classes/font.rb +118 -0
  17. data/lib/wx/classes/grid.rb +130 -0
  18. data/lib/wx/classes/helpcontroller.rb +5 -0
  19. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  20. data/lib/wx/classes/htmlwindow.rb +6 -0
  21. data/lib/wx/classes/icon.rb +14 -0
  22. data/lib/wx/classes/image.rb +14 -0
  23. data/lib/wx/classes/listbox.rb +4 -0
  24. data/lib/wx/classes/listctrl.rb +9 -0
  25. data/lib/wx/classes/locale.rb +28 -0
  26. data/lib/wx/classes/menu.rb +62 -0
  27. data/lib/wx/classes/menuitem.rb +7 -0
  28. data/lib/wx/classes/object.rb +7 -0
  29. data/lib/wx/classes/paintdc.rb +12 -0
  30. data/lib/wx/classes/point.rb +48 -0
  31. data/lib/wx/classes/previewframe.rb +13 -0
  32. data/lib/wx/classes/rect.rb +5 -0
  33. data/lib/wx/classes/size.rb +49 -0
  34. data/lib/wx/classes/styledtextctrl.rb +92 -0
  35. data/lib/wx/classes/textctrl.rb +14 -0
  36. data/lib/wx/classes/texturlevent.rb +6 -0
  37. data/lib/wx/classes/timer.rb +69 -0
  38. data/lib/wx/classes/treectrl.rb +18 -0
  39. data/lib/wx/classes/window.rb +49 -0
  40. data/lib/wx/classes/xmlresource.rb +16 -0
  41. data/lib/wx/keyword_ctors.rb +205 -0
  42. data/lib/wx/keyword_defs.rb +465 -0
  43. data/lib/wx/version.rb +3 -0
  44. data/lib/wxruby2.bundle +0 -0
  45. data/samples/SAMPLES-LICENSE.TXT +18 -0
  46. data/samples/aui/aui.rb +1353 -0
  47. data/samples/bigdemo/About.rbw +39 -0
  48. data/samples/bigdemo/ColorPanel.rbw +25 -0
  49. data/samples/bigdemo/GridSimple.rbw +80 -0
  50. data/samples/bigdemo/MDIDemo.rbw +59 -0
  51. data/samples/bigdemo/PopupMenu.rbw +151 -0
  52. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  53. data/samples/bigdemo/Sizers.rbw +545 -0
  54. data/samples/bigdemo/bigdemo.rb +826 -0
  55. data/samples/bigdemo/demoTemplate.rbw +37 -0
  56. data/samples/bigdemo/helpfile.htb +0 -0
  57. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  58. data/samples/bigdemo/icons/Test 015.png +0 -0
  59. data/samples/bigdemo/icons/choice.bmp +0 -0
  60. data/samples/bigdemo/icons/choice.xpm +27 -0
  61. data/samples/bigdemo/icons/combo.bmp +0 -0
  62. data/samples/bigdemo/icons/combo.xpm +27 -0
  63. data/samples/bigdemo/icons/copy.xpm +25 -0
  64. data/samples/bigdemo/icons/cut.xpm +24 -0
  65. data/samples/bigdemo/icons/gauge.bmp +0 -0
  66. data/samples/bigdemo/icons/gauge.xpm +27 -0
  67. data/samples/bigdemo/icons/help.xpm +25 -0
  68. data/samples/bigdemo/icons/list.bmp +0 -0
  69. data/samples/bigdemo/icons/list.xpm +27 -0
  70. data/samples/bigdemo/icons/mondrian.ico +0 -0
  71. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  72. data/samples/bigdemo/icons/new.xpm +24 -0
  73. data/samples/bigdemo/icons/ogl.ico +0 -0
  74. data/samples/bigdemo/icons/ogl.xpm +45 -0
  75. data/samples/bigdemo/icons/open.xpm +26 -0
  76. data/samples/bigdemo/icons/paste.bmp +0 -0
  77. data/samples/bigdemo/icons/paste.xpm +38 -0
  78. data/samples/bigdemo/icons/pointy.png +0 -0
  79. data/samples/bigdemo/icons/preview.xpm +26 -0
  80. data/samples/bigdemo/icons/print.xpm +26 -0
  81. data/samples/bigdemo/icons/radio.bmp +0 -0
  82. data/samples/bigdemo/icons/radio.xpm +27 -0
  83. data/samples/bigdemo/icons/robert.xpm +415 -0
  84. data/samples/bigdemo/icons/ruby.png +0 -0
  85. data/samples/bigdemo/icons/sashtest.ico +0 -0
  86. data/samples/bigdemo/icons/save.xpm +25 -0
  87. data/samples/bigdemo/icons/smiles.bmp +0 -0
  88. data/samples/bigdemo/icons/smiles.xpm +39 -0
  89. data/samples/bigdemo/icons/smiley.ico +0 -0
  90. data/samples/bigdemo/icons/smiley.xpm +42 -0
  91. data/samples/bigdemo/icons/stattext.xpm +24 -0
  92. data/samples/bigdemo/icons/test2.bmp +0 -0
  93. data/samples/bigdemo/icons/test2.png +0 -0
  94. data/samples/bigdemo/icons/test2.xpm +79 -0
  95. data/samples/bigdemo/icons/text.bmp +0 -0
  96. data/samples/bigdemo/icons/text.xpm +27 -0
  97. data/samples/bigdemo/icons/tog1.bmp +0 -0
  98. data/samples/bigdemo/icons/tog1.xpm +38 -0
  99. data/samples/bigdemo/icons/tog2.bmp +0 -0
  100. data/samples/bigdemo/icons/tog2.xpm +38 -0
  101. data/samples/bigdemo/icons/wxwin.ico +0 -0
  102. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  103. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  104. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  105. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  106. data/samples/bigdemo/run.rb +94 -0
  107. data/samples/bigdemo/tips.txt +7 -0
  108. data/samples/bigdemo/utils.rb +12 -0
  109. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  110. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  111. data/samples/bigdemo/wxButton.rbw +66 -0
  112. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  113. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  114. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  115. data/samples/bigdemo/wxChoice.rbw +49 -0
  116. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  117. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  118. data/samples/bigdemo/wxComboBox.rbw +79 -0
  119. data/samples/bigdemo/wxCursor.rbw +140 -0
  120. data/samples/bigdemo/wxDialog.rbw +92 -0
  121. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  122. data/samples/bigdemo/wxDragImage.rbw +74 -0
  123. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  124. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  125. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  126. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  127. data/samples/bigdemo/wxFrame.rbw +55 -0
  128. data/samples/bigdemo/wxGauge.rbw +73 -0
  129. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  130. data/samples/bigdemo/wxGrid.rbw +68 -0
  131. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  132. data/samples/bigdemo/wxListBox.rbw +142 -0
  133. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  134. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  135. data/samples/bigdemo/wxMenu.rbw +238 -0
  136. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  137. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  138. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  139. data/samples/bigdemo/wxNotebook.rbw +138 -0
  140. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  141. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  142. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  143. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  144. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  145. data/samples/bigdemo/wxScrolledWindow.rbw +201 -0
  146. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  147. data/samples/bigdemo/wxSlider.rbw +44 -0
  148. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  149. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  150. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  151. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  152. data/samples/bigdemo/wxStaticText.rbw +57 -0
  153. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  154. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  155. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  156. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  157. data/samples/bigdemo/wxToolBar.rbw +133 -0
  158. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  159. data/samples/calendar/calendar.rb +275 -0
  160. data/samples/caret/caret.rb +286 -0
  161. data/samples/caret/mondrian.xpm +44 -0
  162. data/samples/controls/controls.rb +1140 -0
  163. data/samples/controls/get_item_sample.rb +87 -0
  164. data/samples/controls/icons/choice.xpm +27 -0
  165. data/samples/controls/icons/combo.xpm +27 -0
  166. data/samples/controls/icons/gauge.xpm +27 -0
  167. data/samples/controls/icons/list.xpm +27 -0
  168. data/samples/controls/icons/radio.xpm +27 -0
  169. data/samples/controls/icons/stattext.xpm +24 -0
  170. data/samples/controls/icons/text.xpm +27 -0
  171. data/samples/controls/mondrian.ico +0 -0
  172. data/samples/controls/mondrian.xpm +44 -0
  173. data/samples/controls/test2.bmp +0 -0
  174. data/samples/dialogs/dialogs.rb +724 -0
  175. data/samples/dialogs/tips.txt +18 -0
  176. data/samples/etc/activation.rb +108 -0
  177. data/samples/etc/choice.rb +72 -0
  178. data/samples/etc/miniframe.rb +84 -0
  179. data/samples/etc/sash.rb +135 -0
  180. data/samples/etc/scrollwin.rb +116 -0
  181. data/samples/etc/system_settings.rb +258 -0
  182. data/samples/etc/threaded.rb +81 -0
  183. data/samples/etc/wizard.rb +79 -0
  184. data/samples/event/event.rb +184 -0
  185. data/samples/grid/grid.rb +201 -0
  186. data/samples/html/html.rb +264 -0
  187. data/samples/images/Thumbs.db +0 -0
  188. data/samples/images/images.rb +48 -0
  189. data/samples/images/paperclip.png +0 -0
  190. data/samples/listbook/listbook.rb +181 -0
  191. data/samples/listbook/listbook.xrc +370 -0
  192. data/samples/mdi/mdi.rb +87 -0
  193. data/samples/minimal/minimal.rb +85 -0
  194. data/samples/minimal/mondrian.ico +0 -0
  195. data/samples/minimal/mondrian.png +0 -0
  196. data/samples/minimal/nothing.rb +21 -0
  197. data/samples/printing/mondrian.ico +0 -0
  198. data/samples/printing/mondrian.xpm +44 -0
  199. data/samples/printing/printing.rb +484 -0
  200. data/samples/text/mondrian.ico +0 -0
  201. data/samples/text/mondrian.xpm +44 -0
  202. data/samples/text/scintilla.rb +174 -0
  203. data/samples/text/textctrl.rb +124 -0
  204. data/samples/text/unicode.rb +238 -0
  205. data/samples/text/utf8.txt +15 -0
  206. data/samples/treectrl/icon1.xpm +79 -0
  207. data/samples/treectrl/icon2.xpm +53 -0
  208. data/samples/treectrl/icon3.xpm +79 -0
  209. data/samples/treectrl/icon4.xpm +43 -0
  210. data/samples/treectrl/icon5.xpm +79 -0
  211. data/samples/treectrl/treectrl.rb +1181 -0
  212. data/samples/xrc/samples.xrc +46 -0
  213. data/samples/xrc/xrc_sample.rb +107 -0
  214. metadata +280 -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
+ alias :__insert_rows :insert_rows
88
+ def insert_rows(pos = 0, num = 1, update_labels = true)
89
+ __insert_rows(pos, num, update_labels)
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
+ alias :__insert_cols :insert_cols
97
+ def insert_cols(pos = 0, num = 1, update_labels = true)
98
+ __insert_cols(pos, num, update_labels)
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
+ alias :__delete_rows :delete_rows
110
+ def delete_rows(pos = 0, num = 1, update_labels = true)
111
+ __delete_rows(pos, num, update_labels)
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
+ alias :__delete_cols :delete_cols
119
+ def delete_cols(pos = 0, num = 1, update_labels = true)
120
+ __delete_cols(pos, num, update_labels)
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,5 @@
1
+ class Wx::HelpController
2
+ def self.instance(*args)
3
+ @instance ||= new(*args)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::HtmlHelpController
2
+ def self.instance(*args)
3
+ @instance ||= new(*args)
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class Wx::HtmlWindow
2
+ # imitate the in-built LoadFile method
3
+ def load_file(file)
4
+ set_page( File.read(file) )
5
+ end
6
+ 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,4 @@
1
+ class Wx::ListBox
2
+ alias :get_item_data :get_client_data
3
+ alias :set_item_data :set_client_data
4
+ end
@@ -0,0 +1,9 @@
1
+ # Multi-item control with numerous possible view styles
2
+ class Wx::ListCtrl
3
+ # Make these ruby enumerables so find, find_all, map are available
4
+ include Enumerable
5
+ # Passes each valid item index into the passed block
6
+ def each
7
+ 0.upto(item_count - 1) { | i | yield i }
8
+ end
9
+ 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,62 @@
1
+ # A single labelled list within a drop-down menu, or a popup menu
2
+ class Wx::Menu
3
+
4
+ # In the standard WxWidgets API, the methods append, prepend, insert
5
+ # (and their variants) require a constant integer id as the identifier
6
+ # of the menu item. This is then used in event handling.
7
+ #
8
+ # In WxRuby the use of explicit ids can be avoided in most cases,
9
+ # being a most unruby-ish practice. So, by analogy with the general
10
+ # use of Wx::Window classes and event handlers, where the id is
11
+ # implicit in the constructor, and the window can be passed direct to
12
+ # the event handler setup method, the below sets up a similar facility
13
+ # for adding items to Wx::Menu.
14
+ #
15
+ # For all these methods, the only required argument is the string name
16
+ # of the menu item; a system-default id will be supplied if no
17
+ # explicit one is given. The return value of these methods in all
18
+ # cases is a Wx::MenuItem object, which can be passed directly as the
19
+ # first argument to an evt_menu handler.
20
+ def self.methods_with_optional_ids(*meth_names)
21
+ class_eval do
22
+ meth_names.each do | meth |
23
+ old_meth = instance_method(meth)
24
+ define_method(meth) do | *args |
25
+ case args.first
26
+ when Fixnum : old_meth.bind(self).call(*args)
27
+ when String : old_meth.bind(self).call(Wx::ID_ANY, *args)
28
+ when Wx::MenuItem : old_meth.bind(self).call(args.first)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ # Create the optional-id methods
36
+ methods_with_optional_ids :append, :prepend,
37
+ :append_check_item, :prepend_check_item,
38
+ :append_radio_item, :prepend_radio_item
39
+
40
+ # This is much the same as above, except for insert and variants,
41
+ # which take an additional first argument, the position at which to
42
+ # insert the new item.
43
+ def self.methods_with_optional_ids_and_pos(*meth_names)
44
+ class_eval do
45
+ meth_names.each do | meth |
46
+ old_meth = instance_method(meth)
47
+ define_method(meth) do | pos, *args |
48
+ case args.first
49
+ when Fixnum : old_meth.bind(self).call(pos, *args)
50
+ when String : old_meth.bind(self).call(pos, Wx::ID_ANY, *args)
51
+ when Wx::MenuItem : old_meth.bind(self).call(pos, args.first)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ # Create the optional-id methods
59
+ methods_with_optional_ids_and_pos :insert,
60
+ :insert_check_item,
61
+ :insert_radio_item
62
+ end
@@ -0,0 +1,7 @@
1
+ # An individual item within a frame or popup menu
2
+ class Wx::MenuItem
3
+ # Get the Wx id, not Ruby's deprecated Object#id
4
+ alias :id :get_id
5
+ # In case a more explicit option is preferred.
6
+ alias :wx_id :get_id
7
+ end
@@ -0,0 +1,7 @@
1
+ # The root class for most (not all) WxRuby classes
2
+ class Wx::Object
3
+ # massage the output of inspect to show the public module name (Wx)
4
+ def to_s
5
+ super.sub('ruby2', '')
6
+ end
7
+ 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
+ define_method(:initialize) do | *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,48 @@
1
+ class Wx::Point
2
+ # More informative output when converted to string
3
+ def to_s
4
+ "#<Wx::Point: (#{x}, #{y})>"
5
+ end
6
+
7
+ # Return a new Wx::Point with the x and y parameters both divided by
8
+ # parameter +div+, which should be a Numeric
9
+ def /(div)
10
+ self.class.new( (get_x / div).to_i, (get_y / div).to_i )
11
+ end
12
+
13
+ # Return a new Wx::Point with the x and y values both multiplied by
14
+ # parameter +mul+, which should be a Numeric
15
+ def *(mul)
16
+ self.class.new( (get_x * mul).to_i, (get_y * mul).to_i )
17
+ end
18
+
19
+ # Return a new Wx::Point with the x and y values both reduced by
20
+ # parameter +arg+. If +arg+ is another Wx::Point, reduce x by the
21
+ # other's x and y by the other's y; if +arg+ is a numeric value,
22
+ # reduce x and y both by that value.
23
+ def -(arg)
24
+ case arg
25
+ when self.class
26
+ self.class.new( get_x - arg.get_x, get_y - arg.get_y )
27
+ when Numeric
28
+ self.class.new( (get_x - arg).to_i, (get_y - arg).to_i )
29
+ else
30
+ Kernel.raise TypeError, "Cannot add #{arg} to #{self.inspect}"
31
+ end
32
+ end
33
+
34
+ # Return a new Wx::Point with the x and y values both increased by
35
+ # parameter +arg+. If +arg+ is another Wx::Point, increase x by the
36
+ # other's x and y by the other's y; if +arg+ is a numeric value,
37
+ # increase both x and y by that value.
38
+ def +(arg)
39
+ case arg
40
+ when self.class
41
+ self.class.new( get_x + arg.get_x, get_y + arg.get_y )
42
+ when Numeric
43
+ self.class.new( (get_x + arg).to_i, (get_y + arg).to_i )
44
+ else
45
+ Kernel.raise TypeError, "Cannot add #{arg} to #{self.inspect}"
46
+ end
47
+ end
48
+ end