wxruby 1.9.0-i386-mswin32 → 1.9.1-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 (136) hide show
  1. data/lib/wx.rb +42 -35
  2. data/lib/wx/accessors.rb +52 -0
  3. data/lib/wx/classes/evthandler.rb +36 -32
  4. data/lib/wx/classes/grid.rb +13 -13
  5. data/lib/wx/classes/point.rb +43 -0
  6. data/lib/wx/classes/size.rb +44 -0
  7. data/lib/wx/classes/styledtextctrl.rb +92 -0
  8. data/lib/wx/classes/textctrl.rb +14 -0
  9. data/lib/wx/classes/window.rb +4 -0
  10. data/lib/wx/keyword_ctors.rb +219 -0
  11. data/lib/wx/keyword_defs.rb +455 -0
  12. data/lib/wx/version.rb +1 -1
  13. data/lib/wxruby2.exp +0 -0
  14. data/lib/wxruby2.lib +0 -0
  15. data/lib/wxruby2.so +0 -0
  16. data/samples/SAMPLES-LICENSE.TXT +17 -17
  17. data/samples/aui/aui.rb +6 -5
  18. data/samples/bigdemo/About.rbw +39 -39
  19. data/samples/bigdemo/ColorPanel.rbw +25 -25
  20. data/samples/bigdemo/GridSimple.rbw +80 -80
  21. data/samples/bigdemo/MDIDemo.rbw +59 -59
  22. data/samples/bigdemo/PopupMenu.rbw +151 -151
  23. data/samples/bigdemo/Sizers.rbw +545 -545
  24. data/samples/bigdemo/bigdemo.rb +826 -826
  25. data/samples/bigdemo/demoTemplate.rbw +37 -37
  26. data/samples/bigdemo/icons/choice.xpm +27 -27
  27. data/samples/bigdemo/icons/combo.xpm +27 -27
  28. data/samples/bigdemo/icons/copy.xpm +25 -25
  29. data/samples/bigdemo/icons/cut.xpm +24 -24
  30. data/samples/bigdemo/icons/gauge.xpm +27 -27
  31. data/samples/bigdemo/icons/help.xpm +25 -25
  32. data/samples/bigdemo/icons/list.xpm +27 -27
  33. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  34. data/samples/bigdemo/icons/new.xpm +24 -24
  35. data/samples/bigdemo/icons/ogl.ico +0 -0
  36. data/samples/bigdemo/icons/ogl.xpm +45 -45
  37. data/samples/bigdemo/icons/open.xpm +26 -26
  38. data/samples/bigdemo/icons/paste.xpm +38 -38
  39. data/samples/bigdemo/icons/preview.xpm +26 -26
  40. data/samples/bigdemo/icons/print.xpm +26 -26
  41. data/samples/bigdemo/icons/radio.xpm +27 -27
  42. data/samples/bigdemo/icons/robert.xpm +415 -415
  43. data/samples/bigdemo/icons/save.xpm +25 -25
  44. data/samples/bigdemo/icons/smiles.xpm +39 -39
  45. data/samples/bigdemo/icons/smiley.xpm +42 -42
  46. data/samples/bigdemo/icons/stattext.xpm +24 -24
  47. data/samples/bigdemo/icons/test2.bmp +0 -0
  48. data/samples/bigdemo/icons/test2.xpm +79 -79
  49. data/samples/bigdemo/icons/text.xpm +27 -27
  50. data/samples/bigdemo/icons/tog1.xpm +38 -38
  51. data/samples/bigdemo/icons/tog2.xpm +38 -38
  52. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  53. data/samples/bigdemo/tips.txt +7 -7
  54. data/samples/bigdemo/utils.rb +11 -11
  55. data/samples/bigdemo/wxButton.rbw +66 -66
  56. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  57. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  58. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  59. data/samples/bigdemo/wxChoice.rbw +49 -49
  60. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  61. data/samples/bigdemo/wxComboBox.rbw +79 -79
  62. data/samples/bigdemo/wxDialog.rbw +92 -92
  63. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  64. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  65. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  66. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  67. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  68. data/samples/bigdemo/wxFrame.rbw +55 -55
  69. data/samples/bigdemo/wxGauge.rbw +73 -73
  70. data/samples/bigdemo/wxGrid.rbw +68 -68
  71. data/samples/bigdemo/wxListBox.rbw +142 -142
  72. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  73. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  74. data/samples/bigdemo/wxMenu.rbw +238 -238
  75. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  76. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  77. data/samples/bigdemo/wxNotebook.rbw +138 -138
  78. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  79. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  80. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  81. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  82. data/samples/bigdemo/wxScrolledWindow.rbw +196 -196
  83. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  84. data/samples/bigdemo/wxSlider.rbw +44 -44
  85. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  86. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  87. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  88. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  89. data/samples/bigdemo/wxStaticText.rbw +57 -57
  90. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  91. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  92. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  93. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  94. data/samples/bigdemo/wxToolBar.rbw +133 -133
  95. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  96. data/samples/calendar/calendar.rb +275 -275
  97. data/samples/caret/caret.rb +296 -296
  98. data/samples/caret/mondrian.xpm +44 -44
  99. data/samples/controls/controls.rb +1140 -1140
  100. data/samples/controls/get_item_sample.rb +87 -87
  101. data/samples/controls/icons/choice.xpm +27 -27
  102. data/samples/controls/icons/combo.xpm +27 -27
  103. data/samples/controls/icons/gauge.xpm +27 -27
  104. data/samples/controls/icons/list.xpm +27 -27
  105. data/samples/controls/icons/radio.xpm +27 -27
  106. data/samples/controls/icons/stattext.xpm +24 -24
  107. data/samples/controls/icons/text.xpm +27 -27
  108. data/samples/controls/mondrian.xpm +44 -44
  109. data/samples/dialogs/dialogs.rb +724 -724
  110. data/samples/dialogs/tips.txt +18 -18
  111. data/samples/etc/activation.rb +108 -108
  112. data/samples/etc/choice.rb +72 -72
  113. data/samples/etc/miniframe.rb +84 -84
  114. data/samples/etc/sash.rb +135 -135
  115. data/samples/etc/scrollwin.rb +116 -116
  116. data/samples/etc/system_settings.rb +258 -258
  117. data/samples/etc/wizard.rb +81 -81
  118. data/samples/event/event.rb +184 -0
  119. data/samples/images/images.rb +48 -48
  120. data/samples/listbook/listbook.rb +183 -183
  121. data/samples/listbook/listbook.xrc +370 -370
  122. data/samples/mdi/mdi.rb +87 -87
  123. data/samples/minimal/minimal.rb +83 -95
  124. data/samples/minimal/mondrian.png +0 -0
  125. data/samples/minimal/nothing.rb +46 -46
  126. data/samples/minimal/text.rb +35 -35
  127. data/samples/text/scintilla.rb +22 -28
  128. data/samples/text/textctrl.rb +124 -124
  129. data/samples/text/unicode.rb +238 -238
  130. data/samples/text/utf8.txt +14 -14
  131. data/samples/treectrl/treectrl.rb +1210 -1210
  132. data/samples/xrc/samples.xrc +46 -46
  133. data/samples/xrc/xrc_sample.rb +107 -107
  134. metadata +13 -5
  135. data/samples/minimal/mondrian.ico +0 -0
  136. data/samples/minimal/mondrian.xpm +0 -44
@@ -1,296 +1,296 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
-
5
- begin
6
- require 'wx'
7
- rescue LoadError => no_wx_err
8
- begin
9
- require 'rubygems'
10
- require 'wx'
11
- rescue LoadError
12
- raise no_wx_err
13
- end
14
- end
15
- include Wx
16
-
17
- # menu items
18
- Caret_Quit = ID_EXIT
19
- Caret_About = ID_ABOUT
20
- Caret_set_blink_time = 3
21
- Caret_Move = 4
22
-
23
- # controls start here (the numbers are, of course, arbitrary)
24
- Caret_Text = 1000
25
-
26
-
27
- # MyCanvas is a canvas on which you can type
28
- class MyCanvas < ScrolledWindow
29
- def initialize(parent)
30
- super(parent, -1,
31
- DEFAULT_POSITION, DEFAULT_SIZE,
32
- SUNKEN_BORDER )
33
-
34
- set_background_colour(WHITE)
35
-
36
- @font = Font.new(12, FONTFAMILY_TELETYPE,
37
- FONTSTYLE_NORMAL, FONTWEIGHT_NORMAL)
38
-
39
- @x_caret = @y_caret =
40
- @x_chars = @y_chars = 0
41
-
42
- @x_margin = @y_margin = 5
43
- @text = nil
44
-
45
- create_caret
46
-
47
- evt_paint {on_paint}
48
- evt_size {|event| on_size(event)}
49
- evt_char {|event| on_char(event)}
50
- end
51
-
52
- def [](x,y)
53
- @text[x + @x_chars * y,1]
54
- end
55
-
56
- def []=(x,y,z)
57
- @text[x + @x_chars * y,1] = z
58
- end
59
-
60
- # caret movement
61
- def home_pos
62
- @x_caret = 0
63
- end
64
-
65
- def end_pos
66
- @x_caret = @x_chars - 1
67
- end
68
-
69
- def first_line
70
- @y_caret = 0
71
- end
72
-
73
- def last_line
74
- @y_caret = @y_chars - 1
75
- end
76
-
77
- def prev_char
78
- if @x_caret == 0
79
- end_pos
80
- prev_line
81
- else
82
- @x_caret -= 1
83
- end
84
- end
85
-
86
- def next_char
87
- @x_caret += 1
88
- if @x_caret == @x_chars
89
- home_pos
90
- next_line
91
- end
92
- end
93
-
94
- def prev_line
95
- if @y_caret == 0
96
- last_line
97
- else
98
- @y_caret -= 1
99
- end
100
- end
101
-
102
- def next_line
103
- @y_caret += 1
104
- if @y_caret == @y_chars
105
- first_line
106
- end
107
- end
108
-
109
- def create_caret
110
- paint do | dc |
111
- dc.set_font(@font)
112
- @height_char = dc.get_char_height
113
- @width_char = dc.get_char_width
114
-
115
- caret = Caret.new(self, Size.new(@width_char, @height_char))
116
- set_caret(caret)
117
-
118
- caret.move(Point.new(@x_margin, @y_margin))
119
- caret.show
120
- end
121
- end
122
-
123
- def move_caret(x,y)
124
- @x_caret = x
125
- @y_caret = y
126
-
127
- do_move_caret
128
- end
129
-
130
- def do_move_caret
131
- log_status("Caret is at (%d, %d)", @x_caret, @y_caret)
132
-
133
- get_caret.move_xy(@x_margin + @x_caret * @width_char,
134
- @y_margin + @y_caret * @height_char)
135
- end
136
-
137
- def on_size(event)
138
- @x_chars = (event.get_size.x - 2*@x_margin) / @width_char
139
- @y_chars = (event.get_size.y - 2*@y_margin) / @height_char
140
- if @x_chars <= 0
141
- @x_chars = 1
142
- end
143
- if @y_chars <= 0
144
- @y_chars = 1
145
- end
146
- if @x_caret >= @x_chars
147
- @x_caret = @x_chars-1
148
- end
149
- if @y_caret >= @y_chars
150
- @y_caret = @y_chars-1
151
- end
152
-
153
- @text = " " * @x_chars * @y_chars
154
-
155
- frame = get_parent
156
- if frame && frame.get_status_bar
157
- msg = sprintf("Panel size is (%d, %d)", @x_chars, @y_chars)
158
- frame.set_status_text(msg, 1)
159
- frame.refresh
160
- end
161
- event.skip
162
- end
163
-
164
- def on_paint
165
- caret = get_caret
166
- if caret
167
- caret.hide
168
- end
169
-
170
- paint do | dc |
171
- dc.clear
172
- dc.set_font(@font)
173
-
174
- for y in 0 ... @y_chars
175
- line = @text[@x_chars * y,@x_chars]
176
- dc.draw_text( line, @x_margin, @y_margin + y * @height_char )
177
- end
178
- end
179
-
180
- if caret
181
- caret.show
182
- end
183
-
184
- end
185
-
186
- def on_char(event)
187
- case event.key_code
188
- when K_LEFT, K_BACK
189
- prev_char
190
- when K_RIGHT
191
- next_char
192
- when K_UP
193
- prev_line
194
- when K_DOWN
195
- next_line
196
- when K_HOME
197
- home_pos
198
- when K_END
199
- end_pos
200
- when K_RETURN
201
- home_pos
202
- next_line
203
- else
204
- ch = event.key_code
205
- if !event.alt_down and (ch >= K_SPACE) and (ch < K_DELETE)
206
- self[@x_caret, @y_caret] = ch.chr
207
- refresh
208
- next_char
209
- else
210
- event.skip
211
- end
212
- end
213
- do_move_caret
214
- end
215
-
216
- end
217
-
218
- class MyFrame < Frame
219
- def initialize(title,pos,size)
220
- super(nil, -1, title, pos, size)
221
- # set the frame icon
222
- icon_file = File.join(File.dirname(__FILE__), 'mondrian.xpm')
223
- set_icon(Icon.new(icon_file, BITMAP_TYPE_XPM))
224
-
225
- # create a menu bar
226
- menu_file = Menu.new
227
-
228
- menu_file.append(Caret_set_blink_time, "&Blink time...\tCtrl-B")
229
- menu_file.append(Caret_Move, "&Move caret\tCtrl-C")
230
- menu_file.append_separator
231
- menu_file.append(Caret_About, "&About...\tCtrl-A", "Show about dialog")
232
- menu_file.append_separator
233
- menu_file.append(Caret_Quit, "E&xit\tAlt-X", "Quit self program")
234
-
235
- # now append the freshly created menu to the menu bar...
236
- menu_bar = MenuBar.new
237
- menu_bar.append(menu_file, "&File")
238
-
239
- # ... and attach self menu bar to the frame
240
- set_menu_bar(menu_bar)
241
-
242
- @canvas = MyCanvas.new(self)
243
-
244
- # This is required to set focus so that key events are directed to
245
- # this Window, on Linux/GTK in particular
246
- @canvas.set_focus
247
-
248
- # create a status bar just for fun (by default with 1 pane only)
249
- create_status_bar(2)
250
- set_status_text("Welcome to Windows!")
251
-
252
- evt_menu(Caret_Quit) {on_quit}
253
- evt_menu(Caret_About) {on_about}
254
- evt_menu(Caret_set_blink_time) {on_set_blink_time}
255
- evt_menu(Caret_Move) {on_caret_move}
256
- end
257
-
258
- def on_quit
259
- # true is to force the frame to close
260
- close(true)
261
- end
262
-
263
- def on_about
264
- message_box("The caret Windows sample, adapted for WxRuby",
265
- "About Caret", OK | ICON_INFORMATION, self)
266
- end
267
-
268
- def on_caret_move
269
- @canvas.move_caret(10, 10)
270
- end
271
-
272
- def on_set_blink_time
273
- blink_time = get_number_from_user(
274
- "The caret blink time is the time between two blinks",
275
- "Time in milliseconds:",
276
- "Caret sample",
277
- Caret::get_blink_time, 0, 10000,
278
- self)
279
- if blink_time != -1
280
- Caret::set_blink_time(blink_time)
281
- @canvas.create_caret
282
- log_status(self,"Blink time set to %d milliseconds.", blink_time)
283
- end
284
- end
285
- end
286
-
287
- class CaretApp < App
288
- def on_init
289
- frame = MyFrame.new("Caret Windows sample",
290
- Point.new(50, 50), Size.new(450, 340))
291
- frame.show(true)
292
- end
293
- end
294
-
295
- a = CaretApp.new
296
- a.main_loop
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+ include Wx
16
+
17
+ # menu items
18
+ Caret_Quit = ID_EXIT
19
+ Caret_About = ID_ABOUT
20
+ Caret_set_blink_time = 3
21
+ Caret_Move = 4
22
+
23
+ # controls start here (the numbers are, of course, arbitrary)
24
+ Caret_Text = 1000
25
+
26
+
27
+ # MyCanvas is a canvas on which you can type
28
+ class MyCanvas < ScrolledWindow
29
+ def initialize(parent)
30
+ super(parent, -1,
31
+ DEFAULT_POSITION, DEFAULT_SIZE,
32
+ SUNKEN_BORDER )
33
+
34
+ set_background_colour(WHITE)
35
+
36
+ @font = Font.new(12, FONTFAMILY_TELETYPE,
37
+ FONTSTYLE_NORMAL, FONTWEIGHT_NORMAL)
38
+
39
+ @x_caret = @y_caret =
40
+ @x_chars = @y_chars = 0
41
+
42
+ @x_margin = @y_margin = 5
43
+ @text = nil
44
+
45
+ create_caret
46
+
47
+ evt_paint {on_paint}
48
+ evt_size {|event| on_size(event)}
49
+ evt_char {|event| on_char(event)}
50
+ end
51
+
52
+ def [](x,y)
53
+ @text[x + @x_chars * y,1]
54
+ end
55
+
56
+ def []=(x,y,z)
57
+ @text[x + @x_chars * y,1] = z
58
+ end
59
+
60
+ # caret movement
61
+ def home_pos
62
+ @x_caret = 0
63
+ end
64
+
65
+ def end_pos
66
+ @x_caret = @x_chars - 1
67
+ end
68
+
69
+ def first_line
70
+ @y_caret = 0
71
+ end
72
+
73
+ def last_line
74
+ @y_caret = @y_chars - 1
75
+ end
76
+
77
+ def prev_char
78
+ if @x_caret == 0
79
+ end_pos
80
+ prev_line
81
+ else
82
+ @x_caret -= 1
83
+ end
84
+ end
85
+
86
+ def next_char
87
+ @x_caret += 1
88
+ if @x_caret == @x_chars
89
+ home_pos
90
+ next_line
91
+ end
92
+ end
93
+
94
+ def prev_line
95
+ if @y_caret == 0
96
+ last_line
97
+ else
98
+ @y_caret -= 1
99
+ end
100
+ end
101
+
102
+ def next_line
103
+ @y_caret += 1
104
+ if @y_caret == @y_chars
105
+ first_line
106
+ end
107
+ end
108
+
109
+ def create_caret
110
+ paint do | dc |
111
+ dc.set_font(@font)
112
+ @height_char = dc.get_char_height
113
+ @width_char = dc.get_char_width
114
+
115
+ caret = Caret.new(self, Size.new(@width_char, @height_char))
116
+ set_caret(caret)
117
+
118
+ caret.move(Point.new(@x_margin, @y_margin))
119
+ caret.show
120
+ end
121
+ end
122
+
123
+ def move_caret(x,y)
124
+ @x_caret = x
125
+ @y_caret = y
126
+
127
+ do_move_caret
128
+ end
129
+
130
+ def do_move_caret
131
+ log_status("Caret is at (%d, %d)", @x_caret, @y_caret)
132
+
133
+ get_caret.move_xy(@x_margin + @x_caret * @width_char,
134
+ @y_margin + @y_caret * @height_char)
135
+ end
136
+
137
+ def on_size(event)
138
+ @x_chars = (event.get_size.x - 2*@x_margin) / @width_char
139
+ @y_chars = (event.get_size.y - 2*@y_margin) / @height_char
140
+ if @x_chars <= 0
141
+ @x_chars = 1
142
+ end
143
+ if @y_chars <= 0
144
+ @y_chars = 1
145
+ end
146
+ if @x_caret >= @x_chars
147
+ @x_caret = @x_chars-1
148
+ end
149
+ if @y_caret >= @y_chars
150
+ @y_caret = @y_chars-1
151
+ end
152
+
153
+ @text = " " * @x_chars * @y_chars
154
+
155
+ frame = get_parent
156
+ if frame && frame.get_status_bar
157
+ msg = sprintf("Panel size is (%d, %d)", @x_chars, @y_chars)
158
+ frame.set_status_text(msg, 1)
159
+ frame.refresh
160
+ end
161
+ event.skip
162
+ end
163
+
164
+ def on_paint
165
+ caret = get_caret
166
+ if caret
167
+ caret.hide
168
+ end
169
+
170
+ paint do | dc |
171
+ dc.clear
172
+ dc.set_font(@font)
173
+
174
+ for y in 0 ... @y_chars
175
+ line = @text[@x_chars * y,@x_chars]
176
+ dc.draw_text( line, @x_margin, @y_margin + y * @height_char )
177
+ end
178
+ end
179
+
180
+ if caret
181
+ caret.show
182
+ end
183
+
184
+ end
185
+
186
+ def on_char(event)
187
+ case event.key_code
188
+ when K_LEFT, K_BACK
189
+ prev_char
190
+ when K_RIGHT
191
+ next_char
192
+ when K_UP
193
+ prev_line
194
+ when K_DOWN
195
+ next_line
196
+ when K_HOME
197
+ home_pos
198
+ when K_END
199
+ end_pos
200
+ when K_RETURN
201
+ home_pos
202
+ next_line
203
+ else
204
+ ch = event.key_code
205
+ if !event.alt_down and (ch >= K_SPACE) and (ch < K_DELETE)
206
+ self[@x_caret, @y_caret] = ch.chr
207
+ refresh
208
+ next_char
209
+ else
210
+ event.skip
211
+ end
212
+ end
213
+ do_move_caret
214
+ end
215
+
216
+ end
217
+
218
+ class MyFrame < Frame
219
+ def initialize(title,pos,size)
220
+ super(nil, -1, title, pos, size)
221
+ # set the frame icon
222
+ icon_file = File.join(File.dirname(__FILE__), 'mondrian.xpm')
223
+ set_icon(Icon.new(icon_file, BITMAP_TYPE_XPM))
224
+
225
+ # create a menu bar
226
+ menu_file = Menu.new
227
+
228
+ menu_file.append(Caret_set_blink_time, "&Blink time...\tCtrl-B")
229
+ menu_file.append(Caret_Move, "&Move caret\tCtrl-C")
230
+ menu_file.append_separator
231
+ menu_file.append(Caret_About, "&About...\tCtrl-A", "Show about dialog")
232
+ menu_file.append_separator
233
+ menu_file.append(Caret_Quit, "E&xit\tAlt-X", "Quit self program")
234
+
235
+ # now append the freshly created menu to the menu bar...
236
+ menu_bar = MenuBar.new
237
+ menu_bar.append(menu_file, "&File")
238
+
239
+ # ... and attach self menu bar to the frame
240
+ set_menu_bar(menu_bar)
241
+
242
+ @canvas = MyCanvas.new(self)
243
+
244
+ # This is required to set focus so that key events are directed to
245
+ # this Window, on Linux/GTK in particular
246
+ @canvas.set_focus
247
+
248
+ # create a status bar just for fun (by default with 1 pane only)
249
+ create_status_bar(2)
250
+ set_status_text("Welcome to Windows!")
251
+
252
+ evt_menu(Caret_Quit) {on_quit}
253
+ evt_menu(Caret_About) {on_about}
254
+ evt_menu(Caret_set_blink_time) {on_set_blink_time}
255
+ evt_menu(Caret_Move) {on_caret_move}
256
+ end
257
+
258
+ def on_quit
259
+ # true is to force the frame to close
260
+ close(true)
261
+ end
262
+
263
+ def on_about
264
+ message_box("The caret Windows sample, adapted for WxRuby",
265
+ "About Caret", OK | ICON_INFORMATION, self)
266
+ end
267
+
268
+ def on_caret_move
269
+ @canvas.move_caret(10, 10)
270
+ end
271
+
272
+ def on_set_blink_time
273
+ blink_time = get_number_from_user(
274
+ "The caret blink time is the time between two blinks",
275
+ "Time in milliseconds:",
276
+ "Caret sample",
277
+ Caret::get_blink_time, 0, 10000,
278
+ self)
279
+ if blink_time != -1
280
+ Caret::set_blink_time(blink_time)
281
+ @canvas.create_caret
282
+ log_status(self,"Blink time set to %d milliseconds.", blink_time)
283
+ end
284
+ end
285
+ end
286
+
287
+ class CaretApp < App
288
+ def on_init
289
+ frame = MyFrame.new("Caret Windows sample",
290
+ Point.new(50, 50), Size.new(450, 340))
291
+ frame.show(true)
292
+ end
293
+ end
294
+
295
+ a = CaretApp.new
296
+ a.main_loop