wxruby 1.9.3-i386-mswin32 → 1.9.4-i386-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +53 -53
- data/README +299 -299
- data/lib/wx/classes/evthandler.rb +9 -0
- data/lib/wx/classes/timer.rb +25 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx.rb +42 -42
- data/lib/wxruby2.exp +0 -0
- data/lib/wxruby2.lib +0 -0
- data/lib/wxruby2.so +0 -0
- data/samples/SAMPLES-LICENSE.TXT +17 -17
- data/samples/bigdemo/About.rbw +39 -39
- data/samples/bigdemo/ColorPanel.rbw +25 -25
- data/samples/bigdemo/GridSimple.rbw +80 -80
- data/samples/bigdemo/MDIDemo.rbw +59 -59
- data/samples/bigdemo/PopupMenu.rbw +151 -151
- data/samples/bigdemo/Sizers.rbw +545 -545
- data/samples/bigdemo/bigdemo.rb +826 -826
- data/samples/bigdemo/demoTemplate.rbw +37 -37
- data/samples/bigdemo/icons/choice.xpm +27 -27
- data/samples/bigdemo/icons/combo.xpm +27 -27
- data/samples/bigdemo/icons/copy.xpm +25 -25
- data/samples/bigdemo/icons/cut.xpm +24 -24
- data/samples/bigdemo/icons/gauge.xpm +27 -27
- data/samples/bigdemo/icons/help.xpm +25 -25
- data/samples/bigdemo/icons/list.xpm +27 -27
- data/samples/bigdemo/icons/mondrian.xpm +44 -44
- data/samples/bigdemo/icons/new.xpm +24 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -45
- data/samples/bigdemo/icons/open.xpm +26 -26
- data/samples/bigdemo/icons/paste.xpm +38 -38
- data/samples/bigdemo/icons/preview.xpm +26 -26
- data/samples/bigdemo/icons/print.xpm +26 -26
- data/samples/bigdemo/icons/radio.xpm +27 -27
- data/samples/bigdemo/icons/robert.xpm +415 -415
- data/samples/bigdemo/icons/save.xpm +25 -25
- data/samples/bigdemo/icons/smiles.xpm +39 -39
- data/samples/bigdemo/icons/smiley.xpm +42 -42
- data/samples/bigdemo/icons/stattext.xpm +24 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -79
- data/samples/bigdemo/icons/text.xpm +27 -27
- data/samples/bigdemo/icons/tog1.xpm +38 -38
- data/samples/bigdemo/icons/tog2.xpm +38 -38
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
- data/samples/bigdemo/tips.txt +7 -7
- data/samples/bigdemo/utils.rb +11 -11
- data/samples/bigdemo/wxButton.rbw +66 -66
- data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
- data/samples/bigdemo/wxCheckBox.rbw +52 -52
- data/samples/bigdemo/wxCheckListBox.rbw +77 -77
- data/samples/bigdemo/wxChoice.rbw +49 -49
- data/samples/bigdemo/wxColourDialog.rbw +34 -34
- data/samples/bigdemo/wxComboBox.rbw +79 -79
- data/samples/bigdemo/wxDialog.rbw +92 -92
- data/samples/bigdemo/wxDirDialog.rbw +32 -32
- data/samples/bigdemo/wxFileDialog.rbw +39 -39
- data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
- data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
- data/samples/bigdemo/wxFontDialog.rbw +176 -176
- data/samples/bigdemo/wxFrame.rbw +55 -55
- data/samples/bigdemo/wxGauge.rbw +73 -73
- data/samples/bigdemo/wxGrid.rbw +68 -68
- data/samples/bigdemo/wxListBox.rbw +142 -142
- data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
- data/samples/bigdemo/wxMDIWindows.rbw +52 -52
- data/samples/bigdemo/wxMenu.rbw +238 -238
- data/samples/bigdemo/wxMessageDialog.rbw +30 -30
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
- data/samples/bigdemo/wxNotebook.rbw +138 -138
- data/samples/bigdemo/wxProgressDialog.rbw +45 -45
- data/samples/bigdemo/wxRadioBox.rbw +74 -74
- data/samples/bigdemo/wxRadioButton.rbw +127 -127
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
- data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
- data/samples/bigdemo/wxSlider.rbw +44 -44
- data/samples/bigdemo/wxSpinButton.rbw +52 -52
- data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
- data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
- data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
- data/samples/bigdemo/wxStaticText.rbw +57 -57
- data/samples/bigdemo/wxStatusBar.rbw +128 -128
- data/samples/bigdemo/wxTextCtrl.rbw +151 -151
- data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
- data/samples/bigdemo/wxToggleButton.rbw +51 -51
- data/samples/bigdemo/wxToolBar.rbw +133 -133
- data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
- data/samples/calendar/calendar.rb +275 -275
- data/samples/caret/caret.rb +286 -286
- data/samples/caret/mondrian.xpm +44 -44
- data/samples/controls/controls.rb +1140 -1140
- data/samples/controls/get_item_sample.rb +87 -87
- data/samples/controls/icons/choice.xpm +27 -27
- data/samples/controls/icons/combo.xpm +27 -27
- data/samples/controls/icons/gauge.xpm +27 -27
- data/samples/controls/icons/list.xpm +27 -27
- data/samples/controls/icons/radio.xpm +27 -27
- data/samples/controls/icons/stattext.xpm +24 -24
- data/samples/controls/icons/text.xpm +27 -27
- data/samples/controls/mondrian.xpm +44 -44
- data/samples/dialogs/dialogs.rb +724 -724
- data/samples/dialogs/tips.txt +18 -18
- data/samples/drawing/graphics_drawing.rb +22 -18
- data/samples/drawing/images.rb +48 -48
- data/samples/etc/activation.rb +108 -108
- data/samples/etc/choice.rb +72 -72
- data/samples/etc/miniframe.rb +84 -84
- data/samples/etc/sash.rb +135 -135
- data/samples/etc/scrollwin.rb +116 -116
- data/samples/etc/system_settings.rb +258 -258
- data/samples/etc/threaded.rb +5 -8
- data/samples/etc/wizard.rb +79 -79
- data/samples/html/html.rb +14 -10
- data/samples/listbook/listbook.rb +181 -181
- data/samples/listbook/listbook.xrc +370 -370
- data/samples/mdi/mdi.rb +87 -87
- data/samples/minimal/minimal.rb +85 -85
- data/samples/minimal/nothing.rb +21 -21
- data/samples/text/textctrl.rb +124 -124
- data/samples/text/unicode.rb +238 -238
- data/samples/text/utf8.txt +14 -14
- data/samples/treectrl/treectrl.rb +1180 -1180
- data/samples/xrc/samples.xrc +46 -46
- data/samples/xrc/xrc_sample.rb +107 -107
- metadata +3 -3
@@ -1,128 +1,128 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'wx'
|
5
|
-
rescue LoadError => no_wx_err
|
6
|
-
begin
|
7
|
-
require 'rubygems'
|
8
|
-
require 'wx'
|
9
|
-
rescue LoadError
|
10
|
-
raise no_wx_err
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class CustomStatusBar < Wx::StatusBar
|
15
|
-
attr_reader :timer
|
16
|
-
def initialize(parent, log)
|
17
|
-
super(parent, -1)
|
18
|
-
set_fields_count(3)
|
19
|
-
@log = log
|
20
|
-
@sizeChanged = false
|
21
|
-
|
22
|
-
evt_size {|event| on_size(event)}
|
23
|
-
evt_idle {|event| on_idle(event)}
|
24
|
-
|
25
|
-
self.set_status_text("A Custom StatusBar...", 0)
|
26
|
-
|
27
|
-
@cb = Wx::CheckBox.new(self, 1001, "toggle clock")
|
28
|
-
evt_checkbox(@cb.get_id()) {|event| on_toggle_clock(event)}
|
29
|
-
@cb.set_value(true)
|
30
|
-
|
31
|
-
# set the initial position of the checkbox
|
32
|
-
self.reposition()
|
33
|
-
|
34
|
-
# start our timer
|
35
|
-
@timer = Wx::Timer.new(self, 5000)
|
36
|
-
# note that you cannot call @timer.get_id() - this method is not supported, therefore an explicit ID is required
|
37
|
-
# in order to capture the event for your event handler
|
38
|
-
evt_timer(5000) {|event| notify(event)}
|
39
|
-
# The second parameter is supposed to default to false (meaning it should fire off events continuously), but for
|
40
|
-
# some reason if I don't explicitly pass in false, it fires only once. If someone figures this out, please let
|
41
|
-
# me know :) What makes it even more confusing is that when I toggle the clock off using the checkbox, and then
|
42
|
-
# restart it, there is no need to pass in false for the second parameter - it is assumed to be false there
|
43
|
-
# To further complicate the situation, it appears that if I call stop(), call start(1000), it takes the parameter
|
44
|
-
# to default as false, meaning fire the event continuously? Perhaps this is a Windows only issue?
|
45
|
-
@timer.start(1000)
|
46
|
-
@timer.stop()
|
47
|
-
@timer.start(1000)
|
48
|
-
end
|
49
|
-
|
50
|
-
# Time-out handler
|
51
|
-
def notify(event)
|
52
|
-
t = Time.now
|
53
|
-
st = t.strftime("%d-%B-%Y %I:%M:%S %p")
|
54
|
-
self.set_status_text(st, 2)
|
55
|
-
@log.write_text("tick...")
|
56
|
-
end
|
57
|
-
|
58
|
-
# the checkbox was clicked
|
59
|
-
def on_toggle_clock(event)
|
60
|
-
if @cb.get_value()
|
61
|
-
@timer.start(1000)
|
62
|
-
else
|
63
|
-
@timer.stop()
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def on_size(event)
|
68
|
-
self.reposition() # for normal size events
|
69
|
-
|
70
|
-
# Set a flag so the idle time handler will also do the repositioning.
|
71
|
-
# It is done this way to get around a buglet where GetFieldRect is not
|
72
|
-
# accurate during the EVT_SIZE resulting from a frame maximize.
|
73
|
-
|
74
|
-
@sizeChanged = true
|
75
|
-
end
|
76
|
-
|
77
|
-
def on_idle(event)
|
78
|
-
if @sizeChanged
|
79
|
-
self.reposition()
|
80
|
-
end
|
81
|
-
event.request_more()
|
82
|
-
end
|
83
|
-
|
84
|
-
def reposition()
|
85
|
-
rect = get_field_rect(1)
|
86
|
-
@cb.move(Wx::Point.new(rect.x + 2, rect.y + 2))
|
87
|
-
@cb.set_size(Wx::Size.new(rect.width - 4, rect.height - 4))
|
88
|
-
@sizeChanged = false
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
class TestCustomStatusBar < Wx::Frame
|
93
|
-
def initialize(parent, log)
|
94
|
-
super(parent, -1, "Test Custom StatusBar")
|
95
|
-
|
96
|
-
@sb = CustomStatusBar.new(self, log)
|
97
|
-
set_status_bar(@sb)
|
98
|
-
tc = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_READONLY | Wx::TE_MULTILINE)
|
99
|
-
|
100
|
-
set_size(Wx::Size.new(500,300))
|
101
|
-
evt_close {|event| on_close_window(event)}
|
102
|
-
end
|
103
|
-
|
104
|
-
def on_close_window(event)
|
105
|
-
@sb.timer.stop()
|
106
|
-
destroy()
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
module Demo
|
111
|
-
def Demo.run(frame,nb,log)
|
112
|
-
win = TestCustomStatusBar.new(frame, log)
|
113
|
-
frame.otherWin = win
|
114
|
-
win.show()
|
115
|
-
return nil
|
116
|
-
end
|
117
|
-
|
118
|
-
def Demo.overview
|
119
|
-
"A status bar is a narrow window that can be placed along the bottom of a frame to give small amounts of status information. It can contain one or more fields, one or more of which can be variable length according to the size of the window. "
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
|
124
|
-
if __FILE__ == $0
|
125
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
126
|
-
load run_solo_lib
|
127
|
-
run File.basename($0)
|
128
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class CustomStatusBar < Wx::StatusBar
|
15
|
+
attr_reader :timer
|
16
|
+
def initialize(parent, log)
|
17
|
+
super(parent, -1)
|
18
|
+
set_fields_count(3)
|
19
|
+
@log = log
|
20
|
+
@sizeChanged = false
|
21
|
+
|
22
|
+
evt_size {|event| on_size(event)}
|
23
|
+
evt_idle {|event| on_idle(event)}
|
24
|
+
|
25
|
+
self.set_status_text("A Custom StatusBar...", 0)
|
26
|
+
|
27
|
+
@cb = Wx::CheckBox.new(self, 1001, "toggle clock")
|
28
|
+
evt_checkbox(@cb.get_id()) {|event| on_toggle_clock(event)}
|
29
|
+
@cb.set_value(true)
|
30
|
+
|
31
|
+
# set the initial position of the checkbox
|
32
|
+
self.reposition()
|
33
|
+
|
34
|
+
# start our timer
|
35
|
+
@timer = Wx::Timer.new(self, 5000)
|
36
|
+
# note that you cannot call @timer.get_id() - this method is not supported, therefore an explicit ID is required
|
37
|
+
# in order to capture the event for your event handler
|
38
|
+
evt_timer(5000) {|event| notify(event)}
|
39
|
+
# The second parameter is supposed to default to false (meaning it should fire off events continuously), but for
|
40
|
+
# some reason if I don't explicitly pass in false, it fires only once. If someone figures this out, please let
|
41
|
+
# me know :) What makes it even more confusing is that when I toggle the clock off using the checkbox, and then
|
42
|
+
# restart it, there is no need to pass in false for the second parameter - it is assumed to be false there
|
43
|
+
# To further complicate the situation, it appears that if I call stop(), call start(1000), it takes the parameter
|
44
|
+
# to default as false, meaning fire the event continuously? Perhaps this is a Windows only issue?
|
45
|
+
@timer.start(1000)
|
46
|
+
@timer.stop()
|
47
|
+
@timer.start(1000)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Time-out handler
|
51
|
+
def notify(event)
|
52
|
+
t = Time.now
|
53
|
+
st = t.strftime("%d-%B-%Y %I:%M:%S %p")
|
54
|
+
self.set_status_text(st, 2)
|
55
|
+
@log.write_text("tick...")
|
56
|
+
end
|
57
|
+
|
58
|
+
# the checkbox was clicked
|
59
|
+
def on_toggle_clock(event)
|
60
|
+
if @cb.get_value()
|
61
|
+
@timer.start(1000)
|
62
|
+
else
|
63
|
+
@timer.stop()
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def on_size(event)
|
68
|
+
self.reposition() # for normal size events
|
69
|
+
|
70
|
+
# Set a flag so the idle time handler will also do the repositioning.
|
71
|
+
# It is done this way to get around a buglet where GetFieldRect is not
|
72
|
+
# accurate during the EVT_SIZE resulting from a frame maximize.
|
73
|
+
|
74
|
+
@sizeChanged = true
|
75
|
+
end
|
76
|
+
|
77
|
+
def on_idle(event)
|
78
|
+
if @sizeChanged
|
79
|
+
self.reposition()
|
80
|
+
end
|
81
|
+
event.request_more()
|
82
|
+
end
|
83
|
+
|
84
|
+
def reposition()
|
85
|
+
rect = get_field_rect(1)
|
86
|
+
@cb.move(Wx::Point.new(rect.x + 2, rect.y + 2))
|
87
|
+
@cb.set_size(Wx::Size.new(rect.width - 4, rect.height - 4))
|
88
|
+
@sizeChanged = false
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class TestCustomStatusBar < Wx::Frame
|
93
|
+
def initialize(parent, log)
|
94
|
+
super(parent, -1, "Test Custom StatusBar")
|
95
|
+
|
96
|
+
@sb = CustomStatusBar.new(self, log)
|
97
|
+
set_status_bar(@sb)
|
98
|
+
tc = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_READONLY | Wx::TE_MULTILINE)
|
99
|
+
|
100
|
+
set_size(Wx::Size.new(500,300))
|
101
|
+
evt_close {|event| on_close_window(event)}
|
102
|
+
end
|
103
|
+
|
104
|
+
def on_close_window(event)
|
105
|
+
@sb.timer.stop()
|
106
|
+
destroy()
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
module Demo
|
111
|
+
def Demo.run(frame,nb,log)
|
112
|
+
win = TestCustomStatusBar.new(frame, log)
|
113
|
+
frame.otherWin = win
|
114
|
+
win.show()
|
115
|
+
return nil
|
116
|
+
end
|
117
|
+
|
118
|
+
def Demo.overview
|
119
|
+
"A status bar is a narrow window that can be placed along the bottom of a frame to give small amounts of status information. It can contain one or more fields, one or more of which can be variable length according to the size of the window. "
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
if __FILE__ == $0
|
125
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
126
|
+
load run_solo_lib
|
127
|
+
run File.basename($0)
|
128
|
+
end
|
@@ -1,151 +1,151 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'wx'
|
5
|
-
rescue LoadError => no_wx_err
|
6
|
-
begin
|
7
|
-
require 'rubygems'
|
8
|
-
require 'wx'
|
9
|
-
rescue LoadError
|
10
|
-
raise no_wx_err
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class TestPanel < Wx::Panel
|
15
|
-
|
16
|
-
def on_set_focus(event)
|
17
|
-
@log.write_text("on_set_focus")
|
18
|
-
event.skip()
|
19
|
-
end
|
20
|
-
|
21
|
-
def on_kill_focus(event)
|
22
|
-
@log.write_text("on_kill_focus")
|
23
|
-
event.skip()
|
24
|
-
end
|
25
|
-
|
26
|
-
def on_window_destroy(event)
|
27
|
-
@log.write_text("on_window_destroy")
|
28
|
-
event.skip()
|
29
|
-
end
|
30
|
-
|
31
|
-
def initialize(parent, log)
|
32
|
-
super(parent, -1)
|
33
|
-
@log = log
|
34
|
-
|
35
|
-
l1 = Wx::StaticText.new(self, -1, "Wx::TextCtrl")
|
36
|
-
t1 = Wx::TextCtrl.new(self, -1, "Test it out and see", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1))
|
37
|
-
t1.set_insertion_point(0)
|
38
|
-
@tc1 = t1
|
39
|
-
evt_text(t1.get_id()) {|event| on_evt_text(event)}
|
40
|
-
t1.evt_char {|event| on_evt_char(event)}
|
41
|
-
t1.evt_set_focus {|event| on_set_focus(event)}
|
42
|
-
t1.evt_kill_focus {|event| on_kill_focus(event)}
|
43
|
-
#t1.evt_window_destroy {|event| on_window_destroy(event)}
|
44
|
-
|
45
|
-
l2 = Wx::StaticText.new(self, -1, "Password")
|
46
|
-
t2 = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1), Wx::TE_PASSWORD)
|
47
|
-
evt_text(t2.get_id()) {|event| on_evt_text(event)}
|
48
|
-
|
49
|
-
l3 = Wx::StaticText.new(self, -1, "Multi-line")
|
50
|
-
t3 = Wx::TextCtrl.new(self, -1, "Here is a looooooooooooooong line of text set in the control.\n\n" +
|
51
|
-
"The quick brown fox jumped over the lazy dog...", Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
|
52
|
-
Wx::TE_MULTILINE)
|
53
|
-
t3.set_insertion_point(0)
|
54
|
-
evt_text(t3.get_id()) {|event| on_evt_text(event)}
|
55
|
-
b = Wx::Button.new(self, -1, "Test replace")
|
56
|
-
evt_button(b.get_id()) {|event| on_test_replace(event)}
|
57
|
-
b2 = Wx::Button.new(self, -1, "Test get_selection")
|
58
|
-
evt_button(b2.get_id()) {|event| on_test_get_selection(event)}
|
59
|
-
b3 = Wx::Button.new(self, -1, "Test write_text")
|
60
|
-
evt_button(b3.get_id()) {|event| on_test_write_text(event)}
|
61
|
-
@tc = t3
|
62
|
-
|
63
|
-
l4 = Wx::StaticText.new(self, -1, "Rich Text")
|
64
|
-
t4 = Wx::TextCtrl.new(self, -1, "If supported by the native control, this is red, and this is a different font.",
|
65
|
-
Wx::DEFAULT_POSITION, Wx::Size.new(200,100), Wx::TE_MULTILINE | Wx::TE_RICH)
|
66
|
-
t4.set_insertion_point(0)
|
67
|
-
t4.set_style(44,47, Wx::TextAttr.new(Wx::Colour.new("RED"), Wx::Colour.new("YELLOW")))
|
68
|
-
points = t4.get_font().get_point_size() # get the current size
|
69
|
-
f = Wx::Font.new(points + 3, Wx::ROMAN, Wx::ITALIC, Wx::BOLD, true)
|
70
|
-
t4.set_style(63, 77, Wx::TextAttr.new(Wx::Colour.new("BLUE"), Wx::NULL_COLOUR, f))
|
71
|
-
|
72
|
-
l5 = Wx::StaticText.new(self, -1, "Test Positions")
|
73
|
-
t5 = Wx::TextCtrl.new(self, -1, "0123456789\n" * 5, Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
|
74
|
-
Wx::TE_MULTILINE | Wx::TE_RICH)
|
75
|
-
@t5 = t5
|
76
|
-
|
77
|
-
bsizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
78
|
-
bsizer.add(b, 0, Wx::GROW | Wx::ALL, 4)
|
79
|
-
bsizer.add(b2, 0, Wx::GROW | Wx::ALL, 4)
|
80
|
-
bsizer.add(b3, 0, Wx::GROW | Wx::ALL, 4)
|
81
|
-
|
82
|
-
sizer = Wx::FlexGridSizer.new(0,3,6,6)
|
83
|
-
sizer.add(l1)
|
84
|
-
sizer.add(t1)
|
85
|
-
sizer.add(0,0)
|
86
|
-
sizer.add(l2)
|
87
|
-
sizer.add(t2)
|
88
|
-
sizer.add(0,0)
|
89
|
-
sizer.add(l3)
|
90
|
-
sizer.add(t3)
|
91
|
-
sizer.add(bsizer)
|
92
|
-
sizer.add(l4)
|
93
|
-
sizer.add(t4)
|
94
|
-
sizer.add(0,0)
|
95
|
-
sizer.add(l5)
|
96
|
-
sizer.add(t5)
|
97
|
-
sizer.add(0,0)
|
98
|
-
|
99
|
-
border = Wx::BoxSizer.new(Wx::VERTICAL)
|
100
|
-
border.add(sizer, 0, Wx::ALL, 25)
|
101
|
-
set_sizer(border)
|
102
|
-
set_auto_layout(true)
|
103
|
-
end
|
104
|
-
|
105
|
-
def on_evt_text(event)
|
106
|
-
@log.write_text("evt_text: " + event.get_string())
|
107
|
-
end
|
108
|
-
|
109
|
-
def on_evt_char(event)
|
110
|
-
@log.write_text("evt_char: " + event.get_key_code().to_s)
|
111
|
-
event.skip()
|
112
|
-
end
|
113
|
-
|
114
|
-
def on_test_replace(event)
|
115
|
-
@tc.replace(5,9, "IS A")
|
116
|
-
end
|
117
|
-
|
118
|
-
def on_test_write_text(event)
|
119
|
-
@tc.write_text("TEXT")
|
120
|
-
end
|
121
|
-
|
122
|
-
def on_test_get_selection(event)
|
123
|
-
start, stop = @tc.get_selection
|
124
|
-
text = @tc.get_string_selection # On WXMSW, is you select text using
|
125
|
-
# the results of get_selection you
|
126
|
-
# must replace \r\n\ with \n before
|
127
|
-
# taking your selection
|
128
|
-
@log.write_text("get_string_selection [#{start}..#{stop}]: " + text)
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
132
|
-
|
133
|
-
|
134
|
-
module Demo
|
135
|
-
def Demo.run(frame,nb,log)
|
136
|
-
win = TestPanel.new(nb,log)
|
137
|
-
return win
|
138
|
-
end
|
139
|
-
|
140
|
-
def Demo.overview
|
141
|
-
"A TextCtrl allows text to be displayed and (possibly) edited. It may be single" +
|
142
|
-
"line or multi-line, support styles or not, be read-only or not, and even supports" +
|
143
|
-
"text masking for such things as passwords."
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
if __FILE__ == $0
|
148
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
149
|
-
load run_solo_lib
|
150
|
-
run File.basename($0)
|
151
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class TestPanel < Wx::Panel
|
15
|
+
|
16
|
+
def on_set_focus(event)
|
17
|
+
@log.write_text("on_set_focus")
|
18
|
+
event.skip()
|
19
|
+
end
|
20
|
+
|
21
|
+
def on_kill_focus(event)
|
22
|
+
@log.write_text("on_kill_focus")
|
23
|
+
event.skip()
|
24
|
+
end
|
25
|
+
|
26
|
+
def on_window_destroy(event)
|
27
|
+
@log.write_text("on_window_destroy")
|
28
|
+
event.skip()
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize(parent, log)
|
32
|
+
super(parent, -1)
|
33
|
+
@log = log
|
34
|
+
|
35
|
+
l1 = Wx::StaticText.new(self, -1, "Wx::TextCtrl")
|
36
|
+
t1 = Wx::TextCtrl.new(self, -1, "Test it out and see", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1))
|
37
|
+
t1.set_insertion_point(0)
|
38
|
+
@tc1 = t1
|
39
|
+
evt_text(t1.get_id()) {|event| on_evt_text(event)}
|
40
|
+
t1.evt_char {|event| on_evt_char(event)}
|
41
|
+
t1.evt_set_focus {|event| on_set_focus(event)}
|
42
|
+
t1.evt_kill_focus {|event| on_kill_focus(event)}
|
43
|
+
#t1.evt_window_destroy {|event| on_window_destroy(event)}
|
44
|
+
|
45
|
+
l2 = Wx::StaticText.new(self, -1, "Password")
|
46
|
+
t2 = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1), Wx::TE_PASSWORD)
|
47
|
+
evt_text(t2.get_id()) {|event| on_evt_text(event)}
|
48
|
+
|
49
|
+
l3 = Wx::StaticText.new(self, -1, "Multi-line")
|
50
|
+
t3 = Wx::TextCtrl.new(self, -1, "Here is a looooooooooooooong line of text set in the control.\n\n" +
|
51
|
+
"The quick brown fox jumped over the lazy dog...", Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
|
52
|
+
Wx::TE_MULTILINE)
|
53
|
+
t3.set_insertion_point(0)
|
54
|
+
evt_text(t3.get_id()) {|event| on_evt_text(event)}
|
55
|
+
b = Wx::Button.new(self, -1, "Test replace")
|
56
|
+
evt_button(b.get_id()) {|event| on_test_replace(event)}
|
57
|
+
b2 = Wx::Button.new(self, -1, "Test get_selection")
|
58
|
+
evt_button(b2.get_id()) {|event| on_test_get_selection(event)}
|
59
|
+
b3 = Wx::Button.new(self, -1, "Test write_text")
|
60
|
+
evt_button(b3.get_id()) {|event| on_test_write_text(event)}
|
61
|
+
@tc = t3
|
62
|
+
|
63
|
+
l4 = Wx::StaticText.new(self, -1, "Rich Text")
|
64
|
+
t4 = Wx::TextCtrl.new(self, -1, "If supported by the native control, this is red, and this is a different font.",
|
65
|
+
Wx::DEFAULT_POSITION, Wx::Size.new(200,100), Wx::TE_MULTILINE | Wx::TE_RICH)
|
66
|
+
t4.set_insertion_point(0)
|
67
|
+
t4.set_style(44,47, Wx::TextAttr.new(Wx::Colour.new("RED"), Wx::Colour.new("YELLOW")))
|
68
|
+
points = t4.get_font().get_point_size() # get the current size
|
69
|
+
f = Wx::Font.new(points + 3, Wx::ROMAN, Wx::ITALIC, Wx::BOLD, true)
|
70
|
+
t4.set_style(63, 77, Wx::TextAttr.new(Wx::Colour.new("BLUE"), Wx::NULL_COLOUR, f))
|
71
|
+
|
72
|
+
l5 = Wx::StaticText.new(self, -1, "Test Positions")
|
73
|
+
t5 = Wx::TextCtrl.new(self, -1, "0123456789\n" * 5, Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
|
74
|
+
Wx::TE_MULTILINE | Wx::TE_RICH)
|
75
|
+
@t5 = t5
|
76
|
+
|
77
|
+
bsizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
78
|
+
bsizer.add(b, 0, Wx::GROW | Wx::ALL, 4)
|
79
|
+
bsizer.add(b2, 0, Wx::GROW | Wx::ALL, 4)
|
80
|
+
bsizer.add(b3, 0, Wx::GROW | Wx::ALL, 4)
|
81
|
+
|
82
|
+
sizer = Wx::FlexGridSizer.new(0,3,6,6)
|
83
|
+
sizer.add(l1)
|
84
|
+
sizer.add(t1)
|
85
|
+
sizer.add(0,0)
|
86
|
+
sizer.add(l2)
|
87
|
+
sizer.add(t2)
|
88
|
+
sizer.add(0,0)
|
89
|
+
sizer.add(l3)
|
90
|
+
sizer.add(t3)
|
91
|
+
sizer.add(bsizer)
|
92
|
+
sizer.add(l4)
|
93
|
+
sizer.add(t4)
|
94
|
+
sizer.add(0,0)
|
95
|
+
sizer.add(l5)
|
96
|
+
sizer.add(t5)
|
97
|
+
sizer.add(0,0)
|
98
|
+
|
99
|
+
border = Wx::BoxSizer.new(Wx::VERTICAL)
|
100
|
+
border.add(sizer, 0, Wx::ALL, 25)
|
101
|
+
set_sizer(border)
|
102
|
+
set_auto_layout(true)
|
103
|
+
end
|
104
|
+
|
105
|
+
def on_evt_text(event)
|
106
|
+
@log.write_text("evt_text: " + event.get_string())
|
107
|
+
end
|
108
|
+
|
109
|
+
def on_evt_char(event)
|
110
|
+
@log.write_text("evt_char: " + event.get_key_code().to_s)
|
111
|
+
event.skip()
|
112
|
+
end
|
113
|
+
|
114
|
+
def on_test_replace(event)
|
115
|
+
@tc.replace(5,9, "IS A")
|
116
|
+
end
|
117
|
+
|
118
|
+
def on_test_write_text(event)
|
119
|
+
@tc.write_text("TEXT")
|
120
|
+
end
|
121
|
+
|
122
|
+
def on_test_get_selection(event)
|
123
|
+
start, stop = @tc.get_selection
|
124
|
+
text = @tc.get_string_selection # On WXMSW, is you select text using
|
125
|
+
# the results of get_selection you
|
126
|
+
# must replace \r\n\ with \n before
|
127
|
+
# taking your selection
|
128
|
+
@log.write_text("get_string_selection [#{start}..#{stop}]: " + text)
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
module Demo
|
135
|
+
def Demo.run(frame,nb,log)
|
136
|
+
win = TestPanel.new(nb,log)
|
137
|
+
return win
|
138
|
+
end
|
139
|
+
|
140
|
+
def Demo.overview
|
141
|
+
"A TextCtrl allows text to be displayed and (possibly) edited. It may be single" +
|
142
|
+
"line or multi-line, support styles or not, be read-only or not, and even supports" +
|
143
|
+
"text masking for such things as passwords."
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
if __FILE__ == $0
|
148
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
149
|
+
load run_solo_lib
|
150
|
+
run File.basename($0)
|
151
|
+
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'wx'
|
5
|
-
rescue LoadError => no_wx_err
|
6
|
-
begin
|
7
|
-
require 'rubygems'
|
8
|
-
require 'wx'
|
9
|
-
rescue LoadError
|
10
|
-
raise no_wx_err
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module Demo
|
15
|
-
def Demo.run(frame, nb, log)
|
16
|
-
dlg = Wx::TextEntryDialog.new(frame, "What is your favorite programming language?", "Duh??", "Ruby")
|
17
|
-
dlg.set_value("Ruby is the best!")
|
18
|
-
if dlg.show_modal() == Wx::ID_OK
|
19
|
-
log.write_text("You entered: " + dlg.get_value().to_s + "\n")
|
20
|
-
end
|
21
|
-
dlg.destroy()
|
22
|
-
return nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def Demo.overview
|
26
|
-
return "This dialog allows the user to input text"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
if __FILE__ == $0
|
31
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
32
|
-
load run_solo_lib
|
33
|
-
run File.basename($0)
|
34
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'wx'
|
5
|
+
rescue LoadError => no_wx_err
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
require 'wx'
|
9
|
+
rescue LoadError
|
10
|
+
raise no_wx_err
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Demo
|
15
|
+
def Demo.run(frame, nb, log)
|
16
|
+
dlg = Wx::TextEntryDialog.new(frame, "What is your favorite programming language?", "Duh??", "Ruby")
|
17
|
+
dlg.set_value("Ruby is the best!")
|
18
|
+
if dlg.show_modal() == Wx::ID_OK
|
19
|
+
log.write_text("You entered: " + dlg.get_value().to_s + "\n")
|
20
|
+
end
|
21
|
+
dlg.destroy()
|
22
|
+
return nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def Demo.overview
|
26
|
+
return "This dialog allows the user to input text"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
if __FILE__ == $0
|
31
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
32
|
+
load run_solo_lib
|
33
|
+
run File.basename($0)
|
34
|
+
end
|