wxruby 1.9.6-x86-mingw32

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 (236) hide show
  1. data/LICENSE +53 -0
  2. data/README +297 -0
  3. data/lib/wx/accessors.rb +52 -0
  4. data/lib/wx/classes/acceleratortable.rb +28 -0
  5. data/lib/wx/classes/animation.rb +18 -0
  6. data/lib/wx/classes/app.rb +45 -0
  7. data/lib/wx/classes/artprovider.rb +31 -0
  8. data/lib/wx/classes/bitmap.rb +28 -0
  9. data/lib/wx/classes/busycursor.rb +12 -0
  10. data/lib/wx/classes/checklistbox.rb +45 -0
  11. data/lib/wx/classes/choice.rb +4 -0
  12. data/lib/wx/classes/clientdc.rb +13 -0
  13. data/lib/wx/classes/clipboard.rb +16 -0
  14. data/lib/wx/classes/colour.rb +47 -0
  15. data/lib/wx/classes/combobox.rb +4 -0
  16. data/lib/wx/classes/commandevent.rb +7 -0
  17. data/lib/wx/classes/controlwithitems.rb +10 -0
  18. data/lib/wx/classes/dc.rb +57 -0
  19. data/lib/wx/classes/event.rb +5 -0
  20. data/lib/wx/classes/evthandler.rb +921 -0
  21. data/lib/wx/classes/font.rb +118 -0
  22. data/lib/wx/classes/functions.rb +44 -0
  23. data/lib/wx/classes/gauge.rb +12 -0
  24. data/lib/wx/classes/grid.rb +138 -0
  25. data/lib/wx/classes/helpcontroller.rb +5 -0
  26. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  27. data/lib/wx/classes/htmlwindow.rb +14 -0
  28. data/lib/wx/classes/icon.rb +21 -0
  29. data/lib/wx/classes/iconbundle.rb +3 -0
  30. data/lib/wx/classes/image.rb +31 -0
  31. data/lib/wx/classes/imagelist.rb +3 -0
  32. data/lib/wx/classes/listbox.rb +4 -0
  33. data/lib/wx/classes/listctrl.rb +21 -0
  34. data/lib/wx/classes/locale.rb +28 -0
  35. data/lib/wx/classes/mediactrl.rb +22 -0
  36. data/lib/wx/classes/menu.rb +62 -0
  37. data/lib/wx/classes/menuitem.rb +7 -0
  38. data/lib/wx/classes/object.rb +7 -0
  39. data/lib/wx/classes/paintdc.rb +12 -0
  40. data/lib/wx/classes/point.rb +48 -0
  41. data/lib/wx/classes/previewframe.rb +13 -0
  42. data/lib/wx/classes/rect.rb +10 -0
  43. data/lib/wx/classes/size.rb +49 -0
  44. data/lib/wx/classes/sound.rb +23 -0
  45. data/lib/wx/classes/styledtextctrl.rb +92 -0
  46. data/lib/wx/classes/textctrl.rb +14 -0
  47. data/lib/wx/classes/texturlevent.rb +6 -0
  48. data/lib/wx/classes/timer.rb +94 -0
  49. data/lib/wx/classes/toolbartool.rb +4 -0
  50. data/lib/wx/classes/treectrl.rb +44 -0
  51. data/lib/wx/classes/window.rb +82 -0
  52. data/lib/wx/classes/xmlresource.rb +37 -0
  53. data/lib/wx/keyword_ctors.rb +222 -0
  54. data/lib/wx/keyword_defs.rb +492 -0
  55. data/lib/wx/version.rb +3 -0
  56. data/lib/wx.rb +42 -0
  57. data/lib/wxruby2.so +0 -0
  58. data/samples/SAMPLES-LICENSE.TXT +18 -0
  59. data/samples/aui/aui.rb +1356 -0
  60. data/samples/bigdemo/About.rbw +39 -0
  61. data/samples/bigdemo/ColorPanel.rbw +23 -0
  62. data/samples/bigdemo/GridSimple.rbw +78 -0
  63. data/samples/bigdemo/MDIDemo.rbw +57 -0
  64. data/samples/bigdemo/PopupMenu.rbw +149 -0
  65. data/samples/bigdemo/ShapedWindow.rbw +131 -0
  66. data/samples/bigdemo/Sizers.rbw +543 -0
  67. data/samples/bigdemo/bigdemo.rb +823 -0
  68. data/samples/bigdemo/demoTemplate.rbw +33 -0
  69. data/samples/bigdemo/helpfile.htb +0 -0
  70. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  71. data/samples/bigdemo/icons/Test 015.png +0 -0
  72. data/samples/bigdemo/icons/choice.bmp +0 -0
  73. data/samples/bigdemo/icons/choice.xpm +27 -0
  74. data/samples/bigdemo/icons/combo.bmp +0 -0
  75. data/samples/bigdemo/icons/combo.xpm +27 -0
  76. data/samples/bigdemo/icons/copy.xpm +25 -0
  77. data/samples/bigdemo/icons/cut.xpm +24 -0
  78. data/samples/bigdemo/icons/gauge.bmp +0 -0
  79. data/samples/bigdemo/icons/gauge.xpm +27 -0
  80. data/samples/bigdemo/icons/help.xpm +25 -0
  81. data/samples/bigdemo/icons/list.bmp +0 -0
  82. data/samples/bigdemo/icons/list.xpm +27 -0
  83. data/samples/bigdemo/icons/mondrian.ico +0 -0
  84. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  85. data/samples/bigdemo/icons/new.xpm +24 -0
  86. data/samples/bigdemo/icons/ogl.ico +0 -0
  87. data/samples/bigdemo/icons/ogl.xpm +45 -0
  88. data/samples/bigdemo/icons/open.xpm +26 -0
  89. data/samples/bigdemo/icons/paste.bmp +0 -0
  90. data/samples/bigdemo/icons/paste.xpm +38 -0
  91. data/samples/bigdemo/icons/pointy.png +0 -0
  92. data/samples/bigdemo/icons/preview.xpm +26 -0
  93. data/samples/bigdemo/icons/print.xpm +26 -0
  94. data/samples/bigdemo/icons/radio.bmp +0 -0
  95. data/samples/bigdemo/icons/radio.xpm +27 -0
  96. data/samples/bigdemo/icons/robert.xpm +415 -0
  97. data/samples/bigdemo/icons/ruby.png +0 -0
  98. data/samples/bigdemo/icons/sashtest.ico +0 -0
  99. data/samples/bigdemo/icons/save.xpm +25 -0
  100. data/samples/bigdemo/icons/smiles.bmp +0 -0
  101. data/samples/bigdemo/icons/smiles.xpm +39 -0
  102. data/samples/bigdemo/icons/smiley.ico +0 -0
  103. data/samples/bigdemo/icons/smiley.xpm +42 -0
  104. data/samples/bigdemo/icons/stattext.xpm +24 -0
  105. data/samples/bigdemo/icons/test2.bmp +0 -0
  106. data/samples/bigdemo/icons/test2.png +0 -0
  107. data/samples/bigdemo/icons/test2.xpm +79 -0
  108. data/samples/bigdemo/icons/text.bmp +0 -0
  109. data/samples/bigdemo/icons/text.xpm +27 -0
  110. data/samples/bigdemo/icons/tog1.bmp +0 -0
  111. data/samples/bigdemo/icons/tog1.xpm +38 -0
  112. data/samples/bigdemo/icons/tog2.bmp +0 -0
  113. data/samples/bigdemo/icons/tog2.xpm +38 -0
  114. data/samples/bigdemo/icons/wxwin.ico +0 -0
  115. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  116. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  117. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  118. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  119. data/samples/bigdemo/run.rb +90 -0
  120. data/samples/bigdemo/tips.txt +7 -0
  121. data/samples/bigdemo/utils.rb +12 -0
  122. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  123. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  124. data/samples/bigdemo/wxButton.rbw +64 -0
  125. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
  126. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  127. data/samples/bigdemo/wxCheckListBox.rbw +75 -0
  128. data/samples/bigdemo/wxChoice.rbw +47 -0
  129. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  130. data/samples/bigdemo/wxColourDialog.rbw +31 -0
  131. data/samples/bigdemo/wxComboBox.rbw +77 -0
  132. data/samples/bigdemo/wxCursor.rbw +136 -0
  133. data/samples/bigdemo/wxDialog.rbw +74 -0
  134. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  135. data/samples/bigdemo/wxDragImage.rbw +70 -0
  136. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  137. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  138. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  139. data/samples/bigdemo/wxFontDialog.rbw +173 -0
  140. data/samples/bigdemo/wxFrame.rbw +53 -0
  141. data/samples/bigdemo/wxGauge.rbw +71 -0
  142. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  143. data/samples/bigdemo/wxGrid.rbw +66 -0
  144. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  145. data/samples/bigdemo/wxListBox.rbw +140 -0
  146. data/samples/bigdemo/wxListCtrl_virtual.rbw +107 -0
  147. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  148. data/samples/bigdemo/wxMenu.rbw +236 -0
  149. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  150. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  151. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
  152. data/samples/bigdemo/wxNotebook.rbw +136 -0
  153. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  154. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  155. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  156. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  157. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  158. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  159. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  160. data/samples/bigdemo/wxSlider.rbw +42 -0
  161. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  162. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  163. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  164. data/samples/bigdemo/wxStaticBitmap.rbw +51 -0
  165. data/samples/bigdemo/wxStaticText.rbw +55 -0
  166. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  167. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  168. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  169. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  170. data/samples/bigdemo/wxToolBar.rbw +131 -0
  171. data/samples/bigdemo/wxTreeCtrl.rbw +190 -0
  172. data/samples/calendar/calendar.rb +271 -0
  173. data/samples/caret/caret.rb +282 -0
  174. data/samples/caret/mondrian.xpm +44 -0
  175. data/samples/controls/controls.rb +1136 -0
  176. data/samples/controls/get_item_sample.rb +87 -0
  177. data/samples/controls/icons/choice.xpm +27 -0
  178. data/samples/controls/icons/combo.xpm +27 -0
  179. data/samples/controls/icons/gauge.xpm +27 -0
  180. data/samples/controls/icons/list.xpm +27 -0
  181. data/samples/controls/icons/radio.xpm +27 -0
  182. data/samples/controls/icons/stattext.xpm +24 -0
  183. data/samples/controls/icons/text.xpm +27 -0
  184. data/samples/controls/mondrian.ico +0 -0
  185. data/samples/controls/mondrian.xpm +44 -0
  186. data/samples/controls/test2.bmp +0 -0
  187. data/samples/dialogs/dialogs.rb +723 -0
  188. data/samples/dialogs/tips.txt +18 -0
  189. data/samples/drawing/graphics_drawing.rb +235 -0
  190. data/samples/drawing/images.rb +37 -0
  191. data/samples/drawing/paperclip.png +0 -0
  192. data/samples/etc/activation.rb +102 -0
  193. data/samples/etc/choice.rb +67 -0
  194. data/samples/etc/miniframe.rb +79 -0
  195. data/samples/etc/sash.rb +130 -0
  196. data/samples/etc/scrollwin.rb +110 -0
  197. data/samples/etc/system_settings.rb +252 -0
  198. data/samples/etc/threaded.rb +72 -0
  199. data/samples/etc/wizard.rb +74 -0
  200. data/samples/event/event.rb +182 -0
  201. data/samples/grid/grid.rb +198 -0
  202. data/samples/grid/gridtablebase.rb +134 -0
  203. data/samples/html/html.rb +262 -0
  204. data/samples/listbook/listbook.rb +174 -0
  205. data/samples/listbook/listbook.xrc +370 -0
  206. data/samples/mdi/mdi.rb +82 -0
  207. data/samples/media/mediactrl.rb +167 -0
  208. data/samples/minimal/minimal.rb +77 -0
  209. data/samples/minimal/mondrian.ico +0 -0
  210. data/samples/minimal/mondrian.png +0 -0
  211. data/samples/minimal/nothing.rb +16 -0
  212. data/samples/opengl/cube.rb +117 -0
  213. data/samples/printing/mondrian.ico +0 -0
  214. data/samples/printing/mondrian.xpm +44 -0
  215. data/samples/printing/printing.rb +310 -0
  216. data/samples/sockets/SocketPackets.rb +27 -0
  217. data/samples/sockets/res/message-new.png +0 -0
  218. data/samples/sockets/res/user.png +0 -0
  219. data/samples/sockets/wxClient.rb +395 -0
  220. data/samples/sockets/wxServer.rb +422 -0
  221. data/samples/sockets/wxSocketGUI.rb +97 -0
  222. data/samples/text/mondrian.ico +0 -0
  223. data/samples/text/mondrian.xpm +44 -0
  224. data/samples/text/scintilla.rb +169 -0
  225. data/samples/text/textctrl.rb +113 -0
  226. data/samples/text/unicode.rb +242 -0
  227. data/samples/text/utf8.txt +15 -0
  228. data/samples/treectrl/icon1.xpm +79 -0
  229. data/samples/treectrl/icon2.xpm +53 -0
  230. data/samples/treectrl/icon3.xpm +79 -0
  231. data/samples/treectrl/icon4.xpm +43 -0
  232. data/samples/treectrl/icon5.xpm +79 -0
  233. data/samples/treectrl/treectrl.rb +1174 -0
  234. data/samples/xrc/samples.xrc +46 -0
  235. data/samples/xrc/xrc_sample.rb +96 -0
  236. metadata +313 -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,44 @@
1
+ # Tweaks to the global module functions
2
+
3
+ module Wx
4
+ class << self
5
+ # Allow this to be called with keyword parameters, and avoid
6
+ # segfaults on OS X with bad params
7
+ wx_about_box = self.instance_method(:about_box)
8
+ define_method(:about_box) do | info |
9
+ # If AboutDialogInfo has no version, it segfaults on OS X 10.5
10
+ no_version = ArgumentError.new("Must supply a version for AboutDialog")
11
+ case info
12
+ when Wx::AboutDialogInfo
13
+ unless info.has_version
14
+ Kernel.raise no_version
15
+ end
16
+
17
+ ab_info = info
18
+ when Hash
19
+ ab_info = Wx::AboutDialogInfo.new
20
+ ab_info.name = info[:name] || 'wxRuby application'
21
+ ab_info.version = info[:version] || Kernel.raise(no_version)
22
+
23
+ ab_info.description = info[:description] || ''
24
+ ab_info.copyright = info[:copyright] || ''
25
+ ab_info.licence = info[:licence] || ''
26
+ ab_info.developers = info[:developers] || []
27
+ ab_info.doc_writers = info[:doc_writers] || []
28
+ ab_info.artists = info[:artists] || []
29
+ ab_info.translators = info[:translators] || []
30
+ if info.key?(:website)
31
+ ab_info.set_website(*info[:website])
32
+ end
33
+ if info.key?(:icon)
34
+ ab_info.icon = info[:icon]
35
+ end
36
+
37
+ else
38
+ Kernel.raise ArgumentError,
39
+ "Can't use #{info.inspect} for AboutDialogInfo"
40
+ end
41
+ wx_about_box.bind(self).call(ab_info)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,12 @@
1
+ # Gauge : presents a progress bar
2
+ #
3
+ # On the C++ side, the actual class name of wxGauge under Windows is
4
+ # wxGauge95. So when a Gauge is loaded from XRC, and we try to wrap the
5
+ # object in a ruby class by calling obj->ClassInfo()->ClassName(), it
6
+ # seeks for a ruby class (Wx::Gauge95) that doesn't exist (see
7
+ # swig/shared/get_ruby_object.i).
8
+ #
9
+ # To fix this, make Wx::Gauge95 an alias.
10
+ if Wx::PLATFORM == 'WXMSW'
11
+ Wx::Gauge95 = Wx::Gauge
12
+ end
@@ -0,0 +1,138 @@
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
+ # GridTableBase, and the GridCellRenderers and GridCellEditors pose a
8
+ # problem for ruby's GC, in that Wx makes them owned by the grid once
9
+ # they have been set for a cell or group of cells. However, because
10
+ # they are SWIG directors we cannot allow the ruby object they are
11
+ # originally associated with to be swept by GC, as C++ method calls
12
+ # are routed to ruby method calls.
13
+ #
14
+ # The code below stores Ruby redefines all methods that may
15
+ # potentially set a GridTableBase, Editor or Renderer, and stores a
16
+ # reference to them in an instance variable, so they are not disposed
17
+ # of up when GC sweeps.
18
+
19
+ # These all need to be set up as private methods which default to an
20
+ # array. This can't be done in initialize b/c that may not be called
21
+ # when a Grid is loaded from XRC
22
+ %w| __cell_editors __col_editors __row_editors
23
+ __cell_renderers __col_renderers __row_renderers |.each do | meth |
24
+ define_method(meth) do
25
+ instance_variable_get("@#{meth}") ||
26
+ instance_variable_set("@#{meth}", [])
27
+ end
28
+ private meth
29
+ end
30
+
31
+ # Set a grid table base to provide data
32
+ alias :__set_table :set_table
33
+ def set_table(table, sel_mode = Wx::Grid::GridSelectCells)
34
+ __set_table(table, sel_mode)
35
+ @__grid_table = table
36
+ end
37
+
38
+ # store default editor
39
+ wx_set_default_editor = self.instance_method(:set_default_editor)
40
+ define_method(:set_default_editor) do | editr |
41
+ wx_set_default_editor.bind(self).call(editr)
42
+ @__default_editor = editr
43
+ end
44
+
45
+ # store default renderer
46
+ wx_set_default_renderer = self.instance_method(:set_default_renderer)
47
+ define_method(:set_default_renderer) do | rendr |
48
+ wx_set_default_renderer.bind(self).call(rendr)
49
+ @__default_renderer = rendr
50
+ end
51
+
52
+ # store cell editors
53
+ wx_set_cell_editor = self.instance_method(:set_cell_editor)
54
+ define_method(:set_cell_editor) do | row, col, editr |
55
+ wx_set_cell_editor.bind(self).call(row, col, editr)
56
+ __cell_editors[row] ||= []
57
+ __cell_editors[row][col] = editr
58
+ end
59
+
60
+ # store cell renderer
61
+ wx_set_cell_renderer = self.instance_method(:set_cell_renderer)
62
+ define_method(:set_cell_renderer) do | row, col, rendr |
63
+ wx_set_cell_renderer.bind(self).call(row, col, rendr)
64
+ __cell_renderers[row] ||= []
65
+ __cell_renderers[row][col] = rendr
66
+ end
67
+
68
+ # Store an editor and/or renderer for a whole column
69
+ wx_set_col_attr = self.instance_method(:set_col_attr)
70
+ define_method(:set_col_attr) do | col, attr |
71
+ wx_set_col_attr.bind(self).call(col, attr)
72
+ if attr.has_editor
73
+ __col_editors[col] = attr.get_editor(self, 0, col)
74
+ end
75
+ if attr.has_renderer
76
+ __col_renderers[col] = attr.get_renderer(self, 0, col)
77
+ end
78
+ end
79
+
80
+ # Store an editor and/or renderer for a whole row
81
+ wx_set_row_attr = self.instance_method(:set_row_attr)
82
+ define_method(:set_row_attr) do | row, attr |
83
+ wx_set_row_attr.bind(self).call(row, attr)
84
+ if attr.has_editor
85
+ __row_editors[row] = attr.get_editor(self, row, 0)
86
+ end
87
+ if attr.has_renderer
88
+ __row_renderers[row] = attr.get_renderer(self, row, 0)
89
+ end
90
+ end
91
+
92
+ # This and the following methods do a bit of book-keeping - as rows
93
+ # and columns are deleted and inserted, the position of the columns
94
+ # and rows with stored editors and renderers may move.
95
+ alias :__insert_rows :insert_rows
96
+ def insert_rows(pos = 0, num = 1, update_labels = true)
97
+ __insert_rows(pos, num, update_labels)
98
+ num.times { __row_editors.insert(pos, nil) }
99
+ num.times { __row_renderers.insert(pos, nil) }
100
+ num.times { __cell_editors.insert(pos, []) }
101
+ num.times { __cell_renderers.insert(pos, []) }
102
+ end
103
+
104
+ alias :__insert_cols :insert_cols
105
+ def insert_cols(pos = 0, num = 1, update_labels = true)
106
+ __insert_cols(pos, num, update_labels)
107
+ num.times { __col_editors.insert(pos, nil) }
108
+ num.times { __col_renderers.insert(pos, nil) }
109
+ num.times do
110
+ __cell_editors.map { | col | col.insert(pos, []) if col }
111
+ end
112
+ num.times do
113
+ __cell_renderers.map { | col | col.insert(pos, []) if col }
114
+ end
115
+ end
116
+
117
+ alias :__delete_rows :delete_rows
118
+ def delete_rows(pos = 0, num = 1, update_labels = true)
119
+ __delete_rows(pos, num, update_labels)
120
+ __row_editors.slice!(pos, num)
121
+ __row_renderers.slice!(pos, num)
122
+ __cell_editors.slice!(pos, num)
123
+ __cell_renderers.slice!(pos, num)
124
+ end
125
+
126
+ alias :__delete_cols :delete_cols
127
+ def delete_cols(pos = 0, num = 1, update_labels = true)
128
+ __delete_cols(pos, num, update_labels)
129
+ __col_editors.slice!(pos, num)
130
+ __col_renderers.slice!(pos, num)
131
+ num.times do
132
+ __cell_editors.map { | col | col.slice!(pos, num) if col }
133
+ end
134
+ num.times do
135
+ __cell_renderers.map { | col | col.slice!(pos, num) if col }
136
+ end
137
+ end
138
+ 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,14 @@
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
+
7
+ # This is called from within wxWidgets whenever a URL is being
8
+ # opened. The method may return true, to signal that the opening
9
+ # should be permitted, false or nil to signal that it should be
10
+ # blocked, or a string URL to which it should be redirected
11
+ def on_opening_url(url)
12
+ true
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ class Wx::Icon
2
+ # Analogous to Image.from_bitmap
3
+ def self.from_bitmap(bmp)
4
+ ico = new
5
+ ico.copy_from_bitmap(bmp)
6
+ ico
7
+ end
8
+
9
+ # Redefine the initialize method so it raises an exception if a
10
+ # non-existent file is given to the constructor; otherwise, wx Widgets
11
+ # just carries on with an empty icon, which may cause faults later
12
+ wx_init = self.instance_method(:initialize)
13
+ define_method(:initialize) do | *args |
14
+ if args[0].kind_of? String
15
+ if not File.exist?( File.expand_path(args[0]) )
16
+ Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
17
+ end
18
+ end
19
+ wx_init.bind(self).call(*args)
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ class Wx::IconBundle
2
+ alias :<< :add_icon
3
+ end
@@ -0,0 +1,31 @@
1
+ class Wx::Image
2
+ # Load a new image from an IO-like object that supports "read"
3
+ def self.read(an_io, type_or_mime, index = -1)
4
+ img = new
5
+ img.load_stream(an_io, type_or_mime, index)
6
+ img
7
+ end
8
+
9
+ # Create a new image from Wx::Bitmap, preserving mask information
10
+ def self.from_bitmap(bmp)
11
+ bmp.convert_to_image
12
+ end
13
+
14
+ # Redefine the initialize method so it raises an exception if a
15
+ # non-existent file is given to the constructor; otherwise, wx Widgets
16
+ # just carries on with an invalid image, which may cause faults later
17
+ wx_init = self.instance_method(:initialize)
18
+ define_method(:initialize) do | *args |
19
+ if args[0].kind_of? String
20
+ if not File.exist?( File.expand_path(args[0]) )
21
+ Kernel.raise(ArgumentError, "Image file does not exist: #{args[0]}")
22
+ end
23
+ end
24
+ wx_init.bind(self).call(*args)
25
+ end
26
+
27
+ # Convert to bitmap
28
+ def convert_to_bitmap
29
+ Wx::Bitmap.from_image(self)
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ class Wx::ImageList
2
+ alias :<< :add
3
+ 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,21 @@
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
+
10
+ # Stub version for LC_VIRTUAL controls that does nothing; may be
11
+ # overridden in subclasses.
12
+ def on_get_item_attr(i)
13
+ nil
14
+ end
15
+
16
+ # Stub version for LC_VIRTUAL|LC_REPORT controls that does nothing;
17
+ # may be overridden in subclasses.
18
+ def on_get_item_column_image(i, col)
19
+ -1
20
+ end
21
+ 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,22 @@
1
+ # Functionality here must be loaded first to add custom events
2
+ require 'wx/classes/evthandler'
3
+
4
+ # These event handlers should only be defined if MediaCtrl is actually
5
+ # available; some builds may not include it
6
+ if defined?(Wx::MediaCtrl)
7
+ evt_type = Wx::EvtHandler::EventType
8
+ mediactrl_event_types = [
9
+ evt_type['evt_media_finished', 1,
10
+ Wx::EVT_MEDIA_FINISHED,
11
+ Wx::MediaEvent],
12
+ evt_type['evt_media_stop', 1,
13
+ Wx::EVT_MEDIA_STOP,
14
+ Wx::MediaEvent],
15
+ evt_type['evt_media_loaded', 1,
16
+ Wx::EVT_MEDIA_LOADED,
17
+ Wx::MediaEvent]
18
+ ]
19
+ mediactrl_event_types.each do | ev_type |
20
+ Wx::EvtHandler.register_event_type(ev_type)
21
+ end
22
+ 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 then old_meth.bind(self).call(*args)
27
+ when String then old_meth.bind(self).call(Wx::ID_ANY, *args)
28
+ when Wx::MenuItem then 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 then old_meth.bind(self).call(pos, *args)
50
+ when String then old_meth.bind(self).call(pos, Wx::ID_ANY, *args)
51
+ when Wx::MenuItem then 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
@@ -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,10 @@
1
+ # Class representing a rectangular shape
2
+ class Wx::Rect
3
+ # Nicely readable inspect output for Rect
4
+ def to_s
5
+ "#<Wx::Rect: (#{get_left}, #{get_top}) (#{get_right}, #{get_bottom})>"
6
+ end
7
+
8
+ # More ruby-ish names
9
+ alias :contains? :contains
10
+ end