wxruby3 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +35 -29
  3. data/README.md +24 -15
  4. data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
  5. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  6. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  7. data/ext/wxruby3/swig/custom/director.swg +8 -0
  8. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  9. data/lib/wx/core/bitmap_combobox.rb +17 -21
  10. data/lib/wx/core/combobox.rb +13 -3
  11. data/lib/wx/core/controlwithitems.rb +40 -130
  12. data/lib/wx/core/enum.rb +17 -1
  13. data/lib/wx/core/event.rb +6 -1
  14. data/lib/wx/core/evthandler.rb +8 -2
  15. data/lib/wx/core/generic_validator.rb +312 -0
  16. data/lib/wx/core/listbox.rb +2 -2
  17. data/lib/wx/core/log.rb +1 -1
  18. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  19. data/lib/wx/core/size.rb +4 -0
  20. data/lib/wx/core/sizer.rb +1 -2
  21. data/lib/wx/core/standard_paths.rb +22 -0
  22. data/lib/wx/core/text_entry.rb +4 -1
  23. data/lib/wx/core/validator.rb +70 -5
  24. data/lib/wx/core/window.rb +3 -7
  25. data/lib/wx/doc/art_locator.rb +1 -0
  26. data/lib/wx/doc/comboctrl.rb +18 -0
  27. data/lib/wx/doc/controlwithitems.rb +16 -0
  28. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  29. data/lib/wx/doc/editable_listbox.rb +44 -0
  30. data/lib/wx/doc/enum.rb +15 -0
  31. data/lib/wx/doc/event.rb +12 -0
  32. data/lib/wx/doc/extra/12_client_data.md +89 -0
  33. data/lib/wx/doc/extra/13_validators.md +139 -0
  34. data/lib/wx/doc/gdi_common.rb +4 -0
  35. data/lib/wx/doc/generic_validator.rb +95 -0
  36. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  37. data/lib/wx/doc/num_validator.rb +387 -0
  38. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  39. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  40. data/lib/wx/doc/static_bitmap.rb +25 -0
  41. data/lib/wx/doc/text_validator.rb +10 -0
  42. data/lib/wx/doc/validator.rb +113 -0
  43. data/lib/wx/doc/window.rb +30 -0
  44. data/lib/wx/html/simple_html_listbox.rb +24 -91
  45. data/lib/wx/keyword_defs.rb +34 -2
  46. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  47. data/lib/wx/version.rb +1 -1
  48. data/rakelib/lib/config/mingw.rb +12 -0
  49. data/rakelib/lib/core/include/client_data.inc +65 -0
  50. data/rakelib/lib/core/include/funcall.inc +1 -1
  51. data/rakelib/lib/core/package.rb +17 -2
  52. data/rakelib/lib/core/parameter.rb +1 -1
  53. data/rakelib/lib/core/spec_helper.rb +7 -1
  54. data/rakelib/lib/director/app.rb +18 -0
  55. data/rakelib/lib/director/app_traits.rb +3 -1
  56. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  57. data/rakelib/lib/director/combobox.rb +22 -0
  58. data/rakelib/lib/director/comboctrl.rb +1 -55
  59. data/rakelib/lib/director/ctrl_with_items.rb +88 -21
  60. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  61. data/rakelib/lib/director/editable_listbox.rb +30 -0
  62. data/rakelib/lib/director/event.rb +102 -12
  63. data/rakelib/lib/director/event_handler.rb +3 -2
  64. data/rakelib/lib/director/functions.rb +4 -2
  65. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  66. data/rakelib/lib/director/grid_cell_attr.rb +0 -2
  67. data/rakelib/lib/director/grid_cell_editor.rb +0 -2
  68. data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
  69. data/rakelib/lib/director/header_ctrl.rb +6 -1
  70. data/rakelib/lib/director/html_listbox.rb +96 -22
  71. data/rakelib/lib/director/num_validator.rb +495 -0
  72. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  73. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  74. data/rakelib/lib/director/pgproperty.rb +3 -29
  75. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  76. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  77. data/rakelib/lib/director/sizer.rb +15 -4
  78. data/rakelib/lib/director/sizer_item.rb +13 -0
  79. data/rakelib/lib/director/static_bitmap.rb +28 -0
  80. data/rakelib/lib/director/text_entry.rb +4 -0
  81. data/rakelib/lib/director/text_validator.rb +124 -13
  82. data/rakelib/lib/director/toggle_button.rb +1 -0
  83. data/rakelib/lib/director/top_level_window.rb +0 -2
  84. data/rakelib/lib/director/tree_ctrl.rb +35 -0
  85. data/rakelib/lib/director/utils.rb +16 -2
  86. data/rakelib/lib/director/validator.rb +196 -21
  87. data/rakelib/lib/director/window.rb +16 -2
  88. data/rakelib/lib/extractor/function.rb +2 -1
  89. data/rakelib/lib/generate/analyzer.rb +1 -1
  90. data/rakelib/lib/generate/doc.rb +10 -4
  91. data/rakelib/lib/specs/interfaces.rb +2 -0
  92. data/rakelib/lib/swig_runner.rb +55 -9
  93. data/rakelib/lib/typemap/client_data.rb +67 -0
  94. data/rakelib/lib/typemap/common.rb +3 -3
  95. data/rakelib/lib/typemap/datetime.rb +1 -1
  96. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  97. data/samples/aui/aui.rb +1237 -1233
  98. data/samples/calendar/calendar.rb +293 -289
  99. data/samples/controls/get_item_sample.rb +83 -79
  100. data/samples/controls/htlbox.rb +331 -327
  101. data/samples/dialogs/dialogs.rb +682 -694
  102. data/samples/dialogs/wizard.rb +52 -55
  103. data/samples/dragdrop/dragdrop.rb +146 -142
  104. data/samples/drawing/bitmap.rb +29 -26
  105. data/samples/drawing/bitmap_image.rb +84 -80
  106. data/samples/drawing/graphics_drawing.rb +209 -205
  107. data/samples/drawing/image_prt.rb +344 -340
  108. data/samples/drawing/maths_images.rb +18 -1
  109. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  110. data/samples/etc/caret.rb +306 -0
  111. data/samples/etc/miniframe.rb +65 -60
  112. data/samples/etc/sash.rb +109 -105
  113. data/samples/etc/scrollwin.rb +86 -80
  114. data/samples/etc/system_settings.rb +216 -209
  115. data/samples/event/activation.rb +72 -67
  116. data/samples/event/event.rb +160 -153
  117. data/samples/event/threaded.rb +8 -1
  118. data/samples/event/update_ui_event.rb +67 -60
  119. data/samples/grid/grid.rb +188 -181
  120. data/samples/grid/gridtablebase.rb +136 -129
  121. data/samples/html/html.rb +208 -204
  122. data/samples/mdi/mdi.rb +59 -54
  123. data/samples/minimal/minimal.rb +54 -51
  124. data/samples/minimal/nothing.rb +1 -0
  125. data/samples/printing/printing.rb +367 -377
  126. data/samples/printing/printing2.rb +203 -198
  127. data/samples/propgrid/propgrid.rb +2312 -2308
  128. data/samples/propgrid/propgrid_minimal.rb +57 -50
  129. data/samples/ribbon/ribbon.rb +780 -774
  130. data/samples/sampler/ext.rb +0 -33
  131. data/samples/sampler/sample.rb +4 -9
  132. data/samples/sampler.rb +1 -1
  133. data/samples/splash/splash.rb +118 -116
  134. data/samples/text/rich_textctrl.rb +207 -201
  135. data/samples/text/richtext.rb +1409 -1405
  136. data/samples/text/scintilla.rb +137 -128
  137. data/samples/text/textctrl.rb +89 -83
  138. data/samples/text/unicode.rb +175 -168
  139. data/samples/treectrl/treectrl.rb +1430 -1426
  140. data/samples/widgets/activityindicator.rb +95 -0
  141. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  142. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  143. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  144. data/samples/widgets/art/widgets/button.xpm +54 -0
  145. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  146. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  147. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  148. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  149. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  150. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  151. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  152. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  153. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  154. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  155. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  156. data/samples/widgets/art/widgets/header.xpm +54 -0
  157. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  158. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  159. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  160. data/samples/widgets/art/widgets/native.xpm +81 -0
  161. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  162. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  163. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  164. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  165. data/samples/widgets/art/widgets/slider.xpm +54 -0
  166. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  167. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  168. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  169. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  170. data/samples/widgets/art/widgets/text.xpm +54 -0
  171. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  172. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  173. data/samples/widgets/art/widgets/toucan.png +0 -0
  174. data/samples/widgets/bmpcombobox.rb +651 -0
  175. data/samples/widgets/button.rb +462 -0
  176. data/samples/widgets/checkbox.rb +211 -0
  177. data/samples/widgets/choice.rb +287 -0
  178. data/samples/widgets/clrpicker.rb +156 -0
  179. data/samples/widgets/combobox.rb +516 -0
  180. data/samples/widgets/datepick.rb +215 -0
  181. data/samples/widgets/dirctrl.rb +265 -0
  182. data/samples/widgets/dirpicker.rb +158 -0
  183. data/samples/widgets/editlbox.rb +122 -0
  184. data/samples/widgets/filectrl.rb +216 -0
  185. data/samples/widgets/filepicker.rb +214 -0
  186. data/samples/widgets/fontpicker.rb +135 -0
  187. data/samples/widgets/gauge.rb +311 -0
  188. data/samples/widgets/headerctrl.rb +236 -0
  189. data/samples/widgets/hyperlink.rb +203 -0
  190. data/samples/widgets/itemcontainer.rb +185 -0
  191. data/samples/widgets/listbox.rb +473 -0
  192. data/samples/widgets/notebook.rb +488 -0
  193. data/samples/widgets/odcombobox.rb +608 -0
  194. data/samples/widgets/radiobox.rb +328 -0
  195. data/samples/widgets/searchctrl.rb +159 -0
  196. data/samples/widgets/slider.rb +594 -0
  197. data/samples/widgets/spinbtn.rb +443 -0
  198. data/samples/widgets/statbmp.rb +130 -0
  199. data/samples/widgets/static.rb +436 -0
  200. data/samples/widgets/textctrl.rb +700 -0
  201. data/samples/widgets/timepick.rb +148 -0
  202. data/samples/widgets/tn_widgets.png +0 -0
  203. data/samples/widgets/toggle.rb +385 -0
  204. data/samples/widgets/widgets.rb +1233 -0
  205. data/samples/xrc/custom_xrc_sample.rb +47 -41
  206. data/samples/xrc/xrc_sample.rb +53 -47
  207. data/tests/test_event_handling.rb +52 -34
  208. data/tests/test_events.rb +7 -0
  209. data/tests/test_item_data.rb +24 -0
  210. data/tests/test_sizer.rb +44 -1
  211. data/tests/test_validators.rb +805 -0
  212. metadata +92 -138
  213. data/lib/wx/core/choice.rb +0 -14
  214. data/lib/wx/core/combo_ctrl.rb +0 -110
  215. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  216. data/samples/bigdemo/About.rbw +0 -39
  217. data/samples/bigdemo/ColorPanel.rbw +0 -23
  218. data/samples/bigdemo/GridSimple.rbw +0 -78
  219. data/samples/bigdemo/MDIDemo.rbw +0 -57
  220. data/samples/bigdemo/PopupMenu.rbw +0 -146
  221. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  222. data/samples/bigdemo/Sizers.rbw +0 -541
  223. data/samples/bigdemo/bigdemo.rb +0 -817
  224. data/samples/bigdemo/demoTemplate.rbw +0 -33
  225. data/samples/bigdemo/helpfile.htb +0 -0
  226. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  227. data/samples/bigdemo/icons/Test 015.png +0 -0
  228. data/samples/bigdemo/icons/choice.bmp +0 -0
  229. data/samples/bigdemo/icons/combo.bmp +0 -0
  230. data/samples/bigdemo/icons/combo.xpm +0 -27
  231. data/samples/bigdemo/icons/copy.xpm +0 -25
  232. data/samples/bigdemo/icons/cut.xpm +0 -24
  233. data/samples/bigdemo/icons/gauge.bmp +0 -0
  234. data/samples/bigdemo/icons/gauge.xpm +0 -27
  235. data/samples/bigdemo/icons/help.xpm +0 -25
  236. data/samples/bigdemo/icons/list.bmp +0 -0
  237. data/samples/bigdemo/icons/list.xpm +0 -27
  238. data/samples/bigdemo/icons/mondrian.ico +0 -0
  239. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  240. data/samples/bigdemo/icons/new.xpm +0 -24
  241. data/samples/bigdemo/icons/ogl.ico +0 -0
  242. data/samples/bigdemo/icons/ogl.xpm +0 -45
  243. data/samples/bigdemo/icons/open.xpm +0 -26
  244. data/samples/bigdemo/icons/paste.bmp +0 -0
  245. data/samples/bigdemo/icons/paste.xpm +0 -38
  246. data/samples/bigdemo/icons/pointy.png +0 -0
  247. data/samples/bigdemo/icons/preview.xpm +0 -26
  248. data/samples/bigdemo/icons/print.xpm +0 -26
  249. data/samples/bigdemo/icons/radio.bmp +0 -0
  250. data/samples/bigdemo/icons/radio.xpm +0 -27
  251. data/samples/bigdemo/icons/robert.xpm +0 -415
  252. data/samples/bigdemo/icons/sashtest.ico +0 -0
  253. data/samples/bigdemo/icons/save.xpm +0 -25
  254. data/samples/bigdemo/icons/smiles.bmp +0 -0
  255. data/samples/bigdemo/icons/smiles.xpm +0 -39
  256. data/samples/bigdemo/icons/smiley.ico +0 -0
  257. data/samples/bigdemo/icons/smiley.xpm +0 -42
  258. data/samples/bigdemo/icons/stattext.xpm +0 -24
  259. data/samples/bigdemo/icons/test2.bmp +0 -0
  260. data/samples/bigdemo/icons/test2.png +0 -0
  261. data/samples/bigdemo/icons/test2.xpm +0 -79
  262. data/samples/bigdemo/icons/text.bmp +0 -0
  263. data/samples/bigdemo/icons/text.xpm +0 -27
  264. data/samples/bigdemo/icons/tog1.bmp +0 -0
  265. data/samples/bigdemo/icons/tog1.xpm +0 -38
  266. data/samples/bigdemo/icons/tog2.bmp +0 -0
  267. data/samples/bigdemo/icons/tog2.xpm +0 -38
  268. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  269. data/samples/bigdemo/icons/wxwin.ico +0 -0
  270. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  271. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  272. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  273. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  274. data/samples/bigdemo/run.rb +0 -98
  275. data/samples/bigdemo/tips.txt +0 -7
  276. data/samples/bigdemo/utils.rb +0 -20
  277. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  278. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  279. data/samples/bigdemo/wxButton.rbw +0 -64
  280. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  281. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  282. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  283. data/samples/bigdemo/wxChoice.rbw +0 -47
  284. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  285. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  286. data/samples/bigdemo/wxComboBox.rbw +0 -77
  287. data/samples/bigdemo/wxCursor.rbw +0 -136
  288. data/samples/bigdemo/wxDialog.rbw +0 -74
  289. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  290. data/samples/bigdemo/wxDragImage.rbw +0 -70
  291. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  292. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  293. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  294. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  295. data/samples/bigdemo/wxFrame.rbw +0 -53
  296. data/samples/bigdemo/wxGauge.rbw +0 -65
  297. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  298. data/samples/bigdemo/wxGrid.rbw +0 -66
  299. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  300. data/samples/bigdemo/wxListBox.rbw +0 -140
  301. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  302. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  303. data/samples/bigdemo/wxMenu.rbw +0 -247
  304. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  305. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  306. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  307. data/samples/bigdemo/wxNotebook.rbw +0 -136
  308. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  309. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  310. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  311. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  312. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  313. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  314. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  315. data/samples/bigdemo/wxSlider.rbw +0 -42
  316. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  317. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  318. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  319. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  320. data/samples/bigdemo/wxStaticText.rbw +0 -55
  321. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  322. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  323. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  324. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  325. data/samples/bigdemo/wxToolBar.rbw +0 -131
  326. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  327. data/samples/caret/caret.rb +0 -298
  328. data/samples/caret/mondrian.xpm +0 -44
  329. data/samples/controls/books.rb +0 -189
  330. data/samples/controls/choice.xpm +0 -27
  331. data/samples/controls/combo.xpm +0 -27
  332. data/samples/controls/controls.rb +0 -1099
  333. data/samples/controls/gauge.xpm +0 -27
  334. data/samples/controls/list.xpm +0 -27
  335. data/samples/controls/mondrian.ico +0 -0
  336. data/samples/controls/mondrian.xpm +0 -44
  337. data/samples/controls/radio.xpm +0 -27
  338. data/samples/controls/stattext.xpm +0 -24
  339. data/samples/controls/test2.bmp +0 -0
  340. data/samples/controls/text.xpm +0 -27
  341. data/samples/controls/tn_books.png +0 -0
  342. data/samples/controls/tn_controls.png +0 -0
  343. data/samples/etc/choice.rb +0 -87
  344. data/samples/etc/tn_choice.png +0 -0
  345. data/samples/text/mondrian.ico +0 -0
  346. data/samples/text/mondrian.xpm +0 -44
  347. /data/samples/{caret → etc}/tn_caret.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94bf5f5a3d4107e4a77c02971756de87b044c3d9edfbedd0b0aa0fe3e95e6ae7
4
- data.tar.gz: 83d78771dde19401cbb0e5f915c7eb86903bf76357f1a1d0be4d10edf1f0d4a7
3
+ metadata.gz: ef007e75aefb2b02a91a0818c8ef2d5191075e280c4dbd01bda827cdd65f9957
4
+ data.tar.gz: d52b47712bd0d0d9705270e8c1487e2a1d797bcc52a46253b866e0fe4c6a1617
5
5
  SHA512:
6
- metadata.gz: f1ac191dac02b350104d6336d38af941126056f30da9d2bffa12d480592216f0059f7cc1e22fa4020898a26faeffbc64d71df09eefd2b3329956c5e70a97b23b
7
- data.tar.gz: '08d86fdf568ef0b67d76c670ccd108194342c7c0d97710419f7e98e0c852d8a863540aa3c320052237c27adf1c37f4d92a7c927fb827fcbbc5d05a73789e40e1'
6
+ metadata.gz: ba7a127d408a2ab7ce745b0ad1d6d88eee710953ecceaa42a7880c6fb258a4b684cbc9f8bf11d36b1473bb99a55fd219a8fd434475f7352c238b1c2d03bdce9e
7
+ data.tar.gz: 2d99560d20e4d04a1b5c6abacba8579e0973bca2251fb402caa1a301e8a99317eed6a864892a47b8740a87a3861aeb6692791e97fc61c0a57e20d8b41727e930
data/INSTALL.md CHANGED
@@ -10,14 +10,14 @@ Below are installation instructions for Linux, Windows, and Mac (both AMD64 and
10
10
 
11
11
  The minimal requirements for installing any source based setup (gem, source package or Github clone) of wxRuby3 are:
12
12
 
13
- | Sofware | Notes |
14
- |-----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
15
- | Ruby | A supported version of the Ruby interpreter needs to be installed. |
16
- | C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed via `sudo xcode-select --install` |
17
- | Git version control toolkit | |
18
- | SWIG >= 3.0.12 | On MacOS install [Homebrew](https://brew.sh/) and than `brew install swig` |
19
- | Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files.<br>On MacOS: `brew tap mcorino/wxruby3` and than `brew install doxygen@1.9.6` (default brew recipe installs 1.9.7) |
20
- | wxWidgets (>= 3.2) | See [wxWidgets installation](#wxwidgets-installation) |
13
+ | Sofware | Notes |
14
+ |-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
15
+ | Ruby | A supported version of the Ruby interpreter needs to be installed. |
16
+ | C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed via <code>sudo xcode-select --install</code> |
17
+ | Git version control toolkit | |
18
+ | SWIG >= 3.0.12 | On MacOS install Homebrew (https://brew.sh) and than <code>brew install swig</code> |
19
+ | Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files.<br>On MacOS: <code>brew tap mcorino/wxruby3</code> and than `brew install doxygen@1.9.6` (default brew recipe installs 1.9.7) |
20
+ | wxWidgets (>= 3.2) | See the <b>wxWidgets installation</b> section below. |
21
21
 
22
22
  The wxRuby3 build process requires `git` to clone a copy of the wxWidgets Github repository to extract the interface
23
23
  specifications from.<br>
@@ -57,46 +57,41 @@ gem install wxruby3 -- WITH_WXWIN=1
57
57
 
58
58
  Also a wxWidgets installation (version 3.2 or later) is required for which there are multiple options.
59
59
 
60
- 1. System installed wxWidgets version (including development package)<br>
61
- <br>
60
+ 1. System installed wxWidgets version (including development package)<br/>
61
+ <br/>
62
62
  This is the default method used when installing the source gem without any options.<br>
63
63
  The wxRuby build procedure will determine the availability and version of wxWidgets by locating and calling
64
64
  the `wx-config` utility script. In case no (compatible) wxWidgets version is found installation ends with an error.<br>
65
65
  Please note that even with this method a copy of the wxWidgets project will be checked out from GitHUb as the wxRuby3
66
66
  build procedure requires access to the wxWidgets interface specification sources which are not normally part of any of
67
- the standard distribution packages.
68
-
69
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On MacOS, you can install wxWidgets via [Homebrew](https://brew.sh/):
70
-
71
- ```shell
67
+ the standard distribution packages.<br/>
68
+ <br/>
69
+ On MacOS, you can install wxWidgets via [Homebrew](https://brew.sh/):
70
+ ```shell
72
71
  brew install wxwidgets
73
- ```
74
-
75
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Afterwards, you can install the Ruby gem and it will detect wxWidgets in the system automatically:
76
-
77
- ```shell
72
+ ```
73
+ Afterwards, you can install the Ruby gem and it will detect wxWidgets in the system automatically:
74
+ ```shell
78
75
  gem install wxruby3
79
- ```
76
+ ```
80
77
 
81
78
  2. User installed wxWidgets version<br>
82
79
  <br>
83
80
  In case the system being installed on does not provide (a compatible) wxWidgets version or a specific (possibly updated)
84
81
  wxWidgets version is required the source gem can be installed using a user installed version like this (where the
85
82
  `WXWIN` path should provide the location where the wxWidgets binaries are installed under `<wxwin path>/bin`):<br>
86
-
87
- ```shell
83
+ ```shell
88
84
  gem install wxruby3 -- WXWIN=/path/to/wx/install
89
- ```
85
+ ```
90
86
 
91
87
  3. Automatic installed, embedded, wxWidgets version<br>
92
88
  <br>
93
89
  This is the easiest method when the system being installed on does not provide (a compatible) wxWidgets version (and
94
90
  no specific user defined version is required) and can be used by installing the source gem like this (which will
95
91
  cause automatic checkout and building of the latest stable wxWidgets release (>= 3.2) from GitHub:
96
-
97
- ```shell
92
+ ```shell
98
93
  gem install wxruby3 -- WITH_WXWIN=1
99
- ```
94
+ ```
100
95
 
101
96
  In case of option **2** it is also possible to do the doxygen XML generation as part of the wxWidgets user installation
102
97
  and use that for the gem installation. In that case the user is required to generate the XML interface specs using the
@@ -104,16 +99,27 @@ and use that for the gem installation. In that case the user is required to gene
104
99
  provided to the gem installation as follows:
105
100
 
106
101
  ```shell
107
- gem install wxruby3 -- WXWIN=/path/to/wx/install WXXML=/path/to/wx/doxygen/xml
102
+ gem install wxruby3 -- WXWIN=/path/to/wx/install WXXML=/path/to/wx/doxygen/xml
108
103
  ```
109
104
 
110
- Please also not that in case of option two the user is responsible to make sure the wxWidgets shared libraries can be
105
+ Please also not that in case of option **2** the user is responsible to make sure the wxWidgets shared libraries can be
111
106
  found by the system's dynamic loader at runtime.
112
107
 
113
108
  > **NOTE:** Be patient when installing the source gem. Building wxRuby3 takes a while and when wxWidgets is included event more.
114
109
 
115
110
  > **NOTE:** Be aware that for prerelease versions of the gem you should add the `--pre` argument to the `gem install` command.
116
111
 
112
+ ### Bundled CLI
113
+
114
+ Installing the wxRuby3 gem will also install the bundled `wxruby` CLI binary.
115
+
116
+ Currently this binary can be used to run the bundled regression tests and access (run or copy) the bundled examples.
117
+ Run the following command to see the options:
118
+
119
+ ```shell
120
+ wxruby --help
121
+ ```
122
+
117
123
  ## Building from source
118
124
 
119
125
  Checkout the wxRuby3 sources from [GitHub](https://github.com/mcorino/wxRuby3) or download and unpack a release package.
data/README.md CHANGED
@@ -96,11 +96,11 @@ of these products.
96
96
 
97
97
  Currently the following are fully supported:
98
98
 
99
- | Platform | Ruby version(s) | wxWidgets version(s) |
100
- |----------------------------------------------------------------------------|-----------------| --- |
101
- | Windows 10 (tested)<br>(most likely also Windows 11) | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2 |
102
- | Linux (tested; any AMD-64 distribution)<br>(most likely also i686 and ARM) | Ruby >= 2.5 | wxWidgets >= 3.2 |
103
- | MacOS >= 10.10 using Cocoa (tested on AMD-64 and ARM64 M2 Chip) | Ruby >= 2.5 | wxWidgets >= 3.2 |
99
+ | Platform | Ruby version(s) | wxWidgets version(s) |
100
+ |----------------------------------------------------------------------------|---------------------------------------------|----------------------|
101
+ | Windows 10 (tested)<br>(most likely also Windows 11) | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2 |
102
+ | Linux (tested; any AMD-64 distribution)<br>(most likely also i686 and ARM) | Ruby >= 2.5 | wxWidgets >= 3.2 |
103
+ | MacOS >= 10.10 using Cocoa (tested on AMD-64 and ARM64 M2 Chip) | Ruby >= 2.5 | wxWidgets >= 3.2 |
104
104
 
105
105
  Support for other platforms is not being actively developed at present,
106
106
  but patches are welcome. It is likely to be much simpler to get wxRuby
@@ -118,14 +118,16 @@ Installing the binary gem version on Windows requires no additional software to
118
118
  version of the Ruby interpreter.<br>
119
119
  To install the source-only gem the following software is required:
120
120
 
121
- | Sofware | Notes |
122
- |-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
123
- | Ruby | A supported version of the Ruby interpreter needs to be installed. |
124
- | C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed |
125
- | Git version control toolkit | |
126
- | SWIG >= 3.0.12 | On MacOS install [Homebrew](https://brew.sh/) and than `brew install swig` |
127
- | Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files.<br>On MacOS: `brew tap mcorino/wxruby3` and than `brew install doxygen@1.9.6` (default brew recipe installs 1.9.7) |
128
- | wxWidgets >= 3.2 (*OPTIONAL*) | On Linux most distributions provide system installable (development) packages for wxWidgets providing a supported version. Alternatively you can fairly easily install your own preferred version manually (see the [wxWidgets](https://wxwidgets.org) project for details).<br>On Windows and MacOS the process is less straightforward (also here see the [wxWidgets](https://wxwidgets.org) project for details).<br>The wxRuby3 source-only gem can also be installed using a private local wxWidgets installation or an embedded installation (most likely preferred on Windows and MacOS). See [INSTALL](INSTALL.md) for more details. |
121
+ | Sofware | Notes |
122
+ |-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
123
+ | Ruby | A supported version of the Ruby interpreter needs to be installed. |
124
+ | C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed |
125
+ | Git version control toolkit | |
126
+ | SWIG >= 3.0.12 | On MacOS install with Homebrew |
127
+ | Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files. |
128
+ | wxWidgets >= 3.2 (*OPTIONAL*) | On Linux most distributions provide system installable (development) packages for wxWidgets providing a supported version.<br>Alternatively you can fairly easily install your own preferred version manually. |
129
+
130
+ See the [INSTALL](INSTALL.md) document for more details.
129
131
 
130
132
  In case the prerequisites above are met the (source-only or binary) gem can be installed executing the following command:
131
133
 
@@ -154,7 +156,9 @@ distribution comes with numerous samples which illustrate how to use
154
156
  many specific parts of the API. A good one to start with is the
155
157
  'minimal' sample, which provides an application skeleton. All the
156
158
  bundled samples are expected to work with current wxRuby3, although
157
- some use a more modern coding style than others.
159
+ some use a more modern coding style than others. Use the bundled `wxruby`
160
+ CLI to access the samples (see the section **Bundled CLI** in
161
+ the [INSTALL](INSTALL.md) document for more details).
158
162
 
159
163
  Complete (more or less) wxRuby API documentation should be part of any
160
164
  complete wxRuby3 build. This tends to focus on providing a reference
@@ -213,4 +217,9 @@ this doesn't help, please post your question using GitHub Issues.
213
217
 
214
218
  ### Is there another, more declarative way, for writing wxRuby3 desktop GUI applications?
215
219
 
216
- Yes. [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) enables software engineers to build GUI using wxruby3 following the Ruby way with the least amount of code possible. That is by offering a minimalistic declarative high-level DSL that maps visually to the way software engineers think about the GUI hierarchy in addition to adopting Rails' strategy of Convention over Configuration via smart defaults and automation of wxruby3 low-level details. You can check out the [Glimmer DSL for WX README "Coming From wxruby3" section](https://github.com/AndyObtiva/glimmer-dsl-wx#coming-from-wxruby3) for more information on how to translate wxruby3 apps to [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) syntax.
220
+ Yes. [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) enables software engineers to build GUI
221
+ using wxruby3 following the Ruby way with the least amount of code possible. That is by offering a minimalistic
222
+ declarative high-level DSL that maps visually to the way software engineers think about the GUI hierarchy in addition
223
+ to adopting Rails' strategy of Convention over Configuration via smart defaults and automation of wxruby3 low-level
224
+ details. You can check out the [Glimmer DSL for WX README "Coming From wxruby3" section](https://github.com/AndyObtiva/glimmer-dsl-wx#coming-from-wxruby3) for more information on
225
+ how to translate wxruby3 apps to [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) syntax.
@@ -0,0 +1,48 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ /*
6
+ * WxRuby3 wxRubyClientData class
7
+ */
8
+
9
+ #ifndef _WXRUBY_CLIENT_DATA_H
10
+ #define _WXRUBY_CLIENT_DATA_H
11
+
12
+ #include <wx/clntdata.h>
13
+
14
+ class WXRUBY_EXPORT wxRubyClientData;
15
+
16
+ WXRUBY_EXPORT void wxRuby_RegisterClientData(wxRubyClientData* pcd);
17
+ WXRUBY_EXPORT void wxRuby_UnregisterClientData(wxRubyClientData* pcd);
18
+
19
+ class WXRUBY_EXPORT wxRubyClientData : public wxClientData
20
+ {
21
+ public:
22
+ wxRubyClientData() : rb_data(Qnil) { }
23
+ wxRubyClientData (VALUE data) : rb_data(data) { wxRuby_RegisterClientData(this); }
24
+ virtual ~wxRubyClientData () { wxRuby_UnregisterClientData(this); }
25
+ VALUE GetData() const { return rb_data; }
26
+ private:
27
+ VALUE rb_data;
28
+ };
29
+
30
+ class WXRUBY_EXPORT wxRubyUserData;
31
+
32
+ WXRUBY_EXPORT void wxRuby_RegisterUserData(wxRubyUserData* pud);
33
+ WXRUBY_EXPORT void wxRuby_UnregisterUserData(wxRubyUserData* pud);
34
+
35
+ class WXRUBY_EXPORT wxRubyUserData : public wxObject
36
+ {
37
+ public:
38
+ wxRubyUserData() : rb_data(Qnil) { }
39
+ wxRubyUserData (VALUE data) : rb_data(data) { wxRuby_RegisterUserData(this); }
40
+ virtual ~wxRubyUserData () { wxRuby_UnregisterUserData(this); }
41
+ VALUE GetData() const { return rb_data; }
42
+ private:
43
+ VALUE rb_data;
44
+
45
+ wxDECLARE_NO_COPY_CLASS(wxRubyUserData);
46
+ };
47
+
48
+ #endif /* _WXRUBY_CLIENT_DATA_H */
@@ -0,0 +1,39 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ /*
6
+ * WxRuby3 wxRubyValidator class
7
+ */
8
+
9
+ #ifndef _WXRUBY_VALIDATOR_H
10
+ #define _WXRUBY_VALIDATOR_H
11
+
12
+ #include "wxruby-ValidatorBinding.h"
13
+
14
+ class WXRUBY_EXPORT wxRubyValidator : public wxValidator, public wxRubyValidatorBinding
15
+ {
16
+ public:
17
+ wxRubyValidator ();
18
+ wxRubyValidator (const wxRubyValidator&);
19
+ virtual ~wxRubyValidator ();
20
+
21
+ virtual wxObject* Clone() const override;
22
+
23
+ virtual void SetWindow(wxWindow *win) override;
24
+
25
+ virtual bool TransferFromWindow () override;
26
+ virtual bool TransferToWindow () override;
27
+
28
+ protected:
29
+ static WxRuby_ID do_transfer_from_window_id;
30
+ static WxRuby_ID do_transfer_to_window_id;
31
+ static WxRuby_ID clone_id;
32
+
33
+ virtual VALUE DoTransferFromWindow();
34
+ virtual bool DoTransferToWindow(VALUE data);
35
+
36
+ virtual VALUE get_self() override;
37
+ };
38
+
39
+ #endif /* _WXRUBY_VALIDATOR_HASH_H */
@@ -0,0 +1,64 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ /*
6
+ * WxRuby3 wxRubyValidatorBinding class
7
+ */
8
+
9
+ #ifndef _WXRUBY_VALIDATOR_BINDING_H
10
+ #define _WXRUBY_VALIDATOR_BINDING_H
11
+
12
+ class WXRUBY_EXPORT wxRubyValidatorBinding
13
+ {
14
+ public:
15
+ wxRubyValidatorBinding ()
16
+ : self_(Qnil)
17
+ , on_transfer_from_win_proc_(Qnil)
18
+ , on_transfer_to_win_proc_(Qnil)
19
+ {}
20
+
21
+ void SetOnTransferFromWindow(VALUE proc)
22
+ {
23
+ this->on_transfer_from_win_proc_ = proc;
24
+ }
25
+ void SetOnTransferToWindow(VALUE proc)
26
+ {
27
+ this->on_transfer_to_win_proc_ = proc;
28
+ }
29
+
30
+ VALUE DoOnTransferToWindow();
31
+ bool DoOnTransferFromWindow(VALUE data);
32
+
33
+ bool OnTransferFromWindow(VALUE data);
34
+ VALUE OnTransferToWindow();
35
+
36
+ void GC_Mark()
37
+ {
38
+ rb_gc_mark(this->on_transfer_from_win_proc_);
39
+ rb_gc_mark(this->on_transfer_to_win_proc_);
40
+ }
41
+
42
+ protected:
43
+ static WxRuby_ID do_on_transfer_from_window_id;
44
+ static WxRuby_ID do_on_transfer_to_window_id;
45
+ static WxRuby_ID call_id;
46
+
47
+ wxRubyValidatorBinding (const wxRubyValidatorBinding& vb)
48
+ : self_(Qnil)
49
+ , on_transfer_from_win_proc_(vb.on_transfer_from_win_proc_)
50
+ , on_transfer_to_win_proc_(vb.on_transfer_to_win_proc_)
51
+ {}
52
+
53
+ void CopyBindings(const wxRubyValidatorBinding* val_bind);
54
+
55
+ virtual VALUE get_self() = 0;
56
+
57
+ VALUE self_;
58
+
59
+ private:
60
+ VALUE on_transfer_from_win_proc_;
61
+ VALUE on_transfer_to_win_proc_;
62
+ };
63
+
64
+ #endif /* #define _WXRUBY_VALIDATOR_BINDING_H */
@@ -195,6 +195,14 @@ namespace Swig {
195
195
  }
196
196
  };
197
197
 
198
+ /* wxRuby customization */
199
+ class WXRUBY_EXPORT DirectorRubyException : public DirectorException
200
+ {
201
+ public:
202
+ DirectorRubyException(VALUE error, VALUE rcvr, ID fn_id);
203
+
204
+ };
205
+
198
206
  /* Simple thread abstraction for pthreads on win32 */
199
207
  #ifdef __THREAD__
200
208
  # define __PTHREAD__
@@ -309,37 +309,4 @@ WXRUBY_EXPORT void GC_mark_wxFrame(void *ptr)
309
309
  std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
310
310
  #endif
311
311
  }
312
-
313
- // wxRuby must preserve ruby objects attached as the ClientData of
314
- // command events that have been user-defined in ruby. Some of the
315
- // standard wxWidgets CommandEvent classes (which have a constant event
316
- // id less than wxEVT_USER_FIRST, from wx/event.h) also use ClientData
317
- // for their own purposes, and this must not be marked as the data is
318
- // not a ruby object, and will thus crash.
319
- WXRUBY_EXPORT void GC_mark_wxEvent(void *ptr)
320
- {
321
- #ifdef __WXRB_DEBUG__
322
- if (wxRuby_TraceLevel()>1)
323
- std::wcout << "> GC_mark_wxEvent : " << ptr << std::endl;
324
- #endif
325
-
326
- if ( ! ptr ) return;
327
- wxEvent* wx_event = (wxEvent*)ptr;
328
- #ifdef __WXRB_DEBUG__
329
- if (wxRuby_TraceLevel()>2)
330
- std::wcout << "* GC_mark_wxEvent(" << ptr << ":{" << wx_event->GetEventType() << "})" << std::endl;
331
- #endif
332
- if ( wx_event->GetEventType() > wxEVT_USER_FIRST &&
333
- wx_event->IsCommandEvent() )
334
- {
335
- wxCommandEvent* wx_cm_event = (wxCommandEvent*)ptr;
336
- VALUE rb_client_data = (VALUE)wx_cm_event->GetClientData();
337
- rb_gc_mark(rb_client_data);
338
- }
339
-
340
- #ifdef __WXRB_DEBUG__
341
- if (wxRuby_TraceLevel()>1)
342
- std::wcout << "< GC_mark_wxEvent : " << ptr << std::endl;
343
- #endif
344
- }
345
312
  %}
@@ -8,32 +8,28 @@
8
8
 
9
9
  module Wx
10
10
 
11
- class BitmapCombobox < Wx::ComboBox
12
-
13
- # We need to cache client data in Ruby variables as we cannot access items
14
- # during the GC mark phase as for some platforms (WXMSW at least) that would
15
- # involve calling methods that would break in that phase.
11
+ class BitmapComboBox < Wx::ComboBox
16
12
 
17
13
  wx_append = instance_method :append
18
- define_method :append do |item, bitmap=Wx::NULL_BITMAP, data=nil|
19
- itm_pos = if data
20
- wx_append.bind(self).call(item, bitmap, data)
21
- else
22
- wx_append.bind(self).call(item, bitmap)
23
- end
24
- client_data_store.insert(itm_pos, data)
25
- itm_pos
14
+ define_method :append do |item, *rest| #bitmap=Wx::NULL_BITMAP, data=nil|
15
+ if ::Array === item
16
+ super(item, *rest)
17
+ elsif rest.empty? || Wx::Bitmap === rest.first
18
+ wx_append.bind(self).call(item, *rest)
19
+ else
20
+ super(item, *rest)
21
+ end
26
22
  end
27
23
 
28
24
  wx_insert = instance_method :insert
29
- define_method :insert do |item, bitmap, pos, data=nil|
30
- itm_pos = if data
31
- wx_insert.bind(self).call(item, bitmap, pos, data)
32
- else
33
- wx_insert.bind(self).call(item, bitmap, pos)
34
- end
35
- client_data_store.insert(itm_pos, data)
36
- itm_pos
25
+ define_method :insert do |item, *rest| # bitmap, pos, data=nil|
26
+ if ::Array === item
27
+ super(item, *rest)
28
+ elsif rest.empty? || Wx::Bitmap === rest.first
29
+ wx_insert.bind(self).call(item, *rest)
30
+ else
31
+ super(item, *rest)
32
+ end
37
33
  end
38
34
 
39
35
  end
@@ -8,7 +8,17 @@
8
8
 
9
9
  require_relative './controlwithitems'
10
10
 
11
- class Wx::ComboBox
12
- alias :get_item_data :get_client_data
13
- alias :set_item_data :set_client_data
11
+ module Wx
12
+
13
+ class ComboBox
14
+
15
+ # redefine #clear method to take care of client data and to call the proper #clear_items method
16
+ # (not the #clear method inherited from the TextEntry mixin)
17
+ wx_clear = instance_method :clear_items
18
+ define_method :clear do
19
+ wx_clear.bind(self).call
20
+ end
21
+
22
+ end
23
+
14
24
  end