wxruby 1.9.9-x86-mingw32 → 1.9.10-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/LICENSE +53 -53
  2. data/README +297 -297
  3. data/lib/wx.rb +53 -53
  4. data/lib/wx/classes/bitmap.rb +29 -1
  5. data/lib/wx/classes/clipboard.rb +19 -3
  6. data/lib/wx/classes/colour.rb +6 -4
  7. data/lib/wx/classes/data_object.rb +14 -0
  8. data/lib/wx/classes/data_object_simple.rb +6 -0
  9. data/lib/wx/classes/dataformat.rb +23 -0
  10. data/lib/wx/classes/evthandler.rb +31 -4
  11. data/lib/wx/classes/genericdirctrl.rb +36 -0
  12. data/lib/wx/classes/grid.rb +8 -0
  13. data/lib/wx/classes/hboxsizer.rb +6 -0
  14. data/lib/wx/classes/icon.rb +12 -1
  15. data/lib/wx/classes/image.rb +13 -1
  16. data/lib/wx/classes/listctrl.rb +12 -0
  17. data/lib/wx/classes/point.rb +8 -0
  18. data/lib/wx/classes/rect.rb +10 -1
  19. data/lib/wx/classes/richtextctrl.rb +22 -0
  20. data/lib/wx/classes/size.rb +9 -0
  21. data/lib/wx/classes/sizer.rb +18 -3
  22. data/lib/wx/classes/toolbar.rb +4 -6
  23. data/lib/wx/classes/vboxsizer.rb +6 -0
  24. data/lib/wx/classes/window.rb +7 -0
  25. data/lib/wx/classes/xmlresource.rb +17 -0
  26. data/lib/wx/helpers.rb +16 -1
  27. data/lib/wx/keyword_ctors.rb +3 -2
  28. data/lib/wx/keyword_defs.rb +27 -5
  29. data/lib/wx/version.rb +1 -1
  30. data/lib/wxruby2.so +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +17 -17
  32. data/samples/bigdemo/About.rbw +39 -39
  33. data/samples/bigdemo/ColorPanel.rbw +23 -23
  34. data/samples/bigdemo/GridSimple.rbw +78 -78
  35. data/samples/bigdemo/MDIDemo.rbw +57 -57
  36. data/samples/bigdemo/PopupMenu.rbw +149 -149
  37. data/samples/bigdemo/Sizers.rbw +543 -543
  38. data/samples/bigdemo/bigdemo.rb +823 -823
  39. data/samples/bigdemo/demoTemplate.rbw +33 -33
  40. data/samples/bigdemo/icons/choice.xpm +27 -27
  41. data/samples/bigdemo/icons/combo.xpm +27 -27
  42. data/samples/bigdemo/icons/copy.xpm +25 -25
  43. data/samples/bigdemo/icons/cut.xpm +24 -24
  44. data/samples/bigdemo/icons/gauge.xpm +27 -27
  45. data/samples/bigdemo/icons/help.xpm +25 -25
  46. data/samples/bigdemo/icons/list.xpm +27 -27
  47. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  48. data/samples/bigdemo/icons/new.xpm +24 -24
  49. data/samples/bigdemo/icons/ogl.ico +0 -0
  50. data/samples/bigdemo/icons/ogl.xpm +45 -45
  51. data/samples/bigdemo/icons/open.xpm +26 -26
  52. data/samples/bigdemo/icons/paste.xpm +38 -38
  53. data/samples/bigdemo/icons/preview.xpm +26 -26
  54. data/samples/bigdemo/icons/print.xpm +26 -26
  55. data/samples/bigdemo/icons/radio.xpm +27 -27
  56. data/samples/bigdemo/icons/robert.xpm +415 -415
  57. data/samples/bigdemo/icons/save.xpm +25 -25
  58. data/samples/bigdemo/icons/smiles.xpm +39 -39
  59. data/samples/bigdemo/icons/smiley.xpm +42 -42
  60. data/samples/bigdemo/icons/stattext.xpm +24 -24
  61. data/samples/bigdemo/icons/test2.bmp +0 -0
  62. data/samples/bigdemo/icons/test2.xpm +79 -79
  63. data/samples/bigdemo/icons/text.xpm +27 -27
  64. data/samples/bigdemo/icons/tog1.xpm +38 -38
  65. data/samples/bigdemo/icons/tog2.xpm +38 -38
  66. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  67. data/samples/bigdemo/tips.txt +7 -7
  68. data/samples/bigdemo/utils.rb +11 -11
  69. data/samples/bigdemo/wxButton.rbw +64 -64
  70. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -60
  71. data/samples/bigdemo/wxCheckBox.rbw +50 -50
  72. data/samples/bigdemo/wxCheckListBox.rbw +65 -75
  73. data/samples/bigdemo/wxChoice.rbw +47 -47
  74. data/samples/bigdemo/wxColourDialog.rbw +31 -31
  75. data/samples/bigdemo/wxComboBox.rbw +77 -77
  76. data/samples/bigdemo/wxDialog.rbw +74 -74
  77. data/samples/bigdemo/wxDirDialog.rbw +29 -29
  78. data/samples/bigdemo/wxFileDialog.rbw +37 -37
  79. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -35
  80. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -82
  81. data/samples/bigdemo/wxFontDialog.rbw +173 -173
  82. data/samples/bigdemo/wxFrame.rbw +53 -53
  83. data/samples/bigdemo/wxGauge.rbw +71 -71
  84. data/samples/bigdemo/wxGrid.rbw +66 -66
  85. data/samples/bigdemo/wxListBox.rbw +140 -140
  86. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -107
  87. data/samples/bigdemo/wxMDIWindows.rbw +50 -50
  88. data/samples/bigdemo/wxMenu.rbw +236 -236
  89. data/samples/bigdemo/wxMessageDialog.rbw +27 -27
  90. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -32
  91. data/samples/bigdemo/wxNotebook.rbw +136 -136
  92. data/samples/bigdemo/wxProgressDialog.rbw +43 -43
  93. data/samples/bigdemo/wxRadioBox.rbw +72 -72
  94. data/samples/bigdemo/wxRadioButton.rbw +125 -125
  95. data/samples/bigdemo/wxSashWindow.rbw +2 -2
  96. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -57
  97. data/samples/bigdemo/wxScrolledWindow.rbw +199 -199
  98. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -33
  99. data/samples/bigdemo/wxSlider.rbw +42 -42
  100. data/samples/bigdemo/wxSpinButton.rbw +50 -50
  101. data/samples/bigdemo/wxSpinCtrl.rbw +51 -51
  102. data/samples/bigdemo/wxSplitterWindow.rbw +63 -63
  103. data/samples/bigdemo/wxStaticBitmap.rbw +51 -51
  104. data/samples/bigdemo/wxStaticText.rbw +55 -55
  105. data/samples/bigdemo/wxStatusBar.rbw +126 -126
  106. data/samples/bigdemo/wxTextCtrl.rbw +149 -149
  107. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -31
  108. data/samples/bigdemo/wxToggleButton.rbw +49 -49
  109. data/samples/bigdemo/wxToolBar.rbw +131 -131
  110. data/samples/bigdemo/wxTreeCtrl.rbw +191 -190
  111. data/samples/calendar/calendar.rb +256 -271
  112. data/samples/caret/caret.rb +282 -282
  113. data/samples/caret/mondrian.xpm +44 -44
  114. data/samples/controls/controls.rb +1136 -1136
  115. data/samples/controls/get_item_sample.rb +87 -87
  116. data/samples/controls/icons/choice.xpm +27 -27
  117. data/samples/controls/icons/combo.xpm +27 -27
  118. data/samples/controls/icons/gauge.xpm +27 -27
  119. data/samples/controls/icons/list.xpm +27 -27
  120. data/samples/controls/icons/radio.xpm +27 -27
  121. data/samples/controls/icons/stattext.xpm +24 -24
  122. data/samples/controls/icons/text.xpm +27 -27
  123. data/samples/controls/mondrian.xpm +44 -44
  124. data/samples/dialogs/dialogs.rb +797 -723
  125. data/samples/dialogs/tips.txt +18 -18
  126. data/samples/drawing/images.rb +37 -37
  127. data/samples/etc/activation.rb +102 -102
  128. data/samples/etc/choice.rb +67 -67
  129. data/samples/etc/miniframe.rb +79 -79
  130. data/samples/etc/sash.rb +130 -130
  131. data/samples/etc/scrollwin.rb +110 -110
  132. data/samples/etc/system_settings.rb +252 -252
  133. data/samples/etc/toolbar_sizer_additem.rb +55 -0
  134. data/samples/etc/wizard.rb +74 -74
  135. data/samples/event/update_ui_event.rb +70 -0
  136. data/samples/grid/gridtablebase.rb +43 -29
  137. data/samples/listbook/listbook.rb +174 -174
  138. data/samples/listbook/listbook.xrc +370 -370
  139. data/samples/mdi/mdi.rb +85 -77
  140. data/samples/minimal/minimal.rb +77 -77
  141. data/samples/minimal/nothing.rb +16 -16
  142. data/samples/text/format-text-bold.png +0 -0
  143. data/samples/text/format-text-italic.png +0 -0
  144. data/samples/text/format-text-underline.png +0 -0
  145. data/samples/text/rich_textctrl.rb +98 -0
  146. data/samples/text/textctrl.rb +111 -113
  147. data/samples/text/unicode.rb +242 -242
  148. data/samples/text/utf8.txt +14 -14
  149. data/samples/treectrl/treectrl.rb +1166 -1174
  150. data/samples/xrc/samples.xrc +46 -46
  151. data/samples/xrc/xrc_sample.rb +76 -96
  152. metadata +15 -3
@@ -1,71 +1,71 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
- begin
5
- require 'rubygems'
6
- rescue LoadError
7
- end
8
- require 'wx'
9
-
10
-
11
-
12
- class TestPanel < Wx::Panel
13
- def initialize(parent, log)
14
- super(parent, -1)
15
- @log = log
16
- @count = 0
17
-
18
- Wx::StaticText.new( self, -1, "This example shows the wxGauge control.",
19
- Wx::Point.new(45,15))
20
-
21
- @g1 = Wx::Gauge.new( self, -1, 50,
22
- Wx::Point.new(110,50), Wx::Size.new(250,25))
23
- @g1.set_bezel_face(3)
24
- @g1.set_shadow_width(3)
25
-
26
- @g2 = Wx::Gauge.new( self, -1, 50,
27
- Wx::Point.new(110,95), Wx::Size.new(250,25),
28
- Wx::GA_HORIZONTAL|Wx::GA_SMOOTH)
29
- @g2.set_bezel_face(5)
30
- @g2.set_shadow_width(5)
31
-
32
- @g3 = Wx::Gauge.new( self, -1, 50,
33
- Wx::Point.new(110, 140), Wx::Size.new(25,250),
34
- Wx::GA_VERTICAL)
35
- @g3.set_bezel_face(3)
36
- @g3.set_shadow_width(3)
37
-
38
- # start a timer to move the gauges forward every 1/4 s
39
- timer = Wx::Timer.new(self, 5001)
40
- evt_timer(5001) { move_gauges }
41
- timer.start(250)
42
- end
43
-
44
- # advance the gauges
45
- def move_gauges
46
- @count +=1
47
- if @count > 50
48
- @count = 0
49
- end
50
- @g1.set_value(@count)
51
- @g2.set_value(@count)
52
- @g3.set_value(@count)
53
- end
54
- end
55
-
56
- module Demo
57
- def Demo.run(frame, nb, log)
58
- win = TestPanel.new(nb, log)
59
- return win
60
- end
61
-
62
- def Demo.overview
63
- return "A gauge is a horizontal or vertical bar which shows a quantity (often time). "
64
- end
65
- end
66
-
67
- if __FILE__ == $0
68
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
69
- load run_solo_lib
70
- run File.basename($0)
71
- end
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+
11
+
12
+ class TestPanel < Wx::Panel
13
+ def initialize(parent, log)
14
+ super(parent, -1)
15
+ @log = log
16
+ @count = 0
17
+
18
+ Wx::StaticText.new( self, -1, "This example shows the wxGauge control.",
19
+ Wx::Point.new(45,15))
20
+
21
+ @g1 = Wx::Gauge.new( self, -1, 50,
22
+ Wx::Point.new(110,50), Wx::Size.new(250,25))
23
+ @g1.set_bezel_face(3)
24
+ @g1.set_shadow_width(3)
25
+
26
+ @g2 = Wx::Gauge.new( self, -1, 50,
27
+ Wx::Point.new(110,95), Wx::Size.new(250,25),
28
+ Wx::GA_HORIZONTAL|Wx::GA_SMOOTH)
29
+ @g2.set_bezel_face(5)
30
+ @g2.set_shadow_width(5)
31
+
32
+ @g3 = Wx::Gauge.new( self, -1, 50,
33
+ Wx::Point.new(110, 140), Wx::Size.new(25,250),
34
+ Wx::GA_VERTICAL)
35
+ @g3.set_bezel_face(3)
36
+ @g3.set_shadow_width(3)
37
+
38
+ # start a timer to move the gauges forward every 1/4 s
39
+ timer = Wx::Timer.new(self, 5001)
40
+ evt_timer(5001) { move_gauges }
41
+ timer.start(250)
42
+ end
43
+
44
+ # advance the gauges
45
+ def move_gauges
46
+ @count +=1
47
+ if @count > 50
48
+ @count = 0
49
+ end
50
+ @g1.set_value(@count)
51
+ @g2.set_value(@count)
52
+ @g3.set_value(@count)
53
+ end
54
+ end
55
+
56
+ module Demo
57
+ def Demo.run(frame, nb, log)
58
+ win = TestPanel.new(nb, log)
59
+ return win
60
+ end
61
+
62
+ def Demo.overview
63
+ return "A gauge is a horizontal or vertical bar which shows a quantity (often time). "
64
+ end
65
+ end
66
+
67
+ if __FILE__ == $0
68
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
69
+ load run_solo_lib
70
+ run File.basename($0)
71
+ end
@@ -1,66 +1,66 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
- begin
5
- require 'rubygems'
6
- rescue LoadError
7
- end
8
- require 'wx'
9
-
10
-
11
-
12
- $buttonDefs = {
13
- 814 => ['GridSimple', ' Simple wxGrid'] # , catching all events '] ,
14
- # 815 => ['GridStdEdRend', ' wxGrid showing Editors and Renderers '],
15
- # 818 => ['GridHugeTable', ' A wxGrid with a HUGE table [100 MILLION cells!] '],
16
- # 817 => ['GridCustTable', ' wxGrid using a custom Table, with non-string data '],
17
- # 819 => ['GridEnterHandler',' Remapping keys to behave differently '],
18
- # 820 => ['GridCustEditor', ' Shows how to create a custom Cell Editor '],
19
- # 821 => ['GridDragable', ' A wxGrid with dragable rows and columns '],
20
- # 822 => ['GridDragAndDrop', 'Shows how to make a grid a drop target for files'],
21
- }
22
-
23
- class ButtonPanel < Wx::Panel
24
- def initialize(parent, log)
25
- super(parent, -1)
26
- @log = log
27
-
28
- box = Wx::BoxSizer.new(Wx::VERTICAL)
29
- box.add(20,30)
30
- keys = $buttonDefs.keys().sort()
31
- keys.each do |key|
32
- text = $buttonDefs[key][1]
33
- btn = Wx::Button.new(self, key, text)
34
- box.add(btn, 0, Wx::ALIGN_CENTER | Wx::ALL, 10)
35
- evt_button(key) {|event| on_button(event)}
36
- end
37
- set_sizer(box)
38
- end
39
-
40
- def on_button(event)
41
- modName = $buttonDefs[event.get_id()][0]
42
- mod_file = File.join(File.dirname(__FILE__), modName + ".rbw")
43
- load mod_file
44
-
45
- frame = GridDemo::TestFrame.new(nil, @log)
46
- frame.show()
47
- end
48
- end
49
-
50
- module Demo
51
- def Demo.run(frame,nb,log)
52
- win = ButtonPanel.new(nb, log)
53
- return win
54
- end
55
-
56
- def Demo.overview
57
- "A simple grid."
58
- end
59
- end
60
-
61
-
62
- if __FILE__ == $0
63
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
64
- load run_solo_lib
65
- run File.basename($0)
66
- end
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+
11
+
12
+ $buttonDefs = {
13
+ 814 => ['GridSimple', ' Simple wxGrid'] # , catching all events '] ,
14
+ # 815 => ['GridStdEdRend', ' wxGrid showing Editors and Renderers '],
15
+ # 818 => ['GridHugeTable', ' A wxGrid with a HUGE table [100 MILLION cells!] '],
16
+ # 817 => ['GridCustTable', ' wxGrid using a custom Table, with non-string data '],
17
+ # 819 => ['GridEnterHandler',' Remapping keys to behave differently '],
18
+ # 820 => ['GridCustEditor', ' Shows how to create a custom Cell Editor '],
19
+ # 821 => ['GridDragable', ' A wxGrid with dragable rows and columns '],
20
+ # 822 => ['GridDragAndDrop', 'Shows how to make a grid a drop target for files'],
21
+ }
22
+
23
+ class ButtonPanel < Wx::Panel
24
+ def initialize(parent, log)
25
+ super(parent, -1)
26
+ @log = log
27
+
28
+ box = Wx::BoxSizer.new(Wx::VERTICAL)
29
+ box.add(20,30)
30
+ keys = $buttonDefs.keys().sort()
31
+ keys.each do |key|
32
+ text = $buttonDefs[key][1]
33
+ btn = Wx::Button.new(self, key, text)
34
+ box.add(btn, 0, Wx::ALIGN_CENTER | Wx::ALL, 10)
35
+ evt_button(key) {|event| on_button(event)}
36
+ end
37
+ set_sizer(box)
38
+ end
39
+
40
+ def on_button(event)
41
+ modName = $buttonDefs[event.get_id()][0]
42
+ mod_file = File.join(File.dirname(__FILE__), modName + ".rbw")
43
+ load mod_file
44
+
45
+ frame = GridDemo::TestFrame.new(nil, @log)
46
+ frame.show()
47
+ end
48
+ end
49
+
50
+ module Demo
51
+ def Demo.run(frame,nb,log)
52
+ win = ButtonPanel.new(nb, log)
53
+ return win
54
+ end
55
+
56
+ def Demo.overview
57
+ "A simple grid."
58
+ end
59
+ end
60
+
61
+
62
+ if __FILE__ == $0
63
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
64
+ load run_solo_lib
65
+ run File.basename($0)
66
+ end
@@ -1,140 +1,140 @@
1
- #!/usr/bin/env ruby
2
- # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
- # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
- begin
5
- require 'rubygems'
6
- rescue LoadError
7
- end
8
- require 'wx'
9
-
10
-
11
-
12
- class FindPrefixListBox < Wx::ListBox
13
- def initialize(parent, id, pos=Wx::DEFAULT_POSITION, size=Wx::DEFAULT_SIZE, choices=[], style=0)
14
- super(parent, id, pos, size, choices, style)
15
- @typedText = ""
16
- @log = parent.log
17
- evt_key_down {|event| on_key(event)}
18
- end
19
-
20
- def find_prefix(prefix)
21
- @log.write_text("Looking for prefix: " + prefix.to_s)
22
- if prefix
23
- prefix.downcase!
24
- length = prefix.length
25
- 0.upto(get_count) do |x|
26
- text = get_string(x).to_s.downcase
27
- if text[0,length] == prefix
28
- @log.write_text("Prefix " + prefix + " is found.")
29
- return x
30
- end
31
- end
32
- end
33
- @log.write_text("Prefix " + prefix + " is not found.")
34
- return -1
35
- end
36
-
37
- def on_key(event)
38
- key = event.get_key_code
39
- if key >= 32 and key <= 127
40
- @typedText += key.chr
41
- item = find_prefix(@typedText)
42
- if item != -1
43
- set_selection(item)
44
- end
45
- elsif key == Wx::K_BACK # backspace removes one character and backs up
46
- @typedText = @typedText[0..-2]
47
- if not @typedText
48
- set_selection(0)
49
- else
50
- item = find_prefix(@typedText)
51
- if item != -1
52
- set_selection(item)
53
- end
54
- end
55
-
56
- else
57
- @typedText = ""
58
- event.skip
59
- end
60
- end
61
-
62
- def on_key_down(event)
63
-
64
- end
65
- end
66
-
67
- class TestListBox < Wx::Panel
68
- attr_reader :log
69
- def initialize(parent, log)
70
- @log = log
71
- super(parent, -1)
72
-
73
- sampleList = %w(zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen)
74
-
75
- Wx::StaticText.new(self, -1, "This example uses the wxListBox control.", Wx::Point.new(45,10))
76
-
77
- Wx::StaticText.new(self, -1, "Select one:", Wx::Point.new(15,50), Wx::Size.new(65,18))
78
- @lb1 = Wx::ListBox.new(self, 60, Wx::Point.new(80,50), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
79
- evt_listbox(@lb1.get_id) {|event| on_evt_listbox(event)}
80
- evt_listbox_dclick(@lb1.get_id) {|event| on_evt_listbox_dclick(event)}
81
- @lb1.set_selection(3)
82
- @lb1.append("with data", "This one has data")
83
- @lb1.set_client_data(2, "This one has data")
84
-
85
- Wx::StaticText.new(self, -1, "Select many:", Wx::Point.new(200,50), Wx::Size.new(65,18))
86
- @lb2 = Wx::ListBox.new(self, 70, Wx::Point.new(280,50), Wx::Size.new(80,120), sampleList, Wx::LB_EXTENDED)
87
- evt_listbox(@lb2.get_id) {|event| on_evt_multi_listbox(event)}
88
- @lb2.evt_right_up {|event| on_evt_right_button(event)}
89
- @lb2.set_selection(0)
90
-
91
- sampleList += ["test a", "test aa", "test aab", "test ab", "test abc", "test abcc", "test abcd"]
92
- sampleList.sort!
93
- Wx::StaticText.new(self, -1, "Find typed prefix:", Wx::Point.new(15,250))
94
- fp = FindPrefixListBox.new(self, -1, Wx::Point.new(110,250), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
95
- fp.set_selection(0)
96
- end
97
-
98
- def on_evt_listbox(event)
99
- @log.write_text("evt_listbox: #{event.get_string}, #{event.is_selection}, #{event.get_selection}, #{event.get_client_data}")
100
- end
101
-
102
- def on_evt_listbox_dclick(event)
103
- @log.write_text("evt_listbox_dclick: " + @lb1.get_selection.to_s)
104
- @lb1.delete(@lb1.get_selection)
105
- end
106
-
107
- def on_evt_multi_listbox(event)
108
- @log.write_text("evt_multi_listbox: (" +
109
- @lb2.get_selections.join(',') + ")")
110
- end
111
-
112
- def on_evt_right_button(event)
113
- @log.write_text("evt_right_button: " + event.get_position.to_s)
114
- if event.get_event_object.get_id == 70
115
- selections = @lb2.get_selections
116
- selections.reverse!
117
- selections.each do |index|
118
- @lb2.delete(index)
119
- end
120
- end
121
- end
122
- end
123
-
124
- module Demo
125
- def Demo.run(frame,nb,log)
126
- win = TestListBox.new(nb, log)
127
- return win
128
- end
129
-
130
- def Demo.overview
131
- "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)."
132
- end
133
- end
134
-
135
-
136
- if __FILE__ == $0
137
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
138
- load run_solo_lib
139
- run File.basename($0)
140
- end
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+
11
+
12
+ class FindPrefixListBox < Wx::ListBox
13
+ def initialize(parent, id, pos=Wx::DEFAULT_POSITION, size=Wx::DEFAULT_SIZE, choices=[], style=0)
14
+ super(parent, id, pos, size, choices, style)
15
+ @typedText = ""
16
+ @log = parent.log
17
+ evt_key_down {|event| on_key(event)}
18
+ end
19
+
20
+ def find_prefix(prefix)
21
+ @log.write_text("Looking for prefix: " + prefix.to_s)
22
+ if prefix
23
+ prefix.downcase!
24
+ length = prefix.length
25
+ 0.upto(get_count) do |x|
26
+ text = get_string(x).to_s.downcase
27
+ if text[0,length] == prefix
28
+ @log.write_text("Prefix " + prefix + " is found.")
29
+ return x
30
+ end
31
+ end
32
+ end
33
+ @log.write_text("Prefix " + prefix + " is not found.")
34
+ return -1
35
+ end
36
+
37
+ def on_key(event)
38
+ key = event.get_key_code
39
+ if key >= 32 and key <= 127
40
+ @typedText += key.chr
41
+ item = find_prefix(@typedText)
42
+ if item != -1
43
+ set_selection(item)
44
+ end
45
+ elsif key == Wx::K_BACK # backspace removes one character and backs up
46
+ @typedText = @typedText[0..-2]
47
+ if not @typedText
48
+ set_selection(0)
49
+ else
50
+ item = find_prefix(@typedText)
51
+ if item != -1
52
+ set_selection(item)
53
+ end
54
+ end
55
+
56
+ else
57
+ @typedText = ""
58
+ event.skip
59
+ end
60
+ end
61
+
62
+ def on_key_down(event)
63
+
64
+ end
65
+ end
66
+
67
+ class TestListBox < Wx::Panel
68
+ attr_reader :log
69
+ def initialize(parent, log)
70
+ @log = log
71
+ super(parent, -1)
72
+
73
+ sampleList = %w(zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen)
74
+
75
+ Wx::StaticText.new(self, -1, "This example uses the wxListBox control.", Wx::Point.new(45,10))
76
+
77
+ Wx::StaticText.new(self, -1, "Select one:", Wx::Point.new(15,50), Wx::Size.new(65,18))
78
+ @lb1 = Wx::ListBox.new(self, 60, Wx::Point.new(80,50), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
79
+ evt_listbox(@lb1.get_id) {|event| on_evt_listbox(event)}
80
+ evt_listbox_dclick(@lb1.get_id) {|event| on_evt_listbox_dclick(event)}
81
+ @lb1.set_selection(3)
82
+ @lb1.append("with data", "This one has data")
83
+ @lb1.set_client_data(2, "This one has data")
84
+
85
+ Wx::StaticText.new(self, -1, "Select many:", Wx::Point.new(200,50), Wx::Size.new(65,18))
86
+ @lb2 = Wx::ListBox.new(self, 70, Wx::Point.new(280,50), Wx::Size.new(80,120), sampleList, Wx::LB_EXTENDED)
87
+ evt_listbox(@lb2.get_id) {|event| on_evt_multi_listbox(event)}
88
+ @lb2.evt_right_up {|event| on_evt_right_button(event)}
89
+ @lb2.set_selection(0)
90
+
91
+ sampleList += ["test a", "test aa", "test aab", "test ab", "test abc", "test abcc", "test abcd"]
92
+ sampleList.sort!
93
+ Wx::StaticText.new(self, -1, "Find typed prefix:", Wx::Point.new(15,250))
94
+ fp = FindPrefixListBox.new(self, -1, Wx::Point.new(110,250), Wx::Size.new(80,120), sampleList, Wx::LB_SINGLE)
95
+ fp.set_selection(0)
96
+ end
97
+
98
+ def on_evt_listbox(event)
99
+ @log.write_text("evt_listbox: #{event.get_string}, #{event.is_selection}, #{event.get_selection}, #{event.get_client_data}")
100
+ end
101
+
102
+ def on_evt_listbox_dclick(event)
103
+ @log.write_text("evt_listbox_dclick: " + @lb1.get_selection.to_s)
104
+ @lb1.delete(@lb1.get_selection)
105
+ end
106
+
107
+ def on_evt_multi_listbox(event)
108
+ @log.write_text("evt_multi_listbox: (" +
109
+ @lb2.get_selections.join(',') + ")")
110
+ end
111
+
112
+ def on_evt_right_button(event)
113
+ @log.write_text("evt_right_button: " + event.get_position.to_s)
114
+ if event.get_event_object.get_id == 70
115
+ selections = @lb2.get_selections
116
+ selections.reverse!
117
+ selections.each do |index|
118
+ @lb2.delete(index)
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ module Demo
125
+ def Demo.run(frame,nb,log)
126
+ win = TestListBox.new(nb, log)
127
+ return win
128
+ end
129
+
130
+ def Demo.overview
131
+ "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)."
132
+ end
133
+ end
134
+
135
+
136
+ if __FILE__ == $0
137
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
138
+ load run_solo_lib
139
+ run File.basename($0)
140
+ end