wxruby3 0.9.0.pre.beta.8
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 +7 -0
- data/.yardopts +13 -0
- data/CREDITS.md +52 -0
- data/LICENSE +21 -0
- data/README.md +139 -0
- data/bin/wxruby +9 -0
- data/ext/mkrf_conf_srcgem.rb +64 -0
- data/ext/wxruby3/include/wxruby-runtime.h +104 -0
- data/ext/wxruby3/swig/RubyStockObjects.i +62 -0
- data/ext/wxruby3/swig/common.i +110 -0
- data/ext/wxruby3/swig/custom/rubyprimtypes.swg +225 -0
- data/ext/wxruby3/swig/custom/rubytracking.swg +60 -0
- data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +456 -0
- data/ext/wxruby3/swig/custom/swig4/rubyrun.swg +459 -0
- data/ext/wxruby3/swig/mark_free_impl.i +377 -0
- data/ext/wxruby3/swig/memory_management.i +142 -0
- data/ext/wxruby3/swig/typedefs.i +27 -0
- data/ext/wxruby3/swig/wx.i +282 -0
- data/ext/wxruby3/swig/wx.rc +19 -0
- data/ext/wxruby3/wxruby.ico +0 -0
- data/lib/wx/accessors.rb +63 -0
- data/lib/wx/aui/auimanager.rb +17 -0
- data/lib/wx/aui/auinotebook.rb +9 -0
- data/lib/wx/aui/require.rb +9 -0
- data/lib/wx/aui.rb +14 -0
- data/lib/wx/core/acceleratortable.rb +28 -0
- data/lib/wx/core/animation.rb +18 -0
- data/lib/wx/core/app.rb +89 -0
- data/lib/wx/core/artprovider.rb +31 -0
- data/lib/wx/core/bitmap.rb +59 -0
- data/lib/wx/core/busycursor.rb +12 -0
- data/lib/wx/core/choice.rb +4 -0
- data/lib/wx/core/choicedlg.rb +54 -0
- data/lib/wx/core/clientdc.rb +13 -0
- data/lib/wx/core/clipboard.rb +56 -0
- data/lib/wx/core/collapsible_pane.rb +12 -0
- data/lib/wx/core/colour.rb +34 -0
- data/lib/wx/core/combobox.rb +4 -0
- data/lib/wx/core/controlwithitems.rb +10 -0
- data/lib/wx/core/data_object.rb +10 -0
- data/lib/wx/core/dataformat.rb +26 -0
- data/lib/wx/core/dc.rb +68 -0
- data/lib/wx/core/dialog.rb +50 -0
- data/lib/wx/core/enum.rb +28 -0
- data/lib/wx/core/event.rb +16 -0
- data/lib/wx/core/evthandler.rb +253 -0
- data/lib/wx/core/ext.rb +58 -0
- data/lib/wx/core/font.rb +22 -0
- data/lib/wx/core/functions.rb +44 -0
- data/lib/wx/core/gauge.rb +12 -0
- data/lib/wx/core/genericdirctrl.rb +36 -0
- data/lib/wx/core/hboxsizer.rb +6 -0
- data/lib/wx/core/helpcontroller.rb +5 -0
- data/lib/wx/core/helpcontrollerhelpprovider.rb +24 -0
- data/lib/wx/core/helpprovider.rb +15 -0
- data/lib/wx/core/icon.rb +40 -0
- data/lib/wx/core/image.rb +68 -0
- data/lib/wx/core/imagelist.rb +3 -0
- data/lib/wx/core/listbox.rb +4 -0
- data/lib/wx/core/listctrl.rb +33 -0
- data/lib/wx/core/locale.rb +73 -0
- data/lib/wx/core/log.rb +20 -0
- data/lib/wx/core/menu.rb +78 -0
- data/lib/wx/core/menu_bar.rb +20 -0
- data/lib/wx/core/menuitem.rb +7 -0
- data/lib/wx/core/notebook.rb +9 -0
- data/lib/wx/core/object.rb +14 -0
- data/lib/wx/core/pen_info.rb +11 -0
- data/lib/wx/core/platform_info.rb +13 -0
- data/lib/wx/core/point.rb +92 -0
- data/lib/wx/core/real_point.rb +92 -0
- data/lib/wx/core/rect.rb +57 -0
- data/lib/wx/core/simplehelpprovider.rb +38 -0
- data/lib/wx/core/size.rb +86 -0
- data/lib/wx/core/sizer.rb +43 -0
- data/lib/wx/core/splash_screen.rb +44 -0
- data/lib/wx/core/textctrl.rb +8 -0
- data/lib/wx/core/timer.rb +104 -0
- data/lib/wx/core/toolbar.rb +37 -0
- data/lib/wx/core/toolbartool.rb +4 -0
- data/lib/wx/core/treectrl.rb +46 -0
- data/lib/wx/core/validator.rb +8 -0
- data/lib/wx/core/variant.rb +62 -0
- data/lib/wx/core/vboxsizer.rb +6 -0
- data/lib/wx/core/window.rb +95 -0
- data/lib/wx/core/window_update_locker.rb +12 -0
- data/lib/wx/core/xmlresource.rb +56 -0
- data/lib/wx/core.rb +61 -0
- data/lib/wx/doc/aui/auimanager.rb +12 -0
- data/lib/wx/doc/aui/auinotebook.rb +9 -0
- data/lib/wx/doc/colour_dialog.rb +15 -0
- data/lib/wx/doc/core.rb +11 -0
- data/lib/wx/doc/dc.rb +49 -0
- data/lib/wx/doc/enum.rb +88 -0
- data/lib/wx/doc/evthandler.rb +87 -0
- data/lib/wx/doc/extra/00_starting.md +154 -0
- data/lib/wx/doc/extra/01_packages.md +179 -0
- data/lib/wx/doc/extra/02_lifecycles.md +116 -0
- data/lib/wx/doc/extra/03_dialogs.md +57 -0
- data/lib/wx/doc/extra/04_enums.md +143 -0
- data/lib/wx/doc/extra/05_event-handling.md +166 -0
- data/lib/wx/doc/extra/06_geometry.md +56 -0
- data/lib/wx/doc/extra/07_colour_and_font.md +52 -0
- data/lib/wx/doc/extra/08_extensions.md +144 -0
- data/lib/wx/doc/extra/09_exceptions.md +54 -0
- data/lib/wx/doc/functions.rb +221 -0
- data/lib/wx/doc/gdi_common.rb +181 -0
- data/lib/wx/doc/grid/grid.rb +20 -0
- data/lib/wx/doc/help_controller.rb +14 -0
- data/lib/wx/doc/html/html_help_controller.rb +8 -0
- data/lib/wx/doc/pg/events.rb +15 -0
- data/lib/wx/doc/pg/pg_property.rb +8 -0
- data/lib/wx/doc/pg/pgeditor.rb +21 -0
- data/lib/wx/doc/pg/property_grid.rb +48 -0
- data/lib/wx/doc/pg/property_grid_interface.rb +64 -0
- data/lib/wx/doc/prt/page_setup_dialog.rb +15 -0
- data/lib/wx/doc/prt/print_data.rb +9 -0
- data/lib/wx/doc/prt/print_dialog.rb +26 -0
- data/lib/wx/doc/prt/printer.rb +15 -0
- data/lib/wx/doc/rbn/ribbon_bar.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_gallery.rb +9 -0
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +9 -0
- data/lib/wx/doc/rtc/richtext_printing.rb +14 -0
- data/lib/wx/doc/screen_dc.rb +10 -0
- data/lib/wx/doc/stock_objects.rb +98 -0
- data/lib/wx/doc/stream.rb +38 -0
- data/lib/wx/doc/system_settings.rb +29 -0
- data/lib/wx/doc/treebook.rb +9 -0
- data/lib/wx/doc/variant.rb +163 -0
- data/lib/wx/doc/xml_resource.rb +19 -0
- data/lib/wx/global_const.rb +84 -0
- data/lib/wx/grid/grid.rb +7 -0
- data/lib/wx/grid/keyword_defs.rb +10 -0
- data/lib/wx/grid/require.rb +9 -0
- data/lib/wx/grid.rb +14 -0
- data/lib/wx/helpers.rb +65 -0
- data/lib/wx/html/htmlhelpcontroller.rb +6 -0
- data/lib/wx/html/htmlwindow.rb +19 -0
- data/lib/wx/html/keyword_defs.rb +22 -0
- data/lib/wx/html/require.rb +10 -0
- data/lib/wx/html.rb +15 -0
- data/lib/wx/keyword_ctors.rb +226 -0
- data/lib/wx/keyword_defs.rb +487 -0
- data/lib/wx/pg/events.rb +14 -0
- data/lib/wx/pg/keyword_defs.rb +15 -0
- data/lib/wx/pg/pg_editor.rb +13 -0
- data/lib/wx/pg/pg_properties.rb +24 -0
- data/lib/wx/pg/pg_property.rb +27 -0
- data/lib/wx/pg/property_grid.rb +71 -0
- data/lib/wx/pg/property_grid_interface.rb +46 -0
- data/lib/wx/pg/require.rb +12 -0
- data/lib/wx/pg.rb +14 -0
- data/lib/wx/prt/keyword_defs.rb +8 -0
- data/lib/wx/prt/page_setup_dialog.rb +15 -0
- data/lib/wx/prt/previewframe.rb +13 -0
- data/lib/wx/prt/require.rb +8 -0
- data/lib/wx/prt.rb +14 -0
- data/lib/wx/rbn/events.rb +4 -0
- data/lib/wx/rbn/keyword_defs.rb +43 -0
- data/lib/wx/rbn/require.rb +12 -0
- data/lib/wx/rbn/ribbon_art_provider.rb +10 -0
- data/lib/wx/rbn/ribbon_bar.rb +12 -0
- data/lib/wx/rbn/ribbon_button_bar.rb +26 -0
- data/lib/wx/rbn/ribbon_control.rb +25 -0
- data/lib/wx/rbn/ribbon_gallery.rb +26 -0
- data/lib/wx/rbn/ribbon_page.rb +15 -0
- data/lib/wx/rbn/ribbon_panel.rb +15 -0
- data/lib/wx/rbn/ribbon_tool_bar.rb +26 -0
- data/lib/wx/rbn.rb +14 -0
- data/lib/wx/rtc/ext.rb +15 -0
- data/lib/wx/rtc/keyword_defs.rb +17 -0
- data/lib/wx/rtc/require.rb +8 -0
- data/lib/wx/rtc.rb +15 -0
- data/lib/wx/stc/keyword_defs.rb +8 -0
- data/lib/wx/stc/require.rb +7 -0
- data/lib/wx/stc.rb +14 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wx/wxruby/base.rb +87 -0
- data/lib/wx/wxruby/cmd/sampler.rb +68 -0
- data/lib/wx/wxruby/cmd/test.rb +27 -0
- data/lib/wx.rb +14 -0
- data/rakelib/build.rake +62 -0
- data/rakelib/build.rb +141 -0
- data/rakelib/config.rake +48 -0
- data/rakelib/configure.rb +131 -0
- data/rakelib/doc.rake +21 -0
- data/rakelib/doc.rb +35 -0
- data/rakelib/install.rake +30 -0
- data/rakelib/install.rb +220 -0
- data/rakelib/lib/config/cygwin.rb +6 -0
- data/rakelib/lib/config/linux.rb +78 -0
- data/rakelib/lib/config/macosx.rb +6 -0
- data/rakelib/lib/config/mingw.rb +133 -0
- data/rakelib/lib/config/netbsd.rb +6 -0
- data/rakelib/lib/config/unixish.rb +187 -0
- data/rakelib/lib/config.rb +673 -0
- data/rakelib/lib/core/include/enum.inc +306 -0
- data/rakelib/lib/core/include/funcall.inc +277 -0
- data/rakelib/lib/core/include/init.inc +95 -0
- data/rakelib/lib/core/mapping.rb +1116 -0
- data/rakelib/lib/core/package.rb +634 -0
- data/rakelib/lib/core/parameter.rb +222 -0
- data/rakelib/lib/core/spec.rb +468 -0
- data/rakelib/lib/core/spec_helper.rb +405 -0
- data/rakelib/lib/director/about_dialog_info.rb +24 -0
- data/rakelib/lib/director/accelerator.rb +88 -0
- data/rakelib/lib/director/animation.rb +84 -0
- data/rakelib/lib/director/animation_ctrl.rb +24 -0
- data/rakelib/lib/director/any_button.rb +34 -0
- data/rakelib/lib/director/app.rb +420 -0
- data/rakelib/lib/director/art_provider.rb +124 -0
- data/rakelib/lib/director/aui_dock_art.rb +23 -0
- data/rakelib/lib/director/aui_floating_frame.rb +26 -0
- data/rakelib/lib/director/aui_manager.rb +114 -0
- data/rakelib/lib/director/aui_manager_event.rb +22 -0
- data/rakelib/lib/director/aui_mdi_child_frame.rb +50 -0
- data/rakelib/lib/director/aui_mdi_client_window.rb +23 -0
- data/rakelib/lib/director/aui_mdi_parent_frame.rb +26 -0
- data/rakelib/lib/director/aui_notebook.rb +77 -0
- data/rakelib/lib/director/aui_notebook_event.rb +23 -0
- data/rakelib/lib/director/aui_pane_info.rb +102 -0
- data/rakelib/lib/director/aui_tab_art.rb +47 -0
- data/rakelib/lib/director/aui_tab_ctrl.rb +121 -0
- data/rakelib/lib/director/aui_toolbar.rb +22 -0
- data/rakelib/lib/director/aui_toolbar_art.rb +24 -0
- data/rakelib/lib/director/aui_toolbar_event.rb +23 -0
- data/rakelib/lib/director/aui_toolbar_item.rb +21 -0
- data/rakelib/lib/director/bitmap.rb +87 -0
- data/rakelib/lib/director/book_ctrls.rb +104 -0
- data/rakelib/lib/director/brush.rb +28 -0
- data/rakelib/lib/director/busy_info.rb +71 -0
- data/rakelib/lib/director/button.rb +22 -0
- data/rakelib/lib/director/calendar_ctrl.rb +98 -0
- data/rakelib/lib/director/calendar_date_attr.rb +22 -0
- data/rakelib/lib/director/caret.rb +31 -0
- data/rakelib/lib/director/check_listbox.rb +33 -0
- data/rakelib/lib/director/choice.rb +32 -0
- data/rakelib/lib/director/clipboard.rb +37 -0
- data/rakelib/lib/director/collapsible_pane.rb +22 -0
- data/rakelib/lib/director/collapsible_pane_event.rb +22 -0
- data/rakelib/lib/director/colour.rb +64 -0
- data/rakelib/lib/director/colour_picker_ctrl.rb +22 -0
- data/rakelib/lib/director/combobox.rb +37 -0
- data/rakelib/lib/director/control.rb +22 -0
- data/rakelib/lib/director/ctrl_with_items.rb +68 -0
- data/rakelib/lib/director/cursor.rb +28 -0
- data/rakelib/lib/director/data_format.rb +31 -0
- data/rakelib/lib/director/data_object.rb +64 -0
- data/rakelib/lib/director/date_event.rb +141 -0
- data/rakelib/lib/director/date_picker_ctrl.rb +39 -0
- data/rakelib/lib/director/dc.rb +52 -0
- data/rakelib/lib/director/defs.rb +139 -0
- data/rakelib/lib/director/derived_dc.rb +64 -0
- data/rakelib/lib/director/dialog.rb +214 -0
- data/rakelib/lib/director/dir_filterlist_ctrl.rb +29 -0
- data/rakelib/lib/director/dir_picker_ctrl.rb +22 -0
- data/rakelib/lib/director/drag_image.rb +20 -0
- data/rakelib/lib/director/dragdrop.rb +61 -0
- data/rakelib/lib/director/editable_listbox.rb +21 -0
- data/rakelib/lib/director/event.rb +171 -0
- data/rakelib/lib/director/event_handler.rb +410 -0
- data/rakelib/lib/director/events.rb +39 -0
- data/rakelib/lib/director/file_picker_ctrl.rb +22 -0
- data/rakelib/lib/director/find_dialog_event.rb +22 -0
- data/rakelib/lib/director/find_replace_data.rb +20 -0
- data/rakelib/lib/director/font.rb +138 -0
- data/rakelib/lib/director/font_data.rb +22 -0
- data/rakelib/lib/director/font_picker_ctrl.rb +22 -0
- data/rakelib/lib/director/frame.rb +74 -0
- data/rakelib/lib/director/fs_file.rb +353 -0
- data/rakelib/lib/director/functions.rb +284 -0
- data/rakelib/lib/director/gdi_object.rb +21 -0
- data/rakelib/lib/director/gdicommon.rb +94 -0
- data/rakelib/lib/director/generic_dirctrl.rb +24 -0
- data/rakelib/lib/director/graphics_context.rb +143 -0
- data/rakelib/lib/director/graphics_object.rb +69 -0
- data/rakelib/lib/director/grid_cell_attr.rb +53 -0
- data/rakelib/lib/director/grid_cell_editor.rb +434 -0
- data/rakelib/lib/director/grid_cell_renderer.rb +132 -0
- data/rakelib/lib/director/grid_ctrl.rb +390 -0
- data/rakelib/lib/director/grid_range_select_event.rb +23 -0
- data/rakelib/lib/director/grid_table_base.rb +63 -0
- data/rakelib/lib/director/grid_table_message.rb +20 -0
- data/rakelib/lib/director/help_controller.rb +75 -0
- data/rakelib/lib/director/help_provider.rb +103 -0
- data/rakelib/lib/director/html_cell.rb +36 -0
- data/rakelib/lib/director/html_easy_printing.rb +45 -0
- data/rakelib/lib/director/html_event.rb +24 -0
- data/rakelib/lib/director/html_help_data.rb +43 -0
- data/rakelib/lib/director/html_help_frame.rb +25 -0
- data/rakelib/lib/director/html_listbox.rb +54 -0
- data/rakelib/lib/director/html_printout.rb +47 -0
- data/rakelib/lib/director/html_window.rb +114 -0
- data/rakelib/lib/director/icon.rb +33 -0
- data/rakelib/lib/director/image.rb +111 -0
- data/rakelib/lib/director/image_list.rb +21 -0
- data/rakelib/lib/director/list_ctrl.rb +197 -0
- data/rakelib/lib/director/listbox.rb +32 -0
- data/rakelib/lib/director/locale.rb +35 -0
- data/rakelib/lib/director/log.rb +32 -0
- data/rakelib/lib/director/mdi_frame.rb +36 -0
- data/rakelib/lib/director/media_ctrl.rb +22 -0
- data/rakelib/lib/director/menu.rb +92 -0
- data/rakelib/lib/director/menu_bar.rb +28 -0
- data/rakelib/lib/director/menu_item.rb +36 -0
- data/rakelib/lib/director/mouse_state.rb +21 -0
- data/rakelib/lib/director/numeric_property_validator.rb +38 -0
- data/rakelib/lib/director/object.rb +32 -0
- data/rakelib/lib/director/page_setup_dialog.rb +30 -0
- data/rakelib/lib/director/palette.rb +25 -0
- data/rakelib/lib/director/panel.rb +22 -0
- data/rakelib/lib/director/pen.rb +174 -0
- data/rakelib/lib/director/pgarray_editor_dialog.rb +64 -0
- data/rakelib/lib/director/pgcell.rb +68 -0
- data/rakelib/lib/director/pgeditor.rb +154 -0
- data/rakelib/lib/director/pgmulti_button.rb +22 -0
- data/rakelib/lib/director/pgproperties.rb +216 -0
- data/rakelib/lib/director/pgproperty.rb +207 -0
- data/rakelib/lib/director/pgvalidation_info.rb +24 -0
- data/rakelib/lib/director/pickerbase.rb +22 -0
- data/rakelib/lib/director/platform_info.rb +49 -0
- data/rakelib/lib/director/popup_window.rb +23 -0
- data/rakelib/lib/director/preview_frame.rb +39 -0
- data/rakelib/lib/director/print_data.rb +33 -0
- data/rakelib/lib/director/print_dialog.rb +36 -0
- data/rakelib/lib/director/printer.rb +61 -0
- data/rakelib/lib/director/property_grid.rb +174 -0
- data/rakelib/lib/director/property_grid_event.rb +23 -0
- data/rakelib/lib/director/property_grid_interface.rb +227 -0
- data/rakelib/lib/director/property_grid_manager.rb +90 -0
- data/rakelib/lib/director/property_grid_page.rb +76 -0
- data/rakelib/lib/director/property_grid_page_state.rb +32 -0
- data/rakelib/lib/director/radio_box.rb +39 -0
- data/rakelib/lib/director/region.rb +25 -0
- data/rakelib/lib/director/ribbon_art_provider.rb +154 -0
- data/rakelib/lib/director/ribbon_bar.rb +24 -0
- data/rakelib/lib/director/ribbon_bar_event.rb +22 -0
- data/rakelib/lib/director/ribbon_button_bar.rb +37 -0
- data/rakelib/lib/director/ribbon_button_bar_event.rb +40 -0
- data/rakelib/lib/director/ribbon_ctrl.rb +28 -0
- data/rakelib/lib/director/ribbon_gallery.rb +33 -0
- data/rakelib/lib/director/ribbon_gallery_event.rb +27 -0
- data/rakelib/lib/director/ribbon_page.rb +21 -0
- data/rakelib/lib/director/ribbon_panel.rb +22 -0
- data/rakelib/lib/director/ribbon_panel_event.rb +22 -0
- data/rakelib/lib/director/ribbon_tool_bar.rb +146 -0
- data/rakelib/lib/director/ribbon_tool_bar_event.rb +22 -0
- data/rakelib/lib/director/richtext_buffer.rb +46 -0
- data/rakelib/lib/director/richtext_ctrl.rb +63 -0
- data/rakelib/lib/director/richtext_event.rb +25 -0
- data/rakelib/lib/director/richtext_file_handler.rb +42 -0
- data/rakelib/lib/director/richtext_header_footer_data.rb +21 -0
- data/rakelib/lib/director/richtext_printing.rb +44 -0
- data/rakelib/lib/director/sash_layout_event.rb +22 -0
- data/rakelib/lib/director/sash_layout_window.rb +23 -0
- data/rakelib/lib/director/sash_window.rb +23 -0
- data/rakelib/lib/director/scrolled_t.rb +67 -0
- data/rakelib/lib/director/sizer.rb +67 -0
- data/rakelib/lib/director/sizer_item.rb +35 -0
- data/rakelib/lib/director/splash_screen.rb +24 -0
- data/rakelib/lib/director/splitter_event.rb +28 -0
- data/rakelib/lib/director/splitter_window.rb +25 -0
- data/rakelib/lib/director/static_bitmap.rb +24 -0
- data/rakelib/lib/director/static_box.rb +26 -0
- data/rakelib/lib/director/status_bar.rb +86 -0
- data/rakelib/lib/director/styled_text_ctrl.rb +82 -0
- data/rakelib/lib/director/styled_text_event.rb +25 -0
- data/rakelib/lib/director/system_options.rb +22 -0
- data/rakelib/lib/director/system_settings.rb +47 -0
- data/rakelib/lib/director/task_bar_icon.rb +77 -0
- data/rakelib/lib/director/text_attr.rb +22 -0
- data/rakelib/lib/director/text_entry.rb +26 -0
- data/rakelib/lib/director/text_validator.rb +47 -0
- data/rakelib/lib/director/textctrl.rb +80 -0
- data/rakelib/lib/director/time_picker_ctrl.rb +24 -0
- data/rakelib/lib/director/timer.rb +37 -0
- data/rakelib/lib/director/tip_provider.rb +44 -0
- data/rakelib/lib/director/toggle_button.rb +22 -0
- data/rakelib/lib/director/tool_bar.rb +62 -0
- data/rakelib/lib/director/tool_tip.rb +20 -0
- data/rakelib/lib/director/top_level_window.rb +105 -0
- data/rakelib/lib/director/tree_ctrl.rb +411 -0
- data/rakelib/lib/director/tree_event.rb +78 -0
- data/rakelib/lib/director/utils.rb +55 -0
- data/rakelib/lib/director/validator.rb +44 -0
- data/rakelib/lib/director/variant.rb +549 -0
- data/rakelib/lib/director/vlistbox.rb +46 -0
- data/rakelib/lib/director/vscrolled_window.rb +59 -0
- data/rakelib/lib/director/window.rb +296 -0
- data/rakelib/lib/director/window_disabler.rb +44 -0
- data/rakelib/lib/director/with_images.rb +65 -0
- data/rakelib/lib/director/wizard_page.rb +35 -0
- data/rakelib/lib/director/xml_node.rb +48 -0
- data/rakelib/lib/director/xml_resource.rb +141 -0
- data/rakelib/lib/director.rb +487 -0
- data/rakelib/lib/ext/enum_chain.rb +22 -0
- data/rakelib/lib/extractor/class.rb +384 -0
- data/rakelib/lib/extractor/enum.rb +94 -0
- data/rakelib/lib/extractor/function.rb +377 -0
- data/rakelib/lib/extractor/module.rb +140 -0
- data/rakelib/lib/extractor/variable.rb +145 -0
- data/rakelib/lib/extractor.rb +438 -0
- data/rakelib/lib/generate/analyzer.rb +593 -0
- data/rakelib/lib/generate/base.rb +37 -0
- data/rakelib/lib/generate/doc.rb +833 -0
- data/rakelib/lib/generate/interface.rb +742 -0
- data/rakelib/lib/generate/rakedep.rb +130 -0
- data/rakelib/lib/specs/interfaces.rb +324 -0
- data/rakelib/lib/streams.rb +206 -0
- data/rakelib/lib/swig_runner.rb +682 -0
- data/rakelib/lib/typemap/array_int_selections.rb +57 -0
- data/rakelib/lib/typemap/common.rb +613 -0
- data/rakelib/lib/typemap/data_format.rb +76 -0
- data/rakelib/lib/typemap/data_object_data.rb +99 -0
- data/rakelib/lib/typemap/datetime.rb +64 -0
- data/rakelib/lib/typemap/grid_client_data.rb +55 -0
- data/rakelib/lib/typemap/grid_coords.rb +65 -0
- data/rakelib/lib/typemap/html_cell.rb +57 -0
- data/rakelib/lib/typemap/io_streams.rb +162 -0
- data/rakelib/lib/typemap/pgcell.rb +35 -0
- data/rakelib/lib/typemap/pgeditor.rb +35 -0
- data/rakelib/lib/typemap/pgprop_arg.rb +74 -0
- data/rakelib/lib/typemap/pgproperty.rb +35 -0
- data/rakelib/lib/typemap/points_list.rb +124 -0
- data/rakelib/lib/typemap/richtext.rb +67 -0
- data/rakelib/lib/typemap/tree_itemid.rb +49 -0
- data/rakelib/lib/util/string.rb +141 -0
- data/rakelib/prepost.rake +91 -0
- data/rakelib/prepost.rb +26 -0
- data/rakelib/run.rake +49 -0
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +7 -0
- data/rakelib/yard/templates/default/layout/html/setup.rb +5 -0
- data/rakelib/yard/yard/relative_markdown_links/version.rb +8 -0
- data/rakelib/yard/yard/relative_markdown_links.rb +39 -0
- data/rakelib/yard/yard-custom-templates.rb +2 -0
- data/rakelib/yard/yard-relative_markdown_links.rb +4 -0
- data/samples/art/wxruby-128x128.png +0 -0
- data/samples/art/wxruby-256x256.png +0 -0
- data/samples/art/wxruby-64x64.png +0 -0
- data/samples/art/wxruby.ico +0 -0
- data/samples/art/wxruby.png +0 -0
- data/samples/aui/aui.rb +1321 -0
- data/samples/aui/tn_aui.png +0 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +23 -0
- data/samples/bigdemo/GridSimple.rbw +78 -0
- data/samples/bigdemo/MDIDemo.rbw +57 -0
- data/samples/bigdemo/PopupMenu.rbw +146 -0
- data/samples/bigdemo/ShapedWindow.rbw +128 -0
- data/samples/bigdemo/Sizers.rbw +541 -0
- data/samples/bigdemo/bigdemo.rb +810 -0
- data/samples/bigdemo/demoTemplate.rbw +33 -0
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/choice.xpm +27 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +27 -0
- data/samples/bigdemo/icons/copy.xpm +25 -0
- data/samples/bigdemo/icons/cut.xpm +24 -0
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +27 -0
- data/samples/bigdemo/icons/help.xpm +25 -0
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +27 -0
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +44 -0
- data/samples/bigdemo/icons/new.xpm +24 -0
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -0
- data/samples/bigdemo/icons/open.xpm +26 -0
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +38 -0
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +26 -0
- data/samples/bigdemo/icons/print.xpm +26 -0
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +27 -0
- data/samples/bigdemo/icons/robert.xpm +415 -0
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +25 -0
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +39 -0
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +42 -0
- data/samples/bigdemo/icons/stattext.xpm +24 -0
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -0
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +27 -0
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +38 -0
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +38 -0
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +91 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +281 -0
- data/samples/bigdemo/wxBitmapButton.rbw +65 -0
- data/samples/bigdemo/wxButton.rbw +64 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +59 -0
- data/samples/bigdemo/wxCheckBox.rbw +50 -0
- data/samples/bigdemo/wxCheckListBox.rbw +65 -0
- data/samples/bigdemo/wxChoice.rbw +47 -0
- data/samples/bigdemo/wxChoicebook.rbw +78 -0
- data/samples/bigdemo/wxColourDialog.rbw +33 -0
- data/samples/bigdemo/wxComboBox.rbw +77 -0
- data/samples/bigdemo/wxCursor.rbw +136 -0
- data/samples/bigdemo/wxDialog.rbw +74 -0
- data/samples/bigdemo/wxDirDialog.rbw +29 -0
- data/samples/bigdemo/wxDragImage.rbw +70 -0
- data/samples/bigdemo/wxFileDialog.rbw +37 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
- data/samples/bigdemo/wxFontDialog.rbw +200 -0
- data/samples/bigdemo/wxFrame.rbw +53 -0
- data/samples/bigdemo/wxGauge.rbw +65 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
- data/samples/bigdemo/wxGrid.rbw +66 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
- data/samples/bigdemo/wxListBox.rbw +140 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
- data/samples/bigdemo/wxMDIWindows.rbw +50 -0
- data/samples/bigdemo/wxMenu.rbw +247 -0
- data/samples/bigdemo/wxMessageDialog.rbw +27 -0
- data/samples/bigdemo/wxMiniFrame.rbw +70 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +29 -0
- data/samples/bigdemo/wxNotebook.rbw +136 -0
- data/samples/bigdemo/wxProgressDialog.rbw +43 -0
- data/samples/bigdemo/wxRadioBox.rbw +72 -0
- data/samples/bigdemo/wxRadioButton.rbw +125 -0
- data/samples/bigdemo/wxSashWindow.rbw +141 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
- data/samples/bigdemo/wxSlider.rbw +42 -0
- data/samples/bigdemo/wxSpinButton.rbw +50 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +47 -0
- data/samples/bigdemo/wxStaticText.rbw +55 -0
- data/samples/bigdemo/wxStatusBar.rbw +126 -0
- data/samples/bigdemo/wxTextCtrl.rbw +149 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
- data/samples/bigdemo/wxToggleButton.rbw +49 -0
- data/samples/bigdemo/wxToolBar.rbw +131 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
- data/samples/calendar/calendar.rb +363 -0
- data/samples/calendar/tn_calendar.png +0 -0
- data/samples/caret/caret.rb +293 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/caret/tn_caret.png +0 -0
- data/samples/controls/books.rb +183 -0
- data/samples/controls/choice.xpm +27 -0
- data/samples/controls/combo.xpm +27 -0
- data/samples/controls/controls.rb +1143 -0
- data/samples/controls/gauge.xpm +27 -0
- data/samples/controls/get_item_sample.rb +117 -0
- data/samples/controls/list.xpm +27 -0
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +44 -0
- data/samples/controls/radio.xpm +27 -0
- data/samples/controls/stattext.xpm +24 -0
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +27 -0
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/controls/tn_get_item_sample.png +0 -0
- data/samples/dialogs/dialogs.rb +879 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/dialogs/tn_dialogs.png +0 -0
- data/samples/dialogs/tn_wizard.png +0 -0
- data/samples/dialogs/wizard.rb +89 -0
- data/samples/dragdrop/dragdrop.rb +200 -0
- data/samples/dragdrop/tn_dragdrop.png +0 -0
- data/samples/drawing/SVGlogo24.xpm +310 -0
- data/samples/drawing/bitmap.rb +76 -0
- data/samples/drawing/bitmap_image.rb +131 -0
- data/samples/drawing/graphics_drawing.rb +257 -0
- data/samples/drawing/maths_images.rb +327 -0
- data/samples/drawing/rmagic_bitmap_image.rb +139 -0
- data/samples/drawing/ruby-logo.jpg +0 -0
- data/samples/drawing/svgtest.rb +373 -0
- data/samples/drawing/tn_bitmap.png +0 -0
- data/samples/drawing/tn_bitmap_image.png +0 -0
- data/samples/drawing/tn_graphics_drawing.png +0 -0
- data/samples/drawing/tn_maths_images.png +0 -0
- data/samples/drawing/tn_rmagic_bitmap_image.png +0 -0
- data/samples/drawing/tn_svgtest.png +0 -0
- data/samples/etc/choice.rb +82 -0
- data/samples/etc/miniframe.rb +92 -0
- data/samples/etc/sash.rb +140 -0
- data/samples/etc/scrollwin.rb +120 -0
- data/samples/etc/system_settings.rb +263 -0
- data/samples/etc/tn_choice.png +0 -0
- data/samples/etc/tn_miniframe.png +0 -0
- data/samples/etc/tn_sash.png +0 -0
- data/samples/etc/tn_scrollwin.png +0 -0
- data/samples/etc/tn_system_settings.png +0 -0
- data/samples/event/activation.rb +129 -0
- data/samples/event/event.rb +220 -0
- data/samples/event/threaded.rb +141 -0
- data/samples/event/tn_activation.png +0 -0
- data/samples/event/tn_event.png +0 -0
- data/samples/event/tn_threaded.png +0 -0
- data/samples/event/tn_update_ui_event.png +0 -0
- data/samples/event/update_ui_event.rb +91 -0
- data/samples/grid/grid.rb +224 -0
- data/samples/grid/gridtablebase.rb +178 -0
- data/samples/grid/tn_grid.png +0 -0
- data/samples/grid/tn_gridtablebase.png +0 -0
- data/samples/html/8859_2.htm +14 -0
- data/samples/html/cp1250.htm +19 -0
- data/samples/html/foo.png +0 -0
- data/samples/html/html.rb +278 -0
- data/samples/html/i18n.gif +0 -0
- data/samples/html/imagemap.htm +20 -0
- data/samples/html/imagemap.png +0 -0
- data/samples/html/listtest.htm +28 -0
- data/samples/html/pic.png +0 -0
- data/samples/html/pic2.bmp +0 -0
- data/samples/html/regres.htm +20 -0
- data/samples/html/subsup.html +42 -0
- data/samples/html/tables.htm +255 -0
- data/samples/html/test.htm +375 -0
- data/samples/html/tn_html.png +0 -0
- data/samples/mdi/mdi.rb +118 -0
- data/samples/mdi/tn_mdi.png +0 -0
- data/samples/minimal/minimal.rb +95 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +38 -0
- data/samples/minimal/tn_minimal.png +0 -0
- data/samples/minimal/tn_nothing.png +0 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +499 -0
- data/samples/printing/printing2.rb +251 -0
- data/samples/printing/sample-text.txt +213 -0
- data/samples/printing/tn_printing.png +0 -0
- data/samples/printing/tn_printing2.png +0 -0
- data/samples/propgrid/propgrid.rb +2711 -0
- data/samples/propgrid/propgrid_minimal.rb +107 -0
- data/samples/propgrid/sample_props.rb +434 -0
- data/samples/propgrid/tn_propgrid.png +0 -0
- data/samples/propgrid/tn_propgrid_minimal.png +0 -0
- data/samples/ribbon/align_center.xpm +21 -0
- data/samples/ribbon/align_left.xpm +21 -0
- data/samples/ribbon/align_right.xpm +21 -0
- data/samples/ribbon/aui_style.xpm +53 -0
- data/samples/ribbon/auto_crop_selection.xpm +55 -0
- data/samples/ribbon/auto_crop_selection_small.xpm +33 -0
- data/samples/ribbon/circle.xpm +38 -0
- data/samples/ribbon/circle_small.xpm +22 -0
- data/samples/ribbon/colours.xpm +25 -0
- data/samples/ribbon/cross.xpm +38 -0
- data/samples/ribbon/empty.xpm +23 -0
- data/samples/ribbon/expand_selection_h.xpm +46 -0
- data/samples/ribbon/expand_selection_v.xpm +46 -0
- data/samples/ribbon/eye.xpm +26 -0
- data/samples/ribbon/hexagon.xpm +38 -0
- data/samples/ribbon/msw_style.xpm +65 -0
- data/samples/ribbon/position_left.xpm +22 -0
- data/samples/ribbon/position_top.xpm +22 -0
- data/samples/ribbon/ribbon.rb +900 -0
- data/samples/ribbon/ribbon.xpm +54 -0
- data/samples/ribbon/selection_panel.xpm +23 -0
- data/samples/ribbon/square.xpm +38 -0
- data/samples/ribbon/tn_ribbon.png +0 -0
- data/samples/ribbon/triangle.xpm +38 -0
- data/samples/sample.xpm +475 -0
- data/samples/sampler/back.xpm +21 -0
- data/samples/sampler/copy.xpm +44 -0
- data/samples/sampler/cut.xpm +46 -0
- data/samples/sampler/editor.rb +560 -0
- data/samples/sampler/ext.rb +51 -0
- data/samples/sampler/filesave.xpm +42 -0
- data/samples/sampler/find.xpm +62 -0
- data/samples/sampler/findrepl.xpm +63 -0
- data/samples/sampler/forward.xpm +21 -0
- data/samples/sampler/paste.xpm +46 -0
- data/samples/sampler/play.xpm +24 -0
- data/samples/sampler/redo.xpm +58 -0
- data/samples/sampler/sample.rb +347 -0
- data/samples/sampler/stc_editor.rb +321 -0
- data/samples/sampler/txt_editor.rb +130 -0
- data/samples/sampler/undo.xpm +58 -0
- data/samples/sampler.rb +394 -0
- data/samples/splash/mobile.xpm +1835 -0
- data/samples/splash/splash.png +0 -0
- data/samples/splash/splash.rb +164 -0
- data/samples/splash/tn_splash.png +0 -0
- data/samples/text/document-open.png +0 -0
- data/samples/text/document-save.png +0 -0
- data/samples/text/edit-copy.png +0 -0
- data/samples/text/edit-cut.png +0 -0
- data/samples/text/edit-paste.png +0 -0
- data/samples/text/edit-redo.png +0 -0
- data/samples/text/edit-undo.png +0 -0
- data/samples/text/format-text-bold.png +0 -0
- data/samples/text/format-text-italic.png +0 -0
- data/samples/text/format-text-underline.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/preferences-desktop-font.png +0 -0
- data/samples/text/rich_textctrl.rb +326 -0
- data/samples/text/scintilla.rb +179 -0
- data/samples/text/textctrl.rb +124 -0
- data/samples/text/tn_rich_textctrl.png +0 -0
- data/samples/text/tn_scintilla.png +0 -0
- data/samples/text/tn_textctrl.png +0 -0
- data/samples/text/tn_unicode.png +0 -0
- data/samples/text/unicode.rb +238 -0
- data/samples/text/utf8.txt +15 -0
- data/samples/treectrl/checked.xpm +54 -0
- data/samples/treectrl/icon1.xpm +79 -0
- data/samples/treectrl/icon2.xpm +53 -0
- data/samples/treectrl/icon3.xpm +79 -0
- data/samples/treectrl/icon4.xpm +43 -0
- data/samples/treectrl/icon5.xpm +79 -0
- data/samples/treectrl/state1.xpm +145 -0
- data/samples/treectrl/state2.xpm +144 -0
- data/samples/treectrl/state3.xpm +142 -0
- data/samples/treectrl/state4.xpm +145 -0
- data/samples/treectrl/state5.xpm +85 -0
- data/samples/treectrl/tn_treectrl.png +0 -0
- data/samples/treectrl/treectrl.rb +1720 -0
- data/samples/treectrl/unchecked.xpm +30 -0
- data/samples/xrc/custom_dialog.xrc +46 -0
- data/samples/xrc/custom_xrc_sample.rb +84 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/tn_xrc_sample.png +0 -0
- data/samples/xrc/xrc_sample.rb +86 -0
- data/tests/test_basic.rb +20 -0
- data/tests/test_clipboard.rb +241 -0
- data/tests/test_dialog.rb +28 -0
- data/tests/test_event_handling.rb +103 -0
- data/tests/test_events.rb +45 -0
- data/tests/test_geometry.rb +141 -0
- data/tests/test_intl.rb +107 -0
- data/tests/test_item_data.rb +120 -0
- data/tests/test_variant.rb +151 -0
- data/tests/testapp.rb +40 -0
- data/tests/testapp_noframe.rb +28 -0
- metadata +874 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
module WXRuby3
|
|
7
|
+
|
|
8
|
+
class Director
|
|
9
|
+
|
|
10
|
+
class Event < Director
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
if spec.module_name == 'wxEvent'
|
|
14
|
+
spec.items << 'wxCommandEvent'
|
|
15
|
+
# To allow instance variables to be attached to custom subclasses of
|
|
16
|
+
# Wx::Event written in Ruby in a GC-safe, thread-safe way, wrap a
|
|
17
|
+
# custom C++ subclass of wxEvent as Ruby's Wx::Event.
|
|
18
|
+
#
|
|
19
|
+
# Note that this subclass only applies to Event objects created on the
|
|
20
|
+
# Ruby side - for the large majority of normal event handling, objects
|
|
21
|
+
# are created C++ side then given a shallow, transient wrapper for
|
|
22
|
+
# their use in Ruby - see wxRuby_WrapWxEventInRuby in swig/wx.i.
|
|
23
|
+
#
|
|
24
|
+
# make Ruby director and wrappers use custom implementation
|
|
25
|
+
spec.use_class_implementation('wxEvent', 'wxRubyEvent')
|
|
26
|
+
spec.extend_interface('wxEvent', 'wxEvent(wxEventType commandType = wxEVT_NULL, int id = 0, int prop_level = wxEVENT_PROPAGATE_NONE)')
|
|
27
|
+
spec.extend_interface('wxEvent', 'virtual wxEvent* Clone() const')
|
|
28
|
+
spec.ignore %w[wxEvent::Clone wxEvent::GetEventUserData]
|
|
29
|
+
spec.ignore 'wxEvent::wxEvent(int,wxEventType)'
|
|
30
|
+
spec.no_proxy 'wxEvent::Clone'
|
|
31
|
+
spec.add_header_code <<~__HEREDOC
|
|
32
|
+
// Custom subclass implementation. Provide a constructor, destructor and
|
|
33
|
+
// clone functions to allow proper linking to a Ruby object.
|
|
34
|
+
class WXRUBY_EXPORT wxRubyEvent : public wxEvent
|
|
35
|
+
{
|
|
36
|
+
public:
|
|
37
|
+
wxRubyEvent(wxEventType commandType = wxEVT_NULL,
|
|
38
|
+
int id = 0,
|
|
39
|
+
int prop_level = wxEVENT_PROPAGATE_NONE) :
|
|
40
|
+
wxEvent(id, commandType) { m_propagationLevel = prop_level; }
|
|
41
|
+
wxRubyEvent(const wxRubyEvent& ev) :
|
|
42
|
+
wxEvent(ev) { }
|
|
43
|
+
|
|
44
|
+
// When the C++ side event is destroyed, unlink from the Ruby object
|
|
45
|
+
// and remove that object from the tracking hash so it can be
|
|
46
|
+
// collected by GC.
|
|
47
|
+
virtual ~wxRubyEvent() {
|
|
48
|
+
SWIG_RubyUnlinkObjects((void*)this);
|
|
49
|
+
wxRuby_RemoveTracking((void*)this);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Will be called when add_pending_event is used to queue an event
|
|
53
|
+
// (often when using Threads), because a clone is queued. So copy the
|
|
54
|
+
// Wx C++ event, create a shallow (dup) of the Ruby event object, and
|
|
55
|
+
// add to the tracking hash so that it is GC-protected
|
|
56
|
+
virtual wxEvent* Clone() const {
|
|
57
|
+
wxRubyEvent* wx_ev = new wxRubyEvent( *this );
|
|
58
|
+
|
|
59
|
+
VALUE r_obj = SWIG_RubyInstanceFor((void *)this);
|
|
60
|
+
VALUE r_obj_dup = rb_obj_clone(r_obj);
|
|
61
|
+
|
|
62
|
+
DATA_PTR(r_obj_dup) = wx_ev;
|
|
63
|
+
wxRuby_AddTracking( (void*)wx_ev, r_obj_dup );
|
|
64
|
+
return wx_ev;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
__HEREDOC
|
|
68
|
+
spec.add_extend_code 'wxEvent', <<~__HEREDOC
|
|
69
|
+
// This class method provides a guaranteed-unique event id that can be
|
|
70
|
+
// used for custom event types.
|
|
71
|
+
static VALUE new_user_event_type()
|
|
72
|
+
{
|
|
73
|
+
// make sure to get an id offset from the user events base so we can use that to
|
|
74
|
+
// to check for user defined events
|
|
75
|
+
static int s_lastUsedUserEventType = wxEVT_USER_FIRST;
|
|
76
|
+
|
|
77
|
+
int event_type_id = ++s_lastUsedUserEventType;
|
|
78
|
+
return INT2NUM(event_type_id);
|
|
79
|
+
}
|
|
80
|
+
__HEREDOC
|
|
81
|
+
# make Ruby director and wrappers use custom implementation
|
|
82
|
+
spec.use_class_implementation('wxCommandEvent', 'wxRubyCommandEvent')
|
|
83
|
+
spec.ignore %w{
|
|
84
|
+
wxCommandEvent::GetClientObject
|
|
85
|
+
wxCommandEvent::SetClientObject
|
|
86
|
+
wxCommandEvent::GetExtraLong
|
|
87
|
+
}
|
|
88
|
+
spec.extend_interface('wxCommandEvent', 'virtual wxCommandEvent* Clone() const')
|
|
89
|
+
spec.no_proxy 'wxCommandEvent::Clone'
|
|
90
|
+
spec.add_header_code <<~__HEREDOC
|
|
91
|
+
// Cf wxEvent - has to be written as a C+++ subclass to ensure correct
|
|
92
|
+
// GC/thread protection of Ruby instance variables when user-written
|
|
93
|
+
// event classes are queued.
|
|
94
|
+
//
|
|
95
|
+
//
|
|
96
|
+
// FIXME : intermittent errors with CommandEvent losing the tracked
|
|
97
|
+
// object before handling - though the same code works fine with Wx::Event
|
|
98
|
+
class WXRUBY_EXPORT wxRubyCommandEvent : public wxCommandEvent
|
|
99
|
+
{
|
|
100
|
+
public:
|
|
101
|
+
wxRubyCommandEvent(wxEventType commandType = wxEVT_NULL,
|
|
102
|
+
int id = 0) :
|
|
103
|
+
wxCommandEvent(commandType, id) { }
|
|
104
|
+
wxRubyCommandEvent(const wxRubyCommandEvent& cev) :
|
|
105
|
+
wxCommandEvent(cev) { }
|
|
106
|
+
|
|
107
|
+
// When the C++ side event is destroyed, unlink from the Ruby object
|
|
108
|
+
// and remove that object from the tracking hash so it can be
|
|
109
|
+
// collected by GC.
|
|
110
|
+
virtual ~wxRubyCommandEvent() {
|
|
111
|
+
SWIG_RubyUnlinkObjects((void*)this);
|
|
112
|
+
wxRuby_RemoveTracking((void*)this);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Will be called when add_pending_event is used to queue an event
|
|
116
|
+
// (often when using Threads), because a clone is queued. So copy the
|
|
117
|
+
// Wx C++ event, create a shallow (dup) of the Ruby event object, and
|
|
118
|
+
// add to the tracking hash so that it is GC-protected
|
|
119
|
+
virtual wxCommandEvent* Clone() const {
|
|
120
|
+
wxRubyCommandEvent* wx_ev = new wxRubyCommandEvent(*this);
|
|
121
|
+
|
|
122
|
+
VALUE r_obj = SWIG_RubyInstanceFor((void *)this);
|
|
123
|
+
VALUE r_obj_dup = rb_obj_clone(r_obj);
|
|
124
|
+
|
|
125
|
+
DATA_PTR(r_obj_dup) = wx_ev;
|
|
126
|
+
wxRuby_AddTracking( (void*)wx_ev, r_obj_dup );
|
|
127
|
+
return wx_ev;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
__HEREDOC
|
|
131
|
+
spec.add_wrapper_code <<~__HEREDOC
|
|
132
|
+
extern VALUE wxRuby_GetDefaultEventClass () {
|
|
133
|
+
return SwigClassWxEvent.klass;
|
|
134
|
+
}
|
|
135
|
+
__HEREDOC
|
|
136
|
+
spec.ignore 'wxQueueEvent'
|
|
137
|
+
spec.set_only_for 'wxUSE_HOTKEY', 'wxEVT_HOTKEY'
|
|
138
|
+
# make sure this event constant definition exists
|
|
139
|
+
spec.add_swig_code %Q{%constant wxEventType wxEVT_MENU_HIGHLIGHT_ALL = wxEVT_MENU_HIGHLIGHT;}
|
|
140
|
+
# add event type constant missing from interface defs
|
|
141
|
+
spec.add_swig_code %Q{%constant wxEventType wxEVT_NC_PAINT = wxEVT_NC_PAINT;}
|
|
142
|
+
end
|
|
143
|
+
super
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def process(gendoc: false)
|
|
147
|
+
defmod = super
|
|
148
|
+
spec.items.each do |citem|
|
|
149
|
+
unless citem == 'wxEvent'
|
|
150
|
+
def_item = defmod.find_item(citem)
|
|
151
|
+
if Extractor::ClassDef === def_item
|
|
152
|
+
if def_item.hierarchy.has_key?('wxEvent')
|
|
153
|
+
spec.override_inheritance_chain(citem, {'wxEvent' => 'wxEvent'}, 'wxObject')
|
|
154
|
+
elsif def_item.hierarchy.has_key?('wxCommandEvent')
|
|
155
|
+
spec.override_inheritance_chain(citem, {'wxCommandEvent' => 'wxEvent'}, 'wxEvent', 'wxObject')
|
|
156
|
+
elsif def_item.hierarchy.has_key?('wxGestureEvent')
|
|
157
|
+
spec.override_inheritance_chain(citem, {'wxGestureEvent' => 'wxEvents'}, 'wxEvent', 'wxObject')
|
|
158
|
+
elsif def_item.hierarchy.has_key?('wxNotifyEvent')
|
|
159
|
+
spec.override_inheritance_chain(citem, {'wxNotifyEvent' => 'wxEvents'}, {'wxCommandEvent' => 'wxEvent'}, 'wxEvent', 'wxObject')
|
|
160
|
+
end
|
|
161
|
+
spec.make_abstract(citem) if citem == 'wxPaintEvent' # doc flaw
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
defmod
|
|
166
|
+
end
|
|
167
|
+
end # class Event
|
|
168
|
+
|
|
169
|
+
end # class Director
|
|
170
|
+
|
|
171
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
module WXRuby3
|
|
7
|
+
|
|
8
|
+
class Director
|
|
9
|
+
|
|
10
|
+
class EvtHandler < Director
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
super
|
|
14
|
+
# update generated code for all event handlers
|
|
15
|
+
spec.post_processors << :update_evthandler
|
|
16
|
+
if spec.module_name == 'wxEvtHandler'
|
|
17
|
+
# fully ignore
|
|
18
|
+
spec.ignore(
|
|
19
|
+
'wxEvtHandler::Connect',
|
|
20
|
+
'wxEvtHandler::Disconnect')
|
|
21
|
+
spec.ignore(%w[wxEVT_HOTKEY])
|
|
22
|
+
spec.ignore(%w[wxEvtHandler::SetClientData wxEvtHandler::GetClientData
|
|
23
|
+
wxEvtHandler::SetClientObject wxEvtHandler::GetClientObject])
|
|
24
|
+
# Do not see much point in allowing/supporting this to be overridden when we
|
|
25
|
+
# have TryBefore and TryAfter to handle this much cleaner
|
|
26
|
+
spec.no_proxy 'wxEvtHandler::ProcessEvent'
|
|
27
|
+
spec.regard('wxEvtHandler::ProcessEvent', regard_doc: false) # we provide customized docs
|
|
28
|
+
# make SWIG aware of these
|
|
29
|
+
spec.regard 'wxEvtHandler::TryBefore', 'wxEvtHandler::TryAfter'
|
|
30
|
+
# Special type mapping for wxEvtHandler::QueueEvent which assumes ownership of the C++ event.
|
|
31
|
+
# We need to create a shallow copy of the Ruby event instance (copying it's Ruby members if any),
|
|
32
|
+
# pass linkage of the C++ event to the copy and remove it from the original (input) Ruby
|
|
33
|
+
# instance (so it can not delete/or reference it anymore); also start tracking the copy
|
|
34
|
+
# (which effectively removes the tracking for the original).
|
|
35
|
+
# Queued (pending) events are cleaned up (deleted) by wxWidgets after (failing) handling
|
|
36
|
+
# which will automatically unlink and un-track them releasing the Ruby instance to be GC-ed.
|
|
37
|
+
spec.map 'wxEvent *event' => 'Wx::Event' do
|
|
38
|
+
map_in code: <<~__CODE
|
|
39
|
+
// get the wrapped wxEvent*
|
|
40
|
+
wxEvent *wx_ev = (wxEvent*)DATA_PTR($input);
|
|
41
|
+
// check if this a user defined event
|
|
42
|
+
if ( wx_ev->GetEventType() > wxEVT_USER_FIRST )
|
|
43
|
+
{
|
|
44
|
+
// we need to preserve the Ruby state
|
|
45
|
+
// create a shallow copy of the Ruby object
|
|
46
|
+
VALUE r_evt_copy = rb_obj_clone($input);
|
|
47
|
+
// pass the wxEvent* over to the copy
|
|
48
|
+
DATA_PTR(r_evt_copy) = wx_ev;
|
|
49
|
+
// unlink the input
|
|
50
|
+
DATA_PTR($input) = 0;
|
|
51
|
+
// track the copy (this overwrites the record for the
|
|
52
|
+
// original, effectively untracking it)
|
|
53
|
+
wxRuby_AddTracking( (void*)wx_ev, r_evt_copy);
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
{
|
|
57
|
+
// std wx event; no need to preserve the Ruby state
|
|
58
|
+
// simply untrack and unlink the input
|
|
59
|
+
wxRuby_RemoveTracking( (void*)wx_ev);
|
|
60
|
+
DATA_PTR($input) = 0;
|
|
61
|
+
// and just pass on the C++ event
|
|
62
|
+
}
|
|
63
|
+
// Queue the C++ event
|
|
64
|
+
$1 = wx_ev;
|
|
65
|
+
__CODE
|
|
66
|
+
end
|
|
67
|
+
spec.add_runtime_code <<~__HEREDOC
|
|
68
|
+
static swig_class wxRuby_GetSwigClassWxEvtHandler();
|
|
69
|
+
WXRUBY_EXPORT VALUE wxRuby_GetEventTypeClassMap();
|
|
70
|
+
|
|
71
|
+
class wxRbCallback;
|
|
72
|
+
static void wxRuby_ReleaseEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb);
|
|
73
|
+
|
|
74
|
+
// Class which stores the ruby proc associated with an event handler. We
|
|
75
|
+
// also cache the "call" symbol as this improves speed for event
|
|
76
|
+
// handlers which are called many times (eg evt_motion)
|
|
77
|
+
class wxRbCallback : public wxObject
|
|
78
|
+
{
|
|
79
|
+
public:
|
|
80
|
+
wxRbCallback(VALUE func, void* evh)
|
|
81
|
+
: m_func(func), m_evh(evh) {}
|
|
82
|
+
wxRbCallback(const wxRbCallback &other)
|
|
83
|
+
: wxObject(), m_func(other.m_func), m_evh(other.m_evh) {}
|
|
84
|
+
~wxRbCallback()
|
|
85
|
+
{ wxRuby_ReleaseEvtHandlerProc(m_evh, this); }
|
|
86
|
+
|
|
87
|
+
// This method handles all events on the WxWidgets/C++ side. It link
|
|
88
|
+
// inspects the event and based on the event's type wraps it in the
|
|
89
|
+
// appropriate class (the mapping can be found in
|
|
90
|
+
// lib/wx/classes/evthandler.rb). This wrapped event is then passed
|
|
91
|
+
// into the ruby proc for handling on the ruby side
|
|
92
|
+
void EventThunker(wxEvent &event)
|
|
93
|
+
{
|
|
94
|
+
static WxRuby_ID call_id("call");
|
|
95
|
+
|
|
96
|
+
#ifdef __WXRB_DEBUG__
|
|
97
|
+
VALUE rb_event = wxRuby_WrapWxEventInRuby(0, &event);
|
|
98
|
+
#else
|
|
99
|
+
VALUE rb_event = wxRuby_WrapWxEventInRuby(&event);
|
|
100
|
+
#endif
|
|
101
|
+
wxRbCallback *cb = (wxRbCallback *)event.m_callbackUserData;
|
|
102
|
+
bool ex_caught = false;
|
|
103
|
+
VALUE rc = wxRuby_Funcall(ex_caught, cb->m_func, call_id(), 1, rb_event);
|
|
104
|
+
if (ex_caught)
|
|
105
|
+
{
|
|
106
|
+
#ifdef __WXRB_DEBUG__
|
|
107
|
+
if (!rb_obj_is_kind_of(rc, rb_eSystemExit) && wxRuby_TraceLevel()>0)
|
|
108
|
+
{
|
|
109
|
+
wxRuby_PrintException(rc);
|
|
110
|
+
}
|
|
111
|
+
#endif
|
|
112
|
+
wxRuby_ExitMainLoop(rc);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
VALUE m_func;
|
|
117
|
+
void* m_evh;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Internally, all event handlers are anonymous ruby Proc objects,
|
|
121
|
+
// created by EvtHandler#connect. These need to be preserved from Ruby's
|
|
122
|
+
// GC until the EvtHandler object itself is destroyed. So we keep a hash
|
|
123
|
+
// which maps C++ pointer addresses of EvtHandlers to lists of
|
|
124
|
+
// the callback objects created to handle their events.
|
|
125
|
+
typedef wxVector<wxRbCallback*> EvtHandlerProcList;
|
|
126
|
+
typedef EvtHandlerProcList* EvtHandlerProcListPtr;
|
|
127
|
+
WX_DECLARE_VOIDPTR_HASH_MAP(EvtHandlerProcListPtr, PtrToEvtHandlerProcs);
|
|
128
|
+
PtrToEvtHandlerProcs Evt_Handler_Handlers;
|
|
129
|
+
|
|
130
|
+
// Add a proc to the list of protected handler for an EvtHandler object
|
|
131
|
+
void wxRuby_ProtectEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
|
|
132
|
+
{
|
|
133
|
+
if (Evt_Handler_Handlers.count(evt_handler) == 0)
|
|
134
|
+
Evt_Handler_Handlers[evt_handler] = new EvtHandlerProcList();
|
|
135
|
+
Evt_Handler_Handlers[evt_handler]->push_back(proc_cb);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
static void wxRuby_ReleaseEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
|
|
139
|
+
{
|
|
140
|
+
if (Evt_Handler_Handlers.count(evt_handler) != 0)
|
|
141
|
+
{
|
|
142
|
+
EvtHandlerProcList *ehpl = Evt_Handler_Handlers[evt_handler];
|
|
143
|
+
for (EvtHandlerProcList::iterator itproc = ehpl->begin();
|
|
144
|
+
itproc != ehpl->end();
|
|
145
|
+
itproc++)
|
|
146
|
+
{
|
|
147
|
+
if (proc_cb == (*itproc))
|
|
148
|
+
{
|
|
149
|
+
ehpl->erase(itproc);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Called by App's mark function; protect all currently needed procs
|
|
157
|
+
void wxRuby_MarkProtectedEvtHandlerProcs()
|
|
158
|
+
{
|
|
159
|
+
PtrToEvtHandlerProcs::iterator it;
|
|
160
|
+
for( it = Evt_Handler_Handlers.begin();
|
|
161
|
+
it != Evt_Handler_Handlers.end();
|
|
162
|
+
++it )
|
|
163
|
+
{
|
|
164
|
+
for (EvtHandlerProcList::iterator itproc = it->second->begin();
|
|
165
|
+
itproc != it->second->end();
|
|
166
|
+
itproc++)
|
|
167
|
+
{
|
|
168
|
+
rb_gc_mark((*itproc)->m_func);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Called when a Window (or other event handler) is destroyed; allows handler procs associated
|
|
174
|
+
// with this object to be garbage collected at next run. See
|
|
175
|
+
// swig/mark_free_impl.i
|
|
176
|
+
WXRUBY_EXPORT void wxRuby_ReleaseEvtHandlerProcs(void* evt_handler)
|
|
177
|
+
{
|
|
178
|
+
if (Evt_Handler_Handlers.count(evt_handler) != 0)
|
|
179
|
+
{
|
|
180
|
+
delete Evt_Handler_Handlers[evt_handler];
|
|
181
|
+
Evt_Handler_Handlers.erase(evt_handler);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
static WxRuby_ID __wxrb_method_id("method");
|
|
186
|
+
static WxRuby_ID __wxrb_try_before_id("try_before");
|
|
187
|
+
static WxRuby_ID __wxrb_try_after_id("try_after");
|
|
188
|
+
static WxRuby_ID __wxrb_source_location_id("source_location");
|
|
189
|
+
|
|
190
|
+
WXRUBY_EXPORT bool wxRuby_IsNativeMethod(VALUE object, ID method_id)
|
|
191
|
+
{
|
|
192
|
+
return Qnil == rb_funcall(rb_funcall(object, __wxrb_method_id(), 1, ID2SYM(method_id)),
|
|
193
|
+
__wxrb_source_location_id(),
|
|
194
|
+
0);
|
|
195
|
+
}
|
|
196
|
+
__HEREDOC
|
|
197
|
+
spec.add_header_code <<~__HEREDOC
|
|
198
|
+
class RbAsyncProcCallEvent : public wxAsyncMethodCallEvent
|
|
199
|
+
{
|
|
200
|
+
public:
|
|
201
|
+
RbAsyncProcCallEvent(wxObject* evtObj, VALUE call)
|
|
202
|
+
: wxAsyncMethodCallEvent(evtObj)
|
|
203
|
+
, m_rb_call(call)
|
|
204
|
+
{}
|
|
205
|
+
|
|
206
|
+
RbAsyncProcCallEvent(const RbAsyncProcCallEvent& other)
|
|
207
|
+
: wxAsyncMethodCallEvent(other)
|
|
208
|
+
, m_rb_call(other.m_rb_call)
|
|
209
|
+
{}
|
|
210
|
+
|
|
211
|
+
virtual ~RbAsyncProcCallEvent()
|
|
212
|
+
{
|
|
213
|
+
wxRuby_RemoveTracking((void*)this);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
virtual wxEvent *Clone() const wxOVERRIDE
|
|
217
|
+
{
|
|
218
|
+
return new RbAsyncProcCallEvent(*this);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
virtual void Execute() wxOVERRIDE
|
|
222
|
+
{
|
|
223
|
+
static WxRuby_ID call_id("call");
|
|
224
|
+
|
|
225
|
+
bool ex_caught = false;
|
|
226
|
+
VALUE rc;
|
|
227
|
+
if (TYPE(m_rb_call) == T_ARRAY)
|
|
228
|
+
{
|
|
229
|
+
VALUE proc = rb_ary_entry(m_rb_call, 0);
|
|
230
|
+
VALUE args = rb_ary_subseq(m_rb_call, 1, RARRAY_LEN(m_rb_call)-1);
|
|
231
|
+
rc = wxRuby_Funcall(ex_caught, proc, call_id(), args);
|
|
232
|
+
}
|
|
233
|
+
else
|
|
234
|
+
{
|
|
235
|
+
rc = wxRuby_Funcall(ex_caught, m_rb_call, call_id(), (int)0);
|
|
236
|
+
}
|
|
237
|
+
if (ex_caught)
|
|
238
|
+
{
|
|
239
|
+
#ifdef __WXRB_DEBUG__
|
|
240
|
+
if (!rb_obj_is_kind_of(rc, rb_eSystemExit) && wxRuby_TraceLevel()>0)
|
|
241
|
+
{
|
|
242
|
+
wxRuby_PrintException(rc);
|
|
243
|
+
}
|
|
244
|
+
#endif
|
|
245
|
+
wxRuby_ExitMainLoop(rc);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private:
|
|
250
|
+
VALUE m_rb_call;
|
|
251
|
+
};
|
|
252
|
+
__HEREDOC
|
|
253
|
+
spec.add_extend_code 'wxEvtHandler', <<~__HEREDOC
|
|
254
|
+
// This provides the public Ruby 'connect' method
|
|
255
|
+
VALUE connect(int firstId, int lastId, wxEventType eventType, VALUE proc)
|
|
256
|
+
{
|
|
257
|
+
wxRbCallback* userData = new wxRbCallback(proc, (void *)$self);
|
|
258
|
+
wxRuby_ProtectEvtHandlerProc((void *)$self, userData);
|
|
259
|
+
|
|
260
|
+
wxObjectEventFunction function =
|
|
261
|
+
(wxObjectEventFunction )&wxRbCallback::EventThunker;
|
|
262
|
+
$self->Connect(firstId, lastId, eventType, function, userData);
|
|
263
|
+
return Qtrue;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Implementation of disconnect, accepting either an EVT_XXX constant
|
|
267
|
+
// or a symbol name of an event handler method
|
|
268
|
+
VALUE disconnect(int firstId,
|
|
269
|
+
int lastId = wxID_ANY,
|
|
270
|
+
VALUE evtSpecifier = Qnil)
|
|
271
|
+
{
|
|
272
|
+
static WxRuby_ID event_type_for_name_id("event_type_for_name");
|
|
273
|
+
|
|
274
|
+
wxEventType event_type;
|
|
275
|
+
|
|
276
|
+
if ( TYPE(evtSpecifier) == T_FIXNUM ) // simply an Integer id
|
|
277
|
+
event_type = NUM2INT(evtSpecifier);
|
|
278
|
+
else if ( TYPE(evtSpecifier) == T_NIL ) // Not defined = any type
|
|
279
|
+
event_type = wxEVT_NULL;
|
|
280
|
+
else if ( TYPE(evtSpecifier) == T_SYMBOL ) // Symbol handler method
|
|
281
|
+
{
|
|
282
|
+
VALUE rb_evt_type = rb_funcall(wxRuby_GetSwigClassWxEvtHandler().klass,
|
|
283
|
+
event_type_for_name_id(),
|
|
284
|
+
1, evtSpecifier);
|
|
285
|
+
if ( rb_evt_type != Qnil )
|
|
286
|
+
event_type = NUM2INT( rb_evt_type );
|
|
287
|
+
else
|
|
288
|
+
{
|
|
289
|
+
VALUE msg = rb_inspect(evtSpecifier);
|
|
290
|
+
rb_raise(rb_eTypeError, "Unknown event handler %s",
|
|
291
|
+
StringValuePtr(msg));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else
|
|
295
|
+
rb_raise(rb_eTypeError, "Invalid specifier for event type");
|
|
296
|
+
|
|
297
|
+
if ( $self->Disconnect(firstId, lastId, event_type))
|
|
298
|
+
return Qtrue;
|
|
299
|
+
else
|
|
300
|
+
return Qfalse;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
void call_after(VALUE call)
|
|
304
|
+
{
|
|
305
|
+
// valid call object?
|
|
306
|
+
VALUE proc;
|
|
307
|
+
if (TYPE(call) == T_ARRAY &&
|
|
308
|
+
(rb_obj_is_kind_of(proc = rb_ary_entry(call, 0), rb_cProc)
|
|
309
|
+
||
|
|
310
|
+
rb_obj_is_kind_of(proc, rb_cMethod)))
|
|
311
|
+
{
|
|
312
|
+
// create C++ event
|
|
313
|
+
RbAsyncProcCallEvent * evt = new RbAsyncProcCallEvent(self, call);
|
|
314
|
+
// track it and the call object
|
|
315
|
+
wxRuby_AddTracking( (void*)evt, call);
|
|
316
|
+
// queue it
|
|
317
|
+
self->QueueEvent(evt);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
__HEREDOC
|
|
321
|
+
spec.add_wrapper_code <<~__HEREDOC
|
|
322
|
+
static swig_class wxRuby_GetSwigClassWxEvtHandler() {
|
|
323
|
+
return SwigClassWxEvtHandler;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
WXRUBY_EXPORT VALUE wxRuby_GetEventTypeClassMap() {
|
|
327
|
+
VALUE map_name = rb_str_new2("EVENT_TYPE_CLASS_MAP");
|
|
328
|
+
return rb_const_get(wxRuby_GetSwigClassWxEvtHandler().klass, rb_to_id(map_name));
|
|
329
|
+
}
|
|
330
|
+
__HEREDOC
|
|
331
|
+
spec.do_not_generate :typedefs, :variables, :enums, :defines, :functions
|
|
332
|
+
else
|
|
333
|
+
spec.items.each do |itm|
|
|
334
|
+
# Avoid adding unneeded directors
|
|
335
|
+
spec.no_proxy("#{spec.class_name(itm)}::ProcessEvent") unless /\.h\Z/ =~ itm
|
|
336
|
+
end
|
|
337
|
+
spec.add_header_code <<~__HEREDOC
|
|
338
|
+
static WxRuby_ID __wxrb_try_before_id("try_before");
|
|
339
|
+
static WxRuby_ID __wxrb_try_after_id("try_after");
|
|
340
|
+
__HEREDOC
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
end # class EvtHandler
|
|
344
|
+
|
|
345
|
+
end # class Director
|
|
346
|
+
|
|
347
|
+
module SwigRunner
|
|
348
|
+
class Processor
|
|
349
|
+
|
|
350
|
+
# Special post-processor for EvtHandler and derivatives.
|
|
351
|
+
# This provides both an optimization and extra safe guarding for the
|
|
352
|
+
# event processing path in wxRuby.
|
|
353
|
+
# The processor inserts code in the 'TryXXX' methods of the director class which check
|
|
354
|
+
# for existence of any Ruby implementation of these methods ('try_before' or 'try_after')
|
|
355
|
+
# in the absence of which a direct call to the wxWidget implementation is made. If there
|
|
356
|
+
# does exist a Ruby ('override') implementation the method continues and calls the Ruby
|
|
357
|
+
# method implementation.
|
|
358
|
+
# The original wxWidget implementations are available in Ruby as 'wx_try_before' and
|
|
359
|
+
# 'wx_try_after' and can be called from the 'overrides'.
|
|
360
|
+
# Additionally the inserted code first off checks if the event handler is actually (still)
|
|
361
|
+
# able to handle events by calling wxRuby_FindTracking() since in wxRuby it is in rare occasions
|
|
362
|
+
# possible the event handler instance gets garbage collected AFTER the event processing
|
|
363
|
+
# path has started in which case the C++ and Ruby object are unlinked and any attempts to
|
|
364
|
+
# access the (originally) associated Ruby object will have bad results (this is especially
|
|
365
|
+
# true for dialogs which are not cleaned up by wxWidgets but rather garbage collected by Ruby).
|
|
366
|
+
class UpdateEvthandler < Processor
|
|
367
|
+
|
|
368
|
+
def run
|
|
369
|
+
at_director_method = false
|
|
370
|
+
director_method_id = nil
|
|
371
|
+
director_wx_class = nil
|
|
372
|
+
director_method_line = 0
|
|
373
|
+
|
|
374
|
+
prev_line = nil
|
|
375
|
+
|
|
376
|
+
update_source(at_end: ->(){ prev_line }) do |line|
|
|
377
|
+
if at_director_method
|
|
378
|
+
director_method_line += 1 # update line counter
|
|
379
|
+
if director_method_line == 4 && line.strip.empty? # are we at the right spot?
|
|
380
|
+
code = <<~__CODE # insert the code update
|
|
381
|
+
// added by wxRuby3 Processor.update_evthandler
|
|
382
|
+
// if Ruby object not registered anymore or no Ruby defined method override
|
|
383
|
+
// reroute directly to C++ method
|
|
384
|
+
if (Qnil == wxRuby_FindTracking(this) || wxRuby_IsNativeMethod(swig_get_self(), __wxrb_try_#{director_method_id.downcase}_id()))
|
|
385
|
+
{
|
|
386
|
+
return this->#{director_wx_class}::Try#{director_method_id}(event);
|
|
387
|
+
}
|
|
388
|
+
__CODE
|
|
389
|
+
line << "\n " << code.split("\n").join("\n ")
|
|
390
|
+
at_director_method = false # end of update
|
|
391
|
+
end
|
|
392
|
+
elsif /bool\s+SwigDirector_(\w+)::Try(Before|After)\(.*\)\s+{/ =~ line
|
|
393
|
+
director_wx_class = $1 == 'App' ? 'wxApp' : $1
|
|
394
|
+
director_method_id = $2 # After or Before method?
|
|
395
|
+
at_director_method = true # we're at a director method to be updated
|
|
396
|
+
director_method_line = 0 # keep track of the method lines
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
result = prev_line
|
|
400
|
+
prev_line = line
|
|
401
|
+
result
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
end # class UpdateEvthandler
|
|
406
|
+
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
require_relative './event'
|
|
7
|
+
|
|
8
|
+
module WXRuby3
|
|
9
|
+
|
|
10
|
+
class Director
|
|
11
|
+
|
|
12
|
+
class Events < Event
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super
|
|
16
|
+
spec.items.replace(%w[
|
|
17
|
+
wxIdleEvent wxNotifyEvent wxScrollEvent wxScrollWinEvent wxMouseEvent wxMouseState
|
|
18
|
+
wxSetCursorEvent wxGestureEvent wxPanGestureEvent wxZoomGestureEvent wxRotateGestureEvent
|
|
19
|
+
wxTwoFingerTapEvent wxLongPressEvent wxPressAndTapEvent wxKeyEvent wxKeyboardState
|
|
20
|
+
wxSizeEvent wxMoveEvent wxPaintEvent wxEraseEvent wxFocusEvent wxActivateEvent
|
|
21
|
+
wxInitDialogEvent wxMenuEvent wxCloseEvent wxShowEvent wxIconizeEvent wxMaximizeEvent
|
|
22
|
+
wxFullScreenEvent wxJoystickEvent wxDropFilesEvent wxUpdateUIEvent wxSysColourChangedEvent
|
|
23
|
+
wxMouseCaptureChangedEvent wxMouseCaptureLostEvent wxDisplayChangedEvent wxDPIChangedEvent
|
|
24
|
+
wxPaletteChangedEvent wxQueryNewPaletteEvent wxNavigationKeyEvent wxWindowCreateEvent
|
|
25
|
+
wxWindowDestroyEvent wxHelpEvent wxClipboardTextEvent wxContextMenuEvent wxChildFocusEvent
|
|
26
|
+
])
|
|
27
|
+
spec.fold_bases('wxMouseEvent' => 'wxMouseState', 'wxKeyEvent' => 'wxKeyboardState')
|
|
28
|
+
spec.set_only_for 'WXWIN_COMPATIBILITY_2_8', 'wxShowEvent::GetShow', 'wxIconizeEvent::Iconized'
|
|
29
|
+
spec.ignore 'wxKeyEvent::GetPosition(wxCoord *,wxCoord *) const'
|
|
30
|
+
spec.ignore 'wxMouseState::GetPosition(int *,int *)'
|
|
31
|
+
spec.ignore 'wxShowEvent::GetShow', 'wxIconizeEvent::Iconized'
|
|
32
|
+
spec.do_not_generate(:variables, :defines, :enums, :functions)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end # class Events
|
|
36
|
+
|
|
37
|
+
end # class Director
|
|
38
|
+
|
|
39
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
require_relative './window'
|
|
7
|
+
|
|
8
|
+
module WXRuby3
|
|
9
|
+
|
|
10
|
+
class Director
|
|
11
|
+
|
|
12
|
+
class FilePickerCtrl < Window
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super
|
|
16
|
+
spec.do_not_generate(:variables, :defines, :enums, :functions) # with FileDirPickerEvent
|
|
17
|
+
end
|
|
18
|
+
end # class FilePickerCtrl
|
|
19
|
+
|
|
20
|
+
end # class Director
|
|
21
|
+
|
|
22
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
require_relative './event'
|
|
7
|
+
|
|
8
|
+
module WXRuby3
|
|
9
|
+
|
|
10
|
+
class Director
|
|
11
|
+
|
|
12
|
+
class FindDialogEvent < Director::Event
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # class FindDialogEvent
|
|
19
|
+
|
|
20
|
+
end # class Director
|
|
21
|
+
|
|
22
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
###
|
|
2
|
+
# wxRuby3 wxWidgets interface director
|
|
3
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
4
|
+
###
|
|
5
|
+
|
|
6
|
+
module WXRuby3
|
|
7
|
+
|
|
8
|
+
class Director
|
|
9
|
+
|
|
10
|
+
class FindReplaceData < Director
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
super
|
|
14
|
+
spec.do_not_generate(:variables, :enums)
|
|
15
|
+
end
|
|
16
|
+
end # class FindReplaceData
|
|
17
|
+
|
|
18
|
+
end # class Director
|
|
19
|
+
|
|
20
|
+
end # module WXRuby3
|