wxruby3 0.9.1 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/lib/wx/doc/evthandler.rb
CHANGED
@@ -9,112 +9,117 @@
|
|
9
9
|
|
10
10
|
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
12
|
+
module Wx
|
13
|
+
|
14
|
+
class EvtHandler
|
15
|
+
|
16
|
+
# Removes all (Ruby) installed EventFilter-s.
|
17
|
+
# @return [void]
|
18
|
+
def self.clear_filters; end
|
19
|
+
|
20
|
+
# Public method to register the mapping of a custom event type
|
21
|
+
# +konstant+ (which should be a unique integer; one will be created if
|
22
|
+
# not supplied) to a custom event class +klass+. If +meth+ and +arity+
|
23
|
+
# are given, a convenience evt_handler method called +meth+ will be
|
24
|
+
# created, which accepts +arity+ arguments (specify both or neither).
|
25
|
+
# @param klass [Class] event class
|
26
|
+
# @param konstant [Integer] unique event type id (if nil a unique value will be autogenerated)
|
27
|
+
# @param meth [String,Symbol] optional event handler method name
|
28
|
+
# @param arity [Integer] event handler method arity (should be 0, 1 or 2 if not nil)
|
29
|
+
# @return [Integer] unique event type id
|
30
|
+
def self.register_class(klass, konstant = nil, meth = nil, arity = nil) end
|
31
|
+
|
32
|
+
def connect(first_id, last_id, evt_type, handler) end
|
33
|
+
|
34
|
+
def disconnect(first_id, last_id, evt_spec) end
|
35
|
+
|
36
|
+
# Processes an event, searching event tables and calling zero or more suitable event handler function(s).
|
37
|
+
#
|
38
|
+
# Normally, your application would not call this function: it is called in the wxWidgets implementation to
|
39
|
+
# dispatch incoming user interface events to the framework (and application).
|
40
|
+
#
|
41
|
+
# However, you might need to call it if implementing new functionality (such as a new control) where you
|
42
|
+
# define new event types, as opposed to allowing the user to override virtual functions.
|
43
|
+
#
|
44
|
+
# In wxRuby this method can not be effectively overridden.
|
45
|
+
# In order to override default event processing define a try_before(event) or try_after(event) method
|
46
|
+
# as member of a derived EvtHandler class.
|
47
|
+
#
|
48
|
+
# The normal order of event table searching is as follows:
|
49
|
+
#
|
50
|
+
# 1. {Wx::App#filter_event} is called. If it returns anything but -1 (default) the processing stops here.
|
51
|
+
# 2. #try_before (if it exists, otherwise the C++ default implementation) is called (this is where {Wx::Validator} are taken into account for {Wx::Window} objects). If this returns true, the function exits.
|
52
|
+
# 3. If the object is disabled (via a call to {Wx::EvtHandler#set_evt_handler_enabled}) the function skips to step (7).
|
53
|
+
# 4. Dynamic event table of the handlers bound using Bind<>() is searched in the most-recently-bound to the most-early-bound order. If a handler is found, it is executed and the function returns true unless the handler used {Wx::Event#skip} to indicate that it didn't handle the event in which case the search continues.
|
54
|
+
# 5. Static events table of the handlers bound using event table macros is searched for this event handler in the order of appearance of event table macros in the source code. If this fails, the base class event table is tried, and so on until no more tables exist or an appropriate function was found. If a handler is found, the same logic as in the previous step applies.
|
55
|
+
# 6. The search is applied down the entire chain of event handlers (usually the chain has a length of one). This chain can be formed using {Wx::EvtHandler#set_next_handler}
|
56
|
+
# Note that in the case of Wx::Window you can build a stack of event handlers (see {Wx::Window#push_event_handler} for more info). If any of the handlers of the chain return true, the function exits.
|
57
|
+
# 7. #try_after (if it exists, otherwise the C++ default implementation) is called: for the {Wx::Window} object this may propagate the event to the window parent (recursively). If the event is still not processed, {#process_event} on the {Wx::THE_APP} object is called as the last step.
|
58
|
+
#
|
59
|
+
# Notice that steps (2)-(6) are performed in {#process_event_locally} which is called by this function.
|
60
|
+
#
|
61
|
+
# @param event [Wx::Event] Event to process.
|
62
|
+
# @return [true,false] true if event has been processed
|
63
|
+
def process_event(event) end
|
64
|
+
|
65
|
+
# Process a command, supplying the window identifier, command event identifier, and member function or proc.
|
66
|
+
# @param [Integer] id window identifier
|
67
|
+
# @param [Integer] evt_id event type identifier
|
68
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
69
|
+
# @yieldparam [Wx::CommandEvent] event event to handle
|
70
|
+
def evt_command(id, evt_id, meth = nil, &block) end
|
71
|
+
|
72
|
+
# Process a command for a range of window identifiers, supplying the minimum and maximum window identifiers, command event identifier, and member function or proc.
|
73
|
+
# @param [Integer] id1 minimum window identifier
|
74
|
+
# @param [Integer] id2 maximum window identifier
|
75
|
+
# @param [Integer] evt_id event type identifier
|
76
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
77
|
+
# @yieldparam [Wx::CommandEvent] event event to handle
|
78
|
+
def evt_command_range(id1, id2, evt_id, meth = nil, &block) end
|
79
|
+
|
80
|
+
# Convenience evt_handler to listen to all mouse events.
|
81
|
+
# @yieldparam [Wx::MouseEvent] event event to handle
|
82
|
+
def evt_mouse_events(*args, &block) end
|
83
|
+
|
84
|
+
# Convenience evt handler to listen to all scrollwin events
|
85
|
+
# (from Wx::ScrolledWindow).
|
86
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
87
|
+
# @yieldparam [Wx::ScrollWinEvent] event event to handle
|
88
|
+
def evt_scrollwin(meth = nil, &block) end
|
89
|
+
|
90
|
+
# Convenience evt handler to listen to all scroll events
|
91
|
+
# (from Wx::Slider and Wx::ScrollBar).
|
92
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
93
|
+
# @yieldparam [Wx::ScrollWinEvent] event event to handle
|
94
|
+
def evt_scroll(meth = nil, &block) end
|
95
|
+
|
96
|
+
# Convenience evt handler to listen to all scroll events
|
97
|
+
# (from Wx::Slider and Wx::ScrollBar) with an id.
|
98
|
+
# @param [Integer] id window identifier
|
99
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
100
|
+
# @yieldparam [Wx::ScrollWinEvent] event event to handle
|
101
|
+
def evt_scroll_command(id, meth = nil, &block) end
|
102
|
+
|
103
|
+
# Processes Wx::WindowDestroyEvent events.
|
104
|
+
# In wxRuby Wx::Event#skipped will be forced to true after the provided
|
105
|
+
# handler has finished to make sure the event is propagated as it is
|
106
|
+
# required that Wx::App gets to handle the event in the end.
|
107
|
+
# @yieldparam [Wx::WindowDestroyEvent] event event to handle
|
108
|
+
def evt_window_destroy(&block) end
|
109
|
+
|
110
|
+
# Processes {Wx::EVT_TIMER} events. See {Wx::TimerEvent}.
|
111
|
+
# @param [Integer,Wx::Enum,Wx::Timer] id timer id
|
112
|
+
# @param [String,Symbol,Method,Proc] meth (name of) method or event handling proc
|
113
|
+
# @yieldparam [Wx::TimerEvent] event the event to handle
|
114
|
+
def evt_timer(id, meth = nil, &block) end
|
115
|
+
|
116
|
+
# Schedule a call for asynchronous execution (at idle time).
|
117
|
+
# @param meth [Symbol,String,Method,Proc] (name of) method or proc to call
|
118
|
+
# @param args [Array<Object>] optional arguments to pass to the call
|
119
|
+
# @return [void]
|
120
|
+
# @yield [*args] optional arguments
|
121
|
+
def call_after(meth = nil, *args, &block) end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
120
125
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 12. Client/User data with wxRuby
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 12. Client/User data with wxRuby
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
The wxWidgets library has widespread support for attaching arbitrary client (or user) data to GUI elements like
|
11
|
+
windows (all event handlers actually), window items, sizer items etc.
|
12
|
+
To cater to various C++ use cases in most instances this support covers both specific wxWidgets defined types (like
|
13
|
+
wxClientData and wxObject instances) and untyped data pointers (represented as `void *`) with subtle but essential
|
14
|
+
differences.
|
15
|
+
|
16
|
+
wxRuby implements a fully compatible version of this support.
|
17
|
+
|
18
|
+
## Everything is an Object
|
19
|
+
|
20
|
+
As Ruby does not do untyped data (everything is an Object), and having two different options is confusing anyway,
|
21
|
+
wxRuby provides only a single option and more or less unifies the interface across the entire library.
|
22
|
+
In Ruby anywhere the original wxWidgets library supports some type of client (or user) data attachment wxRuby will
|
23
|
+
support the attachment of any arbitrary Ruby `Object` by either the method `#set_client_object` (where C++ supports
|
24
|
+
`SetClientData` and `SetClientObject`) or `#set_user_data` (where C++ supports `SetUserData`). Data retrieval
|
25
|
+
is supported by complementary `#get_client_object` or `#get_user_data` methods in all cases.
|
26
|
+
Wherever C++ supports `SetClientObject` wxRuby also provides the method aliases `#set_client_data` and `#get_client_data`.
|
27
|
+
|
28
|
+
Another difference with C++ is that for typed client data in wxWidgets developers could leverage object destruction as
|
29
|
+
callback trigger (through the implementation of virtual destructors) to handle any required 'unlinking' logic. This
|
30
|
+
obviously does not apply to untyped data (one of the 'subtle' differences).
|
31
|
+
As Ruby does not provide any usable object destruction hooks this does not work there.
|
32
|
+
Ruby however has 'Duck-typing' which is what wxRuby uses to provide support for a unlinking callback 'hook' for attached
|
33
|
+
client data.
|
34
|
+
|
35
|
+
> Any attached Ruby Object implementing (responding to) the method `#client_data_unlinked` will have that method called after the
|
36
|
+
> attached object has been detached from the element it was attached to (either because of data replacement or element
|
37
|
+
> deletion).
|
38
|
+
|
39
|
+
Regard the following example.
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
frame = Wx::Frame.new(nil, Wx::ID_ANY)
|
43
|
+
|
44
|
+
# attach a hash with user data
|
45
|
+
frame.set_client_data({ text: 'A string', float: 3.14 })
|
46
|
+
|
47
|
+
# ... do something with frame
|
48
|
+
|
49
|
+
# replace the user data
|
50
|
+
frame.set_client_data([1,2,3,4])
|
51
|
+
|
52
|
+
# ... do something else with frame
|
53
|
+
```
|
54
|
+
|
55
|
+
In this case standard Ruby object are attached. After attachment the object can be retrieved using a call to `get_client_data`
|
56
|
+
anywhere access to the frame instance is available.
|
57
|
+
|
58
|
+
Using a specially derived (or adapted) object a developer can handle specific logic after the object has been unlinked
|
59
|
+
like in this example:
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
# define a user data class
|
63
|
+
class MyUserData
|
64
|
+
def initialize(payload)
|
65
|
+
@payload = payload
|
66
|
+
end
|
67
|
+
attr_reader :payload
|
68
|
+
|
69
|
+
def client_data_unlinked
|
70
|
+
# handle some logic
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# ...
|
75
|
+
|
76
|
+
# attach data to some window
|
77
|
+
win.set_client_data(MyUserData.new(some_payload_data))
|
78
|
+
|
79
|
+
# ...
|
80
|
+
|
81
|
+
# reset user data for some reason (will call MyUserData#client_data_unlinked after replacement)
|
82
|
+
win.set_client_data(nil)
|
83
|
+
```
|
84
|
+
|
85
|
+
# CommandEvent data
|
86
|
+
|
87
|
+
wxRuby also fully supports the propagation of attached client data to Wx::CommandEvent objects (see
|
88
|
+
{Wx::CommandEvent#get_client_object} and {Wx::CommandEvent#set_client_object}).
|
89
|
+
As mentioned above wxRuby provides the method aliases `#set_client_data` and `#get_client_data` here also.
|
@@ -0,0 +1,139 @@
|
|
1
|
+
<!--
|
2
|
+
# @markup markdown
|
3
|
+
# @title 13. Validators and data binding
|
4
|
+
-->
|
5
|
+
|
6
|
+
# 13. Validators and data binding
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
wxRuby fully supports validator classes offering input validation and/or data binding and/or event filtering.
|
11
|
+
|
12
|
+
## Validation
|
13
|
+
|
14
|
+
The base Wx::Validator class defines the method {Wx::Validator#validate} which is called when validation of the
|
15
|
+
value or content of the associated window is required.
|
16
|
+
|
17
|
+
The implementation of this method should (somehow) retrieve the value of the associated window and validate that
|
18
|
+
value, returning `true` if valid or `false` otherwise. The default implementation always returns `false`.
|
19
|
+
|
20
|
+
An example would be:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# define custom validator
|
24
|
+
class MyTextValidator < Wx::Validator
|
25
|
+
|
26
|
+
def validate(_parent)
|
27
|
+
txt = get_window.value
|
28
|
+
# validate that the control text starts with a capital if not empty
|
29
|
+
txt.empty? || (?A..?Z).include?(txt[0])
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
# ...
|
35
|
+
|
36
|
+
# assign custom validator to text control
|
37
|
+
text = Wx::TextCtrl.new(parent, MY_TEXT_ID)
|
38
|
+
text.set_validator(MyTextValidator.new)
|
39
|
+
```
|
40
|
+
|
41
|
+
The derived, specialized, validator classes {Wx::TextValidator}, {Wx::IntegerValidator}, {Wx::IntegerValidator} and
|
42
|
+
{Wx::FloatValidator} all have implementations that can be configured through specific options and do not
|
43
|
+
normally require an override to be defined.
|
44
|
+
|
45
|
+
Examples of using the standard validators would be:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
text = Wx::TextCtrl.new(parent, MY_TEXT_ID)
|
49
|
+
|
50
|
+
# accept only hexadecimal characters
|
51
|
+
text.set_validator(Wx::TextValidator.new(Wx::TextValidatorStyle::FILTER_XDIGITS))
|
52
|
+
|
53
|
+
# or only numbers between -20 and 20
|
54
|
+
text.set_validator(Wx::IntegerValidator.new(-20, 20))
|
55
|
+
```
|
56
|
+
|
57
|
+
## Event filtering
|
58
|
+
|
59
|
+
All validator classes are event handlers and can have event handling routines defined (see
|
60
|
+
[Event Handling](05_event-handling.md)).
|
61
|
+
When processing events the core implementation will allow any validator associated with a window to handle an event
|
62
|
+
before the associated window itself thereby allowing it to filter events (see {Wx::EvtHandler#process_event} for more
|
63
|
+
details).
|
64
|
+
|
65
|
+
The standard specialized validators use this functionality to filter entry of allowable characters (by handling
|
66
|
+
Wx::EVT_CHAR events).
|
67
|
+
|
68
|
+
## Data binding
|
69
|
+
|
70
|
+
Data binding concerns the transfer of a validator's associated window's value to or from a user definable storage (a
|
71
|
+
variable, memory cache entry, persistent storage ...).
|
72
|
+
|
73
|
+
To integrate with the core C++ implementation but allow for Ruby specific differences the scheme implemented for this
|
74
|
+
differs somewhat (in naming and functionality) from the original wxWidgets interface.
|
75
|
+
|
76
|
+
The responsibilities of the standard wxRuby interface for handling validator data binding is distributed over 2 base
|
77
|
+
methods and a mixin module.
|
78
|
+
|
79
|
+
- The protected {Wx::Validator#do_transfer_from_window} and {Wx::Validator#do_transfer_to_window} methods are
|
80
|
+
responsible for collecting and transferring data from/to the associated window (possibly applying conversions).<br>
|
81
|
+
<br>
|
82
|
+
These methods have default implementations in all of the derived validator classes and should not be overridden for
|
83
|
+
specializations of these as they will be ignored.<br>
|
84
|
+
Overriding these methods is necessary to implement data binding for any user defined specialization of the base
|
85
|
+
{Wx::Validator} class.<br>
|
86
|
+
<br>
|
87
|
+
- The methods the {Wx::Validator::Binding} mixin module provide the means to store data after collection from or retrieve data
|
88
|
+
before transfer to the associated window.<br>
|
89
|
+
<br>
|
90
|
+
The methods {Wx::Validator::Binding#on_transfer_from_window} and {Wx::Validator::Binding#on_transfer_to_window} provide
|
91
|
+
the means to specify user defined binding handlers for storing the data transferred from the associated window or retrieving the
|
92
|
+
data to transfer to the associated window. Like with event handling the handlers can be specified using a `String` or
|
93
|
+
`Symbol`, a `Proc` or a `Method`.<br>
|
94
|
+
<br>
|
95
|
+
The methods {Wx::Validator::Binding#do_on_transfer_from_window} and {Wx::Validator::Binding#do_on_transfer_to_window} by
|
96
|
+
default call the binding handlers if defined.
|
97
|
+
These methods can be overridden to create derived validator classes with dedicated data binding functionality like
|
98
|
+
with {Wx::GenericValidator}.
|
99
|
+
|
100
|
+
An example of a custom validator providing data binding would be:
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
class MyTextValidator < Wx::Validator
|
104
|
+
|
105
|
+
def do_transfer_from_window
|
106
|
+
get_window.get_value
|
107
|
+
end
|
108
|
+
|
109
|
+
def do_transfer_to_window(val)
|
110
|
+
get_window.set_value(val)
|
111
|
+
true
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
# ...
|
117
|
+
|
118
|
+
# use custom validator
|
119
|
+
@data = nil # attribute to store data
|
120
|
+
text.set_validator(MyTextValidator.new)
|
121
|
+
text.get_validator.on_transfer_to_window { @data }
|
122
|
+
text.get_validator.on_transfer_from_window { |v| @data = v }
|
123
|
+
```
|
124
|
+
|
125
|
+
All derived, specialized, validators implement a dedicated value cache which can be accessed through the `#value` attribute
|
126
|
+
accessor. Through this accessor the data collected from the associated window can get retrieved or the data to be transferred
|
127
|
+
to the associated window set.
|
128
|
+
With these classes it is therefor not necessary to define binding handlers. Defining binding handlers can however still be
|
129
|
+
useful to implement a custom, persistent, storage solution.
|
130
|
+
|
131
|
+
### Wx::GenericValidator
|
132
|
+
|
133
|
+
The {Wx::GenericValidator} class provides an extendable standard implementation for data binding in combination with a
|
134
|
+
large collection of controls (see class documentation).
|
135
|
+
The implementation provides a standard accessor {Wx::GenericValidator#value} to get the data value collected
|
136
|
+
from the associated window or set the data to transfer to the associated window.
|
137
|
+
|
138
|
+
To add support for any control unsupported by the standard implementation the method {Wx::GenericValidator.define_handler}
|
139
|
+
is provided (see documentation for an example).
|
data/lib/wx/doc/font.rb
CHANGED
data/lib/wx/doc/gc_dc.rb
CHANGED
@@ -14,10 +14,15 @@ module Wx
|
|
14
14
|
# Creates a Wx::GCDC instance for target and
|
15
15
|
# passes the instance to the given block to draw on.
|
16
16
|
# @overload draw_on(dc)
|
17
|
-
# @param [Wx::WindowDC,Wx::MemoryDC
|
17
|
+
# @param [Wx::WindowDC,Wx::MemoryDC] target DC to draw on
|
18
18
|
# @yieldparam [Wx::GCDC] dc GCDC instance to draw on
|
19
19
|
# @return [Object] result from block
|
20
20
|
# @overload draw_on(dc)
|
21
|
+
# @param [Wx::PrinterDC] target DC to draw on
|
22
|
+
# @yieldparam [Wx::GCDC] dc GCDC instance to draw on
|
23
|
+
# @return [Object] result from block
|
24
|
+
# @wxrb_require USE_PRINTING_ARCHITECTURE,WXMSW|WXOSX|USE_GTKPRINT
|
25
|
+
# @overload draw_on(gc)
|
21
26
|
# @param [Wx::GraphicsContext] gc GraphicsContext to draw on
|
22
27
|
# @yieldparam [Wx::GCDC] dc GCDC instance to draw on
|
23
28
|
# @return [Object] result from block
|
data/lib/wx/doc/gdi_common.rb
CHANGED
@@ -61,8 +61,12 @@ module Wx
|
|
61
61
|
|
62
62
|
alias :get_x :get_width
|
63
63
|
alias :x :get_width
|
64
|
+
alias :set_x :set_width
|
65
|
+
alias :x= :set_width
|
64
66
|
alias :get_y :get_height
|
65
67
|
alias :y :get_height
|
68
|
+
alias :set_y :set_height
|
69
|
+
alias :y= :set_height
|
66
70
|
|
67
71
|
# Set this size to the given size's width,height values
|
68
72
|
# @param [Wx::Size] sz
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# :stopdoc:
|
2
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
3
|
+
#
|
4
|
+
# This software is released under the MIT license.
|
5
|
+
# :startdoc:
|
6
|
+
|
7
|
+
|
8
|
+
module Wx
|
9
|
+
|
10
|
+
# Wx::GenericValidator performs data transfer (but not validation or filtering)
|
11
|
+
# for many type of controls.
|
12
|
+
#
|
13
|
+
# Wx::GenericValidator supports:
|
14
|
+
# - boolean type controls
|
15
|
+
# - Wx::CheckBox, Wx::RadioButton, Wx::ToggleButton, Wx::BitmapToggleButton
|
16
|
+
# - string type controls
|
17
|
+
# - Wx::Button, Wx::StaticText, Wx::TextCtrl
|
18
|
+
# - Wx::ComboBox in case it does not have style Wx::CB_READONLY
|
19
|
+
# - integer type controls
|
20
|
+
# - Wx::RadioBox, Wx::SpinButton, Wx::SpinCtrl, Wx::Gauge, Wx::Slider, Wx::ScrollBar, Wx::Choice
|
21
|
+
# - Wx::ComboBox in case it has style Wx::CB_READONLY
|
22
|
+
# - Wx::ListBox and Wx::CheckListBox in case of style Wx::LB_SINGLE
|
23
|
+
# - integer array type controls
|
24
|
+
# - Wx::ListBox and Wx::CheckListBox in case of style Wx::LB_MULTIPLE or Wx::LB_EXTENDED
|
25
|
+
# - date/time type controls
|
26
|
+
# - Wx::DatePickerCtrl, Wx::TimePickerCtrl
|
27
|
+
#
|
28
|
+
# It checks the type of the window and uses an appropriate type for it.
|
29
|
+
# For example, Wx::Button and Wx::TextCtrl transfer data to and from a
|
30
|
+
# String variable; Wx::ListBox uses an Array of Integer (in case of multiple
|
31
|
+
# selection list) or an Integer (in case of a single choice list); Wx::CheckBox
|
32
|
+
# uses a boolean.
|
33
|
+
#
|
34
|
+
# In wxRuby this is a pure Ruby implementation derived from Wx::Validator and
|
35
|
+
# **not** a wrapper for the C++ wxGenericValidator class although the functionality
|
36
|
+
# is virtually identical.
|
37
|
+
#
|
38
|
+
# @see Wx::Validator
|
39
|
+
# @see Wx::TextValidator
|
40
|
+
# @see Wx::IntegerValidator
|
41
|
+
# @see Wx::UnsignedValidator
|
42
|
+
# @see Wx::FloatValidator
|
43
|
+
#
|
44
|
+
# @wxrb_require USE_VALIDATORS
|
45
|
+
class GenericValidator < Wx::Validator
|
46
|
+
|
47
|
+
# Returns a Hash of handlers for the various control types this class supports.
|
48
|
+
# User defined extension (or re-definition) of these handlers is possible.
|
49
|
+
# @see GenericValidator.define_handler
|
50
|
+
# @return [Hash]
|
51
|
+
def self.handlers; end
|
52
|
+
|
53
|
+
# Defines a new handler for a control type (class).
|
54
|
+
#
|
55
|
+
# When called it should be supplied the control Class and either a Proc or Method
|
56
|
+
# instance or a block which should accept a single Wx::Window argument and an optional
|
57
|
+
# second argument.
|
58
|
+
# The handler will be called when transferring data from or to the associated window.
|
59
|
+
# The associated window is always passed as the first argument.
|
60
|
+
# In case of a transfer from the associated window that is the only argument and the
|
61
|
+
# handler should retrieve and return the data typical for the type of control window.
|
62
|
+
# In case of a transfer to the associated window the second argument will be the data
|
63
|
+
# to transfer to the associated control window.
|
64
|
+
#
|
65
|
+
# @example Definition of Wx::TextCtrl handler
|
66
|
+
# GenericValidator.define_handler(Wx::TextCtrl) do |win, *val|
|
67
|
+
# if val.empty?
|
68
|
+
# win.get_value
|
69
|
+
# else
|
70
|
+
# win.set_value(val.shift)
|
71
|
+
# end
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
# @param [Class] klass control window class
|
75
|
+
# @param [Proc,Method,nil] meth
|
76
|
+
# @return [void]
|
77
|
+
def self.define_handler(klass, meth=nil, &block) end
|
78
|
+
|
79
|
+
# @overload initialize
|
80
|
+
# Default constructor.
|
81
|
+
# @return [Wx::GenericValidator]
|
82
|
+
# @overload initialize(other)
|
83
|
+
# Copy constructor.
|
84
|
+
# @param [Wx::GenericValidator] other
|
85
|
+
# @return [Wx::GenericValidator]
|
86
|
+
def initialize(*arg)end
|
87
|
+
|
88
|
+
# The value store attribute. Initially nil. When set the type should
|
89
|
+
# be appropriate for the associated control type.
|
90
|
+
# No forced conversions will be applied.
|
91
|
+
attr_accessor :value
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -35,6 +35,7 @@ module Wx
|
|
35
35
|
# @see Printing Under Unix (GTK+)
|
36
36
|
# @param printerDC [Wx::PrinterDC]
|
37
37
|
# @return [Wx::GraphicsContext]
|
38
|
+
# @wxrb_require USE_PRINTING_ARCHITECTURE,WXMSW|WXOSX|USE_GTKPRINT
|
38
39
|
# @overload self.draw_on(image)
|
39
40
|
# Creates a {Wx::GraphicsContext} associated with a {Wx::Image} and passes that object to the given block.
|
40
41
|
# Deletes the gc object after the block returns.
|