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
@@ -388,25 +388,22 @@ module WXRuby3
388
388
  WXRUBY_TRACE_GUARD(WxRubyTraceGCTrackVariant, "GC_TRACK_VARIANT")
389
389
 
390
390
  class WXRBValueVariantData;
391
- // Mapping of WXRBValueVariantData* to Ruby VALUE
392
- WX_DECLARE_VOIDPTR_HASH_MAP(VALUE,
393
- WXRBVariantDataToRbValueHash);
394
- static WXRBVariantDataToRbValueHash Variant_Value_Map;
395
391
 
396
- static void GC_mark_RbValueVariants()
392
+ static const std::string WXRUBY_VARIANT_DATA = { "WXRUBY_VARIANT_DATA" };
393
+
394
+ static void GC_mark_RbValueVariants(const TGCTrackingValueMap& values)
397
395
  {
398
396
  WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
399
397
  WXRUBY_TRACE("> GC_mark_RbValueVariants")
400
398
  WXRUBY_TRACE_END
401
399
 
402
- WXRBVariantDataToRbValueHash::iterator it;
403
- for( it = Variant_Value_Map.begin(); it != Variant_Value_Map.end(); ++it )
400
+ for(const auto& ti : values)
404
401
  {
405
- VALUE obj = it->second;
402
+ VALUE obj = ti.second;
406
403
 
407
404
  WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
408
405
  WXRUBY_TRACE_WITH(void *c_ptr = (TYPE(obj) == T_DATA ? DATA_PTR(obj) : 0))
409
- WXRUBY_TRACE("| GC_mark_RbValueVariants : " << it->first << "|" << (void*)c_ptr)
406
+ WXRUBY_TRACE("| GC_mark_RbValueVariants : " << ti.first << "|" << (void*)c_ptr)
410
407
  WXRUBY_TRACE_END
411
408
 
412
409
  rb_gc_mark(obj);
@@ -419,12 +416,20 @@ module WXRuby3
419
416
 
420
417
  static void wxRuby_RegisterValueVariantData(void* ptr, VALUE rbval)
421
418
  {
419
+ static bool is_marker_registered = false;
420
+
422
421
  WXRUBY_TRACE_IF(WxRubyTraceGCTrackVariant, 2)
423
422
  WXRUBY_TRACE_WITH(void *c_ptr = (TYPE(rbval) == T_DATA ? DATA_PTR(rbval) : 0))
424
423
  WXRUBY_TRACE("> wxRuby_RegisterValueVariantData : " << ptr << "|" << (void*)c_ptr)
425
424
  WXRUBY_TRACE_END
426
425
 
427
- Variant_Value_Map[ptr] = rbval;
426
+ if (!is_marker_registered)
427
+ {
428
+ wxRuby_RegisterTrackingCategory(WXRUBY_VARIANT_DATA, GC_mark_RbValueVariants, true);
429
+ is_marker_registered = true;
430
+ }
431
+
432
+ wxRuby_RegisterCategoryValue(WXRUBY_VARIANT_DATA, ptr, rbval);
428
433
 
429
434
  WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
430
435
  WXRUBY_TRACE("< wxRuby_RegisterValueVariantData")
@@ -437,7 +442,7 @@ module WXRuby3
437
442
  WXRUBY_TRACE("> wxRuby_UnregisterValueVariantData : " << ptr)
438
443
  WXRUBY_TRACE_END
439
444
 
440
- Variant_Value_Map.erase(ptr);
445
+ wxRuby_UnregisterCategoryValue(WXRUBY_VARIANT_DATA, ptr);
441
446
 
442
447
  WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
443
448
  WXRUBY_TRACE("< wxRuby_UnregisterValueVariantData")
@@ -502,7 +507,6 @@ module WXRuby3
502
507
  return variant;
503
508
  }
504
509
  __HEREDOC
505
- spec.add_init_code 'wxRuby_AppendMarker(GC_mark_RbValueVariants);'
506
510
  # ignore GetType (not doc)
507
511
  spec.ignore 'wxVariant::GetType', ignore_doc: false
508
512
  # replace with custom implementation
@@ -0,0 +1,166 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ require_relative './window'
10
+
11
+ module WXRuby3
12
+
13
+ class Director
14
+
15
+ class WebView < Window
16
+
17
+ include Typemap::IOStreams
18
+ include Typemap::DateTime
19
+
20
+ def setup
21
+ spec.items << 'wxWebViewHistoryItem'
22
+ if Config.instance.wx_version_check('3.3.0') >= 0
23
+ spec.items << 'wxWebViewConfiguration'
24
+ end
25
+ super
26
+ if Config.instance.wx_version_check('3.3.0') >= 0
27
+ spec.gc_as_object 'wxWebViewConfiguration'
28
+ spec.no_proxy 'wxWebViewConfiguration'
29
+ spec.extend_interface 'wxWebViewConfiguration', 'wxWebViewConfiguration()', visibility: 'protected'
30
+ spec.make_abstract 'wxWebViewConfiguration'
31
+ # not useful in wxRuby
32
+ spec.ignore 'wxWebViewConfiguration::GetNativeConfiguration'
33
+ end
34
+ spec.gc_as_untracked 'wxWebViewHistoryItem'
35
+
36
+ spec.no_proxy 'wxWebView'
37
+ spec.ignore 'wxWebView::RegisterFactory'
38
+ spec.ignore 'wxWebView::GetNativeBackend'
39
+ if Config.instance.features_set?('WXMSW', 'USE_WEBVIEW_IE')
40
+ spec.include 'wx/msw/webview_ie.h', 'wx/msw/registry.h'
41
+ spec.add_extend_code 'wxWebView', <<~__CODE
42
+ // Have to add our own version here as wxw gets the execution module name wrong.
43
+ static bool msw_set_ie_emulation_level(wxWebViewIE_EmulationLevel level = wxWEBVIEWIE_EMU_IE11)
44
+ {
45
+ // Registry key where emulation level for programs are set
46
+ static const wxChar* IE_EMULATION_KEY =
47
+ wxT("SOFTWARE\\\\Microsoft\\\\Internet Explorer\\\\Main")
48
+ wxT("\\\\FeatureControl\\\\FEATURE_BROWSER_EMULATION");
49
+
50
+ wxRegKey key(wxRegKey::HKCU, IE_EMULATION_KEY);
51
+ // Check the existence of the key and create it if it does not exist
52
+ if ( !key.Exists() && !key.Create() )
53
+ {
54
+ wxLogWarning(_("Failed to find web view emulation level in the registry"));
55
+ return false;
56
+ }
57
+
58
+ const wxString programName = wxT("ruby.exe");
59
+ if ( level != wxWEBVIEWIE_EMU_DEFAULT )
60
+ {
61
+ if ( !key.SetValue(programName, level) )
62
+ {
63
+ wxLogWarning(_("Failed to set web view to modern emulation level"));
64
+ return false;
65
+ }
66
+ }
67
+ else
68
+ {
69
+ if ( !key.DeleteValue(programName) )
70
+ {
71
+ wxLogWarning(_("Failed to reset web view to standard emulation level"));
72
+ return false;
73
+ }
74
+ }
75
+
76
+ return true;
77
+ }
78
+ __CODE
79
+ else
80
+ spec.ignore 'wxWebViewIE_EmulationLevel'
81
+ end
82
+ if Config.instance.wx_version_check('3.1.1') >= 0
83
+ spec.map 'wxString *output' => 'String,nil' do
84
+ map_in ignore: true, temp: 'wxString tmp', code: '$1 = &tmp;'
85
+ map_out ignore: 'bool'
86
+ map_argout code: <<~__CODE
87
+ if (result)
88
+ {
89
+ $result = WXSTR_TO_RSTR(tmp$argnum);
90
+ }
91
+ else
92
+ {
93
+ $result = Qnil;
94
+ }
95
+ __CODE
96
+ end
97
+ end
98
+ if Config.instance.wx_version_check('3.1.6') >= 0
99
+ # do not support inherently unsafe 'void* clientData'
100
+ spec.ignore 'wxWebView::RunScriptAsync', ignore_doc: false
101
+ spec.add_extend_code 'wxWebView', <<~__CODE
102
+ void RunScriptAsync(const wxString& javascript)
103
+ {
104
+ $self->RunScriptAsync(javascript, nullptr);
105
+ }
106
+ __CODE
107
+ spec.map 'void* clientData', swig: false do
108
+ map_in ignore: true, code: ''
109
+ end
110
+ end
111
+
112
+ spec.add_swig_code <<~__CODE
113
+ %include <wx_ruby_shared_ptr.i>
114
+ %wx_ruby_shared_ptr(wxWebViewHandler, wxWebViewHandler);
115
+ %wx_ruby_shared_ptr(wxWebViewArchiveHandler, wxWebViewHandler);
116
+ %wx_ruby_shared_ptr(wxWebViewFSHandler, wxWebViewHandler);
117
+
118
+ %include <wx_shared_ptr.i>
119
+ %wx_shared_ptr(wxWebViewHistoryItem);
120
+ __CODE
121
+
122
+ spec.map 'wxSharedPtr<wxWebViewHandler>' => 'Wx::WebViewHandler>' do
123
+ map_in code: <<~__CODE
124
+ void* argp$argnum;
125
+ int res$argnum = SWIG_ConvertPtr($input, &argp$argnum, SWIGTYPE_p_WxRubySharedPtrT_wxWebViewHandler_wxWebViewHandler_t, 0 );
126
+ if (!SWIG_IsOK(res$argnum)) {
127
+ SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "WxRubySharedPtr< wxWebViewHandler, wxWebViewHandler >","RegisterHandler", 2, argv[0] ));
128
+ }
129
+ if (!argp2) {
130
+ SWIG_exception_fail(SWIG_NullReferenceError, Ruby_Format_TypeError("invalid null reference ", "WxRubySharedPtr< wxWebViewHandler, wxWebViewHandler >","RegisterHandler", 2, argv[0]));
131
+ } else {
132
+ arg2 = *(reinterpret_cast< WxRubySharedPtr< wxWebViewHandler, wxWebViewHandler > * >(argp2));
133
+ }
134
+ __CODE
135
+ end
136
+
137
+ spec.map 'wxVector< wxSharedPtr<wxWebViewHistoryItem> >' => 'Array<Wx::WEB::WebViewHistoryItem>' do
138
+ map_out code: <<~__CODE
139
+ $result = rb_ary_new();
140
+ wxVector< wxSharedPtr<wxWebViewHistoryItem> > *history = (wxVector< wxSharedPtr<wxWebViewHistoryItem> > *)&$1;
141
+ for (wxSharedPtr<wxWebViewHistoryItem>& hist_item : *history)
142
+ {
143
+ VALUE r_hist = SWIG_NewPointerObj(new wxSharedPtr<wxWebViewHistoryItem>(SWIG_STD_MOVE(hist_item)), SWIGTYPE_p_wxSharedPtrT_wxWebViewHistoryItem_t, SWIG_POINTER_OWN);
144
+ rb_ary_push($result, r_hist);
145
+ }
146
+ __CODE
147
+ end
148
+
149
+ spec.map 'wxSharedPtr<wxWebViewHistoryItem>' => 'Wx::WEB::WebViewHistoryItem', swig: false do
150
+ map_in code: ''
151
+ end
152
+
153
+ # fix event definitions
154
+ if Config.instance.wx_version_check('3.3.0') >= 0
155
+ # completely missing up and until 3.3.2 but should be there
156
+ if Config.instance.wx_version_check('3.3.2') <= 0
157
+ spec.add_swig_code %Q{%constant wxEventType wxEVT_WEBVIEW_BROWSING_DATA_CLEARED = wxEVT_WEBVIEW_BROWSING_DATA_CLEARED;}
158
+ end
159
+ end
160
+ end
161
+
162
+ end # class WebView
163
+
164
+ end # class Director
165
+
166
+ end # module WXRuby3
@@ -0,0 +1,37 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ require_relative './event'
10
+
11
+ module WXRuby3
12
+
13
+ class Director
14
+
15
+ class WebViewEvent < Event
16
+
17
+ def setup
18
+ super
19
+ spec.override_inheritance_chain('wxWebViewEvent',
20
+ {'wxNotifyEvent' => 'wxEvents'}, {'wxCommandEvent' => 'wxEvent'}, 'wxEvent', 'wxObject')
21
+ if Config.instance.wx_version_check('3.3.0') >= 0
22
+ spec.items << 'wxWebViewWindowFeatures'
23
+ spec.gc_as_untracked 'wxWebViewWindowFeatures'
24
+ spec.no_proxy 'wxWebViewWindowFeatures'
25
+ spec.make_abstract 'wxWebViewWindowFeatures'
26
+ spec.extend_interface 'wxWebViewWindowFeatures',
27
+ 'virtual wxWebViewWindowFeatures()',
28
+ visibility: 'protected'
29
+
30
+ end
31
+ spec.do_not_generate(:variables, :defines, :enums, :functions)
32
+ end
33
+ end # class WebViewEvent
34
+
35
+ end # class Director
36
+
37
+ end # module WXRuby3
@@ -0,0 +1,63 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ module WXRuby3
10
+
11
+ class Director
12
+
13
+ class WebViewHandler < Director
14
+
15
+ include Typemap::IOStreams
16
+ include Typemap::MBConv
17
+
18
+ def setup
19
+ spec.items.concat %w[wxWebViewArchiveHandler wxWebViewFSHandler]
20
+ if Config.instance.wx_version_check('3.3.0') >= 0
21
+ spec.items.concat %w[wxWebViewHandlerRequest wxWebViewHandlerResponse wxWebViewHandlerResponseData]
22
+ end
23
+ super
24
+ spec.gc_as_untracked 'wxWebViewHandler', 'wxWebViewArchiveHandler', 'wxWebViewFSHandler'
25
+ spec.make_abstract 'wxWebViewHandler'
26
+ spec.add_swig_code <<~__CODE
27
+ %include <wx_ruby_shared_ptr.i>
28
+ %wx_ruby_shared_ptr(wxWebViewHandler, wxWebViewHandler);
29
+ %wx_ruby_shared_ptr(wxWebViewArchiveHandler, wxWebViewHandler);
30
+ %wx_ruby_shared_ptr(wxWebViewFSHandler, wxWebViewHandler);
31
+ __CODE
32
+ if Config.instance.wx_version_check('3.3.0') >= 0
33
+ spec.gc_as_untracked 'wxWebViewHandlerRequest', 'wxWebViewHandlerResponse', 'wxWebViewHandlerResponseData'
34
+ spec.no_proxy 'wxWebViewHandlerRequest', 'wxWebViewHandlerResponse'
35
+ spec.make_abstract 'wxWebViewHandlerRequest'
36
+ spec.make_abstract 'wxWebViewHandlerResponse'
37
+ spec.make_abstract 'wxWebViewHandlerResponseData'
38
+ spec.add_swig_code <<~__CODE
39
+ %include <wx_shared_ptr.i>
40
+ %wx_shared_ptr(wxWebViewHandlerResponse);
41
+ %wx_shared_ptr(wxWebViewHandlerResponseData);
42
+ __CODE
43
+ spec.map 'wxSharedPtr<wxWebViewHandlerResponse>' => 'Wx::WEB::WebViewHandlerResponse', swig: false do
44
+ map_in code: ''
45
+ end
46
+ spec.map 'wxSharedPtr<wxWebViewHandlerResponseData>' => 'Wx::WEB::WebViewHandlerResponseData', swig: false do
47
+ map_in code: ''
48
+ end
49
+ spec.suppress_warning(473,
50
+ 'wxWebViewHandlerResponseData::GetStream')
51
+ end
52
+ spec.suppress_warning(473,
53
+ 'wxWebViewHandler::GetFile',
54
+ 'wxWebViewArchiveHandler::GetFile',
55
+ 'wxWebViewFSHandler::GetFile')
56
+ spec.do_not_generate(:variables, :defines, :enums, :functions)
57
+ end
58
+
59
+ end # class WebViewHandler
60
+
61
+ end # class Director
62
+
63
+ end # module WXRuby3
@@ -0,0 +1,20 @@
1
+ ---
2
+ :wxThreadEvent:
3
+ :detail:
4
+ :pre:
5
+ :detaileddescription:
6
+ - :pattern: !ruby/regexp /.*/
7
+ :replace: |
8
+
9
+ This event is not natively emitted by any control/class: it is just a helper class for the user.
10
+ Its most important feature is the {Wx::RT::ThreadEvent#get_event_category} implementation which allows
11
+ thread events <b>NOT</b> to be processed by {Wx::GUIEventLoop#yield_for} calls (unless the
12
+ {Wx::EventCategory::EVT_CATEGORY_THREAD} is specified - which is never in wx code).
13
+
14
+ In wxRuby user defined classes can be derived from this class but it is important to note that when used
15
+ with {Wx::RT::SharedEvtHandler#queue_message} (the only imaginable use for thread events) no Ruby state
16
+ will <b>ever</b> persist and adding instance variables is therefor not useful.
17
+ The real benefit of being able to derive from this class is that it provides for the registration and use of
18
+ user defined event types for the derived classes allowing to differentiate in event handling.
19
+ @see Wx::GUIEventLoop#yield_for
20
+ @see Wx::RT::SharedEvtHandler
@@ -0,0 +1,135 @@
1
+ ---
2
+ :wxWebView:
3
+ :detail:
4
+ :pre:
5
+ :detaileddescription:
6
+ - :pattern: !ruby/regexp /wxWEBVIEW_BACKEND_IE\s+\(MSW\)/
7
+ :subst: 'Wx::WEB::WEBVIEW_BACKEND_IE (MSW)'
8
+ - :pattern: !ruby/regexp /Internet\s+Explorer\s+7/
9
+ :subst: 'Internet Explorer 11'
10
+ - :pattern: !ruby/regexp /wxWebViewIE::MSWSetEmulationLevel/
11
+ :subst: 'wxWebView::msw_set_ie_emulation_level'
12
+ - :pattern: !ruby/regexp /wxWebViewBackendIE/m
13
+ :global: true
14
+ :subst: 'wxWEBVIEW_BACKEND_IE'
15
+ - :pattern: !ruby/regexp /wxWEBVIEW_BACKEND_EDGE/m
16
+ :global: true
17
+ :subst: 'Wx::WEB::WEBVIEW_BACKEND_EDGE'
18
+ - :pattern: !ruby/regexp /wxWebViewBackendEdge/m
19
+ :global: true
20
+ :subst: 'wxWEBVIEW_BACKEND_EDGE'
21
+ - :pattern: !ruby/regexp /This\s+backend.*using\s+CMake.\s+To\s+build.*steps:/
22
+ :subst: 'This backend is enabled by default for WXMSW.'
23
+ - :pattern: !ruby/regexp /wxWebViewBackendWebKit/m
24
+ :global: true
25
+ :subst: 'wxWEBVIEW_BACKEND_WEBKIT'
26
+ - :pattern: !ruby/regexp /wxWEBVIEW_WEBKIT/m
27
+ :global: true
28
+ :subst: 'Wx::WEB::WEBVIEW_BACKEND_WEBKIT'
29
+ - :pattern: !ruby/regexp /wxWEBVIEW_CHROMIUM/m
30
+ :global: true
31
+ :subst: 'Wx::WEB::WEBVIEW_BACKEND_CHROMIUM'
32
+ - :pattern: !ruby/regexp /wxWebViewBackendChromium/m
33
+ :global: true
34
+ :subst: 'wxWEBVIEW_BACKEND_CHROMIUM'
35
+ :programlisting:
36
+ - :pattern: !ruby/regexp /wxSetEnv/
37
+ :replace: |
38
+
39
+
40
+ ```ruby
41
+ ENV['WEBKIT_DISABLE_DMABUF_RENDERER'] = '1'
42
+ ```
43
+
44
+ :post:
45
+ - :pattern: !ruby/regexp /-\s+When\s+not\s+using\s+CMake:.*remove\s+the dependency\s+on\s+WebView2Loader\.dll\s+at runtime./m
46
+ :subst: ''
47
+ - :pattern: !ruby/regexp /If.*fixed\s+version.*WebView2.*Edge\s+backend\./
48
+ :subst: ''
49
+ - :pattern: !ruby/regexp /see\s+\{Wx::WebViewChromium\}.*build\s+instructions./
50
+ :subst: |
51
+ see the wxWidgets documentation for wxWebViewChromium for additional usage and build instructions.
52
+ This backend can not be automatically build by the wxRuby3 build scripts but requires a custom wxWidgets installation.
53
+ See the wxRuby3 INSTALL documentation for details on how to build with a custom wxWidgets setup.
54
+ :wxWebView.RunScript:
55
+ :detail:
56
+ :pre:
57
+ :programlisting:
58
+ - :pattern: !ruby/regexp /document\.write/
59
+ :replace: |
60
+
61
+
62
+ ```ruby
63
+ webview.run_script('document.write('Hello from wxWidgets!')')
64
+ ```
65
+
66
+ - :pattern: !ruby/regexp /document\.getElementById/
67
+ :replace: |
68
+
69
+
70
+ ```ruby
71
+ if (result = webview.run_script('document.getElementById('some_id').innerHTML'))
72
+ #... result contains the contents of the given element ...
73
+ # else: the element with this ID probably doesn't exist.
74
+ end
75
+ ```
76
+
77
+ :post:
78
+ - :pattern: !ruby/regexp /return\s+false/m
79
+ :global: true
80
+ :subst: 'return nil'
81
+ - :pattern: !ruby/regexp /MSWSetEmulationLevel\(\)/
82
+ :subst: 'Wx::WEB::WebView::msw_set_ie_emulation_level'
83
+ - :pattern: !ruby/regexp /If.*output.*success/m
84
+ :subst: 'This method returns the result of executing this code on success (or nil if no result or on failure)'
85
+ - :pattern: !ruby/regexp /true\s+if\s+there\s+is.*error./m
86
+ :subst: ''
87
+ :wxWebView.AddScriptMessageHandler:
88
+ :detail:
89
+ :pre:
90
+ :programlisting:
91
+ - :pattern: !ruby/regexp /AddScriptMessageHandler/
92
+ :replace: |
93
+
94
+
95
+ ```ruby
96
+ # Install message handler with the name wx_msg
97
+ @webView.add_script_message_handler("wx_msg")
98
+ # Bind handler
99
+ @webView.evt_webview_script_message_received(Wx::ID_ANY) { |evt|
100
+ Wx.log_message("Script message received; value = %s, handler = %s", evt.get_string, evt.get_message_handler)
101
+ }
102
+ ```
103
+
104
+ :post:
105
+ - :pattern: !ruby/regexp /Sample\s+C\+\+\s+code\s+/
106
+ :subst: 'Sample code '
107
+ :wxWebView.SetProxy:
108
+ :detail:
109
+ :pre:
110
+ :programlisting:
111
+ - :pattern: !ruby/regexp /.*/
112
+ :replace: |
113
+
114
+
115
+ ```ruby
116
+ webview = Wx::WEB::WebView.new
117
+ unless webview.set_proxy("http://127.0.0.1:8080")
118
+ Wx.log_warning("Setting proxy failed!")
119
+ end
120
+ webview.create(parent, Wx::ID_ANY)
121
+ ```
122
+
123
+ :wxWebView.IsBackendAvailable:
124
+ :detail:
125
+ :pre:
126
+ :programlisting:
127
+ - :pattern: !ruby/regexp /.*/
128
+ :replace: |
129
+
130
+
131
+ ```ruby
132
+ if Wx::WEB::WebView::is_backend_available(Wx::WEB::WEBVIEW_BACKEND_EDGE)
133
+ #... enable some extra functionality not available with the IE backend ...
134
+ end
135
+ ```
@@ -0,0 +1,38 @@
1
+ ---
2
+ :wxWebViewWindowFeatures:
3
+ :detail:
4
+ :pre:
5
+ :programlisting:
6
+ - :pattern: !ruby/regexp /wxEVT_WEBVIEW_NEWWINDOW/
7
+ :replace: |
8
+
9
+
10
+ ```ruby
11
+ # Bind new window handler
12
+ @webView.evt_webview_newwindow(Wx::ID_ANY) { |evt|
13
+ if evt.get_url == "http://badwebsite.com"
14
+ evt.veto # Disallow new window for badwebsite.com
15
+ else
16
+ evt.skip # Allow new window for all other websites
17
+ end
18
+ }
19
+
20
+ # Bind new window features handler
21
+ @webView.evt_webview_newwindow_features(Wx::ID_ANY) { |evt|
22
+ # Get target window features
23
+ features = evt.get_target_window_features
24
+ # Create a top level window for the child web view
25
+ win = Wx::Frame.new(nil, Wx::ID_ANY, features.get_position, features.get_size)
26
+ sizer = Wx::VBoxSizer.new
27
+ win.set_sizer(sizer)
28
+ # Get the child web view
29
+ childWebView = features.get_child_web_view
30
+ # Place the child web view into the window
31
+ childWebView.create(win, Wx::ID_ANY)
32
+ sizer.add(childWebView, Wx::SizerFlags.new.proportion(1).expand)
33
+ }
34
+ ```
35
+
36
+ :post:
37
+ - :pattern: !ruby/regexp /Sample\s+C\+\+\s+code\s+/
38
+ :subst: 'Sample code '
@@ -0,0 +1,58 @@
1
+ ---
2
+ :wxWebViewHandler.SetVirtualHost:
3
+ :detail:
4
+ :post:
5
+ - :pattern: !ruby/regexp /name\.\{Wx::site\}/
6
+ :subst: '<code>name.wxsite</code>'
7
+ :wxWebViewHandler.StartRequest:
8
+ :detail:
9
+ :pre:
10
+ :programlisting:
11
+ - :pattern: !ruby/regexp /.*/
12
+ :replace: |
13
+
14
+ ```ruby
15
+ def start_request(request, response)
16
+ # Set common headers allowing access from XMLHTTPRequests()
17
+ response.set_header("Access-Control-Allow-Origin", "*")
18
+ response.set_header("Access-Control-Allow-Headers", "*")
19
+
20
+ # Handle options request
21
+ if request.get_method.casecmp("options") == 0
22
+ response.finish("")
23
+ return
24
+ end
25
+
26
+ # Check the post data type
27
+ unless request.get_header("Content-Type").start_with?("application/json")
28
+ response.finish_with_error
29
+ return;
30
+ end
31
+
32
+ # Process input data
33
+ postData = request.get_data_string
34
+
35
+ #...
36
+
37
+ # Send result
38
+ response.set_content_type("application/json")
39
+ response.finish("{ result: true }")
40
+ end
41
+ ```
42
+ :wxWebViewHandlerResponse.Finish:
43
+ :detail:
44
+ :pre:
45
+ :detaileddescription:
46
+ - :pattern: !ruby/regexp /simplesect.*kind.*see.*Finish.*wxMBConv/
47
+ :replace: |
48
+ @see finish(text, conv)
49
+ - :pattern: !ruby/regexp /simplesect.*kind.*see.*Finish.*wxWebViewHandlerResponseData/
50
+ :replace: |
51
+ @see find(data)
52
+ :wxWebViewHandlerResponseData:
53
+ :detail:
54
+ :pre:
55
+ :detaileddescription:
56
+ - :pattern: !ruby/regexp /simplesect.*kind.*see.*Finish.*wxWebViewHandlerResponseData/
57
+ :replace: |
58
+ @see Wx::WEB::WebViewHandlerResponse#finish(data)
@@ -248,12 +248,18 @@ module WXRuby3
248
248
  Director.Spec(pkg, 'wxPersistentWindow', requirements: %w[USE_CONFIG])
249
249
  Director.Spec(pkg, 'wxSecretStore', requirements: %w[USE_SECRETSTORE])
250
250
  Director.Spec(pkg, 'wxDCOverlay', director: Director::DerivedDC)
251
- Director.Spec(pkg, 'wxGeometry', requirements: %w[USE_GEOMETRY])
252
- Director.Spec(pkg, 'wxAffineMatrix2D', requirements: %w[USE_GEOMETRY])
251
+ Director.Spec(pkg, 'wxGeometry', requirements: Config.instance.wx_version_check('3.3.2') <= 0 ? %w[USE_GEOMETRY] : [])
252
+ Director.Spec(pkg, 'wxAffineMatrix2D', requirements: Config.instance.wx_version_check('3.3.2') <= 0 ? %w[USE_GEOMETRY] : [])
253
253
  Director.Spec(pkg, 'wxCredentialEntryDialog', director: Director::Dialog, requirements: %w[USE_CREDENTIALDLG])
254
254
  Director.Spec(pkg, 'wxGenericAboutDialog', director: Director::Dialog, requirements: %w[USE_ABOUTDLG])
255
+ Director.Spec(pkg, 'wxMBConv')
255
256
  }
256
257
 
258
+ Director.Package('Wx::RT', 'USE_THREADS') do |pkg|
259
+ Director.Spec(pkg, 'wxSharedEvtHandler')
260
+ Director.Spec(pkg, 'wxThreadEvent')
261
+ end
262
+
257
263
  Director.Package('Wx::PRT', 'USE_PRINTING_ARCHITECTURE') do |pkg|
258
264
  Director.Spec(pkg, 'wxPrinterDC', director: Director::DerivedDC, requirements: Director.AnyOf(*%w[WXMSW WXOSX USE_GTKPRINT]))
259
265
  Director.Spec(pkg, 'wxPostScriptDC', director: Director::DerivedDC)
@@ -387,4 +393,10 @@ module WXRuby3
387
393
  Director.Spec(pkg, 'wxRibbonToolBar')
388
394
  Director.Spec(pkg, 'wxRibbonButtonBar')
389
395
  }
396
+
397
+ Director.Package('Wx::WEB', 'USE_WEBVIEW') { |pkg|
398
+ Director.Spec(pkg, 'wxWebViewHandler')
399
+ Director.Spec(pkg, 'wxWebView')
400
+ Director.Spec(pkg, 'wxWebViewEvent')
401
+ }
390
402
  end # module WXRuby3
@@ -532,7 +532,7 @@ module WXRuby3
532
532
 
533
533
  # window/sizer object wrapping
534
534
 
535
- map 'wxWindow*' => 'Wx::Window', 'wxSizer*' => 'Wx::Sizer' do
535
+ map 'wxWindow*' => 'Wx::Window', 'wxControl*' => 'Wx::Control', 'wxSizer*' => 'Wx::Sizer' do
536
536
  map_out code: '$result = wxRuby_WrapWxObjectInRuby($1);'
537
537
  end
538
538
 
@@ -605,6 +605,39 @@ module WXRuby3
605
605
  __CODE
606
606
  end
607
607
 
608
+ # Menu bars need to be wrapped / unwrapped correctly
609
+ map 'wxMenuBar*' => 'Wx::MenuBar' do
610
+ add_header_code <<~__CODE
611
+ WXRUBY_EXPORT VALUE wxRuby_WrapWxMenuBarInRuby(wxMenuBar *wx_menubar);
612
+ WXRUBY_EXPORT void wxRuby_RegisterWxMenuBar(wxMenuBar* wx_menubar, VALUE rb_menubar);
613
+ __CODE
614
+ map_check code: <<~__CODE
615
+ wxRuby_RegisterWxMenuBar($1, argv[$argnum-2]);
616
+ __CODE
617
+ map_out code: <<~__CODE
618
+ $result = wxRuby_WrapWxMenuBarInRuby($1);
619
+ __CODE
620
+ map_directorin code: <<~__CODE
621
+ $input = wxRuby_WrapWxMenuBarInRuby($1);
622
+ __CODE
623
+ end
624
+ # As do menus
625
+ map 'wxMenu*' => 'Wx::Menu' do
626
+ add_header_code <<~__CODE
627
+ WXRUBY_EXPORT VALUE wxRuby_WrapWxMenuInRuby(wxMenu *wx_menu);
628
+ WXRUBY_EXPORT void wxRuby_RegisterWxMenu(wxMenu* wx_menu, VALUE rb_menu);
629
+ __CODE
630
+ map_check code: <<~__CODE
631
+ wxRuby_RegisterWxMenu($1, argv[$argnum-2]);
632
+ __CODE
633
+ map_out code: <<~__CODE
634
+ $result = wxRuby_WrapWxMenuInRuby($1);
635
+ __CODE
636
+ map_directorin code: <<~__CODE
637
+ $input = wxRuby_WrapWxMenuInRuby($1);
638
+ __CODE
639
+ end
640
+
608
641
  # typemap to allow String or Symbol for wxColour in args
609
642
  map 'const wxColour&', 'const wxColour*', as: 'Wx::Colour,String,Symbol' do
610
643
  map_in temp: 'wxColour tmpcol', code: <<~__CODE