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
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
###
|
|
11
11
|
|
|
12
12
|
require 'wx'
|
|
13
|
+
|
|
14
|
+
module MathImages
|
|
15
|
+
|
|
13
16
|
include Wx
|
|
14
17
|
|
|
15
18
|
# This sample was originally written by Alex Fenton as an answer to Ruby
|
|
@@ -31,6 +34,9 @@ include Wx
|
|
|
31
34
|
|
|
32
35
|
# A canvas that draws and displays a mathematically generated image
|
|
33
36
|
class MathsDrawing < Window
|
|
37
|
+
|
|
38
|
+
include Wx
|
|
39
|
+
|
|
34
40
|
# The functions which return the colour components at each pixel
|
|
35
41
|
attr_writer :red, :green, :blue
|
|
36
42
|
# The time taken to render, whether re-rendering is needed, and the
|
|
@@ -118,6 +124,9 @@ end
|
|
|
118
124
|
|
|
119
125
|
# A helper dialog for saving the image to a file
|
|
120
126
|
class SaveImageDialog < FileDialog
|
|
127
|
+
|
|
128
|
+
include Wx
|
|
129
|
+
|
|
121
130
|
# The image file formats on offer
|
|
122
131
|
TYPES = [ [ "PNG file (*.png)|*.png", Wx::BITMAP_TYPE_PNG ],
|
|
123
132
|
[ "TIF file (*.tif)|*.tif", Wx::BITMAP_TYPE_TIF ],
|
|
@@ -139,6 +148,9 @@ end
|
|
|
139
148
|
|
|
140
149
|
# A Panel for displaying the image and controls to manipulate it
|
|
141
150
|
class MathsPanel < Panel
|
|
151
|
+
|
|
152
|
+
include Wx
|
|
153
|
+
|
|
142
154
|
include Math
|
|
143
155
|
|
|
144
156
|
# Set functions to some nice initial values
|
|
@@ -269,6 +281,9 @@ class MathsPanel < Panel
|
|
|
269
281
|
end
|
|
270
282
|
|
|
271
283
|
class MathsFrame < Frame
|
|
284
|
+
|
|
285
|
+
include Wx
|
|
286
|
+
|
|
272
287
|
def initialize
|
|
273
288
|
super(nil, :title => 'Maths drawing',
|
|
274
289
|
:size => [400, 500],
|
|
@@ -288,6 +303,8 @@ class MathsFrame < Frame
|
|
|
288
303
|
end
|
|
289
304
|
end
|
|
290
305
|
|
|
306
|
+
end
|
|
307
|
+
|
|
291
308
|
module MathImagesSample
|
|
292
309
|
|
|
293
310
|
include WxRuby::Sample if defined? WxRuby::Sample
|
|
@@ -318,7 +335,7 @@ module MathImagesSample
|
|
|
318
335
|
end
|
|
319
336
|
|
|
320
337
|
def self.activate
|
|
321
|
-
frame = MathsFrame.new
|
|
338
|
+
frame = MathImages::MathsFrame.new
|
|
322
339
|
frame.show
|
|
323
340
|
frame
|
|
324
341
|
end
|
|
@@ -17,102 +17,106 @@ end
|
|
|
17
17
|
if defined? ::Magick
|
|
18
18
|
require 'wx'
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# This sample demonstrates how to convert directly a RMagick image to
|
|
23
|
-
# a wxRuby image (without saving and loading the image file).
|
|
24
|
-
# See the magick_to_wx method.
|
|
25
|
-
|
|
26
|
-
class ImageFrame < Wx::Frame
|
|
27
|
-
def initialize
|
|
28
|
-
super(nil, :title => 'RMagick sample', :size => [600, 600])
|
|
29
|
-
|
|
30
|
-
# Create the magick image from an image file
|
|
31
|
-
img_file = File.join( File.dirname(__FILE__)+"/../art",
|
|
32
|
-
'wxruby-256x256.png')
|
|
33
|
-
@magick_image = Magick::ImageList.new(img_file)
|
|
34
|
-
|
|
35
|
-
# Create some magick images with special effects
|
|
36
|
-
@magick_image1 = @magick_image.sketch
|
|
37
|
-
@magick_image2 = @magick_image.oil_paint(4)
|
|
38
|
-
@magick_image3 = @magick_image.shade
|
|
39
|
-
|
|
40
|
-
# Convert the magick images to wxRuby images
|
|
41
|
-
@image1 = magick_to_wx(@magick_image1)
|
|
42
|
-
@image2 = magick_to_wx(@magick_image2)
|
|
43
|
-
@image3 = magick_to_wx(@magick_image3)
|
|
44
|
-
|
|
45
|
-
# Create the corresponding bitmaps
|
|
46
|
-
compute_bitmaps
|
|
47
|
-
|
|
48
|
-
# Set up event handling
|
|
49
|
-
evt_size :on_size
|
|
50
|
-
evt_idle :on_idle
|
|
51
|
-
evt_paint :on_paint
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
# Convert the RMagick image to a WxRuby image
|
|
56
|
-
def magick_to_wx magick_img
|
|
57
|
-
wx_img = Wx::Image.new(magick_img.columns, magick_img.rows)
|
|
58
|
-
|
|
59
|
-
# Set the image data
|
|
60
|
-
magick_img.format = 'RGB'
|
|
61
|
-
wx_img.rgb_data = magick_img.to_blob
|
|
62
|
-
|
|
63
|
-
# Set the alpha (transparency) if any
|
|
64
|
-
if magick_img.alpha?
|
|
65
|
-
magick_img.format = 'A'
|
|
66
|
-
wx_img.alpha_data = magick_img.to_blob
|
|
67
|
-
end
|
|
20
|
+
module RMagickBitmap
|
|
68
21
|
|
|
69
|
-
|
|
70
|
-
end
|
|
22
|
+
# RMagick sample (written by Chauk-Mean Proum)
|
|
71
23
|
|
|
72
|
-
#
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
rescaled_image.to_bitmap
|
|
76
|
-
end
|
|
24
|
+
# This sample demonstrates how to convert directly a RMagick image to
|
|
25
|
+
# a wxRuby image (without saving and loading the image file).
|
|
26
|
+
# See the magick_to_wx method.
|
|
77
27
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
height = client_size.height / 2
|
|
82
|
-
@bitmap1 = compute_bitmap(@image1, width, height)
|
|
83
|
-
@bitmap2 = compute_bitmap(@image2, width, height)
|
|
84
|
-
@bitmap3 = compute_bitmap(@image3, width, height)
|
|
85
|
-
@done = true
|
|
86
|
-
end
|
|
28
|
+
class ImageFrame < Wx::Frame
|
|
29
|
+
def initialize
|
|
30
|
+
super(nil, :title => 'RMagick sample', :size => [600, 600])
|
|
87
31
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
32
|
+
# Create the magick image from an image file
|
|
33
|
+
img_file = File.join( File.dirname(__FILE__)+"/../art",
|
|
34
|
+
'wxruby-256x256.png')
|
|
35
|
+
@magick_image = Magick::ImageList.new(img_file)
|
|
36
|
+
|
|
37
|
+
# Create some magick images with special effects
|
|
38
|
+
@magick_image1 = @magick_image.sketch
|
|
39
|
+
@magick_image2 = @magick_image.oil_paint(4)
|
|
40
|
+
@magick_image3 = @magick_image.shade
|
|
93
41
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
42
|
+
# Convert the magick images to wxRuby images
|
|
43
|
+
@image1 = magick_to_wx(@magick_image1)
|
|
44
|
+
@image2 = magick_to_wx(@magick_image2)
|
|
45
|
+
@image3 = magick_to_wx(@magick_image3)
|
|
46
|
+
|
|
47
|
+
# Create the corresponding bitmaps
|
|
97
48
|
compute_bitmaps
|
|
98
|
-
|
|
49
|
+
|
|
50
|
+
# Set up event handling
|
|
51
|
+
evt_size :on_size
|
|
52
|
+
evt_idle :on_idle
|
|
53
|
+
evt_paint :on_paint
|
|
99
54
|
end
|
|
100
|
-
end
|
|
101
55
|
|
|
102
|
-
# Paint the frame with the bitmaps
|
|
103
|
-
def on_paint
|
|
104
|
-
paint do | dc |
|
|
105
56
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
57
|
+
# Convert the RMagick image to a WxRuby image
|
|
58
|
+
def magick_to_wx magick_img
|
|
59
|
+
wx_img = Wx::Image.new(magick_img.columns, magick_img.rows)
|
|
60
|
+
|
|
61
|
+
# Set the image data
|
|
62
|
+
magick_img.format = 'RGB'
|
|
63
|
+
wx_img.rgb_data = magick_img.to_blob
|
|
64
|
+
|
|
65
|
+
# Set the alpha (transparency) if any
|
|
66
|
+
if magick_img.alpha?
|
|
67
|
+
magick_img.format = 'A'
|
|
68
|
+
wx_img.alpha_data = magick_img.to_blob
|
|
112
69
|
end
|
|
113
70
|
|
|
71
|
+
wx_img
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Create a bitmap for the specified image and size
|
|
75
|
+
def compute_bitmap image, width, height
|
|
76
|
+
rescaled_image = image.copy.rescale(width, height)
|
|
77
|
+
rescaled_image.to_bitmap
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Create the bitmaps corresponding to the images and with half the size of the frame
|
|
81
|
+
def compute_bitmaps
|
|
82
|
+
width = client_size.width / 2
|
|
83
|
+
height = client_size.height / 2
|
|
84
|
+
@bitmap1 = compute_bitmap(@image1, width, height)
|
|
85
|
+
@bitmap2 = compute_bitmap(@image2, width, height)
|
|
86
|
+
@bitmap3 = compute_bitmap(@image3, width, height)
|
|
87
|
+
@done = true
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Note to recompute the bitmaps on a resize
|
|
91
|
+
def on_size(event)
|
|
92
|
+
@done = false
|
|
93
|
+
event.skip
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Recompute the bitmaps if needed, then do a refresh
|
|
97
|
+
def on_idle
|
|
98
|
+
if not @done
|
|
99
|
+
compute_bitmaps
|
|
100
|
+
refresh
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Paint the frame with the bitmaps
|
|
105
|
+
def on_paint
|
|
106
|
+
paint do | dc |
|
|
107
|
+
|
|
108
|
+
if @done
|
|
109
|
+
offset_x = client_size.width / 4
|
|
110
|
+
offset_y = client_size.height / 4
|
|
111
|
+
dc.draw_bitmap(@bitmap1, 0, 0, true)
|
|
112
|
+
dc.draw_bitmap(@bitmap2, offset_x, offset_y, true)
|
|
113
|
+
dc.draw_bitmap(@bitmap3, offset_x*2, offset_y*2, true)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
114
117
|
end
|
|
115
118
|
end
|
|
119
|
+
|
|
116
120
|
end
|
|
117
121
|
|
|
118
122
|
module RMagickBitmapSample
|
|
@@ -130,7 +134,7 @@ module RMagickBitmapSample
|
|
|
130
134
|
end
|
|
131
135
|
|
|
132
136
|
def self.activate
|
|
133
|
-
frame = ImageFrame.new
|
|
137
|
+
frame = RMagickBitmap::ImageFrame.new
|
|
134
138
|
frame.show
|
|
135
139
|
frame
|
|
136
140
|
end
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
#
|
|
3
|
+
# This software is released under the MIT license.
|
|
4
|
+
#
|
|
5
|
+
# Some parts are
|
|
6
|
+
# Copyright 2004-2007, wxRuby development team
|
|
7
|
+
# released under the MIT-like wxRuby2 license
|
|
8
|
+
|
|
9
|
+
# Adapted for wxRuby3
|
|
10
|
+
###
|
|
11
|
+
|
|
12
|
+
require 'wx'
|
|
13
|
+
|
|
14
|
+
module CaretTest
|
|
15
|
+
|
|
16
|
+
include Wx
|
|
17
|
+
|
|
18
|
+
# menu items
|
|
19
|
+
Caret_set_blink_time = 3
|
|
20
|
+
Caret_Move = 4
|
|
21
|
+
|
|
22
|
+
# controls start here (the numbers are, of course, arbitrary)
|
|
23
|
+
Caret_Text = 1000
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# MyCanvas is a canvas on which you can type
|
|
27
|
+
class MyCanvas < ScrolledWindow
|
|
28
|
+
|
|
29
|
+
include Wx
|
|
30
|
+
|
|
31
|
+
def initialize(parent)
|
|
32
|
+
super(parent, :style => SUNKEN_BORDER)
|
|
33
|
+
|
|
34
|
+
self.background_colour = WHITE
|
|
35
|
+
|
|
36
|
+
@font = Font.new(12, FONTFAMILY_TELETYPE,
|
|
37
|
+
FONTSTYLE_NORMAL, FONTWEIGHT_NORMAL)
|
|
38
|
+
|
|
39
|
+
@x_caret = @y_caret = @x_chars = @y_chars = 0
|
|
40
|
+
@x_margin = @y_margin = 5
|
|
41
|
+
@text = nil
|
|
42
|
+
|
|
43
|
+
create_caret
|
|
44
|
+
|
|
45
|
+
evt_paint :on_paint
|
|
46
|
+
evt_size :on_size
|
|
47
|
+
evt_char :on_char
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def [](x,y)
|
|
51
|
+
@text[x + @x_chars * y,1]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def []=(x,y,z)
|
|
55
|
+
@text[x + @x_chars * y,1] = z
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# caret movement
|
|
59
|
+
def home_pos
|
|
60
|
+
@x_caret = 0
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def end_pos
|
|
64
|
+
@x_caret = @x_chars - 1
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def first_line
|
|
68
|
+
@y_caret = 0
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def last_line
|
|
72
|
+
@y_caret = @y_chars - 1
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def prev_char
|
|
76
|
+
if @x_caret == 0
|
|
77
|
+
end_pos
|
|
78
|
+
prev_line
|
|
79
|
+
else
|
|
80
|
+
@x_caret -= 1
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def next_char
|
|
85
|
+
@x_caret += 1
|
|
86
|
+
if @x_caret == @x_chars
|
|
87
|
+
home_pos
|
|
88
|
+
next_line
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def prev_line
|
|
93
|
+
if @y_caret == 0
|
|
94
|
+
last_line
|
|
95
|
+
else
|
|
96
|
+
@y_caret -= 1
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def next_line
|
|
101
|
+
@y_caret += 1
|
|
102
|
+
if @y_caret == @y_chars
|
|
103
|
+
first_line
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def create_caret
|
|
108
|
+
paint do | dc |
|
|
109
|
+
dc.font = @font
|
|
110
|
+
@height_char = dc.char_height
|
|
111
|
+
@width_char = dc.char_width
|
|
112
|
+
|
|
113
|
+
my_caret = Caret.new(self, Size.new(@width_char, @height_char))
|
|
114
|
+
self.caret = my_caret
|
|
115
|
+
|
|
116
|
+
caret.move [ @x_margin, @y_margin ]
|
|
117
|
+
caret.show
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def move_caret(x,y)
|
|
122
|
+
@x_caret = x
|
|
123
|
+
@y_caret = y
|
|
124
|
+
|
|
125
|
+
do_move_caret
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def do_move_caret
|
|
129
|
+
log_status("Caret is at (%d, %d)", @x_caret, @y_caret)
|
|
130
|
+
|
|
131
|
+
caret.move( [@x_margin + @x_caret * @width_char,
|
|
132
|
+
@y_margin + @y_caret * @height_char])
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def on_size(event)
|
|
136
|
+
@x_chars = (event.size.width - 2 * @x_margin) / @width_char
|
|
137
|
+
@y_chars = (event.size.height - 2 * @y_margin) / @height_char
|
|
138
|
+
if @x_chars <= 0
|
|
139
|
+
@x_chars = 1
|
|
140
|
+
end
|
|
141
|
+
if @y_chars <= 0
|
|
142
|
+
@y_chars = 1
|
|
143
|
+
end
|
|
144
|
+
if @x_caret >= @x_chars
|
|
145
|
+
@x_caret = @x_chars-1
|
|
146
|
+
end
|
|
147
|
+
if @y_caret >= @y_chars
|
|
148
|
+
@y_caret = @y_chars-1
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
@text = " " * @x_chars * @y_chars
|
|
152
|
+
|
|
153
|
+
if parent && parent.status_bar
|
|
154
|
+
msg = sprintf("Panel size is (%d, %d)", @x_chars, @y_chars)
|
|
155
|
+
parent.set_status_text(msg, 1)
|
|
156
|
+
parent.refresh
|
|
157
|
+
end
|
|
158
|
+
event.skip
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def on_paint
|
|
162
|
+
if caret
|
|
163
|
+
caret.hide
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
paint do | dc |
|
|
167
|
+
dc.clear
|
|
168
|
+
dc.set_font(@font)
|
|
169
|
+
|
|
170
|
+
for y in 0 ... @y_chars
|
|
171
|
+
line = @text[@x_chars * y,@x_chars]
|
|
172
|
+
dc.draw_text( line, @x_margin, @y_margin + y * @height_char )
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
if caret
|
|
177
|
+
caret.show
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def on_char(event)
|
|
182
|
+
case event.key_code
|
|
183
|
+
when K_LEFT, K_BACK
|
|
184
|
+
prev_char
|
|
185
|
+
when K_RIGHT
|
|
186
|
+
next_char
|
|
187
|
+
when K_UP
|
|
188
|
+
prev_line
|
|
189
|
+
when K_DOWN
|
|
190
|
+
next_line
|
|
191
|
+
when K_HOME
|
|
192
|
+
home_pos
|
|
193
|
+
when K_END
|
|
194
|
+
end_pos
|
|
195
|
+
when K_RETURN
|
|
196
|
+
home_pos
|
|
197
|
+
next_line
|
|
198
|
+
else
|
|
199
|
+
ch = event.key_code
|
|
200
|
+
if !event.alt_down and (ch >= K_SPACE) and (ch < K_DELETE)
|
|
201
|
+
self[@x_caret, @y_caret] = ch.chr
|
|
202
|
+
refresh
|
|
203
|
+
next_char
|
|
204
|
+
else
|
|
205
|
+
event.skip
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
do_move_caret
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
class MyFrame < Frame
|
|
213
|
+
|
|
214
|
+
include Wx
|
|
215
|
+
|
|
216
|
+
def initialize(title, pos, size)
|
|
217
|
+
super(nil, -1, title, pos, size)
|
|
218
|
+
# set the frame icon
|
|
219
|
+
self.icon = Wx.Icon(:sample, Wx::BITMAP_TYPE_XPM, art_path: File.join(__dir__, '..'))
|
|
220
|
+
|
|
221
|
+
# create a menu bar
|
|
222
|
+
menu_file = Menu.new
|
|
223
|
+
|
|
224
|
+
menu_file.append(Caret_set_blink_time, "&Blink time...\tCtrl-B")
|
|
225
|
+
menu_file.append(Caret_Move, "&Move caret\tCtrl-C")
|
|
226
|
+
menu_file.append_separator
|
|
227
|
+
menu_file.append(Wx::ID_ABOUT, "&About...\tCtrl-A", "Show about dialog")
|
|
228
|
+
menu_file.append_separator
|
|
229
|
+
menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit self program")
|
|
230
|
+
|
|
231
|
+
# now append the freshly created menu to the menu bar...
|
|
232
|
+
menu_bar = MenuBar.new
|
|
233
|
+
menu_bar.append(menu_file, "&File")
|
|
234
|
+
|
|
235
|
+
# ... and attach self menu bar to the frame
|
|
236
|
+
self.menu_bar = menu_bar
|
|
237
|
+
|
|
238
|
+
@canvas = MyCanvas.new(self)
|
|
239
|
+
|
|
240
|
+
# This is required to set focus so that key events are directed to
|
|
241
|
+
# this Window, on Linux/GTK in particular
|
|
242
|
+
@canvas.set_focus
|
|
243
|
+
|
|
244
|
+
# create a status bar just for fun (by default with 1 pane only)
|
|
245
|
+
create_status_bar(2)
|
|
246
|
+
self.status_text = "Welcome to Windows!"
|
|
247
|
+
|
|
248
|
+
evt_menu Wx::ID_EXIT, :on_quit
|
|
249
|
+
evt_menu Wx::ID_ABOUT, :on_about
|
|
250
|
+
evt_menu Caret_set_blink_time, :on_set_blink_time
|
|
251
|
+
evt_menu Caret_Move, :on_caret_move
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def on_quit
|
|
255
|
+
# true is to force the frame to close
|
|
256
|
+
close(true)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def on_about
|
|
260
|
+
message_box("The caret Windows sample, adapted for WxRuby",
|
|
261
|
+
"About Caret", OK | ICON_INFORMATION, self)
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def on_caret_move
|
|
265
|
+
@canvas.move_caret(10, 10)
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def on_set_blink_time
|
|
269
|
+
blink_time = get_number_from_user(
|
|
270
|
+
"The caret blink time is the time between two blinks",
|
|
271
|
+
"Time in milliseconds:",
|
|
272
|
+
"Caret sample",
|
|
273
|
+
Caret::get_blink_time, 0, 10000,
|
|
274
|
+
self)
|
|
275
|
+
if blink_time != -1
|
|
276
|
+
Caret::set_blink_time(blink_time)
|
|
277
|
+
@canvas.create_caret
|
|
278
|
+
log_status(self,"Blink time set to %d milliseconds.", blink_time)
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
module CaretSample
|
|
286
|
+
|
|
287
|
+
include WxRuby::Sample if defined? WxRuby::Sample
|
|
288
|
+
|
|
289
|
+
def self.describe
|
|
290
|
+
{ file: __FILE__,
|
|
291
|
+
summary: 'wxRuby Caret example.',
|
|
292
|
+
description: 'wxRuby example demonstrating using and controlling a caret.' }
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def self.run
|
|
296
|
+
execute(__FILE__)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
if $0 == __FILE__
|
|
300
|
+
Wx::App.run do
|
|
301
|
+
frame = CaretTest::MyFrame.new("Caret Windows sample",[50, 50],[450, 340])
|
|
302
|
+
frame.show(true)
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
end
|