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,45 @@
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
+ max = 20
17
+ dlg = Wx::ProgressDialog.new("Progress dialog example", "An informative message", max, frame,
18
+ Wx::PD_CAN_ABORT | Wx::PD_APP_MODAL)
19
+
20
+ keepGoing = true
21
+ count = 0
22
+ while keepGoing and count < max
23
+ count += 1
24
+ sleep(1)
25
+
26
+ if count == max / 2
27
+ keepGoing = dlg.update(count, "Half-time!")
28
+ else
29
+ keepGoing = dlg.update(count)
30
+ end
31
+ end
32
+ dlg.destroy()
33
+ return nil
34
+ end
35
+
36
+ def Demo.overview
37
+ return "A dialog that shows the progress of an operation"
38
+ end
39
+ end
40
+
41
+ if __FILE__ == $0
42
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
43
+ load run_solo_lib
44
+ run File.basename($0)
45
+ end
@@ -0,0 +1,74 @@
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
+ $RBUT1 = 5000
15
+ $RBUT2 = 5001
16
+ $RBUT3 = 5002
17
+ $RBUT4 = 5003
18
+
19
+ $RBOX1 = 5004
20
+ $RBOX2 = 5005
21
+
22
+ class TestRadioButtons < Wx::Panel
23
+ def initialize(parent, log)
24
+ @log = log
25
+ super(parent, -1)
26
+
27
+ sampleList = %w(zero one two three four five six seven eight)
28
+
29
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
30
+ # Here is a strange thing - when I originally created this demo, I used the WxRuby constant Wx::DEFAULT_SIZE in the two
31
+ # radiobox constructors (on Windows XP Prof). When I did this, the "box" around the radio buttons would resize in a
32
+ # groesque fashion (either when I clicked on another demo first, or on the second time that I ran the demo. But when I
33
+ # used Wx::Size.new(-1,-1), this behavior disappeared. If anyone figures this out, please post it to the list :)
34
+ rb = Wx::RadioBox.new(self, $RBOX1, "Wx::RadioBox", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 2, Wx::RA_SPECIFY_COLS)
35
+ evt_radiobox($RBOX1) {|event| on_evt_radiobox(event)}
36
+ rb.set_tool_tip(Wx::ToolTip.new("This is a tooltip!"))
37
+ sizer.add(rb, 0, Wx::ALL, 20)
38
+
39
+ rb = Wx::RadioBox.new(self, $RBOX2, "", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 3, Wx::RA_SPECIFY_COLS | Wx::NO_BORDER)
40
+ evt_radiobox($RBOX2) {|event| on_evt_radiobox(event)}
41
+ rb.set_tool_tip(Wx::ToolTip.new("This box has no label"))
42
+ sizer.add(rb, 0, Wx::ALL, 20)
43
+
44
+ set_sizer(sizer)
45
+ sizer.fit(self)
46
+ sizer.layout()
47
+ end
48
+
49
+ def on_evt_radiobox(event)
50
+ @log.write_text("evt_radiobox: " + event.get_int().to_s())
51
+ end
52
+
53
+ def on_evt_radio_button(event)
54
+ @log.write_text("evt_radiobutton: " + event.get_id().to_s())
55
+ end
56
+ end
57
+
58
+ module Demo
59
+ def Demo.run(frame,nb,log)
60
+ win = TestRadioButtons.new(nb, log)
61
+ return win
62
+ end
63
+
64
+ def Demo.overview
65
+ "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."
66
+ end
67
+ end
68
+
69
+
70
+ if __FILE__ == $0
71
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
72
+ load run_solo_lib
73
+ run File.basename($0)
74
+ end
@@ -0,0 +1,127 @@
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
+
20
+ # 1st group of controls
21
+ @group1_ctrls = {}
22
+ radio1 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
23
+ text1 = Wx::TextCtrl.new(panel, -1, "")
24
+ radio2 = Wx::RadioButton.new(panel, -1, "Radio2")
25
+ text2 = Wx::TextCtrl.new(panel, -1, "")
26
+ radio3 = Wx::RadioButton.new(panel, -1, "Radio3")
27
+ text3 = Wx::TextCtrl.new(panel, -1, "")
28
+ @group1_ctrls["one"] = [radio1, text1]
29
+ @group1_ctrls["two"] = [radio2, text2]
30
+ @group1_ctrls["three"] = [radio3, text3]
31
+
32
+ # 2nd group of controls
33
+ #@group2_ctrls = {}
34
+ #radio4 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
35
+ #text4 = Wx::TextCtrl.new(panel, -1, "")
36
+ #radio5 = Wx::RadioButton.new(panel, -1, "Radio2")
37
+ #text5 = Wx::TextCtrl.new(panel, -1, "")
38
+ #radio6 = Wx::RadioButton.new(panel, -1, "Radio3")
39
+ #text6 = Wx::TextCtrl.new(panel, -1, "")
40
+ #@group2_ctrls["one"] = [radio4, text4]
41
+ #@group2_ctrls["two"] = [radio5, text5]
42
+ #@group2_ctrls["three"] = [radio6, text6]
43
+
44
+ # Layout controls on panel
45
+ vs = Wx::BoxSizer.new(Wx::VERTICAL)
46
+
47
+ box1_title = Wx::StaticBox.new(panel, -1, "Group 1", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1))
48
+ box1 = Wx::StaticBoxSizer.new(box1_title, Wx::HORIZONTAL)
49
+ grid1 = Wx::FlexGridSizer.new(0,2,0,0)
50
+
51
+ @group1_ctrls.each_value do |ctrl|
52
+ grid1.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
53
+ grid1.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
54
+ end
55
+ box1.add(grid1, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
56
+ vs.add(box1, 0, Wx::ALL, 5)
57
+
58
+ #box2_title = Wx::StaticBox.new(panel, -1, "Group 2")
59
+ #box2 = Wx::StaticBoxSizer.new(box2_title, Wx::HORIZONTAL)
60
+ #grid2 = Wx::FlexGridSizer.new(0,2,0,0)
61
+
62
+ #@group2_ctrls.each_value do |ctrl|
63
+ #grid2.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
64
+ #grid2.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
65
+ #end
66
+ #box2.add(grid2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
67
+ #vs.add(box2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
68
+
69
+ panel.set_sizer(vs)
70
+ vs.fit(panel)
71
+
72
+ panel.move(Wx::Point.new(50,50))
73
+ @panel = panel
74
+
75
+ @group1_ctrls.each_value do |ctrl|
76
+ evt_radiobutton(ctrl[0].get_id()) {|event| on_group1_select(event)}
77
+ ctrl[0].set_value(0)
78
+ ctrl[1].enable(false)
79
+ end
80
+ #@group2_ctrls.each_value do |ctrl|
81
+ # evt_radiobutton(ctrl[0].get_id()) {|event| on_group2_select(event)}
82
+ # ctrl[0].set_value(0)
83
+ # ctrl[1].enable(false)
84
+ #end
85
+ end
86
+
87
+ def on_group1_select(event)
88
+ @group1_ctrls.each_value do |ctrl|
89
+ if ctrl[0].get_value() == true
90
+ ctrl[1].enable(true)
91
+ @log.write_text("Group 1 " + ctrl[0].get_label() + " selected")
92
+ else
93
+ ctrl[1].enable(false)
94
+ end
95
+ end
96
+ end
97
+
98
+ def on_group2_select(event)
99
+ @group2_ctrls.each_value do |ctrl|
100
+ if ctrl[0].get_value() == true
101
+ ctrl[1].enable(true)
102
+ @log.write_text("Group 2 " + ctrl[0].get_label() + " selected")
103
+ else
104
+ ctrl[1].enable(false)
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ module Demo
111
+ def Demo.run(frame,nb,log)
112
+ win = TestPanel.new(nb, log)
113
+ return win
114
+ end
115
+
116
+ def Demo.overview
117
+ "This demo shows how individual radio buttons can be used to build more complicated selection mechanisms...\n" +
118
+ "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."
119
+ end
120
+ end
121
+
122
+
123
+ if __FILE__ == $0
124
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
125
+ load run_solo_lib
126
+ run File.basename($0)
127
+ end
@@ -0,0 +1,145 @@
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, :style => Wx::NO_FULL_REPAINT_ON_RESIZE)
19
+ @log = log
20
+
21
+ winids = []
22
+
23
+ # Create some layout windows
24
+ # A window like a toolbar
25
+ @topwin = Wx::SashLayoutWindow.new( self,
26
+ :size => [200, 30],
27
+ :style => Wx::NO_BORDER|Wx::SW_3D)
28
+ @topwin.default_size = [1000, 30]
29
+ @topwin.orientation = Wx::LAYOUT_HORIZONTAL
30
+ @topwin.alignment = Wx::LAYOUT_TOP
31
+ @topwin.background_colour = Wx::RED
32
+ @topwin.set_sash_visible(Wx::SASH_BOTTOM, true)
33
+
34
+ winids << @topwin.id
35
+
36
+ # A window like a statusbar
37
+ @bottomwin = Wx::SashLayoutWindow.new( self,
38
+ :size => [200, 30],
39
+ :style => Wx::NO_BORDER|Wx::SW_3D )
40
+
41
+ @bottomwin.default_size = [1000, 30]
42
+ @bottomwin.orientation = Wx::LAYOUT_HORIZONTAL
43
+ @bottomwin.alignment = Wx::LAYOUT_BOTTOM
44
+ @bottomwin.background_colour = Wx::GREEN
45
+ @bottomwin.set_sash_visible(Wx::SASH_TOP, true)
46
+
47
+ winids << @bottomwin.id
48
+
49
+ # A window to the left of the client window
50
+ @leftwin1 = Wx::SashLayoutWindow.new( self,
51
+ :size => [200, 30],
52
+ :style => Wx::NO_BORDER|Wx::SW_3D )
53
+
54
+ @leftwin1.default_size = [120, 1000]
55
+ @leftwin1.orientation = Wx::LAYOUT_VERTICAL
56
+ @leftwin1.alignment = Wx::LAYOUT_LEFT
57
+ @leftwin1.background_colour = Wx::BLUE
58
+ @leftwin1.set_sash_visible(Wx::SASH_RIGHT, true)
59
+ @leftwin1.extra_border_size = 10
60
+
61
+ text_window = Wx::TextCtrl.new( @leftwin1,
62
+ :value => 'A sub window',
63
+ :style => Wx::TE_MULTILINE|Wx::SUNKEN_BORDER)
64
+ winids << @leftwin1.id
65
+
66
+ # Another window to the left of the client window
67
+ @leftwin2 = Wx::SashLayoutWindow.new( self,
68
+ :size => [200, 30],
69
+ :style => Wx::NO_BORDER|Wx::SW_3D)
70
+
71
+ @leftwin2.default_size = [120, 1000]
72
+ @leftwin2.orientation = Wx::LAYOUT_VERTICAL
73
+ @leftwin2.alignment = Wx::LAYOUT_LEFT
74
+ @leftwin2.background_colour = Wx::Colour.new(0, 255, 255)
75
+ @leftwin2.set_sash_visible(Wx::SASH_RIGHT, true)
76
+
77
+ winids << @leftwin2.id
78
+
79
+ # will occupy the space not used by the Layout Algorithm
80
+ @remaining_space = Wx::Panel.new(self, :style => Wx::SUNKEN_BORDER)
81
+
82
+ evt_sash_dragged_range(winids.min, winids.max, :on_sash_drag)
83
+ evt_size :on_size
84
+ end
85
+
86
+
87
+ def on_sash_drag(event)
88
+ if event.get_drag_status == Wx::SASH_STATUS_OUT_OF_RANGE:
89
+ @log.write_text('drag == out of range')
90
+ return
91
+ end
92
+
93
+ eobj = event.get_event_object
94
+ if eobj == @topwin
95
+ @log.write_text('topwin received drag event')
96
+ @topwin.default_size = Wx::Size.new(1000, event.drag_rect.height)
97
+
98
+ elsif eobj == @leftwin1
99
+ @log.write_text('leftwin1 received drag event')
100
+ @leftwin1.default_size = Wx::Size.new(event.drag_rect.width, 1000)
101
+
102
+ elsif eobj == @leftwin2
103
+ @log.write_text('leftwin2 received drag event')
104
+ @leftwin2.default_size = Wx::Size.new(event.drag_rect.width, 1000)
105
+
106
+ elsif eobj == @bottomwin
107
+ @log.write_text('bottomwin received drag event')
108
+ @bottomwin.default_size = Wx::Size.new(1000, event.drag_rect.height)
109
+ end
110
+
111
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
112
+ @remaining_space.refresh
113
+ end
114
+
115
+ def on_size(event)
116
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
117
+ end
118
+
119
+ end
120
+
121
+ module Demo
122
+ def Demo.run(frame, nb, log)
123
+ TestPanel.new(nb, log)
124
+ end
125
+
126
+ def Demo.overview
127
+ return <<EOS
128
+ Wx::SashLayoutWindow responds to OnCalculateLayout events generated by
129
+ wxLayoutAlgorithm. It allows the application to use simple accessors to
130
+ specify how the window should be laid out, rather than having to respond
131
+ to events. The fact that the class derives from Wx::SashWindow allows sashes
132
+ to be used if required, to allow the windows to be user-resizable.
133
+
134
+ The documentation for Wx::LayoutAlgorithm explains the purpose of this class
135
+ in more detail.
136
+ EOS
137
+ end
138
+
139
+ end
140
+
141
+ if __FILE__ == $0
142
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
143
+ load run_solo_lib
144
+ run File.basename($0)
145
+ end
@@ -0,0 +1,59 @@
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 ScrolledMessageDialog < Wx::Dialog
15
+ def initialize(parent, msg, caption,
16
+ pos = Wx::DEFAULT_POSITION,
17
+ size = Wx::Size.new(500,300) )
18
+ super(parent, -1, caption, pos, size)
19
+ x,y = pos.x, pos.y
20
+ if x == -1 and y == -1
21
+ center_on_screen(Wx::BOTH)
22
+ end
23
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
24
+ text = Wx::TextCtrl.new(self, -1, msg,
25
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
26
+ Wx::TE_MULTILINE|Wx::TE_READONLY)
27
+
28
+ sizer.add(text, 1, Wx::EXPAND|Wx::ALL, 5)
29
+
30
+ button_sizer = Wx::StdDialogButtonSizer.new
31
+ button_sizer.add_button( Wx::Button.new(self, Wx::ID_OK, "OK") )
32
+ button_sizer.realize
33
+
34
+ sizer.add(button_sizer, 0, Wx::EXPAND|Wx::ALL, 5)
35
+
36
+ set_sizer(sizer)
37
+ layout
38
+ end
39
+ end
40
+
41
+ module Demo
42
+ def Demo.run(frame, nb, log)
43
+ f = open(__FILE__, "r")
44
+ msg = f.read()
45
+ dlg = ScrolledMessageDialog.new(frame, msg, "message test")
46
+ dlg.show_modal()
47
+ end
48
+
49
+ def Demo.overview
50
+ return "A simple ruby example of a custom dialog displaying a " +
51
+ "long message in a scrolled TextCtrl"
52
+ end
53
+ end
54
+
55
+ if __FILE__ == $0
56
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
57
+ load run_solo_lib
58
+ run File.basename($0)
59
+ end
@@ -0,0 +1,201 @@
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
+ #$BUFFERED = 0 #Wx::BufferedDC not yet implemented
15
+
16
+ class MyCanvas < Wx::ScrolledWindow
17
+ def initialize(parent, id=-1, size=Wx::DEFAULT_SIZE)
18
+ super(parent, -1, Wx::Point.new(0,0), size, Wx::SUNKEN_BORDER)
19
+ @lines = []
20
+ @maxWidth = 1000
21
+ @maxHeight = 1000
22
+ @x = @y = 0
23
+ @curLine = []
24
+ @drawing = false
25
+
26
+ set_background_colour(Wx::WHITE)
27
+
28
+ set_cursor(Wx::Cursor.new(Wx::CURSOR_PENCIL))
29
+ bmp_file = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
30
+ @bmp = Wx::Bitmap.new(bmp_file)
31
+
32
+
33
+ set_scrollbars(20, 20, @maxWidth / 20, @maxHeight / 20, 0, 0, true)
34
+
35
+ evt_left_down {|event| on_left_button_event_down(event)}
36
+ evt_left_up {|event| on_left_button_event_up(event)}
37
+ evt_motion {|event| on_left_button_event_motion(event)}
38
+ evt_paint { on_paint }
39
+ #evt_mousewheel {|event| on_wheel(event)}
40
+ end
41
+
42
+ def on_paint
43
+ paint { | dc | do_drawing(dc) }
44
+ end
45
+
46
+ def do_drawing(dc, printing=false)
47
+ # Reset the origin co-ordinates of the DC to reflect current scrolling
48
+ do_prepare_dc(dc)
49
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
50
+ dc.draw_rectangle(5,5,50,50)
51
+
52
+ dc.set_brush(Wx::LIGHT_GREY_BRUSH)
53
+ dc.set_pen(Wx::Pen.new("BLUE", 4, Wx::SOLID))
54
+ dc.draw_rectangle(15,15,50,50)
55
+
56
+ dc.set_font(Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL))
57
+ dc.set_text_foreground(Wx::Colour.new(0xFF, 0x20, 0xFF))
58
+ te = dc.get_text_extent("Hello World")
59
+ dc.draw_text("Hello World", 60, 65)
60
+
61
+ dc.set_pen(Wx::Pen.new("VIOLET", 4, Wx::SOLID))
62
+ dc.draw_line(5, 65+te[1], 60 + te[0], 65 + te[1])
63
+
64
+ lst = [Wx::Point.new(100,110), Wx::Point.new(150, 110), Wx::Point.new(150, 160), Wx::Point.new(100, 160)]
65
+ dc.draw_lines(lst, -60)
66
+ dc.set_pen(Wx::GREY_PEN)
67
+ dc.draw_polygon(lst, 75)
68
+ dc.set_pen(Wx::GREEN_PEN)
69
+ dc.draw_spline(lst << Wx::Point.new(100,100))
70
+
71
+ dc.draw_bitmap(@bmp, 200, 20, true)
72
+ dc.set_text_foreground(Wx::Colour.new(0, 0xFF, 0x80))
73
+ dc.draw_text("a bitmap", 200,85)
74
+
75
+ font = Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
76
+ dc.set_font(font)
77
+ dc.set_text_foreground(Wx::BLACK)
78
+ 0.step(360, 45) {|number| dc.draw_rotated_text("Rotated text...", 300, 300, number)}
79
+
80
+ dc.set_pen(Wx::TRANSPARENT_PEN)
81
+ dc.set_brush(Wx::BLUE_BRUSH)
82
+ dc.draw_rectangle(50, 500, 50, 50)
83
+ dc.draw_rectangle(100, 500, 50, 50)
84
+
85
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
86
+ dc.draw_elliptic_arc(200, 500, 50, 75, 0, 90)
87
+
88
+ if not printing
89
+ # This has troubles when used on a print preview in wxGTK,
90
+ # probably something to do with the pen styles and the scaling
91
+ # it does...
92
+ y = 20
93
+ [Wx::DOT, Wx::LONG_DASH, Wx::SHORT_DASH, Wx::DOT_DASH, Wx::USER_DASH].each do |style|
94
+ pen = Wx::Pen.new("DARK ORCHID", 1, style)
95
+ if style == Wx::USER_DASH
96
+ pen.set_cap(Wx::CAP_BUTT)
97
+ pen.set_dashes([1,2])
98
+ pen.set_colour("RED")
99
+ end
100
+ dc.set_pen(pen)
101
+ dc.draw_line(300, y, 400, y)
102
+ y += 10
103
+ end
104
+ end
105
+ dc.set_brush(Wx::TRANSPARENT_BRUSH)
106
+ dc.set_pen(Wx::Pen.new(Wx::Colour.new(0xFF, 0x20, 0xFF), 1, Wx::SOLID))
107
+ dc.draw_rectangle(450, 50, 100, 100)
108
+ old_pen = dc.get_pen()
109
+ new_pen = Wx::Pen.new("BLACK", 5, Wx::SOLID)
110
+ dc.set_pen(new_pen)
111
+ dc.draw_rectangle(470, 70, 60, 60)
112
+ dc.set_pen(old_pen)
113
+ dc.draw_rectangle(490, 90, 20, 20)
114
+
115
+ draw_saved_lines(dc)
116
+ end
117
+
118
+ def draw_saved_lines(dc)
119
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
120
+ @lines.each do |line|
121
+ line.each do |coords|
122
+ coords.flatten!()
123
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3])
124
+ end
125
+ end
126
+ end
127
+
128
+ def set_XY(event)
129
+ @x, @y = convert_event_coords(event)
130
+ end
131
+
132
+ def convert_event_coords(event)
133
+ xView, yView = get_view_start()
134
+ xDelta, yDelta = get_scroll_pixels_per_unit()
135
+ return event.get_x() + (xView * xDelta), event.get_y() + (yView * yDelta)
136
+ end
137
+
138
+ def on_left_button_event_down(event)
139
+ if event.left_is_down() and !@drawing
140
+ set_focus()
141
+ set_XY(event)
142
+ @event_x_old = event.get_x # added this to save the current absolute...
143
+ @event_y_old = event.get_y # ... mouse position
144
+ @curLine = []
145
+ capture_mouse()
146
+ @drawing = true
147
+ end
148
+ end
149
+
150
+ def on_left_button_event_up(event)
151
+ if !event.left_is_down() and @drawing
152
+ @lines.push(@curLine)
153
+ @curLine = []
154
+ release_mouse()
155
+ @drawing = false
156
+ end
157
+ end
158
+
159
+ def on_left_button_event_motion(event)
160
+ if event.left_is_down() and @drawing
161
+ # if $BUFFERED
162
+ # # If doing buffered drawing, create the buffered DC, giving it
163
+ # # it a real DC to blit to when done.
164
+ # cdc = Wx::ClientDC.new(self)
165
+ # dc = Wx::BufferedDC.new(cdc, @buffer)
166
+ # else
167
+ # dc = Wx::ClientDC.new(self)
168
+ # end
169
+
170
+ paint do | dc |
171
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
172
+ save_coords = [@x, @y] + convert_event_coords(event) # translate the absolute coords to save them in the array
173
+ coords = [@event_x_old, @event_y_old, event.get_x, event.get_y] # the absolute coords to use for the first draw
174
+ @curLine.push(save_coords) # use the translated coords here
175
+ coords.flatten!()
176
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3]) # and the absolute coords here
177
+ set_XY(event)
178
+ @event_x_old = event.get_x # saving the new ...
179
+ @event_y_old = event.get_y # ... absolute coords
180
+ end
181
+ end
182
+ end
183
+
184
+ end
185
+
186
+ module Demo
187
+ def Demo.run(frame, nb, log)
188
+ win = MyCanvas.new(nb, log)
189
+ return win
190
+ end
191
+
192
+ def Demo.overview
193
+ 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."
194
+ end
195
+ end
196
+
197
+ if __FILE__ == $0
198
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
199
+ load run_solo_lib
200
+ run File.basename($0)
201
+ end
@@ -0,0 +1,35 @@
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::SingleChoiceDialog.new(frame, "Test Single Choice", "The Caption",
17
+ %w(zero one two three four five six seven eight))
18
+ #Wx::CHOICEDLG_STYLE)
19
+ if dlg.show_modal() == Wx::ID_OK
20
+ log.write_text("You selected: " + dlg.get_string_selection() + "\n")
21
+ end
22
+ dlg.destroy()
23
+ return nil
24
+ end
25
+
26
+ def Demo.overview
27
+ 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."
28
+ end
29
+ end
30
+
31
+ if __FILE__ == $0
32
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
33
+ load run_solo_lib
34
+ run File.basename($0)
35
+ end