wxruby 1.9.3-i386-mswin32 → 1.9.4-i386-mswin32

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.
Files changed (126) hide show
  1. data/LICENSE +53 -53
  2. data/README +299 -299
  3. data/lib/wx/classes/evthandler.rb +9 -0
  4. data/lib/wx/classes/timer.rb +25 -0
  5. data/lib/wx/version.rb +1 -1
  6. data/lib/wx.rb +42 -42
  7. data/lib/wxruby2.exp +0 -0
  8. data/lib/wxruby2.lib +0 -0
  9. data/lib/wxruby2.so +0 -0
  10. data/samples/SAMPLES-LICENSE.TXT +17 -17
  11. data/samples/bigdemo/About.rbw +39 -39
  12. data/samples/bigdemo/ColorPanel.rbw +25 -25
  13. data/samples/bigdemo/GridSimple.rbw +80 -80
  14. data/samples/bigdemo/MDIDemo.rbw +59 -59
  15. data/samples/bigdemo/PopupMenu.rbw +151 -151
  16. data/samples/bigdemo/Sizers.rbw +545 -545
  17. data/samples/bigdemo/bigdemo.rb +826 -826
  18. data/samples/bigdemo/demoTemplate.rbw +37 -37
  19. data/samples/bigdemo/icons/choice.xpm +27 -27
  20. data/samples/bigdemo/icons/combo.xpm +27 -27
  21. data/samples/bigdemo/icons/copy.xpm +25 -25
  22. data/samples/bigdemo/icons/cut.xpm +24 -24
  23. data/samples/bigdemo/icons/gauge.xpm +27 -27
  24. data/samples/bigdemo/icons/help.xpm +25 -25
  25. data/samples/bigdemo/icons/list.xpm +27 -27
  26. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  27. data/samples/bigdemo/icons/new.xpm +24 -24
  28. data/samples/bigdemo/icons/ogl.ico +0 -0
  29. data/samples/bigdemo/icons/ogl.xpm +45 -45
  30. data/samples/bigdemo/icons/open.xpm +26 -26
  31. data/samples/bigdemo/icons/paste.xpm +38 -38
  32. data/samples/bigdemo/icons/preview.xpm +26 -26
  33. data/samples/bigdemo/icons/print.xpm +26 -26
  34. data/samples/bigdemo/icons/radio.xpm +27 -27
  35. data/samples/bigdemo/icons/robert.xpm +415 -415
  36. data/samples/bigdemo/icons/save.xpm +25 -25
  37. data/samples/bigdemo/icons/smiles.xpm +39 -39
  38. data/samples/bigdemo/icons/smiley.xpm +42 -42
  39. data/samples/bigdemo/icons/stattext.xpm +24 -24
  40. data/samples/bigdemo/icons/test2.bmp +0 -0
  41. data/samples/bigdemo/icons/test2.xpm +79 -79
  42. data/samples/bigdemo/icons/text.xpm +27 -27
  43. data/samples/bigdemo/icons/tog1.xpm +38 -38
  44. data/samples/bigdemo/icons/tog2.xpm +38 -38
  45. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  46. data/samples/bigdemo/tips.txt +7 -7
  47. data/samples/bigdemo/utils.rb +11 -11
  48. data/samples/bigdemo/wxButton.rbw +66 -66
  49. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  50. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  51. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  52. data/samples/bigdemo/wxChoice.rbw +49 -49
  53. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  54. data/samples/bigdemo/wxComboBox.rbw +79 -79
  55. data/samples/bigdemo/wxDialog.rbw +92 -92
  56. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  57. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  58. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  59. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  60. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  61. data/samples/bigdemo/wxFrame.rbw +55 -55
  62. data/samples/bigdemo/wxGauge.rbw +73 -73
  63. data/samples/bigdemo/wxGrid.rbw +68 -68
  64. data/samples/bigdemo/wxListBox.rbw +142 -142
  65. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  66. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  67. data/samples/bigdemo/wxMenu.rbw +238 -238
  68. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  69. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  70. data/samples/bigdemo/wxNotebook.rbw +138 -138
  71. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  72. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  73. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  74. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  75. data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
  76. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  77. data/samples/bigdemo/wxSlider.rbw +44 -44
  78. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  79. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  80. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  81. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  82. data/samples/bigdemo/wxStaticText.rbw +57 -57
  83. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  84. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  85. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  86. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  87. data/samples/bigdemo/wxToolBar.rbw +133 -133
  88. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  89. data/samples/calendar/calendar.rb +275 -275
  90. data/samples/caret/caret.rb +286 -286
  91. data/samples/caret/mondrian.xpm +44 -44
  92. data/samples/controls/controls.rb +1140 -1140
  93. data/samples/controls/get_item_sample.rb +87 -87
  94. data/samples/controls/icons/choice.xpm +27 -27
  95. data/samples/controls/icons/combo.xpm +27 -27
  96. data/samples/controls/icons/gauge.xpm +27 -27
  97. data/samples/controls/icons/list.xpm +27 -27
  98. data/samples/controls/icons/radio.xpm +27 -27
  99. data/samples/controls/icons/stattext.xpm +24 -24
  100. data/samples/controls/icons/text.xpm +27 -27
  101. data/samples/controls/mondrian.xpm +44 -44
  102. data/samples/dialogs/dialogs.rb +724 -724
  103. data/samples/dialogs/tips.txt +18 -18
  104. data/samples/drawing/graphics_drawing.rb +22 -18
  105. data/samples/drawing/images.rb +48 -48
  106. data/samples/etc/activation.rb +108 -108
  107. data/samples/etc/choice.rb +72 -72
  108. data/samples/etc/miniframe.rb +84 -84
  109. data/samples/etc/sash.rb +135 -135
  110. data/samples/etc/scrollwin.rb +116 -116
  111. data/samples/etc/system_settings.rb +258 -258
  112. data/samples/etc/threaded.rb +5 -8
  113. data/samples/etc/wizard.rb +79 -79
  114. data/samples/html/html.rb +14 -10
  115. data/samples/listbook/listbook.rb +181 -181
  116. data/samples/listbook/listbook.xrc +370 -370
  117. data/samples/mdi/mdi.rb +87 -87
  118. data/samples/minimal/minimal.rb +85 -85
  119. data/samples/minimal/nothing.rb +21 -21
  120. data/samples/text/textctrl.rb +124 -124
  121. data/samples/text/unicode.rb +238 -238
  122. data/samples/text/utf8.txt +14 -14
  123. data/samples/treectrl/treectrl.rb +1180 -1180
  124. data/samples/xrc/samples.xrc +46 -46
  125. data/samples/xrc/xrc_sample.rb +107 -107
  126. metadata +3 -3
@@ -1,238 +1,238 @@
1
- # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
2
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
3
-
4
- # Tell ruby this script is written in UTF-8 encoded text.
5
- $KCODE = 'u'
6
-
7
- # Library to get character lengths (as opposed to byte lengths) from
8
- # Ruby strings.
9
- require 'jcode'
10
-
11
- require 'wx'
12
-
13
- $utf8_file = File.join( File.dirname(__FILE__), 'utf8.txt')
14
-
15
- class UnicodeDemoTextCtrl < Wx::TextCtrl
16
- NEWLINE_CORRECTION_FACTOR = 0
17
-
18
- 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.
19
-
20
- " << File.read( $utf8_file )
21
-
22
- def initialize(parent, text = DEFAULT_TEXT)
23
- super(parent, -1, text,
24
- Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_MULTILINE)
25
- end
26
-
27
- # run through a few useful methods of textctrl and report the results
28
- # as a string
29
- def report()
30
- report = ''
31
- sel = get_string_selection()
32
- report << 'Selected string byte length: ' << sel.length.to_s << "\n"
33
- report << 'Selected string character length: ' << sel.jlength.to_s << "\n"
34
- report << 'Selected string:: ' << sel.inspect << "\n"
35
- return report
36
- end
37
- end
38
-
39
- # A read-only text ctrl useful for displaying output
40
- class LogTextCtrl < Wx::TextCtrl
41
- STYLE = Wx::TE_READONLY|Wx::TE_MULTILINE
42
- def initialize(parent)
43
- super(parent, -1, '', Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, STYLE)
44
- end
45
- end
46
-
47
- class IConvFrame < Wx::Frame
48
- # Ruby stdlib for converting strings between encodings
49
- begin
50
- require 'iconv'
51
- ICONV_LOADED = 1
52
- rescue LoadError
53
- end
54
-
55
- # The encodings we're going to make importable and exportable in this
56
- # application - see construct_import_export_menus below
57
- ENCODINGS = { 'US ASCII' => 'ASCII',
58
- 'UTF-8' => 'UTF-8',
59
- 'UTF-16' => 'UTF-16',
60
- 'Windows Latin CP1252' => 'CP1252',
61
- 'Latin ISO-8859-1' => 'ISO-8859-1',
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::ADJUST_MINSIZE|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::ADJUST_MINSIZE|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::ADJUST_MINSIZE|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)
99
- end
100
- choice.set_selection(0)
101
- ctrl_sizer.add(choice, 0, Wx::ADJUST_MINSIZE|Wx::ALL, 2)
102
-
103
- sizer.add(ctrl_sizer, 0, Wx::ADJUST_MINSIZE|Wx::ALL, 2)
104
- construct_menus()
105
- panel.set_sizer_and_fit( sizer )
106
- end
107
-
108
- # Prompt the user to specify a file whose contents should be loaded
109
- # into the text ctrl. The file should be encoded in +encoding+
110
- def on_import_file(encoding)
111
- fd = Wx::FileDialog.new( nil, 'Import file', "", "",
112
- "*.*", Wx::OPEN|Wx::FILE_MUST_EXIST )
113
- return unless fd.show_modal() == Wx::ID_OK
114
- File.open( fd.get_path ) do | file |
115
- import_file( file, encoding )
116
- end
117
- rescue Iconv::IllegalSequence
118
- message = "The file %s does not seem to be in %s encoding " %
119
- [ fd.get_filename, encoding ]
120
- Wx::MessageDialog.new(self, message, 'Wrong encoding',
121
- Wx::OK|Wx::ICON_EXCLAMATION).show_modal()
122
- end
123
-
124
- # Read +io+, which should be text file encoding in +source_encoding+,
125
- # and display the contents in the textctrl.
126
- def import_file(io, source_encoding = 'UTF-8')
127
- case source_encoding
128
- when /UTF-?8/
129
- @textctrl.set_value( io.read() )
130
- else
131
- output = ''
132
- Iconv.open('UTF-8', source_encoding) do | converter |
133
- output << converter.iconv( io.read() )
134
- output << converter.iconv(nil)
135
- end
136
- @textctrl.set_value( output )
137
- end
138
- end
139
-
140
- # Ask the user for a file path, and then export the content of the
141
- # textctrl to it in the encoding +encoding+
142
- def on_export_file(encoding)
143
- fd = Wx::FileDialog.new( nil, 'Export file', "", "",
144
- "*.*", Wx::SAVE|Wx::OVERWRITE_PROMPT )
145
- return unless fd.show_modal() == Wx::ID_OK
146
- File.open( fd.get_path, 'w' ) do | file |
147
- export_file( file, encoding )
148
- end
149
- rescue Iconv::IllegalSequence
150
- message = "The text content containts characters that " <<
151
- "cannot be encoded using %s" % encoding
152
- Wx::MessageDialog.new(self, message, 'Invalid encoding',
153
- Wx::OK|Wx::ICON_EXCLAMATION).show_modal()
154
- end
155
-
156
- # Write the content of the textctrl to the file or io +io+, encoding
157
- # the text in encoding +target_encoding+
158
- def export_file(io, target_encoding = 'utf-8')
159
- case target_encoding
160
- when /UTF-?8/
161
- io.write( @textctrl.get_value )
162
- else
163
- Iconv.open(target_encoding, 'UTF-8') do | converter |
164
- io << converter.iconv( @textctrl.get_value )
165
- io << converter.iconv(nil)
166
- end
167
- end
168
- end
169
-
170
- def construct_menus()
171
- menu_bar = Wx::MenuBar.new()
172
-
173
- menu_file = Wx::Menu.new()
174
- menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
175
- evt_menu(Wx::ID_EXIT) { on_quit() }
176
- menu_bar.append(menu_file, "&File")
177
- if self.class.const_defined?(:ICONV_LOADED)
178
- construct_import_export_menus(menu_bar)
179
- end
180
-
181
- menu_help = Wx::Menu.new()
182
- menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
183
- evt_menu(Wx::ID_ABOUT) { on_about() }
184
- menu_bar.append(menu_help, "&Help")
185
-
186
- set_menu_bar(menu_bar)
187
- end
188
-
189
- def construct_import_export_menus(menu_bar)
190
- id_counter = 0
191
- menu_import = Wx::Menu.new()
192
-
193
- ENCODINGS.each do | desc, enc |
194
- id_counter += 1
195
- menu_import.append(id_counter, "Import (#{desc})",
196
- "Import a file in #{desc} encoding")
197
-
198
- evt_menu(id_counter) { on_import_file(enc) }
199
- end
200
- menu_bar.append(menu_import, '&Import')
201
-
202
- menu_export = Wx::Menu.new()
203
- ENCODINGS.each do | desc, enc |
204
- id_counter += 1
205
- menu_export.append(id_counter, "Export (#{desc})",
206
- "Export a file in #{desc} encoding")
207
-
208
- evt_menu(id_counter) { on_export_file(enc) }
209
- end
210
- menu_bar.append(menu_export, '&Export')
211
- end
212
-
213
- def on_click(e)
214
- @log.set_value( @textctrl.report() )
215
- end
216
-
217
- def on_quit()
218
- close(TRUE)
219
- end
220
-
221
- def on_about()
222
- msg = sprintf("This is the About dialog of the Unicode sample.\n" \
223
- "Welcome to %s", Wx::VERSION_STRING)
224
- Wx::message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
225
- end
226
- end
227
-
228
- class IConvApp < Wx::App
229
- def on_init()
230
- frame = IConvFrame.new("Unicode demonstration - ",
231
- Wx::Point.new(50, 50),
232
- Wx::Size.new(450, 450) )
233
-
234
- frame.show(true)
235
- end
236
- end
237
-
238
- IConvApp.new().main_loop()
1
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
2
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
3
+
4
+ # Tell ruby this script is written in UTF-8 encoded text.
5
+ $KCODE = 'u'
6
+
7
+ # Library to get character lengths (as opposed to byte lengths) from
8
+ # Ruby strings.
9
+ require 'jcode'
10
+
11
+ require 'wx'
12
+
13
+ $utf8_file = File.join( File.dirname(__FILE__), 'utf8.txt')
14
+
15
+ class UnicodeDemoTextCtrl < Wx::TextCtrl
16
+ NEWLINE_CORRECTION_FACTOR = 0
17
+
18
+ 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.
19
+
20
+ " << File.read( $utf8_file )
21
+
22
+ def initialize(parent, text = DEFAULT_TEXT)
23
+ super(parent, -1, text,
24
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_MULTILINE)
25
+ end
26
+
27
+ # run through a few useful methods of textctrl and report the results
28
+ # as a string
29
+ def report()
30
+ report = ''
31
+ sel = get_string_selection()
32
+ report << 'Selected string byte length: ' << sel.length.to_s << "\n"
33
+ report << 'Selected string character length: ' << sel.jlength.to_s << "\n"
34
+ report << 'Selected string:: ' << sel.inspect << "\n"
35
+ return report
36
+ end
37
+ end
38
+
39
+ # A read-only text ctrl useful for displaying output
40
+ class LogTextCtrl < Wx::TextCtrl
41
+ STYLE = Wx::TE_READONLY|Wx::TE_MULTILINE
42
+ def initialize(parent)
43
+ super(parent, -1, '', Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, STYLE)
44
+ end
45
+ end
46
+
47
+ class IConvFrame < Wx::Frame
48
+ # Ruby stdlib for converting strings between encodings
49
+ begin
50
+ require 'iconv'
51
+ ICONV_LOADED = 1
52
+ rescue LoadError
53
+ end
54
+
55
+ # The encodings we're going to make importable and exportable in this
56
+ # application - see construct_import_export_menus below
57
+ ENCODINGS = { 'US ASCII' => 'ASCII',
58
+ 'UTF-8' => 'UTF-8',
59
+ 'UTF-16' => 'UTF-16',
60
+ 'Windows Latin CP1252' => 'CP1252',
61
+ 'Latin ISO-8859-1' => 'ISO-8859-1',
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::ADJUST_MINSIZE|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::ADJUST_MINSIZE|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::ADJUST_MINSIZE|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)
99
+ end
100
+ choice.set_selection(0)
101
+ ctrl_sizer.add(choice, 0, Wx::ADJUST_MINSIZE|Wx::ALL, 2)
102
+
103
+ sizer.add(ctrl_sizer, 0, Wx::ADJUST_MINSIZE|Wx::ALL, 2)
104
+ construct_menus()
105
+ panel.set_sizer_and_fit( sizer )
106
+ end
107
+
108
+ # Prompt the user to specify a file whose contents should be loaded
109
+ # into the text ctrl. The file should be encoded in +encoding+
110
+ def on_import_file(encoding)
111
+ fd = Wx::FileDialog.new( nil, 'Import file', "", "",
112
+ "*.*", Wx::OPEN|Wx::FILE_MUST_EXIST )
113
+ return unless fd.show_modal() == Wx::ID_OK
114
+ File.open( fd.get_path ) do | file |
115
+ import_file( file, encoding )
116
+ end
117
+ rescue Iconv::IllegalSequence
118
+ message = "The file %s does not seem to be in %s encoding " %
119
+ [ fd.get_filename, encoding ]
120
+ Wx::MessageDialog.new(self, message, 'Wrong encoding',
121
+ Wx::OK|Wx::ICON_EXCLAMATION).show_modal()
122
+ end
123
+
124
+ # Read +io+, which should be text file encoding in +source_encoding+,
125
+ # and display the contents in the textctrl.
126
+ def import_file(io, source_encoding = 'UTF-8')
127
+ case source_encoding
128
+ when /UTF-?8/
129
+ @textctrl.set_value( io.read() )
130
+ else
131
+ output = ''
132
+ Iconv.open('UTF-8', source_encoding) do | converter |
133
+ output << converter.iconv( io.read() )
134
+ output << converter.iconv(nil)
135
+ end
136
+ @textctrl.set_value( output )
137
+ end
138
+ end
139
+
140
+ # Ask the user for a file path, and then export the content of the
141
+ # textctrl to it in the encoding +encoding+
142
+ def on_export_file(encoding)
143
+ fd = Wx::FileDialog.new( nil, 'Export file', "", "",
144
+ "*.*", Wx::SAVE|Wx::OVERWRITE_PROMPT )
145
+ return unless fd.show_modal() == Wx::ID_OK
146
+ File.open( fd.get_path, 'w' ) do | file |
147
+ export_file( file, encoding )
148
+ end
149
+ rescue Iconv::IllegalSequence
150
+ message = "The text content containts characters that " <<
151
+ "cannot be encoded using %s" % encoding
152
+ Wx::MessageDialog.new(self, message, 'Invalid encoding',
153
+ Wx::OK|Wx::ICON_EXCLAMATION).show_modal()
154
+ end
155
+
156
+ # Write the content of the textctrl to the file or io +io+, encoding
157
+ # the text in encoding +target_encoding+
158
+ def export_file(io, target_encoding = 'utf-8')
159
+ case target_encoding
160
+ when /UTF-?8/
161
+ io.write( @textctrl.get_value )
162
+ else
163
+ Iconv.open(target_encoding, 'UTF-8') do | converter |
164
+ io << converter.iconv( @textctrl.get_value )
165
+ io << converter.iconv(nil)
166
+ end
167
+ end
168
+ end
169
+
170
+ def construct_menus()
171
+ menu_bar = Wx::MenuBar.new()
172
+
173
+ menu_file = Wx::Menu.new()
174
+ menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
175
+ evt_menu(Wx::ID_EXIT) { on_quit() }
176
+ menu_bar.append(menu_file, "&File")
177
+ if self.class.const_defined?(:ICONV_LOADED)
178
+ construct_import_export_menus(menu_bar)
179
+ end
180
+
181
+ menu_help = Wx::Menu.new()
182
+ menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
183
+ evt_menu(Wx::ID_ABOUT) { on_about() }
184
+ menu_bar.append(menu_help, "&Help")
185
+
186
+ set_menu_bar(menu_bar)
187
+ end
188
+
189
+ def construct_import_export_menus(menu_bar)
190
+ id_counter = 0
191
+ menu_import = Wx::Menu.new()
192
+
193
+ ENCODINGS.each do | desc, enc |
194
+ id_counter += 1
195
+ menu_import.append(id_counter, "Import (#{desc})",
196
+ "Import a file in #{desc} encoding")
197
+
198
+ evt_menu(id_counter) { on_import_file(enc) }
199
+ end
200
+ menu_bar.append(menu_import, '&Import')
201
+
202
+ menu_export = Wx::Menu.new()
203
+ ENCODINGS.each do | desc, enc |
204
+ id_counter += 1
205
+ menu_export.append(id_counter, "Export (#{desc})",
206
+ "Export a file in #{desc} encoding")
207
+
208
+ evt_menu(id_counter) { on_export_file(enc) }
209
+ end
210
+ menu_bar.append(menu_export, '&Export')
211
+ end
212
+
213
+ def on_click(e)
214
+ @log.set_value( @textctrl.report() )
215
+ end
216
+
217
+ def on_quit()
218
+ close(TRUE)
219
+ end
220
+
221
+ def on_about()
222
+ msg = sprintf("This is the About dialog of the Unicode sample.\n" \
223
+ "Welcome to %s", Wx::VERSION_STRING)
224
+ Wx::message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
225
+ end
226
+ end
227
+
228
+ class IConvApp < Wx::App
229
+ def on_init()
230
+ frame = IConvFrame.new("Unicode demonstration - ",
231
+ Wx::Point.new(50, 50),
232
+ Wx::Size.new(450, 450) )
233
+
234
+ frame.show(true)
235
+ end
236
+ end
237
+
238
+ IConvApp.new().main_loop()
@@ -1,15 +1,15 @@
1
- Western European: ÀÉÎè
2
-
3
- Chinese (Simplified): 丁万不㐀㐁丣並
4
-
5
- Extended Latin: ĀčŁœ
6
-
7
- Japanese Hiragana: あきぐけ゚
8
-
9
- Arabic: ؟تص
10
-
11
- Cyrillic: ЀЋЖ
12
-
13
- Greek: Άαξ
14
-
1
+ Western European: ÀÉÎè
2
+
3
+ Chinese (Simplified): 丁万不㐀㐁丣並
4
+
5
+ Extended Latin: ĀčŁœ
6
+
7
+ Japanese Hiragana: あきぐけ゚
8
+
9
+ Arabic: ؟تص
10
+
11
+ Cyrillic: ЀЋЖ
12
+
13
+ Greek: Άαξ
14
+
15
15
  Korean: 了丫乖