wxruby 1.9.1-powerpc-darwin8.3.0

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 (204) hide show
  1. data/lib/wx.rb +42 -0
  2. data/lib/wx/accessors.rb +52 -0
  3. data/lib/wx/classes/app.rb +25 -0
  4. data/lib/wx/classes/artprovider.rb +31 -0
  5. data/lib/wx/classes/bitmap.rb +23 -0
  6. data/lib/wx/classes/choice.rb +4 -0
  7. data/lib/wx/classes/clientdc.rb +13 -0
  8. data/lib/wx/classes/colour.rb +47 -0
  9. data/lib/wx/classes/combobox.rb +4 -0
  10. data/lib/wx/classes/evthandler.rb +828 -0
  11. data/lib/wx/classes/font.rb +118 -0
  12. data/lib/wx/classes/grid.rb +130 -0
  13. data/lib/wx/classes/helpcontroller.rb +5 -0
  14. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  15. data/lib/wx/classes/htmlwindow.rb +6 -0
  16. data/lib/wx/classes/icon.rb +14 -0
  17. data/lib/wx/classes/image.rb +14 -0
  18. data/lib/wx/classes/listbox.rb +4 -0
  19. data/lib/wx/classes/locale.rb +28 -0
  20. data/lib/wx/classes/object.rb +7 -0
  21. data/lib/wx/classes/paintdc.rb +12 -0
  22. data/lib/wx/classes/point.rb +48 -0
  23. data/lib/wx/classes/previewframe.rb +13 -0
  24. data/lib/wx/classes/rect.rb +5 -0
  25. data/lib/wx/classes/size.rb +49 -0
  26. data/lib/wx/classes/styledtextctrl.rb +92 -0
  27. data/lib/wx/classes/textctrl.rb +14 -0
  28. data/lib/wx/classes/texturlevent.rb +6 -0
  29. data/lib/wx/classes/timer.rb +69 -0
  30. data/lib/wx/classes/window.rb +42 -0
  31. data/lib/wx/classes/xmlresource.rb +16 -0
  32. data/lib/wx/keyword_ctors.rb +219 -0
  33. data/lib/wx/keyword_defs.rb +455 -0
  34. data/lib/wx/version.rb +3 -0
  35. data/lib/wxruby2.bundle +0 -0
  36. data/samples/SAMPLES-LICENSE.TXT +18 -0
  37. data/samples/aui/aui.rb +1353 -0
  38. data/samples/bigdemo/About.rbw +39 -0
  39. data/samples/bigdemo/ColorPanel.rbw +25 -0
  40. data/samples/bigdemo/GridSimple.rbw +80 -0
  41. data/samples/bigdemo/MDIDemo.rbw +59 -0
  42. data/samples/bigdemo/PopupMenu.rbw +151 -0
  43. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  44. data/samples/bigdemo/Sizers.rbw +545 -0
  45. data/samples/bigdemo/bigdemo.rb +826 -0
  46. data/samples/bigdemo/demoTemplate.rbw +37 -0
  47. data/samples/bigdemo/helpfile.htb +0 -0
  48. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  49. data/samples/bigdemo/icons/Test 015.png +0 -0
  50. data/samples/bigdemo/icons/choice.bmp +0 -0
  51. data/samples/bigdemo/icons/choice.xpm +27 -0
  52. data/samples/bigdemo/icons/combo.bmp +0 -0
  53. data/samples/bigdemo/icons/combo.xpm +27 -0
  54. data/samples/bigdemo/icons/copy.xpm +25 -0
  55. data/samples/bigdemo/icons/cut.xpm +24 -0
  56. data/samples/bigdemo/icons/gauge.bmp +0 -0
  57. data/samples/bigdemo/icons/gauge.xpm +27 -0
  58. data/samples/bigdemo/icons/help.xpm +25 -0
  59. data/samples/bigdemo/icons/list.bmp +0 -0
  60. data/samples/bigdemo/icons/list.xpm +27 -0
  61. data/samples/bigdemo/icons/mondrian.ico +0 -0
  62. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  63. data/samples/bigdemo/icons/new.xpm +24 -0
  64. data/samples/bigdemo/icons/ogl.ico +0 -0
  65. data/samples/bigdemo/icons/ogl.xpm +45 -0
  66. data/samples/bigdemo/icons/open.xpm +26 -0
  67. data/samples/bigdemo/icons/paste.bmp +0 -0
  68. data/samples/bigdemo/icons/paste.xpm +38 -0
  69. data/samples/bigdemo/icons/pointy.png +0 -0
  70. data/samples/bigdemo/icons/preview.xpm +26 -0
  71. data/samples/bigdemo/icons/print.xpm +26 -0
  72. data/samples/bigdemo/icons/radio.bmp +0 -0
  73. data/samples/bigdemo/icons/radio.xpm +27 -0
  74. data/samples/bigdemo/icons/robert.xpm +415 -0
  75. data/samples/bigdemo/icons/ruby.png +0 -0
  76. data/samples/bigdemo/icons/sashtest.ico +0 -0
  77. data/samples/bigdemo/icons/save.xpm +25 -0
  78. data/samples/bigdemo/icons/smiles.bmp +0 -0
  79. data/samples/bigdemo/icons/smiles.xpm +39 -0
  80. data/samples/bigdemo/icons/smiley.ico +0 -0
  81. data/samples/bigdemo/icons/smiley.xpm +42 -0
  82. data/samples/bigdemo/icons/stattext.xpm +24 -0
  83. data/samples/bigdemo/icons/test2.bmp +0 -0
  84. data/samples/bigdemo/icons/test2.png +0 -0
  85. data/samples/bigdemo/icons/test2.xpm +79 -0
  86. data/samples/bigdemo/icons/text.bmp +0 -0
  87. data/samples/bigdemo/icons/text.xpm +27 -0
  88. data/samples/bigdemo/icons/tog1.bmp +0 -0
  89. data/samples/bigdemo/icons/tog1.xpm +38 -0
  90. data/samples/bigdemo/icons/tog2.bmp +0 -0
  91. data/samples/bigdemo/icons/tog2.xpm +38 -0
  92. data/samples/bigdemo/icons/wxwin.ico +0 -0
  93. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  94. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  95. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  96. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  97. data/samples/bigdemo/run.rb +94 -0
  98. data/samples/bigdemo/tips.txt +7 -0
  99. data/samples/bigdemo/utils.rb +12 -0
  100. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  101. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  102. data/samples/bigdemo/wxButton.rbw +66 -0
  103. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  104. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  105. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  106. data/samples/bigdemo/wxChoice.rbw +49 -0
  107. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  108. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  109. data/samples/bigdemo/wxComboBox.rbw +79 -0
  110. data/samples/bigdemo/wxCursor.rbw +140 -0
  111. data/samples/bigdemo/wxDialog.rbw +92 -0
  112. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  113. data/samples/bigdemo/wxDragImage.rbw +74 -0
  114. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  115. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  116. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  117. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  118. data/samples/bigdemo/wxFrame.rbw +55 -0
  119. data/samples/bigdemo/wxGauge.rbw +73 -0
  120. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  121. data/samples/bigdemo/wxGrid.rbw +68 -0
  122. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  123. data/samples/bigdemo/wxListBox.rbw +142 -0
  124. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  125. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  126. data/samples/bigdemo/wxMenu.rbw +238 -0
  127. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  128. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  129. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  130. data/samples/bigdemo/wxNotebook.rbw +138 -0
  131. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  132. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  133. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  134. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  135. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  136. data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
  137. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  138. data/samples/bigdemo/wxSlider.rbw +44 -0
  139. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  140. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  141. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  142. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  143. data/samples/bigdemo/wxStaticText.rbw +57 -0
  144. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  145. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  146. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  147. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  148. data/samples/bigdemo/wxToolBar.rbw +133 -0
  149. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  150. data/samples/calendar/calendar.rb +275 -0
  151. data/samples/caret/caret.rb +296 -0
  152. data/samples/caret/mondrian.xpm +44 -0
  153. data/samples/controls/controls.rb +1140 -0
  154. data/samples/controls/get_item_sample.rb +87 -0
  155. data/samples/controls/icons/choice.xpm +27 -0
  156. data/samples/controls/icons/combo.xpm +27 -0
  157. data/samples/controls/icons/gauge.xpm +27 -0
  158. data/samples/controls/icons/list.xpm +27 -0
  159. data/samples/controls/icons/radio.xpm +27 -0
  160. data/samples/controls/icons/stattext.xpm +24 -0
  161. data/samples/controls/icons/text.xpm +27 -0
  162. data/samples/controls/mondrian.ico +0 -0
  163. data/samples/controls/mondrian.xpm +44 -0
  164. data/samples/controls/test2.bmp +0 -0
  165. data/samples/dialogs/dialogs.rb +724 -0
  166. data/samples/dialogs/tips.txt +18 -0
  167. data/samples/etc/activation.rb +108 -0
  168. data/samples/etc/choice.rb +72 -0
  169. data/samples/etc/miniframe.rb +84 -0
  170. data/samples/etc/sash.rb +135 -0
  171. data/samples/etc/scrollwin.rb +116 -0
  172. data/samples/etc/system_settings.rb +258 -0
  173. data/samples/etc/wizard.rb +81 -0
  174. data/samples/event/event.rb +184 -0
  175. data/samples/grid/grid.rb +201 -0
  176. data/samples/html/html.rb +251 -0
  177. data/samples/images/Thumbs.db +0 -0
  178. data/samples/images/images.rb +48 -0
  179. data/samples/images/paperclip.png +0 -0
  180. data/samples/listbook/listbook.rb +183 -0
  181. data/samples/listbook/listbook.xrc +370 -0
  182. data/samples/mdi/mdi.rb +87 -0
  183. data/samples/minimal/minimal.rb +83 -0
  184. data/samples/minimal/mondrian.png +0 -0
  185. data/samples/minimal/nothing.rb +46 -0
  186. data/samples/minimal/text.rb +35 -0
  187. data/samples/printing/mondrian.ico +0 -0
  188. data/samples/printing/mondrian.xpm +44 -0
  189. data/samples/printing/printing.rb +484 -0
  190. data/samples/text/mondrian.ico +0 -0
  191. data/samples/text/mondrian.xpm +44 -0
  192. data/samples/text/scintilla.rb +174 -0
  193. data/samples/text/textctrl.rb +124 -0
  194. data/samples/text/unicode.rb +238 -0
  195. data/samples/text/utf8.txt +15 -0
  196. data/samples/treectrl/icon1.xpm +79 -0
  197. data/samples/treectrl/icon2.xpm +53 -0
  198. data/samples/treectrl/icon3.xpm +79 -0
  199. data/samples/treectrl/icon4.xpm +43 -0
  200. data/samples/treectrl/icon5.xpm +79 -0
  201. data/samples/treectrl/treectrl.rb +1210 -0
  202. data/samples/xrc/samples.xrc +46 -0
  203. data/samples/xrc/xrc_sample.rb +107 -0
  204. metadata +263 -0
@@ -0,0 +1,3 @@
1
+ module Wx
2
+ WXRUBY_VERSION = '1.9.1'
3
+ end
Binary file
@@ -0,0 +1,18 @@
1
+ wxRuby2 Sample Code
2
+ Copyright (c) 2004-2006 Kevin B. Smith
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software, to deal in the Software without restriction,
6
+ including without limitation the rights to use, copy, modify, merge,
7
+ publish, distribute, sublicense, and/or sell copies of any portion of
8
+ this Software, and to permit persons to whom the Software is furnished
9
+ to do so. This copyright notice need not be retained in any derived
10
+ work.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
15
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
16
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
17
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
18
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,1353 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2007 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
+ load 'wx'
11
+ rescue
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ # A resizable control that displays its current size, and, if an AUI
17
+ # arrangement, its position and layer
18
+ class SizeReportCtrl < Wx::Control
19
+ def initialize(parent, id, pos, size, mgr = nil)
20
+ super(parent, id, pos, size)
21
+ @mgr = mgr
22
+ evt_paint { on_paint }
23
+ evt_size { on_size }
24
+ end
25
+
26
+ def on_paint
27
+ paint do | dc |
28
+ size = get_client_size
29
+
30
+ dc.set_font Wx::NORMAL_FONT
31
+ dc.set_brush Wx::WHITE_BRUSH
32
+ dc.set_pen Wx::WHITE_PEN
33
+ dc.draw_rectangle(0, 0, size.x, size.y)
34
+ dc.set_pen Wx::LIGHT_GREY_PEN
35
+ dc.set_pen Wx::LIGHT_GREY_PEN
36
+ dc.draw_line(0, 0, size.x, size.y)
37
+ dc.draw_line(0, size.y, size.x, 0)
38
+
39
+ msg = "Size: %d x %d" % [ size.x, size.y ]
40
+ width, height = dc.get_text_extent(msg)
41
+ height += 3
42
+ dc.draw_text(msg,
43
+ (size.x - width) / 2,
44
+ (size.y - ( height * 5 ) ) / 2 )
45
+
46
+ if @mgr
47
+ pi = @mgr.get_pane(self)
48
+ msg = "Layer: %d" % pi.dock_layer
49
+ width, height = dc.get_text_extent(msg)
50
+ dc.draw_text(msg,
51
+ (size.x - width) / 2,
52
+ ( ( size.y - ( height * 5 ) ) / 2 ) + height )
53
+
54
+ msg = "Dock: %d Row: %d" % [ pi.dock_direction, pi.dock_row ]
55
+ width, height = dc.get_text_extent(msg)
56
+ dc.draw_text(msg,
57
+ (size.x - width) / 2,
58
+ ( ( size.y - ( height * 5 ) ) / 2) + ( height * 2 ) )
59
+
60
+ msg = "Position: %d" % pi.dock_pos
61
+ width, height = dc.get_text_extent(msg)
62
+ dc.draw_text(msg,
63
+ (size.x - width) / 2 ,
64
+ ( ( size.y - ( height * 5 ) ) / 2 ) + ( height * 3 ) )
65
+
66
+ msg = "Proportion: %d" % pi.dock_proportion
67
+ width, height = dc.get_text_extent(msg)
68
+ dc.draw_text(msg,
69
+ (size.x - width) / 2 ,
70
+ ( ( size.y - ( height * 5 ) ) / 2 ) + ( height * 4 ) )
71
+
72
+ end
73
+ end
74
+ end
75
+
76
+ def on_size
77
+ refresh
78
+ end
79
+ end
80
+
81
+ class SettingsPanel < Wx::Panel
82
+ consts = %w[
83
+ ID_PaneBorderSize
84
+ ID_SashSize
85
+ ID_CaptionSize
86
+ ID_BackgroundColour
87
+ ID_SashColour
88
+ ID_InactiveCaptionColour
89
+ ID_InactiveCaptionGradientColour
90
+ ID_InactiveCaptionTextColour
91
+ ID_ActiveCaptionColour
92
+ ID_ActiveCaptionGradientColour
93
+ ID_ActiveCaptionTextColour
94
+ ID_BorderColour
95
+ ID_GripperColour ]
96
+
97
+ consts.each_with_index do | c, i |
98
+ const_set(c, 1001 + i)
99
+ end
100
+
101
+ def initialize(parent, frame)
102
+ super(parent, Wx::ID_ANY)
103
+ @frame = frame
104
+ @base_bmp = create_colour_bitmap(Wx::BLACK)
105
+
106
+ # set up some spin ctrls for integer variables
107
+ @border_size, s1 = make_metric_spin_ctrl( ID_PaneBorderSize,
108
+ "Pane Border Size:",
109
+ Wx::AUI_DOCKART_PANE_BORDER_SIZE)
110
+
111
+ @sash_size, s2 = make_metric_spin_ctrl( ID_SashSize,
112
+ "Sash Size:",
113
+ Wx::AUI_DOCKART_SASH_SIZE)
114
+
115
+ @cap_size, s3 = make_metric_spin_ctrl( ID_CaptionSize,
116
+ "Caption Size:",
117
+ Wx::AUI_DOCKART_CAPTION_SIZE)
118
+
119
+ # colour controls
120
+ @bckg_colour, s4 = make_colour_button( ID_BackgroundColour,
121
+ "Background Colour:")
122
+ @sash_colour, s5 = make_colour_button( ID_SashColour,
123
+ "Sash Colour:")
124
+ @capt_colour, s6 = make_colour_button( ID_InactiveCaptionColour,
125
+ "Normal Caption:")
126
+ @capt_gradnt, s7 = make_colour_button( ID_InactiveCaptionGradientColour,
127
+ "Normal Caption Gradient:")
128
+ @capt_text, s8 = make_colour_button( ID_InactiveCaptionTextColour,
129
+ "Normal Caption Text:")
130
+ @acap_colour, s9 = make_colour_button( ID_ActiveCaptionColour,
131
+ "Active Caption:")
132
+ @acap_gradnt, s10 = make_colour_button( ID_ActiveCaptionGradientColour,
133
+ "Active Caption Gradient:")
134
+ @acap_text, s11 = make_colour_button( ID_ActiveCaptionTextColour,
135
+ "Active Caption Text:")
136
+ @brdr_colour, s12 = make_colour_button( ID_BorderColour,
137
+ "Border Colour:")
138
+ @grip_colour, s13 = make_colour_button( ID_GripperColour,
139
+ "Gripper Colour:")
140
+
141
+
142
+ grid_sizer = Wx::GridSizer.new(2)
143
+ grid_sizer.set_h_gap(5)
144
+
145
+ grid_sizer.add(s1); grid_sizer.add(s4)
146
+ grid_sizer.add(s2); grid_sizer.add(s5)
147
+ grid_sizer.add(s3); grid_sizer.add(s13)
148
+ grid_sizer.add(1,1); grid_sizer.add(s12)
149
+ grid_sizer.add(s6); grid_sizer.add(s9)
150
+ grid_sizer.add(s7); grid_sizer.add(s10)
151
+ grid_sizer.add(s8); grid_sizer.add(s11)
152
+
153
+ cont_sizer =Wx::BoxSizer.new(Wx::VERTICAL)
154
+ cont_sizer.add(grid_sizer, 1, Wx::EXPAND|Wx::ALL, 5)
155
+ self.set_sizer(cont_sizer)
156
+ get_sizer.set_size_hints(self)
157
+ update_colours
158
+
159
+ evt_spinctrl(ID_PaneBorderSize) { | e | on_pane_border_size(e) }
160
+ evt_spinctrl(ID_SashSize) { | e | on_sash_size(e) }
161
+ evt_spinctrl(ID_CaptionSize) { | e | on_caption_size(e) }
162
+ evt_button(ID_BackgroundColour) { | e | on_set_colour(e) }
163
+ evt_button(ID_SashColour) { | e | on_set_colour(e) }
164
+ evt_button(ID_InactiveCaptionColour) { | e | on_set_colour(e) }
165
+ evt_button(ID_InactiveCaptionGradientColour) { | e | on_set_colour(e) }
166
+ evt_button(ID_InactiveCaptionTextColour) { | e | on_set_colour(e) }
167
+ evt_button(ID_ActiveCaptionColour) { | e | on_set_colour(e) }
168
+ evt_button(ID_ActiveCaptionGradientColour) { | e | on_set_colour(e) }
169
+ evt_button(ID_ActiveCaptionTextColour) { | e | on_set_colour(e) }
170
+ evt_button(ID_BorderColour) { | e | on_set_colour(e) }
171
+ evt_button(ID_GripperColour) { | e | on_set_colour(e) }
172
+ end
173
+
174
+
175
+ def update_colours()
176
+ art = @frame.get_dock_art
177
+
178
+ col = art.get_color(Wx::AUI_DOCKART_BACKGROUND_COLOUR)
179
+ @bckg_colour.set_bitmap_label( create_colour_bitmap(col) )
180
+
181
+ col = art.get_color(Wx::AUI_DOCKART_SASH_COLOUR)
182
+ @sash_colour.set_bitmap_label( create_colour_bitmap(col) )
183
+
184
+ col = art.get_color(Wx::AUI_DOCKART_INACTIVE_CAPTION_COLOUR)
185
+ @capt_colour.set_bitmap_label( create_colour_bitmap(col) )
186
+
187
+ col = art.get_color(Wx::AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR)
188
+ @capt_gradnt.set_bitmap_label( create_colour_bitmap(col) )
189
+
190
+ col = art.get_color(Wx::AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR)
191
+ @capt_text.set_bitmap_label( create_colour_bitmap(col) )
192
+
193
+ col = art.get_color(Wx::AUI_DOCKART_ACTIVE_CAPTION_COLOUR)
194
+ @acap_colour.set_bitmap_label( create_colour_bitmap(col) )
195
+
196
+ col = art.get_color(Wx::AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR)
197
+ @acap_gradnt.set_bitmap_label( create_colour_bitmap(col) )
198
+
199
+ col = art.get_color(Wx::AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR)
200
+ @acap_text.set_bitmap_label( create_colour_bitmap(col) )
201
+
202
+ col = art.get_color(Wx::AUI_DOCKART_SASH_COLOUR)
203
+ @brdr_colour.set_bitmap_label( create_colour_bitmap(col) )
204
+
205
+ col = art.get_color(Wx::AUI_DOCKART_GRIPPER_COLOUR)
206
+ @grip_colour.set_bitmap_label( create_colour_bitmap(col) )
207
+ end
208
+
209
+ def on_pane_border_size(event)
210
+ @frame.get_dock_art.set_metric( Wx::AUI_DOCKART_PANE_BORDER_SIZE,
211
+ event.get_position )
212
+ @frame.do_update
213
+ end
214
+
215
+ def on_sash_size(event)
216
+ @frame.get_dock_art.set_metric( Wx::AUI_DOCKART_SASH_SIZE,
217
+ event.get_position )
218
+ @frame.do_update
219
+ end
220
+
221
+ def on_caption_size(event)
222
+ @frame.get_dock_art.set_metric( Wx::AUI_DOCKART_CAPTION_SIZE,
223
+ event.get_position )
224
+ @frame.do_update
225
+ end
226
+
227
+ def on_set_colour(event)
228
+ dlg = Wx::ColourDialog.new(@frame)
229
+ dlg.set_title("Colour Picker")
230
+
231
+ return unless dlg.show_modal == Wx::ID_OK
232
+
233
+ var = nil
234
+ case event.get_id()
235
+ when ID_BackgroundColour
236
+ var = Wx::AUI_DOCKART_BACKGROUND_COLOUR
237
+ when ID_SashColour
238
+ var = Wx::AUI_DOCKART_SASH_COLOUR
239
+ when ID_InactiveCaptionColour
240
+ var = Wx::AUI_DOCKART_INACTIVE_CAPTION_COLOUR
241
+ when ID_InactiveCaptionGradientColour
242
+ var = Wx::AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR
243
+ when ID_InactiveCaptionTextColour
244
+ var = Wx::AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR
245
+ when ID_ActiveCaptionColour
246
+ var = Wx::AUI_DOCKART_ACTIVE_CAPTION_COLOUR
247
+ when ID_ActiveCaptionGradientColour
248
+ var = Wx::AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR
249
+ when ID_ActiveCaptionTextColour
250
+ var = Wx::AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR
251
+ when ID_BorderColour
252
+ var = Wx::AUI_DOCKART_BORDER_COLOUR
253
+ when ID_GripperColour
254
+ var = Wx::AUI_DOCKART_GRIPPER_COLOUR
255
+ else
256
+ return
257
+ end
258
+
259
+ @frame.get_dock_art.set_colour(var, dlg.get_colour_data.get_colour )
260
+ @frame.do_update
261
+ update_colours
262
+ end
263
+
264
+ private
265
+ def make_metric_spin_ctrl(an_id, caption, metric)
266
+ metric_val = @frame.get_dock_art.get_metric(metric)
267
+ sp = Wx::SpinCtrl.new( self, an_id, metric_val.to_s,
268
+ Wx::DEFAULT_POSITION,
269
+ Wx::Size.new(50, 20),
270
+ Wx::SP_ARROW_KEYS,
271
+ 0, 100, metric_val)
272
+
273
+ sz = Wx::BoxSizer.new(Wx::HORIZONTAL)
274
+ sz.add(1, 1, 1, Wx::EXPAND)
275
+ sz.add( Wx::StaticText.new(self, Wx::ID_ANY, caption) )
276
+ sz.add(sp)
277
+ sz.add(1, 1, 1, Wx::EXPAND)
278
+ sz.set_item_min_size(1, 180, 20)
279
+ return sp, sz
280
+ end
281
+
282
+ # utility to make a little captioned button;
283
+ # returns the button and a sizer containing the button and caption
284
+ def make_colour_button(an_id, caption)
285
+ bmp_butt = Wx::BitmapButton.new( self, an_id, @base_bmp,
286
+ Wx::DEFAULT_POSITION,
287
+ Wx::Size.new(50, 25) )
288
+
289
+ sz = Wx::BoxSizer.new(Wx::HORIZONTAL)
290
+ sz.add(1, 1, 1, Wx::EXPAND)
291
+ sz.add( Wx::StaticText.new(self, Wx::ID_ANY, caption) )
292
+ sz.add(bmp_butt)
293
+ sz.add(1, 1, 1, Wx::EXPAND)
294
+ sz.set_item_min_size(1, 180, 20)
295
+ return bmp_butt, sz
296
+ end
297
+
298
+ # returns a 25 x 14 image with solid colour +colour+, with a 1-pixel
299
+ # black border
300
+ def create_colour_bitmap(colour)
301
+ img = Wx::Image.new(25, 14)
302
+ 0.upto(24) do | x |
303
+ 0.upto(13) do | y |
304
+ if (x == 0 || x == 24 || y == 0 || y == 13)
305
+ pixcol = Wx::BLACK
306
+ else
307
+ pixcol = colour
308
+ end
309
+ img.set_rgb(x, y, pixcol.red, pixcol.green, pixcol.blue)
310
+ end
311
+ end
312
+ return Wx::Bitmap.new(img)
313
+ end
314
+ end
315
+
316
+
317
+ class AuiFrame < Wx::Frame
318
+ consts = %w[
319
+ ID_CreateTree
320
+ ID_CreateGrid
321
+ ID_CreateText
322
+ ID_CreateHTML
323
+ ID_CreateNotebook
324
+ ID_CreateSizeReport
325
+ ID_GridContent
326
+ ID_TextContent
327
+ ID_TreeContent
328
+ ID_HTMLContent
329
+ ID_NotebookContent
330
+ ID_SizeReportContent
331
+ ID_CreatePerspective
332
+ ID_CopyPerspectiveCode
333
+ ID_AllowFloating
334
+ ID_AllowActivePane
335
+ ID_TransparentHint
336
+ ID_VenetianBlindsHint
337
+ ID_RectangleHint
338
+ ID_NoHint
339
+ ID_HintFade
340
+ ID_NoVenetianFade
341
+ ID_TransparentDrag
342
+ ID_NoGradient
343
+ ID_VerticalGradient
344
+ ID_HorizontalGradient
345
+ ID_Settings
346
+ ID_NotebookNoCloseButton
347
+ ID_NotebookCloseButton
348
+ ID_NotebookCloseButtonAll
349
+ ID_NotebookCloseButtonActive
350
+ ID_NotebookAllowTabMove
351
+ ID_NotebookAllowTabExternalMove
352
+ ID_NotebookAllowTabSplit
353
+ ID_NotebookWindowList
354
+ ID_NotebookScrollButtons
355
+ ID_NotebookTabFixedWidth
356
+ ID_NotebookArtGloss
357
+ ID_NotebookArtSimple ]
358
+
359
+ consts.each_with_index do | c, i |
360
+ const_set(c, 2000 + i)
361
+ end
362
+ ID_FirstPerspective = ID_CreatePerspective + 1000
363
+
364
+ def initialize(*args)
365
+ super
366
+ @mgr = Wx::AuiManager.new
367
+ @mgr.set_managed_window(self)
368
+ @perspectives = []
369
+
370
+ # set up default notebook style
371
+ @notebook_style = Wx::AUI_NB_DEFAULT_STYLE|
372
+ Wx::AUI_NB_TAB_EXTERNAL_MOVE|Wx::NO_BORDER
373
+ @notebook_theme = 0
374
+ setup_menu
375
+ create_status_bar
376
+ get_status_bar.set_status_text("Ready")
377
+ set_min_size( Wx::Size.new(400,300) )
378
+ setup_toolbars
379
+ setup_panes
380
+ setup_perspectives
381
+ setup_events
382
+ @mgr.update
383
+ end
384
+
385
+ #
386
+ def setup_menu
387
+ mb = Wx::MenuBar.new
388
+
389
+ file_menu = Wx::Menu.new
390
+ file_menu.append(Wx::ID_EXIT, "Exit")
391
+
392
+ view_menu = Wx::Menu.new
393
+ view_menu.append(ID_CreateText, "Create Text Control")
394
+ view_menu.append(ID_CreateHTML, "Create HTML Control")
395
+ view_menu.append(ID_CreateTree, "Create Tree")
396
+ view_menu.append(ID_CreateGrid, "Create Grid")
397
+ view_menu.append(ID_CreateNotebook, "Create Notebook")
398
+ view_menu.append(ID_CreateSizeReport, "Create Size Reporter")
399
+ view_menu.append_separator
400
+
401
+ view_menu.append( ID_GridContent,
402
+ "Use a Grid for the Content Pane")
403
+ view_menu.append( ID_TextContent,
404
+ "Use a Text Control for the Content Pane")
405
+ view_menu.append( ID_HTMLContent,
406
+ "Use an HTML Control for the Content Pane")
407
+ view_menu.append( ID_TreeContent,
408
+ "Use a Tree Control for the Content Pane")
409
+ view_menu.append( ID_NotebookContent,
410
+ "Use a wxAuiNotebook control for the Content Pane")
411
+ view_menu.append(ID_SizeReportContent,
412
+ "Use a Size Reporter for the Content Pane")
413
+
414
+ options_menu = Wx::Menu.new
415
+ # Hints
416
+ options_menu.append_radio_item( ID_TransparentHint,
417
+ "Transparent Hint")
418
+ options_menu.append_radio_item( ID_VenetianBlindsHint,
419
+ "Venetian Blinds Hint")
420
+ options_menu.append_radio_item( ID_RectangleHint,
421
+ "Rectangle Hint")
422
+ options_menu.append_radio_item( ID_NoHint,
423
+ "No Hint")
424
+
425
+ options_menu.append_separator
426
+ # Hints Options
427
+ options_menu.append_check_item( ID_HintFade,
428
+ "Hint Fade-in")
429
+ options_menu.append_check_item( ID_AllowFloating,
430
+ "Allow Floating")
431
+ options_menu.append_check_item( ID_NoVenetianFade,
432
+ "Disable Venetian Blinds Hint Fade-in")
433
+ options_menu.append_check_item( ID_TransparentDrag,
434
+ "Transparent Drag")
435
+ options_menu.append_check_item( ID_AllowActivePane,
436
+ "Allow Active Pane")
437
+ options_menu.append_separator
438
+ options_menu.append_radio_item( ID_NoGradient,
439
+ "No Caption Gradient")
440
+ options_menu.append_radio_item( ID_VerticalGradient,
441
+ "Vertical Caption Gradient")
442
+ options_menu.append_radio_item( ID_HorizontalGradient,
443
+ "Horizontal Caption Gradient")
444
+ options_menu.append_separator
445
+ options_menu.append(ID_Settings, "Settings Pane")
446
+
447
+ notebook_menu = Wx::Menu.new
448
+ notebook_menu.append_radio_item( ID_NotebookArtGloss,
449
+ "Glossy Theme (Default)")
450
+ notebook_menu.append_radio_item( ID_NotebookArtSimple,
451
+ "Simple Theme")
452
+
453
+ notebook_menu.append_separator
454
+
455
+ notebook_menu.append_radio_item( ID_NotebookNoCloseButton,
456
+ "No Close Button")
457
+ notebook_menu.append_radio_item( ID_NotebookCloseButton,
458
+ "Close Button at Right")
459
+ notebook_menu.append_radio_item( ID_NotebookCloseButtonAll,
460
+ "Close Button on All Tabs")
461
+ notebook_menu.append_radio_item( ID_NotebookCloseButtonActive,
462
+ "Close Button on Active Tab")
463
+
464
+ notebook_menu.append_separator
465
+ notebook_menu.append_check_item( ID_NotebookAllowTabMove,
466
+ "Allow Tab Move")
467
+ notebook_menu.append_check_item( ID_NotebookAllowTabExternalMove,
468
+ "Allow External Tab Move")
469
+ notebook_menu.append_check_item( ID_NotebookAllowTabSplit,
470
+ "Allow Notebook Split")
471
+ notebook_menu.append_check_item( ID_NotebookScrollButtons,
472
+ "Scroll Buttons Visible")
473
+ notebook_menu.append_check_item( ID_NotebookWindowList,
474
+ "Window List Button Visible")
475
+ notebook_menu.append_check_item( ID_NotebookTabFixedWidth,
476
+ "Fixed-width Tabs")
477
+
478
+ @perspectives_menu = Wx::Menu.new
479
+ @perspectives_menu.append( ID_CreatePerspective,
480
+ "Create Perspective")
481
+ @perspectives_menu.append( ID_CopyPerspectiveCode,
482
+ "Copy Perspective Data To Clipboard")
483
+ @perspectives_menu.append_separator
484
+ @perspectives_menu.append( ID_FirstPerspective + 0, "Default Startup")
485
+ @perspectives_menu.append( ID_FirstPerspective + 1, "All Panes")
486
+
487
+ help_menu = Wx::Menu.new
488
+ help_menu.append(Wx::ID_ABOUT, "About...")
489
+
490
+ mb.append(file_menu, "File")
491
+ mb.append(view_menu, "View")
492
+ mb.append(@perspectives_menu, "Perspectives")
493
+ mb.append(options_menu, "Options")
494
+ mb.append(notebook_menu, "Notebook")
495
+ mb.append(help_menu, "Help")
496
+
497
+ set_menu_bar(mb)
498
+ end
499
+
500
+ def setup_events
501
+ evt_erase_background { | e | on_erase_background(e) }
502
+ evt_size{ | e | on_size(e) }
503
+
504
+ evt_menu(ID_CreateTree) { | e | on_create_tree }
505
+ evt_menu(ID_CreateGrid) { | e | on_create_grid }
506
+ evt_menu(ID_CreateText) { | e | on_create_text }
507
+ evt_menu(ID_CreateHTML) { | e | on_create_html }
508
+ evt_menu(ID_CreateSizeReport) { | e | on_create_size_report }
509
+ evt_menu(ID_CreateNotebook) { | e | on_create_notebook }
510
+ evt_menu(ID_CreatePerspective) { | e | on_create_perspective }
511
+ evt_menu(ID_CopyPerspectiveCode) { | e | on_copy_perspective_code}
512
+ evt_menu(ID_AllowFloating) { | e | on_manager_flag(e) }
513
+ evt_menu(ID_TransparentHint) { | e | on_manager_flag(e) }
514
+ evt_menu(ID_VenetianBlindsHint) { | e | on_manager_flag(e) }
515
+ evt_menu(ID_RectangleHint) { | e | on_manager_flag(e) }
516
+ evt_menu(ID_NoHint) { | e | on_manager_flag(e) }
517
+ evt_menu(ID_HintFade) { | e | on_manager_flag(e) }
518
+ evt_menu(ID_NoVenetianFade) { | e | on_manager_flag(e) }
519
+ evt_menu(ID_TransparentDrag) { | e | on_manager_flag(e) }
520
+ evt_menu(ID_AllowActivePane) { | e | on_manager_flag(e) }
521
+ evt_menu(ID_NotebookTabFixedWidth) { | e | on_notebook_flag(e) }
522
+ evt_menu(ID_NotebookNoCloseButton) { | e | on_notebook_flag(e) }
523
+ evt_menu(ID_NotebookCloseButton) { | e | on_notebook_flag(e) }
524
+ evt_menu(ID_NotebookCloseButtonAll) { | e | on_notebook_flag(e) }
525
+ evt_menu(ID_NotebookCloseButtonActive) { | e | on_notebook_flag(e) }
526
+ evt_menu(ID_NotebookAllowTabMove) { | e | on_notebook_flag(e) }
527
+ evt_menu(ID_NotebookAllowTabExternalMove) { | e | on_notebook_flag(e) }
528
+ evt_menu(ID_NotebookAllowTabSplit) { | e | on_notebook_flag(e) }
529
+ evt_menu(ID_NotebookScrollButtons) { | e | on_notebook_flag(e) }
530
+ evt_menu(ID_NotebookWindowList) { | e | on_notebook_flag(e) }
531
+ evt_menu(ID_NotebookArtGloss) { | e | on_notebook_flag(e) }
532
+ evt_menu(ID_NotebookArtSimple) { | e | on_notebook_flag(e) }
533
+ evt_menu(ID_NoGradient) { | e | on_gradient(e) }
534
+ evt_menu(ID_VerticalGradient) { | e | on_gradient(e) }
535
+ evt_menu(ID_HorizontalGradient) { | e | on_gradient(e) }
536
+ evt_menu(ID_Settings) { on_settings }
537
+ evt_menu(ID_GridContent) { | e | on_change_content_pane(e) }
538
+ evt_menu(ID_TreeContent) { | e | on_change_content_pane(e) }
539
+ evt_menu(ID_TextContent) { | e | on_change_content_pane(e) }
540
+ evt_menu(ID_SizeReportContent) { | e | on_change_content_pane(e) }
541
+ evt_menu(ID_HTMLContent) { | e | on_change_content_pane(e) }
542
+ evt_menu(ID_NotebookContent) { | e | on_change_content_pane(e) }
543
+ evt_menu(Wx::ID_EXIT) { | e | on_exit }
544
+ evt_menu(Wx::ID_ABOUT) { | e | on_about }
545
+ evt_update_ui(ID_NotebookTabFixedWidth) { | e | on_update_ui(e) }
546
+ evt_update_ui(ID_NotebookNoCloseButton) { | e | on_update_ui(e) }
547
+ evt_update_ui(ID_NotebookCloseButton) { | e | on_update_ui(e) }
548
+ evt_update_ui(ID_NotebookCloseButtonAll) { | e | on_update_ui(e) }
549
+ evt_update_ui(ID_NotebookCloseButtonActive) { | e | on_update_ui(e) }
550
+ evt_update_ui(ID_NotebookAllowTabMove) { | e | on_update_ui(e) }
551
+ evt_update_ui(ID_NotebookAllowTabExternalMove) { | e | on_update_ui(e) }
552
+ evt_update_ui(ID_NotebookAllowTabSplit) { | e | on_update_ui(e) }
553
+ evt_update_ui(ID_NotebookScrollButtons) { | e | on_update_ui(e) }
554
+ evt_update_ui(ID_NotebookWindowList) { | e | on_update_ui(e) }
555
+ evt_update_ui(ID_AllowFloating) { | e | on_update_ui(e) }
556
+ evt_update_ui(ID_TransparentHint) { | e | on_update_ui(e) }
557
+ evt_update_ui(ID_VenetianBlindsHint) { | e | on_update_ui(e) }
558
+ evt_update_ui(ID_RectangleHint) { | e | on_update_ui(e) }
559
+ evt_update_ui(ID_NoHint) { | e | on_update_ui(e) }
560
+ evt_update_ui(ID_HintFade) { | e | on_update_ui(e) }
561
+ evt_update_ui(ID_NoVenetianFade) { | e | on_update_ui(e) }
562
+ evt_update_ui(ID_TransparentDrag) { | e | on_update_ui(e) }
563
+ evt_update_ui(ID_NoGradient) { | e | on_update_ui(e) }
564
+ evt_update_ui(ID_VerticalGradient) { | e | on_update_ui(e) }
565
+ evt_update_ui(ID_HorizontalGradient) { | e | on_update_ui(e) }
566
+ evt_menu_range( ID_FirstPerspective,
567
+ ID_FirstPerspective +
568
+ @perspectives.length) { | e | on_restore_perspective(e) }
569
+ evt_aui_pane_close { | e | on_pane_close(e) }
570
+ evt_auinotebook_page_close(Wx::ID_ANY) { | e | on_notebook_page_close(e) }
571
+ end
572
+
573
+ # create some toolbars
574
+ def setup_toolbars
575
+ tb1 = Wx::ToolBar.new( self, Wx::ID_ANY,
576
+ Wx::DEFAULT_POSITION,
577
+ Wx::DEFAULT_SIZE,
578
+ Wx::TB_FLAT|Wx::TB_NODIVIDER)
579
+ tb1.set_tool_bitmap_size( Wx::Size.new(48,48) )
580
+ tb1.add_tool( 101, "Test",
581
+ Wx::ArtProvider::get_bitmap(Wx::ART_ERROR) )
582
+ tb1.add_separator
583
+ tb1.add_tool( 102, "Test",
584
+ Wx::ArtProvider::get_bitmap(Wx::ART_QUESTION) )
585
+ tb1.add_tool( 103, "Test",
586
+ Wx::ArtProvider::get_bitmap(Wx::ART_INFORMATION) )
587
+ tb1.add_tool( 103, "Test",
588
+ Wx::ArtProvider::get_bitmap(Wx::ART_WARNING));
589
+ tb1.add_tool( 103, "Test",
590
+ Wx::ArtProvider::get_bitmap(Wx::ART_MISSING_IMAGE));
591
+ tb1.realize
592
+
593
+
594
+ tb2 = Wx::ToolBar.new( self, Wx::ID_ANY, Wx::DEFAULT_POSITION,
595
+ Wx::DEFAULT_SIZE,
596
+ Wx::TB_FLAT|Wx::TB_NODIVIDER )
597
+ tb2.set_tool_bitmap_size( Wx::Size.new(16,16) )
598
+
599
+ tb2_bmp1 = Wx::ArtProvider::get_bitmap( Wx::ART_QUESTION,
600
+ Wx::ART_OTHER,
601
+ Wx::Size.new(16,16) )
602
+ tb2.add_tool(101, "Test", tb2_bmp1);
603
+ tb2.add_tool(101, "Test", tb2_bmp1);
604
+ tb2.add_tool(101, "Test", tb2_bmp1);
605
+ tb2.add_tool(101, "Test", tb2_bmp1);
606
+ tb2.add_separator
607
+ tb2.add_tool(101, "Test", tb2_bmp1);
608
+ tb2.add_tool(101, "Test", tb2_bmp1);
609
+ tb2.add_separator
610
+ tb2.add_tool(101, "Test", tb2_bmp1);
611
+ tb2.add_tool(101, "Test", tb2_bmp1);
612
+ tb2.add_tool(101, "Test", tb2_bmp1);
613
+ tb2.add_tool(101, "Test", tb2_bmp1);
614
+ tb2.realize
615
+
616
+
617
+ tb3 = Wx::ToolBar.new(self, Wx::ID_ANY,
618
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
619
+ Wx::TB_FLAT|Wx::TB_NODIVIDER)
620
+ tb3.set_tool_bitmap_size( Wx::Size.new(16,16) )
621
+ tb3_bmp1 = Wx::ArtProvider::get_bitmap( Wx::ART_FOLDER,
622
+ Wx::ART_OTHER,
623
+ Wx::Size.new(16,16) )
624
+ tb3.add_tool(101, "Test", tb3_bmp1)
625
+ tb3.add_tool(101, "Test", tb3_bmp1)
626
+ tb3.add_tool(101, "Test", tb3_bmp1)
627
+ tb3.add_tool(101, "Test", tb3_bmp1)
628
+ tb3.add_separator
629
+ tb3.add_tool(101, "Test", tb3_bmp1)
630
+ tb3.add_tool(101, "Test", tb3_bmp1)
631
+ tb3.realize
632
+
633
+
634
+ tb4 = Wx::ToolBar.new( self, Wx::ID_ANY,
635
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
636
+ Wx::TB_FLAT|Wx::TB_NODIVIDER|Wx::TB_HORZ_TEXT)
637
+ tb4.set_tool_bitmap_size( Wx::Size.new(16, 16) )
638
+ tb4_bmp1 = Wx::ArtProvider::get_bitmap( Wx::ART_NORMAL_FILE,
639
+ Wx::ART_OTHER,
640
+ Wx::Size.new(16, 16) )
641
+ tb4.add_tool(101, "Item 1", tb4_bmp1)
642
+ tb4.add_tool(101, "Item 2", tb4_bmp1)
643
+ tb4.add_tool(101, "Item 3", tb4_bmp1)
644
+ tb4.add_tool(101, "Item 4", tb4_bmp1)
645
+ tb4.add_separator
646
+ tb4.add_tool(101, "Item 5", tb4_bmp1)
647
+ tb4.add_tool(101, "Item 6", tb4_bmp1)
648
+ tb4.add_tool(101, "Item 7", tb4_bmp1)
649
+ tb4.add_tool(101, "Item 8", tb4_bmp1)
650
+ tb4.realize
651
+
652
+ # create some toolbars
653
+ tb5 = Wx::ToolBar.new( self, Wx::ID_ANY,
654
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
655
+ Wx::TB_FLAT|Wx::TB_NODIVIDER|Wx::TB_VERTICAL)
656
+ tb5.set_tool_bitmap_size( Wx::Size.new(48,48))
657
+ tb5.add_tool( 101, "Test",
658
+ Wx::ArtProvider::get_bitmap(Wx::ART_ERROR) )
659
+ tb5.add_separator
660
+ tb5.add_tool( 102, "Test",
661
+ Wx::ArtProvider::get_bitmap(Wx::ART_QUESTION) )
662
+ tb5.add_tool( 103, "Test",
663
+ Wx::ArtProvider::get_bitmap(Wx::ART_INFORMATION) )
664
+ tb5.add_tool( 103, "Test",
665
+ Wx::ArtProvider::get_bitmap(Wx::ART_WARNING) )
666
+ tb5.add_tool( 103, "Test",
667
+ Wx::ArtProvider::get_bitmap(Wx::ART_MISSING_IMAGE) )
668
+ tb5.realize
669
+
670
+ # add the toolbars to the manager
671
+ pi = Wx::AuiPaneInfo.new
672
+ pi.set_name('tb1').set_caption("Big Toolbar").toolbar_pane
673
+ pi.top.set_left_dockable(false).set_right_dockable(false)
674
+ @mgr.add_pane(tb1, pi)
675
+
676
+
677
+ pi = Wx::AuiPaneInfo.new
678
+ pi.set_name('tb2').set_caption("Toolbar 2").toolbar_pane
679
+ pi.top.set_row(1)
680
+ pi.set_left_dockable(false).set_right_dockable(false)
681
+ @mgr.add_pane(tb2, pi)
682
+
683
+ pi = Wx::AuiPaneInfo.new
684
+ pi.set_name('tb3').set_caption("Toolbar 3").toolbar_pane
685
+ pi.top.set_row(1).set_position(1)
686
+ pi.set_left_dockable(false).set_right_dockable(false)
687
+ @mgr.add_pane(tb3, pi)
688
+
689
+ pi = Wx::AuiPaneInfo.new
690
+ pi.set_name('tb4').set_caption("Sample Bookmark Toolbar")
691
+ pi.toolbar_pane.top.set_row(2)
692
+ pi.set_left_dockable(false).set_right_dockable(false)
693
+ @mgr.add_pane(tb4, pi)
694
+
695
+ pi = Wx::AuiPaneInfo.new
696
+ pi.set_name('tb5').set_caption("Sample Vertical Toolbar")
697
+ pi.toolbar_pane.left.set_gripper_top
698
+ pi.set_left_dockable(false).set_right_dockable(false)
699
+ @mgr.add_pane(tb5, pi)
700
+ end
701
+
702
+ def setup_panes
703
+ # add a bunch of panes
704
+ pi = Wx::AuiPaneInfo.new
705
+ pi.set_name('test1').set_caption('Pane Caption').top
706
+ @mgr.add_pane(create_size_report_ctrl, pi)
707
+
708
+ pi = Wx::AuiPaneInfo.new
709
+ pi.set_name('test2').set_caption('Client Size Reporter').bottom
710
+ pi.set_position(1).set_close_button.set_maximize_button
711
+ @mgr.add_pane(create_size_report_ctrl, pi)
712
+
713
+ pi = Wx::AuiPaneInfo.new
714
+ pi.set_name('test3').set_caption('Client Size Reporter').bottom
715
+ pi.set_close_button.set_maximize_button
716
+ @mgr.add_pane(create_size_report_ctrl, pi)
717
+
718
+ pi = Wx::AuiPaneInfo.new
719
+ pi.set_name('test4').set_caption('Pane Caption').left
720
+ @mgr.add_pane(create_size_report_ctrl, pi)
721
+
722
+ pi = Wx::AuiPaneInfo.new
723
+ pi.set_name('test5').set_caption('No Close Button').right
724
+ pi.set_close_button(false)
725
+ @mgr.add_pane(create_size_report_ctrl, pi)
726
+
727
+ pi = Wx::AuiPaneInfo.new
728
+ pi.set_name('test6').set_caption('Client Size Report').right
729
+ pi.set_row(1).set_close_button.set_maximize_button
730
+ @mgr.add_pane(create_size_report_ctrl, pi)
731
+
732
+ pi = Wx::AuiPaneInfo.new
733
+ pi.set_name('test7').set_caption('Client Size Report').left
734
+ pi.set_layer(1).set_close_button.set_maximize_button
735
+ @mgr.add_pane(create_size_report_ctrl, pi)
736
+
737
+ pi = Wx::AuiPaneInfo.new
738
+ pi.set_name('test8').set_caption('Tree Pane').left
739
+ pi.set_layer(1).set_position(1).set_close_button.set_maximize_button
740
+ @mgr.add_pane(create_tree_ctrl, pi)
741
+
742
+ pi = Wx::AuiPaneInfo.new
743
+ pi_size = Wx::Size.new(200, 100)
744
+ pi.set_name('test9').set_caption('Min Size 200x100').bottom
745
+ pi.set_best_size(pi_size).set_min_size(pi_size)
746
+ pi.set_layer(1).set_close_button.set_maximize_button
747
+ @mgr.add_pane(create_size_report_ctrl, pi)
748
+
749
+ wnd10 = create_text_ctrl("This pane will prompt the user before hiding.")
750
+ pi = Wx::AuiPaneInfo.new
751
+ pi.set_name('test10').set_caption('Text Pane with hide prompt')
752
+ pi.bottom.set_layer(1).set_position(1)
753
+ @mgr.add_pane(wnd10, pi)
754
+
755
+ pi = Wx::AuiPaneInfo.new
756
+ pi.set_name('test11').set_caption('Fixed Pane').bottom
757
+ pi.set_layer(1).set_position(2).fixed
758
+ @mgr.add_pane(create_size_report_ctrl, pi)
759
+
760
+
761
+ pi = Wx::AuiPaneInfo.new
762
+ pi.set_name('settings').set_caption('Dock Manager Settings')
763
+ pi.set_dockable(false).float.hide
764
+
765
+ @mgr.add_pane(SettingsPanel.new(self, self), pi)
766
+
767
+ # create some center panes
768
+
769
+ pi = Wx::AuiPaneInfo.new
770
+ pi.set_name('grid_content').center_pane.hide
771
+ @mgr.add_pane(create_grid, pi)
772
+
773
+ pi = Wx::AuiPaneInfo.new
774
+ pi.set_name('tree_content').center_pane.hide
775
+ @mgr.add_pane(create_tree_ctrl, pi)
776
+
777
+ pi = Wx::AuiPaneInfo.new
778
+ pi.set_name('sizereport_content').center_pane.hide
779
+ @mgr.add_pane(create_size_report_ctrl, pi)
780
+
781
+ pi = Wx::AuiPaneInfo.new
782
+ pi.set_name('text_content').center_pane.hide
783
+ @mgr.add_pane(create_text_ctrl, pi)
784
+
785
+ pi = Wx::AuiPaneInfo.new
786
+ pi.set_name('html_content').center_pane.hide
787
+ @mgr.add_pane(create_html_ctrl, pi)
788
+
789
+ pi = Wx::AuiPaneInfo.new
790
+ pi.set_name('notebook_content').center_pane.hide
791
+ @mgr.add_pane(create_notebook, pi)
792
+
793
+ pi = Wx::AuiPaneInfo.new
794
+ pi.set_name('tb6').toolbar_pane.top
795
+ pi.set_row(2).set_position(1)
796
+ pi.set_left_dockable(false).set_right_dockable(false)
797
+ @mgr.add_pane(Wx::Button.new(self, Wx::ID_ANY, "Test Button"), pi)
798
+ end
799
+
800
+ # make some default perspectives
801
+ def setup_perspectives
802
+ perspective_all = @mgr.save_perspective
803
+
804
+ @mgr.each_pane do | pane |
805
+ pane.hide unless pane.is_toolbar
806
+ end
807
+
808
+ @mgr.get_pane("tb1").hide
809
+ @mgr.get_pane("tb6").hide
810
+ @mgr.get_pane("test8").show.left.set_layer(0).set_row(0).set_position(0)
811
+ @mgr.get_pane("test10").show.bottom.set_layer(0).set_row(0).set_position(0)
812
+ @mgr.get_pane("notebook_content").show()
813
+ perspective_default = @mgr.save_perspective
814
+
815
+ @perspectives << perspective_default
816
+ @perspectives << perspective_all
817
+ end
818
+
819
+ def get_dock_art
820
+ @mgr.get_art_provider
821
+ end
822
+
823
+ def do_update
824
+ @mgr.update
825
+ end
826
+
827
+ def on_erase_background(event)
828
+ event.skip
829
+ end
830
+
831
+ def on_size(event)
832
+ event.skip
833
+ end
834
+
835
+ def on_settings
836
+ float_pane = @mgr.get_pane("settings").float.show
837
+ if float_pane.get_floating_position == Wx::DEFAULT_POSITION
838
+ float_pane.set_floating_position( get_start_position )
839
+ end
840
+ @mgr.update
841
+ end
842
+
843
+ def on_gradient(event)
844
+ gradient = nil
845
+ case event.get_id
846
+ when ID_NoGradient
847
+ gradient = Wx::AUI_GRADIENT_NONE
848
+ when ID_VerticalGradient
849
+ gradient = Wx::AUI_GRADIENT_VERTICAL
850
+ when ID_HorizontalGradient
851
+ gradient = Wx::AUI_GRADIENT_HORIZONTAL
852
+ end
853
+ return if not gradient
854
+ @mgr.get_art_provider.set_metric( Wx::AUI_DOCKART_GRADIENT_TYPE,
855
+ gradient)
856
+ @mgr.update
857
+ end
858
+
859
+ def on_manager_flag(event)
860
+ e_id = event.get_id
861
+ if e_id == ID_TransparentHint or
862
+ e_id == ID_VenetianBlindsHint or
863
+ e_id == ID_RectangleHint or
864
+ e_id == ID_NoHint
865
+ flags = @mgr.get_flags
866
+ flags &= ~Wx::AUI_MGR_TRANSPARENT_HINT
867
+ flags &= ~Wx::AUI_MGR_VENETIAN_BLINDS_HINT
868
+ flags &= ~Wx::AUI_MGR_RECTANGLE_HINT
869
+ @mgr.set_flags(flags)
870
+ end
871
+
872
+ flag = nil
873
+ case e_id
874
+ when ID_AllowFloating
875
+ flag = Wx::AUI_MGR_ALLOW_FLOATING
876
+ when ID_TransparentDrag
877
+ flag = Wx::AUI_MGR_TRANSPARENT_DRAG
878
+ when ID_HintFade
879
+ flag = Wx::AUI_MGR_HINT_FADE
880
+ when ID_NoVenetianFade
881
+ flag = Wx::AUI_MGR_NO_VENETIAN_BLINDS_FADE
882
+ when ID_AllowActivePane
883
+ flag = Wx::AUI_MGR_ALLOW_ACTIVE_PANE
884
+ when ID_TransparentHint
885
+ flag = Wx::AUI_MGR_TRANSPARENT_HINT
886
+ when ID_VenetianBlindsHint
887
+ flag = Wx::AUI_MGR_VENETIAN_BLINDS_HINT
888
+ when ID_RectangleHint
889
+ flag = Wx::AUI_MGR_RECTANGLE_HINT
890
+ end
891
+
892
+ if flag
893
+ @mgr.set_flags(@mgr.get_flags ^ flag)
894
+ end
895
+
896
+ @mgr.update
897
+ end
898
+
899
+ def on_notebook_flag(event)
900
+ e_id = event.get_id
901
+
902
+ if e_id == ID_NotebookNoCloseButton or
903
+ e_id == ID_NotebookCloseButton or
904
+ e_id == ID_NotebookCloseButtonAll or
905
+ e_id == ID_NotebookCloseButtonActive
906
+ @notebook_style &= ~( Wx::AUI_NB_CLOSE_BUTTON|
907
+ Wx::AUI_NB_CLOSE_ON_ACTIVE_TAB|
908
+ Wx::AUI_NB_CLOSE_ON_ALL_TABS )
909
+ end
910
+
911
+ case e_id
912
+ when ID_NotebookNoCloseButton
913
+ # nothing
914
+ when ID_NotebookCloseButton
915
+ @notebook_style |= Wx::AUI_NB_CLOSE_BUTTON
916
+ when ID_NotebookCloseButtonAll
917
+ @notebook_style |= Wx::AUI_NB_CLOSE_ON_ALL_TABS
918
+ when ID_NotebookCloseButtonActive
919
+ @notebook_style |= Wx::AUI_NB_CLOSE_ON_ACTIVE_TAB
920
+ end
921
+
922
+ if e_id == ID_NotebookAllowTabMove
923
+ @notebook_style ^= Wx::AUI_NB_TAB_MOVE
924
+ end
925
+
926
+ if e_id == ID_NotebookAllowTabExternalMove
927
+ @notebook_style ^= Wx::AUI_NB_TAB_EXTERNAL_MOVE
928
+ elsif e_id == ID_NotebookAllowTabSplit
929
+ @notebook_style ^= Wx::AUI_NB_TAB_SPLIT
930
+ elsif e_id == ID_NotebookWindowList
931
+ @notebook_style ^= Wx::AUI_NB_WINDOWLIST_BUTTON
932
+ elsif e_id == ID_NotebookScrollButtons
933
+ @notebook_style ^= Wx::AUI_NB_SCROLL_BUTTONS
934
+ elsif e_id == ID_NotebookTabFixedWidth
935
+ @notebook_style ^= Wx::AUI_NB_TAB_FIXED_WIDTH
936
+ end
937
+
938
+
939
+ @mgr.each_pane do | pane |
940
+ maybe_nb = pane.get_window
941
+ next unless maybe_nb.kind_of?(Wx::AuiNotebook)
942
+ if e_id == ID_NotebookArtGloss
943
+ maybe_nb.set_art_provider(Wx::AuiDefaultTabArt.new)
944
+ @notebook_theme = 0
945
+ elsif e_id == ID_NotebookArtSimple
946
+ maybe_nb.set_art_provider(Wx::AuiSimpleTabArt.new)
947
+ @notebook_theme = 1
948
+ end
949
+
950
+ maybe_nb.set_window_style_flag(@notebook_style)
951
+ maybe_nb.refresh()
952
+ end
953
+ end
954
+
955
+ def on_update_ui(event)
956
+ flags = @mgr.get_flags
957
+
958
+ case event.get_id
959
+ when ID_NoGradient
960
+ event.check(@mgr.get_art_provider.get_metric(Wx::AUI_DOCKART_GRADIENT_TYPE) == Wx::AUI_GRADIENT_NONE)
961
+ when ID_VerticalGradient
962
+ event.check(@mgr.get_art_provider.get_metric(Wx::AUI_DOCKART_GRADIENT_TYPE) == Wx::AUI_GRADIENT_VERTICAL)
963
+ when ID_HorizontalGradient
964
+ event.check(@mgr.get_art_provider.get_metric(Wx::AUI_DOCKART_GRADIENT_TYPE) == Wx::AUI_GRADIENT_HORIZONTAL)
965
+ when ID_AllowFloating
966
+ event.check((flags & Wx::AUI_MGR_ALLOW_FLOATING) != 0)
967
+ when ID_TransparentDrag
968
+ event.check((flags & Wx::AUI_MGR_TRANSPARENT_DRAG) != 0)
969
+ when ID_TransparentHint
970
+ event.check((flags & Wx::AUI_MGR_TRANSPARENT_HINT) != 0)
971
+ when ID_VenetianBlindsHint
972
+ event.check((flags & Wx::AUI_MGR_VENETIAN_BLINDS_HINT) != 0)
973
+ when ID_RectangleHint
974
+ event.check((flags & Wx::AUI_MGR_RECTANGLE_HINT) != 0)
975
+ when ID_NoHint
976
+ event.check( (Wx::AUI_MGR_TRANSPARENT_HINT|
977
+ Wx::AUI_MGR_VENETIAN_BLINDS_HINT|
978
+ Wx::AUI_MGR_RECTANGLE_HINT) & flags == 0)
979
+ when ID_HintFade
980
+ event.check((flags & Wx::AUI_MGR_HINT_FADE) != 0)
981
+ when ID_NoVenetianFade
982
+ event.check((flags & Wx::AUI_MGR_NO_VENETIAN_BLINDS_FADE) != 0)
983
+ when ID_NotebookNoCloseButton
984
+ event.check( (@notebook_style &
985
+ ( Wx::AUI_NB_CLOSE_BUTTON|
986
+ Wx::AUI_NB_CLOSE_ON_ALL_TABS|
987
+ Wx::AUI_NB_CLOSE_ON_ACTIVE_TAB) ) != 0)
988
+ when ID_NotebookCloseButton
989
+ event.check((@notebook_style & Wx::AUI_NB_CLOSE_BUTTON) != 0)
990
+ when ID_NotebookCloseButtonAll
991
+ event.check((@notebook_style & Wx::AUI_NB_CLOSE_ON_ALL_TABS) != 0)
992
+ when ID_NotebookCloseButtonActive
993
+ event.check((@notebook_style & Wx::AUI_NB_CLOSE_ON_ACTIVE_TAB) != 0)
994
+ when ID_NotebookAllowTabSplit:
995
+ event.check((@notebook_style & Wx::AUI_NB_TAB_SPLIT) != 0)
996
+ when ID_NotebookAllowTabMove
997
+ event.check((@notebook_style & Wx::AUI_NB_TAB_MOVE) != 0)
998
+ when ID_NotebookAllowTabExternalMove
999
+ event.check((@notebook_style & Wx::AUI_NB_TAB_EXTERNAL_MOVE) != 0)
1000
+ when ID_NotebookScrollButtons
1001
+ event.check((@notebook_style & Wx::AUI_NB_SCROLL_BUTTONS) != 0)
1002
+ when ID_NotebookWindowList
1003
+ event.check((@notebook_style & Wx::AUI_NB_WINDOWLIST_BUTTON) != 0)
1004
+ when ID_NotebookTabFixedWidth
1005
+ event.check((@notebook_style & Wx::AUI_NB_TAB_FIXED_WIDTH) != 0)
1006
+ when ID_NotebookArtGloss
1007
+ event.check(@notebook_style == 0)
1008
+ when ID_NotebookArtSimple
1009
+ event.check(@notebook_style == 1)
1010
+ end
1011
+ end
1012
+
1013
+ def on_pane_close(event)
1014
+ if event.get_pane.get_name == "test10"
1015
+ msg = "Are you sure you want to close/hide this pane?"
1016
+ dlg = Wx::MessageDialog.new(self, msg, "Wx::AUI", Wx::YES_NO)
1017
+ if dlg.show_modal != Wx::ID_YES
1018
+ return event.veto
1019
+ end
1020
+ end
1021
+ end
1022
+
1023
+
1024
+ def on_create_perspective
1025
+ msg = "Enter a name for the new perspective:"
1026
+ dlg = Wx::TextEntryDialog.new(self, msg, "Wx::AUI Test")
1027
+ dlg.set_value("Perspective %d" % [ @perspectives.length + 1 ] )
1028
+ return unless dlg.show_modal == Wx::ID_OK
1029
+ if @perspectives.length.zero?
1030
+ @perspectives_menu.append_separator
1031
+ end
1032
+ @perspectives_menu.append(ID_FirstPerspective + @perspectives.length,
1033
+ dlg.get_value)
1034
+ @perspectives << @mgr.save_perspective
1035
+ end
1036
+
1037
+ def on_copy_perspective_code
1038
+ Kernel.raise NotImplementedError
1039
+ end
1040
+
1041
+ def on_restore_perspective(event)
1042
+ perspective = @perspectives[ event.get_id - ID_FirstPerspective]
1043
+ @mgr.load_perspective(perspective)
1044
+ end
1045
+
1046
+ def on_notebook_page_close(event)
1047
+ notebook = event.get_event_object
1048
+ if notebook.get_page(event.get_selection).kind_of?(Wx::HtmlWindow)
1049
+ msg = "Are you sure you want to close/hide this notebook page?"
1050
+ dlg = Wx::MessageDialog.new(self, msg, "Wx::AUI", Wx::YES_NO)
1051
+ if dlg.show_modal != Wx::ID_YES
1052
+ event.veto
1053
+ else
1054
+ event.allow
1055
+ end
1056
+ end
1057
+ end
1058
+
1059
+ def get_start_position
1060
+ origin = client_to_screen( Wx::Point.new(0, 0) )
1061
+ return Wx::Point.new(origin.x + 20, origin.y + 20)
1062
+ end
1063
+
1064
+ def on_create_tree
1065
+ pi = Wx::AuiPaneInfo.new
1066
+ pi.set_caption("Tree Control").float
1067
+ pi.set_floating_position(get_start_position)
1068
+ pi.set_floating_size(Wx::Size.new(150, 300))
1069
+ @mgr.add_pane( create_tree_ctrl, pi)
1070
+ @mgr.update
1071
+ end
1072
+
1073
+ def on_create_grid
1074
+ pi = Wx::AuiPaneInfo.new
1075
+ pi.set_caption("Grid").float
1076
+ pi.set_floating_position(get_start_position)
1077
+ pi.set_floating_size(Wx::Size.new(300, 200))
1078
+ @mgr.add_pane( create_grid, pi)
1079
+ @mgr.update
1080
+ end
1081
+
1082
+ def on_create_html
1083
+ pi = Wx::AuiPaneInfo.new
1084
+ pi.set_caption("HTML Control").float
1085
+ pi.set_floating_position(get_start_position)
1086
+ pi.set_floating_size(Wx::Size.new(300, 200))
1087
+ @mgr.add_pane( create_html_ctrl, pi)
1088
+ @mgr.update
1089
+ end
1090
+
1091
+ def on_create_notebook
1092
+ pi = Wx::AuiPaneInfo.new
1093
+ pi.set_caption("Notebook").float
1094
+ pi.set_floating_position(get_start_position)
1095
+ pi.set_close_button.set_maximize_button
1096
+ @mgr.add_pane( create_notebook, pi)
1097
+ @mgr.update
1098
+ end
1099
+
1100
+ def on_create_text
1101
+ pi = Wx::AuiPaneInfo.new
1102
+ pi.set_caption("Text Control").float
1103
+ pi.set_floating_position(get_start_position)
1104
+ @mgr.add_pane( create_text_ctrl, pi)
1105
+ @mgr.update
1106
+ end
1107
+
1108
+ def on_create_size_report
1109
+ pi = Wx::AuiPaneInfo.new
1110
+ pi.set_caption("Client Size Reporter").float
1111
+ pi.set_floating_position(get_start_position)
1112
+ pi.set_close_button.set_maximize_button
1113
+ @mgr.add_pane( create_size_report, pi)
1114
+ @mgr.update
1115
+ end
1116
+
1117
+ def on_change_content_pane(event)
1118
+ e_id = event.get_id
1119
+ @mgr.get_pane("grid_content").show(e_id == ID_GridContent)
1120
+ @mgr.get_pane("text_content").show(e_id == ID_TextContent)
1121
+ @mgr.get_pane("tree_content").show(e_id == ID_TreeContent)
1122
+ @mgr.get_pane("sizereport_content").show(e_id == ID_SizeReportContent)
1123
+ @mgr.get_pane("html_content").show(e_id == ID_HTMLContent)
1124
+ @mgr.get_pane("notebook_content").show(e_id == ID_NotebookContent)
1125
+ @mgr.update
1126
+ end
1127
+
1128
+ def on_exit
1129
+ close(true)
1130
+ end
1131
+
1132
+ def on_about
1133
+ msg = "Wx::AUI Demo\nAn advanced window management library for wxRuby\nAdapted by Alex Fenton from the wxWidgets AUI Demo\n which is (c) Copyright 2005-2006, Kirix Corporation"
1134
+ dlg = Wx::MessageDialog.new(self, msg, "Wx::AUI", Wx::OK)
1135
+ dlg.show_modal
1136
+ end
1137
+
1138
+ def create_text_ctrl(text = "")
1139
+ if text.empty?
1140
+ text = "This is a test text box"
1141
+ end
1142
+ Wx::TextCtrl.new( self, Wx::ID_ANY, text,
1143
+ Wx::Point.new(0, 0), Wx::Size.new(150, 90),
1144
+ Wx::NO_BORDER|Wx::TE_MULTILINE)
1145
+ end
1146
+
1147
+ def create_grid
1148
+ grid = Wx::Grid.new(self, Wx::ID_ANY,
1149
+ Wx::Point.new(0, 0),
1150
+ Wx::Size.new(150, 250),
1151
+ Wx::NO_BORDER|Wx::WANTS_CHARS)
1152
+ grid.create_grid(50, 20)
1153
+ grid
1154
+ end
1155
+
1156
+
1157
+ def create_tree_ctrl
1158
+ tree = Wx::TreeCtrl.new( self, Wx::ID_ANY,
1159
+ Wx::Point.new(0, 0), Wx::Size.new(160, 250),
1160
+ Wx::TR_DEFAULT_STYLE|Wx::NO_BORDER)
1161
+
1162
+ img_list = Wx::ImageList.new(16, 16, true, 2)
1163
+ img_list.add( Wx::ArtProvider::get_bitmap( Wx::ART_FOLDER,
1164
+ Wx::ART_OTHER,
1165
+ Wx::Size.new(16, 16) ) )
1166
+ img_list.add( Wx::ArtProvider::get_bitmap( Wx::ART_NORMAL_FILE,
1167
+ Wx::ART_OTHER,
1168
+ Wx::Size.new(16, 16) ) )
1169
+ tree.set_image_list(img_list)
1170
+ root = tree.add_root("Wx::AUI Project", 0)
1171
+ items = []
1172
+ 1.upto(5) { | i | items << tree.append_item(root, "Item #{i}", 0) }
1173
+
1174
+ items.each do | id |
1175
+ 1.upto(5) { | i | tree.append_item(id, "Subitem #{i}", 0) }
1176
+ end
1177
+
1178
+ tree.expand(root)
1179
+ tree
1180
+ end
1181
+
1182
+ def create_size_report_ctrl(width = 80, height = 80)
1183
+ SizeReportCtrl.new( self, Wx::ID_ANY,
1184
+ Wx::DEFAULT_POSITION,
1185
+ Wx::Size.new(width, height), @mgr )
1186
+ end
1187
+
1188
+ def create_html_ctrl(parent = nil)
1189
+ if not parent
1190
+ parent = self
1191
+ end
1192
+ ctrl = Wx::HtmlWindow.new(parent, Wx::ID_ANY,
1193
+ Wx::DEFAULT_POSITION,
1194
+ Wx::Size.new(400, 300) )
1195
+ ctrl.set_page(DATA.read)
1196
+ ctrl
1197
+ end
1198
+
1199
+ def create_notebook
1200
+ # create the notebook off-window to avoid flicker
1201
+ client_size = get_client_size
1202
+
1203
+ ctrl = Wx::AuiNotebook.new( self, Wx::ID_ANY,
1204
+ Wx::Point.new(client_size.x, client_size.y),
1205
+ Wx::Size.new(430, 200),
1206
+ @notebook_style)
1207
+
1208
+ page_bmp = Wx::ArtProvider::get_bitmap( Wx::ART_NORMAL_FILE,
1209
+ Wx::ART_OTHER,
1210
+ Wx::Size.new(16,16) )
1211
+
1212
+ ctrl.add_page( create_html_ctrl(ctrl),
1213
+ "Welcome to Wx::AUI", false, page_bmp)
1214
+
1215
+ panel = Wx::Panel.new(ctrl, Wx::ID_ANY)
1216
+ flex = Wx::FlexGridSizer.new( 2 )
1217
+ flex.add_growable_row( 0 )
1218
+ flex.add_growable_row( 3 )
1219
+ flex.add_growable_row( 1 )
1220
+
1221
+ flex.add( 5, 5 )
1222
+ flex.add( 5, 5 )
1223
+ flex.add( Wx::StaticText.new( panel, -1, "Wx::TextCtrl:" ),
1224
+ 0, Wx::ALL|Wx::ALIGN_CENTRE, 5 )
1225
+ flex.add( Wx::TextCtrl.new( panel, -1, "",
1226
+ Wx::DEFAULT_POSITION, Wx::Size.new(100,-1) ),
1227
+ 1, Wx::ALL|Wx::ALIGN_CENTRE, 5 )
1228
+
1229
+ flex.add( Wx::StaticText.new( panel, -1, "Wx::SpinCtrl:" ),
1230
+ 0, Wx::ALL|Wx::ALIGN_CENTRE, 5 )
1231
+ flex.add( Wx::SpinCtrl.new( panel, -1, "5",
1232
+ Wx::DEFAULT_POSITION, Wx::Size.new(100,-1),
1233
+ Wx::SP_ARROW_KEYS, 5, 50, 5 ),
1234
+ 1, Wx::ALL|Wx::ALIGN_CENTRE, 5 )
1235
+
1236
+ flex.add( 5,5 )
1237
+ flex.add( 5,5 )
1238
+ panel.set_sizer( flex )
1239
+ ctrl.add_page( panel, "wxPanel", false, page_bmp )
1240
+
1241
+
1242
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some text",
1243
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1244
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1245
+ "wxTextCtrl 1", false, page_bmp )
1246
+
1247
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1248
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1249
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1250
+ "wxTextCtrl 2" )
1251
+
1252
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1253
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1254
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1255
+ "wxTextCtrl 3" )
1256
+
1257
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1258
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1259
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1260
+ "wxTextCtrl 4" )
1261
+
1262
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1263
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1264
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1265
+ "wxTextCtrl 5" )
1266
+
1267
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1268
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1269
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1270
+ "wxTextCtrl 6" )
1271
+
1272
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1273
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1274
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1275
+ "wxTextCtrl 7 (longer title)" )
1276
+
1277
+ ctrl.add_page( Wx::TextCtrl.new( ctrl, Wx::ID_ANY, "Some more text",
1278
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
1279
+ Wx::TE_MULTILINE|Wx::NO_BORDER),
1280
+ "wxTextCtrl 8" )
1281
+ return ctrl
1282
+ end
1283
+ end
1284
+
1285
+
1286
+ class AuiDemoApp < Wx::App
1287
+ def on_init
1288
+ frame = AuiFrame.new( nil, Wx::ID_ANY, "Wx::AUI Sample Application",
1289
+ Wx::DEFAULT_POSITION,
1290
+ Wx::Size.new(800, 600) )
1291
+ set_top_window(frame)
1292
+ frame.show
1293
+ return true
1294
+ end
1295
+ end
1296
+
1297
+ AuiDemoApp.new.main_loop()
1298
+
1299
+
1300
+ __END__
1301
+
1302
+ <html><body>
1303
+ <h3>Welcome to Wx::AUI</h3>
1304
+ <br/><b>Overview</b><br/>
1305
+ <p>Wx::AUI is an Advanced User Interface library for the wxWidgets toolkit
1306
+ that allows developers to create high-quality, cross-platform user
1307
+ interfaces quickly and easily.</p>
1308
+ <p><b>Features</b></p>
1309
+ <p>With Wx::AUI, developers can create application frameworks with:</p>
1310
+ <ul>
1311
+ <li>Native, dockable floating frames</li>
1312
+ <li>Perspective saving and loading</li>
1313
+ <li>Native toolbars incorporating real-time, &quot;spring-loaded&quot; dragging</li>
1314
+ <li>Customizable floating/docking behavior</li>
1315
+ <li>Completely customizable look-and-feel</li>
1316
+ <li>Optional transparent window effects (while dragging or docking)</li>
1317
+ <li>Splittable notebook control</li>
1318
+ </ul>
1319
+ <p><b>What's new in 0.9.3?</b></p>
1320
+ <p>Wx::AUI 0.9.3, which is now bundled with wxWidgets, adds the following features:
1321
+ <ul>
1322
+ <li>New wxAuiNotebook class, a dynamic splittable notebook control</li>
1323
+ <li>New wxAuiMDI* classes, a tab-based MDI and drop-in replacement for classic MDI</li>
1324
+ <li>Maximize/Restore buttons implemented</li>
1325
+ <li>Better hinting with wxGTK</li>
1326
+ <li>Class rename. 'wxAui' is now the standard class prefix for all Wx::AUI classes</li>
1327
+ <li>Lots of bug fixes</li>
1328
+ </ul>
1329
+ <p><b>What's new in 0.9.2?</b></p>
1330
+ <p>The following features/fixes have been added since the last version of Wx::AUI:</p>
1331
+ <ul>
1332
+ <li>Support for wxMac</li>
1333
+ <li>Updates for wxWidgets 2.6.3</li>
1334
+ <li>Fix to pass more unused events through</li>
1335
+ <li>Fix to allow floating windows to receive idle events</li>
1336
+ <li>Fix for minimizing/maximizing problem with transparent hint pane</li>
1337
+ <li>Fix to not paint empty hint rectangles</li>
1338
+ <li>Fix for 64-bit compilation</li>
1339
+ </ul>
1340
+ <p><b>What changed in 0.9.1?</b></p>
1341
+ <p>The following features/fixes were added in Wx::AUIy 0.9.1:</p>
1342
+ <ul>
1343
+ <li>Support for MDI frames</li>
1344
+ <li>Gradient captions option</li>
1345
+ <li>Active/Inactive panes option</li>
1346
+ <li>Fix for screen artifacts/paint problems</li>
1347
+ <li>Fix for hiding/showing floated window problem</li>
1348
+ <li>Fix for floating pane sizing problem</li>
1349
+ <li>Fix for drop position problem when dragging around center pane margins</li>
1350
+ <li>LF-only text file formatting for source code</li>
1351
+ </ul>
1352
+ <p>See README.txt for more information.</p>
1353
+ </body></html>