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/text/unicode.rb
CHANGED
@@ -18,203 +18,210 @@ require 'wx'
|
|
18
18
|
|
19
19
|
$utf8_file = File.join( File.dirname(__FILE__), 'utf8.txt')
|
20
20
|
|
21
|
-
|
22
|
-
NEWLINE_CORRECTION_FACTOR = 0
|
23
|
-
|
24
|
-
DEFAULT_TEXT = "If you have a unicode version of wxruby, you should be able to see a range of characters from different languages displayed, and be able to type multilingual strings in the text area. Note that some scripts may only be displayed if you are using a suitable font; otherwise characters will appear as blank boxes.
|
21
|
+
module Unicode
|
25
22
|
|
26
|
-
|
23
|
+
class UnicodeDemoTextCtrl < Wx::TextCtrl
|
24
|
+
NEWLINE_CORRECTION_FACTOR = 0
|
27
25
|
|
28
|
-
|
29
|
-
super(parent, -1, text,
|
30
|
-
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_MULTILINE)
|
31
|
-
end
|
26
|
+
DEFAULT_TEXT = "If you have a unicode version of wxruby, you should be able to see a range of characters from different languages displayed, and be able to type multilingual strings in the text area. Note that some scripts may only be displayed if you are using a suitable font; otherwise characters will appear as blank boxes.
|
32
27
|
|
33
|
-
|
34
|
-
# as a string
|
35
|
-
def report
|
36
|
-
report = ''
|
37
|
-
sel = get_string_selection
|
38
|
-
report << 'Selected string byte length: ' << sel.bytesize.to_s << "\n"
|
39
|
-
report << 'Selected string character length: ' << sel.size.to_s << "\n"
|
40
|
-
report << 'Selected string:: ' << sel.inspect << "\n"
|
41
|
-
return report
|
42
|
-
end
|
43
|
-
end
|
28
|
+
" << File.read( $utf8_file )
|
44
29
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
super(parent, -1, '', Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, STYLE)
|
50
|
-
end
|
51
|
-
end
|
30
|
+
def initialize(parent, text = DEFAULT_TEXT)
|
31
|
+
super(parent, -1, text,
|
32
|
+
Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_MULTILINE)
|
33
|
+
end
|
52
34
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
'Japanese SHIFT-JIS' => 'SHIFT-JIS' }
|
63
|
-
|
64
|
-
def initialize(title, pos, size)
|
65
|
-
super(nil, -1, title, pos, size)
|
66
|
-
panel = Wx::Panel.new(self)
|
67
|
-
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
68
|
-
|
69
|
-
sys_lang = Wx::Locale.get_system_language_name
|
70
|
-
text = Wx::StaticText.new(panel, -1, "System language: #{sys_lang}")
|
71
|
-
sizer.add(text, 0, Wx::ALL, 5)
|
72
|
-
|
73
|
-
sys_enc = Wx::Locale.get_system_encoding_name
|
74
|
-
text = Wx::StaticText.new(panel, -1, "System default encoding: #{sys_enc}")
|
75
|
-
sizer.add(text, 0, Wx::ALL, 5)
|
76
|
-
|
77
|
-
# The text input and display
|
78
|
-
@textctrl = UnicodeDemoTextCtrl.new(panel)
|
79
|
-
sizer.add(@textctrl, 3, Wx::GROW|Wx::ALL, 2)
|
80
|
-
|
81
|
-
# The button to show what's selected
|
82
|
-
button = Wx::Button.new(panel, -1, 'Describe text selection')
|
83
|
-
sizer.add(button, 0, Wx::ALL, 2 )
|
84
|
-
evt_button(button.get_id) { | e | on_click(e) }
|
85
|
-
|
86
|
-
@log = LogTextCtrl.new(panel)
|
87
|
-
sizer.add(@log, 1, Wx::GROW|Wx::ALL, 2)
|
88
|
-
sizer.add( Wx::StaticText.new(panel, -1, 'Some controls with unicode'),
|
89
|
-
0, Wx::ALL, 2 )
|
90
|
-
ctrl_sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
91
|
-
|
92
|
-
test_button = Wx::Button.new(panel, -1, '万')
|
93
|
-
ctrl_sizer.add(test_button, 0, Wx::ALL, 2)
|
94
|
-
choice = Wx::Choice.new(panel, -1, Wx::DEFAULT_POSITION,
|
95
|
-
Wx::DEFAULT_SIZE, [])
|
96
|
-
File.readlines($utf8_file).each do | line |
|
97
|
-
next if line.chomp.empty?
|
98
|
-
choice.append(line.chomp)
|
35
|
+
# run through a few useful methods of textctrl and report the results
|
36
|
+
# as a string
|
37
|
+
def report
|
38
|
+
report = ''
|
39
|
+
sel = get_string_selection
|
40
|
+
report << 'Selected string byte length: ' << sel.bytesize.to_s << "\n"
|
41
|
+
report << 'Selected string character length: ' << sel.size.to_s << "\n"
|
42
|
+
report << 'Selected string:: ' << sel.inspect << "\n"
|
43
|
+
return report
|
99
44
|
end
|
100
|
-
|
101
|
-
ctrl_sizer.add(choice, 0, Wx::ALL, 2)
|
45
|
+
end
|
102
46
|
|
103
|
-
|
104
|
-
|
105
|
-
|
47
|
+
# A read-only text ctrl useful for displaying output
|
48
|
+
class LogTextCtrl < Wx::TextCtrl
|
49
|
+
STYLE = Wx::TE_READONLY|Wx::TE_MULTILINE
|
50
|
+
def initialize(parent)
|
51
|
+
super(parent, -1, '', Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, STYLE)
|
52
|
+
end
|
106
53
|
end
|
107
54
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
55
|
+
class IConvFrame < Wx::Frame
|
56
|
+
|
57
|
+
# The encodings we're going to make importable and exportable in this
|
58
|
+
# application - see construct_import_export_menus below
|
59
|
+
ENCODINGS = { 'US ASCII' => 'ASCII',
|
60
|
+
'UTF-8' => 'UTF-8',
|
61
|
+
'UTF-16' => 'UTF-16',
|
62
|
+
'Windows Latin CP1252' => 'CP1252',
|
63
|
+
'Latin ISO-8859-1' => 'ISO-8859-1',
|
64
|
+
'Japanese SHIFT-JIS' => 'SHIFT-JIS' }
|
65
|
+
|
66
|
+
def initialize(title, pos, size)
|
67
|
+
super(nil, -1, title, pos, size)
|
68
|
+
|
69
|
+
self.icon = Wx.Icon(:sample, Wx::BITMAP_TYPE_XPM, art_path: File.join(__dir__, '..'))
|
70
|
+
|
71
|
+
panel = Wx::Panel.new(self)
|
72
|
+
sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
73
|
+
|
74
|
+
sys_lang = Wx::Locale.get_system_language_name
|
75
|
+
text = Wx::StaticText.new(panel, -1, "System language: #{sys_lang}")
|
76
|
+
sizer.add(text, 0, Wx::ALL, 5)
|
77
|
+
|
78
|
+
sys_enc = Wx::Locale.get_system_encoding_name
|
79
|
+
text = Wx::StaticText.new(panel, -1, "System default encoding: #{sys_enc}")
|
80
|
+
sizer.add(text, 0, Wx::ALL, 5)
|
81
|
+
|
82
|
+
# The text input and display
|
83
|
+
@textctrl = UnicodeDemoTextCtrl.new(panel)
|
84
|
+
sizer.add(@textctrl, 3, Wx::GROW|Wx::ALL, 2)
|
85
|
+
|
86
|
+
# The button to show what's selected
|
87
|
+
button = Wx::Button.new(panel, -1, 'Describe text selection')
|
88
|
+
sizer.add(button, 0, Wx::ALL, 2 )
|
89
|
+
evt_button(button.get_id) { | e | on_click(e) }
|
90
|
+
|
91
|
+
@log = LogTextCtrl.new(panel)
|
92
|
+
sizer.add(@log, 1, Wx::GROW|Wx::ALL, 2)
|
93
|
+
sizer.add( Wx::StaticText.new(panel, -1, 'Some controls with unicode'),
|
94
|
+
0, Wx::ALL, 2 )
|
95
|
+
ctrl_sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
96
|
+
|
97
|
+
test_button = Wx::Button.new(panel, -1, '万')
|
98
|
+
ctrl_sizer.add(test_button, 0, Wx::ALL, 2)
|
99
|
+
choice = Wx::Choice.new(panel, -1, Wx::DEFAULT_POSITION,
|
100
|
+
Wx::DEFAULT_SIZE, [])
|
101
|
+
File.readlines($utf8_file).each do | line |
|
102
|
+
next if line.chomp.empty?
|
103
|
+
choice.append(line.chomp)
|
116
104
|
end
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
105
|
+
choice.set_selection(0)
|
106
|
+
ctrl_sizer.add(choice, 0, Wx::ALL, 2)
|
107
|
+
|
108
|
+
sizer.add(ctrl_sizer, 0, Wx::ALL, 2)
|
109
|
+
construct_menus
|
110
|
+
panel.set_sizer_and_fit( sizer )
|
122
111
|
end
|
123
|
-
end
|
124
112
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
113
|
+
# Prompt the user to specify a file whose contents should be loaded
|
114
|
+
# into the text ctrl. The file should be encoded in +encoding+
|
115
|
+
def on_import_file(encoding)
|
116
|
+
Wx::FileDialog(nil, 'Import file', "", "",
|
117
|
+
"*.*", Wx::FD_OPEN | Wx::FD_FILE_MUST_EXIST) do |fd|
|
118
|
+
return unless fd.show_modal == Wx::ID_OK
|
119
|
+
File.open(fd.get_path) do |file|
|
120
|
+
import_file(file, encoding)
|
121
|
+
end
|
122
|
+
rescue
|
123
|
+
message = "The file %s does not seem to be in %s encoding\n%s" %
|
124
|
+
[fd.get_filename, encoding, $!.to_s]
|
125
|
+
Wx::MessageDialog(self, message, 'Wrong encoding',
|
126
|
+
Wx::OK | Wx::ICON_EXCLAMATION)
|
127
|
+
end
|
133
128
|
end
|
134
|
-
end
|
135
129
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
130
|
+
# Read +io+, which should be text file encoding in +source_encoding+,
|
131
|
+
# and display the contents in the textctrl.
|
132
|
+
def import_file(io, source_encoding = 'UTF-8')
|
133
|
+
case source_encoding
|
134
|
+
when /UTF-?8/
|
135
|
+
@textctrl.set_value( io.read )
|
136
|
+
else
|
137
|
+
@textctrl.set_value(io.read.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?"))
|
144
138
|
end
|
145
|
-
rescue
|
146
|
-
message = "The text content containts characters that " <<
|
147
|
-
"cannot be encoded using %s.\n%s" % [encoding, $!.to_s]
|
148
|
-
Wx::MessageDialog(self, message, 'Invalid encoding',
|
149
|
-
Wx::OK | Wx::ICON_EXCLAMATION)
|
150
139
|
end
|
151
|
-
end
|
152
140
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
141
|
+
# Ask the user for a file path, and then export the content of the
|
142
|
+
# textctrl to it in the encoding +encoding+
|
143
|
+
def on_export_file(encoding)
|
144
|
+
Wx::FileDialog(nil, 'Export file', "", "",
|
145
|
+
"*.*", Wx::FD_SAVE | Wx::FD_OVERWRITE_PROMPT) do |fd|
|
146
|
+
return unless fd.show_modal == Wx::ID_OK
|
147
|
+
File.open(fd.get_path, 'w') do |file|
|
148
|
+
export_file(file, encoding)
|
149
|
+
end
|
150
|
+
rescue
|
151
|
+
message = "The text content containts characters that " <<
|
152
|
+
"cannot be encoded using %s.\n%s" % [encoding, $!.to_s]
|
153
|
+
Wx::MessageDialog(self, message, 'Invalid encoding',
|
154
|
+
Wx::OK | Wx::ICON_EXCLAMATION)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# Write the content of the textctrl to the file or io +io+, encoding
|
159
|
+
# the text in encoding +target_encoding+
|
160
|
+
def export_file(io, target_encoding = 'utf-8')
|
161
|
+
case target_encoding
|
162
|
+
when /UTF-?8/
|
163
|
+
io.write(@textctrl.get_value)
|
164
|
+
else
|
165
|
+
io.write(@textctrl.get_value.encode(target_encoding, :invalid => :replace, :undef => :replace, :replace => "?"))
|
166
|
+
end
|
161
167
|
end
|
162
|
-
end
|
163
168
|
|
164
|
-
|
165
|
-
|
169
|
+
def construct_menus
|
170
|
+
menu_bar = Wx::MenuBar.new
|
166
171
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
+
menu_file = Wx::Menu.new
|
173
|
+
menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
174
|
+
evt_menu(Wx::ID_EXIT) { on_quit }
|
175
|
+
menu_bar.append(menu_file, "&File")
|
176
|
+
construct_import_export_menus(menu_bar)
|
172
177
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
178
|
+
menu_help = Wx::Menu.new
|
179
|
+
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
180
|
+
evt_menu(Wx::ID_ABOUT) { on_about }
|
181
|
+
menu_bar.append(menu_help, "&Help")
|
177
182
|
|
178
|
-
|
179
|
-
|
183
|
+
set_menu_bar(menu_bar)
|
184
|
+
end
|
185
|
+
|
186
|
+
def construct_import_export_menus(menu_bar)
|
187
|
+
id_counter = 0
|
188
|
+
menu_import = Wx::Menu.new
|
180
189
|
|
181
|
-
|
182
|
-
|
183
|
-
|
190
|
+
ENCODINGS.each do | desc, enc |
|
191
|
+
id_counter += 1
|
192
|
+
menu_import.append(id_counter, "Import (#{desc})",
|
193
|
+
"Import a file in #{desc} encoding")
|
184
194
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
195
|
+
evt_menu(id_counter) { on_import_file(enc) }
|
196
|
+
end
|
197
|
+
menu_bar.append(menu_import, '&Import')
|
198
|
+
|
199
|
+
menu_export = Wx::Menu.new
|
200
|
+
ENCODINGS.each do | desc, enc |
|
201
|
+
id_counter += 1
|
202
|
+
menu_export.append(id_counter, "Export (#{desc})",
|
203
|
+
"Export a file in #{desc} encoding")
|
204
|
+
|
205
|
+
evt_menu(id_counter) { on_export_file(enc) }
|
206
|
+
end
|
207
|
+
menu_bar.append(menu_export, '&Export')
|
191
208
|
end
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
ENCODINGS.each do | desc, enc |
|
196
|
-
id_counter += 1
|
197
|
-
menu_export.append(id_counter, "Export (#{desc})",
|
198
|
-
"Export a file in #{desc} encoding")
|
199
|
-
|
200
|
-
evt_menu(id_counter) { on_export_file(enc) }
|
209
|
+
|
210
|
+
def on_click(e)
|
211
|
+
@log.set_value( @textctrl.report )
|
201
212
|
end
|
202
|
-
menu_bar.append(menu_export, '&Export')
|
203
|
-
end
|
204
213
|
|
205
|
-
|
206
|
-
|
207
|
-
|
214
|
+
def on_quit
|
215
|
+
close(true)
|
216
|
+
end
|
208
217
|
|
209
|
-
|
210
|
-
|
218
|
+
def on_about
|
219
|
+
msg = sprintf("This is the About dialog of the Unicode sample.\n" \
|
220
|
+
"Welcome to %s", Wx::WXWIDGETS_VERSION)
|
221
|
+
Wx::message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
|
222
|
+
end
|
211
223
|
end
|
212
224
|
|
213
|
-
def on_about
|
214
|
-
msg = sprintf("This is the About dialog of the Unicode sample.\n" \
|
215
|
-
"Welcome to %s", Wx::WXWIDGETS_VERSION)
|
216
|
-
Wx::message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
|
217
|
-
end
|
218
225
|
end
|
219
226
|
|
220
227
|
module UnicodeSample
|
@@ -228,7 +235,7 @@ module UnicodeSample
|
|
228
235
|
end
|
229
236
|
|
230
237
|
def self.activate
|
231
|
-
frame = IConvFrame.new("Unicode demonstration - ",
|
238
|
+
frame = Unicode::IConvFrame.new("Unicode demonstration - ",
|
232
239
|
Wx::Point.new(50, 50),
|
233
240
|
Wx::Size.new(450, 600) )
|
234
241
|
|