wxruby3 0.9.1 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxRubyApp.h +338 -0
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
- data/ext/wxruby3/include/wxruby-Config.h +6 -6
- data/ext/wxruby3/include/wxruby-Validator.h +39 -0
- data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
- data/ext/wxruby3/swig/common.i +1 -1
- data/ext/wxruby3/swig/custom/director.swg +8 -0
- data/ext/wxruby3/swig/mark_free_impl.i +0 -33
- data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
- data/lib/wx/aui/auinotebook.rb +6 -2
- data/lib/wx/aui/require.rb +1 -0
- data/lib/wx/core/app.rb +2 -2
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/collapsible_pane.rb +1 -1
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/controlwithitems.rb +40 -128
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/event.rb +6 -1
- data/lib/wx/core/evthandler.rb +8 -2
- data/lib/wx/core/generic_validator.rb +312 -0
- data/lib/wx/core/listbox.rb +2 -2
- data/lib/wx/core/log.rb +1 -1
- data/lib/wx/core/menu.rb +10 -0
- data/lib/wx/core/notebook.rb +6 -2
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +12 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/task_bar_button.rb +19 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/textctrl.rb +11 -1
- data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +13 -7
- data/lib/wx/doc/app.rb +48 -38
- data/lib/wx/doc/art_locator.rb +48 -43
- data/lib/wx/doc/aui/auimanager.rb +16 -8
- data/lib/wx/doc/aui/auinotebook.rb +20 -5
- data/lib/wx/doc/clipboard.rb +11 -7
- data/lib/wx/doc/colour_dialog.rb +14 -10
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/controlwithitems.rb +34 -8
- data/lib/wx/doc/data_object.rb +2 -2
- data/lib/wx/doc/date_picker_ctrl.rb +23 -0
- data/lib/wx/doc/editable_listbox.rb +44 -0
- data/lib/wx/doc/enum.rb +15 -0
- data/lib/wx/doc/event.rb +12 -0
- data/lib/wx/doc/evthandler.rb +113 -108
- data/lib/wx/doc/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/font.rb +1 -0
- data/lib/wx/doc/gc_dc.rb +6 -1
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/graphics_context.rb +1 -0
- data/lib/wx/doc/grid/grid.rb +22 -1
- data/lib/wx/doc/help_controller.rb +11 -7
- data/lib/wx/doc/html/html_help_controller.rb +12 -4
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/list_ctrl.rb +33 -29
- data/lib/wx/doc/menu.rb +20 -0
- data/lib/wx/doc/notebook.rb +21 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/pg/events.rb +13 -9
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/pg/pg_property.rb +18 -0
- data/lib/wx/doc/progress_dialog.rb +36 -32
- data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
- data/lib/wx/doc/prt/print_data.rb +13 -5
- data/lib/wx/doc/prt/print_dialog.rb +31 -23
- data/lib/wx/doc/prt/printer.rb +20 -12
- data/lib/wx/doc/radio_box.rb +19 -15
- data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
- data/lib/wx/doc/region_iterator.rb +32 -28
- data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
- data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
- data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
- data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
- data/lib/wx/doc/sizer.rb +20 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
- data/lib/wx/doc/stream.rb +39 -35
- data/lib/wx/doc/system_settings.rb +30 -26
- data/lib/wx/doc/text_validator.rb +23 -9
- data/lib/wx/doc/textctrl.rb +16 -0
- data/lib/wx/doc/tree_ctrl.rb +95 -0
- data/lib/wx/doc/treebook.rb +9 -5
- data/lib/wx/doc/v_list_box.rb +9 -5
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/variant.rb +164 -160
- data/lib/wx/doc/window.rb +87 -47
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/pg/pg_property.rb +22 -0
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/rtc/require.rb +3 -0
- data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
- data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
- data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
- data/lib/wx/stc/require.rb +1 -0
- data/lib/wx/stc/styled_text_ctrl.rb +25 -0
- data/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/linux.rb +0 -3
- data/rakelib/lib/config/macosx.rb +2 -2
- data/rakelib/lib/config/mingw.rb +13 -1
- data/rakelib/lib/config/unixish.rb +1 -1
- data/rakelib/lib/config.rb +14 -4
- data/rakelib/lib/core/include/client_data.inc +65 -0
- data/rakelib/lib/core/include/funcall.inc +1 -1
- data/rakelib/lib/core/package.rb +31 -9
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec.rb +6 -1
- data/rakelib/lib/core/spec_helper.rb +7 -1
- data/rakelib/lib/director/accelerator.rb +2 -3
- data/rakelib/lib/director/accessible.rb +47 -0
- data/rakelib/lib/director/app.rb +30 -319
- data/rakelib/lib/director/app_traits.rb +13 -13
- data/rakelib/lib/director/bitmap_combobox.rb +2 -2
- data/rakelib/lib/director/combobox.rb +22 -0
- data/rakelib/lib/director/comboctrl.rb +1 -55
- data/rakelib/lib/director/ctrl_with_items.rb +105 -26
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
- data/rakelib/lib/director/derived_dc.rb +1 -1
- data/rakelib/lib/director/dialog.rb +1 -0
- data/rakelib/lib/director/drag_image.rb +2 -3
- data/rakelib/lib/director/editable_listbox.rb +30 -0
- data/rakelib/lib/director/event.rb +104 -14
- data/rakelib/lib/director/event_handler.rb +3 -2
- data/rakelib/lib/director/frame.rb +1 -3
- data/rakelib/lib/director/functions.rb +4 -2
- data/rakelib/lib/director/gdicommon.rb +8 -10
- data/rakelib/lib/director/generic_dirctrl.rb +17 -0
- data/rakelib/lib/director/graphics_context.rb +2 -4
- data/rakelib/lib/director/grid_cell_attr.rb +0 -2
- data/rakelib/lib/director/grid_cell_editor.rb +0 -2
- data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
- data/rakelib/lib/director/grid_ctrl.rb +34 -3
- data/rakelib/lib/director/header_ctrl.rb +6 -1
- data/rakelib/lib/director/html_listbox.rb +96 -22
- data/rakelib/lib/director/icon.rb +5 -2
- data/rakelib/lib/director/list_ctrl.rb +5 -6
- data/rakelib/lib/director/locale.rb +1 -3
- data/rakelib/lib/director/log.rb +1 -4
- data/rakelib/lib/director/media_ctrl.rb +54 -0
- data/rakelib/lib/director/menu.rb +16 -1
- data/rakelib/lib/director/menu_item.rb +2 -2
- data/rakelib/lib/director/num_validator.rb +495 -0
- data/rakelib/lib/director/numeric_property_validator.rb +131 -6
- data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
- data/rakelib/lib/director/pgproperties.rb +1 -1
- data/rakelib/lib/director/pgproperty.rb +27 -30
- data/rakelib/lib/director/property_grid_interface.rb +5 -10
- data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
- data/rakelib/lib/director/ribbon_gallery.rb +3 -5
- data/rakelib/lib/director/richtext_composite_object.rb +25 -0
- data/rakelib/lib/director/richtext_ctrl.rb +14 -4
- data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
- data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
- data/rakelib/lib/director/sizer.rb +30 -4
- data/rakelib/lib/director/sizer_item.rb +13 -0
- data/rakelib/lib/director/static_bitmap.rb +28 -0
- data/rakelib/lib/director/static_box.rb +4 -5
- data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
- data/rakelib/lib/director/task_bar_button.rb +30 -0
- data/rakelib/lib/director/task_bar_icon.rb +5 -13
- data/rakelib/lib/director/text_entry.rb +4 -0
- data/rakelib/lib/director/text_validator.rb +124 -13
- data/rakelib/lib/director/textctrl.rb +12 -1
- data/rakelib/lib/director/toggle_button.rb +1 -0
- data/rakelib/lib/director/tool_tip.rb +1 -1
- data/rakelib/lib/director/top_level_window.rb +4 -7
- data/rakelib/lib/director/tree_ctrl.rb +40 -6
- data/rakelib/lib/director/utils.rb +16 -2
- data/rakelib/lib/director/validator.rb +196 -21
- data/rakelib/lib/director/variant.rb +1 -1
- data/rakelib/lib/director/window.rb +40 -7
- data/rakelib/lib/director.rb +4 -4
- data/rakelib/lib/extractor/function.rb +8 -7
- data/rakelib/lib/extractor.rb +34 -5
- data/rakelib/lib/generate/analyzer.rb +9 -4
- data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
- data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
- data/rakelib/lib/generate/doc/cursor.yaml +0 -2
- data/rakelib/lib/generate/doc/panel.yaml +7 -0
- data/rakelib/lib/generate/doc.rb +85 -17
- data/rakelib/lib/specs/interfaces.rb +163 -160
- data/rakelib/lib/swig_runner.rb +55 -9
- data/rakelib/lib/typemap/client_data.rb +67 -0
- data/rakelib/lib/typemap/common.rb +33 -4
- data/rakelib/lib/typemap/datetime.rb +1 -1
- data/rakelib/lib/typemap/tree_itemid.rb +2 -2
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
- data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
- data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
- data/rakelib/yard/templates/default/tags/setup.rb +16 -0
- data/rakelib/yard/yard-custom-templates.rb +3 -0
- data/samples/aui/aui.rb +1237 -1233
- data/samples/calendar/calendar.rb +293 -289
- data/samples/controls/get_item_sample.rb +83 -79
- data/samples/controls/htlbox.rb +331 -327
- data/samples/dialogs/dialogs.rb +682 -694
- data/samples/dialogs/wizard.rb +52 -55
- data/samples/dragdrop/dragdrop.rb +146 -142
- data/samples/drawing/bitmap.rb +29 -26
- data/samples/drawing/bitmap_image.rb +84 -80
- data/samples/drawing/graphics_drawing.rb +209 -205
- data/samples/drawing/image_prt.rb +344 -340
- data/samples/drawing/maths_images.rb +18 -1
- data/samples/drawing/rmagic_bitmap_image.rb +88 -84
- data/samples/etc/caret.rb +306 -0
- data/samples/etc/miniframe.rb +65 -60
- data/samples/etc/sash.rb +109 -105
- data/samples/etc/scrollwin.rb +86 -80
- data/samples/etc/system_settings.rb +216 -209
- data/samples/event/activation.rb +72 -67
- data/samples/event/event.rb +160 -153
- data/samples/event/threaded.rb +8 -1
- data/samples/event/update_ui_event.rb +67 -60
- data/samples/grid/grid.rb +188 -181
- data/samples/grid/gridtablebase.rb +136 -129
- data/samples/html/html.rb +208 -204
- data/samples/mdi/mdi.rb +59 -54
- data/samples/minimal/minimal.rb +54 -51
- data/samples/minimal/nothing.rb +1 -0
- data/samples/printing/printing.rb +367 -377
- data/samples/printing/printing2.rb +203 -198
- data/samples/propgrid/propgrid.rb +2312 -2308
- data/samples/propgrid/propgrid_minimal.rb +57 -50
- data/samples/ribbon/ribbon.rb +780 -774
- data/samples/sampler/ext.rb +0 -33
- data/samples/sampler/sample.rb +4 -9
- data/samples/sampler.rb +1 -1
- data/samples/splash/splash.rb +118 -116
- data/samples/text/rich_textctrl.rb +207 -201
- data/samples/text/richtext.rb +1409 -1405
- data/samples/text/scintilla.rb +137 -128
- data/samples/text/textctrl.rb +89 -83
- data/samples/text/unicode.rb +175 -168
- data/samples/treectrl/treectrl.rb +1430 -1426
- data/samples/widgets/activityindicator.rb +95 -0
- data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
- data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
- data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/button.xpm +54 -0
- data/samples/widgets/art/widgets/checkbox.xpm +54 -0
- data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
- data/samples/widgets/art/widgets/choicebk.xpm +54 -0
- data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
- data/samples/widgets/art/widgets/combobox.xpm +54 -0
- data/samples/widgets/art/widgets/datepick.xpm +200 -0
- data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
- data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
- data/samples/widgets/art/widgets/filepicker.xpm +214 -0
- data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
- data/samples/widgets/art/widgets/gauge.xpm +54 -0
- data/samples/widgets/art/widgets/header.xpm +54 -0
- data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
- data/samples/widgets/art/widgets/listbook.xpm +54 -0
- data/samples/widgets/art/widgets/listbox.xpm +54 -0
- data/samples/widgets/art/widgets/native.xpm +81 -0
- data/samples/widgets/art/widgets/notebook.xpm +54 -0
- data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/radiobox.xpm +54 -0
- data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
- data/samples/widgets/art/widgets/slider.xpm +54 -0
- data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
- data/samples/widgets/art/widgets/statbmp.xpm +40 -0
- data/samples/widgets/art/widgets/statbox.xpm +54 -0
- data/samples/widgets/art/widgets/stattext.xpm +54 -0
- data/samples/widgets/art/widgets/text.xpm +54 -0
- data/samples/widgets/art/widgets/timepick.xpm +207 -0
- data/samples/widgets/art/widgets/toggle.xpm +54 -0
- data/samples/widgets/art/widgets/toucan.png +0 -0
- data/samples/widgets/bmpcombobox.rb +651 -0
- data/samples/widgets/button.rb +462 -0
- data/samples/widgets/checkbox.rb +211 -0
- data/samples/widgets/choice.rb +287 -0
- data/samples/widgets/clrpicker.rb +156 -0
- data/samples/widgets/combobox.rb +516 -0
- data/samples/widgets/datepick.rb +215 -0
- data/samples/widgets/dirctrl.rb +265 -0
- data/samples/widgets/dirpicker.rb +158 -0
- data/samples/widgets/editlbox.rb +122 -0
- data/samples/widgets/filectrl.rb +216 -0
- data/samples/widgets/filepicker.rb +214 -0
- data/samples/widgets/fontpicker.rb +135 -0
- data/samples/widgets/gauge.rb +311 -0
- data/samples/widgets/headerctrl.rb +236 -0
- data/samples/widgets/hyperlink.rb +203 -0
- data/samples/widgets/itemcontainer.rb +185 -0
- data/samples/widgets/listbox.rb +473 -0
- data/samples/widgets/notebook.rb +488 -0
- data/samples/widgets/odcombobox.rb +608 -0
- data/samples/widgets/radiobox.rb +328 -0
- data/samples/widgets/searchctrl.rb +159 -0
- data/samples/widgets/slider.rb +594 -0
- data/samples/widgets/spinbtn.rb +443 -0
- data/samples/widgets/statbmp.rb +130 -0
- data/samples/widgets/static.rb +436 -0
- data/samples/widgets/textctrl.rb +700 -0
- data/samples/widgets/timepick.rb +148 -0
- data/samples/widgets/tn_widgets.png +0 -0
- data/samples/widgets/toggle.rb +385 -0
- data/samples/widgets/widgets.rb +1233 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/media/beep_lo.wav +0 -0
- data/tests/test_event_handling.rb +52 -34
- data/tests/test_events.rb +7 -0
- data/tests/test_item_data.rb +24 -0
- data/tests/test_list_ctrl.rb +1 -1
- data/tests/test_media_ctrl.rb +38 -0
- data/tests/test_menu.rb +69 -0
- data/tests/test_pg.rb +27 -0
- data/tests/test_richtext.rb +45 -0
- data/tests/test_sizer.rb +59 -0
- data/tests/test_std_controls.rb +42 -1
- data/tests/test_styled_text_ctrl.rb +46 -0
- data/tests/test_tree_ctrl.rb +138 -0
- data/tests/test_validators.rb +805 -0
- data/tests/test_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +121 -139
- data/lib/wx/core/choice.rb +0 -14
- data/lib/wx/core/combo_ctrl.rb +0 -110
- data/rakelib/lib/typemap/grid_client_data.rb +0 -58
- data/samples/bigdemo/About.rbw +0 -39
- data/samples/bigdemo/ColorPanel.rbw +0 -23
- data/samples/bigdemo/GridSimple.rbw +0 -78
- data/samples/bigdemo/MDIDemo.rbw +0 -57
- data/samples/bigdemo/PopupMenu.rbw +0 -146
- data/samples/bigdemo/ShapedWindow.rbw +0 -128
- data/samples/bigdemo/Sizers.rbw +0 -541
- data/samples/bigdemo/bigdemo.rb +0 -817
- data/samples/bigdemo/demoTemplate.rbw +0 -33
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +0 -27
- data/samples/bigdemo/icons/copy.xpm +0 -25
- data/samples/bigdemo/icons/cut.xpm +0 -24
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +0 -27
- data/samples/bigdemo/icons/help.xpm +0 -25
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +0 -27
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +0 -44
- data/samples/bigdemo/icons/new.xpm +0 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +0 -45
- data/samples/bigdemo/icons/open.xpm +0 -26
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +0 -38
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +0 -26
- data/samples/bigdemo/icons/print.xpm +0 -26
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +0 -27
- data/samples/bigdemo/icons/robert.xpm +0 -415
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +0 -25
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +0 -39
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +0 -42
- data/samples/bigdemo/icons/stattext.xpm +0 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +0 -79
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +0 -27
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +0 -38
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +0 -38
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +0 -98
- data/samples/bigdemo/tips.txt +0 -7
- data/samples/bigdemo/utils.rb +0 -20
- data/samples/bigdemo/wxArtProvider.rbw +0 -282
- data/samples/bigdemo/wxBitmapButton.rbw +0 -65
- data/samples/bigdemo/wxButton.rbw +0 -64
- data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
- data/samples/bigdemo/wxCheckBox.rbw +0 -50
- data/samples/bigdemo/wxCheckListBox.rbw +0 -65
- data/samples/bigdemo/wxChoice.rbw +0 -47
- data/samples/bigdemo/wxChoicebook.rbw +0 -78
- data/samples/bigdemo/wxColourDialog.rbw +0 -33
- data/samples/bigdemo/wxComboBox.rbw +0 -77
- data/samples/bigdemo/wxCursor.rbw +0 -136
- data/samples/bigdemo/wxDialog.rbw +0 -74
- data/samples/bigdemo/wxDirDialog.rbw +0 -29
- data/samples/bigdemo/wxDragImage.rbw +0 -70
- data/samples/bigdemo/wxFileDialog.rbw +0 -37
- data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
- data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
- data/samples/bigdemo/wxFontDialog.rbw +0 -200
- data/samples/bigdemo/wxFrame.rbw +0 -53
- data/samples/bigdemo/wxGauge.rbw +0 -65
- data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
- data/samples/bigdemo/wxGrid.rbw +0 -66
- data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
- data/samples/bigdemo/wxListBox.rbw +0 -140
- data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
- data/samples/bigdemo/wxMDIWindows.rbw +0 -50
- data/samples/bigdemo/wxMenu.rbw +0 -247
- data/samples/bigdemo/wxMessageDialog.rbw +0 -27
- data/samples/bigdemo/wxMiniFrame.rbw +0 -70
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
- data/samples/bigdemo/wxNotebook.rbw +0 -136
- data/samples/bigdemo/wxProgressDialog.rbw +0 -43
- data/samples/bigdemo/wxRadioBox.rbw +0 -72
- data/samples/bigdemo/wxRadioButton.rbw +0 -125
- data/samples/bigdemo/wxSashWindow.rbw +0 -141
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
- data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
- data/samples/bigdemo/wxSlider.rbw +0 -42
- data/samples/bigdemo/wxSpinButton.rbw +0 -50
- data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
- data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
- data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
- data/samples/bigdemo/wxStaticText.rbw +0 -55
- data/samples/bigdemo/wxStatusBar.rbw +0 -126
- data/samples/bigdemo/wxTextCtrl.rbw +0 -149
- data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
- data/samples/bigdemo/wxToggleButton.rbw +0 -49
- data/samples/bigdemo/wxToolBar.rbw +0 -131
- data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
- data/samples/caret/caret.rb +0 -298
- data/samples/caret/mondrian.xpm +0 -44
- data/samples/controls/books.rb +0 -189
- data/samples/controls/choice.xpm +0 -27
- data/samples/controls/combo.xpm +0 -27
- data/samples/controls/controls.rb +0 -1099
- data/samples/controls/gauge.xpm +0 -27
- data/samples/controls/list.xpm +0 -27
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +0 -44
- data/samples/controls/radio.xpm +0 -27
- data/samples/controls/stattext.xpm +0 -24
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +0 -27
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/etc/choice.rb +0 -87
- data/samples/etc/tn_choice.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +0 -44
- /data/samples/{caret → etc}/tn_caret.png +0 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
#
|
|
3
|
+
# This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
###
|
|
6
|
+
# wxRuby3 wxWidgets interface director
|
|
7
|
+
###
|
|
8
|
+
|
|
9
|
+
require_relative './validator'
|
|
10
|
+
|
|
11
|
+
module WXRuby3
|
|
12
|
+
|
|
13
|
+
class Director
|
|
14
|
+
|
|
15
|
+
class NumValidator < Validator
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
spec.items.replace ['valnum.h'] # enum from XML but only manually defined custom wxRuby classes
|
|
19
|
+
super
|
|
20
|
+
spec.initialize_at_end = true # no inheritance/XML info to analyze
|
|
21
|
+
spec.ignore 'wxMakeIntegerValidator', 'wxMakeFloatingPointValidator'
|
|
22
|
+
# need to explicitly declare this here as we do not have any XML extracted items
|
|
23
|
+
# so the post processing of the EvtHandler director does not work
|
|
24
|
+
spec.add_header_code <<~__HEREDOC
|
|
25
|
+
static WxRuby_ID __wxrb_try_before_id("try_before");
|
|
26
|
+
static WxRuby_ID __wxrb_try_after_id("try_after");
|
|
27
|
+
__HEREDOC
|
|
28
|
+
# provide custom wxRuby numeric validator classes
|
|
29
|
+
spec.add_header_code <<~__HEREDOC
|
|
30
|
+
#include <wx/valnum.h>
|
|
31
|
+
|
|
32
|
+
#ifdef wxLongLong_t
|
|
33
|
+
typedef wxLongLong_t LongestValueType;
|
|
34
|
+
typedef wxULongLong_t ULongestValueType;
|
|
35
|
+
#else
|
|
36
|
+
typedef long LongestValueType;
|
|
37
|
+
typedef unsigned long ULongestValueType;
|
|
38
|
+
#endif
|
|
39
|
+
class WXIntegerValidator : public wxIntegerValidator<LongestValueType>, public wxRubyValidatorBinding
|
|
40
|
+
{
|
|
41
|
+
public:
|
|
42
|
+
WXIntegerValidator(const WXIntegerValidator& v)
|
|
43
|
+
: wxIntegerValidator(v)
|
|
44
|
+
, wxRubyValidatorBinding(v)
|
|
45
|
+
{
|
|
46
|
+
// this is horrible but why they needed to explicitly declare this as a const member is beyond me
|
|
47
|
+
*reinterpret_cast<LongestValueType**> ((void*)&m_value) = &m_valueCache;
|
|
48
|
+
}
|
|
49
|
+
WXIntegerValidator(long style=wxNUM_VAL_DEFAULT)
|
|
50
|
+
: wxIntegerValidator(&m_valueCache, style)
|
|
51
|
+
{}
|
|
52
|
+
WXIntegerValidator(LongestValueType min, LongestValueType max, long style=wxFILTER_NONE)
|
|
53
|
+
: wxIntegerValidator(&m_valueCache, min, max, style)
|
|
54
|
+
{}
|
|
55
|
+
virtual ~WXIntegerValidator()
|
|
56
|
+
{
|
|
57
|
+
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
virtual wxObject* Clone() const override
|
|
61
|
+
{
|
|
62
|
+
WXIntegerValidator* clone = new WXIntegerValidator(*this);
|
|
63
|
+
clone->m_valueCache = this->m_valueCache;
|
|
64
|
+
return clone;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
virtual void SetWindow(wxWindow *win) override
|
|
68
|
+
{
|
|
69
|
+
this->wxIntegerValidator::SetWindow(win);
|
|
70
|
+
VALUE self = get_self();
|
|
71
|
+
// make sure Ruby does not own this validator instance anymore
|
|
72
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
virtual bool TransferFromWindow () override
|
|
76
|
+
{
|
|
77
|
+
// call super
|
|
78
|
+
if (this->wxIntegerValidator::TransferFromWindow())
|
|
79
|
+
{
|
|
80
|
+
// ok, data is retrieved from window and cached
|
|
81
|
+
// now allow any defined binding handler to pass on the data
|
|
82
|
+
return this->DoOnTransferFromWindow(LL2NUM(m_valueCache));
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
virtual bool TransferToWindow () override
|
|
87
|
+
{
|
|
88
|
+
// collect data from any defined binding handler
|
|
89
|
+
VALUE data = this->DoOnTransferToWindow();
|
|
90
|
+
// if Qnil returned there is no data returned from handler so we just keep what's in the store
|
|
91
|
+
if (!NIL_P(data))
|
|
92
|
+
{
|
|
93
|
+
m_valueCache = NUM2LL(data);
|
|
94
|
+
}
|
|
95
|
+
// now allow standard functionality to transfer to window
|
|
96
|
+
return this->wxIntegerValidator::TransferToWindow();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
LongestValueType GetValue () const
|
|
100
|
+
{
|
|
101
|
+
return m_valueCache;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void SetValue (LongestValueType val)
|
|
105
|
+
{
|
|
106
|
+
m_valueCache = val;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
protected:
|
|
110
|
+
static VALUE c_IntegerValidator;
|
|
111
|
+
|
|
112
|
+
virtual VALUE get_self() override
|
|
113
|
+
{
|
|
114
|
+
if (NIL_P(this->self_))
|
|
115
|
+
{
|
|
116
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
117
|
+
// if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
|
|
118
|
+
if (NIL_P(this->self_))
|
|
119
|
+
{
|
|
120
|
+
if (NIL_P(c_IntegerValidator))
|
|
121
|
+
{
|
|
122
|
+
c_IntegerValidator = rb_const_get(mWxCore, rb_intern("IntegerValidator"));
|
|
123
|
+
}
|
|
124
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_IntegerValidator);
|
|
125
|
+
this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return this->self_;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
LongestValueType m_valueCache {};
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
VALUE WXIntegerValidator::c_IntegerValidator = Qnil;
|
|
135
|
+
|
|
136
|
+
static void GC_mark_wxIntegerValidator(void* ptr)
|
|
137
|
+
{
|
|
138
|
+
if (ptr)
|
|
139
|
+
{
|
|
140
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
141
|
+
WXIntegerValidator* rbvp = dynamic_cast<WXIntegerValidator*> (vp);
|
|
142
|
+
// This might be a pointer to a non-customized validator (or clone thereof) created internally
|
|
143
|
+
// by wxWidgets C++ code
|
|
144
|
+
if (rbvp) rbvp->GC_Mark();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
class WXUnsignedValidator : public wxIntegerValidator<ULongestValueType>, public wxRubyValidatorBinding
|
|
149
|
+
{
|
|
150
|
+
public:
|
|
151
|
+
WXUnsignedValidator(const WXUnsignedValidator& v)
|
|
152
|
+
: wxIntegerValidator(v)
|
|
153
|
+
, wxRubyValidatorBinding(v)
|
|
154
|
+
{
|
|
155
|
+
// this is horrible but why they needed to explicitly declare this as a const member is beyond me
|
|
156
|
+
*reinterpret_cast<ULongestValueType**> ((void*)&m_value) = &m_valueCache;
|
|
157
|
+
}
|
|
158
|
+
WXUnsignedValidator(long style=wxFILTER_NONE)
|
|
159
|
+
: wxIntegerValidator(&m_valueCache, style)
|
|
160
|
+
{}
|
|
161
|
+
WXUnsignedValidator(LongestValueType min, LongestValueType max, long style=wxFILTER_NONE)
|
|
162
|
+
: wxIntegerValidator(&m_valueCache, min, max, style)
|
|
163
|
+
{}
|
|
164
|
+
virtual ~WXUnsignedValidator()
|
|
165
|
+
{
|
|
166
|
+
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
virtual wxObject* Clone() const override
|
|
170
|
+
{
|
|
171
|
+
WXUnsignedValidator* clone = new WXUnsignedValidator(*this);
|
|
172
|
+
clone->m_valueCache = this->m_valueCache;
|
|
173
|
+
return clone;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
virtual void SetWindow(wxWindow *win) override
|
|
177
|
+
{
|
|
178
|
+
this->wxIntegerValidator::SetWindow(win);
|
|
179
|
+
VALUE self = get_self();
|
|
180
|
+
// make sure Ruby does not own this validator instance anymore
|
|
181
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
virtual bool TransferFromWindow () override
|
|
185
|
+
{
|
|
186
|
+
// call super
|
|
187
|
+
if (this->wxIntegerValidator::TransferFromWindow())
|
|
188
|
+
{
|
|
189
|
+
// ok, data is retrieved from window and cached
|
|
190
|
+
// now allow any defined binding handler to pass on the data
|
|
191
|
+
return this->DoOnTransferFromWindow(ULL2NUM(m_valueCache));
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
virtual bool TransferToWindow () override
|
|
196
|
+
{
|
|
197
|
+
// collect data from any defined binding handler
|
|
198
|
+
VALUE data = this->DoOnTransferToWindow();
|
|
199
|
+
// if Qnil returned there is no data returned from handler so we just keep what's in the store
|
|
200
|
+
if (!NIL_P(data))
|
|
201
|
+
{
|
|
202
|
+
m_valueCache = NUM2ULL(data);
|
|
203
|
+
}
|
|
204
|
+
// now allow standard functionality to transfer to window
|
|
205
|
+
return this->wxIntegerValidator::TransferToWindow();
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
ULongestValueType GetValue () const
|
|
209
|
+
{
|
|
210
|
+
return m_valueCache;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
void SetValue (ULongestValueType val)
|
|
214
|
+
{
|
|
215
|
+
m_valueCache = val;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
protected:
|
|
219
|
+
static VALUE c_UnsignedValidator;
|
|
220
|
+
|
|
221
|
+
virtual VALUE get_self() override
|
|
222
|
+
{
|
|
223
|
+
if (NIL_P(this->self_))
|
|
224
|
+
{
|
|
225
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
226
|
+
// if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
|
|
227
|
+
if (NIL_P(this->self_))
|
|
228
|
+
{
|
|
229
|
+
if (NIL_P(c_UnsignedValidator))
|
|
230
|
+
{
|
|
231
|
+
c_UnsignedValidator = rb_const_get(mWxCore, rb_intern("UnsignedValidator"));
|
|
232
|
+
}
|
|
233
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_UnsignedValidator);
|
|
234
|
+
this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return this->self_;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
ULongestValueType m_valueCache {};
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
VALUE WXUnsignedValidator::c_UnsignedValidator = Qnil;
|
|
244
|
+
|
|
245
|
+
static void GC_mark_wxUnsignedValidator(void* ptr)
|
|
246
|
+
{
|
|
247
|
+
if (ptr)
|
|
248
|
+
{
|
|
249
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
250
|
+
WXUnsignedValidator* rbvp = dynamic_cast<WXUnsignedValidator*> (vp);
|
|
251
|
+
// This might be a pointer to a non-customized validator (or clone thereof) created internally
|
|
252
|
+
// by wxWidgets C++ code
|
|
253
|
+
if (rbvp) rbvp->GC_Mark();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
class WXFloatValidator : public wxFloatingPointValidator<double>, public wxRubyValidatorBinding
|
|
258
|
+
{
|
|
259
|
+
public:
|
|
260
|
+
WXFloatValidator(const WXFloatValidator& v)
|
|
261
|
+
: wxFloatingPointValidator(v)
|
|
262
|
+
, wxRubyValidatorBinding(v)
|
|
263
|
+
{
|
|
264
|
+
// this is horrible but why they needed to explicitly declare this as a const member is beyond me
|
|
265
|
+
*reinterpret_cast<double**> ((void*)&m_value) = &m_valueCache;
|
|
266
|
+
}
|
|
267
|
+
WXFloatValidator(long style=wxFILTER_NONE)
|
|
268
|
+
: wxFloatingPointValidator(&m_valueCache, style)
|
|
269
|
+
{}
|
|
270
|
+
WXFloatValidator(int precision, long style=wxFILTER_NONE)
|
|
271
|
+
: wxFloatingPointValidator(precision, &m_valueCache, style)
|
|
272
|
+
{}
|
|
273
|
+
virtual ~WXFloatValidator()
|
|
274
|
+
{
|
|
275
|
+
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
virtual wxObject* Clone() const override
|
|
279
|
+
{
|
|
280
|
+
return new WXFloatValidator(*this);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
virtual void SetWindow(wxWindow *win) override
|
|
284
|
+
{
|
|
285
|
+
this->wxFloatingPointValidator::SetWindow(win);
|
|
286
|
+
VALUE self = get_self();
|
|
287
|
+
// make sure Ruby does not own this validator instance anymore
|
|
288
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
virtual bool TransferFromWindow () override
|
|
292
|
+
{
|
|
293
|
+
// call super
|
|
294
|
+
if (this->wxFloatingPointValidator::TransferFromWindow())
|
|
295
|
+
{
|
|
296
|
+
// ok, data is retrieved from window and cached
|
|
297
|
+
// now allow any defined binding handler to pass on the data
|
|
298
|
+
return this->DoOnTransferFromWindow(DBL2NUM(m_valueCache));
|
|
299
|
+
}
|
|
300
|
+
return false;
|
|
301
|
+
}
|
|
302
|
+
virtual bool TransferToWindow () override
|
|
303
|
+
{
|
|
304
|
+
// collect data from any defined binding handler
|
|
305
|
+
VALUE data = this->DoOnTransferToWindow();
|
|
306
|
+
// if Qnil returned there is no data returned from handler so we just keep what's in the store
|
|
307
|
+
if (!NIL_P(data))
|
|
308
|
+
{
|
|
309
|
+
m_valueCache = NUM2DBL(data);
|
|
310
|
+
}
|
|
311
|
+
// now allow standard functionality to transfer to window
|
|
312
|
+
return this->wxFloatingPointValidator::TransferToWindow();
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
double GetValue () const
|
|
316
|
+
{
|
|
317
|
+
return m_valueCache;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
void SetValue (double val)
|
|
321
|
+
{
|
|
322
|
+
m_valueCache = val;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
protected:
|
|
326
|
+
static VALUE c_FloatValidator;
|
|
327
|
+
|
|
328
|
+
virtual VALUE get_self() override
|
|
329
|
+
{
|
|
330
|
+
if (NIL_P(this->self_))
|
|
331
|
+
{
|
|
332
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
333
|
+
// if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
|
|
334
|
+
if (NIL_P(this->self_))
|
|
335
|
+
{
|
|
336
|
+
if (NIL_P(c_FloatValidator))
|
|
337
|
+
{
|
|
338
|
+
c_FloatValidator = rb_const_get(mWxCore, rb_intern("FloatValidator"));
|
|
339
|
+
}
|
|
340
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_FloatValidator);
|
|
341
|
+
this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return this->self_;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
double m_valueCache {};
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
VALUE WXFloatValidator::c_FloatValidator = Qnil;
|
|
351
|
+
|
|
352
|
+
static void GC_mark_wxFloatValidator(void* ptr)
|
|
353
|
+
{
|
|
354
|
+
if (ptr)
|
|
355
|
+
{
|
|
356
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
357
|
+
WXFloatValidator* rbvp = dynamic_cast<WXFloatValidator*> (vp);
|
|
358
|
+
// This might be a pointer to a non-customized validator (or clone thereof) created internally
|
|
359
|
+
// by wxWidgets C++ code
|
|
360
|
+
if (rbvp) rbvp->GC_Mark();
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
__HEREDOC
|
|
364
|
+
spec.add_swig_code 'GC_MANAGE_AS_OBJECT(WXIntegerValidator);',
|
|
365
|
+
'%markfunc WXIntegerValidator "GC_mark_wxIntegerValidator";',
|
|
366
|
+
'GC_MANAGE_AS_OBJECT(WXUnsignedValidator);',
|
|
367
|
+
'%markfunc WXUnsignedValidator "GC_mark_wxUnsignedValidator";',
|
|
368
|
+
'GC_MANAGE_AS_OBJECT(WXFloatValidator);',
|
|
369
|
+
'%markfunc WXFloatValidator "GC_mark_wxFloatValidator";'
|
|
370
|
+
spec.new_object 'WXIntegerValidator::Clone',
|
|
371
|
+
'WXUnsignedValidator::Clone',
|
|
372
|
+
'WXFloatValidator::Clone'
|
|
373
|
+
spec.suppress_warning(473,
|
|
374
|
+
'WXIntegerValidator::Clone',
|
|
375
|
+
'WXUnsignedValidator::Clone',
|
|
376
|
+
'WXFloatValidator::Clone')
|
|
377
|
+
spec.map_apply 'long long * OUTPUT' => ['wxLongLong_t& min', 'wxLongLong_t& max']
|
|
378
|
+
spec.map_apply 'unsigned long long * OUTPUT' => ['wxULongLong_t& min', 'wxULongLong_t& max']
|
|
379
|
+
spec.map_apply 'double * OUTPUT' => ['double& min', 'double& max']
|
|
380
|
+
spec.swig_import 'swig/classes/include/wxObject.h'
|
|
381
|
+
spec.swig_import 'swig/classes/include/wxEvtHandler.h'
|
|
382
|
+
spec.swig_import 'swig/classes/include/wxValidator.h'
|
|
383
|
+
# hardcoded interface declarations
|
|
384
|
+
spec.add_interface_code <<~__HEREDOC
|
|
385
|
+
// Bit masks used for numeric validator styles.
|
|
386
|
+
enum wxNumValidatorStyle
|
|
387
|
+
{
|
|
388
|
+
wxNUM_VAL_DEFAULT = 0x0,
|
|
389
|
+
wxNUM_VAL_THOUSANDS_SEPARATOR = 0x1,
|
|
390
|
+
wxNUM_VAL_ZERO_AS_BLANK = 0x2,
|
|
391
|
+
wxNUM_VAL_NO_TRAILING_ZEROES = 0x4
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
%alias WXIntegerValidator::GetMin "min";
|
|
395
|
+
%alias WXIntegerValidator::SetMin "min=";
|
|
396
|
+
%alias WXIntegerValidator::GetMax "max";
|
|
397
|
+
%alias WXIntegerValidator::SetMax "max=";
|
|
398
|
+
%alias WXIntegerValidator::SetStyle "style=";
|
|
399
|
+
%alias WXIntegerValidator::GetValue "value";
|
|
400
|
+
%alias WXIntegerValidator::SetValue "value=";
|
|
401
|
+
|
|
402
|
+
class WXIntegerValidator : public wxValidator
|
|
403
|
+
{
|
|
404
|
+
public:
|
|
405
|
+
WXIntegerValidator(const WXIntegerValidator& v);
|
|
406
|
+
WXIntegerValidator(long style=wxNUM_VAL_DEFAULT);
|
|
407
|
+
WXIntegerValidator(wxLongLong_t min, wxLongLong_t max, long style=wxFILTER_NONE);
|
|
408
|
+
virtual ~WXIntegerValidator();
|
|
409
|
+
|
|
410
|
+
virtual WXIntegerValidator* Clone() const;
|
|
411
|
+
|
|
412
|
+
void SetMin(wxLongLong_t min);
|
|
413
|
+
wxLongLong_t GetMin() const;
|
|
414
|
+
void SetMax(wxLongLong_t max);
|
|
415
|
+
wxLongLong_t GetMax() const;
|
|
416
|
+
void SetRange(wxLongLong_t min, wxLongLong_t max);
|
|
417
|
+
void GetRange(wxLongLong_t& min, wxLongLong_t& max) const;
|
|
418
|
+
void SetStyle(int style);
|
|
419
|
+
|
|
420
|
+
// wxRuby extensions
|
|
421
|
+
wxLongLong_t GetValue () const;
|
|
422
|
+
void SetValue (wxLongLong_t val);
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
%alias WXUnsignedValidator::GetMin "min";
|
|
426
|
+
%alias WXUnsignedValidator::SetMin "min=";
|
|
427
|
+
%alias WXUnsignedValidator::GetMax "max";
|
|
428
|
+
%alias WXUnsignedValidator::SetMax "max=";
|
|
429
|
+
%alias WXUnsignedValidator::SetStyle "style=";
|
|
430
|
+
%alias WXUnsignedValidator::GetValue "value";
|
|
431
|
+
%alias WXUnsignedValidator::SetValue "value=";
|
|
432
|
+
|
|
433
|
+
class WXUnsignedValidator : public wxValidator
|
|
434
|
+
{
|
|
435
|
+
public:
|
|
436
|
+
WXUnsignedValidator(const WXUnsignedValidator& v);
|
|
437
|
+
WXUnsignedValidator(long style=wxNUM_VAL_DEFAULT);
|
|
438
|
+
WXUnsignedValidator(wxULongLong_t min, wxULongLong_t max, long style=wxFILTER_NONE);
|
|
439
|
+
virtual ~WXUnsignedValidator();
|
|
440
|
+
|
|
441
|
+
virtual WXUnsignedValidator* Clone() const;
|
|
442
|
+
|
|
443
|
+
void SetMin(wxULongLong_t min);
|
|
444
|
+
wxULongLong_t GetMin() const;
|
|
445
|
+
void SetMax(wxULongLong_t max);
|
|
446
|
+
wxULongLong_t GetMax() const;
|
|
447
|
+
void SetRange(wxULongLong_t min, wxULongLong_t max);
|
|
448
|
+
void GetRange(wxULongLong_t& min, wxULongLong_t& max) const;
|
|
449
|
+
void SetStyle(int style);
|
|
450
|
+
|
|
451
|
+
// wxRuby extensions
|
|
452
|
+
wxULongLong_t GetValue () const;
|
|
453
|
+
void SetValue (wxULongLong_t val);
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
%alias WXFloatValidator::GetMin "min";
|
|
457
|
+
%alias WXFloatValidator::SetMin "min=";
|
|
458
|
+
%alias WXFloatValidator::GetMax "max";
|
|
459
|
+
%alias WXFloatValidator::SetMax "max=";
|
|
460
|
+
%alias WXFloatValidator::SetStyle "style=";
|
|
461
|
+
%alias WXFloatValidator::GetValue "value";
|
|
462
|
+
%alias WXFloatValidator::SetValue "value=";
|
|
463
|
+
|
|
464
|
+
class WXFloatValidator : public wxValidator
|
|
465
|
+
{
|
|
466
|
+
public:
|
|
467
|
+
WXFloatValidator(const WXFloatValidator& v);
|
|
468
|
+
WXFloatValidator(long style=wxNUM_VAL_DEFAULT);
|
|
469
|
+
WXFloatValidator(int precision, long style);
|
|
470
|
+
virtual ~WXFloatValidator();
|
|
471
|
+
|
|
472
|
+
virtual WXFloatValidator* Clone() const;
|
|
473
|
+
|
|
474
|
+
void SetMin(double min);
|
|
475
|
+
double GetMin() const;
|
|
476
|
+
void SetMax(double max);
|
|
477
|
+
double GetMax() const;
|
|
478
|
+
void SetRange(double min, double max);
|
|
479
|
+
void GetRange(double& min, double& max) const;
|
|
480
|
+
void SetStyle(int style);
|
|
481
|
+
|
|
482
|
+
void SetPrecision(unsigned precision);
|
|
483
|
+
void SetFactor(double factor);
|
|
484
|
+
|
|
485
|
+
// wxRuby extensions
|
|
486
|
+
double GetValue () const;
|
|
487
|
+
void SetValue (double val);
|
|
488
|
+
};
|
|
489
|
+
__HEREDOC
|
|
490
|
+
end
|
|
491
|
+
end # class NumValidator
|
|
492
|
+
|
|
493
|
+
end # class Director
|
|
494
|
+
|
|
495
|
+
end # module WXRuby3
|
|
@@ -6,31 +6,156 @@
|
|
|
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 NumericPropertyValidator <
|
|
15
|
+
class NumericPropertyValidator < 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 WXRubyNumericPropertyValidator : public wxNumericPropertyValidator
|
|
21
|
+
class WXRubyNumericPropertyValidator : public wxNumericPropertyValidator, public wxRubyValidatorBinding
|
|
22
22
|
{
|
|
23
23
|
public:
|
|
24
24
|
WXRubyNumericPropertyValidator(NumericType numericType, int base=10)
|
|
25
|
-
: wxNumericPropertyValidator(numericType, base)
|
|
25
|
+
: wxNumericPropertyValidator(numericType, base)
|
|
26
|
+
{
|
|
27
|
+
m_stringValue = &m_valueCache;
|
|
28
|
+
}
|
|
29
|
+
WXRubyNumericPropertyValidator(const WXRubyNumericPropertyValidator& other)
|
|
30
|
+
: wxNumericPropertyValidator(other)
|
|
31
|
+
, wxRubyValidatorBinding(other)
|
|
32
|
+
{
|
|
33
|
+
m_stringValue = &m_valueCache;
|
|
34
|
+
}
|
|
26
35
|
virtual ~WXRubyNumericPropertyValidator()
|
|
27
36
|
{
|
|
28
37
|
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
29
38
|
}
|
|
39
|
+
|
|
40
|
+
virtual wxObject* Clone() const override
|
|
41
|
+
{
|
|
42
|
+
WXRubyNumericPropertyValidator *clone = new WXRubyNumericPropertyValidator(*this);
|
|
43
|
+
clone->m_valueCache = this->m_valueCache;
|
|
44
|
+
return clone;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
virtual void SetWindow(wxWindow *win) override
|
|
48
|
+
{
|
|
49
|
+
this->wxNumericPropertyValidator::SetWindow(win);
|
|
50
|
+
VALUE self = get_self();
|
|
51
|
+
// make sure Ruby does not own this validator instance anymore
|
|
52
|
+
RDATA(self)->dfree = SWIG_RubyRemoveTracking;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
virtual bool TransferFromWindow () override
|
|
56
|
+
{
|
|
57
|
+
// call super
|
|
58
|
+
if (this->wxNumericPropertyValidator::TransferFromWindow())
|
|
59
|
+
{
|
|
60
|
+
// ok, data is retrieved from window and cached
|
|
61
|
+
// now allow any defined binding handler to pass on the data
|
|
62
|
+
return this->DoOnTransferFromWindow(WXSTR_TO_RSTR(m_valueCache));
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
virtual bool TransferToWindow () override
|
|
67
|
+
{
|
|
68
|
+
// collect data from any defined binding handler
|
|
69
|
+
VALUE data = this->DoOnTransferToWindow();
|
|
70
|
+
// if Qnil returned there is no data returned from handler so we just keep what's in the store
|
|
71
|
+
if (!NIL_P(data))
|
|
72
|
+
{
|
|
73
|
+
m_valueCache = RSTR_TO_WXSTR(data);
|
|
74
|
+
}
|
|
75
|
+
// now allow standard functionality to transfer to window
|
|
76
|
+
return this->wxNumericPropertyValidator::TransferToWindow();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const wxString& GetValue () const
|
|
80
|
+
{
|
|
81
|
+
return m_valueCache;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void SetValue (const wxString& val)
|
|
85
|
+
{
|
|
86
|
+
m_valueCache = val;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
private:
|
|
90
|
+
static VALUE c_NumericPropertyValidator;
|
|
91
|
+
|
|
92
|
+
virtual VALUE get_self() override
|
|
93
|
+
{
|
|
94
|
+
if (NIL_P(this->self_))
|
|
95
|
+
{
|
|
96
|
+
this->self_ = SWIG_RubyInstanceFor(this);
|
|
97
|
+
// if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
|
|
98
|
+
if (NIL_P(this->self_))
|
|
99
|
+
{
|
|
100
|
+
if (NIL_P(c_NumericPropertyValidator))
|
|
101
|
+
{
|
|
102
|
+
c_NumericPropertyValidator = rb_eval_string("Wx::PG::NumericPropertyValidator");
|
|
103
|
+
}
|
|
104
|
+
swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_NumericPropertyValidator);
|
|
105
|
+
this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return this->self_;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
wxString m_valueCache;
|
|
30
112
|
};
|
|
31
|
-
|
|
113
|
+
|
|
114
|
+
VALUE WXRubyNumericPropertyValidator::c_NumericPropertyValidator = Qnil;
|
|
115
|
+
|
|
116
|
+
static void GC_mark_wxNumericPropertyValidator(void* ptr)
|
|
117
|
+
{
|
|
118
|
+
if (ptr)
|
|
119
|
+
{
|
|
120
|
+
wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
|
|
121
|
+
WXRubyNumericPropertyValidator* rbvp = dynamic_cast<WXRubyNumericPropertyValidator*> (vp);
|
|
122
|
+
// This might be a pointer to a non-customized validator (or clone thereof) created internally
|
|
123
|
+
// by wxWidgets C++ code
|
|
124
|
+
if (rbvp) rbvp->GC_Mark();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
__HEREDOC
|
|
128
|
+
spec.add_swig_code '%markfunc wxValidator "GC_mark_wxValidator";'
|
|
129
|
+
# make Ruby director and wrappers use custom implementation
|
|
32
130
|
spec.use_class_implementation 'wxNumericPropertyValidator', 'WXRubyNumericPropertyValidator'
|
|
33
|
-
spec.
|
|
131
|
+
spec.new_object 'wxNumericPropertyValidator::Clone'
|
|
132
|
+
# add wxRuby extensions
|
|
133
|
+
spec.add_extend_code 'wxNumericPropertyValidator', <<~__HEREDOC
|
|
134
|
+
VALUE GetValue()
|
|
135
|
+
{
|
|
136
|
+
WXRubyNumericPropertyValidator* rb_self = dynamic_cast<WXRubyNumericPropertyValidator*> ($self);
|
|
137
|
+
if (rb_self)
|
|
138
|
+
return WXSTR_TO_RSTR(rb_self->GetValue());
|
|
139
|
+
else
|
|
140
|
+
return Qnil;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
void SetValue(const wxString& val)
|
|
144
|
+
{
|
|
145
|
+
WXRubyNumericPropertyValidator* rb_self = dynamic_cast<WXRubyNumericPropertyValidator*> ($self);
|
|
146
|
+
if (rb_self)
|
|
147
|
+
rb_self->SetValue(val);
|
|
148
|
+
}
|
|
149
|
+
__HEREDOC
|
|
150
|
+
# handle clone mapping
|
|
151
|
+
spec.map 'wxObject *' => 'Wx::PG::NumericPropertyValidator' do
|
|
152
|
+
map_out code: <<~__CODE
|
|
153
|
+
$result = SWIG_NewPointerObj(SWIG_as_voidptr($1), SWIGTYPE_p_wxTextValidator, SWIG_POINTER_OWN);
|
|
154
|
+
__CODE
|
|
155
|
+
end
|
|
156
|
+
spec.suppress_warning(473, 'wxNumericPropertyValidator::Clone')
|
|
157
|
+
spec.extend_interface 'wxNumericPropertyValidator',
|
|
158
|
+
'wxNumericPropertyValidator(const wxNumericPropertyValidator &other)'
|
|
34
159
|
spec.do_not_generate :variables, :defines, :enums, :functions
|
|
35
160
|
end
|
|
36
161
|
|