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,377 @@
|
|
|
1
|
+
/* wxRuby3
|
|
2
|
+
* Copyright (c) Martin J.N. Corino
|
|
3
|
+
*/
|
|
4
|
+
// Copyright 2004-2008, wxRuby development team
|
|
5
|
+
// released under the MIT-like wxRuby2 license
|
|
6
|
+
|
|
7
|
+
// mark_free_impl.i - this contains the C++ implementation of various
|
|
8
|
+
// common GC-related functions, such as shared %mark functions and
|
|
9
|
+
// methods for checking and setting whether a wxWidgets window has been
|
|
10
|
+
// destroyed. It is compiled into wx.cpp.
|
|
11
|
+
|
|
12
|
+
%header %{
|
|
13
|
+
#include <wx/cshelp.h>
|
|
14
|
+
%}
|
|
15
|
+
|
|
16
|
+
%{
|
|
17
|
+
// Code to be run when the ruby object is swept by GC - this only
|
|
18
|
+
// unlinks the C++ object from the ruby VALUE but doesn't delete
|
|
19
|
+
// it because it is still needed and will be managed by WxWidgets.
|
|
20
|
+
WXRUBY_EXPORT void GcNullFreeFunc(void *ptr)
|
|
21
|
+
{
|
|
22
|
+
SWIG_RubyRemoveTracking(ptr);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Tests if the window has been signalled as destroyed by a
|
|
26
|
+
// WindowDestroyEvent handled by wxRubyApp
|
|
27
|
+
WXRUBY_EXPORT bool GC_IsWindowDeleted(void *ptr)
|
|
28
|
+
{
|
|
29
|
+
// If objects have been 'unlinked' then DATA_PTR = 0
|
|
30
|
+
if ( ! ptr )
|
|
31
|
+
return true;
|
|
32
|
+
if ( wxRuby_IsAppRunning () )
|
|
33
|
+
return false;
|
|
34
|
+
else
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Records when a wxWindow has been signalled as destroyed by a
|
|
39
|
+
// WindowDestroyEvent, handled by wxRubyApp (see swig/classes/App.i).
|
|
40
|
+
WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr)
|
|
41
|
+
{
|
|
42
|
+
// All Windows are EvtHandlers, so prevent any pending events being
|
|
43
|
+
// sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
|
|
44
|
+
wxEvtHandler* evt_handler = (wxEvtHandler*)ptr;
|
|
45
|
+
evt_handler->SetEvtHandlerEnabled(false);
|
|
46
|
+
|
|
47
|
+
// Allow the Ruby procs that are event handlers on this window to be
|
|
48
|
+
// garbage collected at next phase
|
|
49
|
+
wxRuby_ReleaseEvtHandlerProcs(ptr);
|
|
50
|
+
|
|
51
|
+
// Wx calls this by standard after the window destroy event is
|
|
52
|
+
// handled, but we need to call it before while the object link is
|
|
53
|
+
// still around
|
|
54
|
+
wxHelpProvider *helpProvider = wxHelpProvider::Get();
|
|
55
|
+
if ( helpProvider )
|
|
56
|
+
helpProvider->RemoveHelp((wxWindowBase*)ptr);
|
|
57
|
+
|
|
58
|
+
// Disassociate the C++ and Ruby objects
|
|
59
|
+
SWIG_RubyUnlinkObjects(ptr);
|
|
60
|
+
SWIG_RubyRemoveTracking(ptr);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Code to be run when the ruby object is swept by GC - this only
|
|
64
|
+
// unlinks the C++ object from the ruby VALUE and decrements the
|
|
65
|
+
// reference counter.
|
|
66
|
+
WXRUBY_EXPORT void GcRefCountedFreeFunc(void *ptr)
|
|
67
|
+
{
|
|
68
|
+
SWIG_RubyRemoveTracking(ptr);
|
|
69
|
+
if (ptr)
|
|
70
|
+
((wxRefCounter*)ptr)->DecRef();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Code to be run when the ruby object is swept by GC - this checks
|
|
74
|
+
// for unattached sizers and deletes those, only unlinking others
|
|
75
|
+
// as these will be managed by WxWidgets.
|
|
76
|
+
WXRUBY_EXPORT void GcSizerFreeFunc(void *ptr)
|
|
77
|
+
{
|
|
78
|
+
wxSizer* wx_szr = (wxSizer*)ptr;
|
|
79
|
+
// unlink in all cases
|
|
80
|
+
SWIG_RubyRemoveTracking(ptr);
|
|
81
|
+
delete wx_szr; // delete unattached sizers
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void GC_mark_SizerBelongingToWindow(wxSizer *wx_sizer, VALUE rb_sizer);
|
|
85
|
+
|
|
86
|
+
WXRUBY_EXPORT void GC_mark_wxSizer(void* ptr)
|
|
87
|
+
{
|
|
88
|
+
VALUE rb_szr = SWIG_RubyInstanceFor(ptr);
|
|
89
|
+
if (rb_szr && rb_szr != Qnil)
|
|
90
|
+
{
|
|
91
|
+
wxSizer* wx_szr = (wxSizer*)ptr;
|
|
92
|
+
|
|
93
|
+
// as long as the dfree function is still the GCSizeFreeFunc the sizer has not been attached to a window
|
|
94
|
+
// or added to a parent sizer (as that would 'disown' and replace the free function by the tracking removal function)
|
|
95
|
+
// but it may hay have already had child sizers added which need to be marked
|
|
96
|
+
if (RDATA(rb_szr)->dfree == (void (*)(void *))GcSizerFreeFunc)
|
|
97
|
+
{
|
|
98
|
+
// Then loop over the sizer's content and mark each sub-sizer
|
|
99
|
+
wxSizerItemList& children = wx_szr->GetChildren();
|
|
100
|
+
for ( wxSizerItemList::compatibility_iterator node = children.GetFirst();
|
|
101
|
+
node;
|
|
102
|
+
node = node->GetNext() )
|
|
103
|
+
{
|
|
104
|
+
wxSizerItem* item = node->GetData();
|
|
105
|
+
wxSizer* child_sizer = item->GetSizer();
|
|
106
|
+
if ( child_sizer )
|
|
107
|
+
{
|
|
108
|
+
VALUE rb_child_sizer = SWIG_RubyInstanceFor(child_sizer);
|
|
109
|
+
if ( rb_child_sizer != Qnil )
|
|
110
|
+
{
|
|
111
|
+
// just reuse this function here (will do exactly what we want)
|
|
112
|
+
GC_mark_SizerBelongingToWindow(child_sizer, rb_child_sizer);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Carries out marking of Sizer objects belonging to a Wx::Window. Note
|
|
121
|
+
// that this isn't done as a standard mark routine because ONLY sizers
|
|
122
|
+
// that are known to belong to a still-alive window should be marked,
|
|
123
|
+
// not those picked up as marked by in-scope variables by
|
|
124
|
+
// Ruby. Otherwise, segfaults may result. Because Sizers are SWIG
|
|
125
|
+
// directors, they must be preserved from GC.
|
|
126
|
+
void GC_mark_SizerBelongingToWindow(wxSizer *wx_sizer, VALUE rb_sizer)
|
|
127
|
+
{
|
|
128
|
+
#ifdef __WXRB_DEBUG__
|
|
129
|
+
if (wxRuby_TraceLevel()>1)
|
|
130
|
+
std::wcout << "> GC_mark_SizerBelongingToWindow : " << wx_sizer << std::endl;
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
// First, mark this sizer
|
|
134
|
+
rb_gc_mark( rb_sizer );
|
|
135
|
+
|
|
136
|
+
// Then loop over hte sizer's content and mark each sub-sizer in turn
|
|
137
|
+
wxSizerItemList& children = wx_sizer->GetChildren();
|
|
138
|
+
for ( wxSizerItemList::compatibility_iterator node = children.GetFirst();
|
|
139
|
+
node;
|
|
140
|
+
node = node->GetNext() )
|
|
141
|
+
{
|
|
142
|
+
wxSizerItem* item = node->GetData();
|
|
143
|
+
wxSizer* child_sizer = item->GetSizer();
|
|
144
|
+
if ( child_sizer )
|
|
145
|
+
{
|
|
146
|
+
VALUE rb_child_sizer = SWIG_RubyInstanceFor(child_sizer);
|
|
147
|
+
if ( rb_child_sizer != Qnil )
|
|
148
|
+
{
|
|
149
|
+
GC_mark_SizerBelongingToWindow(child_sizer, rb_child_sizer);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#ifdef __WXRB_DEBUG__
|
|
155
|
+
if (wxRuby_TraceLevel()>1)
|
|
156
|
+
std::wcout << "< GC_mark_SizerBelongingToWindow : " << wx_sizer << std::endl;
|
|
157
|
+
#endif
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Similar to Sizers, MenuBar requires a special mark routine. This is
|
|
161
|
+
// because Wx::Menu is not a subclass of Window so isn't automatically
|
|
162
|
+
// protected in the mark phase by Wx::App. However, the ruby object
|
|
163
|
+
// still must not be destroyed while it is still accessible on screen,
|
|
164
|
+
// because it may still handle events. Rather than a SWIG %markfunc,
|
|
165
|
+
// which can catch destroyed MenuBars linked to an in-scope ruby
|
|
166
|
+
// variable and cause segfaults, MenuBars are always marked via the
|
|
167
|
+
// containing Frame.
|
|
168
|
+
void GC_mark_MenuBarBelongingToFrame(wxMenuBar *menu_bar)
|
|
169
|
+
{
|
|
170
|
+
#ifdef __WXRB_DEBUG__
|
|
171
|
+
if (wxRuby_TraceLevel()>1)
|
|
172
|
+
std::wcout << "> GC_mark_MenuBarBelongingToFrame : " << menu_bar << std::endl;
|
|
173
|
+
#endif
|
|
174
|
+
|
|
175
|
+
rb_gc_mark( SWIG_RubyInstanceFor(menu_bar) );
|
|
176
|
+
// Mark each menu in the menubar in turn
|
|
177
|
+
for ( size_t i = 0; i < menu_bar->GetMenuCount(); i++ )
|
|
178
|
+
{
|
|
179
|
+
wxMenu* menu = menu_bar->GetMenu(i);
|
|
180
|
+
rb_gc_mark( SWIG_RubyInstanceFor(menu) );
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
#ifdef __WXRB_DEBUG__
|
|
184
|
+
if (wxRuby_TraceLevel()>1)
|
|
185
|
+
std::wcout << "< GC_mark_MenuBarBelongingToFrame : " << menu_bar << std::endl;
|
|
186
|
+
#endif
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Default mark routine for Windows - preserve the main sizer and caret
|
|
190
|
+
// belong to this window
|
|
191
|
+
WXRUBY_EXPORT void GC_mark_wxWindow(void *ptr)
|
|
192
|
+
{
|
|
193
|
+
#ifdef __WXRB_DEBUG__
|
|
194
|
+
if (wxRuby_TraceLevel()>1)
|
|
195
|
+
std::wcout << "> GC_mark_wxWindow : " << ptr << std::endl;
|
|
196
|
+
#endif
|
|
197
|
+
|
|
198
|
+
if ( GC_IsWindowDeleted(ptr) )
|
|
199
|
+
{
|
|
200
|
+
#ifdef __WXRB_DEBUG__
|
|
201
|
+
if (wxRuby_TraceLevel()>1)
|
|
202
|
+
std::wcout << "< GC_mark_wxWindow : deleted" << std::endl;
|
|
203
|
+
#endif
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
wxWindow* wx_win = (wxWindow*)ptr;
|
|
208
|
+
#ifdef __WXRB_DEBUG__
|
|
209
|
+
if (wxRuby_TraceLevel()>2)
|
|
210
|
+
std::wcout << "* GC_mark_wxWindow - getting sizer" << std::endl;
|
|
211
|
+
#endif
|
|
212
|
+
wxSizer* wx_sizer = wx_win->GetSizer();
|
|
213
|
+
if ( wx_sizer )
|
|
214
|
+
{
|
|
215
|
+
#ifdef __WXRB_DEBUG__
|
|
216
|
+
if (wxRuby_TraceLevel()>2)
|
|
217
|
+
std::wcout << "* GC_mark_wxWindow - found sizer" << std::endl;
|
|
218
|
+
#endif
|
|
219
|
+
VALUE rb_sizer = SWIG_RubyInstanceFor(wx_sizer);
|
|
220
|
+
if ( rb_sizer != Qnil )
|
|
221
|
+
GC_mark_SizerBelongingToWindow(wx_sizer, rb_sizer);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
#ifdef __WXRB_DEBUG__
|
|
225
|
+
if (wxRuby_TraceLevel()>2)
|
|
226
|
+
std::wcout << "* GC_mark_wxWindow - getting caret" << std::endl;
|
|
227
|
+
#endif
|
|
228
|
+
wxCaret* wx_caret = wx_win->GetCaret();
|
|
229
|
+
if ( wx_caret )
|
|
230
|
+
{
|
|
231
|
+
#ifdef __WXRB_DEBUG__
|
|
232
|
+
if (wxRuby_TraceLevel()>2)
|
|
233
|
+
std::wcout << "* GC_mark_wxWindow - found caret" << std::endl;
|
|
234
|
+
#endif
|
|
235
|
+
VALUE rb_caret = SWIG_RubyInstanceFor(wx_caret);
|
|
236
|
+
rb_gc_mark(rb_caret);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
#ifdef __WXRB_DEBUG__
|
|
240
|
+
if (wxRuby_TraceLevel()>2)
|
|
241
|
+
std::wcout << "* GC_mark_wxWindow - getting droptarget" << std::endl;
|
|
242
|
+
#endif
|
|
243
|
+
wxDropTarget* wx_droptarget = wx_win->GetDropTarget();
|
|
244
|
+
if ( wx_droptarget )
|
|
245
|
+
{
|
|
246
|
+
#ifdef __WXRB_DEBUG__
|
|
247
|
+
if (wxRuby_TraceLevel()>2)
|
|
248
|
+
std::wcout << "* GC_mark_wxWindow - found droptarget" << std::endl;
|
|
249
|
+
#endif
|
|
250
|
+
VALUE rb_droptarget = SWIG_RubyInstanceFor(wx_droptarget);
|
|
251
|
+
rb_gc_mark(rb_droptarget);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
#ifdef __WXRB_DEBUG__
|
|
255
|
+
if (wxRuby_TraceLevel()>2)
|
|
256
|
+
std::wcout << "* GC_mark_wxWindow - getting validator" << std::endl;
|
|
257
|
+
#endif
|
|
258
|
+
wxValidator* wx_validator = wx_win->GetValidator();
|
|
259
|
+
if ( wx_validator )
|
|
260
|
+
{
|
|
261
|
+
#ifdef __WXRB_DEBUG__
|
|
262
|
+
if (wxRuby_TraceLevel()>2)
|
|
263
|
+
std::wcout << "* GC_mark_wxWindow - found validator" << std::endl;
|
|
264
|
+
#endif
|
|
265
|
+
VALUE rb_validator = SWIG_RubyInstanceFor(wx_validator);
|
|
266
|
+
rb_gc_mark(rb_validator);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
#ifdef __WXRB_DEBUG__
|
|
270
|
+
if (wxRuby_TraceLevel()>1)
|
|
271
|
+
std::wcout << "< GC_mark_wxWindow : " << ptr << std::endl;
|
|
272
|
+
#endif
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
WXRUBY_EXPORT void GC_mark_wxFrame(void *ptr)
|
|
277
|
+
{
|
|
278
|
+
#ifdef __WXRB_DEBUG__
|
|
279
|
+
if (wxRuby_TraceLevel()>1)
|
|
280
|
+
std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
|
|
281
|
+
#endif
|
|
282
|
+
|
|
283
|
+
if ( GC_IsWindowDeleted(ptr) )
|
|
284
|
+
{
|
|
285
|
+
#ifdef __WXRB_DEBUG__
|
|
286
|
+
if (wxRuby_TraceLevel()>1)
|
|
287
|
+
std::wcout << "> GC_mark_wxFrame : deleted" << std::endl;
|
|
288
|
+
#endif
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Frames are also a subclass of wxWindow, so must do all the marking
|
|
293
|
+
// of sizers and carets associated with that class
|
|
294
|
+
GC_mark_wxWindow(ptr);
|
|
295
|
+
|
|
296
|
+
wxFrame* wx_frame = (wxFrame*)ptr;
|
|
297
|
+
// Then mark the MenuBar, if one is associated with this Frame
|
|
298
|
+
|
|
299
|
+
wxMenuBar* menu_bar = wx_frame->GetMenuBar();
|
|
300
|
+
if ( menu_bar )
|
|
301
|
+
{
|
|
302
|
+
GC_mark_MenuBarBelongingToFrame(menu_bar);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
#ifdef __WXRB_DEBUG__
|
|
306
|
+
if (wxRuby_TraceLevel()>1)
|
|
307
|
+
std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
|
|
308
|
+
#endif
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// wxRuby must preserve ruby objects attached as the ClientData of
|
|
312
|
+
// command events that have been user-defined in ruby. Some of the
|
|
313
|
+
// standard wxWidgets CommandEvent classes (which have a constant event
|
|
314
|
+
// id less than wxEVT_USER_FIRST, from wx/event.h) also use ClientData
|
|
315
|
+
// for their own purposes, and this must not be marked as the data is
|
|
316
|
+
// not a ruby object, and will thus crash.
|
|
317
|
+
WXRUBY_EXPORT void GC_mark_wxEvent(void *ptr)
|
|
318
|
+
{
|
|
319
|
+
#ifdef __WXRB_DEBUG__
|
|
320
|
+
if (wxRuby_TraceLevel()>1)
|
|
321
|
+
std::wcout << "> GC_mark_wxEvent : " << ptr << std::endl;
|
|
322
|
+
#endif
|
|
323
|
+
|
|
324
|
+
if ( ! ptr ) return;
|
|
325
|
+
wxEvent* wx_event = (wxEvent*)ptr;
|
|
326
|
+
#ifdef __WXRB_DEBUG__
|
|
327
|
+
if (wxRuby_TraceLevel()>2)
|
|
328
|
+
std::wcout << "* GC_mark_wxEvent(" << ptr << ":{" << wx_event->GetEventType() << "})" << std::endl;
|
|
329
|
+
#endif
|
|
330
|
+
if ( wx_event->GetEventType() > wxEVT_USER_FIRST &&
|
|
331
|
+
wx_event->IsCommandEvent() )
|
|
332
|
+
{
|
|
333
|
+
wxCommandEvent* wx_cm_event = (wxCommandEvent*)ptr;
|
|
334
|
+
VALUE rb_client_data = (VALUE)wx_cm_event->GetClientData();
|
|
335
|
+
rb_gc_mark(rb_client_data);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
#ifdef __WXRB_DEBUG__
|
|
339
|
+
if (wxRuby_TraceLevel()>1)
|
|
340
|
+
std::wcout << "< GC_mark_wxEvent : " << ptr << std::endl;
|
|
341
|
+
#endif
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// Prevents Ruby's GC sweeping up items that are stored as client data
|
|
345
|
+
// Checks whether the C++ object is still around first...
|
|
346
|
+
WXRUBY_EXPORT void GC_mark_wxControlWithItems(void* ptr)
|
|
347
|
+
{
|
|
348
|
+
#ifdef __WXRB_DEBUG__
|
|
349
|
+
if (wxRuby_TraceLevel()>1)
|
|
350
|
+
std::wcout << "> GC_mark_wxControlWithItems : " << ptr << std::endl;
|
|
351
|
+
#endif
|
|
352
|
+
|
|
353
|
+
if ( GC_IsWindowDeleted(ptr) )
|
|
354
|
+
return;
|
|
355
|
+
|
|
356
|
+
GC_mark_wxWindow(ptr);
|
|
357
|
+
|
|
358
|
+
wxControlWithItems* wx_cwi = (wxControlWithItems*) ptr;
|
|
359
|
+
int count = wx_cwi->GetCount();
|
|
360
|
+
if ( count == 0 )
|
|
361
|
+
return; // Empty control
|
|
362
|
+
if ( ! wx_cwi->HasClientObjectData() && ! wx_cwi->HasClientUntypedData() )
|
|
363
|
+
return; // Control containing only strings
|
|
364
|
+
|
|
365
|
+
for (int i = 0; i < count; ++i)
|
|
366
|
+
{
|
|
367
|
+
VALUE object = (VALUE) wx_cwi->GetClientData(i);
|
|
368
|
+
if ( object && object != Qnil )
|
|
369
|
+
rb_gc_mark(object);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
#ifdef __WXRB_DEBUG__
|
|
373
|
+
if (wxRuby_TraceLevel()>1)
|
|
374
|
+
std::wcout << "< GC_mark_wxControlWithItems : " << ptr << std::endl;
|
|
375
|
+
#endif
|
|
376
|
+
}
|
|
377
|
+
%}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/* wxRuby3
|
|
2
|
+
* Copyright (c) Martin J.N. Corino
|
|
3
|
+
*/
|
|
4
|
+
// Copyright 2004-2007, wxRuby development team
|
|
5
|
+
// released under the MIT-like wxRuby2 license
|
|
6
|
+
|
|
7
|
+
// This file, required by common.i defines a set of macros which are used
|
|
8
|
+
// to specify memory management strategies for individual Wx classes.
|
|
9
|
+
|
|
10
|
+
// Broadly speaking there are two different strategies:
|
|
11
|
+
//
|
|
12
|
+
// 1) For all classes which inherit from Wx::Window, including all Frames,
|
|
13
|
+
// Dialogs and Controls: the C++ objects are managed by WxWidgets; when=
|
|
14
|
+
// Frame is closed, it and all its contents are deleted. Therefore wxRuby
|
|
15
|
+
// doesn't try to delete these objects as part of GC until they are known
|
|
16
|
+
// to have been deleted. The instance of Wx::App watches for window
|
|
17
|
+
// destruction, and in the GC-mark phase marks all Windows that are still
|
|
18
|
+
// alive. [see App.i]
|
|
19
|
+
//
|
|
20
|
+
// 2) Almost all other classes are memory managed by wxRuby - that is, when
|
|
21
|
+
// they have fallen out of scope and GC is run, the underlying C++ object
|
|
22
|
+
// will be deleted too by the standard %freefunc.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// These are implemented in swig/wx.i, so they are shared among all classes
|
|
26
|
+
%{
|
|
27
|
+
WXRUBY_EXPORT void GcNullFreeFunc(void *);
|
|
28
|
+
WXRUBY_EXPORT void GcSizerFreeFunc(void *);
|
|
29
|
+
WXRUBY_EXPORT void GcDialogFreeFunc(void *);
|
|
30
|
+
WXRUBY_EXPORT void GcRefCountedFreeFunc(void *);
|
|
31
|
+
WXRUBY_EXPORT void GC_mark_wxSizer(void *);
|
|
32
|
+
WXRUBY_EXPORT void GC_mark_wxWindow(void *);
|
|
33
|
+
WXRUBY_EXPORT void GC_mark_wxFrame(void *);
|
|
34
|
+
WXRUBY_EXPORT void GC_mark_wxEvent(void *);
|
|
35
|
+
%}
|
|
36
|
+
|
|
37
|
+
// Macro definitions.
|
|
38
|
+
|
|
39
|
+
// Objects that are tracked but managed by WxWidgets - this is currently
|
|
40
|
+
// all Windows, including Frames and Dialogs
|
|
41
|
+
%define GC_NEVER(kls)
|
|
42
|
+
%trackobjects kls;
|
|
43
|
+
%feature("freefunc") kls "GcNullFreeFunc";
|
|
44
|
+
%enddef
|
|
45
|
+
|
|
46
|
+
// Strategy for windows that aren't top-level windows. Here, the C++
|
|
47
|
+
// objects are destroyed automatically by WxWidgets when the frame that
|
|
48
|
+
// contains them is closed and destroyed.
|
|
49
|
+
%define GC_MANAGE_AS_WINDOW(kls)
|
|
50
|
+
GC_NEVER(kls);
|
|
51
|
+
|
|
52
|
+
// Any sizer associated with the frame will be preserved by the default
|
|
53
|
+
// function. If subclasse of Wx::Window need to implement their own
|
|
54
|
+
// markfuncs (eg controls with ItemData), they probably need to call
|
|
55
|
+
// this function in their own mark routine if they may have a sizer
|
|
56
|
+
// associated with them.
|
|
57
|
+
%feature("markfunc") kls "GC_mark_wxWindow";
|
|
58
|
+
%enddef
|
|
59
|
+
|
|
60
|
+
// Strategy for top-level frames - these are destroyed
|
|
61
|
+
// automatically. Marking is the same as for Windows, plus preservation
|
|
62
|
+
// of the associated MenuBar, if reuqired.
|
|
63
|
+
%define GC_MANAGE_AS_FRAME(kls)
|
|
64
|
+
GC_NEVER(kls);
|
|
65
|
+
// Mark any associated sizer
|
|
66
|
+
%feature("markfunc") kls "GC_mark_wxFrame";
|
|
67
|
+
%enddef
|
|
68
|
+
|
|
69
|
+
// Strategy for dialogs - these are NOT destroyed automatically
|
|
70
|
+
%define GC_MANAGE_AS_DIALOG(kls)
|
|
71
|
+
GC_NEVER(kls);
|
|
72
|
+
// Mark any associated sizer
|
|
73
|
+
%feature("markfunc") kls "GC_mark_wxWindow";
|
|
74
|
+
%enddef
|
|
75
|
+
|
|
76
|
+
// Events - most are created within wxWidgets C++ on the stack and thus
|
|
77
|
+
// do not need deletion. These are passed into ruby via EvtHandler or
|
|
78
|
+
// App methods, and are wrapped using wxRuby_WrapWxEventInRuby (see
|
|
79
|
+
// wx.i). This gives them a void freefunc and markfunc and are NOT
|
|
80
|
+
// tracked - they are treated as one-shot short-lived objects.
|
|
81
|
+
//
|
|
82
|
+
// However, custom events created on the ruby side need to be deleted to
|
|
83
|
+
// avoid leakage as SWIG wrappers call C++ "new" to allocate the
|
|
84
|
+
// underlying wxEvent object. In the allocate function SWIG will assign
|
|
85
|
+
// the tracking and mark/free functions for these objects. The default
|
|
86
|
+
// free func will delete the C++ Event.
|
|
87
|
+
%define GC_MANAGE_AS_EVENT(kls)
|
|
88
|
+
%feature("markfunc") kls "GC_mark_wxEvent";
|
|
89
|
+
%feature("nodirector") kls;
|
|
90
|
+
%trackobjects kls;
|
|
91
|
+
%enddef
|
|
92
|
+
|
|
93
|
+
// Other descendants of Wx::Object - eg Colour, Pen, Bitmap - that Wx
|
|
94
|
+
// manages by reference counting
|
|
95
|
+
%define GC_MANAGE_AS_OBJECT(kls)
|
|
96
|
+
%trackobjects kls;
|
|
97
|
+
%enddef
|
|
98
|
+
|
|
99
|
+
// Strategy for objects whose pointer / id identity does not matter,
|
|
100
|
+
// only their attributes: Size, Point and Rect. They are commonly
|
|
101
|
+
// created as temporary objects on the stack in C++ and then passed into
|
|
102
|
+
// director methods. Once the director method has run they should no
|
|
103
|
+
// longer be referenced in ruby.
|
|
104
|
+
%define GC_MANAGE_AS_FUNGIBLE_OBJECT(kls)
|
|
105
|
+
%enddef
|
|
106
|
+
|
|
107
|
+
%define GC_MANAGE_AS_TEMP(kls)
|
|
108
|
+
%enddef
|
|
109
|
+
|
|
110
|
+
// Sizers attached to windows are automatically destroyed by wxWidgets,
|
|
111
|
+
// so they should not be deleted.
|
|
112
|
+
//
|
|
113
|
+
// TODO - orphaned/unattached sizers are not automatically destroyed -
|
|
114
|
+
// so the freefunc should check for this condition and do the delete if
|
|
115
|
+
// required to prevent a memory leak.
|
|
116
|
+
%define GC_MANAGE_AS_SIZER(kls)
|
|
117
|
+
%trackobjects kls;
|
|
118
|
+
%feature("freefunc") kls "GcSizerFreeFunc";
|
|
119
|
+
%feature("markfunc") kls "GC_mark_wxSizer";
|
|
120
|
+
%enddef
|
|
121
|
+
|
|
122
|
+
// wxRefCounter derived objects need to dereferenced when GC-ed but
|
|
123
|
+
// *not* deleted. Destruction will be automatic if the reference count
|
|
124
|
+
// reaches zero. Need to be disowned though in certain circumstances.
|
|
125
|
+
%define GC_MANAGE_AS_REFCOUNTED(kls)
|
|
126
|
+
%trackobjects kls;
|
|
127
|
+
%feature("freefunc") kls "GcRefCountedFreeFunc";
|
|
128
|
+
%enddef
|
|
129
|
+
|
|
130
|
+
// special refcounted for grid cell renderers/editors and attrs
|
|
131
|
+
%define GC_MANAGE_AS_UNTRACKED_REFCOUNTED(kls)
|
|
132
|
+
%feature("freefunc") kls "GcRefCountedFreeFunc";
|
|
133
|
+
%enddef
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
// All other classes - mainly helper classes (eg Sizer, GridCellxxx) and
|
|
137
|
+
// informational classes eg Point, Size, Rect. These are tracked but
|
|
138
|
+
// sometimes later disowned once passed into a widget, and thenceforth
|
|
139
|
+
// managed by WxWidgets
|
|
140
|
+
%define GC_MANAGE(kls)
|
|
141
|
+
GC_MANAGE_AS_OBJECT(kls)
|
|
142
|
+
%enddef
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* wxRuby3
|
|
2
|
+
* Copyright (c) Martin J.N. Corino
|
|
3
|
+
*/
|
|
4
|
+
// Copyright 2004-2007, wxRuby development team
|
|
5
|
+
// released under the MIT-like wxRuby2 license
|
|
6
|
+
|
|
7
|
+
// needed for typedefs generated from defs.h
|
|
8
|
+
typedef long long wxLongLong_t;
|
|
9
|
+
typedef unsigned long long wxULongLong_t;
|
|
10
|
+
|
|
11
|
+
// include common typedefs extracted from defs.h
|
|
12
|
+
%include "classes/common/typedefs.i"
|
|
13
|
+
|
|
14
|
+
typedef wchar_t wxChar;
|
|
15
|
+
typedef wchar_t wxSChar;
|
|
16
|
+
typedef wchar_t wxUChar;
|
|
17
|
+
typedef wchar_t wxStringCharType;
|
|
18
|
+
|
|
19
|
+
// additional common typedefs
|
|
20
|
+
typedef int wxWindowID;
|
|
21
|
+
|
|
22
|
+
enum wxBitmapType;
|
|
23
|
+
enum wxStockCursor;
|
|
24
|
+
enum wxLayoutDirection;
|
|
25
|
+
|
|
26
|
+
// make sure wxEventType is known as 'int'
|
|
27
|
+
typedef int wxEventType;
|