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,282 @@
|
|
|
1
|
+
// Copyright 2004-2007, wxRuby development team
|
|
2
|
+
// released under the MIT-like wxRuby2 license
|
|
3
|
+
|
|
4
|
+
%module(directors="1") wxruby3
|
|
5
|
+
|
|
6
|
+
%include "common.i"
|
|
7
|
+
|
|
8
|
+
%{
|
|
9
|
+
#include <wx/gdicmn.h>
|
|
10
|
+
#include <wx/image.h>
|
|
11
|
+
#include <wx/xrc/xmlres.h>
|
|
12
|
+
|
|
13
|
+
#include <wx/filesys.h>
|
|
14
|
+
#include <wx/fs_zip.h>
|
|
15
|
+
%}
|
|
16
|
+
|
|
17
|
+
// Some common functions
|
|
18
|
+
%{
|
|
19
|
+
extern VALUE mWxCore;
|
|
20
|
+
WXRUBY_EXPORT VALUE wxRuby_Core()
|
|
21
|
+
{
|
|
22
|
+
return mWxCore;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Mapping of known wxRuby classes to SWIG type information
|
|
26
|
+
WX_DECLARE_HASH_MAP(VALUE,
|
|
27
|
+
swig_type_info*,
|
|
28
|
+
wxIntegerHash,
|
|
29
|
+
wxIntegerEqual,
|
|
30
|
+
RbClassToSwigTypeHash);
|
|
31
|
+
RbClassToSwigTypeHash Global_Type_Map;
|
|
32
|
+
|
|
33
|
+
// Record swig_type_info for a wxRuby class; called in class
|
|
34
|
+
// initialisation
|
|
35
|
+
WXRUBY_EXPORT void wxRuby_SetSwigTypeForClass(VALUE cls, swig_type_info* ty) {
|
|
36
|
+
Global_Type_Map[cls] = ty;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Retrieve swig_type_info for a ruby class - needed by functions which
|
|
40
|
+
// wrap objects whose type is not known in advance - eg
|
|
41
|
+
// Window#find_window_by_index (see Window.i)
|
|
42
|
+
WXRUBY_EXPORT swig_type_info* wxRuby_GetSwigTypeForClass(VALUE cls) {
|
|
43
|
+
return Global_Type_Map[cls];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Overriding standard SWIG tracking - SWIG's implementation is not
|
|
47
|
+
// compatible with ruby 1.8.7 / 1.9.x as it can allocate BigNum objects
|
|
48
|
+
// during GC , which is an error. So instead we provide a C++ ptr->Ruby
|
|
49
|
+
// object map using Wx's hashmap class.
|
|
50
|
+
WX_DECLARE_VOIDPTR_HASH_MAP(VALUE,
|
|
51
|
+
PtrToRbObjHash);
|
|
52
|
+
PtrToRbObjHash Global_Ptr_Map;
|
|
53
|
+
|
|
54
|
+
// Add a tracking from ptr -> object
|
|
55
|
+
WXRUBY_EXPORT void wxRuby_AddTracking(void* ptr, VALUE object) {
|
|
56
|
+
#ifdef __WXRB_DEBUG__
|
|
57
|
+
if (wxRuby_TraceLevel()>1)
|
|
58
|
+
{
|
|
59
|
+
std::wcout << "> wxRuby_AddTracking" << std::flush;
|
|
60
|
+
VALUE clsname = rb_mod_name(CLASS_OF(object));
|
|
61
|
+
std::wcout << "("
|
|
62
|
+
<< ptr << ":{"
|
|
63
|
+
<< (clsname != Qnil ? StringValueCStr(clsname) : "<noname>")
|
|
64
|
+
<< "})" << std::endl;
|
|
65
|
+
}
|
|
66
|
+
#endif
|
|
67
|
+
Global_Ptr_Map[ptr] = object;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Return the ruby object for ptr
|
|
71
|
+
WXRUBY_EXPORT VALUE wxRuby_FindTracking(void* ptr) {
|
|
72
|
+
if ( Global_Ptr_Map.count(ptr) == 0 )
|
|
73
|
+
return Qnil;
|
|
74
|
+
else
|
|
75
|
+
return Global_Ptr_Map[ptr];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Remove the tracking for ptr
|
|
79
|
+
WXRUBY_EXPORT void wxRuby_RemoveTracking(void* ptr) {
|
|
80
|
+
#ifdef __WXRB_DEBUG__
|
|
81
|
+
if (wxRuby_TraceLevel()>1)
|
|
82
|
+
std::wcout << "< wxRuby_RemoveTracking(" << ptr << ")" << std::endl;
|
|
83
|
+
#endif
|
|
84
|
+
Global_Ptr_Map.erase(ptr);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Iterate over all the trackings, calling the passed-in method on each
|
|
88
|
+
WXRUBY_EXPORT void wxRuby_IterateTracking( void(*meth)(void* ptr, VALUE obj) ) {
|
|
89
|
+
PtrToRbObjHash::iterator it;
|
|
90
|
+
for( it = Global_Ptr_Map.begin(); it != Global_Ptr_Map.end(); ++it )
|
|
91
|
+
{
|
|
92
|
+
void* ptr = it->first;
|
|
93
|
+
VALUE obj = it->second;
|
|
94
|
+
(*meth)(ptr, obj);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
// Returns a ruby object wrapped around a wxObject. This is used for
|
|
100
|
+
// methods whose return type is a generic C++ class (eg wxWindow), but
|
|
101
|
+
// whose return values are actually instances of specific C++ classes
|
|
102
|
+
// (eg wxButton) and so must be wrapped in the right Ruby class
|
|
103
|
+
// (Wx::Button). It must check if the ruby wrapper object already
|
|
104
|
+
// exists, and if not, wrap it in the correct class, and ensure that
|
|
105
|
+
// future calls return the same object. Most of this is handled by the
|
|
106
|
+
// SWIG API - the main additional complexity is using Wx's RTTI system
|
|
107
|
+
// to discover the specific C++ class, then find a ruby class, and the
|
|
108
|
+
// SWIG type info struct with the appropriate mark & free funcs to wrap
|
|
109
|
+
// it in.
|
|
110
|
+
//
|
|
111
|
+
// This is useful for methods which return arbitrary windows - for
|
|
112
|
+
// example, Window::FindWindowById or the FindWindowByPoint global
|
|
113
|
+
// function; and in circumstances, especially XRC-loading, where
|
|
114
|
+
// complete Windows are created in C++ without ruby code.
|
|
115
|
+
WXRUBY_EXPORT VALUE wxRuby_WrapWxObjectInRuby(wxObject *wx_obj)
|
|
116
|
+
{
|
|
117
|
+
static WxRuby_ID window_id("Window");
|
|
118
|
+
|
|
119
|
+
// If no object was passed to be wrapped; this could be a normal state
|
|
120
|
+
// (eg if get_sizer was called on a Window with no sizer set), or
|
|
121
|
+
// could be an error, eg if calling get_window_by_id and no window
|
|
122
|
+
// matched the id, or an error arose from incorrect XML syntax
|
|
123
|
+
if ( ! wx_obj )
|
|
124
|
+
return Qnil;
|
|
125
|
+
|
|
126
|
+
// Get the wx class and the ruby class we are converting into
|
|
127
|
+
wxString class_name( wx_obj->GetClassInfo()->GetClassName() );
|
|
128
|
+
wxCharBuffer wx_classname = class_name.mb_str();
|
|
129
|
+
VALUE r_class_name = rb_intern(wx_classname.data () + 2);
|
|
130
|
+
VALUE r_class = Qnil;
|
|
131
|
+
|
|
132
|
+
if ( class_name.Len() > 2 )
|
|
133
|
+
{
|
|
134
|
+
// lookup the class in the main module and any package submodules loaded
|
|
135
|
+
if (rb_const_defined(mWxCore, r_class_name))
|
|
136
|
+
r_class = rb_const_get(mWxCore, r_class_name);
|
|
137
|
+
else
|
|
138
|
+
{
|
|
139
|
+
VALUE submod_ary = rb_ivar_get(mWxCore, rb_intern("@__pkgmods__"));
|
|
140
|
+
for (long n=0; n<RARRAY_LEN(submod_ary); ++n)
|
|
141
|
+
{
|
|
142
|
+
VALUE submod = rb_ary_entry(submod_ary, n);
|
|
143
|
+
if (rb_const_defined(submod, r_class_name))
|
|
144
|
+
{
|
|
145
|
+
r_class = rb_const_get(submod, r_class_name);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Handle classes (currently) unknown in wxRuby.
|
|
153
|
+
// (could cause problems because class-specific methods won't be accessible).
|
|
154
|
+
if ( r_class == Qnil )
|
|
155
|
+
{
|
|
156
|
+
// map unknown wxWindow derivatives as basic window
|
|
157
|
+
if (wxIsKindOf(wx_obj, wxWindow))
|
|
158
|
+
{
|
|
159
|
+
r_class = rb_const_get(mWxCore, window_id());
|
|
160
|
+
// issue warning if $VERBOSE is true
|
|
161
|
+
rb_warning("Cannot wrap exact window class as '%s' is not (yet) known in wxRuby; wrapping as base Window object.",
|
|
162
|
+
(const char *)class_name.mb_str());
|
|
163
|
+
}
|
|
164
|
+
else
|
|
165
|
+
{
|
|
166
|
+
rb_warn("Error wrapping object; class '%s' is not (yet) supported in wxRuby",
|
|
167
|
+
(const char *)class_name.mb_str());
|
|
168
|
+
return Qnil;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Otherwise, retrieve the swig type info for this class and wrap it
|
|
173
|
+
// in Ruby. wxRuby_GetSwigTypeForClass is defined in wx.i
|
|
174
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(r_class);
|
|
175
|
+
VALUE r_obj = SWIG_NewPointerObj(wx_obj, swig_type, 1);
|
|
176
|
+
return r_obj;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
// The passage of wxEvents from the C++ to the ruby side has to be
|
|
181
|
+
// controlled carefully because normal Wx events are created on the
|
|
182
|
+
// stack, and hence the underlying object is often deleted while the
|
|
183
|
+
// ruby object is still around. This (plus typemap in typemap.i) gets
|
|
184
|
+
// round this by tracking Event objects created on the ruby side with eg
|
|
185
|
+
// CommandEvent.new, but never tracking, marking or freeing those
|
|
186
|
+
// generated on the C++ side.
|
|
187
|
+
// Cached reference to EvtHandler evt_type_id -> ruby_event_class map
|
|
188
|
+
static VALUE Evt_Type_Map = NULL;
|
|
189
|
+
|
|
190
|
+
#ifdef __WXRB_DEBUG__
|
|
191
|
+
WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(void* rcvr, wxEvent *wx_event)
|
|
192
|
+
#else
|
|
193
|
+
WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
|
|
194
|
+
#endif
|
|
195
|
+
{
|
|
196
|
+
// Get the mapping of event types to classes
|
|
197
|
+
if ( ! Evt_Type_Map )
|
|
198
|
+
{
|
|
199
|
+
Evt_Type_Map = wxRuby_GetEventTypeClassMap ();
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
#if __WXRB_DEBUG__
|
|
203
|
+
if (wxRuby_TraceLevel()>1)
|
|
204
|
+
std::wcout << "* wxRuby_WrapWxEventInRuby(rcvr=" << rcvr << ", " << wx_event << ":{" << wx_event->GetEventType() << "@" << wx_event->GetEventObject() << "})" << std::endl;
|
|
205
|
+
#endif
|
|
206
|
+
|
|
207
|
+
// Then, look up the event type in this hash (MUCH faster than calling
|
|
208
|
+
// EvtHandler.evt_class_for_type method)
|
|
209
|
+
VALUE rb_event_type_id = INT2NUM( wx_event->GetEventType() );
|
|
210
|
+
VALUE rb_event_class = rb_hash_aref(Evt_Type_Map, rb_event_type_id);
|
|
211
|
+
|
|
212
|
+
// Check we have a valid class; warn and map to default Wx::Event if not
|
|
213
|
+
if ( NIL_P(rb_event_class) )
|
|
214
|
+
{
|
|
215
|
+
rb_event_class = wxRuby_GetDefaultEventClass ();
|
|
216
|
+
wxString class_name( wx_event->GetClassInfo()->GetClassName() );
|
|
217
|
+
rb_warning("Unmapped event type %i (%s)", wx_event->GetEventType(), (const char *)class_name.mb_str());
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Now, see if we have a tracked instance of this object already
|
|
221
|
+
// wrapped - this would be the case if it had been created on the Ruby
|
|
222
|
+
// side.
|
|
223
|
+
VALUE rb_event = SWIG_RubyInstanceFor((void *)wx_event);
|
|
224
|
+
|
|
225
|
+
// Something has been found, but sometimes stale objects are left in
|
|
226
|
+
// the tracking, especially for types that are created and destroyed
|
|
227
|
+
// quickly; therefore, we need to verify that the found Ruby object is
|
|
228
|
+
// really the right thing, and not some stale reference.
|
|
229
|
+
if ( rb_event != Qnil )
|
|
230
|
+
{
|
|
231
|
+
if ( rb_obj_is_kind_of(rb_event, rb_event_class ) )
|
|
232
|
+
return rb_event; // OK
|
|
233
|
+
else
|
|
234
|
+
SWIG_RubyRemoveTracking((void *)wx_event); // Remove stale ref
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// No existing Ruby instance found, so a transitory event object; wrap
|
|
238
|
+
// without mark or free functions as Wx will deals with deletion
|
|
239
|
+
rb_event = Data_Wrap_Struct(rb_event_class, 0, 0, 0);
|
|
240
|
+
DATA_PTR(rb_event) = wx_event;
|
|
241
|
+
// do not forget to mark the instance with the mangled swig type name
|
|
242
|
+
swig_type_info* type = wxRuby_GetSwigTypeForClass(rb_event_class);
|
|
243
|
+
rb_iv_set(rb_event, "@__swigtype__", rb_str_new2(type->name));
|
|
244
|
+
|
|
245
|
+
#if __WXRB_DEBUG__
|
|
246
|
+
if (wxRuby_TraceLevel()>1)
|
|
247
|
+
std::wcout << "* wxRuby_WrapWxEventInRuby - wrapped transitory event " << wx_event << "{" << type->name << "}" << std::endl;
|
|
248
|
+
#endif
|
|
249
|
+
|
|
250
|
+
return rb_event;
|
|
251
|
+
}
|
|
252
|
+
%}
|
|
253
|
+
|
|
254
|
+
%inline %{
|
|
255
|
+
#ifdef __WXRB_DEBUG__
|
|
256
|
+
int wxrb_trace_level = 0;
|
|
257
|
+
#else
|
|
258
|
+
const int wxrb_trace_level = 0;
|
|
259
|
+
#endif
|
|
260
|
+
%}
|
|
261
|
+
|
|
262
|
+
%{
|
|
263
|
+
#ifdef __WXRB_DEBUG__
|
|
264
|
+
WXRUBY_EXPORT int wxRuby_TraceLevel()
|
|
265
|
+
{
|
|
266
|
+
return _wxrb_trace_level;
|
|
267
|
+
}
|
|
268
|
+
#endif
|
|
269
|
+
%}
|
|
270
|
+
|
|
271
|
+
%include "mark_free_impl.i"
|
|
272
|
+
|
|
273
|
+
%init %{
|
|
274
|
+
// Set up all image formats
|
|
275
|
+
wxInitAllImageHandlers();
|
|
276
|
+
|
|
277
|
+
// Load handlers on the global resources object
|
|
278
|
+
wxXmlResource::Get()->InitAllHandlers();
|
|
279
|
+
|
|
280
|
+
// This is needed so HtmlHelp can load docs from a zip file
|
|
281
|
+
wxFileSystem::AddHandler(new wxArchiveFSHandler);
|
|
282
|
+
%}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Name: swig/wxruby.rc
|
|
3
|
+
// Purpose: wxRuby3 MSW standard resource file
|
|
4
|
+
// Author: Martin Corino
|
|
5
|
+
/////////////////////////////////////////////////////////////////////////////
|
|
6
|
+
|
|
7
|
+
// note that the icon used by the Explorer (i.e. the programs icon) is the
|
|
8
|
+
// first icon in the executable and the icons are sorted both by their order
|
|
9
|
+
// and alphabetically (!), so put this icon first and give it a name
|
|
10
|
+
// starting with "a"
|
|
11
|
+
aaaaaaaaWxRuby3 ICON "wxruby3/wxruby.ico"
|
|
12
|
+
|
|
13
|
+
// To get DPI change events, we need to opt in into per monitor DPI support.
|
|
14
|
+
#ifndef wxUSE_DPI_AWARE_MANIFEST
|
|
15
|
+
#define wxUSE_DPI_AWARE_MANIFEST 2
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
// this file contains the standard icons, cursors, ...
|
|
19
|
+
#include "wx/msw/wx.rc"
|
|
Binary file
|
data/lib/wx/accessors.rb
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# = WxSugar - Accessors
|
|
2
|
+
#
|
|
3
|
+
# The default WxRuby interface has lots and lots of methods like
|
|
4
|
+
#
|
|
5
|
+
# * get_position()
|
|
6
|
+
# * set_size(a_size)
|
|
7
|
+
# * is_checked()
|
|
8
|
+
# * can_undo()
|
|
9
|
+
# * has_style(a_style)
|
|
10
|
+
#
|
|
11
|
+
# and so on. Methods that retrieve set, or query attributes of an object
|
|
12
|
+
# are more normally in Ruby called simply by the attribute name, or, in
|
|
13
|
+
# other cases, with a predicate method:
|
|
14
|
+
#
|
|
15
|
+
# * pos = my_widget.position
|
|
16
|
+
# * my_widget.size = a_size
|
|
17
|
+
# * my_widget.checked?
|
|
18
|
+
# * my_widget.can_undo?
|
|
19
|
+
# * my_widget.has_style?
|
|
20
|
+
#
|
|
21
|
+
# The wxRuby generation scripts capture most of these and automatically declare
|
|
22
|
+
# alias definitions for those. But not all.
|
|
23
|
+
# This extension captures the ones that are still missing an appropriate alias and
|
|
24
|
+
# automagically creates an alias for every WxRuby instance method that
|
|
25
|
+
# begins with +get_+, +set_+, +is_+, +can_+ and +has_+. Note that if you are calling a
|
|
26
|
+
# 'setter' method on self, you must explicitly send the message to self:
|
|
27
|
+
#
|
|
28
|
+
# # set's self size to be 100px by 100px
|
|
29
|
+
# self.size = Wx::Size.new(100, 100)
|
|
30
|
+
# # only sets the value of a local variable 'size'
|
|
31
|
+
# size = Wx::Size.new
|
|
32
|
+
|
|
33
|
+
module WxRubyStyleAccessors
|
|
34
|
+
# Ruby-style method named are implemented by method-missing; if an
|
|
35
|
+
# unknown method is called, see if it is a rubyish name for a real
|
|
36
|
+
# method. In principle it would be possible to set up real aliases for
|
|
37
|
+
# them at start-up, but in practice this is far too slow for all the
|
|
38
|
+
# classes that need to be started up.
|
|
39
|
+
def method_missing(sym, *args)
|
|
40
|
+
case sym.to_s
|
|
41
|
+
when /^(\w+)\=$/
|
|
42
|
+
meth = "set_#{$1}"
|
|
43
|
+
when /^((?:has|can)\w+)\?$/
|
|
44
|
+
meth = $1
|
|
45
|
+
when /^(\w+)\?$/
|
|
46
|
+
meth = "is_#{$1}"
|
|
47
|
+
else
|
|
48
|
+
meth = "get_#{sym}"
|
|
49
|
+
end
|
|
50
|
+
if respond_to?(meth)
|
|
51
|
+
send(meth, *args)
|
|
52
|
+
else
|
|
53
|
+
super
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.included(mod)
|
|
58
|
+
mod.extend WxRubyStyleAccessors
|
|
59
|
+
mod.constants.collect { | c | mod.const_get(c) }.grep(Module).each do |mod|
|
|
60
|
+
mod.include WxRubyStyleAccessors if mod.name.start_with?('Wx::') # only setup Wx namespace
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
class Wx::AUI::AuiManager
|
|
3
|
+
def get_all_panes
|
|
4
|
+
::Enumerator.new { |y| each_pane { |p| y << p } }
|
|
5
|
+
end
|
|
6
|
+
alias :all_panes :get_all_panes
|
|
7
|
+
|
|
8
|
+
unless Wx::EvtHandler.event_type_for_name(:evt_aui_find_manager)
|
|
9
|
+
# missing from XML API refs
|
|
10
|
+
Wx::EvtHandler.register_event_type Wx::EvtHandler::EventType[
|
|
11
|
+
'evt_aui_find_manager', 0,
|
|
12
|
+
Wx::AUI::EVT_AUI_FIND_MANAGER,
|
|
13
|
+
Wx::AUI::AuiManagerEvent
|
|
14
|
+
] if Wx::AUI.const_defined?(:EVT_AUI_FIND_MANAGER)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Wx::AUI sub package for wxRuby3
|
|
2
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
3
|
+
|
|
4
|
+
#require_relative './ext'
|
|
5
|
+
require_relative './events/evt_list'
|
|
6
|
+
require_relative './auimanager'
|
|
7
|
+
require_relative './auinotebook'
|
|
8
|
+
|
|
9
|
+
Wx::Dialog.setup_dialog_functors(Wx::AUI)
|
data/lib/wx/aui.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Wx::AUI sub package loader for wxRuby3
|
|
2
|
+
# Copyright (c) M.J.N. Corino, The Netherlands
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
require 'wx/core'
|
|
6
|
+
|
|
7
|
+
require 'wxruby_aui'
|
|
8
|
+
|
|
9
|
+
require_relative './aui/require'
|
|
10
|
+
|
|
11
|
+
::Wx.include(WxRubyStyleAccessors)
|
|
12
|
+
|
|
13
|
+
::Wx.include(Wx::AUI) if defined?(::WX_GLOBAL_CONSTANTS) && ::WX_GLOBAL_CONSTANTS
|
|
14
|
+
::Wx::AUI.include((defined?(::WX_GLOBAL_CONSTANTS) && ::WX_GLOBAL_CONSTANTS) ? WxGlobalConstants : WxEnumConstants)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Wx::AcceleratorTable
|
|
2
|
+
# Allow new to be called as []
|
|
3
|
+
class << self
|
|
4
|
+
alias :[] :new
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Allow initialize to be called with a splat-like list of arguments,
|
|
8
|
+
# and allow entries to be specified in terser form [mod, key, id]
|
|
9
|
+
# rather than full AcceleratorEntry.new call.
|
|
10
|
+
wx_init = self.instance_method(:initialize)
|
|
11
|
+
define_method(:initialize) do | *args |
|
|
12
|
+
# Test for old-style arg passing in a single array
|
|
13
|
+
if args.length == 1 and args.first.kind_of?(Array) and
|
|
14
|
+
args.first.all? { | e | e.kind_of?(Wx::AcceleratorEntry) }
|
|
15
|
+
args = args[0]
|
|
16
|
+
end
|
|
17
|
+
# Convert to array of AccEntries, to pass in as single array
|
|
18
|
+
args = args.map do | entry |
|
|
19
|
+
case entry
|
|
20
|
+
when Wx::AcceleratorEntry then entry
|
|
21
|
+
when Array then Wx::AcceleratorEntry.new(*entry)
|
|
22
|
+
else Kernel.raise ArgumentError,
|
|
23
|
+
"#{entry.inspect} is not a valid AcceleratorTable entry"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
wx_init.bind(self).call(args)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Wx::Animation
|
|
2
|
+
# Redefine the initialize method so it raises an exception if a
|
|
3
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
|
4
|
+
# just carries on with an empty bitmap, which may cause faults later
|
|
5
|
+
wx_init = self.instance_method(:initialize)
|
|
6
|
+
define_method(:initialize) do | *args |
|
|
7
|
+
if args[0].kind_of? String
|
|
8
|
+
if not File.exist?( File.expand_path(args[0]) )
|
|
9
|
+
Kernel.raise( ArgumentError,
|
|
10
|
+
"Animation file does not exist: #{args[0]}" )
|
|
11
|
+
end
|
|
12
|
+
res = wx_init.bind(self).call()
|
|
13
|
+
res.load_file(args[0], args[1] || Wx::ANIMATION_TYPE_ANY)
|
|
14
|
+
else
|
|
15
|
+
wx_init.bind(self).call(*args)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/wx/core/app.rb
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Copyright 2004-2006 by Kevin Smith
|
|
2
|
+
# released under the MIT-style wxruby2 license
|
|
3
|
+
|
|
4
|
+
require_relative './ext'
|
|
5
|
+
|
|
6
|
+
# Controller class which creates and manages all windows.
|
|
7
|
+
class Wx::App
|
|
8
|
+
|
|
9
|
+
# convenience method to retrieve global Wx::App instance
|
|
10
|
+
def self.the_app
|
|
11
|
+
if Wx::const_defined?(:THE_APP) and Wx::THE_APP.is_running
|
|
12
|
+
Wx::THE_APP
|
|
13
|
+
else
|
|
14
|
+
nil
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Ruby init callback.
|
|
19
|
+
# Initializes delayed load constants and than calls the user defined 'on_init'
|
|
20
|
+
def on_ruby_init
|
|
21
|
+
Wx.load_delayed_constants
|
|
22
|
+
self.respond_to?(:on_init) ? self.on_init : false
|
|
23
|
+
end
|
|
24
|
+
private :on_ruby_init
|
|
25
|
+
|
|
26
|
+
# Make C-ext main_loop method private
|
|
27
|
+
private :main_loop
|
|
28
|
+
|
|
29
|
+
# App instance run method.
|
|
30
|
+
# Accepts optional 'on_init' block.
|
|
31
|
+
# The block will be ignored when the (derived) App class
|
|
32
|
+
# already has an 'on_init' method defined.
|
|
33
|
+
def run(&block)
|
|
34
|
+
if block_given?
|
|
35
|
+
if self.respond_to?(:on_init)
|
|
36
|
+
Wx.log_warning("'on_init' block ignored as #{self.class.name} already has an #on_init method defined")
|
|
37
|
+
else
|
|
38
|
+
self.singleton_class.class_eval do
|
|
39
|
+
define_method(:on_init, &block)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
main_loop # run the main loop (which triggers the call to on_init)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Convenience class method to create simple apps. Starts an
|
|
47
|
+
# application main_loop, setting up initial windows etc as specified
|
|
48
|
+
# in the passed block.
|
|
49
|
+
# block
|
|
50
|
+
def self.run(&block)
|
|
51
|
+
if block_given?
|
|
52
|
+
app_klass = Class.new(self)
|
|
53
|
+
app_klass.class_eval do
|
|
54
|
+
define_method(:on_init, &block)
|
|
55
|
+
end
|
|
56
|
+
else
|
|
57
|
+
app_klass = self
|
|
58
|
+
end
|
|
59
|
+
app_klass.new.run
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# This is a class method in Wx, but permit it to be an instance method
|
|
64
|
+
# in wxRuby
|
|
65
|
+
def is_main_loop_running
|
|
66
|
+
Wx::App.is_main_loop_running
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# This method handles failed assertions from within the WxWidgets C++
|
|
70
|
+
# code. These messages are only generated by a DEBUG build of
|
|
71
|
+
# WxRuby. Such messages usually indicate that the API is being used
|
|
72
|
+
# incorrectly; the file/line reference points to the place in the
|
|
73
|
+
# WxWidgets source code where the assertion was made.
|
|
74
|
+
define_method(:on_assert_failure) do | file, line, func, condition, message |
|
|
75
|
+
warn "Wx WARNING: #{message} (#{func}@#{file}:#{line})"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# For use in development only, of no practical use in production code.
|
|
79
|
+
# This method causes Ruby's garbage collection to run (roughly) at
|
|
80
|
+
# interval +interval+ (seconds) - the default is 1, i.e. every
|
|
81
|
+
# second. This should help ferret out bugs in memory management more
|
|
82
|
+
# quickly.
|
|
83
|
+
def gc_stress(interval = 1)
|
|
84
|
+
t = Wx::Timer.new(self, 9999)
|
|
85
|
+
evt_timer(9999) { Thread.pass }
|
|
86
|
+
Thread.new { loop { sleep interval; GC.start } }
|
|
87
|
+
t.start(100)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Class which can supply icons and bitmaps
|
|
2
|
+
class Wx::ArtProvider
|
|
3
|
+
# Keep a note of supplied ArtProviders to prevent them being GC'd
|
|
4
|
+
@__art_provs = []
|
|
5
|
+
|
|
6
|
+
class << self
|
|
7
|
+
wx_push_back = instance_method(:push_back)
|
|
8
|
+
define_method(:push_back) do | art_prov |
|
|
9
|
+
wx_push_back.bind(self).call(art_prov)
|
|
10
|
+
@__art_provs.unshift(art_prov)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
wx_pop = instance_method(:pop)
|
|
14
|
+
define_method(:pop) do
|
|
15
|
+
wx_pop.bind(self).call
|
|
16
|
+
@__art_provs.pop
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
wx_push = instance_method(:push)
|
|
20
|
+
define_method(:push) do | art_prov |
|
|
21
|
+
wx_push.bind(self).call(art_prov)
|
|
22
|
+
@__art_provs.push(art_prov)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
wx_delete = instance_method(:delete)
|
|
26
|
+
define_method(:delete) do | art_prov |
|
|
27
|
+
wx_push.bind(self).call(art_prov)
|
|
28
|
+
@__art_provs.delete(art_prov)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# A platform-dependent image that can be drawn on the screen
|
|
2
|
+
class Wx::Bitmap
|
|
3
|
+
# Allow wxRuby to guess the type of an image file from its extension.
|
|
4
|
+
BITMAP_TYPE_GUESS = {
|
|
5
|
+
'bmp' => Wx::BitmapType::BITMAP_TYPE_BMP,
|
|
6
|
+
'gif' => Wx::BitmapType::BITMAP_TYPE_GIF,
|
|
7
|
+
'ico' => Wx::BitmapType::BITMAP_TYPE_ICO,
|
|
8
|
+
'jpeg' => Wx::BitmapType::BITMAP_TYPE_JPEG,
|
|
9
|
+
'jpg' => Wx::BitmapType::BITMAP_TYPE_JPEG,
|
|
10
|
+
'pbm' => Wx::BitmapType::BITMAP_TYPE_PNM,
|
|
11
|
+
'pcx' => Wx::BitmapType::BITMAP_TYPE_PCX,
|
|
12
|
+
'pgm' => Wx::BitmapType::BITMAP_TYPE_PNM,
|
|
13
|
+
'png' => Wx::BitmapType::BITMAP_TYPE_PNG,
|
|
14
|
+
'pnm' => Wx::BitmapType::BITMAP_TYPE_PNM,
|
|
15
|
+
'ppm' => Wx::BitmapType::BITMAP_TYPE_PNM,
|
|
16
|
+
'tga' => Wx::BitmapType::BITMAP_TYPE_TGA,
|
|
17
|
+
'tif' => Wx::BitmapType::BITMAP_TYPE_TIF,
|
|
18
|
+
'tiff' => Wx::BitmapType::BITMAP_TYPE_TIF,
|
|
19
|
+
'xbm' => Wx::BitmapType::BITMAP_TYPE_XBM,
|
|
20
|
+
'xpm' => Wx::BitmapType::BITMAP_TYPE_XPM
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
# Constructor copying data from an image
|
|
24
|
+
def self.from_image(img, depth = -1)
|
|
25
|
+
new(img, depth)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Ruby methods that switch class are conventionally named to_foo
|
|
29
|
+
alias :to_image :convert_to_image
|
|
30
|
+
|
|
31
|
+
# Redefine the initialize method so it raises an exception if a
|
|
32
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
|
33
|
+
# just carries on with an empty bitmap, which may cause faults
|
|
34
|
+
# later. Also, be helpful and try to guess the bitmap type from the
|
|
35
|
+
# filename if it's not specified
|
|
36
|
+
wx_init = self.instance_method(:initialize)
|
|
37
|
+
define_method(:initialize) do | *args |
|
|
38
|
+
# If creating from a file, check it exists
|
|
39
|
+
if args[0].kind_of? String
|
|
40
|
+
if not File.exist?( File.expand_path(args[0]) )
|
|
41
|
+
Kernel.raise(ArgumentError, "Bitmap file does not exist: #{args[0]}")
|
|
42
|
+
end
|
|
43
|
+
# If type not specified, try to guess it from the file extension
|
|
44
|
+
if not args[1] and file_ext = args[0][/\w+$/]
|
|
45
|
+
args[1] = BITMAP_TYPE_GUESS[file_ext.downcase]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
wx_init.bind(self).call(*args)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Accepts a block, which will be passed a device context which can be
|
|
52
|
+
# used to draw upon the Bitmap
|
|
53
|
+
def draw
|
|
54
|
+
dc = Wx::MemoryDC.new
|
|
55
|
+
dc.select_object(self)
|
|
56
|
+
yield dc
|
|
57
|
+
dc.select_object( Wx::NULL_BITMAP )
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Emulates the wxWidgets BusyCursor class, by providing a scope within
|
|
2
|
+
# which a busy cursor will be shown
|
|
3
|
+
class Wx::BusyCursor
|
|
4
|
+
# Only one class method, optionally accepting a cursor that should be
|
|
5
|
+
# shown, defaulting to an hour glass cursor.
|
|
6
|
+
def self.busy(cursor = Wx::HOURGLASS_CURSOR)
|
|
7
|
+
Wx::begin_busy_cursor(cursor)
|
|
8
|
+
yield
|
|
9
|
+
ensure
|
|
10
|
+
Wx::end_busy_cursor
|
|
11
|
+
end
|
|
12
|
+
end
|