wxruby 1.9.3-universal-darwin

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 (226) hide show
  1. data/LICENSE +53 -0
  2. data/README +299 -0
  3. data/lib/wx.rb +42 -0
  4. data/lib/wx/accessors.rb +52 -0
  5. data/lib/wx/classes/app.rb +45 -0
  6. data/lib/wx/classes/artprovider.rb +31 -0
  7. data/lib/wx/classes/bitmap.rb +23 -0
  8. data/lib/wx/classes/checklistbox.rb +45 -0
  9. data/lib/wx/classes/choice.rb +4 -0
  10. data/lib/wx/classes/clientdc.rb +13 -0
  11. data/lib/wx/classes/clipboard.rb +16 -0
  12. data/lib/wx/classes/colour.rb +47 -0
  13. data/lib/wx/classes/combobox.rb +4 -0
  14. data/lib/wx/classes/commandevent.rb +7 -0
  15. data/lib/wx/classes/controlwithitems.rb +10 -0
  16. data/lib/wx/classes/event.rb +5 -0
  17. data/lib/wx/classes/evthandler.rb +894 -0
  18. data/lib/wx/classes/font.rb +118 -0
  19. data/lib/wx/classes/grid.rb +129 -0
  20. data/lib/wx/classes/helpcontroller.rb +5 -0
  21. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  22. data/lib/wx/classes/htmlwindow.rb +6 -0
  23. data/lib/wx/classes/icon.rb +14 -0
  24. data/lib/wx/classes/image.rb +14 -0
  25. data/lib/wx/classes/listbox.rb +4 -0
  26. data/lib/wx/classes/listctrl.rb +21 -0
  27. data/lib/wx/classes/locale.rb +28 -0
  28. data/lib/wx/classes/mediactrl.rb +22 -0
  29. data/lib/wx/classes/menu.rb +62 -0
  30. data/lib/wx/classes/menuitem.rb +7 -0
  31. data/lib/wx/classes/object.rb +7 -0
  32. data/lib/wx/classes/paintdc.rb +12 -0
  33. data/lib/wx/classes/point.rb +48 -0
  34. data/lib/wx/classes/previewframe.rb +13 -0
  35. data/lib/wx/classes/rect.rb +5 -0
  36. data/lib/wx/classes/size.rb +49 -0
  37. data/lib/wx/classes/sound.rb +23 -0
  38. data/lib/wx/classes/styledtextctrl.rb +92 -0
  39. data/lib/wx/classes/textctrl.rb +14 -0
  40. data/lib/wx/classes/texturlevent.rb +6 -0
  41. data/lib/wx/classes/timer.rb +69 -0
  42. data/lib/wx/classes/treectrl.rb +44 -0
  43. data/lib/wx/classes/window.rb +49 -0
  44. data/lib/wx/classes/xmlresource.rb +16 -0
  45. data/lib/wx/keyword_ctors.rb +219 -0
  46. data/lib/wx/keyword_defs.rb +485 -0
  47. data/lib/wx/version.rb +3 -0
  48. data/lib/wxruby2.bundle +0 -0
  49. data/samples/SAMPLES-LICENSE.TXT +18 -0
  50. data/samples/aui/aui.rb +1360 -0
  51. data/samples/bigdemo/About.rbw +39 -0
  52. data/samples/bigdemo/ColorPanel.rbw +25 -0
  53. data/samples/bigdemo/GridSimple.rbw +80 -0
  54. data/samples/bigdemo/MDIDemo.rbw +59 -0
  55. data/samples/bigdemo/PopupMenu.rbw +151 -0
  56. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  57. data/samples/bigdemo/Sizers.rbw +545 -0
  58. data/samples/bigdemo/bigdemo.rb +826 -0
  59. data/samples/bigdemo/demoTemplate.rbw +37 -0
  60. data/samples/bigdemo/helpfile.htb +0 -0
  61. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  62. data/samples/bigdemo/icons/Test 015.png +0 -0
  63. data/samples/bigdemo/icons/choice.bmp +0 -0
  64. data/samples/bigdemo/icons/choice.xpm +27 -0
  65. data/samples/bigdemo/icons/combo.bmp +0 -0
  66. data/samples/bigdemo/icons/combo.xpm +27 -0
  67. data/samples/bigdemo/icons/copy.xpm +25 -0
  68. data/samples/bigdemo/icons/cut.xpm +24 -0
  69. data/samples/bigdemo/icons/gauge.bmp +0 -0
  70. data/samples/bigdemo/icons/gauge.xpm +27 -0
  71. data/samples/bigdemo/icons/help.xpm +25 -0
  72. data/samples/bigdemo/icons/list.bmp +0 -0
  73. data/samples/bigdemo/icons/list.xpm +27 -0
  74. data/samples/bigdemo/icons/mondrian.ico +0 -0
  75. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  76. data/samples/bigdemo/icons/new.xpm +24 -0
  77. data/samples/bigdemo/icons/ogl.ico +0 -0
  78. data/samples/bigdemo/icons/ogl.xpm +45 -0
  79. data/samples/bigdemo/icons/open.xpm +26 -0
  80. data/samples/bigdemo/icons/paste.bmp +0 -0
  81. data/samples/bigdemo/icons/paste.xpm +38 -0
  82. data/samples/bigdemo/icons/pointy.png +0 -0
  83. data/samples/bigdemo/icons/preview.xpm +26 -0
  84. data/samples/bigdemo/icons/print.xpm +26 -0
  85. data/samples/bigdemo/icons/radio.bmp +0 -0
  86. data/samples/bigdemo/icons/radio.xpm +27 -0
  87. data/samples/bigdemo/icons/robert.xpm +415 -0
  88. data/samples/bigdemo/icons/ruby.png +0 -0
  89. data/samples/bigdemo/icons/sashtest.ico +0 -0
  90. data/samples/bigdemo/icons/save.xpm +25 -0
  91. data/samples/bigdemo/icons/smiles.bmp +0 -0
  92. data/samples/bigdemo/icons/smiles.xpm +39 -0
  93. data/samples/bigdemo/icons/smiley.ico +0 -0
  94. data/samples/bigdemo/icons/smiley.xpm +42 -0
  95. data/samples/bigdemo/icons/stattext.xpm +24 -0
  96. data/samples/bigdemo/icons/test2.bmp +0 -0
  97. data/samples/bigdemo/icons/test2.png +0 -0
  98. data/samples/bigdemo/icons/test2.xpm +79 -0
  99. data/samples/bigdemo/icons/text.bmp +0 -0
  100. data/samples/bigdemo/icons/text.xpm +27 -0
  101. data/samples/bigdemo/icons/tog1.bmp +0 -0
  102. data/samples/bigdemo/icons/tog1.xpm +38 -0
  103. data/samples/bigdemo/icons/tog2.bmp +0 -0
  104. data/samples/bigdemo/icons/tog2.xpm +38 -0
  105. data/samples/bigdemo/icons/wxwin.ico +0 -0
  106. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  107. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  108. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  109. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  110. data/samples/bigdemo/run.rb +94 -0
  111. data/samples/bigdemo/tips.txt +7 -0
  112. data/samples/bigdemo/utils.rb +12 -0
  113. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  114. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  115. data/samples/bigdemo/wxButton.rbw +66 -0
  116. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  117. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  118. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  119. data/samples/bigdemo/wxChoice.rbw +49 -0
  120. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  121. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  122. data/samples/bigdemo/wxComboBox.rbw +79 -0
  123. data/samples/bigdemo/wxCursor.rbw +140 -0
  124. data/samples/bigdemo/wxDialog.rbw +92 -0
  125. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  126. data/samples/bigdemo/wxDragImage.rbw +74 -0
  127. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  128. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  129. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  130. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  131. data/samples/bigdemo/wxFrame.rbw +55 -0
  132. data/samples/bigdemo/wxGauge.rbw +73 -0
  133. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  134. data/samples/bigdemo/wxGrid.rbw +68 -0
  135. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  136. data/samples/bigdemo/wxListBox.rbw +142 -0
  137. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  138. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  139. data/samples/bigdemo/wxMenu.rbw +238 -0
  140. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  141. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  142. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  143. data/samples/bigdemo/wxNotebook.rbw +138 -0
  144. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  145. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  146. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  147. data/samples/bigdemo/wxSashWindow.rbw +145 -0
  148. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  149. data/samples/bigdemo/wxScrolledWindow.rbw +201 -0
  150. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  151. data/samples/bigdemo/wxSlider.rbw +44 -0
  152. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  153. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  154. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  155. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  156. data/samples/bigdemo/wxStaticText.rbw +57 -0
  157. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  158. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  159. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  160. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  161. data/samples/bigdemo/wxToolBar.rbw +133 -0
  162. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  163. data/samples/calendar/calendar.rb +275 -0
  164. data/samples/caret/caret.rb +286 -0
  165. data/samples/caret/mondrian.xpm +44 -0
  166. data/samples/controls/controls.rb +1140 -0
  167. data/samples/controls/get_item_sample.rb +87 -0
  168. data/samples/controls/icons/choice.xpm +27 -0
  169. data/samples/controls/icons/combo.xpm +27 -0
  170. data/samples/controls/icons/gauge.xpm +27 -0
  171. data/samples/controls/icons/list.xpm +27 -0
  172. data/samples/controls/icons/radio.xpm +27 -0
  173. data/samples/controls/icons/stattext.xpm +24 -0
  174. data/samples/controls/icons/text.xpm +27 -0
  175. data/samples/controls/mondrian.ico +0 -0
  176. data/samples/controls/mondrian.xpm +44 -0
  177. data/samples/controls/test2.bmp +0 -0
  178. data/samples/dialogs/dialogs.rb +724 -0
  179. data/samples/dialogs/tips.txt +18 -0
  180. data/samples/drawing/graphics_drawing.rb +232 -0
  181. data/samples/drawing/images.rb +48 -0
  182. data/samples/drawing/paperclip.png +0 -0
  183. data/samples/etc/activation.rb +108 -0
  184. data/samples/etc/choice.rb +72 -0
  185. data/samples/etc/miniframe.rb +84 -0
  186. data/samples/etc/sash.rb +135 -0
  187. data/samples/etc/scrollwin.rb +116 -0
  188. data/samples/etc/system_settings.rb +258 -0
  189. data/samples/etc/threaded.rb +81 -0
  190. data/samples/etc/wizard.rb +79 -0
  191. data/samples/event/event.rb +184 -0
  192. data/samples/grid/grid.rb +202 -0
  193. data/samples/html/html.rb +264 -0
  194. data/samples/listbook/listbook.rb +181 -0
  195. data/samples/listbook/listbook.xrc +370 -0
  196. data/samples/mdi/mdi.rb +87 -0
  197. data/samples/media/mediactrl.rb +173 -0
  198. data/samples/minimal/minimal.rb +85 -0
  199. data/samples/minimal/mondrian.ico +0 -0
  200. data/samples/minimal/mondrian.png +0 -0
  201. data/samples/minimal/nothing.rb +21 -0
  202. data/samples/opengl/cube.rb +123 -0
  203. data/samples/printing/mondrian.ico +0 -0
  204. data/samples/printing/mondrian.xpm +44 -0
  205. data/samples/printing/printing.rb +484 -0
  206. data/samples/sockets/SocketPackets.rb +27 -0
  207. data/samples/sockets/res/message-new.png +0 -0
  208. data/samples/sockets/res/user.png +0 -0
  209. data/samples/sockets/wxClient.rb +395 -0
  210. data/samples/sockets/wxServer.rb +422 -0
  211. data/samples/sockets/wxSocketGUI.rb +97 -0
  212. data/samples/text/mondrian.ico +0 -0
  213. data/samples/text/mondrian.xpm +44 -0
  214. data/samples/text/scintilla.rb +174 -0
  215. data/samples/text/textctrl.rb +124 -0
  216. data/samples/text/unicode.rb +238 -0
  217. data/samples/text/utf8.txt +15 -0
  218. data/samples/treectrl/icon1.xpm +79 -0
  219. data/samples/treectrl/icon2.xpm +53 -0
  220. data/samples/treectrl/icon3.xpm +79 -0
  221. data/samples/treectrl/icon4.xpm +43 -0
  222. data/samples/treectrl/icon5.xpm +79 -0
  223. data/samples/treectrl/treectrl.rb +1180 -0
  224. data/samples/xrc/samples.xrc +46 -0
  225. data/samples/xrc/xrc_sample.rb +107 -0
  226. metadata +296 -0
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ module Demo
15
+ def Demo.run(frame, nb, log)
16
+ lst = %w(apple pear banana coconut orange etc etc.. etc...)
17
+ choices = Wx::get_multiple_choices("Pick some from\n this list\nblah blah...", "m.s.d.", lst)
18
+ if choices
19
+ log.write_text("You selected " + choices.length().to_s() + " items:")
20
+ choices.each_index {|i| log.write_text("\t" + choices[i].to_s() + " => " + lst[choices[i]])}
21
+ end
22
+ end
23
+
24
+ def Demo.overview
25
+ return ""
26
+ end
27
+ end
28
+
29
+
30
+ if __FILE__ == $0
31
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
32
+ load run_solo_lib
33
+ run File.basename($0)
34
+ end
@@ -0,0 +1,138 @@
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
+ # added this class so that the panel in each NB tab can respond to size events and properly size each nb page - otherwise
15
+ # NB pages that contain the colored windows won't properly size themseleves
16
+
17
+ class NBPanel < Wx::Panel
18
+ attr_accessor :win
19
+ def initialize(parent)
20
+ super(parent, -1)
21
+ evt_size {|event| on_size(event)}
22
+ @win
23
+ end
24
+
25
+ def on_size(event)
26
+ win.set_size(event.get_size())
27
+ end
28
+ end
29
+
30
+ class TestNB < Wx::Notebook
31
+ def demo_file(base_name)
32
+ File.join( File.dirname(__FILE__), base_name )
33
+ end
34
+
35
+ def initialize(parent, id, log)
36
+ super(parent, id, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NB_BOTTOM)
37
+ @log = log
38
+ File
39
+ load demo_file("ColorPanel.rbw")
40
+ load demo_file("wxScrolledWindow.rbw")
41
+ load demo_file("GridSimple.rbw")
42
+ #load "wxListCtrl.rbw"
43
+
44
+ # Show how to put an image on one of the notebook tabs,
45
+ # first make the image list:
46
+ il = Wx::ImageList.new(16,16)
47
+ ic_file = File.join(File.dirname(__FILE__),'icons','wxwin16x16.xpm')
48
+ il.add_icon( Wx::Icon.new(ic_file) )
49
+
50
+ set_image_list(il)
51
+
52
+ win = make_color_panel(Wx::BLUE)
53
+ add_page(win, "Blue", true, 0)
54
+ st = Wx::StaticText.new(win, -1, "You can put nearly any type of window here,\n" +
55
+ "and if the platform supports it then the\n" +
56
+ "tabs can be on any side of the notebook.", Wx::Point.new(10,10))
57
+ st.set_foreground_colour(Wx::WHITE)
58
+ st.set_background_colour(Wx::BLUE)
59
+
60
+ win = make_color_panel(Wx::RED)
61
+ add_page(win, "Red")
62
+
63
+ win = MyCanvas.new(self)
64
+ add_page(win, "ScrolledWindow")
65
+
66
+ win = make_color_panel(Wx::GREEN)
67
+ add_page(win, "Green")
68
+
69
+ win = SimpleGrid.new(self, log)
70
+ add_page(win, "Grid")
71
+
72
+ #win = TestListCtrlPanel(self, log)
73
+ #add_page(win, "List")
74
+
75
+ win = make_color_panel(Wx::CYAN)
76
+ add_page(win, "Cyan")
77
+
78
+ win = make_color_panel(Wx::LIGHT_GREY)
79
+ add_page(win, "Light Grey")
80
+
81
+ win = make_color_panel(Wx::BLACK)
82
+ add_page(win, "Black")
83
+
84
+ win = make_color_panel(Wx::Colour.new("MEDIUM ORCHID"))
85
+ add_page(win, "MEDIUM ORCHID")
86
+
87
+ win = make_color_panel(Wx::Colour.new("MIDNIGHT BLUE"))
88
+ add_page(win, "MIDNIGHT BLUE")
89
+
90
+ win = make_color_panel(Wx::Colour.new("INDIAN RED"))
91
+ add_page(win, "INDIAN RED")
92
+
93
+
94
+ evt_notebook_page_changed(self.get_id()) {|event| on_page_changed(event)}
95
+ evt_notebook_page_changing(self.get_id()) {|event| on_page_changing(event)}
96
+ end
97
+
98
+ def make_color_panel(color)
99
+ p = NBPanel.new(self)
100
+ win = ColoredPanel.new(p, color)
101
+ p.win = win
102
+ return p
103
+ end
104
+
105
+ def on_page_changed(event)
106
+ old = event.get_old_selection()
107
+ new = event.get_selection()
108
+ sel = get_selection()
109
+ @log.write_text("on_page_changed, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
110
+ event.skip()
111
+ end
112
+
113
+ def on_page_changing(event)
114
+ old = event.get_old_selection()
115
+ new = event.get_selection()
116
+ sel = get_selection()
117
+ @log.write_text("on_page_changing, old:" + old.to_s() + ", new:" + new.to_s() + ", sel:" + sel.to_s())
118
+ event.skip()
119
+ end
120
+ end
121
+
122
+ module Demo
123
+ def Demo.run(frame, nb, log)
124
+ win = TestNB.new(nb, -1, log)
125
+ return win
126
+ end
127
+
128
+ def Demo.overview
129
+ 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."
130
+ end
131
+ end
132
+
133
+
134
+ if __FILE__ == $0
135
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
136
+ load run_solo_lib
137
+ run File.basename($0)
138
+ end
@@ -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