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
data/samples/controls/htlbox.rb
CHANGED
|
@@ -10,384 +10,388 @@
|
|
|
10
10
|
|
|
11
11
|
require 'wx'
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
# implement virtual on_get_item
|
|
15
|
-
class MyHtmlListBox < Wx::HTML::HtmlListBox
|
|
13
|
+
module HTLBox
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# item
|
|
21
|
-
@change = false
|
|
22
|
-
# flag which we toggle to update the first items text in on_get_item()
|
|
23
|
-
@first_item_updated = false
|
|
24
|
-
@link_clicked = false
|
|
15
|
+
# to use Wx::HtmlListBox you must derive a new class from it as you must
|
|
16
|
+
# implement virtual on_get_item
|
|
17
|
+
class MyHtmlListBox < Wx::HTML::HtmlListBox
|
|
25
18
|
|
|
26
|
-
|
|
19
|
+
def initialize(parent, multi = false)
|
|
20
|
+
super(parent, style: multi ? Wx::LB_MULTIPLE : 0)
|
|
21
|
+
# flag telling us whether we should use fg colour even for the selected
|
|
22
|
+
# item
|
|
23
|
+
@change = false
|
|
24
|
+
# flag which we toggle to update the first items text in on_get_item()
|
|
25
|
+
@first_item_updated = false
|
|
26
|
+
@link_clicked = false
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
set_margins(5, 5)
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
end
|
|
30
|
+
set_item_count(1000)
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
set_selection(3)
|
|
33
|
+
end
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
@change = change
|
|
37
|
-
end
|
|
35
|
+
attr_accessor :link_clicked
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
def set_change_sel_fg(change)
|
|
38
|
+
@change = change
|
|
39
|
+
end
|
|
41
40
|
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
def update_first_item
|
|
42
|
+
@first_item_updated = !@first_item_updated
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
refresh_row(0)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
protected
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
# override this method to return data to be shown in the listbox (this is
|
|
50
|
+
# mandatory)
|
|
51
|
+
def on_get_item(n)
|
|
52
|
+
return '<h1><b>Just updated</b></h1>' if n == 0 && @first_item_updated
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
level = n % 6 + 1
|
|
53
55
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
clr = Wx::Colour.new((n - 192).abs % 256,
|
|
57
|
+
(n - 256).abs % 256,
|
|
58
|
+
(n - 128).abs % 256)
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
label = "<h#{level}><font color=#{clr.get_as_string(Wx::C2S_HTML_SYNTAX)}>Item</font> <b>#{n}</b></h#{level}>"
|
|
61
|
+
if n == 1
|
|
62
|
+
if !@link_clicked
|
|
63
|
+
label += "<a href='1'>Click here...</a>"
|
|
64
|
+
else
|
|
65
|
+
label += "<font color='#9999ff'>Clicked here...</font>"
|
|
66
|
+
end
|
|
64
67
|
end
|
|
65
|
-
end
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
label
|
|
70
|
+
end
|
|
69
71
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
# change the appearance by overriding these functions (this is optional)
|
|
73
|
+
def on_draw_separator(dc, rect, _)
|
|
74
|
+
if get_parent.menu_bar.is_checked(MyFrame::ID::HtmlLbox_DrawSeparator)
|
|
75
|
+
dc.with_pen(Wx::BLACK_DASHED_PEN) do
|
|
76
|
+
dc.draw_line(rect.x, rect.y, rect.right, rect.y)
|
|
77
|
+
dc.draw_line(rect.x, rect.bottom, rect.right, rect.bottom)
|
|
78
|
+
end
|
|
76
79
|
end
|
|
77
80
|
end
|
|
78
|
-
end
|
|
79
81
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
def get_selected_text_colour(col_fg)
|
|
83
|
+
@change ? super : col_fg
|
|
84
|
+
end
|
|
85
|
+
|
|
82
86
|
end
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
class MyFrame < Wx::Frame
|
|
89
|
+
|
|
90
|
+
# IDs for the controls and the menu commands
|
|
91
|
+
module ID
|
|
92
|
+
include Wx::IDHelper
|
|
93
|
+
# menu items
|
|
94
|
+
HtmlLbox_CustomBox = self.next_id
|
|
95
|
+
HtmlLbox_SimpleBox = self.next_id
|
|
96
|
+
HtmlLbox_Quit = self.next_id
|
|
97
|
+
|
|
98
|
+
HtmlLbox_SetMargins = self.next_id
|
|
99
|
+
HtmlLbox_DrawSeparator = self.next_id
|
|
100
|
+
HtmlLbox_ToggleMulti = self.next_id
|
|
101
|
+
HtmlLbox_SelectAll = self.next_id
|
|
102
|
+
HtmlLbox_UpdateItem = self.next_id
|
|
103
|
+
HtmlLbox_GetItemRect = self.next_id
|
|
104
|
+
|
|
105
|
+
HtmlLbox_SetBgCol = self.next_id
|
|
106
|
+
HtmlLbox_SetSelBgCol = self.next_id
|
|
107
|
+
HtmlLbox_SetSelFgCol = self.next_id
|
|
108
|
+
|
|
109
|
+
HtmlLbox_Clear = self.next_id
|
|
110
|
+
|
|
111
|
+
# it is important for the id corresponding to the "About" command to have
|
|
112
|
+
# this standard value as otherwise it won't be handled properly under Mac
|
|
113
|
+
# (where it is special and put into the "Apple" menu)
|
|
114
|
+
HtmlLbox_About = Wx::ID_ABOUT
|
|
115
|
+
end
|
|
85
116
|
|
|
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
|
-
|
|
117
|
+
Wx::ArtLocator.add_search_path(File.dirname(__dir__))
|
|
118
|
+
|
|
119
|
+
def initialize
|
|
120
|
+
super(nil, title: 'HtmlLbox wxWidgets Sample',size: [500, 500])
|
|
121
|
+
|
|
122
|
+
# set the frame icon
|
|
123
|
+
set_icon(Wx::Icon(:sample))
|
|
124
|
+
|
|
125
|
+
if Wx.has_feature?(:USE_MENUS)
|
|
126
|
+
|
|
127
|
+
# create a menu bar
|
|
128
|
+
menu_file = Wx::Menu.new
|
|
129
|
+
menu_file.append_radio_item(ID::HtmlLbox_CustomBox, "Use custom box",
|
|
130
|
+
"Use a wxHtmlListBox virtual class control")
|
|
131
|
+
menu_file.append_radio_item(ID::HtmlLbox_SimpleBox, "Use simple box",
|
|
132
|
+
"Use a wxSimpleHtmlListBox control")
|
|
133
|
+
menu_file.append_separator
|
|
134
|
+
menu_file.append(ID::HtmlLbox_Quit, "E&xit\tAlt-X", "Quit this program")
|
|
135
|
+
|
|
136
|
+
# create our specific menu
|
|
137
|
+
menu_hl_box = Wx::Menu.new
|
|
138
|
+
menu_hl_box.append(ID::HtmlLbox_SetMargins, "Set &margins...\tCtrl-G", "Change the margins around the items")
|
|
139
|
+
menu_hl_box.append_check_item(ID::HtmlLbox_DrawSeparator,
|
|
140
|
+
"&Draw separators\tCtrl-D" ,
|
|
141
|
+
"Toggle drawing separators between cells")
|
|
142
|
+
menu_hl_box.append_separator
|
|
143
|
+
menu_hl_box.append_check_item(ID::HtmlLbox_ToggleMulti,
|
|
144
|
+
"&Multiple selection\tCtrl-M",
|
|
145
|
+
"Toggle multiple selection on/off")
|
|
146
|
+
menu_hl_box.append_separator
|
|
147
|
+
menu_hl_box.append(ID::HtmlLbox_SelectAll, "Select &all items\tCtrl-A")
|
|
148
|
+
menu_hl_box.append(ID::HtmlLbox_UpdateItem, "Update &first item\tCtrl-U")
|
|
149
|
+
menu_hl_box.append(ID::HtmlLbox_GetItemRect, "Show &rectangle of item #10\tCtrl-R")
|
|
150
|
+
menu_hl_box.append_separator
|
|
151
|
+
menu_hl_box.append(ID::HtmlLbox_SetBgCol, "Set &background...\tCtrl-B")
|
|
152
|
+
menu_hl_box.append(ID::HtmlLbox_SetSelBgCol,
|
|
153
|
+
"Set &selection background...\tCtrl-S")
|
|
154
|
+
menu_hl_box.append_check_item(ID::HtmlLbox_SetSelFgCol,
|
|
155
|
+
"Keep &foreground in selection\tCtrl-F")
|
|
156
|
+
|
|
157
|
+
menu_hl_box.append_separator
|
|
158
|
+
menu_hl_box.append(ID::HtmlLbox_Clear, "&Clear\tCtrl-L")
|
|
159
|
+
|
|
160
|
+
# the "About" item should be in the help menu
|
|
161
|
+
help_menu = Wx::Menu.new
|
|
162
|
+
help_menu.append(ID::HtmlLbox_About, "&About\tF1", "Show about dialog")
|
|
163
|
+
|
|
164
|
+
# now append the freshly created menu to the menu bar...
|
|
165
|
+
mbar = Wx::MenuBar.new
|
|
166
|
+
mbar.append(menu_file, "&File")
|
|
167
|
+
mbar.append(menu_hl_box, "&Listbox")
|
|
168
|
+
mbar.append(help_menu, "&Help")
|
|
169
|
+
|
|
170
|
+
mbar.check(ID::HtmlLbox_DrawSeparator, true)
|
|
171
|
+
|
|
172
|
+
# ... and attach this menu bar to the frame
|
|
173
|
+
self.menu_bar = mbar
|
|
174
|
+
|
|
175
|
+
end # USE_MENUS
|
|
114
176
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
# set the frame icon
|
|
121
|
-
set_icon(Wx::Icon(:sample))
|
|
122
|
-
|
|
123
|
-
if Wx.has_feature?(:USE_MENUS)
|
|
124
|
-
|
|
125
|
-
# create a menu bar
|
|
126
|
-
menu_file = Wx::Menu.new
|
|
127
|
-
menu_file.append_radio_item(ID::HtmlLbox_CustomBox, "Use custom box",
|
|
128
|
-
"Use a wxHtmlListBox virtual class control")
|
|
129
|
-
menu_file.append_radio_item(ID::HtmlLbox_SimpleBox, "Use simple box",
|
|
130
|
-
"Use a wxSimpleHtmlListBox control")
|
|
131
|
-
menu_file.append_separator
|
|
132
|
-
menu_file.append(ID::HtmlLbox_Quit, "E&xit\tAlt-X", "Quit this program")
|
|
133
|
-
|
|
134
|
-
# create our specific menu
|
|
135
|
-
menu_hl_box = Wx::Menu.new
|
|
136
|
-
menu_hl_box.append(ID::HtmlLbox_SetMargins, "Set &margins...\tCtrl-G", "Change the margins around the items")
|
|
137
|
-
menu_hl_box.append_check_item(ID::HtmlLbox_DrawSeparator,
|
|
138
|
-
"&Draw separators\tCtrl-D" ,
|
|
139
|
-
"Toggle drawing separators between cells")
|
|
140
|
-
menu_hl_box.append_separator
|
|
141
|
-
menu_hl_box.append_check_item(ID::HtmlLbox_ToggleMulti,
|
|
142
|
-
"&Multiple selection\tCtrl-M",
|
|
143
|
-
"Toggle multiple selection on/off")
|
|
144
|
-
menu_hl_box.append_separator
|
|
145
|
-
menu_hl_box.append(ID::HtmlLbox_SelectAll, "Select &all items\tCtrl-A")
|
|
146
|
-
menu_hl_box.append(ID::HtmlLbox_UpdateItem, "Update &first item\tCtrl-U")
|
|
147
|
-
menu_hl_box.append(ID::HtmlLbox_GetItemRect, "Show &rectangle of item #10\tCtrl-R")
|
|
148
|
-
menu_hl_box.append_separator
|
|
149
|
-
menu_hl_box.append(ID::HtmlLbox_SetBgCol, "Set &background...\tCtrl-B")
|
|
150
|
-
menu_hl_box.append(ID::HtmlLbox_SetSelBgCol,
|
|
151
|
-
"Set &selection background...\tCtrl-S")
|
|
152
|
-
menu_hl_box.append_check_item(ID::HtmlLbox_SetSelFgCol,
|
|
153
|
-
"Keep &foreground in selection\tCtrl-F")
|
|
154
|
-
|
|
155
|
-
menu_hl_box.append_separator
|
|
156
|
-
menu_hl_box.append(ID::HtmlLbox_Clear, "&Clear\tCtrl-L")
|
|
157
|
-
|
|
158
|
-
# the "About" item should be in the help menu
|
|
159
|
-
help_menu = Wx::Menu.new
|
|
160
|
-
help_menu.append(ID::HtmlLbox_About, "&About\tF1", "Show about dialog")
|
|
161
|
-
|
|
162
|
-
# now append the freshly created menu to the menu bar...
|
|
163
|
-
mbar = Wx::MenuBar.new
|
|
164
|
-
mbar.append(menu_file, "&File")
|
|
165
|
-
mbar.append(menu_hl_box, "&Listbox")
|
|
166
|
-
mbar.append(help_menu, "&Help")
|
|
167
|
-
|
|
168
|
-
mbar.check(ID::HtmlLbox_DrawSeparator, true)
|
|
169
|
-
|
|
170
|
-
# ... and attach this menu bar to the frame
|
|
171
|
-
self.menu_bar = mbar
|
|
172
|
-
|
|
173
|
-
end # USE_MENUS
|
|
174
|
-
|
|
175
|
-
if Wx.has_feature?(:USE_STATUSBAR)
|
|
176
|
-
# create a status bar just for fun (by default with 1 pane only)
|
|
177
|
-
create_status_bar(2)
|
|
178
|
-
set_status_text("Welcome to wxWidgets!")
|
|
179
|
-
end # USE_STATUSBAR
|
|
180
|
-
|
|
181
|
-
# create the child controls
|
|
182
|
-
create_box
|
|
183
|
-
text = Wx::TextCtrl.new(self, Wx::ID_ANY, "", style: Wx::TE_MULTILINE)
|
|
184
|
-
old_log_tgt = Wx::Log.set_active_target(Wx::LogTextCtrl.new(text))
|
|
185
|
-
|
|
186
|
-
# and lay them out
|
|
187
|
-
sizer = Wx::HBoxSizer.new
|
|
188
|
-
sizer.add(@hlbox, 2, Wx::GROW)
|
|
189
|
-
sizer.add(text, 3, Wx::GROW)
|
|
190
|
-
|
|
191
|
-
self.sizer = sizer
|
|
192
|
-
|
|
193
|
-
evt_menu ID::HtmlLbox_CustomBox, :on_simple_or_custom_box
|
|
194
|
-
evt_menu ID::HtmlLbox_SimpleBox, :on_simple_or_custom_box
|
|
195
|
-
evt_menu ID::HtmlLbox_Quit, :on_quit
|
|
196
|
-
evt_close { Wx::Log.set_active_target(old_log_tgt); destroy }
|
|
197
|
-
|
|
198
|
-
evt_menu ID::HtmlLbox_SetMargins, :on_set_margins
|
|
199
|
-
evt_menu ID::HtmlLbox_DrawSeparator, :on_draw_separator
|
|
200
|
-
evt_menu ID::HtmlLbox_ToggleMulti, :on_toggle_multi
|
|
201
|
-
evt_menu ID::HtmlLbox_SelectAll, :on_select_all
|
|
202
|
-
evt_menu ID::HtmlLbox_UpdateItem, :on_update_item
|
|
203
|
-
evt_menu ID::HtmlLbox_GetItemRect, :on_get_item_rect
|
|
204
|
-
|
|
205
|
-
evt_menu ID::HtmlLbox_About, :on_about
|
|
206
|
-
|
|
207
|
-
evt_menu ID::HtmlLbox_SetBgCol, :on_set_bg_col
|
|
208
|
-
evt_menu ID::HtmlLbox_SetSelBgCol, :on_set_sel_bg_col
|
|
209
|
-
evt_menu ID::HtmlLbox_SetSelFgCol, :on_set_sel_fg_col
|
|
210
|
-
|
|
211
|
-
evt_menu ID::HtmlLbox_Clear, :on_clear
|
|
212
|
-
|
|
213
|
-
evt_update_ui ID::HtmlLbox_SelectAll, :on_update_ui_select_all
|
|
214
|
-
|
|
215
|
-
evt_listbox Wx::ID_ANY, :on_lbox_select
|
|
216
|
-
evt_listbox_dclick Wx::ID_ANY, :on_lbox_d_click
|
|
217
|
-
|
|
218
|
-
# the HTML listbox's events
|
|
219
|
-
evt_html_link_clicked Wx::ID_ANY, :on_html_link_clicked
|
|
220
|
-
evt_html_cell_hover Wx::ID_ANY, :on_html_cell_hover
|
|
221
|
-
evt_html_cell_clicked Wx::ID_ANY, :on_html_cell_clicked
|
|
222
|
-
end
|
|
177
|
+
if Wx.has_feature?(:USE_STATUSBAR)
|
|
178
|
+
# create a status bar just for fun (by default with 1 pane only)
|
|
179
|
+
create_status_bar(2)
|
|
180
|
+
set_status_text("Welcome to wxWidgets!")
|
|
181
|
+
end # USE_STATUSBAR
|
|
223
182
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
183
|
+
# create the child controls
|
|
184
|
+
create_box
|
|
185
|
+
text = Wx::TextCtrl.new(self, Wx::ID_ANY, "", style: Wx::TE_MULTILINE)
|
|
186
|
+
old_log_tgt = Wx::Log.set_active_target(Wx::LogTextCtrl.new(text))
|
|
227
187
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
188
|
+
# and lay them out
|
|
189
|
+
sizer = Wx::HBoxSizer.new
|
|
190
|
+
sizer.add(@hlbox, 2, Wx::GROW)
|
|
191
|
+
sizer.add(text, 3, Wx::GROW)
|
|
232
192
|
|
|
233
|
-
|
|
234
|
-
refresh
|
|
235
|
-
end
|
|
236
|
-
def on_quit(event)
|
|
237
|
-
# true is to force the frame to close
|
|
238
|
-
close(true)
|
|
239
|
-
end
|
|
240
|
-
def on_about(event)
|
|
241
|
-
Wx.message_box("This sample shows Wx::HtmlListBox class.\n"+
|
|
242
|
-
"\n"+
|
|
243
|
-
"(c) 2023 Martin Corino\n" +
|
|
244
|
-
"(original (c) 2003 Vadim Zeitlin)\n",
|
|
245
|
-
"About HtmlLbox",
|
|
246
|
-
Wx::OK | Wx::ICON_INFORMATION,
|
|
247
|
-
self)
|
|
248
|
-
end
|
|
193
|
+
self.sizer = sizer
|
|
249
194
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
"HtmlLbox: Set the margins",
|
|
255
|
-
0, 0, 20,
|
|
256
|
-
self)
|
|
195
|
+
evt_menu ID::HtmlLbox_CustomBox, :on_simple_or_custom_box
|
|
196
|
+
evt_menu ID::HtmlLbox_SimpleBox, :on_simple_or_custom_box
|
|
197
|
+
evt_menu ID::HtmlLbox_Quit, :on_quit
|
|
198
|
+
evt_close { Wx::Log.set_active_target(old_log_tgt); destroy }
|
|
257
199
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
@hlbox.refresh_all
|
|
265
|
-
end
|
|
266
|
-
def on_toggle_multi(event)
|
|
267
|
-
old = @hlbox
|
|
200
|
+
evt_menu ID::HtmlLbox_SetMargins, :on_set_margins
|
|
201
|
+
evt_menu ID::HtmlLbox_DrawSeparator, :on_draw_separator
|
|
202
|
+
evt_menu ID::HtmlLbox_ToggleMulti, :on_toggle_multi
|
|
203
|
+
evt_menu ID::HtmlLbox_SelectAll, :on_select_all
|
|
204
|
+
evt_menu ID::HtmlLbox_UpdateItem, :on_update_item
|
|
205
|
+
evt_menu ID::HtmlLbox_GetItemRect, :on_get_item_rect
|
|
268
206
|
|
|
269
|
-
|
|
270
|
-
create_box
|
|
271
|
-
get_sizer.replace(old, @hlbox)
|
|
272
|
-
old.destroy
|
|
207
|
+
evt_menu ID::HtmlLbox_About, :on_about
|
|
273
208
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
@hlbox.select_all
|
|
278
|
-
end
|
|
279
|
-
def on_update_item(event)
|
|
280
|
-
@hlbox.update_first_item if @hlbox.is_a?(MyHtmlListBox)
|
|
281
|
-
end
|
|
209
|
+
evt_menu ID::HtmlLbox_SetBgCol, :on_set_bg_col
|
|
210
|
+
evt_menu ID::HtmlLbox_SetSelBgCol, :on_set_sel_bg_col
|
|
211
|
+
evt_menu ID::HtmlLbox_SetSelFgCol, :on_set_sel_fg_col
|
|
282
212
|
|
|
283
|
-
|
|
284
|
-
r = @hlbox.get_item_rect(10)
|
|
285
|
-
Wx.log_message("Rect of item %d: (%d, %d)-(%d, %d)",
|
|
286
|
-
10, r.x, r.y, r.x + r.width, r.y + r.height)
|
|
287
|
-
end
|
|
213
|
+
evt_menu ID::HtmlLbox_Clear, :on_clear
|
|
288
214
|
|
|
289
|
-
|
|
290
|
-
col = Wx.get_colour_from_user(self, @hlbox.get_background_colour)
|
|
291
|
-
if col.ok?
|
|
292
|
-
@hlbox.set_background_colour(col)
|
|
293
|
-
@hlbox.refresh
|
|
215
|
+
evt_update_ui ID::HtmlLbox_SelectAll, :on_update_ui_select_all
|
|
294
216
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
217
|
+
evt_listbox Wx::ID_ANY, :on_lbox_select
|
|
218
|
+
evt_listbox_dclick Wx::ID_ANY, :on_lbox_d_click
|
|
219
|
+
|
|
220
|
+
# the HTML listbox's events
|
|
221
|
+
evt_html_link_clicked Wx::ID_ANY, :on_html_link_clicked
|
|
222
|
+
evt_html_cell_hover Wx::ID_ANY, :on_html_cell_hover
|
|
223
|
+
evt_html_cell_clicked Wx::ID_ANY, :on_html_cell_clicked
|
|
298
224
|
end
|
|
299
|
-
end
|
|
300
|
-
def on_set_sel_bg_col(event)
|
|
301
|
-
col = Wx.get_colour_from_user(self, @hlbox.get_selection_background)
|
|
302
|
-
if col.ok?
|
|
303
|
-
@hlbox.set_selection_background(col)
|
|
304
|
-
@hlbox.refresh
|
|
305
225
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
226
|
+
# event handlers
|
|
227
|
+
def on_simple_or_custom_box(event)
|
|
228
|
+
old = @hlbox
|
|
229
|
+
|
|
230
|
+
# we need to recreate the listbox
|
|
231
|
+
create_box
|
|
232
|
+
get_sizer.replace(old, @hlbox)
|
|
233
|
+
old.destroy
|
|
234
|
+
|
|
235
|
+
get_sizer.layout
|
|
236
|
+
refresh
|
|
309
237
|
end
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
238
|
+
def on_quit(event)
|
|
239
|
+
# true is to force the frame to close
|
|
240
|
+
close(true)
|
|
241
|
+
end
|
|
242
|
+
def on_about(event)
|
|
243
|
+
Wx.message_box("This sample shows Wx::HtmlListBox class.\n"+
|
|
244
|
+
"\n"+
|
|
245
|
+
"(c) 2023 Martin Corino\n" +
|
|
246
|
+
"(original (c) 2003 Vadim Zeitlin)\n",
|
|
247
|
+
"About HtmlLbox",
|
|
248
|
+
Wx::OK | Wx::ICON_INFORMATION,
|
|
249
|
+
self)
|
|
315
250
|
end
|
|
316
|
-
end
|
|
317
251
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
252
|
+
def on_set_margins(event)
|
|
253
|
+
margin = Wx.get_number_from_user(
|
|
254
|
+
"Enter the margins to use for the listbox items.",
|
|
255
|
+
"Margin: ",
|
|
256
|
+
"HtmlLbox: Set the margins",
|
|
257
|
+
0, 0, 20,
|
|
258
|
+
self)
|
|
259
|
+
|
|
260
|
+
if margin != -1
|
|
261
|
+
@hlbox.set_margins(margin, margin)
|
|
262
|
+
@hlbox.refresh_all
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
def on_draw_separator(_event)
|
|
266
|
+
@hlbox.refresh_all
|
|
267
|
+
end
|
|
268
|
+
def on_toggle_multi(event)
|
|
269
|
+
old = @hlbox
|
|
321
270
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
271
|
+
# we need to recreate the listbox
|
|
272
|
+
create_box
|
|
273
|
+
get_sizer.replace(old, @hlbox)
|
|
274
|
+
old.destroy
|
|
325
275
|
|
|
326
|
-
|
|
327
|
-
|
|
276
|
+
get_sizer.layout
|
|
277
|
+
end
|
|
278
|
+
def on_select_all(event)
|
|
279
|
+
@hlbox.select_all
|
|
280
|
+
end
|
|
281
|
+
def on_update_item(event)
|
|
282
|
+
@hlbox.update_first_item if @hlbox.is_a?(MyHtmlListBox)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def on_get_item_rect(event)
|
|
286
|
+
r = @hlbox.get_item_rect(10)
|
|
287
|
+
Wx.log_message("Rect of item %d: (%d, %d)-(%d, %d)",
|
|
288
|
+
10, r.x, r.y, r.x + r.width, r.y + r.height)
|
|
289
|
+
end
|
|
328
290
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
291
|
+
def on_set_bg_col(event)
|
|
292
|
+
col = Wx.get_colour_from_user(self, @hlbox.get_background_colour)
|
|
293
|
+
if col.ok?
|
|
294
|
+
@hlbox.set_background_colour(col)
|
|
295
|
+
@hlbox.refresh
|
|
296
|
+
|
|
297
|
+
if Wx.has_feature?(:USE_STATUSBAR)
|
|
298
|
+
set_status_text("Background colour changed.")
|
|
299
|
+
end # wxUSE_STATUSBAR
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
def on_set_sel_bg_col(event)
|
|
303
|
+
col = Wx.get_colour_from_user(self, @hlbox.get_selection_background)
|
|
304
|
+
if col.ok?
|
|
305
|
+
@hlbox.set_selection_background(col)
|
|
306
|
+
@hlbox.refresh
|
|
307
|
+
|
|
308
|
+
if Wx.has_feature?(:USE_STATUSBAR)
|
|
309
|
+
set_status_text("Selection Background colour changed.")
|
|
310
|
+
end # wxUSE_STATUSBAR
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
def on_set_sel_fg_col(event)
|
|
314
|
+
if @hlbox.is_a?(MyHtmlListBox)
|
|
315
|
+
@hlbox.set_change_sel_fg(!event.checked?)
|
|
316
|
+
@hlbox.refresh
|
|
334
317
|
end
|
|
335
|
-
Wx.log_message("Selected items: #{s}") unless s.empty?
|
|
336
318
|
end
|
|
337
319
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
320
|
+
def on_clear(event)
|
|
321
|
+
@hlbox.clear
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def on_update_ui_select_all(event)
|
|
325
|
+
event.enable(@hlbox && @hlbox.has_multiple_selection)
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def on_lbox_select(event)
|
|
329
|
+
Wx.log_message("Listbox selection is now %d.", event.get_int)
|
|
346
330
|
|
|
347
|
-
|
|
348
|
-
|
|
331
|
+
if @hlbox.has_multiple_selection
|
|
332
|
+
s = ''
|
|
333
|
+
@hlbox.each_selected do |item|
|
|
334
|
+
s << ', ' unless s.empty?
|
|
335
|
+
s << item.to_s
|
|
336
|
+
end
|
|
337
|
+
Wx.log_message("Selected items: #{s}") unless s.empty?
|
|
338
|
+
end
|
|
349
339
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
340
|
+
if Wx.has_feature?(:USE_STATUSBAR)
|
|
341
|
+
set_status_text("# items selected = #{@hlbox.get_selected_count}")
|
|
342
|
+
end # wxUSE_STATUSBAR
|
|
353
343
|
end
|
|
354
|
-
end
|
|
355
|
-
def on_html_cell_hover(event)
|
|
356
|
-
Wx.log_message("Mouse moved over cell %s at %d;%d",
|
|
357
|
-
event.get_cell.id, event.get_point.x, event.get_point.y)
|
|
358
|
-
end
|
|
359
|
-
def on_html_cell_clicked(event)
|
|
360
|
-
Wx.log_message("Click over cell %s at %d;%d",
|
|
361
|
-
event.get_cell.id, event.get_point.x, event.get_point.y)
|
|
362
344
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
345
|
+
def on_lbox_d_click(event)
|
|
346
|
+
Wx.log_message("Listbox item #{event.get_int} double clicked.")
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def on_html_link_clicked(event)
|
|
350
|
+
Wx.log_message("The url '%s' has been clicked!", event.get_link_info.get_href)
|
|
366
351
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
if get_menu_bar.is_checked(ID::HtmlLbox_CustomBox)
|
|
371
|
-
@hlbox = MyHtmlListBox.new(self, multi)
|
|
372
|
-
else # simple listbox
|
|
373
|
-
@hlbox = Wx::HTML::SimpleHtmlListBox.new(self, style: multi ? Wx::LB_MULTIPLE : 0)
|
|
374
|
-
|
|
375
|
-
# unlike Wx::HTML::HtmlListBox which is abstract, Wx::HTML::SimpleHtmlListBox is a
|
|
376
|
-
# concrete control and doesn't support virtual mode, this we need
|
|
377
|
-
# to add all of its items from the beginning
|
|
378
|
-
arr = []
|
|
379
|
-
1000.times do |n|
|
|
380
|
-
clr = Wx::Colour.new((n - 192).abs % 256,
|
|
381
|
-
(n - 256).abs % 256,
|
|
382
|
-
(n - 128).abs % 256)
|
|
383
|
-
level = n % 6 + 1
|
|
384
|
-
|
|
385
|
-
label = "<h#{level}><font color=#{clr.get_as_string(Wx::C2S_HTML_SYNTAX)}>Item</font> <b>#{n}</b></h#{level}>"
|
|
386
|
-
arr << label
|
|
352
|
+
if @hlbox.is_a?(MyHtmlListBox)
|
|
353
|
+
@hlbox.link_clicked = true
|
|
354
|
+
@hlbox.refresh_row(1)
|
|
387
355
|
end
|
|
356
|
+
end
|
|
357
|
+
def on_html_cell_hover(event)
|
|
358
|
+
Wx.log_message("Mouse moved over cell %s at %d;%d",
|
|
359
|
+
event.get_cell.id, event.get_point.x, event.get_point.y)
|
|
360
|
+
end
|
|
361
|
+
def on_html_cell_clicked(event)
|
|
362
|
+
Wx.log_message("Click over cell %s at %d;%d",
|
|
363
|
+
event.get_cell.id, event.get_point.x, event.get_point.y)
|
|
388
364
|
|
|
389
|
-
|
|
365
|
+
# if we don't skip the event, OnHtmlLinkClicked won't be called!
|
|
366
|
+
event.skip
|
|
390
367
|
end
|
|
368
|
+
|
|
369
|
+
def create_box
|
|
370
|
+
multi = get_menu_bar.is_checked(ID::HtmlLbox_ToggleMulti)
|
|
371
|
+
|
|
372
|
+
if get_menu_bar.is_checked(ID::HtmlLbox_CustomBox)
|
|
373
|
+
@hlbox = MyHtmlListBox.new(self, multi)
|
|
374
|
+
else # simple listbox
|
|
375
|
+
@hlbox = Wx::HTML::SimpleHtmlListBox.new(self, style: multi ? Wx::LB_MULTIPLE : 0)
|
|
376
|
+
|
|
377
|
+
# unlike Wx::HTML::HtmlListBox which is abstract, Wx::HTML::SimpleHtmlListBox is a
|
|
378
|
+
# concrete control and doesn't support virtual mode, this we need
|
|
379
|
+
# to add all of its items from the beginning
|
|
380
|
+
arr = []
|
|
381
|
+
1000.times do |n|
|
|
382
|
+
clr = Wx::Colour.new((n - 192).abs % 256,
|
|
383
|
+
(n - 256).abs % 256,
|
|
384
|
+
(n - 128).abs % 256)
|
|
385
|
+
level = n % 6 + 1
|
|
386
|
+
|
|
387
|
+
label = "<h#{level}><font color=#{clr.get_as_string(Wx::C2S_HTML_SYNTAX)}>Item</font> <b>#{n}</b></h#{level}>"
|
|
388
|
+
arr << label
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
@hlbox.append(arr)
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
|
|
391
395
|
end
|
|
392
396
|
|
|
393
397
|
end
|
|
@@ -406,7 +410,7 @@ module HtmlListBoxSample
|
|
|
406
410
|
end
|
|
407
411
|
|
|
408
412
|
def self.activate
|
|
409
|
-
frame = MyFrame.new
|
|
413
|
+
frame = HTLBox::MyFrame.new
|
|
410
414
|
frame.show
|
|
411
415
|
frame
|
|
412
416
|
end
|