wxruby 1.9.0-i386-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. data/lib/wx/classes/app.rb +25 -0
  2. data/lib/wx/classes/artprovider.rb +31 -0
  3. data/lib/wx/classes/bitmap.rb +23 -0
  4. data/lib/wx/classes/choice.rb +4 -0
  5. data/lib/wx/classes/clientdc.rb +13 -0
  6. data/lib/wx/classes/colour.rb +47 -0
  7. data/lib/wx/classes/combobox.rb +4 -0
  8. data/lib/wx/classes/evthandler.rb +824 -0
  9. data/lib/wx/classes/font.rb +118 -0
  10. data/lib/wx/classes/grid.rb +130 -0
  11. data/lib/wx/classes/helpcontroller.rb +5 -0
  12. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  13. data/lib/wx/classes/htmlwindow.rb +6 -0
  14. data/lib/wx/classes/icon.rb +14 -0
  15. data/lib/wx/classes/image.rb +14 -0
  16. data/lib/wx/classes/listbox.rb +4 -0
  17. data/lib/wx/classes/locale.rb +28 -0
  18. data/lib/wx/classes/object.rb +7 -0
  19. data/lib/wx/classes/paintdc.rb +12 -0
  20. data/lib/wx/classes/point.rb +5 -0
  21. data/lib/wx/classes/previewframe.rb +13 -0
  22. data/lib/wx/classes/rect.rb +5 -0
  23. data/lib/wx/classes/size.rb +5 -0
  24. data/lib/wx/classes/texturlevent.rb +6 -0
  25. data/lib/wx/classes/timer.rb +69 -0
  26. data/lib/wx/classes/window.rb +38 -0
  27. data/lib/wx/classes/xmlresource.rb +16 -0
  28. data/lib/wx/version.rb +3 -0
  29. data/lib/wx.rb +35 -0
  30. data/lib/wxruby2.so +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +18 -0
  32. data/samples/aui/aui.rb +1352 -0
  33. data/samples/bigdemo/About.rbw +39 -0
  34. data/samples/bigdemo/ColorPanel.rbw +25 -0
  35. data/samples/bigdemo/GridSimple.rbw +80 -0
  36. data/samples/bigdemo/MDIDemo.rbw +59 -0
  37. data/samples/bigdemo/PopupMenu.rbw +151 -0
  38. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  39. data/samples/bigdemo/Sizers.rbw +545 -0
  40. data/samples/bigdemo/bigdemo.rb +826 -0
  41. data/samples/bigdemo/demoTemplate.rbw +37 -0
  42. data/samples/bigdemo/helpfile.htb +0 -0
  43. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  44. data/samples/bigdemo/icons/Test 015.png +0 -0
  45. data/samples/bigdemo/icons/choice.bmp +0 -0
  46. data/samples/bigdemo/icons/choice.xpm +27 -0
  47. data/samples/bigdemo/icons/combo.bmp +0 -0
  48. data/samples/bigdemo/icons/combo.xpm +27 -0
  49. data/samples/bigdemo/icons/copy.xpm +25 -0
  50. data/samples/bigdemo/icons/cut.xpm +24 -0
  51. data/samples/bigdemo/icons/gauge.bmp +0 -0
  52. data/samples/bigdemo/icons/gauge.xpm +27 -0
  53. data/samples/bigdemo/icons/help.xpm +25 -0
  54. data/samples/bigdemo/icons/list.bmp +0 -0
  55. data/samples/bigdemo/icons/list.xpm +27 -0
  56. data/samples/bigdemo/icons/mondrian.ico +0 -0
  57. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  58. data/samples/bigdemo/icons/new.xpm +24 -0
  59. data/samples/bigdemo/icons/ogl.ico +0 -0
  60. data/samples/bigdemo/icons/ogl.xpm +45 -0
  61. data/samples/bigdemo/icons/open.xpm +26 -0
  62. data/samples/bigdemo/icons/paste.bmp +0 -0
  63. data/samples/bigdemo/icons/paste.xpm +38 -0
  64. data/samples/bigdemo/icons/pointy.png +0 -0
  65. data/samples/bigdemo/icons/preview.xpm +26 -0
  66. data/samples/bigdemo/icons/print.xpm +26 -0
  67. data/samples/bigdemo/icons/radio.bmp +0 -0
  68. data/samples/bigdemo/icons/radio.xpm +27 -0
  69. data/samples/bigdemo/icons/robert.xpm +415 -0
  70. data/samples/bigdemo/icons/ruby.png +0 -0
  71. data/samples/bigdemo/icons/sashtest.ico +0 -0
  72. data/samples/bigdemo/icons/save.xpm +25 -0
  73. data/samples/bigdemo/icons/smiles.bmp +0 -0
  74. data/samples/bigdemo/icons/smiles.xpm +39 -0
  75. data/samples/bigdemo/icons/smiley.ico +0 -0
  76. data/samples/bigdemo/icons/smiley.xpm +42 -0
  77. data/samples/bigdemo/icons/stattext.xpm +24 -0
  78. data/samples/bigdemo/icons/test2.bmp +0 -0
  79. data/samples/bigdemo/icons/test2.png +0 -0
  80. data/samples/bigdemo/icons/test2.xpm +79 -0
  81. data/samples/bigdemo/icons/text.bmp +0 -0
  82. data/samples/bigdemo/icons/text.xpm +27 -0
  83. data/samples/bigdemo/icons/tog1.bmp +0 -0
  84. data/samples/bigdemo/icons/tog1.xpm +38 -0
  85. data/samples/bigdemo/icons/tog2.bmp +0 -0
  86. data/samples/bigdemo/icons/tog2.xpm +38 -0
  87. data/samples/bigdemo/icons/wxwin.ico +0 -0
  88. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  89. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  90. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  91. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  92. data/samples/bigdemo/run.rb +94 -0
  93. data/samples/bigdemo/tips.txt +7 -0
  94. data/samples/bigdemo/utils.rb +12 -0
  95. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  96. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  97. data/samples/bigdemo/wxButton.rbw +66 -0
  98. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  99. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  100. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  101. data/samples/bigdemo/wxChoice.rbw +49 -0
  102. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  103. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  104. data/samples/bigdemo/wxComboBox.rbw +79 -0
  105. data/samples/bigdemo/wxCursor.rbw +140 -0
  106. data/samples/bigdemo/wxDialog.rbw +92 -0
  107. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  108. data/samples/bigdemo/wxDragImage.rbw +74 -0
  109. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  110. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  111. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  112. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  113. data/samples/bigdemo/wxFrame.rbw +55 -0
  114. data/samples/bigdemo/wxGauge.rbw +73 -0
  115. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  116. data/samples/bigdemo/wxGrid.rbw +68 -0
  117. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  118. data/samples/bigdemo/wxListBox.rbw +142 -0
  119. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  120. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  121. data/samples/bigdemo/wxMenu.rbw +238 -0
  122. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  123. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  124. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  125. data/samples/bigdemo/wxNotebook.rbw +138 -0
  126. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  127. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  128. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  129. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  130. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  131. data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
  132. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  133. data/samples/bigdemo/wxSlider.rbw +44 -0
  134. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  135. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  136. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  137. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  138. data/samples/bigdemo/wxStaticText.rbw +57 -0
  139. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  140. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  141. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  142. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  143. data/samples/bigdemo/wxToolBar.rbw +133 -0
  144. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  145. data/samples/calendar/calendar.rb +275 -0
  146. data/samples/caret/caret.rb +296 -0
  147. data/samples/caret/mondrian.xpm +44 -0
  148. data/samples/controls/controls.rb +1140 -0
  149. data/samples/controls/get_item_sample.rb +87 -0
  150. data/samples/controls/icons/choice.xpm +27 -0
  151. data/samples/controls/icons/combo.xpm +27 -0
  152. data/samples/controls/icons/gauge.xpm +27 -0
  153. data/samples/controls/icons/list.xpm +27 -0
  154. data/samples/controls/icons/radio.xpm +27 -0
  155. data/samples/controls/icons/stattext.xpm +24 -0
  156. data/samples/controls/icons/text.xpm +27 -0
  157. data/samples/controls/mondrian.ico +0 -0
  158. data/samples/controls/mondrian.xpm +44 -0
  159. data/samples/controls/test2.bmp +0 -0
  160. data/samples/dialogs/dialogs.rb +724 -0
  161. data/samples/dialogs/tips.txt +18 -0
  162. data/samples/etc/activation.rb +108 -0
  163. data/samples/etc/choice.rb +72 -0
  164. data/samples/etc/miniframe.rb +84 -0
  165. data/samples/etc/sash.rb +135 -0
  166. data/samples/etc/scrollwin.rb +116 -0
  167. data/samples/etc/system_settings.rb +258 -0
  168. data/samples/etc/wizard.rb +81 -0
  169. data/samples/grid/grid.rb +201 -0
  170. data/samples/html/html.rb +251 -0
  171. data/samples/images/Thumbs.db +0 -0
  172. data/samples/images/images.rb +48 -0
  173. data/samples/images/paperclip.png +0 -0
  174. data/samples/listbook/listbook.rb +183 -0
  175. data/samples/listbook/listbook.xrc +370 -0
  176. data/samples/mdi/mdi.rb +87 -0
  177. data/samples/minimal/minimal.rb +95 -0
  178. data/samples/minimal/mondrian.ico +0 -0
  179. data/samples/minimal/mondrian.xpm +44 -0
  180. data/samples/minimal/nothing.rb +46 -0
  181. data/samples/minimal/text.rb +35 -0
  182. data/samples/printing/mondrian.ico +0 -0
  183. data/samples/printing/mondrian.xpm +44 -0
  184. data/samples/printing/printing.rb +484 -0
  185. data/samples/text/mondrian.ico +0 -0
  186. data/samples/text/mondrian.xpm +44 -0
  187. data/samples/text/scintilla.rb +180 -0
  188. data/samples/text/textctrl.rb +124 -0
  189. data/samples/text/unicode.rb +238 -0
  190. data/samples/text/utf8.txt +15 -0
  191. data/samples/treectrl/icon1.xpm +79 -0
  192. data/samples/treectrl/icon2.xpm +53 -0
  193. data/samples/treectrl/icon3.xpm +79 -0
  194. data/samples/treectrl/icon4.xpm +43 -0
  195. data/samples/treectrl/icon5.xpm +79 -0
  196. data/samples/treectrl/treectrl.rb +1210 -0
  197. data/samples/xrc/samples.xrc +46 -0
  198. data/samples/xrc/xrc_sample.rb +107 -0
  199. metadata +263 -0
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ module Demo
15
+ def Demo.run(frame, nb, log)
16
+ max = 20
17
+ dlg = Wx::ProgressDialog.new("Progress dialog example", "An informative message", max, frame,
18
+ Wx::PD_CAN_ABORT | Wx::PD_APP_MODAL)
19
+
20
+ keepGoing = true
21
+ count = 0
22
+ while keepGoing and count < max
23
+ count += 1
24
+ sleep(1)
25
+
26
+ if count == max / 2
27
+ keepGoing = dlg.update(count, "Half-time!")
28
+ else
29
+ keepGoing = dlg.update(count)
30
+ end
31
+ end
32
+ dlg.destroy()
33
+ return nil
34
+ end
35
+
36
+ def Demo.overview
37
+ return "A dialog that shows the progress of an operation"
38
+ end
39
+ end
40
+
41
+ if __FILE__ == $0
42
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
43
+ load run_solo_lib
44
+ run File.basename($0)
45
+ end
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ $RBUT1 = 5000
15
+ $RBUT2 = 5001
16
+ $RBUT3 = 5002
17
+ $RBUT4 = 5003
18
+
19
+ $RBOX1 = 5004
20
+ $RBOX2 = 5005
21
+
22
+ class TestRadioButtons < Wx::Panel
23
+ def initialize(parent, log)
24
+ @log = log
25
+ super(parent, -1)
26
+
27
+ sampleList = %w(zero one two three four five six seven eight)
28
+
29
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
30
+ # Here is a strange thing - when I originally created this demo, I used the WxRuby constant Wx::DEFAULT_SIZE in the two
31
+ # radiobox constructors (on Windows XP Prof). When I did this, the "box" around the radio buttons would resize in a
32
+ # groesque fashion (either when I clicked on another demo first, or on the second time that I ran the demo. But when I
33
+ # used Wx::Size.new(-1,-1), this behavior disappeared. If anyone figures this out, please post it to the list :)
34
+ rb = Wx::RadioBox.new(self, $RBOX1, "Wx::RadioBox", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 2, Wx::RA_SPECIFY_COLS)
35
+ evt_radiobox($RBOX1) {|event| on_evt_radiobox(event)}
36
+ rb.set_tool_tip(Wx::ToolTip.new("This is a tooltip!"))
37
+ sizer.add(rb, 0, Wx::ALL, 20)
38
+
39
+ rb = Wx::RadioBox.new(self, $RBOX2, "", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1), sampleList, 3, Wx::RA_SPECIFY_COLS | Wx::NO_BORDER)
40
+ evt_radiobox($RBOX2) {|event| on_evt_radiobox(event)}
41
+ rb.set_tool_tip(Wx::ToolTip.new("This box has no label"))
42
+ sizer.add(rb, 0, Wx::ALL, 20)
43
+
44
+ set_sizer(sizer)
45
+ sizer.fit(self)
46
+ sizer.layout()
47
+ end
48
+
49
+ def on_evt_radiobox(event)
50
+ @log.write_text("evt_radiobox: " + event.get_int().to_s())
51
+ end
52
+
53
+ def on_evt_radio_button(event)
54
+ @log.write_text("evt_radiobutton: " + event.get_id().to_s())
55
+ end
56
+ end
57
+
58
+ module Demo
59
+ def Demo.run(frame,nb,log)
60
+ win = TestRadioButtons.new(nb, log)
61
+ return win
62
+ end
63
+
64
+ def Demo.overview
65
+ "A radio box item is used to select one of number of mutually exclusive choices. It is displayed as a vertical column or horizontal row of labelled buttons."
66
+ end
67
+ end
68
+
69
+
70
+ if __FILE__ == $0
71
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
72
+ load run_solo_lib
73
+ run File.basename($0)
74
+ end
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ class TestPanel < Wx::Panel
15
+ def initialize(parent, log)
16
+ super(parent, -1)
17
+ @log = log
18
+ panel = Wx::Panel.new(self, -1)
19
+
20
+ # 1st group of controls
21
+ @group1_ctrls = {}
22
+ radio1 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
23
+ text1 = Wx::TextCtrl.new(panel, -1, "")
24
+ radio2 = Wx::RadioButton.new(panel, -1, "Radio2")
25
+ text2 = Wx::TextCtrl.new(panel, -1, "")
26
+ radio3 = Wx::RadioButton.new(panel, -1, "Radio3")
27
+ text3 = Wx::TextCtrl.new(panel, -1, "")
28
+ @group1_ctrls["one"] = [radio1, text1]
29
+ @group1_ctrls["two"] = [radio2, text2]
30
+ @group1_ctrls["three"] = [radio3, text3]
31
+
32
+ # 2nd group of controls
33
+ #@group2_ctrls = {}
34
+ #radio4 = Wx::RadioButton.new(panel, -1, "Radio1", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::RB_GROUP)
35
+ #text4 = Wx::TextCtrl.new(panel, -1, "")
36
+ #radio5 = Wx::RadioButton.new(panel, -1, "Radio2")
37
+ #text5 = Wx::TextCtrl.new(panel, -1, "")
38
+ #radio6 = Wx::RadioButton.new(panel, -1, "Radio3")
39
+ #text6 = Wx::TextCtrl.new(panel, -1, "")
40
+ #@group2_ctrls["one"] = [radio4, text4]
41
+ #@group2_ctrls["two"] = [radio5, text5]
42
+ #@group2_ctrls["three"] = [radio6, text6]
43
+
44
+ # Layout controls on panel
45
+ vs = Wx::BoxSizer.new(Wx::VERTICAL)
46
+
47
+ box1_title = Wx::StaticBox.new(panel, -1, "Group 1", Wx::DEFAULT_POSITION, Wx::Size.new(-1,-1))
48
+ box1 = Wx::StaticBoxSizer.new(box1_title, Wx::HORIZONTAL)
49
+ grid1 = Wx::FlexGridSizer.new(0,2,0,0)
50
+
51
+ @group1_ctrls.each_value do |ctrl|
52
+ grid1.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
53
+ grid1.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
54
+ end
55
+ box1.add(grid1, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
56
+ vs.add(box1, 0, Wx::ALL, 5)
57
+
58
+ #box2_title = Wx::StaticBox.new(panel, -1, "Group 2")
59
+ #box2 = Wx::StaticBoxSizer.new(box2_title, Wx::HORIZONTAL)
60
+ #grid2 = Wx::FlexGridSizer.new(0,2,0,0)
61
+
62
+ #@group2_ctrls.each_value do |ctrl|
63
+ #grid2.add(ctrl[0], 0, Wx::ALIGN_CENTER, 5)
64
+ #grid2.add(ctrl[1], 0, Wx::ALIGN_CENTER, 5)
65
+ #end
66
+ #box2.add(grid2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
67
+ #vs.add(box2, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
68
+
69
+ panel.set_sizer(vs)
70
+ vs.fit(panel)
71
+
72
+ panel.move(Wx::Point.new(50,50))
73
+ @panel = panel
74
+
75
+ @group1_ctrls.each_value do |ctrl|
76
+ evt_radiobutton(ctrl[0].get_id()) {|event| on_group1_select(event)}
77
+ ctrl[0].set_value(0)
78
+ ctrl[1].enable(false)
79
+ end
80
+ #@group2_ctrls.each_value do |ctrl|
81
+ # evt_radiobutton(ctrl[0].get_id()) {|event| on_group2_select(event)}
82
+ # ctrl[0].set_value(0)
83
+ # ctrl[1].enable(false)
84
+ #end
85
+ end
86
+
87
+ def on_group1_select(event)
88
+ @group1_ctrls.each_value do |ctrl|
89
+ if ctrl[0].get_value() == true
90
+ ctrl[1].enable(true)
91
+ @log.write_text("Group 1 " + ctrl[0].get_label() + " selected")
92
+ else
93
+ ctrl[1].enable(false)
94
+ end
95
+ end
96
+ end
97
+
98
+ def on_group2_select(event)
99
+ @group2_ctrls.each_value do |ctrl|
100
+ if ctrl[0].get_value() == true
101
+ ctrl[1].enable(true)
102
+ @log.write_text("Group 2 " + ctrl[0].get_label() + " selected")
103
+ else
104
+ ctrl[1].enable(false)
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ module Demo
111
+ def Demo.run(frame,nb,log)
112
+ win = TestPanel.new(nb, log)
113
+ return win
114
+ end
115
+
116
+ def Demo.overview
117
+ "This demo shows how individual radio buttons can be used to build more complicated selection mechanisms...\n" +
118
+ "It uses 2 groups of wxRadioButtons, where the groups are defined by instantiation. When a wxRadioButton is created with the Wx::RB_GROUP style, all subsequent wxRadioButtons created without it are implicitly added to that group by the framework."
119
+ end
120
+ end
121
+
122
+
123
+ if __FILE__ == $0
124
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
125
+ load run_solo_lib
126
+ run File.basename($0)
127
+ end
@@ -0,0 +1,155 @@
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, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, 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(
26
+ self, -1, Wx::DEFAULT_POSITION, Wx::Size.new(200, 30),
27
+ Wx::NO_BORDER|Wx::SW_3D
28
+ )
29
+
30
+ @topwin.set_default_size(Wx::Size.new(1000, 30))
31
+ @topwin.set_orientation(Wx::LAYOUT_HORIZONTAL)
32
+ @topwin.set_alignment(Wx::LAYOUT_TOP)
33
+ @topwin.set_background_colour(Wx::Colour.new(255, 0, 0))
34
+ @topwin.set_sash_visible(Wx::SASH_BOTTOM, true)
35
+
36
+ winids << @topwin.get_id
37
+
38
+ # A window like a statusbar
39
+ @bottomwin = Wx::SashLayoutWindow.new(
40
+ self, -1, Wx::DEFAULT_POSITION, Wx::Size.new(200, 30),
41
+ Wx::NO_BORDER|Wx::SW_3D
42
+ )
43
+
44
+ @bottomwin.set_default_size(Wx::Size.new(1000, 30))
45
+ @bottomwin.set_orientation(Wx::LAYOUT_HORIZONTAL)
46
+ @bottomwin.set_alignment(Wx::LAYOUT_BOTTOM)
47
+ @bottomwin.set_background_colour(Wx::Colour.new(0, 0, 255))
48
+ @bottomwin.set_sash_visible(Wx::SASH_TOP, true)
49
+
50
+ winids << @bottomwin.get_id
51
+
52
+ # A window to the left of the client window
53
+ @leftwin1 = Wx::SashLayoutWindow.new(
54
+ self, -1, Wx::DEFAULT_POSITION, Wx::Size.new(200, 30),
55
+ Wx::NO_BORDER|Wx::SW_3D
56
+ )
57
+
58
+ @leftwin1.set_default_size(Wx::Size.new(120, 1000))
59
+ @leftwin1.set_orientation(Wx::LAYOUT_VERTICAL)
60
+ @leftwin1.set_alignment(Wx::LAYOUT_LEFT)
61
+ @leftwin1.set_background_colour(Wx::Colour.new(0, 255, 0))
62
+ @leftwin1.set_sash_visible(Wx::SASH_RIGHT, true)
63
+ @leftwin1.set_extra_border_size(10)
64
+ text_window = Wx::TextCtrl.new(
65
+ @leftwin1, -1, "", Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
66
+ Wx::TE_MULTILINE|Wx::SUNKEN_BORDER
67
+ )
68
+
69
+ text_window.set_value("A sub window")
70
+
71
+ winids << @leftwin1.get_id
72
+
73
+ # Another window to the left of the client window
74
+ @leftwin2 = Wx::SashLayoutWindow.new(
75
+ self, -1, Wx::DEFAULT_POSITION, Wx::Size.new(200, 30),
76
+ Wx::NO_BORDER|Wx::SW_3D
77
+ )
78
+
79
+ @leftwin2.set_default_size(Wx::Size.new(120, 1000))
80
+ @leftwin2.set_orientation(Wx::LAYOUT_VERTICAL)
81
+ @leftwin2.set_alignment(Wx::LAYOUT_LEFT)
82
+ @leftwin2.set_background_colour(Wx::Colour.new(0, 255, 255))
83
+ @leftwin2.set_sash_visible(Wx::SASH_RIGHT, true)
84
+
85
+ winids << @leftwin2.get_id
86
+
87
+ # will occupy the space not used by the Layout Algorithm
88
+ @remaining_space = Wx::Panel.new(self, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::SUNKEN_BORDER)
89
+
90
+ evt_sash_dragged_range(winids.min, winids.max) {|event| on_sash_drag(event) }
91
+ evt_size {|event| on_size(event) }
92
+ end
93
+
94
+
95
+ def on_sash_drag(event)
96
+ if event.get_drag_status == Wx::SASH_STATUS_OUT_OF_RANGE:
97
+ @log.write_text('drag == out of range')
98
+ return
99
+ end
100
+
101
+ eobj = event.get_event_object
102
+ if eobj == @topwin
103
+ @log.write_text('topwin received drag event')
104
+ @topwin.set_default_size(Wx::Size.new(1000, event.get_drag_rect.height))
105
+
106
+ elsif eobj == @leftwin1
107
+ @log.write_text('leftwin1 received drag event')
108
+ @leftwin1.set_default_size(Wx::Size.new(event.get_drag_rect.width, 1000))
109
+
110
+
111
+ elsif eobj == @leftwin2
112
+ @log.write_text('leftwin2 received drag event')
113
+ @leftwin2.set_default_size(Wx::Size.new(event.get_drag_rect.width, 1000))
114
+
115
+ elsif eobj == @bottomwin
116
+ @log.write_text('bottomwin received drag event')
117
+ @bottomwin.set_default_size(Wx::Size.new(1000, event.get_drag_rect.height))
118
+ end
119
+
120
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
121
+ @remaining_space.refresh
122
+ end
123
+
124
+ def on_size(event)
125
+ Wx::LayoutAlgorithm.new.layout_window(self, @remaining_space)
126
+ end
127
+
128
+ end
129
+
130
+ module Demo
131
+
132
+ def Demo.run(frame, nb, log)
133
+ TestPanel.new(nb, log)
134
+ end
135
+
136
+ def Demo.overview
137
+ return <<EOS
138
+ Wx::SashLayoutWindow responds to OnCalculateLayout events generated by
139
+ wxLayoutAlgorithm. It allows the application to use simple accessors to
140
+ specify how the window should be laid out, rather than having to respond
141
+ to events. The fact that the class derives from Wx::SashWindow allows sashes
142
+ to be used if required, to allow the windows to be user-resizable.
143
+
144
+ The documentation for Wx::LayoutAlgorithm explains the purpose of this class
145
+ in more detail.
146
+ EOS
147
+ end
148
+
149
+ end
150
+
151
+ if __FILE__ == $0
152
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
153
+ load run_solo_lib
154
+ run File.basename($0)
155
+ end
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ class ScrolledMessageDialog < Wx::Dialog
15
+ def initialize(parent, msg, caption,
16
+ pos = Wx::DEFAULT_POSITION,
17
+ size = Wx::Size.new(500,300) )
18
+ super(parent, -1, caption, pos, size)
19
+ x,y = pos.x, pos.y
20
+ if x == -1 and y == -1
21
+ center_on_screen(Wx::BOTH)
22
+ end
23
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
24
+ text = Wx::TextCtrl.new(self, -1, msg,
25
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
26
+ Wx::TE_MULTILINE|Wx::TE_READONLY)
27
+
28
+ sizer.add(text, 1, Wx::EXPAND|Wx::ALL, 5)
29
+
30
+ button_sizer = Wx::StdDialogButtonSizer.new
31
+ button_sizer.add_button( Wx::Button.new(self, Wx::ID_OK, "OK") )
32
+ button_sizer.realize
33
+
34
+ sizer.add(button_sizer, 0, Wx::EXPAND|Wx::ALL, 5)
35
+
36
+ set_sizer(sizer)
37
+ layout
38
+ end
39
+ end
40
+
41
+ module Demo
42
+ def Demo.run(frame, nb, log)
43
+ f = open(__FILE__, "r")
44
+ msg = f.read()
45
+ dlg = ScrolledMessageDialog.new(frame, msg, "message test")
46
+ dlg.show_modal()
47
+ end
48
+
49
+ def Demo.overview
50
+ return "A simple ruby example of a custom dialog displaying a " +
51
+ "long message in a scrolled TextCtrl"
52
+ end
53
+ end
54
+
55
+ if __FILE__ == $0
56
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
57
+ load run_solo_lib
58
+ run File.basename($0)
59
+ end
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ #$BUFFERED = 0 #Wx::BufferedDC not yet implemented
15
+
16
+ class MyCanvas < Wx::ScrolledWindow
17
+ def initialize(parent, id=-1, size=Wx::DEFAULT_SIZE)
18
+ super(parent, -1, Wx::Point.new(0,0), size, Wx::SUNKEN_BORDER)
19
+ @lines = []
20
+ @maxWidth = 1000
21
+ @maxHeight = 1000
22
+ @x = @y = 0
23
+ @curLine = []
24
+ @drawing = false
25
+
26
+ set_background_colour(Wx::WHITE)
27
+
28
+ set_cursor(Wx::Cursor.new(Wx::CURSOR_PENCIL))
29
+ bmp_file = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
30
+ @bmp = Wx::Bitmap.new(bmp_file)
31
+
32
+
33
+ set_scrollbars(20, 20, @maxWidth / 20, @maxHeight / 20, 0, 0, true)
34
+
35
+ evt_left_down {|event| on_left_button_event_down(event)}
36
+ evt_left_up {|event| on_left_button_event_up(event)}
37
+ evt_motion {|event| on_left_button_event_motion(event)}
38
+ evt_paint { on_paint }
39
+ #evt_mousewheel {|event| on_wheel(event)}
40
+ end
41
+
42
+ def on_paint
43
+ paint { | dc | do_drawing(dc) }
44
+ end
45
+
46
+ def do_drawing(dc, printing=false)
47
+ # Reset the origin co-ordinates of the DC to reflect current scrolling
48
+ do_prepare_dc(dc)
49
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
50
+ dc.draw_rectangle(5,5,50,50)
51
+
52
+ dc.set_brush(Wx::LIGHT_GREY_BRUSH)
53
+ dc.set_pen(Wx::Pen.new("BLUE", 4, Wx::SOLID))
54
+ dc.draw_rectangle(15,15,50,50)
55
+
56
+ dc.set_font(Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL))
57
+ dc.set_text_foreground(Wx::Colour.new(0xFF, 0x20, 0xFF))
58
+ te = dc.get_text_extent("Hello World")
59
+ dc.draw_text("Hello World", 60, 65)
60
+
61
+ dc.set_pen(Wx::Pen.new("VIOLET", 4, Wx::SOLID))
62
+ dc.draw_line(5, 65+te[1], 60 + te[0], 65 + te[1])
63
+
64
+ lst = [Wx::Point.new(100,110), Wx::Point.new(150, 110), Wx::Point.new(150, 160), Wx::Point.new(100, 160)]
65
+ dc.draw_lines(lst, -60)
66
+ dc.set_pen(Wx::GREY_PEN)
67
+ dc.draw_polygon(lst, 75)
68
+ dc.set_pen(Wx::GREEN_PEN)
69
+ dc.draw_spline(lst << Wx::Point.new(100,100))
70
+
71
+ dc.draw_bitmap(@bmp, 200, 20, true)
72
+ dc.set_text_foreground(Wx::Colour.new(0, 0xFF, 0x80))
73
+ dc.draw_text("a bitmap", 200,85)
74
+
75
+ font = Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
76
+ dc.set_font(font)
77
+ dc.set_text_foreground(Wx::BLACK)
78
+ 0.step(360, 45) {|number| dc.draw_rotated_text("Rotated text...", 300, 300, number)}
79
+
80
+ dc.set_pen(Wx::TRANSPARENT_PEN)
81
+ dc.set_brush(Wx::BLUE_BRUSH)
82
+ dc.draw_rectangle(50, 500, 50, 50)
83
+ dc.draw_rectangle(100, 500, 50, 50)
84
+
85
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
86
+ dc.draw_elliptic_arc(200, 500, 50, 75, 0, 90)
87
+
88
+ if not printing
89
+ # This has troubles when used on a print preview in wxGTK,
90
+ # probably something to do with the pen styles and the scaling
91
+ # it does...
92
+ y = 20
93
+ [Wx::DOT, Wx::LONG_DASH, Wx::SHORT_DASH, Wx::DOT_DASH, Wx::USER_DASH].each do |style|
94
+ pen = Wx::Pen.new("DARK ORCHID", 1, style)
95
+ if style == Wx::USER_DASH
96
+ pen.set_cap(Wx::CAP_BUTT)
97
+ pen.set_dashes([1,2])
98
+ pen.set_colour("RED")
99
+ end
100
+ dc.set_pen(pen)
101
+ dc.draw_line(300, y, 400, y)
102
+ y += 10
103
+ end
104
+ end
105
+ dc.set_brush(Wx::TRANSPARENT_BRUSH)
106
+ dc.set_pen(Wx::Pen.new(Wx::Colour.new(0xFF, 0x20, 0xFF), 1, Wx::SOLID))
107
+ dc.draw_rectangle(450, 50, 100, 100)
108
+ old_pen = dc.get_pen()
109
+ new_pen = Wx::Pen.new("BLACK", 5, Wx::SOLID)
110
+ dc.set_pen(new_pen)
111
+ dc.draw_rectangle(470, 70, 60, 60)
112
+ dc.set_pen(old_pen)
113
+ dc.draw_rectangle(490, 90, 20, 20)
114
+
115
+ draw_saved_lines(dc)
116
+ end
117
+
118
+ def draw_saved_lines(dc)
119
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
120
+ @lines.each do |line|
121
+ line.each do |coords|
122
+ coords.flatten!()
123
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3])
124
+ end
125
+ end
126
+ end
127
+
128
+ def set_XY(event)
129
+ @x, @y = convert_event_coords(event)
130
+ end
131
+
132
+ def convert_event_coords(event)
133
+ xView, yView = get_view_start()
134
+ xDelta, yDelta = get_scroll_pixels_per_unit()
135
+ return event.get_x() + (xView * xDelta), event.get_y() + (yView * yDelta)
136
+ end
137
+
138
+ def on_left_button_event_down(event)
139
+ if event.left_is_down() and !@drawing
140
+ set_focus()
141
+ set_XY(event)
142
+ @curLine = []
143
+ capture_mouse()
144
+ @drawing = true
145
+ end
146
+ end
147
+
148
+ def on_left_button_event_up(event)
149
+ if !event.left_is_down() and @drawing
150
+ @lines.push(@curLine)
151
+ @curLine = []
152
+ release_mouse()
153
+ @drawing = false
154
+ end
155
+ end
156
+
157
+ def on_left_button_event_motion(event)
158
+ if event.left_is_down() and @drawing
159
+ # if $BUFFERED
160
+ # # If doing buffered drawing, create the buffered DC, giving it
161
+ # # it a real DC to blit to when done.
162
+ # cdc = Wx::ClientDC.new(self)
163
+ # dc = Wx::BufferedDC.new(cdc, @buffer)
164
+ # else
165
+ # dc = Wx::ClientDC.new(self)
166
+ # end
167
+
168
+ paint do | dc |
169
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
170
+ coords = [@x, @y] + convert_event_coords(event)
171
+ @curLine.push(coords)
172
+ coords.flatten!()
173
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3])
174
+ set_XY(event)
175
+ end
176
+ end
177
+ end
178
+
179
+ end
180
+
181
+ module Demo
182
+ def Demo.run(frame, nb, log)
183
+ win = MyCanvas.new(nb, log)
184
+ return win
185
+ end
186
+
187
+ def Demo.overview
188
+ return "The wxScrolledWindow class manages scrolling for its client area, transforming the coordinates according to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view."
189
+ end
190
+ end
191
+
192
+ if __FILE__ == $0
193
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
194
+ load run_solo_lib
195
+ run File.basename($0)
196
+ end
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'wx'
5
+ rescue LoadError => no_wx_err
6
+ begin
7
+ require 'rubygems'
8
+ require 'wx'
9
+ rescue LoadError
10
+ raise no_wx_err
11
+ end
12
+ end
13
+
14
+ module Demo
15
+ def Demo.run(frame, nb, log)
16
+ dlg = Wx::SingleChoiceDialog.new(frame, "Test Single Choice", "The Caption",
17
+ %w(zero one two three four five six seven eight))
18
+ #Wx::CHOICEDLG_STYLE)
19
+ if dlg.show_modal() == Wx::ID_OK
20
+ log.write_text("You selected: " + dlg.get_string_selection() + "\n")
21
+ end
22
+ dlg.destroy()
23
+ return nil
24
+ end
25
+
26
+ def Demo.overview
27
+ return "This class represents a dialog that shows a list of strings, and allows the user to select one. Double-clicking on a list item is equivalent to single-clicking and then pressing OK."
28
+ end
29
+ end
30
+
31
+ if __FILE__ == $0
32
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
33
+ load run_solo_lib
34
+ run File.basename($0)
35
+ end