wxruby3 0.9.1 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxRubyApp.h +338 -0
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
- data/ext/wxruby3/include/wxruby-Config.h +6 -6
- data/ext/wxruby3/include/wxruby-Validator.h +39 -0
- data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
- data/ext/wxruby3/swig/common.i +1 -1
- data/ext/wxruby3/swig/custom/director.swg +8 -0
- data/ext/wxruby3/swig/mark_free_impl.i +0 -33
- data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
- data/lib/wx/aui/auinotebook.rb +6 -2
- data/lib/wx/aui/require.rb +1 -0
- data/lib/wx/core/app.rb +2 -2
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/collapsible_pane.rb +1 -1
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/controlwithitems.rb +40 -128
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/event.rb +6 -1
- data/lib/wx/core/evthandler.rb +8 -2
- data/lib/wx/core/generic_validator.rb +312 -0
- data/lib/wx/core/listbox.rb +2 -2
- data/lib/wx/core/log.rb +1 -1
- data/lib/wx/core/menu.rb +10 -0
- data/lib/wx/core/notebook.rb +6 -2
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +12 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/task_bar_button.rb +19 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/textctrl.rb +11 -1
- data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +13 -7
- data/lib/wx/doc/app.rb +48 -38
- data/lib/wx/doc/art_locator.rb +48 -43
- data/lib/wx/doc/aui/auimanager.rb +16 -8
- data/lib/wx/doc/aui/auinotebook.rb +20 -5
- data/lib/wx/doc/clipboard.rb +11 -7
- data/lib/wx/doc/colour_dialog.rb +14 -10
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/controlwithitems.rb +34 -8
- data/lib/wx/doc/data_object.rb +2 -2
- data/lib/wx/doc/date_picker_ctrl.rb +23 -0
- data/lib/wx/doc/editable_listbox.rb +44 -0
- data/lib/wx/doc/enum.rb +15 -0
- data/lib/wx/doc/event.rb +12 -0
- data/lib/wx/doc/evthandler.rb +113 -108
- data/lib/wx/doc/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/font.rb +1 -0
- data/lib/wx/doc/gc_dc.rb +6 -1
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/graphics_context.rb +1 -0
- data/lib/wx/doc/grid/grid.rb +22 -1
- data/lib/wx/doc/help_controller.rb +11 -7
- data/lib/wx/doc/html/html_help_controller.rb +12 -4
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/list_ctrl.rb +33 -29
- data/lib/wx/doc/menu.rb +20 -0
- data/lib/wx/doc/notebook.rb +21 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/pg/events.rb +13 -9
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/pg/pg_property.rb +18 -0
- data/lib/wx/doc/progress_dialog.rb +36 -32
- data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
- data/lib/wx/doc/prt/print_data.rb +13 -5
- data/lib/wx/doc/prt/print_dialog.rb +31 -23
- data/lib/wx/doc/prt/printer.rb +20 -12
- data/lib/wx/doc/radio_box.rb +19 -15
- data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
- data/lib/wx/doc/region_iterator.rb +32 -28
- data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
- data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
- data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
- data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
- data/lib/wx/doc/sizer.rb +20 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
- data/lib/wx/doc/stream.rb +39 -35
- data/lib/wx/doc/system_settings.rb +30 -26
- data/lib/wx/doc/text_validator.rb +23 -9
- data/lib/wx/doc/textctrl.rb +16 -0
- data/lib/wx/doc/tree_ctrl.rb +95 -0
- data/lib/wx/doc/treebook.rb +9 -5
- data/lib/wx/doc/v_list_box.rb +9 -5
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/variant.rb +164 -160
- data/lib/wx/doc/window.rb +87 -47
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/pg/pg_property.rb +22 -0
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/rtc/require.rb +3 -0
- data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
- data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
- data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
- data/lib/wx/stc/require.rb +1 -0
- data/lib/wx/stc/styled_text_ctrl.rb +25 -0
- data/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/linux.rb +0 -3
- data/rakelib/lib/config/macosx.rb +2 -2
- data/rakelib/lib/config/mingw.rb +13 -1
- data/rakelib/lib/config/unixish.rb +1 -1
- data/rakelib/lib/config.rb +14 -4
- data/rakelib/lib/core/include/client_data.inc +65 -0
- data/rakelib/lib/core/include/funcall.inc +1 -1
- data/rakelib/lib/core/package.rb +31 -9
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec.rb +6 -1
- data/rakelib/lib/core/spec_helper.rb +7 -1
- data/rakelib/lib/director/accelerator.rb +2 -3
- data/rakelib/lib/director/accessible.rb +47 -0
- data/rakelib/lib/director/app.rb +30 -319
- data/rakelib/lib/director/app_traits.rb +13 -13
- data/rakelib/lib/director/bitmap_combobox.rb +2 -2
- data/rakelib/lib/director/combobox.rb +22 -0
- data/rakelib/lib/director/comboctrl.rb +1 -55
- data/rakelib/lib/director/ctrl_with_items.rb +105 -26
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
- data/rakelib/lib/director/derived_dc.rb +1 -1
- data/rakelib/lib/director/dialog.rb +1 -0
- data/rakelib/lib/director/drag_image.rb +2 -3
- data/rakelib/lib/director/editable_listbox.rb +30 -0
- data/rakelib/lib/director/event.rb +104 -14
- data/rakelib/lib/director/event_handler.rb +3 -2
- data/rakelib/lib/director/frame.rb +1 -3
- data/rakelib/lib/director/functions.rb +4 -2
- data/rakelib/lib/director/gdicommon.rb +8 -10
- data/rakelib/lib/director/generic_dirctrl.rb +17 -0
- data/rakelib/lib/director/graphics_context.rb +2 -4
- data/rakelib/lib/director/grid_cell_attr.rb +0 -2
- data/rakelib/lib/director/grid_cell_editor.rb +0 -2
- data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
- data/rakelib/lib/director/grid_ctrl.rb +34 -3
- data/rakelib/lib/director/header_ctrl.rb +6 -1
- data/rakelib/lib/director/html_listbox.rb +96 -22
- data/rakelib/lib/director/icon.rb +5 -2
- data/rakelib/lib/director/list_ctrl.rb +5 -6
- data/rakelib/lib/director/locale.rb +1 -3
- data/rakelib/lib/director/log.rb +1 -4
- data/rakelib/lib/director/media_ctrl.rb +54 -0
- data/rakelib/lib/director/menu.rb +16 -1
- data/rakelib/lib/director/menu_item.rb +2 -2
- data/rakelib/lib/director/num_validator.rb +495 -0
- data/rakelib/lib/director/numeric_property_validator.rb +131 -6
- data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
- data/rakelib/lib/director/pgproperties.rb +1 -1
- data/rakelib/lib/director/pgproperty.rb +27 -30
- data/rakelib/lib/director/property_grid_interface.rb +5 -10
- data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
- data/rakelib/lib/director/ribbon_gallery.rb +3 -5
- data/rakelib/lib/director/richtext_composite_object.rb +25 -0
- data/rakelib/lib/director/richtext_ctrl.rb +14 -4
- data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
- data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
- data/rakelib/lib/director/sizer.rb +30 -4
- data/rakelib/lib/director/sizer_item.rb +13 -0
- data/rakelib/lib/director/static_bitmap.rb +28 -0
- data/rakelib/lib/director/static_box.rb +4 -5
- data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
- data/rakelib/lib/director/task_bar_button.rb +30 -0
- data/rakelib/lib/director/task_bar_icon.rb +5 -13
- data/rakelib/lib/director/text_entry.rb +4 -0
- data/rakelib/lib/director/text_validator.rb +124 -13
- data/rakelib/lib/director/textctrl.rb +12 -1
- data/rakelib/lib/director/toggle_button.rb +1 -0
- data/rakelib/lib/director/tool_tip.rb +1 -1
- data/rakelib/lib/director/top_level_window.rb +4 -7
- data/rakelib/lib/director/tree_ctrl.rb +40 -6
- data/rakelib/lib/director/utils.rb +16 -2
- data/rakelib/lib/director/validator.rb +196 -21
- data/rakelib/lib/director/variant.rb +1 -1
- data/rakelib/lib/director/window.rb +40 -7
- data/rakelib/lib/director.rb +4 -4
- data/rakelib/lib/extractor/function.rb +8 -7
- data/rakelib/lib/extractor.rb +34 -5
- data/rakelib/lib/generate/analyzer.rb +9 -4
- data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
- data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
- data/rakelib/lib/generate/doc/cursor.yaml +0 -2
- data/rakelib/lib/generate/doc/panel.yaml +7 -0
- data/rakelib/lib/generate/doc.rb +85 -17
- data/rakelib/lib/specs/interfaces.rb +163 -160
- data/rakelib/lib/swig_runner.rb +55 -9
- data/rakelib/lib/typemap/client_data.rb +67 -0
- data/rakelib/lib/typemap/common.rb +33 -4
- data/rakelib/lib/typemap/datetime.rb +1 -1
- data/rakelib/lib/typemap/tree_itemid.rb +2 -2
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
- data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
- data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
- data/rakelib/yard/templates/default/tags/setup.rb +16 -0
- data/rakelib/yard/yard-custom-templates.rb +3 -0
- data/samples/aui/aui.rb +1237 -1233
- data/samples/calendar/calendar.rb +293 -289
- data/samples/controls/get_item_sample.rb +83 -79
- data/samples/controls/htlbox.rb +331 -327
- data/samples/dialogs/dialogs.rb +682 -694
- data/samples/dialogs/wizard.rb +52 -55
- data/samples/dragdrop/dragdrop.rb +146 -142
- data/samples/drawing/bitmap.rb +29 -26
- data/samples/drawing/bitmap_image.rb +84 -80
- data/samples/drawing/graphics_drawing.rb +209 -205
- data/samples/drawing/image_prt.rb +344 -340
- data/samples/drawing/maths_images.rb +18 -1
- data/samples/drawing/rmagic_bitmap_image.rb +88 -84
- data/samples/etc/caret.rb +306 -0
- data/samples/etc/miniframe.rb +65 -60
- data/samples/etc/sash.rb +109 -105
- data/samples/etc/scrollwin.rb +86 -80
- data/samples/etc/system_settings.rb +216 -209
- data/samples/event/activation.rb +72 -67
- data/samples/event/event.rb +160 -153
- data/samples/event/threaded.rb +8 -1
- data/samples/event/update_ui_event.rb +67 -60
- data/samples/grid/grid.rb +188 -181
- data/samples/grid/gridtablebase.rb +136 -129
- data/samples/html/html.rb +208 -204
- data/samples/mdi/mdi.rb +59 -54
- data/samples/minimal/minimal.rb +54 -51
- data/samples/minimal/nothing.rb +1 -0
- data/samples/printing/printing.rb +367 -377
- data/samples/printing/printing2.rb +203 -198
- data/samples/propgrid/propgrid.rb +2312 -2308
- data/samples/propgrid/propgrid_minimal.rb +57 -50
- data/samples/ribbon/ribbon.rb +780 -774
- data/samples/sampler/ext.rb +0 -33
- data/samples/sampler/sample.rb +4 -9
- data/samples/sampler.rb +1 -1
- data/samples/splash/splash.rb +118 -116
- data/samples/text/rich_textctrl.rb +207 -201
- data/samples/text/richtext.rb +1409 -1405
- data/samples/text/scintilla.rb +137 -128
- data/samples/text/textctrl.rb +89 -83
- data/samples/text/unicode.rb +175 -168
- data/samples/treectrl/treectrl.rb +1430 -1426
- data/samples/widgets/activityindicator.rb +95 -0
- data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
- data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
- data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/button.xpm +54 -0
- data/samples/widgets/art/widgets/checkbox.xpm +54 -0
- data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
- data/samples/widgets/art/widgets/choicebk.xpm +54 -0
- data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
- data/samples/widgets/art/widgets/combobox.xpm +54 -0
- data/samples/widgets/art/widgets/datepick.xpm +200 -0
- data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
- data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
- data/samples/widgets/art/widgets/filepicker.xpm +214 -0
- data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
- data/samples/widgets/art/widgets/gauge.xpm +54 -0
- data/samples/widgets/art/widgets/header.xpm +54 -0
- data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
- data/samples/widgets/art/widgets/listbook.xpm +54 -0
- data/samples/widgets/art/widgets/listbox.xpm +54 -0
- data/samples/widgets/art/widgets/native.xpm +81 -0
- data/samples/widgets/art/widgets/notebook.xpm +54 -0
- data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/radiobox.xpm +54 -0
- data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
- data/samples/widgets/art/widgets/slider.xpm +54 -0
- data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
- data/samples/widgets/art/widgets/statbmp.xpm +40 -0
- data/samples/widgets/art/widgets/statbox.xpm +54 -0
- data/samples/widgets/art/widgets/stattext.xpm +54 -0
- data/samples/widgets/art/widgets/text.xpm +54 -0
- data/samples/widgets/art/widgets/timepick.xpm +207 -0
- data/samples/widgets/art/widgets/toggle.xpm +54 -0
- data/samples/widgets/art/widgets/toucan.png +0 -0
- data/samples/widgets/bmpcombobox.rb +651 -0
- data/samples/widgets/button.rb +462 -0
- data/samples/widgets/checkbox.rb +211 -0
- data/samples/widgets/choice.rb +287 -0
- data/samples/widgets/clrpicker.rb +156 -0
- data/samples/widgets/combobox.rb +516 -0
- data/samples/widgets/datepick.rb +215 -0
- data/samples/widgets/dirctrl.rb +265 -0
- data/samples/widgets/dirpicker.rb +158 -0
- data/samples/widgets/editlbox.rb +122 -0
- data/samples/widgets/filectrl.rb +216 -0
- data/samples/widgets/filepicker.rb +214 -0
- data/samples/widgets/fontpicker.rb +135 -0
- data/samples/widgets/gauge.rb +311 -0
- data/samples/widgets/headerctrl.rb +236 -0
- data/samples/widgets/hyperlink.rb +203 -0
- data/samples/widgets/itemcontainer.rb +185 -0
- data/samples/widgets/listbox.rb +473 -0
- data/samples/widgets/notebook.rb +488 -0
- data/samples/widgets/odcombobox.rb +608 -0
- data/samples/widgets/radiobox.rb +328 -0
- data/samples/widgets/searchctrl.rb +159 -0
- data/samples/widgets/slider.rb +594 -0
- data/samples/widgets/spinbtn.rb +443 -0
- data/samples/widgets/statbmp.rb +130 -0
- data/samples/widgets/static.rb +436 -0
- data/samples/widgets/textctrl.rb +700 -0
- data/samples/widgets/timepick.rb +148 -0
- data/samples/widgets/tn_widgets.png +0 -0
- data/samples/widgets/toggle.rb +385 -0
- data/samples/widgets/widgets.rb +1233 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/media/beep_lo.wav +0 -0
- data/tests/test_event_handling.rb +52 -34
- data/tests/test_events.rb +7 -0
- data/tests/test_item_data.rb +24 -0
- data/tests/test_list_ctrl.rb +1 -1
- data/tests/test_media_ctrl.rb +38 -0
- data/tests/test_menu.rb +69 -0
- data/tests/test_pg.rb +27 -0
- data/tests/test_richtext.rb +45 -0
- data/tests/test_sizer.rb +59 -0
- data/tests/test_std_controls.rb +42 -1
- data/tests/test_styled_text_ctrl.rb +46 -0
- data/tests/test_tree_ctrl.rb +138 -0
- data/tests/test_validators.rb +805 -0
- data/tests/test_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +121 -139
- data/lib/wx/core/choice.rb +0 -14
- data/lib/wx/core/combo_ctrl.rb +0 -110
- data/rakelib/lib/typemap/grid_client_data.rb +0 -58
- data/samples/bigdemo/About.rbw +0 -39
- data/samples/bigdemo/ColorPanel.rbw +0 -23
- data/samples/bigdemo/GridSimple.rbw +0 -78
- data/samples/bigdemo/MDIDemo.rbw +0 -57
- data/samples/bigdemo/PopupMenu.rbw +0 -146
- data/samples/bigdemo/ShapedWindow.rbw +0 -128
- data/samples/bigdemo/Sizers.rbw +0 -541
- data/samples/bigdemo/bigdemo.rb +0 -817
- data/samples/bigdemo/demoTemplate.rbw +0 -33
- 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/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +0 -27
- data/samples/bigdemo/icons/copy.xpm +0 -25
- data/samples/bigdemo/icons/cut.xpm +0 -24
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +0 -27
- data/samples/bigdemo/icons/help.xpm +0 -25
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +0 -27
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +0 -44
- data/samples/bigdemo/icons/new.xpm +0 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +0 -45
- data/samples/bigdemo/icons/open.xpm +0 -26
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +0 -38
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +0 -26
- data/samples/bigdemo/icons/print.xpm +0 -26
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +0 -27
- data/samples/bigdemo/icons/robert.xpm +0 -415
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +0 -25
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +0 -39
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +0 -42
- data/samples/bigdemo/icons/stattext.xpm +0 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +0 -79
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +0 -27
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +0 -38
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +0 -38
- 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 +0 -25
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +0 -98
- data/samples/bigdemo/tips.txt +0 -7
- data/samples/bigdemo/utils.rb +0 -20
- data/samples/bigdemo/wxArtProvider.rbw +0 -282
- data/samples/bigdemo/wxBitmapButton.rbw +0 -65
- data/samples/bigdemo/wxButton.rbw +0 -64
- data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
- data/samples/bigdemo/wxCheckBox.rbw +0 -50
- data/samples/bigdemo/wxCheckListBox.rbw +0 -65
- data/samples/bigdemo/wxChoice.rbw +0 -47
- data/samples/bigdemo/wxChoicebook.rbw +0 -78
- data/samples/bigdemo/wxColourDialog.rbw +0 -33
- data/samples/bigdemo/wxComboBox.rbw +0 -77
- data/samples/bigdemo/wxCursor.rbw +0 -136
- data/samples/bigdemo/wxDialog.rbw +0 -74
- data/samples/bigdemo/wxDirDialog.rbw +0 -29
- data/samples/bigdemo/wxDragImage.rbw +0 -70
- data/samples/bigdemo/wxFileDialog.rbw +0 -37
- data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
- data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
- data/samples/bigdemo/wxFontDialog.rbw +0 -200
- data/samples/bigdemo/wxFrame.rbw +0 -53
- data/samples/bigdemo/wxGauge.rbw +0 -65
- data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
- data/samples/bigdemo/wxGrid.rbw +0 -66
- data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
- data/samples/bigdemo/wxListBox.rbw +0 -140
- data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
- data/samples/bigdemo/wxMDIWindows.rbw +0 -50
- data/samples/bigdemo/wxMenu.rbw +0 -247
- data/samples/bigdemo/wxMessageDialog.rbw +0 -27
- data/samples/bigdemo/wxMiniFrame.rbw +0 -70
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
- data/samples/bigdemo/wxNotebook.rbw +0 -136
- data/samples/bigdemo/wxProgressDialog.rbw +0 -43
- data/samples/bigdemo/wxRadioBox.rbw +0 -72
- data/samples/bigdemo/wxRadioButton.rbw +0 -125
- data/samples/bigdemo/wxSashWindow.rbw +0 -141
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
- data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
- data/samples/bigdemo/wxSlider.rbw +0 -42
- data/samples/bigdemo/wxSpinButton.rbw +0 -50
- data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
- data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
- data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
- data/samples/bigdemo/wxStaticText.rbw +0 -55
- data/samples/bigdemo/wxStatusBar.rbw +0 -126
- data/samples/bigdemo/wxTextCtrl.rbw +0 -149
- data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
- data/samples/bigdemo/wxToggleButton.rbw +0 -49
- data/samples/bigdemo/wxToolBar.rbw +0 -131
- data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
- data/samples/caret/caret.rb +0 -298
- data/samples/caret/mondrian.xpm +0 -44
- data/samples/controls/books.rb +0 -189
- data/samples/controls/choice.xpm +0 -27
- data/samples/controls/combo.xpm +0 -27
- data/samples/controls/controls.rb +0 -1099
- data/samples/controls/gauge.xpm +0 -27
- data/samples/controls/list.xpm +0 -27
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +0 -44
- data/samples/controls/radio.xpm +0 -27
- data/samples/controls/stattext.xpm +0 -24
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +0 -27
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/etc/choice.rb +0 -87
- data/samples/etc/tn_choice.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +0 -44
- /data/samples/{caret → etc}/tn_caret.png +0 -0
|
@@ -12,7 +12,7 @@ module WXRuby3
|
|
|
12
12
|
|
|
13
13
|
# represents a basic parameter definition
|
|
14
14
|
class ParameterBase
|
|
15
|
-
PTR_RE = /\A(
|
|
15
|
+
PTR_RE = /\A([\*&]+)\s*([_a-zA-Z]\w*)?\Z/
|
|
16
16
|
CONST_RE = /(\A|\W)const(\W|\Z)/
|
|
17
17
|
MULTI_WORD_TYPES = %w[char short int long]
|
|
18
18
|
def initialize(param)
|
data/rakelib/lib/core/spec.rb
CHANGED
|
@@ -327,7 +327,12 @@ module WXRuby3
|
|
|
327
327
|
end
|
|
328
328
|
|
|
329
329
|
def ignore(*names, ignore_doc: true)
|
|
330
|
-
names.flatten.each {|n| @ignores[n] = ignore_doc}
|
|
330
|
+
names.flatten.each { |n| @ignores[n] = {ignore: true, ignore_doc: ignore_doc} }
|
|
331
|
+
self
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
def ignore_unless(feature_set, *names)
|
|
335
|
+
names.flatten.each { |n| @ignores[n] = {ignore: feature_set} }
|
|
331
336
|
self
|
|
332
337
|
end
|
|
333
338
|
|
|
@@ -382,7 +382,13 @@ module WXRuby3
|
|
|
382
382
|
|
|
383
383
|
def interface_code
|
|
384
384
|
if ifspec.interface_code && !ifspec.interface_code.empty?
|
|
385
|
-
|
|
385
|
+
if warn_filters.empty?
|
|
386
|
+
''
|
|
387
|
+
else
|
|
388
|
+
"\n" + warn_filters.collect do |warn, decls|
|
|
389
|
+
decls.collect { |decl| "%warnfilter(#{warn}) #{decl};" }
|
|
390
|
+
end.flatten.join("\n")
|
|
391
|
+
end + ifspec.interface_code.join("\n")
|
|
386
392
|
else
|
|
387
393
|
%Q{%include "#{interface_include}"\n}
|
|
388
394
|
end
|
|
@@ -47,9 +47,8 @@ module WXRuby3
|
|
|
47
47
|
(TYPE($input) == T_STRING && RSTRING_LEN($input) == 1) );
|
|
48
48
|
__CODE
|
|
49
49
|
end
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
end
|
|
50
|
+
spec.ignore_unless('WXMSW',
|
|
51
|
+
'wxAcceleratorTable::wxAcceleratorTable(const wxString &)')
|
|
53
52
|
spec.add_swig_code <<~__HEREDOC
|
|
54
53
|
%warnfilter(509) wxAcceleratorTable::wxAcceleratorTable;
|
|
55
54
|
__HEREDOC
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
#
|
|
3
|
+
# This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
###
|
|
6
|
+
# wxRuby3 wxWidgets interface director
|
|
7
|
+
###
|
|
8
|
+
|
|
9
|
+
module WXRuby3
|
|
10
|
+
|
|
11
|
+
class Director
|
|
12
|
+
|
|
13
|
+
class Accessible < Director
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
spec.make_abstract 'wxAccessible'
|
|
18
|
+
spec.map 'wxAccessible**' => 'Wx::Accessible' do
|
|
19
|
+
map_in ignore: true, temp: 'wxAccessible* tmp', code: '$1 = &tmp;'
|
|
20
|
+
map_argout code: <<~__HEREDOC
|
|
21
|
+
if (tmp$argnum)
|
|
22
|
+
{
|
|
23
|
+
$result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr(tmp$argnum), SWIGTYPE_p_wxAccessible, 0));
|
|
24
|
+
}
|
|
25
|
+
__HEREDOC
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
spec.map 'wxString *' => 'String' do
|
|
29
|
+
map_in ignore: true, temp: 'wxString tmp', code: '$1 = &tmp;'
|
|
30
|
+
map_argout code: '$result = SWIG_Ruby_AppendOutput($result, WXSTR_TO_RSTR(tmp$argnum));'
|
|
31
|
+
end
|
|
32
|
+
spec.map 'wxAccRole *' => 'Wx::AccRole' do
|
|
33
|
+
map_in ignore: true, temp: 'wxAccRole tmp', code: '$1 = &tmp;'
|
|
34
|
+
map_argout code: <<~__HEREDOC
|
|
35
|
+
$result = SWIG_Ruby_AppendOutput($result, wxRuby_GetEnumValueObject("AccRole", static_cast<int>(tmp$argnum)));
|
|
36
|
+
__HEREDOC
|
|
37
|
+
end
|
|
38
|
+
spec.map_apply 'int * OUTPUT' => ['int * childCount', 'int * childId', 'int * toId']
|
|
39
|
+
spec.map_apply 'long * OUTPUT' => 'long * state'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
data/rakelib/lib/director/app.rb
CHANGED
|
@@ -16,6 +16,15 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
spec.items << 'wxAppConsole' << 'wxEventFilter'
|
|
19
|
+
if Config.instance.wx_version >= '3.3.0'
|
|
20
|
+
spec.items << 'wxDarkModeSettings'
|
|
21
|
+
spec.ignore_unless('WXMSW', 'wxDarkModeSettings', 'wxMenuColour')
|
|
22
|
+
if Config.instance.features_set?('WXMSW')
|
|
23
|
+
spec.disown 'wxDarkModeSettings *settings'
|
|
24
|
+
# wxDarkModeSettings does has have virt dtor; it's just not documented
|
|
25
|
+
spec.suppress_warning(514, 'wxDarkModeSettings')
|
|
26
|
+
end
|
|
27
|
+
end
|
|
19
28
|
spec.fold_bases('wxApp' => 'wxAppConsole', 'wxAppConsole' => 'wxEventFilter')
|
|
20
29
|
spec.override_inheritance_chain('wxApp', %w[wxEvtHandler wxObject])
|
|
21
30
|
spec.ignore %w{
|
|
@@ -134,339 +143,23 @@ module WXRuby3
|
|
|
134
143
|
extern "C" void Init_wxRubyStockObjects();
|
|
135
144
|
extern void wxRuby_MarkProtectedEvtHandlerProcs();
|
|
136
145
|
|
|
137
|
-
#ifdef __WXMSW__
|
|
138
|
-
extern "C"
|
|
139
|
-
{
|
|
140
|
-
WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();
|
|
141
|
-
}
|
|
142
|
-
#endif
|
|
143
|
-
|
|
144
146
|
static wxVector<WXRBMarkFunction> WXRuby_Mark_List;
|
|
145
147
|
|
|
146
148
|
WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker)
|
|
147
149
|
{
|
|
148
150
|
WXRuby_Mark_List.push_back(marker);
|
|
149
151
|
}
|
|
150
|
-
|
|
151
|
-
class wxRubyApp : public wxApp
|
|
152
|
-
{
|
|
153
|
-
private:
|
|
154
|
-
static wxRubyApp* instance_;
|
|
155
|
-
|
|
156
|
-
bool is_running_ = false;
|
|
157
|
-
public:
|
|
158
|
-
static wxRubyApp* GetInstance () { return instance_; }
|
|
159
|
-
|
|
160
|
-
virtual ~wxRubyApp()
|
|
161
|
-
{
|
|
162
|
-
#ifdef __WXTRACE__
|
|
163
|
-
std::wcout << "~wxRubyApp" << std::endl;
|
|
164
|
-
#endif
|
|
165
|
-
// unlink
|
|
166
|
-
VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
|
|
167
|
-
if (the_app != Qnil)
|
|
168
|
-
{
|
|
169
|
-
DATA_PTR(the_app) = 0;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// special event handler for destruction of windows which is done
|
|
174
|
-
// automatically by wxWidgets. Tag the object as having been destroyed
|
|
175
|
-
// by WxWidgets.
|
|
176
|
-
void OnWindowDestroy(wxWindowDestroyEvent &event)
|
|
177
|
-
{
|
|
178
|
-
wxObject* wx_obj = event.GetEventObject();
|
|
179
|
-
#ifdef __WXRB_DEBUG__
|
|
180
|
-
if (wxRuby_TraceLevel()>0)
|
|
181
|
-
std::wcout << "<= OnWindowDestroy [" << wx_obj << "]" << std::endl;
|
|
182
|
-
#endif
|
|
183
|
-
GC_SetWindowDeleted((void *)wx_obj);
|
|
184
|
-
event.Skip();
|
|
185
|
-
#ifdef __WXRB_DEBUG__
|
|
186
|
-
if (wxRuby_TraceLevel()>0)
|
|
187
|
-
std::wcout << "=> OnWindowDestroy [" << wx_obj << "]" << std::endl;
|
|
188
|
-
#endif
|
|
189
|
-
}
|
|
190
152
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
// When ruby's garbage collection runs, if the app is still active, it
|
|
194
|
-
// cycles through all currently known SWIG objects and calls this
|
|
195
|
-
// function on each to preserve still active Wx::Windows, and also
|
|
196
|
-
// pending Wx::Events which have been queued from the Ruby side (the
|
|
197
|
-
// only sort of events that will be in the tracking hash.
|
|
198
|
-
static void markIterate(void* ptr, VALUE rb_obj)
|
|
199
|
-
{
|
|
200
|
-
// Check if it's a valid object (sometimes SWIG doesn't return what we're
|
|
201
|
-
// expecting), a descendant of Wx::Window (but not a Dialog), and if it has not yet been
|
|
202
|
-
// deleted by WxWidgets; if so, mark it.
|
|
203
|
-
if ( TYPE(rb_obj) == T_DATA )
|
|
204
|
-
{
|
|
205
|
-
if ( rb_obj_is_kind_of(rb_obj, wxRuby_GetWindowClass()) )
|
|
206
|
-
{
|
|
207
|
-
rb_gc_mark(rb_obj);
|
|
208
|
-
}
|
|
209
|
-
else if (rb_obj_is_kind_of(rb_obj, wxRuby_GetDefaultEventClass()) )
|
|
210
|
-
rb_gc_mark(rb_obj);
|
|
211
|
-
}
|
|
212
|
-
else if (TYPE(rb_obj) == T_ARRAY )
|
|
213
|
-
{
|
|
214
|
-
VALUE proc = rb_ary_entry(rb_obj, 0);
|
|
215
|
-
if (rb_obj_is_kind_of(proc, rb_cProc) || rb_obj_is_kind_of(proc, rb_cMethod))
|
|
216
|
-
{
|
|
217
|
-
// keep the async call alive
|
|
218
|
-
rb_gc_mark(rb_obj);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Implements GC protection across wxRuby. Always called because
|
|
224
|
-
// Wx::THE_APP is a constant so always checked in GC mark phase.
|
|
225
|
-
static void mark_wxRubyApp(void *ptr)
|
|
226
|
-
{
|
|
227
|
-
|
|
228
|
-
#ifdef __WXRB_DEBUG__
|
|
229
|
-
if (wxRuby_TraceLevel()>0)
|
|
230
|
-
std::wcout << "=== Starting App GC mark phase" << std::endl;
|
|
231
|
-
#endif
|
|
232
|
-
|
|
233
|
-
// If the App has ended, the ruby object will have been unlinked from
|
|
234
|
-
// the C++ one; this implies that all Windows have already been destroyed
|
|
235
|
-
// so there is no point trying to mark them, and doing so may cause
|
|
236
|
-
// errors.
|
|
237
|
-
if ( !wxRubyApp::GetInstance() || !wxRubyApp::GetInstance()->IsRunning() )
|
|
238
|
-
{
|
|
239
|
-
#ifdef __WXRB_DEBUG__
|
|
240
|
-
if (wxRuby_TraceLevel()>0)
|
|
241
|
-
std::wcout << "=== App has ended, skipping mark phase" << std::endl;
|
|
242
|
-
#endif
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// Mark any active (tracked) log target
|
|
247
|
-
wxLog* curLog = wxLog::GetActiveTarget();
|
|
248
|
-
VALUE rb_cur_log = wxRuby_FindTracking(curLog);
|
|
249
|
-
if (!NIL_P(rb_cur_log))
|
|
250
|
-
{
|
|
251
|
-
rb_gc_mark(rb_cur_log);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// Mark evt handler procs associated with live windows - see
|
|
255
|
-
// classes/EvtHandler.i
|
|
256
|
-
wxRuby_MarkProtectedEvtHandlerProcs();
|
|
257
|
-
|
|
258
|
-
// run registered markers
|
|
259
|
-
for (wxVector<WXRBMarkFunction>::iterator it = WXRuby_Mark_List.begin();
|
|
260
|
-
it != WXRuby_Mark_List.end() ;++it)
|
|
261
|
-
{
|
|
262
|
-
(*it) ();
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// To do the main marking, primarily of Windows, iterate over SWIG's
|
|
266
|
-
// list of tracked objects
|
|
267
|
-
wxRuby_IterateTracking(&wxRubyApp::markIterate);
|
|
268
|
-
|
|
269
|
-
#ifdef __WXRB_DEBUG__
|
|
270
|
-
if (wxRuby_TraceLevel()>0)
|
|
271
|
-
std::wcout << "=== App GC mark phase completed" << std::endl;
|
|
272
|
-
#endif
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
// This is the method run when main_loop is called in Ruby
|
|
276
|
-
// wxEntry calls the C++ App::OnInit method
|
|
277
|
-
int main_loop()
|
|
278
|
-
{
|
|
279
|
-
VALUE rb_app = SWIG_RubyInstanceFor(this);
|
|
280
|
-
rb_define_const(#{spec.package.module_variable}, "THE_APP", rb_app);
|
|
281
|
-
this->Connect(wxEVT_DESTROY,
|
|
282
|
-
wxWindowDestroyEventHandler(wxRubyApp::OnWindowDestroy));
|
|
283
|
-
|
|
284
|
-
#ifdef __WXRB_DEBUG__
|
|
285
|
-
if (wxRuby_TraceLevel()>0)
|
|
286
|
-
std::wcout << "Calling wxEntry, this=" << this << std::endl;
|
|
287
|
-
#endif
|
|
288
|
-
|
|
289
|
-
#ifdef __WXMSW__
|
|
290
|
-
extern int wxEntry(HINSTANCE hInstance,
|
|
291
|
-
HINSTANCE WXUNUSED(hPrevInstance),
|
|
292
|
-
wxCmdLineArgType WXUNUSED(pCmdLine),
|
|
293
|
-
int nCmdShow);
|
|
294
|
-
wxEntry(wxGetInstance(),
|
|
295
|
-
(HINSTANCE)0,
|
|
296
|
-
(wxCmdLineArgType)"",
|
|
297
|
-
(int)true);
|
|
298
|
-
#else
|
|
299
|
-
int argc = 1;
|
|
300
|
-
const char* argv[2] = { "ruby", 0 };
|
|
301
|
-
wxEntry(argc, const_cast<char**>(&argv[0]));
|
|
302
|
-
#endif
|
|
303
|
-
|
|
304
|
-
rb_const_remove(#{spec.package.module_variable}, rb_intern("THE_APP"));
|
|
305
|
-
|
|
306
|
-
#ifdef __WXRB_DEBUG__
|
|
307
|
-
if (wxRuby_TraceLevel()>0)
|
|
308
|
-
std::wcout << "returned from wxEntry..." << std::endl;
|
|
309
|
-
#endif
|
|
310
|
-
rb_gc_start();
|
|
311
|
-
#ifdef __WXRB_DEBUG__
|
|
312
|
-
if (wxRuby_TraceLevel()>0)
|
|
313
|
-
std::wcout << "survived gc" << std::endl;
|
|
314
|
-
#endif
|
|
315
|
-
|
|
316
|
-
VALUE exc = rb_iv_get(rb_app, "@exception");
|
|
317
|
-
if (!NIL_P(exc))
|
|
318
|
-
{
|
|
319
|
-
rb_exc_raise(exc);
|
|
320
|
-
}
|
|
321
|
-
return 0;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// This method initializes the stock objects (Pens, Brushes, Fonts)
|
|
325
|
-
// before yielding to ruby by calling the App's on_init method.
|
|
326
|
-
// Note that as of wxWidget 2.8, the stock fonts in particular cannot
|
|
327
|
-
// be initialized any earlier than this without crashing
|
|
328
|
-
bool OnInit() override
|
|
329
|
-
{
|
|
330
|
-
#ifdef __WXRB_DEBUG__
|
|
331
|
-
if (wxRuby_TraceLevel()>0)
|
|
332
|
-
std::wcout << "OnInit..." << std::endl;
|
|
333
|
-
#endif
|
|
334
|
-
// set standard App name
|
|
335
|
-
this->SetAppName(wxString("wxruby"));
|
|
336
|
-
// Signal that we've started
|
|
337
|
-
wxRubyApp::instance_ = this; // there should ALWAYS EVER be only 1 app instance running/created
|
|
338
|
-
this->is_running_ = true;
|
|
339
|
-
// Set up the GDI objects
|
|
340
|
-
Init_wxRubyStockObjects();
|
|
341
|
-
// Get the ruby representation of the App object, and call the
|
|
342
|
-
// ruby on_init method to set up the initial window state
|
|
343
|
-
VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
|
|
344
|
-
bool ex_caught = false;
|
|
345
|
-
VALUE result = wxRuby_Funcall(ex_caught, the_app, rb_intern("on_ruby_init"), 0, 0);
|
|
346
|
-
|
|
347
|
-
if (ex_caught)
|
|
348
|
-
{
|
|
349
|
-
#ifdef __WXRB_DEBUG__
|
|
350
|
-
wxRuby_PrintException(result);
|
|
351
|
-
#endif
|
|
352
|
-
rb_iv_set(the_app, "@exception", result);
|
|
353
|
-
result = Qfalse; // exit app
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// If on_init return any (ruby) true value, signal to wxWidgets to
|
|
357
|
-
// enter the main event loop by returning true, else return false
|
|
358
|
-
// which will make wxWidgets exit.
|
|
359
|
-
if ( result == Qfalse || result == Qnil )
|
|
360
|
-
{
|
|
361
|
-
wxRubyApp::instance_ = 0;
|
|
362
|
-
this->is_running_ = false;
|
|
363
|
-
return false;
|
|
364
|
-
}
|
|
365
|
-
else
|
|
366
|
-
{
|
|
367
|
-
return true;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
int OnExit() override
|
|
372
|
-
{
|
|
373
|
-
#ifdef __WXRB_DEBUG__
|
|
374
|
-
if (wxRuby_TraceLevel()>0)
|
|
375
|
-
std::wcout << "OnExit..." << std::endl;
|
|
376
|
-
#endif
|
|
377
|
-
|
|
378
|
-
// Get the ruby representation of the App object, and call the
|
|
379
|
-
// ruby on_exit method (if any) for application level cleanup
|
|
380
|
-
VALUE the_app = rb_const_get(#{spec.package.module_variable}, rb_intern("THE_APP"));
|
|
381
|
-
ID on_exit_id = rb_intern("on_exit");
|
|
382
|
-
if (rb_funcall(the_app, rb_intern("respond_to?"), 1, ID2SYM(on_exit_id)) == Qtrue)
|
|
383
|
-
{
|
|
384
|
-
bool ex_caught = false;
|
|
385
|
-
VALUE rc = wxRuby_Funcall(ex_caught, the_app, on_exit_id, 0, 0);
|
|
386
|
-
if (ex_caught)
|
|
387
|
-
{
|
|
388
|
-
#ifdef __WXRB_DEBUG__
|
|
389
|
-
wxRuby_PrintException(rc);
|
|
390
|
-
#endif
|
|
391
|
-
rb_iv_set(the_app, "@exception", rc);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// perform wxRuby cleanup
|
|
396
|
-
_wxRuby_Cleanup();
|
|
397
|
-
|
|
398
|
-
// execute base wxWidgets functionality
|
|
399
|
-
return this->wxApp::OnExit();
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
// actually implemented in ruby in classes/app.rb
|
|
403
|
-
virtual void OnAssertFailure(const wxChar *file, int line, const wxChar *func, const wxChar *cond, const wxChar *msg) override
|
|
404
|
-
{
|
|
405
|
-
VALUE rb_app = SWIG_RubyInstanceFor(this);
|
|
406
|
-
if (rb_during_gc() || NIL_P(rb_app))
|
|
407
|
-
{
|
|
408
|
-
std::wcout << file << "(" << line << "): ASSERT " << cond
|
|
409
|
-
<< (NIL_P(rb_app) ? " fired without THE_APP in " : " fired during GC phase in ")
|
|
410
|
-
<< func << "() with message [" << msg << "]" << std::endl;
|
|
411
|
-
}
|
|
412
|
-
else
|
|
413
|
-
{
|
|
414
|
-
VALUE obj0 = Qnil ;
|
|
415
|
-
VALUE obj1 = Qnil ;
|
|
416
|
-
VALUE obj2 = Qnil ;
|
|
417
|
-
VALUE obj3 = Qnil ;
|
|
418
|
-
VALUE obj4 = Qnil ;
|
|
419
|
-
|
|
420
|
-
obj0 = rb_str_new2((const char *)wxString(file).utf8_str());
|
|
421
|
-
obj1 = INT2NUM(line);
|
|
422
|
-
obj2 = rb_str_new2((const char *)wxString(func).utf8_str());
|
|
423
|
-
obj3 = rb_str_new2((const char *)wxString(cond).utf8_str());
|
|
424
|
-
obj4 = rb_str_new2((const char *)wxString(msg).utf8_str());
|
|
425
|
-
(void)wxRuby_Funcall(rb_app, rb_intern("on_assert_failure"), 5,obj0,obj1,obj2,obj3,obj4);
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
void _wxRuby_Cleanup()
|
|
430
|
-
{
|
|
431
|
-
#ifdef __WXRB_DEBUG__
|
|
432
|
-
if (wxRuby_TraceLevel()>0)
|
|
433
|
-
std::wcout << "wxRuby_Cleanup..." << std::endl;
|
|
434
|
-
#endif
|
|
435
|
-
// Note in a global variable that the App has ended, so that we
|
|
436
|
-
// can skip any GC marking later
|
|
437
|
-
wxRubyApp::instance_ = 0;
|
|
438
|
-
this->is_running_ = false;
|
|
439
|
-
|
|
440
|
-
// if a Ruby implemented logger has been installed clean that up
|
|
441
|
-
// before we exit, otherwise let wxWidgets handle things
|
|
442
|
-
wxLog *oldlog = wxLog::GetActiveTarget();
|
|
443
|
-
if (wxRuby_FindTracking(oldlog) != Qnil)
|
|
444
|
-
{
|
|
445
|
-
oldlog = wxLog::SetActiveTarget(new wxLogStderr);
|
|
446
|
-
}
|
|
447
|
-
else
|
|
448
|
-
{
|
|
449
|
-
oldlog = 0;
|
|
450
|
-
}
|
|
451
|
-
SetTopWindow(0);
|
|
452
|
-
if ( oldlog )
|
|
453
|
-
{
|
|
454
|
-
SWIG_RubyUnlinkObjects(oldlog);
|
|
455
|
-
SWIG_RubyRemoveTracking(oldlog);
|
|
456
|
-
delete oldlog;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
wxRubyApp* wxRubyApp::instance_ = 0;
|
|
153
|
+
#include "wxRubyApp.h"
|
|
461
154
|
|
|
462
155
|
WXRUBY_EXPORT bool wxRuby_IsAppRunning()
|
|
463
156
|
{
|
|
464
|
-
return wxRubyApp::GetInstance()
|
|
157
|
+
return wxRubyApp::GetInstance() && wxRubyApp::GetInstance()->IsRunning();
|
|
465
158
|
}
|
|
466
159
|
|
|
467
160
|
WXRUBY_EXPORT void wxRuby_ExitMainLoop(VALUE exception)
|
|
468
161
|
{
|
|
469
|
-
if (wxRubyApp::GetInstance()
|
|
162
|
+
if (wxRubyApp::GetInstance() && wxRubyApp::GetInstance()->IsRunning())
|
|
470
163
|
{
|
|
471
164
|
if (!NIL_P(exception))
|
|
472
165
|
{
|
|
@@ -496,6 +189,24 @@ module WXRuby3
|
|
|
496
189
|
__HEREDOC
|
|
497
190
|
super
|
|
498
191
|
end
|
|
192
|
+
|
|
193
|
+
def process(gendoc: false)
|
|
194
|
+
defmod = super
|
|
195
|
+
# fix documentation errors for generic dirctrl events
|
|
196
|
+
def_item = defmod.find_item('wxApp')
|
|
197
|
+
if def_item
|
|
198
|
+
def_item.event_types.each do |evt_spec|
|
|
199
|
+
case evt_spec.first
|
|
200
|
+
when 'EVT_DIALUP_CONNECTED', 'EVT_DIALUP_DISCONNECTED'
|
|
201
|
+
if evt_spec[3].nil?
|
|
202
|
+
evt_spec[3] = 'wxDialUpEvent' # missing from docs
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
defmod
|
|
208
|
+
end
|
|
209
|
+
|
|
499
210
|
end
|
|
500
211
|
|
|
501
212
|
end # class Director
|
|
@@ -15,7 +15,9 @@ module WXRuby3
|
|
|
15
15
|
def setup
|
|
16
16
|
super
|
|
17
17
|
spec.items << 'wxStandardPaths'
|
|
18
|
-
spec.gc_as_object 'wxAppTraits'
|
|
18
|
+
spec.gc_as_object 'wxAppTraits'
|
|
19
|
+
# stack based global; tracking unwanted
|
|
20
|
+
spec.gc_as_untracked 'wxStandardPaths'
|
|
19
21
|
spec.no_proxy 'wxAppTraits', 'wxStandardPaths'
|
|
20
22
|
spec.make_abstract 'wxAppTraits'
|
|
21
23
|
|
|
@@ -38,8 +40,8 @@ module WXRuby3
|
|
|
38
40
|
wxAppTraits::IsUsingUniversalWidgets
|
|
39
41
|
wxAppTraits::ShowAssertDialog
|
|
40
42
|
wxAppTraits::SafeMessageBox
|
|
41
|
-
wxAppTraits::GetAssertStackTrace
|
|
42
43
|
], ignore_doc: false
|
|
44
|
+
spec.ignore('wxAppTraits::GetAssertStackTrace', ignore_doc: 'USE_STACKWALKER')
|
|
43
45
|
# redefine
|
|
44
46
|
spec.extend_interface 'wxAppTraits',
|
|
45
47
|
'wxString GetDesktopEnvironment() const',
|
|
@@ -48,21 +50,19 @@ module WXRuby3
|
|
|
48
50
|
'bool IsUsingUniversalWidgets() const',
|
|
49
51
|
'bool ShowAssertDialog(const wxString& msg)',
|
|
50
52
|
'bool SafeMessageBox(const wxString &text, const wxString &title)'
|
|
51
|
-
if Config.instance.features_set?('
|
|
53
|
+
if Config.instance.features_set?('USE_STACKWALKER')
|
|
52
54
|
spec.extend_interface 'wxAppTraits', 'wxString GetAssertStackTrace()'
|
|
53
55
|
end
|
|
54
56
|
spec.map_apply 'int * OUTPUT' => ['int *major', 'int *minor', 'int *micro']
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
'wxStandardPaths::GetInstallPrefix'
|
|
65
|
-
end
|
|
58
|
+
spec.ignore_unless('WXMSW',
|
|
59
|
+
'wxStandardPaths::DontIgnoreAppSubDir',
|
|
60
|
+
'wxStandardPaths::IgnoreAppSubDir',
|
|
61
|
+
'wxStandardPaths::IgnoreAppBuildSubDirs',
|
|
62
|
+
'wxStandardPaths::MSWGetShellDir')
|
|
63
|
+
spec.ignore_unless('WXGTK',
|
|
64
|
+
'wxStandardPaths::SetInstallPrefix',
|
|
65
|
+
'wxStandardPaths::GetInstallPrefix')
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
|
|
@@ -24,8 +24,8 @@ module WXRuby3
|
|
|
24
24
|
wxWindow
|
|
25
25
|
wxEvtHandler
|
|
26
26
|
wxObject])
|
|
27
|
-
spec.ignore 'wxBitmapComboBox::Insert(const wxString &, const wxBitmap &, unsigned int,
|
|
28
|
-
'wxBitmapComboBox::Append(const wxString &, const wxBitmap &,
|
|
27
|
+
spec.ignore 'wxBitmapComboBox::Insert(const wxString &, const wxBitmap &, unsigned int, void *)',
|
|
28
|
+
'wxBitmapComboBox::Append(const wxString &, const wxBitmap &, void *)'
|
|
29
29
|
spec.map_apply 'long * OUTPUT' => [ 'long *from', 'long *to' ]
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -29,6 +29,28 @@ module WXRuby3
|
|
|
29
29
|
spec.rename_for_ruby(
|
|
30
30
|
'SetTextSelectionRange' => 'wxComboBox::SetSelection(long, long)',
|
|
31
31
|
'GetTextSelectionRange' => 'wxComboBox::GetSelection(long *, long *) const')
|
|
32
|
+
spec.ignore 'wxComboBox::SetSelection(long, long)',
|
|
33
|
+
'wxComboBox::GetSelection(long *, long *) const',
|
|
34
|
+
ignore_doc: false
|
|
35
|
+
# workaround because renaming and alias definitions clash
|
|
36
|
+
spec.add_extend_code 'wxComboBox', <<~__HEREDOC
|
|
37
|
+
void SetTextSelectionRange(long from, long to)
|
|
38
|
+
{
|
|
39
|
+
$self->SetSelection(from, to);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
void GetTextSelectionRange(long *from, long *to)
|
|
43
|
+
{
|
|
44
|
+
$self->GetSelection(from, to);
|
|
45
|
+
}
|
|
46
|
+
__HEREDOC
|
|
47
|
+
# fix override of TextEntry#clear; to be finished in pure Ruby
|
|
48
|
+
spec.add_extend_code 'wxComboBox', <<~__HEREDOC
|
|
49
|
+
void ClearItems()
|
|
50
|
+
{
|
|
51
|
+
$self->Clear();
|
|
52
|
+
}
|
|
53
|
+
__HEREDOC
|
|
32
54
|
spec.map_apply 'long * OUTPUT' => [ 'long *from', 'long *to' ]
|
|
33
55
|
end
|
|
34
56
|
|
|
@@ -16,7 +16,7 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
spec.items << 'wxComboPopup'
|
|
19
|
+
spec.items << 'wxComboPopup'
|
|
20
20
|
# mixin TextEntry
|
|
21
21
|
spec.include_mixin 'wxComboCtrl', { 'Wx::TextEntry' => 'wxTextEntryBase' }
|
|
22
22
|
spec.override_inheritance_chain('wxComboCtrl',
|
|
@@ -31,60 +31,6 @@ module WXRuby3
|
|
|
31
31
|
]
|
|
32
32
|
# turn wxComboPopup into a mixin module
|
|
33
33
|
spec.make_mixin 'wxComboPopup'
|
|
34
|
-
# override inheritance chain
|
|
35
|
-
spec.override_inheritance_chain('wxOwnerDrawnComboBox', %w[wxComboCtrl wxControl wxWindow wxEvtHandler wxObject])
|
|
36
|
-
spec.fold_bases('wxOwnerDrawnComboBox' => %w[wxItemContainer])
|
|
37
|
-
spec.regard %w[
|
|
38
|
-
wxOwnerDrawnComboBox::OnDrawBackground
|
|
39
|
-
wxOwnerDrawnComboBox::OnDrawItem
|
|
40
|
-
wxOwnerDrawnComboBox::OnMeasureItem
|
|
41
|
-
wxOwnerDrawnComboBox::OnMeasureItemWidth
|
|
42
|
-
]
|
|
43
|
-
# unuseful overloads
|
|
44
|
-
spec.ignore 'wxOwnerDrawnComboBox::wxOwnerDrawnComboBox(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)',
|
|
45
|
-
'wxOwnerDrawnComboBox::Create(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)'
|
|
46
|
-
spec.ignore('wxItemContainer::Append(const wxString &, wxClientData *)',
|
|
47
|
-
'wxItemContainer::Append(const std::vector< wxString > &)',
|
|
48
|
-
'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
|
|
49
|
-
'wxItemContainer::Append(unsigned int, const wxString *)',
|
|
50
|
-
'wxItemContainer::Append(unsigned int, const wxString *, void **)',
|
|
51
|
-
'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
|
|
52
|
-
'wxItemContainer::Insert(const wxString &, unsigned int, wxClientData *)',
|
|
53
|
-
'wxItemContainer::Insert(const std::vector< wxString > &)',
|
|
54
|
-
'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
|
|
55
|
-
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
|
|
56
|
-
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
|
|
57
|
-
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
|
|
58
|
-
'wxItemContainer::Set(const std::vector< wxString > &)',
|
|
59
|
-
'wxItemContainer::Set(const wxArrayString &, wxClientData **)',
|
|
60
|
-
'wxItemContainer::Set(unsigned int, const wxString *)',
|
|
61
|
-
'wxItemContainer::Set(unsigned int, const wxString *, void **)',
|
|
62
|
-
'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
|
|
63
|
-
'wxItemContainer::DetachClientObject',
|
|
64
|
-
'wxItemContainer::HasClientObjectData',
|
|
65
|
-
'wxItemContainer::GetClientObject',
|
|
66
|
-
'wxItemContainer::SetClientObject',
|
|
67
|
-
'wxItemContainer::HasClientUntypedData',
|
|
68
|
-
'wxItemContainer::Clear')
|
|
69
|
-
spec.ignore('wxItemContainer::Append(const wxArrayString &, void **)',
|
|
70
|
-
'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
|
|
71
|
-
'wxItemContainer::Set(const wxArrayString &, void **)', ignore_doc: false)
|
|
72
|
-
# ambiguous
|
|
73
|
-
spec.ignore 'wxOwnerDrawnComboBox::IsEmpty', ignore_doc: false
|
|
74
|
-
# for doc only
|
|
75
|
-
spec.map 'void** clientData' => 'Array', swig: false do
|
|
76
|
-
map_in code: ''
|
|
77
|
-
end
|
|
78
|
-
spec.ignore(%w[wxItemContainer::GetClientData wxItemContainer::SetClientData], ignore_doc: false) # keep docs
|
|
79
|
-
# Replace the old Wx definition of this method (which segfaults)
|
|
80
|
-
# Only need the setter as we cache data in Ruby and the getter
|
|
81
|
-
# therefor can be pure Ruby
|
|
82
|
-
spec.add_extend_code 'wxOwnerDrawnComboBox', <<~__HEREDOC
|
|
83
|
-
VALUE set_client_data(int n, VALUE item_data) {
|
|
84
|
-
self->SetClientData(n, (void *)item_data);
|
|
85
|
-
return item_data;
|
|
86
|
-
}
|
|
87
|
-
__HEREDOC
|
|
88
34
|
end
|
|
89
35
|
|
|
90
36
|
end # class ComboCtrl
|