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
@@ -0,0 +1,113 @@
1
+ # :stopdoc:
2
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
3
+ #
4
+ # This software is released under the MIT license.
5
+ # :startdoc:
6
+
7
+
8
+ module Wx
9
+
10
+ class Validator < EvtHandler
11
+
12
+ # @overload initialize()
13
+ # Constructor.
14
+ # @return [Wx::Validator]
15
+ # @overload initialize(other)
16
+ # Copy constructor.
17
+ # @param [Wx::Validator] other
18
+ # @return [Wx::Validator]
19
+ def initialize(*arg) end
20
+
21
+ # Method called when transferring data from window.
22
+ # Should retrieve and return the data from the associated window (#get_window).
23
+ # By default returns nil (which indicates there is no custom data to transfer).
24
+ # Overload for customized functionality.
25
+ # @return [Object] retrieved data from window
26
+ def do_transfer_from_window; end
27
+ protected :do_transfer_from_window
28
+
29
+ # Method called when transferring data to window.
30
+ # Should transfer the given data to the associated window and return true if successful.
31
+ # By default does nothing and just returns true.
32
+ # Overload for customized functionality.
33
+ # @param [Object] data
34
+ # @return [Boolean]
35
+ def do_transfer_to_window(data) end
36
+ protected :do_transfer_to_window
37
+
38
+ # Mixin module providing data binding options for validators.
39
+ module Binding
40
+
41
+ # Installs a callback handler to capture the data retrieved from the associated window.
42
+ # The callback handler can be specified as a (name of a) method, a Proc or a block.
43
+ #
44
+ # @example This can be used to implement data binding like:
45
+ # class MyValidator < Wx::Validator
46
+ # def initialize(data_store)
47
+ # @data_store = data_store
48
+ # self.on_transfer_from_window :store_data
49
+ # self.on_transfer_to_window :load_data
50
+ # end
51
+ # protected
52
+ # def store_data(data)
53
+ # @data_store.save_the_data(data)
54
+ # end
55
+ # def load_data
56
+ # @data_store.get_the_data
57
+ # end
58
+ # end
59
+ # val = MyValidator.new(a_data_store)
60
+ # win.set_validator(val)
61
+ #
62
+ # @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc; to be supplied when no block is given
63
+ # @yieldparam [Object] data the data retrieved from the window
64
+ def on_transfer_from_window(meth=nil, &block) end
65
+
66
+ # Installs a callback handler to provide the data to transfer to the associated window.
67
+ # The callback handler can be specified as a (name of a) method, a Proc or a block.
68
+ #
69
+ # @example This can be used to implement data binding like:
70
+ # class MyValidator < Wx::Validator
71
+ # def initialize(data_store)
72
+ # @data_store = data_store
73
+ # self.on_transfer_from_window :store_data
74
+ # self.on_transfer_to_window :load_data
75
+ # end
76
+ # protected
77
+ # def store_data(data)
78
+ # @data_store.save_the_data(data)
79
+ # end
80
+ # def load_data
81
+ # @data_store.get_the_data
82
+ # end
83
+ # end
84
+ # val = MyValidator.new(a_data_store)
85
+ # win.set_validator(val)
86
+ #
87
+ # @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc; to be supplied when no block is given
88
+ # @yieldreturn [Object] the data to transfer to the window
89
+ def on_transfer_to_window(meth=nil, &block) end
90
+
91
+ # Method called with data transferred from window.
92
+ # By default will call the on_transfer_from_window handler if defined.
93
+ # Returns true if successful or none defined.
94
+ # @param [Object] data
95
+ # @return [Boolean]
96
+ def do_on_transfer_from_window(data) end
97
+ protected :do_on_transfer_from_window
98
+
99
+ # Method called to get data to transfer to window.
100
+ # By default will call the on_transfer_to_window handler if defined.
101
+ # Returns the handler's result if successful.
102
+ # Otherwise returns nil.
103
+ # @return [Object]
104
+ def do_on_transfer_to_window; end
105
+ protected :do_on_transfer_to_window
106
+
107
+ end
108
+
109
+ include Binding
110
+
111
+ end
112
+
113
+ end
data/lib/wx/doc/window.rb CHANGED
@@ -9,6 +9,36 @@ module Wx
9
9
 
10
10
  class Window
11
11
 
12
+ # Lowers the window to the bottom of the window hierarchy (Z-order).
13
+ # This method has been renamed in wxRuby to be consistent with the renamed #raise_window method.
14
+ #
15
+ # <div class="wxrb-remark">
16
+ # <b>Remark:</b>
17
+ # <p>This function only works for {Wx::TopLevelWindow}-derived classes.
18
+ # </p>
19
+ # </div>
20
+ # @see Wx::Window#raise_window
21
+ # @return [void]
22
+ def lower_window; end
23
+ alias :send_to_back :lower_window
24
+
25
+ # Raises the window to the top of the window hierarchy (Z-order).
26
+ # This method has been renamed in wxRuby to avoid clashing with the standard Kernel#raise method.
27
+ #
28
+ # Notice that this function only requests the window manager to raise this window to the top of Z-order. Depending
29
+ # on its configuration, the window manager may raise the window, not do it at all or indicate that a window
30
+ # requested to be raised in some other way, e.g. by flashing its icon if it is minimized.
31
+ #
32
+ # <div class="wxrb-remark">
33
+ # <b>Remark:</b>
34
+ # <p>This function only works for {Wx::TopLevelWindow}-derived classes.
35
+ # </p>
36
+ # </div>
37
+ # @see Wx::Window#lower_window
38
+ # @return [void]
39
+ def raise_window; end
40
+ alias :bring_to_front :raise_window
41
+
12
42
  # Creates an appropriate (temporary) DC to paint on and
13
43
  # passes that to the given block. Deletes the DC when the block returns.
14
44
  # Creates a Wx::PaintDC when called from an evt_paint handler and a
@@ -4,105 +4,38 @@
4
4
 
5
5
  class Wx::HTML::SimpleHtmlListBox
6
6
 
7
- # Make this a Ruby enumerable so find, find_all, map etc are available
8
- include Enumerable
9
-
10
- # Passes each valid item index into the passed block
11
- def each
12
- get_count.times { | i | yield i }
13
- end
14
-
15
- # We need to cache client data in Ruby variables as we cannot access items
16
- # during the GC mark phase as for some platforms (WXMSW at least) that would
17
- # involve calling methods that would break in that phase.
18
-
19
- def client_data_store
20
- @client_data ||= []
21
- end
22
- private :client_data_store
23
-
24
- wx_set_client_data = instance_method :set_client_data
25
- define_method :set_client_data do |item, data|
26
- item = item.to_i
27
- wx_set_client_data.bind(self).call(item, data)
28
- client_data_store[item] = data
29
- end
30
-
31
- def get_client_data(item)
32
- client_data_store[item.to_i]
33
- end
34
-
35
- wx_append = instance_method :append
36
- define_method :append do |item, data=nil|
37
- if data
38
- if ::Array === item
39
- if !(::Array === data)
40
- ::Kernel.raise ::TypeError.new("Expected Array for argument 3")
41
- elsif data.size != item.size
42
- ::Kernel.raise ::ArgumentError.new("item and data array must be equal size")
43
- end
44
- offs = get_count
45
- wx_append.bind(self).call(item)
46
- item.size.times { |ix| set_client_data(offs+ix, data[ix]) }
47
- else
48
- wx_append.bind(self).call(item, data)
49
- client_data_store[get_count-1] = data
50
- end
7
+ # make sure to honor the inherited common overloads
8
+ wx_get_client_object = instance_method :get_client_object
9
+ define_method :get_client_object do |*args|
10
+ if args.empty?
11
+ super()
51
12
  else
52
- wx_append.bind(self).call(item)
53
- # no changes to data store
13
+ wx_get_client_object.bind(self).call(*args)
54
14
  end
55
15
  end
56
-
57
- wx_insert = instance_method :insert
58
- define_method :insert do |item, pos, data=nil|
59
- if data
60
- if ::Array === item
61
- if !(::Array === data)
62
- ::Kernel.raise ::TypeError.new("Expected Array for argument 3")
63
- elsif data.size != item.size
64
- ::Kernel.raise ::ArgumentError.new("item and data array must be equal size")
65
- end
66
- wx_insert.bind(self).call(item, pos)
67
- client_data_store.insert(pos, *::Array.new(item.size))
68
- item.size.times { |ix| set_client_data(pos+ix, data[ix]) }
69
- else
70
- wx_insert.bind(self).call(item, pos, data)
71
- client_data_store.insert(pos, data)
72
- end
16
+ wx_set_client_object = instance_method :set_client_object
17
+ define_method :set_client_object do |*args|
18
+ if args.size < 2
19
+ super(*args)
73
20
  else
74
- wx_insert.bind(self).call(item, pos)
75
- if ::Array === item
76
- client_data_store.insert(pos, *::Array.new(item.size))
77
- else
78
- client_data_store.insert(pos, nil)
79
- end
21
+ wx_set_client_object.bind(self).call(*args)
80
22
  end
81
23
  end
24
+ # redefine aliases
25
+ alias :client_object :get_client_object
26
+ alias :client_object= :set_client_object
82
27
 
83
- wx_set = instance_method :set
84
- define_method :set do |items, data=nil|
85
- if data
86
- if !(::Array === data)
87
- ::Kernel.raise ::TypeError.new("Expected Array for argument 2")
88
- elsif data.size != items.size
89
- ::Kernel.raise ::ArgumentError.new("items and data array must be equal size")
90
- end
91
- end
92
- wx_set.bind(self).call(items)
93
- client_data_store.clear
94
- items.each_with_index { |item, ix| set_client_data(item, data[ix]) }
95
- end
28
+ alias :get_client_data :get_client_object
29
+ alias :set_client_data :set_client_object
96
30
 
97
- wx_clear = instance_method :clear
98
- define_method :clear do
99
- wx_clear.bind(self).call
100
- client_data_store.clear
31
+ # Overload to provide Enumerator without block
32
+ wx_each_string = instance_method :each_string
33
+ define_method :each_string do |&block|
34
+ if block
35
+ wx_each_string.bind(self).call(&block)
36
+ else
37
+ ::Enumerator.new { |y| wx_each_string.bind(self).call { |ln| y << ln } }
38
+ end
101
39
  end
102
40
 
103
- wx_delete = instance_method :delete
104
- define_method :delete do |item|
105
- wx_delete.bind(self).call(item.to_i)
106
- client_data_store.slice!(item.to_i)
107
- end
108
41
  end
@@ -290,7 +290,12 @@ end
290
290
  # A button which stays pressed when clicked by user.
291
291
  Wx::define_keyword_ctors(Wx::ToggleButton) do
292
292
  wx_ctor_params :id, :label, :pos, :size, :style
293
- wx_ctor_params :validator, :name => 'checkBox'
293
+ wx_ctor_params :validator, :name => 'toggleButton'
294
+ end
295
+
296
+ Wx::define_keyword_ctors(Wx::BitmapToggleButton) do
297
+ wx_ctor_params :id, :label, :pos, :size, :style
298
+ wx_ctor_params :validator, :name => 'bitmapToggleButton'
294
299
  end
295
300
 
296
301
  # Control showing an entire calendar month
@@ -320,6 +325,12 @@ Wx::define_keyword_ctors(Wx::CheckListBox) do
320
325
  wx_ctor_params :validator, :name => 'listBox'
321
326
  end
322
327
 
328
+ # wxEditableListBox - an editable listbox is composite control that lets the user easily enter, delete and reorder a list of strings.
329
+ Wx::define_keyword_ctors(Wx::EditableListBox) do
330
+ wx_ctor_params :id, :label, :pos, :size, :style => Wx::EL_DEFAULT_STYLE
331
+ wx_ctor_params :name => 'editableListBox'
332
+ end
333
+
323
334
  # wxChoice Choice control (a combobox without the editable area)
324
335
  Wx::define_keyword_ctors(Wx::Choice) do
325
336
  wx_ctor_params :id, :pos, :size, :choices, :style
@@ -349,6 +360,14 @@ Wx::define_keyword_ctors(Wx::ComboCtrl) do
349
360
  wx_ctor_params :validator, :name => 'comboCtrl'
350
361
  end
351
362
 
363
+ # wxOwnerDrawnComboBox
364
+ Wx::define_keyword_ctors(Wx::OwnerDrawnComboBox) do
365
+ wx_ctor_params :id, :value => ''
366
+ wx_ctor_params :pos, :size, :choices => []
367
+ wx_ctor_params :style
368
+ wx_ctor_params :validator, :name => 'ownerDrawnComboBox'
369
+ end
370
+
352
371
  # wxGauge A control to represent a varying quantity, such as time
353
372
  # remaining
354
373
  Wx::define_keyword_ctors(Wx::Gauge) do
@@ -421,9 +440,16 @@ Wx::define_keyword_ctors(Wx::StaticBitmap) do
421
440
  wx_ctor_params :id
422
441
  # autoconvert Bitmaps to BitmapBundles for downward compatibility
423
442
  wx_ctor_params :label
424
- wx_ctor_params :pos, :size, :style, :name => Wx::StaticBitmapNameStr
443
+ wx_ctor_params :pos, :size, :style, :name => Wx::STATIC_BITMAP_NAME_STR
425
444
  end
426
445
 
446
+ # wxGenericStaticBitmap A control to display a bitmap
447
+ Wx::define_keyword_ctors(Wx::GenericStaticBitmap) do
448
+ wx_ctor_params :id
449
+ # autoconvert Bitmaps to BitmapBundles for downward compatibility
450
+ wx_ctor_params :label
451
+ wx_ctor_params :pos, :size, :style, :name => Wx::STATIC_BITMAP_NAME_STR
452
+ end
427
453
 
428
454
  # wxRadioBox A group of radio buttons
429
455
  Wx::define_keyword_ctors(Wx::RadioBox) do
@@ -582,3 +608,9 @@ Wx::define_keyword_ctors(Wx::RearrangeCtrl) do
582
608
  wx_ctor_params :id, :pos, :size, :order, :items, :style
583
609
  wx_ctor_params :validator, :name => 'rearrangeCtrl'
584
610
  end
611
+
612
+ Wx::define_keyword_ctors(Wx::HeaderCtrlSimple) do
613
+ wx_ctor_params :winid => Wx::ID_ANY
614
+ wx_ctor_params :pos, :size, :style => Wx::HD_DEFAULT_STYLE
615
+ wx_ctor_params :name => 'headerCtrlSimple'
616
+ end
@@ -4,27 +4,6 @@
4
4
 
5
5
  class Wx::RBN::RibbonGallery
6
6
 
7
- def item_client_data_store
8
- @item_client_data ||= {}
9
- end
10
- private :item_client_data_store
11
-
12
- def set_item_client_data(item, data)
13
- item_client_data_store[item] = data
14
- end
15
-
16
- def get_item_client_data(item)
17
- item_client_data_store[item]
18
- end
19
- alias :item_client_data :get_item_client_data
20
-
21
- wx_append = instance_method :append
22
- define_method :append do |bmp, item_id, data=nil|
23
- item = wx_append.bind(self).call(bmp, item_id)
24
- set_item_client_data(item, data) if item && data
25
- item
26
- end
27
-
28
7
  def items
29
8
  if block_given?
30
9
  count.times { |i| yield item(i) }
data/lib/wx/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # This software is released under the MIT license.
4
4
 
5
5
  module Wx
6
- WXRUBY_VERSION = '0.9.2'
6
+ WXRUBY_VERSION = '0.9.4'
7
7
  end
data/rakelib/build.rb CHANGED
@@ -48,7 +48,7 @@ if WXRuby3.is_bootstrapped?
48
48
  end
49
49
 
50
50
  # The main source module - which needs to initialize all the other modules in the package
51
- file pkg.initializer_src => pkg.all_swig_files do |t|
51
+ file pkg.initializer_src => (pkg.all_swig_files + (pkg.parent ? [pkg.parent.initializer_src] : [])) do |t|
52
52
  pkg.generate_initializer
53
53
  end
54
54
 
@@ -53,6 +53,18 @@ module WXRuby3
53
53
  "{#{dll_ext},dll}"
54
54
  end
55
55
 
56
+ def do_link(pkg)
57
+ # have to use option file for objects to link on windows because command line gets too long
58
+ ftmp = Tempfile.new('object')
59
+ ftmp.puts pkg.all_obj_files.collect { |o| File.join('..', o) }.join(' ')
60
+ ftmp.close # close but do not unlink
61
+ objs = "@#{ftmp.path}"
62
+ depsh = pkg.dep_libnames.collect { |dl| "#{dl}.#{dll_ext}" }.join(' ')
63
+ sh "cd lib && #{WXRuby3.config.ld} #{WXRuby3.config.ldflags(pkg.lib_target)} #{objs} #{depsh} " +
64
+ "#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.lib_target}"
65
+ ftmp.unlink # cleanup
66
+ end
67
+
56
68
  private
57
69
 
58
70
  def wx_make
@@ -0,0 +1,65 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ #ifndef WXRUBY_EXPORT
6
+ #define WXRUBY_EXPORT WXRB_EXPORT_FLAG
7
+ #endif
8
+
9
+ #include "wxruby-ClientData.h"
10
+
11
+ #include <set>
12
+
13
+ static std::set<wxRubyClientData*> __s_WxRubyClientDataSet;
14
+ static std::set<wxRubyUserData*> __s_WxRubyUserDataSet;
15
+
16
+ WXRB_EXPORT_FLAG void wxRuby_RegisterClientData(wxRubyClientData* pcd)
17
+ {
18
+ __s_WxRubyClientDataSet.insert(pcd);
19
+ }
20
+
21
+ WXRB_EXPORT_FLAG void wxRuby_RegisterUserData(wxRubyUserData* pud)
22
+ {
23
+ __s_WxRubyUserDataSet.insert(pud);
24
+ }
25
+
26
+ static ID client_data_unlinked_id()
27
+ {
28
+ static ID __s_client_data_unlinked_id {};
29
+ if (__s_client_data_unlinked_id == ID())
30
+ {
31
+ __s_client_data_unlinked_id = rb_intern("client_data_unlinked");
32
+ }
33
+ return __s_client_data_unlinked_id;
34
+ }
35
+
36
+ WXRB_EXPORT_FLAG void wxRuby_UnregisterClientData(wxRubyClientData* pcd)
37
+ {
38
+ VALUE rbcd = pcd->GetData();
39
+ __s_WxRubyClientDataSet.erase(pcd);
40
+ if (!NIL_P(rbcd) && rb_respond_to(rbcd, client_data_unlinked_id()))
41
+ {
42
+ wxRuby_Funcall(rbcd, client_data_unlinked_id(), 0);
43
+ }
44
+ }
45
+
46
+ WXRB_EXPORT_FLAG void wxRuby_UnregisterUserData(wxRubyUserData* pud)
47
+ {
48
+ VALUE rbud = pud->GetData();
49
+ __s_WxRubyUserDataSet.erase(pud);
50
+ if (!NIL_P(rbud) && rb_respond_to(rbud, client_data_unlinked_id()))
51
+ {
52
+ wxRuby_Funcall(rbud, client_data_unlinked_id(), 0);
53
+ }
54
+ }
55
+
56
+ static void wxRuby_GC_mark_ClientData()
57
+ {
58
+ for (wxRubyClientData* pcd : __s_WxRubyClientDataSet)
59
+ rb_gc_mark(pcd->GetData());
60
+ for (wxRubyUserData* pud : __s_WxRubyUserDataSet)
61
+ rb_gc_mark(pud->GetData());
62
+ }
63
+
64
+ typedef void (*WXRBMarkFunction)();
65
+ WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker);
@@ -16,7 +16,7 @@ VALUE rb_get_backtrace(VALUE);
16
16
 
17
17
  namespace Swig
18
18
  {
19
- class DirectorRubyException : public DirectorException
19
+ class WXRB_EXPORT_FLAG DirectorRubyException : public DirectorException
20
20
  {
21
21
  public:
22
22
  DirectorRubyException(VALUE error, VALUE rcvr, ID fn_id)
@@ -6,6 +6,8 @@
6
6
  # wxRuby3 extension library Package class
7
7
  ###
8
8
 
9
+ require 'monitor'
10
+
9
11
  module WXRuby3
10
12
 
11
13
  class Director
@@ -327,6 +329,7 @@ module WXRuby3
327
329
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigdirector.inc'))
328
330
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'funcall.inc'))
329
331
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'enum.inc'))
332
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'client_data.inc'))
330
333
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'init.inc'))
331
334
  fsrc.puts
332
335
  end
@@ -361,6 +364,9 @@ module WXRuby3
361
364
  Config.instance.features.each do |feature, val|
362
365
  fsrc.puts %Q{rb_define_const(mWxSetup, "#{feature}", Q#{val});}
363
366
  end
367
+ fsrc.puts
368
+ # install wxRubyClientData marker
369
+ fsrc.puts %Q{wxRuby_AppendMarker(wxRuby_GC_mark_ClientData);}
364
370
  else
365
371
  fsrc.puts %Q{#{module_variable} = rb_define_module_under(wxRuby_Core(), "#{name}");}
366
372
  # record package submodule in main module's list
@@ -408,7 +414,11 @@ module WXRuby3
408
414
  item.event_types.each do |evt_hnd, evt_type, evt_arity, evt_klass, _|
409
415
  evh_name = evt_hnd.downcase
410
416
  unless evts_handled.include?(evh_name)
411
- evt_klass ||= item.name
417
+ evt_klass ||= if item.event
418
+ item.name
419
+ else
420
+ raise "Don't know Event class for #{evh_name} event type (from #{item.name})"
421
+ end
412
422
  fout.puts ' '+<<~__HEREDOC.split("\n").join("\n ")
413
423
  self.register_event_type EventType[
414
424
  '#{evh_name}', #{evt_arity},
@@ -421,7 +431,34 @@ module WXRuby3
421
431
  end
422
432
  end
423
433
 
434
+ class << self
435
+ # need to share these over all packages since events may be defined in multiple
436
+ def generated_events
437
+ @generated_events ||= ::Set.new
438
+ end
439
+
440
+ def event_list_packages
441
+ unless @event_list_packages
442
+ @event_list_packages = ::Set.new
443
+ @event_list_packages.extend(MonitorMixin)
444
+ end
445
+ @event_list_packages
446
+ end
447
+ end
448
+
424
449
  def generate_event_list
450
+ # make sure parent package has already generated event list
451
+ Package.event_list_packages.synchronize do
452
+ if parent && !Package.event_list_packages.include?(parent)
453
+ # make sure all included director modules have been extracted
454
+ parent.included_directors.each do |dir|
455
+ dir.extract_interface(false) # no need to generate anything here
456
+ end
457
+ parent.generate_event_list
458
+ end
459
+ end
460
+ # list ourselves as generated
461
+ Package.event_list_packages << self
425
462
  # determine Ruby library events root for package
426
463
  rbevt_root = File.join(ruby_classes_path, 'events')
427
464
  # create event list file
@@ -436,7 +473,7 @@ module WXRuby3
436
473
 
437
474
  class Wx::EvtHandler
438
475
  __HEREDOC
439
- evts_handled = ::Set.new
476
+ evts_handled = self.class.generated_events
440
477
  # first iterate all event classes
441
478
  command_event = nil # special case
442
479
  included_directors.each do |dir|
@@ -468,7 +505,6 @@ module WXRuby3
468
505
  fout.puts 'end'
469
506
  end
470
507
  end
471
- private :generate_event_list
472
508
 
473
509
  def find_event_doc(evh_name)
474
510
  unless doc = event_docs[evh_name]
@@ -12,7 +12,7 @@ module WXRuby3
12
12
 
13
13
  # represents a basic parameter definition
14
14
  class ParameterBase
15
- PTR_RE = /\A(\*|&)\s*([_a-zA-Z]\w*)?\Z/
15
+ PTR_RE = /\A([\*&]+)\s*([_a-zA-Z]\w*)?\Z/
16
16
  CONST_RE = /(\A|\W)const(\W|\Z)/
17
17
  MULTI_WORD_TYPES = %w[char short int long]
18
18
  def initialize(param)
@@ -272,6 +272,16 @@ module WXRuby3
272
272
  self
273
273
  end
274
274
 
275
+ def gc_as_marked(*names)
276
+ if names.empty?
277
+ @gc_type = :GC_MANAGE_AS_MARKED
278
+ else
279
+ @gc_type = ::Hash.new unless @gc_type.is_a?(::Hash)
280
+ names.flatten.each {|n| @gc_type[n] = :GC_MANAGE_AS_MARKED }
281
+ end
282
+ self
283
+ end
284
+
275
285
  def gc_type(name)
276
286
  @gc_type.is_a?(::Hash) ? @gc_type[name] : @gc_type
277
287
  end
@@ -121,7 +121,7 @@ module WXRuby3
121
121
 
122
122
  def get_base_module_list(hierarchy, foldedbases, list = ::Set.new)
123
123
  hierarchy.each_value do |super_def|
124
- list << super_def.module unless foldedbases.include?(super_def.name)
124
+ list << super_def.module unless foldedbases.include?(super_def.name) || super_def.module == module_name
125
125
  get_base_module_list(super_def.supers, folded_bases(super_def.name), list)
126
126
  end
127
127
  list
@@ -382,7 +382,13 @@ module WXRuby3
382
382
 
383
383
  def interface_code
384
384
  if ifspec.interface_code && !ifspec.interface_code.empty?
385
- ifspec.interface_code.join("\n")
385
+ if warn_filters.empty?
386
+ ''
387
+ else
388
+ "\n" + warn_filters.collect do |warn, decls|
389
+ decls.collect { |decl| "%warnfilter(#{warn}) #{decl};" }
390
+ end.flatten.join("\n")
391
+ end + ifspec.interface_code.join("\n")
386
392
  else
387
393
  %Q{%include "#{interface_include}"\n}
388
394
  end
@@ -189,6 +189,24 @@ module WXRuby3
189
189
  __HEREDOC
190
190
  super
191
191
  end
192
+
193
+ def process(gendoc: false)
194
+ defmod = super
195
+ # fix documentation errors for generic dirctrl events
196
+ def_item = defmod.find_item('wxApp')
197
+ if def_item
198
+ def_item.event_types.each do |evt_spec|
199
+ case evt_spec.first
200
+ when 'EVT_DIALUP_CONNECTED', 'EVT_DIALUP_DISCONNECTED'
201
+ if evt_spec[3].nil?
202
+ evt_spec[3] = 'wxDialUpEvent' # missing from docs
203
+ end
204
+ end
205
+ end
206
+ end
207
+ defmod
208
+ end
209
+
192
210
  end
193
211
 
194
212
  end # class Director
@@ -15,7 +15,9 @@ module WXRuby3
15
15
  def setup
16
16
  super
17
17
  spec.items << 'wxStandardPaths'
18
- spec.gc_as_object 'wxAppTraits', 'wxStandardPaths'
18
+ spec.gc_as_object 'wxAppTraits'
19
+ # stack based global; tracking unwanted
20
+ spec.gc_as_untracked 'wxStandardPaths'
19
21
  spec.no_proxy 'wxAppTraits', 'wxStandardPaths'
20
22
  spec.make_abstract 'wxAppTraits'
21
23
 
@@ -24,8 +24,8 @@ module WXRuby3
24
24
  wxWindow
25
25
  wxEvtHandler
26
26
  wxObject])
27
- spec.ignore 'wxBitmapComboBox::Insert(const wxString &, const wxBitmap &, unsigned int, wxClientData *)',
28
- 'wxBitmapComboBox::Append(const wxString &, const wxBitmap &, wxClientData *)'
27
+ spec.ignore 'wxBitmapComboBox::Insert(const wxString &, const wxBitmap &, unsigned int, void *)',
28
+ 'wxBitmapComboBox::Append(const wxString &, const wxBitmap &, void *)'
29
29
  spec.map_apply 'long * OUTPUT' => [ 'long *from', 'long *to' ]
30
30
  end
31
31