wxruby-ruby19 1.9.8-x86-darwin-9 → 1.9.10-x86-darwin-9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. data/LICENSE +53 -0
  2. data/README +297 -0
  3. data/lib/wx.rb +2 -2
  4. data/lib/wx/accessors.rb +7 -1
  5. data/lib/wx/classes/app.rb +10 -4
  6. data/lib/wx/classes/bitmap.rb +29 -1
  7. data/lib/wx/classes/clipboard.rb +19 -3
  8. data/lib/wx/classes/colour.rb +6 -4
  9. data/lib/wx/classes/data_object.rb +14 -0
  10. data/lib/wx/classes/data_object_simple.rb +6 -0
  11. data/lib/wx/classes/dataformat.rb +23 -0
  12. data/lib/wx/classes/evthandler.rb +79 -4
  13. data/lib/wx/classes/genericdirctrl.rb +36 -0
  14. data/lib/wx/classes/grid.rb +8 -0
  15. data/lib/wx/classes/hboxsizer.rb +6 -0
  16. data/lib/wx/classes/icon.rb +12 -1
  17. data/lib/wx/classes/image.rb +13 -1
  18. data/lib/wx/classes/listctrl.rb +12 -0
  19. data/lib/wx/classes/point.rb +8 -0
  20. data/lib/wx/classes/rect.rb +10 -1
  21. data/lib/wx/classes/richtextctrl.rb +63 -0
  22. data/lib/wx/classes/size.rb +9 -0
  23. data/lib/wx/classes/sizer.rb +18 -3
  24. data/lib/wx/classes/standardpaths.rb +9 -0
  25. data/lib/wx/classes/texturlevent.rb +14 -2
  26. data/lib/wx/classes/toolbar.rb +4 -6
  27. data/lib/wx/classes/vboxsizer.rb +6 -0
  28. data/lib/wx/classes/window.rb +7 -0
  29. data/lib/wx/classes/xmlresource.rb +17 -0
  30. data/lib/wx/helpers.rb +16 -1
  31. data/lib/wx/keyword_ctors.rb +3 -2
  32. data/lib/wx/keyword_defs.rb +56 -5
  33. data/lib/wx/version.rb +1 -1
  34. data/lib/wxruby2.bundle +0 -0
  35. data/samples/SAMPLES-LICENSE.TXT +18 -0
  36. data/samples/aui/aui.rb +1356 -0
  37. data/samples/bigdemo/About.rbw +39 -0
  38. data/samples/bigdemo/ColorPanel.rbw +23 -0
  39. data/samples/bigdemo/GridSimple.rbw +78 -0
  40. data/samples/bigdemo/MDIDemo.rbw +57 -0
  41. data/samples/bigdemo/PopupMenu.rbw +149 -0
  42. data/samples/bigdemo/ShapedWindow.rbw +131 -0
  43. data/samples/bigdemo/Sizers.rbw +543 -0
  44. data/samples/bigdemo/bigdemo.rb +823 -0
  45. data/samples/bigdemo/demoTemplate.rbw +33 -0
  46. data/samples/bigdemo/helpfile.htb +0 -0
  47. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  48. data/samples/bigdemo/icons/Test 015.png +0 -0
  49. data/samples/bigdemo/icons/choice.bmp +0 -0
  50. data/samples/bigdemo/icons/choice.xpm +27 -0
  51. data/samples/bigdemo/icons/combo.bmp +0 -0
  52. data/samples/bigdemo/icons/combo.xpm +27 -0
  53. data/samples/bigdemo/icons/copy.xpm +25 -0
  54. data/samples/bigdemo/icons/cut.xpm +24 -0
  55. data/samples/bigdemo/icons/gauge.bmp +0 -0
  56. data/samples/bigdemo/icons/gauge.xpm +27 -0
  57. data/samples/bigdemo/icons/help.xpm +25 -0
  58. data/samples/bigdemo/icons/list.bmp +0 -0
  59. data/samples/bigdemo/icons/list.xpm +27 -0
  60. data/samples/bigdemo/icons/mondrian.ico +0 -0
  61. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  62. data/samples/bigdemo/icons/new.xpm +24 -0
  63. data/samples/bigdemo/icons/ogl.ico +0 -0
  64. data/samples/bigdemo/icons/ogl.xpm +45 -0
  65. data/samples/bigdemo/icons/open.xpm +26 -0
  66. data/samples/bigdemo/icons/paste.bmp +0 -0
  67. data/samples/bigdemo/icons/paste.xpm +38 -0
  68. data/samples/bigdemo/icons/pointy.png +0 -0
  69. data/samples/bigdemo/icons/preview.xpm +26 -0
  70. data/samples/bigdemo/icons/print.xpm +26 -0
  71. data/samples/bigdemo/icons/radio.bmp +0 -0
  72. data/samples/bigdemo/icons/radio.xpm +27 -0
  73. data/samples/bigdemo/icons/robert.xpm +415 -0
  74. data/samples/bigdemo/icons/ruby.png +0 -0
  75. data/samples/bigdemo/icons/sashtest.ico +0 -0
  76. data/samples/bigdemo/icons/save.xpm +25 -0
  77. data/samples/bigdemo/icons/smiles.bmp +0 -0
  78. data/samples/bigdemo/icons/smiles.xpm +39 -0
  79. data/samples/bigdemo/icons/smiley.ico +0 -0
  80. data/samples/bigdemo/icons/smiley.xpm +42 -0
  81. data/samples/bigdemo/icons/stattext.xpm +24 -0
  82. data/samples/bigdemo/icons/test2.bmp +0 -0
  83. data/samples/bigdemo/icons/test2.png +0 -0
  84. data/samples/bigdemo/icons/test2.xpm +79 -0
  85. data/samples/bigdemo/icons/text.bmp +0 -0
  86. data/samples/bigdemo/icons/text.xpm +27 -0
  87. data/samples/bigdemo/icons/tog1.bmp +0 -0
  88. data/samples/bigdemo/icons/tog1.xpm +38 -0
  89. data/samples/bigdemo/icons/tog2.bmp +0 -0
  90. data/samples/bigdemo/icons/tog2.xpm +38 -0
  91. data/samples/bigdemo/icons/wxwin.ico +0 -0
  92. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  93. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  94. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  95. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  96. data/samples/bigdemo/run.rb +90 -0
  97. data/samples/bigdemo/tips.txt +7 -0
  98. data/samples/bigdemo/utils.rb +12 -0
  99. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  100. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  101. data/samples/bigdemo/wxButton.rbw +64 -0
  102. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
  103. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  104. data/samples/bigdemo/wxCheckListBox.rbw +65 -0
  105. data/samples/bigdemo/wxChoice.rbw +47 -0
  106. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  107. data/samples/bigdemo/wxColourDialog.rbw +31 -0
  108. data/samples/bigdemo/wxComboBox.rbw +77 -0
  109. data/samples/bigdemo/wxCursor.rbw +136 -0
  110. data/samples/bigdemo/wxDialog.rbw +74 -0
  111. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  112. data/samples/bigdemo/wxDragImage.rbw +70 -0
  113. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  114. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  115. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  116. data/samples/bigdemo/wxFontDialog.rbw +173 -0
  117. data/samples/bigdemo/wxFrame.rbw +53 -0
  118. data/samples/bigdemo/wxGauge.rbw +71 -0
  119. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  120. data/samples/bigdemo/wxGrid.rbw +66 -0
  121. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  122. data/samples/bigdemo/wxListBox.rbw +140 -0
  123. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
  124. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  125. data/samples/bigdemo/wxMenu.rbw +236 -0
  126. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  127. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  128. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
  129. data/samples/bigdemo/wxNotebook.rbw +136 -0
  130. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  131. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  132. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  133. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  134. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  135. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  136. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  137. data/samples/bigdemo/wxSlider.rbw +42 -0
  138. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  139. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  140. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  141. data/samples/bigdemo/wxStaticBitmap.rbw +51 -0
  142. data/samples/bigdemo/wxStaticText.rbw +55 -0
  143. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  144. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  145. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  146. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  147. data/samples/bigdemo/wxToolBar.rbw +131 -0
  148. data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
  149. data/samples/calendar/calendar.rb +256 -0
  150. data/samples/caret/caret.rb +282 -0
  151. data/samples/caret/mondrian.xpm +44 -0
  152. data/samples/controls/controls.rb +1136 -0
  153. data/samples/controls/get_item_sample.rb +87 -0
  154. data/samples/controls/icons/choice.xpm +27 -0
  155. data/samples/controls/icons/combo.xpm +27 -0
  156. data/samples/controls/icons/gauge.xpm +27 -0
  157. data/samples/controls/icons/list.xpm +27 -0
  158. data/samples/controls/icons/radio.xpm +27 -0
  159. data/samples/controls/icons/stattext.xpm +24 -0
  160. data/samples/controls/icons/text.xpm +27 -0
  161. data/samples/controls/mondrian.ico +0 -0
  162. data/samples/controls/mondrian.xpm +44 -0
  163. data/samples/controls/test2.bmp +0 -0
  164. data/samples/dialogs/dialogs.rb +797 -0
  165. data/samples/dialogs/tips.txt +18 -0
  166. data/samples/dragdrop/dragdrop.rb +177 -0
  167. data/samples/drawing/graphics_drawing.rb +235 -0
  168. data/samples/drawing/images.rb +37 -0
  169. data/samples/drawing/paperclip.png +0 -0
  170. data/samples/etc/activation.rb +102 -0
  171. data/samples/etc/choice.rb +67 -0
  172. data/samples/etc/miniframe.rb +79 -0
  173. data/samples/etc/sash.rb +130 -0
  174. data/samples/etc/scrollwin.rb +110 -0
  175. data/samples/etc/system_settings.rb +252 -0
  176. data/samples/etc/threaded.rb +72 -0
  177. data/samples/etc/toolbar_sizer_additem.rb +55 -0
  178. data/samples/etc/wizard.rb +74 -0
  179. data/samples/event/event.rb +182 -0
  180. data/samples/event/update_ui_event.rb +70 -0
  181. data/samples/grid/grid.rb +198 -0
  182. data/samples/grid/gridtablebase.rb +148 -0
  183. data/samples/html/html.rb +262 -0
  184. data/samples/listbook/listbook.rb +174 -0
  185. data/samples/listbook/listbook.xrc +370 -0
  186. data/samples/mdi/mdi.rb +85 -0
  187. data/samples/media/mediactrl.rb +167 -0
  188. data/samples/minimal/minimal.rb +77 -0
  189. data/samples/minimal/mondrian.ico +0 -0
  190. data/samples/minimal/mondrian.png +0 -0
  191. data/samples/minimal/nothing.rb +16 -0
  192. data/samples/opengl/cube.rb +117 -0
  193. data/samples/printing/mondrian.ico +0 -0
  194. data/samples/printing/mondrian.xpm +44 -0
  195. data/samples/printing/printing.rb +487 -0
  196. data/samples/sockets/SocketPackets.rb +27 -0
  197. data/samples/sockets/res/message-new.png +0 -0
  198. data/samples/sockets/res/user.png +0 -0
  199. data/samples/sockets/wxClient.rb +395 -0
  200. data/samples/sockets/wxServer.rb +422 -0
  201. data/samples/sockets/wxSocketGUI.rb +97 -0
  202. data/samples/text/format-text-bold.png +0 -0
  203. data/samples/text/format-text-italic.png +0 -0
  204. data/samples/text/format-text-underline.png +0 -0
  205. data/samples/text/mondrian.ico +0 -0
  206. data/samples/text/mondrian.xpm +44 -0
  207. data/samples/text/rich_textctrl.rb +98 -0
  208. data/samples/text/scintilla.rb +169 -0
  209. data/samples/text/textctrl.rb +111 -0
  210. data/samples/text/unicode.rb +242 -0
  211. data/samples/text/utf8.txt +15 -0
  212. data/samples/treectrl/icon1.xpm +79 -0
  213. data/samples/treectrl/icon2.xpm +53 -0
  214. data/samples/treectrl/icon3.xpm +79 -0
  215. data/samples/treectrl/icon4.xpm +43 -0
  216. data/samples/treectrl/icon5.xpm +79 -0
  217. data/samples/treectrl/treectrl.rb +1166 -0
  218. data/samples/xrc/samples.xrc +46 -0
  219. data/samples/xrc/xrc_sample.rb +76 -0
  220. metadata +17 -3
@@ -0,0 +1,32 @@
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
+ lst = %w(apple pear banana coconut orange etc etc.. etc...)
15
+ choices = Wx::get_multiple_choices("Pick some from\n this list\nblah blah...", "m.s.d.", lst)
16
+ if choices
17
+ log.write_text("You selected " + choices.length().to_s() + " items:")
18
+ choices.each_index {|i| log.write_text("\t" + choices[i].to_s() + " => " + lst[choices[i]])}
19
+ end
20
+ end
21
+
22
+ def Demo.overview
23
+ return ""
24
+ end
25
+ end
26
+
27
+
28
+ if __FILE__ == $0
29
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
30
+ load run_solo_lib
31
+ run File.basename($0)
32
+ end
@@ -0,0 +1,136 @@
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
+ # added this class so that the panel in each NB tab can respond to size events and properly size each nb page - otherwise
13
+ # NB pages that contain the colored windows won't properly size themseleves
14
+
15
+ class NBPanel < Wx::Panel
16
+ attr_accessor :win
17
+ def initialize(parent)
18
+ super(parent, -1)
19
+ evt_size {|event| on_size(event)}
20
+ @win
21
+ end
22
+
23
+ def on_size(event)
24
+ win.set_size(event.get_size())
25
+ end
26
+ end
27
+
28
+ class TestNB < Wx::Notebook
29
+ def demo_file(base_name)
30
+ File.join( File.dirname(__FILE__), base_name )
31
+ end
32
+
33
+ def initialize(parent, id, log)
34
+ super(parent, id, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NB_BOTTOM)
35
+ @log = log
36
+ File
37
+ load demo_file("ColorPanel.rbw")
38
+ load demo_file("wxScrolledWindow.rbw")
39
+ load demo_file("GridSimple.rbw")
40
+ #load "wxListCtrl.rbw"
41
+
42
+ # Show how to put an image on one of the notebook tabs,
43
+ # first make the image list:
44
+ il = Wx::ImageList.new(16,16)
45
+ ic_file = File.join(File.dirname(__FILE__),'icons','wxwin16x16.xpm')
46
+ il.add_icon( Wx::Icon.new(ic_file) )
47
+
48
+ set_image_list(il)
49
+
50
+ win = make_color_panel(Wx::BLUE)
51
+ add_page(win, "Blue", true, 0)
52
+ st = Wx::StaticText.new(win, -1, "You can put nearly any type of window here,\n" +
53
+ "and if the platform supports it then the\n" +
54
+ "tabs can be on any side of the notebook.", Wx::Point.new(10,10))
55
+ st.set_foreground_colour(Wx::WHITE)
56
+ st.set_background_colour(Wx::BLUE)
57
+
58
+ win = make_color_panel(Wx::RED)
59
+ add_page(win, "Red")
60
+
61
+ win = MyCanvas.new(self)
62
+ add_page(win, "ScrolledWindow")
63
+
64
+ win = make_color_panel(Wx::GREEN)
65
+ add_page(win, "Green")
66
+
67
+ win = SimpleGrid.new(self, log)
68
+ add_page(win, "Grid")
69
+
70
+ #win = TestListCtrlPanel(self, log)
71
+ #add_page(win, "List")
72
+
73
+ win = make_color_panel(Wx::CYAN)
74
+ add_page(win, "Cyan")
75
+
76
+ win = make_color_panel(Wx::LIGHT_GREY)
77
+ add_page(win, "Light Grey")
78
+
79
+ win = make_color_panel(Wx::BLACK)
80
+ add_page(win, "Black")
81
+
82
+ win = make_color_panel(Wx::Colour.new("MEDIUM ORCHID"))
83
+ add_page(win, "MEDIUM ORCHID")
84
+
85
+ win = make_color_panel(Wx::Colour.new("MIDNIGHT BLUE"))
86
+ add_page(win, "MIDNIGHT BLUE")
87
+
88
+ win = make_color_panel(Wx::Colour.new("INDIAN RED"))
89
+ add_page(win, "INDIAN RED")
90
+
91
+
92
+ evt_notebook_page_changed(self.get_id()) {|event| on_page_changed(event)}
93
+ evt_notebook_page_changing(self.get_id()) {|event| on_page_changing(event)}
94
+ end
95
+
96
+ def make_color_panel(color)
97
+ p = NBPanel.new(self)
98
+ win = ColoredPanel.new(p, color)
99
+ p.win = win
100
+ return p
101
+ end
102
+
103
+ def on_page_changed(event)
104
+ old = event.get_old_selection()
105
+ new = event.get_selection()
106
+ sel = get_selection()
107
+ @log.write_text("on_page_changed, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
108
+ event.skip()
109
+ end
110
+
111
+ def on_page_changing(event)
112
+ old = event.get_old_selection()
113
+ new = event.get_selection()
114
+ sel = get_selection()
115
+ @log.write_text("on_page_changing, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
116
+ event.skip()
117
+ end
118
+ end
119
+
120
+ module Demo
121
+ def Demo.run(frame, nb, log)
122
+ win = TestNB.new(nb, -1, log)
123
+ return win
124
+ end
125
+
126
+ def Demo.overview
127
+ return "This class represents a notebook control, which manages multiple windows with associated tabs. To use the class, create a wxNotebook object and call AddPage or InsertPage, passing a window to be used as the page. Do not explicitly delete the window for a page that is currently managed by wxNotebook."
128
+ end
129
+ end
130
+
131
+
132
+ if __FILE__ == $0
133
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
134
+ load run_solo_lib
135
+ run File.basename($0)
136
+ end
@@ -0,0 +1,43 @@
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
+ max = 20
15
+ dlg = Wx::ProgressDialog.new("Progress dialog example", "An informative message", max, frame,
16
+ Wx::PD_CAN_ABORT | Wx::PD_APP_MODAL)
17
+
18
+ keepGoing = true
19
+ count = 0
20
+ while keepGoing and count < max
21
+ count += 1
22
+ sleep(1)
23
+
24
+ if count == max / 2
25
+ keepGoing = dlg.update(count, "Half-time!")
26
+ else
27
+ keepGoing = dlg.update(count)
28
+ end
29
+ end
30
+ dlg.destroy()
31
+ return nil
32
+ end
33
+
34
+ def Demo.overview
35
+ return "A dialog that shows the progress of an operation"
36
+ end
37
+ end
38
+
39
+ if __FILE__ == $0
40
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
41
+ load run_solo_lib
42
+ run File.basename($0)
43
+ end
@@ -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