wxruby3 0.9.2 → 0.9.4
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/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
- data/ext/wxruby3/include/wxruby-Config.h +23 -5
- data/ext/wxruby3/include/wxruby-Persistence.h +79 -0
- data/ext/wxruby3/include/wxruby-Validator.h +39 -0
- data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
- data/ext/wxruby3/swig/custom/director.swg +8 -0
- data/ext/wxruby3/swig/mark_free_impl.i +0 -33
- data/ext/wxruby3/swig/memory_management.i +6 -0
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/book_ctrl_base.rb +16 -0
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/config.rb +454 -83
- data/lib/wx/core/controlwithitems.rb +40 -130
- 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/notebook.rb +10 -8
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/peristent_object.rb +15 -0
- data/lib/wx/core/persistence_manager.rb +39 -0
- data/lib/wx/core/persistent_window.rb +16 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +1 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/top_level_window.rb +16 -0
- data/lib/wx/core/treebook.rb +18 -0
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +3 -7
- data/lib/wx/core.rb +4 -0
- data/lib/wx/doc/art_locator.rb +1 -0
- data/lib/wx/doc/book_ctrl_base.rb +19 -0
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/config.rb +101 -41
- data/lib/wx/doc/controlwithitems.rb +16 -0
- 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/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/extra/14_config.md +101 -0
- data/lib/wx/doc/extra/15_persistence.md +148 -0
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/persistence_manager.rb +36 -0
- data/lib/wx/doc/persistent_object.rb +27 -0
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/text_validator.rb +10 -0
- data/lib/wx/doc/top_level_window.rb +19 -0
- data/lib/wx/doc/treebook.rb +6 -1
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/window.rb +30 -0
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/version.rb +1 -1
- data/rakelib/build.rb +1 -1
- data/rakelib/lib/config/mingw.rb +12 -0
- 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 +39 -3
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec.rb +10 -0
- data/rakelib/lib/core/spec_helper.rb +8 -2
- data/rakelib/lib/director/app.rb +18 -0
- data/rakelib/lib/director/app_traits.rb +3 -1
- 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/config_base.rb +490 -19
- data/rakelib/lib/director/ctrl_with_items.rb +88 -21
- data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
- data/rakelib/lib/director/editable_listbox.rb +30 -0
- data/rakelib/lib/director/event.rb +102 -12
- data/rakelib/lib/director/event_filter.rb +1 -1
- data/rakelib/lib/director/event_handler.rb +3 -2
- data/rakelib/lib/director/event_loop.rb +1 -1
- data/rakelib/lib/director/file_dialog_customize_hook.rb +2 -2
- data/rakelib/lib/director/functions.rb +4 -2
- data/rakelib/lib/director/generic_dirctrl.rb +17 -0
- data/rakelib/lib/director/grid_cell_attr.rb +1 -3
- data/rakelib/lib/director/grid_cell_editor.rb +1 -3
- data/rakelib/lib/director/grid_cell_renderer.rb +1 -3
- data/rakelib/lib/director/header_ctrl.rb +9 -1
- data/rakelib/lib/director/html_listbox.rb +97 -22
- 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/persistence_manager.rb +410 -0
- data/rakelib/lib/director/persistent_object.rb +70 -0
- data/rakelib/lib/director/persistent_window.rb +73 -0
- data/rakelib/lib/director/pgproperty.rb +3 -29
- data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
- data/rakelib/lib/director/ribbon_gallery.rb +3 -5
- data/rakelib/lib/director/sizer.rb +15 -4
- data/rakelib/lib/director/sizer_item.rb +13 -0
- data/rakelib/lib/director/static_bitmap.rb +32 -0
- data/rakelib/lib/director/text_entry.rb +5 -1
- data/rakelib/lib/director/text_validator.rb +124 -13
- data/rakelib/lib/director/toggle_button.rb +1 -0
- data/rakelib/lib/director/top_level_window.rb +0 -2
- data/rakelib/lib/director/tree_ctrl.rb +35 -0
- data/rakelib/lib/director/utils.rb +16 -2
- data/rakelib/lib/director/validator.rb +196 -21
- data/rakelib/lib/director/window.rb +16 -2
- data/rakelib/lib/extractor/function.rb +2 -1
- data/rakelib/lib/generate/analyzer.rb +44 -44
- data/rakelib/lib/generate/doc.rb +11 -5
- data/rakelib/lib/specs/interfaces.rb +5 -0
- data/rakelib/lib/swig_runner.rb +55 -9
- data/rakelib/lib/typemap/client_data.rb +67 -0
- data/rakelib/lib/typemap/common.rb +3 -3
- data/rakelib/lib/typemap/config.rb +8 -0
- data/rakelib/lib/typemap/datetime.rb +1 -1
- data/rakelib/lib/typemap/tree_itemid.rb +2 -2
- 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 +1229 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/test_config.rb +207 -42
- 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_persistence.rb +142 -0
- data/tests/test_sizer.rb +44 -1
- data/tests/test_validators.rb +805 -0
- metadata +109 -138
- 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,12 +12,19 @@ module WXRuby3
|
|
|
12
12
|
|
|
13
13
|
class Sizer < Director
|
|
14
14
|
|
|
15
|
+
include Typemap::ClientData
|
|
16
|
+
|
|
15
17
|
def setup
|
|
16
|
-
# Any nested sizers passed to Add() in are owned by C++, not GC
|
|
18
|
+
# Any nested sizers passed to Add() in are owned by C++, not GC-ed by Ruby
|
|
17
19
|
case spec.module_name
|
|
18
20
|
when 'wxSizer'
|
|
19
21
|
spec.items << 'wxSizerFlags'
|
|
20
22
|
spec.gc_as_untracked('wxSizerFlags')
|
|
23
|
+
if Config.instance.wx_version < '3.3.0'
|
|
24
|
+
# missing from docs
|
|
25
|
+
spec.extend_interface 'wxSizerFlags',
|
|
26
|
+
'wxSizerFlags& HorzBorder()'
|
|
27
|
+
end
|
|
21
28
|
spec.make_abstract('wxSizer')
|
|
22
29
|
spec.ignore %w[wxSizer::IsShown wxSizer::SetVirtualSizeHints]
|
|
23
30
|
# cannot use these with wxRuby
|
|
@@ -45,7 +52,7 @@ module WXRuby3
|
|
|
45
52
|
spec.ignore 'wxSizer::Detach(wxSizer*)',
|
|
46
53
|
'wxSizer::Detach(int)', ignore_doc: false
|
|
47
54
|
spec.add_extend_code 'wxSizer', <<~__HEREDOC
|
|
48
|
-
bool
|
|
55
|
+
bool Detach(wxSizer* szr)
|
|
49
56
|
{
|
|
50
57
|
if ($self->Detach(szr))
|
|
51
58
|
{
|
|
@@ -60,7 +67,7 @@ module WXRuby3
|
|
|
60
67
|
return false;
|
|
61
68
|
}
|
|
62
69
|
|
|
63
|
-
bool
|
|
70
|
+
bool Detach(int itm_nr)
|
|
64
71
|
{
|
|
65
72
|
wxSizerItem* itm = $self->GetItem(itm_nr);
|
|
66
73
|
if (itm)
|
|
@@ -124,9 +131,13 @@ module WXRuby3
|
|
|
124
131
|
spec.ignore 'wxGridBagSizer::Add(wxGBSizerItem *)'
|
|
125
132
|
# need to adjust sizer arg name to apply disown specs
|
|
126
133
|
spec.ignore 'wxGridBagSizer::Add(wxSizer *, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
|
|
134
|
+
'wxGridBagSizer::Add(wxWindow *, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
|
|
135
|
+
'wxGridBagSizer::Add(int, int, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
|
|
127
136
|
ignore_doc: false
|
|
128
137
|
spec.extend_interface 'wxGridBagSizer',
|
|
129
|
-
'wxSizerItem *Add(wxSizer *sizer_disown, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)'
|
|
138
|
+
'wxSizerItem * Add(wxSizer *sizer_disown, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)',
|
|
139
|
+
'wxSizerItem * Add(wxWindow *window, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)',
|
|
140
|
+
'wxSizerItem * Add(int width, int height, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)'
|
|
130
141
|
spec.disown 'wxSizer* sizer_disown'
|
|
131
142
|
end
|
|
132
143
|
# no real use for allowing these to be overloaded but a whole lot of grieve
|
|
@@ -12,15 +12,27 @@ module WXRuby3
|
|
|
12
12
|
|
|
13
13
|
class SizerItem < Director
|
|
14
14
|
|
|
15
|
+
include Typemap::ClientData
|
|
16
|
+
|
|
15
17
|
def setup
|
|
16
18
|
spec.disable_proxies
|
|
17
19
|
# do not allow creating SizerItems in Ruby; this has limited benefits and
|
|
18
20
|
# memory management of sizer items is a nightmare
|
|
19
21
|
case spec.module_name
|
|
20
22
|
when 'wxSizerItem'
|
|
23
|
+
spec.gc_as_untracked 'wxSizerItem'
|
|
21
24
|
spec.make_abstract 'wxSizerItem'
|
|
22
25
|
# ignore constructors
|
|
23
26
|
spec.ignore 'wxSizerItem::wxSizerItem'
|
|
27
|
+
# needs more discriminating return type for type map
|
|
28
|
+
spec.ignore 'wxSizerItem::GetUserData', ignore_doc: false
|
|
29
|
+
spec.add_header_code 'typedef wxObject* WxUserDataObject;'
|
|
30
|
+
spec.extend_interface 'wxSizerItem',
|
|
31
|
+
'WxUserDataObject GetUserData() const'
|
|
32
|
+
# for doc gen only
|
|
33
|
+
spec.map 'wxObject*' => 'Object', swig: false do
|
|
34
|
+
map_out code: ''
|
|
35
|
+
end
|
|
24
36
|
spec.ignore(%w[wxSizerItem::SetSizer wxSizerItem::SetSpacer wxSizerItem::SetWindow])
|
|
25
37
|
# need to adjust sizer arg name to apply disown specs
|
|
26
38
|
spec.ignore 'wxSizerItem::AssignSizer(wxSizer *)', ignore_doc: false
|
|
@@ -45,6 +57,7 @@ module WXRuby3
|
|
|
45
57
|
}
|
|
46
58
|
__HEREDOC
|
|
47
59
|
when 'wxGBSizerItem'
|
|
60
|
+
spec.gc_as_untracked 'wxGBSizerItem'
|
|
48
61
|
spec.make_abstract 'wxGBSizerItem'
|
|
49
62
|
# ignore constructors
|
|
50
63
|
spec.ignore 'wxGBSizerItem::wxGBSizerItem',
|
|
@@ -20,6 +20,38 @@ module WXRuby3
|
|
|
20
20
|
__HEREDOC
|
|
21
21
|
super
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
def process(gendoc: false)
|
|
25
|
+
defmod = super
|
|
26
|
+
spec.include 'wx/generic/statbmpg.h'
|
|
27
|
+
def_statbmp = defmod.find_item('wxStaticBitmap')
|
|
28
|
+
# create a definition for 'wxGenericStaticBitmap' which is not documented
|
|
29
|
+
def_genstatbmp = def_statbmp.dup
|
|
30
|
+
def_genstatbmp.name = 'wxGenericStaticBitmap'
|
|
31
|
+
def_genstatbmp.brief_doc = nil
|
|
32
|
+
def_genstatbmp.detailed_doc = nil
|
|
33
|
+
def_genstatbmp.items = def_genstatbmp.items.collect { |itm| itm.dup }
|
|
34
|
+
def_genstatbmp.items.each do |itm|
|
|
35
|
+
if itm.is_a?(Extractor::MethodDef)
|
|
36
|
+
itm.overloads = itm.overloads.collect { |ovl| ovl.dup }
|
|
37
|
+
itm.all.each do |ovl|
|
|
38
|
+
ovl.name = 'wxGenericStaticBitmap' if ovl.is_ctor
|
|
39
|
+
ovl.class_name = 'wxGenericStaticBitmap'
|
|
40
|
+
ovl.update_attributes(klass: def_genstatbmp)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
def_genstatbmp.items.delete_if { |itm| itm.is_a?(Extractor::EnumDef) && itm.name == 'ScaleMode' }
|
|
45
|
+
spec.add_swig_code %Q{typedef wxStaticBitmap::ScaleMode ScaleMode; }
|
|
46
|
+
spec.add_header_code %Q{typedef wxStaticBitmap::ScaleMode ScaleMode; }
|
|
47
|
+
defmod.items << def_genstatbmp
|
|
48
|
+
# as we already called super before adding wxGenericStaticBitmap the no_proxy settings from the
|
|
49
|
+
# base Window director are missing; just copy all those set for wxStaticBitmap
|
|
50
|
+
list = spec.no_proxies.select { |name| name.start_with?('wxStaticBitmap::') }
|
|
51
|
+
spec.no_proxy(*list.collect { |name| name.sub(/\AwxStaticBitmap::/, 'wxGenericStaticBitmap::')})
|
|
52
|
+
defmod
|
|
53
|
+
end
|
|
54
|
+
|
|
23
55
|
end # class StaticBitmap
|
|
24
56
|
|
|
25
57
|
end # class Director
|
|
@@ -15,7 +15,7 @@ module WXRuby3
|
|
|
15
15
|
def setup
|
|
16
16
|
super
|
|
17
17
|
spec.items << 'wxTextCompleter' << 'wxTextCompleterSimple'
|
|
18
|
-
spec.
|
|
18
|
+
spec.gc_as_marked 'wxTextCompleter', 'wxTextCompleterSimple' # untracked but cached in Ruby
|
|
19
19
|
spec.gc_as_untracked 'wxTextEntry' # actually no GC control necessary as this is a mixin only
|
|
20
20
|
# turn wxTextEntry into a mixin module
|
|
21
21
|
spec.make_mixin 'wxTextEntry'
|
|
@@ -26,6 +26,10 @@ module WXRuby3
|
|
|
26
26
|
spec.add_header_code '#define wxTextEntry wxTextEntryBase'
|
|
27
27
|
spec.disown 'wxTextCompleter *completer' # managed by wxWidgets after passing in
|
|
28
28
|
spec.map_apply 'long * OUTPUT' => 'long *' # for GetSelection
|
|
29
|
+
# missing non-pure virtual overrides in docs for wxTextCompleterSimple
|
|
30
|
+
spec.extend_interface 'wxTextCompleterSimple',
|
|
31
|
+
'virtual bool Start(const wxString &prefix)',
|
|
32
|
+
'virtual wxString GetNext()'
|
|
29
33
|
# for wxTextCompleterSimple::GetCompletions
|
|
30
34
|
spec.map 'wxArrayString &res' => 'Array<String>' do
|
|
31
35
|
|
|
@@ -6,48 +6,159 @@
|
|
|
6
6
|
# wxRuby3 wxWidgets interface director
|
|
7
7
|
###
|
|
8
8
|
|
|
9
|
-
require_relative './
|
|
9
|
+
require_relative './validator'
|
|
10
10
|
|
|
11
11
|
module WXRuby3
|
|
12
12
|
|
|
13
13
|
class Director
|
|
14
14
|
|
|
15
|
-
class TextValidator <
|
|
15
|
+
class TextValidator < Validator
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
19
|
# need a custom implementation to handle event handler proc cleanup
|
|
20
20
|
spec.add_header_code <<~__HEREDOC
|
|
21
|
-
class WXRubyTextValidator : public wxTextValidator
|
|
21
|
+
class WXRubyTextValidator : public wxTextValidator, public wxRubyValidatorBinding
|
|
22
22
|
{
|
|
23
23
|
public:
|
|
24
|
-
WXRubyTextValidator(const wxTextValidator& v)
|
|
25
|
-
: wxTextValidator(v) {}
|
|
26
24
|
WXRubyTextValidator(long style=wxFILTER_NONE)
|
|
27
|
-
: wxTextValidator(style)
|
|
25
|
+
: wxTextValidator(style, &m_valueCache)
|
|
26
|
+
{
|
|
27
|
+
}
|
|
28
|
+
WXRubyTextValidator(const WXRubyTextValidator& other)
|
|
29
|
+
: wxTextValidator(other.GetStyle(), &m_valueCache)
|
|
30
|
+
, wxRubyValidatorBinding(other)
|
|
31
|
+
{
|
|
32
|
+
}
|
|
28
33
|
virtual ~WXRubyTextValidator()
|
|
29
34
|
{
|
|
30
35
|
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
31
|
-
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
virtual wxObject* Clone() const override
|
|
39
|
+
{
|
|
40
|
+
WXRubyTextValidator* clone = new WXRubyTextValidator(*this);
|
|
41
|
+
clone->m_valueCache = this->m_valueCache;
|
|
42
|
+
return clone;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
virtual void SetWindow(wxWindow *win) override
|
|
46
|
+
{
|
|
47
|
+
this->wxTextValidator::SetWindow(win);
|
|
48
|
+
VALUE self = this->get_self();
|
|
49
|
+
// make sure Ruby does not own this validator instance anymore
|
|
50
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
virtual bool TransferFromWindow () override
|
|
54
|
+
{
|
|
55
|
+
// call super
|
|
56
|
+
if (this->wxTextValidator::TransferFromWindow())
|
|
57
|
+
{
|
|
58
|
+
// ok, data is retrieved from window and cached
|
|
59
|
+
// now allow any defined binding handler to pass on the data
|
|
60
|
+
return this->DoOnTransferFromWindow(WXSTR_TO_RSTR(m_valueCache));
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
virtual bool TransferToWindow () override
|
|
65
|
+
{
|
|
66
|
+
// collect data from any defined binding handler
|
|
67
|
+
VALUE data = this->DoOnTransferToWindow();
|
|
68
|
+
// if Qnil returned there is no data returned from handler so we just keep what's in the store
|
|
69
|
+
if (!NIL_P(data))
|
|
70
|
+
{
|
|
71
|
+
m_valueCache = RSTR_TO_WXSTR(data);
|
|
72
|
+
}
|
|
73
|
+
// now allow standard functionality to transfer to window
|
|
74
|
+
return this->wxTextValidator::TransferToWindow();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const wxString& GetValue () const
|
|
78
|
+
{
|
|
79
|
+
return m_valueCache;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
void SetValue (const wxString& val)
|
|
83
|
+
{
|
|
84
|
+
m_valueCache = val;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private:
|
|
88
|
+
static VALUE c_TextValidator;
|
|
89
|
+
|
|
90
|
+
virtual VALUE get_self() override
|
|
91
|
+
{
|
|
92
|
+
if (NIL_P(this->self_))
|
|
93
|
+
{
|
|
94
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
95
|
+
// if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
|
|
96
|
+
if (NIL_P(this->self_))
|
|
97
|
+
{
|
|
98
|
+
if (NIL_P(c_TextValidator))
|
|
99
|
+
{
|
|
100
|
+
c_TextValidator = rb_const_get(mWxCore, rb_intern("TextValidator"));
|
|
101
|
+
}
|
|
102
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_TextValidator);
|
|
103
|
+
this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return this->self_;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
wxString m_valueCache;
|
|
32
110
|
};
|
|
33
|
-
|
|
111
|
+
|
|
112
|
+
VALUE WXRubyTextValidator::c_TextValidator = Qnil;
|
|
113
|
+
|
|
114
|
+
static void GC_mark_wxTextValidator(void* ptr)
|
|
115
|
+
{
|
|
116
|
+
if (ptr)
|
|
117
|
+
{
|
|
118
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
119
|
+
WXRubyTextValidator* rbvp = dynamic_cast<WXRubyTextValidator*> (vp);
|
|
120
|
+
// This might be a pointer to a non-customized validator (or clone thereof) created internally
|
|
121
|
+
// by wxWidgets C++ code
|
|
122
|
+
if (rbvp) rbvp->GC_Mark();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
__HEREDOC
|
|
127
|
+
spec.add_swig_code '%markfunc wxTextValidator "GC_mark_wxTextValidator";'
|
|
128
|
+
# make Ruby director and wrappers use custom implementation
|
|
34
129
|
spec.use_class_implementation 'wxTextValidator', 'WXRubyTextValidator'
|
|
35
|
-
# ignore copy ctor doc
|
|
36
|
-
spec.regard 'wxTextValidator::wxTextValidator(const wxTextValidator&)', regard_doc: false
|
|
37
130
|
# ignore this ctor
|
|
38
131
|
spec.ignore 'wxTextValidator::wxTextValidator(long, wxString*)'
|
|
39
132
|
# add alternative
|
|
40
133
|
spec.extend_interface 'wxTextValidator', 'wxTextValidator(long style=wxFILTER_NONE)'
|
|
41
|
-
#
|
|
134
|
+
# add wxRuby extensions
|
|
135
|
+
spec.add_extend_code 'wxTextValidator', <<~__HEREDOC
|
|
136
|
+
VALUE GetValue()
|
|
137
|
+
{
|
|
138
|
+
WXRubyTextValidator* rb_self = dynamic_cast<WXRubyTextValidator*> ($self);
|
|
139
|
+
if (rb_self)
|
|
140
|
+
return WXSTR_TO_RSTR(rb_self->GetValue());
|
|
141
|
+
else
|
|
142
|
+
return Qnil;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
void SetValue(const wxString& val)
|
|
146
|
+
{
|
|
147
|
+
WXRubyTextValidator* rb_self = dynamic_cast<WXRubyTextValidator*> ($self);
|
|
148
|
+
if (rb_self)
|
|
149
|
+
rb_self->SetValue(val);
|
|
150
|
+
}
|
|
151
|
+
__HEREDOC
|
|
152
|
+
# ignore non-virtual standard handler (not useful in Ruby)
|
|
42
153
|
spec.ignore 'wxTextValidator::OnChar'
|
|
43
|
-
spec.no_proxy 'wxTextValidator::Clone'
|
|
44
154
|
spec.new_object 'wxTextValidator::Clone'
|
|
45
155
|
# handle clone mapping
|
|
46
156
|
spec.map 'wxObject *' => 'Wx::TextValidator' do
|
|
47
157
|
map_out code: <<~__CODE
|
|
48
|
-
$result = SWIG_NewPointerObj(SWIG_as_voidptr($1), SWIGTYPE_p_wxTextValidator, SWIG_POINTER_OWN
|
|
158
|
+
$result = SWIG_NewPointerObj(SWIG_as_voidptr($1), SWIGTYPE_p_wxTextValidator, SWIG_POINTER_OWN);
|
|
49
159
|
__CODE
|
|
50
160
|
end
|
|
161
|
+
spec.suppress_warning(473, 'wxTextValidator::Clone')
|
|
51
162
|
# not provided in Ruby
|
|
52
163
|
spec.ignore %w[wxTextValidator::TransferFromWindow wxTextValidator::TransferToWindow]
|
|
53
164
|
end
|
|
@@ -26,10 +26,8 @@ module WXRuby3
|
|
|
26
26
|
# for upcalls
|
|
27
27
|
spec.extend_interface('wxTopLevelWindow',
|
|
28
28
|
'virtual bool Destroy() override',
|
|
29
|
-
#'virtual bool IsTopLevel() override',
|
|
30
29
|
'virtual void SetLayoutDirection(wxLayoutDirection dir) override',
|
|
31
30
|
'virtual bool Show(bool show = true) override',
|
|
32
|
-
'virtual void Raise() override',
|
|
33
31
|
'virtual void Refresh(bool eraseBackground = true, wxRect const *rect = NULL) override')
|
|
34
32
|
spec.add_wrapper_code <<~__HEREDOC
|
|
35
33
|
extern VALUE wxRuby_GetTopLevelWindowClass() {
|
|
@@ -50,6 +50,41 @@ module WXRuby3
|
|
|
50
50
|
wxTreeCtrl::GetFirstChild
|
|
51
51
|
wxTreeCtrl::GetNextChild
|
|
52
52
|
]
|
|
53
|
+
if Config.instance.wx_version >= '3.3.0'
|
|
54
|
+
# new method with bitmap bundle vector
|
|
55
|
+
spec.no_proxy 'wxTreeCtrl::SetStateImages'
|
|
56
|
+
spec.map 'const wxVector<wxBitmapBundle>& images' => 'Array<Wx::ImageBundle>' do
|
|
57
|
+
map_in temp: 'wxVector<wxBitmapBundle> tmp', code: <<~__CODE
|
|
58
|
+
if ($input != Qnil)
|
|
59
|
+
{
|
|
60
|
+
if (TYPE($input) == T_ARRAY)
|
|
61
|
+
{
|
|
62
|
+
for (int i=0; i<RARRAY_LEN($input) ;++i)
|
|
63
|
+
{
|
|
64
|
+
void* ptr;
|
|
65
|
+
VALUE rb_image = rb_ary_entry($input, i);
|
|
66
|
+
int res = SWIG_ConvertPtr(rb_image, &ptr, wxRuby_GetSwigTypeForClassName("BitmapBundle"), 0);
|
|
67
|
+
if (!SWIG_IsOK(res))
|
|
68
|
+
{
|
|
69
|
+
VALUE msg = rb_inspect(rb_image);
|
|
70
|
+
rb_raise(rb_eTypeError, "Expected Wx::ImageBundle at index %d but got %s", i, StringValuePtr(msg));
|
|
71
|
+
}
|
|
72
|
+
tmp.push_back(*static_cast<wxBitmapBundle*>(ptr));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else
|
|
76
|
+
{
|
|
77
|
+
VALUE msg = rb_inspect($input);
|
|
78
|
+
rb_raise(rb_eArgError, "Expected Array of Wx::ImageBundle for $argnum but got %s", StringValuePtr(msg));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
$1 = &tmp;
|
|
82
|
+
__CODE
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
# don't see how supporting overloading this one in Ruby is helpful
|
|
86
|
+
# (also seeing SetButtonsImageList isn't virtual at all)
|
|
87
|
+
spec.no_proxy 'wxTreeCtrl::SetStateImageList'
|
|
53
88
|
# these are potentially involved in GC mark phase so
|
|
54
89
|
# we can't have them redirecting to Ruby calls
|
|
55
90
|
spec.no_proxy %w[
|
|
@@ -41,8 +41,22 @@ module WXRuby3
|
|
|
41
41
|
wxNow
|
|
42
42
|
wxDecToHex
|
|
43
43
|
wxHexToDec
|
|
44
|
-
wxStripMenuCodes
|
|
45
44
|
]
|
|
45
|
+
# ignore these enum(erator)s
|
|
46
|
+
spec.ignore %w[
|
|
47
|
+
wxSignal
|
|
48
|
+
wxKillError
|
|
49
|
+
wxKillFlags
|
|
50
|
+
wxShutdownFlags
|
|
51
|
+
@.wxEXEC_ASYNC
|
|
52
|
+
@.wxEXEC_SYNC
|
|
53
|
+
@.wxEXEC_SHOW_CONSOLE
|
|
54
|
+
@.wxEXEC_MAKE_GROUP_LEADER
|
|
55
|
+
@.wxEXEC_NODISABLE
|
|
56
|
+
@.wxEXEC_NOEVENTS
|
|
57
|
+
@.wxEXEC_HIDE_CONSOLE
|
|
58
|
+
@.wxEXEC_BLOCK
|
|
59
|
+
]
|
|
46
60
|
spec.ignore 'wxPostDelete' unless Config.instance.wx_version >= '3.3.0'
|
|
47
61
|
spec.ignore 'wxGetEmailAddress(char *,int)',
|
|
48
62
|
'wxGetUserId(char *,int)',
|
|
@@ -53,7 +67,7 @@ module WXRuby3
|
|
|
53
67
|
__CODE
|
|
54
68
|
end
|
|
55
69
|
# we want only the functions that are not ignored
|
|
56
|
-
spec.do_not_generate(:classes, :typedefs, :variables, :
|
|
70
|
+
spec.do_not_generate(:classes, :typedefs, :variables, :defines)
|
|
57
71
|
super
|
|
58
72
|
end
|
|
59
73
|
end # class Utils
|
|
@@ -16,29 +16,204 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
wxRubyValidator
|
|
27
|
-
|
|
19
|
+
if spec.module_name == 'wxValidator'
|
|
20
|
+
# make Ruby director and wrappers use custom implementation
|
|
21
|
+
spec.use_class_implementation('wxValidator', 'wxRubyValidator')
|
|
22
|
+
# provide custom wxRuby derivative of validator
|
|
23
|
+
spec.add_header_code <<~__HEREDOC
|
|
24
|
+
#include "wxruby-Validator.h"
|
|
25
|
+
|
|
26
|
+
WxRuby_ID wxRubyValidator::do_transfer_from_window_id("do_transfer_from_window");
|
|
27
|
+
WxRuby_ID wxRubyValidator::do_transfer_to_window_id("do_transfer_to_window");
|
|
28
|
+
WxRuby_ID wxRubyValidator::clone_id("clone");
|
|
29
|
+
|
|
30
|
+
wxRubyValidator::wxRubyValidator ()
|
|
31
|
+
: wxValidator ()
|
|
32
|
+
, wxRubyValidatorBinding ()
|
|
33
|
+
{}
|
|
34
|
+
wxRubyValidator::wxRubyValidator (const wxRubyValidator& v)
|
|
35
|
+
: wxValidator (v)
|
|
36
|
+
, wxRubyValidatorBinding (v)
|
|
37
|
+
{}
|
|
38
|
+
wxRubyValidator::~wxRubyValidator ()
|
|
28
39
|
{
|
|
29
40
|
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
wxObject* wxRubyValidator::Clone() const
|
|
44
|
+
{
|
|
45
|
+
bool ex_caught = false;
|
|
46
|
+
VALUE self = const_cast<wxRubyValidator*> (this)->get_self();
|
|
47
|
+
VALUE rc = wxRuby_Funcall(ex_caught, self, clone_id(), 0);
|
|
48
|
+
if (ex_caught)
|
|
49
|
+
{
|
|
50
|
+
throw Swig::DirectorRubyException(rc, self, clone_id());
|
|
51
|
+
}
|
|
52
|
+
void *ptr;
|
|
53
|
+
int res = SWIG_ConvertPtr(rc, &ptr, SWIGTYPE_p_wxValidator, 0);
|
|
54
|
+
if (!SWIG_IsOK(res))
|
|
55
|
+
{
|
|
56
|
+
Swig::DirectorTypeMismatchException::raise(self, "clone", SWIG_ErrorType(SWIG_ArgError(res)), "in output value of type '""Wx::Validator *""'");
|
|
57
|
+
}
|
|
58
|
+
return reinterpret_cast< wxValidator * >(ptr);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void wxRubyValidator::SetWindow(wxWindow *win)
|
|
62
|
+
{
|
|
63
|
+
this->wxValidator::SetWindow(win);
|
|
64
|
+
VALUE self = this->get_self();
|
|
65
|
+
// make sure Ruby does not own this validator instance anymore
|
|
66
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
bool wxRubyValidator::TransferFromWindow()
|
|
70
|
+
{
|
|
71
|
+
return this->DoOnTransferFromWindow(this->DoTransferFromWindow());
|
|
72
|
+
}
|
|
73
|
+
bool wxRubyValidator::TransferToWindow()
|
|
74
|
+
{
|
|
75
|
+
return this->DoTransferToWindow(this->DoOnTransferToWindow());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
VALUE wxRubyValidator::DoTransferFromWindow()
|
|
79
|
+
{
|
|
80
|
+
bool ex_caught = false;
|
|
81
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->get_self(), do_transfer_from_window_id(), 0);
|
|
82
|
+
if (ex_caught)
|
|
83
|
+
{
|
|
84
|
+
throw Swig::DirectorRubyException(rc, this->get_self(), do_transfer_from_window_id());
|
|
85
|
+
}
|
|
86
|
+
return rc;
|
|
87
|
+
}
|
|
88
|
+
bool wxRubyValidator::DoTransferToWindow(VALUE data)
|
|
89
|
+
{
|
|
90
|
+
bool ex_caught = false;
|
|
91
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->get_self(), do_transfer_to_window_id(), 1, data);
|
|
92
|
+
if (ex_caught)
|
|
93
|
+
{
|
|
94
|
+
throw Swig::DirectorRubyException(rc, this->get_self(), do_transfer_to_window_id());
|
|
95
|
+
}
|
|
96
|
+
return (rc == Qtrue);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
VALUE wxRubyValidator::get_self()
|
|
100
|
+
{
|
|
101
|
+
if (NIL_P(this->self_))
|
|
102
|
+
{
|
|
103
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
104
|
+
}
|
|
105
|
+
return this->self_;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
WxRuby_ID wxRubyValidatorBinding::do_on_transfer_from_window_id("do_on_transfer_from_window");
|
|
109
|
+
WxRuby_ID wxRubyValidatorBinding::do_on_transfer_to_window_id("do_on_transfer_to_window");
|
|
110
|
+
WxRuby_ID wxRubyValidatorBinding::call_id("call");
|
|
111
|
+
|
|
112
|
+
bool wxRubyValidatorBinding::DoOnTransferFromWindow(VALUE data)
|
|
113
|
+
{
|
|
114
|
+
bool ex_caught = false;
|
|
115
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->get_self(), do_on_transfer_from_window_id(), 1, data);
|
|
116
|
+
if (ex_caught)
|
|
117
|
+
{
|
|
118
|
+
throw Swig::DirectorRubyException(rc, this->get_self(), do_on_transfer_from_window_id());
|
|
119
|
+
}
|
|
120
|
+
return (rc == Qtrue);
|
|
121
|
+
}
|
|
122
|
+
VALUE wxRubyValidatorBinding::DoOnTransferToWindow()
|
|
123
|
+
{
|
|
124
|
+
bool ex_caught = false;
|
|
125
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->get_self(), do_on_transfer_to_window_id(), 0);
|
|
126
|
+
if (ex_caught)
|
|
127
|
+
{
|
|
128
|
+
throw Swig::DirectorRubyException(rc, this->get_self(), do_on_transfer_to_window_id());
|
|
129
|
+
}
|
|
130
|
+
return rc;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
bool wxRubyValidatorBinding::OnTransferFromWindow(VALUE data)
|
|
134
|
+
{
|
|
135
|
+
if (!NIL_P(this->on_transfer_from_win_proc_))
|
|
136
|
+
{
|
|
137
|
+
bool ex_caught = false;
|
|
138
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->on_transfer_from_win_proc_, call_id(), 1, data);
|
|
139
|
+
if (ex_caught)
|
|
140
|
+
{
|
|
141
|
+
throw Swig::DirectorRubyException(rc, this->on_transfer_from_win_proc_, call_id());
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
VALUE wxRubyValidatorBinding::OnTransferToWindow()
|
|
147
|
+
{
|
|
148
|
+
if (!NIL_P(this->on_transfer_to_win_proc_))
|
|
149
|
+
{
|
|
150
|
+
bool ex_caught = false;
|
|
151
|
+
VALUE rc = wxRuby_Funcall(ex_caught, this->on_transfer_to_win_proc_, call_id(), 0);
|
|
152
|
+
if (ex_caught)
|
|
153
|
+
{
|
|
154
|
+
throw Swig::DirectorRubyException(rc, this->on_transfer_to_win_proc_, call_id());
|
|
155
|
+
}
|
|
156
|
+
return rc;
|
|
157
|
+
}
|
|
158
|
+
return Qnil;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
void wxRubyValidatorBinding::CopyBindings(const wxRubyValidatorBinding* val_bind)
|
|
162
|
+
{
|
|
163
|
+
if (val_bind)
|
|
164
|
+
{
|
|
165
|
+
this->on_transfer_from_win_proc_ = val_bind->on_transfer_from_win_proc_;
|
|
166
|
+
this->on_transfer_to_win_proc_ = val_bind->on_transfer_to_win_proc_;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static void GC_mark_wxValidator(void* ptr)
|
|
171
|
+
{
|
|
172
|
+
if (ptr)
|
|
173
|
+
{
|
|
174
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
175
|
+
wxRubyValidator* rbvp = dynamic_cast<wxRubyValidator*> (vp);
|
|
176
|
+
// This might be a pointer to the global constant wxDefaultValidator or one of it's clones
|
|
177
|
+
// which are not wxRubyValidator-s
|
|
178
|
+
if (rbvp) rbvp->GC_Mark();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
__HEREDOC
|
|
182
|
+
spec.add_swig_code '%markfunc wxValidator "GC_mark_wxValidator";'
|
|
183
|
+
# will be provided as a pure Ruby method
|
|
184
|
+
spec.ignore 'wxValidator::Clone', ignore_doc: false
|
|
185
|
+
# add wxRuby specifics
|
|
186
|
+
spec.extend_interface 'wxValidator',
|
|
187
|
+
'wxValidator(const wxValidator& other)'
|
|
188
|
+
spec.add_extend_code 'wxValidator', <<~__HEREDOC
|
|
189
|
+
void OnTransferFromWindow(VALUE proc)
|
|
190
|
+
{
|
|
191
|
+
dynamic_cast<wxRubyValidatorBinding *>($self)->SetOnTransferFromWindow(proc);
|
|
192
|
+
}
|
|
193
|
+
void OnTransferToWindow(VALUE proc)
|
|
194
|
+
{
|
|
195
|
+
dynamic_cast<wxRubyValidatorBinding *>($self)->SetOnTransferToWindow(proc);
|
|
196
|
+
}
|
|
197
|
+
bool DoOnTransferFromWindow(VALUE data)
|
|
198
|
+
{
|
|
199
|
+
return dynamic_cast<wxRubyValidatorBinding *>($self)->OnTransferFromWindow(data);
|
|
200
|
+
}
|
|
201
|
+
VALUE DoOnTransferToWindow()
|
|
202
|
+
{
|
|
203
|
+
return dynamic_cast<wxRubyValidatorBinding *>($self)->OnTransferToWindow();
|
|
204
|
+
}
|
|
205
|
+
__HEREDOC
|
|
206
|
+
# not provided in Ruby
|
|
207
|
+
spec.ignore %w[wxValidator::TransferFromWindow wxValidator::TransferToWindow wxValidator::SetWindow]
|
|
208
|
+
else
|
|
209
|
+
spec.add_header_code <<~__HEREDOC
|
|
210
|
+
#include "wxruby-ValidatorBinding.h"
|
|
211
|
+
__HEREDOC
|
|
212
|
+
end
|
|
213
|
+
# overrule common typemap for parent arg of Validate
|
|
214
|
+
spec.map 'wxWindow* parent' do
|
|
215
|
+
map_check code: ''
|
|
216
|
+
end
|
|
42
217
|
end
|
|
43
218
|
end # class Validator
|
|
44
219
|
|