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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef007e75aefb2b02a91a0818c8ef2d5191075e280c4dbd01bda827cdd65f9957
|
|
4
|
+
data.tar.gz: d52b47712bd0d0d9705270e8c1487e2a1d797bcc52a46253b866e0fe4c6a1617
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba7a127d408a2ab7ce745b0ad1d6d88eee710953ecceaa42a7880c6fb258a4b684cbc9f8bf11d36b1473bb99a55fd219a8fd434475f7352c238b1c2d03bdce9e
|
|
7
|
+
data.tar.gz: 2d99560d20e4d04a1b5c6abacba8579e0973bca2251fb402caa1a301e8a99317eed6a864892a47b8740a87a3861aeb6692791e97fc61c0a57e20d8b41727e930
|
data/INSTALL.md
CHANGED
|
@@ -10,14 +10,14 @@ Below are installation instructions for Linux, Windows, and Mac (both AMD64 and
|
|
|
10
10
|
|
|
11
11
|
The minimal requirements for installing any source based setup (gem, source package or Github clone) of wxRuby3 are:
|
|
12
12
|
|
|
13
|
-
| Sofware | Notes
|
|
14
|
-
|
|
15
|
-
| Ruby | A supported version of the Ruby interpreter needs to be installed.
|
|
16
|
-
| C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed via
|
|
17
|
-
| Git version control toolkit |
|
|
18
|
-
| SWIG >= 3.0.12 | On MacOS install
|
|
19
|
-
| Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files.<br>On MacOS:
|
|
20
|
-
| wxWidgets (>= 3.2) | See
|
|
13
|
+
| Sofware | Notes |
|
|
14
|
+
|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
15
|
+
| Ruby | A supported version of the Ruby interpreter needs to be installed. |
|
|
16
|
+
| C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed via <code>sudo xcode-select --install</code> |
|
|
17
|
+
| Git version control toolkit | |
|
|
18
|
+
| SWIG >= 3.0.12 | On MacOS install Homebrew (https://brew.sh) and than <code>brew install swig</code> |
|
|
19
|
+
| Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files.<br>On MacOS: <code>brew tap mcorino/wxruby3</code> and than `brew install doxygen@1.9.6` (default brew recipe installs 1.9.7) |
|
|
20
|
+
| wxWidgets (>= 3.2) | See the <b>wxWidgets installation</b> section below. |
|
|
21
21
|
|
|
22
22
|
The wxRuby3 build process requires `git` to clone a copy of the wxWidgets Github repository to extract the interface
|
|
23
23
|
specifications from.<br>
|
|
@@ -57,46 +57,41 @@ gem install wxruby3 -- WITH_WXWIN=1
|
|
|
57
57
|
|
|
58
58
|
Also a wxWidgets installation (version 3.2 or later) is required for which there are multiple options.
|
|
59
59
|
|
|
60
|
-
1. System installed wxWidgets version (including development package)<br
|
|
61
|
-
<br
|
|
60
|
+
1. System installed wxWidgets version (including development package)<br/>
|
|
61
|
+
<br/>
|
|
62
62
|
This is the default method used when installing the source gem without any options.<br>
|
|
63
63
|
The wxRuby build procedure will determine the availability and version of wxWidgets by locating and calling
|
|
64
64
|
the `wx-config` utility script. In case no (compatible) wxWidgets version is found installation ends with an error.<br>
|
|
65
65
|
Please note that even with this method a copy of the wxWidgets project will be checked out from GitHUb as the wxRuby3
|
|
66
66
|
build procedure requires access to the wxWidgets interface specification sources which are not normally part of any of
|
|
67
|
-
the standard distribution packages
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
```shell
|
|
67
|
+
the standard distribution packages.<br/>
|
|
68
|
+
<br/>
|
|
69
|
+
On MacOS, you can install wxWidgets via [Homebrew](https://brew.sh/):
|
|
70
|
+
```shell
|
|
72
71
|
brew install wxwidgets
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```shell
|
|
72
|
+
```
|
|
73
|
+
Afterwards, you can install the Ruby gem and it will detect wxWidgets in the system automatically:
|
|
74
|
+
```shell
|
|
78
75
|
gem install wxruby3
|
|
79
|
-
```
|
|
76
|
+
```
|
|
80
77
|
|
|
81
78
|
2. User installed wxWidgets version<br>
|
|
82
79
|
<br>
|
|
83
80
|
In case the system being installed on does not provide (a compatible) wxWidgets version or a specific (possibly updated)
|
|
84
81
|
wxWidgets version is required the source gem can be installed using a user installed version like this (where the
|
|
85
82
|
`WXWIN` path should provide the location where the wxWidgets binaries are installed under `<wxwin path>/bin`):<br>
|
|
86
|
-
|
|
87
|
-
```shell
|
|
83
|
+
```shell
|
|
88
84
|
gem install wxruby3 -- WXWIN=/path/to/wx/install
|
|
89
|
-
```
|
|
85
|
+
```
|
|
90
86
|
|
|
91
87
|
3. Automatic installed, embedded, wxWidgets version<br>
|
|
92
88
|
<br>
|
|
93
89
|
This is the easiest method when the system being installed on does not provide (a compatible) wxWidgets version (and
|
|
94
90
|
no specific user defined version is required) and can be used by installing the source gem like this (which will
|
|
95
91
|
cause automatic checkout and building of the latest stable wxWidgets release (>= 3.2) from GitHub:
|
|
96
|
-
|
|
97
|
-
```shell
|
|
92
|
+
```shell
|
|
98
93
|
gem install wxruby3 -- WITH_WXWIN=1
|
|
99
|
-
```
|
|
94
|
+
```
|
|
100
95
|
|
|
101
96
|
In case of option **2** it is also possible to do the doxygen XML generation as part of the wxWidgets user installation
|
|
102
97
|
and use that for the gem installation. In that case the user is required to generate the XML interface specs using the
|
|
@@ -104,16 +99,27 @@ and use that for the gem installation. In that case the user is required to gene
|
|
|
104
99
|
provided to the gem installation as follows:
|
|
105
100
|
|
|
106
101
|
```shell
|
|
107
|
-
|
|
102
|
+
gem install wxruby3 -- WXWIN=/path/to/wx/install WXXML=/path/to/wx/doxygen/xml
|
|
108
103
|
```
|
|
109
104
|
|
|
110
|
-
Please also not that in case of option
|
|
105
|
+
Please also not that in case of option **2** the user is responsible to make sure the wxWidgets shared libraries can be
|
|
111
106
|
found by the system's dynamic loader at runtime.
|
|
112
107
|
|
|
113
108
|
> **NOTE:** Be patient when installing the source gem. Building wxRuby3 takes a while and when wxWidgets is included event more.
|
|
114
109
|
|
|
115
110
|
> **NOTE:** Be aware that for prerelease versions of the gem you should add the `--pre` argument to the `gem install` command.
|
|
116
111
|
|
|
112
|
+
### Bundled CLI
|
|
113
|
+
|
|
114
|
+
Installing the wxRuby3 gem will also install the bundled `wxruby` CLI binary.
|
|
115
|
+
|
|
116
|
+
Currently this binary can be used to run the bundled regression tests and access (run or copy) the bundled examples.
|
|
117
|
+
Run the following command to see the options:
|
|
118
|
+
|
|
119
|
+
```shell
|
|
120
|
+
wxruby --help
|
|
121
|
+
```
|
|
122
|
+
|
|
117
123
|
## Building from source
|
|
118
124
|
|
|
119
125
|
Checkout the wxRuby3 sources from [GitHub](https://github.com/mcorino/wxRuby3) or download and unpack a release package.
|
data/README.md
CHANGED
|
@@ -96,11 +96,11 @@ of these products.
|
|
|
96
96
|
|
|
97
97
|
Currently the following are fully supported:
|
|
98
98
|
|
|
99
|
-
| Platform | Ruby version(s)
|
|
100
|
-
|
|
101
|
-
| Windows 10 (tested)<br>(most likely also Windows 11) | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2
|
|
102
|
-
| Linux (tested; any AMD-64 distribution)<br>(most likely also i686 and ARM) | Ruby >= 2.5
|
|
103
|
-
| MacOS >= 10.10 using Cocoa (tested on AMD-64 and ARM64 M2 Chip) | Ruby >= 2.5
|
|
99
|
+
| Platform | Ruby version(s) | wxWidgets version(s) |
|
|
100
|
+
|----------------------------------------------------------------------------|---------------------------------------------|----------------------|
|
|
101
|
+
| Windows 10 (tested)<br>(most likely also Windows 11) | Ruby >= 2.5<br>(RubyInstaller MSYS2-DevKit) | wxWidgets >= 3.2 |
|
|
102
|
+
| Linux (tested; any AMD-64 distribution)<br>(most likely also i686 and ARM) | Ruby >= 2.5 | wxWidgets >= 3.2 |
|
|
103
|
+
| MacOS >= 10.10 using Cocoa (tested on AMD-64 and ARM64 M2 Chip) | Ruby >= 2.5 | wxWidgets >= 3.2 |
|
|
104
104
|
|
|
105
105
|
Support for other platforms is not being actively developed at present,
|
|
106
106
|
but patches are welcome. It is likely to be much simpler to get wxRuby
|
|
@@ -118,14 +118,16 @@ Installing the binary gem version on Windows requires no additional software to
|
|
|
118
118
|
version of the Ruby interpreter.<br>
|
|
119
119
|
To install the source-only gem the following software is required:
|
|
120
120
|
|
|
121
|
-
| Sofware | Notes
|
|
122
|
-
|
|
123
|
-
| Ruby | A supported version of the Ruby interpreter needs to be installed.
|
|
124
|
-
| C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed
|
|
125
|
-
| Git version control toolkit |
|
|
126
|
-
| SWIG >= 3.0.12 | On MacOS install
|
|
127
|
-
| Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files
|
|
128
|
-
| wxWidgets >= 3.2 (*OPTIONAL*) | On Linux most distributions provide system installable (development) packages for wxWidgets providing a supported version
|
|
121
|
+
| Sofware | Notes |
|
|
122
|
+
|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
123
|
+
| Ruby | A supported version of the Ruby interpreter needs to be installed. |
|
|
124
|
+
| C++ compiler<br>(incl. dev tools like `make`) | On linux a recent version of the GNU C++ compiler (with c++-14 support) needs to be installed<br>On Windows the RubyInstaller MSYS2-Devkit needs to be installed<br>On MacOS XCode with commandline tools needs to be installed |
|
|
125
|
+
| Git version control toolkit | |
|
|
126
|
+
| SWIG >= 3.0.12 | On MacOS install with Homebrew |
|
|
127
|
+
| Doxygen (>= 1.9.1, <= 1.9.6) | Doxygen > 1.9.6 has changes that cause problems with the wxWidgets doxygen files. |
|
|
128
|
+
| wxWidgets >= 3.2 (*OPTIONAL*) | On Linux most distributions provide system installable (development) packages for wxWidgets providing a supported version.<br>Alternatively you can fairly easily install your own preferred version manually. |
|
|
129
|
+
|
|
130
|
+
See the [INSTALL](INSTALL.md) document for more details.
|
|
129
131
|
|
|
130
132
|
In case the prerequisites above are met the (source-only or binary) gem can be installed executing the following command:
|
|
131
133
|
|
|
@@ -154,7 +156,9 @@ distribution comes with numerous samples which illustrate how to use
|
|
|
154
156
|
many specific parts of the API. A good one to start with is the
|
|
155
157
|
'minimal' sample, which provides an application skeleton. All the
|
|
156
158
|
bundled samples are expected to work with current wxRuby3, although
|
|
157
|
-
some use a more modern coding style than others.
|
|
159
|
+
some use a more modern coding style than others. Use the bundled `wxruby`
|
|
160
|
+
CLI to access the samples (see the section **Bundled CLI** in
|
|
161
|
+
the [INSTALL](INSTALL.md) document for more details).
|
|
158
162
|
|
|
159
163
|
Complete (more or less) wxRuby API documentation should be part of any
|
|
160
164
|
complete wxRuby3 build. This tends to focus on providing a reference
|
|
@@ -213,4 +217,9 @@ this doesn't help, please post your question using GitHub Issues.
|
|
|
213
217
|
|
|
214
218
|
### Is there another, more declarative way, for writing wxRuby3 desktop GUI applications?
|
|
215
219
|
|
|
216
|
-
Yes. [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) enables software engineers to build GUI
|
|
220
|
+
Yes. [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) enables software engineers to build GUI
|
|
221
|
+
using wxruby3 following the Ruby way with the least amount of code possible. That is by offering a minimalistic
|
|
222
|
+
declarative high-level DSL that maps visually to the way software engineers think about the GUI hierarchy in addition
|
|
223
|
+
to adopting Rails' strategy of Convention over Configuration via smart defaults and automation of wxruby3 low-level
|
|
224
|
+
details. You can check out the [Glimmer DSL for WX README "Coming From wxruby3" section](https://github.com/AndyObtiva/glimmer-dsl-wx#coming-from-wxruby3) for more information on
|
|
225
|
+
how to translate wxruby3 apps to [Glimmer DSL for WX](https://github.com/AndyObtiva/glimmer-dsl-wx) syntax.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
//
|
|
3
|
+
// This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* WxRuby3 wxRubyClientData class
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef _WXRUBY_CLIENT_DATA_H
|
|
10
|
+
#define _WXRUBY_CLIENT_DATA_H
|
|
11
|
+
|
|
12
|
+
#include <wx/clntdata.h>
|
|
13
|
+
|
|
14
|
+
class WXRUBY_EXPORT wxRubyClientData;
|
|
15
|
+
|
|
16
|
+
WXRUBY_EXPORT void wxRuby_RegisterClientData(wxRubyClientData* pcd);
|
|
17
|
+
WXRUBY_EXPORT void wxRuby_UnregisterClientData(wxRubyClientData* pcd);
|
|
18
|
+
|
|
19
|
+
class WXRUBY_EXPORT wxRubyClientData : public wxClientData
|
|
20
|
+
{
|
|
21
|
+
public:
|
|
22
|
+
wxRubyClientData() : rb_data(Qnil) { }
|
|
23
|
+
wxRubyClientData (VALUE data) : rb_data(data) { wxRuby_RegisterClientData(this); }
|
|
24
|
+
virtual ~wxRubyClientData () { wxRuby_UnregisterClientData(this); }
|
|
25
|
+
VALUE GetData() const { return rb_data; }
|
|
26
|
+
private:
|
|
27
|
+
VALUE rb_data;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
class WXRUBY_EXPORT wxRubyUserData;
|
|
31
|
+
|
|
32
|
+
WXRUBY_EXPORT void wxRuby_RegisterUserData(wxRubyUserData* pud);
|
|
33
|
+
WXRUBY_EXPORT void wxRuby_UnregisterUserData(wxRubyUserData* pud);
|
|
34
|
+
|
|
35
|
+
class WXRUBY_EXPORT wxRubyUserData : public wxObject
|
|
36
|
+
{
|
|
37
|
+
public:
|
|
38
|
+
wxRubyUserData() : rb_data(Qnil) { }
|
|
39
|
+
wxRubyUserData (VALUE data) : rb_data(data) { wxRuby_RegisterUserData(this); }
|
|
40
|
+
virtual ~wxRubyUserData () { wxRuby_UnregisterUserData(this); }
|
|
41
|
+
VALUE GetData() const { return rb_data; }
|
|
42
|
+
private:
|
|
43
|
+
VALUE rb_data;
|
|
44
|
+
|
|
45
|
+
wxDECLARE_NO_COPY_CLASS(wxRubyUserData);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
#endif /* _WXRUBY_CLIENT_DATA_H */
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
//
|
|
3
|
+
// This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* WxRuby3 wxRubyValidator class
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef _WXRUBY_VALIDATOR_H
|
|
10
|
+
#define _WXRUBY_VALIDATOR_H
|
|
11
|
+
|
|
12
|
+
#include "wxruby-ValidatorBinding.h"
|
|
13
|
+
|
|
14
|
+
class WXRUBY_EXPORT wxRubyValidator : public wxValidator, public wxRubyValidatorBinding
|
|
15
|
+
{
|
|
16
|
+
public:
|
|
17
|
+
wxRubyValidator ();
|
|
18
|
+
wxRubyValidator (const wxRubyValidator&);
|
|
19
|
+
virtual ~wxRubyValidator ();
|
|
20
|
+
|
|
21
|
+
virtual wxObject* Clone() const override;
|
|
22
|
+
|
|
23
|
+
virtual void SetWindow(wxWindow *win) override;
|
|
24
|
+
|
|
25
|
+
virtual bool TransferFromWindow () override;
|
|
26
|
+
virtual bool TransferToWindow () override;
|
|
27
|
+
|
|
28
|
+
protected:
|
|
29
|
+
static WxRuby_ID do_transfer_from_window_id;
|
|
30
|
+
static WxRuby_ID do_transfer_to_window_id;
|
|
31
|
+
static WxRuby_ID clone_id;
|
|
32
|
+
|
|
33
|
+
virtual VALUE DoTransferFromWindow();
|
|
34
|
+
virtual bool DoTransferToWindow(VALUE data);
|
|
35
|
+
|
|
36
|
+
virtual VALUE get_self() override;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
#endif /* _WXRUBY_VALIDATOR_HASH_H */
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
//
|
|
3
|
+
// This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* WxRuby3 wxRubyValidatorBinding class
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef _WXRUBY_VALIDATOR_BINDING_H
|
|
10
|
+
#define _WXRUBY_VALIDATOR_BINDING_H
|
|
11
|
+
|
|
12
|
+
class WXRUBY_EXPORT wxRubyValidatorBinding
|
|
13
|
+
{
|
|
14
|
+
public:
|
|
15
|
+
wxRubyValidatorBinding ()
|
|
16
|
+
: self_(Qnil)
|
|
17
|
+
, on_transfer_from_win_proc_(Qnil)
|
|
18
|
+
, on_transfer_to_win_proc_(Qnil)
|
|
19
|
+
{}
|
|
20
|
+
|
|
21
|
+
void SetOnTransferFromWindow(VALUE proc)
|
|
22
|
+
{
|
|
23
|
+
this->on_transfer_from_win_proc_ = proc;
|
|
24
|
+
}
|
|
25
|
+
void SetOnTransferToWindow(VALUE proc)
|
|
26
|
+
{
|
|
27
|
+
this->on_transfer_to_win_proc_ = proc;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
VALUE DoOnTransferToWindow();
|
|
31
|
+
bool DoOnTransferFromWindow(VALUE data);
|
|
32
|
+
|
|
33
|
+
bool OnTransferFromWindow(VALUE data);
|
|
34
|
+
VALUE OnTransferToWindow();
|
|
35
|
+
|
|
36
|
+
void GC_Mark()
|
|
37
|
+
{
|
|
38
|
+
rb_gc_mark(this->on_transfer_from_win_proc_);
|
|
39
|
+
rb_gc_mark(this->on_transfer_to_win_proc_);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected:
|
|
43
|
+
static WxRuby_ID do_on_transfer_from_window_id;
|
|
44
|
+
static WxRuby_ID do_on_transfer_to_window_id;
|
|
45
|
+
static WxRuby_ID call_id;
|
|
46
|
+
|
|
47
|
+
wxRubyValidatorBinding (const wxRubyValidatorBinding& vb)
|
|
48
|
+
: self_(Qnil)
|
|
49
|
+
, on_transfer_from_win_proc_(vb.on_transfer_from_win_proc_)
|
|
50
|
+
, on_transfer_to_win_proc_(vb.on_transfer_to_win_proc_)
|
|
51
|
+
{}
|
|
52
|
+
|
|
53
|
+
void CopyBindings(const wxRubyValidatorBinding* val_bind);
|
|
54
|
+
|
|
55
|
+
virtual VALUE get_self() = 0;
|
|
56
|
+
|
|
57
|
+
VALUE self_;
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
VALUE on_transfer_from_win_proc_;
|
|
61
|
+
VALUE on_transfer_to_win_proc_;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
#endif /* #define _WXRUBY_VALIDATOR_BINDING_H */
|
|
@@ -195,6 +195,14 @@ namespace Swig {
|
|
|
195
195
|
}
|
|
196
196
|
};
|
|
197
197
|
|
|
198
|
+
/* wxRuby customization */
|
|
199
|
+
class WXRUBY_EXPORT DirectorRubyException : public DirectorException
|
|
200
|
+
{
|
|
201
|
+
public:
|
|
202
|
+
DirectorRubyException(VALUE error, VALUE rcvr, ID fn_id);
|
|
203
|
+
|
|
204
|
+
};
|
|
205
|
+
|
|
198
206
|
/* Simple thread abstraction for pthreads on win32 */
|
|
199
207
|
#ifdef __THREAD__
|
|
200
208
|
# define __PTHREAD__
|
|
@@ -309,37 +309,4 @@ WXRUBY_EXPORT void GC_mark_wxFrame(void *ptr)
|
|
|
309
309
|
std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
|
|
310
310
|
#endif
|
|
311
311
|
}
|
|
312
|
-
|
|
313
|
-
// wxRuby must preserve ruby objects attached as the ClientData of
|
|
314
|
-
// command events that have been user-defined in ruby. Some of the
|
|
315
|
-
// standard wxWidgets CommandEvent classes (which have a constant event
|
|
316
|
-
// id less than wxEVT_USER_FIRST, from wx/event.h) also use ClientData
|
|
317
|
-
// for their own purposes, and this must not be marked as the data is
|
|
318
|
-
// not a ruby object, and will thus crash.
|
|
319
|
-
WXRUBY_EXPORT void GC_mark_wxEvent(void *ptr)
|
|
320
|
-
{
|
|
321
|
-
#ifdef __WXRB_DEBUG__
|
|
322
|
-
if (wxRuby_TraceLevel()>1)
|
|
323
|
-
std::wcout << "> GC_mark_wxEvent : " << ptr << std::endl;
|
|
324
|
-
#endif
|
|
325
|
-
|
|
326
|
-
if ( ! ptr ) return;
|
|
327
|
-
wxEvent* wx_event = (wxEvent*)ptr;
|
|
328
|
-
#ifdef __WXRB_DEBUG__
|
|
329
|
-
if (wxRuby_TraceLevel()>2)
|
|
330
|
-
std::wcout << "* GC_mark_wxEvent(" << ptr << ":{" << wx_event->GetEventType() << "})" << std::endl;
|
|
331
|
-
#endif
|
|
332
|
-
if ( wx_event->GetEventType() > wxEVT_USER_FIRST &&
|
|
333
|
-
wx_event->IsCommandEvent() )
|
|
334
|
-
{
|
|
335
|
-
wxCommandEvent* wx_cm_event = (wxCommandEvent*)ptr;
|
|
336
|
-
VALUE rb_client_data = (VALUE)wx_cm_event->GetClientData();
|
|
337
|
-
rb_gc_mark(rb_client_data);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
#ifdef __WXRB_DEBUG__
|
|
341
|
-
if (wxRuby_TraceLevel()>1)
|
|
342
|
-
std::wcout << "< GC_mark_wxEvent : " << ptr << std::endl;
|
|
343
|
-
#endif
|
|
344
|
-
}
|
|
345
312
|
%}
|
|
@@ -8,32 +8,28 @@
|
|
|
8
8
|
|
|
9
9
|
module Wx
|
|
10
10
|
|
|
11
|
-
class
|
|
12
|
-
|
|
13
|
-
# We need to cache client data in Ruby variables as we cannot access items
|
|
14
|
-
# during the GC mark phase as for some platforms (WXMSW at least) that would
|
|
15
|
-
# involve calling methods that would break in that phase.
|
|
11
|
+
class BitmapComboBox < Wx::ComboBox
|
|
16
12
|
|
|
17
13
|
wx_append = instance_method :append
|
|
18
|
-
define_method :append do |item, bitmap=Wx::NULL_BITMAP, data=nil|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
define_method :append do |item, *rest| #bitmap=Wx::NULL_BITMAP, data=nil|
|
|
15
|
+
if ::Array === item
|
|
16
|
+
super(item, *rest)
|
|
17
|
+
elsif rest.empty? || Wx::Bitmap === rest.first
|
|
18
|
+
wx_append.bind(self).call(item, *rest)
|
|
19
|
+
else
|
|
20
|
+
super(item, *rest)
|
|
21
|
+
end
|
|
26
22
|
end
|
|
27
23
|
|
|
28
24
|
wx_insert = instance_method :insert
|
|
29
|
-
define_method :insert do |item, bitmap, pos, data=nil|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
define_method :insert do |item, *rest| # bitmap, pos, data=nil|
|
|
26
|
+
if ::Array === item
|
|
27
|
+
super(item, *rest)
|
|
28
|
+
elsif rest.empty? || Wx::Bitmap === rest.first
|
|
29
|
+
wx_insert.bind(self).call(item, *rest)
|
|
30
|
+
else
|
|
31
|
+
super(item, *rest)
|
|
32
|
+
end
|
|
37
33
|
end
|
|
38
34
|
|
|
39
35
|
end
|
data/lib/wx/core/combobox.rb
CHANGED
|
@@ -8,7 +8,17 @@
|
|
|
8
8
|
|
|
9
9
|
require_relative './controlwithitems'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
module Wx
|
|
12
|
+
|
|
13
|
+
class ComboBox
|
|
14
|
+
|
|
15
|
+
# redefine #clear method to take care of client data and to call the proper #clear_items method
|
|
16
|
+
# (not the #clear method inherited from the TextEntry mixin)
|
|
17
|
+
wx_clear = instance_method :clear_items
|
|
18
|
+
define_method :clear do
|
|
19
|
+
wx_clear.bind(self).call
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
14
24
|
end
|