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
|
@@ -14,6 +14,8 @@ module WXRuby3
|
|
|
14
14
|
|
|
15
15
|
class ControlWithItems < Window
|
|
16
16
|
|
|
17
|
+
include Typemap::ClientData
|
|
18
|
+
|
|
17
19
|
def setup
|
|
18
20
|
super
|
|
19
21
|
if spec.module_name == 'wxControlWithItems'
|
|
@@ -26,50 +28,127 @@ module WXRuby3
|
|
|
26
28
|
wxEvtHandler
|
|
27
29
|
wxObject])
|
|
28
30
|
spec.ignore([
|
|
29
|
-
'wxItemContainer::Append(const wxString &,
|
|
31
|
+
'wxItemContainer::Append(const wxString &, void *)',
|
|
30
32
|
'wxItemContainer::Append(const std::vector< wxString > &)',
|
|
31
|
-
'wxItemContainer::Append(const wxArrayString &,
|
|
33
|
+
'wxItemContainer::Append(const wxArrayString &, void **)',
|
|
32
34
|
'wxItemContainer::Append(unsigned int, const wxString *)',
|
|
33
35
|
'wxItemContainer::Append(unsigned int, const wxString *, void **)',
|
|
34
36
|
'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
|
|
35
|
-
'wxItemContainer::Insert(const wxString &, unsigned int,
|
|
37
|
+
'wxItemContainer::Insert(const wxString &, unsigned int, void *)',
|
|
36
38
|
'wxItemContainer::Insert(const std::vector< wxString > &)',
|
|
37
|
-
'wxItemContainer::Insert(const wxArrayString &, unsigned int,
|
|
39
|
+
'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
|
|
38
40
|
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
|
|
39
41
|
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
|
|
40
42
|
'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
|
|
41
43
|
'wxItemContainer::Set(const std::vector< wxString > &)',
|
|
42
|
-
'wxItemContainer::Set(const wxArrayString &,
|
|
44
|
+
'wxItemContainer::Set(const wxArrayString &, void **)',
|
|
43
45
|
'wxItemContainer::Set(unsigned int, const wxString *)',
|
|
44
46
|
'wxItemContainer::Set(unsigned int, const wxString *, void **)',
|
|
45
47
|
'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
|
|
46
|
-
'wxItemContainer::
|
|
47
|
-
'wxItemContainer::
|
|
48
|
-
'wxItemContainer::
|
|
49
|
-
|
|
48
|
+
'wxItemContainer::HasClientUntypedData',
|
|
49
|
+
'wxItemContainer::GetClientData',
|
|
50
|
+
'wxItemContainer::SetClientData'])
|
|
51
|
+
# ignore these but keep docs; will add custom versions below
|
|
50
52
|
spec.ignore([
|
|
51
|
-
'wxItemContainer::
|
|
52
|
-
'wxItemContainer::
|
|
53
|
-
'wxItemContainer::
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
'wxItemContainer::DetachClientObject',
|
|
54
|
+
'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
|
|
55
|
+
'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
|
|
56
|
+
'wxItemContainer::Set(const wxArrayString &, wxClientData **)'], ignore_doc: false)
|
|
57
|
+
if Config.instance.wx_version < '3.3.0'
|
|
58
|
+
# add undocumented method
|
|
59
|
+
spec.extend_interface 'wxControlWithItems',
|
|
60
|
+
'bool IsSorted() const'
|
|
61
|
+
end
|
|
57
62
|
# for doc only
|
|
58
|
-
spec.map '
|
|
63
|
+
spec.map 'wxClientData** clientData' => 'Array', swig: false do
|
|
59
64
|
map_in code: ''
|
|
60
65
|
end
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
# Replace the old Wx definitions of these methods adding
|
|
67
|
+
# proper checks on the data arrays.
|
|
68
|
+
# Also add an item enumerator.
|
|
69
|
+
spec.add_extend_code 'wxControlWithItems', <<~__HEREDOC
|
|
70
|
+
VALUE DetachClientObject(unsigned int n)
|
|
71
|
+
{
|
|
72
|
+
VALUE rc = Qnil;
|
|
73
|
+
wxClientData *wxcd = $self->DetachClientObject(n);
|
|
74
|
+
wxRubyClientData *rbcd = wxcd ? dynamic_cast<wxRubyClientData*> (wxcd) : nullptr;
|
|
75
|
+
if (rbcd)
|
|
76
|
+
{
|
|
77
|
+
rc = rbcd->GetData();
|
|
78
|
+
delete rbcd;
|
|
79
|
+
}
|
|
80
|
+
return rc;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
int Append(const wxArrayString &items, VALUE rb_clientData)
|
|
84
|
+
{
|
|
85
|
+
if (TYPE(rb_clientData) != T_ARRAY ||
|
|
86
|
+
static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
|
|
87
|
+
{
|
|
88
|
+
rb_raise(rb_eArgError,
|
|
89
|
+
TYPE(rb_clientData) == T_ARRAY ?
|
|
90
|
+
"expected Array for client_data" :
|
|
91
|
+
"client_data Array needs to be equal in size to items Array");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
|
|
95
|
+
for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
|
|
96
|
+
{
|
|
97
|
+
cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
|
|
98
|
+
}
|
|
99
|
+
return $self->Append(items, cd_arr.get());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
int Insert(const wxArrayString &items, unsigned int pos, VALUE rb_clientData)
|
|
103
|
+
{
|
|
104
|
+
if (TYPE(rb_clientData) != T_ARRAY ||
|
|
105
|
+
static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
|
|
106
|
+
{
|
|
107
|
+
rb_raise(rb_eArgError,
|
|
108
|
+
TYPE(rb_clientData) == T_ARRAY ?
|
|
109
|
+
"expected Array for client_data" :
|
|
110
|
+
"client_data Array needs to be equal in size to items Array");
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
|
|
114
|
+
for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
|
|
115
|
+
{
|
|
116
|
+
cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
|
|
117
|
+
}
|
|
118
|
+
return $self->Insert(items, pos, cd_arr.get());
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
void Set(const wxArrayString &items, VALUE rb_clientData)
|
|
122
|
+
{
|
|
123
|
+
if (TYPE(rb_clientData) != T_ARRAY ||
|
|
124
|
+
static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
|
|
125
|
+
{
|
|
126
|
+
rb_raise(rb_eArgError,
|
|
127
|
+
TYPE(rb_clientData) == T_ARRAY ?
|
|
128
|
+
"expected Array for client_data" :
|
|
129
|
+
"client_data Array needs to be equal in size to items Array");
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
|
|
133
|
+
for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
|
|
134
|
+
{
|
|
135
|
+
cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
|
|
136
|
+
}
|
|
137
|
+
$self->Set(items, cd_arr.get());
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
VALUE each_string()
|
|
141
|
+
{
|
|
142
|
+
VALUE rc = Qnil;
|
|
143
|
+
for (unsigned int i=0; i<$self->GetCount() ;++i)
|
|
144
|
+
{
|
|
145
|
+
VALUE rb_s = WXSTR_TO_RSTR($self->GetString(i));
|
|
146
|
+
rc = rb_yield(rb_s);
|
|
147
|
+
}
|
|
148
|
+
return rc;
|
|
69
149
|
}
|
|
70
150
|
__HEREDOC
|
|
71
|
-
|
|
72
|
-
end
|
|
151
|
+
end
|
|
73
152
|
end
|
|
74
153
|
|
|
75
154
|
def setup_ctrl_with_items(clsnm)
|
|
@@ -20,7 +20,7 @@ module WXRuby3
|
|
|
20
20
|
# The formal signature for these is NativeFormat; this is required on
|
|
21
21
|
# MSVC as otherwise an impermissible implicit cast is tried, and so
|
|
22
22
|
# doesn't compile
|
|
23
|
-
spec.ignore 'wxDataFormat::GetType'
|
|
23
|
+
spec.ignore 'wxDataFormat::GetType', ignore_doc: false
|
|
24
24
|
spec.extend_interface 'wxDataFormat',
|
|
25
25
|
'typedef unsigned short NativeFormat',
|
|
26
26
|
'wxDataFormat::NativeFormat GetType() const'
|
|
@@ -25,13 +25,15 @@ module WXRuby3
|
|
|
25
25
|
VALUE get_range()
|
|
26
26
|
{
|
|
27
27
|
wxDateTime dt1, dt2;
|
|
28
|
-
$self->GetRange(&dt1, &dt2)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
if ($self->GetRange(&dt1, &dt2))
|
|
29
|
+
{
|
|
30
|
+
VALUE items = rb_ary_new();
|
|
31
|
+
rb_ary_push(items, wxRuby_wxDateTimeToRuby(dt1));
|
|
32
|
+
rb_ary_push(items, wxRuby_wxDateTimeToRuby(dt2));
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
return items;
|
|
35
|
+
}
|
|
36
|
+
return Qnil;
|
|
35
37
|
}
|
|
36
38
|
__HEREDOC
|
|
37
39
|
end
|
|
@@ -278,7 +278,7 @@ module WXRuby3
|
|
|
278
278
|
# like all DC this should best always be a temporary stack object
|
|
279
279
|
# we do not allow creation in Ruby but rather provide class
|
|
280
280
|
# methods for block execution on a temp dc
|
|
281
|
-
|
|
281
|
+
if Config.instance.features_set?('USE_PRINTING_ARCHITECTURE', Director.AnyOf(*%w[WXMSW WXOSX USE_GTKPRINT]))
|
|
282
282
|
spec.add_extend_code 'wxGCDC', <<~__HEREDOC
|
|
283
283
|
static VALUE draw_on(const wxPrinterDC& dc)
|
|
284
284
|
{
|
|
@@ -24,6 +24,7 @@ module WXRuby3
|
|
|
24
24
|
when 'wxDialog'
|
|
25
25
|
spec.items << 'wxDialogLayoutAdapter'
|
|
26
26
|
spec.gc_as_object 'wxDialogLayoutAdapter'
|
|
27
|
+
spec.suppress_warning(514, 'wxDialogLayoutAdapter')
|
|
27
28
|
spec.disown 'wxDialogLayoutAdapter* adapter'
|
|
28
29
|
spec.new_object 'wxDialog::SetLayoutAdapter'
|
|
29
30
|
spec.ignore('wxDialog::GetContentWindow',
|
|
@@ -15,9 +15,8 @@ module WXRuby3
|
|
|
15
15
|
include Typemap::TreeItemId
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
end
|
|
18
|
+
# If wxRuby ever supports WXUNIVERSAL this should change to #ignore_unless
|
|
19
|
+
spec.ignore('wxDragImage::DoDrawImage', 'wxDragImage::GetImageRect', 'wxDragImage::UpdateBackingFromWindow')
|
|
21
20
|
super
|
|
22
21
|
end
|
|
23
22
|
end # class DragImage
|
|
@@ -16,6 +16,36 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
+
# methods missing from docs
|
|
20
|
+
spec.extend_interface 'wxEditableListBox',
|
|
21
|
+
'wxListCtrl* GetListCtrl()',
|
|
22
|
+
'wxBitmapButton* GetDelButton()',
|
|
23
|
+
'wxBitmapButton* GetNewButton()',
|
|
24
|
+
'wxBitmapButton* GetUpButton()',
|
|
25
|
+
'wxBitmapButton* GetDownButton()',
|
|
26
|
+
'wxBitmapButton* GetEditButton()'
|
|
27
|
+
# redefine this
|
|
28
|
+
spec.ignore 'wxEditableListBox::GetStrings', ignore_doc: false
|
|
29
|
+
spec.add_extend_code 'wxEditableListBox', <<~__HEREDOC
|
|
30
|
+
VALUE GetStrings()
|
|
31
|
+
{
|
|
32
|
+
VALUE rb_list = rb_ary_new();
|
|
33
|
+
wxArrayString list;
|
|
34
|
+
$self->GetStrings(list);
|
|
35
|
+
for (unsigned int i=0; i<list.GetCount() ;++i)
|
|
36
|
+
{
|
|
37
|
+
rb_ary_push(rb_list, WXSTR_TO_RSTR(list.Item(i)));
|
|
38
|
+
}
|
|
39
|
+
return rb_list;
|
|
40
|
+
}
|
|
41
|
+
__HEREDOC
|
|
42
|
+
# map for doc gen
|
|
43
|
+
spec.map 'wxArrayString& strings' => 'Array<String>', swig: false do
|
|
44
|
+
map_in ignore: true, code: ''
|
|
45
|
+
map_argout code: ''
|
|
46
|
+
end
|
|
47
|
+
# make sure GetStrings uses the right typemap
|
|
48
|
+
spec.map_apply 'wxArrayString&' => 'const wxArrayString& strings'
|
|
19
49
|
end
|
|
20
50
|
end # class EditableListBox
|
|
21
51
|
|
|
@@ -138,36 +138,46 @@ module WXRuby3
|
|
|
138
138
|
return INT2NUM(event_type_id);
|
|
139
139
|
}
|
|
140
140
|
__HEREDOC
|
|
141
|
+
spec.map 'wxObject*' => 'Wx::Object' do
|
|
142
|
+
map_out code: '$result = wxRuby_WrapWxObjectInRuby($1);'
|
|
143
|
+
end
|
|
141
144
|
# make Ruby director and wrappers use custom implementation
|
|
142
145
|
spec.use_class_implementation('wxCommandEvent', 'wxRubyCommandEvent')
|
|
143
146
|
spec.ignore %w{
|
|
144
|
-
wxCommandEvent::
|
|
145
|
-
wxCommandEvent::
|
|
147
|
+
wxCommandEvent::GetClientData
|
|
148
|
+
wxCommandEvent::SetClientData
|
|
146
149
|
wxCommandEvent::GetExtraLong
|
|
147
150
|
}
|
|
151
|
+
# ignore but keep doc; will replace with custom versions
|
|
152
|
+
spec.ignore %w[wxCommandEvent::GetClientObject wxCommandEvent::SetClientObject], ignore_doc: false
|
|
153
|
+
# for doc gen only
|
|
154
|
+
spec.map 'wxClientData*' => 'Object', swig: false do
|
|
155
|
+
map_in code: ''
|
|
156
|
+
map_out code: ''
|
|
157
|
+
end
|
|
148
158
|
# need this to force alloc func
|
|
149
159
|
spec.make_concrete 'wxCommandEvent'
|
|
150
160
|
spec.add_header_code <<~__HEREDOC
|
|
151
161
|
// Cf wxEvent - has to be written as a C+++ subclass to ensure correct
|
|
152
162
|
// GC/thread protection of Ruby instance variables when user-written
|
|
153
163
|
// event classes are queued.
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
// FIXME : intermittent errors with CommandEvent losing the tracked
|
|
157
|
-
// object before handling - though the same code works fine with Wx::Event
|
|
158
164
|
class WXRUBY_EXPORT wxRubyCommandEvent : public wxCommandEvent
|
|
159
165
|
{
|
|
160
166
|
public:
|
|
161
167
|
wxRubyCommandEvent(wxEventType commandType = wxEVT_NULL,
|
|
162
|
-
int id = 0)
|
|
163
|
-
wxCommandEvent(commandType, id)
|
|
164
|
-
|
|
165
|
-
|
|
168
|
+
int id = 0)
|
|
169
|
+
: wxCommandEvent(commandType, id)
|
|
170
|
+
{ }
|
|
171
|
+
wxRubyCommandEvent(const wxRubyCommandEvent& cev)
|
|
172
|
+
: wxCommandEvent(cev)
|
|
173
|
+
, has_ruby_data_(cev.has_ruby_data_)
|
|
174
|
+
{ }
|
|
166
175
|
|
|
167
176
|
// When the C++ side event is destroyed, unlink from the Ruby object
|
|
168
177
|
// and remove that object from the tracking hash so it can be
|
|
169
178
|
// collected by GC.
|
|
170
|
-
virtual ~wxRubyCommandEvent()
|
|
179
|
+
virtual ~wxRubyCommandEvent()
|
|
180
|
+
{
|
|
171
181
|
SWIG_RubyUnlinkObjects((void*)this);
|
|
172
182
|
wxRuby_RemoveTracking((void*)this);
|
|
173
183
|
}
|
|
@@ -176,7 +186,8 @@ module WXRuby3
|
|
|
176
186
|
// (often when using Threads), because a clone is queued. So copy the
|
|
177
187
|
// Wx C++ event, create a shallow (dup) of the Ruby event object, and
|
|
178
188
|
// add to the tracking hash so that it is GC-protected
|
|
179
|
-
virtual wxCommandEvent* Clone() const
|
|
189
|
+
virtual wxCommandEvent* Clone() const
|
|
190
|
+
{
|
|
180
191
|
wxRubyCommandEvent* wx_ev = new wxRubyCommandEvent(*this);
|
|
181
192
|
|
|
182
193
|
VALUE r_obj = SWIG_RubyInstanceFor((void *)this);
|
|
@@ -186,7 +197,86 @@ module WXRuby3
|
|
|
186
197
|
wxRuby_AddTracking( (void*)wx_ev, r_obj_dup );
|
|
187
198
|
return wx_ev;
|
|
188
199
|
}
|
|
200
|
+
|
|
201
|
+
bool has_ruby_data_ {};
|
|
189
202
|
};
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
// wxRuby must preserve ruby objects attached as the ClientData of
|
|
206
|
+
// command events that have been user-defined in ruby. Some of the
|
|
207
|
+
// standard wxWidgets CommandEvent classes also use ClientData
|
|
208
|
+
// for their own purposes, and this must not be marked as the data is
|
|
209
|
+
// not a ruby object, and will thus crash.
|
|
210
|
+
WXRUBY_EXPORT void GC_mark_wxEvent(void *ptr)
|
|
211
|
+
{
|
|
212
|
+
#ifdef __WXRB_DEBUG__
|
|
213
|
+
if (wxRuby_TraceLevel()>1)
|
|
214
|
+
std::wcout << "> GC_mark_wxEvent : " << ptr << std::endl;
|
|
215
|
+
#endif
|
|
216
|
+
|
|
217
|
+
if ( ! ptr ) return;
|
|
218
|
+
wxEvent* wx_event = (wxEvent*)ptr;
|
|
219
|
+
#ifdef __WXRB_DEBUG__
|
|
220
|
+
if (wxRuby_TraceLevel()>2)
|
|
221
|
+
std::wcout << "* GC_mark_wxEvent(" << ptr << ":{" << wx_event->GetEventType() << "})" << std::endl;
|
|
222
|
+
#endif
|
|
223
|
+
if (wx_event->IsCommandEvent())
|
|
224
|
+
{
|
|
225
|
+
wxCommandEvent* wx_cm_event = (wxCommandEvent*)ptr;
|
|
226
|
+
if (wx_cm_event->GetClientObject() == nullptr && wx_cm_event->GetClientData() != nullptr)
|
|
227
|
+
{
|
|
228
|
+
wxRubyCommandEvent* rbcev = dynamic_cast<wxRubyCommandEvent*> (wx_cm_event);
|
|
229
|
+
if (rbcev && rbcev->has_ruby_data_)
|
|
230
|
+
{
|
|
231
|
+
VALUE rb_client_data = (VALUE)wx_cm_event->GetClientData();
|
|
232
|
+
rb_gc_mark(rb_client_data);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
#ifdef __WXRB_DEBUG__
|
|
238
|
+
if (wxRuby_TraceLevel()>1)
|
|
239
|
+
std::wcout << "< GC_mark_wxEvent : " << ptr << std::endl;
|
|
240
|
+
#endif
|
|
241
|
+
}
|
|
242
|
+
__HEREDOC
|
|
243
|
+
# CommandEvent requires custom handling of client data.
|
|
244
|
+
# As command events do not 'own' their wxClientData objects we cannot use the regular support
|
|
245
|
+
# for setting client data from Ruby as that would cause memory leaks by creating wxRubyClientData
|
|
246
|
+
# instances that would never get deleted.
|
|
247
|
+
# On the other hand wxWidgets library code might still set wxClientData instances propagated from
|
|
248
|
+
# control or item client data which needs to be used for returning client data with GetClientObject.
|
|
249
|
+
# As wxRuby client data always is any arbitrary Ruby Object anyway we simply combine the two approaches wxWidgets
|
|
250
|
+
# offers here under 1 set of methods.
|
|
251
|
+
spec.include 'wxruby-ClientData.h'
|
|
252
|
+
spec.add_extend_code 'wxCommandEvent', <<~__HEREDOC
|
|
253
|
+
VALUE GetClientObject()
|
|
254
|
+
{
|
|
255
|
+
VALUE rc = Qnil;
|
|
256
|
+
// return Ruby client data depending on what's available
|
|
257
|
+
if ($self->GetClientObject())
|
|
258
|
+
{
|
|
259
|
+
wxRubyClientData* rbcd = dynamic_cast<wxRubyClientData*> ($self->GetClientObject());
|
|
260
|
+
if (rbcd) rc = rbcd->GetData();
|
|
261
|
+
}
|
|
262
|
+
else if ($self->GetClientData() != nullptr)
|
|
263
|
+
{
|
|
264
|
+
wxRubyCommandEvent* rbcev = dynamic_cast<wxRubyCommandEvent*> ($self);
|
|
265
|
+
if (rbcev && rbcev->has_ruby_data_) rc = (VALUE)$self->GetClientData();
|
|
266
|
+
}
|
|
267
|
+
return rc;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
void SetClientObject(VALUE cd)
|
|
271
|
+
{
|
|
272
|
+
wxRubyCommandEvent* rbcev = dynamic_cast<wxRubyCommandEvent*> ($self);
|
|
273
|
+
if (rbcev)
|
|
274
|
+
{
|
|
275
|
+
// use SetClientData as not to create memory leaks; GC marker for events will keep it alive
|
|
276
|
+
$self->SetClientData(NIL_P(cd) ? nullptr : (void*)cd);
|
|
277
|
+
rbcev->has_ruby_data_ = !NIL_P(cd);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
190
280
|
__HEREDOC
|
|
191
281
|
spec.add_wrapper_code <<~__HEREDOC
|
|
192
282
|
extern VALUE wxRuby_GetDefaultEventClass()
|
|
@@ -195,8 +285,8 @@ module WXRuby3
|
|
|
195
285
|
}
|
|
196
286
|
__HEREDOC
|
|
197
287
|
spec.ignore 'wxQueueEvent'
|
|
198
|
-
spec.
|
|
199
|
-
spec.
|
|
288
|
+
spec.ignore_unless('USE_HOTKEY', 'wxEVT_HOTKEY')
|
|
289
|
+
spec.ignore_unless('WXMSW', 'wxEVT_MOUSE_CAPTURE_CHANGED', 'wxEVT_MOUSE_CAPTURE_LOST', 'wxEVT_DISPLAY_CHANGED')
|
|
200
290
|
# make sure this event constant definition exists
|
|
201
291
|
spec.add_swig_code %Q{%constant wxEventType wxEVT_MENU_HIGHLIGHT_ALL = wxEVT_MENU_HIGHLIGHT;}
|
|
202
292
|
# add event type constant missing from interface defs
|
|
@@ -12,6 +12,8 @@ module WXRuby3
|
|
|
12
12
|
|
|
13
13
|
class EvtHandler < Director
|
|
14
14
|
|
|
15
|
+
include Typemap::ClientData
|
|
16
|
+
|
|
15
17
|
def setup
|
|
16
18
|
super
|
|
17
19
|
# update generated code for all event handlers
|
|
@@ -22,8 +24,7 @@ module WXRuby3
|
|
|
22
24
|
'wxEvtHandler::Connect',
|
|
23
25
|
'wxEvtHandler::Disconnect')
|
|
24
26
|
spec.ignore(%w[wxEVT_HOTKEY])
|
|
25
|
-
spec.ignore(%w[wxEvtHandler::SetClientData wxEvtHandler::GetClientData
|
|
26
|
-
wxEvtHandler::SetClientObject wxEvtHandler::GetClientObject])
|
|
27
|
+
spec.ignore(%w[wxEvtHandler::SetClientData wxEvtHandler::GetClientData])
|
|
27
28
|
# Do not see much point in allowing/supporting this to be overridden when we
|
|
28
29
|
# have TryBefore and TryAfter to handle this much cleaner
|
|
29
30
|
spec.no_proxy 'wxEvtHandler::ProcessEvent'
|
|
@@ -21,9 +21,7 @@ module WXRuby3
|
|
|
21
21
|
when 'wxFrame'
|
|
22
22
|
spec.ignore %w[
|
|
23
23
|
wxFrame::OnCreateStatusBar wxFrame::OnCreateToolBar]
|
|
24
|
-
|
|
25
|
-
spec.ignore('wxFrame::MSWGetTaskBarButton')
|
|
26
|
-
end
|
|
24
|
+
spec.ignore_unless(%w[WXMSW USE_TASKBARBUTTON], 'wxFrame::MSWGetTaskBarButton')
|
|
27
25
|
# this reimplemented window base method need to be properly wrapped but
|
|
28
26
|
# is missing from the XML docs
|
|
29
27
|
spec.extend_interface('wxFrame', 'virtual void OnInternalIdle()')
|
|
@@ -42,7 +42,7 @@ module WXRuby3
|
|
|
42
42
|
|
|
43
43
|
// As the wxw logger will only make synchronous use of the filename, func and component pointers while
|
|
44
44
|
// processing the log entry and never store them we simply gather pointers but no copies
|
|
45
|
-
static void do_log(wxLogLevel lvl, int argc, VALUE *argv
|
|
45
|
+
static void do_log(wxLogLevel lvl, int argc, VALUE *argv)
|
|
46
46
|
{
|
|
47
47
|
const char* filename = nullptr;
|
|
48
48
|
int line = 0;
|
|
@@ -66,7 +66,9 @@ module WXRuby3
|
|
|
66
66
|
wxLog::IsLevelEnabled(lvl, wxASCII_STR(component)) )
|
|
67
67
|
{
|
|
68
68
|
VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
|
|
69
|
-
|
|
69
|
+
wxLogRecordInfo info(filename, line, func, component);
|
|
70
|
+
info.timestampMS = wxGetUTCTimeMillis().GetValue();
|
|
71
|
+
wxLog::OnLog(lvl, RSTR_TO_WXSTR(log_msg), info);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -78,16 +78,14 @@ module WXRuby3
|
|
|
78
78
|
wxPoint::x wxPoint::y
|
|
79
79
|
wxRealPoint::x wxRealPoint::y
|
|
80
80
|
]
|
|
81
|
-
spec.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
end
|
|
90
|
-
spec.ignore('wxStockCursor.wxCURSOR_COPY_ARROW') unless Config.instance.features_set?('__WXOSX__')
|
|
81
|
+
spec.ignore_unless('WXGTK', 'wxStockCursor.wxCURSOR_DEFAULT')
|
|
82
|
+
spec.ignore_unless 'WXX11', %w{
|
|
83
|
+
wxStockCursor.wxCURSOR_CROSS_REVERSE
|
|
84
|
+
wxStockCursor.wxCURSOR_DOUBLE_ARROW
|
|
85
|
+
wxStockCursor.wxCURSOR_BASED_ARROW_UP
|
|
86
|
+
wxStockCursor.wxCURSOR_BASED_ARROW_DOWN
|
|
87
|
+
}
|
|
88
|
+
spec.ignore_unless('WXOSX', 'wxStockCursor.wxCURSOR_COPY_ARROW')
|
|
91
89
|
spec.add_extend_code 'wxRect', <<~__HEREDOC
|
|
92
90
|
wxRect add(const wxRect &rect) const {
|
|
93
91
|
return (*(const wxRect*)$self) + rect;
|
|
@@ -20,6 +20,23 @@ module WXRuby3
|
|
|
20
20
|
spec.do_not_generate(:variables, :defines, :enums, :functions) # already with DirFilterListCtrl
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def process(gendoc: false)
|
|
24
|
+
defmod = super
|
|
25
|
+
# fix documentation errors for generic dirctrl events
|
|
26
|
+
def_item = defmod.find_item('wxGenericDirCtrl')
|
|
27
|
+
if def_item
|
|
28
|
+
def_item.event_types.each do |evt_spec|
|
|
29
|
+
case evt_spec.first
|
|
30
|
+
when 'EVT_DIRCTRL_SELECTIONCHANGED', 'EVT_DIRCTRL_FILEACTIVATED'
|
|
31
|
+
if evt_spec[3].nil?
|
|
32
|
+
evt_spec[3] = 'wxTreeEvent' # missing from docs
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
defmod
|
|
38
|
+
end
|
|
39
|
+
|
|
23
40
|
end # class GenericDirCtrl
|
|
24
41
|
|
|
25
42
|
end # class Director
|
|
@@ -34,9 +34,7 @@ module WXRuby3
|
|
|
34
34
|
'wxGraphicsContext::DrawLines(size_t, const wxPoint2DDouble *, wxPolygonFillMode)',
|
|
35
35
|
'wxGraphicsContext::StrokeLines(size_t, const wxPoint2DDouble *)',
|
|
36
36
|
'wxGraphicsContext::StrokeLines (size_t, const wxPoint2DDouble *, const wxPoint2DDouble *)'
|
|
37
|
-
|
|
38
|
-
spec.ignore 'wxGraphicsContext::Create(const wxPrinterDC &)'
|
|
39
|
-
end
|
|
37
|
+
spec.ignore_unless(Config::AnyOf.new('WXMSW', 'WXOSX', 'USE_GTKPRINT'), 'wxGraphicsContext::Create(const wxPrinterDC &)')
|
|
40
38
|
spec.add_header_code <<~__HEREDOC
|
|
41
39
|
// special free funcs are needed to clean up Dashes array if it has been
|
|
42
40
|
// set; wxWidgets does not do this automatically so will leak if not
|
|
@@ -229,7 +227,7 @@ module WXRuby3
|
|
|
229
227
|
__CODE
|
|
230
228
|
end
|
|
231
229
|
# add convenience method providing efficient gc memory management
|
|
232
|
-
|
|
230
|
+
if Config.instance.features_set?('USE_PRINTING_ARCHITECTURE', Director.AnyOf(*%w[WXMSW WXOSX USE_GTKPRINT]))
|
|
233
231
|
spec.add_extend_code 'wxGraphicsContext', <<~__HEREDOC
|
|
234
232
|
static VALUE draw_on(const wxPrinterDC& dc)
|
|
235
233
|
{
|
|
@@ -87,10 +87,13 @@ module WXRuby3
|
|
|
87
87
|
__CODE
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
spec.ignore 'wxGrid::GetSelectedBlocks' # ignore
|
|
90
|
+
spec.ignore 'wxGrid::GetSelectedBlocks', ignore_doc: false # ignore
|
|
91
|
+
spec.map 'wxGridBlocks' => 'Array<Wx::GRID::GridBlockCoords>', swig: false do
|
|
92
|
+
map_out code: ''
|
|
93
|
+
end
|
|
91
94
|
# add rubified API (finish in pure Ruby)
|
|
92
95
|
spec.add_extend_code 'wxGrid', <<~__HEREDOC
|
|
93
|
-
VALUE
|
|
96
|
+
VALUE each_selected_block()
|
|
94
97
|
{
|
|
95
98
|
VALUE rc = Qnil;
|
|
96
99
|
if (rb_block_given_p())
|
|
@@ -103,6 +106,34 @@ module WXRuby3
|
|
|
103
106
|
}
|
|
104
107
|
return rc;
|
|
105
108
|
}
|
|
109
|
+
|
|
110
|
+
VALUE each_selected_row_block()
|
|
111
|
+
{
|
|
112
|
+
VALUE rc = Qnil;
|
|
113
|
+
if (rb_block_given_p())
|
|
114
|
+
{
|
|
115
|
+
wxGridBlockCoordsVector sel = $self->GetSelectedRowBlocks();
|
|
116
|
+
for (const wxGridBlockCoords& gbc : sel)
|
|
117
|
+
{
|
|
118
|
+
rc = rb_yield (SWIG_NewPointerObj(new wxGridBlockCoords(gbc), SWIGTYPE_p_wxGridBlockCoords, SWIG_POINTER_OWN));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return rc;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
VALUE each_selected_col_block()
|
|
125
|
+
{
|
|
126
|
+
VALUE rc = Qnil;
|
|
127
|
+
if (rb_block_given_p())
|
|
128
|
+
{
|
|
129
|
+
wxGridBlockCoordsVector sel = $self->GetSelectedColBlocks();
|
|
130
|
+
for (const wxGridBlockCoords& gbc : sel)
|
|
131
|
+
{
|
|
132
|
+
rc = rb_yield (SWIG_NewPointerObj(new wxGridBlockCoords(gbc), SWIGTYPE_p_wxGridBlockCoords, SWIG_POINTER_OWN));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return rc;
|
|
136
|
+
}
|
|
106
137
|
__HEREDOC
|
|
107
138
|
|
|
108
139
|
spec.ignore 'wxGrid::GetGridWindowOffset(const wxGridWindow *, int &, int &) const'
|
|
@@ -113,7 +144,7 @@ module WXRuby3
|
|
|
113
144
|
typedef wxGrid::TabBehaviour TabBehaviour;
|
|
114
145
|
__HEREDOC
|
|
115
146
|
|
|
116
|
-
spec.map 'wxGridBlockCoordsVector' => 'Array<Wx::GRID::GridBlockCoords' do
|
|
147
|
+
spec.map 'wxGridBlockCoordsVector' => 'Array<Wx::GRID::GridBlockCoords>' do
|
|
117
148
|
map_out code: <<~__CODE
|
|
118
149
|
$result = rb_ary_new();
|
|
119
150
|
for (const wxGridBlockCoords& gbc: $1)
|