wxruby 1.9.3-universal-darwin

Sign up to get free protection for your applications and to get access to all the features.
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,39 @@
1
+ module About
2
+
3
+ class MyAboutBox < Wx::Dialog
4
+ def initialize(parent)
5
+ super(parent, -1, "About the WxRuby Demo.")
6
+ sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
7
+ set_size(Wx::Size.new(510,310))
8
+ headerFont = Wx::Font.new(36, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
9
+ bodyFont = Wx::Font.new(12, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
10
+ title = Wx::StaticText.new(self, -1, "WxRuby Demo!", Wx::Point.new(20, 20))
11
+ title.set_font(headerFont)
12
+
13
+ rVersion = Wx::StaticText.new(self, -1, "Running on Ruby version " + VERSION + " on " + RUBY_PLATFORM, Wx::Point.new(20,100))
14
+ rVersion.set_font(bodyFont)
15
+ rVersion.set_foreground_colour(Wx::RED)
16
+
17
+ wxVersion = Wx::StaticText.new(self, -1, Wx::VERSION_STRING, Wx::Point.new(20,120))
18
+ wxVersion.set_font(bodyFont)
19
+ wxVersion.set_foreground_colour(Wx::BLUE)
20
+
21
+ str = "Welcome to the WxRuby Demo! This demo has been ported from the \nwxPython demo created by ROBIN DUNN (http://www.wxpython.org).\nGo ahead and click on each demo via the tree or the demo menu.\nLook at the source code - it is an excellent way to learn WxRuby!\n\nPorted by Robert Paul Carlin"
22
+ body = Wx::StaticText.new(self, -1, str, Wx::Point.new(20, 160))
23
+ body.set_font(bodyFont)
24
+
25
+ self.centre_on_parent(Wx::BOTH)
26
+
27
+
28
+ end
29
+
30
+
31
+ end
32
+
33
+ end
34
+
35
+ if __FILE__ == $0
36
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
37
+ load run_solo_lib
38
+ run File.basename($0)
39
+ end
@@ -0,0 +1,25 @@
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 ColoredPanel < Wx::Window
15
+ def initialize(parent, color)
16
+ super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::SIMPLE_BORDER)
17
+ set_background_colour(color)
18
+ end
19
+ end
20
+
21
+ if __FILE__ == $0
22
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
23
+ load run_solo_lib
24
+ run File.basename($0)
25
+ end
@@ -0,0 +1,80 @@
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 SimpleGrid < Wx::Grid
15
+
16
+ def initialize(parent, log)
17
+ super(parent, -1)
18
+ @log = log
19
+ @moveTo = nil
20
+
21
+ evt_idle {|event| on_idle(event)}
22
+
23
+ create_grid(25,25)
24
+
25
+ # simple cell formatting
26
+ set_col_size(3,200)
27
+ set_row_size(4,45)
28
+ set_cell_value(0,0,"First cell")
29
+ set_cell_value(1,1,"Another cell")
30
+ set_cell_value(2,2,"Yet another cell")
31
+ set_cell_value(3,3,"This cell is read-only")
32
+ set_cell_font(0,0, Wx::Font.new(12, Wx::ROMAN, Wx::ITALIC, Wx::NORMAL))
33
+ set_cell_text_colour(1,1,Wx::RED)
34
+ set_cell_background_colour(2,2,Wx::CYAN)
35
+ set_read_only(3,3,true)
36
+
37
+ set_col_label_value(0, "Custom")
38
+ set_col_label_value(1, "column")
39
+ set_col_label_value(2, "labels")
40
+
41
+ set_col_label_alignment(Wx::ALIGN_LEFT, Wx::ALIGN_BOTTOM)
42
+
43
+ # overflow cells
44
+ set_cell_value(9,1, "This default cell will overflow into neighboring cells, but not if you turn overflow off.")
45
+ #set_cell_size(11, 1, 3, 3)
46
+ set_cell_alignment(11, 1, Wx::ALIGN_CENTRE, Wx::ALIGN_CENTRE)
47
+ set_cell_value(11, 1, "This cell is set to span 3 rows and 3 columns")
48
+
49
+ # evt_grid_cell_left_click {|event| on_cell_left_click(event)}
50
+ end
51
+
52
+ def on_cell_left_click(event)
53
+ @log.write_text("on_cell_left_click: (%d,%d)" % [evt.get_row(), evt.get_col()])
54
+ evt.skip()
55
+ end
56
+
57
+ def on_idle(event)
58
+ if @moveTo != nil
59
+ set_grid_cursor(@moveTo[0], @moveTo[1])
60
+ @moveTo = nil
61
+ end
62
+ event.skip()
63
+ end
64
+ end
65
+
66
+ module GridDemo
67
+ class TestFrame < Wx::Frame
68
+ def initialize(parent, log)
69
+ super(parent, -1, "Simple Grid Demo", Wx::DEFAULT_POSITION, Wx::Size.new(640,480))
70
+ grid = SimpleGrid.new(self, log)
71
+ end
72
+ end
73
+ end
74
+
75
+
76
+ if __FILE__ == $0
77
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
78
+ load run_solo_lib
79
+ run File.basename($0)
80
+ 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
+ module Demo
15
+
16
+ class MyParentFrame < Wx::MDIParentFrame
17
+ def initialize
18
+ super(nil, -1, "MDI Parent", Wx::DEFAULT_POSITION,
19
+ Wx::Size.new(600,400))
20
+
21
+ @win_count = 0
22
+ menu = Wx::Menu.new
23
+ menu.append(5000, "&New Window")
24
+ menu.append_separator
25
+ menu.append(5001, "E&xit")
26
+
27
+ menubar = Wx::MenuBar.new()
28
+ menubar.append(menu, "&File")
29
+ set_menu_bar(menubar)
30
+
31
+ create_status_bar
32
+
33
+ evt_menu(5000) {|event| on_new_window(event)}
34
+ evt_menu(5001) {|event| on_exit(event)}
35
+ scrollwin_demo_file = File.join(File.dirname(__FILE__),
36
+ "wxScrolledWindow.rbw")
37
+ load scrollwin_demo_file
38
+ end
39
+
40
+ def on_exit(event)
41
+ close()
42
+ end
43
+
44
+ def on_new_window(event)
45
+ @win_count += 1
46
+ win = Wx::MDIChildFrame.new(self, -1, "Child Window: #{@win_count}")
47
+ canvas = MyCanvas.new(win)
48
+ win.show
49
+ end
50
+ end
51
+
52
+ end
53
+
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,151 @@
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
+ TEXT = "Right-click on the panel (or Ctrl-click on the Mac) to show a popup\nmenu. Then look at the code for this sample. Notice how the\nPopupMenu method is similar to the ShowModal method of a wxDialog in\nthat it doesn't return until the popup menu has been dismissed. The\nevent handlers for the popup menu items can either be attached to the\nmenu itself, or to the window that invokes PopupMenu."
15
+
16
+ class TestPanel < Wx::Panel
17
+ def initialize(parent, log)
18
+ @log = log
19
+ super(parent, -1)
20
+ @bound = false
21
+ box = Wx::BoxSizer.new(Wx::VERTICAL)
22
+
23
+ # Make and layout controls
24
+ fs = get_font().get_point_size()
25
+ bf = Wx::Font.new(fs + 4, Wx::SWISS, Wx::NORMAL, Wx::BOLD)
26
+ nf = Wx::Font.new(fs + 2, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
27
+
28
+ t = Wx::StaticText.new(self, -1, "Popup menu", Wx::DEFAULT_POSITION)
29
+ t.set_font(bf)
30
+ box.add(t, 0, Wx::CENTER | Wx::ALL, 5)
31
+
32
+ box.add(Wx::StaticLine.new(self, -1), 0, Wx::EXPAND)
33
+ box.add(10,20)
34
+
35
+ t = Wx::StaticText.new(self, -1, TEXT)
36
+ t.set_font(nf)
37
+ box.add(t, 0, Wx::CENTER | Wx::ALL, 5)
38
+
39
+ set_sizer(box)
40
+
41
+ evt_right_up {|event| on_right_click(event)}
42
+ end
43
+
44
+ def on_right_click(event)
45
+ @log.write_text("on_right_click")
46
+
47
+ # only do this part the first time so the events are only bound once
48
+ if @bound == false
49
+ @popupID1,
50
+ @popupID2,
51
+ @popupID3,
52
+ @popupID4,
53
+ @popupID5,
54
+ @popupID6,
55
+ @popupID7,
56
+ @popupID8,
57
+ @popupID9 = (5000..5008).to_a()
58
+ evt_menu(@popupID1) {|event| on_popup_one(event)}
59
+ evt_menu(@popupID2) {|event| on_popup_two(event)}
60
+ evt_menu(@popupID3) {|event| on_popup_three(event)}
61
+ evt_menu(@popupID4) {|event| on_popup_four(event)}
62
+ evt_menu(@popupID5) {|event| on_popup_five(event)}
63
+ evt_menu(@popupID6) {|event| on_popup_six(event)}
64
+ evt_menu(@popupID7) {|event| on_popup_seven(event)}
65
+ evt_menu(@popupID8) {|event| on_popup_eight(event)}
66
+ evt_menu(@popupID9) {|event| on_popup_nine(event)}
67
+ @bound = true
68
+ end
69
+
70
+ # make a menu
71
+ menu = Wx::Menu.new()
72
+ # Show how to put an icon in the menu
73
+ item = Wx::MenuItem.new(menu, @popupID1, "One")
74
+ # set_bitmap is only available on GTK and Windows
75
+ if item.respond_to?(:set_bitmap)
76
+ bmp_file = File.join( File.dirname(__FILE__), 'icons', 'smiley.xpm')
77
+ item.set_bitmap( Wx::Bitmap.new(bmp_file) )
78
+ end
79
+ menu.append_item(item)
80
+ # add some other items
81
+ menu.append(@popupID2, "Two")
82
+ menu.append(@popupID3, "Three")
83
+ menu.append(@popupID4, "Four")
84
+ menu.append(@popupID5, "Five")
85
+ menu.append(@popupID6, "Six")
86
+ # make a submenu
87
+ sm = Wx::Menu.new()
88
+ sm.append(@popupID8, "sub item 1")
89
+ sm.append(@popupID9, "sub item 2")
90
+ mItem = Wx::MenuItem.new(menu, @popupID7, "Test Submenu", "", Wx::ITEM_NORMAL, sm)
91
+ menu.append_item(mItem)
92
+
93
+ popup_menu(menu, Wx::Point.new(event.get_x(), event.get_y()))
94
+ #menu.destroy()
95
+ end
96
+
97
+ def on_popup_one(event)
98
+ @log.write_text("Popup one")
99
+ end
100
+
101
+ def on_popup_two(event)
102
+ @log.write_text("Popup two")
103
+ end
104
+
105
+ def on_popup_three(event)
106
+ @log.write_text("Popup three")
107
+ end
108
+
109
+ def on_popup_four(event)
110
+ @log.write_text("Popup four")
111
+ end
112
+
113
+ def on_popup_five(event)
114
+ @log.write_text("Popup five")
115
+ end
116
+
117
+ def on_popup_six(event)
118
+ @log.write_text("Popup six")
119
+ end
120
+
121
+ def on_popup_seven(event)
122
+ @log.write_text("Popup seven")
123
+ end
124
+
125
+ def on_popup_eight(event)
126
+ @log.write_text("Popup eight")
127
+ end
128
+
129
+ def on_popup_nine(event)
130
+ @log.write_text("Popup nine")
131
+ end
132
+
133
+ end
134
+
135
+ module Demo
136
+ def Demo.run(frame, nb, log)
137
+ win = TestPanel.new(nb, log)
138
+ return win
139
+ end
140
+
141
+ def Demo.overview
142
+ return ""
143
+ end
144
+ end
145
+
146
+
147
+ if __FILE__ == $0
148
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
149
+ load run_solo_lib
150
+ run File.basename($0)
151
+ end
@@ -0,0 +1,135 @@
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
+ include Wx
16
+
17
+ BUTTON_CLOSE = 1003
18
+
19
+ class MyFrame < Frame
20
+ def initialize(parent, log)
21
+ @log = log
22
+ super(parent, -1, "Shaped Window", DEFAULT_POSITION, Size.new(350,200),
23
+ FRAME_SHAPED|SIMPLE_BORDER|FRAME_NO_TASKBAR|STAY_ON_TOP)
24
+
25
+ @has_shape = false
26
+ @delta = [0,0]
27
+
28
+ evt_left_dclick {on_double_click}
29
+ evt_left_down {|event| on_left_down(event)}
30
+ evt_left_up {|event| on_left_up(event)}
31
+ evt_motion {|event| on_mouse_move(event)}
32
+ evt_right_up {on_exit}
33
+ evt_paint {on_paint}
34
+
35
+ shape = File.join( File.dirname(__FILE__), 'icons', 'ruby.png' )
36
+ @bmp = Bitmap.new( Image.new(shape) )
37
+ set_client_size(@bmp.get_width, @bmp.get_height)
38
+
39
+ if Wx::PLATFORM == 'WXGTK'
40
+ # wxGTK requires that the window be created before you can
41
+ # set its shape, so delay the call to SetWindowShape until
42
+ # this event.
43
+ evt_window_create { set_window_shape }
44
+ else
45
+ # On wxMSW and wxMac the window has already been created, so go for it.
46
+ set_window_shape
47
+ end
48
+
49
+ paint { | dc | dc.draw_bitmap(@bmp, 0, 0, true) }
50
+ end
51
+
52
+ def set_window_shape
53
+ r = Region.new(@bmp)
54
+ @has_shape = set_shape(r)
55
+ end
56
+
57
+ def on_double_click
58
+ if @has_shape
59
+ set_shape(Region.new)
60
+ @has_shape = false
61
+ else
62
+ set_window_shape
63
+ end
64
+ end
65
+
66
+ def on_paint
67
+ paint { | dc | dc.draw_bitmap(@bmp, 0, 0, true) }
68
+ end
69
+
70
+ def on_exit
71
+ close(true)
72
+ end
73
+
74
+ def on_left_down(event)
75
+ capture_mouse
76
+ point = client_to_screen(event.get_position)
77
+ origin = get_position
78
+ dx = point.x - origin.x
79
+ dy = point.y - origin.y
80
+ @delta = [dx, dy]
81
+ end
82
+
83
+ def on_left_up(event)
84
+ if has_capture
85
+ release_mouse
86
+ end
87
+ end
88
+
89
+ def on_mouse_move(event)
90
+ if event.dragging and event.left_is_down
91
+ point = client_to_screen(event.get_position)
92
+ move(point.x - @delta[0], point.y - @delta[1])
93
+ end
94
+ end
95
+ end
96
+
97
+ class TestPanel < Wx::Panel
98
+ def initialize(parent, log)
99
+ super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
100
+ @log = log
101
+
102
+ b = Button.new(self, -1, 'Show the ShapedWindow Sample', Wx::Point.new(50,50))
103
+ evt_button(b.get_id) { on_button }
104
+ end
105
+
106
+ def on_button
107
+ win = MyFrame.new(self, @log)
108
+ win.set_size(Wx::Size.new(200, 200))
109
+ win.center_on_parent(Wx::BOTH)
110
+ win.show(true)
111
+ end
112
+ end
113
+
114
+ module Demo
115
+ def Demo.run(frame, nb, log)
116
+ TestPanel.new(nb, log)
117
+ end
118
+
119
+ def Demo.overview
120
+ <<EOS
121
+ Top level windows now have a SetShape method that lets you set a
122
+ non-rectangular shape for the window using a wxRegion. All pixels
123
+ outside of the region will not be drawn and the window will not be
124
+ sensitive to the mouse in those areas either.
125
+ EOS
126
+ end
127
+ end
128
+
129
+
130
+
131
+ if __FILE__ == $0
132
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
133
+ load run_solo_lib
134
+ run File.basename($0)
135
+ end