wxruby3 0.9.2 → 0.9.4

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 (379) 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-Config.h +23 -5
  6. data/ext/wxruby3/include/wxruby-Persistence.h +79 -0
  7. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  8. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  9. data/ext/wxruby3/swig/custom/director.swg +8 -0
  10. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  11. data/ext/wxruby3/swig/memory_management.i +6 -0
  12. data/lib/wx/core/bitmap_combobox.rb +17 -21
  13. data/lib/wx/core/book_ctrl_base.rb +16 -0
  14. data/lib/wx/core/combobox.rb +13 -3
  15. data/lib/wx/core/config.rb +454 -83
  16. data/lib/wx/core/controlwithitems.rb +40 -130
  17. data/lib/wx/core/enum.rb +17 -1
  18. data/lib/wx/core/event.rb +6 -1
  19. data/lib/wx/core/evthandler.rb +8 -2
  20. data/lib/wx/core/generic_validator.rb +312 -0
  21. data/lib/wx/core/listbox.rb +2 -2
  22. data/lib/wx/core/log.rb +1 -1
  23. data/lib/wx/core/notebook.rb +10 -8
  24. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  25. data/lib/wx/core/peristent_object.rb +15 -0
  26. data/lib/wx/core/persistence_manager.rb +39 -0
  27. data/lib/wx/core/persistent_window.rb +16 -0
  28. data/lib/wx/core/size.rb +4 -0
  29. data/lib/wx/core/sizer.rb +1 -2
  30. data/lib/wx/core/standard_paths.rb +22 -0
  31. data/lib/wx/core/text_entry.rb +4 -1
  32. data/lib/wx/core/top_level_window.rb +16 -0
  33. data/lib/wx/core/treebook.rb +18 -0
  34. data/lib/wx/core/validator.rb +70 -5
  35. data/lib/wx/core/window.rb +3 -7
  36. data/lib/wx/core.rb +4 -0
  37. data/lib/wx/doc/art_locator.rb +1 -0
  38. data/lib/wx/doc/book_ctrl_base.rb +19 -0
  39. data/lib/wx/doc/comboctrl.rb +18 -0
  40. data/lib/wx/doc/config.rb +101 -41
  41. data/lib/wx/doc/controlwithitems.rb +16 -0
  42. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  43. data/lib/wx/doc/editable_listbox.rb +44 -0
  44. data/lib/wx/doc/enum.rb +15 -0
  45. data/lib/wx/doc/event.rb +12 -0
  46. data/lib/wx/doc/extra/12_client_data.md +89 -0
  47. data/lib/wx/doc/extra/13_validators.md +139 -0
  48. data/lib/wx/doc/extra/14_config.md +101 -0
  49. data/lib/wx/doc/extra/15_persistence.md +148 -0
  50. data/lib/wx/doc/gdi_common.rb +4 -0
  51. data/lib/wx/doc/generic_validator.rb +95 -0
  52. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  53. data/lib/wx/doc/num_validator.rb +387 -0
  54. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  55. data/lib/wx/doc/persistence_manager.rb +36 -0
  56. data/lib/wx/doc/persistent_object.rb +27 -0
  57. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  58. data/lib/wx/doc/static_bitmap.rb +25 -0
  59. data/lib/wx/doc/text_validator.rb +10 -0
  60. data/lib/wx/doc/top_level_window.rb +19 -0
  61. data/lib/wx/doc/treebook.rb +6 -1
  62. data/lib/wx/doc/validator.rb +113 -0
  63. data/lib/wx/doc/window.rb +30 -0
  64. data/lib/wx/html/simple_html_listbox.rb +24 -91
  65. data/lib/wx/keyword_defs.rb +34 -2
  66. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  67. data/lib/wx/version.rb +1 -1
  68. data/rakelib/build.rb +1 -1
  69. data/rakelib/lib/config/mingw.rb +12 -0
  70. data/rakelib/lib/core/include/client_data.inc +65 -0
  71. data/rakelib/lib/core/include/funcall.inc +1 -1
  72. data/rakelib/lib/core/package.rb +39 -3
  73. data/rakelib/lib/core/parameter.rb +1 -1
  74. data/rakelib/lib/core/spec.rb +10 -0
  75. data/rakelib/lib/core/spec_helper.rb +8 -2
  76. data/rakelib/lib/director/app.rb +18 -0
  77. data/rakelib/lib/director/app_traits.rb +3 -1
  78. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  79. data/rakelib/lib/director/combobox.rb +22 -0
  80. data/rakelib/lib/director/comboctrl.rb +1 -55
  81. data/rakelib/lib/director/config_base.rb +490 -19
  82. data/rakelib/lib/director/ctrl_with_items.rb +88 -21
  83. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  84. data/rakelib/lib/director/editable_listbox.rb +30 -0
  85. data/rakelib/lib/director/event.rb +102 -12
  86. data/rakelib/lib/director/event_filter.rb +1 -1
  87. data/rakelib/lib/director/event_handler.rb +3 -2
  88. data/rakelib/lib/director/event_loop.rb +1 -1
  89. data/rakelib/lib/director/file_dialog_customize_hook.rb +2 -2
  90. data/rakelib/lib/director/functions.rb +4 -2
  91. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  92. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  93. data/rakelib/lib/director/grid_cell_editor.rb +1 -3
  94. data/rakelib/lib/director/grid_cell_renderer.rb +1 -3
  95. data/rakelib/lib/director/header_ctrl.rb +9 -1
  96. data/rakelib/lib/director/html_listbox.rb +97 -22
  97. data/rakelib/lib/director/num_validator.rb +495 -0
  98. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  99. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  100. data/rakelib/lib/director/persistence_manager.rb +410 -0
  101. data/rakelib/lib/director/persistent_object.rb +70 -0
  102. data/rakelib/lib/director/persistent_window.rb +73 -0
  103. data/rakelib/lib/director/pgproperty.rb +3 -29
  104. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  105. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  106. data/rakelib/lib/director/sizer.rb +15 -4
  107. data/rakelib/lib/director/sizer_item.rb +13 -0
  108. data/rakelib/lib/director/static_bitmap.rb +32 -0
  109. data/rakelib/lib/director/text_entry.rb +5 -1
  110. data/rakelib/lib/director/text_validator.rb +124 -13
  111. data/rakelib/lib/director/toggle_button.rb +1 -0
  112. data/rakelib/lib/director/top_level_window.rb +0 -2
  113. data/rakelib/lib/director/tree_ctrl.rb +35 -0
  114. data/rakelib/lib/director/utils.rb +16 -2
  115. data/rakelib/lib/director/validator.rb +196 -21
  116. data/rakelib/lib/director/window.rb +16 -2
  117. data/rakelib/lib/extractor/function.rb +2 -1
  118. data/rakelib/lib/generate/analyzer.rb +44 -44
  119. data/rakelib/lib/generate/doc.rb +11 -5
  120. data/rakelib/lib/specs/interfaces.rb +5 -0
  121. data/rakelib/lib/swig_runner.rb +55 -9
  122. data/rakelib/lib/typemap/client_data.rb +67 -0
  123. data/rakelib/lib/typemap/common.rb +3 -3
  124. data/rakelib/lib/typemap/config.rb +8 -0
  125. data/rakelib/lib/typemap/datetime.rb +1 -1
  126. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  127. data/samples/aui/aui.rb +1237 -1233
  128. data/samples/calendar/calendar.rb +293 -289
  129. data/samples/controls/get_item_sample.rb +83 -79
  130. data/samples/controls/htlbox.rb +331 -327
  131. data/samples/dialogs/dialogs.rb +682 -694
  132. data/samples/dialogs/wizard.rb +52 -55
  133. data/samples/dragdrop/dragdrop.rb +146 -142
  134. data/samples/drawing/bitmap.rb +29 -26
  135. data/samples/drawing/bitmap_image.rb +84 -80
  136. data/samples/drawing/graphics_drawing.rb +209 -205
  137. data/samples/drawing/image_prt.rb +344 -340
  138. data/samples/drawing/maths_images.rb +18 -1
  139. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  140. data/samples/etc/caret.rb +306 -0
  141. data/samples/etc/miniframe.rb +65 -60
  142. data/samples/etc/sash.rb +109 -105
  143. data/samples/etc/scrollwin.rb +86 -80
  144. data/samples/etc/system_settings.rb +216 -209
  145. data/samples/event/activation.rb +72 -67
  146. data/samples/event/event.rb +160 -153
  147. data/samples/event/threaded.rb +8 -1
  148. data/samples/event/update_ui_event.rb +67 -60
  149. data/samples/grid/grid.rb +188 -181
  150. data/samples/grid/gridtablebase.rb +136 -129
  151. data/samples/html/html.rb +208 -204
  152. data/samples/mdi/mdi.rb +59 -54
  153. data/samples/minimal/minimal.rb +54 -51
  154. data/samples/minimal/nothing.rb +1 -0
  155. data/samples/printing/printing.rb +367 -377
  156. data/samples/printing/printing2.rb +203 -198
  157. data/samples/propgrid/propgrid.rb +2312 -2308
  158. data/samples/propgrid/propgrid_minimal.rb +57 -50
  159. data/samples/ribbon/ribbon.rb +780 -774
  160. data/samples/sampler/ext.rb +0 -33
  161. data/samples/sampler/sample.rb +4 -9
  162. data/samples/sampler.rb +1 -1
  163. data/samples/splash/splash.rb +118 -116
  164. data/samples/text/rich_textctrl.rb +207 -201
  165. data/samples/text/richtext.rb +1409 -1405
  166. data/samples/text/scintilla.rb +137 -128
  167. data/samples/text/textctrl.rb +89 -83
  168. data/samples/text/unicode.rb +175 -168
  169. data/samples/treectrl/treectrl.rb +1430 -1426
  170. data/samples/widgets/activityindicator.rb +95 -0
  171. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  172. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  173. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  174. data/samples/widgets/art/widgets/button.xpm +54 -0
  175. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  176. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  177. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  178. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  179. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  180. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  181. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  182. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  183. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  184. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  185. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  186. data/samples/widgets/art/widgets/header.xpm +54 -0
  187. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  188. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  189. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  190. data/samples/widgets/art/widgets/native.xpm +81 -0
  191. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  192. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  193. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  194. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  195. data/samples/widgets/art/widgets/slider.xpm +54 -0
  196. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  197. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  198. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  199. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  200. data/samples/widgets/art/widgets/text.xpm +54 -0
  201. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  202. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  203. data/samples/widgets/art/widgets/toucan.png +0 -0
  204. data/samples/widgets/bmpcombobox.rb +651 -0
  205. data/samples/widgets/button.rb +462 -0
  206. data/samples/widgets/checkbox.rb +211 -0
  207. data/samples/widgets/choice.rb +287 -0
  208. data/samples/widgets/clrpicker.rb +156 -0
  209. data/samples/widgets/combobox.rb +516 -0
  210. data/samples/widgets/datepick.rb +215 -0
  211. data/samples/widgets/dirctrl.rb +265 -0
  212. data/samples/widgets/dirpicker.rb +158 -0
  213. data/samples/widgets/editlbox.rb +122 -0
  214. data/samples/widgets/filectrl.rb +216 -0
  215. data/samples/widgets/filepicker.rb +214 -0
  216. data/samples/widgets/fontpicker.rb +135 -0
  217. data/samples/widgets/gauge.rb +311 -0
  218. data/samples/widgets/headerctrl.rb +236 -0
  219. data/samples/widgets/hyperlink.rb +203 -0
  220. data/samples/widgets/itemcontainer.rb +185 -0
  221. data/samples/widgets/listbox.rb +473 -0
  222. data/samples/widgets/notebook.rb +488 -0
  223. data/samples/widgets/odcombobox.rb +608 -0
  224. data/samples/widgets/radiobox.rb +328 -0
  225. data/samples/widgets/searchctrl.rb +159 -0
  226. data/samples/widgets/slider.rb +594 -0
  227. data/samples/widgets/spinbtn.rb +443 -0
  228. data/samples/widgets/statbmp.rb +130 -0
  229. data/samples/widgets/static.rb +436 -0
  230. data/samples/widgets/textctrl.rb +700 -0
  231. data/samples/widgets/timepick.rb +148 -0
  232. data/samples/widgets/tn_widgets.png +0 -0
  233. data/samples/widgets/toggle.rb +385 -0
  234. data/samples/widgets/widgets.rb +1229 -0
  235. data/samples/xrc/custom_xrc_sample.rb +47 -41
  236. data/samples/xrc/xrc_sample.rb +53 -47
  237. data/tests/test_config.rb +207 -42
  238. data/tests/test_event_handling.rb +52 -34
  239. data/tests/test_events.rb +7 -0
  240. data/tests/test_item_data.rb +24 -0
  241. data/tests/test_persistence.rb +142 -0
  242. data/tests/test_sizer.rb +44 -1
  243. data/tests/test_validators.rb +805 -0
  244. metadata +109 -138
  245. data/lib/wx/core/choice.rb +0 -14
  246. data/lib/wx/core/combo_ctrl.rb +0 -110
  247. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  248. data/samples/bigdemo/About.rbw +0 -39
  249. data/samples/bigdemo/ColorPanel.rbw +0 -23
  250. data/samples/bigdemo/GridSimple.rbw +0 -78
  251. data/samples/bigdemo/MDIDemo.rbw +0 -57
  252. data/samples/bigdemo/PopupMenu.rbw +0 -146
  253. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  254. data/samples/bigdemo/Sizers.rbw +0 -541
  255. data/samples/bigdemo/bigdemo.rb +0 -817
  256. data/samples/bigdemo/demoTemplate.rbw +0 -33
  257. data/samples/bigdemo/helpfile.htb +0 -0
  258. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  259. data/samples/bigdemo/icons/Test 015.png +0 -0
  260. data/samples/bigdemo/icons/choice.bmp +0 -0
  261. data/samples/bigdemo/icons/combo.bmp +0 -0
  262. data/samples/bigdemo/icons/combo.xpm +0 -27
  263. data/samples/bigdemo/icons/copy.xpm +0 -25
  264. data/samples/bigdemo/icons/cut.xpm +0 -24
  265. data/samples/bigdemo/icons/gauge.bmp +0 -0
  266. data/samples/bigdemo/icons/gauge.xpm +0 -27
  267. data/samples/bigdemo/icons/help.xpm +0 -25
  268. data/samples/bigdemo/icons/list.bmp +0 -0
  269. data/samples/bigdemo/icons/list.xpm +0 -27
  270. data/samples/bigdemo/icons/mondrian.ico +0 -0
  271. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  272. data/samples/bigdemo/icons/new.xpm +0 -24
  273. data/samples/bigdemo/icons/ogl.ico +0 -0
  274. data/samples/bigdemo/icons/ogl.xpm +0 -45
  275. data/samples/bigdemo/icons/open.xpm +0 -26
  276. data/samples/bigdemo/icons/paste.bmp +0 -0
  277. data/samples/bigdemo/icons/paste.xpm +0 -38
  278. data/samples/bigdemo/icons/pointy.png +0 -0
  279. data/samples/bigdemo/icons/preview.xpm +0 -26
  280. data/samples/bigdemo/icons/print.xpm +0 -26
  281. data/samples/bigdemo/icons/radio.bmp +0 -0
  282. data/samples/bigdemo/icons/radio.xpm +0 -27
  283. data/samples/bigdemo/icons/robert.xpm +0 -415
  284. data/samples/bigdemo/icons/sashtest.ico +0 -0
  285. data/samples/bigdemo/icons/save.xpm +0 -25
  286. data/samples/bigdemo/icons/smiles.bmp +0 -0
  287. data/samples/bigdemo/icons/smiles.xpm +0 -39
  288. data/samples/bigdemo/icons/smiley.ico +0 -0
  289. data/samples/bigdemo/icons/smiley.xpm +0 -42
  290. data/samples/bigdemo/icons/stattext.xpm +0 -24
  291. data/samples/bigdemo/icons/test2.bmp +0 -0
  292. data/samples/bigdemo/icons/test2.png +0 -0
  293. data/samples/bigdemo/icons/test2.xpm +0 -79
  294. data/samples/bigdemo/icons/text.bmp +0 -0
  295. data/samples/bigdemo/icons/text.xpm +0 -27
  296. data/samples/bigdemo/icons/tog1.bmp +0 -0
  297. data/samples/bigdemo/icons/tog1.xpm +0 -38
  298. data/samples/bigdemo/icons/tog2.bmp +0 -0
  299. data/samples/bigdemo/icons/tog2.xpm +0 -38
  300. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  301. data/samples/bigdemo/icons/wxwin.ico +0 -0
  302. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  303. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  304. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  305. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  306. data/samples/bigdemo/run.rb +0 -98
  307. data/samples/bigdemo/tips.txt +0 -7
  308. data/samples/bigdemo/utils.rb +0 -20
  309. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  310. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  311. data/samples/bigdemo/wxButton.rbw +0 -64
  312. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  313. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  314. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  315. data/samples/bigdemo/wxChoice.rbw +0 -47
  316. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  317. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  318. data/samples/bigdemo/wxComboBox.rbw +0 -77
  319. data/samples/bigdemo/wxCursor.rbw +0 -136
  320. data/samples/bigdemo/wxDialog.rbw +0 -74
  321. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  322. data/samples/bigdemo/wxDragImage.rbw +0 -70
  323. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  324. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  325. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  326. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  327. data/samples/bigdemo/wxFrame.rbw +0 -53
  328. data/samples/bigdemo/wxGauge.rbw +0 -65
  329. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  330. data/samples/bigdemo/wxGrid.rbw +0 -66
  331. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  332. data/samples/bigdemo/wxListBox.rbw +0 -140
  333. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  334. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  335. data/samples/bigdemo/wxMenu.rbw +0 -247
  336. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  337. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  338. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  339. data/samples/bigdemo/wxNotebook.rbw +0 -136
  340. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  341. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  342. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  343. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  344. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  345. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  346. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  347. data/samples/bigdemo/wxSlider.rbw +0 -42
  348. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  349. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  350. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  351. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  352. data/samples/bigdemo/wxStaticText.rbw +0 -55
  353. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  354. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  355. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  356. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  357. data/samples/bigdemo/wxToolBar.rbw +0 -131
  358. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  359. data/samples/caret/caret.rb +0 -298
  360. data/samples/caret/mondrian.xpm +0 -44
  361. data/samples/controls/books.rb +0 -189
  362. data/samples/controls/choice.xpm +0 -27
  363. data/samples/controls/combo.xpm +0 -27
  364. data/samples/controls/controls.rb +0 -1099
  365. data/samples/controls/gauge.xpm +0 -27
  366. data/samples/controls/list.xpm +0 -27
  367. data/samples/controls/mondrian.ico +0 -0
  368. data/samples/controls/mondrian.xpm +0 -44
  369. data/samples/controls/radio.xpm +0 -27
  370. data/samples/controls/stattext.xpm +0 -24
  371. data/samples/controls/test2.bmp +0 -0
  372. data/samples/controls/text.xpm +0 -27
  373. data/samples/controls/tn_books.png +0 -0
  374. data/samples/controls/tn_controls.png +0 -0
  375. data/samples/etc/choice.rb +0 -87
  376. data/samples/etc/tn_choice.png +0 -0
  377. data/samples/text/mondrian.ico +0 -0
  378. data/samples/text/mondrian.xpm +0 -44
  379. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -66,8 +66,6 @@ module WXRuby3
66
66
  __CODE
67
67
  end
68
68
  spec.ignore [
69
- 'wxWindow::TransferDataFromWindow',
70
- 'wxWindow::TransferDataToWindow',
71
69
  'wxWindow::PopEventHandler',
72
70
  'wxWindow::SetConstraints',
73
71
  'wxWindow::GetHandle',
@@ -81,6 +79,9 @@ module WXRuby3
81
79
  'wxWindow::SendIdleEvents',
82
80
  'wxWindow::ClientToScreen(int*,int*)', # no need; prefer the wxPoint version
83
81
  'wxWindow::ScreenToClient(int*,int*)', # no need; prefer the wxPoint version
82
+ # provide (non-virtual) renamed alternatives (prevent Ruby keyword/standard clash)
83
+ 'wxWindow::Raise',
84
+ 'wxWindow::Lower'
84
85
  ]
85
86
  # no real docs and can't find actual examples of usage; ignore
86
87
  spec.ignore 'wxWindow::GetConstraints', 'wxWindow::SetConstraints'
@@ -91,6 +92,15 @@ module WXRuby3
91
92
  map_check code: ''
92
93
  end
93
94
  spec.add_extend_code 'wxWindow', <<~__HEREDOC
95
+ void raise_window()
96
+ {
97
+ $self->Raise();
98
+ }
99
+ void lower_window()
100
+ {
101
+ $self->Lower();
102
+ }
103
+
94
104
  static wxWindow* find_window_by_id(long id, const wxWindow *find_from_parent=0)
95
105
  {
96
106
  return wxWindow::FindWindowById(id, find_from_parent);
@@ -269,9 +279,13 @@ module WXRuby3
269
279
  "#{spec.class_name(citem)}::SetAcceleratorTable",
270
280
  "#{spec.class_name(citem)}::SetBackgroundColour",
271
281
  "#{spec.class_name(citem)}::SetBackgroundStyle",
282
+ "#{spec.class_name(citem)}::HasTransparentBackground",
272
283
  "#{spec.class_name(citem)}::SetCursor",
273
284
  "#{spec.class_name(citem)}::SetFocus",
274
285
  "#{spec.class_name(citem)}::SetFocusFromKbd",
286
+ "#{spec.class_name(citem)}::AcceptsFocus",
287
+ "#{spec.class_name(citem)}::AcceptsFocusRecursively",
288
+ "#{spec.class_name(citem)}::AcceptsFocusFromKeyboard",
275
289
  "#{spec.class_name(citem)}::SetFont",
276
290
  "#{spec.class_name(citem)}::SetForegroundColour",
277
291
  "#{spec.class_name(citem)}::SetHelpText",
@@ -95,8 +95,9 @@ module WXRuby3
95
95
  params_doc.unlink if params_doc
96
96
  # get brief doc
97
97
  doc = xml_trans.to_doc(@brief_doc, item: self)
98
+ doc << "\n" if @detailed_doc # force empty line (paragraph break) between summary and detail
98
99
  # add detailed doc text without params doc
99
- doc << xml_trans.to_doc(@detailed_doc, item: self, desc: :detail)
100
+ doc << xml_trans.to_doc(@detailed_doc, item: self, desc: :detail) if @detailed_doc
100
101
  # get mapped ruby parameter list
101
102
  params = []
102
103
  mapped_ret_args = nil
@@ -366,7 +366,7 @@ module WXRuby3
366
366
  type_list = [type]
367
367
  type_list << "#{enum_scope}::#{type.split('::').pop}" unless enum_scope.empty?
368
368
  rb_enum_name = if !enum_scope.empty?
369
- "#{enum_scope}::#{rb_wx_name(type.split('::').pop)}"
369
+ "#{rb_wx_name(enum_scope)}::#{rb_wx_name(type.split('::').pop)}"
370
370
  else
371
371
  rb_wx_name(type)
372
372
  end
@@ -540,53 +540,53 @@ module WXRuby3
540
540
  # check the preprocessed definitions
541
541
  errors = []
542
542
  warnings = []
543
- def_items.each do |item|
544
- if Extractor::ClassDef === item && !item_ignored(item, doc_gen) &&
543
+ # select eligible ClassDef
544
+ cls_items = def_items.select do |item|
545
+ Extractor::ClassDef === item && !item_ignored(item, doc_gen) &&
545
546
  (!item.is_template? || template_as_class?(item.name)) &&
546
547
  !is_folded_base?(item.name)
547
- intf_class_name = if item.is_template? || template_as_class?(item.name)
548
- template_class_name(item.name)
549
- else
550
- item.name
551
- end
552
- # this should not happen
553
- raise "Missing preprocessed data for class #{intf_class_name}" unless has_class_interface(intf_class_name)
554
- # get the class's method registry
555
- cls_mtdreg = class_interface_methods(intf_class_name)
556
- # check all directly inherited generated methods
557
- mtdlist = ::Set.new # remember handled signatures
558
- base_list(item).each do |base_name|
559
- # get 'real' base name (i.e. take renames into account)
560
- base_name = ifspec.classdef_name(base_name)
561
- # make sure the base class has been preprocessed
562
- get_class_interface(package, base_name, doc_gen) unless has_class_interface(base_name)
563
- # generate any required enum typemaps for inherited virtuals
564
- gen_base_class_enum_typemaps(base_name, enum_maps)
565
- # iterate the base class's method registrations
566
- class_interface_methods(base_name).each_pair do |mtdsig, mtdreg|
567
- # only check on methods we have not handled yet
568
- if !mtdlist.include?(mtdsig)
569
- # did we inherit a virtual method that was not proxied in the base
570
- if mtdreg[:virtual] && !mtdreg[:proxy]
571
- # # if we did NOT generate a wrapper override and we do not have the proxy suppressed we're in trouble
572
- # if !cls_mtdreg.has_key?(mtdsig) && has_method_proxy?(item.name, mtdreg[:method])
573
- # warnings << "* WARNING: disabling proxy for virtual method #{mtdreg[:method].signature} without wrapper implementation in class #{item.name} since it is NOT proxied in base class #{base_name}!"
574
- # els
575
- if cls_mtdreg.has_key?(mtdsig) && !cls_mtdreg[mtdsig][:extension] && !has_method_proxy?(item.name, cls_mtdreg[mtdsig][:method])
576
- # if this is not a custom extension and we do have an override wrapper and no proxy this is unnecessary code bloat
577
- warnings << " * WARNING: Unnecessary override #{mtdreg[:method].signature} in class #{item.name} for non-proxied base in #{base_name}. Ignoring."
578
- cls_mtdreg[mtdsig][:ignore] = true
579
- end
580
- # or did we inherit a virtual method that was proxied in the base
581
- # for which we DO generate a wrapper override
582
- elsif mtdreg[:virtual] && mtdreg[:proxy] && cls_mtdreg.has_key?(mtdsig)
583
- # if we do not have a proxy as well we're in trouble
584
- if !has_method_proxy?(item, mtdreg[:method])
585
- errors << "* ERROR: method #{mtdreg[:method].signature} is NOT proxied with an overriden wrapper implementation in class #{item.name} but is also implemented and proxied in base class #{base_name}!"
586
- end
548
+ end
549
+ cls_items.each do |item|
550
+ intf_class_name = if item.is_template? || template_as_class?(item.name)
551
+ template_class_name(item.name)
552
+ else
553
+ item.name
554
+ end
555
+ # this should not happen
556
+ raise "Missing preprocessed data for class #{intf_class_name}" unless has_class_interface(intf_class_name)
557
+ # get the class's method registry
558
+ cls_mtdreg = class_interface_methods(intf_class_name)
559
+ # check all directly inherited generated methods
560
+ mtdlist = ::Set.new # remember handled signatures
561
+ base_list(item).each do |base_name|
562
+ # make sure the base class has been preprocessed
563
+ get_class_interface(package, base_name, doc_gen) unless has_class_interface(base_name)
564
+ # generate any required enum typemaps for inherited virtuals
565
+ gen_base_class_enum_typemaps(base_name, enum_maps)
566
+ # iterate the base class's method registrations
567
+ class_interface_methods(base_name).each_pair do |mtdsig, mtdreg|
568
+ # only check on methods we have not handled yet
569
+ if !mtdlist.include?(mtdsig)
570
+ # did we inherit a virtual method that was not proxied in the base
571
+ if mtdreg[:virtual] && !mtdreg[:proxy]
572
+ # # if we did NOT generate a wrapper override and we do not have the proxy suppressed we're in trouble
573
+ # if !cls_mtdreg.has_key?(mtdsig) && has_method_proxy?(item.name, mtdreg[:method])
574
+ # warnings << "* WARNING: disabling proxy for virtual method #{mtdreg[:method].signature} without wrapper implementation in class #{item.name} since it is NOT proxied in base class #{base_name}!"
575
+ # els
576
+ if cls_mtdreg.has_key?(mtdsig) && !cls_mtdreg[mtdsig][:extension] && !has_method_proxy?(item.name, cls_mtdreg[mtdsig][:method])
577
+ # if this is not a custom extension and we do have an override wrapper and no proxy this is unnecessary code bloat
578
+ warnings << " * WARNING: Unnecessary override #{mtdreg[:method].signature} in class #{item.name} for non-proxied base in #{base_name}. Ignoring."
579
+ cls_mtdreg[mtdsig][:ignore] = true
580
+ end
581
+ # or did we inherit a virtual method that was proxied in the base
582
+ # for which we DO generate a wrapper override
583
+ elsif mtdreg[:virtual] && mtdreg[:proxy] && cls_mtdreg.has_key?(mtdsig)
584
+ # if we do not have a proxy as well we're in trouble
585
+ if !has_method_proxy?(item, mtdreg[:method])
586
+ errors << "* ERROR: method #{mtdreg[:method].signature} is NOT proxied with an overriden wrapper implementation in class #{item.name} but is also implemented and proxied in base class #{base_name}!"
587
587
  end
588
- mtdlist << mtdsig
589
588
  end
589
+ mtdlist << mtdsig
590
590
  end
591
591
  end
592
592
  end
@@ -253,7 +253,7 @@ module WXRuby3
253
253
  <div class="wxrb-remark">
254
254
  <b>Remark:</b>
255
255
  <p>#{node_to_doc(node)}</p>
256
- </div>>
256
+ </div>
257
257
  __NOTE
258
258
  else
259
259
  node_to_doc(node)
@@ -480,7 +480,7 @@ module WXRuby3
480
480
  /\A\s*Include\s+file:/ # Include file note
481
481
  ''
482
482
  else
483
- para.sub!(/Include\s+file:\s+\#include\s+\<[^>]+\>\s*\Z/, '')
483
+ para.sub!(/Include\s+file:\s+\\?#include\s+<[^>]+> */, '')
484
484
  if event_section?
485
485
  case para
486
486
  when /The following event handler macros redirect.*(\{.*})/
@@ -861,6 +861,7 @@ module WXRuby3
861
861
 
862
862
  def get_class_doc(cls)
863
863
  doc = @xml_trans.to_doc(cls.brief_doc, item: cls)
864
+ doc << "\n" if cls.detailed_doc # force empty line (paragraph break) between summary and detail
864
865
  doc << @xml_trans.to_doc(cls.detailed_doc, item: cls, desc: :detail) if cls.detailed_doc
865
866
  doc
866
867
  end
@@ -900,6 +901,8 @@ module WXRuby3
900
901
  fdoc.doc.indent { gen_item_requirements(fdoc, ovl) }
901
902
  end
902
903
  fdoc.puts "def #{name}(*args) end"
904
+ # in case all overloads were ignored there will be no SWIG generated alias
905
+ no_gen_alias = docs.all? { |ovl, _, _| ovl.ignored }
903
906
  else
904
907
  mtd, params, doc = docs.shift
905
908
  fdoc.doc.puts doc
@@ -909,9 +912,11 @@ module WXRuby3
909
912
  else
910
913
  fdoc.puts "def #{name}(#{params}) end"
911
914
  end
915
+ # in case the documented method was ignored there will be no SWIG generated alias
916
+ no_gen_alias = mtd.ignored
912
917
  end
913
- # check for SWIG generated aliases
914
- if alias_methods.has_key?(cm.name)
918
+ # check for SWIG generated aliases (skip ignored method defs as these will not have SWIG generated aliases)
919
+ if !no_gen_alias && alias_methods.has_key?(cm.name)
915
920
  fdoc.puts "alias_method :#{alias_methods[cm.name]}, :#{name}"
916
921
  else
917
922
  # check for aliases that will be available from WxRubyStyleAccessors at runtime
@@ -920,7 +925,8 @@ module WXRuby3
920
925
  when /\Aget_(\w+)/
921
926
  $1
922
927
  when /\Aset_(\w+)/
923
- if mtd_head.all.any? { |ovl| ovl.parameter_count > 0 && ovl.required_param_count < 2 }
928
+ # only document alias if at least 1 method overload has a single required argument
929
+ if docs.any? { |ovl, _, _| ovl.parameter_count > 0 && ovl.required_param_count < 2 }
924
930
  "#{$1}="
925
931
  else
926
932
  nil
@@ -56,6 +56,7 @@ module WXRuby3
56
56
  Director.Spec(pkg, 'wxCaret')
57
57
  Director.Spec(pkg, 'wxValidator', requirements: %[USE_VALIDATORS])
58
58
  Director.Spec(pkg, 'wxTextValidator', requirements: %[USE_VALIDATORS])
59
+ Director.Spec(pkg, 'wxNumValidator', requirements: %[USE_VALIDATORS])
59
60
  Director.Spec(pkg, 'wxAccelerator', requirements: %w[USE_ACCEL])
60
61
  Director.Spec(pkg, 'wxMenuItem', requirements: %w[USE_MENUS])
61
62
  Director.Spec(pkg, 'wxMenuBar', requirements: %w[USE_MENUBAR])
@@ -80,6 +81,7 @@ module WXRuby3
80
81
  Director.Spec(pkg, 'wxComboBox', requirements: %w[USE_COMBOBOX])
81
82
  Director.Spec(pkg, 'wxBitmapComboBox', requirements: %w[USE_BITMAPCOMBOBOX])
82
83
  Director.Spec(pkg, 'wxComboCtrl', requirements: %w[USE_COMBOCTRL])
84
+ Director.Spec(pkg, 'wxOwnerDrawnComboBox', requirements: %w[USE_ODCOMBOBOX ])
83
85
  Director.Spec(pkg, 'wxRadioBox', requirements: %w[USE_RADIOBOX])
84
86
  Director.Spec(pkg, 'wxPanel')
85
87
  Director.Spec(pkg, 'wxWithImages')
@@ -228,6 +230,9 @@ module WXRuby3
228
230
  Director.Spec(pkg, 'wxFileSystem', requirements: %w[USE_FILESYSTEM])
229
231
  Director.Spec(pkg, 'wxDialUpManager', requirements: %w[USE_DIALUP_MANAGER])
230
232
  Director.Spec(pkg, 'wxDialUpEvent', requirements: %w[USE_DIALUP_MANAGER])
233
+ Director.Spec(pkg, 'wxPersistenceManager', requirements: %w[USE_CONFIG])
234
+ Director.Spec(pkg, 'wxPersistentObject', requirements: %w[USE_CONFIG])
235
+ Director.Spec(pkg, 'wxPersistentWindow', requirements: %w[USE_CONFIG])
231
236
  }
232
237
 
233
238
  Director.Package('Wx::PRT', 'USE_PRINTING_ARCHITECTURE') do |pkg|
@@ -404,29 +404,63 @@ module WXRuby3
404
404
  dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| cd.name }.join('|')
405
405
  # create regexp for Director constructors (may not exist if no proxies are enabled)
406
406
  dir_ctor_re = /SwigDirector_\w+::SwigDirector_\w+\(.*\)\s*:\s*(#{dir_cls_re_txt})\(.*\)\s*,\s*Swig::Director.*{/
407
+ # create regexp for method wrappers other than 'initialize' wrappers
408
+ wrap_mtd_re = /_wrap_(#{cls_re_txt})_(\w+)\(.*\)/
407
409
  end
408
410
  found_new = false
409
411
  cpp_class = nil
410
412
  cpp_new_re = nil
413
+ found_wrap_mtd = false
414
+ wrap_mtd_name = nil
415
+ wrap_mtd_upcall_re = nil
411
416
  update_source do |line|
412
417
  if found_new # inside 'initialize' wrapper?
413
418
  if cpp_new_re =~ line # at C++ allocation of class instance?
414
- # replace with the registered implementation class
415
- line.sub!(/new\s+#{cpp_class}\(/, "new #{class_implementation(cpp_class)}(")
416
- found_new = false # only 1 line will match per wrapper function so stop matching
419
+ if $1 # director allocation for derived class
420
+ # in case of copy ctor replace type of argument
421
+ # for director copy ctor
422
+ line.sub!(/\((\w+),\s*\(#{cpp_class}\s+const\s+\&\)/, "(\\1,(#{class_implementation(cpp_class)} const &)")
423
+ else # allocation for actual class
424
+ # replace with the registered implementation class
425
+ line.sub!(/new\s+#{cpp_class}\(/, "new #{class_implementation(cpp_class)}(")
426
+ # in case of copy ctor also replace type of argument
427
+ # for class copy ctor
428
+ line.sub!(/\(\(#{cpp_class}\s+const\s+\&\)/, "((#{class_implementation(cpp_class)} const &)")
429
+ end
417
430
  elsif /\A}/ =~ line # end of wrapper function?
418
431
  # stop matching (in case of overloads there will be one matching wrapper function
419
432
  # that does no actual allocation but just acts as a front for the overload wrappers)
420
433
  found_new = false
421
434
  end
435
+ elsif found_wrap_mtd
436
+ if wrap_mtd_upcall_re =~ line # at upcall for possibly proxied wrapper?
437
+ line.gsub!(cpp_class, class_implementation(cpp_class))
438
+ # if the upcall does not yet cast the receiver instance to the correct implementation class
439
+ if /\((\w+)\)->/ =~ line
440
+ # add required cast
441
+ line.sub!(/\((\w+)\)->/, "((#{class_implementation(cpp_class)} *)\\1)->")
442
+ end
443
+ found_wrap_mtd = false # upcall found
444
+ elsif /\A}/ =~ line
445
+ found_wrap_mtd = false # end of wrapper method
446
+ end
422
447
  elsif new_re =~ line # are we at an 'initialize' wrapper?
423
448
  found_new = true
424
449
  cpp_class = $1
425
- cpp_new_re = /new\s+#{cpp_class}\(.*\)/ # regexp for C++ new expression for this specific class
426
- elsif proxies_enabled && dir_ctor_re =~ line # at director ctor?
427
- # replace base class name by implementation name
428
- cpp_class = $1
429
- line.sub!(/:\s*#{cpp_class}\(/, ": #{class_implementation(cpp_class)}(")
450
+ cpp_new_re = /new\s+(SwigDirector_)?#{cpp_class}\(.*\)/ # regexp for C++ new expression for this specific class
451
+ elsif proxies_enabled
452
+ if dir_ctor_re =~ line # at director ctor?
453
+ # replace base class name by implementation name
454
+ cpp_class = $1
455
+ line.sub!(/:\s*#{cpp_class}\(/, ": #{class_implementation(cpp_class)}(")
456
+ # in case of copy ctor also replace type of argument
457
+ line.sub!(/\(VALUE\s+self,\s*#{cpp_class}\s+const\s+\&(\w+)\)/, "(VALUE self, #{class_implementation(cpp_class)} const &\\1)")
458
+ elsif wrap_mtd_re =~ line # at wrapper method other than 'initialize' wrapper
459
+ cpp_class = $1
460
+ wrap_mtd_name = $2
461
+ wrap_mtd_upcall_re = /-\>#{cpp_class}::#{wrap_mtd_name}\(/
462
+ found_wrap_mtd = true
463
+ end
430
464
  end
431
465
  line
432
466
  end
@@ -435,11 +469,23 @@ module WXRuby3
435
469
  # if so, we also need to update the header code (Director class declaration)
436
470
  # create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
437
471
  dir_re = /class\s+SwigDirector_\w+\s*:\s*public\s+(#{dir_cls_re_txt})\s*,\s*public\s+Swig::Director\s*{/
472
+ found_dir = false
473
+ copy_ctor_re = nil
438
474
  update_header do |line|
439
- if dir_re =~ line # at Director class declaration?
475
+ if found_dir
476
+ if copy_ctor_re =~ line
477
+ # replace copy ctor arg type
478
+ arg = $1
479
+ line.sub!(/#{cpp_class}\s+const\s+&#{arg}/, "#{class_implementation(cpp_class)} const &#{arg}")
480
+ elsif /\A};/ =~ line
481
+ found_dir = false
482
+ end
483
+ elsif dir_re =~ line # at Director class declaration?
440
484
  # replace base class name by implementation name
441
485
  cpp_class = $1
442
486
  line.sub!(/public\s+#{cpp_class}/, "public #{class_implementation(cpp_class)}")
487
+ copy_ctor_re = /SwigDirector_#{cpp_class}\(VALUE\s+self,\s*#{cpp_class}\s+const\s+&(\w+)\);/
488
+ found_dir = true
443
489
  end
444
490
  line
445
491
  end
@@ -0,0 +1,67 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 client data typemap definition
7
+ ###
8
+
9
+ require_relative '../core/mapping'
10
+
11
+ module WXRuby3
12
+
13
+ module Typemap
14
+
15
+ module ClientData
16
+
17
+ include Typemap::Module
18
+
19
+ define do
20
+
21
+ map 'wxClientData *' => 'Object' do
22
+ add_header_code <<~__CODE
23
+ #include "wxruby-ClientData.h"
24
+ __CODE
25
+ map_in code: '$1 = NIL_P($input) ? nullptr : new wxRubyClientData($input);'
26
+ map_out code: <<~__CODE
27
+ $result = Qnil;
28
+ if ($1)
29
+ {
30
+ wxRubyClientData* rbcd = dynamic_cast<wxRubyClientData*> ($1);
31
+ if (rbcd) $result = rbcd->GetData();
32
+ }
33
+ __CODE
34
+
35
+ map_typecheck precedence: 'POINTER', code: '$1 = true;'
36
+ end
37
+
38
+ map 'wxObject *userData' => 'Object' do
39
+ add_header_code <<~__CODE
40
+ #include "wxruby-ClientData.h"
41
+ __CODE
42
+ map_in code: '$1 = NIL_P($input) ? nullptr : new wxRubyUserData($input);'
43
+
44
+ map_typecheck precedence: 'POINTER', code: '$1 = true;'
45
+ end
46
+
47
+ # WxUserDataObject must be typedef for wxObject*
48
+ map 'WxUserDataObject' => 'Object' do
49
+
50
+ map_out code: <<~__CODE
51
+ $result = Qnil;
52
+ if ($1)
53
+ {
54
+ wxRubyUserData* rbud = dynamic_cast<wxRubyUserData*> ($1);
55
+ if (rbud) $result = rbud->GetData();
56
+ }
57
+ __CODE
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+
67
+ end
@@ -211,7 +211,8 @@ module WXRuby3
211
211
 
212
212
  map 'wxSize&' => 'Array(Integer, Integer), Wx::Size',
213
213
  'wxPoint&' => 'Array(Integer, Integer), Wx::Point' do
214
- map_in code: <<~__CODE
214
+ add_header_code '#include <memory>'
215
+ map_in temp: 'std::unique_ptr<$1_basetype> tmp', code: <<~__CODE
215
216
  if ( TYPE($input) == T_DATA )
216
217
  {
217
218
  void* argp$argnum;
@@ -222,8 +223,7 @@ module WXRuby3
222
223
  {
223
224
  $1 = new $1_basetype( NUM2INT( rb_ary_entry($input, 0) ),
224
225
  NUM2INT( rb_ary_entry($input, 1) ) );
225
- // Create a ruby object so the C++ obj is freed when GC runs
226
- SWIG_NewPointerObj($1, $1_descriptor, 1);
226
+ tmp.reset($1); // auto destruct when method scope ends
227
227
  }
228
228
  else
229
229
  {
@@ -44,6 +44,14 @@ module WXRuby3
44
44
  $input = wxRuby_ConfigBase2Ruby($1);
45
45
  __CODE
46
46
 
47
+ map_out code: <<~__CODE
48
+ $result = wxRuby_ConfigBase2Ruby($1);
49
+ __CODE
50
+
51
+ map_directorout code: <<~__CODE
52
+ $result = wxRuby_Ruby2ConfigBase($1);
53
+ __CODE
54
+
47
55
  end
48
56
 
49
57
  end
@@ -42,7 +42,7 @@ module WXRuby3
42
42
  map_directorin code: '$input = wxRuby_wxDateTimeToRuby($1);'
43
43
 
44
44
  map_typecheck precedence: 'SWIGOBJECT', code: <<~__CODE
45
- $1 = rb_obj_is_kind_of($input, rb_cTime) || rb_respond_to($input, rb_intern ("to_time"));
45
+ $1 = NIL_P($input) || rb_obj_is_kind_of($input, rb_cTime) || rb_respond_to($input, rb_intern ("to_time"));
46
46
  __CODE
47
47
  end
48
48
 
@@ -50,7 +50,7 @@ module WXRuby3
50
50
 
51
51
  map_in temp: 'wxTreeItemId tmpId', code: <<~__CODE
52
52
  if ($input != Qnil) tmpId = _wxRuby_Unwrap_wxTreeItemId($input);
53
- $1 = &tmpId;
53
+ $1 = tmpId;
54
54
  __CODE
55
55
 
56
56
  map_directorin code: '$input = _wxRuby_Wrap_wxTreeItemId($1);'
@@ -59,7 +59,7 @@ module WXRuby3
59
59
 
60
60
  map_directorout temp: 'wxTreeItemId tmpId', code: <<~__CODE
61
61
  if ($input != Qnil) tmpId = _wxRuby_Unwrap_wxTreeItemId($input);
62
- $result = &tmpId;
62
+ $result = tmpId;
63
63
  __CODE
64
64
 
65
65
  map_typecheck precedence: 'POINTER', code: '$1 = _wxRuby_Is_wxTreeItemId($input);'