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
@@ -9,31 +9,11 @@
9
9
  // This file, required by common.i defines a set of macros which are used
10
10
  // to specify memory management strategies for individual Wx classes.
11
11
 
12
- // Broadly speaking there are two different strategies:
13
- //
14
- // 1) For all classes which inherit from Wx::Window, including all Frames,
15
- // Dialogs and Controls: the C++ objects are managed by WxWidgets; when=
16
- // Frame is closed, it and all its contents are deleted. Therefore wxRuby
17
- // doesn't try to delete these objects as part of GC until they are known
18
- // to have been deleted. The instance of Wx::App watches for window
19
- // destruction, and in the GC-mark phase marks all Windows that are still
20
- // alive. [see App.i]
21
- //
22
- // 2) Almost all other classes are memory managed by wxRuby - that is, when
23
- // they have fallen out of scope and GC is run, the underlying C++ object
24
- // will be deleted too by the standard %freefunc.
25
-
26
-
27
12
  // These are implemented in swig/wx.i, so they are shared among all classes
28
13
  %{
29
- WXRUBY_EXPORT void GcNullFreeFunc(void *);
30
- WXRUBY_EXPORT void GcSizerFreeFunc(void *);
31
- WXRUBY_EXPORT void GcDialogFreeFunc(void *);
32
14
  WXRUBY_EXPORT void GcRefCountedFreeFunc(void *);
33
15
  WXRUBY_EXPORT void GC_mark_wxSizer(void *);
34
- WXRUBY_EXPORT void GC_mark_attached_wxMenu(void *);
35
16
  WXRUBY_EXPORT void GC_mark_wxWindow(void *);
36
- WXRUBY_EXPORT void GC_mark_wxFrame(void *);
37
17
  WXRUBY_EXPORT void GC_mark_wxEvent(void *);
38
18
  %}
39
19
 
@@ -43,7 +23,7 @@ WXRUBY_EXPORT void GC_mark_wxEvent(void *);
43
23
  // all Windows, including Frames and Dialogs
44
24
  %define GC_NEVER(kls)
45
25
  %trackobjects kls;
46
- %feature("freefunc") kls "GcNullFreeFunc";
26
+ %feature("freefunc") kls "SWIG_RubyRemoveTracking";
47
27
  %enddef
48
28
 
49
29
  // Strategy for windows that aren't top-level windows. Here, the C++
@@ -61,26 +41,21 @@ GC_NEVER(kls);
61
41
  %enddef
62
42
 
63
43
  // Strategy for top-level frames - these are destroyed
64
- // automatically. Marking is the same as for Windows, plus preservation
65
- // of the associated MenuBar, if reuqired.
44
+ // automatically. Marking is the same as for Windows.
66
45
  %define GC_MANAGE_AS_FRAME(kls)
67
- GC_NEVER(kls);
68
- // Mark any associated sizer
69
- %feature("markfunc") kls "GC_mark_wxFrame";
46
+ GC_MANAGE_AS_WINDOW(kls);
70
47
  %enddef
71
48
 
72
49
  // Strategy for dialogs - these are NOT destroyed automatically
73
50
  %define GC_MANAGE_AS_DIALOG(kls)
74
- GC_NEVER(kls);
75
- // Mark any associated sizer
76
- %feature("markfunc") kls "GC_mark_wxWindow";
51
+ GC_MANAGE_AS_WINDOW(kls);
77
52
  %enddef
78
53
 
79
54
  // Events - most are created within wxWidgets C++ on the stack and thus
80
55
  // do not need deletion. These are passed into ruby via EvtHandler or
81
56
  // App methods, and are wrapped using wxRuby_WrapWxEventInRuby (see
82
- // wx.i). This gives them a void freefunc and markfunc and are NOT
83
- // tracked - they are treated as one-shot short-lived objects.
57
+ // wx.i). This gives them a null freefunc and markfunc and provides no
58
+ // tracking - they are treated as one-shot short-lived objects.
84
59
  //
85
60
  // However, custom events created on the ruby side need to be deleted to
86
61
  // avoid leakage as SWIG wrappers call C++ "new" to allocate the
@@ -113,15 +88,10 @@ GC_NEVER(kls);
113
88
  %define GC_MANAGE_AS_MARKED(kls)
114
89
  %enddef
115
90
 
116
- // Sizers attached to windows are automatically destroyed by wxWidgets,
117
- // so they should not be deleted.
118
- //
119
- // TODO - orphaned/unattached sizers are not automatically destroyed -
120
- // so the freefunc should check for this condition and do the delete if
121
- // required to prevent a memory leak.
91
+ // Attached sizers should only be marked by the window they are attached to.
122
92
  %define GC_MANAGE_AS_SIZER(kls)
123
93
  %trackobjects kls;
124
- %feature("freefunc") kls "GcSizerFreeFunc";
94
+ //%feature("freefunc") kls "GcSizerFreeFunc";
125
95
  %feature("markfunc") kls "GC_mark_wxSizer";
126
96
  %enddef
127
97
 
@@ -133,12 +103,6 @@ GC_NEVER(kls);
133
103
  %feature("freefunc") kls "GcRefCountedFreeFunc";
134
104
  %enddef
135
105
 
136
- // special refcounted for grid cell renderers/editors and attrs
137
- %define GC_MANAGE_AS_UNTRACKED_REFCOUNTED(kls)
138
- %feature("freefunc") kls "GcRefCountedFreeFunc";
139
- %enddef
140
-
141
-
142
106
  // All other classes - mainly helper classes (eg Sizer, GridCellxxx).
143
107
  // These are tracked but sometimes later disowned once passed into a
144
108
  // widget, and thenceforth managed by WxWidgets
@@ -17,13 +17,15 @@
17
17
 
18
18
  #include <wx/filesys.h>
19
19
  #include <wx/fs_zip.h>
20
+ #include <wx/utils.h>
20
21
 
21
22
  #include <unordered_map>
22
23
 
23
- WXRUBY_TRACE_GUARD(WxRubyTraceGCTrack, "GC_TRACK")
24
24
  WXRUBY_TRACE_GUARD(WxRubyTraceGCWrapEvents, "GC_WRAP_EVENTS")
25
25
  WXRUBY_TRACE_GUARD(WxRubyTraceGCWrapObject, "GC_WRAP_OBJECT")
26
26
 
27
+ // SWIG and wxRuby3 custom tracking support
28
+ #include "wxruby-GCTracking.h"
27
29
  %}
28
30
 
29
31
  // Some common functions
@@ -82,73 +84,6 @@ WXRUBY_EXPORT swig_type_info* wxRuby_GetSwigTypeForClassName(const char* clsname
82
84
  return wxRuby_GetSwigTypeForClass(rb_const_get(wxRuby_Core(), rb_intern(clsname)));
83
85
  }
84
86
 
85
- // Overriding standard SWIG tracking.
86
- // We don't want to use any functionality that could interfere with
87
- // Ruby GC handling so we use standard C++ hash maps.
88
- typedef std::unordered_map<void*, VALUE> PtrToRbObjHash;
89
- PtrToRbObjHash Global_Ptr_Map;
90
-
91
- // Add a tracking from ptr -> object
92
- WXRUBY_EXPORT void wxRuby_AddTracking(void* ptr, VALUE object)
93
- {
94
- WXRUBY_TRACE_IF(WxRubyTraceGCTrack, 2)
95
- WXRUBY_TRACE_WITH(VALUE clsname = rb_mod_name(CLASS_OF(object)))
96
- WXRUBY_TRACE("> wxRuby_AddTracking" << std::flush <<
97
- "(" << ptr << ":{"
98
- << (clsname != Qnil ? StringValueCStr(clsname) : "<noname>")
99
- << "}, " << object << ")")
100
- WXRUBY_TRACE_END
101
-
102
- // Check if an 'old' tracking registry exists.
103
- if (Global_Ptr_Map.count(ptr) == 1)
104
- {
105
- // This can happen if the C++ referenced by a Ruby object is managed by
106
- // a wxWidgets object and deleted without unlinking the Ruby object.
107
- // In these cases we unlink the previously linked Ruby object here
108
- // (if not the same Ruby object which should not be possible).
109
- // This will prevent SIGSEGV when attempting to call anything for
110
- // these objects but instead cause more informative exceptions.
111
- VALUE old_obj = Global_Ptr_Map[ptr];
112
- if (!NIL_P(old_obj) && old_obj != object)
113
- {
114
- DATA_PTR(old_obj) = 0;
115
- }
116
-
117
- }
118
- Global_Ptr_Map[ptr] = object;
119
- }
120
-
121
- // Return the ruby object for ptr
122
- WXRUBY_EXPORT VALUE wxRuby_FindTracking(void* ptr)
123
- {
124
- if ( Global_Ptr_Map.count(ptr) == 0 )
125
- return Qnil;
126
- else
127
- return Global_Ptr_Map[ptr];
128
- }
129
-
130
- // Remove the tracking for ptr
131
- WXRUBY_EXPORT void wxRuby_RemoveTracking(void* ptr)
132
- {
133
- WXRUBY_TRACE_IF(WxRubyTraceGCTrack, 2)
134
- WXRUBY_TRACE("< wxRuby_RemoveTracking(" << ptr << ") -> " << wxRuby_FindTracking(ptr))
135
- WXRUBY_TRACE_END
136
- Global_Ptr_Map.erase(ptr);
137
- }
138
-
139
- // Iterate over all the trackings, calling the passed-in method on each
140
- WXRUBY_EXPORT void wxRuby_IterateTracking( void(*meth)(void* ptr, VALUE obj) )
141
- {
142
- PtrToRbObjHash::iterator it;
143
- for( it = Global_Ptr_Map.begin(); it != Global_Ptr_Map.end(); ++it )
144
- {
145
- void* ptr = it->first;
146
- VALUE obj = it->second;
147
- (*meth)(ptr, obj);
148
- }
149
- }
150
-
151
-
152
87
  // Returns a ruby object wrapped around a wxObject. This is used for
153
88
  // methods whose return type is a generic C++ class (eg wxWindow), but
154
89
  // whose return values are actually instances of specific C++ classes
@@ -259,6 +194,18 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxObjectInRuby(wxObject *wx_obj)
259
194
  static VALUE Evt_Type_Map = NULL;
260
195
  static VALUE WxRuby_cAsyncProcCallEvent = Qnil;
261
196
 
197
+ inline VALUE _get_ThreadEventClass()
198
+ {
199
+ static VALUE __cThreadEvent = Qnil;
200
+
201
+ if (RB_NIL_P(__cThreadEvent))
202
+ {
203
+ VALUE module = rb_const_get(wxRuby_Core(), rb_intern("RT"));
204
+ if (!RB_NIL_P(module)) __cThreadEvent = rb_const_get(module, rb_intern("ThreadEvent"));
205
+ }
206
+ return __cThreadEvent;
207
+ }
208
+
262
209
  #ifdef __WXRB_DEBUG__
263
210
  WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(void* rcvr, wxEvent *wx_event)
264
211
  #else
@@ -338,17 +285,41 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
338
285
  DATA_PTR(rb_event) = wx_event;
339
286
  // do not forget to mark the instance with the mangled swig type name
340
287
  // (as there is no swig_type for the Wx::AsyncProcCallEvent class use it's base Wx::Event)
341
- swig_type_info* type = wx_event->GetEventType() == wxEVT_ASYNC_METHOD_CALL ?
342
- wxRuby_GetSwigTypeForClass(wxRuby_GetDefaultEventClass()) :
343
- wxRuby_GetSwigTypeForClass(rb_event_class);
344
- rb_iv_set(rb_event, "@__swigtype__", rb_str_new2(type->name));
288
+ swig_type_info* type;
289
+ if (wx_event->GetEventType() == wxEVT_ASYNC_METHOD_CALL)
290
+ {
291
+ type = wxRuby_GetSwigTypeForClass(wxRuby_GetDefaultEventClass());
292
+ }
293
+ else
294
+ {
295
+ type = wxRuby_GetSwigTypeForClass(rb_event_class);
296
+ if (!type)
297
+ {
298
+ // could be derived ThreadEvent
299
+ VALUE klass = _get_ThreadEventClass();
300
+ if (!RB_NIL_P(klass) && rb_class_inherited_p(rb_event_class, klass))
301
+ {
302
+ type = wxRuby_GetSwigTypeForClass(klass);
303
+ }
304
+ }
305
+ }
306
+ // type should never be null but let's be paranoid
307
+ if (type) rb_iv_set(rb_event, "@__swigtype__", rb_str_new2(type->name));
345
308
 
346
309
  WXRUBY_TRACE_IF(WxRubyTraceGCWrapEvents, 2)
347
- WXRUBY_TRACE("< wxRuby_WrapWxEventInRuby - wrapped transitory event " << wx_event << "{" << type->name << "}")
310
+ WXRUBY_TRACE("< wxRuby_WrapWxEventInRuby - wrapped transitory event " << wx_event << "{" << (type ? type->name : rb_class2name(rb_event_class)) << "}")
348
311
  WXRUBY_TRACE_END
349
312
 
350
313
  return rb_event;
351
314
  }
315
+
316
+ static VALUE wxruby_get_wx_prefix(int argc, VALUE *argv, VALUE self)
317
+ {
318
+ if ((argc < 0) || (argc > 0)) {
319
+ rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); return Qnil;
320
+ }
321
+ return WXSTR_TO_RSTR(wxGetInstallPrefix());
322
+ }
352
323
  %}
353
324
 
354
325
  %constant int wxWXWIDGETS_DEBUG_LEVEL = wxDEBUG_LEVEL;
@@ -364,4 +335,6 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
364
335
 
365
336
  // This is needed so HtmlHelp can load docs from a zip file
366
337
  wxFileSystem::AddHandler(new wxArchiveFSHandler);
338
+
339
+ rb_define_module_function(mWxruby3, "get_wx_prefix", VALUEFUNC(wxruby_get_wx_prefix), -1);
367
340
  %}
data/lib/wx/core/const.rb CHANGED
@@ -23,7 +23,6 @@ module Wx
23
23
  FRAME_NAME_STR = 'frame'
24
24
  STATUS_LINE_NAME_STR = 'status_line'
25
25
  STATIC_BITMAP_NAME_STR = 'staticBitmap'
26
- WEB_VIEW_NAME_STR = 'wxWebView'
27
26
  ANIMATION_CTRL_NAME_STR = 'animationctrl'
28
27
  TOOL_BAR_NAME_STR = 'toolbar'
29
28
  TEXT_CTRL_NAME_STR = 'text'
@@ -0,0 +1,17 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ class << self
8
+
9
+ define_method :ContextHelp do |window = nil|
10
+
11
+ context_help(window)
12
+
13
+ end
14
+
15
+ end
16
+
17
+ end
@@ -24,6 +24,7 @@ module Wx
24
24
 
25
25
  wx_set_cursor = instance_method :set_cursor
26
26
  wx_redefine_method :set_cursor do |cursor|
27
+ cursor = Wx::Cursor.new(cursor) if cursor.is_a?(Wx::StockCursor)
27
28
  wx_set_cursor.bind(self).call(cursor.is_a?(Wx::Cursor) ? Wx::CursorBundle.new(cursor) : cursor)
28
29
  end
29
30
  end
@@ -12,17 +12,25 @@
12
12
  require_relative './simplehelpprovider'
13
13
 
14
14
  class Wx::HelpControllerHelpProvider < Wx::SimpleHelpProvider
15
- def initialize(help_controller)
15
+ def initialize(help_controller = nil)
16
16
  super()
17
17
  @hc = help_controller
18
18
  end
19
19
 
20
+ def get_help_controller
21
+ @hc
22
+ end
23
+
24
+ def set_help_controller(help_controller)
25
+ @hc = help_controller
26
+ end
27
+
20
28
  # Show help for +win+; if the help text for +win+ is a string with a
21
29
  # single integer only, treats that as a section id for help and shows
22
30
  # that, otherwise shows a popup (native-style on Windows) of the text.
23
31
  def show_help(win)
24
32
  help_text = get_help(win)
25
- return false if help_text.empty?
33
+ return false if help_text.empty? || @hc.nil?
26
34
  if help_text =~ /\A\d+\z/
27
35
  @hc.display_context_popup(help_text.to_i)
28
36
  else
@@ -0,0 +1,11 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+
6
+ module Wx
7
+
8
+ ConvUTF8 = MBConvUTF8.new
9
+ ConvUTF7 = MBConvUTF7.new
10
+
11
+ end
@@ -0,0 +1,31 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+
6
+ module Wx
7
+
8
+
9
+ class MediaCtrl < Wx::Control
10
+
11
+ if Wx::PLATFORM == 'WXMSW'
12
+
13
+ wx_load = instance_method :load
14
+ wx_redefine_method :load do |*args|
15
+ uri_or_path = args.shift
16
+ if args.empty? && uri_or_path.is_a?(::URI) && uri_or_path.scheme == 'file'
17
+ if uri_or_path.host.empty?
18
+ wx_load.bind(self).call("#{uri_or_path.path}")
19
+ else
20
+ wx_load.bind(self).call("#{uri_or_path.host}:#{uri_or_path.path}")
21
+ end
22
+ else
23
+ wx_load.bind(self).call(uri_or_path, *args)
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -11,6 +11,13 @@ module Wx
11
11
  PersistentTLW.new(self)
12
12
  end
13
13
 
14
+ # fix missing method on some platforms/wxw versions
15
+ unless method_defined? :enable_full_screen_view
16
+ def enable_full_screen_view
17
+ false
18
+ end
19
+ end
20
+
14
21
  end
15
22
 
16
23
  end
data/lib/wx/core.rb CHANGED
@@ -26,6 +26,12 @@ Wx::WXWIDGETS_VERSION = '%i.%i.%i' % [ Wx::WXWIDGETS_MAJOR_VERSION,
26
26
  Wx::WXWIDGETS_MINOR_VERSION,
27
27
  Wx::WXWIDGETS_RELEASE_NUMBER ]
28
28
 
29
+ # except when in debug mode or when a user defined diagnostics level is defined
30
+ # suppress all diagnostics from GTK
31
+ unless Wx::DEBUG || ENV['WXSUPPRESS_GTK_DIAGNOSTICS'] || Wx::PLATFORM != 'WXGTK'
32
+ Wx::App.gtk_suppress_diagnostics
33
+ end
34
+
29
35
  # Helper functions
30
36
  require 'wx/helpers'
31
37
 
@@ -0,0 +1,17 @@
1
+ # :stopdoc:
2
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
3
+ #
4
+ # This software is released under the MIT license.
5
+
6
+
7
+ # This module provides and standardizes support for locating application art files.
8
+ #
9
+ # :startdoc:
10
+
11
+
12
+ module Wx
13
+
14
+ ART_STOP = "wxART_STOP"
15
+ ART_REFRESH = "wxART_REFRESH"
16
+
17
+ end
@@ -0,0 +1,42 @@
1
+ # :stopdoc:
2
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
3
+ #
4
+ # This software is released under the MIT license.
5
+ # :startdoc:
6
+
7
+
8
+ module Wx
9
+
10
+ # This method changes the cursor to a query and puts the application into a 'context-sensitive help mode'.
11
+ #
12
+ # When the user left-clicks on a window within the specified window, a Wx::EVT_HELP event is sent to that control,
13
+ # and the application may respond to it by popping up some help.
14
+ # The method returns after the left-click.
15
+ #
16
+ # For example:
17
+ #
18
+ # ```ruby
19
+ # Wx.context_help(myWindow)
20
+ # ```
21
+ #
22
+ # There are a couple of ways to invoke this behaviour implicitly:
23
+ #
24
+ # - Use the Wx::DIALOG_EX_CONTEXTHELP style for a dialog (WXMSW only). This will put a question mark in the titlebar,
25
+ # and Windows will put the application into context-sensitive help mode automatically, without further programming.
26
+ # - Create a Wx::ContextHelpButton, whose predefined behaviour is to create a context help object. Normally you will
27
+ # write your application so that this button is only added to a dialog for non-Windows platforms (use
28
+ # Wx::DIALOG_EX_CONTEXTHELP on WXMSW).
29
+ #
30
+ # Note that on macOS, the cursor does not change when in context-sensitive help mode.
31
+ #
32
+ # @param [Wx::Window] window the window which will be used to catch events; if nullptr, the top window will be used.
33
+ # @return [void]
34
+ def self.context_help(window = nil); end
35
+
36
+ # Convenience alias for {Wx.context_help} similarly named as the wxWidgets wxContextHelp class.
37
+ #
38
+ # @param [Wx::Window] window the window which will be used to catch events; if nullptr, the top window will be used.
39
+ # @return [void]
40
+ def self.ContextHelp(window = nil); end
41
+
42
+ end
data/lib/wx/doc/core.rb CHANGED
@@ -8,11 +8,6 @@
8
8
  module Wx
9
9
 
10
10
  class << self
11
- # Returns trace level (always 0 if #wxrb_debug returns false)
12
- # In case #wxrb_debug returns true #wxrb_trace_level= is also defined)
13
- # @return [Integer]
14
- attr_reader :wrb_trace_level
15
-
16
11
  # Returns true if WXWIDGETS_VERSION >= ver
17
12
  # @param [String,Array(Integer)] ver version string or integer array (1-3)
18
13
  # @return [Boolean] true if WXWIDGETS_VERSION >= ver, false otherwise
@@ -36,6 +36,16 @@ module Wx
36
36
  # @return [void]
37
37
  def self.log_info(fmt, *args, filename: nil, line: 0, func: nil, component: nil) end
38
38
 
39
+ # Log a Wx error informational message to the current Wx log output and abort (exit code 3)
40
+ # @param fmt [String] message (formatting) string
41
+ # @param args [Array<Object>] optional message arguments
42
+ # @param filename [String] optional file name for log info
43
+ # @param line [Integer] optional line number for log info
44
+ # @param func [String] optional function name for log info
45
+ # @param component [String] optional component name for log info
46
+ # @return [void]
47
+ def self.log_fatal_error(fmt, *args, filename: nil, line: 0, func: nil, component: nil) end
48
+
39
49
  # Log a Wx Informational message to the current Wx log output
40
50
  # @param fmt [String] message (formatting) string
41
51
  # @param args [Array<Object>] optional message arguments
@@ -9,7 +9,7 @@ module Wx
9
9
 
10
10
  module HTML
11
11
 
12
- class HelpController
12
+ class HtmlHelpController
13
13
 
14
14
  # Returns the latest frame size and position settings and whether a new frame is drawn with each invocation.
15
15
  # @return [Array(Wx::Frame,Wx::Size,Wx::Point,Boolean)] latest frame settings
@@ -17,6 +17,28 @@ module Wx
17
17
 
18
18
  end
19
19
 
20
+ # This module method uses Wx::HTML::HtmlHelpController to display help in a modal dialog and returns after
21
+ # the dialog has been closed.
22
+ #
23
+ # This is useful on platforms such as WXOSX where if you display help from a modal dialog, the help window must
24
+ # itself be a modal dialog.
25
+ #
26
+ # @param [Wx::Window] parent parent of the dialog.
27
+ # @param [String] help_file the HTML help file to show.
28
+ # @param [String] topic an optional topic. If this is empty, the help contents will be shown.
29
+ # @param [Integer] style is a combination of the flags described in the {Wx::HTML::HtmlHelpController} documentation.
30
+ # @return [void]
31
+ def self.html_modal_help(parent, help_file, topic = '', style = Wx::HTML::HF_DEFAULT_STYLE); end
32
+
33
+ # Convenience alias for {Wx::HTML.html_modal_help} similarly named as the wxWidgets wxHtmlModalHelp class.
34
+ #
35
+ # @param [Wx::Window] parent parent of the dialog.
36
+ # @param [String] help_file the HTML help file to show.
37
+ # @param [String] topic an optional topic. If this is empty, the help contents will be shown.
38
+ # @param [Integer] style is a combination of the flags described in the {Wx::HTML::HtmlHelpController} documentation.
39
+ # @return [void]
40
+ def self.HtmlModalHelp(parent, help_file, topic, style = Wx::HTML::HF_DEFAULT_STYLE); end
41
+
20
42
  end
21
43
 
22
44
  end
@@ -0,0 +1,108 @@
1
+ # :stopdoc:
2
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
3
+ #
4
+ # This software is released under the MIT license.
5
+ # :startdoc:
6
+
7
+
8
+ module Wx
9
+
10
+ # This class is the base class of a hierarchy of classes capable of converting text strings between multibyte
11
+ # (SBCS or DBCS) encodings and Unicode.
12
+ #
13
+ # This is an abstract base class which defines the operations implemented by all different conversion classes.
14
+ #
15
+ # @note Note that in wxRuby these classes only provide types without any operations as these are not required
16
+ # as Ruby provides its own perfectly good encoding conversion methods. These types are therefor only required
17
+ # to provide as argument to certain methods of the wrapped wxWidgets classes (see for example {Wx::WEB::WebViewHandlerResponse}).
18
+ class MBConv
19
+ protected def initialize; end
20
+ end
21
+
22
+ # This class converts between any character set supported by the system and Unicode.
23
+ class CSConv < MBConv
24
+
25
+ end
26
+
27
+ # This class implements a Unicode to/from multibyte converter capable of automatically recognizing the encoding of the
28
+ # multibyte text on input.
29
+ #
30
+ # The logic used is very simple: the class uses the BOM (byte order mark) if it's present and tries to interpret the
31
+ # input as UTF-8 otherwise. If this fails, the input is interpreted as being in the default multibyte encoding which
32
+ # can be specified in the constructor of a {Wx::ConvAuto} instance and, in turn, defaults to a fallback encoding if not
33
+ # explicitly given.
34
+ #
35
+ # For the conversion from Unicode to multibyte, the same encoding as was previously used for multibyte to Unicode conversion is reused. If there had been no previous multibyte to Unicode conversion, UTF-8 is used by default. Notice that once the multibyte encoding is automatically detected, it doesn't change any more, i.e. it is entirely determined by the first use of wxConvAuto object in the multibyte-to-Unicode direction. However creating a copy of wxConvAuto object, either via the usual copy constructor or assignment operator, or using wxMBConv::Clone(), resets the automatically detected encoding so that the new copy will try to detect the encoding of the input on first use.
36
+ #
37
+ # This class is used by default in wxWidgets classes and functions reading text from files such as wxFile, wxFFile, wxTextFile, wxFileConfig and various stream classes so the encoding set with its SetFallbackEncoding() method will affect how these classes treat input files. In particular, use this method to change the fall-back multibyte encoding used to interpret the contents of the files whose contents isn't valid UTF-8 or to disallow it completely.
38
+ class ConvAuto < MBConv
39
+
40
+ # Constructs a new Wx::ConvAuto instance.
41
+ #
42
+ # The object will try to detect the input of the given multibyte text automatically but if the automatic detection
43
+ # of Unicode encodings fails, the fall-back encoding enc will be used to interpret it as multibyte text.
44
+ #
45
+ # The default value of enc, {Wx::FONTENCODING_DEFAULT}, means that the global default value (which can be set using
46
+ # {Wx::ConvAuto#set_fallback_encoding}) should be used. As with that method, passing Wx::FONTENCODING_MAX inhibits
47
+ # using this encoding completely so the input multibyte text will always be interpreted as UTF-8 in the absence of
48
+ # BOM and the conversion will fail if the input doesn't form valid UTF-8 sequence.
49
+ #
50
+ # Another special value is {Wx::FONTENCODING_SYSTEM} which means to use the encoding currently used on the user system,
51
+ # i.e. the encoding returned by {Wx::Locale#get_system_encoding}. Any other encoding will be used as is, e.g. passing
52
+ # {Wx::FONTENCODING_ISO8859_1} ensures that non-UTF-8 input will be treated as latin1.
53
+ # @param [Wx::FontEncoding] enc
54
+ def initialize(enc=Wx::FONTENCODING_DEFAULT); end
55
+
56
+ # Disable the use of the fallback encoding: if the input doesn't have a BOM and is not valid UTF-8, the conversion
57
+ # will fail.
58
+ def self.disable_fallback_encoding; end
59
+
60
+ # Returns the encoding used by default by {Wx::ConvAuto} if no other encoding is explicitly specified in constructor.
61
+ #
62
+ # By default, returns {Wx::FONTENCODING_ISO8859_1} but can be changed using #set_fallback_encoding.
63
+ # @return [Wx::FontEncoding]
64
+ def self.get_fallback_encoding; end
65
+
66
+ # Changes the encoding used by default by {Wx::ConvAuto} if no other encoding is explicitly specified in constructor.
67
+ #
68
+ # The default value, which can be retrieved using #get_fallback_encoding, is {Wx::FONTENCODING_ISO8859_1}.
69
+ #
70
+ # Special values of {Wx::FONTENCODING_SYSTEM} or {Wx::FONTENCODING_MAX} can be used for the enc parameter to use
71
+ # the encoding of the current user locale as fall back or not use any encoding for fall back at all, respectively
72
+ # (just as with the similar constructor parameter). However, {Wx::FONTENCODING_DEFAULT} can't be used here.
73
+ # @param [Wx::FontEncoding] enc
74
+ def self.set_fallback_encoding(enc); end
75
+ end
76
+
77
+ # This class is used to convert between multibyte encodings and UTF-16 Unicode encoding (also known as UCS-2).
78
+ #
79
+ # Unlike UTF-8 encoding, UTF-16 uses words and not bytes and hence depends on the byte ordering: big or little endian.
80
+ # Hence this class is provided in a little endian version and a big endian version. {Wx::MBConvUTF16} always provides
81
+ # the implementation native to the current platform (e.g. LE under Windows and BE under Mac).
82
+ class MBConvUTF16 < MBConv
83
+ def initialize; end
84
+ end
85
+
86
+ #This class is used to convert between multibyte encodings and UTF-32 Unicode encoding (also known as UCS-4).
87
+ #
88
+ # Unlike UTF-8 encoding, UTF-32 uses (double) words and not bytes and hence depends on the byte ordering: big or
89
+ # little endian. Hence this class is provided in in a little endian version and a big endian version. {Wx::MBConvUTF32}
90
+ # always provides the implementation native to the current platform (e.g. LE under Windows and BE under Mac).
91
+ class MBConvUTF32 < MBConv
92
+ def initialize; end
93
+ end
94
+
95
+ # This class converts between the UTF-7 encoding and Unicode.
96
+ #
97
+ # Notice that, unlike all the other conversion objects, this converter is stateful, and therefor <b>not</b> thread-safe.
98
+ # It has one predefined instance, Wx::ConvUTF7.
99
+ class MBConvUTF7 < MBConv
100
+ def initialize; end
101
+ end
102
+
103
+ # This class converts between the UTF-8 encoding and Unicode.
104
+ # It has one predefined instance, Wx::ConvUTF8.
105
+ class MBConvUTF8 < MBConv
106
+ def initialize; end
107
+ end
108
+ end