wxruby3 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
- data/ext/wxruby3/include/wxruby-Config.h +23 -5
- data/ext/wxruby3/include/wxruby-Persistence.h +79 -0
- data/ext/wxruby3/include/wxruby-Validator.h +39 -0
- data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
- data/ext/wxruby3/swig/custom/director.swg +8 -0
- data/ext/wxruby3/swig/mark_free_impl.i +0 -33
- data/ext/wxruby3/swig/memory_management.i +6 -0
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/book_ctrl_base.rb +16 -0
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/config.rb +454 -83
- data/lib/wx/core/controlwithitems.rb +40 -130
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/event.rb +6 -1
- data/lib/wx/core/evthandler.rb +8 -2
- data/lib/wx/core/generic_validator.rb +312 -0
- data/lib/wx/core/listbox.rb +2 -2
- data/lib/wx/core/log.rb +1 -1
- data/lib/wx/core/notebook.rb +10 -8
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/peristent_object.rb +15 -0
- data/lib/wx/core/persistence_manager.rb +39 -0
- data/lib/wx/core/persistent_window.rb +16 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +1 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/top_level_window.rb +16 -0
- data/lib/wx/core/treebook.rb +18 -0
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +3 -7
- data/lib/wx/core.rb +4 -0
- data/lib/wx/doc/art_locator.rb +1 -0
- data/lib/wx/doc/book_ctrl_base.rb +19 -0
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/config.rb +101 -41
- data/lib/wx/doc/controlwithitems.rb +16 -0
- data/lib/wx/doc/date_picker_ctrl.rb +23 -0
- data/lib/wx/doc/editable_listbox.rb +44 -0
- data/lib/wx/doc/enum.rb +15 -0
- data/lib/wx/doc/event.rb +12 -0
- data/lib/wx/doc/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/extra/14_config.md +101 -0
- data/lib/wx/doc/extra/15_persistence.md +148 -0
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/persistence_manager.rb +36 -0
- data/lib/wx/doc/persistent_object.rb +27 -0
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/text_validator.rb +10 -0
- data/lib/wx/doc/top_level_window.rb +19 -0
- data/lib/wx/doc/treebook.rb +6 -1
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/window.rb +30 -0
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/version.rb +1 -1
- data/rakelib/build.rb +1 -1
- data/rakelib/lib/config/mingw.rb +12 -0
- data/rakelib/lib/core/include/client_data.inc +65 -0
- data/rakelib/lib/core/include/funcall.inc +1 -1
- data/rakelib/lib/core/package.rb +39 -3
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec.rb +10 -0
- data/rakelib/lib/core/spec_helper.rb +8 -2
- data/rakelib/lib/director/app.rb +18 -0
- data/rakelib/lib/director/app_traits.rb +3 -1
- data/rakelib/lib/director/bitmap_combobox.rb +2 -2
- data/rakelib/lib/director/combobox.rb +22 -0
- data/rakelib/lib/director/comboctrl.rb +1 -55
- data/rakelib/lib/director/config_base.rb +490 -19
- data/rakelib/lib/director/ctrl_with_items.rb +88 -21
- data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
- data/rakelib/lib/director/editable_listbox.rb +30 -0
- data/rakelib/lib/director/event.rb +102 -12
- data/rakelib/lib/director/event_filter.rb +1 -1
- data/rakelib/lib/director/event_handler.rb +3 -2
- data/rakelib/lib/director/event_loop.rb +1 -1
- data/rakelib/lib/director/file_dialog_customize_hook.rb +2 -2
- data/rakelib/lib/director/functions.rb +4 -2
- data/rakelib/lib/director/generic_dirctrl.rb +17 -0
- data/rakelib/lib/director/grid_cell_attr.rb +1 -3
- data/rakelib/lib/director/grid_cell_editor.rb +1 -3
- data/rakelib/lib/director/grid_cell_renderer.rb +1 -3
- data/rakelib/lib/director/header_ctrl.rb +9 -1
- data/rakelib/lib/director/html_listbox.rb +97 -22
- data/rakelib/lib/director/num_validator.rb +495 -0
- data/rakelib/lib/director/numeric_property_validator.rb +131 -6
- data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
- data/rakelib/lib/director/persistence_manager.rb +410 -0
- data/rakelib/lib/director/persistent_object.rb +70 -0
- data/rakelib/lib/director/persistent_window.rb +73 -0
- data/rakelib/lib/director/pgproperty.rb +3 -29
- data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
- data/rakelib/lib/director/ribbon_gallery.rb +3 -5
- data/rakelib/lib/director/sizer.rb +15 -4
- data/rakelib/lib/director/sizer_item.rb +13 -0
- data/rakelib/lib/director/static_bitmap.rb +32 -0
- data/rakelib/lib/director/text_entry.rb +5 -1
- data/rakelib/lib/director/text_validator.rb +124 -13
- data/rakelib/lib/director/toggle_button.rb +1 -0
- data/rakelib/lib/director/top_level_window.rb +0 -2
- data/rakelib/lib/director/tree_ctrl.rb +35 -0
- data/rakelib/lib/director/utils.rb +16 -2
- data/rakelib/lib/director/validator.rb +196 -21
- data/rakelib/lib/director/window.rb +16 -2
- data/rakelib/lib/extractor/function.rb +2 -1
- data/rakelib/lib/generate/analyzer.rb +44 -44
- data/rakelib/lib/generate/doc.rb +11 -5
- data/rakelib/lib/specs/interfaces.rb +5 -0
- data/rakelib/lib/swig_runner.rb +55 -9
- data/rakelib/lib/typemap/client_data.rb +67 -0
- data/rakelib/lib/typemap/common.rb +3 -3
- data/rakelib/lib/typemap/config.rb +8 -0
- data/rakelib/lib/typemap/datetime.rb +1 -1
- data/rakelib/lib/typemap/tree_itemid.rb +2 -2
- data/samples/aui/aui.rb +1237 -1233
- data/samples/calendar/calendar.rb +293 -289
- data/samples/controls/get_item_sample.rb +83 -79
- data/samples/controls/htlbox.rb +331 -327
- data/samples/dialogs/dialogs.rb +682 -694
- data/samples/dialogs/wizard.rb +52 -55
- data/samples/dragdrop/dragdrop.rb +146 -142
- data/samples/drawing/bitmap.rb +29 -26
- data/samples/drawing/bitmap_image.rb +84 -80
- data/samples/drawing/graphics_drawing.rb +209 -205
- data/samples/drawing/image_prt.rb +344 -340
- data/samples/drawing/maths_images.rb +18 -1
- data/samples/drawing/rmagic_bitmap_image.rb +88 -84
- data/samples/etc/caret.rb +306 -0
- data/samples/etc/miniframe.rb +65 -60
- data/samples/etc/sash.rb +109 -105
- data/samples/etc/scrollwin.rb +86 -80
- data/samples/etc/system_settings.rb +216 -209
- data/samples/event/activation.rb +72 -67
- data/samples/event/event.rb +160 -153
- data/samples/event/threaded.rb +8 -1
- data/samples/event/update_ui_event.rb +67 -60
- data/samples/grid/grid.rb +188 -181
- data/samples/grid/gridtablebase.rb +136 -129
- data/samples/html/html.rb +208 -204
- data/samples/mdi/mdi.rb +59 -54
- data/samples/minimal/minimal.rb +54 -51
- data/samples/minimal/nothing.rb +1 -0
- data/samples/printing/printing.rb +367 -377
- data/samples/printing/printing2.rb +203 -198
- data/samples/propgrid/propgrid.rb +2312 -2308
- data/samples/propgrid/propgrid_minimal.rb +57 -50
- data/samples/ribbon/ribbon.rb +780 -774
- data/samples/sampler/ext.rb +0 -33
- data/samples/sampler/sample.rb +4 -9
- data/samples/sampler.rb +1 -1
- data/samples/splash/splash.rb +118 -116
- data/samples/text/rich_textctrl.rb +207 -201
- data/samples/text/richtext.rb +1409 -1405
- data/samples/text/scintilla.rb +137 -128
- data/samples/text/textctrl.rb +89 -83
- data/samples/text/unicode.rb +175 -168
- data/samples/treectrl/treectrl.rb +1430 -1426
- data/samples/widgets/activityindicator.rb +95 -0
- data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
- data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
- data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/button.xpm +54 -0
- data/samples/widgets/art/widgets/checkbox.xpm +54 -0
- data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
- data/samples/widgets/art/widgets/choicebk.xpm +54 -0
- data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
- data/samples/widgets/art/widgets/combobox.xpm +54 -0
- data/samples/widgets/art/widgets/datepick.xpm +200 -0
- data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
- data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
- data/samples/widgets/art/widgets/filepicker.xpm +214 -0
- data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
- data/samples/widgets/art/widgets/gauge.xpm +54 -0
- data/samples/widgets/art/widgets/header.xpm +54 -0
- data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
- data/samples/widgets/art/widgets/listbook.xpm +54 -0
- data/samples/widgets/art/widgets/listbox.xpm +54 -0
- data/samples/widgets/art/widgets/native.xpm +81 -0
- data/samples/widgets/art/widgets/notebook.xpm +54 -0
- data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/radiobox.xpm +54 -0
- data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
- data/samples/widgets/art/widgets/slider.xpm +54 -0
- data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
- data/samples/widgets/art/widgets/statbmp.xpm +40 -0
- data/samples/widgets/art/widgets/statbox.xpm +54 -0
- data/samples/widgets/art/widgets/stattext.xpm +54 -0
- data/samples/widgets/art/widgets/text.xpm +54 -0
- data/samples/widgets/art/widgets/timepick.xpm +207 -0
- data/samples/widgets/art/widgets/toggle.xpm +54 -0
- data/samples/widgets/art/widgets/toucan.png +0 -0
- data/samples/widgets/bmpcombobox.rb +651 -0
- data/samples/widgets/button.rb +462 -0
- data/samples/widgets/checkbox.rb +211 -0
- data/samples/widgets/choice.rb +287 -0
- data/samples/widgets/clrpicker.rb +156 -0
- data/samples/widgets/combobox.rb +516 -0
- data/samples/widgets/datepick.rb +215 -0
- data/samples/widgets/dirctrl.rb +265 -0
- data/samples/widgets/dirpicker.rb +158 -0
- data/samples/widgets/editlbox.rb +122 -0
- data/samples/widgets/filectrl.rb +216 -0
- data/samples/widgets/filepicker.rb +214 -0
- data/samples/widgets/fontpicker.rb +135 -0
- data/samples/widgets/gauge.rb +311 -0
- data/samples/widgets/headerctrl.rb +236 -0
- data/samples/widgets/hyperlink.rb +203 -0
- data/samples/widgets/itemcontainer.rb +185 -0
- data/samples/widgets/listbox.rb +473 -0
- data/samples/widgets/notebook.rb +488 -0
- data/samples/widgets/odcombobox.rb +608 -0
- data/samples/widgets/radiobox.rb +328 -0
- data/samples/widgets/searchctrl.rb +159 -0
- data/samples/widgets/slider.rb +594 -0
- data/samples/widgets/spinbtn.rb +443 -0
- data/samples/widgets/statbmp.rb +130 -0
- data/samples/widgets/static.rb +436 -0
- data/samples/widgets/textctrl.rb +700 -0
- data/samples/widgets/timepick.rb +148 -0
- data/samples/widgets/tn_widgets.png +0 -0
- data/samples/widgets/toggle.rb +385 -0
- data/samples/widgets/widgets.rb +1229 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/test_config.rb +207 -42
- 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_persistence.rb +142 -0
- data/tests/test_sizer.rb +44 -1
- data/tests/test_validators.rb +805 -0
- metadata +109 -138
- data/lib/wx/core/choice.rb +0 -14
- data/lib/wx/core/combo_ctrl.rb +0 -110
- data/rakelib/lib/typemap/grid_client_data.rb +0 -58
- data/samples/bigdemo/About.rbw +0 -39
- data/samples/bigdemo/ColorPanel.rbw +0 -23
- data/samples/bigdemo/GridSimple.rbw +0 -78
- data/samples/bigdemo/MDIDemo.rbw +0 -57
- data/samples/bigdemo/PopupMenu.rbw +0 -146
- data/samples/bigdemo/ShapedWindow.rbw +0 -128
- data/samples/bigdemo/Sizers.rbw +0 -541
- data/samples/bigdemo/bigdemo.rb +0 -817
- data/samples/bigdemo/demoTemplate.rbw +0 -33
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +0 -27
- data/samples/bigdemo/icons/copy.xpm +0 -25
- data/samples/bigdemo/icons/cut.xpm +0 -24
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +0 -27
- data/samples/bigdemo/icons/help.xpm +0 -25
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +0 -27
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +0 -44
- data/samples/bigdemo/icons/new.xpm +0 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +0 -45
- data/samples/bigdemo/icons/open.xpm +0 -26
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +0 -38
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +0 -26
- data/samples/bigdemo/icons/print.xpm +0 -26
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +0 -27
- data/samples/bigdemo/icons/robert.xpm +0 -415
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +0 -25
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +0 -39
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +0 -42
- data/samples/bigdemo/icons/stattext.xpm +0 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +0 -79
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +0 -27
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +0 -38
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +0 -38
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +0 -98
- data/samples/bigdemo/tips.txt +0 -7
- data/samples/bigdemo/utils.rb +0 -20
- data/samples/bigdemo/wxArtProvider.rbw +0 -282
- data/samples/bigdemo/wxBitmapButton.rbw +0 -65
- data/samples/bigdemo/wxButton.rbw +0 -64
- data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
- data/samples/bigdemo/wxCheckBox.rbw +0 -50
- data/samples/bigdemo/wxCheckListBox.rbw +0 -65
- data/samples/bigdemo/wxChoice.rbw +0 -47
- data/samples/bigdemo/wxChoicebook.rbw +0 -78
- data/samples/bigdemo/wxColourDialog.rbw +0 -33
- data/samples/bigdemo/wxComboBox.rbw +0 -77
- data/samples/bigdemo/wxCursor.rbw +0 -136
- data/samples/bigdemo/wxDialog.rbw +0 -74
- data/samples/bigdemo/wxDirDialog.rbw +0 -29
- data/samples/bigdemo/wxDragImage.rbw +0 -70
- data/samples/bigdemo/wxFileDialog.rbw +0 -37
- data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
- data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
- data/samples/bigdemo/wxFontDialog.rbw +0 -200
- data/samples/bigdemo/wxFrame.rbw +0 -53
- data/samples/bigdemo/wxGauge.rbw +0 -65
- data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
- data/samples/bigdemo/wxGrid.rbw +0 -66
- data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
- data/samples/bigdemo/wxListBox.rbw +0 -140
- data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
- data/samples/bigdemo/wxMDIWindows.rbw +0 -50
- data/samples/bigdemo/wxMenu.rbw +0 -247
- data/samples/bigdemo/wxMessageDialog.rbw +0 -27
- data/samples/bigdemo/wxMiniFrame.rbw +0 -70
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
- data/samples/bigdemo/wxNotebook.rbw +0 -136
- data/samples/bigdemo/wxProgressDialog.rbw +0 -43
- data/samples/bigdemo/wxRadioBox.rbw +0 -72
- data/samples/bigdemo/wxRadioButton.rbw +0 -125
- data/samples/bigdemo/wxSashWindow.rbw +0 -141
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
- data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
- data/samples/bigdemo/wxSlider.rbw +0 -42
- data/samples/bigdemo/wxSpinButton.rbw +0 -50
- data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
- data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
- data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
- data/samples/bigdemo/wxStaticText.rbw +0 -55
- data/samples/bigdemo/wxStatusBar.rbw +0 -126
- data/samples/bigdemo/wxTextCtrl.rbw +0 -149
- data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
- data/samples/bigdemo/wxToggleButton.rbw +0 -49
- data/samples/bigdemo/wxToolBar.rbw +0 -131
- data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
- data/samples/caret/caret.rb +0 -298
- data/samples/caret/mondrian.xpm +0 -44
- data/samples/controls/books.rb +0 -189
- data/samples/controls/choice.xpm +0 -27
- data/samples/controls/combo.xpm +0 -27
- data/samples/controls/controls.rb +0 -1099
- data/samples/controls/gauge.xpm +0 -27
- data/samples/controls/list.xpm +0 -27
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +0 -44
- data/samples/controls/radio.xpm +0 -27
- data/samples/controls/stattext.xpm +0 -24
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +0 -27
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/etc/choice.rb +0 -87
- data/samples/etc/tn_choice.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +0 -44
- /data/samples/{caret → etc}/tn_caret.png +0 -0
data/samples/html/html.rb
CHANGED
|
@@ -14,252 +14,256 @@ require 'wx'
|
|
|
14
14
|
require 'net/http'
|
|
15
15
|
require 'uri'
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
ID_DefaultLocalBrowser,
|
|
19
|
-
ID_DefaultWebBrowser,
|
|
20
|
-
ID_Back,
|
|
21
|
-
ID_Forward,
|
|
22
|
-
ID_Processor,
|
|
23
|
-
ID_DrawCustomBg = (Wx::ID_HIGHEST..Wx::ID_HIGHEST+7).to_a
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class MyHtmlFilter < Wx::HTML::HtmlFilter
|
|
27
|
-
def can_read(fsfile)
|
|
28
|
-
return /\.foobar\Z/ =~ fsfile.location
|
|
29
|
-
end
|
|
17
|
+
module Html
|
|
30
18
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
end
|
|
19
|
+
ID_PageOpen,
|
|
20
|
+
ID_DefaultLocalBrowser,
|
|
21
|
+
ID_DefaultWebBrowser,
|
|
22
|
+
ID_Back,
|
|
23
|
+
ID_Forward,
|
|
24
|
+
ID_Processor,
|
|
25
|
+
ID_DrawCustomBg = (Wx::ID_HIGHEST..Wx::ID_HIGHEST+7).to_a
|
|
40
26
|
|
|
41
|
-
class MyHtmlWindow < Wx::HTML::HtmlWindow
|
|
42
|
-
BLUE_PEN = Wx::Pen.new
|
|
43
|
-
attr_reader :html_src
|
|
44
|
-
def initialize(*args)
|
|
45
|
-
super
|
|
46
|
-
@draw_custom_bg = false
|
|
47
|
-
evt_erase_background :on_erase_bg_event
|
|
48
27
|
|
|
49
|
-
|
|
50
|
-
|
|
28
|
+
class MyHtmlFilter < Wx::HTML::HtmlFilter
|
|
29
|
+
def can_read(fsfile)
|
|
30
|
+
return /\.foobar\Z/ =~ fsfile.location
|
|
31
|
+
end
|
|
51
32
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
33
|
+
def read_file(fsfile)
|
|
34
|
+
uri = URI.parse(fsfile.location)
|
|
35
|
+
if uri.scheme == 'file' && File.exist?(uri.path)
|
|
36
|
+
return File.read(uri.path)
|
|
37
|
+
else
|
|
38
|
+
"<html><body><b>Cannot locate #{fsfile.location}</b></body></html>"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
55
41
|
end
|
|
56
42
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
class MyHtmlWindow < Wx::HTML::HtmlWindow
|
|
44
|
+
BLUE_PEN = Wx::Pen.new
|
|
45
|
+
attr_reader :html_src
|
|
46
|
+
def initialize(*args)
|
|
47
|
+
super
|
|
48
|
+
@draw_custom_bg = false
|
|
49
|
+
evt_erase_background :on_erase_bg_event
|
|
61
50
|
|
|
62
|
-
|
|
63
|
-
unless @draw_custom_bg
|
|
64
|
-
event.skip
|
|
65
|
-
return
|
|
51
|
+
BLUE_PEN.set_colour(Wx::BLUE)
|
|
66
52
|
end
|
|
67
53
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
54
|
+
def draw_custom_bg(val)
|
|
55
|
+
@draw_custom_bg = !!val
|
|
56
|
+
refresh
|
|
57
|
+
end
|
|
72
58
|
|
|
73
|
-
|
|
74
|
-
(
|
|
75
|
-
|
|
59
|
+
def on_opening_url(_type, url)
|
|
60
|
+
related_frame.set_status_text(url + " lately opened", 1)
|
|
61
|
+
Wx::HTML_OPEN
|
|
76
62
|
end
|
|
77
|
-
end
|
|
78
63
|
|
|
79
|
-
|
|
64
|
+
def on_erase_bg_event(event)
|
|
65
|
+
unless @draw_custom_bg
|
|
66
|
+
event.skip
|
|
67
|
+
return
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# draw a background grid to show that this handler is indeed executed
|
|
71
|
+
paint do |dc|
|
|
72
|
+
dc.pen = BLUE_PEN
|
|
73
|
+
dc.clear
|
|
74
|
+
|
|
75
|
+
vx, vy = get_virtual_size
|
|
76
|
+
(vx / 15).times { |i| x = i*15; dc.draw_line(x, 0, x, vy) }
|
|
77
|
+
(vy / 15).times { |i| y = i*15; dc.draw_line(0, y, vx, y) }
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
80
|
|
|
81
|
-
# The frame or self-contained window for this application
|
|
82
|
-
class HtmlFrame < Wx::Frame
|
|
83
|
-
attr_reader :html_win
|
|
84
|
-
|
|
85
|
-
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
|
|
86
|
-
# A main application frame has no parent (nil)
|
|
87
|
-
# -1 means this frame will be supplied a default id
|
|
88
|
-
super(nil, -1, title, pos, size, style)
|
|
89
|
-
setup_menus
|
|
90
|
-
create_status_bar(2)
|
|
91
|
-
self.icon = Wx::Icon.new(local_icon_file('../sample.xpm'))
|
|
92
|
-
setup_panel
|
|
93
|
-
self.status_text = "Welcome to wxRuby!"
|
|
94
|
-
|
|
95
|
-
evt_html_link_clicked Wx::ID_ANY, :on_html_link_clicked
|
|
96
|
-
evt_html_cell_hover Wx::ID_ANY, :on_html_cell_hover
|
|
97
|
-
evt_html_cell_clicked Wx::ID_ANY, :on_html_cell_clicked
|
|
98
81
|
end
|
|
99
82
|
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
# The frame or self-contained window for this application
|
|
84
|
+
class HtmlFrame < Wx::Frame
|
|
85
|
+
attr_reader :html_win
|
|
86
|
+
|
|
87
|
+
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
|
|
88
|
+
# A main application frame has no parent (nil)
|
|
89
|
+
# -1 means this frame will be supplied a default id
|
|
90
|
+
super(nil, -1, title, pos, size, style)
|
|
91
|
+
setup_menus
|
|
92
|
+
create_status_bar(2)
|
|
93
|
+
self.icon = Wx::Icon.new(local_icon_file('../sample.xpm'))
|
|
94
|
+
setup_panel
|
|
95
|
+
self.status_text = "Welcome to wxRuby!"
|
|
96
|
+
|
|
97
|
+
evt_html_link_clicked Wx::ID_ANY, :on_html_link_clicked
|
|
98
|
+
evt_html_cell_hover Wx::ID_ANY, :on_html_cell_hover
|
|
99
|
+
evt_html_cell_clicked Wx::ID_ANY, :on_html_cell_clicked
|
|
100
|
+
end
|
|
102
101
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
@html_win.set_related_status_bar(1)
|
|
102
|
+
def setup_panel
|
|
103
|
+
panel = Wx::Panel.new(self, -1)
|
|
106
104
|
|
|
107
|
-
|
|
105
|
+
@html_win = MyHtmlWindow.new(panel, -1)
|
|
106
|
+
@html_win.set_related_frame(self, 'HTML : %s')
|
|
107
|
+
@html_win.set_related_status_bar(1)
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
|
|
111
|
-
Wx::TE_MULTILINE)
|
|
112
|
-
Wx::Log.set_active_target(Wx::LogTextCtrl.new(text))
|
|
109
|
+
@html_win.load_file('samples/html/test.htm')
|
|
113
110
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
end
|
|
111
|
+
text = Wx::TextCtrl.new(panel, Wx::ID_ANY, "",
|
|
112
|
+
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
|
|
113
|
+
Wx::TE_MULTILINE)
|
|
114
|
+
Wx::Log.set_active_target(Wx::LogTextCtrl.new(text))
|
|
119
115
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
menu_file.append(ID_PageOpen, "&Open HTML page...\tCtrl-O")
|
|
127
|
-
menu_file.append(ID_DefaultLocalBrowser, "&Open current page with default browser")
|
|
128
|
-
menu_file.append(ID_DefaultWebBrowser, "Open a &web page with default browser")
|
|
129
|
-
# menu_file.append_separator
|
|
130
|
-
# menu_file.append(ID_Processor, "&Remove bold attribute",
|
|
131
|
-
# '', Wx::ITEM_CHECK)
|
|
132
|
-
menu_file.append_separator
|
|
133
|
-
menu_file.append_check_item(ID_DrawCustomBg, "&Draw custom background")
|
|
134
|
-
menu_file.append_separator
|
|
135
|
-
menu_file.append(Wx::ID_EXIT, "&Close frame")
|
|
136
|
-
|
|
137
|
-
menu_nav.append(ID_Back, "Go &BACK")
|
|
138
|
-
menu_nav.append(ID_Forward, "Go &FORWARD")
|
|
139
|
-
|
|
140
|
-
# Using Wx::ID_ABOUT default id means the menu item will be placed
|
|
141
|
-
# in the correct platform-specific place
|
|
142
|
-
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
|
143
|
-
|
|
144
|
-
menu_bar = Wx::MenuBar.new
|
|
145
|
-
menu_bar.append(menu_file, "&File")
|
|
146
|
-
menu_bar.append(menu_nav, "&Navigate")
|
|
147
|
-
menu_bar.append(menu_help, "&Help")
|
|
148
|
-
# Assign the menus to this frame
|
|
149
|
-
self.menu_bar = menu_bar
|
|
150
|
-
|
|
151
|
-
if Wx.has_feature?(:USE_ACCEL)
|
|
152
|
-
accel_entries = [
|
|
153
|
-
Wx::AcceleratorEntry.new(Wx::ACCEL_ALT, Wx::K_LEFT, ID_Back),
|
|
154
|
-
Wx::AcceleratorEntry.new(Wx::ACCEL_ALT, Wx::K_RIGHT, ID_Forward)
|
|
155
|
-
]
|
|
156
|
-
set_accelerator_table(Wx::AcceleratorTable.new(accel_entries))
|
|
116
|
+
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
|
117
|
+
sizer.add(@html_win, 3, Wx::GROW)
|
|
118
|
+
sizer.add(text, 1, Wx::GROW)
|
|
119
|
+
panel.set_sizer(sizer)
|
|
157
120
|
end
|
|
158
121
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
122
|
+
def setup_menus
|
|
123
|
+
menu_file = Wx::Menu.new
|
|
124
|
+
menu_nav = Wx::Menu.new
|
|
125
|
+
menu_help = Wx::Menu.new
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
menu_file.append(ID_PageOpen, "&Open HTML page...\tCtrl-O")
|
|
129
|
+
menu_file.append(ID_DefaultLocalBrowser, "&Open current page with default browser")
|
|
130
|
+
menu_file.append(ID_DefaultWebBrowser, "Open a &web page with default browser")
|
|
131
|
+
# menu_file.append_separator
|
|
132
|
+
# menu_file.append(ID_Processor, "&Remove bold attribute",
|
|
133
|
+
# '', Wx::ITEM_CHECK)
|
|
134
|
+
menu_file.append_separator
|
|
135
|
+
menu_file.append_check_item(ID_DrawCustomBg, "&Draw custom background")
|
|
136
|
+
menu_file.append_separator
|
|
137
|
+
menu_file.append(Wx::ID_EXIT, "&Close frame")
|
|
138
|
+
|
|
139
|
+
menu_nav.append(ID_Back, "Go &BACK")
|
|
140
|
+
menu_nav.append(ID_Forward, "Go &FORWARD")
|
|
141
|
+
|
|
142
|
+
# Using Wx::ID_ABOUT default id means the menu item will be placed
|
|
143
|
+
# in the correct platform-specific place
|
|
144
|
+
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
|
145
|
+
|
|
146
|
+
menu_bar = Wx::MenuBar.new
|
|
147
|
+
menu_bar.append(menu_file, "&File")
|
|
148
|
+
menu_bar.append(menu_nav, "&Navigate")
|
|
149
|
+
menu_bar.append(menu_help, "&Help")
|
|
150
|
+
# Assign the menus to this frame
|
|
151
|
+
self.menu_bar = menu_bar
|
|
152
|
+
|
|
153
|
+
if Wx.has_feature?(:USE_ACCEL)
|
|
154
|
+
accel_entries = [
|
|
155
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_ALT, Wx::K_LEFT, ID_Back),
|
|
156
|
+
Wx::AcceleratorEntry.new(Wx::ACCEL_ALT, Wx::K_RIGHT, ID_Forward)
|
|
157
|
+
]
|
|
158
|
+
set_accelerator_table(Wx::AcceleratorTable.new(accel_entries))
|
|
159
|
+
end
|
|
169
160
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
161
|
+
# handle menu events
|
|
162
|
+
evt_menu ID_PageOpen, :on_open_page
|
|
163
|
+
evt_menu ID_DefaultLocalBrowser, :on_default_local_browser
|
|
164
|
+
evt_menu ID_DefaultWebBrowser, :on_default_web_browser
|
|
165
|
+
evt_menu ID_Back, :on_back
|
|
166
|
+
evt_menu ID_Forward, :on_forward
|
|
167
|
+
evt_menu ID_DrawCustomBg, :on_draw_custom_bg
|
|
168
|
+
evt_menu Wx::ID_EXIT, :on_quit
|
|
169
|
+
evt_menu Wx::ID_ABOUT, :on_about
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# end the application
|
|
173
|
+
def on_quit(_evt)
|
|
174
|
+
close(true)
|
|
175
|
+
end
|
|
174
176
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
def on_open_page(_evt)
|
|
178
|
+
if Wx.has_feature?(:USE_FILEDLG)
|
|
179
|
+
p = Wx.file_selector("Open HTML document", '',
|
|
180
|
+
'', '', 'HTML files|*.htm;*.html');
|
|
181
|
+
unless p.empty?
|
|
182
|
+
tm = Time.now
|
|
183
|
+
if html_win.load_file(p)
|
|
184
|
+
Wx.log_status("Loaded \"#{p}\" in #{Time.now-tm}sec")
|
|
185
|
+
end
|
|
183
186
|
end
|
|
184
187
|
end
|
|
185
188
|
end
|
|
186
|
-
end
|
|
187
189
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
def on_default_local_browser(_evt)
|
|
191
|
+
page = html_win.get_opened_page
|
|
192
|
+
Wx.launch_default_browser(page) unless page.empty?
|
|
193
|
+
end
|
|
192
194
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
def on_default_web_browser(_evt)
|
|
196
|
+
page = html_win.get_opened_page
|
|
197
|
+
Wx.launch_default_browser('http://www.google.com') unless page.empty?
|
|
198
|
+
end
|
|
197
199
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
def on_back(_evt)
|
|
201
|
+
Wx.message_box('You reached prehistory era!') unless html_win.history_back
|
|
202
|
+
end
|
|
201
203
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
def on_forward(_evt)
|
|
205
|
+
Wx.message_box('No more items in history!') unless html_win.history_forward
|
|
206
|
+
end
|
|
205
207
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
208
|
+
def on_draw_custom_bg(event)
|
|
209
|
+
html_win.draw_custom_bg(event.checked?)
|
|
210
|
+
end
|
|
209
211
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
# show an 'About' dialog
|
|
213
|
+
def on_about(_evt)
|
|
214
|
+
msg = sprintf("This is the About dialog of the HTML sample.\n" \
|
|
215
|
+
"Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
|
|
214
216
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
# create a simple message dialog with OK button
|
|
218
|
+
Wx::MessageDialog(self, msg, 'About WxRuby HTML',
|
|
219
|
+
Wx::OK | Wx::ICON_INFORMATION)
|
|
220
|
+
end
|
|
219
221
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
def on_html_link_clicked(event)
|
|
223
|
+
Wx.log_message("The url '%s' has been clicked!", event.link_info.href)
|
|
222
224
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
225
|
+
# skipping this event the default behaviour (load the clicked URL)
|
|
226
|
+
# will happen...
|
|
227
|
+
event.skip
|
|
228
|
+
end
|
|
227
229
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
def on_html_cell_hover(event)
|
|
231
|
+
Wx.log_message("Mouse moved over cell %p at %d;%d",
|
|
232
|
+
event.cell, event.point.x, event.point.y)
|
|
233
|
+
end
|
|
232
234
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
235
|
+
def on_html_cell_clicked(event)
|
|
236
|
+
Wx.log_message("Click over cell %p at %d;%d",
|
|
237
|
+
event.cell, event.point.x, event.point.y)
|
|
236
238
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
239
|
+
# if we don't skip the event, OnHtmlLinkClicked won't be called!
|
|
240
|
+
event.skip
|
|
241
|
+
end
|
|
240
242
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
# utility function to find an icon relative to this ruby script
|
|
244
|
+
def local_icon_file(icon_name)
|
|
245
|
+
File.join( File.dirname(__FILE__), icon_name)
|
|
246
|
+
end
|
|
244
247
|
end
|
|
245
|
-
end
|
|
246
248
|
|
|
247
|
-
# Wx::App is the container class for any wxruby app - only a single
|
|
248
|
-
# instance is required
|
|
249
|
-
class HtmlApp < Wx::App
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
249
|
+
# Wx::App is the container class for any wxruby app - only a single
|
|
250
|
+
# instance is required
|
|
251
|
+
class HtmlApp < Wx::App
|
|
252
|
+
def on_init
|
|
253
|
+
Wx::HTML::HtmlWindow.add_filter(MyHtmlFilter.new)
|
|
254
|
+
|
|
255
|
+
set_vendor_name("wxRuby")
|
|
256
|
+
set_app_name("Wx::HtmlTest")
|
|
257
|
+
|
|
258
|
+
frame = HtmlFrame.new("Wx::HtmlWindow testing application",
|
|
259
|
+
Wx::Point.new(50, 50),
|
|
260
|
+
Wx::Size.new(450, 340))
|
|
261
|
+
set_app_name('HtmlDemo')
|
|
262
|
+
# required
|
|
263
|
+
frame.show
|
|
264
|
+
end
|
|
262
265
|
end
|
|
266
|
+
|
|
263
267
|
end
|
|
264
268
|
|
|
265
269
|
module HTMLSample
|
|
@@ -277,7 +281,7 @@ module HTMLSample
|
|
|
277
281
|
end
|
|
278
282
|
|
|
279
283
|
if $0 == __FILE__
|
|
280
|
-
HtmlApp.run
|
|
284
|
+
Html::HtmlApp.run
|
|
281
285
|
end
|
|
282
286
|
|
|
283
287
|
end
|
data/samples/mdi/mdi.rb
CHANGED
|
@@ -26,62 +26,67 @@ require 'wx'
|
|
|
26
26
|
# development. Alternative interface strategies include using separate
|
|
27
27
|
# frames, or the AUI classes.
|
|
28
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
|
-
menuMDI.append(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
29
|
+
module MDI
|
|
30
|
+
|
|
31
|
+
class MDIFrame < Wx::MDIParentFrame
|
|
32
|
+
def initialize(title)
|
|
33
|
+
super(nil, :title => title, :size => [ 500, 400 ] )
|
|
34
|
+
|
|
35
|
+
self.icon = Wx.Icon(:sample, Wx::BITMAP_TYPE_XPM, art_path: File.join(__dir__, '..'))
|
|
36
|
+
|
|
37
|
+
@child_number = 0
|
|
38
|
+
|
|
39
|
+
menuFile = Wx::Menu.new
|
|
40
|
+
menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X")
|
|
41
|
+
evt_menu(Wx::ID_EXIT) { self.close }
|
|
42
|
+
|
|
43
|
+
menuMDI = Wx::Menu.new
|
|
44
|
+
menuMDI.append(Wx::ID_FORWARD, "&Next Child\tCtrl-F6")
|
|
45
|
+
evt_menu(Wx::ID_FORWARD) { self.activate_next }
|
|
46
|
+
menuMDI.append(Wx::ID_BACKWARD, "&Previous Child")
|
|
47
|
+
evt_menu(Wx::ID_BACKWARD) { self.activate_previous }
|
|
48
|
+
menuMDI.append_separator
|
|
49
|
+
|
|
50
|
+
mi_cascade = menuMDI.append("&Cascade")
|
|
51
|
+
evt_menu(mi_cascade) { self.cascade }
|
|
52
|
+
mi_tile = menuMDI.append("&Tile")
|
|
53
|
+
evt_menu(mi_tile) { self.tile }
|
|
54
|
+
menuMDI.append_separator
|
|
55
|
+
|
|
56
|
+
menuMDI.append(Wx::ID_NEW, "&Add Child")
|
|
57
|
+
evt_menu Wx::ID_NEW, :create_child
|
|
58
|
+
menuMDI.append(Wx::ID_CLOSE, "&Remove Child\tCtrl-F4")
|
|
59
|
+
evt_menu Wx::ID_CLOSE, :on_close_child
|
|
60
|
+
|
|
61
|
+
menuBar = Wx::MenuBar.new
|
|
62
|
+
menuBar.append(menuFile, "&File")
|
|
63
|
+
menuBar.append(menuMDI, "&Window")
|
|
64
|
+
|
|
65
|
+
self.menu_bar = menuBar
|
|
66
|
+
|
|
67
|
+
create_status_bar(2).set_status_widths([100, -1])
|
|
68
|
+
set_status_text("Some features only work on MS Windows", 1)
|
|
69
|
+
|
|
70
|
+
3.times { create_child }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def on_close_child
|
|
74
|
+
if active_child
|
|
75
|
+
active_child.close
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def create_child
|
|
80
|
+
@child_number += 1
|
|
81
|
+
name = "Child #{@child_number.to_s}"
|
|
82
|
+
child = Wx::MDIChildFrame.new(self, :title => name)
|
|
83
|
+
# Note that this is required on OS X; if no child frames are shown,
|
|
84
|
+
# then nothing is shown at all.
|
|
85
|
+
child.show
|
|
72
86
|
end
|
|
73
87
|
end
|
|
74
|
-
|
|
75
|
-
def create_child
|
|
76
|
-
@child_number += 1
|
|
77
|
-
name = "Child #{@child_number.to_s}"
|
|
78
|
-
child = Wx::MDIChildFrame.new(self, :title => name)
|
|
79
|
-
# Note that this is required on OS X; if no child frames are shown,
|
|
80
|
-
# then nothing is shown at all.
|
|
81
|
-
child.show
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
88
|
|
|
89
|
+
end
|
|
85
90
|
|
|
86
91
|
module MDISample
|
|
87
92
|
|
|
@@ -111,7 +116,7 @@ module MDISample
|
|
|
111
116
|
end
|
|
112
117
|
|
|
113
118
|
def self.activate
|
|
114
|
-
frame = MDIFrame.new("MDI Application")
|
|
119
|
+
frame = MDI::MDIFrame.new("MDI Application")
|
|
115
120
|
frame.show # may return false on OS X
|
|
116
121
|
frame
|
|
117
122
|
end
|