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
Binary file
@@ -0,0 +1,102 @@
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
+ # This sample demonstrates the use of Activate Events. These are
11
+ # generated when a frame becomes active or inactive. This is typically
12
+ # indicated by a frame's titlebar changing colour, and a widget within
13
+ # the frame gainin focus. An event is also generated when a whole wxRuby
14
+ # app starts or stops being the current focussed desktop application.
15
+
16
+ class MinimalFrame < Wx::Frame
17
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
18
+ super(nil, -1, title, pos, size, style)
19
+
20
+
21
+ menuFile = Wx::Menu.new()
22
+ helpMenu = Wx::Menu.new()
23
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
24
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
25
+ menuBar = Wx::MenuBar.new()
26
+ menuBar.append(menuFile, "&File")
27
+ menuBar.append(helpMenu, "&Help")
28
+ set_menu_bar(menuBar)
29
+
30
+ create_status_bar(2)
31
+ set_status_text("Welcome to wxRuby!")
32
+
33
+ evt_menu(Wx::ID_EXIT) { on_quit }
34
+ evt_menu(Wx::ID_ABOUT) { on_about }
35
+
36
+ evt_activate { | e | on_activate(e) }
37
+ evt_iconize { | e | on_iconize(e) }
38
+ end
39
+
40
+
41
+ def on_iconize(event)
42
+ if event.iconized
43
+ puts "Frame '#{get_title}' was iconized"
44
+ else
45
+ puts "Frame '#{get_title}' was restored"
46
+ end
47
+ end
48
+
49
+ def on_activate(event)
50
+ if event.get_active
51
+ puts "Frame '#{get_title}' became activated"
52
+ set_status_text 'Active'
53
+ else
54
+ puts "Frame '#{get_title}' became deactivated"
55
+ set_status_text 'Inactive'
56
+ end
57
+ event.skip # important
58
+ end
59
+
60
+ def on_quit
61
+ Wx::get_app.close_all
62
+ end
63
+
64
+ def on_about
65
+ msg = sprintf("This is the About dialog of the activate sample.\n" \
66
+ "Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
67
+ Wx::message_box(msg, "About Activate", Wx::OK|Wx::ICON_INFORMATION, self)
68
+ end
69
+ end
70
+
71
+ class RbApp < Wx::App
72
+ def on_init
73
+ @frame_1 = MinimalFrame.new("Tall window",
74
+ Wx::Point.new(50, 50),
75
+ Wx::Size.new(150, 240))
76
+ @frame_2 = MinimalFrame.new("Wide window",
77
+ Wx::Point.new(100, 100),
78
+ Wx::Size.new(300, 180))
79
+ evt_activate_app { | e | on_activate_app(e) }
80
+ @frame_1.show()
81
+ @frame_2.show()
82
+
83
+ end
84
+
85
+ def on_activate_app(event)
86
+ if event.get_active
87
+ puts "The app became active"
88
+ else
89
+ puts "The app became inactive"
90
+ end
91
+ event.skip # important
92
+ end
93
+
94
+ def close_all
95
+ @frame_1.close(true)
96
+ @frame_2.close(true)
97
+ end
98
+ end
99
+
100
+ app = RbApp.new
101
+ app.main_loop()
102
+
@@ -0,0 +1,67 @@
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
+ include Wx
11
+
12
+ ID_CHOICE = 1000
13
+
14
+ class ChoiceDlg < Dialog
15
+ def initialize
16
+ super(nil, -1, "ChoiceDialog", DEFAULT_POSITION, Size.new(185, 185))
17
+
18
+ list = [ "ABS", "Airbag", "Air conditioning" ]
19
+
20
+ @m_pChoice = Choice.new(self, ID_CHOICE, DEFAULT_POSITION, DEFAULT_SIZE, list)
21
+ @m_pChoice.append("Automatic gear", 100)
22
+
23
+ @m_pLabel = StaticText.new(self, -1, "default")
24
+ dlgSizer = BoxSizer.new(HORIZONTAL)
25
+ choiceSizer = BoxSizer.new(VERTICAL)
26
+ choiceSizer.add(@m_pChoice, 1, GROW)
27
+ choiceSizer.add(@m_pLabel)
28
+ dlgSizer.add(choiceSizer, 1, GROW)
29
+ set_sizer(dlgSizer)
30
+ set_auto_layout(TRUE)
31
+ layout()
32
+
33
+ evt_choice(ID_CHOICE) {|event| onChoice(event) }
34
+ evt_close {onClose}
35
+ end
36
+
37
+ def onChoice(event)
38
+ chose = event.get_selection
39
+ data = event.get_client_data
40
+ # NOTE: uninitialized client data will be false, not nil
41
+ if(!data)
42
+ data = 0
43
+ end
44
+ data += 1
45
+ @m_pLabel.set_label(data.to_s)
46
+
47
+ @m_pChoice.set_selection(chose)
48
+ @m_pChoice.set_client_data(chose, data)
49
+ end
50
+
51
+ def onClose
52
+ destroy()
53
+ end
54
+ end
55
+
56
+
57
+ class RbApp < App
58
+ def on_init
59
+ dlg = ChoiceDlg.new
60
+ set_top_window(dlg)
61
+ dlg.show(TRUE)
62
+ end
63
+
64
+ end
65
+
66
+ a = RbApp.new
67
+ a.main_loop()
@@ -0,0 +1,79 @@
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
+ class MyFrame < Wx::Frame
12
+ attr_reader :mini
13
+
14
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
15
+ super(nil, -1, title, pos, size, style)
16
+
17
+
18
+ menuFile = Wx::Menu.new()
19
+ helpMenu = Wx::Menu.new()
20
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
21
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
22
+ menuBar = Wx::MenuBar.new()
23
+ menuBar.append(menuFile, "&File")
24
+ menuBar.append(helpMenu, "&Help")
25
+ set_menu_bar(menuBar)
26
+
27
+ create_status_bar(2)
28
+ set_status_text("Welcome to wxRuby!")
29
+
30
+ evt_menu(Wx::ID_EXIT) { on_quit }
31
+ evt_menu(Wx::ID_ABOUT) { on_about }
32
+
33
+ make_miniframe()
34
+ end
35
+
36
+ def make_miniframe
37
+ @mini = Wx::MiniFrame.new(self, -1, 'Mini Frame',
38
+ Wx::Point.new(300, 75), Wx::Size.new(300, 150),
39
+ Wx::DEFAULT_FRAME_STYLE|Wx::STAY_ON_TOP)
40
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
41
+ text = Wx::StaticText.new(mini, -1, 'This is a MiniFrame.')
42
+ sizer.add(text, 0, Wx::ALL, 2)
43
+ text = Wx::StaticText.new(mini, -1, 'It has a small title bar so it')
44
+ sizer.add(text, 0, Wx::ALL, 2)
45
+ text = Wx::StaticText.new(mini, -1, 'doesn\'t take up too much space.')
46
+ sizer.add(text, 0, Wx::ALL, 2)
47
+ text = Wx::StaticText.new(mini, -1, 'This MiniFrame has been set to')
48
+ sizer.add(text, 0, Wx::ALL, 2)
49
+ text = Wx::StaticText.new(mini, -1, 'stay above the main app window.')
50
+ sizer.add(text, 0, Wx::ALL, 2)
51
+ mini.set_sizer(sizer)
52
+ mini.show()
53
+ mini.raise()
54
+ end
55
+
56
+ def on_quit
57
+ mini.close()
58
+ close()
59
+ end
60
+
61
+ def on_about
62
+ msg = sprintf("This is the About dialog of the miniframe sample.\n" \
63
+ "Welcome to %s", Wx::VERSION_STRING)
64
+ Wx::message_box(msg, "About MiniFrame", Wx::OK|Wx::ICON_INFORMATION, self)
65
+ end
66
+ end
67
+
68
+ class RbApp < Wx::App
69
+ def on_init
70
+ frame = MyFrame.new("Mini Frame wxRuby App",
71
+ Wx::Point.new(50, 50),
72
+ Wx::Size.new(450, 340))
73
+ frame.show()
74
+ end
75
+ end
76
+
77
+ app = RbApp.new
78
+ app.main_loop()
79
+
@@ -0,0 +1,130 @@
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
+ class MySashFrame < Wx::Frame
12
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
13
+ super(nil, -1, title, pos, size, style)
14
+
15
+
16
+ menuFile = Wx::Menu.new()
17
+ helpMenu = Wx::Menu.new()
18
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
19
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
20
+ menuBar = Wx::MenuBar.new()
21
+ menuBar.append(menuFile, "&File")
22
+ menuBar.append(helpMenu, "&Help")
23
+ set_menu_bar(menuBar)
24
+
25
+ create_status_bar(2)
26
+ set_status_text("wxRuby Sash sample")
27
+
28
+ evt_menu(Wx::ID_EXIT) { on_quit }
29
+ evt_menu(Wx::ID_ABOUT) { on_about }
30
+
31
+ # Start creating the sashes - these are created from outermost
32
+ # inwards.
33
+ sash = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
34
+ Wx::Size.new(150, self.get_size.y) )
35
+ # The default width of the sash is 150 pixels, and it extends the
36
+ # full height of the frame
37
+ sash.set_default_size( Wx::Size.new(150, self.get_size.y) )
38
+ # This sash splits the frame top to bottom
39
+ sash.set_orientation(Wx::LAYOUT_VERTICAL)
40
+ # Place the sash on the left of the frame
41
+ sash.set_alignment(Wx::LAYOUT_LEFT)
42
+ # Show a drag bar on the right of the sash
43
+ sash.set_sash_visible(Wx::SASH_RIGHT, true)
44
+ sash.set_background_colour(Wx::Colour.new(225, 200, 200) )
45
+
46
+ panel = Wx::Panel.new(sash)
47
+ v_siz = Wx::BoxSizer.new(Wx::VERTICAL)
48
+ chk_1 = Wx::CheckBox.new(panel, -1, 'test 1')
49
+ v_siz.add(chk_1, 0, Wx::ADJUST_MINSIZE)
50
+ chk_2 = Wx::CheckBox.new(panel, -1, 'test 2')
51
+ v_siz.add(chk_2, 0, Wx::ADJUST_MINSIZE)
52
+ panel.set_sizer_and_fit(v_siz)
53
+
54
+ # handle the sash being dragged
55
+ evt_sash_dragged( sash.get_id ) { | e | on_v_sash_dragged(sash, e) }
56
+
57
+ # Create another small sash on the bottom of the frame
58
+ sash_2 = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
59
+ Wx::Size.new(self.get_size.x,
60
+ 100),
61
+ Wx::SW_3DSASH)
62
+ sash_2.set_default_size( Wx::Size.new(self.get_size.x, 100) )
63
+ sash_2.set_orientation(Wx::LAYOUT_HORIZONTAL)
64
+ sash_2.set_alignment(Wx::LAYOUT_BOTTOM)
65
+ sash_2.set_sash_visible(Wx::SASH_TOP, true)
66
+ text = Wx::StaticText.new(sash_2, -1, 'This is the second sash window')
67
+ evt_sash_dragged( sash_2.get_id ) { | e | on_h_sash_dragged(sash_2, e) }
68
+
69
+ # The main panel - the residual part of the frame that takes up all
70
+ # remaining space not used by the sash windows.
71
+ @m_panel = Wx::Panel.new(self, -1)
72
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
73
+
74
+ txt = Wx::TextCtrl.new(@m_panel, -1, 'Main panel area',
75
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
76
+ Wx::SUNKEN_BORDER|Wx::TE_MULTILINE)
77
+ sizer.add(txt, 1, Wx::EXPAND|Wx::ADJUST_MINSIZE|Wx::ALL, 10)
78
+ @m_panel.set_sizer_and_fit(sizer)
79
+
80
+ # Adjust the size of the sashes when the frame is resized
81
+ evt_size { | e | on_size(e) }
82
+
83
+ # Call LayoutAlgorithm#layout_frame to layout the sashes.
84
+ # The second argument is the residual window that takes up remaining
85
+ # space
86
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
87
+ end
88
+
89
+ def on_v_sash_dragged(sash, e)
90
+ # Call get_drag_rect to get the new size
91
+ size = Wx::Size.new( e.get_drag_rect.width(), self.get_size.y )
92
+ sash.set_default_size( size )
93
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
94
+ end
95
+
96
+ def on_h_sash_dragged(sash, e)
97
+ size = Wx::Size.new( self.get_size.x, e.get_drag_rect.height() )
98
+ sash.set_default_size( size )
99
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
100
+ end
101
+
102
+ def on_size(e)
103
+ e.skip()
104
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
105
+ end
106
+
107
+ def on_quit
108
+ close(true)
109
+ end
110
+
111
+ def on_about
112
+ msg = sprintf("This is the About dialog of the sash sample.\n" \
113
+ "Welcome to %s", Wx::VERSION_STRING)
114
+ Wx::message_box(msg, "About Sash", Wx::OK|Wx::ICON_INFORMATION, self)
115
+ end
116
+ end
117
+
118
+ class SashApp < Wx::App
119
+ def on_init
120
+ frame = MySashFrame.new("Sash Layout wxRuby App",
121
+ Wx::Point.new(50, 50),
122
+ Wx::Size.new(450, 340))
123
+
124
+ frame.show(true)
125
+
126
+ end
127
+ end
128
+
129
+ app = SashApp.new
130
+ app.main_loop()
@@ -0,0 +1,110 @@
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
+ # Example demonstrating the use of Wx::ScrolledWindow and the
11
+ # ScrollWinEvents
12
+
13
+ class ScrollFrame < Wx::Frame
14
+ def initialize(title)
15
+ super(nil, -1, 'Thumb Scrolling Test',
16
+ Wx::DEFAULT_POSITION, Wx::Size.new(400, 300),
17
+ Wx::SYSTEM_MENU|Wx::CAPTION|Wx::RESIZE_BORDER|
18
+ Wx::MAXIMIZE_BOX|Wx::MINIMIZE_BOX|Wx::CLOSE_BOX)
19
+
20
+ @scroll_win = Wx::ScrolledWindow.new(self, -1)
21
+ # Set the interior size (pixels) of the scrolling window
22
+ @scroll_win.set_virtual_size(1000, 1500)
23
+ # Set the number of pixels moved per 'line' / click on the scrollbars
24
+ @scroll_win.set_scroll_rate(5, 5)
25
+
26
+ @button = Wx::Button.new(@scroll_win, -1, 'Press Me',
27
+ Wx::Point.new(200,200),
28
+ Wx::Size.new(125, 20))
29
+
30
+ # NOTE that all ScrollWin event hooks do not take an id - i.e. they
31
+ # are only generated from the originating Window itself - in this
32
+ # case, the ScrollWindow. So, we need to do:
33
+ # @scroll_win.evt_scrollwin_xxx { ...
34
+ # AND NOT
35
+ # evt_scrollwin_xxx(@scroll_win.get_id) { ...
36
+ @scroll_win.evt_scrollwin_linedown() { | e | on_line(e, 'down') }
37
+ @scroll_win.evt_scrollwin_lineup() { | e | on_line(e,'up') }
38
+
39
+ @scroll_win.evt_scrollwin_thumbtrack() { | e | on_thumb(e, 'track') }
40
+ @scroll_win.evt_scrollwin_thumbrelease() { | e | on_thumb(e, 'release') }
41
+
42
+ @scroll_win.evt_scrollwin_pagedown() { | e | on_page(e, 'down') }
43
+ @scroll_win.evt_scrollwin_pageup() { | e | on_page(e, 'up') }
44
+
45
+ # not sure how these are meant to be generated
46
+ @scroll_win.evt_scrollwin_top() { | e | on_top(e) }
47
+ @scroll_win.evt_scrollwin_bottom() { | e | on_bottom(e) }
48
+ @scroll_win.evt_scrollwin { | e | p e }
49
+ end
50
+
51
+ # Handle scrolling by page - typically done by clicking on the
52
+ # scrollbar itself, above or below the thumb position
53
+ # +direction+ is either 'up' (= left, if dealing with a horizontal
54
+ # scrollbar) or 'down' (= right) - WxRuby generates different events
55
+ # for these.
56
+ def on_page(event, direction)
57
+ pos = event.get_position
58
+ orient = event.get_orientation == Wx::VERTICAL ? 'VERTICAL' : 'HORIZONTAL'
59
+ puts "#{orient} scrollbar page #{direction} @ #{pos}"
60
+ event.skip() # allow default scrolling action
61
+ end
62
+
63
+
64
+ # Handle scrolling by line - typically done by clicking the up/down
65
+ # (or left/right) scroll buttons at the end of the scrollbar.
66
+ # +direction+ is either 'up' (= left, if dealing with a horizontal
67
+ # scrollbar) or 'down' (= right)
68
+ def on_line(event, direction)
69
+ orient = event.get_orientation == Wx::VERTICAL ? 'VERTICAL' : 'HORIZONTAL'
70
+ pos = event.get_position
71
+ puts "#{orient} scrollbar line #{direction} @ #{pos}"
72
+ event.skip() # allow default action
73
+ end
74
+
75
+ # Handle scrolling done by click-dragging the 'thumb' within a scrollbar.
76
+ # +action+ contains either 'track' for thumbtrack drag events, or 'release'
77
+ # for thumb-release
78
+ def on_thumb(event, action)
79
+ pos = event.get_position
80
+ if event.get_orientation == Wx::VERTICAL
81
+ puts "VERTICAL thumb #{action} @ #{pos}"
82
+ else
83
+ puts "HORIZONTAL thumb #{action} @ #{pos}"
84
+ end
85
+ event.skip()
86
+ end
87
+
88
+ # (Assuming this should be triggered when the End key is pressed)?
89
+ def on_bottom(event)
90
+ puts "bottom"
91
+ end
92
+
93
+
94
+ # (Assuming this should be triggered when the Home/Begin key is pressed)?
95
+ def on_top(event)
96
+ puts "top"
97
+ end
98
+
99
+ end
100
+
101
+ class ScrollingApp < Wx::App
102
+ def on_init
103
+ frame = ScrollFrame.new('')
104
+ frame.show(TRUE)
105
+ end
106
+ end
107
+
108
+ app = ScrollingApp.new
109
+ app.main_loop()
110
+