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.
- checksums.yaml +4 -4
- data/INSTALL.md +27 -2
- data/README.md +15 -15
- data/ext/wxruby3/include/wxRubyApp.h +145 -46
- data/ext/wxruby3/include/wxruby-ComboPopup.h +25 -8
- data/ext/wxruby3/include/wxruby-GCTracking.h +262 -0
- data/ext/wxruby3/include/wxruby-MBConv.h +190 -0
- data/ext/wxruby3/include/wxruby-SharedEventHandler.h +183 -0
- data/ext/wxruby3/include/wxruby-SharedPtr.h +104 -0
- data/ext/wxruby3/include/wxruby-runtime.h +29 -0
- data/ext/wxruby3/swig/custom/rubytracking.swg +8 -22
- data/ext/wxruby3/swig/custom/wx_ruby_shared_ptr.i +434 -0
- data/ext/wxruby3/swig/custom/wx_shared_ptr.i +431 -0
- data/ext/wxruby3/swig/mark_free_impl.i +7 -132
- data/ext/wxruby3/swig/memory_management.i +8 -44
- data/ext/wxruby3/swig/wx.i +46 -73
- data/lib/wx/core/const.rb +0 -1
- data/lib/wx/core/context_help.rb +17 -0
- data/lib/wx/core/cursor.rb +1 -0
- data/lib/wx/core/helpcontrollerhelpprovider.rb +10 -2
- data/lib/wx/core/mbconv.rb +11 -0
- data/lib/wx/core/media_ctrl.rb +31 -0
- data/lib/wx/core/top_level_window.rb +7 -0
- data/lib/wx/core.rb +6 -0
- data/lib/wx/doc/art_provider.rb +17 -0
- data/lib/wx/doc/context_help.rb +42 -0
- data/lib/wx/doc/core.rb +0 -5
- data/lib/wx/doc/functions.rb +10 -0
- data/lib/wx/doc/html/html_help_controller.rb +23 -1
- data/lib/wx/doc/mbconv.rb +108 -0
- data/lib/wx/doc/rt/shared_event_handler.rb +49 -0
- data/lib/wx/doc/rt/thread_event.rb +28 -0
- data/lib/wx/doc/stream.rb +7 -3
- data/lib/wx/doc/webview.rb +40 -0
- data/lib/wx/helpers.rb +1 -1
- data/lib/wx/html/htmlhelpcontroller.rb +10 -0
- data/lib/wx/keyword_defs.rb +11 -0
- data/lib/wx/rt/require.rb +8 -0
- data/lib/wx/rt/thread_event.rb +14 -0
- data/lib/wx/rt.rb +16 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/web/require.rb +8 -0
- data/lib/wx/web/webview.rb +106 -0
- data/lib/wx/web.rb +17 -0
- data/lib/wx/wxruby/cmd/setup.rb +15 -0
- data/lib/wx/wxruby/cmd/test.rb +8 -2
- data/lib/wx.rb +2 -0
- data/rakelib/configure.rb +24 -0
- data/rakelib/gem.rb +3 -2
- data/rakelib/install.rb +54 -27
- data/rakelib/lib/config/macosx.rb +7 -5
- data/rakelib/lib/config/mingw.rb +66 -5
- data/rakelib/lib/config/pkgman/linux.rb +4 -2
- data/rakelib/lib/config/pkgman/mingw.rb +1 -1
- data/rakelib/lib/config/unixish.rb +4 -2
- data/rakelib/lib/config.rb +37 -3
- data/rakelib/lib/core/include/client_data.inc +38 -17
- data/rakelib/lib/core/include/funcall.inc +1 -1
- data/rakelib/lib/core/include/swigdirector.inc +3 -3
- data/rakelib/lib/core/include/swigrubyrun.inc +14 -26
- data/rakelib/lib/core/package.rb +0 -2
- data/rakelib/lib/director/app.rb +1 -8
- data/rakelib/lib/director/art_provider.rb +7 -3
- data/rakelib/lib/director/comboctrl.rb +0 -7
- data/rakelib/lib/director/context_help_button.rb +35 -2
- data/rakelib/lib/director/derived_dc.rb +41 -32
- data/rakelib/lib/director/editable_listbox.rb +10 -8
- data/rakelib/lib/director/event_handler.rb +32 -28
- data/rakelib/lib/director/fs_file.rb +38 -10
- data/rakelib/lib/director/functions.rb +8 -0
- data/rakelib/lib/director/grid_cell_attr.rb +1 -3
- data/rakelib/lib/director/grid_cell_editor.rb +14 -12
- data/rakelib/lib/director/grid_cell_renderer.rb +11 -8
- data/rakelib/lib/director/grid_ctrl.rb +140 -121
- data/rakelib/lib/director/help_controller.rb +70 -2
- data/rakelib/lib/director/mb_conv.rb +30 -0
- data/rakelib/lib/director/menu.rb +92 -42
- data/rakelib/lib/director/menu_bar.rb +84 -45
- data/rakelib/lib/director/menu_item.rb +2 -2
- data/rakelib/lib/director/persistence_manager.rb +3 -2
- data/rakelib/lib/director/preview_frame.rb +2 -2
- data/rakelib/lib/director/ribbon_page.rb +11 -0
- data/rakelib/lib/director/richtext_buffer.rb +5 -2
- data/rakelib/lib/director/shared_evt_handler.rb +30 -0
- data/rakelib/lib/director/sizer.rb +8 -17
- data/rakelib/lib/director/sizer_item.rb +3 -4
- data/rakelib/lib/director/task_bar_icon.rb +7 -7
- data/rakelib/lib/director/thread_event.rb +33 -0
- data/rakelib/lib/director/top_level_window.rb +12 -4
- data/rakelib/lib/director/validator.rb +3 -1
- data/rakelib/lib/director/variant.rb +16 -12
- data/rakelib/lib/director/webview.rb +166 -0
- data/rakelib/lib/director/webview_event.rb +37 -0
- data/rakelib/lib/director/webview_handler.rb +63 -0
- data/rakelib/lib/generate/doc/thread_event.yaml +20 -0
- data/rakelib/lib/generate/doc/web_view.yaml +135 -0
- data/rakelib/lib/generate/doc/web_view_event.yaml +38 -0
- data/rakelib/lib/generate/doc/web_view_handler.yaml +58 -0
- data/rakelib/lib/specs/interfaces.rb +14 -2
- data/rakelib/lib/typemap/common.rb +34 -1
- data/rakelib/lib/typemap/mb_conv.rb +58 -0
- data/rakelib/prepost.rake +23 -31
- data/rakelib/prepost.rb +20 -0
- data/samples/event/threaded.rb +295 -42
- data/samples/event/tn_threaded.png +0 -0
- data/samples/help/doc/back.gif +0 -0
- data/samples/help/doc/contents.gif +0 -0
- data/samples/help/doc/cshelp.txt +9 -0
- data/samples/help/doc/doc.chm +0 -0
- data/samples/help/doc/doc.cnt +8 -0
- data/samples/help/doc/doc.h +7 -0
- data/samples/help/doc/doc.hhc +40 -0
- data/samples/help/doc/doc.hhk +31 -0
- data/samples/help/doc/doc.hhp +33 -0
- data/samples/help/doc/doc.hpj +21 -0
- data/samples/help/doc/doc.htm +27 -0
- data/samples/help/doc/doc1.htm +24 -0
- data/samples/help/doc/doc2.htm +12 -0
- data/samples/help/doc/doc3.htm +12 -0
- data/samples/help/doc/doc4.htm +12 -0
- data/samples/help/doc/doc5.htm +14 -0
- data/samples/help/doc/forward.gif +0 -0
- data/samples/help/doc/up.gif +0 -0
- data/samples/help/doc.chm +0 -0
- data/samples/help/doc.chw +0 -0
- data/samples/help/doc.zip +0 -0
- data/samples/help/help.rb +352 -0
- data/samples/help/tn_help.png +0 -0
- data/samples/webview/handler_advanced.html +55 -0
- data/samples/webview/tn_webview.png +0 -0
- data/samples/webview/webview.rb +1264 -0
- data/tests/assets/handler_advanced.html +55 -0
- data/tests/assets/test.zip +0 -0
- data/tests/lib/text_entry_tests.rb +2 -2
- data/tests/lib/wxapp_runner.rb +40 -0
- data/tests/lib/wxframe_runner.rb +17 -2
- data/tests/test_art.rb +8 -8
- data/tests/test_clipboard.rb +4 -4
- data/tests/test_config.rb +6 -6
- data/tests/test_exceptions.rb +8 -6
- data/tests/test_ext_controls.rb +3 -3
- data/tests/test_file_dialog.rb +5 -5
- data/tests/test_font.rb +7 -7
- data/tests/test_grid_ctrl.rb +133 -0
- data/tests/test_help.rb +88 -0
- data/tests/test_intl.rb +1 -1
- data/tests/test_media_ctrl.rb +14 -6
- data/tests/test_menu.rb +94 -86
- data/tests/test_persistence.rb +1 -1
- data/tests/test_proof_check.rb +5 -5
- data/tests/test_propgrid.rb +1 -1
- data/tests/test_shared_event_handler.rb +141 -0
- data/tests/test_std_controls.rb +5 -5
- data/tests/test_webview.rb +492 -0
- data/tests/test_window.rb +3 -3
- metadata +66 -368
- data/assets/repo-social-preview.odg +0 -0
- data/assets/repo-social-preview.xcf +0 -0
- data/lib/wx/aui/events/evt_list.rb +0 -148
- data/lib/wx/core/events/evt_list.rb +0 -1458
- data/lib/wx/core/font/encoding.rb +0 -113
- data/lib/wx/doc/gen/about_dialog_info.rb +0 -330
- data/lib/wx/doc/gen/accelerator.rb +0 -178
- data/lib/wx/doc/gen/activity_indicator.rb +0 -83
- data/lib/wx/doc/gen/affine_matrix2d.rb +0 -284
- data/lib/wx/doc/gen/animation.rb +0 -275
- data/lib/wx/doc/gen/animation_ctrl.rb +0 -300
- data/lib/wx/doc/gen/any_button.rb +0 -191
- data/lib/wx/doc/gen/app.rb +0 -463
- data/lib/wx/doc/gen/app_traits.rb +0 -396
- data/lib/wx/doc/gen/art_provider.rb +0 -605
- data/lib/wx/doc/gen/aui/aui_dock_art.rb +0 -455
- data/lib/wx/doc/gen/aui/aui_floating_frame.rb +0 -54
- data/lib/wx/doc/gen/aui/aui_manager.rb +0 -847
- data/lib/wx/doc/gen/aui/aui_manager_event.rb +0 -131
- data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +0 -180
- data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +0 -59
- data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +0 -130
- data/lib/wx/doc/gen/aui/aui_notebook.rb +0 -631
- data/lib/wx/doc/gen/aui/aui_notebook_event.rb +0 -233
- data/lib/wx/doc/gen/aui/aui_pane_info.rb +0 -769
- data/lib/wx/doc/gen/aui/aui_tab_art.rb +0 -352
- data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +0 -14
- data/lib/wx/doc/gen/aui/aui_tool_bar.rb +0 -510
- data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +0 -340
- data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +0 -244
- data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +0 -257
- data/lib/wx/doc/gen/aui/event_list.rb +0 -179
- data/lib/wx/doc/gen/banner_window.rb +0 -124
- data/lib/wx/doc/gen/bitmap.rb +0 -731
- data/lib/wx/doc/gen/bitmap_button.rb +0 -123
- data/lib/wx/doc/gen/bitmap_combo_box.rb +0 -221
- data/lib/wx/doc/gen/book_ctrl_base.rb +0 -273
- data/lib/wx/doc/gen/book_ctrl_event.rb +0 -66
- data/lib/wx/doc/gen/box_sizer.rb +0 -85
- data/lib/wx/doc/gen/brush.rb +0 -251
- data/lib/wx/doc/gen/busy_info.rb +0 -157
- data/lib/wx/doc/gen/button.rb +0 -182
- data/lib/wx/doc/gen/calculate_layout_event.rb +0 -62
- data/lib/wx/doc/gen/calendar_ctrl.rb +0 -505
- data/lib/wx/doc/gen/calendar_date_attr.rb +0 -138
- data/lib/wx/doc/gen/calendar_event.rb +0 -147
- data/lib/wx/doc/gen/caret.rb +0 -97
- data/lib/wx/doc/gen/check_box.rb +0 -175
- data/lib/wx/doc/gen/check_list_box.rb +0 -121
- data/lib/wx/doc/gen/choice.rb +0 -175
- data/lib/wx/doc/gen/choicebook.rb +0 -116
- data/lib/wx/doc/gen/client_dc.rb +0 -43
- data/lib/wx/doc/gen/clipboard.rb +0 -144
- data/lib/wx/doc/gen/collapsible_pane.rb +0 -138
- data/lib/wx/doc/gen/collapsible_pane_event.rb +0 -46
- data/lib/wx/doc/gen/colour.rb +0 -333
- data/lib/wx/doc/gen/colour_dialog.rb +0 -190
- data/lib/wx/doc/gen/colour_picker_ctrl.rb +0 -110
- data/lib/wx/doc/gen/colour_picker_event.rb +0 -77
- data/lib/wx/doc/gen/combo_box.rb +0 -292
- data/lib/wx/doc/gen/combo_ctrl.rb +0 -662
- data/lib/wx/doc/gen/command_link_button.rb +0 -134
- data/lib/wx/doc/gen/config_base.rb +0 -10
- data/lib/wx/doc/gen/context_help_button.rb +0 -109
- data/lib/wx/doc/gen/control.rb +0 -277
- data/lib/wx/doc/gen/control_with_items.rb +0 -253
- data/lib/wx/doc/gen/core.rb +0 -45
- data/lib/wx/doc/gen/credential_entry_dialog.rb +0 -137
- data/lib/wx/doc/gen/cursor.rb +0 -193
- data/lib/wx/doc/gen/data_format.rb +0 -85
- data/lib/wx/doc/gen/data_object.rb +0 -436
- data/lib/wx/doc/gen/data_object_simple_base.rb +0 -10
- data/lib/wx/doc/gen/date_event.rb +0 -49
- data/lib/wx/doc/gen/date_picker_ctrl.rb +0 -161
- data/lib/wx/doc/gen/dc.rb +0 -1631
- data/lib/wx/doc/gen/dc_overlay.rb +0 -102
- data/lib/wx/doc/gen/defs.rb +0 -2802
- data/lib/wx/doc/gen/dial_up_event.rb +0 -45
- data/lib/wx/doc/gen/dial_up_manager.rb +0 -149
- data/lib/wx/doc/gen/dialog.rb +0 -541
- data/lib/wx/doc/gen/dir_dialog.rb +0 -164
- data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +0 -90
- data/lib/wx/doc/gen/dir_picker_ctrl.rb +0 -125
- data/lib/wx/doc/gen/display.rb +0 -238
- data/lib/wx/doc/gen/drag_drop.rb +0 -299
- data/lib/wx/doc/gen/drag_image.rb +0 -116
- data/lib/wx/doc/gen/editable_list_box.rb +0 -109
- data/lib/wx/doc/gen/event.rb +0 -990
- data/lib/wx/doc/gen/event_blocker.rb +0 -50
- data/lib/wx/doc/gen/event_filter.rb +0 -92
- data/lib/wx/doc/gen/event_list.rb +0 -1644
- data/lib/wx/doc/gen/events.rb +0 -2809
- data/lib/wx/doc/gen/evt_handler.rb +0 -229
- data/lib/wx/doc/gen/ext_help_controller.rb +0 -109
- data/lib/wx/doc/gen/file_ctrl.rb +0 -231
- data/lib/wx/doc/gen/file_ctrl_event.rb +0 -83
- data/lib/wx/doc/gen/file_dialog.rb +0 -353
- data/lib/wx/doc/gen/file_dialog_custom_control.rb +0 -165
- data/lib/wx/doc/gen/file_dialog_customize_hook.rb +0 -158
- data/lib/wx/doc/gen/file_dir_picker_event.rb +0 -100
- data/lib/wx/doc/gen/file_picker_ctrl.rb +0 -132
- data/lib/wx/doc/gen/file_system.rb +0 -232
- data/lib/wx/doc/gen/find_dialog_event.rb +0 -126
- data/lib/wx/doc/gen/find_replace_data.rb +0 -60
- data/lib/wx/doc/gen/find_replace_dialog.rb +0 -58
- data/lib/wx/doc/gen/flex_grid_sizer.rb +0 -199
- data/lib/wx/doc/gen/font.rb +0 -1379
- data/lib/wx/doc/gen/font_data.rb +0 -151
- data/lib/wx/doc/gen/font_dialog.rb +0 -88
- data/lib/wx/doc/gen/font_picker_ctrl.rb +0 -143
- data/lib/wx/doc/gen/font_picker_event.rb +0 -65
- data/lib/wx/doc/gen/frame.rb +0 -352
- data/lib/wx/doc/gen/fs_file.rb +0 -337
- data/lib/wx/doc/gen/functions.rb +0 -10
- data/lib/wx/doc/gen/gauge.rb +0 -157
- data/lib/wx/doc/gen/gb_sizer_item.rb +0 -68
- data/lib/wx/doc/gen/gcdc.rb +0 -46
- data/lib/wx/doc/gen/gdi_common.rb +0 -1271
- data/lib/wx/doc/gen/gdi_object.rb +0 -31
- data/lib/wx/doc/gen/generic_about_dialog.rb +0 -140
- data/lib/wx/doc/gen/generic_dir_ctrl.rb +0 -223
- data/lib/wx/doc/gen/geometry.rb +0 -661
- data/lib/wx/doc/gen/graphics_context.rb +0 -1184
- data/lib/wx/doc/gen/graphics_object.rb +0 -750
- data/lib/wx/doc/gen/grid/event_list.rb +0 -191
- data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +0 -40
- data/lib/wx/doc/gen/grid/grid_cell_attr.rb +0 -280
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +0 -35
- data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +0 -37
- data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +0 -49
- data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +0 -35
- data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +0 -46
- data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +0 -38
- data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +0 -45
- data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +0 -40
- data/lib/wx/doc/gen/grid/grid_cell_editor.rb +0 -197
- data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +0 -39
- data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +0 -44
- data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +0 -45
- data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +0 -79
- data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +0 -46
- data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +0 -35
- data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +0 -108
- data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +0 -35
- data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +0 -49
- data/lib/wx/doc/gen/grid/grid_ctrl.rb +0 -3002
- data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +0 -95
- data/lib/wx/doc/gen/grid/grid_event.rb +0 -129
- data/lib/wx/doc/gen/grid/grid_range_select_event.rb +0 -104
- data/lib/wx/doc/gen/grid/grid_size_event.rb +0 -85
- data/lib/wx/doc/gen/grid/grid_string_table.rb +0 -142
- data/lib/wx/doc/gen/grid/grid_table_base.rb +0 -317
- data/lib/wx/doc/gen/grid/grid_table_message.rb +0 -81
- data/lib/wx/doc/gen/grid_bag_sizer.rb +0 -323
- data/lib/wx/doc/gen/grid_sizer.rb +0 -195
- data/lib/wx/doc/gen/gui_event_loop.rb +0 -159
- data/lib/wx/doc/gen/h_scrolled_window.rb +0 -562
- data/lib/wx/doc/gen/header_ctrl.rb +0 -880
- data/lib/wx/doc/gen/header_ctrl_event.rb +0 -133
- data/lib/wx/doc/gen/help_controller.rb +0 -195
- data/lib/wx/doc/gen/help_provider.rb +0 -98
- data/lib/wx/doc/gen/html/event_list.rb +0 -38
- data/lib/wx/doc/gen/html/html_cell.rb +0 -536
- data/lib/wx/doc/gen/html/html_cell_event.rb +0 -69
- data/lib/wx/doc/gen/html/html_data_object.rb +0 -42
- data/lib/wx/doc/gen/html/html_easy_printing.rb +0 -203
- data/lib/wx/doc/gen/html/html_help_controller.rb +0 -340
- data/lib/wx/doc/gen/html/html_help_data.rb +0 -159
- data/lib/wx/doc/gen/html/html_help_window.rb +0 -258
- data/lib/wx/doc/gen/html/html_link_event.rb +0 -41
- data/lib/wx/doc/gen/html/html_list_box.rb +0 -346
- data/lib/wx/doc/gen/html/html_printout.rb +0 -109
- data/lib/wx/doc/gen/html/html_window.rb +0 -461
- data/lib/wx/doc/gen/hyperlink_ctrl.rb +0 -311
- data/lib/wx/doc/gen/hyperlink_event.rb +0 -44
- data/lib/wx/doc/gen/icon.rb +0 -267
- data/lib/wx/doc/gen/icon_location.rb +0 -40
- data/lib/wx/doc/gen/image.rb +0 -1371
- data/lib/wx/doc/gen/image_list.rb +0 -168
- data/lib/wx/doc/gen/info_bar.rb +0 -195
- data/lib/wx/doc/gen/keyboard_state.rb +0 -140
- data/lib/wx/doc/gen/list_box.rb +0 -304
- data/lib/wx/doc/gen/list_ctrl.rb +0 -1774
- data/lib/wx/doc/gen/list_event.rb +0 -208
- data/lib/wx/doc/gen/listbook.rb +0 -116
- data/lib/wx/doc/gen/locale.rb +0 -4293
- data/lib/wx/doc/gen/log.rb +0 -603
- data/lib/wx/doc/gen/mdi_client_window.rb +0 -47
- data/lib/wx/doc/gen/mdi_frame.rb +0 -324
- data/lib/wx/doc/gen/media_ctrl.rb +0 -269
- data/lib/wx/doc/gen/media_event.rb +0 -117
- data/lib/wx/doc/gen/memory_dc.rb +0 -174
- data/lib/wx/doc/gen/menu.rb +0 -509
- data/lib/wx/doc/gen/menu_bar.rb +0 -287
- data/lib/wx/doc/gen/menu_item.rb +0 -362
- data/lib/wx/doc/gen/message_dialog.rb +0 -238
- data/lib/wx/doc/gen/mini_frame.rb +0 -108
- data/lib/wx/doc/gen/mirror_dc.rb +0 -22
- data/lib/wx/doc/gen/mouse_state.rb +0 -150
- data/lib/wx/doc/gen/multi_choice_dialog.rb +0 -80
- data/lib/wx/doc/gen/non_owned_window.rb +0 -49
- data/lib/wx/doc/gen/notebook.rb +0 -278
- data/lib/wx/doc/gen/num_validator.rb +0 -37
- data/lib/wx/doc/gen/number_entry_dialog.rb +0 -93
- data/lib/wx/doc/gen/object.rb +0 -59
- data/lib/wx/doc/gen/owner_drawn_combo_box.rb +0 -395
- data/lib/wx/doc/gen/paint_dc.rb +0 -27
- data/lib/wx/doc/gen/palette.rb +0 -92
- data/lib/wx/doc/gen/panel.rb +0 -127
- data/lib/wx/doc/gen/pen.rb +0 -511
- data/lib/wx/doc/gen/persistence_manager.rb +0 -135
- data/lib/wx/doc/gen/persistent_object.rb +0 -52
- data/lib/wx/doc/gen/persistent_window.rb +0 -241
- data/lib/wx/doc/gen/pg/event_list.rb +0 -106
- data/lib/wx/doc/gen/pg/numeric_property_validator.rb +0 -54
- data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +0 -292
- data/lib/wx/doc/gen/pg/pg_cell.rb +0 -177
- data/lib/wx/doc/gen/pg/pg_editor.rb +0 -721
- data/lib/wx/doc/gen/pg/pg_multi_button.rb +0 -152
- data/lib/wx/doc/gen/pg/pg_properties.rb +0 -2829
- data/lib/wx/doc/gen/pg/pg_property.rb +0 -2078
- data/lib/wx/doc/gen/pg/pg_validation_info.rb +0 -344
- data/lib/wx/doc/gen/pg/property_grid.rb +0 -740
- data/lib/wx/doc/gen/pg/property_grid_event.rb +0 -184
- data/lib/wx/doc/gen/pg/property_grid_interface.rb +0 -1098
- data/lib/wx/doc/gen/pg/property_grid_manager.rb +0 -415
- data/lib/wx/doc/gen/pg/property_grid_page.rb +0 -354
- data/lib/wx/doc/gen/pg/property_grid_page_state.rb +0 -165
- data/lib/wx/doc/gen/picker_base.rb +0 -152
- data/lib/wx/doc/gen/platform_info.rb +0 -622
- data/lib/wx/doc/gen/popup_window.rb +0 -107
- data/lib/wx/doc/gen/progress_dialog.rb +0 -100
- data/lib/wx/doc/gen/property_sheet_dialog.rb +0 -216
- data/lib/wx/doc/gen/prt/event_list.rb +0 -17
- data/lib/wx/doc/gen/prt/page_setup_dialog.rb +0 -44
- data/lib/wx/doc/gen/prt/post_script_dc.rb +0 -30
- data/lib/wx/doc/gen/prt/preview_frame.rb +0 -78
- data/lib/wx/doc/gen/prt/print_abort_dialog.rb +0 -151
- data/lib/wx/doc/gen/prt/print_data.rb +0 -804
- data/lib/wx/doc/gen/prt/print_dialog.rb +0 -55
- data/lib/wx/doc/gen/prt/printer.rb +0 -518
- data/lib/wx/doc/gen/prt/printer_dc.rb +0 -37
- data/lib/wx/doc/gen/query_layout_info_event.rb +0 -106
- data/lib/wx/doc/gen/radio_box.rb +0 -306
- data/lib/wx/doc/gen/radio_button.rb +0 -159
- data/lib/wx/doc/gen/rbn/event_list.rb +0 -136
- data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +0 -1132
- data/lib/wx/doc/gen/rbn/ribbon_bar.rb +0 -308
- data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +0 -45
- data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +0 -458
- data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +0 -63
- data/lib/wx/doc/gen/rbn/ribbon_control.rb +0 -143
- data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +0 -229
- data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +0 -55
- data/lib/wx/doc/gen/rbn/ribbon_page.rb +0 -174
- data/lib/wx/doc/gen/rbn/ribbon_panel.rb +0 -270
- data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +0 -45
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +0 -360
- data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +0 -42
- data/lib/wx/doc/gen/rearrange_ctrl.rb +0 -78
- data/lib/wx/doc/gen/rearrange_list.rb +0 -123
- data/lib/wx/doc/gen/region.rb +0 -380
- data/lib/wx/doc/gen/region_iterator.rb +0 -76
- data/lib/wx/doc/gen/rich_tool_tip.rb +0 -154
- data/lib/wx/doc/gen/rtc/event_list.rb +0 -125
- data/lib/wx/doc/gen/rtc/rich_text_box.rb +0 -445
- data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +0 -1188
- data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +0 -41
- data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +0 -538
- data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +0 -2103
- data/lib/wx/doc/gen/rtc/rich_text_event.rb +0 -173
- data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +0 -181
- data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +0 -319
- data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +0 -193
- data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +0 -102
- data/lib/wx/doc/gen/rtc/rich_text_image.rb +0 -337
- data/lib/wx/doc/gen/rtc/rich_text_object.rb +0 -2922
- data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +0 -1240
- data/lib/wx/doc/gen/rtc/rich_text_printing.rb +0 -258
- data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +0 -344
- data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +0 -227
- data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +0 -59
- data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +0 -169
- data/lib/wx/doc/gen/sash_event.rb +0 -147
- data/lib/wx/doc/gen/sash_layout_window.rb +0 -232
- data/lib/wx/doc/gen/sash_window.rb +0 -171
- data/lib/wx/doc/gen/scaled_dc.rb +0 -10
- data/lib/wx/doc/gen/screen_dc.rb +0 -30
- data/lib/wx/doc/gen/scroll_bar.rb +0 -204
- data/lib/wx/doc/gen/scrolled_canvas.rb +0 -410
- data/lib/wx/doc/gen/scrolled_control.rb +0 -410
- data/lib/wx/doc/gen/scrolled_window.rb +0 -430
- data/lib/wx/doc/gen/search_ctrl.rb +0 -159
- data/lib/wx/doc/gen/secret_store.rb +0 -116
- data/lib/wx/doc/gen/simplebook.rb +0 -110
- data/lib/wx/doc/gen/single_choice_dialog.rb +0 -89
- data/lib/wx/doc/gen/sizer.rb +0 -945
- data/lib/wx/doc/gen/sizer_item.rb +0 -244
- data/lib/wx/doc/gen/slider.rb +0 -342
- data/lib/wx/doc/gen/spin_button.rb +0 -157
- data/lib/wx/doc/gen/spin_ctrl.rb +0 -231
- data/lib/wx/doc/gen/spin_ctrl_double.rb +0 -192
- data/lib/wx/doc/gen/spin_double_event.rb +0 -55
- data/lib/wx/doc/gen/spin_event.rb +0 -51
- data/lib/wx/doc/gen/splash_screen.rb +0 -113
- data/lib/wx/doc/gen/splitter_event.rb +0 -99
- data/lib/wx/doc/gen/splitter_window.rb +0 -498
- data/lib/wx/doc/gen/static_bitmap.rb +0 -256
- data/lib/wx/doc/gen/static_box.rb +0 -180
- data/lib/wx/doc/gen/static_box_sizer.rb +0 -85
- data/lib/wx/doc/gen/static_line.rb +0 -83
- data/lib/wx/doc/gen/static_text.rb +0 -127
- data/lib/wx/doc/gen/status_bar.rb +0 -290
- data/lib/wx/doc/gen/stc/event_list.rb +0 -221
- data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +0 -4474
- data/lib/wx/doc/gen/stc/styled_text_event.rb +0 -8762
- data/lib/wx/doc/gen/std_dialog_button_sizer.rb +0 -129
- data/lib/wx/doc/gen/svg_file_dc.rb +0 -164
- data/lib/wx/doc/gen/system_options.rb +0 -129
- data/lib/wx/doc/gen/system_settings.rb +0 -507
- data/lib/wx/doc/gen/task_bar_icon.rb +0 -127
- data/lib/wx/doc/gen/task_bar_icon_event.rb +0 -88
- data/lib/wx/doc/gen/text_attr.rb +0 -756
- data/lib/wx/doc/gen/text_ctrl.rb +0 -1033
- data/lib/wx/doc/gen/text_entry.rb +0 -441
- data/lib/wx/doc/gen/text_entry_dialog.rb +0 -220
- data/lib/wx/doc/gen/text_validator.rb +0 -245
- data/lib/wx/doc/gen/time_picker_ctrl.rb +0 -128
- data/lib/wx/doc/gen/timer.rb +0 -119
- data/lib/wx/doc/gen/timer_event.rb +0 -68
- data/lib/wx/doc/gen/tip_provider.rb +0 -63
- data/lib/wx/doc/gen/tip_window.rb +0 -51
- data/lib/wx/doc/gen/toggle_button.rb +0 -182
- data/lib/wx/doc/gen/tool_bar.rb +0 -890
- data/lib/wx/doc/gen/tool_tip.rb +0 -86
- data/lib/wx/doc/gen/toolbook.rb +0 -118
- data/lib/wx/doc/gen/top_level_window.rb +0 -497
- data/lib/wx/doc/gen/tree_ctrl.rb +0 -1052
- data/lib/wx/doc/gen/tree_event.rb +0 -127
- data/lib/wx/doc/gen/treebook.rb +0 -180
- data/lib/wx/doc/gen/ui_action_simulator.rb +0 -109
- data/lib/wx/doc/gen/utils.rb +0 -273
- data/lib/wx/doc/gen/v_list_box.rb +0 -272
- data/lib/wx/doc/gen/v_scrolled_canvas.rb +0 -195
- data/lib/wx/doc/gen/v_scrolled_window.rb +0 -191
- data/lib/wx/doc/gen/validator.rb +0 -68
- data/lib/wx/doc/gen/variant.rb +0 -294
- data/lib/wx/doc/gen/window.rb +0 -2917
- data/lib/wx/doc/gen/window_dc.rb +0 -38
- data/lib/wx/doc/gen/window_disabler.rb +0 -30
- data/lib/wx/doc/gen/with_images.rb +0 -84
- data/lib/wx/doc/gen/wizard.rb +0 -257
- data/lib/wx/doc/gen/wizard_event.rb +0 -113
- data/lib/wx/doc/gen/wizard_page.rb +0 -65
- data/lib/wx/doc/gen/wizard_page_simple.rb +0 -88
- data/lib/wx/doc/gen/wrap_sizer.rb +0 -79
- data/lib/wx/doc/gen/xml_node.rb +0 -316
- data/lib/wx/doc/gen/xml_resource.rb +0 -320
- data/lib/wx/grid/events/evt_list.rb +0 -166
- data/lib/wx/html/events/evt_list.rb +0 -27
- data/lib/wx/pg/events/evt_list.rb +0 -73
- data/lib/wx/rbn/events/evt_list.rb +0 -102
- data/lib/wx/rtc/events/evt_list.rb +0 -98
- data/lib/wx/rtc/ext/rich_text_ctrl.rb +0 -24
- data/lib/wx/stc/events/evt_list.rb +0 -178
- 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
|
|
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
|
-
|
|
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
|
-
|
|
250
|
+
unless is_macos?
|
|
251
251
|
assert(!window.has_focus)
|
|
252
252
|
|
|
253
253
|
if window.accepts_focus
|