wxruby 1.9.0-i386-mswin32 → 1.9.1-i386-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/wx.rb +42 -35
- data/lib/wx/accessors.rb +52 -0
- data/lib/wx/classes/evthandler.rb +36 -32
- data/lib/wx/classes/grid.rb +13 -13
- data/lib/wx/classes/point.rb +43 -0
- data/lib/wx/classes/size.rb +44 -0
- data/lib/wx/classes/styledtextctrl.rb +92 -0
- data/lib/wx/classes/textctrl.rb +14 -0
- data/lib/wx/classes/window.rb +4 -0
- data/lib/wx/keyword_ctors.rb +219 -0
- data/lib/wx/keyword_defs.rb +455 -0
- data/lib/wx/version.rb +1 -1
- 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/aui/aui.rb +6 -5
- 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 +196 -196
- 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 +296 -296
- 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/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/wizard.rb +81 -81
- data/samples/event/event.rb +184 -0
- data/samples/images/images.rb +48 -48
- data/samples/listbook/listbook.rb +183 -183
- data/samples/listbook/listbook.xrc +370 -370
- data/samples/mdi/mdi.rb +87 -87
- data/samples/minimal/minimal.rb +83 -95
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +46 -46
- data/samples/minimal/text.rb +35 -35
- data/samples/text/scintilla.rb +22 -28
- 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 +1210 -1210
- data/samples/xrc/samples.xrc +46 -46
- data/samples/xrc/xrc_sample.rb +107 -107
- metadata +13 -5
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.xpm +0 -44
data/samples/bigdemo/wxGauge.rbw
CHANGED
@@ -1,73 +1,73 @@
|
|
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
|
-
def initialize(parent, log)
|
16
|
-
super(parent, -1)
|
17
|
-
@log = log
|
18
|
-
@count = 0
|
19
|
-
|
20
|
-
Wx::StaticText.new( self, -1, "This example shows the wxGauge control.",
|
21
|
-
Wx::Point.new(45,15))
|
22
|
-
|
23
|
-
@g1 = Wx::Gauge.new( self, -1, 50,
|
24
|
-
Wx::Point.new(110,50), Wx::Size.new(250,25))
|
25
|
-
@g1.set_bezel_face(3)
|
26
|
-
@g1.set_shadow_width(3)
|
27
|
-
|
28
|
-
@g2 = Wx::Gauge.new( self, -1, 50,
|
29
|
-
Wx::Point.new(110,95), Wx::Size.new(250,25),
|
30
|
-
Wx::GA_HORIZONTAL|Wx::GA_SMOOTH)
|
31
|
-
@g2.set_bezel_face(5)
|
32
|
-
@g2.set_shadow_width(5)
|
33
|
-
|
34
|
-
@g3 = Wx::Gauge.new( self, -1, 50,
|
35
|
-
Wx::Point.new(110, 140), Wx::Size.new(25,250),
|
36
|
-
Wx::GA_VERTICAL)
|
37
|
-
@g3.set_bezel_face(3)
|
38
|
-
@g3.set_shadow_width(3)
|
39
|
-
|
40
|
-
# start a timer to move the gauges forward every 1/4 s
|
41
|
-
timer = Wx::Timer.new(self, 5001)
|
42
|
-
evt_timer(5001) { move_gauges }
|
43
|
-
timer.start(250)
|
44
|
-
end
|
45
|
-
|
46
|
-
# advance the gauges
|
47
|
-
def move_gauges
|
48
|
-
@count +=1
|
49
|
-
if @count > 50
|
50
|
-
@count = 0
|
51
|
-
end
|
52
|
-
@g1.set_value(@count)
|
53
|
-
@g2.set_value(@count)
|
54
|
-
@g3.set_value(@count)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
module Demo
|
59
|
-
def Demo.run(frame, nb, log)
|
60
|
-
win = TestPanel.new(nb, log)
|
61
|
-
return win
|
62
|
-
end
|
63
|
-
|
64
|
-
def Demo.overview
|
65
|
-
return "A gauge is a horizontal or vertical bar which shows a quantity (often time). "
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
if __FILE__ == $0
|
70
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
71
|
-
load run_solo_lib
|
72
|
-
run File.basename($0)
|
73
|
-
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
|
+
def initialize(parent, log)
|
16
|
+
super(parent, -1)
|
17
|
+
@log = log
|
18
|
+
@count = 0
|
19
|
+
|
20
|
+
Wx::StaticText.new( self, -1, "This example shows the wxGauge control.",
|
21
|
+
Wx::Point.new(45,15))
|
22
|
+
|
23
|
+
@g1 = Wx::Gauge.new( self, -1, 50,
|
24
|
+
Wx::Point.new(110,50), Wx::Size.new(250,25))
|
25
|
+
@g1.set_bezel_face(3)
|
26
|
+
@g1.set_shadow_width(3)
|
27
|
+
|
28
|
+
@g2 = Wx::Gauge.new( self, -1, 50,
|
29
|
+
Wx::Point.new(110,95), Wx::Size.new(250,25),
|
30
|
+
Wx::GA_HORIZONTAL|Wx::GA_SMOOTH)
|
31
|
+
@g2.set_bezel_face(5)
|
32
|
+
@g2.set_shadow_width(5)
|
33
|
+
|
34
|
+
@g3 = Wx::Gauge.new( self, -1, 50,
|
35
|
+
Wx::Point.new(110, 140), Wx::Size.new(25,250),
|
36
|
+
Wx::GA_VERTICAL)
|
37
|
+
@g3.set_bezel_face(3)
|
38
|
+
@g3.set_shadow_width(3)
|
39
|
+
|
40
|
+
# start a timer to move the gauges forward every 1/4 s
|
41
|
+
timer = Wx::Timer.new(self, 5001)
|
42
|
+
evt_timer(5001) { move_gauges }
|
43
|
+
timer.start(250)
|
44
|
+
end
|
45
|
+
|
46
|
+
# advance the gauges
|
47
|
+
def move_gauges
|
48
|
+
@count +=1
|
49
|
+
if @count > 50
|
50
|
+
@count = 0
|
51
|
+
end
|
52
|
+
@g1.set_value(@count)
|
53
|
+
@g2.set_value(@count)
|
54
|
+
@g3.set_value(@count)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module Demo
|
59
|
+
def Demo.run(frame, nb, log)
|
60
|
+
win = TestPanel.new(nb, log)
|
61
|
+
return win
|
62
|
+
end
|
63
|
+
|
64
|
+
def Demo.overview
|
65
|
+
return "A gauge is a horizontal or vertical bar which shows a quantity (often time). "
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if __FILE__ == $0
|
70
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
71
|
+
load run_solo_lib
|
72
|
+
run File.basename($0)
|
73
|
+
end
|
data/samples/bigdemo/wxGrid.rbw
CHANGED
@@ -1,68 +1,68 @@
|
|
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
|
-
$buttonDefs = {
|
15
|
-
814 => ['GridSimple', ' Simple wxGrid'] # , catching all events '] ,
|
16
|
-
# 815 => ['GridStdEdRend', ' wxGrid showing Editors and Renderers '],
|
17
|
-
# 818 => ['GridHugeTable', ' A wxGrid with a HUGE table [100 MILLION cells!] '],
|
18
|
-
# 817 => ['GridCustTable', ' wxGrid using a custom Table, with non-string data '],
|
19
|
-
# 819 => ['GridEnterHandler',' Remapping keys to behave differently '],
|
20
|
-
# 820 => ['GridCustEditor', ' Shows how to create a custom Cell Editor '],
|
21
|
-
# 821 => ['GridDragable', ' A wxGrid with dragable rows and columns '],
|
22
|
-
# 822 => ['GridDragAndDrop', 'Shows how to make a grid a drop target for files'],
|
23
|
-
}
|
24
|
-
|
25
|
-
class ButtonPanel < Wx::Panel
|
26
|
-
def initialize(parent, log)
|
27
|
-
super(parent, -1)
|
28
|
-
@log = log
|
29
|
-
|
30
|
-
box = Wx::BoxSizer.new(Wx::VERTICAL)
|
31
|
-
box.add(20,30)
|
32
|
-
keys = $buttonDefs.keys().sort()
|
33
|
-
keys.each do |key|
|
34
|
-
text = $buttonDefs[key][1]
|
35
|
-
btn = Wx::Button.new(self, key, text)
|
36
|
-
box.add(btn, 0, Wx::ALIGN_CENTER | Wx::ALL, 10)
|
37
|
-
evt_button(key) {|event| on_button(event)}
|
38
|
-
end
|
39
|
-
set_sizer(box)
|
40
|
-
end
|
41
|
-
|
42
|
-
def on_button(event)
|
43
|
-
modName = $buttonDefs[event.get_id()][0]
|
44
|
-
mod_file = File.join(File.dirname(__FILE__), modName + ".rbw")
|
45
|
-
load mod_file
|
46
|
-
|
47
|
-
frame = GridDemo::TestFrame.new(nil, @log)
|
48
|
-
frame.show()
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
module Demo
|
53
|
-
def Demo.run(frame,nb,log)
|
54
|
-
win = ButtonPanel.new(nb, log)
|
55
|
-
return win
|
56
|
-
end
|
57
|
-
|
58
|
-
def Demo.overview
|
59
|
-
"A simple grid."
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
if __FILE__ == $0
|
65
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
66
|
-
load run_solo_lib
|
67
|
-
run File.basename($0)
|
68
|
-
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
|
+
$buttonDefs = {
|
15
|
+
814 => ['GridSimple', ' Simple wxGrid'] # , catching all events '] ,
|
16
|
+
# 815 => ['GridStdEdRend', ' wxGrid showing Editors and Renderers '],
|
17
|
+
# 818 => ['GridHugeTable', ' A wxGrid with a HUGE table [100 MILLION cells!] '],
|
18
|
+
# 817 => ['GridCustTable', ' wxGrid using a custom Table, with non-string data '],
|
19
|
+
# 819 => ['GridEnterHandler',' Remapping keys to behave differently '],
|
20
|
+
# 820 => ['GridCustEditor', ' Shows how to create a custom Cell Editor '],
|
21
|
+
# 821 => ['GridDragable', ' A wxGrid with dragable rows and columns '],
|
22
|
+
# 822 => ['GridDragAndDrop', 'Shows how to make a grid a drop target for files'],
|
23
|
+
}
|
24
|
+
|
25
|
+
class ButtonPanel < Wx::Panel
|
26
|
+
def initialize(parent, log)
|
27
|
+
super(parent, -1)
|
28
|
+
@log = log
|
29
|
+
|
30
|
+
box = Wx::BoxSizer.new(Wx::VERTICAL)
|
31
|
+
box.add(20,30)
|
32
|
+
keys = $buttonDefs.keys().sort()
|
33
|
+
keys.each do |key|
|
34
|
+
text = $buttonDefs[key][1]
|
35
|
+
btn = Wx::Button.new(self, key, text)
|
36
|
+
box.add(btn, 0, Wx::ALIGN_CENTER | Wx::ALL, 10)
|
37
|
+
evt_button(key) {|event| on_button(event)}
|
38
|
+
end
|
39
|
+
set_sizer(box)
|
40
|
+
end
|
41
|
+
|
42
|
+
def on_button(event)
|
43
|
+
modName = $buttonDefs[event.get_id()][0]
|
44
|
+
mod_file = File.join(File.dirname(__FILE__), modName + ".rbw")
|
45
|
+
load mod_file
|
46
|
+
|
47
|
+
frame = GridDemo::TestFrame.new(nil, @log)
|
48
|
+
frame.show()
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
module Demo
|
53
|
+
def Demo.run(frame,nb,log)
|
54
|
+
win = ButtonPanel.new(nb, log)
|
55
|
+
return win
|
56
|
+
end
|
57
|
+
|
58
|
+
def Demo.overview
|
59
|
+
"A simple grid."
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
if __FILE__ == $0
|
65
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
66
|
+
load run_solo_lib
|
67
|
+
run File.basename($0)
|
68
|
+
end
|
@@ -1,142 +1,142 @@
|
|
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 FindPrefixListBox < Wx::ListBox
|
15
|
-
def initialize(parent, id, pos=Wx::DEFAULT_POSITION, size=Wx::DEFAULT_SIZE, choices=[], style=0)
|
16
|
-
super(parent, id, pos, size, choices, style)
|
17
|
-
@typedText = ""
|
18
|
-
@log = parent.log
|
19
|
-
evt_key_down {|event| on_key(event)}
|
20
|
-
end
|
21
|
-
|
22
|
-
def find_prefix(prefix)
|
23
|
-
@log.write_text("Looking for prefix: " + prefix.to_s)
|
24
|
-
if prefix
|
25
|
-
prefix.downcase!
|
26
|
-
length = prefix.length
|
27
|
-
0.upto(get_count) do |x|
|
28
|
-
text = get_string(x).to_s.downcase
|
29
|
-
if text[0,length] == prefix
|
30
|
-
@log.write_text("Prefix " + prefix + " is found.")
|
31
|
-
return x
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
@log.write_text("Prefix " + prefix + " is not found.")
|
36
|
-
return -1
|
37
|
-
end
|
38
|
-
|
39
|
-
def on_key(event)
|
40
|
-
key = event.get_key_code
|
41
|
-
if key >= 32 and key <= 127
|
42
|
-
@typedText += key.chr
|
43
|
-
item = find_prefix(@typedText)
|
44
|
-
if item != -1
|
45
|
-
set_selection(item)
|
46
|
-
end
|
47
|
-
elsif key == Wx::K_BACK # backspace removes one character and backs up
|
48
|
-
@typedText = @typedText[0..-2]
|
49
|
-
if not @typedText
|
50
|
-
set_selection(0)
|
51
|
-
else
|
52
|
-
item = find_prefix(@typedText)
|
53
|
-
if item != -1
|
54
|
-
set_selection(item)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
else
|
59
|
-
@typedText = ""
|
60
|
-
event.skip
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def on_key_down(event)
|
65
|
-
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
class TestListBox < Wx::Panel
|
70
|
-
attr_reader :log
|
71
|
-
def initialize(parent, log)
|
72
|
-
@log = log
|
73
|
-
super(parent, -1)
|
74
|
-
|
75
|
-
sampleList = %w(zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen)
|
76
|
-
|
77
|
-
Wx::StaticText.new(self, -1, "This example uses the wxListBox control.", Wx::Point.new(45,10))
|
78
|
-
|
79
|
-
Wx::StaticText.new(self, -1, "Select one:", Wx::Point.new(15,50), Wx::Size.new(65,18))
|
80
|
-
@lb1 = Wx::ListBox.new(self, 60, Wx::Point.new(80,50), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
|
81
|
-
evt_listbox(@lb1.get_id) {|event| on_evt_listbox(event)}
|
82
|
-
evt_listbox_dclick(@lb1.get_id) {|event| on_evt_listbox_dclick(event)}
|
83
|
-
@lb1.set_selection(3)
|
84
|
-
@lb1.append("with data", "This one has data")
|
85
|
-
@lb1.set_client_data(2, "This one has data")
|
86
|
-
|
87
|
-
Wx::StaticText.new(self, -1, "Select many:", Wx::Point.new(200,50), Wx::Size.new(65,18))
|
88
|
-
@lb2 = Wx::ListBox.new(self, 70, Wx::Point.new(280,50), Wx::Size.new(80,120), sampleList, Wx::LB_EXTENDED)
|
89
|
-
evt_listbox(@lb2.get_id) {|event| on_evt_multi_listbox(event)}
|
90
|
-
@lb2.evt_right_up {|event| on_evt_right_button(event)}
|
91
|
-
@lb2.set_selection(0)
|
92
|
-
|
93
|
-
sampleList += ["test a", "test aa", "test aab", "test ab", "test abc", "test abcc", "test abcd"]
|
94
|
-
sampleList.sort!
|
95
|
-
Wx::StaticText.new(self, -1, "Find typed prefix:", Wx::Point.new(15,250))
|
96
|
-
fp = FindPrefixListBox.new(self, -1, Wx::Point.new(110,250), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
|
97
|
-
fp.set_selection(0)
|
98
|
-
end
|
99
|
-
|
100
|
-
def on_evt_listbox(event)
|
101
|
-
@log.write_text("evt_listbox: #{event.get_string}, #{event.is_selection}, #{event.get_selection}, #{event.get_client_data}")
|
102
|
-
end
|
103
|
-
|
104
|
-
def on_evt_listbox_dclick(event)
|
105
|
-
@log.write_text("evt_listbox_dclick: " + @lb1.get_selection.to_s)
|
106
|
-
@lb1.delete(@lb1.get_selection)
|
107
|
-
end
|
108
|
-
|
109
|
-
def on_evt_multi_listbox(event)
|
110
|
-
@log.write_text("evt_multi_listbox: (" +
|
111
|
-
@lb2.get_selections.join(',') + ")")
|
112
|
-
end
|
113
|
-
|
114
|
-
def on_evt_right_button(event)
|
115
|
-
@log.write_text("evt_right_button: " + event.get_position.to_s)
|
116
|
-
if event.get_event_object.get_id == 70
|
117
|
-
selections = @lb2.get_selections
|
118
|
-
selections.reverse!
|
119
|
-
selections.each do |index|
|
120
|
-
@lb2.delete(index)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
module Demo
|
127
|
-
def Demo.run(frame,nb,log)
|
128
|
-
win = TestListBox.new(nb, log)
|
129
|
-
return win
|
130
|
-
end
|
131
|
-
|
132
|
-
def Demo.overview
|
133
|
-
"A listbox is used to select one or more of a list of strings. The strings are displayed in a scrolling box, with the selected string(s) marked in reverse video. A listbox can be single selection (if an item is selected, the previous selection is removed) or multiple selection (clicking an item toggles the item on or off independently of other selections)."
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
|
138
|
-
if __FILE__ == $0
|
139
|
-
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
140
|
-
load run_solo_lib
|
141
|
-
run File.basename($0)
|
142
|
-
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 FindPrefixListBox < Wx::ListBox
|
15
|
+
def initialize(parent, id, pos=Wx::DEFAULT_POSITION, size=Wx::DEFAULT_SIZE, choices=[], style=0)
|
16
|
+
super(parent, id, pos, size, choices, style)
|
17
|
+
@typedText = ""
|
18
|
+
@log = parent.log
|
19
|
+
evt_key_down {|event| on_key(event)}
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_prefix(prefix)
|
23
|
+
@log.write_text("Looking for prefix: " + prefix.to_s)
|
24
|
+
if prefix
|
25
|
+
prefix.downcase!
|
26
|
+
length = prefix.length
|
27
|
+
0.upto(get_count) do |x|
|
28
|
+
text = get_string(x).to_s.downcase
|
29
|
+
if text[0,length] == prefix
|
30
|
+
@log.write_text("Prefix " + prefix + " is found.")
|
31
|
+
return x
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
@log.write_text("Prefix " + prefix + " is not found.")
|
36
|
+
return -1
|
37
|
+
end
|
38
|
+
|
39
|
+
def on_key(event)
|
40
|
+
key = event.get_key_code
|
41
|
+
if key >= 32 and key <= 127
|
42
|
+
@typedText += key.chr
|
43
|
+
item = find_prefix(@typedText)
|
44
|
+
if item != -1
|
45
|
+
set_selection(item)
|
46
|
+
end
|
47
|
+
elsif key == Wx::K_BACK # backspace removes one character and backs up
|
48
|
+
@typedText = @typedText[0..-2]
|
49
|
+
if not @typedText
|
50
|
+
set_selection(0)
|
51
|
+
else
|
52
|
+
item = find_prefix(@typedText)
|
53
|
+
if item != -1
|
54
|
+
set_selection(item)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
else
|
59
|
+
@typedText = ""
|
60
|
+
event.skip
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def on_key_down(event)
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class TestListBox < Wx::Panel
|
70
|
+
attr_reader :log
|
71
|
+
def initialize(parent, log)
|
72
|
+
@log = log
|
73
|
+
super(parent, -1)
|
74
|
+
|
75
|
+
sampleList = %w(zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen)
|
76
|
+
|
77
|
+
Wx::StaticText.new(self, -1, "This example uses the wxListBox control.", Wx::Point.new(45,10))
|
78
|
+
|
79
|
+
Wx::StaticText.new(self, -1, "Select one:", Wx::Point.new(15,50), Wx::Size.new(65,18))
|
80
|
+
@lb1 = Wx::ListBox.new(self, 60, Wx::Point.new(80,50), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
|
81
|
+
evt_listbox(@lb1.get_id) {|event| on_evt_listbox(event)}
|
82
|
+
evt_listbox_dclick(@lb1.get_id) {|event| on_evt_listbox_dclick(event)}
|
83
|
+
@lb1.set_selection(3)
|
84
|
+
@lb1.append("with data", "This one has data")
|
85
|
+
@lb1.set_client_data(2, "This one has data")
|
86
|
+
|
87
|
+
Wx::StaticText.new(self, -1, "Select many:", Wx::Point.new(200,50), Wx::Size.new(65,18))
|
88
|
+
@lb2 = Wx::ListBox.new(self, 70, Wx::Point.new(280,50), Wx::Size.new(80,120), sampleList, Wx::LB_EXTENDED)
|
89
|
+
evt_listbox(@lb2.get_id) {|event| on_evt_multi_listbox(event)}
|
90
|
+
@lb2.evt_right_up {|event| on_evt_right_button(event)}
|
91
|
+
@lb2.set_selection(0)
|
92
|
+
|
93
|
+
sampleList += ["test a", "test aa", "test aab", "test ab", "test abc", "test abcc", "test abcd"]
|
94
|
+
sampleList.sort!
|
95
|
+
Wx::StaticText.new(self, -1, "Find typed prefix:", Wx::Point.new(15,250))
|
96
|
+
fp = FindPrefixListBox.new(self, -1, Wx::Point.new(110,250), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
|
97
|
+
fp.set_selection(0)
|
98
|
+
end
|
99
|
+
|
100
|
+
def on_evt_listbox(event)
|
101
|
+
@log.write_text("evt_listbox: #{event.get_string}, #{event.is_selection}, #{event.get_selection}, #{event.get_client_data}")
|
102
|
+
end
|
103
|
+
|
104
|
+
def on_evt_listbox_dclick(event)
|
105
|
+
@log.write_text("evt_listbox_dclick: " + @lb1.get_selection.to_s)
|
106
|
+
@lb1.delete(@lb1.get_selection)
|
107
|
+
end
|
108
|
+
|
109
|
+
def on_evt_multi_listbox(event)
|
110
|
+
@log.write_text("evt_multi_listbox: (" +
|
111
|
+
@lb2.get_selections.join(',') + ")")
|
112
|
+
end
|
113
|
+
|
114
|
+
def on_evt_right_button(event)
|
115
|
+
@log.write_text("evt_right_button: " + event.get_position.to_s)
|
116
|
+
if event.get_event_object.get_id == 70
|
117
|
+
selections = @lb2.get_selections
|
118
|
+
selections.reverse!
|
119
|
+
selections.each do |index|
|
120
|
+
@lb2.delete(index)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
module Demo
|
127
|
+
def Demo.run(frame,nb,log)
|
128
|
+
win = TestListBox.new(nb, log)
|
129
|
+
return win
|
130
|
+
end
|
131
|
+
|
132
|
+
def Demo.overview
|
133
|
+
"A listbox is used to select one or more of a list of strings. The strings are displayed in a scrolling box, with the selected string(s) marked in reverse video. A listbox can be single selection (if an item is selected, the previous selection is removed) or multiple selection (clicking an item toggles the item on or off independently of other selections)."
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
if __FILE__ == $0
|
139
|
+
run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
|
140
|
+
load run_solo_lib
|
141
|
+
run File.basename($0)
|
142
|
+
end
|