wxruby 1.9.5-universal-darwin-9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. data/LICENSE +53 -0
  2. data/README +297 -0
  3. data/lib/wx/accessors.rb +52 -0
  4. data/lib/wx/classes/app.rb +45 -0
  5. data/lib/wx/classes/artprovider.rb +31 -0
  6. data/lib/wx/classes/bitmap.rb +23 -0
  7. data/lib/wx/classes/checklistbox.rb +45 -0
  8. data/lib/wx/classes/choice.rb +4 -0
  9. data/lib/wx/classes/clientdc.rb +13 -0
  10. data/lib/wx/classes/clipboard.rb +16 -0
  11. data/lib/wx/classes/colour.rb +47 -0
  12. data/lib/wx/classes/combobox.rb +4 -0
  13. data/lib/wx/classes/commandevent.rb +7 -0
  14. data/lib/wx/classes/controlwithitems.rb +10 -0
  15. data/lib/wx/classes/dc.rb +57 -0
  16. data/lib/wx/classes/event.rb +5 -0
  17. data/lib/wx/classes/evthandler.rb +906 -0
  18. data/lib/wx/classes/font.rb +118 -0
  19. data/lib/wx/classes/gauge.rb +12 -0
  20. data/lib/wx/classes/grid.rb +129 -0
  21. data/lib/wx/classes/helpcontroller.rb +5 -0
  22. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  23. data/lib/wx/classes/htmlwindow.rb +6 -0
  24. data/lib/wx/classes/icon.rb +14 -0
  25. data/lib/wx/classes/image.rb +14 -0
  26. data/lib/wx/classes/listbox.rb +4 -0
  27. data/lib/wx/classes/listctrl.rb +21 -0
  28. data/lib/wx/classes/locale.rb +28 -0
  29. data/lib/wx/classes/mediactrl.rb +22 -0
  30. data/lib/wx/classes/menu.rb +62 -0
  31. data/lib/wx/classes/menuitem.rb +7 -0
  32. data/lib/wx/classes/object.rb +7 -0
  33. data/lib/wx/classes/paintdc.rb +12 -0
  34. data/lib/wx/classes/point.rb +48 -0
  35. data/lib/wx/classes/previewframe.rb +13 -0
  36. data/lib/wx/classes/rect.rb +10 -0
  37. data/lib/wx/classes/size.rb +49 -0
  38. data/lib/wx/classes/sound.rb +23 -0
  39. data/lib/wx/classes/styledtextctrl.rb +92 -0
  40. data/lib/wx/classes/textctrl.rb +14 -0
  41. data/lib/wx/classes/texturlevent.rb +6 -0
  42. data/lib/wx/classes/timer.rb +94 -0
  43. data/lib/wx/classes/treectrl.rb +44 -0
  44. data/lib/wx/classes/window.rb +82 -0
  45. data/lib/wx/classes/xmlresource.rb +16 -0
  46. data/lib/wx/keyword_ctors.rb +219 -0
  47. data/lib/wx/keyword_defs.rb +485 -0
  48. data/lib/wx/version.rb +3 -0
  49. data/lib/wx.rb +42 -0
  50. data/lib/wxruby2.bundle +0 -0
  51. data/samples/SAMPLES-LICENSE.TXT +18 -0
  52. data/samples/aui/aui.rb +1360 -0
  53. data/samples/bigdemo/About.rbw +39 -0
  54. data/samples/bigdemo/ColorPanel.rbw +25 -0
  55. data/samples/bigdemo/GridSimple.rbw +80 -0
  56. data/samples/bigdemo/MDIDemo.rbw +59 -0
  57. data/samples/bigdemo/PopupMenu.rbw +151 -0
  58. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  59. data/samples/bigdemo/Sizers.rbw +545 -0
  60. data/samples/bigdemo/bigdemo.rb +824 -0
  61. data/samples/bigdemo/demoTemplate.rbw +37 -0
  62. data/samples/bigdemo/helpfile.htb +0 -0
  63. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  64. data/samples/bigdemo/icons/Test 015.png +0 -0
  65. data/samples/bigdemo/icons/choice.bmp +0 -0
  66. data/samples/bigdemo/icons/choice.xpm +27 -0
  67. data/samples/bigdemo/icons/combo.bmp +0 -0
  68. data/samples/bigdemo/icons/combo.xpm +27 -0
  69. data/samples/bigdemo/icons/copy.xpm +25 -0
  70. data/samples/bigdemo/icons/cut.xpm +24 -0
  71. data/samples/bigdemo/icons/gauge.bmp +0 -0
  72. data/samples/bigdemo/icons/gauge.xpm +27 -0
  73. data/samples/bigdemo/icons/help.xpm +25 -0
  74. data/samples/bigdemo/icons/list.bmp +0 -0
  75. data/samples/bigdemo/icons/list.xpm +27 -0
  76. data/samples/bigdemo/icons/mondrian.ico +0 -0
  77. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  78. data/samples/bigdemo/icons/new.xpm +24 -0
  79. data/samples/bigdemo/icons/ogl.ico +0 -0
  80. data/samples/bigdemo/icons/ogl.xpm +45 -0
  81. data/samples/bigdemo/icons/open.xpm +26 -0
  82. data/samples/bigdemo/icons/paste.bmp +0 -0
  83. data/samples/bigdemo/icons/paste.xpm +38 -0
  84. data/samples/bigdemo/icons/pointy.png +0 -0
  85. data/samples/bigdemo/icons/preview.xpm +26 -0
  86. data/samples/bigdemo/icons/print.xpm +26 -0
  87. data/samples/bigdemo/icons/radio.bmp +0 -0
  88. data/samples/bigdemo/icons/radio.xpm +27 -0
  89. data/samples/bigdemo/icons/robert.xpm +415 -0
  90. data/samples/bigdemo/icons/ruby.png +0 -0
  91. data/samples/bigdemo/icons/sashtest.ico +0 -0
  92. data/samples/bigdemo/icons/save.xpm +25 -0
  93. data/samples/bigdemo/icons/smiles.bmp +0 -0
  94. data/samples/bigdemo/icons/smiles.xpm +39 -0
  95. data/samples/bigdemo/icons/smiley.ico +0 -0
  96. data/samples/bigdemo/icons/smiley.xpm +42 -0
  97. data/samples/bigdemo/icons/stattext.xpm +24 -0
  98. data/samples/bigdemo/icons/test2.bmp +0 -0
  99. data/samples/bigdemo/icons/test2.png +0 -0
  100. data/samples/bigdemo/icons/test2.xpm +79 -0
  101. data/samples/bigdemo/icons/text.bmp +0 -0
  102. data/samples/bigdemo/icons/text.xpm +27 -0
  103. data/samples/bigdemo/icons/tog1.bmp +0 -0
  104. data/samples/bigdemo/icons/tog1.xpm +38 -0
  105. data/samples/bigdemo/icons/tog2.bmp +0 -0
  106. data/samples/bigdemo/icons/tog2.xpm +38 -0
  107. data/samples/bigdemo/icons/wxwin.ico +0 -0
  108. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  109. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  110. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  111. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  112. data/samples/bigdemo/run.rb +94 -0
  113. data/samples/bigdemo/tips.txt +7 -0
  114. data/samples/bigdemo/utils.rb +12 -0
  115. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  116. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  117. data/samples/bigdemo/wxButton.rbw +66 -0
  118. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  119. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  120. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  121. data/samples/bigdemo/wxChoice.rbw +49 -0
  122. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  123. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  124. data/samples/bigdemo/wxComboBox.rbw +79 -0
  125. data/samples/bigdemo/wxCursor.rbw +140 -0
  126. data/samples/bigdemo/wxDialog.rbw +76 -0
  127. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  128. data/samples/bigdemo/wxDragImage.rbw +74 -0
  129. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  130. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  131. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  132. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  133. data/samples/bigdemo/wxFrame.rbw +55 -0
  134. data/samples/bigdemo/wxGauge.rbw +73 -0
  135. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  136. data/samples/bigdemo/wxGrid.rbw +68 -0
  137. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  138. data/samples/bigdemo/wxListBox.rbw +142 -0
  139. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  140. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  141. data/samples/bigdemo/wxMenu.rbw +238 -0
  142. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  143. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  144. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  145. data/samples/bigdemo/wxNotebook.rbw +138 -0
  146. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  147. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  148. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  149. data/samples/bigdemo/wxSashWindow.rbw +145 -0
  150. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  151. data/samples/bigdemo/wxScrolledWindow.rbw +201 -0
  152. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  153. data/samples/bigdemo/wxSlider.rbw +44 -0
  154. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  155. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  156. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  157. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  158. data/samples/bigdemo/wxStaticText.rbw +57 -0
  159. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  160. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  161. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  162. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  163. data/samples/bigdemo/wxToolBar.rbw +133 -0
  164. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  165. data/samples/calendar/calendar.rb +275 -0
  166. data/samples/caret/caret.rb +286 -0
  167. data/samples/caret/mondrian.xpm +44 -0
  168. data/samples/controls/controls.rb +1140 -0
  169. data/samples/controls/get_item_sample.rb +87 -0
  170. data/samples/controls/icons/choice.xpm +27 -0
  171. data/samples/controls/icons/combo.xpm +27 -0
  172. data/samples/controls/icons/gauge.xpm +27 -0
  173. data/samples/controls/icons/list.xpm +27 -0
  174. data/samples/controls/icons/radio.xpm +27 -0
  175. data/samples/controls/icons/stattext.xpm +24 -0
  176. data/samples/controls/icons/text.xpm +27 -0
  177. data/samples/controls/mondrian.ico +0 -0
  178. data/samples/controls/mondrian.xpm +44 -0
  179. data/samples/controls/test2.bmp +0 -0
  180. data/samples/dialogs/dialogs.rb +724 -0
  181. data/samples/dialogs/tips.txt +18 -0
  182. data/samples/drawing/graphics_drawing.rb +236 -0
  183. data/samples/drawing/images.rb +42 -0
  184. data/samples/drawing/paperclip.png +0 -0
  185. data/samples/etc/activation.rb +108 -0
  186. data/samples/etc/choice.rb +72 -0
  187. data/samples/etc/miniframe.rb +84 -0
  188. data/samples/etc/sash.rb +135 -0
  189. data/samples/etc/scrollwin.rb +116 -0
  190. data/samples/etc/system_settings.rb +258 -0
  191. data/samples/etc/threaded.rb +78 -0
  192. data/samples/etc/wizard.rb +79 -0
  193. data/samples/event/event.rb +184 -0
  194. data/samples/grid/grid.rb +202 -0
  195. data/samples/html/html.rb +268 -0
  196. data/samples/listbook/listbook.rb +181 -0
  197. data/samples/listbook/listbook.xrc +370 -0
  198. data/samples/mdi/mdi.rb +87 -0
  199. data/samples/media/mediactrl.rb +173 -0
  200. data/samples/minimal/minimal.rb +85 -0
  201. data/samples/minimal/mondrian.ico +0 -0
  202. data/samples/minimal/mondrian.png +0 -0
  203. data/samples/minimal/nothing.rb +21 -0
  204. data/samples/opengl/cube.rb +123 -0
  205. data/samples/printing/mondrian.ico +0 -0
  206. data/samples/printing/mondrian.xpm +44 -0
  207. data/samples/printing/printing.rb +484 -0
  208. data/samples/sockets/SocketPackets.rb +27 -0
  209. data/samples/sockets/res/message-new.png +0 -0
  210. data/samples/sockets/res/user.png +0 -0
  211. data/samples/sockets/wxClient.rb +395 -0
  212. data/samples/sockets/wxServer.rb +422 -0
  213. data/samples/sockets/wxSocketGUI.rb +97 -0
  214. data/samples/text/mondrian.ico +0 -0
  215. data/samples/text/mondrian.xpm +44 -0
  216. data/samples/text/scintilla.rb +174 -0
  217. data/samples/text/textctrl.rb +124 -0
  218. data/samples/text/unicode.rb +238 -0
  219. data/samples/text/utf8.txt +15 -0
  220. data/samples/treectrl/icon1.xpm +79 -0
  221. data/samples/treectrl/icon2.xpm +53 -0
  222. data/samples/treectrl/icon3.xpm +79 -0
  223. data/samples/treectrl/icon4.xpm +43 -0
  224. data/samples/treectrl/icon5.xpm +79 -0
  225. data/samples/treectrl/treectrl.rb +1180 -0
  226. data/samples/xrc/samples.xrc +46 -0
  227. data/samples/xrc/xrc_sample.rb +107 -0
  228. metadata +305 -0
@@ -0,0 +1,44 @@
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 is a Wx::Slider", Wx::Point.new(45,15))
21
+
22
+ slider = Wx::Slider.new(self, 100, 25, 1, 100, Wx::Point.new(30,60), Wx::Size.new(250,-1),
23
+ Wx::SL_HORIZONTAL | Wx::SL_AUTOTICKS | Wx::SL_LABELS)
24
+ slider.set_tick_freq(5,1)
25
+ end
26
+ end
27
+
28
+ module Demo
29
+ def Demo.run(frame,nb,log)
30
+ win = TestPanel.new(nb, log)
31
+ return win
32
+ end
33
+
34
+ def Demo.overview
35
+ "A slider is a control with a handle which can be pulled back and forth to change the value."
36
+ end
37
+ end
38
+
39
+
40
+ if __FILE__ == $0
41
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
42
+ load run_solo_lib
43
+ run File.basename($0)
44
+ end
@@ -0,0 +1,52 @@
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 uses the wxSpinButton control.", Wx::Point.new(45,15))
21
+
22
+ @text = Wx::TextCtrl.new(self, -1, "1", Wx::Point.new(30,50), Wx::Size.new(60,-1))
23
+ h = @text.get_size().get_height()
24
+ @spin = Wx::SpinButton.new(self, 20, Wx::Point.new(92,50), Wx::Size.new(h,h), Wx::SP_VERTICAL)
25
+ @spin.set_range(1, 100)
26
+ @spin.set_value(1)
27
+
28
+ evt_spin(@spin.get_id()) {|event| on_spin(event)}
29
+ end
30
+
31
+ def on_spin(event)
32
+ @text.set_value(event.get_position().to_s())
33
+ end
34
+ end
35
+
36
+ module Demo
37
+ def Demo.run(frame,nb,log)
38
+ win = TestPanel.new(nb, log)
39
+ return win
40
+ end
41
+
42
+ def Demo.overview
43
+ "A wxSpinButton has two small up and down (or left and right) arrow buttons. It is often used next to a text control for increment and decrementing a value. Portable programs should try to use wxSpinCtrl instead as wxSpinButton is not implemented for all platforms (Win32 and GTK only currently)."
44
+ end
45
+ end
46
+
47
+
48
+ if __FILE__ == $0
49
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
50
+ load run_solo_lib
51
+ run File.basename($0)
52
+ end
@@ -0,0 +1,53 @@
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,
21
+ "This example uses the Wx::SpinCtrl control.",
22
+ Wx::Point.new(45,15))
23
+
24
+ sc = Wx::SpinCtrl.new(self, -1, "",
25
+ Wx::Point.new(30, 50), Wx::Size.new(80, -1))
26
+ sc.set_range(1,100)
27
+ sc.set_value(5)
28
+ evt_spinctrl(sc.get_id) { | e | on_spinctrl(e) }
29
+ # sc.enable(false)
30
+ end
31
+
32
+ def on_spinctrl(evt)
33
+ @log.write_text("spintctrl - new position #{evt.get_position}")
34
+ end
35
+ end
36
+
37
+ module Demo
38
+ def Demo.run(frame,nb,log)
39
+ win = TestPanel.new(nb, log)
40
+ return win
41
+ end
42
+
43
+ def Demo.overview
44
+ "Wx::SpinCtrl combines Wx::TextCtrl and Wx::SpinButton in one control."
45
+ end
46
+ end
47
+
48
+
49
+ if __FILE__ == $0
50
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
51
+ load run_solo_lib
52
+ run File.basename($0)
53
+ end
@@ -0,0 +1,65 @@
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 MySplitter < Wx::SplitterWindow
15
+ def initialize(parent, id, log)
16
+ super(parent, id)
17
+ @log = log
18
+
19
+ evt_splitter_sash_pos_changed(self.get_id()) {|event| on_sash_changed(event)}
20
+ evt_splitter_sash_pos_changing(self.get_id()) {|event| on_sash_changing(event)}
21
+ end
22
+
23
+ def on_sash_changed(event)
24
+ @log.write_text("sash changed to: " + event.get_sash_position().to_s())
25
+ # uncomment this to not allow the change
26
+ #evt.set_sash_position(-1)
27
+ end
28
+
29
+ def on_sash_changing(event)
30
+ @log.write_text("sash changing to: " + event.get_sash_position().to_s())
31
+ # uncomment this to not allow the change
32
+ #evt.set_sash_position(-1)
33
+
34
+ end
35
+ end
36
+
37
+ module Demo
38
+ def Demo.run(frame,nb,log)
39
+ splitter = MySplitter.new(nb, -1, log)
40
+
41
+ p1 = Wx::Window.new(splitter, -1)
42
+ p1.set_background_colour(Wx::RED)
43
+ Wx::StaticText.new(p1, -1, "Panel One", Wx::Point.new(5,5)).set_background_colour(Wx::RED)
44
+
45
+ p2 = Wx::Window.new(splitter, -1)
46
+ p2.set_background_colour(Wx::BLUE)
47
+ Wx::StaticText.new(p2, -1, "Panel Two", Wx::Point.new(5,5)).set_background_colour(Wx::BLUE)
48
+
49
+ splitter.set_minimum_pane_size(20)
50
+ splitter.split_vertically(p1, p2, 100)
51
+
52
+ return splitter
53
+ end
54
+
55
+ def Demo.overview
56
+ "This class manages up to two subwindows. The current view can be split into two programmatically (perhaps from a menu command), and unsplit either programmatically or via the wxSplitterWindow user interface."
57
+ end
58
+ end
59
+
60
+
61
+ if __FILE__ == $0
62
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
63
+ load run_solo_lib
64
+ run File.basename($0)
65
+ end
@@ -0,0 +1,53 @@
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
+
18
+ Wx::StaticText.new( self, -1, "This is a wxStaticBitmap.",
19
+ Wx::Point.new(45,5))
20
+
21
+ bmp_file1 = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
22
+ Wx::StaticBitmap.new( self, -1,
23
+ Wx::Bitmap.new(bmp_file1, Wx::BITMAP_TYPE_XPM),
24
+ Wx::Point.new(80,25))
25
+
26
+ bmp_file2 = File.join(File.dirname(__FILE__), 'icons', 'robert.xpm')
27
+ Wx::StaticBitmap.new( self, -1,
28
+ Wx::Bitmap.new(bmp_file2, Wx::BITMAP_TYPE_XPM),
29
+ Wx::Point.new(0, 100))
30
+
31
+ Wx::StaticText.new( self, -1,
32
+ "Hey, if Ousterhout (and Dunn) can do it, so can I.",
33
+ Wx::Point.new(100, 125) )
34
+ end
35
+ end
36
+
37
+ module Demo
38
+ def Demo.run(frame,nb,log)
39
+ win = TestPanel.new(nb, log)
40
+ return win
41
+ end
42
+
43
+ def Demo.overview
44
+ ""
45
+ end
46
+ end
47
+
48
+
49
+ if __FILE__ == $0
50
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
51
+ load run_solo_lib
52
+ run File.basename($0)
53
+ end
@@ -0,0 +1,57 @@
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)
16
+ super(parent, -1)
17
+
18
+ Wx::StaticText.new(self, -1, "This is an example of static text", Wx::Point.new(20, 10))
19
+
20
+ Wx::StaticText.new(self, -1, "using the Wx::StaticText Control.", Wx::Point.new(20, 30))
21
+
22
+ Wx::StaticText.new(self, -1, "Is this blue?", Wx::Point.new(20, 70), Wx::Size.new(90, -1)).set_background_colour(Wx::BLUE)
23
+
24
+ Wx::StaticText.new(self, -1, "align center", Wx::Point.new(120, 70), Wx::Size.new(90, -1), Wx::ALIGN_CENTER).set_background_colour(Wx::BLUE)
25
+
26
+ Wx::StaticText.new(self, -1, "align right", Wx::Point.new(220, 70), Wx::Size.new(90, -1), Wx::ALIGN_RIGHT).set_background_colour(Wx::BLUE)
27
+
28
+ str = "This is a different font."
29
+ text = Wx::StaticText.new(self, -1, str, Wx::Point.new(20, 100))
30
+ font = Wx::Font.new(18, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
31
+ text.set_font(font)
32
+ #text.set_size(text.get_best_size())
33
+
34
+ Wx::StaticText.new(self, -1, "Multi-line Wx::StaticText\nline 2\nline 3\n\nafter empty line", Wx::Point.new(20,150))
35
+ Wx::StaticText.new(self, -1, "Align right multi-line\nline 2\nline 3\n\nafter empty line", Wx::Point.new(220,150),
36
+ Wx::DEFAULT_SIZE,Wx::ALIGN_RIGHT)
37
+
38
+ end
39
+ end
40
+
41
+ module Demo
42
+ def Demo.run(frame,nb,log)
43
+ panel = TestPanel.new(nb)
44
+ return panel
45
+ end
46
+
47
+ def Demo.overview
48
+ "A static text control displays one or more lines of read-only text."
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,128 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ class CustomStatusBar < Wx::StatusBar
15
+ attr_reader :timer
16
+ def initialize(parent, log)
17
+ super(parent, -1)
18
+ set_fields_count(3)
19
+ @log = log
20
+ @sizeChanged = false
21
+
22
+ evt_size {|event| on_size(event)}
23
+ evt_idle {|event| on_idle(event)}
24
+
25
+ self.set_status_text("A Custom StatusBar...", 0)
26
+
27
+ @cb = Wx::CheckBox.new(self, 1001, "toggle clock")
28
+ evt_checkbox(@cb.get_id()) {|event| on_toggle_clock(event)}
29
+ @cb.set_value(true)
30
+
31
+ # set the initial position of the checkbox
32
+ self.reposition()
33
+
34
+ # start our timer
35
+ @timer = Wx::Timer.new(self, 5000)
36
+ # note that you cannot call @timer.get_id() - this method is not supported, therefore an explicit ID is required
37
+ # in order to capture the event for your event handler
38
+ evt_timer(5000) {|event| notify(event)}
39
+ # The second parameter is supposed to default to false (meaning it should fire off events continuously), but for
40
+ # some reason if I don't explicitly pass in false, it fires only once. If someone figures this out, please let
41
+ # me know :) What makes it even more confusing is that when I toggle the clock off using the checkbox, and then
42
+ # restart it, there is no need to pass in false for the second parameter - it is assumed to be false there
43
+ # To further complicate the situation, it appears that if I call stop(), call start(1000), it takes the parameter
44
+ # to default as false, meaning fire the event continuously? Perhaps this is a Windows only issue?
45
+ @timer.start(1000)
46
+ @timer.stop()
47
+ @timer.start(1000)
48
+ end
49
+
50
+ # Time-out handler
51
+ def notify(event)
52
+ t = Time.now
53
+ st = t.strftime("%d-%B-%Y %I:%M:%S %p")
54
+ self.set_status_text(st, 2)
55
+ @log.write_text("tick...")
56
+ end
57
+
58
+ # the checkbox was clicked
59
+ def on_toggle_clock(event)
60
+ if @cb.get_value()
61
+ @timer.start(1000)
62
+ else
63
+ @timer.stop()
64
+ end
65
+ end
66
+
67
+ def on_size(event)
68
+ self.reposition() # for normal size events
69
+
70
+ # Set a flag so the idle time handler will also do the repositioning.
71
+ # It is done this way to get around a buglet where GetFieldRect is not
72
+ # accurate during the EVT_SIZE resulting from a frame maximize.
73
+
74
+ @sizeChanged = true
75
+ end
76
+
77
+ def on_idle(event)
78
+ if @sizeChanged
79
+ self.reposition()
80
+ end
81
+ event.request_more()
82
+ end
83
+
84
+ def reposition()
85
+ rect = get_field_rect(1)
86
+ @cb.move(Wx::Point.new(rect.x + 2, rect.y + 2))
87
+ @cb.set_size(Wx::Size.new(rect.width - 4, rect.height - 4))
88
+ @sizeChanged = false
89
+ end
90
+ end
91
+
92
+ class TestCustomStatusBar < Wx::Frame
93
+ def initialize(parent, log)
94
+ super(parent, -1, "Test Custom StatusBar")
95
+
96
+ @sb = CustomStatusBar.new(self, log)
97
+ set_status_bar(@sb)
98
+ tc = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::TE_READONLY | Wx::TE_MULTILINE)
99
+
100
+ set_size(Wx::Size.new(500,300))
101
+ evt_close {|event| on_close_window(event)}
102
+ end
103
+
104
+ def on_close_window(event)
105
+ @sb.timer.stop()
106
+ destroy()
107
+ end
108
+ end
109
+
110
+ module Demo
111
+ def Demo.run(frame,nb,log)
112
+ win = TestCustomStatusBar.new(frame, log)
113
+ frame.otherWin = win
114
+ win.show()
115
+ return nil
116
+ end
117
+
118
+ def Demo.overview
119
+ "A status bar is a narrow window that can be placed along the bottom of a frame to give small amounts of status information. It can contain one or more fields, one or more of which can be variable length according to the size of the window. "
120
+ end
121
+ end
122
+
123
+
124
+ if __FILE__ == $0
125
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
126
+ load run_solo_lib
127
+ run File.basename($0)
128
+ end
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ class TestPanel < Wx::Panel
15
+
16
+ def on_set_focus(event)
17
+ @log.write_text("on_set_focus")
18
+ event.skip()
19
+ end
20
+
21
+ def on_kill_focus(event)
22
+ @log.write_text("on_kill_focus")
23
+ event.skip()
24
+ end
25
+
26
+ def on_window_destroy(event)
27
+ @log.write_text("on_window_destroy")
28
+ event.skip()
29
+ end
30
+
31
+ def initialize(parent, log)
32
+ super(parent, -1)
33
+ @log = log
34
+
35
+ l1 = Wx::StaticText.new(self, -1, "Wx::TextCtrl")
36
+ t1 = Wx::TextCtrl.new(self, -1, "Test it out and see", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1))
37
+ t1.set_insertion_point(0)
38
+ @tc1 = t1
39
+ evt_text(t1.get_id()) {|event| on_evt_text(event)}
40
+ t1.evt_char {|event| on_evt_char(event)}
41
+ t1.evt_set_focus {|event| on_set_focus(event)}
42
+ t1.evt_kill_focus {|event| on_kill_focus(event)}
43
+ #t1.evt_window_destroy {|event| on_window_destroy(event)}
44
+
45
+ l2 = Wx::StaticText.new(self, -1, "Password")
46
+ t2 = Wx::TextCtrl.new(self, -1, "", Wx::DEFAULT_POSITION, Wx::Size.new(125,-1), Wx::TE_PASSWORD)
47
+ evt_text(t2.get_id()) {|event| on_evt_text(event)}
48
+
49
+ l3 = Wx::StaticText.new(self, -1, "Multi-line")
50
+ t3 = Wx::TextCtrl.new(self, -1, "Here is a looooooooooooooong line of text set in the control.\n\n" +
51
+ "The quick brown fox jumped over the lazy dog...", Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
52
+ Wx::TE_MULTILINE)
53
+ t3.set_insertion_point(0)
54
+ evt_text(t3.get_id()) {|event| on_evt_text(event)}
55
+ b = Wx::Button.new(self, -1, "Test replace")
56
+ evt_button(b.get_id()) {|event| on_test_replace(event)}
57
+ b2 = Wx::Button.new(self, -1, "Test get_selection")
58
+ evt_button(b2.get_id()) {|event| on_test_get_selection(event)}
59
+ b3 = Wx::Button.new(self, -1, "Test write_text")
60
+ evt_button(b3.get_id()) {|event| on_test_write_text(event)}
61
+ @tc = t3
62
+
63
+ l4 = Wx::StaticText.new(self, -1, "Rich Text")
64
+ t4 = Wx::TextCtrl.new(self, -1, "If supported by the native control, this is red, and this is a different font.",
65
+ Wx::DEFAULT_POSITION, Wx::Size.new(200,100), Wx::TE_MULTILINE | Wx::TE_RICH)
66
+ t4.set_insertion_point(0)
67
+ t4.set_style(44,47, Wx::TextAttr.new(Wx::Colour.new("RED"), Wx::Colour.new("YELLOW")))
68
+ points = t4.get_font().get_point_size() # get the current size
69
+ f = Wx::Font.new(points + 3, Wx::ROMAN, Wx::ITALIC, Wx::BOLD, true)
70
+ t4.set_style(63, 77, Wx::TextAttr.new(Wx::Colour.new("BLUE"), Wx::NULL_COLOUR, f))
71
+
72
+ l5 = Wx::StaticText.new(self, -1, "Test Positions")
73
+ t5 = Wx::TextCtrl.new(self, -1, "0123456789\n" * 5, Wx::DEFAULT_POSITION, Wx::Size.new(200,100),
74
+ Wx::TE_MULTILINE | Wx::TE_RICH)
75
+ @t5 = t5
76
+
77
+ bsizer = Wx::BoxSizer.new(Wx::VERTICAL)
78
+ bsizer.add(b, 0, Wx::GROW | Wx::ALL, 4)
79
+ bsizer.add(b2, 0, Wx::GROW | Wx::ALL, 4)
80
+ bsizer.add(b3, 0, Wx::GROW | Wx::ALL, 4)
81
+
82
+ sizer = Wx::FlexGridSizer.new(0,3,6,6)
83
+ sizer.add(l1)
84
+ sizer.add(t1)
85
+ sizer.add(0,0)
86
+ sizer.add(l2)
87
+ sizer.add(t2)
88
+ sizer.add(0,0)
89
+ sizer.add(l3)
90
+ sizer.add(t3)
91
+ sizer.add(bsizer)
92
+ sizer.add(l4)
93
+ sizer.add(t4)
94
+ sizer.add(0,0)
95
+ sizer.add(l5)
96
+ sizer.add(t5)
97
+ sizer.add(0,0)
98
+
99
+ border = Wx::BoxSizer.new(Wx::VERTICAL)
100
+ border.add(sizer, 0, Wx::ALL, 25)
101
+ set_sizer(border)
102
+ set_auto_layout(true)
103
+ end
104
+
105
+ def on_evt_text(event)
106
+ @log.write_text("evt_text: " + event.get_string())
107
+ end
108
+
109
+ def on_evt_char(event)
110
+ @log.write_text("evt_char: " + event.get_key_code().to_s)
111
+ event.skip()
112
+ end
113
+
114
+ def on_test_replace(event)
115
+ @tc.replace(5,9, "IS A")
116
+ end
117
+
118
+ def on_test_write_text(event)
119
+ @tc.write_text("TEXT")
120
+ end
121
+
122
+ def on_test_get_selection(event)
123
+ start, stop = @tc.get_selection
124
+ text = @tc.get_string_selection # On WXMSW, is you select text using
125
+ # the results of get_selection you
126
+ # must replace \r\n\ with \n before
127
+ # taking your selection
128
+ @log.write_text("get_string_selection [#{start}..#{stop}]: " + text)
129
+ end
130
+
131
+ end
132
+
133
+
134
+ module Demo
135
+ def Demo.run(frame,nb,log)
136
+ win = TestPanel.new(nb,log)
137
+ return win
138
+ end
139
+
140
+ def Demo.overview
141
+ "A TextCtrl allows text to be displayed and (possibly) edited. It may be single" +
142
+ "line or multi-line, support styles or not, be read-only or not, and even supports" +
143
+ "text masking for such things as passwords."
144
+ end
145
+ end
146
+
147
+ if __FILE__ == $0
148
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
149
+ load run_solo_lib
150
+ run File.basename($0)
151
+ end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ module Demo
15
+ def Demo.run(frame, nb, log)
16
+ dlg = Wx::TextEntryDialog.new(frame, "What is your favorite programming language?", "Duh??", "Ruby")
17
+ dlg.set_value("Ruby is the best!")
18
+ if dlg.show_modal() == Wx::ID_OK
19
+ log.write_text("You entered: " + dlg.get_value().to_s + "\n")
20
+ end
21
+ dlg.destroy()
22
+ return nil
23
+ end
24
+
25
+ def Demo.overview
26
+ return "This dialog allows the user to input text"
27
+ end
28
+ end
29
+
30
+ if __FILE__ == $0
31
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
32
+ load run_solo_lib
33
+ run File.basename($0)
34
+ end
@@ -0,0 +1,51 @@
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
+ panel = Wx::Panel.new(self, -1)
19
+ buttons = Wx::BoxSizer.new(Wx::HORIZONTAL)
20
+ "These are toggle buttons".split().each do |word|
21
+ b = Wx::ToggleButton.new(panel, -1, word)
22
+ evt_togglebutton(b.get_id()) {|event| on_toggle(event)}
23
+ buttons.add(b, 0, Wx::ALL, 5)
24
+ end
25
+ panel.set_sizer(buttons)
26
+ buttons.fit(panel)
27
+ panel.move(Wx::Point.new(50,50))
28
+ end
29
+
30
+ def on_toggle(event)
31
+ @log.write_text("Button " + event.get_id().to_s() + " toggled")
32
+ end
33
+ end
34
+
35
+ module Demo
36
+ def Demo.run(frame,nb,log)
37
+ win = TestPanel.new(nb, log)
38
+ return win
39
+ end
40
+
41
+ def Demo.overview
42
+ "Wx::ToggleButton is a button that stays pressed when clicked by the user. In other words, it is similar to Wx::CheckBox in functionality but looks like a Wx::Button."
43
+ end
44
+ end
45
+
46
+
47
+ if __FILE__ == $0
48
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
49
+ load run_solo_lib
50
+ run File.basename($0)
51
+ end