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
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2023 M.J.N. Corino, The Netherlands
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
2
  #
3
3
  # This software is released under the MIT license.
4
4
 
@@ -10,6 +10,7 @@ require_relative './unixish'
10
10
  require_relative 'pkgman/mingw'
11
11
 
12
12
  require 'uri'
13
+ require 'digest/sha2'
13
14
 
14
15
 
15
16
  if ENV['RI_DEVKIT'].nil?
@@ -31,6 +32,12 @@ module WXRuby3
31
32
  base.class_eval do
32
33
  include Config::UnixLike
33
34
 
35
+ const_set(:WEBVIEW2_VERSION, '1.0.3485.44')
36
+ const_set(:WEBVIEW2_URL, "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/#{const_get(:WEBVIEW2_VERSION)}")
37
+ const_set(:WEBVIEW2_INCLUDE, File.join('3rdparty','webview2','build','native','include','WebView2.h'))
38
+ const_set(:WEBVIEW2_LOADER, File.join('3rdparty','webview2','build','native',(RB_CONFIG["arch"] =~ /x64/ ? 'x64' : 'x86'),'WebView2Loader.dll'))
39
+ const_set(:WEBVIEW2_SHA256, 'BC09150B179246AC90189649B13BE8E6B11B3AC200E817E18DF106E1F3CF489E')
40
+
34
41
  attr_reader :rescomp
35
42
 
36
43
  alias :base_ldflags :ldflags
@@ -39,7 +46,7 @@ module WXRuby3
39
46
  end
40
47
 
41
48
  def debug_command(*args)
42
- args.unshift(nix_path(FileUtils::RUBY))
49
+ args.unshift(FileUtils::RUBY)
43
50
  args.unshift('--args')
44
51
  args.unshift('gdb')
45
52
  args.join(' ')
@@ -80,7 +87,7 @@ module WXRuby3
80
87
  def install_prerequisites
81
88
  pkg_deps = super
82
89
  PkgManager.install(pkg_deps)
83
- []
90
+ pkg_deps
84
91
  end
85
92
 
86
93
  def expand(cmd)
@@ -97,12 +104,66 @@ module WXRuby3
97
104
 
98
105
  private
99
106
 
107
+ def wx_checkout
108
+ super
109
+ # do we need to build an embedded wxWidgets?
110
+ if get_config('with-wxwin') && get_cfg_string('wxwin').empty?
111
+ # then check webview requirements
112
+ if wx_with_webview_backend?('edge')
113
+ # download and install Edge WebView2 SDK
114
+ chdir(File.join(ext_path, 'wxWidgets')) do
115
+ FileUtils.mkdir_p(File.join('3rdparty', 'webview2'))
116
+ if download_file(self.class::WEBVIEW2_URL, File.join('3rdparty', 'webview2', 'webview2_sdk.zip'))
117
+ chdir(File.join('3rdparty', 'webview2')) do
118
+ # check digest
119
+ File.open('webview2_sdk.zip', 'r', binmode: true) do |fin|
120
+ # check digest signature
121
+ digest = Digest::SHA256.new
122
+ while (data = fin.read(1024*1024))
123
+ digest << data
124
+ end
125
+ if self.class::WEBVIEW2_SHA256 != digest.hexdigest!.upcase
126
+ $stderr.puts 'ERROR: WebView2 SDK package digest signature does NOT match.'
127
+ exit(1)
128
+ end
129
+ end
130
+ unless sh("unzip webview2_sdk.zip")
131
+ STDERR.puts 'ERROR: Failed to unpack required WebView2 SDK.'
132
+ exit(1)
133
+ end
134
+ end
135
+ unless File.exist?(self.class::WEBVIEW2_INCLUDE)
136
+ STDERR.puts 'ERROR: Error in required WebView2 SDK.'
137
+ exit(1)
138
+ end
139
+ else
140
+ STDERR.puts 'ERROR: Failed to download required WebView2 SDK.'
141
+ exit(1)
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
147
+
100
148
  def wx_configure
101
- bash('./configure --prefix=`pwd`/install --disable-tests --without-subdirs --without-regex --without-libcurl --with-expat=builtin --with-zlib=builtin --disable-debug_info')
149
+ bash("./configure --prefix=`pwd`/install --disable-tests --without-subdirs " \
150
+ "--without-regex --without-libcurl --with-expat=builtin --with-zlib=builtin " \
151
+ "--disable-debug_info #{wx_with_webview? ? '--enable-webview' : '--disable-webview'} " \
152
+ "#{wx_with_webview_backend?('edge') ? '--enable-webviewedge ' : '--disable-webviewedge '} " \
153
+ "#{!get_config('with-webview').nil? && wx_with_webview_backend?('ie') ? '--enable-webviewie ' : '--disable-webviewie'} ")
102
154
  end
103
155
 
104
156
  def wx_make
105
- bash('make && make install')
157
+ if bash('make && make install')
158
+ # in case of an embedded wxWidgets with WebView SDK backend
159
+ if get_config('with-wxwin') && get_cfg_string('wxwin').empty? && wx_with_webview_backend?('edge')
160
+ # we need to copy the WebView2 loader dll to the install bin folder
161
+ FileUtils.cp(self.class::WEBVIEW2_LOADER, File.join('install', 'bin'))
162
+ end
163
+ true
164
+ else
165
+ false
166
+ end
106
167
  end
107
168
 
108
169
  def wx_generate_xml
@@ -43,9 +43,11 @@ module WXRuby3
43
43
  end
44
44
 
45
45
  PLATFORM_DEPS = {
46
- debian: PlatformDependencies.new(%w[libgtk-3-dev libwebkit2gtk-4.0-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev])
47
- .add('debian', %w[libgtk-3-dev libwebkit2gtk-4.1-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev], release: '13')
46
+ debian: PlatformDependencies.new(%w[libgtk-3-dev libwebkit2gtk-4.[0-9]+-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev])
47
+ .add('debian', %w[libgtk-3-dev libwebkit2gtk-4.1-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev], release: '12')
48
+ .alias('debian', '12', 'debian', '13')
48
49
  .add('ubuntu', %w[libgtk-3-dev libwebkit2gtk-4.1-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev], release: '24.04')
50
+ .alias('ubuntu', '24.04', 'ubuntu', '26.04')
49
51
  .alias('ubuntu', '24.04', 'linuxmint', '22')
50
52
  .alias('ubuntu', '24.04', 'linuxmint', '22.1')
51
53
  .alias('ubuntu', '24.04', 'linuxmint', '22.2')
@@ -14,7 +14,7 @@ module WXRuby3
14
14
 
15
15
  module PkgManager
16
16
 
17
- XTRA_PLATFORM_DEPS = %w[python]
17
+ XTRA_PLATFORM_DEPS = %w[python unzip curl]
18
18
 
19
19
  class << self
20
20
 
@@ -70,7 +70,7 @@ module WXRuby3
70
70
 
71
71
  # add deployment lookup paths for wxruby shared libraries
72
72
  def update_shlib_loadpaths(shlib)
73
- WXRuby3.config.patch_rpath(shlib, WXRuby3.config.get_rpath_origin, "#{WXRuby3.config.get_rpath_origin}/../ext")
73
+ WXRuby3.config.patch_rpath(shlib, WXRuby3.config.get_rpath_origin, "#{WXRuby3.config.get_rpath_origin}/../ext/lib")
74
74
  end
75
75
 
76
76
  def expand(cmd)
@@ -110,7 +110,9 @@ module WXRuby3
110
110
  end
111
111
 
112
112
  def wx_configure
113
- bash('./configure --prefix=`pwd`/install --disable-tests --without-subdirs --without-regex --disable-debug_info')
113
+ bash("./configure --prefix=`pwd`/install --disable-tests " \
114
+ "--without-subdirs --without-regex --disable-debug_info " \
115
+ "#{wx_with_webview? ? '--enable-webview' : '--disable-webview'}")
114
116
  end
115
117
 
116
118
  def wx_make
@@ -116,6 +116,12 @@ module WXRuby3
116
116
 
117
117
  WXWIN_MINIMUM = '3.2.0'
118
118
 
119
+ WX_WEBVIEW_BACKENDS = {
120
+ macosx: ['webkit'],
121
+ linux: ['webkit'],
122
+ mingw: ['ie', 'edge']
123
+ }
124
+
119
125
  module Config
120
126
 
121
127
  def self.command_to_s(*cmd)
@@ -361,7 +367,7 @@ module WXRuby3
361
367
  test = File.join(Config.instance.test_dir, test)
362
368
  test = Dir.glob(test+'.rb').shift || test unless File.exist?(test)
363
369
  end
364
- Rake.sh(Config.instance.exec_env.merge({'RUBYLIB'=>rb_lib_path}), FileUtils::RUBY, test) { |ok,status| errors << File.basename(test, '.rb') unless ok }
370
+ Rake.sh(exec_env, *make_ruby_cmd(*(ENV['TESTOPTS'] ? [test, ENV['TESTOPTS']] : [test]), verbose: verbose?)) { |ok,_| errors << File.basename(test, '.rb') unless ok }
365
371
  end
366
372
  end
367
373
  fail "ERRORS: ##{errors.size} test scripts failed.\n\t#{errors.join("\n\t")}" unless errors.empty?
@@ -444,6 +450,14 @@ module WXRuby3
444
450
  Config.clear_config(key)
445
451
  end
446
452
 
453
+ def wx_with_webview?
454
+ Config.wx_with_webview?
455
+ end
456
+
457
+ def wx_with_webview_backend?(backend)
458
+ Config.wx_with_webview_backend?(backend)
459
+ end
460
+
447
461
  def dll_mask
448
462
  "#{dll_ext}*"
449
463
  end
@@ -733,10 +747,21 @@ module WXRuby3
733
747
  @wx_version || ''
734
748
  end
735
749
 
736
- def wx_version_check(ver)
750
+ def wx_version_list
737
751
  @wx_version_list ||= (@wx_version || '0.0.0').split('.').collect {|s| s.to_i }
752
+ end
753
+
754
+ def wx_version_check(ver)
738
755
  ver = ver.split('.').collect {|s| s.to_i } unless ::Array === ver
739
- @wx_version_list <=> ver
756
+ wx_version_list <=> ver
757
+ end
758
+
759
+ def wx_plugin_path
760
+ @wx_plugin_path ||= if (wx_version_list[1] % 2) == 0
761
+ File.join('wx', "#{wx_version_list[0]}.#{wx_version_list[1]}")
762
+ else
763
+ File.join('wx', wx_version)
764
+ end
740
765
  end
741
766
 
742
767
  def mingw?
@@ -909,6 +934,15 @@ module WXRuby3
909
934
  WXRuby3::CONFIG.delete(key.to_s)
910
935
  end
911
936
 
937
+ def wx_with_webview?
938
+ get_config('with-webview') != false
939
+ end
940
+
941
+ def wx_with_webview_backend?(backend)
942
+ v = get_config('with-webview')
943
+ v.nil? || v == true || (v.is_a?(Array) && v.include?(backend))
944
+ end
945
+
912
946
  def is_configured?
913
947
  instance.is_configured?
914
948
  end
@@ -6,21 +6,53 @@
6
6
  #define WXRUBY_EXPORT WXRB_EXPORT_FLAG
7
7
  #endif
8
8
 
9
+ #include "wxruby-runtime.h"
9
10
  #include "wxruby-ClientData.h"
10
11
 
11
12
  #include <set>
12
13
 
13
- static std::set<wxRubyClientData*> __s_WxRubyClientDataSet;
14
- static std::set<wxRubyUserData*> __s_WxRubyUserDataSet;
14
+ static bool __s_RubyClientDataMarker_Registered = false;
15
+ static bool __s_RubyUserDataMarker_Registered = false;
16
+
17
+ static const std::string WXRUBY_CLIENT_DATA = { "WXRUBY_CLIENT_DATA" };
18
+ static const std::string WXRUBY_USER_DATA = { "WXRUBY_USER_DATA" };
19
+
20
+ static void wxRuby_GC_mark_ClientData(const TGCTrackingValueMap& values)
21
+ {
22
+ for (const auto& ti : values)
23
+ {
24
+ wxRubyClientData* pcd = static_cast<wxRubyClientData*> (ti.first);
25
+ rb_gc_mark(pcd->GetData());
26
+ }
27
+ }
28
+
29
+ static void wxRuby_GC_mark_UserData(const TGCTrackingValueMap& values)
30
+ {
31
+ for (const auto& ti : values)
32
+ {
33
+ wxRubyUserData* pud = static_cast<wxRubyUserData*> (ti.first);
34
+ rb_gc_mark(pud->GetData());
35
+ }
36
+ }
15
37
 
16
38
  WXRB_EXPORT_FLAG void wxRuby_RegisterClientData(wxRubyClientData* pcd)
17
39
  {
18
- __s_WxRubyClientDataSet.insert(pcd);
40
+ if (!__s_RubyClientDataMarker_Registered)
41
+ {
42
+ wxRuby_RegisterTrackingCategory(WXRUBY_CLIENT_DATA, wxRuby_GC_mark_ClientData, true);
43
+ __s_RubyClientDataMarker_Registered = true;
44
+ }
45
+ wxRuby_RegisterCategoryValue(WXRUBY_CLIENT_DATA, pcd, Qnil);
19
46
  }
20
47
 
21
48
  WXRB_EXPORT_FLAG void wxRuby_RegisterUserData(wxRubyUserData* pud)
22
49
  {
23
- __s_WxRubyUserDataSet.insert(pud);
50
+ if (!__s_RubyUserDataMarker_Registered)
51
+ {
52
+ wxRuby_RegisterTrackingCategory(WXRUBY_USER_DATA, wxRuby_GC_mark_UserData, true);
53
+ __s_RubyUserDataMarker_Registered = true;
54
+ }
55
+ wxRuby_RegisterCategoryValue(WXRUBY_USER_DATA, pud, Qnil);
24
56
  }
25
57
 
26
58
  static ID client_data_unlinked_id()
@@ -36,7 +68,7 @@ static ID client_data_unlinked_id()
36
68
  WXRB_EXPORT_FLAG void wxRuby_UnregisterClientData(wxRubyClientData* pcd)
37
69
  {
38
70
  VALUE rbcd = pcd->GetData();
39
- __s_WxRubyClientDataSet.erase(pcd);
71
+ wxRuby_UnregisterCategoryValue(WXRUBY_CLIENT_DATA, pcd);
40
72
  if (!NIL_P(rbcd) && rb_respond_to(rbcd, client_data_unlinked_id()))
41
73
  {
42
74
  wxRuby_Funcall(rbcd, client_data_unlinked_id(), 0);
@@ -46,20 +78,9 @@ WXRB_EXPORT_FLAG void wxRuby_UnregisterClientData(wxRubyClientData* pcd)
46
78
  WXRB_EXPORT_FLAG void wxRuby_UnregisterUserData(wxRubyUserData* pud)
47
79
  {
48
80
  VALUE rbud = pud->GetData();
49
- __s_WxRubyUserDataSet.erase(pud);
81
+ wxRuby_UnregisterCategoryValue(WXRUBY_USER_DATA, pud);
50
82
  if (!NIL_P(rbud) && rb_respond_to(rbud, client_data_unlinked_id()))
51
83
  {
52
84
  wxRuby_Funcall(rbud, client_data_unlinked_id(), 0);
53
85
  }
54
86
  }
55
-
56
- static void wxRuby_GC_mark_ClientData()
57
- {
58
- for (wxRubyClientData* pcd : __s_WxRubyClientDataSet)
59
- rb_gc_mark(pcd->GetData());
60
- for (wxRubyUserData* pud : __s_WxRubyUserDataSet)
61
- rb_gc_mark(pud->GetData());
62
- }
63
-
64
- typedef void (*WXRBMarkFunction)();
65
- WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker);
@@ -78,7 +78,7 @@ protected:
78
78
  // handle exception
79
79
  VALUE rexc = this->get_exception ();
80
80
  wxRuby_PrintException(rexc);
81
- ::exit(255);
81
+ ::exit(127);
82
82
  }
83
83
  else
84
84
  {
@@ -220,19 +220,19 @@ namespace Swig
220
220
  void DirectorTypeMismatchException::raise(VALUE error, const char *msg)
221
221
  {
222
222
  print(DirectorTypeMismatchException(error, msg));
223
- ::exit(254);
223
+ ::exit(126);
224
224
  }
225
225
 
226
226
  void DirectorTypeMismatchException::raise(const char *msg)
227
227
  {
228
228
  print(DirectorTypeMismatchException(msg));
229
- ::exit(254);
229
+ ::exit(126);
230
230
  }
231
231
 
232
232
  void DirectorTypeMismatchException::raise(VALUE self, const char* method, VALUE error, const char *msg)
233
233
  {
234
234
  print(DirectorTypeMismatchException(self, method, error, msg));
235
- ::exit(254);
235
+ ::exit(126);
236
236
  }
237
237
 
238
238
  /* Any Ruby exception that occurs during a director method call */
@@ -10,44 +10,32 @@
10
10
  extern "C" {
11
11
  #endif
12
12
  // Shared custom swig tracking functions
13
+ WXRB_EXPORT_FLAG void wxRuby_InitializeTracking();
13
14
  WXRB_EXPORT_FLAG void wxRuby_AddTracking(void* ptr, VALUE object);
14
15
  WXRB_EXPORT_FLAG VALUE wxRuby_FindTracking(void* ptr);
15
16
  WXRB_EXPORT_FLAG void wxRuby_RemoveTracking(void* ptr);
16
- WXRB_EXPORT_FLAG void wxRuby_IterateTracking( void(*meth)(void* ptr, VALUE obj) );
17
- /* Setup a Ruby hash table to store Trackings - mostly done in wx.i */
18
- SWIGRUNTIMEINLINE void SWIG_RubyInitializeTrackings(void)
19
- {
20
- // no-op
21
- }
17
+ WXRB_EXPORT_FLAG void wxRuby_UnlinkObject(void* ptr);
18
+
19
+ /* Setup a Ruby hash table to store Trackings */
20
+ #define SWIG_RubyInitializeTrackings()
21
+
22
22
  /* Add a Tracking from a C/C++ struct to a Ruby object */
23
- SWIGRUNTIMEINLINE void SWIG_RubyAddTracking(void* ptr, VALUE object)
24
- {
25
- wxRuby_AddTracking(ptr, object);
26
- }
23
+ #define SWIG_RubyAddTracking wxRuby_AddTracking
24
+
27
25
  /* Get the Ruby object that owns the specified C/C++ struct */
28
- SWIGRUNTIMEINLINE VALUE SWIG_RubyInstanceFor(void* ptr)
29
- {
30
- return wxRuby_FindTracking(ptr);
31
- }
26
+ #define SWIG_RubyInstanceFor wxRuby_FindTracking
27
+
32
28
  /* Remove a Tracking from a C/C++ struct to a Ruby object. It
33
29
  is very important to remove objects once they are destroyed
34
30
  since the same memory address may be reused later to create
35
31
  a new object. */
36
- SWIGRUNTIMEINLINE void SWIG_RubyRemoveTracking(void* ptr)
37
- {
38
- wxRuby_RemoveTracking(ptr);
39
- }
32
+ #define SWIG_RubyRemoveTracking wxRuby_RemoveTracking
33
+
40
34
  /* This is a helper method that unlinks a Ruby object from its
41
35
  underlying C++ object. This is needed if the lifetime of the
42
36
  Ruby object is longer than the C++ object */
43
- SWIGRUNTIMEINLINE void SWIG_RubyUnlinkObjects(void* ptr)
44
- {
45
- VALUE object = SWIG_RubyInstanceFor(ptr);
46
- if (object != Qnil)
47
- {
48
- DATA_PTR(object) = 0;
49
- }
50
- }
37
+ #define SWIG_RubyUnlinkObjects wxRuby_UnlinkObject
38
+
51
39
  #ifdef __cplusplus
52
40
  }
53
41
  #endif
@@ -418,8 +418,6 @@ module WXRuby3
418
418
  fsrc.puts %Q{rb_define_const(mWxSetup, "#{feature}", Q#{val});}
419
419
  end
420
420
  fsrc.puts
421
- # install wxRubyClientData marker
422
- fsrc.puts %Q{wxRuby_AppendMarker(wxRuby_GC_mark_ClientData);}
423
421
  else
424
422
  fsrc.puts %Q{#{module_variable} = rb_define_module_under(wxRuby_Core(), "#{name}");}
425
423
  # record package submodule in main module's list
@@ -152,20 +152,13 @@ module WXRuby3
152
152
  // Prevents the App being destroyed prematurely when Ruby exits down with
153
153
  // an exception. Otherwise GC destroys the C++ object, which can still
154
154
  // be needed for final WxWidgets events.
155
- %markfunc wxApp "wxRubyApp::mark_wxRubyApp";
155
+ %markfunc wxApp "wxRubyApp::GC_mark_wxRubyApp";
156
156
  __HEREDOC
157
157
  spec.add_header_code <<~__HEREDOC
158
158
  extern void GC_SetWindowDeleted(void*);
159
159
  extern "C" void Init_wxRubyStockObjects();
160
160
  extern void wxRuby_MarkProtectedEvtHandlerProcs();
161
161
 
162
- static wxVector<WXRBMarkFunction> WXRuby_Mark_List;
163
-
164
- WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker)
165
- {
166
- WXRuby_Mark_List.push_back(marker);
167
- }
168
-
169
162
  #include "wxRubyApp.h"
170
163
 
171
164
  WXRUBY_EXPORT bool wxRuby_IsAppRunning()
@@ -29,10 +29,14 @@ module WXRuby3
29
29
  typedef wxString wxArtID;
30
30
  typedef wxString wxArtClient;
31
31
 
32
- // Missing from docs
33
- %constant const char* wxART_STOP = wxART_STOP;
34
- %constant const char* wxART_REFRESH = wxART_REFRESH;
35
32
  __HEREDOC
33
+ if Config.instance.wx_version_check('3.3.2') <= 0
34
+ spec.add_swig_code <<~__HEREDOC
35
+ // Missing from docs
36
+ %constant const char* wxART_STOP = wxART_STOP;
37
+ %constant const char* wxART_REFRESH = wxART_REFRESH;
38
+ __HEREDOC
39
+ end
36
40
  spec.map *%w[wxArtID wxArtClient], as: 'String', swig: false do
37
41
  map_in
38
42
  map_out
@@ -82,11 +82,6 @@ module WXRuby3
82
82
  }
83
83
  return rb_cpp;
84
84
  }
85
-
86
- static void wxRuby_markComboPopups()
87
- {
88
- WxRubyComboPopup::GC_mark_combo_popups();
89
- }
90
85
  __HEREDOC
91
86
  # ignore these
92
87
  spec.ignore 'wxComboCtrl::SetPopupControl',
@@ -110,8 +105,6 @@ module WXRuby3
110
105
  }
111
106
  __HEREDOC
112
107
  spec.add_init_code <<~__HEREDOC
113
- wxRuby_AppendMarker(wxRuby_markComboPopups);
114
-
115
108
  g_rb_mWxComboPopup = rb_define_module_under(mWxCore, "ComboPopup");
116
109
  rb_define_method(g_rb_mWxComboPopup, "get_combo_ctrl", VALUEFUNC(wx_combo_popup_get_combo_ctrl), -1);
117
110
 
@@ -16,8 +16,41 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
- spec.items << 'wxContextHelp'
20
- spec.no_proxy 'wxContextHelp'
19
+ # add custom implementation of ContextHelp as module function (not a class)
20
+ spec.add_header_code <<~__CODE
21
+ SWIGINTERN int SWIG_AsVal_bool (VALUE obj, bool *val); // forward decl
22
+
23
+ static VALUE wxruby_ContextHelp(int argc, VALUE *argv, VALUE self)
24
+ {
25
+ if (argc > 1)
26
+ {
27
+ rb_raise(rb_eArgError, "wrong # of arguments %d for 1", argc);
28
+ return Qnil;
29
+ }
30
+
31
+ void *ptr = nullptr;
32
+ wxWindow *window = nullptr;
33
+ int res = 0;
34
+
35
+ if (argc > 0)
36
+ {
37
+ res = SWIG_ConvertPtr(argv[0], &ptr, SWIGTYPE_p_wxWindow, 0);
38
+ if (!SWIG_IsOK(res))
39
+ {
40
+ VALUE msg = rb_inspect(argv[0]);
41
+ rb_raise(rb_eTypeError, "expected wxWindow* for 1 but got %s", StringValuePtr(msg));
42
+ return Qnil;
43
+ }
44
+ window = reinterpret_cast< wxWindow * >(ptr);
45
+ }
46
+
47
+ wxContextHelp(window, true);
48
+ return Qnil;
49
+ }
50
+ __CODE
51
+ spec.add_init_code <<~__CODE__
52
+ rb_define_module_function(mWxCore, "ContextHelp", VALUEFUNC(wxruby_ContextHelp), -1);
53
+ __CODE__
21
54
  end
22
55
  end # class ContextHelpButton
23
56