wxruby 1.9.6-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) 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/acceleratortable.rb +28 -0
  5. data/lib/wx/classes/animation.rb +18 -0
  6. data/lib/wx/classes/app.rb +45 -0
  7. data/lib/wx/classes/artprovider.rb +31 -0
  8. data/lib/wx/classes/bitmap.rb +28 -0
  9. data/lib/wx/classes/busycursor.rb +12 -0
  10. data/lib/wx/classes/checklistbox.rb +45 -0
  11. data/lib/wx/classes/choice.rb +4 -0
  12. data/lib/wx/classes/clientdc.rb +13 -0
  13. data/lib/wx/classes/clipboard.rb +16 -0
  14. data/lib/wx/classes/colour.rb +47 -0
  15. data/lib/wx/classes/combobox.rb +4 -0
  16. data/lib/wx/classes/commandevent.rb +7 -0
  17. data/lib/wx/classes/controlwithitems.rb +10 -0
  18. data/lib/wx/classes/dc.rb +57 -0
  19. data/lib/wx/classes/event.rb +5 -0
  20. data/lib/wx/classes/evthandler.rb +921 -0
  21. data/lib/wx/classes/font.rb +118 -0
  22. data/lib/wx/classes/functions.rb +44 -0
  23. data/lib/wx/classes/gauge.rb +12 -0
  24. data/lib/wx/classes/grid.rb +138 -0
  25. data/lib/wx/classes/helpcontroller.rb +5 -0
  26. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  27. data/lib/wx/classes/htmlwindow.rb +14 -0
  28. data/lib/wx/classes/icon.rb +21 -0
  29. data/lib/wx/classes/iconbundle.rb +3 -0
  30. data/lib/wx/classes/image.rb +31 -0
  31. data/lib/wx/classes/imagelist.rb +3 -0
  32. data/lib/wx/classes/listbox.rb +4 -0
  33. data/lib/wx/classes/listctrl.rb +21 -0
  34. data/lib/wx/classes/locale.rb +28 -0
  35. data/lib/wx/classes/mediactrl.rb +22 -0
  36. data/lib/wx/classes/menu.rb +62 -0
  37. data/lib/wx/classes/menuitem.rb +7 -0
  38. data/lib/wx/classes/object.rb +7 -0
  39. data/lib/wx/classes/paintdc.rb +12 -0
  40. data/lib/wx/classes/point.rb +48 -0
  41. data/lib/wx/classes/previewframe.rb +13 -0
  42. data/lib/wx/classes/rect.rb +10 -0
  43. data/lib/wx/classes/size.rb +49 -0
  44. data/lib/wx/classes/sound.rb +23 -0
  45. data/lib/wx/classes/styledtextctrl.rb +92 -0
  46. data/lib/wx/classes/textctrl.rb +14 -0
  47. data/lib/wx/classes/texturlevent.rb +6 -0
  48. data/lib/wx/classes/timer.rb +94 -0
  49. data/lib/wx/classes/toolbartool.rb +4 -0
  50. data/lib/wx/classes/treectrl.rb +44 -0
  51. data/lib/wx/classes/window.rb +82 -0
  52. data/lib/wx/classes/xmlresource.rb +37 -0
  53. data/lib/wx/keyword_ctors.rb +222 -0
  54. data/lib/wx/keyword_defs.rb +492 -0
  55. data/lib/wx/version.rb +3 -0
  56. data/lib/wx.rb +42 -0
  57. data/lib/wxruby2.exp +0 -0
  58. data/lib/wxruby2.lib +0 -0
  59. data/lib/wxruby2.so +0 -0
  60. data/lib/wxruby2.so.manifest +13 -0
  61. data/samples/SAMPLES-LICENSE.TXT +18 -0
  62. data/samples/aui/aui.rb +1356 -0
  63. data/samples/bigdemo/About.rbw +39 -0
  64. data/samples/bigdemo/ColorPanel.rbw +23 -0
  65. data/samples/bigdemo/GridSimple.rbw +78 -0
  66. data/samples/bigdemo/MDIDemo.rbw +57 -0
  67. data/samples/bigdemo/PopupMenu.rbw +149 -0
  68. data/samples/bigdemo/ShapedWindow.rbw +131 -0
  69. data/samples/bigdemo/Sizers.rbw +543 -0
  70. data/samples/bigdemo/bigdemo.rb +823 -0
  71. data/samples/bigdemo/demoTemplate.rbw +33 -0
  72. data/samples/bigdemo/helpfile.htb +0 -0
  73. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  74. data/samples/bigdemo/icons/Test 015.png +0 -0
  75. data/samples/bigdemo/icons/choice.bmp +0 -0
  76. data/samples/bigdemo/icons/choice.xpm +27 -0
  77. data/samples/bigdemo/icons/combo.bmp +0 -0
  78. data/samples/bigdemo/icons/combo.xpm +27 -0
  79. data/samples/bigdemo/icons/copy.xpm +25 -0
  80. data/samples/bigdemo/icons/cut.xpm +24 -0
  81. data/samples/bigdemo/icons/gauge.bmp +0 -0
  82. data/samples/bigdemo/icons/gauge.xpm +27 -0
  83. data/samples/bigdemo/icons/help.xpm +25 -0
  84. data/samples/bigdemo/icons/list.bmp +0 -0
  85. data/samples/bigdemo/icons/list.xpm +27 -0
  86. data/samples/bigdemo/icons/mondrian.ico +0 -0
  87. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  88. data/samples/bigdemo/icons/new.xpm +24 -0
  89. data/samples/bigdemo/icons/ogl.ico +0 -0
  90. data/samples/bigdemo/icons/ogl.xpm +45 -0
  91. data/samples/bigdemo/icons/open.xpm +26 -0
  92. data/samples/bigdemo/icons/paste.bmp +0 -0
  93. data/samples/bigdemo/icons/paste.xpm +38 -0
  94. data/samples/bigdemo/icons/pointy.png +0 -0
  95. data/samples/bigdemo/icons/preview.xpm +26 -0
  96. data/samples/bigdemo/icons/print.xpm +26 -0
  97. data/samples/bigdemo/icons/radio.bmp +0 -0
  98. data/samples/bigdemo/icons/radio.xpm +27 -0
  99. data/samples/bigdemo/icons/robert.xpm +415 -0
  100. data/samples/bigdemo/icons/ruby.png +0 -0
  101. data/samples/bigdemo/icons/sashtest.ico +0 -0
  102. data/samples/bigdemo/icons/save.xpm +25 -0
  103. data/samples/bigdemo/icons/smiles.bmp +0 -0
  104. data/samples/bigdemo/icons/smiles.xpm +39 -0
  105. data/samples/bigdemo/icons/smiley.ico +0 -0
  106. data/samples/bigdemo/icons/smiley.xpm +42 -0
  107. data/samples/bigdemo/icons/stattext.xpm +24 -0
  108. data/samples/bigdemo/icons/test2.bmp +0 -0
  109. data/samples/bigdemo/icons/test2.png +0 -0
  110. data/samples/bigdemo/icons/test2.xpm +79 -0
  111. data/samples/bigdemo/icons/text.bmp +0 -0
  112. data/samples/bigdemo/icons/text.xpm +27 -0
  113. data/samples/bigdemo/icons/tog1.bmp +0 -0
  114. data/samples/bigdemo/icons/tog1.xpm +38 -0
  115. data/samples/bigdemo/icons/tog2.bmp +0 -0
  116. data/samples/bigdemo/icons/tog2.xpm +38 -0
  117. data/samples/bigdemo/icons/wxwin.ico +0 -0
  118. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  119. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  120. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  121. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  122. data/samples/bigdemo/run.rb +90 -0
  123. data/samples/bigdemo/tips.txt +7 -0
  124. data/samples/bigdemo/utils.rb +12 -0
  125. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  126. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  127. data/samples/bigdemo/wxButton.rbw +64 -0
  128. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
  129. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  130. data/samples/bigdemo/wxCheckListBox.rbw +75 -0
  131. data/samples/bigdemo/wxChoice.rbw +47 -0
  132. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  133. data/samples/bigdemo/wxColourDialog.rbw +31 -0
  134. data/samples/bigdemo/wxComboBox.rbw +77 -0
  135. data/samples/bigdemo/wxCursor.rbw +136 -0
  136. data/samples/bigdemo/wxDialog.rbw +74 -0
  137. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  138. data/samples/bigdemo/wxDragImage.rbw +70 -0
  139. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  140. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  141. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  142. data/samples/bigdemo/wxFontDialog.rbw +173 -0
  143. data/samples/bigdemo/wxFrame.rbw +53 -0
  144. data/samples/bigdemo/wxGauge.rbw +71 -0
  145. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  146. data/samples/bigdemo/wxGrid.rbw +66 -0
  147. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  148. data/samples/bigdemo/wxListBox.rbw +140 -0
  149. data/samples/bigdemo/wxListCtrl_virtual.rbw +107 -0
  150. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  151. data/samples/bigdemo/wxMenu.rbw +236 -0
  152. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  153. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  154. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
  155. data/samples/bigdemo/wxNotebook.rbw +136 -0
  156. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  157. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  158. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  159. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  160. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  161. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  162. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  163. data/samples/bigdemo/wxSlider.rbw +42 -0
  164. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  165. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  166. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  167. data/samples/bigdemo/wxStaticBitmap.rbw +51 -0
  168. data/samples/bigdemo/wxStaticText.rbw +55 -0
  169. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  170. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  171. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  172. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  173. data/samples/bigdemo/wxToolBar.rbw +131 -0
  174. data/samples/bigdemo/wxTreeCtrl.rbw +190 -0
  175. data/samples/calendar/calendar.rb +271 -0
  176. data/samples/caret/caret.rb +282 -0
  177. data/samples/caret/mondrian.xpm +44 -0
  178. data/samples/controls/controls.rb +1136 -0
  179. data/samples/controls/get_item_sample.rb +87 -0
  180. data/samples/controls/icons/choice.xpm +27 -0
  181. data/samples/controls/icons/combo.xpm +27 -0
  182. data/samples/controls/icons/gauge.xpm +27 -0
  183. data/samples/controls/icons/list.xpm +27 -0
  184. data/samples/controls/icons/radio.xpm +27 -0
  185. data/samples/controls/icons/stattext.xpm +24 -0
  186. data/samples/controls/icons/text.xpm +27 -0
  187. data/samples/controls/mondrian.ico +0 -0
  188. data/samples/controls/mondrian.xpm +44 -0
  189. data/samples/controls/test2.bmp +0 -0
  190. data/samples/dialogs/dialogs.rb +723 -0
  191. data/samples/dialogs/tips.txt +18 -0
  192. data/samples/drawing/graphics_drawing.rb +235 -0
  193. data/samples/drawing/images.rb +37 -0
  194. data/samples/drawing/paperclip.png +0 -0
  195. data/samples/etc/activation.rb +102 -0
  196. data/samples/etc/choice.rb +67 -0
  197. data/samples/etc/miniframe.rb +79 -0
  198. data/samples/etc/sash.rb +130 -0
  199. data/samples/etc/scrollwin.rb +110 -0
  200. data/samples/etc/system_settings.rb +252 -0
  201. data/samples/etc/threaded.rb +72 -0
  202. data/samples/etc/wizard.rb +74 -0
  203. data/samples/event/event.rb +182 -0
  204. data/samples/grid/grid.rb +198 -0
  205. data/samples/grid/gridtablebase.rb +134 -0
  206. data/samples/html/html.rb +262 -0
  207. data/samples/listbook/listbook.rb +174 -0
  208. data/samples/listbook/listbook.xrc +370 -0
  209. data/samples/mdi/mdi.rb +82 -0
  210. data/samples/media/mediactrl.rb +167 -0
  211. data/samples/minimal/minimal.rb +77 -0
  212. data/samples/minimal/mondrian.ico +0 -0
  213. data/samples/minimal/mondrian.png +0 -0
  214. data/samples/minimal/nothing.rb +16 -0
  215. data/samples/opengl/cube.rb +117 -0
  216. data/samples/printing/mondrian.ico +0 -0
  217. data/samples/printing/mondrian.xpm +44 -0
  218. data/samples/printing/printing.rb +310 -0
  219. data/samples/sockets/SocketPackets.rb +27 -0
  220. data/samples/sockets/res/message-new.png +0 -0
  221. data/samples/sockets/res/user.png +0 -0
  222. data/samples/sockets/wxClient.rb +395 -0
  223. data/samples/sockets/wxServer.rb +422 -0
  224. data/samples/sockets/wxSocketGUI.rb +97 -0
  225. data/samples/text/mondrian.ico +0 -0
  226. data/samples/text/mondrian.xpm +44 -0
  227. data/samples/text/scintilla.rb +169 -0
  228. data/samples/text/textctrl.rb +113 -0
  229. data/samples/text/unicode.rb +242 -0
  230. data/samples/text/utf8.txt +15 -0
  231. data/samples/treectrl/icon1.xpm +79 -0
  232. data/samples/treectrl/icon2.xpm +53 -0
  233. data/samples/treectrl/icon3.xpm +79 -0
  234. data/samples/treectrl/icon4.xpm +43 -0
  235. data/samples/treectrl/icon5.xpm +79 -0
  236. data/samples/treectrl/treectrl.rb +1174 -0
  237. data/samples/xrc/samples.xrc +46 -0
  238. data/samples/xrc/xrc_sample.rb +96 -0
  239. metadata +316 -0
@@ -0,0 +1,72 @@
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
+ $RBUT1 = 5000
13
+ $RBUT2 = 5001
14
+ $RBUT3 = 5002
15
+ $RBUT4 = 5003
16
+
17
+ $RBOX1 = 5004
18
+ $RBOX2 = 5005
19
+
20
+ class TestRadioButtons < Wx::Panel
21
+ def initialize(parent, log)
22
+ @log = log
23
+ super(parent, -1)
24
+
25
+ sampleList = %w(zero one two three four five six seven eight)
26
+
27
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
28
+ # Here is a strange thing - when I originally created this demo, I used the WxRuby constant Wx::DEFAULT_SIZE in the two
29
+ # radiobox constructors (on Windows XP Prof). When I did this, the "box" around the radio buttons would resize in a
30
+ # groesque fashion (either when I clicked on another demo first, or on the second time that I ran the demo. But when I
31
+ # used Wx::Size.new(-1,-1), this behavior disappeared. If anyone figures this out, please post it to the list :)
32
+ rb = Wx::RadioBox.new(self, $RBOX1, "Wx::RadioBox", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 2, Wx::RA_SPECIFY_COLS)
33
+ evt_radiobox($RBOX1) {|event| on_evt_radiobox(event)}
34
+ rb.set_tool_tip(Wx::ToolTip.new("This is a tooltip!"))
35
+ sizer.add(rb, 0, Wx::ALL, 20)
36
+
37
+ rb = Wx::RadioBox.new(self, $RBOX2, "", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 3, Wx::RA_SPECIFY_COLS | Wx::NO_BORDER)
38
+ evt_radiobox($RBOX2) {|event| on_evt_radiobox(event)}
39
+ rb.set_tool_tip(Wx::ToolTip.new("This box has no label"))
40
+ sizer.add(rb, 0, Wx::ALL, 20)
41
+
42
+ set_sizer(sizer)
43
+ sizer.fit(self)
44
+ sizer.layout()
45
+ end
46
+
47
+ def on_evt_radiobox(event)
48
+ @log.write_text("evt_radiobox: " + event.get_int().to_s())
49
+ end
50
+
51
+ def on_evt_radio_button(event)
52
+ @log.write_text("evt_radiobutton: " + event.get_id().to_s())
53
+ end
54
+ end
55
+
56
+ module Demo
57
+ def Demo.run(frame,nb,log)
58
+ win = TestRadioButtons.new(nb, log)
59
+ return win
60
+ end
61
+
62
+ def Demo.overview
63
+ "A radio box item is used to select one of number of mutually exclusive choices. It is displayed as a vertical column or horizontal row of labelled buttons."
64
+ end
65
+ end
66
+
67
+
68
+ if __FILE__ == $0
69
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
70
+ load run_solo_lib
71
+ run File.basename($0)
72
+ end
@@ -0,0 +1,125 @@
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
+ panel = Wx::Panel.new(self, -1)
17
+
18
+ # 1st group of controls
19
+ @group1_ctrls = {}
20
+ radio1 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
21
+ text1 = Wx::TextCtrl.new(panel, -1, "")
22
+ radio2 = Wx::RadioButton.new(panel, -1, "Radio2")
23
+ text2 = Wx::TextCtrl.new(panel, -1, "")
24
+ radio3 = Wx::RadioButton.new(panel, -1, "Radio3")
25
+ text3 = Wx::TextCtrl.new(panel, -1, "")
26
+ @group1_ctrls["one"] = [radio1, text1]
27
+ @group1_ctrls["two"] = [radio2, text2]
28
+ @group1_ctrls["three"] = [radio3, text3]
29
+
30
+ # 2nd group of controls
31
+ #@group2_ctrls = {}
32
+ #radio4 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
33
+ #text4 = Wx::TextCtrl.new(panel, -1, "")
34
+ #radio5 = Wx::RadioButton.new(panel, -1, "Radio2")
35
+ #text5 = Wx::TextCtrl.new(panel, -1, "")
36
+ #radio6 = Wx::RadioButton.new(panel, -1, "Radio3")
37
+ #text6 = Wx::TextCtrl.new(panel, -1, "")
38
+ #@group2_ctrls["one"] = [radio4, text4]
39
+ #@group2_ctrls["two"] = [radio5, text5]
40
+ #@group2_ctrls["three"] = [radio6, text6]
41
+
42
+ # Layout controls on panel
43
+ vs = Wx::BoxSizer.new(Wx::VERTICAL)
44
+
45
+ box1_title = Wx::StaticBox.new(panel, -1, "Group 1", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1))
46
+ box1 = Wx::StaticBoxSizer.new(box1_title, Wx::HORIZONTAL)
47
+ grid1 = Wx::FlexGridSizer.new(0,2,0,0)
48
+
49
+ @group1_ctrls.each_value do |ctrl|
50
+ grid1.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
51
+ grid1.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
52
+ end
53
+ box1.add(grid1, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
54
+ vs.add(box1, 0, Wx::ALL, 5)
55
+
56
+ #box2_title = Wx::StaticBox.new(panel, -1, "Group 2")
57
+ #box2 = Wx::StaticBoxSizer.new(box2_title, Wx::HORIZONTAL)
58
+ #grid2 = Wx::FlexGridSizer.new(0,2,0,0)
59
+
60
+ #@group2_ctrls.each_value do |ctrl|
61
+ #grid2.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
62
+ #grid2.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
63
+ #end
64
+ #box2.add(grid2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
65
+ #vs.add(box2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
66
+
67
+ panel.set_sizer(vs)
68
+ vs.fit(panel)
69
+
70
+ panel.move(Wx::Point.new(50,50))
71
+ @panel = panel
72
+
73
+ @group1_ctrls.each_value do |ctrl|
74
+ evt_radiobutton(ctrl[0].get_id()) {|event| on_group1_select(event)}
75
+ ctrl[0].set_value(0)
76
+ ctrl[1].enable(false)
77
+ end
78
+ #@group2_ctrls.each_value do |ctrl|
79
+ # evt_radiobutton(ctrl[0].get_id()) {|event| on_group2_select(event)}
80
+ # ctrl[0].set_value(0)
81
+ # ctrl[1].enable(false)
82
+ #end
83
+ end
84
+
85
+ def on_group1_select(event)
86
+ @group1_ctrls.each_value do |ctrl|
87
+ if ctrl[0].get_value() == true
88
+ ctrl[1].enable(true)
89
+ @log.write_text("Group 1 " + ctrl[0].get_label() + " selected")
90
+ else
91
+ ctrl[1].enable(false)
92
+ end
93
+ end
94
+ end
95
+
96
+ def on_group2_select(event)
97
+ @group2_ctrls.each_value do |ctrl|
98
+ if ctrl[0].get_value() == true
99
+ ctrl[1].enable(true)
100
+ @log.write_text("Group 2 " + ctrl[0].get_label() + " selected")
101
+ else
102
+ ctrl[1].enable(false)
103
+ end
104
+ end
105
+ end
106
+ end
107
+
108
+ module Demo
109
+ def Demo.run(frame,nb,log)
110
+ win = TestPanel.new(nb, log)
111
+ return win
112
+ end
113
+
114
+ def Demo.overview
115
+ "This demo shows how individual radio buttons can be used to build more complicated selection mechanisms...\n" +
116
+ "It uses 2 groups of wxRadioButtons, where the groups are defined by instantiation. When a wxRadioButton is created with the Wx::RB_GROUP style, all subsequent wxRadioButtons created without it are implicitly added to that group by the framework."
117
+ end
118
+ end
119
+
120
+
121
+ if __FILE__ == $0
122
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
123
+ load run_solo_lib
124
+ run File.basename($0)
125
+ end
@@ -0,0 +1,141 @@
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, :style => Wx::NO_FULL_REPAINT_ON_RESIZE)
15
+ @log = log
16
+
17
+ winids = []
18
+
19
+ # Create some layout windows
20
+ # A window like a toolbar
21
+ @topwin = Wx::SashLayoutWindow.new( self,
22
+ :size => [200, 30],
23
+ :style => Wx::NO_BORDER|Wx::SW_3D)
24
+ @topwin.default_size = [1000, 30]
25
+ @topwin.orientation = Wx::LAYOUT_HORIZONTAL
26
+ @topwin.alignment = Wx::LAYOUT_TOP
27
+ @topwin.background_colour = Wx::RED
28
+ @topwin.set_sash_visible(Wx::SASH_BOTTOM, true)
29
+
30
+ winids << @topwin.id
31
+
32
+ # A window like a statusbar
33
+ @bottomwin = Wx::SashLayoutWindow.new( self,
34
+ :size => [200, 30],
35
+ :style => Wx::NO_BORDER|Wx::SW_3D )
36
+
37
+ @bottomwin.default_size = [1000, 30]
38
+ @bottomwin.orientation = Wx::LAYOUT_HORIZONTAL
39
+ @bottomwin.alignment = Wx::LAYOUT_BOTTOM
40
+ @bottomwin.background_colour = Wx::GREEN
41
+ @bottomwin.set_sash_visible(Wx::SASH_TOP, true)
42
+
43
+ winids << @bottomwin.id
44
+
45
+ # A window to the left of the client window
46
+ @leftwin1 = Wx::SashLayoutWindow.new( self,
47
+ :size => [200, 30],
48
+ :style => Wx::NO_BORDER|Wx::SW_3D )
49
+
50
+ @leftwin1.default_size = [120, 1000]
51
+ @leftwin1.orientation = Wx::LAYOUT_VERTICAL
52
+ @leftwin1.alignment = Wx::LAYOUT_LEFT
53
+ @leftwin1.background_colour = Wx::BLUE
54
+ @leftwin1.set_sash_visible(Wx::SASH_RIGHT, true)
55
+ @leftwin1.extra_border_size = 10
56
+
57
+ text_window = Wx::TextCtrl.new( @leftwin1,
58
+ :value => 'A sub window',
59
+ :style => Wx::TE_MULTILINE|Wx::SUNKEN_BORDER)
60
+ winids << @leftwin1.id
61
+
62
+ # Another window to the left of the client window
63
+ @leftwin2 = Wx::SashLayoutWindow.new( self,
64
+ :size => [200, 30],
65
+ :style => Wx::NO_BORDER|Wx::SW_3D)
66
+
67
+ @leftwin2.default_size = [120, 1000]
68
+ @leftwin2.orientation = Wx::LAYOUT_VERTICAL
69
+ @leftwin2.alignment = Wx::LAYOUT_LEFT
70
+ @leftwin2.background_colour = Wx::Colour.new(0, 255, 255)
71
+ @leftwin2.set_sash_visible(Wx::SASH_RIGHT, true)
72
+
73
+ winids << @leftwin2.id
74
+
75
+ # will occupy the space not used by the Layout Algorithm
76
+ @remaining_space = Wx::Panel.new(self, :style => Wx::SUNKEN_BORDER)
77
+
78
+ evt_sash_dragged_range(winids.min, winids.max, :on_sash_drag)
79
+ evt_size :on_size
80
+ end
81
+
82
+
83
+ def on_sash_drag(event)
84
+ if event.get_drag_status == Wx::SASH_STATUS_OUT_OF_RANGE:
85
+ @log.write_text('drag == out of range')
86
+ return
87
+ end
88
+
89
+ eobj = event.get_event_object
90
+ if eobj == @topwin
91
+ @log.write_text('topwin received drag event')
92
+ @topwin.default_size = Wx::Size.new(1000, event.drag_rect.height)
93
+
94
+ elsif eobj == @leftwin1
95
+ @log.write_text('leftwin1 received drag event')
96
+ @leftwin1.default_size = Wx::Size.new(event.drag_rect.width, 1000)
97
+
98
+ elsif eobj == @leftwin2
99
+ @log.write_text('leftwin2 received drag event')
100
+ @leftwin2.default_size = Wx::Size.new(event.drag_rect.width, 1000)
101
+
102
+ elsif eobj == @bottomwin
103
+ @log.write_text('bottomwin received drag event')
104
+ @bottomwin.default_size = Wx::Size.new(1000, event.drag_rect.height)
105
+ end
106
+
107
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
108
+ @remaining_space.refresh
109
+ end
110
+
111
+ def on_size(event)
112
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
113
+ end
114
+
115
+ end
116
+
117
+ module Demo
118
+ def Demo.run(frame, nb, log)
119
+ TestPanel.new(nb, log)
120
+ end
121
+
122
+ def Demo.overview
123
+ return <<EOS
124
+ Wx::SashLayoutWindow responds to OnCalculateLayout events generated by
125
+ wxLayoutAlgorithm. It allows the application to use simple accessors to
126
+ specify how the window should be laid out, rather than having to respond
127
+ to events. The fact that the class derives from Wx::SashWindow allows sashes
128
+ to be used if required, to allow the windows to be user-resizable.
129
+
130
+ The documentation for Wx::LayoutAlgorithm explains the purpose of this class
131
+ in more detail.
132
+ EOS
133
+ end
134
+
135
+ end
136
+
137
+ if __FILE__ == $0
138
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
139
+ load run_solo_lib
140
+ run File.basename($0)
141
+ end
@@ -0,0 +1,57 @@
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 ScrolledMessageDialog < Wx::Dialog
13
+ def initialize(parent, msg, caption,
14
+ pos = Wx::DEFAULT_POSITION,
15
+ size = Wx::Size.new(500,300) )
16
+ super(parent, -1, caption, pos, size)
17
+ x,y = pos.x, pos.y
18
+ if x == -1 and y == -1
19
+ center_on_screen(Wx::BOTH)
20
+ end
21
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
22
+ text = Wx::TextCtrl.new(self, -1, msg,
23
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
24
+ Wx::TE_MULTILINE|Wx::TE_READONLY)
25
+
26
+ sizer.add(text, 1, Wx::EXPAND|Wx::ALL, 5)
27
+
28
+ button_sizer = Wx::StdDialogButtonSizer.new
29
+ button_sizer.add_button( Wx::Button.new(self, Wx::ID_OK, "OK") )
30
+ button_sizer.realize
31
+
32
+ sizer.add(button_sizer, 0, Wx::EXPAND|Wx::ALL, 5)
33
+
34
+ set_sizer(sizer)
35
+ layout
36
+ end
37
+ end
38
+
39
+ module Demo
40
+ def Demo.run(frame, nb, log)
41
+ f = open(__FILE__, "r")
42
+ msg = f.read()
43
+ dlg = ScrolledMessageDialog.new(frame, msg, "message test")
44
+ dlg.show_modal()
45
+ end
46
+
47
+ def Demo.overview
48
+ return "A simple ruby example of a custom dialog displaying a " +
49
+ "long message in a scrolled TextCtrl"
50
+ end
51
+ end
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,199 @@
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
+ #$BUFFERED = 0 #Wx::BufferedDC not yet implemented
13
+
14
+ class MyCanvas < Wx::ScrolledWindow
15
+ def initialize(parent, id=-1, size=Wx::DEFAULT_SIZE)
16
+ super(parent, -1, Wx::Point.new(0,0), size, Wx::SUNKEN_BORDER)
17
+ @lines = []
18
+ @maxWidth = 1000
19
+ @maxHeight = 1000
20
+ @x = @y = 0
21
+ @curLine = []
22
+ @drawing = false
23
+
24
+ set_background_colour(Wx::WHITE)
25
+
26
+ set_cursor(Wx::Cursor.new(Wx::CURSOR_PENCIL))
27
+ bmp_file = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
28
+ @bmp = Wx::Bitmap.new(bmp_file)
29
+
30
+
31
+ set_scrollbars(20, 20, @maxWidth / 20, @maxHeight / 20, 0, 0, true)
32
+
33
+ evt_left_down {|event| on_left_button_event_down(event)}
34
+ evt_left_up {|event| on_left_button_event_up(event)}
35
+ evt_motion {|event| on_left_button_event_motion(event)}
36
+ evt_paint { on_paint }
37
+ #evt_mousewheel {|event| on_wheel(event)}
38
+ end
39
+
40
+ def on_paint
41
+ paint { | dc | do_drawing(dc) }
42
+ end
43
+
44
+ def do_drawing(dc, printing=false)
45
+ # Reset the origin co-ordinates of the DC to reflect current scrolling
46
+ do_prepare_dc(dc)
47
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
48
+ dc.draw_rectangle(5,5,50,50)
49
+
50
+ dc.set_brush(Wx::LIGHT_GREY_BRUSH)
51
+ dc.set_pen(Wx::Pen.new("BLUE", 4, Wx::SOLID))
52
+ dc.draw_rectangle(15,15,50,50)
53
+
54
+ dc.set_font(Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL))
55
+ dc.set_text_foreground(Wx::Colour.new(0xFF, 0x20, 0xFF))
56
+ te = dc.get_text_extent("Hello World")
57
+ dc.draw_text("Hello World", 60, 65)
58
+
59
+ dc.set_pen(Wx::Pen.new("VIOLET", 4, Wx::SOLID))
60
+ dc.draw_line(5, 65+te[1], 60 + te[0], 65 + te[1])
61
+
62
+ lst = [Wx::Point.new(100,110), Wx::Point.new(150, 110), Wx::Point.new(150, 160), Wx::Point.new(100, 160)]
63
+ dc.draw_lines(lst, -60)
64
+ dc.set_pen(Wx::GREY_PEN)
65
+ dc.draw_polygon(lst, 75)
66
+ dc.set_pen(Wx::GREEN_PEN)
67
+ dc.draw_spline(lst << Wx::Point.new(100,100))
68
+
69
+ dc.draw_bitmap(@bmp, 200, 20, true)
70
+ dc.set_text_foreground(Wx::Colour.new(0, 0xFF, 0x80))
71
+ dc.draw_text("a bitmap", 200,85)
72
+
73
+ font = Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
74
+ dc.set_font(font)
75
+ dc.set_text_foreground(Wx::BLACK)
76
+ 0.step(360, 45) {|number| dc.draw_rotated_text("Rotated text...", 300, 300, number)}
77
+
78
+ dc.set_pen(Wx::TRANSPARENT_PEN)
79
+ dc.set_brush(Wx::BLUE_BRUSH)
80
+ dc.draw_rectangle(50, 500, 50, 50)
81
+ dc.draw_rectangle(100, 500, 50, 50)
82
+
83
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
84
+ dc.draw_elliptic_arc(200, 500, 50, 75, 0, 90)
85
+
86
+ if not printing
87
+ # This has troubles when used on a print preview in wxGTK,
88
+ # probably something to do with the pen styles and the scaling
89
+ # it does...
90
+ y = 20
91
+ [Wx::DOT, Wx::LONG_DASH, Wx::SHORT_DASH, Wx::DOT_DASH, Wx::USER_DASH].each do |style|
92
+ pen = Wx::Pen.new("DARK ORCHID", 1, style)
93
+ if style == Wx::USER_DASH
94
+ pen.set_cap(Wx::CAP_BUTT)
95
+ pen.set_dashes([1,2])
96
+ pen.set_colour("RED")
97
+ end
98
+ dc.set_pen(pen)
99
+ dc.draw_line(300, y, 400, y)
100
+ y += 10
101
+ end
102
+ end
103
+ dc.set_brush(Wx::TRANSPARENT_BRUSH)
104
+ dc.set_pen(Wx::Pen.new(Wx::Colour.new(0xFF, 0x20, 0xFF), 1, Wx::SOLID))
105
+ dc.draw_rectangle(450, 50, 100, 100)
106
+ old_pen = dc.get_pen()
107
+ new_pen = Wx::Pen.new("BLACK", 5, Wx::SOLID)
108
+ dc.set_pen(new_pen)
109
+ dc.draw_rectangle(470, 70, 60, 60)
110
+ dc.set_pen(old_pen)
111
+ dc.draw_rectangle(490, 90, 20, 20)
112
+
113
+ draw_saved_lines(dc)
114
+ end
115
+
116
+ def draw_saved_lines(dc)
117
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
118
+ @lines.each do |line|
119
+ line.each do |coords|
120
+ coords.flatten!()
121
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3])
122
+ end
123
+ end
124
+ end
125
+
126
+ def set_XY(event)
127
+ @x, @y = convert_event_coords(event)
128
+ end
129
+
130
+ def convert_event_coords(event)
131
+ xView, yView = get_view_start()
132
+ xDelta, yDelta = get_scroll_pixels_per_unit()
133
+ return event.get_x() + (xView * xDelta), event.get_y() + (yView * yDelta)
134
+ end
135
+
136
+ def on_left_button_event_down(event)
137
+ if event.left_is_down() and !@drawing
138
+ set_focus()
139
+ set_XY(event)
140
+ @event_x_old = event.get_x # added this to save the current absolute...
141
+ @event_y_old = event.get_y # ... mouse position
142
+ @curLine = []
143
+ capture_mouse()
144
+ @drawing = true
145
+ end
146
+ end
147
+
148
+ def on_left_button_event_up(event)
149
+ if !event.left_is_down() and @drawing
150
+ @lines.push(@curLine)
151
+ @curLine = []
152
+ release_mouse()
153
+ @drawing = false
154
+ end
155
+ end
156
+
157
+ def on_left_button_event_motion(event)
158
+ if event.left_is_down() and @drawing
159
+ # if $BUFFERED
160
+ # # If doing buffered drawing, create the buffered DC, giving it
161
+ # # it a real DC to blit to when done.
162
+ # cdc = Wx::ClientDC.new(self)
163
+ # dc = Wx::BufferedDC.new(cdc, @buffer)
164
+ # else
165
+ # dc = Wx::ClientDC.new(self)
166
+ # end
167
+
168
+ paint do | dc |
169
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
170
+ save_coords = [@x, @y] + convert_event_coords(event) # translate the absolute coords to save them in the array
171
+ coords = [@event_x_old, @event_y_old, event.get_x, event.get_y] # the absolute coords to use for the first draw
172
+ @curLine.push(save_coords) # use the translated coords here
173
+ coords.flatten!()
174
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3]) # and the absolute coords here
175
+ set_XY(event)
176
+ @event_x_old = event.get_x # saving the new ...
177
+ @event_y_old = event.get_y # ... absolute coords
178
+ end
179
+ end
180
+ end
181
+
182
+ end
183
+
184
+ module Demo
185
+ def Demo.run(frame, nb, log)
186
+ win = MyCanvas.new(nb, log)
187
+ return win
188
+ end
189
+
190
+ def Demo.overview
191
+ return "The wxScrolledWindow class manages scrolling for its client area, transforming the coordinates according to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view."
192
+ end
193
+ end
194
+
195
+ if __FILE__ == $0
196
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
197
+ load run_solo_lib
198
+ run File.basename($0)
199
+ end
@@ -0,0 +1,33 @@
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
+ module Demo
13
+ def Demo.run(frame, nb, log)
14
+ dlg = Wx::SingleChoiceDialog.new(frame, "Test Single Choice", "The Caption",
15
+ %w(zero one two three four five six seven eight))
16
+ #Wx::CHOICEDLG_STYLE)
17
+ if dlg.show_modal() == Wx::ID_OK
18
+ log.write_text("You selected: " + dlg.get_string_selection() + "\n")
19
+ end
20
+ dlg.destroy()
21
+ return nil
22
+ end
23
+
24
+ def Demo.overview
25
+ return "This class represents a dialog that shows a list of strings, and allows the user to select one. Double-clicking on a list item is equivalent to single-clicking and then pressing OK."
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
31
+ load run_solo_lib
32
+ run File.basename($0)
33
+ end
@@ -0,0 +1,42 @@
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 is a Wx::Slider", Wx::Point.new(45,15))
19
+
20
+ slider = Wx::Slider.new(self, 100, 25, 1, 100, Wx::Point.new(30,60), Wx::Size.new(250,-1),
21
+ Wx::SL_HORIZONTAL | Wx::SL_AUTOTICKS | Wx::SL_LABELS)
22
+ slider.set_tick_freq(5,1)
23
+ end
24
+ end
25
+
26
+ module Demo
27
+ def Demo.run(frame,nb,log)
28
+ win = TestPanel.new(nb, log)
29
+ return win
30
+ end
31
+
32
+ def Demo.overview
33
+ "A slider is a control with a handle which can be pulled back and forth to change the value."
34
+ end
35
+ end
36
+
37
+
38
+ if __FILE__ == $0
39
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
40
+ load run_solo_lib
41
+ run File.basename($0)
42
+ end