wxruby3 0.9.0.pre.rc.3 → 0.9.1

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 (683) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/mkrf_conf_srcgem.rb +4 -1
  4. data/ext/wxruby3/include/wxruby-Config.h +953 -0
  5. data/ext/wxruby3/include/wxruby-ScaledDC.h +4 -1
  6. data/ext/wxruby3/include/wxruby-runtime.h +13 -1
  7. data/ext/wxruby3/swig/RubyStockObjects.i +5 -3
  8. data/ext/wxruby3/swig/common.i +30 -3
  9. data/ext/wxruby3/swig/custom/director.swg +296 -0
  10. data/ext/wxruby3/swig/custom/rubyapi.swg +19 -0
  11. data/ext/wxruby3/swig/custom/rubyerrors.swg +45 -0
  12. data/ext/wxruby3/swig/custom/rubyhead.swg +192 -0
  13. data/ext/wxruby3/swig/custom/rubyrun.swg +187 -0
  14. data/ext/wxruby3/swig/custom/swigrun.swg +363 -0
  15. data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +173 -0
  16. data/ext/wxruby3/swig/mark_free_impl.i +6 -4
  17. data/ext/wxruby3/swig/memory_management.i +5 -3
  18. data/ext/wxruby3/swig/typedefs.i +5 -3
  19. data/ext/wxruby3/swig/wx.i +55 -30
  20. data/ext/wxruby3/swig/wx.rc +4 -2
  21. data/lib/wx/accessors.rb +10 -2
  22. data/lib/wx/aui/auifloatframe.rb +20 -0
  23. data/lib/wx/aui/auimanager.rb +3 -0
  24. data/lib/wx/aui/auinotebook.rb +17 -0
  25. data/lib/wx/aui/require.rb +5 -1
  26. data/lib/wx/aui.rb +4 -1
  27. data/lib/wx/core/acceleratortable.rb +8 -0
  28. data/lib/wx/core/animation.rb +8 -0
  29. data/lib/wx/core/app.rb +8 -0
  30. data/lib/wx/core/array_ext.rb +7 -0
  31. data/lib/wx/core/art_locator.rb +7 -0
  32. data/lib/wx/core/artprovider.rb +9 -0
  33. data/lib/wx/core/bitmap.rb +16 -4
  34. data/lib/wx/core/bitmap_combobox.rb +7 -0
  35. data/lib/wx/core/brush.rb +7 -0
  36. data/lib/wx/core/busycursor.rb +9 -0
  37. data/lib/wx/core/choice.rb +7 -0
  38. data/lib/wx/core/choicedlg.rb +7 -0
  39. data/lib/wx/core/clientdc.rb +9 -0
  40. data/lib/wx/core/clipboard.rb +8 -0
  41. data/lib/wx/core/collapsible_pane.rb +8 -1
  42. data/lib/wx/core/colour.rb +8 -0
  43. data/lib/wx/core/combo_ctrl.rb +110 -0
  44. data/lib/wx/core/combobox.rb +7 -0
  45. data/lib/wx/core/config.rb +303 -0
  46. data/lib/wx/core/const.rb +83 -0
  47. data/lib/wx/core/controlwithitems.rb +12 -1
  48. data/lib/wx/core/cursor.rb +14 -4
  49. data/lib/wx/core/data_object.rb +7 -0
  50. data/lib/wx/core/dataformat.rb +9 -0
  51. data/lib/wx/core/datetime.rb +14 -0
  52. data/lib/wx/core/dc.rb +7 -0
  53. data/lib/wx/core/dialog.rb +18 -1
  54. data/lib/wx/core/enum.rb +7 -0
  55. data/lib/wx/core/event.rb +7 -0
  56. data/lib/wx/core/event_blocker.rb +7 -0
  57. data/lib/wx/core/event_loop.rb +7 -0
  58. data/lib/wx/core/evthandler.rb +8 -0
  59. data/lib/wx/core/ext.rb +7 -0
  60. data/lib/wx/core/file_dialog.rb +23 -0
  61. data/lib/wx/core/find_replace_dialog.rb +7 -0
  62. data/lib/wx/core/functions.rb +8 -0
  63. data/lib/wx/core/gauge.rb +10 -1
  64. data/lib/wx/core/genericdirctrl.rb +9 -0
  65. data/lib/wx/core/hboxsizer.rb +16 -0
  66. data/lib/wx/core/helpcontroller.rb +8 -0
  67. data/lib/wx/core/helpcontrollerhelpprovider.rb +9 -0
  68. data/lib/wx/core/helpprovider.rb +10 -1
  69. data/lib/wx/core/icon.rb +17 -6
  70. data/lib/wx/core/id_helper.rb +7 -0
  71. data/lib/wx/core/image.rb +16 -4
  72. data/lib/wx/core/imagelist.rb +8 -1
  73. data/lib/wx/core/listbox.rb +7 -0
  74. data/lib/wx/core/listctrl.rb +9 -0
  75. data/lib/wx/core/locale.rb +8 -0
  76. data/lib/wx/core/log.rb +24 -0
  77. data/lib/wx/core/menu.rb +9 -0
  78. data/lib/wx/core/menu_bar.rb +7 -0
  79. data/lib/wx/core/menuitem.rb +9 -0
  80. data/lib/wx/core/notebook.rb +9 -0
  81. data/lib/wx/core/object.rb +9 -0
  82. data/lib/wx/core/paintdc.rb +7 -0
  83. data/lib/wx/core/pen.rb +7 -0
  84. data/lib/wx/core/pen_info.rb +7 -0
  85. data/lib/wx/core/platform_info.rb +7 -0
  86. data/lib/wx/core/point.rb +8 -0
  87. data/lib/wx/core/real_point.rb +8 -0
  88. data/lib/wx/core/rect.rb +9 -0
  89. data/lib/wx/core/region_iterator.rb +7 -0
  90. data/lib/wx/core/simplehelpprovider.rb +9 -0
  91. data/lib/wx/core/size.rb +8 -0
  92. data/lib/wx/core/sizer.rb +9 -0
  93. data/lib/wx/core/splash_screen.rb +22 -2
  94. data/lib/wx/core/text_entry.rb +7 -0
  95. data/lib/wx/core/textctrl.rb +86 -5
  96. data/lib/wx/core/timer.rb +9 -0
  97. data/lib/wx/core/toolbar.rb +9 -0
  98. data/lib/wx/core/toolbartool.rb +8 -0
  99. data/lib/wx/core/treectrl.rb +9 -0
  100. data/lib/wx/core/v_list_box.rb +7 -0
  101. data/lib/wx/core/validator.rb +7 -0
  102. data/lib/wx/core/variant.rb +7 -0
  103. data/lib/wx/core/vboxsizer.rb +16 -0
  104. data/lib/wx/core/window.rb +8 -0
  105. data/lib/wx/core/window_update_locker.rb +9 -0
  106. data/lib/wx/core/xmlresource.rb +8 -0
  107. data/lib/wx/core.rb +4 -1
  108. data/lib/wx/doc/app.rb +7 -1
  109. data/lib/wx/doc/array_ext.rb +6 -0
  110. data/lib/wx/doc/art_locator.rb +7 -0
  111. data/lib/wx/doc/aui/auimanager.rb +6 -0
  112. data/lib/wx/doc/aui/auinotebook.rb +6 -0
  113. data/lib/wx/doc/bitmap.rb +12 -4
  114. data/lib/wx/doc/brush.rb +6 -0
  115. data/lib/wx/doc/busy_info.rb +6 -0
  116. data/lib/wx/doc/client_dc.rb +6 -0
  117. data/lib/wx/doc/clipboard.rb +6 -0
  118. data/lib/wx/doc/colour_dialog.rb +6 -0
  119. data/lib/wx/doc/config.rb +190 -0
  120. data/lib/wx/doc/const.rb +73 -66
  121. data/lib/wx/doc/controlwithitems.rb +6 -0
  122. data/lib/wx/doc/core.rb +6 -0
  123. data/lib/wx/doc/cursor.rb +13 -5
  124. data/lib/wx/doc/data_object.rb +6 -0
  125. data/lib/wx/doc/datetime.rb +16 -0
  126. data/lib/wx/doc/dc.rb +6 -0
  127. data/lib/wx/doc/enum.rb +8 -1
  128. data/lib/wx/doc/event.rb +6 -0
  129. data/lib/wx/doc/event_blocker.rb +6 -0
  130. data/lib/wx/doc/event_loop.rb +6 -0
  131. data/lib/wx/doc/events.rb +6 -0
  132. data/lib/wx/doc/evthandler.rb +8 -0
  133. data/lib/wx/doc/extra/01_packages.md +52 -51
  134. data/lib/wx/doc/extra/05_event-handling.md +37 -12
  135. data/lib/wx/doc/extra/06_geometry.md +5 -5
  136. data/lib/wx/doc/extra/07_colour_and_font.md +2 -2
  137. data/lib/wx/doc/extra/09_exceptions.md +1 -1
  138. data/lib/wx/doc/extra/10_art.md +18 -12
  139. data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
  140. data/lib/wx/doc/font.rb +6 -0
  141. data/lib/wx/doc/font_data.rb +16 -0
  142. data/lib/wx/doc/functions.rb +18 -10
  143. data/lib/wx/doc/gc_dc.rb +6 -0
  144. data/lib/wx/doc/gdi_common.rb +8 -1
  145. data/lib/wx/doc/graphics_context.rb +59 -39
  146. data/lib/wx/doc/grid/grid.rb +16 -1
  147. data/lib/wx/doc/hboxsizer.rb +33 -0
  148. data/lib/wx/doc/help_controller.rb +6 -0
  149. data/lib/wx/doc/html/html_help_controller.rb +6 -0
  150. data/lib/wx/doc/icon.rb +13 -5
  151. data/lib/wx/doc/id_helper.rb +6 -0
  152. data/lib/wx/doc/image.rb +12 -4
  153. data/lib/wx/doc/list_ctrl.rb +6 -0
  154. data/lib/wx/doc/log.rb +17 -0
  155. data/lib/wx/doc/memory_dc.rb +6 -0
  156. data/lib/wx/doc/mirror_dc.rb +6 -0
  157. data/lib/wx/doc/pen.rb +6 -0
  158. data/lib/wx/doc/pg/events.rb +6 -0
  159. data/lib/wx/doc/pg/pg_property.rb +17 -0
  160. data/lib/wx/doc/pg/pgeditor.rb +6 -0
  161. data/lib/wx/doc/pg/property_grid.rb +6 -0
  162. data/lib/wx/doc/pg/property_grid_interface.rb +6 -0
  163. data/lib/wx/doc/progress_dialog.rb +6 -0
  164. data/lib/wx/doc/prt/page_setup_dialog.rb +6 -0
  165. data/lib/wx/doc/prt/print_data.rb +6 -0
  166. data/lib/wx/doc/prt/print_dialog.rb +6 -0
  167. data/lib/wx/doc/prt/printer.rb +6 -0
  168. data/lib/wx/doc/prt/printer_dc.rb +6 -0
  169. data/lib/wx/doc/radio_box.rb +6 -0
  170. data/lib/wx/doc/rbn/ribbon_bar.rb +6 -0
  171. data/lib/wx/doc/rbn/ribbon_button_bar.rb +6 -0
  172. data/lib/wx/doc/rbn/ribbon_gallery.rb +6 -0
  173. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +6 -0
  174. data/lib/wx/doc/region_iterator.rb +6 -0
  175. data/lib/wx/doc/rtc/richtext_buffer.rb +28 -0
  176. data/lib/wx/doc/rtc/richtext_formatting_dialog.rb +68 -0
  177. data/lib/wx/doc/rtc/richtext_printing.rb +6 -0
  178. data/lib/wx/doc/rtc/richtext_style_sheet.rb +20 -0
  179. data/lib/wx/doc/scaled_dc.rb +6 -0
  180. data/lib/wx/doc/screen_dc.rb +6 -0
  181. data/lib/wx/doc/stock_objects.rb +6 -0
  182. data/lib/wx/doc/stream.rb +6 -0
  183. data/lib/wx/doc/svg_file_dc.rb +6 -0
  184. data/lib/wx/doc/system_settings.rb +6 -0
  185. data/lib/wx/doc/text_validator.rb +6 -0
  186. data/lib/wx/doc/textctrl.rb +89 -0
  187. data/lib/wx/doc/tree_event.rb +20 -0
  188. data/lib/wx/doc/treebook.rb +6 -0
  189. data/lib/wx/doc/v_list_box.rb +6 -0
  190. data/lib/wx/doc/variant.rb +6 -0
  191. data/lib/wx/doc/vboxsizer.rb +33 -0
  192. data/lib/wx/doc/window.rb +11 -0
  193. data/lib/wx/doc/window_disabler.rb +6 -0
  194. data/lib/wx/doc/xml_resource.rb +8 -0
  195. data/lib/wx/global_const.rb +4 -1
  196. data/lib/wx/grid/grid.rb +23 -3
  197. data/lib/wx/grid/keyword_defs.rb +8 -1
  198. data/lib/wx/grid/require.rb +4 -1
  199. data/lib/wx/grid.rb +4 -1
  200. data/lib/wx/helpers.rb +8 -1
  201. data/lib/wx/html/htmlhelpcontroller.rb +29 -3
  202. data/lib/wx/html/htmlwindow.rb +23 -12
  203. data/lib/wx/html/keyword_defs.rb +8 -1
  204. data/lib/wx/html/require.rb +4 -1
  205. data/lib/wx/html/simple_html_listbox.rb +3 -0
  206. data/lib/wx/html.rb +4 -1
  207. data/lib/wx/keyword_ctors.rb +22 -3
  208. data/lib/wx/keyword_defs.rb +96 -7
  209. data/lib/wx/pg/events.rb +4 -1
  210. data/lib/wx/pg/keyword_defs.rb +8 -1
  211. data/lib/wx/pg/pg_editor.rb +3 -0
  212. data/lib/wx/pg/pg_properties.rb +4 -1
  213. data/lib/wx/pg/pg_property.rb +18 -5
  214. data/lib/wx/pg/property_grid.rb +4 -1
  215. data/lib/wx/pg/property_grid_interface.rb +3 -0
  216. data/lib/wx/pg/require.rb +4 -1
  217. data/lib/wx/pg.rb +4 -1
  218. data/lib/wx/prt/keyword_defs.rb +8 -1
  219. data/lib/wx/prt/page_setup_dialog.rb +3 -0
  220. data/lib/wx/prt/previewframe.rb +5 -0
  221. data/lib/wx/prt/require.rb +4 -1
  222. data/lib/wx/prt.rb +4 -1
  223. data/lib/wx/rbn/events.rb +4 -1
  224. data/lib/wx/rbn/keyword_defs.rb +8 -1
  225. data/lib/wx/rbn/require.rb +5 -1
  226. data/lib/wx/rbn/ribbon_art_provider.rb +3 -1
  227. data/lib/wx/rbn/ribbon_bar.rb +3 -0
  228. data/lib/wx/rbn/ribbon_button_bar.rb +3 -0
  229. data/lib/wx/rbn/ribbon_control.rb +3 -0
  230. data/lib/wx/rbn/ribbon_gallery.rb +10 -0
  231. data/lib/wx/rbn/ribbon_page.rb +3 -0
  232. data/lib/wx/rbn/ribbon_panel.rb +3 -0
  233. data/lib/wx/rbn/ribbon_tool_bar.rb +3 -0
  234. data/lib/wx/rbn.rb +4 -1
  235. data/lib/wx/rtc/ext.rb +4 -1
  236. data/lib/wx/rtc/keyword_defs.rb +18 -7
  237. data/lib/wx/rtc/require.rb +8 -1
  238. data/lib/wx/rtc/richtext_buffer.rb +36 -0
  239. data/lib/wx/rtc/richtext_formatting_dialog.rb +88 -0
  240. data/lib/wx/rtc/richtext_style_organiser_dialog.rb +46 -0
  241. data/lib/wx/rtc/symbol_picker_dialog.rb +47 -0
  242. data/lib/wx/rtc.rb +5 -1
  243. data/lib/wx/stc/keyword_defs.rb +8 -1
  244. data/lib/wx/stc/require.rb +4 -1
  245. data/lib/wx/stc.rb +4 -1
  246. data/lib/wx/version.rb +5 -1
  247. data/lib/wx/wxruby/base.rb +4 -1
  248. data/lib/wx/wxruby/cmd/sampler.rb +4 -1
  249. data/lib/wx/wxruby/cmd/test.rb +4 -1
  250. data/lib/wx.rb +4 -1
  251. data/rakelib/build.rake +4 -1
  252. data/rakelib/build.rb +4 -1
  253. data/rakelib/config.rake +4 -1
  254. data/rakelib/configure.rb +4 -1
  255. data/rakelib/doc.rake +4 -1
  256. data/rakelib/doc.rb +5 -1
  257. data/rakelib/install.rake +4 -1
  258. data/rakelib/install.rb +4 -1
  259. data/rakelib/lib/config/cygwin.rb +4 -1
  260. data/rakelib/lib/config/linux.rb +4 -1
  261. data/rakelib/lib/config/macosx.rb +6 -3
  262. data/rakelib/lib/config/mingw.rb +4 -1
  263. data/rakelib/lib/config/netbsd.rb +4 -1
  264. data/rakelib/lib/config/unixish.rb +10 -7
  265. data/rakelib/lib/config.rb +7 -2
  266. data/rakelib/lib/core/include/enum.inc +4 -1
  267. data/rakelib/lib/core/include/funcall.inc +22 -57
  268. data/rakelib/lib/core/include/init.inc +3 -0
  269. data/rakelib/lib/core/include/swigdirector.inc +384 -0
  270. data/rakelib/lib/core/include/swigrubyerrors.inc +161 -0
  271. data/{ext/wxruby3/swig/custom/swig4/rubyrun.swg → rakelib/lib/core/include/swigrubyrun.inc} +245 -120
  272. data/rakelib/lib/core/include/swigrun.inc +700 -0
  273. data/rakelib/lib/core/mapping.rb +26 -46
  274. data/rakelib/lib/core/package.rb +22 -5
  275. data/rakelib/lib/core/parameter.rb +7 -1
  276. data/rakelib/lib/core/spec.rb +14 -8
  277. data/rakelib/lib/core/spec_helper.rb +32 -9
  278. data/rakelib/lib/director/about_dialog_info.rb +4 -1
  279. data/rakelib/lib/director/accelerator.rb +8 -3
  280. data/rakelib/lib/director/animation.rb +5 -2
  281. data/rakelib/lib/director/animation_ctrl.rb +24 -1
  282. data/rakelib/lib/director/any_button.rb +5 -2
  283. data/rakelib/lib/director/app.rb +39 -7
  284. data/rakelib/lib/director/app_traits.rb +71 -0
  285. data/rakelib/lib/director/art_provider.rb +5 -2
  286. data/rakelib/lib/director/aui_dock_art.rb +4 -1
  287. data/rakelib/lib/director/aui_floating_frame.rb +4 -1
  288. data/rakelib/lib/director/aui_manager.rb +12 -5
  289. data/rakelib/lib/director/aui_manager_event.rb +4 -1
  290. data/rakelib/lib/director/aui_mdi_child_frame.rb +25 -1
  291. data/rakelib/lib/director/aui_mdi_client_window.rb +4 -1
  292. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -1
  293. data/rakelib/lib/director/aui_notebook.rb +12 -1
  294. data/rakelib/lib/director/aui_notebook_event.rb +4 -1
  295. data/rakelib/lib/director/aui_pane_info.rb +4 -1
  296. data/rakelib/lib/director/aui_tab_art.rb +52 -1
  297. data/rakelib/lib/director/aui_tab_ctrl.rb +14 -1
  298. data/rakelib/lib/director/aui_toolbar.rb +6 -3
  299. data/rakelib/lib/director/aui_toolbar_art.rb +52 -1
  300. data/rakelib/lib/director/aui_toolbar_event.rb +4 -1
  301. data/rakelib/lib/director/aui_toolbar_item.rb +4 -1
  302. data/rakelib/lib/director/banner_window.rb +26 -0
  303. data/rakelib/lib/director/bitmap.rb +11 -2
  304. data/rakelib/lib/director/bitmap_combobox.rb +5 -1
  305. data/rakelib/lib/director/book_ctrls.rb +13 -3
  306. data/rakelib/lib/director/brush.rb +4 -1
  307. data/rakelib/lib/director/busy_info.rb +4 -1
  308. data/rakelib/lib/director/button.rb +4 -1
  309. data/rakelib/lib/director/calendar_ctrl.rb +4 -1
  310. data/rakelib/lib/director/calendar_date_attr.rb +4 -1
  311. data/rakelib/lib/director/caret.rb +4 -1
  312. data/rakelib/lib/director/check_listbox.rb +4 -1
  313. data/rakelib/lib/director/choice.rb +4 -1
  314. data/rakelib/lib/director/clipboard.rb +4 -1
  315. data/rakelib/lib/director/collapsible_pane.rb +4 -1
  316. data/rakelib/lib/director/collapsible_pane_event.rb +4 -1
  317. data/rakelib/lib/director/colour.rb +9 -1
  318. data/rakelib/lib/director/colour_picker_ctrl.rb +4 -1
  319. data/rakelib/lib/director/combobox.rb +4 -1
  320. data/rakelib/lib/director/comboctrl.rb +94 -0
  321. data/rakelib/lib/director/config_base.rb +135 -0
  322. data/rakelib/lib/director/context_help_button.rb +4 -1
  323. data/rakelib/lib/director/control.rb +4 -1
  324. data/rakelib/lib/director/ctrl_with_items.rb +5 -1
  325. data/rakelib/lib/director/cursor.rb +6 -2
  326. data/rakelib/lib/director/data_format.rb +4 -1
  327. data/rakelib/lib/director/data_object.rb +4 -1
  328. data/rakelib/lib/director/data_object_simple_base.rb +5 -3
  329. data/rakelib/lib/director/date_event.rb +9 -2
  330. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  331. data/rakelib/lib/director/dc.rb +19 -1
  332. data/rakelib/lib/director/defs.rb +4 -1
  333. data/rakelib/lib/director/derived_dc.rb +27 -20
  334. data/rakelib/lib/director/dialog.rb +29 -3
  335. data/rakelib/lib/director/dialup_event.rb +44 -0
  336. data/rakelib/lib/director/dialup_manager.rb +45 -0
  337. data/rakelib/lib/director/dir_filterlist_ctrl.rb +4 -1
  338. data/rakelib/lib/director/dir_picker_ctrl.rb +4 -1
  339. data/rakelib/lib/director/drag_image.rb +9 -2
  340. data/rakelib/lib/director/dragdrop.rb +4 -1
  341. data/rakelib/lib/director/editable_listbox.rb +4 -1
  342. data/rakelib/lib/director/event.rb +29 -3
  343. data/rakelib/lib/director/event_blocker.rb +4 -1
  344. data/rakelib/lib/director/event_filter.rb +4 -1
  345. data/rakelib/lib/director/event_handler.rb +28 -11
  346. data/rakelib/lib/director/event_loop.rb +4 -1
  347. data/rakelib/lib/director/events.rb +5 -2
  348. data/rakelib/lib/director/file_ctrl.rb +35 -0
  349. data/rakelib/lib/director/file_ctrl_event.rb +26 -0
  350. data/rakelib/lib/director/file_dialog_custom_control.rb +28 -0
  351. data/rakelib/lib/director/file_dialog_customize_hook.rb +28 -0
  352. data/rakelib/lib/director/file_picker_ctrl.rb +4 -1
  353. data/rakelib/lib/director/file_system.rb +45 -0
  354. data/rakelib/lib/director/find_dialog_event.rb +4 -1
  355. data/rakelib/lib/director/find_replace_data.rb +4 -1
  356. data/rakelib/lib/director/font.rb +7 -3
  357. data/rakelib/lib/director/font_data.rb +9 -1
  358. data/rakelib/lib/director/font_picker_ctrl.rb +4 -1
  359. data/rakelib/lib/director/frame.rb +45 -33
  360. data/rakelib/lib/director/fs_file.rb +52 -1
  361. data/rakelib/lib/director/functions.rb +11 -5
  362. data/rakelib/lib/director/gdi_object.rb +4 -1
  363. data/rakelib/lib/director/gdicommon.rb +33 -10
  364. data/rakelib/lib/director/generic_dirctrl.rb +4 -1
  365. data/rakelib/lib/director/graphics_context.rb +113 -18
  366. data/rakelib/lib/director/graphics_object.rb +13 -2
  367. data/rakelib/lib/director/grid_cell_attr.rb +28 -4
  368. data/rakelib/lib/director/grid_cell_editor.rb +28 -11
  369. data/rakelib/lib/director/grid_cell_renderer.rb +16 -3
  370. data/rakelib/lib/director/grid_ctrl.rb +146 -5
  371. data/rakelib/lib/director/grid_range_select_event.rb +4 -1
  372. data/rakelib/lib/director/grid_table_base.rb +6 -1
  373. data/rakelib/lib/director/grid_table_message.rb +4 -1
  374. data/rakelib/lib/director/header_ctrl.rb +37 -0
  375. data/rakelib/lib/director/help_controller.rb +14 -7
  376. data/rakelib/lib/director/help_provider.rb +4 -1
  377. data/rakelib/lib/director/html_cell.rb +10 -3
  378. data/rakelib/lib/director/html_data_object.rb +4 -1
  379. data/rakelib/lib/director/html_easy_printing.rb +4 -1
  380. data/rakelib/lib/director/html_event.rb +4 -1
  381. data/rakelib/lib/director/html_help_data.rb +4 -1
  382. data/rakelib/lib/director/html_help_window.rb +30 -0
  383. data/rakelib/lib/director/html_listbox.rb +4 -1
  384. data/rakelib/lib/director/html_printout.rb +6 -1
  385. data/rakelib/lib/director/html_window.rb +10 -8
  386. data/rakelib/lib/director/hyperlink_ctrl.rb +32 -0
  387. data/rakelib/lib/director/hyperlink_event.rb +4 -1
  388. data/rakelib/lib/director/icon.rb +4 -1
  389. data/rakelib/lib/director/image.rb +26 -3
  390. data/rakelib/lib/director/image_list.rb +5 -1
  391. data/rakelib/lib/director/info_bar.rb +26 -0
  392. data/rakelib/lib/director/list_ctrl.rb +39 -7
  393. data/rakelib/lib/director/listbox.rb +4 -1
  394. data/rakelib/lib/director/locale.rb +7 -4
  395. data/rakelib/lib/director/log.rb +51 -6
  396. data/rakelib/lib/director/mdi_frame.rb +4 -1
  397. data/rakelib/lib/director/media_ctrl.rb +4 -1
  398. data/rakelib/lib/director/menu.rb +16 -3
  399. data/rakelib/lib/director/menu_bar.rb +13 -2
  400. data/rakelib/lib/director/menu_item.rb +6 -6
  401. data/rakelib/lib/director/mouse_state.rb +5 -2
  402. data/rakelib/lib/director/numeric_property_validator.rb +4 -1
  403. data/rakelib/lib/director/object.rb +5 -2
  404. data/rakelib/lib/director/page_setup_dialog.rb +4 -1
  405. data/rakelib/lib/director/palette.rb +54 -2
  406. data/rakelib/lib/director/panel.rb +4 -1
  407. data/rakelib/lib/director/pen.rb +5 -2
  408. data/rakelib/lib/director/pgarray_editor_dialog.rb +4 -7
  409. data/rakelib/lib/director/pgcell.rb +4 -1
  410. data/rakelib/lib/director/pgeditor.rb +6 -3
  411. data/rakelib/lib/director/pgmulti_button.rb +4 -1
  412. data/rakelib/lib/director/pgproperties.rb +6 -3
  413. data/rakelib/lib/director/pgproperty.rb +42 -3
  414. data/rakelib/lib/director/pgvalidation_info.rb +9 -1
  415. data/rakelib/lib/director/pickerbase.rb +4 -1
  416. data/rakelib/lib/director/platform_info.rb +9 -1
  417. data/rakelib/lib/director/popup_window.rb +14 -1
  418. data/rakelib/lib/director/preview_frame.rb +5 -2
  419. data/rakelib/lib/director/print_data.rb +4 -1
  420. data/rakelib/lib/director/print_dialog.rb +4 -1
  421. data/rakelib/lib/director/printer.rb +14 -6
  422. data/rakelib/lib/director/property_grid.rb +30 -1
  423. data/rakelib/lib/director/property_grid_event.rb +11 -1
  424. data/rakelib/lib/director/property_grid_interface.rb +20 -6
  425. data/rakelib/lib/director/property_grid_manager.rb +4 -1
  426. data/rakelib/lib/director/property_grid_page.rb +4 -1
  427. data/rakelib/lib/director/property_grid_page_state.rb +4 -1
  428. data/rakelib/lib/director/radio_box.rb +4 -1
  429. data/rakelib/lib/director/rearrange_list.rb +36 -0
  430. data/rakelib/lib/director/region.rb +5 -1
  431. data/rakelib/lib/director/region_iterator.rb +4 -1
  432. data/rakelib/lib/director/ribbon_art_provider.rb +9 -1
  433. data/rakelib/lib/director/ribbon_bar.rb +4 -1
  434. data/rakelib/lib/director/ribbon_bar_event.rb +4 -1
  435. data/rakelib/lib/director/ribbon_button_bar.rb +4 -1
  436. data/rakelib/lib/director/ribbon_button_bar_event.rb +4 -1
  437. data/rakelib/lib/director/ribbon_ctrl.rb +4 -1
  438. data/rakelib/lib/director/ribbon_gallery.rb +8 -3
  439. data/rakelib/lib/director/ribbon_gallery_event.rb +4 -1
  440. data/rakelib/lib/director/ribbon_page.rb +4 -1
  441. data/rakelib/lib/director/ribbon_panel.rb +4 -1
  442. data/rakelib/lib/director/ribbon_panel_event.rb +4 -1
  443. data/rakelib/lib/director/ribbon_tool_bar.rb +4 -1
  444. data/rakelib/lib/director/ribbon_tool_bar_event.rb +4 -1
  445. data/rakelib/lib/director/richtext_box.rb +61 -0
  446. data/rakelib/lib/director/richtext_buffer.rb +219 -22
  447. data/rakelib/lib/director/richtext_buffer_data_object.rb +4 -1
  448. data/rakelib/lib/director/richtext_composite_object.rb +174 -0
  449. data/rakelib/lib/director/richtext_ctrl.rb +157 -4
  450. data/rakelib/lib/director/richtext_event.rb +4 -1
  451. data/rakelib/lib/director/richtext_file_handler.rb +13 -1
  452. data/rakelib/lib/director/richtext_formatting_dialog.rb +44 -0
  453. data/rakelib/lib/director/richtext_header_footer_data.rb +4 -1
  454. data/rakelib/lib/director/richtext_image.rb +56 -0
  455. data/rakelib/lib/director/richtext_object.rb +272 -0
  456. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +178 -0
  457. data/rakelib/lib/director/richtext_printing.rb +4 -1
  458. data/rakelib/lib/director/richtext_style_listbox.rb +37 -0
  459. data/rakelib/lib/director/richtext_style_organiser_dialog.rb +28 -0
  460. data/rakelib/lib/director/sash_event.rb +42 -0
  461. data/rakelib/lib/director/sash_layout_event.rb +4 -1
  462. data/rakelib/lib/director/sash_layout_window.rb +4 -1
  463. data/rakelib/lib/director/sash_window.rb +4 -1
  464. data/rakelib/lib/director/scroll_bar.rb +4 -1
  465. data/rakelib/lib/director/scrolled_t.rb +7 -4
  466. data/rakelib/lib/director/searchctrl.rb +4 -1
  467. data/rakelib/lib/director/sizer.rb +68 -2
  468. data/rakelib/lib/director/sizer_item.rb +31 -3
  469. data/rakelib/lib/director/slider.rb +4 -1
  470. data/rakelib/lib/director/splash_screen.rb +4 -1
  471. data/rakelib/lib/director/splitter_event.rb +4 -1
  472. data/rakelib/lib/director/splitter_window.rb +4 -1
  473. data/rakelib/lib/director/static_bitmap.rb +4 -1
  474. data/rakelib/lib/director/static_box.rb +5 -2
  475. data/rakelib/lib/director/status_bar.rb +5 -1
  476. data/rakelib/lib/director/styled_text_ctrl.rb +14 -2
  477. data/rakelib/lib/director/styled_text_event.rb +4 -1
  478. data/rakelib/lib/director/system_options.rb +4 -1
  479. data/rakelib/lib/director/system_settings.rb +4 -1
  480. data/rakelib/lib/director/task_bar_icon.rb +5 -2
  481. data/rakelib/lib/director/text_attr.rb +5 -2
  482. data/rakelib/lib/director/text_entry.rb +4 -1
  483. data/rakelib/lib/director/text_validator.rb +6 -1
  484. data/rakelib/lib/director/textctrl.rb +32 -3
  485. data/rakelib/lib/director/time_picker_ctrl.rb +4 -1
  486. data/rakelib/lib/director/timer.rb +4 -1
  487. data/rakelib/lib/director/tip_provider.rb +4 -1
  488. data/rakelib/lib/director/toggle_button.rb +4 -1
  489. data/rakelib/lib/director/tool_bar.rb +20 -1
  490. data/rakelib/lib/director/tool_tip.rb +5 -2
  491. data/rakelib/lib/director/top_level_window.rb +58 -51
  492. data/rakelib/lib/director/tree_ctrl.rb +24 -46
  493. data/rakelib/lib/director/tree_event.rb +28 -10
  494. data/rakelib/lib/director/uiaction_simulator.rb +4 -1
  495. data/rakelib/lib/director/utils.rb +9 -1
  496. data/rakelib/lib/director/validator.rb +4 -1
  497. data/rakelib/lib/director/variant.rb +5 -2
  498. data/rakelib/lib/director/vlistbox.rb +4 -1
  499. data/rakelib/lib/director/vscrolled_window.rb +4 -1
  500. data/rakelib/lib/director/window.rb +81 -82
  501. data/rakelib/lib/director/window_disabler.rb +4 -1
  502. data/rakelib/lib/director/with_images.rb +5 -2
  503. data/rakelib/lib/director/wizard_page.rb +4 -1
  504. data/rakelib/lib/director/xml_node.rb +4 -1
  505. data/rakelib/lib/director/xml_resource.rb +4 -1
  506. data/rakelib/lib/director.rb +27 -28
  507. data/rakelib/lib/ext/enum_chain.rb +4 -1
  508. data/rakelib/lib/extractor/class.rb +8 -6
  509. data/rakelib/lib/extractor/enum.rb +15 -2
  510. data/rakelib/lib/extractor/function.rb +12 -4
  511. data/rakelib/lib/extractor/module.rb +4 -1
  512. data/rakelib/lib/extractor/variable.rb +4 -1
  513. data/rakelib/lib/extractor.rb +7 -2
  514. data/rakelib/lib/generate/analyzer.rb +31 -21
  515. data/rakelib/lib/generate/base.rb +4 -1
  516. data/rakelib/lib/generate/doc/animation_ctrl.yaml +15 -0
  517. data/rakelib/lib/generate/doc/events.yaml +10 -4
  518. data/rakelib/lib/generate/doc/grid_cell_attr.yaml +21 -0
  519. data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
  520. data/rakelib/lib/generate/doc/html_cell.yaml +11 -0
  521. data/rakelib/lib/generate/doc/html_help_controller.yaml +23 -0
  522. data/rakelib/lib/generate/doc/html_help_window.yaml +21 -0
  523. data/rakelib/lib/generate/doc/html_window.yaml +47 -0
  524. data/rakelib/lib/generate/doc/pg_editor.yaml +11 -0
  525. data/rakelib/lib/generate/doc/pg_multi_button.yaml +78 -0
  526. data/rakelib/lib/generate/doc/pg_properties.yaml +244 -0
  527. data/rakelib/lib/generate/doc/pg_property.yaml +188 -0
  528. data/rakelib/lib/generate/doc/property_grid.yaml +23 -0
  529. data/rakelib/lib/generate/doc/property_grid_interface.yaml +30 -0
  530. data/rakelib/lib/generate/doc/property_grid_manager.yaml +40 -0
  531. data/rakelib/lib/generate/doc/rich_text_html_handler.yaml +11 -0
  532. data/rakelib/lib/generate/doc/static_box.yaml +8 -0
  533. data/rakelib/lib/generate/doc/styled_text_ctrl.yaml +18 -0
  534. data/rakelib/lib/generate/doc/symbol_picker_dialog.yaml +40 -0
  535. data/rakelib/lib/generate/doc/xml_resource.yaml +3 -0
  536. data/rakelib/lib/generate/doc.rb +33 -6
  537. data/rakelib/lib/generate/interface.rb +80 -110
  538. data/rakelib/lib/generate/rakedep.rb +4 -1
  539. data/rakelib/lib/specs/interfaces.rb +50 -21
  540. data/rakelib/lib/streams.rb +5 -1
  541. data/rakelib/lib/swig_runner.rb +38 -72
  542. data/rakelib/lib/typemap/array_int_selections.rb +4 -1
  543. data/rakelib/lib/typemap/common.rb +81 -11
  544. data/rakelib/lib/typemap/config.rb +55 -0
  545. data/rakelib/lib/typemap/data_format.rb +5 -2
  546. data/rakelib/lib/typemap/data_object_data.rb +6 -3
  547. data/rakelib/lib/typemap/datetime.rb +8 -1
  548. data/rakelib/lib/typemap/grid_client_data.rb +4 -1
  549. data/rakelib/lib/typemap/grid_coords.rb +37 -7
  550. data/rakelib/lib/typemap/html_cell.rb +4 -1
  551. data/rakelib/lib/typemap/io_streams.rb +4 -1
  552. data/rakelib/lib/typemap/pgcell.rb +4 -1
  553. data/rakelib/lib/typemap/pgeditor.rb +4 -1
  554. data/rakelib/lib/typemap/pgprop_arg.rb +11 -3
  555. data/rakelib/lib/typemap/pgproperty.rb +4 -1
  556. data/rakelib/lib/typemap/points_list.rb +9 -8
  557. data/rakelib/lib/typemap/richtext.rb +185 -11
  558. data/rakelib/lib/typemap/tree_itemid.rb +26 -1
  559. data/rakelib/lib/util/string.rb +14 -9
  560. data/rakelib/prepost.rake +4 -1
  561. data/rakelib/prepost.rb +4 -1
  562. data/rakelib/run.rake +4 -1
  563. data/samples/aui/aui.rb +8 -3
  564. data/samples/bigdemo/bigdemo.rb +9 -2
  565. data/samples/bigdemo/run.rb +9 -2
  566. data/samples/bigdemo/utils.rb +9 -1
  567. data/samples/calendar/calendar.rb +9 -4
  568. data/samples/caret/caret.rb +8 -3
  569. data/samples/controls/books.rb +8 -2
  570. data/samples/controls/controls.rb +33 -77
  571. data/samples/controls/get_item_sample.rb +8 -2
  572. data/samples/controls/htlbox.rb +10 -3
  573. data/samples/dialogs/dialogs.rb +9 -4
  574. data/samples/dialogs/wizard.rb +8 -3
  575. data/samples/dragdrop/dragdrop.rb +8 -3
  576. data/samples/drawing/bitmap.rb +8 -3
  577. data/samples/drawing/bitmap_image.rb +8 -3
  578. data/samples/drawing/graphics_drawing.rb +44 -33
  579. data/samples/drawing/image_prt.rb +8 -2
  580. data/samples/drawing/maths_images.rb +8 -3
  581. data/samples/drawing/rmagic_bitmap_image.rb +8 -3
  582. data/samples/etc/choice.rb +8 -3
  583. data/samples/etc/miniframe.rb +8 -3
  584. data/samples/etc/sash.rb +8 -3
  585. data/samples/etc/scrollwin.rb +8 -3
  586. data/samples/etc/system_settings.rb +8 -3
  587. data/samples/event/activation.rb +8 -3
  588. data/samples/event/event.rb +8 -3
  589. data/samples/event/threaded.rb +8 -3
  590. data/samples/event/update_ui_event.rb +8 -3
  591. data/samples/grid/grid.rb +9 -3
  592. data/samples/grid/gridtablebase.rb +8 -3
  593. data/samples/html/html.rb +8 -3
  594. data/samples/mdi/mdi.rb +8 -3
  595. data/samples/minimal/minimal.rb +8 -3
  596. data/samples/minimal/nothing.rb +8 -3
  597. data/samples/printing/printing.rb +8 -3
  598. data/samples/printing/printing2.rb +8 -2
  599. data/samples/propgrid/propgrid.rb +4 -1
  600. data/samples/propgrid/propgrid_minimal.rb +4 -2
  601. data/samples/propgrid/sample_props.rb +4 -1
  602. data/samples/ribbon/ribbon.rb +4 -1
  603. data/samples/sampler/editor.rb +4 -1
  604. data/samples/sampler/ext.rb +4 -1
  605. data/samples/sampler/sample.rb +13 -4
  606. data/samples/sampler/stc_editor.rb +4 -1
  607. data/samples/sampler/txt_editor.rb +4 -1
  608. data/samples/sampler.rb +11 -3
  609. data/samples/splash/splash.rb +4 -2
  610. data/samples/text/art/richtext/alignleft.xpm +24 -0
  611. data/samples/text/art/richtext/alignright.xpm +24 -0
  612. data/samples/text/art/richtext/bold.xpm +24 -0
  613. data/samples/text/art/richtext/centre.xpm +24 -0
  614. data/samples/text/art/richtext/copy.xpm +45 -0
  615. data/samples/text/art/richtext/cut.xpm +47 -0
  616. data/samples/text/art/richtext/font.xpm +25 -0
  617. data/samples/text/art/richtext/idea.xpm +47 -0
  618. data/samples/text/art/richtext/indentless.xpm +25 -0
  619. data/samples/text/art/richtext/indentmore.xpm +25 -0
  620. data/samples/text/art/richtext/italic.xpm +25 -0
  621. data/samples/text/art/richtext/open.xpm +58 -0
  622. data/samples/text/art/richtext/paste.xpm +47 -0
  623. data/samples/text/art/richtext/redo.xpm +59 -0
  624. data/samples/text/art/richtext/save.xpm +43 -0
  625. data/samples/text/art/richtext/smiley.xpm +42 -0
  626. data/samples/text/art/richtext/underline.xpm +25 -0
  627. data/samples/text/art/richtext/undo.xpm +59 -0
  628. data/samples/text/art/richtext/zebra.xpm +409 -0
  629. data/samples/text/rich_textctrl.rb +8 -3
  630. data/samples/text/richtext.rb +1794 -0
  631. data/samples/text/scintilla.rb +8 -3
  632. data/samples/text/textctrl.rb +21 -4
  633. data/samples/text/tn_richtext.png +0 -0
  634. data/samples/text/unicode.rb +9 -4
  635. data/samples/treectrl/treectrl.rb +10 -5
  636. data/samples/xrc/custom_xrc_sample.rb +8 -3
  637. data/samples/xrc/xrc_sample.rb +8 -3
  638. data/tests/art/test_art/bitmap/wxruby-128x128.png +0 -0
  639. data/tests/art/test_art/bitmap/wxruby-256x256.png +0 -0
  640. data/tests/art/test_art/bitmap/wxruby-64x64.png +0 -0
  641. data/tests/lib/item_container_tests.rb +3 -0
  642. data/tests/lib/text_entry_tests.rb +3 -0
  643. data/tests/lib/wxapp_runner.rb +3 -0
  644. data/tests/lib/wxframe_runner.rb +81 -3
  645. data/tests/test_app_event_filter.rb +3 -0
  646. data/tests/test_app_exit_exception.rb +36 -0
  647. data/tests/test_app_init_exception.rb +20 -0
  648. data/tests/test_app_traits.rb +33 -0
  649. data/tests/test_art.rb +22 -0
  650. data/tests/test_art_provider.rb +3 -0
  651. data/tests/test_aui.rb +65 -0
  652. data/tests/test_basic.rb +5 -1
  653. data/tests/test_book_controls.rb +29 -0
  654. data/tests/test_box_sizer.rb +5 -2
  655. data/tests/test_clipboard.rb +3 -0
  656. data/tests/test_config.rb +150 -0
  657. data/tests/test_dc.rb +3 -0
  658. data/tests/test_dialog.rb +3 -0
  659. data/tests/test_event_handling.rb +3 -0
  660. data/tests/test_events.rb +3 -0
  661. data/tests/test_exceptions.rb +41 -0
  662. data/tests/test_ext_controls.rb +286 -3
  663. data/tests/test_file_dialog.rb +55 -0
  664. data/tests/test_font.rb +8 -5
  665. data/tests/test_gdi_object.rb +3 -0
  666. data/tests/test_geometry.rb +4 -0
  667. data/tests/test_grid_sizer.rb +7 -4
  668. data/tests/test_intl.rb +3 -0
  669. data/tests/test_item_data.rb +3 -0
  670. data/tests/test_list_ctrl.rb +4 -1
  671. data/tests/test_log.rb +63 -0
  672. data/tests/test_proof_check.rb +52 -0
  673. data/tests/test_richtext.rb +204 -0
  674. data/tests/test_sizer.rb +43 -0
  675. data/tests/test_std_controls.rb +81 -35
  676. data/tests/test_timer.rb +3 -0
  677. data/tests/test_variant.rb +3 -0
  678. data/tests/test_window.rb +10 -8
  679. data/tests/testapp.rb +4 -0
  680. data/tests/testapp_noframe.rb +4 -0
  681. metadata +112 -5
  682. data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +0 -456
  683. data/rakelib/lib/director/html_help_frame.rb +0 -25
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 typemap mapping classes
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require 'set'
@@ -42,7 +45,7 @@ module WXRuby3
42
45
  elsif STD_STR_TYPES.include?(std_type)
43
46
  'String'
44
47
  elsif STD_BOOL_TYPES.include?(std_type)
45
- 'true,false'
48
+ 'Boolean'
46
49
  else
47
50
  nil
48
51
  end
@@ -270,7 +273,7 @@ module WXRuby3
270
273
  end
271
274
 
272
275
  class ArgOut < Base
273
- def initialize(map, as: nil, temp: nil, code: nil, &block)
276
+ def initialize(map, as: nil, by_ref: false, temp: nil, code: nil, &block)
274
277
  super(map, temp: nil, code: code)
275
278
  @as = {}
276
279
  if as
@@ -278,10 +281,11 @@ module WXRuby3
278
281
  elsif !map.types.empty?
279
282
  map.types.each_pair { |pset, type| @as[pset] = _get_mapped_type(type) }
280
283
  end
284
+ @by_ref = by_ref
281
285
  block.call(self) if block
282
286
  end
283
287
 
284
- attr_reader :as
288
+ attr_reader :as, :by_ref
285
289
 
286
290
  def map_as(argdef)
287
291
  _map_args(argdef, @as)
@@ -434,8 +438,8 @@ module WXRuby3
434
438
  @check = FreeArg.new(self, temp: temp, code: code, &block)
435
439
  end
436
440
 
437
- def map_argout(as: nil, temp: nil, code: nil, &block)
438
- @argout = ArgOut.new(self, as: as, temp: temp, code: code, &block)
441
+ def map_argout(as: nil, by_ref: false, temp: nil, code: nil, &block)
442
+ @argout = ArgOut.new(self, as: as, by_ref: by_ref, temp: temp, code: code, &block)
439
443
  end
440
444
 
441
445
  def map_directorin(temp: nil, code: nil, &block)
@@ -510,7 +514,7 @@ module WXRuby3
510
514
  # shift mapped parameters
511
515
  parameters.shift(tm_pset.param_masks.size)
512
516
  # return mappings
513
- return [in_arg, out_arg]
517
+ return [in_arg, out_arg, self]
514
518
  end
515
519
  end
516
520
  nil
@@ -518,9 +522,6 @@ module WXRuby3
518
522
 
519
523
  def map_output(type)
520
524
  if maps_output?
521
- if ignores_output? && ignored_output.include?(type)
522
- return ''
523
- end
524
525
  if (tm_pset = @patterns.detect { |pset| pset == type })
525
526
  return @out.to.has_key?(tm_pset) ? @out.to[tm_pset].type : ''
526
527
  end
@@ -541,15 +542,11 @@ module WXRuby3
541
542
  end
542
543
 
543
544
  def maps_input_as_output?
544
- !!@argout
545
- end
546
-
547
- def ignores_output?
548
- @out && @out.ignore?
545
+ @argout && !@argout.by_ref
549
546
  end
550
547
 
551
- def ignored_output
552
- @out ? @out.ignored : []
548
+ def ignores_output?(type)
549
+ @out && @out.ignore? && @out.ignored.include?(type)
553
550
  end
554
551
 
555
552
  def to_swig
@@ -570,7 +567,7 @@ module WXRuby3
570
567
  @directorin,
571
568
  @directorargout,
572
569
  @varout]
573
- maps << @directorout unless ignores_output?
570
+ maps << @directorout unless @out && @out.ignore?
574
571
  s.concat maps.collect { |mapping| mapping ? mapping.to_swig : nil }.compact
575
572
  else
576
573
  []
@@ -659,7 +656,7 @@ module WXRuby3
659
656
  # shift mapped parameters
660
657
  parameters.shift(@src_pattern.param_masks.size)
661
658
  # return mappings
662
- return [in_arg, out_arg]
659
+ return [in_arg, out_arg, tm_app]
663
660
  end
664
661
  end
665
662
  nil
@@ -667,9 +664,6 @@ module WXRuby3
667
664
 
668
665
  def map_output(type)
669
666
  if maps_output?
670
- if ignores_output? && ignored_output.include?(type)
671
- return ''
672
- end
673
667
  return @applied_maps.detect { |tm| tm.maps_output? }.map_output(type)
674
668
  end
675
669
  nil
@@ -691,14 +685,6 @@ module WXRuby3
691
685
  @applied_maps ? @applied_maps.any? { |map| map.maps_input_as_output? } : false
692
686
  end
693
687
 
694
- def ignores_output?
695
- @applied_maps ? @applied_maps.any? { |map| map.ignores_output? } : false
696
- end
697
-
698
- def ignored_output
699
- ignores_output? ? @applied_maps.detect { |map| map.ignores_output? }.ignored_output : []
700
- end
701
-
702
688
  def to_swig
703
689
  "%apply #{@src_pattern} { #{@patterns.join(', ')} };"
704
690
  end
@@ -774,7 +760,7 @@ module WXRuby3
774
760
  # shift mapped parameters
775
761
  parameters.shift(tm_pset.param_masks.size)
776
762
  # return mappings
777
- return [in_arg, out_arg]
763
+ return [in_arg, out_arg, self]
778
764
  end
779
765
  end
780
766
  nil
@@ -803,14 +789,10 @@ module WXRuby3
803
789
  @maps_out
804
790
  end
805
791
 
806
- def ignores_output?
792
+ def ignores_output?(_)
807
793
  false
808
794
  end
809
795
 
810
- def ignored_output
811
- []
812
- end
813
-
814
796
  def to_swig
815
797
  nil
816
798
  end
@@ -859,7 +841,7 @@ module WXRuby3
859
841
  if @pattern.param_masks.first == parameters.first
860
842
  # just 'map' the parameter to itself
861
843
  param = parameters.shift # loose the 'mapped' parameter
862
- return [RubyArg[nil, param_offset], nil]
844
+ return [RubyArg[nil, param_offset], nil, self]
863
845
  end
864
846
  nil
865
847
  end
@@ -887,14 +869,10 @@ module WXRuby3
887
869
  false
888
870
  end
889
871
 
890
- def ignores_output?
872
+ def ignores_output?(_)
891
873
  false
892
874
  end
893
875
 
894
- def ignored_output
895
- []
896
- end
897
-
898
876
  def to_swig
899
877
  "%clear #{@pattern};"
900
878
  end
@@ -990,14 +968,15 @@ module WXRuby3
990
968
  param_offset = 0
991
969
  args = []
992
970
  ret = []
971
+ maps = []
993
972
  reverse_list = list.reverse_each
994
973
  while !parameters.empty?
995
974
  result = nil
996
975
  param_count = parameters.size
997
976
  reverse_list.detect { |map| result = map.map_input(parameters, param_offset) }
998
- arg_in = arg_out = nil
977
+ arg_in = arg_out = tmap = nil
999
978
  if result
1000
- arg_in, arg_out = result
979
+ arg_in, arg_out, tmap = result
1001
980
  else
1002
981
  arg_in = RubyArg.new(nil, param_offset)
1003
982
  parameters.shift # loose the mapped param
@@ -1005,10 +984,11 @@ module WXRuby3
1005
984
  # store mapped param
1006
985
  args << arg_in if arg_in
1007
986
  ret << arg_out if arg_out
987
+ maps << tmap if tmap
1008
988
  # calculate new param offset
1009
989
  param_offset += (param_count - parameters.size)
1010
990
  end
1011
- [args, ret]
991
+ [args, ret, maps]
1012
992
  end
1013
993
 
1014
994
  def map_output(type)
@@ -1032,7 +1012,7 @@ module WXRuby3
1032
1012
  STD_INT_TYPES => 'Integer',
1033
1013
  STD_STR_TYPES => 'String',
1034
1014
  STD_FLOAT_TYPES => 'Float',
1035
- STD_BOOL_TYPES => 'true,false'
1015
+ STD_BOOL_TYPES => 'Boolean'
1036
1016
  }.inject(Typemap::Collection.new) do |list, (ctypes, rbtype)|
1037
1017
  unless rbtype == 'String'
1038
1018
  list << SystemMap.new(*ctypes.collect { |t| ["#{t} * OUTPUT", "#{t} & OUTPUT"]}.flatten,
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 extension library Package class
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -15,13 +18,14 @@ module WXRuby3
15
18
  @name = name
16
19
  @parent = parent
17
20
  @required_features = ::Set.new
21
+ @dependencies = ::Set.new
18
22
  @directors = []
19
23
  @director_index = {}
20
24
  @subpackages = {}
21
25
  @event_docs = {}
22
26
  end
23
27
 
24
- attr_reader :name, :parent, :required_features, :directors, :director_index, :subpackages, :event_docs
28
+ attr_reader :name, :parent, :required_features, :dependencies, :directors, :director_index, :subpackages, :event_docs
25
29
 
26
30
  def is_core?
27
31
  name == 'Wx' && !parent
@@ -88,6 +92,11 @@ module WXRuby3
88
92
  self
89
93
  end
90
94
 
95
+ def depends_on(*pkgs)
96
+ dependencies.merge(pkgs.flatten)
97
+ self
98
+ end
99
+
91
100
  def add_director(spec)
92
101
  dir = spec.director.new(spec)
93
102
  director_index[spec.name] = dir
@@ -102,6 +111,7 @@ module WXRuby3
102
111
  def director_for_class(class_name)
103
112
  dir = included_directors.detect { |dir| dir.spec.module_name == class_name || dir.spec.items.include?(class_name) }
104
113
  subpackages.each_value.detect { |spkg| dir = spkg.director_for_class(class_name) } if dir.nil?
114
+ dependencies.detect { |pkgdep| dir = pkgdep.director_for_class(class_name) } if dir.nil?
105
115
  dir = parent.director_for_class(class_name) if dir.nil? && parent
106
116
  dir
107
117
  end
@@ -145,7 +155,11 @@ module WXRuby3
145
155
  end
146
156
 
147
157
  def dep_libs
148
- parent ? parent.dep_libs + [File.join(Config.instance.dest_dir, "#{parent.libname}.#{Config.instance.dll_ext}")] : []
158
+ if parent
159
+ parent.dep_libs + [File.join(Config.instance.dest_dir, "#{parent.libname}.#{Config.instance.dll_ext}")]
160
+ else
161
+ []
162
+ end
149
163
  end
150
164
 
151
165
  def dep_libnames
@@ -268,6 +282,7 @@ module WXRuby3
268
282
  Stream.transaction do
269
283
  fsrc = CodeStream.new(initializer_src)
270
284
  fsrc.puts '#include <ruby.h>'
285
+ fsrc.puts '#include <ruby/version.h>'
271
286
  fsrc.puts <<~__HEREDOC
272
287
  #ifndef WXRB_EXPORT_FLAG
273
288
  # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
@@ -305,9 +320,11 @@ module WXRuby3
305
320
  fsrc.puts "VALUE #{module_variable} = 0;"
306
321
  fsrc.puts "WXRB_IMPORT_FLAG VALUE wxRuby_Core();" unless is_core?
307
322
  fsrc.puts
308
- fsrc.puts '#define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)'
309
- fsrc.puts
310
323
  if is_core?
324
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrun.inc'))
325
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrubyerrors.inc'))
326
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrubyrun.inc'))
327
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigdirector.inc'))
311
328
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'funcall.inc'))
312
329
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'enum.inc'))
313
330
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'init.inc'))
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 typemap Parameter class
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -13,6 +16,9 @@ module WXRuby3
13
16
  CONST_RE = /(\A|\W)const(\W|\Z)/
14
17
  MULTI_WORD_TYPES = %w[char short int long]
15
18
  def initialize(param)
19
+ # prevent unwanted splitting on whitespaces in template type decls
20
+ param = param.gsub(/\<\s+/, '<')
21
+ param.gsub!(/\s+\>/, '>')
16
22
  @array = false
17
23
  if ::Array === param
18
24
  @ctype, @name, arr = param
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 Director specs class
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './mapping'
@@ -61,7 +64,6 @@ module WXRuby3
61
64
  @disowns = ::Set.new
62
65
  @new_objects = ::Set.new
63
66
  @warn_filters = ::Hash.new
64
- @only_for = ::Hash.new
65
67
  @includes = ::Set.new
66
68
  @swig_imports = {prepend: ::Set.new, append: ::Set.new}
67
69
  @swig_includes = ::Set.new
@@ -82,7 +84,7 @@ module WXRuby3
82
84
  end
83
85
 
84
86
  attr_reader :director, :package, :module_name, :name, :items, :folded_bases, :ignores, :regards, :readonly, :contracts, :event_overrides,
85
- :mixins, :included_mixins, :disabled_proxies, :no_proxies, :disowns, :new_objects, :warn_filters, :only_for,
87
+ :mixins, :included_mixins, :disabled_proxies, :no_proxies, :disowns, :new_objects, :warn_filters,
86
88
  :includes, :swig_imports, :swig_includes, :renames, :swig_code, :begin_code,
87
89
  :runtime_code, :header_code, :wrapper_code, :extend_code, :init_code, :interface_code,
88
90
  :nogen_sections, :post_processors, :requirements, :type_maps
@@ -135,6 +137,15 @@ module WXRuby3
135
137
  (!doc || doc_override) ? supers : nil
136
138
  end
137
139
 
140
+ def is_derived_from?(class_def, base_name)
141
+ base = inheritance_override(class_def.name)
142
+ if base
143
+ !!Extractor::ClassDef.find_base({base.name => base}, base_name)
144
+ else
145
+ class_def.is_derived_from?(base_name)
146
+ end
147
+ end
148
+
138
149
  def extend_interface(cls, *declarations, visibility: 'public')
139
150
  ((@interface_extensions[cls] ||= {})[visibility] ||= ::Set.new).merge declarations.flatten
140
151
  self
@@ -386,11 +397,6 @@ module WXRuby3
386
397
  self
387
398
  end
388
399
 
389
- def set_only_for(id, *names)
390
- (@only_for[id.to_s] ||= ::Set.new).merge(names.flatten)
391
- self
392
- end
393
-
394
400
  def include(*paths)
395
401
  @includes.merge(paths.flatten)
396
402
  self
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 Director specs helper mixin.
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require 'pathname'
@@ -99,21 +102,21 @@ module WXRuby3
99
102
  end
100
103
  end
101
104
 
102
- def get_base_list(hierarchy, foldedbases, list = ::Set.new)
105
+ def get_base_list(hierarchy, foldedbases, list = ::Set.new, do_not_fold: false)
103
106
  hierarchy.each_value do |super_def|
104
- list << super_def.name unless foldedbases.include?(super_def.name)
105
- get_base_list(super_def.supers, folded_bases(super_def.name), list)
107
+ list << super_def.name unless !do_not_fold && foldedbases.include?(super_def.name)
108
+ get_base_list(super_def.supers, do_not_fold ? [] : folded_bases(super_def.name), list, do_not_fold: do_not_fold)
106
109
  end
107
110
  list
108
111
  end
109
112
  private :get_base_list
110
113
 
111
- def base_list(classdef_or_name)
114
+ def base_list(classdef_or_name, do_not_fold: false)
112
115
  class_def = (Extractor::ClassDef === classdef_or_name ?
113
116
  classdef_or_name : classdef_for_name(classdef_or_name))
114
117
  base = ifspec.inheritance_override(class_def.name)
115
118
  hierarchy = (base && (base.name ? {base.name => base} : {})) || class_def.hierarchy
116
- get_base_list(hierarchy, folded_bases(class_def.name)).to_a
119
+ get_base_list(hierarchy, do_not_fold ? [] : folded_bases(class_def.name), do_not_fold: do_not_fold).to_a
117
120
  end
118
121
 
119
122
  def get_base_module_list(hierarchy, foldedbases, list = ::Set.new)
@@ -133,6 +136,12 @@ module WXRuby3
133
136
  get_base_module_list(hierarchy, folded_bases(class_def.name)).to_a
134
137
  end
135
138
 
139
+ def is_derived_from?(classdef_or_name, base_name)
140
+ class_def = (Extractor::ClassDef === classdef_or_name ?
141
+ classdef_or_name : classdef_for_name(classdef_or_name))
142
+ ifspec.is_derived_from?(class_def, base_name)
143
+ end
144
+
136
145
  def is_folded_base?(cnm)
137
146
  ifspec.is_folded_base?(cnm)
138
147
  end
@@ -180,7 +189,20 @@ module WXRuby3
180
189
  def has_virtuals?(classdef_or_name)
181
190
  class_def = (Extractor::ClassDef === classdef_or_name ?
182
191
  classdef_or_name : classdef_for_name(classdef_or_name))
183
- return class_def.all_methods.any? { |m| m.is_virtual }
192
+ return class_def.all_methods.any? { |m| !(m.ignored || m.deprecated) && m.is_virtual }
193
+ end
194
+
195
+ def inherits_virtuals?(classdef_or_name)
196
+ class_def = (Extractor::ClassDef === classdef_or_name ?
197
+ classdef_or_name : classdef_for_name(classdef_or_name))
198
+ base_list(class_def).any? do |base_name|
199
+ dir = ifspec.package.director_for_class(base_name)
200
+ raise "Cannot determine director for class #{base_name}" unless dir
201
+ dir.synchronize do
202
+ dir.extract_interface(false) # make sure the Director has extracted data from XML
203
+ end
204
+ Simple.new(dir).has_virtuals?(base_name)
205
+ end
184
206
  end
185
207
 
186
208
  def gc_type(classdef)
@@ -222,11 +244,12 @@ module WXRuby3
222
244
  def has_proxy?(classdef_or_name)
223
245
  class_def = (Extractor::ClassDef === classdef_or_name ?
224
246
  classdef_or_name : classdef_for_name(classdef_or_name))
225
- rc =!disabled_proxies
247
+ rc = !disabled_proxies
226
248
  rc &&= (class_def.ignored ||
227
249
  class_def.is_template? ||
228
250
  has_virtuals?(class_def) ||
229
- forced_proxy?(class_def.name))
251
+ forced_proxy?(class_def.name) ||
252
+ inherits_virtuals?(class_def))
230
253
  clsnm = class_name(class_def)
231
254
  rc &&= !no_proxies.include?(clsnm)
232
255
  rc
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -44,7 +47,9 @@ module WXRuby3
44
47
  (TYPE($input) == T_STRING && RSTRING_LEN($input) == 1) );
45
48
  __CODE
46
49
  end
47
- spec.set_only_for('__WXMSW__', 'wxAcceleratorTable::wxAcceleratorTable(const wxString &)')
50
+ unless Config.instance.features_set?('__WXMSW__')
51
+ spec.ignore('wxAcceleratorTable::wxAcceleratorTable(const wxString &)')
52
+ end
48
53
  spec.add_swig_code <<~__HEREDOC
49
54
  %warnfilter(509) wxAcceleratorTable::wxAcceleratorTable;
50
55
  __HEREDOC
@@ -64,7 +69,7 @@ module WXRuby3
64
69
  for (int i = 0; i < RARRAY_LEN($input); i++)
65
70
  {
66
71
  SWIG_ConvertPtr(rb_ary_entry($input,i), (void **) &wx_acc_ent,
67
- SWIGTYPE_p_wxAcceleratorEntry, 1);
72
+ SWIGTYPE_p_wxAcceleratorEntry, 0);
68
73
  if (wx_acc_ent == NULL)
69
74
  rb_raise(rb_eTypeError, "Reference to null wxAcceleratorEntry");
70
75
  arr[i] = *wx_acc_ent;
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -57,7 +60,7 @@ module WXRuby3
57
60
  void* ptr = 0;
58
61
  int res$argnum = SWIG_ConvertPtr($result, &ptr, SWIGTYPE_p_wxImage, 0 );
59
62
  if (!SWIG_IsOK(res$argnum)) {
60
- Swig::DirectorTypeMismatchException::raise(rb_eTypeError, "Expected Wx::Image result");
63
+ Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError, "Expected Wx::Image result");
61
64
  }
62
65
  *$1 = *reinterpret_cast<wxImage*> (ptr);
63
66
  __CODE
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './window'
@@ -15,6 +18,26 @@ module WXRuby3
15
18
 
16
19
  def setup
17
20
  super
21
+ if Config.instance.wx_version >= '3.3.0'
22
+ spec.items << 'wxAnimationBundle'
23
+ spec.ignore 'wxAnimationBundle::GetAll', ignore_doc: false
24
+ spec.add_extend_code 'wxAnimationBundle', <<~__HEREDOC
25
+ VALUE get_all() const
26
+ {
27
+ const std::vector<wxAnimation>& ani_list = $self->GetAll();
28
+ VALUE rb_ani_list = rb_ary_new();
29
+ for (const wxAnimation& ani : ani_list)
30
+ {
31
+ VALUE rb_ani = SWIG_NewPointerObj(new wxAnimation(ani), SWIGTYPE_p_wxAnimation, SWIG_POINTER_OWN);
32
+ rb_ary_push(rb_ani_list, rb_ani);
33
+ }
34
+ return rb_ani_list;
35
+ }
36
+ __HEREDOC
37
+ spec.map 'const std::vector<wxAnimation>&' => 'Array<Wx::Animation>', swig: false do
38
+ map_out code: ''
39
+ end
40
+ end
18
41
  spec.do_not_generate :variables, :enums, :defines, :functions
19
42
  end
20
43
  end # class AnimationCtrl
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './window'
@@ -13,7 +16,7 @@ module WXRuby3
13
16
 
14
17
  def setup
15
18
  super
16
- if Config.instance.wx_port == :wxQT
19
+ if Config.instance.wx_port == :wxqt
17
20
  # pure abstract so use wxRuby specific impl class
18
21
  spec.add_header_code <<~__HEREDOC
19
22
  class wxRubyAnyButton : public wxAnyButton
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './event_handler'
@@ -16,7 +19,9 @@ module WXRuby3
16
19
  spec.fold_bases('wxApp' => 'wxAppConsole', 'wxAppConsole' => 'wxEventFilter')
17
20
  spec.override_inheritance_chain('wxApp', %w[wxEvtHandler wxObject])
18
21
  spec.ignore %w{
19
- wxApp.ProcessMessage
22
+ wxApp::ProcessMessage
23
+ wxApp::SetDisplayMode
24
+ wxApp::GetDisplayMode
20
25
  wxAppConsole::OnInit
21
26
  wxAppConsole::OnExit
22
27
  wxAppConsole::OnRun
@@ -38,6 +43,7 @@ module WXRuby3
38
43
  wxAppConsole::IsScheduledForDestruction
39
44
  wxAppConsole::SetInstance
40
45
  wxAppConsole::GetInstance
46
+ wxAppConsole::CreateTraits
41
47
  wxAppConsole::argc
42
48
  wxAppConsole::argv
43
49
  wxDECLARE_APP
@@ -237,6 +243,14 @@ module WXRuby3
237
243
  return;
238
244
  }
239
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
+
240
254
  // Mark evt handler procs associated with live windows - see
241
255
  // classes/EvtHandler.i
242
256
  wxRuby_MarkProtectedEvtHandlerProcs();
@@ -327,7 +341,17 @@ module WXRuby3
327
341
  // Get the ruby representation of the App object, and call the
328
342
  // ruby on_init method to set up the initial window state
329
343
  VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
330
- VALUE result = wxRuby_Funcall(the_app, rb_intern("on_ruby_init"), 0, 0);
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
+ }
331
355
 
332
356
  // If on_init return any (ruby) true value, signal to wxWidgets to
333
357
  // enter the main event loop by returning true, else return false
@@ -357,7 +381,15 @@ module WXRuby3
357
381
  ID on_exit_id = rb_intern("on_exit");
358
382
  if (rb_funcall(the_app, rb_intern("respond_to?"), 1, ID2SYM(on_exit_id)) == Qtrue)
359
383
  {
360
- wxRuby_Funcall(the_app, on_exit_id, 0, 0);
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
+ }
361
393
  }
362
394
 
363
395
  // perform wxRuby cleanup
@@ -456,10 +488,10 @@ module WXRuby3
456
488
  VALUE msg = rb_funcall(err, message_id(), 0);
457
489
  VALUE err_name = rb_funcall(rb_funcall(err, class_id(), 0), name_id(), 0);
458
490
  VALUE bt = rb_funcall(err, backtrace_id(), 0);
459
- bt = rb_funcall(bt, join_id(), 1, rb_str_new2("\\n"));
491
+ bt = rb_funcall(bt, join_id(), 1, rb_str_new2("\\n\\tfrom "));
460
492
  std::cerr << std::endl
461
- << ' ' << StringValuePtr(err_name) << ": " << StringValuePtr(msg) << std::endl
462
- << StringValuePtr(bt) << std::endl;
493
+ << ' ' << StringValuePtr(msg) << '(' << StringValuePtr(err_name) << ')' << std::endl
494
+ << "\\tfrom " << StringValuePtr(bt) << std::endl << std::endl;
463
495
  }
464
496
  __HEREDOC
465
497
  super