wxruby3 0.9.1 → 0.9.3

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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/INSTALL.md +35 -29
  4. data/README.md +24 -15
  5. data/ext/wxruby3/include/wxRubyApp.h +338 -0
  6. data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
  7. data/ext/wxruby3/include/wxruby-Config.h +6 -6
  8. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  9. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  10. data/ext/wxruby3/swig/common.i +1 -1
  11. data/ext/wxruby3/swig/custom/director.swg +8 -0
  12. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  13. data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
  14. data/lib/wx/aui/auinotebook.rb +6 -2
  15. data/lib/wx/aui/require.rb +1 -0
  16. data/lib/wx/core/app.rb +2 -2
  17. data/lib/wx/core/bitmap_combobox.rb +17 -21
  18. data/lib/wx/core/collapsible_pane.rb +1 -1
  19. data/lib/wx/core/combobox.rb +13 -3
  20. data/lib/wx/core/controlwithitems.rb +40 -128
  21. data/lib/wx/core/enum.rb +17 -1
  22. data/lib/wx/core/event.rb +6 -1
  23. data/lib/wx/core/evthandler.rb +8 -2
  24. data/lib/wx/core/generic_validator.rb +312 -0
  25. data/lib/wx/core/listbox.rb +2 -2
  26. data/lib/wx/core/log.rb +1 -1
  27. data/lib/wx/core/menu.rb +10 -0
  28. data/lib/wx/core/notebook.rb +6 -2
  29. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  30. data/lib/wx/core/size.rb +4 -0
  31. data/lib/wx/core/sizer.rb +12 -2
  32. data/lib/wx/core/standard_paths.rb +22 -0
  33. data/lib/wx/core/task_bar_button.rb +19 -0
  34. data/lib/wx/core/text_entry.rb +4 -1
  35. data/lib/wx/core/textctrl.rb +11 -1
  36. data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
  37. data/lib/wx/core/validator.rb +70 -5
  38. data/lib/wx/core/window.rb +13 -7
  39. data/lib/wx/doc/app.rb +48 -38
  40. data/lib/wx/doc/art_locator.rb +48 -43
  41. data/lib/wx/doc/aui/auimanager.rb +16 -8
  42. data/lib/wx/doc/aui/auinotebook.rb +20 -5
  43. data/lib/wx/doc/clipboard.rb +11 -7
  44. data/lib/wx/doc/colour_dialog.rb +14 -10
  45. data/lib/wx/doc/comboctrl.rb +18 -0
  46. data/lib/wx/doc/controlwithitems.rb +34 -8
  47. data/lib/wx/doc/data_object.rb +2 -2
  48. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  49. data/lib/wx/doc/editable_listbox.rb +44 -0
  50. data/lib/wx/doc/enum.rb +15 -0
  51. data/lib/wx/doc/event.rb +12 -0
  52. data/lib/wx/doc/evthandler.rb +113 -108
  53. data/lib/wx/doc/extra/12_client_data.md +89 -0
  54. data/lib/wx/doc/extra/13_validators.md +139 -0
  55. data/lib/wx/doc/font.rb +1 -0
  56. data/lib/wx/doc/gc_dc.rb +6 -1
  57. data/lib/wx/doc/gdi_common.rb +4 -0
  58. data/lib/wx/doc/generic_validator.rb +95 -0
  59. data/lib/wx/doc/graphics_context.rb +1 -0
  60. data/lib/wx/doc/grid/grid.rb +22 -1
  61. data/lib/wx/doc/help_controller.rb +11 -7
  62. data/lib/wx/doc/html/html_help_controller.rb +12 -4
  63. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  64. data/lib/wx/doc/list_ctrl.rb +33 -29
  65. data/lib/wx/doc/menu.rb +20 -0
  66. data/lib/wx/doc/notebook.rb +21 -0
  67. data/lib/wx/doc/num_validator.rb +387 -0
  68. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  69. data/lib/wx/doc/pg/events.rb +13 -9
  70. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  71. data/lib/wx/doc/pg/pg_property.rb +18 -0
  72. data/lib/wx/doc/progress_dialog.rb +36 -32
  73. data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
  74. data/lib/wx/doc/prt/print_data.rb +13 -5
  75. data/lib/wx/doc/prt/print_dialog.rb +31 -23
  76. data/lib/wx/doc/prt/printer.rb +20 -12
  77. data/lib/wx/doc/radio_box.rb +19 -15
  78. data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
  79. data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
  80. data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
  81. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
  82. data/lib/wx/doc/region_iterator.rb +32 -28
  83. data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
  84. data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
  85. data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
  86. data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
  87. data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
  88. data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
  89. data/lib/wx/doc/sizer.rb +20 -0
  90. data/lib/wx/doc/static_bitmap.rb +25 -0
  91. data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
  92. data/lib/wx/doc/stream.rb +39 -35
  93. data/lib/wx/doc/system_settings.rb +30 -26
  94. data/lib/wx/doc/text_validator.rb +23 -9
  95. data/lib/wx/doc/textctrl.rb +16 -0
  96. data/lib/wx/doc/tree_ctrl.rb +95 -0
  97. data/lib/wx/doc/treebook.rb +9 -5
  98. data/lib/wx/doc/v_list_box.rb +9 -5
  99. data/lib/wx/doc/validator.rb +113 -0
  100. data/lib/wx/doc/variant.rb +164 -160
  101. data/lib/wx/doc/window.rb +87 -47
  102. data/lib/wx/doc/window_disabler.rb +10 -6
  103. data/lib/wx/grid/grid.rb +27 -4
  104. data/lib/wx/html/simple_html_listbox.rb +24 -91
  105. data/lib/wx/keyword_defs.rb +34 -2
  106. data/lib/wx/pg/pg_property.rb +22 -0
  107. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  108. data/lib/wx/rtc/require.rb +3 -0
  109. data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
  110. data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
  111. data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
  112. data/lib/wx/stc/require.rb +1 -0
  113. data/lib/wx/stc/styled_text_ctrl.rb +25 -0
  114. data/lib/wx/version.rb +1 -1
  115. data/rakelib/lib/config/linux.rb +0 -3
  116. data/rakelib/lib/config/macosx.rb +2 -2
  117. data/rakelib/lib/config/mingw.rb +13 -1
  118. data/rakelib/lib/config/unixish.rb +1 -1
  119. data/rakelib/lib/config.rb +14 -4
  120. data/rakelib/lib/core/include/client_data.inc +65 -0
  121. data/rakelib/lib/core/include/funcall.inc +1 -1
  122. data/rakelib/lib/core/package.rb +31 -9
  123. data/rakelib/lib/core/parameter.rb +1 -1
  124. data/rakelib/lib/core/spec.rb +6 -1
  125. data/rakelib/lib/core/spec_helper.rb +7 -1
  126. data/rakelib/lib/director/accelerator.rb +2 -3
  127. data/rakelib/lib/director/accessible.rb +47 -0
  128. data/rakelib/lib/director/app.rb +30 -319
  129. data/rakelib/lib/director/app_traits.rb +13 -13
  130. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  131. data/rakelib/lib/director/combobox.rb +22 -0
  132. data/rakelib/lib/director/comboctrl.rb +1 -55
  133. data/rakelib/lib/director/ctrl_with_items.rb +105 -26
  134. data/rakelib/lib/director/data_format.rb +1 -1
  135. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  136. data/rakelib/lib/director/derived_dc.rb +1 -1
  137. data/rakelib/lib/director/dialog.rb +1 -0
  138. data/rakelib/lib/director/drag_image.rb +2 -3
  139. data/rakelib/lib/director/editable_listbox.rb +30 -0
  140. data/rakelib/lib/director/event.rb +104 -14
  141. data/rakelib/lib/director/event_handler.rb +3 -2
  142. data/rakelib/lib/director/frame.rb +1 -3
  143. data/rakelib/lib/director/functions.rb +4 -2
  144. data/rakelib/lib/director/gdicommon.rb +8 -10
  145. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  146. data/rakelib/lib/director/graphics_context.rb +2 -4
  147. data/rakelib/lib/director/grid_cell_attr.rb +0 -2
  148. data/rakelib/lib/director/grid_cell_editor.rb +0 -2
  149. data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
  150. data/rakelib/lib/director/grid_ctrl.rb +34 -3
  151. data/rakelib/lib/director/header_ctrl.rb +6 -1
  152. data/rakelib/lib/director/html_listbox.rb +96 -22
  153. data/rakelib/lib/director/icon.rb +5 -2
  154. data/rakelib/lib/director/list_ctrl.rb +5 -6
  155. data/rakelib/lib/director/locale.rb +1 -3
  156. data/rakelib/lib/director/log.rb +1 -4
  157. data/rakelib/lib/director/media_ctrl.rb +54 -0
  158. data/rakelib/lib/director/menu.rb +16 -1
  159. data/rakelib/lib/director/menu_item.rb +2 -2
  160. data/rakelib/lib/director/num_validator.rb +495 -0
  161. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  162. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  163. data/rakelib/lib/director/pgproperties.rb +1 -1
  164. data/rakelib/lib/director/pgproperty.rb +27 -30
  165. data/rakelib/lib/director/property_grid_interface.rb +5 -10
  166. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  167. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  168. data/rakelib/lib/director/richtext_composite_object.rb +25 -0
  169. data/rakelib/lib/director/richtext_ctrl.rb +14 -4
  170. data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
  171. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
  172. data/rakelib/lib/director/sizer.rb +30 -4
  173. data/rakelib/lib/director/sizer_item.rb +13 -0
  174. data/rakelib/lib/director/static_bitmap.rb +28 -0
  175. data/rakelib/lib/director/static_box.rb +4 -5
  176. data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
  177. data/rakelib/lib/director/task_bar_button.rb +30 -0
  178. data/rakelib/lib/director/task_bar_icon.rb +5 -13
  179. data/rakelib/lib/director/text_entry.rb +4 -0
  180. data/rakelib/lib/director/text_validator.rb +124 -13
  181. data/rakelib/lib/director/textctrl.rb +12 -1
  182. data/rakelib/lib/director/toggle_button.rb +1 -0
  183. data/rakelib/lib/director/tool_tip.rb +1 -1
  184. data/rakelib/lib/director/top_level_window.rb +4 -7
  185. data/rakelib/lib/director/tree_ctrl.rb +40 -6
  186. data/rakelib/lib/director/utils.rb +16 -2
  187. data/rakelib/lib/director/validator.rb +196 -21
  188. data/rakelib/lib/director/variant.rb +1 -1
  189. data/rakelib/lib/director/window.rb +40 -7
  190. data/rakelib/lib/director.rb +4 -4
  191. data/rakelib/lib/extractor/function.rb +8 -7
  192. data/rakelib/lib/extractor.rb +34 -5
  193. data/rakelib/lib/generate/analyzer.rb +9 -4
  194. data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
  195. data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
  196. data/rakelib/lib/generate/doc/cursor.yaml +0 -2
  197. data/rakelib/lib/generate/doc/panel.yaml +7 -0
  198. data/rakelib/lib/generate/doc.rb +85 -17
  199. data/rakelib/lib/specs/interfaces.rb +163 -160
  200. data/rakelib/lib/swig_runner.rb +55 -9
  201. data/rakelib/lib/typemap/client_data.rb +67 -0
  202. data/rakelib/lib/typemap/common.rb +33 -4
  203. data/rakelib/lib/typemap/datetime.rb +1 -1
  204. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  205. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
  206. data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
  207. data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
  208. data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
  209. data/rakelib/yard/templates/default/tags/setup.rb +16 -0
  210. data/rakelib/yard/yard-custom-templates.rb +3 -0
  211. data/samples/aui/aui.rb +1237 -1233
  212. data/samples/calendar/calendar.rb +293 -289
  213. data/samples/controls/get_item_sample.rb +83 -79
  214. data/samples/controls/htlbox.rb +331 -327
  215. data/samples/dialogs/dialogs.rb +682 -694
  216. data/samples/dialogs/wizard.rb +52 -55
  217. data/samples/dragdrop/dragdrop.rb +146 -142
  218. data/samples/drawing/bitmap.rb +29 -26
  219. data/samples/drawing/bitmap_image.rb +84 -80
  220. data/samples/drawing/graphics_drawing.rb +209 -205
  221. data/samples/drawing/image_prt.rb +344 -340
  222. data/samples/drawing/maths_images.rb +18 -1
  223. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  224. data/samples/etc/caret.rb +306 -0
  225. data/samples/etc/miniframe.rb +65 -60
  226. data/samples/etc/sash.rb +109 -105
  227. data/samples/etc/scrollwin.rb +86 -80
  228. data/samples/etc/system_settings.rb +216 -209
  229. data/samples/event/activation.rb +72 -67
  230. data/samples/event/event.rb +160 -153
  231. data/samples/event/threaded.rb +8 -1
  232. data/samples/event/update_ui_event.rb +67 -60
  233. data/samples/grid/grid.rb +188 -181
  234. data/samples/grid/gridtablebase.rb +136 -129
  235. data/samples/html/html.rb +208 -204
  236. data/samples/mdi/mdi.rb +59 -54
  237. data/samples/minimal/minimal.rb +54 -51
  238. data/samples/minimal/nothing.rb +1 -0
  239. data/samples/printing/printing.rb +367 -377
  240. data/samples/printing/printing2.rb +203 -198
  241. data/samples/propgrid/propgrid.rb +2312 -2308
  242. data/samples/propgrid/propgrid_minimal.rb +57 -50
  243. data/samples/ribbon/ribbon.rb +780 -774
  244. data/samples/sampler/ext.rb +0 -33
  245. data/samples/sampler/sample.rb +4 -9
  246. data/samples/sampler.rb +1 -1
  247. data/samples/splash/splash.rb +118 -116
  248. data/samples/text/rich_textctrl.rb +207 -201
  249. data/samples/text/richtext.rb +1409 -1405
  250. data/samples/text/scintilla.rb +137 -128
  251. data/samples/text/textctrl.rb +89 -83
  252. data/samples/text/unicode.rb +175 -168
  253. data/samples/treectrl/treectrl.rb +1430 -1426
  254. data/samples/widgets/activityindicator.rb +95 -0
  255. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  256. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  257. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  258. data/samples/widgets/art/widgets/button.xpm +54 -0
  259. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  260. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  261. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  262. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  263. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  264. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  265. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  266. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  267. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  268. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  269. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  270. data/samples/widgets/art/widgets/header.xpm +54 -0
  271. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  272. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  273. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  274. data/samples/widgets/art/widgets/native.xpm +81 -0
  275. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  276. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  277. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  278. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  279. data/samples/widgets/art/widgets/slider.xpm +54 -0
  280. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  281. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  282. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  283. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  284. data/samples/widgets/art/widgets/text.xpm +54 -0
  285. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  286. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  287. data/samples/widgets/art/widgets/toucan.png +0 -0
  288. data/samples/widgets/bmpcombobox.rb +651 -0
  289. data/samples/widgets/button.rb +462 -0
  290. data/samples/widgets/checkbox.rb +211 -0
  291. data/samples/widgets/choice.rb +287 -0
  292. data/samples/widgets/clrpicker.rb +156 -0
  293. data/samples/widgets/combobox.rb +516 -0
  294. data/samples/widgets/datepick.rb +215 -0
  295. data/samples/widgets/dirctrl.rb +265 -0
  296. data/samples/widgets/dirpicker.rb +158 -0
  297. data/samples/widgets/editlbox.rb +122 -0
  298. data/samples/widgets/filectrl.rb +216 -0
  299. data/samples/widgets/filepicker.rb +214 -0
  300. data/samples/widgets/fontpicker.rb +135 -0
  301. data/samples/widgets/gauge.rb +311 -0
  302. data/samples/widgets/headerctrl.rb +236 -0
  303. data/samples/widgets/hyperlink.rb +203 -0
  304. data/samples/widgets/itemcontainer.rb +185 -0
  305. data/samples/widgets/listbox.rb +473 -0
  306. data/samples/widgets/notebook.rb +488 -0
  307. data/samples/widgets/odcombobox.rb +608 -0
  308. data/samples/widgets/radiobox.rb +328 -0
  309. data/samples/widgets/searchctrl.rb +159 -0
  310. data/samples/widgets/slider.rb +594 -0
  311. data/samples/widgets/spinbtn.rb +443 -0
  312. data/samples/widgets/statbmp.rb +130 -0
  313. data/samples/widgets/static.rb +436 -0
  314. data/samples/widgets/textctrl.rb +700 -0
  315. data/samples/widgets/timepick.rb +148 -0
  316. data/samples/widgets/tn_widgets.png +0 -0
  317. data/samples/widgets/toggle.rb +385 -0
  318. data/samples/widgets/widgets.rb +1233 -0
  319. data/samples/xrc/custom_xrc_sample.rb +47 -41
  320. data/samples/xrc/xrc_sample.rb +53 -47
  321. data/tests/media/beep_lo.wav +0 -0
  322. data/tests/test_event_handling.rb +52 -34
  323. data/tests/test_events.rb +7 -0
  324. data/tests/test_item_data.rb +24 -0
  325. data/tests/test_list_ctrl.rb +1 -1
  326. data/tests/test_media_ctrl.rb +38 -0
  327. data/tests/test_menu.rb +69 -0
  328. data/tests/test_pg.rb +27 -0
  329. data/tests/test_richtext.rb +45 -0
  330. data/tests/test_sizer.rb +59 -0
  331. data/tests/test_std_controls.rb +42 -1
  332. data/tests/test_styled_text_ctrl.rb +46 -0
  333. data/tests/test_tree_ctrl.rb +138 -0
  334. data/tests/test_validators.rb +805 -0
  335. data/tests/test_window.rb +12 -0
  336. data/tests/testapp_noframe.rb +1 -1
  337. metadata +121 -139
  338. data/lib/wx/core/choice.rb +0 -14
  339. data/lib/wx/core/combo_ctrl.rb +0 -110
  340. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  341. data/samples/bigdemo/About.rbw +0 -39
  342. data/samples/bigdemo/ColorPanel.rbw +0 -23
  343. data/samples/bigdemo/GridSimple.rbw +0 -78
  344. data/samples/bigdemo/MDIDemo.rbw +0 -57
  345. data/samples/bigdemo/PopupMenu.rbw +0 -146
  346. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  347. data/samples/bigdemo/Sizers.rbw +0 -541
  348. data/samples/bigdemo/bigdemo.rb +0 -817
  349. data/samples/bigdemo/demoTemplate.rbw +0 -33
  350. data/samples/bigdemo/helpfile.htb +0 -0
  351. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  352. data/samples/bigdemo/icons/Test 015.png +0 -0
  353. data/samples/bigdemo/icons/choice.bmp +0 -0
  354. data/samples/bigdemo/icons/combo.bmp +0 -0
  355. data/samples/bigdemo/icons/combo.xpm +0 -27
  356. data/samples/bigdemo/icons/copy.xpm +0 -25
  357. data/samples/bigdemo/icons/cut.xpm +0 -24
  358. data/samples/bigdemo/icons/gauge.bmp +0 -0
  359. data/samples/bigdemo/icons/gauge.xpm +0 -27
  360. data/samples/bigdemo/icons/help.xpm +0 -25
  361. data/samples/bigdemo/icons/list.bmp +0 -0
  362. data/samples/bigdemo/icons/list.xpm +0 -27
  363. data/samples/bigdemo/icons/mondrian.ico +0 -0
  364. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  365. data/samples/bigdemo/icons/new.xpm +0 -24
  366. data/samples/bigdemo/icons/ogl.ico +0 -0
  367. data/samples/bigdemo/icons/ogl.xpm +0 -45
  368. data/samples/bigdemo/icons/open.xpm +0 -26
  369. data/samples/bigdemo/icons/paste.bmp +0 -0
  370. data/samples/bigdemo/icons/paste.xpm +0 -38
  371. data/samples/bigdemo/icons/pointy.png +0 -0
  372. data/samples/bigdemo/icons/preview.xpm +0 -26
  373. data/samples/bigdemo/icons/print.xpm +0 -26
  374. data/samples/bigdemo/icons/radio.bmp +0 -0
  375. data/samples/bigdemo/icons/radio.xpm +0 -27
  376. data/samples/bigdemo/icons/robert.xpm +0 -415
  377. data/samples/bigdemo/icons/sashtest.ico +0 -0
  378. data/samples/bigdemo/icons/save.xpm +0 -25
  379. data/samples/bigdemo/icons/smiles.bmp +0 -0
  380. data/samples/bigdemo/icons/smiles.xpm +0 -39
  381. data/samples/bigdemo/icons/smiley.ico +0 -0
  382. data/samples/bigdemo/icons/smiley.xpm +0 -42
  383. data/samples/bigdemo/icons/stattext.xpm +0 -24
  384. data/samples/bigdemo/icons/test2.bmp +0 -0
  385. data/samples/bigdemo/icons/test2.png +0 -0
  386. data/samples/bigdemo/icons/test2.xpm +0 -79
  387. data/samples/bigdemo/icons/text.bmp +0 -0
  388. data/samples/bigdemo/icons/text.xpm +0 -27
  389. data/samples/bigdemo/icons/tog1.bmp +0 -0
  390. data/samples/bigdemo/icons/tog1.xpm +0 -38
  391. data/samples/bigdemo/icons/tog2.bmp +0 -0
  392. data/samples/bigdemo/icons/tog2.xpm +0 -38
  393. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  394. data/samples/bigdemo/icons/wxwin.ico +0 -0
  395. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  396. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  397. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  398. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  399. data/samples/bigdemo/run.rb +0 -98
  400. data/samples/bigdemo/tips.txt +0 -7
  401. data/samples/bigdemo/utils.rb +0 -20
  402. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  403. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  404. data/samples/bigdemo/wxButton.rbw +0 -64
  405. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  406. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  407. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  408. data/samples/bigdemo/wxChoice.rbw +0 -47
  409. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  410. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  411. data/samples/bigdemo/wxComboBox.rbw +0 -77
  412. data/samples/bigdemo/wxCursor.rbw +0 -136
  413. data/samples/bigdemo/wxDialog.rbw +0 -74
  414. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  415. data/samples/bigdemo/wxDragImage.rbw +0 -70
  416. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  417. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  418. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  419. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  420. data/samples/bigdemo/wxFrame.rbw +0 -53
  421. data/samples/bigdemo/wxGauge.rbw +0 -65
  422. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  423. data/samples/bigdemo/wxGrid.rbw +0 -66
  424. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  425. data/samples/bigdemo/wxListBox.rbw +0 -140
  426. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  427. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  428. data/samples/bigdemo/wxMenu.rbw +0 -247
  429. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  430. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  431. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  432. data/samples/bigdemo/wxNotebook.rbw +0 -136
  433. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  434. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  435. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  436. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  437. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  438. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  439. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  440. data/samples/bigdemo/wxSlider.rbw +0 -42
  441. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  442. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  443. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  444. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  445. data/samples/bigdemo/wxStaticText.rbw +0 -55
  446. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  447. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  448. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  449. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  450. data/samples/bigdemo/wxToolBar.rbw +0 -131
  451. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  452. data/samples/caret/caret.rb +0 -298
  453. data/samples/caret/mondrian.xpm +0 -44
  454. data/samples/controls/books.rb +0 -189
  455. data/samples/controls/choice.xpm +0 -27
  456. data/samples/controls/combo.xpm +0 -27
  457. data/samples/controls/controls.rb +0 -1099
  458. data/samples/controls/gauge.xpm +0 -27
  459. data/samples/controls/list.xpm +0 -27
  460. data/samples/controls/mondrian.ico +0 -0
  461. data/samples/controls/mondrian.xpm +0 -44
  462. data/samples/controls/radio.xpm +0 -27
  463. data/samples/controls/stattext.xpm +0 -24
  464. data/samples/controls/test2.bmp +0 -0
  465. data/samples/controls/text.xpm +0 -27
  466. data/samples/controls/tn_books.png +0 -0
  467. data/samples/controls/tn_controls.png +0 -0
  468. data/samples/etc/choice.rb +0 -87
  469. data/samples/etc/tn_choice.png +0 -0
  470. data/samples/text/mondrian.ico +0 -0
  471. data/samples/text/mondrian.xpm +0 -44
  472. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -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)
@@ -327,7 +327,12 @@ module WXRuby3
327
327
  end
328
328
 
329
329
  def ignore(*names, ignore_doc: true)
330
- names.flatten.each {|n| @ignores[n] = ignore_doc}
330
+ names.flatten.each { |n| @ignores[n] = {ignore: true, ignore_doc: ignore_doc} }
331
+ self
332
+ end
333
+
334
+ def ignore_unless(feature_set, *names)
335
+ names.flatten.each { |n| @ignores[n] = {ignore: feature_set} }
331
336
  self
332
337
  end
333
338
 
@@ -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
@@ -47,9 +47,8 @@ module WXRuby3
47
47
  (TYPE($input) == T_STRING && RSTRING_LEN($input) == 1) );
48
48
  __CODE
49
49
  end
50
- unless Config.instance.features_set?('__WXMSW__')
51
- spec.ignore('wxAcceleratorTable::wxAcceleratorTable(const wxString &)')
52
- end
50
+ spec.ignore_unless('WXMSW',
51
+ 'wxAcceleratorTable::wxAcceleratorTable(const wxString &)')
53
52
  spec.add_swig_code <<~__HEREDOC
54
53
  %warnfilter(509) wxAcceleratorTable::wxAcceleratorTable;
55
54
  __HEREDOC
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ module WXRuby3
10
+
11
+ class Director
12
+
13
+ class Accessible < Director
14
+
15
+ def setup
16
+ super
17
+ spec.make_abstract 'wxAccessible'
18
+ spec.map 'wxAccessible**' => 'Wx::Accessible' do
19
+ map_in ignore: true, temp: 'wxAccessible* tmp', code: '$1 = &tmp;'
20
+ map_argout code: <<~__HEREDOC
21
+ if (tmp$argnum)
22
+ {
23
+ $result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(tmp$argnum), SWIGTYPE_p_wxAccessible, 0));
24
+ }
25
+ __HEREDOC
26
+
27
+ end
28
+ spec.map 'wxString *' => 'String' do
29
+ map_in ignore: true, temp: 'wxString tmp', code: '$1 = &tmp;'
30
+ map_argout code: '$result = SWIG_Ruby_AppendOutput($result, WXSTR_TO_RSTR(tmp$argnum));'
31
+ end
32
+ spec.map 'wxAccRole *' => 'Wx::AccRole' do
33
+ map_in ignore: true, temp: 'wxAccRole tmp', code: '$1 = &tmp;'
34
+ map_argout code: <<~__HEREDOC
35
+ $result = SWIG_Ruby_AppendOutput($result, wxRuby_GetEnumValueObject("AccRole", static_cast<int>(tmp$argnum)));
36
+ __HEREDOC
37
+ end
38
+ spec.map_apply 'int * OUTPUT' => ['int * childCount', 'int * childId', 'int * toId']
39
+ spec.map_apply 'long * OUTPUT' => 'long * state'
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+
@@ -16,6 +16,15 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  spec.items << 'wxAppConsole' << 'wxEventFilter'
19
+ if Config.instance.wx_version >= '3.3.0'
20
+ spec.items << 'wxDarkModeSettings'
21
+ spec.ignore_unless('WXMSW', 'wxDarkModeSettings', 'wxMenuColour')
22
+ if Config.instance.features_set?('WXMSW')
23
+ spec.disown 'wxDarkModeSettings *settings'
24
+ # wxDarkModeSettings does has have virt dtor; it's just not documented
25
+ spec.suppress_warning(514, 'wxDarkModeSettings')
26
+ end
27
+ end
19
28
  spec.fold_bases('wxApp' => 'wxAppConsole', 'wxAppConsole' => 'wxEventFilter')
20
29
  spec.override_inheritance_chain('wxApp', %w[wxEvtHandler wxObject])
21
30
  spec.ignore %w{
@@ -134,339 +143,23 @@ module WXRuby3
134
143
  extern "C" void Init_wxRubyStockObjects();
135
144
  extern void wxRuby_MarkProtectedEvtHandlerProcs();
136
145
 
137
- #ifdef __WXMSW__
138
- extern "C"
139
- {
140
- WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();
141
- }
142
- #endif
143
-
144
146
  static wxVector<WXRBMarkFunction> WXRuby_Mark_List;
145
147
 
146
148
  WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker)
147
149
  {
148
150
  WXRuby_Mark_List.push_back(marker);
149
151
  }
150
-
151
- class wxRubyApp : public wxApp
152
- {
153
- private:
154
- static wxRubyApp* instance_;
155
-
156
- bool is_running_ = false;
157
- public:
158
- static wxRubyApp* GetInstance () { return instance_; }
159
-
160
- virtual ~wxRubyApp()
161
- {
162
- #ifdef __WXTRACE__
163
- std::wcout << "~wxRubyApp" << std::endl;
164
- #endif
165
- // unlink
166
- VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
167
- if (the_app != Qnil)
168
- {
169
- DATA_PTR(the_app) = 0;
170
- }
171
- }
172
-
173
- // special event handler for destruction of windows which is done
174
- // automatically by wxWidgets. Tag the object as having been destroyed
175
- // by WxWidgets.
176
- void OnWindowDestroy(wxWindowDestroyEvent &event)
177
- {
178
- wxObject* wx_obj = event.GetEventObject();
179
- #ifdef __WXRB_DEBUG__
180
- if (wxRuby_TraceLevel()>0)
181
- std::wcout << "<= OnWindowDestroy [" << wx_obj << "]" << std::endl;
182
- #endif
183
- GC_SetWindowDeleted((void *)wx_obj);
184
- event.Skip();
185
- #ifdef __WXRB_DEBUG__
186
- if (wxRuby_TraceLevel()>0)
187
- std::wcout << "=> OnWindowDestroy [" << wx_obj << "]" << std::endl;
188
- #endif
189
- }
190
152
 
191
- bool IsRunning() const { return this->is_running_; }
192
-
193
- // When ruby's garbage collection runs, if the app is still active, it
194
- // cycles through all currently known SWIG objects and calls this
195
- // function on each to preserve still active Wx::Windows, and also
196
- // pending Wx::Events which have been queued from the Ruby side (the
197
- // only sort of events that will be in the tracking hash.
198
- static void markIterate(void* ptr, VALUE rb_obj)
199
- {
200
- // Check if it's a valid object (sometimes SWIG doesn't return what we're
201
- // expecting), a descendant of Wx::Window (but not a Dialog), and if it has not yet been
202
- // deleted by WxWidgets; if so, mark it.
203
- if ( TYPE(rb_obj) == T_DATA )
204
- {
205
- if ( rb_obj_is_kind_of(rb_obj, wxRuby_GetWindowClass()) )
206
- {
207
- rb_gc_mark(rb_obj);
208
- }
209
- else if (rb_obj_is_kind_of(rb_obj, wxRuby_GetDefaultEventClass()) )
210
- rb_gc_mark(rb_obj);
211
- }
212
- else if (TYPE(rb_obj) == T_ARRAY )
213
- {
214
- VALUE proc = rb_ary_entry(rb_obj, 0);
215
- if (rb_obj_is_kind_of(proc, rb_cProc) || rb_obj_is_kind_of(proc, rb_cMethod))
216
- {
217
- // keep the async call alive
218
- rb_gc_mark(rb_obj);
219
- }
220
- }
221
- }
222
-
223
- // Implements GC protection across wxRuby. Always called because
224
- // Wx::THE_APP is a constant so always checked in GC mark phase.
225
- static void mark_wxRubyApp(void *ptr)
226
- {
227
-
228
- #ifdef __WXRB_DEBUG__
229
- if (wxRuby_TraceLevel()>0)
230
- std::wcout << "=== Starting App GC mark phase" << std::endl;
231
- #endif
232
-
233
- // If the App has ended, the ruby object will have been unlinked from
234
- // the C++ one; this implies that all Windows have already been destroyed
235
- // so there is no point trying to mark them, and doing so may cause
236
- // errors.
237
- if ( !wxRubyApp::GetInstance() || !wxRubyApp::GetInstance()->IsRunning() )
238
- {
239
- #ifdef __WXRB_DEBUG__
240
- if (wxRuby_TraceLevel()>0)
241
- std::wcout << "=== App has ended, skipping mark phase" << std::endl;
242
- #endif
243
- return;
244
- }
245
-
246
- // Mark any active (tracked) log target
247
- wxLog* curLog = wxLog::GetActiveTarget();
248
- VALUE rb_cur_log = wxRuby_FindTracking(curLog);
249
- if (!NIL_P(rb_cur_log))
250
- {
251
- rb_gc_mark(rb_cur_log);
252
- }
253
-
254
- // Mark evt handler procs associated with live windows - see
255
- // classes/EvtHandler.i
256
- wxRuby_MarkProtectedEvtHandlerProcs();
257
-
258
- // run registered markers
259
- for (wxVector<WXRBMarkFunction>::iterator it = WXRuby_Mark_List.begin();
260
- it != WXRuby_Mark_List.end() ;++it)
261
- {
262
- (*it) ();
263
- }
264
-
265
- // To do the main marking, primarily of Windows, iterate over SWIG's
266
- // list of tracked objects
267
- wxRuby_IterateTracking(&wxRubyApp::markIterate);
268
-
269
- #ifdef __WXRB_DEBUG__
270
- if (wxRuby_TraceLevel()>0)
271
- std::wcout << "=== App GC mark phase completed" << std::endl;
272
- #endif
273
- }
274
-
275
- // This is the method run when main_loop is called in Ruby
276
- // wxEntry calls the C++ App::OnInit method
277
- int main_loop()
278
- {
279
- VALUE rb_app = SWIG_RubyInstanceFor(this);
280
- rb_define_const(#{spec.package.module_variable}, "THE_APP", rb_app);
281
- this->Connect(wxEVT_DESTROY,
282
- wxWindowDestroyEventHandler(wxRubyApp::OnWindowDestroy));
283
-
284
- #ifdef __WXRB_DEBUG__
285
- if (wxRuby_TraceLevel()>0)
286
- std::wcout << "Calling wxEntry, this=" << this << std::endl;
287
- #endif
288
-
289
- #ifdef __WXMSW__
290
- extern int wxEntry(HINSTANCE hInstance,
291
- HINSTANCE WXUNUSED(hPrevInstance),
292
- wxCmdLineArgType WXUNUSED(pCmdLine),
293
- int nCmdShow);
294
- wxEntry(wxGetInstance(),
295
- (HINSTANCE)0,
296
- (wxCmdLineArgType)"",
297
- (int)true);
298
- #else
299
- int argc = 1;
300
- const char* argv[2] = { "ruby", 0 };
301
- wxEntry(argc, const_cast<char**>(&argv[0]));
302
- #endif
303
-
304
- rb_const_remove(#{spec.package.module_variable}, rb_intern("THE_APP"));
305
-
306
- #ifdef __WXRB_DEBUG__
307
- if (wxRuby_TraceLevel()>0)
308
- std::wcout << "returned from wxEntry..." << std::endl;
309
- #endif
310
- rb_gc_start();
311
- #ifdef __WXRB_DEBUG__
312
- if (wxRuby_TraceLevel()>0)
313
- std::wcout << "survived gc" << std::endl;
314
- #endif
315
-
316
- VALUE exc = rb_iv_get(rb_app, "@exception");
317
- if (!NIL_P(exc))
318
- {
319
- rb_exc_raise(exc);
320
- }
321
- return 0;
322
- }
323
-
324
- // This method initializes the stock objects (Pens, Brushes, Fonts)
325
- // before yielding to ruby by calling the App's on_init method.
326
- // Note that as of wxWidget 2.8, the stock fonts in particular cannot
327
- // be initialized any earlier than this without crashing
328
- bool OnInit() override
329
- {
330
- #ifdef __WXRB_DEBUG__
331
- if (wxRuby_TraceLevel()>0)
332
- std::wcout << "OnInit..." << std::endl;
333
- #endif
334
- // set standard App name
335
- this->SetAppName(wxString("wxruby"));
336
- // Signal that we've started
337
- wxRubyApp::instance_ = this; // there should ALWAYS EVER be only 1 app instance running/created
338
- this->is_running_ = true;
339
- // Set up the GDI objects
340
- Init_wxRubyStockObjects();
341
- // Get the ruby representation of the App object, and call the
342
- // ruby on_init method to set up the initial window state
343
- VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
344
- bool ex_caught = false;
345
- VALUE result = wxRuby_Funcall(ex_caught, the_app, rb_intern("on_ruby_init"), 0, 0);
346
-
347
- if (ex_caught)
348
- {
349
- #ifdef __WXRB_DEBUG__
350
- wxRuby_PrintException(result);
351
- #endif
352
- rb_iv_set(the_app, "@exception", result);
353
- result = Qfalse; // exit app
354
- }
355
-
356
- // If on_init return any (ruby) true value, signal to wxWidgets to
357
- // enter the main event loop by returning true, else return false
358
- // which will make wxWidgets exit.
359
- if ( result == Qfalse || result == Qnil )
360
- {
361
- wxRubyApp::instance_ = 0;
362
- this->is_running_ = false;
363
- return false;
364
- }
365
- else
366
- {
367
- return true;
368
- }
369
- }
370
-
371
- int OnExit() override
372
- {
373
- #ifdef __WXRB_DEBUG__
374
- if (wxRuby_TraceLevel()>0)
375
- std::wcout << "OnExit..." << std::endl;
376
- #endif
377
-
378
- // Get the ruby representation of the App object, and call the
379
- // ruby on_exit method (if any) for application level cleanup
380
- VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
381
- ID on_exit_id = rb_intern("on_exit");
382
- if (rb_funcall(the_app, rb_intern("respond_to?"), 1, ID2SYM(on_exit_id)) == Qtrue)
383
- {
384
- bool ex_caught = false;
385
- VALUE rc = wxRuby_Funcall(ex_caught, the_app, on_exit_id, 0, 0);
386
- if (ex_caught)
387
- {
388
- #ifdef __WXRB_DEBUG__
389
- wxRuby_PrintException(rc);
390
- #endif
391
- rb_iv_set(the_app, "@exception", rc);
392
- }
393
- }
394
-
395
- // perform wxRuby cleanup
396
- _wxRuby_Cleanup();
397
-
398
- // execute base wxWidgets functionality
399
- return this->wxApp::OnExit();
400
- }
401
-
402
- // actually implemented in ruby in classes/app.rb
403
- virtual void OnAssertFailure(const wxChar *file, int line, const wxChar *func, const wxChar *cond, const wxChar *msg) override
404
- {
405
- VALUE rb_app = SWIG_RubyInstanceFor(this);
406
- if (rb_during_gc() || NIL_P(rb_app))
407
- {
408
- std::wcout << file << "(" << line << "): ASSERT " << cond
409
- << (NIL_P(rb_app) ? " fired without THE_APP in " : " fired during GC phase in ")
410
- << func << "() with message [" << msg << "]" << std::endl;
411
- }
412
- else
413
- {
414
- VALUE obj0 = Qnil ;
415
- VALUE obj1 = Qnil ;
416
- VALUE obj2 = Qnil ;
417
- VALUE obj3 = Qnil ;
418
- VALUE obj4 = Qnil ;
419
-
420
- obj0 = rb_str_new2((const char *)wxString(file).utf8_str());
421
- obj1 = INT2NUM(line);
422
- obj2 = rb_str_new2((const char *)wxString(func).utf8_str());
423
- obj3 = rb_str_new2((const char *)wxString(cond).utf8_str());
424
- obj4 = rb_str_new2((const char *)wxString(msg).utf8_str());
425
- (void)wxRuby_Funcall(rb_app, rb_intern("on_assert_failure"), 5,obj0,obj1,obj2,obj3,obj4);
426
- }
427
- }
428
-
429
- void _wxRuby_Cleanup()
430
- {
431
- #ifdef __WXRB_DEBUG__
432
- if (wxRuby_TraceLevel()>0)
433
- std::wcout << "wxRuby_Cleanup..." << std::endl;
434
- #endif
435
- // Note in a global variable that the App has ended, so that we
436
- // can skip any GC marking later
437
- wxRubyApp::instance_ = 0;
438
- this->is_running_ = false;
439
-
440
- // if a Ruby implemented logger has been installed clean that up
441
- // before we exit, otherwise let wxWidgets handle things
442
- wxLog *oldlog = wxLog::GetActiveTarget();
443
- if (wxRuby_FindTracking(oldlog) != Qnil)
444
- {
445
- oldlog = wxLog::SetActiveTarget(new wxLogStderr);
446
- }
447
- else
448
- {
449
- oldlog = 0;
450
- }
451
- SetTopWindow(0);
452
- if ( oldlog )
453
- {
454
- SWIG_RubyUnlinkObjects(oldlog);
455
- SWIG_RubyRemoveTracking(oldlog);
456
- delete oldlog;
457
- }
458
- }
459
- };
460
- wxRubyApp* wxRubyApp::instance_ = 0;
153
+ #include "wxRubyApp.h"
461
154
 
462
155
  WXRUBY_EXPORT bool wxRuby_IsAppRunning()
463
156
  {
464
- return wxRubyApp::GetInstance() != 0 && wxRubyApp::GetInstance()->IsRunning();
157
+ return wxRubyApp::GetInstance() && wxRubyApp::GetInstance()->IsRunning();
465
158
  }
466
159
 
467
160
  WXRUBY_EXPORT void wxRuby_ExitMainLoop(VALUE exception)
468
161
  {
469
- if (wxRubyApp::GetInstance() != 0 && wxRubyApp::GetInstance()->IsRunning())
162
+ if (wxRubyApp::GetInstance() && wxRubyApp::GetInstance()->IsRunning())
470
163
  {
471
164
  if (!NIL_P(exception))
472
165
  {
@@ -496,6 +189,24 @@ module WXRuby3
496
189
  __HEREDOC
497
190
  super
498
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
+
499
210
  end
500
211
 
501
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
 
@@ -38,8 +40,8 @@ module WXRuby3
38
40
  wxAppTraits::IsUsingUniversalWidgets
39
41
  wxAppTraits::ShowAssertDialog
40
42
  wxAppTraits::SafeMessageBox
41
- wxAppTraits::GetAssertStackTrace
42
43
  ], ignore_doc: false
44
+ spec.ignore('wxAppTraits::GetAssertStackTrace', ignore_doc: 'USE_STACKWALKER')
43
45
  # redefine
44
46
  spec.extend_interface 'wxAppTraits',
45
47
  'wxString GetDesktopEnvironment() const',
@@ -48,21 +50,19 @@ module WXRuby3
48
50
  'bool IsUsingUniversalWidgets() const',
49
51
  'bool ShowAssertDialog(const wxString& msg)',
50
52
  'bool SafeMessageBox(const wxString &text, const wxString &title)'
51
- if Config.instance.features_set?('wxUSE_STACKWALKER')
53
+ if Config.instance.features_set?('USE_STACKWALKER')
52
54
  spec.extend_interface 'wxAppTraits', 'wxString GetAssertStackTrace()'
53
55
  end
54
56
  spec.map_apply 'int * OUTPUT' => ['int *major', 'int *minor', 'int *micro']
55
57
 
56
- unless Config.platform == :mingw
57
- spec.ignore 'wxStandardPaths::DontIgnoreAppSubDir',
58
- 'wxStandardPaths::IgnoreAppSubDir',
59
- 'wxStandardPaths::IgnoreAppBuildSubDirs',
60
- 'wxStandardPaths::MSWGetShellDir'
61
- end
62
- unless Config.platform == :linux
63
- spec.ignore 'wxStandardPaths::SetInstallPrefix',
64
- 'wxStandardPaths::GetInstallPrefix'
65
- end
58
+ spec.ignore_unless('WXMSW',
59
+ 'wxStandardPaths::DontIgnoreAppSubDir',
60
+ 'wxStandardPaths::IgnoreAppSubDir',
61
+ 'wxStandardPaths::IgnoreAppBuildSubDirs',
62
+ 'wxStandardPaths::MSWGetShellDir')
63
+ spec.ignore_unless('WXGTK',
64
+ 'wxStandardPaths::SetInstallPrefix',
65
+ 'wxStandardPaths::GetInstallPrefix')
66
66
  end
67
67
  end
68
68
 
@@ -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
 
@@ -29,6 +29,28 @@ module WXRuby3
29
29
  spec.rename_for_ruby(
30
30
  'SetTextSelectionRange' => 'wxComboBox::SetSelection(long, long)',
31
31
  'GetTextSelectionRange' => 'wxComboBox::GetSelection(long *, long *) const')
32
+ spec.ignore 'wxComboBox::SetSelection(long, long)',
33
+ 'wxComboBox::GetSelection(long *, long *) const',
34
+ ignore_doc: false
35
+ # workaround because renaming and alias definitions clash
36
+ spec.add_extend_code 'wxComboBox', <<~__HEREDOC
37
+ void SetTextSelectionRange(long from, long to)
38
+ {
39
+ $self->SetSelection(from, to);
40
+ }
41
+
42
+ void GetTextSelectionRange(long *from, long *to)
43
+ {
44
+ $self->GetSelection(from, to);
45
+ }
46
+ __HEREDOC
47
+ # fix override of TextEntry#clear; to be finished in pure Ruby
48
+ spec.add_extend_code 'wxComboBox', <<~__HEREDOC
49
+ void ClearItems()
50
+ {
51
+ $self->Clear();
52
+ }
53
+ __HEREDOC
32
54
  spec.map_apply 'long * OUTPUT' => [ 'long *from', 'long *to' ]
33
55
  end
34
56
 
@@ -16,7 +16,7 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
- spec.items << 'wxComboPopup' << 'wxOwnerDrawnComboBox' << 'wxItemContainer'
19
+ spec.items << 'wxComboPopup'
20
20
  # mixin TextEntry
21
21
  spec.include_mixin 'wxComboCtrl', { 'Wx::TextEntry' => 'wxTextEntryBase' }
22
22
  spec.override_inheritance_chain('wxComboCtrl',
@@ -31,60 +31,6 @@ module WXRuby3
31
31
  ]
32
32
  # turn wxComboPopup into a mixin module
33
33
  spec.make_mixin 'wxComboPopup'
34
- # override inheritance chain
35
- spec.override_inheritance_chain('wxOwnerDrawnComboBox', %w[wxComboCtrl wxControl wxWindow wxEvtHandler wxObject])
36
- spec.fold_bases('wxOwnerDrawnComboBox' => %w[wxItemContainer])
37
- spec.regard %w[
38
- wxOwnerDrawnComboBox::OnDrawBackground
39
- wxOwnerDrawnComboBox::OnDrawItem
40
- wxOwnerDrawnComboBox::OnMeasureItem
41
- wxOwnerDrawnComboBox::OnMeasureItemWidth
42
- ]
43
- # unuseful overloads
44
- spec.ignore 'wxOwnerDrawnComboBox::wxOwnerDrawnComboBox(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)',
45
- 'wxOwnerDrawnComboBox::Create(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)'
46
- spec.ignore('wxItemContainer::Append(const wxString &, wxClientData *)',
47
- 'wxItemContainer::Append(const std::vector< wxString > &)',
48
- 'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
49
- 'wxItemContainer::Append(unsigned int, const wxString *)',
50
- 'wxItemContainer::Append(unsigned int, const wxString *, void **)',
51
- 'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
52
- 'wxItemContainer::Insert(const wxString &, unsigned int, wxClientData *)',
53
- 'wxItemContainer::Insert(const std::vector< wxString > &)',
54
- 'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
55
- 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
56
- 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
57
- 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
58
- 'wxItemContainer::Set(const std::vector< wxString > &)',
59
- 'wxItemContainer::Set(const wxArrayString &, wxClientData **)',
60
- 'wxItemContainer::Set(unsigned int, const wxString *)',
61
- 'wxItemContainer::Set(unsigned int, const wxString *, void **)',
62
- 'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
63
- 'wxItemContainer::DetachClientObject',
64
- 'wxItemContainer::HasClientObjectData',
65
- 'wxItemContainer::GetClientObject',
66
- 'wxItemContainer::SetClientObject',
67
- 'wxItemContainer::HasClientUntypedData',
68
- 'wxItemContainer::Clear')
69
- spec.ignore('wxItemContainer::Append(const wxArrayString &, void **)',
70
- 'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
71
- 'wxItemContainer::Set(const wxArrayString &, void **)', ignore_doc: false)
72
- # ambiguous
73
- spec.ignore 'wxOwnerDrawnComboBox::IsEmpty', ignore_doc: false
74
- # for doc only
75
- spec.map 'void** clientData' => 'Array', swig: false do
76
- map_in code: ''
77
- end
78
- spec.ignore(%w[wxItemContainer::GetClientData wxItemContainer::SetClientData], ignore_doc: false) # keep docs
79
- # Replace the old Wx definition of this method (which segfaults)
80
- # Only need the setter as we cache data in Ruby and the getter
81
- # therefor can be pure Ruby
82
- spec.add_extend_code 'wxOwnerDrawnComboBox', <<~__HEREDOC
83
- VALUE set_client_data(int n, VALUE item_data) {
84
- self->SetClientData(n, (void *)item_data);
85
- return item_data;
86
- }
87
- __HEREDOC
88
34
  end
89
35
 
90
36
  end # class ComboCtrl