wxruby3 0.9.2 → 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/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -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/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/combobox.rb +13 -3
- 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/owner_drawn_combobox.rb +45 -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/validator.rb +70 -5
- data/lib/wx/core/window.rb +3 -7
- data/lib/wx/doc/art_locator.rb +1 -0
- data/lib/wx/doc/comboctrl.rb +18 -0
- 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/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/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/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/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 +17 -2
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec_helper.rb +7 -1
- 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/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_handler.rb +3 -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 +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/header_ctrl.rb +6 -1
- data/rakelib/lib/director/html_listbox.rb +96 -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/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 +28 -0
- data/rakelib/lib/director/text_entry.rb +4 -0
- 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 +1 -1
- data/rakelib/lib/generate/doc.rb +10 -4
- data/rakelib/lib/specs/interfaces.rb +2 -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/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 +1233 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- 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_sizer.rb +44 -1
- data/tests/test_validators.rb +805 -0
- metadata +92 -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
@@ -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
|
|
@@ -66,8 +66,6 @@ module WXRuby3
|
|
66
66
|
__CODE
|
67
67
|
end
|
68
68
|
spec.ignore [
|
69
|
-
'wxWindow::TransferDataFromWindow',
|
70
|
-
'wxWindow::TransferDataToWindow',
|
71
69
|
'wxWindow::PopEventHandler',
|
72
70
|
'wxWindow::SetConstraints',
|
73
71
|
'wxWindow::GetHandle',
|
@@ -81,6 +79,9 @@ module WXRuby3
|
|
81
79
|
'wxWindow::SendIdleEvents',
|
82
80
|
'wxWindow::ClientToScreen(int*,int*)', # no need; prefer the wxPoint version
|
83
81
|
'wxWindow::ScreenToClient(int*,int*)', # no need; prefer the wxPoint version
|
82
|
+
# provide (non-virtual) renamed alternatives (prevent Ruby keyword/standard clash)
|
83
|
+
'wxWindow::Raise',
|
84
|
+
'wxWindow::Lower'
|
84
85
|
]
|
85
86
|
# no real docs and can't find actual examples of usage; ignore
|
86
87
|
spec.ignore 'wxWindow::GetConstraints', 'wxWindow::SetConstraints'
|
@@ -91,6 +92,15 @@ module WXRuby3
|
|
91
92
|
map_check code: ''
|
92
93
|
end
|
93
94
|
spec.add_extend_code 'wxWindow', <<~__HEREDOC
|
95
|
+
void raise_window()
|
96
|
+
{
|
97
|
+
$self->Raise();
|
98
|
+
}
|
99
|
+
void lower_window()
|
100
|
+
{
|
101
|
+
$self->Lower();
|
102
|
+
}
|
103
|
+
|
94
104
|
static wxWindow* find_window_by_id(long id, const wxWindow *find_from_parent=0)
|
95
105
|
{
|
96
106
|
return wxWindow::FindWindowById(id, find_from_parent);
|
@@ -269,9 +279,13 @@ module WXRuby3
|
|
269
279
|
"#{spec.class_name(citem)}::SetAcceleratorTable",
|
270
280
|
"#{spec.class_name(citem)}::SetBackgroundColour",
|
271
281
|
"#{spec.class_name(citem)}::SetBackgroundStyle",
|
282
|
+
"#{spec.class_name(citem)}::HasTransparentBackground",
|
272
283
|
"#{spec.class_name(citem)}::SetCursor",
|
273
284
|
"#{spec.class_name(citem)}::SetFocus",
|
274
285
|
"#{spec.class_name(citem)}::SetFocusFromKbd",
|
286
|
+
"#{spec.class_name(citem)}::AcceptsFocus",
|
287
|
+
"#{spec.class_name(citem)}::AcceptsFocusRecursively",
|
288
|
+
"#{spec.class_name(citem)}::AcceptsFocusFromKeyboard",
|
275
289
|
"#{spec.class_name(citem)}::SetFont",
|
276
290
|
"#{spec.class_name(citem)}::SetForegroundColour",
|
277
291
|
"#{spec.class_name(citem)}::SetHelpText",
|
@@ -95,8 +95,9 @@ module WXRuby3
|
|
95
95
|
params_doc.unlink if params_doc
|
96
96
|
# get brief doc
|
97
97
|
doc = xml_trans.to_doc(@brief_doc, item: self)
|
98
|
+
doc << "\n" if @detailed_doc # force empty line (paragraph break) between summary and detail
|
98
99
|
# add detailed doc text without params doc
|
99
|
-
doc << xml_trans.to_doc(@detailed_doc, item: self, desc: :detail)
|
100
|
+
doc << xml_trans.to_doc(@detailed_doc, item: self, desc: :detail) if @detailed_doc
|
100
101
|
# get mapped ruby parameter list
|
101
102
|
params = []
|
102
103
|
mapped_ret_args = nil
|
@@ -366,7 +366,7 @@ module WXRuby3
|
|
366
366
|
type_list = [type]
|
367
367
|
type_list << "#{enum_scope}::#{type.split('::').pop}" unless enum_scope.empty?
|
368
368
|
rb_enum_name = if !enum_scope.empty?
|
369
|
-
"#{enum_scope}::#{rb_wx_name(type.split('::').pop)}"
|
369
|
+
"#{rb_wx_name(enum_scope)}::#{rb_wx_name(type.split('::').pop)}"
|
370
370
|
else
|
371
371
|
rb_wx_name(type)
|
372
372
|
end
|
data/rakelib/lib/generate/doc.rb
CHANGED
@@ -253,7 +253,7 @@ module WXRuby3
|
|
253
253
|
<div class="wxrb-remark">
|
254
254
|
<b>Remark:</b>
|
255
255
|
<p>#{node_to_doc(node)}</p>
|
256
|
-
</div
|
256
|
+
</div>
|
257
257
|
__NOTE
|
258
258
|
else
|
259
259
|
node_to_doc(node)
|
@@ -861,6 +861,7 @@ module WXRuby3
|
|
861
861
|
|
862
862
|
def get_class_doc(cls)
|
863
863
|
doc = @xml_trans.to_doc(cls.brief_doc, item: cls)
|
864
|
+
doc << "\n" if cls.detailed_doc # force empty line (paragraph break) between summary and detail
|
864
865
|
doc << @xml_trans.to_doc(cls.detailed_doc, item: cls, desc: :detail) if cls.detailed_doc
|
865
866
|
doc
|
866
867
|
end
|
@@ -900,6 +901,8 @@ module WXRuby3
|
|
900
901
|
fdoc.doc.indent { gen_item_requirements(fdoc, ovl) }
|
901
902
|
end
|
902
903
|
fdoc.puts "def #{name}(*args) end"
|
904
|
+
# in case all overloads were ignored there will be no SWIG generated alias
|
905
|
+
no_gen_alias = docs.all? { |ovl, _, _| ovl.ignored }
|
903
906
|
else
|
904
907
|
mtd, params, doc = docs.shift
|
905
908
|
fdoc.doc.puts doc
|
@@ -909,9 +912,11 @@ module WXRuby3
|
|
909
912
|
else
|
910
913
|
fdoc.puts "def #{name}(#{params}) end"
|
911
914
|
end
|
915
|
+
# in case the documented method was ignored there will be no SWIG generated alias
|
916
|
+
no_gen_alias = mtd.ignored
|
912
917
|
end
|
913
|
-
# check for SWIG generated aliases
|
914
|
-
if alias_methods.has_key?(cm.name)
|
918
|
+
# check for SWIG generated aliases (skip ignored method defs as these will not have SWIG generated aliases)
|
919
|
+
if !no_gen_alias && alias_methods.has_key?(cm.name)
|
915
920
|
fdoc.puts "alias_method :#{alias_methods[cm.name]}, :#{name}"
|
916
921
|
else
|
917
922
|
# check for aliases that will be available from WxRubyStyleAccessors at runtime
|
@@ -920,7 +925,8 @@ module WXRuby3
|
|
920
925
|
when /\Aget_(\w+)/
|
921
926
|
$1
|
922
927
|
when /\Aset_(\w+)/
|
923
|
-
if
|
928
|
+
# only document alias if at least 1 method overload has a single required argument
|
929
|
+
if docs.any? { |ovl, _, _| ovl.parameter_count > 0 && ovl.required_param_count < 2 }
|
924
930
|
"#{$1}="
|
925
931
|
else
|
926
932
|
nil
|
@@ -56,6 +56,7 @@ module WXRuby3
|
|
56
56
|
Director.Spec(pkg, 'wxCaret')
|
57
57
|
Director.Spec(pkg, 'wxValidator', requirements: %[USE_VALIDATORS])
|
58
58
|
Director.Spec(pkg, 'wxTextValidator', requirements: %[USE_VALIDATORS])
|
59
|
+
Director.Spec(pkg, 'wxNumValidator', requirements: %[USE_VALIDATORS])
|
59
60
|
Director.Spec(pkg, 'wxAccelerator', requirements: %w[USE_ACCEL])
|
60
61
|
Director.Spec(pkg, 'wxMenuItem', requirements: %w[USE_MENUS])
|
61
62
|
Director.Spec(pkg, 'wxMenuBar', requirements: %w[USE_MENUBAR])
|
@@ -80,6 +81,7 @@ module WXRuby3
|
|
80
81
|
Director.Spec(pkg, 'wxComboBox', requirements: %w[USE_COMBOBOX])
|
81
82
|
Director.Spec(pkg, 'wxBitmapComboBox', requirements: %w[USE_BITMAPCOMBOBOX])
|
82
83
|
Director.Spec(pkg, 'wxComboCtrl', requirements: %w[USE_COMBOCTRL])
|
84
|
+
Director.Spec(pkg, 'wxOwnerDrawnComboBox', requirements: %w[USE_ODCOMBOBOX ])
|
83
85
|
Director.Spec(pkg, 'wxRadioBox', requirements: %w[USE_RADIOBOX])
|
84
86
|
Director.Spec(pkg, 'wxPanel')
|
85
87
|
Director.Spec(pkg, 'wxWithImages')
|
data/rakelib/lib/swig_runner.rb
CHANGED
@@ -404,29 +404,63 @@ module WXRuby3
|
|
404
404
|
dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| cd.name }.join('|')
|
405
405
|
# create regexp for Director constructors (may not exist if no proxies are enabled)
|
406
406
|
dir_ctor_re = /SwigDirector_\w+::SwigDirector_\w+\(.*\)\s*:\s*(#{dir_cls_re_txt})\(.*\)\s*,\s*Swig::Director.*{/
|
407
|
+
# create regexp for method wrappers other than 'initialize' wrappers
|
408
|
+
wrap_mtd_re = /_wrap_(#{cls_re_txt})_(\w+)\(.*\)/
|
407
409
|
end
|
408
410
|
found_new = false
|
409
411
|
cpp_class = nil
|
410
412
|
cpp_new_re = nil
|
413
|
+
found_wrap_mtd = false
|
414
|
+
wrap_mtd_name = nil
|
415
|
+
wrap_mtd_upcall_re = nil
|
411
416
|
update_source do |line|
|
412
417
|
if found_new # inside 'initialize' wrapper?
|
413
418
|
if cpp_new_re =~ line # at C++ allocation of class instance?
|
414
|
-
#
|
415
|
-
|
416
|
-
|
419
|
+
if $1 # director allocation for derived class
|
420
|
+
# in case of copy ctor replace type of argument
|
421
|
+
# for director copy ctor
|
422
|
+
line.sub!(/\((\w+),\s*\(#{cpp_class}\s+const\s+\&\)/, "(\\1,(#{class_implementation(cpp_class)} const &)")
|
423
|
+
else # allocation for actual class
|
424
|
+
# replace with the registered implementation class
|
425
|
+
line.sub!(/new\s+#{cpp_class}\(/, "new #{class_implementation(cpp_class)}(")
|
426
|
+
# in case of copy ctor also replace type of argument
|
427
|
+
# for class copy ctor
|
428
|
+
line.sub!(/\(\(#{cpp_class}\s+const\s+\&\)/, "((#{class_implementation(cpp_class)} const &)")
|
429
|
+
end
|
417
430
|
elsif /\A}/ =~ line # end of wrapper function?
|
418
431
|
# stop matching (in case of overloads there will be one matching wrapper function
|
419
432
|
# that does no actual allocation but just acts as a front for the overload wrappers)
|
420
433
|
found_new = false
|
421
434
|
end
|
435
|
+
elsif found_wrap_mtd
|
436
|
+
if wrap_mtd_upcall_re =~ line # at upcall for possibly proxied wrapper?
|
437
|
+
line.gsub!(cpp_class, class_implementation(cpp_class))
|
438
|
+
# if the upcall does not yet cast the receiver instance to the correct implementation class
|
439
|
+
if /\((\w+)\)->/ =~ line
|
440
|
+
# add required cast
|
441
|
+
line.sub!(/\((\w+)\)->/, "((#{class_implementation(cpp_class)} *)\\1)->")
|
442
|
+
end
|
443
|
+
found_wrap_mtd = false # upcall found
|
444
|
+
elsif /\A}/ =~ line
|
445
|
+
found_wrap_mtd = false # end of wrapper method
|
446
|
+
end
|
422
447
|
elsif new_re =~ line # are we at an 'initialize' wrapper?
|
423
448
|
found_new = true
|
424
449
|
cpp_class = $1
|
425
|
-
cpp_new_re = /new\s
|
426
|
-
elsif proxies_enabled
|
427
|
-
|
428
|
-
|
429
|
-
|
450
|
+
cpp_new_re = /new\s+(SwigDirector_)?#{cpp_class}\(.*\)/ # regexp for C++ new expression for this specific class
|
451
|
+
elsif proxies_enabled
|
452
|
+
if dir_ctor_re =~ line # at director ctor?
|
453
|
+
# replace base class name by implementation name
|
454
|
+
cpp_class = $1
|
455
|
+
line.sub!(/:\s*#{cpp_class}\(/, ": #{class_implementation(cpp_class)}(")
|
456
|
+
# in case of copy ctor also replace type of argument
|
457
|
+
line.sub!(/\(VALUE\s+self,\s*#{cpp_class}\s+const\s+\&(\w+)\)/, "(VALUE self, #{class_implementation(cpp_class)} const &\\1)")
|
458
|
+
elsif wrap_mtd_re =~ line # at wrapper method other than 'initialize' wrapper
|
459
|
+
cpp_class = $1
|
460
|
+
wrap_mtd_name = $2
|
461
|
+
wrap_mtd_upcall_re = /-\>#{cpp_class}::#{wrap_mtd_name}\(/
|
462
|
+
found_wrap_mtd = true
|
463
|
+
end
|
430
464
|
end
|
431
465
|
line
|
432
466
|
end
|
@@ -435,11 +469,23 @@ module WXRuby3
|
|
435
469
|
# if so, we also need to update the header code (Director class declaration)
|
436
470
|
# create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
|
437
471
|
dir_re = /class\s+SwigDirector_\w+\s*:\s*public\s+(#{dir_cls_re_txt})\s*,\s*public\s+Swig::Director\s*{/
|
472
|
+
found_dir = false
|
473
|
+
copy_ctor_re = nil
|
438
474
|
update_header do |line|
|
439
|
-
if
|
475
|
+
if found_dir
|
476
|
+
if copy_ctor_re =~ line
|
477
|
+
# replace copy ctor arg type
|
478
|
+
arg = $1
|
479
|
+
line.sub!(/#{cpp_class}\s+const\s+&#{arg}/, "#{class_implementation(cpp_class)} const &#{arg}")
|
480
|
+
elsif /\A};/ =~ line
|
481
|
+
found_dir = false
|
482
|
+
end
|
483
|
+
elsif dir_re =~ line # at Director class declaration?
|
440
484
|
# replace base class name by implementation name
|
441
485
|
cpp_class = $1
|
442
486
|
line.sub!(/public\s+#{cpp_class}/, "public #{class_implementation(cpp_class)}")
|
487
|
+
copy_ctor_re = /SwigDirector_#{cpp_class}\(VALUE\s+self,\s*#{cpp_class}\s+const\s+&(\w+)\);/
|
488
|
+
found_dir = true
|
443
489
|
end
|
444
490
|
line
|
445
491
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
###
|
6
|
+
# wxRuby3 client data typemap definition
|
7
|
+
###
|
8
|
+
|
9
|
+
require_relative '../core/mapping'
|
10
|
+
|
11
|
+
module WXRuby3
|
12
|
+
|
13
|
+
module Typemap
|
14
|
+
|
15
|
+
module ClientData
|
16
|
+
|
17
|
+
include Typemap::Module
|
18
|
+
|
19
|
+
define do
|
20
|
+
|
21
|
+
map 'wxClientData *' => 'Object' do
|
22
|
+
add_header_code <<~__CODE
|
23
|
+
#include "wxruby-ClientData.h"
|
24
|
+
__CODE
|
25
|
+
map_in code: '$1 = NIL_P($input) ? nullptr : new wxRubyClientData($input);'
|
26
|
+
map_out code: <<~__CODE
|
27
|
+
$result = Qnil;
|
28
|
+
if ($1)
|
29
|
+
{
|
30
|
+
wxRubyClientData* rbcd = dynamic_cast<wxRubyClientData*> ($1);
|
31
|
+
if (rbcd) $result = rbcd->GetData();
|
32
|
+
}
|
33
|
+
__CODE
|
34
|
+
|
35
|
+
map_typecheck precedence: 'POINTER', code: '$1 = true;'
|
36
|
+
end
|
37
|
+
|
38
|
+
map 'wxObject *userData' => 'Object' do
|
39
|
+
add_header_code <<~__CODE
|
40
|
+
#include "wxruby-ClientData.h"
|
41
|
+
__CODE
|
42
|
+
map_in code: '$1 = NIL_P($input) ? nullptr : new wxRubyUserData($input);'
|
43
|
+
|
44
|
+
map_typecheck precedence: 'POINTER', code: '$1 = true;'
|
45
|
+
end
|
46
|
+
|
47
|
+
# WxUserDataObject must be typedef for wxObject*
|
48
|
+
map 'WxUserDataObject' => 'Object' do
|
49
|
+
|
50
|
+
map_out code: <<~__CODE
|
51
|
+
$result = Qnil;
|
52
|
+
if ($1)
|
53
|
+
{
|
54
|
+
wxRubyUserData* rbud = dynamic_cast<wxRubyUserData*> ($1);
|
55
|
+
if (rbud) $result = rbud->GetData();
|
56
|
+
}
|
57
|
+
__CODE
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -211,7 +211,8 @@ module WXRuby3
|
|
211
211
|
|
212
212
|
map 'wxSize&' => 'Array(Integer, Integer), Wx::Size',
|
213
213
|
'wxPoint&' => 'Array(Integer, Integer), Wx::Point' do
|
214
|
-
|
214
|
+
add_header_code '#include <memory>'
|
215
|
+
map_in temp: 'std::unique_ptr<$1_basetype> tmp', code: <<~__CODE
|
215
216
|
if ( TYPE($input) == T_DATA )
|
216
217
|
{
|
217
218
|
void* argp$argnum;
|
@@ -222,8 +223,7 @@ module WXRuby3
|
|
222
223
|
{
|
223
224
|
$1 = new $1_basetype( NUM2INT( rb_ary_entry($input, 0) ),
|
224
225
|
NUM2INT( rb_ary_entry($input, 1) ) );
|
225
|
-
//
|
226
|
-
SWIG_NewPointerObj($1, $1_descriptor, 1);
|
226
|
+
tmp.reset($1); // auto destruct when method scope ends
|
227
227
|
}
|
228
228
|
else
|
229
229
|
{
|
@@ -42,7 +42,7 @@ module WXRuby3
|
|
42
42
|
map_directorin code: '$input = wxRuby_wxDateTimeToRuby($1);'
|
43
43
|
|
44
44
|
map_typecheck precedence: 'SWIGOBJECT', code: <<~__CODE
|
45
|
-
$1 = rb_obj_is_kind_of($input, rb_cTime) || rb_respond_to($input, rb_intern ("to_time"));
|
45
|
+
$1 = NIL_P($input) || rb_obj_is_kind_of($input, rb_cTime) || rb_respond_to($input, rb_intern ("to_time"));
|
46
46
|
__CODE
|
47
47
|
end
|
48
48
|
|
@@ -50,7 +50,7 @@ module WXRuby3
|
|
50
50
|
|
51
51
|
map_in temp: 'wxTreeItemId tmpId', code: <<~__CODE
|
52
52
|
if ($input != Qnil) tmpId = _wxRuby_Unwrap_wxTreeItemId($input);
|
53
|
-
$1 =
|
53
|
+
$1 = tmpId;
|
54
54
|
__CODE
|
55
55
|
|
56
56
|
map_directorin code: '$input = _wxRuby_Wrap_wxTreeItemId($1);'
|
@@ -59,7 +59,7 @@ module WXRuby3
|
|
59
59
|
|
60
60
|
map_directorout temp: 'wxTreeItemId tmpId', code: <<~__CODE
|
61
61
|
if ($input != Qnil) tmpId = _wxRuby_Unwrap_wxTreeItemId($input);
|
62
|
-
$result =
|
62
|
+
$result = tmpId;
|
63
63
|
__CODE
|
64
64
|
|
65
65
|
map_typecheck precedence: 'POINTER', code: '$1 = _wxRuby_Is_wxTreeItemId($input);'
|