wxruby3 1.7.0 → 1.8.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 (522) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +27 -2
  3. data/README.md +15 -15
  4. data/ext/wxruby3/include/wxRubyApp.h +145 -46
  5. data/ext/wxruby3/include/wxruby-ComboPopup.h +25 -8
  6. data/ext/wxruby3/include/wxruby-GCTracking.h +262 -0
  7. data/ext/wxruby3/include/wxruby-MBConv.h +190 -0
  8. data/ext/wxruby3/include/wxruby-SharedEventHandler.h +183 -0
  9. data/ext/wxruby3/include/wxruby-SharedPtr.h +104 -0
  10. data/ext/wxruby3/include/wxruby-runtime.h +29 -0
  11. data/ext/wxruby3/swig/custom/rubytracking.swg +8 -22
  12. data/ext/wxruby3/swig/custom/wx_ruby_shared_ptr.i +434 -0
  13. data/ext/wxruby3/swig/custom/wx_shared_ptr.i +431 -0
  14. data/ext/wxruby3/swig/mark_free_impl.i +7 -132
  15. data/ext/wxruby3/swig/memory_management.i +8 -44
  16. data/ext/wxruby3/swig/wx.i +46 -73
  17. data/lib/wx/core/const.rb +0 -1
  18. data/lib/wx/core/context_help.rb +17 -0
  19. data/lib/wx/core/cursor.rb +1 -0
  20. data/lib/wx/core/helpcontrollerhelpprovider.rb +10 -2
  21. data/lib/wx/core/mbconv.rb +11 -0
  22. data/lib/wx/core/media_ctrl.rb +31 -0
  23. data/lib/wx/core/top_level_window.rb +7 -0
  24. data/lib/wx/core.rb +6 -0
  25. data/lib/wx/doc/art_provider.rb +17 -0
  26. data/lib/wx/doc/context_help.rb +42 -0
  27. data/lib/wx/doc/core.rb +0 -5
  28. data/lib/wx/doc/functions.rb +10 -0
  29. data/lib/wx/doc/html/html_help_controller.rb +23 -1
  30. data/lib/wx/doc/mbconv.rb +108 -0
  31. data/lib/wx/doc/rt/shared_event_handler.rb +49 -0
  32. data/lib/wx/doc/rt/thread_event.rb +28 -0
  33. data/lib/wx/doc/stream.rb +7 -3
  34. data/lib/wx/doc/webview.rb +40 -0
  35. data/lib/wx/helpers.rb +1 -1
  36. data/lib/wx/html/htmlhelpcontroller.rb +10 -0
  37. data/lib/wx/keyword_defs.rb +11 -0
  38. data/lib/wx/rt/require.rb +8 -0
  39. data/lib/wx/rt/thread_event.rb +14 -0
  40. data/lib/wx/rt.rb +16 -0
  41. data/lib/wx/version.rb +1 -1
  42. data/lib/wx/web/require.rb +8 -0
  43. data/lib/wx/web/webview.rb +106 -0
  44. data/lib/wx/web.rb +17 -0
  45. data/lib/wx/wxruby/cmd/setup.rb +15 -0
  46. data/lib/wx/wxruby/cmd/test.rb +8 -2
  47. data/lib/wx.rb +2 -0
  48. data/rakelib/configure.rb +24 -0
  49. data/rakelib/gem.rb +3 -2
  50. data/rakelib/install.rb +54 -27
  51. data/rakelib/lib/config/macosx.rb +7 -5
  52. data/rakelib/lib/config/mingw.rb +66 -5
  53. data/rakelib/lib/config/pkgman/linux.rb +4 -2
  54. data/rakelib/lib/config/pkgman/mingw.rb +1 -1
  55. data/rakelib/lib/config/unixish.rb +4 -2
  56. data/rakelib/lib/config.rb +37 -3
  57. data/rakelib/lib/core/include/client_data.inc +38 -17
  58. data/rakelib/lib/core/include/funcall.inc +1 -1
  59. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  60. data/rakelib/lib/core/include/swigrubyrun.inc +14 -26
  61. data/rakelib/lib/core/package.rb +0 -2
  62. data/rakelib/lib/director/app.rb +1 -8
  63. data/rakelib/lib/director/art_provider.rb +7 -3
  64. data/rakelib/lib/director/comboctrl.rb +0 -7
  65. data/rakelib/lib/director/context_help_button.rb +35 -2
  66. data/rakelib/lib/director/derived_dc.rb +41 -32
  67. data/rakelib/lib/director/editable_listbox.rb +10 -8
  68. data/rakelib/lib/director/event_handler.rb +32 -28
  69. data/rakelib/lib/director/fs_file.rb +38 -10
  70. data/rakelib/lib/director/functions.rb +8 -0
  71. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  72. data/rakelib/lib/director/grid_cell_editor.rb +14 -12
  73. data/rakelib/lib/director/grid_cell_renderer.rb +11 -8
  74. data/rakelib/lib/director/grid_ctrl.rb +140 -121
  75. data/rakelib/lib/director/help_controller.rb +70 -2
  76. data/rakelib/lib/director/mb_conv.rb +30 -0
  77. data/rakelib/lib/director/menu.rb +92 -42
  78. data/rakelib/lib/director/menu_bar.rb +84 -45
  79. data/rakelib/lib/director/menu_item.rb +2 -2
  80. data/rakelib/lib/director/persistence_manager.rb +3 -2
  81. data/rakelib/lib/director/preview_frame.rb +2 -2
  82. data/rakelib/lib/director/ribbon_page.rb +11 -0
  83. data/rakelib/lib/director/richtext_buffer.rb +5 -2
  84. data/rakelib/lib/director/shared_evt_handler.rb +30 -0
  85. data/rakelib/lib/director/sizer.rb +8 -17
  86. data/rakelib/lib/director/sizer_item.rb +3 -4
  87. data/rakelib/lib/director/task_bar_icon.rb +7 -7
  88. data/rakelib/lib/director/thread_event.rb +33 -0
  89. data/rakelib/lib/director/top_level_window.rb +12 -4
  90. data/rakelib/lib/director/validator.rb +3 -1
  91. data/rakelib/lib/director/variant.rb +16 -12
  92. data/rakelib/lib/director/webview.rb +166 -0
  93. data/rakelib/lib/director/webview_event.rb +37 -0
  94. data/rakelib/lib/director/webview_handler.rb +63 -0
  95. data/rakelib/lib/generate/doc/thread_event.yaml +20 -0
  96. data/rakelib/lib/generate/doc/web_view.yaml +135 -0
  97. data/rakelib/lib/generate/doc/web_view_event.yaml +38 -0
  98. data/rakelib/lib/generate/doc/web_view_handler.yaml +58 -0
  99. data/rakelib/lib/specs/interfaces.rb +14 -2
  100. data/rakelib/lib/typemap/common.rb +34 -1
  101. data/rakelib/lib/typemap/mb_conv.rb +58 -0
  102. data/rakelib/prepost.rake +23 -31
  103. data/rakelib/prepost.rb +20 -0
  104. data/samples/event/threaded.rb +295 -42
  105. data/samples/event/tn_threaded.png +0 -0
  106. data/samples/help/doc/back.gif +0 -0
  107. data/samples/help/doc/contents.gif +0 -0
  108. data/samples/help/doc/cshelp.txt +9 -0
  109. data/samples/help/doc/doc.chm +0 -0
  110. data/samples/help/doc/doc.cnt +8 -0
  111. data/samples/help/doc/doc.h +7 -0
  112. data/samples/help/doc/doc.hhc +40 -0
  113. data/samples/help/doc/doc.hhk +31 -0
  114. data/samples/help/doc/doc.hhp +33 -0
  115. data/samples/help/doc/doc.hpj +21 -0
  116. data/samples/help/doc/doc.htm +27 -0
  117. data/samples/help/doc/doc1.htm +24 -0
  118. data/samples/help/doc/doc2.htm +12 -0
  119. data/samples/help/doc/doc3.htm +12 -0
  120. data/samples/help/doc/doc4.htm +12 -0
  121. data/samples/help/doc/doc5.htm +14 -0
  122. data/samples/help/doc/forward.gif +0 -0
  123. data/samples/help/doc/up.gif +0 -0
  124. data/samples/help/doc.chm +0 -0
  125. data/samples/help/doc.chw +0 -0
  126. data/samples/help/doc.zip +0 -0
  127. data/samples/help/help.rb +352 -0
  128. data/samples/help/tn_help.png +0 -0
  129. data/samples/webview/handler_advanced.html +55 -0
  130. data/samples/webview/tn_webview.png +0 -0
  131. data/samples/webview/webview.rb +1264 -0
  132. data/tests/assets/handler_advanced.html +55 -0
  133. data/tests/assets/test.zip +0 -0
  134. data/tests/lib/text_entry_tests.rb +2 -2
  135. data/tests/lib/wxapp_runner.rb +40 -0
  136. data/tests/lib/wxframe_runner.rb +17 -2
  137. data/tests/test_art.rb +8 -8
  138. data/tests/test_clipboard.rb +4 -4
  139. data/tests/test_config.rb +6 -6
  140. data/tests/test_exceptions.rb +8 -6
  141. data/tests/test_ext_controls.rb +3 -3
  142. data/tests/test_file_dialog.rb +5 -5
  143. data/tests/test_font.rb +7 -7
  144. data/tests/test_grid_ctrl.rb +133 -0
  145. data/tests/test_help.rb +88 -0
  146. data/tests/test_intl.rb +1 -1
  147. data/tests/test_media_ctrl.rb +14 -6
  148. data/tests/test_menu.rb +94 -86
  149. data/tests/test_persistence.rb +1 -1
  150. data/tests/test_proof_check.rb +5 -5
  151. data/tests/test_propgrid.rb +1 -1
  152. data/tests/test_shared_event_handler.rb +141 -0
  153. data/tests/test_std_controls.rb +5 -5
  154. data/tests/test_webview.rb +492 -0
  155. data/tests/test_window.rb +3 -3
  156. metadata +66 -368
  157. data/assets/repo-social-preview.odg +0 -0
  158. data/assets/repo-social-preview.xcf +0 -0
  159. data/lib/wx/aui/events/evt_list.rb +0 -148
  160. data/lib/wx/core/events/evt_list.rb +0 -1458
  161. data/lib/wx/core/font/encoding.rb +0 -113
  162. data/lib/wx/doc/gen/about_dialog_info.rb +0 -330
  163. data/lib/wx/doc/gen/accelerator.rb +0 -178
  164. data/lib/wx/doc/gen/activity_indicator.rb +0 -83
  165. data/lib/wx/doc/gen/affine_matrix2d.rb +0 -284
  166. data/lib/wx/doc/gen/animation.rb +0 -275
  167. data/lib/wx/doc/gen/animation_ctrl.rb +0 -300
  168. data/lib/wx/doc/gen/any_button.rb +0 -191
  169. data/lib/wx/doc/gen/app.rb +0 -463
  170. data/lib/wx/doc/gen/app_traits.rb +0 -396
  171. data/lib/wx/doc/gen/art_provider.rb +0 -605
  172. data/lib/wx/doc/gen/aui/aui_dock_art.rb +0 -455
  173. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +0 -54
  174. data/lib/wx/doc/gen/aui/aui_manager.rb +0 -847
  175. data/lib/wx/doc/gen/aui/aui_manager_event.rb +0 -131
  176. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +0 -180
  177. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +0 -59
  178. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +0 -130
  179. data/lib/wx/doc/gen/aui/aui_notebook.rb +0 -631
  180. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +0 -233
  181. data/lib/wx/doc/gen/aui/aui_pane_info.rb +0 -769
  182. data/lib/wx/doc/gen/aui/aui_tab_art.rb +0 -352
  183. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +0 -14
  184. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +0 -510
  185. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +0 -340
  186. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +0 -244
  187. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +0 -257
  188. data/lib/wx/doc/gen/aui/event_list.rb +0 -179
  189. data/lib/wx/doc/gen/banner_window.rb +0 -124
  190. data/lib/wx/doc/gen/bitmap.rb +0 -731
  191. data/lib/wx/doc/gen/bitmap_button.rb +0 -123
  192. data/lib/wx/doc/gen/bitmap_combo_box.rb +0 -221
  193. data/lib/wx/doc/gen/book_ctrl_base.rb +0 -273
  194. data/lib/wx/doc/gen/book_ctrl_event.rb +0 -66
  195. data/lib/wx/doc/gen/box_sizer.rb +0 -85
  196. data/lib/wx/doc/gen/brush.rb +0 -251
  197. data/lib/wx/doc/gen/busy_info.rb +0 -157
  198. data/lib/wx/doc/gen/button.rb +0 -182
  199. data/lib/wx/doc/gen/calculate_layout_event.rb +0 -62
  200. data/lib/wx/doc/gen/calendar_ctrl.rb +0 -505
  201. data/lib/wx/doc/gen/calendar_date_attr.rb +0 -138
  202. data/lib/wx/doc/gen/calendar_event.rb +0 -147
  203. data/lib/wx/doc/gen/caret.rb +0 -97
  204. data/lib/wx/doc/gen/check_box.rb +0 -175
  205. data/lib/wx/doc/gen/check_list_box.rb +0 -121
  206. data/lib/wx/doc/gen/choice.rb +0 -175
  207. data/lib/wx/doc/gen/choicebook.rb +0 -116
  208. data/lib/wx/doc/gen/client_dc.rb +0 -43
  209. data/lib/wx/doc/gen/clipboard.rb +0 -144
  210. data/lib/wx/doc/gen/collapsible_pane.rb +0 -138
  211. data/lib/wx/doc/gen/collapsible_pane_event.rb +0 -46
  212. data/lib/wx/doc/gen/colour.rb +0 -333
  213. data/lib/wx/doc/gen/colour_dialog.rb +0 -190
  214. data/lib/wx/doc/gen/colour_picker_ctrl.rb +0 -110
  215. data/lib/wx/doc/gen/colour_picker_event.rb +0 -77
  216. data/lib/wx/doc/gen/combo_box.rb +0 -292
  217. data/lib/wx/doc/gen/combo_ctrl.rb +0 -662
  218. data/lib/wx/doc/gen/command_link_button.rb +0 -134
  219. data/lib/wx/doc/gen/config_base.rb +0 -10
  220. data/lib/wx/doc/gen/context_help_button.rb +0 -109
  221. data/lib/wx/doc/gen/control.rb +0 -277
  222. data/lib/wx/doc/gen/control_with_items.rb +0 -253
  223. data/lib/wx/doc/gen/core.rb +0 -45
  224. data/lib/wx/doc/gen/credential_entry_dialog.rb +0 -137
  225. data/lib/wx/doc/gen/cursor.rb +0 -193
  226. data/lib/wx/doc/gen/data_format.rb +0 -85
  227. data/lib/wx/doc/gen/data_object.rb +0 -436
  228. data/lib/wx/doc/gen/data_object_simple_base.rb +0 -10
  229. data/lib/wx/doc/gen/date_event.rb +0 -49
  230. data/lib/wx/doc/gen/date_picker_ctrl.rb +0 -161
  231. data/lib/wx/doc/gen/dc.rb +0 -1631
  232. data/lib/wx/doc/gen/dc_overlay.rb +0 -102
  233. data/lib/wx/doc/gen/defs.rb +0 -2802
  234. data/lib/wx/doc/gen/dial_up_event.rb +0 -45
  235. data/lib/wx/doc/gen/dial_up_manager.rb +0 -149
  236. data/lib/wx/doc/gen/dialog.rb +0 -541
  237. data/lib/wx/doc/gen/dir_dialog.rb +0 -164
  238. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +0 -90
  239. data/lib/wx/doc/gen/dir_picker_ctrl.rb +0 -125
  240. data/lib/wx/doc/gen/display.rb +0 -238
  241. data/lib/wx/doc/gen/drag_drop.rb +0 -299
  242. data/lib/wx/doc/gen/drag_image.rb +0 -116
  243. data/lib/wx/doc/gen/editable_list_box.rb +0 -109
  244. data/lib/wx/doc/gen/event.rb +0 -990
  245. data/lib/wx/doc/gen/event_blocker.rb +0 -50
  246. data/lib/wx/doc/gen/event_filter.rb +0 -92
  247. data/lib/wx/doc/gen/event_list.rb +0 -1644
  248. data/lib/wx/doc/gen/events.rb +0 -2809
  249. data/lib/wx/doc/gen/evt_handler.rb +0 -229
  250. data/lib/wx/doc/gen/ext_help_controller.rb +0 -109
  251. data/lib/wx/doc/gen/file_ctrl.rb +0 -231
  252. data/lib/wx/doc/gen/file_ctrl_event.rb +0 -83
  253. data/lib/wx/doc/gen/file_dialog.rb +0 -353
  254. data/lib/wx/doc/gen/file_dialog_custom_control.rb +0 -165
  255. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +0 -158
  256. data/lib/wx/doc/gen/file_dir_picker_event.rb +0 -100
  257. data/lib/wx/doc/gen/file_picker_ctrl.rb +0 -132
  258. data/lib/wx/doc/gen/file_system.rb +0 -232
  259. data/lib/wx/doc/gen/find_dialog_event.rb +0 -126
  260. data/lib/wx/doc/gen/find_replace_data.rb +0 -60
  261. data/lib/wx/doc/gen/find_replace_dialog.rb +0 -58
  262. data/lib/wx/doc/gen/flex_grid_sizer.rb +0 -199
  263. data/lib/wx/doc/gen/font.rb +0 -1379
  264. data/lib/wx/doc/gen/font_data.rb +0 -151
  265. data/lib/wx/doc/gen/font_dialog.rb +0 -88
  266. data/lib/wx/doc/gen/font_picker_ctrl.rb +0 -143
  267. data/lib/wx/doc/gen/font_picker_event.rb +0 -65
  268. data/lib/wx/doc/gen/frame.rb +0 -352
  269. data/lib/wx/doc/gen/fs_file.rb +0 -337
  270. data/lib/wx/doc/gen/functions.rb +0 -10
  271. data/lib/wx/doc/gen/gauge.rb +0 -157
  272. data/lib/wx/doc/gen/gb_sizer_item.rb +0 -68
  273. data/lib/wx/doc/gen/gcdc.rb +0 -46
  274. data/lib/wx/doc/gen/gdi_common.rb +0 -1271
  275. data/lib/wx/doc/gen/gdi_object.rb +0 -31
  276. data/lib/wx/doc/gen/generic_about_dialog.rb +0 -140
  277. data/lib/wx/doc/gen/generic_dir_ctrl.rb +0 -223
  278. data/lib/wx/doc/gen/geometry.rb +0 -661
  279. data/lib/wx/doc/gen/graphics_context.rb +0 -1184
  280. data/lib/wx/doc/gen/graphics_object.rb +0 -750
  281. data/lib/wx/doc/gen/grid/event_list.rb +0 -191
  282. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +0 -40
  283. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +0 -280
  284. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +0 -35
  285. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +0 -37
  286. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +0 -49
  287. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +0 -35
  288. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +0 -46
  289. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +0 -38
  290. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +0 -45
  291. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +0 -40
  292. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +0 -197
  293. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +0 -39
  294. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +0 -44
  295. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +0 -45
  296. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +0 -79
  297. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +0 -46
  298. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +0 -35
  299. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +0 -108
  300. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +0 -35
  301. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +0 -49
  302. data/lib/wx/doc/gen/grid/grid_ctrl.rb +0 -3002
  303. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +0 -95
  304. data/lib/wx/doc/gen/grid/grid_event.rb +0 -129
  305. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +0 -104
  306. data/lib/wx/doc/gen/grid/grid_size_event.rb +0 -85
  307. data/lib/wx/doc/gen/grid/grid_string_table.rb +0 -142
  308. data/lib/wx/doc/gen/grid/grid_table_base.rb +0 -317
  309. data/lib/wx/doc/gen/grid/grid_table_message.rb +0 -81
  310. data/lib/wx/doc/gen/grid_bag_sizer.rb +0 -323
  311. data/lib/wx/doc/gen/grid_sizer.rb +0 -195
  312. data/lib/wx/doc/gen/gui_event_loop.rb +0 -159
  313. data/lib/wx/doc/gen/h_scrolled_window.rb +0 -562
  314. data/lib/wx/doc/gen/header_ctrl.rb +0 -880
  315. data/lib/wx/doc/gen/header_ctrl_event.rb +0 -133
  316. data/lib/wx/doc/gen/help_controller.rb +0 -195
  317. data/lib/wx/doc/gen/help_provider.rb +0 -98
  318. data/lib/wx/doc/gen/html/event_list.rb +0 -38
  319. data/lib/wx/doc/gen/html/html_cell.rb +0 -536
  320. data/lib/wx/doc/gen/html/html_cell_event.rb +0 -69
  321. data/lib/wx/doc/gen/html/html_data_object.rb +0 -42
  322. data/lib/wx/doc/gen/html/html_easy_printing.rb +0 -203
  323. data/lib/wx/doc/gen/html/html_help_controller.rb +0 -340
  324. data/lib/wx/doc/gen/html/html_help_data.rb +0 -159
  325. data/lib/wx/doc/gen/html/html_help_window.rb +0 -258
  326. data/lib/wx/doc/gen/html/html_link_event.rb +0 -41
  327. data/lib/wx/doc/gen/html/html_list_box.rb +0 -346
  328. data/lib/wx/doc/gen/html/html_printout.rb +0 -109
  329. data/lib/wx/doc/gen/html/html_window.rb +0 -461
  330. data/lib/wx/doc/gen/hyperlink_ctrl.rb +0 -311
  331. data/lib/wx/doc/gen/hyperlink_event.rb +0 -44
  332. data/lib/wx/doc/gen/icon.rb +0 -267
  333. data/lib/wx/doc/gen/icon_location.rb +0 -40
  334. data/lib/wx/doc/gen/image.rb +0 -1371
  335. data/lib/wx/doc/gen/image_list.rb +0 -168
  336. data/lib/wx/doc/gen/info_bar.rb +0 -195
  337. data/lib/wx/doc/gen/keyboard_state.rb +0 -140
  338. data/lib/wx/doc/gen/list_box.rb +0 -304
  339. data/lib/wx/doc/gen/list_ctrl.rb +0 -1774
  340. data/lib/wx/doc/gen/list_event.rb +0 -208
  341. data/lib/wx/doc/gen/listbook.rb +0 -116
  342. data/lib/wx/doc/gen/locale.rb +0 -4293
  343. data/lib/wx/doc/gen/log.rb +0 -603
  344. data/lib/wx/doc/gen/mdi_client_window.rb +0 -47
  345. data/lib/wx/doc/gen/mdi_frame.rb +0 -324
  346. data/lib/wx/doc/gen/media_ctrl.rb +0 -269
  347. data/lib/wx/doc/gen/media_event.rb +0 -117
  348. data/lib/wx/doc/gen/memory_dc.rb +0 -174
  349. data/lib/wx/doc/gen/menu.rb +0 -509
  350. data/lib/wx/doc/gen/menu_bar.rb +0 -287
  351. data/lib/wx/doc/gen/menu_item.rb +0 -362
  352. data/lib/wx/doc/gen/message_dialog.rb +0 -238
  353. data/lib/wx/doc/gen/mini_frame.rb +0 -108
  354. data/lib/wx/doc/gen/mirror_dc.rb +0 -22
  355. data/lib/wx/doc/gen/mouse_state.rb +0 -150
  356. data/lib/wx/doc/gen/multi_choice_dialog.rb +0 -80
  357. data/lib/wx/doc/gen/non_owned_window.rb +0 -49
  358. data/lib/wx/doc/gen/notebook.rb +0 -278
  359. data/lib/wx/doc/gen/num_validator.rb +0 -37
  360. data/lib/wx/doc/gen/number_entry_dialog.rb +0 -93
  361. data/lib/wx/doc/gen/object.rb +0 -59
  362. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +0 -395
  363. data/lib/wx/doc/gen/paint_dc.rb +0 -27
  364. data/lib/wx/doc/gen/palette.rb +0 -92
  365. data/lib/wx/doc/gen/panel.rb +0 -127
  366. data/lib/wx/doc/gen/pen.rb +0 -511
  367. data/lib/wx/doc/gen/persistence_manager.rb +0 -135
  368. data/lib/wx/doc/gen/persistent_object.rb +0 -52
  369. data/lib/wx/doc/gen/persistent_window.rb +0 -241
  370. data/lib/wx/doc/gen/pg/event_list.rb +0 -106
  371. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +0 -54
  372. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +0 -292
  373. data/lib/wx/doc/gen/pg/pg_cell.rb +0 -177
  374. data/lib/wx/doc/gen/pg/pg_editor.rb +0 -721
  375. data/lib/wx/doc/gen/pg/pg_multi_button.rb +0 -152
  376. data/lib/wx/doc/gen/pg/pg_properties.rb +0 -2829
  377. data/lib/wx/doc/gen/pg/pg_property.rb +0 -2078
  378. data/lib/wx/doc/gen/pg/pg_validation_info.rb +0 -344
  379. data/lib/wx/doc/gen/pg/property_grid.rb +0 -740
  380. data/lib/wx/doc/gen/pg/property_grid_event.rb +0 -184
  381. data/lib/wx/doc/gen/pg/property_grid_interface.rb +0 -1098
  382. data/lib/wx/doc/gen/pg/property_grid_manager.rb +0 -415
  383. data/lib/wx/doc/gen/pg/property_grid_page.rb +0 -354
  384. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +0 -165
  385. data/lib/wx/doc/gen/picker_base.rb +0 -152
  386. data/lib/wx/doc/gen/platform_info.rb +0 -622
  387. data/lib/wx/doc/gen/popup_window.rb +0 -107
  388. data/lib/wx/doc/gen/progress_dialog.rb +0 -100
  389. data/lib/wx/doc/gen/property_sheet_dialog.rb +0 -216
  390. data/lib/wx/doc/gen/prt/event_list.rb +0 -17
  391. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +0 -44
  392. data/lib/wx/doc/gen/prt/post_script_dc.rb +0 -30
  393. data/lib/wx/doc/gen/prt/preview_frame.rb +0 -78
  394. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +0 -151
  395. data/lib/wx/doc/gen/prt/print_data.rb +0 -804
  396. data/lib/wx/doc/gen/prt/print_dialog.rb +0 -55
  397. data/lib/wx/doc/gen/prt/printer.rb +0 -518
  398. data/lib/wx/doc/gen/prt/printer_dc.rb +0 -37
  399. data/lib/wx/doc/gen/query_layout_info_event.rb +0 -106
  400. data/lib/wx/doc/gen/radio_box.rb +0 -306
  401. data/lib/wx/doc/gen/radio_button.rb +0 -159
  402. data/lib/wx/doc/gen/rbn/event_list.rb +0 -136
  403. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +0 -1132
  404. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +0 -308
  405. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +0 -45
  406. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +0 -458
  407. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +0 -63
  408. data/lib/wx/doc/gen/rbn/ribbon_control.rb +0 -143
  409. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +0 -229
  410. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +0 -55
  411. data/lib/wx/doc/gen/rbn/ribbon_page.rb +0 -174
  412. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +0 -270
  413. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +0 -45
  414. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +0 -360
  415. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +0 -42
  416. data/lib/wx/doc/gen/rearrange_ctrl.rb +0 -78
  417. data/lib/wx/doc/gen/rearrange_list.rb +0 -123
  418. data/lib/wx/doc/gen/region.rb +0 -380
  419. data/lib/wx/doc/gen/region_iterator.rb +0 -76
  420. data/lib/wx/doc/gen/rich_tool_tip.rb +0 -154
  421. data/lib/wx/doc/gen/rtc/event_list.rb +0 -125
  422. data/lib/wx/doc/gen/rtc/rich_text_box.rb +0 -445
  423. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +0 -1188
  424. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +0 -41
  425. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +0 -538
  426. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +0 -2103
  427. data/lib/wx/doc/gen/rtc/rich_text_event.rb +0 -173
  428. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +0 -181
  429. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +0 -319
  430. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +0 -193
  431. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +0 -102
  432. data/lib/wx/doc/gen/rtc/rich_text_image.rb +0 -337
  433. data/lib/wx/doc/gen/rtc/rich_text_object.rb +0 -2922
  434. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +0 -1240
  435. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +0 -258
  436. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +0 -344
  437. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +0 -227
  438. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +0 -59
  439. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +0 -169
  440. data/lib/wx/doc/gen/sash_event.rb +0 -147
  441. data/lib/wx/doc/gen/sash_layout_window.rb +0 -232
  442. data/lib/wx/doc/gen/sash_window.rb +0 -171
  443. data/lib/wx/doc/gen/scaled_dc.rb +0 -10
  444. data/lib/wx/doc/gen/screen_dc.rb +0 -30
  445. data/lib/wx/doc/gen/scroll_bar.rb +0 -204
  446. data/lib/wx/doc/gen/scrolled_canvas.rb +0 -410
  447. data/lib/wx/doc/gen/scrolled_control.rb +0 -410
  448. data/lib/wx/doc/gen/scrolled_window.rb +0 -430
  449. data/lib/wx/doc/gen/search_ctrl.rb +0 -159
  450. data/lib/wx/doc/gen/secret_store.rb +0 -116
  451. data/lib/wx/doc/gen/simplebook.rb +0 -110
  452. data/lib/wx/doc/gen/single_choice_dialog.rb +0 -89
  453. data/lib/wx/doc/gen/sizer.rb +0 -945
  454. data/lib/wx/doc/gen/sizer_item.rb +0 -244
  455. data/lib/wx/doc/gen/slider.rb +0 -342
  456. data/lib/wx/doc/gen/spin_button.rb +0 -157
  457. data/lib/wx/doc/gen/spin_ctrl.rb +0 -231
  458. data/lib/wx/doc/gen/spin_ctrl_double.rb +0 -192
  459. data/lib/wx/doc/gen/spin_double_event.rb +0 -55
  460. data/lib/wx/doc/gen/spin_event.rb +0 -51
  461. data/lib/wx/doc/gen/splash_screen.rb +0 -113
  462. data/lib/wx/doc/gen/splitter_event.rb +0 -99
  463. data/lib/wx/doc/gen/splitter_window.rb +0 -498
  464. data/lib/wx/doc/gen/static_bitmap.rb +0 -256
  465. data/lib/wx/doc/gen/static_box.rb +0 -180
  466. data/lib/wx/doc/gen/static_box_sizer.rb +0 -85
  467. data/lib/wx/doc/gen/static_line.rb +0 -83
  468. data/lib/wx/doc/gen/static_text.rb +0 -127
  469. data/lib/wx/doc/gen/status_bar.rb +0 -290
  470. data/lib/wx/doc/gen/stc/event_list.rb +0 -221
  471. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +0 -4474
  472. data/lib/wx/doc/gen/stc/styled_text_event.rb +0 -8762
  473. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +0 -129
  474. data/lib/wx/doc/gen/svg_file_dc.rb +0 -164
  475. data/lib/wx/doc/gen/system_options.rb +0 -129
  476. data/lib/wx/doc/gen/system_settings.rb +0 -507
  477. data/lib/wx/doc/gen/task_bar_icon.rb +0 -127
  478. data/lib/wx/doc/gen/task_bar_icon_event.rb +0 -88
  479. data/lib/wx/doc/gen/text_attr.rb +0 -756
  480. data/lib/wx/doc/gen/text_ctrl.rb +0 -1033
  481. data/lib/wx/doc/gen/text_entry.rb +0 -441
  482. data/lib/wx/doc/gen/text_entry_dialog.rb +0 -220
  483. data/lib/wx/doc/gen/text_validator.rb +0 -245
  484. data/lib/wx/doc/gen/time_picker_ctrl.rb +0 -128
  485. data/lib/wx/doc/gen/timer.rb +0 -119
  486. data/lib/wx/doc/gen/timer_event.rb +0 -68
  487. data/lib/wx/doc/gen/tip_provider.rb +0 -63
  488. data/lib/wx/doc/gen/tip_window.rb +0 -51
  489. data/lib/wx/doc/gen/toggle_button.rb +0 -182
  490. data/lib/wx/doc/gen/tool_bar.rb +0 -890
  491. data/lib/wx/doc/gen/tool_tip.rb +0 -86
  492. data/lib/wx/doc/gen/toolbook.rb +0 -118
  493. data/lib/wx/doc/gen/top_level_window.rb +0 -497
  494. data/lib/wx/doc/gen/tree_ctrl.rb +0 -1052
  495. data/lib/wx/doc/gen/tree_event.rb +0 -127
  496. data/lib/wx/doc/gen/treebook.rb +0 -180
  497. data/lib/wx/doc/gen/ui_action_simulator.rb +0 -109
  498. data/lib/wx/doc/gen/utils.rb +0 -273
  499. data/lib/wx/doc/gen/v_list_box.rb +0 -272
  500. data/lib/wx/doc/gen/v_scrolled_canvas.rb +0 -195
  501. data/lib/wx/doc/gen/v_scrolled_window.rb +0 -191
  502. data/lib/wx/doc/gen/validator.rb +0 -68
  503. data/lib/wx/doc/gen/variant.rb +0 -294
  504. data/lib/wx/doc/gen/window.rb +0 -2917
  505. data/lib/wx/doc/gen/window_dc.rb +0 -38
  506. data/lib/wx/doc/gen/window_disabler.rb +0 -30
  507. data/lib/wx/doc/gen/with_images.rb +0 -84
  508. data/lib/wx/doc/gen/wizard.rb +0 -257
  509. data/lib/wx/doc/gen/wizard_event.rb +0 -113
  510. data/lib/wx/doc/gen/wizard_page.rb +0 -65
  511. data/lib/wx/doc/gen/wizard_page_simple.rb +0 -88
  512. data/lib/wx/doc/gen/wrap_sizer.rb +0 -79
  513. data/lib/wx/doc/gen/xml_node.rb +0 -316
  514. data/lib/wx/doc/gen/xml_resource.rb +0 -320
  515. data/lib/wx/grid/events/evt_list.rb +0 -166
  516. data/lib/wx/html/events/evt_list.rb +0 -27
  517. data/lib/wx/pg/events/evt_list.rb +0 -73
  518. data/lib/wx/rbn/events/evt_list.rb +0 -102
  519. data/lib/wx/rtc/events/evt_list.rb +0 -98
  520. data/lib/wx/rtc/ext/rich_text_ctrl.rb +0 -24
  521. data/lib/wx/stc/events/evt_list.rb +0 -178
  522. data/samples/art/wxruby-512x512.png +0 -0
@@ -38,7 +38,7 @@ module WXRuby3
38
38
  }
39
39
  return rc;
40
40
  }
41
- __HEREDOC
41
+ __HEREDOC
42
42
  # not relevant anymore
43
43
  spec.ignore 'wxScreenDC::StartDrawingOnTop',
44
44
  'wxScreenDC::EndDrawingOnTop',
@@ -82,14 +82,14 @@ module WXRuby3
82
82
  return Qfalse;
83
83
  #endif
84
84
  }
85
- __HEREDOC
85
+ __HEREDOC
86
86
  spec.add_extend_code 'wxPaintDC', <<~__HEREDOC
87
87
  #include "wx/dcbuffer.h"
88
88
  static VALUE has_native_double_buffer()
89
89
  {
90
90
  return do_check_native_double_buffer();
91
91
  }
92
- __HEREDOC
92
+ __HEREDOC
93
93
  when 'wxMemoryDC'
94
94
  spec.items << 'wxBufferedDC' << 'wxBufferedPaintDC'
95
95
  spec.override_inheritance_chain('wxMemoryDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version_check('3.3.0') >= 0
@@ -249,6 +249,9 @@ module WXRuby3
249
249
  when 'wxSVGFileDC'
250
250
  spec.override_inheritance_chain('wxSVGFileDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version_check('3.3.0') >= 0
251
251
  spec.items.concat %w[wxSVGBitmapHandler wxSVGBitmapFileHandler wxSVGBitmapEmbedHandler]
252
+ if Config.instance.wx_version_check('3.3.2') > 0
253
+ spec.items.concat %w[wxSVGAttributes]
254
+ end
252
255
  spec.make_abstract 'wxSVGFileDC'
253
256
  spec.ignore 'wxSVGFileDC::wxSVGFileDC'
254
257
  # like all DC this should best always be a temporary stack object
@@ -284,6 +287,12 @@ module WXRuby3
284
287
  'wxSVGFileDC::EndDoc',
285
288
  'wxSVGFileDC::StartPage',
286
289
  'wxSVGFileDC::EndPage'
290
+ if Config.instance.wx_version_check('3.3.2') > 0
291
+ # simplify/optimize mapping for wxSVGAttributes return values
292
+ spec.map 'wxSVGAttributes&' => 'Wx::SVGAttributes' do
293
+ map_out code: '$result = self; (void)$1;' # simply return the 'self' argument
294
+ end
295
+ end
287
296
  when 'wxGCDC'
288
297
  spec.override_inheritance_chain('wxGCDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version_check('3.3.0') >= 0
289
298
  spec.make_abstract 'wxGCDC'
@@ -311,7 +320,7 @@ module WXRuby3
311
320
  }
312
321
  return rc;
313
322
  }
314
- __HEREDOC
323
+ __HEREDOC
315
324
  end
316
325
  spec.add_extend_code 'wxGCDC', <<~__HEREDOC
317
326
  static VALUE draw_on()
@@ -386,7 +395,7 @@ module WXRuby3
386
395
  }
387
396
  return rc;
388
397
  }
389
- __HEREDOC
398
+ __HEREDOC
390
399
  spec.disown 'wxGraphicsContext *gc'
391
400
  spec.ignore 'wxGCDC::wxGCDC(const wxEnhMetaFileDC &)'
392
401
  when 'wxScaledDC'
@@ -422,7 +431,7 @@ module WXRuby3
422
431
  return rc;
423
432
  }
424
433
  };
425
- __HEREDOC
434
+ __HEREDOC
426
435
  spec.swig_import %w[ext/wxruby3/swig/classes/include/wxObject.h
427
436
  ext/wxruby3/swig/classes/include/wxDC.h]
428
437
  spec.add_interface_code <<~__HEREDOC
@@ -433,7 +442,7 @@ module WXRuby3
433
442
  protected:
434
443
  wxScaledDC(wxDC& target, double scale);
435
444
  };
436
- __HEREDOC
445
+ __HEREDOC
437
446
  when 'wxPrinterDC'
438
447
  spec.override_inheritance_chain('wxPrinterDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject']) if Config.instance.wx_version_check('3.3.0') >= 0
439
448
  spec.make_abstract 'wxPrinterDC'
@@ -513,41 +522,41 @@ module WXRuby3
513
522
  }
514
523
  return rc;
515
524
  }
516
- __HEREDOC
525
+ __HEREDOC
517
526
  if Config.instance.wx_version_check('3.3.0') >= 0
518
527
  spec.items << 'wxOverlayDC'
519
528
  spec.override_inheritance_chain('wxOverlayDC', ['wxDC', { 'wxReadOnlyDC' => 'wxDC' }, 'wxObject'])
520
529
  spec.make_abstract 'wxOverlayDC'
521
530
  spec.ignore 'wxOverlayDC::wxOverlayDC'
522
531
  spec.add_extend_code 'wxOverlayDC', <<~__HEREDOC
523
- static VALUE draw_on(wxOverlay &overlay, wxWindow *win)
524
- {
525
- if (!wxRuby_IsAppRunning())
526
- rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
527
- VALUE rc = Qnil;
528
- if (rb_block_given_p ())
532
+ static VALUE draw_on(wxOverlay &overlay, wxWindow *win)
529
533
  {
530
- wxOverlayDC ovl_dc(overlay, win);
531
- wxOverlayDC* ovl_dc_ptr = &ovl_dc;
532
- VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
533
- rc = rb_yield(rb_dc);
534
+ if (!wxRuby_IsAppRunning())
535
+ rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
536
+ VALUE rc = Qnil;
537
+ if (rb_block_given_p ())
538
+ {
539
+ wxOverlayDC ovl_dc(overlay, win);
540
+ wxOverlayDC* ovl_dc_ptr = &ovl_dc;
541
+ VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
542
+ rc = rb_yield(rb_dc);
543
+ }
544
+ return rc;
534
545
  }
535
- return rc;
536
- }
537
- static VALUE draw_on(wxOverlay &overlay, wxWindow *win, const wxRect &rect)
538
- {
539
- if (!wxRuby_IsAppRunning())
540
- rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
541
- VALUE rc = Qnil;
542
- if (rb_block_given_p ())
546
+ static VALUE draw_on(wxOverlay &overlay, wxWindow *win, const wxRect &rect)
543
547
  {
544
- wxOverlayDC ovl_dc(overlay, win, rect);
545
- wxOverlayDC* ovl_dc_ptr = &ovl_dc;
546
- VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
547
- rc = rb_yield(rb_dc);
548
+ if (!wxRuby_IsAppRunning())
549
+ rb_raise(rb_eRuntimeError, "A running Wx::App is required.");
550
+ VALUE rc = Qnil;
551
+ if (rb_block_given_p ())
552
+ {
553
+ wxOverlayDC ovl_dc(overlay, win, rect);
554
+ wxOverlayDC* ovl_dc_ptr = &ovl_dc;
555
+ VALUE rb_dc = SWIG_NewPointerObj(SWIG_as_voidptr(ovl_dc_ptr), SWIGTYPE_p_wxOverlayDC, 0);
556
+ rc = rb_yield(rb_dc);
557
+ }
558
+ return rc;
548
559
  }
549
- return rc;
550
- }
551
560
  __HEREDOC
552
561
  end
553
562
  else
@@ -16,14 +16,16 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
- # methods missing from docs
20
- spec.extend_interface 'wxEditableListBox',
21
- 'wxListCtrl* GetListCtrl()',
22
- 'wxBitmapButton* GetDelButton()',
23
- 'wxBitmapButton* GetNewButton()',
24
- 'wxBitmapButton* GetUpButton()',
25
- 'wxBitmapButton* GetDownButton()',
26
- 'wxBitmapButton* GetEditButton()'
19
+ if Config.instance.wx_version_check('3.3.3') < 0
20
+ # methods missing from docs
21
+ spec.extend_interface 'wxEditableListBox',
22
+ 'wxListCtrl* GetListCtrl()',
23
+ 'wxBitmapButton* GetDelButton()',
24
+ 'wxBitmapButton* GetNewButton()',
25
+ 'wxBitmapButton* GetUpButton()',
26
+ 'wxBitmapButton* GetDownButton()',
27
+ 'wxBitmapButton* GetEditButton()'
28
+ end
27
29
  # redefine this
28
30
  spec.ignore 'wxEditableListBox::GetStrings', ignore_doc: false
29
31
  spec.add_extend_code 'wxEditableListBox', <<~__HEREDOC
@@ -93,6 +93,21 @@ module WXRuby3
93
93
  }
94
94
  __CODE
95
95
  end
96
+ spec.add_header_code <<~__HEREDOC
97
+ // custom subclass for Ruby (derived) instances to cleanup event handler procs on destruction
98
+ class wxRubyEvtHandler : public wxEvtHandler
99
+ {
100
+ public:
101
+ wxRubyEvtHandler() : wxEvtHandler() {}
102
+ virtual ~wxRubyEvtHandler()
103
+ {
104
+ wxRuby_ReleaseEvtHandlerProcs(this);
105
+ }
106
+ };
107
+
108
+ __HEREDOC
109
+ # make Ruby director and wrappers use custom implementation
110
+ spec.use_class_implementation('wxEvtHandler', 'wxRubyEvtHandler')
96
111
  spec.add_runtime_code <<~__HEREDOC
97
112
  WXRUBY_TRACE_GUARD(WxRubyTraceEventHandlers, "EVENTS_HANDLER");
98
113
 
@@ -153,33 +168,27 @@ module WXRuby3
153
168
  // GC until the EvtHandler object itself is destroyed. So we keep a hash
154
169
  // which maps C++ pointer addresses of EvtHandlers to lists of
155
170
  // the callback objects created to handle their events.
156
- typedef wxVector<wxRbCallback*> EvtHandlerProcList;
157
- typedef EvtHandlerProcList* EvtHandlerProcListPtr;
158
- WX_DECLARE_VOIDPTR_HASH_MAP(EvtHandlerProcListPtr, PtrToEvtHandlerProcs);
159
- PtrToEvtHandlerProcs Evt_Handler_Handlers;
171
+ #include <set>
172
+ typedef std::set<wxRbCallback*> TEvtHandlerProcs;
173
+ typedef std::unordered_map<void*, TEvtHandlerProcs> TPtrToEvtHandlerProcs;
174
+ static TPtrToEvtHandlerProcs _s__Evt_Handler_Handlers {};
160
175
 
161
176
  // Add a proc to the list of protected handler for an EvtHandler object
162
177
  void wxRuby_ProtectEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
163
178
  {
164
- if (Evt_Handler_Handlers.count(evt_handler) == 0)
165
- Evt_Handler_Handlers[evt_handler] = new EvtHandlerProcList();
166
- Evt_Handler_Handlers[evt_handler]->push_back(proc_cb);
179
+ _s__Evt_Handler_Handlers[evt_handler].emplace(proc_cb);
167
180
  }
168
181
 
169
182
  static void wxRuby_ReleaseEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
170
183
  {
171
- if (Evt_Handler_Handlers.count(evt_handler) != 0)
184
+ auto itevh = _s__Evt_Handler_Handlers.find(evt_handler);
185
+ if (itevh != _s__Evt_Handler_Handlers.end())
172
186
  {
173
- EvtHandlerProcList *ehpl = Evt_Handler_Handlers[evt_handler];
174
- for (EvtHandlerProcList::iterator itproc = ehpl->begin();
175
- itproc != ehpl->end();
176
- itproc++)
187
+ auto itproc = itevh->second.find(proc_cb);
188
+ if (itproc != itevh->second.end())
177
189
  {
178
- if (proc_cb == (*itproc))
179
- {
180
- ehpl->erase(itproc);
181
- return;
182
- }
190
+ itevh->second.erase(itproc);
191
+ return;
183
192
  }
184
193
  }
185
194
  }
@@ -187,16 +196,11 @@ module WXRuby3
187
196
  // Called by App's mark function; protect all currently needed procs
188
197
  void wxRuby_MarkProtectedEvtHandlerProcs()
189
198
  {
190
- PtrToEvtHandlerProcs::iterator it;
191
- for( it = Evt_Handler_Handlers.begin();
192
- it != Evt_Handler_Handlers.end();
193
- ++it )
199
+ for(const auto& ehp :_s__Evt_Handler_Handlers )
194
200
  {
195
- for (EvtHandlerProcList::iterator itproc = it->second->begin();
196
- itproc != it->second->end();
197
- itproc++)
201
+ for (const wxRbCallback* rb_cp : ehp.second)
198
202
  {
199
- rb_gc_mark((*itproc)->m_func);
203
+ rb_gc_mark(rb_cp->m_func);
200
204
  }
201
205
  }
202
206
  }
@@ -206,10 +210,10 @@ module WXRuby3
206
210
  // swig/mark_free_impl.i
207
211
  WXRUBY_EXPORT void wxRuby_ReleaseEvtHandlerProcs(void* evt_handler)
208
212
  {
209
- if (Evt_Handler_Handlers.count(evt_handler) != 0)
213
+ auto itevh = _s__Evt_Handler_Handlers.find(evt_handler);
214
+ if (itevh != _s__Evt_Handler_Handlers.end())
210
215
  {
211
- delete Evt_Handler_Handlers[evt_handler];
212
- Evt_Handler_Handlers.erase(evt_handler);
216
+ _s__Evt_Handler_Handlers.erase(itevh);
213
217
  }
214
218
  }
215
219
 
@@ -86,6 +86,29 @@ module WXRuby3
86
86
  return nread>0 ? rb_str_new(buffer.get(), nread) : Qnil;
87
87
  }
88
88
  __HEREDOC
89
+ if Config.instance.wx_version_check('3.3.3') >= 0
90
+ # covered by custom ReadAll()
91
+ spec.ignore 'wxInputStream::Read(std::vector<wxUint8> &)'
92
+ spec.add_extend_code 'wxInputStream', <<~__HEREDOC
93
+ VALUE ReadAll()
94
+ {
95
+ std::vector<wxUint8> buffer;
96
+ $self->Read(buffer);
97
+ return buffer.size()>0 ? rb_str_new(reinterpret_cast<char*> (buffer.data()), buffer.size()) : Qnil;
98
+ }
99
+ __HEREDOC
100
+ else
101
+ spec.include 'wx/mstream.h'
102
+ spec.add_extend_code 'wxInputStream', <<~__HEREDOC
103
+ VALUE ReadAll()
104
+ {
105
+ wxMemoryOutputStream stream;
106
+ $self->Read(stream);
107
+ wxStreamBuffer* buffer = stream.GetOutputStreamBuffer();
108
+ return buffer->GetBufferSize()>0 ? rb_str_new(reinterpret_cast<char*> (buffer->GetBufferStart()), buffer->GetBufferSize()) : Qnil;
109
+ }
110
+ __HEREDOC
111
+ end
89
112
  # for Read(wxOutputStream&)
90
113
  spec.map 'wxInputStream&' => 'Wx::InputStream' do
91
114
  map_out code: '$result = self; wxUnusedVar($1);'
@@ -147,28 +170,34 @@ module WXRuby3
147
170
  static WxRuby_ID ios_close_id("close");
148
171
 
149
172
  // Mapping of wxStreamBase* to Ruby IO VALUE
150
- WX_DECLARE_VOIDPTR_HASH_MAP(VALUE,
151
- WXRBStreamBaseToRbValueHash);
152
- static WXRBStreamBaseToRbValueHash Stream_Value_Map;
153
173
 
154
- static void wxRuby_markRbStreams()
174
+ // tracking category
175
+ static const std::string WXRUBY_RUBY_IO_STREAMS = {"WXRUBY_RUBY_IO_STREAMS"};
176
+
177
+ static void wxRuby_markRbStreams(const TGCTrackingValueMap& values)
155
178
  {
156
- WXRBStreamBaseToRbValueHash::iterator it;
157
- for( it = Stream_Value_Map.begin(); it != Stream_Value_Map.end(); ++it )
179
+ for(const auto& ti : values)
158
180
  {
159
- VALUE obj = it->second;
181
+ VALUE obj = ti.second;
160
182
  rb_gc_mark(obj);
161
183
  }
162
184
  }
163
185
 
164
186
  static void wxRuby_RegisterStream(void* ptr, VALUE rbval)
165
187
  {
166
- Stream_Value_Map[ptr] = rbval;
188
+ static bool is_marker_registered = false;
189
+
190
+ if (!is_marker_registered)
191
+ {
192
+ wxRuby_RegisterTrackingCategory(WXRUBY_RUBY_IO_STREAMS, wxRuby_markRbStreams);
193
+ is_marker_registered = true;
194
+ }
195
+ wxRuby_RegisterCategoryValue(WXRUBY_RUBY_IO_STREAMS, ptr, rbval);
167
196
  }
168
197
 
169
198
  static void wxRuby_UnregisterStream(void* ptr)
170
199
  {
171
- Stream_Value_Map.erase(ptr);
200
+ wxRuby_UnregisterCategoryValue(WXRUBY_RUBY_IO_STREAMS, ptr);
172
201
  }
173
202
 
174
203
  // Implementation for wxRubyInputStream
@@ -373,7 +402,6 @@ module WXRuby3
373
402
  }
374
403
  }
375
404
  __CODE
376
- spec.add_init_code 'wxRuby_AppendMarker(wxRuby_markRbStreams);'
377
405
  end
378
406
 
379
407
  def process(gendoc: false)
@@ -83,6 +83,13 @@ module WXRuby3
83
83
  return Qnil;
84
84
  }
85
85
 
86
+ // Log a Wx error Message to the current Wx log output and abort
87
+ static VALUE log_fatal_error(int argc, VALUE *argv, VALUE self)
88
+ {
89
+ do_log(wxLOG_FatalError, argc, argv);
90
+ return Qnil;
91
+ }
92
+
86
93
  // Log a Wx low prio Message to the current Wx log output
87
94
  static VALUE log_info(int argc, VALUE *argv, VALUE self)
88
95
  {
@@ -264,6 +271,7 @@ module WXRuby3
264
271
  spec.add_init_code <<~__HEREDOC
265
272
  rb_define_module_function(mWxFunctions, "log_generic", VALUEFUNC(log_generic), -1);
266
273
  rb_define_module_function(mWxFunctions, "log_info", VALUEFUNC(log_info), -1);
274
+ rb_define_module_function(mWxFunctions, "log_fatal_error", VALUEFUNC(log_info), -1);
267
275
  rb_define_module_function(mWxFunctions, "log_verbose", VALUEFUNC(log_verbose), -1);
268
276
  rb_define_module_function(mWxFunctions, "log_message", VALUEFUNC(log_message), -1);
269
277
  rb_define_module_function(mWxFunctions, "log_warning", VALUEFUNC(log_warning), -1);
@@ -39,9 +39,7 @@ module WXRuby3
39
39
  spec.ignore('wxGridCellAttr::GetEditorPtr',
40
40
  'wxGridCellAttr::GetRendererPtr')
41
41
  # these require wxRuby to take ownership (ref counted)
42
- spec.new_object('wxGridCellAttr::Clone',
43
- 'wxGridCellAttr::GetEditor',
44
- 'wxGridCellAttr::GetRenderer')
42
+ spec.new_object('wxGridCellAttr::Clone')
45
43
  # type mapping for wxGridCellEditor* return ref
46
44
  spec.map 'wxGridCellEditor*' => 'Wx::GRID::GridCellEditor' do
47
45
  add_header_code 'extern VALUE wxRuby_WrapWxGridCellEditorInRuby(const wxGridCellEditor *wx_gce);',
@@ -39,6 +39,9 @@ module WXRuby3
39
39
  VALUE rb_gce = wxRuby_GridCellEditorInstance(const_cast<wxGridCellEditor*> (wx_gce));
40
40
  if (rb_gce && !NIL_P(rb_gce))
41
41
  {
42
+ // as this editor got passed from C++ it wll have incremented it's reference counter
43
+ // decrease that here; if we pass it back to C++ we will increase there
44
+ const_cast<wxGridCellEditor*> (wx_gce)->DecRef();
42
45
  return rb_gce;
43
46
  }
44
47
 
@@ -98,19 +101,24 @@ module WXRuby3
98
101
  }
99
102
 
100
103
  // Otherwise, retrieve the swig type info for this class and wrap it
101
- // in Ruby. Make it owned to manage the ref count if GC claims the object.
104
+ // in Ruby.
105
+ // As this editor was created in C++ it seems we have no registration yet
106
+ // but the reference counter will be at least 2 now (1 for C++ owner and 1
107
+ // increment for returning to us).
108
+ // We will now register a new Ruby object, keep it disowned and decrement
109
+ // for now. If passing to C++ again we will increment there.
102
110
  // wxRuby_GetSwigTypeForClass is defined in wx.i
103
111
  swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
104
112
  rb_gce = SWIG_NewPointerObj(const_cast<void*> (ptr), swig_type, 0);
105
113
  wxRuby_RegisterGridCellEditor(const_cast<wxGridCellEditor*> (wx_gce), rb_gce);
114
+ const_cast<wxGridCellEditor*> (wx_gce)->DecRef();
106
115
  return rb_gce;
107
116
  }
108
117
 
109
118
  extern void GC_free_GridCellEditor(void *ptr)
110
119
  {
111
- wxGridCellEditor* gc_edt = (wxGridCellEditor*)ptr;
112
- if (ptr)
113
- gc_edt->DecRef();
120
+ wxGridCellEditor* gc_edt = (wxGridCellEditor*)ptr;
121
+ wxSafeDecRef(gc_edt);
114
122
  }
115
123
  __CODE
116
124
  elsif spec.module_name == 'wxGridCellActivatableEditor'
@@ -147,7 +155,7 @@ module WXRuby3
147
155
  spec.override_inheritance_chain(spec.module_name, %w[wxGridCellEditor])
148
156
  end
149
157
  # due to the flawed wxWidgets XML docs we need to explicitly add these here
150
- # otherwise the derived editors won't be allocable due to pure virtuals
158
+ # otherwise the derived editors won't be allocatable due to pure virtuals
151
159
  spec.extend_interface spec.module_name,
152
160
  'void BeginEdit(int row, int col, wxGrid *grid)',
153
161
  'wxGridCellEditor * Clone() const',
@@ -157,13 +165,7 @@ module WXRuby3
157
165
  'void Reset()',
158
166
  'wxString GetValue() const'
159
167
  end
160
- unless spec.module_name == 'wxGridCellEditor'
161
- # type mapping for Clone return ref
162
- spec.map 'wxGridCellEditor*' => 'Wx::GRID::GridCellEditor' do
163
- add_header_code 'extern VALUE wxRuby_WrapWxGridCellEditorInRuby(const wxGridCellEditor *wx_gce);'
164
- map_out code: '$result = wxRuby_WrapWxGridCellEditorInRuby($1);'
165
- end
166
- end
168
+ spec.new_object "#{spec.module_name}::Clone"
167
169
  # handled; can be suppressed
168
170
  spec.suppress_warning(473, "#{spec.module_name}::Clone")
169
171
  end
@@ -38,6 +38,9 @@ module WXRuby3
38
38
  VALUE rb_gcr = wxRuby_GridCellRendererInstance(const_cast<wxGridCellRenderer*> (wx_gcr));
39
39
  if (rb_gcr && !NIL_P(rb_gcr))
40
40
  {
41
+ // as this renderer got passed from C++ it wll have incremented it's reference counter
42
+ // decrease that here; if we pass it back to C++ we will increase there
43
+ const_cast<wxGridCellRenderer*> (wx_gcr)->DecRef();
41
44
  return rb_gcr;
42
45
  }
43
46
 
@@ -94,11 +97,17 @@ module WXRuby3
94
97
  }
95
98
 
96
99
  // Otherwise, retrieve the swig type info for this class and wrap it
97
- // in Ruby. Make it owned to manage the ref count if GC claims the object.
100
+ // in Ruby.
101
+ // As this renderer was created in C++ it seems we have no registration yet
102
+ // but the reference counter will be at least 2 now (1 for C++ owner and 1
103
+ // increment for returning to us).
104
+ // We will now register a new Ruby object, keep it disowned and decrement
105
+ // for now. If passing to C++ again we will increment there.
98
106
  // wxRuby_GetSwigTypeForClass is defined in wx.i
99
107
  swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
100
108
  rb_gcr = SWIG_NewPointerObj(const_cast<void*> (ptr), swig_type, 0);
101
109
  wxRuby_RegisterGridCellRenderer(const_cast<wxGridCellRenderer*> (wx_gcr), rb_gcr);
110
+ const_cast<wxGridCellRenderer*> (wx_gcr)->DecRef();
102
111
  return rb_gcr;
103
112
  }
104
113
 
@@ -126,13 +135,7 @@ module WXRuby3
126
135
  'virtual wxSize GetBestSize(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, int row, int col)'
127
136
  spec.force_proxy spec.module_name
128
137
  end
129
- unless spec.module_name == 'wxGridCellRenderer'
130
- # type mapping for Clone return ref
131
- spec.map 'wxGridCellRenderer*' => 'Wx::GRID::GridCellRenderer' do
132
- add_header_code 'extern VALUE wxRuby_WrapWxGridCellRendererInRuby(const wxGridCellRenderer *wx_gcr);'
133
- map_out code: '$result = wxRuby_WrapWxGridCellRendererInRuby($1);'
134
- end
135
- end
138
+ spec.new_object "#{spec.module_name}::Clone"
136
139
  # handled; can be suppressed
137
140
  spec.suppress_warning(473, "#{spec.module_name}::Clone")
138
141
  end