wxruby 1.9.2-i386-mswin32 → 1.9.3-i386-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/LICENSE +53 -53
  2. data/README +299 -299
  3. data/lib/wx/classes/app.rb +6 -0
  4. data/lib/wx/classes/checklistbox.rb +45 -30
  5. data/lib/wx/classes/clipboard.rb +16 -0
  6. data/lib/wx/classes/event.rb +5 -0
  7. data/lib/wx/classes/evthandler.rb +20 -10
  8. data/lib/wx/classes/grid.rb +38 -39
  9. data/lib/wx/classes/listctrl.rb +12 -0
  10. data/lib/wx/classes/mediactrl.rb +22 -0
  11. data/lib/wx/classes/menu.rb +6 -6
  12. data/lib/wx/classes/sound.rb +23 -0
  13. data/lib/wx/classes/styledtextctrl.rb +2 -2
  14. data/lib/wx/classes/treectrl.rb +26 -0
  15. data/lib/wx/keyword_ctors.rb +19 -5
  16. data/lib/wx/keyword_defs.rb +20 -0
  17. data/lib/wx/version.rb +1 -1
  18. data/lib/wx.rb +42 -42
  19. data/lib/wxruby2.exp +0 -0
  20. data/lib/wxruby2.lib +0 -0
  21. data/lib/wxruby2.so +0 -0
  22. data/samples/SAMPLES-LICENSE.TXT +17 -17
  23. data/samples/aui/aui.rb +8 -1
  24. data/samples/bigdemo/About.rbw +39 -39
  25. data/samples/bigdemo/ColorPanel.rbw +25 -25
  26. data/samples/bigdemo/GridSimple.rbw +80 -80
  27. data/samples/bigdemo/MDIDemo.rbw +59 -59
  28. data/samples/bigdemo/PopupMenu.rbw +151 -151
  29. data/samples/bigdemo/Sizers.rbw +545 -545
  30. data/samples/bigdemo/bigdemo.rb +826 -826
  31. data/samples/bigdemo/demoTemplate.rbw +37 -37
  32. data/samples/bigdemo/icons/choice.xpm +27 -27
  33. data/samples/bigdemo/icons/combo.xpm +27 -27
  34. data/samples/bigdemo/icons/copy.xpm +25 -25
  35. data/samples/bigdemo/icons/cut.xpm +24 -24
  36. data/samples/bigdemo/icons/gauge.xpm +27 -27
  37. data/samples/bigdemo/icons/help.xpm +25 -25
  38. data/samples/bigdemo/icons/list.xpm +27 -27
  39. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  40. data/samples/bigdemo/icons/new.xpm +24 -24
  41. data/samples/bigdemo/icons/ogl.ico +0 -0
  42. data/samples/bigdemo/icons/ogl.xpm +45 -45
  43. data/samples/bigdemo/icons/open.xpm +26 -26
  44. data/samples/bigdemo/icons/paste.xpm +38 -38
  45. data/samples/bigdemo/icons/preview.xpm +26 -26
  46. data/samples/bigdemo/icons/print.xpm +26 -26
  47. data/samples/bigdemo/icons/radio.xpm +27 -27
  48. data/samples/bigdemo/icons/robert.xpm +415 -415
  49. data/samples/bigdemo/icons/save.xpm +25 -25
  50. data/samples/bigdemo/icons/smiles.xpm +39 -39
  51. data/samples/bigdemo/icons/smiley.xpm +42 -42
  52. data/samples/bigdemo/icons/stattext.xpm +24 -24
  53. data/samples/bigdemo/icons/test2.bmp +0 -0
  54. data/samples/bigdemo/icons/test2.xpm +79 -79
  55. data/samples/bigdemo/icons/text.xpm +27 -27
  56. data/samples/bigdemo/icons/tog1.xpm +38 -38
  57. data/samples/bigdemo/icons/tog2.xpm +38 -38
  58. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  59. data/samples/bigdemo/tips.txt +7 -7
  60. data/samples/bigdemo/utils.rb +11 -11
  61. data/samples/bigdemo/wxButton.rbw +66 -66
  62. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  63. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  64. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  65. data/samples/bigdemo/wxChoice.rbw +49 -49
  66. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  67. data/samples/bigdemo/wxComboBox.rbw +79 -79
  68. data/samples/bigdemo/wxDialog.rbw +92 -92
  69. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  70. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  71. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  72. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  73. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  74. data/samples/bigdemo/wxFrame.rbw +55 -55
  75. data/samples/bigdemo/wxGauge.rbw +73 -73
  76. data/samples/bigdemo/wxGrid.rbw +68 -68
  77. data/samples/bigdemo/wxListBox.rbw +142 -142
  78. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  79. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  80. data/samples/bigdemo/wxMenu.rbw +238 -238
  81. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  82. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  83. data/samples/bigdemo/wxNotebook.rbw +138 -138
  84. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  85. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  86. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  87. data/samples/bigdemo/wxSashWindow.rbw +94 -104
  88. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  89. data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
  90. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  91. data/samples/bigdemo/wxSlider.rbw +44 -44
  92. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  93. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  94. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  95. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  96. data/samples/bigdemo/wxStaticText.rbw +57 -57
  97. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  98. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  99. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  100. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  101. data/samples/bigdemo/wxToolBar.rbw +133 -133
  102. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  103. data/samples/calendar/calendar.rb +275 -275
  104. data/samples/caret/caret.rb +286 -286
  105. data/samples/caret/mondrian.xpm +44 -44
  106. data/samples/controls/controls.rb +1140 -1140
  107. data/samples/controls/get_item_sample.rb +87 -87
  108. data/samples/controls/icons/choice.xpm +27 -27
  109. data/samples/controls/icons/combo.xpm +27 -27
  110. data/samples/controls/icons/gauge.xpm +27 -27
  111. data/samples/controls/icons/list.xpm +27 -27
  112. data/samples/controls/icons/radio.xpm +27 -27
  113. data/samples/controls/icons/stattext.xpm +24 -24
  114. data/samples/controls/icons/text.xpm +27 -27
  115. data/samples/controls/mondrian.xpm +44 -44
  116. data/samples/dialogs/dialogs.rb +724 -724
  117. data/samples/dialogs/tips.txt +18 -18
  118. data/samples/drawing/graphics_drawing.rb +232 -0
  119. data/samples/{images → drawing}/images.rb +48 -48
  120. data/samples/{images → drawing}/paperclip.png +0 -0
  121. data/samples/etc/activation.rb +108 -108
  122. data/samples/etc/choice.rb +72 -72
  123. data/samples/etc/miniframe.rb +84 -84
  124. data/samples/etc/sash.rb +135 -135
  125. data/samples/etc/scrollwin.rb +116 -116
  126. data/samples/etc/system_settings.rb +258 -258
  127. data/samples/etc/wizard.rb +79 -79
  128. data/samples/grid/grid.rb +1 -0
  129. data/samples/listbook/listbook.rb +181 -181
  130. data/samples/listbook/listbook.xrc +370 -370
  131. data/samples/mdi/mdi.rb +87 -87
  132. data/samples/media/mediactrl.rb +173 -0
  133. data/samples/minimal/minimal.rb +85 -85
  134. data/samples/minimal/nothing.rb +21 -21
  135. data/samples/opengl/cube.rb +123 -0
  136. data/samples/sockets/SocketPackets.rb +27 -0
  137. data/samples/sockets/res/message-new.png +0 -0
  138. data/samples/sockets/res/user.png +0 -0
  139. data/samples/sockets/wxClient.rb +395 -0
  140. data/samples/sockets/wxServer.rb +422 -0
  141. data/samples/sockets/wxSocketGUI.rb +97 -0
  142. data/samples/text/textctrl.rb +124 -124
  143. data/samples/text/unicode.rb +238 -238
  144. data/samples/text/utf8.txt +14 -14
  145. data/samples/treectrl/treectrl.rb +1180 -1181
  146. data/samples/xrc/samples.xrc +46 -46
  147. data/samples/xrc/xrc_sample.rb +107 -107
  148. metadata +26 -9
  149. data/samples/images/Thumbs.db +0 -0
@@ -1,55 +1,55 @@
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
- include Wx
14
-
15
- class MyFrame < Frame
16
- def initialize
17
- super(nil, -1, "Wx::Frame demonstration",
18
- DEFAULT_POSITION, Size.new(350,200), DEFAULT_FRAME_STYLE)
19
- panel = Panel.new(self, -1)
20
-
21
- button = Button.new(panel, -1, "Close me", Point.new(15,15))
22
- evt_button( button.get_id ) { on_close_me }
23
- evt_close { | e | on_close_window(e) }
24
- end
25
-
26
- def on_close_me
27
- close(true)
28
- end
29
-
30
- def on_close_window(event)
31
-
32
- event.skip
33
- end
34
- end
35
-
36
- module Demo
37
- def Demo.run(frame, nb, log)
38
- win = MyFrame.new
39
- frame.otherWin = win
40
- win.center_on_parent(Wx::BOTH)
41
- win.show(true)
42
- end
43
-
44
- def Demo.overview
45
- return "This is the wxFrame Overview!"
46
-
47
- end
48
- end
49
-
50
-
51
- if __FILE__ == $0
52
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
53
- load run_solo_lib
54
- run File.basename($0)
55
- 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
+ include Wx
14
+
15
+ class MyFrame < Frame
16
+ def initialize
17
+ super(nil, -1, "Wx::Frame demonstration",
18
+ DEFAULT_POSITION, Size.new(350,200), DEFAULT_FRAME_STYLE)
19
+ panel = Panel.new(self, -1)
20
+
21
+ button = Button.new(panel, -1, "Close me", Point.new(15,15))
22
+ evt_button( button.get_id ) { on_close_me }
23
+ evt_close { | e | on_close_window(e) }
24
+ end
25
+
26
+ def on_close_me
27
+ close(true)
28
+ end
29
+
30
+ def on_close_window(event)
31
+
32
+ event.skip
33
+ end
34
+ end
35
+
36
+ module Demo
37
+ def Demo.run(frame, nb, log)
38
+ win = MyFrame.new
39
+ frame.otherWin = win
40
+ win.center_on_parent(Wx::BOTH)
41
+ win.show(true)
42
+ end
43
+
44
+ def Demo.overview
45
+ return "This is the wxFrame Overview!"
46
+
47
+ end
48
+ end
49
+
50
+
51
+ if __FILE__ == $0
52
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
53
+ load run_solo_lib
54
+ run File.basename($0)
55
+ end
@@ -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
@@ -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