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
@@ -0,0 +1,492 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ require_relative './lib/wxframe_runner'
6
+ require 'json'
7
+ require 'date'
8
+
9
+ if Wx.has_feature?(:USE_WEBVIEW)
10
+
11
+ class TestWeb < WxRuby::Test::Unit
12
+
13
+ def test_constants
14
+ assert_not_nil Wx::WEB::WEBVIEW_ZOOM_TINY
15
+ assert_not_nil Wx::WEB::WEBVIEW_ZOOM_SMALL
16
+ assert_not_nil Wx::WEB::WEBVIEW_ZOOM_MEDIUM
17
+ assert_not_nil Wx::WEB::WEBVIEW_ZOOM_LARGE
18
+ assert_not_nil Wx::WEB::WEBVIEW_ZOOM_LARGEST
19
+ assert_not_nil Wx::WEB::WEBVIEW_RELOAD_DEFAULT
20
+ assert_not_nil Wx::WEB::WEBVIEW_RELOAD_NO_CACHE
21
+ assert_not_nil Wx::WEB::WEBVIEW_NAV_ERR_CONNECTION
22
+ assert_not_nil Wx::WEB::WEBVIEW_FIND_DEFAULT
23
+ assert_not_nil Wx::WEB::WEBVIEW_BACKEND_DEFAULT
24
+ end
25
+
26
+ def test_backend_available
27
+ assert_not_empty Wx::WEB::WEBVIEW_BACKEND_DEFAULT
28
+ assert Wx::WebView.is_backend_available(Wx::WEB::WEBVIEW_BACKEND_DEFAULT)
29
+ end
30
+
31
+ end
32
+
33
+ class TestWebView < WxRuby::Test::GUITests
34
+
35
+ def setup
36
+ super
37
+ @webview = Wx::WebView.new(frame_win)
38
+ if ::Wx::WXWIDGETS_VERSION >= '3.3.0'
39
+ created = false
40
+ frame_win.evt_webview_created(@webview) { |_| created = true }
41
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
42
+ if is_ci_build? && is_msw? && !created
43
+ # on windows CI build there is occasional trouble creating the WebView so we retry
44
+ # after a short break
45
+ @webview.destroy
46
+ yield_for_a_while(1000)
47
+ # try again
48
+ @webview = Wx::WebView.new(frame_win)
49
+ created = false
50
+ frame_win.evt_webview_created(@webview) { |_| created = true }
51
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
52
+ end
53
+ elsif is_msw? || Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_CHROMIUM
54
+ yield_for_a_while(is_msw? ? 5000 : 2000)
55
+ end
56
+ end
57
+
58
+ def teardown
59
+ @webview.destroy
60
+ super
61
+ end
62
+
63
+ attr_reader :webview
64
+
65
+ def test_interface
66
+ assert_respond_to webview, :load_url
67
+ assert_respond_to webview, :get_current_url
68
+ assert_respond_to webview, :get_current_title
69
+ assert_respond_to webview, :is_busy
70
+ assert_respond_to webview, :reload
71
+ assert_respond_to webview, :stop
72
+ assert_respond_to webview, :can_go_back
73
+ assert_respond_to webview, :can_go_forward
74
+ assert_respond_to webview, :go_back
75
+ assert_respond_to webview, :go_forward
76
+ assert_respond_to webview, :clear_history
77
+ assert_respond_to webview, :run_script
78
+ assert_respond_to webview, :set_page
79
+ end
80
+
81
+ def test_load_url
82
+ loaded = false
83
+ frame_win.evt_webview_loaded(webview) { |_| loaded = true }
84
+ webview.load_url('https://mcorino.github.io/wxRuby3/')
85
+ yield_and_wait_for_test(5000) { loaded}
86
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
87
+ # so just skip the test in such cases
88
+ if loaded || !is_ci_build?
89
+ assert_true(loaded)
90
+ else
91
+ STDERR.puts 'WARNING: Skipping test because CI'
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+ class TestWebViewScripts < WxRuby::Test::GUITests
98
+
99
+ def setup
100
+ super
101
+ @webview = Wx::WebView.new(frame_win)
102
+ if ::Wx::WXWIDGETS_VERSION >= '3.3.0'
103
+ created = false
104
+ frame_win.evt_webview_created(@webview) { |_| created = true }
105
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
106
+ if is_ci_build? && is_msw? && !created
107
+ # on windows CI build there is occasional trouble creating the WebView so we retry
108
+ # after a short break
109
+ @webview.destroy
110
+ yield_for_a_while(1000)
111
+ # try again
112
+ @webview = Wx::WebView.new(frame_win)
113
+ created = false
114
+ frame_win.evt_webview_created(@webview) { |_| created = true }
115
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
116
+ end
117
+ elsif is_msw? || Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_CHROMIUM
118
+ yield_for_a_while(2000)
119
+ end
120
+ end
121
+
122
+ def teardown
123
+ @webview.destroy
124
+ super
125
+ end
126
+
127
+ attr_reader :webview
128
+
129
+ # cannot run javascript tests on the Edge backend as these tests run in the Idle event callback
130
+ unless is_msw? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_EDGE
131
+
132
+ def test_scripts
133
+ assert_equal('Hello World!', webview.run_script("function f(a){return a;}f('Hello World!');"))
134
+ assert_equal('123', webview.run_script("function f(a){return a;}f(123);"))
135
+ assert_equal('2.34', webview.run_script("function f(a){return a;}f(2.34);"))
136
+ assert_equal('false', webview.run_script("function f(a){return a;}f(false);"))
137
+ assert_equal('undefined', webview.run_script("function f(){var person = new Object();}f();"))
138
+ assert_equal('null', webview.run_script("function f(){return null;}f();"))
139
+ date = webview.run_script("function f(){var d = new Date('10/08/2017 21:30:40'); \
140
+ var tzoffset = d.getTimezoneOffset() * 60000; \
141
+ return new Date(d.getTime() - tzoffset);}; f();")
142
+ assert_not_nil(date)
143
+ tm = Time.new(2017, 10, 8, 21, 30, 40)
144
+ tm += tm.gmt_offset
145
+ assert_equal(tm.gmtime, DateTime.parse(date).to_time)
146
+ end
147
+
148
+ end
149
+
150
+ def run_async_scripts
151
+ script_error = false
152
+ script_finished = false
153
+ script_result = nil
154
+ frame_win.evt_webview_script_result(webview) { |evt| script_error = evt.is_error; script_finished = !script_error; script_result = evt.get_string }
155
+ webview.run_script_async("function f(a){return a;}f('Hello World!');")
156
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
157
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
158
+ # so just skip the test in such cases
159
+ if !(script_error && is_msw? && is_ci_build?)
160
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
161
+ assert_true(script_finished)
162
+ assert_equal('Hello World!', script_result)
163
+
164
+ script_error = false
165
+ script_finished = false
166
+ script_result = nil
167
+ webview.run_script_async("function f(a){return a;}f(123);")
168
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
169
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
170
+ assert_true(script_finished)
171
+ assert_equal('123', script_result)
172
+
173
+ script_error = false
174
+ script_finished = false
175
+ script_result = nil
176
+ webview.run_script_async("function f(a){return a;}f(2.34);")
177
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
178
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
179
+ assert_true(script_finished)
180
+ assert_equal('2.34', script_result)
181
+
182
+ script_error = false
183
+ script_finished = false
184
+ script_result = nil
185
+ webview.run_script_async("function f(a){return a;}f(false);")
186
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
187
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
188
+ assert_true(script_finished)
189
+ assert_equal('false', script_result)
190
+
191
+ script_error = false
192
+ script_finished = false
193
+ script_result = nil
194
+ webview.run_script_async("function f(){var person = new Object();}f();")
195
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
196
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
197
+ assert_true(script_finished)
198
+ assert_equal('undefined', script_result)
199
+
200
+ script_error = false
201
+ script_finished = false
202
+ script_result = nil
203
+ webview.run_script_async("function f(){return null;}f();")
204
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
205
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
206
+ assert_true(script_finished)
207
+ assert_equal('null', script_result)
208
+
209
+ script_error = false
210
+ script_finished = false
211
+ script_result = nil
212
+ webview.run_script_async("function f(){var d = new Date('10/08/2017 21:30:40'); \
213
+ var tzoffset = d.getTimezoneOffset() * 60000; \
214
+ return new Date(d.getTime() - tzoffset);}; f();")
215
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
216
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
217
+ assert_true(script_finished)
218
+ assert_not_nil(script_result)
219
+ tm = Time.new(2017, 10, 8, 21, 30, 40)
220
+ tm += tm.gmt_offset
221
+ assert_equal(tm.gmtime, DateTime.parse(script_result).to_time)
222
+ else
223
+ STDERR.puts 'WARNING: Skipping test because of WebView2 load failure'
224
+ end
225
+ end
226
+
227
+ unless is_msw?
228
+
229
+ def test_script_json
230
+ json = webview.run_script("function f(){var person = new Object();person.name = 'Foo'; person.lastName = 'Bar';return person;}; f();")
231
+ assert_not_nil(json)
232
+ person = JSON.load(json)
233
+ assert_kind_of(Hash, person)
234
+ assert_equal('Foo', person['name'])
235
+ assert_equal('Bar', person['lastName'])
236
+
237
+ json = webview.run_script("function f(){ return [\"foo\", \"bar\"]; }f();")
238
+ assert_not_nil(json)
239
+ array = JSON.load(json)
240
+ assert_kind_of(Array, array)
241
+ assert_equal(['foo', 'bar'], array)
242
+ end
243
+
244
+ end
245
+
246
+ unless is_msw? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_IE
247
+
248
+ def test_async_script_json
249
+ script_error = false
250
+ script_finished = false
251
+ script_result = nil
252
+ frame_win.evt_webview_script_result(webview) { |evt| script_error = evt.is_error; script_finished = !script_error; script_result = evt.get_string }
253
+ webview.run_script_async("function f(){var person = new Object();person.name = 'Foo'; person.lastName = 'Bar';return person;}; f();")
254
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
255
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
256
+ # so just skip the test in such cases
257
+ if !(script_error && is_msw? && is_ci_build?)
258
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
259
+ assert_true(script_finished)
260
+ assert_not_nil(script_result)
261
+ person = JSON.load(script_result)
262
+ assert_kind_of(Hash, person)
263
+ assert_equal('Foo', person['name'])
264
+ assert_equal('Bar', person['lastName'])
265
+
266
+ script_error = false
267
+ script_finished = false
268
+ script_result = nil
269
+ webview.run_script_async("function f(){ return [\"foo\", \"bar\"]; }f();")
270
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
271
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
272
+ assert_true(script_finished)
273
+ assert_not_nil(script_result)
274
+ array = JSON.load(script_result)
275
+ assert_kind_of(Array, array)
276
+ assert_equal(['foo', 'bar'], array)
277
+ else
278
+ STDERR.puts 'WARNING: Skipping test because of WebView2 load failure'
279
+ end
280
+ end
281
+
282
+ end
283
+ end
284
+
285
+ if ::Wx::WXWIDGETS_VERSION >= '3.3.0'
286
+
287
+ class TestWebViewHandlers < WxRuby::Test::GUITests
288
+
289
+ class AdvancedWebViewHandler < Wx::WebViewHandler
290
+ def initialize
291
+ super("wxpost")
292
+ @request_handled = false
293
+ end
294
+
295
+ attr_accessor :request_handled
296
+
297
+ def start_request(request, response)
298
+ response.set_header("Access-Control-Allow-Origin", "*")
299
+ response.set_header("Access-Control-Allow-Headers", "*")
300
+
301
+ # Handle options request
302
+ if request.get_method.casecmp("options") == 0
303
+ response.finish("")
304
+ else
305
+ response.set_content_type("application/json")
306
+ response.finish("{\n contentType: \"#{request.get_header("Content-Type")}\",\n" \
307
+ " method: \"#{request.get_method}\",\n" \
308
+ " data: \"#{request.get_data_string}\"\n}")
309
+ end
310
+ end
311
+ end
312
+
313
+ class << self
314
+ def fs_installed
315
+ @fs_installed ||= false
316
+ end
317
+ def fs_installed=(fs_installed)
318
+ @fs_installed = fs_installed
319
+ end
320
+ end
321
+
322
+ def before_setup
323
+ super
324
+ unless self.class.fs_installed
325
+ # Required for virtual file system archive and memory support (but only once)
326
+ Wx::FileSystem.add_handler(Wx::ArchiveFSHandler.new)
327
+ Wx::FileSystem.add_handler(Wx::MemoryFSHandler.new)
328
+
329
+ # Create the memory files
330
+ Wx::MemoryFSHandler::add_file("logo.png",
331
+ Wx.Bitmap(:wxruby, Wx::BITMAP_TYPE_PNG, art_section: 'test_art'),
332
+ Wx::BITMAP_TYPE_PNG)
333
+ Wx::MemoryFSHandler::add_file("page1.htm",
334
+ "<html><head><title>File System Example</title>" \
335
+ "<link rel='stylesheet' type='text/css' href='memory:test.css'>" \
336
+ "</head><body><h1>Page 1</h1>" \
337
+ "<p><img src='memory:logo.png'></p>" \
338
+ "<p>Some text about <a href='memory:page2.htm'>Page 2</a>.</p></body></html>")
339
+ Wx::MemoryFSHandler::add_file("page2.htm",
340
+ "<html><head><title>File System Example</title>" \
341
+ "<link rel='stylesheet' type='text/css' href='memory:test.css'>" \
342
+ "</head><body><h1>Page 2</h1>" \
343
+ "<p><a href='memory:page1.htm'>Page 1</a> was better.</p></body></html")
344
+ Wx::MemoryFSHandler::add_file("test.css", "h1 {color: red;}")
345
+ self.class.fs_installed = true
346
+ end
347
+ end
348
+
349
+ def setup
350
+ super
351
+ @webview = Wx::WebView.new(Wx::WEB::WEBVIEW_BACKEND_DEFAULT)
352
+
353
+ @advanced_wv_handler = AdvancedWebViewHandler.new
354
+
355
+ if Wx::PLATFORM == 'WXOSX'
356
+ # With WKWebView handlers need to be registered before creation
357
+ @webview.register_handler(Wx::WebViewArchiveHandler.new("wxfs"))
358
+ @webview.register_handler(Wx::WebViewFSHandler.new("memory"))
359
+ @webview.register_handler(@advanced_wv_handler)
360
+ end
361
+
362
+ @webview.create(frame_win, Wx::ID_ANY)
363
+
364
+ unless Wx::PLATFORM == 'WXOSX'
365
+ # With WKWebView handlers need to be registered before creation
366
+ @webview.register_handler(Wx::WebViewArchiveHandler.new("wxfs"))
367
+ @webview.register_handler(Wx::WebViewFSHandler.new("memory"))
368
+ @webview.register_handler(@advanced_wv_handler)
369
+ end
370
+ if ::Wx::WXWIDGETS_VERSION >= '3.3.0'
371
+ created = false
372
+ frame_win.evt_webview_created(@webview) { |_| created = true }
373
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
374
+ if is_ci_build? && is_msw? && !created
375
+ # on windows CI build there is occasional trouble creating the WebView so we retry
376
+ # after a short break
377
+ @webview.destroy
378
+ yield_for_a_while(1000)
379
+ # try again
380
+ @webview = Wx::WebView.new(frame_win)
381
+ created = false
382
+ frame_win.evt_webview_created(@webview) { |_| created = true }
383
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { created }
384
+ end
385
+ elsif is_msw? || Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_CHROMIUM
386
+ yield_for_a_while(2000)
387
+ end
388
+ end
389
+
390
+ def teardown
391
+ @webview.destroy
392
+ super
393
+ end
394
+
395
+ attr_reader :webview
396
+ attr_reader :advanced_wv_handler
397
+
398
+ def test_load_net_url
399
+ loaded = false
400
+ frame_win.evt_webview_loaded(webview) { |_| loaded = true }
401
+ webview.load_url('https://mcorino.github.io/wxRuby3/')
402
+ yield_and_wait_for_test(10000) { loaded}
403
+ # unfortunately WebView loader is flaky in CI builds and tends to fail (too often)
404
+ # so just skip the test in such cases
405
+ if loaded || !is_ci_build?
406
+ assert_true(loaded)
407
+ else
408
+ STDERR.puts 'WARNING: Skipping test because of CI'
409
+ end
410
+ end
411
+
412
+ def test_load_memory_url
413
+ loaded = false
414
+ frame_win.evt_webview_loaded(webview) { |_| loaded = true }
415
+ webview.load_url('memory:page1.htm')
416
+ yield_and_wait_for_test(5000) { loaded}
417
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
418
+ # so just skip the test in such cases
419
+ if loaded || !(is_msw? && is_ci_build? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_EDGE)
420
+ assert_true(loaded)
421
+ unless is_cirrus_ci_build? # some sort of locale problem (??)
422
+ yield_for_a_while(3000)
423
+ assert(webview.get_page_text =~ /Some text about Page 2/)
424
+ end
425
+ else
426
+ STDERR.puts 'WARNING: Skipping test because of WebView2 load failure'
427
+ end
428
+ end
429
+
430
+ def test_load_scheme_url
431
+ loaded = false
432
+ frame_win.evt_webview_loaded(webview) { |_| loaded = true }
433
+ webview.load_url("wxfs:///#{File.join(__dir__, 'assets','test.zip')};protocol=zip/test.html")
434
+ yield_and_wait_for_test(5000) { loaded}
435
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
436
+ # so just skip the test in such cases
437
+ if loaded || !(is_msw? && is_ci_build? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_EDGE)
438
+ assert_true(loaded)
439
+ unless is_cirrus_ci_build?
440
+ yield_for_a_while(3000)
441
+ assert(webview.get_page_text =~ /ZIP Embedded Page/)
442
+ end
443
+ else
444
+ STDERR.puts 'WARNING: Skipping test because of WebView2 load failure'
445
+ end
446
+ end
447
+
448
+ def test_load_advanced_url
449
+ loaded = false
450
+ frame_win.evt_webview_loaded(webview) { |_| loaded = true }
451
+ webview.load_url("file://#{File.join(__dir__, 'assets', 'handler_advanced.html')}")
452
+ yield_and_wait_for_test(5000) { loaded}
453
+ # unfortunately the WebView2 loader on windows is flaky in CI builds and tends to fail (too often)
454
+ # so just skip the test in such cases
455
+ if loaded || !(is_msw? && is_ci_build? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_EDGE)
456
+ assert_true(loaded)
457
+ yield_for_a_while(3000)
458
+ assert(webview.get_page_text =~ /Wx::WebViewHandler::start_request/)
459
+ unless (is_gtk? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_WEB_KIT) ||
460
+ (is_msw? && Wx::WEB::WEBVIEW_BACKEND_DEFAULT == Wx::WEB::WEBVIEW_BACKEND_IE)
461
+ advanced_wv_handler.request_handled = false
462
+ webview.run_script_async('sendRequest();')
463
+ yield_and_wait_for_test(is_msw? ? 5000 : 2000) { advanced_wv_handler.request_handled }
464
+ script_error = false
465
+ script_finished = false
466
+ script_result = nil
467
+ frame_win.evt_webview_script_result(webview) { |evt| script_error = evt.is_error; script_finished = !script_error; script_result = evt.get_string }
468
+ webview.run_script_async('document.getElementById("request_data").value;')
469
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
470
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
471
+ assert_true(script_finished)
472
+ assert_not_nil(script_result)
473
+ data = script_result
474
+ script_error = false
475
+ script_finished = false
476
+ script_result = nil
477
+ webview.run_script_async('data = document.getElementById("response_response").value;')
478
+ yield_and_wait_for_test(is_msw? ? 10000 : 5000) { script_error || script_finished }
479
+ assert_false(script_error, "AsyncScript ERROR: #{script_result}")
480
+ assert_true(script_finished)
481
+ assert_not_nil(script_result)
482
+ assert(script_result =~ /data: \"#{data}\"/)
483
+ end
484
+ else
485
+ STDERR.puts 'WARNING: Skipping test because of WebView2 load failure'
486
+ end
487
+ end
488
+ end
489
+
490
+ end
491
+
492
+ end # if Wx.has_feature?(:USE_WEBVIEW)
data/tests/test_window.rb CHANGED
@@ -54,7 +54,7 @@ class WindowTests < WxRuby::Test::GUITests
54
54
  if has_ui_simulator?
55
55
 
56
56
  def test_key_event
57
- if Wx::PLATFORM == 'WXGTK' || !is_ci_build?
57
+ if is_gtk? || !is_ci_build?
58
58
  count_events(window, :evt_key_down) do |c_keydown|
59
59
  count_events(window, :evt_key_up) do |c_keyup|
60
60
  count_events(window, :evt_char) do |c_keychar|
@@ -80,7 +80,7 @@ class WindowTests < WxRuby::Test::GUITests
80
80
  end
81
81
 
82
82
  def test_focus_event
83
- if Wx::PLATFORM != 'WXOSX'
83
+ unless is_macos?
84
84
  count_events(window, :evt_set_focus) do |c_setfocus|
85
85
  count_events(window, :evt_kill_focus) do |c_killfocus|
86
86
  window.set_focus
@@ -247,7 +247,7 @@ class WindowTests < WxRuby::Test::GUITests
247
247
  end
248
248
 
249
249
  def test_focus
250
- if Wx::PLATFORM != 'WXOSX'
250
+ unless is_macos?
251
251
  assert(!window.has_focus)
252
252
 
253
253
  if window.accepts_focus