wxruby 1.9.0-powerpc-darwin8.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. data/lib/wx.rb +35 -0
  2. data/lib/wx/classes/app.rb +25 -0
  3. data/lib/wx/classes/artprovider.rb +31 -0
  4. data/lib/wx/classes/bitmap.rb +23 -0
  5. data/lib/wx/classes/choice.rb +4 -0
  6. data/lib/wx/classes/clientdc.rb +13 -0
  7. data/lib/wx/classes/colour.rb +47 -0
  8. data/lib/wx/classes/combobox.rb +4 -0
  9. data/lib/wx/classes/evthandler.rb +824 -0
  10. data/lib/wx/classes/font.rb +118 -0
  11. data/lib/wx/classes/grid.rb +130 -0
  12. data/lib/wx/classes/helpcontroller.rb +5 -0
  13. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  14. data/lib/wx/classes/htmlwindow.rb +6 -0
  15. data/lib/wx/classes/icon.rb +14 -0
  16. data/lib/wx/classes/image.rb +14 -0
  17. data/lib/wx/classes/listbox.rb +4 -0
  18. data/lib/wx/classes/locale.rb +28 -0
  19. data/lib/wx/classes/object.rb +7 -0
  20. data/lib/wx/classes/paintdc.rb +12 -0
  21. data/lib/wx/classes/point.rb +5 -0
  22. data/lib/wx/classes/previewframe.rb +13 -0
  23. data/lib/wx/classes/rect.rb +5 -0
  24. data/lib/wx/classes/size.rb +5 -0
  25. data/lib/wx/classes/texturlevent.rb +6 -0
  26. data/lib/wx/classes/timer.rb +69 -0
  27. data/lib/wx/classes/window.rb +38 -0
  28. data/lib/wx/classes/xmlresource.rb +16 -0
  29. data/lib/wx/version.rb +3 -0
  30. data/lib/wxruby2.bundle +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +18 -0
  32. data/samples/aui/aui.rb +1352 -0
  33. data/samples/bigdemo/About.rbw +39 -0
  34. data/samples/bigdemo/ColorPanel.rbw +25 -0
  35. data/samples/bigdemo/GridSimple.rbw +80 -0
  36. data/samples/bigdemo/MDIDemo.rbw +59 -0
  37. data/samples/bigdemo/PopupMenu.rbw +151 -0
  38. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  39. data/samples/bigdemo/Sizers.rbw +545 -0
  40. data/samples/bigdemo/bigdemo.rb +826 -0
  41. data/samples/bigdemo/demoTemplate.rbw +37 -0
  42. data/samples/bigdemo/helpfile.htb +0 -0
  43. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  44. data/samples/bigdemo/icons/Test 015.png +0 -0
  45. data/samples/bigdemo/icons/choice.bmp +0 -0
  46. data/samples/bigdemo/icons/choice.xpm +27 -0
  47. data/samples/bigdemo/icons/combo.bmp +0 -0
  48. data/samples/bigdemo/icons/combo.xpm +27 -0
  49. data/samples/bigdemo/icons/copy.xpm +25 -0
  50. data/samples/bigdemo/icons/cut.xpm +24 -0
  51. data/samples/bigdemo/icons/gauge.bmp +0 -0
  52. data/samples/bigdemo/icons/gauge.xpm +27 -0
  53. data/samples/bigdemo/icons/help.xpm +25 -0
  54. data/samples/bigdemo/icons/list.bmp +0 -0
  55. data/samples/bigdemo/icons/list.xpm +27 -0
  56. data/samples/bigdemo/icons/mondrian.ico +0 -0
  57. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  58. data/samples/bigdemo/icons/new.xpm +24 -0
  59. data/samples/bigdemo/icons/ogl.ico +0 -0
  60. data/samples/bigdemo/icons/ogl.xpm +45 -0
  61. data/samples/bigdemo/icons/open.xpm +26 -0
  62. data/samples/bigdemo/icons/paste.bmp +0 -0
  63. data/samples/bigdemo/icons/paste.xpm +38 -0
  64. data/samples/bigdemo/icons/pointy.png +0 -0
  65. data/samples/bigdemo/icons/preview.xpm +26 -0
  66. data/samples/bigdemo/icons/print.xpm +26 -0
  67. data/samples/bigdemo/icons/radio.bmp +0 -0
  68. data/samples/bigdemo/icons/radio.xpm +27 -0
  69. data/samples/bigdemo/icons/robert.xpm +415 -0
  70. data/samples/bigdemo/icons/ruby.png +0 -0
  71. data/samples/bigdemo/icons/sashtest.ico +0 -0
  72. data/samples/bigdemo/icons/save.xpm +25 -0
  73. data/samples/bigdemo/icons/smiles.bmp +0 -0
  74. data/samples/bigdemo/icons/smiles.xpm +39 -0
  75. data/samples/bigdemo/icons/smiley.ico +0 -0
  76. data/samples/bigdemo/icons/smiley.xpm +42 -0
  77. data/samples/bigdemo/icons/stattext.xpm +24 -0
  78. data/samples/bigdemo/icons/test2.bmp +0 -0
  79. data/samples/bigdemo/icons/test2.png +0 -0
  80. data/samples/bigdemo/icons/test2.xpm +79 -0
  81. data/samples/bigdemo/icons/text.bmp +0 -0
  82. data/samples/bigdemo/icons/text.xpm +27 -0
  83. data/samples/bigdemo/icons/tog1.bmp +0 -0
  84. data/samples/bigdemo/icons/tog1.xpm +38 -0
  85. data/samples/bigdemo/icons/tog2.bmp +0 -0
  86. data/samples/bigdemo/icons/tog2.xpm +38 -0
  87. data/samples/bigdemo/icons/wxwin.ico +0 -0
  88. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  89. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  90. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  91. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  92. data/samples/bigdemo/run.rb +94 -0
  93. data/samples/bigdemo/tips.txt +7 -0
  94. data/samples/bigdemo/utils.rb +12 -0
  95. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  96. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  97. data/samples/bigdemo/wxButton.rbw +66 -0
  98. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  99. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  100. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  101. data/samples/bigdemo/wxChoice.rbw +49 -0
  102. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  103. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  104. data/samples/bigdemo/wxComboBox.rbw +79 -0
  105. data/samples/bigdemo/wxCursor.rbw +140 -0
  106. data/samples/bigdemo/wxDialog.rbw +92 -0
  107. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  108. data/samples/bigdemo/wxDragImage.rbw +74 -0
  109. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  110. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  111. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  112. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  113. data/samples/bigdemo/wxFrame.rbw +55 -0
  114. data/samples/bigdemo/wxGauge.rbw +73 -0
  115. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  116. data/samples/bigdemo/wxGrid.rbw +68 -0
  117. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  118. data/samples/bigdemo/wxListBox.rbw +142 -0
  119. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  120. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  121. data/samples/bigdemo/wxMenu.rbw +238 -0
  122. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  123. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  124. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  125. data/samples/bigdemo/wxNotebook.rbw +138 -0
  126. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  127. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  128. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  129. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  130. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  131. data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
  132. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  133. data/samples/bigdemo/wxSlider.rbw +44 -0
  134. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  135. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  136. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  137. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  138. data/samples/bigdemo/wxStaticText.rbw +57 -0
  139. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  140. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  141. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  142. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  143. data/samples/bigdemo/wxToolBar.rbw +133 -0
  144. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  145. data/samples/calendar/calendar.rb +275 -0
  146. data/samples/caret/caret.rb +296 -0
  147. data/samples/caret/mondrian.xpm +44 -0
  148. data/samples/controls/controls.rb +1140 -0
  149. data/samples/controls/get_item_sample.rb +87 -0
  150. data/samples/controls/icons/choice.xpm +27 -0
  151. data/samples/controls/icons/combo.xpm +27 -0
  152. data/samples/controls/icons/gauge.xpm +27 -0
  153. data/samples/controls/icons/list.xpm +27 -0
  154. data/samples/controls/icons/radio.xpm +27 -0
  155. data/samples/controls/icons/stattext.xpm +24 -0
  156. data/samples/controls/icons/text.xpm +27 -0
  157. data/samples/controls/mondrian.ico +0 -0
  158. data/samples/controls/mondrian.xpm +44 -0
  159. data/samples/controls/test2.bmp +0 -0
  160. data/samples/dialogs/dialogs.rb +724 -0
  161. data/samples/dialogs/tips.txt +18 -0
  162. data/samples/etc/activation.rb +108 -0
  163. data/samples/etc/choice.rb +72 -0
  164. data/samples/etc/miniframe.rb +84 -0
  165. data/samples/etc/sash.rb +135 -0
  166. data/samples/etc/scrollwin.rb +116 -0
  167. data/samples/etc/system_settings.rb +258 -0
  168. data/samples/etc/wizard.rb +81 -0
  169. data/samples/grid/grid.rb +201 -0
  170. data/samples/html/html.rb +251 -0
  171. data/samples/images/Thumbs.db +0 -0
  172. data/samples/images/images.rb +48 -0
  173. data/samples/images/paperclip.png +0 -0
  174. data/samples/listbook/listbook.rb +183 -0
  175. data/samples/listbook/listbook.xrc +370 -0
  176. data/samples/mdi/mdi.rb +87 -0
  177. data/samples/minimal/minimal.rb +95 -0
  178. data/samples/minimal/mondrian.ico +0 -0
  179. data/samples/minimal/mondrian.xpm +44 -0
  180. data/samples/minimal/nothing.rb +46 -0
  181. data/samples/minimal/text.rb +35 -0
  182. data/samples/printing/mondrian.ico +0 -0
  183. data/samples/printing/mondrian.xpm +44 -0
  184. data/samples/printing/printing.rb +484 -0
  185. data/samples/text/mondrian.ico +0 -0
  186. data/samples/text/mondrian.xpm +44 -0
  187. data/samples/text/scintilla.rb +180 -0
  188. data/samples/text/textctrl.rb +124 -0
  189. data/samples/text/unicode.rb +238 -0
  190. data/samples/text/utf8.txt +15 -0
  191. data/samples/treectrl/icon1.xpm +79 -0
  192. data/samples/treectrl/icon2.xpm +53 -0
  193. data/samples/treectrl/icon3.xpm +79 -0
  194. data/samples/treectrl/icon4.xpm +43 -0
  195. data/samples/treectrl/icon5.xpm +79 -0
  196. data/samples/treectrl/treectrl.rb +1210 -0
  197. data/samples/xrc/samples.xrc +46 -0
  198. data/samples/xrc/xrc_sample.rb +107 -0
  199. metadata +264 -0
@@ -0,0 +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
@@ -0,0 +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
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ class TestPanel < Wx::Panel
17
+ def initialize(parent, log)
18
+ super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
19
+ @log = log
20
+
21
+ txt1 = Wx::StaticText.new(self, -1, "style=0")
22
+ dir1 = Wx::GenericDirCtrl.new(self, -1, '/', Wx::DEFAULT_POSITION, Wx::Size.new(200,225), 0)
23
+
24
+ txt2 = Wx::StaticText.new(self, -1, "Wx::DIRCTRL_DIR_ONLY")
25
+ dir2 = Wx::GenericDirCtrl.new(self, -1, '/', Wx::DEFAULT_POSITION, Wx::Size.new(200,225), Wx::DIRCTRL_DIR_ONLY)
26
+
27
+ txt3 = Wx::StaticText.new(self, -1, "Wx::DIRCTRL_SHOW_FILTERS")
28
+ dir3 = Wx::GenericDirCtrl.new(self, -1, '/', Wx::DEFAULT_POSITION, Wx::Size.new(200,225), Wx::DIRCTRL_SHOW_FILTERS,
29
+ "All files (*.*)|*.*|Ruby files (*.rb)|*.rb")
30
+
31
+ sz = Wx::FlexGridSizer.new(3, 5, 5)
32
+ sz.add(35, 35) # some space above
33
+ sz.add(35, 35)
34
+ sz.add(35, 35)
35
+
36
+ sz.add(txt1)
37
+ sz.add(txt2)
38
+ sz.add(txt3)
39
+
40
+ sz.add(dir1, 0, Wx::EXPAND)
41
+ sz.add(dir2, 0, Wx::EXPAND)
42
+ sz.add(dir3, 0, Wx::EXPAND)
43
+
44
+ sz.add(35,35) # some space below
45
+
46
+ sz.add_growable_row(2)
47
+ sz.add_growable_col(0)
48
+ sz.add_growable_col(1)
49
+ sz.add_growable_col(2)
50
+
51
+ set_sizer(sz)
52
+ set_auto_layout(true)
53
+ end
54
+ end
55
+
56
+ module Demo
57
+
58
+ def Demo.run(frame, nb, log)
59
+ win = TestPanel.new(nb, log)
60
+ return win
61
+ end
62
+
63
+ def Demo.overview
64
+ return <<EOS
65
+ This control can be used to place a directory listing (with optional files)
66
+ on an arbitrary window. The control contains a TreeCtrl window representing
67
+ the directory hierarchy, and optionally, a Choice window containing a list
68
+ of filters.
69
+ EOS
70
+ end
71
+
72
+ end
73
+
74
+ if __FILE__ == $0
75
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
76
+ load run_solo_lib
77
+ run File.basename($0)
78
+ end
@@ -0,0 +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
@@ -0,0 +1,57 @@
1
+
2
+ #!/usr/bin/env ruby
3
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
4
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
5
+
6
+ begin
7
+ require 'wx'
8
+ rescue LoadError => no_wx_err
9
+ begin
10
+ require 'rubygems'
11
+ require 'wx'
12
+ rescue LoadError
13
+ raise no_wx_err
14
+ end
15
+ end
16
+
17
+
18
+ class TestPanel < Wx::Panel
19
+ def initialize(parent, log)
20
+ super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
21
+ Wx::NO_FULL_REPAINT_ON_RESIZE)
22
+ @log = log
23
+
24
+ b = Wx::Button.new(self, -1, 'Give me some help!',
25
+ Wx::Point.new(50,50))
26
+
27
+ evt_button(b.get_id) { on_button }
28
+ end
29
+
30
+ def on_button
31
+ help = Wx::HtmlHelpController.instance
32
+ help_file = File.join( File.dirname(__FILE__), 'helpfile.htb')
33
+ exit if not File.exists?(help_file)
34
+ help.add_book( File.expand_path(help_file), false )
35
+ help.display_contents
36
+ end
37
+ end
38
+
39
+ module Demo
40
+ def Demo.run(frame, nb, log)
41
+ TestPanel.new(nb, log)
42
+ end
43
+
44
+ def Demo.overview
45
+ "Wx::HtmlHelpController is a sophisticated viewer for online help\n" +
46
+ "documentation in HTML format. It uses a format based on the Microsoft\n" +
47
+ "HTML Help format, but is available on all platforms. It includes a\n" +
48
+ "contents page, index and keyword search."
49
+ end
50
+ end
51
+
52
+
53
+ if __FILE__ == $0
54
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
55
+ load run_solo_lib
56
+ run File.basename($0)
57
+ end
@@ -0,0 +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