]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/AUI_DockingWindowMgr.py
gtk_widget_destroy does not unref the widget unless it's a TLW or in a
[wxWidgets.git] / wxPython / demo / AUI_DockingWindowMgr.py
CommitLineData
febb39df
RD
1import wx
2import wx.grid
3import wx.html
4import wx.aui
5
6import cStringIO
7
a8961943
RD
8ID_CreateTree = wx.NewId()
9ID_CreateGrid = wx.NewId()
10ID_CreateText = wx.NewId()
11ID_CreateHTML = wx.NewId()
12ID_CreateSizeReport = wx.NewId()
13ID_GridContent = wx.NewId()
14ID_TextContent = wx.NewId()
15ID_TreeContent = wx.NewId()
16ID_HTMLContent = wx.NewId()
17ID_SizeReportContent = wx.NewId()
18ID_CreatePerspective = wx.NewId()
19ID_CopyPerspective = wx.NewId()
2a783b2d 20
a8961943 21ID_TransparentHint = wx.NewId()
2a783b2d
RD
22ID_VenetianBlindsHint = wx.NewId()
23ID_RectangleHint = wx.NewId()
24ID_NoHint = wx.NewId()
25ID_HintFade = wx.NewId()
26ID_AllowFloating = wx.NewId()
27ID_NoVenetianFade = wx.NewId()
a8961943 28ID_TransparentDrag = wx.NewId()
2a783b2d 29ID_AllowActivePane = wx.NewId()
a8961943
RD
30ID_NoGradient = wx.NewId()
31ID_VerticalGradient = wx.NewId()
32ID_HorizontalGradient = wx.NewId()
2a783b2d 33
a8961943
RD
34ID_Settings = wx.NewId()
35ID_About = wx.NewId()
febb39df
RD
36ID_FirstPerspective = ID_CreatePerspective+1000
37
2a783b2d
RD
38
39
febb39df
RD
40#----------------------------------------------------------------------
41def GetMondrianData():
42 return \
43'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\
44\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\
45ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\
46o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\
47\xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\
48\x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\
49\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82'
50
51
52def GetMondrianBitmap():
53 return wx.BitmapFromImage(GetMondrianImage())
54
55
56def GetMondrianImage():
57 stream = cStringIO.StringIO(GetMondrianData())
58 return wx.ImageFromStream(stream)
59
60
61def GetMondrianIcon():
62 icon = wx.EmptyIcon()
63 icon.CopyFromBitmap(GetMondrianBitmap())
64 return icon
65
66
67class PyAUIFrame(wx.Frame):
68
69 def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition,
70 size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE |
71 wx.SUNKEN_BORDER |
72 wx.CLIP_CHILDREN):
73
74 wx.Frame.__init__(self, parent, id, title, pos, size, style)
75
76 # tell FrameManager to manage this frame
2a783b2d 77 self._mgr = wx.aui.AuiManager()
1c976bff 78 self._mgr.SetManagedWindow(self)
febb39df
RD
79
80 self._perspectives = []
81 self.n = 0
82 self.x = 0
83
84 self.SetIcon(GetMondrianIcon())
85
86 # create menu
87 mb = wx.MenuBar()
88
89 file_menu = wx.Menu()
90 file_menu.Append(wx.ID_EXIT, "Exit")
91
92 view_menu = wx.Menu()
93 view_menu.Append(ID_CreateText, "Create Text Control")
94 view_menu.Append(ID_CreateHTML, "Create HTML Control")
95 view_menu.Append(ID_CreateTree, "Create Tree")
96 view_menu.Append(ID_CreateGrid, "Create Grid")
97 view_menu.Append(ID_CreateSizeReport, "Create Size Reporter")
98 view_menu.AppendSeparator()
99 view_menu.Append(ID_GridContent, "Use a Grid for the Content Pane")
100 view_menu.Append(ID_TextContent, "Use a Text Control for the Content Pane")
101 view_menu.Append(ID_HTMLContent, "Use an HTML Control for the Content Pane")
102 view_menu.Append(ID_TreeContent, "Use a Tree Control for the Content Pane")
103 view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane")
104
105 options_menu = wx.Menu()
2a783b2d
RD
106 options_menu.AppendRadioItem(ID_TransparentHint, "Transparent Hint")
107 options_menu.AppendRadioItem(ID_VenetianBlindsHint, "Venetian Blinds Hint")
108 options_menu.AppendRadioItem(ID_RectangleHint, "Rectangle Hint")
109 options_menu.AppendRadioItem(ID_NoHint, "No Hint")
110 options_menu.AppendSeparator();
111 options_menu.AppendCheckItem(ID_HintFade, "Hint Fade-in")
febb39df 112 options_menu.AppendCheckItem(ID_AllowFloating, "Allow Floating")
2a783b2d 113 options_menu.AppendCheckItem(ID_NoVenetianFade, "Disable Venetian Blinds Hint Fade-in")
febb39df
RD
114 options_menu.AppendCheckItem(ID_TransparentDrag, "Transparent Drag")
115 options_menu.AppendCheckItem(ID_AllowActivePane, "Allow Active Pane")
2a783b2d 116 options_menu.AppendSeparator();
febb39df
RD
117 options_menu.AppendRadioItem(ID_NoGradient, "No Caption Gradient")
118 options_menu.AppendRadioItem(ID_VerticalGradient, "Vertical Caption Gradient")
119 options_menu.AppendRadioItem(ID_HorizontalGradient, "Horizontal Caption Gradient")
2a783b2d 120 options_menu.AppendSeparator();
febb39df 121 options_menu.Append(ID_Settings, "Settings Pane")
2a783b2d 122
febb39df
RD
123 self._perspectives_menu = wx.Menu()
124 self._perspectives_menu.Append(ID_CreatePerspective, "Create Perspective")
125 self._perspectives_menu.Append(ID_CopyPerspective, "Copy Perspective Data To Clipboard")
126 self._perspectives_menu.AppendSeparator()
127 self._perspectives_menu.Append(ID_FirstPerspective+0, "Default Startup")
128 self._perspectives_menu.Append(ID_FirstPerspective+1, "All Panes")
129 self._perspectives_menu.Append(ID_FirstPerspective+2, "Vertical Toolbar")
130
131 help_menu = wx.Menu()
132 help_menu.Append(ID_About, "About...")
133
134 mb.Append(file_menu, "File")
135 mb.Append(view_menu, "View")
136 mb.Append(self._perspectives_menu, "Perspectives")
137 mb.Append(options_menu, "Options")
138 mb.Append(help_menu, "Help")
139
140 self.SetMenuBar(mb)
141
142 self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
143 self.statusbar.SetStatusWidths([-2, -3])
144 self.statusbar.SetStatusText("Ready", 0)
145 self.statusbar.SetStatusText("Welcome To wxPython!", 1)
146
147 # min size for the frame itself isn't completely done.
148 # see the end up FrameManager::Update() for the test
149 # code. For now, just hard code a frame minimum size
150 self.SetMinSize(wx.Size(400, 300))
151
152 # create some toolbars
153 tb1 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
154 wx.TB_FLAT | wx.TB_NODIVIDER)
155 tb1.SetToolBitmapSize(wx.Size(48,48))
156 tb1.AddLabelTool(101, "Test", wx.ArtProvider_GetBitmap(wx.ART_ERROR))
157 tb1.AddSeparator()
158 tb1.AddLabelTool(102, "Test", wx.ArtProvider_GetBitmap(wx.ART_QUESTION))
159 tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_INFORMATION))
160 tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_WARNING))
161 tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_MISSING_IMAGE))
162 tb1.Realize()
163
164 tb2 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
165 wx.TB_FLAT | wx.TB_NODIVIDER)
166 tb2.SetToolBitmapSize(wx.Size(16,16))
167 tb2_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_QUESTION, wx.ART_OTHER, wx.Size(16, 16))
168 tb2.AddLabelTool(101, "Test", tb2_bmp1)
169 tb2.AddLabelTool(101, "Test", tb2_bmp1)
170 tb2.AddLabelTool(101, "Test", tb2_bmp1)
171 tb2.AddLabelTool(101, "Test", tb2_bmp1)
172 tb2.AddSeparator()
173 tb2.AddLabelTool(101, "Test", tb2_bmp1)
174 tb2.AddLabelTool(101, "Test", tb2_bmp1)
175 tb2.AddSeparator()
176 tb2.AddLabelTool(101, "Test", tb2_bmp1)
177 tb2.AddLabelTool(101, "Test", tb2_bmp1)
178 tb2.AddLabelTool(101, "Test", tb2_bmp1)
179 tb2.AddLabelTool(101, "Test", tb2_bmp1)
180 tb2.Realize()
181
182 tb3 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
183 wx.TB_FLAT | wx.TB_NODIVIDER)
184 tb3.SetToolBitmapSize(wx.Size(16,16))
185 tb3_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16, 16))
186 tb3.AddLabelTool(101, "Test", tb3_bmp1)
187 tb3.AddLabelTool(101, "Test", tb3_bmp1)
188 tb3.AddLabelTool(101, "Test", tb3_bmp1)
189 tb3.AddLabelTool(101, "Test", tb3_bmp1)
190 tb3.AddSeparator()
191 tb3.AddLabelTool(101, "Test", tb3_bmp1)
192 tb3.AddLabelTool(101, "Test", tb3_bmp1)
193 tb3.Realize()
194
195 tb4 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
196 wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_HORZ_TEXT)
197 tb4.SetToolBitmapSize(wx.Size(16,16))
198 tb4_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16, 16))
199 tb4.AddLabelTool(101, "Item 1", tb4_bmp1)
200 tb4.AddLabelTool(101, "Item 2", tb4_bmp1)
201 tb4.AddLabelTool(101, "Item 3", tb4_bmp1)
202 tb4.AddLabelTool(101, "Item 4", tb4_bmp1)
203 tb4.AddSeparator()
204 tb4.AddLabelTool(101, "Item 5", tb4_bmp1)
205 tb4.AddLabelTool(101, "Item 6", tb4_bmp1)
206 tb4.AddLabelTool(101, "Item 7", tb4_bmp1)
207 tb4.AddLabelTool(101, "Item 8", tb4_bmp1)
208 tb4.Realize()
209
210 tb5 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
211 wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_VERTICAL)
212 tb5.SetToolBitmapSize(wx.Size(48, 48))
213 tb5.AddLabelTool(101, "Test", wx.ArtProvider_GetBitmap(wx.ART_ERROR))
214 tb5.AddSeparator()
215 tb5.AddLabelTool(102, "Test", wx.ArtProvider_GetBitmap(wx.ART_QUESTION))
216 tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_INFORMATION))
217 tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_WARNING))
218 tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_MISSING_IMAGE))
219 tb5.Realize()
220
221 # add a bunch of panes
2a783b2d 222 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
de824c0c
RD
223 Name("test1").Caption("Pane Caption").Top().
224 CloseButton(True).MaximizeButton(True))
febb39df 225
2a783b2d 226 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 227 Name("test2").Caption("Client Size Reporter").
de824c0c 228 Bottom().Position(1).CloseButton(True).MaximizeButton(True))
febb39df 229
2a783b2d 230 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 231 Name("test3").Caption("Client Size Reporter").
de824c0c 232 Bottom().CloseButton(True).MaximizeButton(True))
febb39df 233
2a783b2d 234 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 235 Name("test4").Caption("Pane Caption").
de824c0c 236 Left().CloseButton(True).MaximizeButton(True))
febb39df 237
2a783b2d 238 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 239 Name("test5").Caption("Pane Caption").
de824c0c 240 Right().CloseButton(True).MaximizeButton(True))
febb39df 241
2a783b2d 242 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 243 Name("test6").Caption("Client Size Reporter").
de824c0c 244 Right().Row(1).CloseButton(True).MaximizeButton(True))
febb39df 245
2a783b2d 246 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 247 Name("test7").Caption("Client Size Reporter").
de824c0c 248 Left().Layer(1).CloseButton(True).MaximizeButton(True))
febb39df 249
2a783b2d 250 self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().
febb39df 251 Name("test8").Caption("Tree Pane").
de824c0c 252 Left().Layer(1).Position(1).CloseButton(True).MaximizeButton(True))
febb39df 253
2a783b2d 254 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df
RD
255 Name("test9").Caption("Min Size 200x100").
256 BestSize(wx.Size(200,100)).MinSize(wx.Size(200,100)).
de824c0c 257 Bottom().Layer(1).CloseButton(True).MaximizeButton(True))
febb39df 258
2a783b2d 259 self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo().
febb39df 260 Name("test10").Caption("Text Pane").
de824c0c 261 Bottom().Layer(1).Position(1).CloseButton(True).MaximizeButton(True))
febb39df 262
2a783b2d 263 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
febb39df 264 Name("test11").Caption("Fixed Pane").
de824c0c 265 Bottom().Layer(1).Position(2).Fixed().CloseButton(True).MaximizeButton(True))
febb39df 266
2a783b2d 267 self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo().
febb39df 268 Name("settings").Caption("Dock Manager Settings").
de824c0c 269 Dockable(False).Float().Hide().CloseButton(True).MaximizeButton(True))
febb39df
RD
270
271 # create some center panes
272
2a783b2d 273 self._mgr.AddPane(self.CreateGrid(), wx.aui.AuiPaneInfo().Name("grid_content").
febb39df
RD
274 CenterPane().Hide())
275
2a783b2d 276 self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().Name("tree_content").
febb39df
RD
277 CenterPane().Hide())
278
2a783b2d 279 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().Name("sizereport_content").
febb39df
RD
280 CenterPane().Hide())
281
2a783b2d 282 self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo().Name("text_content").
febb39df
RD
283 CenterPane().Hide())
284
2a783b2d 285 self._mgr.AddPane(self.CreateHTMLCtrl(), wx.aui.AuiPaneInfo().Name("html_content").
febb39df
RD
286 CenterPane())
287
288 # add the toolbars to the manager
289
2a783b2d 290 self._mgr.AddPane(tb1, wx.aui.AuiPaneInfo().
febb39df
RD
291 Name("tb1").Caption("Big Toolbar").
292 ToolbarPane().Top().
293 LeftDockable(False).RightDockable(False))
294
2a783b2d 295 self._mgr.AddPane(tb2, wx.aui.AuiPaneInfo().
febb39df
RD
296 Name("tb2").Caption("Toolbar 2").
297 ToolbarPane().Top().Row(1).
298 LeftDockable(False).RightDockable(False))
299
2a783b2d 300 self._mgr.AddPane(tb3, wx.aui.AuiPaneInfo().
febb39df
RD
301 Name("tb3").Caption("Toolbar 3").
302 ToolbarPane().Top().Row(1).Position(1).
303 LeftDockable(False).RightDockable(False))
304
2a783b2d 305 self._mgr.AddPane(tb4, wx.aui.AuiPaneInfo().
febb39df
RD
306 Name("tb4").Caption("Sample Bookmark Toolbar").
307 ToolbarPane().Top().Row(2).
308 LeftDockable(False).RightDockable(False))
309
2a783b2d 310 self._mgr.AddPane(tb5, wx.aui.AuiPaneInfo().
febb39df
RD
311 Name("tbvert").Caption("Sample Vertical Toolbar").
312 ToolbarPane().Left().GripperTop().
313 TopDockable(False).BottomDockable(False))
314
315 self._mgr.AddPane(wx.Button(self, -1, "Test Button"),
2a783b2d 316 wx.aui.AuiPaneInfo().Name("tb5").
febb39df
RD
317 ToolbarPane().Top().Row(2).Position(1).
318 LeftDockable(False).RightDockable(False))
319
320 # make some default perspectives
321
322 self._mgr.GetPane("tbvert").Hide()
323
324 perspective_all = self._mgr.SavePerspective()
325
326 all_panes = self._mgr.GetAllPanes()
327
328 for ii in xrange(len(all_panes)):
329 if not all_panes[ii].IsToolbar():
330 all_panes[ii].Hide()
331
332 self._mgr.GetPane("tb1").Hide()
333 self._mgr.GetPane("tb5").Hide()
334 self._mgr.GetPane("test8").Show().Left().Layer(0).Row(0).Position(0)
335 self._mgr.GetPane("test10").Show().Bottom().Layer(0).Row(0).Position(0)
336 self._mgr.GetPane("html_content").Show()
337
338 perspective_default = self._mgr.SavePerspective()
339
340 for ii in xrange(len(all_panes)):
341 if not all_panes[ii].IsToolbar():
342 all_panes[ii].Hide()
343
344 self._mgr.GetPane("tb1").Hide()
345 self._mgr.GetPane("tb5").Hide()
346 self._mgr.GetPane("tbvert").Show()
347 self._mgr.GetPane("grid_content").Show()
348 self._mgr.GetPane("test8").Show().Left().Layer(0).Row(0).Position(0)
349 self._mgr.GetPane("test10").Show().Bottom().Layer(0).Row(0).Position(0)
350 self._mgr.GetPane("html_content").Show()
351
352 perspective_vert = self._mgr.SavePerspective()
353
354 self._perspectives.append(perspective_default)
355 self._perspectives.append(perspective_all)
356 self._perspectives.append(perspective_vert)
357
358 self._mgr.GetPane("tbvert").Hide()
359 self._mgr.GetPane("grid_content").Hide()
360
361 # "commit" all changes made to FrameManager
362 self._mgr.Update()
363
364 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
365 self.Bind(wx.EVT_SIZE, self.OnSize)
366 self.Bind(wx.EVT_CLOSE, self.OnClose)
367
368 # Show How To Use The Closing Panes Event
de824c0c 369 self.Bind(wx.aui.EVT_AUI_PANE_CLOSE, self.OnPaneClose)
febb39df
RD
370
371 self.Bind(wx.EVT_MENU, self.OnCreateTree, id=ID_CreateTree)
372 self.Bind(wx.EVT_MENU, self.OnCreateGrid, id=ID_CreateGrid)
373 self.Bind(wx.EVT_MENU, self.OnCreateText, id=ID_CreateText)
374 self.Bind(wx.EVT_MENU, self.OnCreateHTML, id=ID_CreateHTML)
375 self.Bind(wx.EVT_MENU, self.OnCreateSizeReport, id=ID_CreateSizeReport)
376 self.Bind(wx.EVT_MENU, self.OnCreatePerspective, id=ID_CreatePerspective)
377 self.Bind(wx.EVT_MENU, self.OnCopyPerspective, id=ID_CopyPerspective)
2a783b2d 378
febb39df
RD
379 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_AllowFloating)
380 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_TransparentHint)
2a783b2d
RD
381 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_VenetianBlindsHint)
382 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_RectangleHint)
383 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_NoHint)
384 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_HintFade)
385 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_NoVenetianFade)
febb39df
RD
386 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_TransparentDrag)
387 self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_AllowActivePane)
2a783b2d 388
febb39df
RD
389 self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_NoGradient)
390 self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_VerticalGradient)
391 self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_HorizontalGradient)
392 self.Bind(wx.EVT_MENU, self.OnSettings, id=ID_Settings)
393 self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_GridContent)
394 self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_TreeContent)
395 self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_TextContent)
396 self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_SizeReportContent)
397 self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_HTMLContent)
0b0849b5 398 self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
febb39df
RD
399 self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_About)
400
febb39df 401 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_TransparentHint)
2a783b2d
RD
402 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_VenetianBlindsHint)
403 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_RectangleHint)
404 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_NoHint)
405 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_HintFade)
406 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_AllowFloating)
407 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_NoVenetianFade)
febb39df 408 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_TransparentDrag)
2a783b2d 409 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_AllowActivePane)
febb39df
RD
410 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_NoGradient)
411 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_VerticalGradient)
412 self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_HorizontalGradient)
2a783b2d 413
febb39df
RD
414
415 self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective,
416 id2=ID_FirstPerspective+1000)
417
418
de824c0c 419 def OnPaneClose(self, event):
febb39df
RD
420
421 caption = event.GetPane().caption
422
423 if caption in ["Tree Pane", "Dock Manager Settings", "Fixed Pane"]:
424 msg = "Are You Sure You Want To Close This Pane?"
2a783b2d 425 dlg = wx.MessageDialog(self, msg, "AUI Question",
de824c0c 426 wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
febb39df
RD
427
428 if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
de824c0c 429 event.Veto()
febb39df 430 dlg.Destroy()
febb39df
RD
431
432
433 def OnClose(self, event):
febb39df 434 self._mgr.UnInit()
0b0849b5 435 del self._mgr
febb39df
RD
436 self.Destroy()
437
febb39df 438
0b0849b5
RD
439 def OnExit(self, event):
440 self.Close()
febb39df
RD
441
442 def OnAbout(self, event):
443
444 msg = "wx.aui Demo\n" + \
445 "An advanced window management library for wxWidgets\n" + \
446 "(c) Copyright 2005-2006, Kirix Corporation"
447 dlg = wx.MessageDialog(self, msg, "About wx.aui Demo",
448 wx.OK | wx.ICON_INFORMATION)
449 dlg.ShowModal()
450 dlg.Destroy()
451
452
453 def GetDockArt(self):
454
455 return self._mgr.GetArtProvider()
456
457
458 def DoUpdate(self):
459
460 self._mgr.Update()
461
462
463 def OnEraseBackground(self, event):
464
465 event.Skip()
466
467
468 def OnSize(self, event):
469
470 event.Skip()
471
472
473 def OnSettings(self, event):
474
475 # show the settings pane, and float it
476 floating_pane = self._mgr.GetPane("settings").Float().Show()
477
478 if floating_pane.floating_pos == wx.DefaultPosition:
479 floating_pane.FloatingPosition(self.GetStartPosition())
480
481 self._mgr.Update()
482
483
484 def OnGradient(self, event):
485
486 gradient = 0
487
488 if event.GetId() == ID_NoGradient:
489 gradient = wx.aui.AUI_GRADIENT_NONE
490 elif event.GetId() == ID_VerticalGradient:
491 gradient = wx.aui.AUI_GRADIENT_VERTICAL
492 elif event.GetId() == ID_HorizontalGradient:
493 gradient = wx.aui.AUI_GRADIENT_HORIZONTAL
494
8e509c4b 495 self._mgr.GetArtProvider().SetMetric(wx.aui.AUI_DOCKART_GRADIENT_TYPE, gradient)
febb39df
RD
496 self._mgr.Update()
497
498
499 def OnManagerFlag(self, event):
500
501 flag = 0
2a783b2d 502 eid = event.GetId()
febb39df 503
2a783b2d
RD
504 if eid in [ ID_TransparentHint, ID_VenetianBlindsHint, ID_RectangleHint, ID_NoHint ]:
505 flags = self._mgr.GetFlags()
506 flags &= ~wx.aui.AUI_MGR_TRANSPARENT_HINT
507 flags &= ~wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT
508 flags &= ~wx.aui.AUI_MGR_RECTANGLE_HINT
509 self._mgr.SetFlags(flags)
febb39df 510
2a783b2d
RD
511 if eid == ID_AllowFloating:
512 flag = wx.aui.AUI_MGR_ALLOW_FLOATING
513 elif eid == ID_TransparentDrag:
514 flag = wx.aui.AUI_MGR_TRANSPARENT_DRAG
515 elif eid == ID_HintFade:
516 flag = wx.aui.AUI_MGR_HINT_FADE
517 elif eid == ID_NoVenetianFade:
518 flag = wx.aui.AUI_MGR_NO_VENETIAN_BLINDS_FADE
519 elif eid == ID_AllowActivePane:
febb39df 520 flag = wx.aui.AUI_MGR_ALLOW_ACTIVE_PANE
2a783b2d
RD
521 elif eid == ID_TransparentHint:
522 flag = wx.aui.AUI_MGR_TRANSPARENT_HINT
523 elif eid == ID_VenetianBlindsHint:
524 flag = wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT
525 elif eid == ID_RectangleHint:
526 flag = wx.aui.AUI_MGR_RECTANGLE_HINT
527
febb39df
RD
528 self._mgr.SetFlags(self._mgr.GetFlags() ^ flag)
529
530
531 def OnUpdateUI(self, event):
532
533 flags = self._mgr.GetFlags()
2a783b2d
RD
534 eid = event.GetId()
535
536 if eid == ID_NoGradient:
8e509c4b 537 event.Check(self._mgr.GetArtProvider().GetMetric(wx.aui.AUI_DOCKART_GRADIENT_TYPE) == wx.aui.AUI_GRADIENT_NONE)
2a783b2d
RD
538
539 elif eid == ID_VerticalGradient:
8e509c4b 540 event.Check(self._mgr.GetArtProvider().GetMetric(wx.aui.AUI_DOCKART_GRADIENT_TYPE) == wx.aui.AUI_GRADIENT_VERTICAL)
2a783b2d
RD
541
542 elif eid == ID_HorizontalGradient:
8e509c4b 543 event.Check(self._mgr.GetArtProvider().GetMetric(wx.aui.AUI_DOCKART_GRADIENT_TYPE) == wx.aui.AUI_GRADIENT_HORIZONTAL)
2a783b2d
RD
544
545 elif eid == ID_AllowFloating:
a8961943 546 event.Check((flags & wx.aui.AUI_MGR_ALLOW_FLOATING) != 0)
febb39df 547
2a783b2d 548 elif eid == ID_TransparentDrag:
a8961943 549 event.Check((flags & wx.aui.AUI_MGR_TRANSPARENT_DRAG) != 0)
febb39df 550
2a783b2d 551 elif eid == ID_TransparentHint:
a8961943 552 event.Check((flags & wx.aui.AUI_MGR_TRANSPARENT_HINT) != 0)
febb39df 553
2a783b2d
RD
554 elif eid == ID_VenetianBlindsHint:
555 event.Check((flags & wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT) != 0)
556
557 elif eid == ID_RectangleHint:
558 event.Check((flags & wx.aui.AUI_MGR_RECTANGLE_HINT) != 0)
559
560 elif eid == ID_NoHint:
561 event.Check(((wx.aui.AUI_MGR_TRANSPARENT_HINT |
562 wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT |
563 wx.aui.AUI_MGR_RECTANGLE_HINT) & flags) == 0)
564
565 elif eid == ID_HintFade:
566 event.Check((flags & wx.aui.AUI_MGR_HINT_FADE) != 0);
567
568 elif eid == ID_NoVenetianFade:
569 event.Check((flags & wx.aui.AUI_MGR_NO_VENETIAN_BLINDS_FADE) != 0);
570
a8961943
RD
571
572
febb39df
RD
573
574 def OnCreatePerspective(self, event):
575
576 dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Test")
577
578 dlg.SetValue(("Perspective %d")%(len(self._perspectives)+1))
579 if dlg.ShowModal() != wx.ID_OK:
580 return
581
582 if len(self._perspectives) == 0:
583 self._perspectives_menu.AppendSeparator()
584
585 self._perspectives_menu.Append(ID_FirstPerspective + len(self._perspectives), dlg.GetValue())
586 self._perspectives.append(self._mgr.SavePerspective())
587
588
589 def OnCopyPerspective(self, event):
590
591 s = self._mgr.SavePerspective()
592
593 if wx.TheClipboard.Open():
594
595 wx.TheClipboard.SetData(wx.TextDataObject(s))
596 wx.TheClipboard.Close()
597
598 def OnRestorePerspective(self, event):
599
600 self._mgr.LoadPerspective(self._perspectives[event.GetId() - ID_FirstPerspective])
601
602
603 def GetStartPosition(self):
604
605 self.x = self.x + 20
606 x = self.x
607 pt = self.ClientToScreen(wx.Point(0, 0))
608
609 return wx.Point(pt.x + x, pt.y + x)
610
611
612 def OnCreateTree(self, event):
2a783b2d 613 self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().
de824c0c 614 Caption("Tree Control").
febb39df 615 Float().FloatingPosition(self.GetStartPosition()).
de824c0c 616 FloatingSize(wx.Size(150, 300)).CloseButton(True).MaximizeButton(True))
febb39df
RD
617 self._mgr.Update()
618
619
620 def OnCreateGrid(self, event):
2a783b2d 621 self._mgr.AddPane(self.CreateGrid(), wx.aui.AuiPaneInfo().
de824c0c 622 Caption("Grid").
febb39df 623 Float().FloatingPosition(self.GetStartPosition()).
de824c0c 624 FloatingSize(wx.Size(300, 200)).CloseButton(True).MaximizeButton(True))
febb39df
RD
625 self._mgr.Update()
626
627
628 def OnCreateHTML(self, event):
2a783b2d 629 self._mgr.AddPane(self.CreateHTMLCtrl(), wx.aui.AuiPaneInfo().
de824c0c 630 Caption("HTML Content").
febb39df 631 Float().FloatingPosition(self.GetStartPosition()).
de824c0c 632 FloatingSize(wx.Size(300, 200)).CloseButton(True).MaximizeButton(True))
febb39df
RD
633 self._mgr.Update()
634
635
636 def OnCreateText(self, event):
2a783b2d 637 self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo().
de824c0c
RD
638 Caption("Text Control").
639 Float().FloatingPosition(self.GetStartPosition()).
640 CloseButton(True).MaximizeButton(True))
febb39df
RD
641 self._mgr.Update()
642
643
644 def OnCreateSizeReport(self, event):
2a783b2d 645 self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
de824c0c
RD
646 Caption("Client Size Reporter").
647 Float().FloatingPosition(self.GetStartPosition()).
648 CloseButton(True).MaximizeButton(True))
febb39df
RD
649 self._mgr.Update()
650
651
652 def OnChangeContentPane(self, event):
653
654 self._mgr.GetPane("grid_content").Show(event.GetId() == ID_GridContent)
655 self._mgr.GetPane("text_content").Show(event.GetId() == ID_TextContent)
656 self._mgr.GetPane("tree_content").Show(event.GetId() == ID_TreeContent)
657 self._mgr.GetPane("sizereport_content").Show(event.GetId() == ID_SizeReportContent)
658 self._mgr.GetPane("html_content").Show(event.GetId() == ID_HTMLContent)
659 self._mgr.Update()
660
661
662 def CreateTextCtrl(self):
663
664 text = ("This is text box %d")%(self.n + 1)
665
666 return wx.TextCtrl(self,-1, text, wx.Point(0, 0), wx.Size(150, 90),
667 wx.NO_BORDER | wx.TE_MULTILINE)
668
669
670
671 def CreateGrid(self):
672
673 grid = wx.grid.Grid(self, -1, wx.Point(0, 0), wx.Size(150, 250),
674 wx.NO_BORDER | wx.WANTS_CHARS)
675
676 grid.CreateGrid(50, 20)
677
678 return grid
679
680
681 def CreateTreeCtrl(self):
682
683 tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.Size(160, 250),
684 wx.TR_DEFAULT_STYLE | wx.NO_BORDER)
685
2a783b2d 686 root = tree.AddRoot("AUI Project")
febb39df
RD
687 items = []
688
689 imglist = wx.ImageList(16, 16, True, 2)
690 imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16)))
691 imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16)))
692 tree.AssignImageList(imglist)
693
694 items.append(tree.AppendItem(root, "Item 1", 0))
695 items.append(tree.AppendItem(root, "Item 2", 0))
696 items.append(tree.AppendItem(root, "Item 3", 0))
697 items.append(tree.AppendItem(root, "Item 4", 0))
698 items.append(tree.AppendItem(root, "Item 5", 0))
699
700 for ii in xrange(len(items)):
701
702 id = items[ii]
703 tree.AppendItem(id, "Subitem 1", 1)
704 tree.AppendItem(id, "Subitem 2", 1)
705 tree.AppendItem(id, "Subitem 3", 1)
706 tree.AppendItem(id, "Subitem 4", 1)
707 tree.AppendItem(id, "Subitem 5", 1)
708
709 tree.Expand(root)
710
711 return tree
712
713
714 def CreateSizeReportCtrl(self, width=80, height=80):
715
716 ctrl = SizeReportCtrl(self, -1, wx.DefaultPosition,
717 wx.Size(width, height), self._mgr)
718 return ctrl
719
720
721 def CreateHTMLCtrl(self):
722 ctrl = wx.html.HtmlWindow(self, -1, wx.DefaultPosition, wx.Size(400, 300))
723 if "gtk2" in wx.PlatformInfo:
724 ctrl.SetStandardFonts()
725 ctrl.SetPage(self.GetIntroText())
726 return ctrl
727
728
729 def GetIntroText(self):
730 return overview
731
732
733# -- wx.SizeReportCtrl --
734# (a utility control that always reports it's client size)
735
736class SizeReportCtrl(wx.PyControl):
737
738 def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
739 size=wx.DefaultSize, mgr=None):
740
741 wx.PyControl.__init__(self, parent, id, pos, size, wx.NO_BORDER)
742
743 self._mgr = mgr
744
745 self.Bind(wx.EVT_PAINT, self.OnPaint)
746 self.Bind(wx.EVT_SIZE, self.OnSize)
747 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
748
749
750 def OnPaint(self, event):
751
752 dc = wx.PaintDC(self)
753
754 size = self.GetClientSize()
755 s = ("Size: %d x %d")%(size.x, size.y)
756
757 dc.SetFont(wx.NORMAL_FONT)
758 w, height = dc.GetTextExtent(s)
759 height = height + 3
760 dc.SetBrush(wx.WHITE_BRUSH)
761 dc.SetPen(wx.WHITE_PEN)
762 dc.DrawRectangle(0, 0, size.x, size.y)
763 dc.SetPen(wx.LIGHT_GREY_PEN)
764 dc.DrawLine(0, 0, size.x, size.y)
765 dc.DrawLine(0, size.y, size.x, 0)
766 dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2))
767
768 if self._mgr:
769
770 pi = self._mgr.GetPane(self)
771
772 s = ("Layer: %d")%pi.dock_layer
773 w, h = dc.GetTextExtent(s)
774 dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*1))
775
776 s = ("Dock: %d Row: %d")%(pi.dock_direction, pi.dock_row)
777 w, h = dc.GetTextExtent(s)
778 dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*2))
779
780 s = ("Position: %d")%pi.dock_pos
781 w, h = dc.GetTextExtent(s)
782 dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*3))
783
784 s = ("Proportion: %d")%pi.dock_proportion
785 w, h = dc.GetTextExtent(s)
786 dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*4))
787
788
789 def OnEraseBackground(self, event):
790 # intentionally empty
791 pass
792
793
794 def OnSize(self, event):
795
796 self.Refresh()
797 event.Skip()
798
799
800ID_PaneBorderSize = wx.ID_HIGHEST + 1
801ID_SashSize = ID_PaneBorderSize + 1
802ID_CaptionSize = ID_PaneBorderSize + 2
803ID_BackgroundColor = ID_PaneBorderSize + 3
804ID_SashColor = ID_PaneBorderSize + 4
805ID_InactiveCaptionColor = ID_PaneBorderSize + 5
806ID_InactiveCaptionGradientColor = ID_PaneBorderSize + 6
807ID_InactiveCaptionTextColor = ID_PaneBorderSize + 7
808ID_ActiveCaptionColor = ID_PaneBorderSize + 8
809ID_ActiveCaptionGradientColor = ID_PaneBorderSize + 9
810ID_ActiveCaptionTextColor = ID_PaneBorderSize + 10
811ID_BorderColor = ID_PaneBorderSize + 11
812ID_GripperColor = ID_PaneBorderSize + 12
813
814class SettingsPanel(wx.Panel):
815
816 def __init__(self, parent, frame):
817
818 wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition,
819 wx.DefaultSize)
820
821 self._frame = frame
822
823 vert = wx.BoxSizer(wx.VERTICAL)
824
825 s1 = wx.BoxSizer(wx.HORIZONTAL)
826 self._border_size = wx.SpinCtrl(self, ID_PaneBorderSize, "", wx.DefaultPosition, wx.Size(50,20))
827 s1.Add((1, 1), 1, wx.EXPAND)
828 s1.Add(wx.StaticText(self, -1, "Pane Border Size:"))
829 s1.Add(self._border_size)
830 s1.Add((1, 1), 1, wx.EXPAND)
831 s1.SetItemMinSize(1, (180, 20))
832 #vert.Add(s1, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5)
833
834 s2 = wx.BoxSizer(wx.HORIZONTAL)
835 self._sash_size = wx.SpinCtrl(self, ID_SashSize, "", wx.DefaultPosition, wx.Size(50,20))
836 s2.Add((1, 1), 1, wx.EXPAND)
837 s2.Add(wx.StaticText(self, -1, "Sash Size:"))
838 s2.Add(self._sash_size)
839 s2.Add((1, 1), 1, wx.EXPAND)
840 s2.SetItemMinSize(1, (180, 20))
841 #vert.Add(s2, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5)
842
843 s3 = wx.BoxSizer(wx.HORIZONTAL)
844 self._caption_size = wx.SpinCtrl(self, ID_CaptionSize, "", wx.DefaultPosition, wx.Size(50,20))
845 s3.Add((1, 1), 1, wx.EXPAND)
846 s3.Add(wx.StaticText(self, -1, "Caption Size:"))
847 s3.Add(self._caption_size)
848 s3.Add((1, 1), 1, wx.EXPAND)
849 s3.SetItemMinSize(1, (180, 20))
850 #vert.Add(s3, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5)
851
852 #vert.Add(1, 1, 1, wx.EXPAND)
853
854 b = self.CreateColorBitmap(wx.BLACK)
855
856 s4 = wx.BoxSizer(wx.HORIZONTAL)
857 self._background_color = wx.BitmapButton(self, ID_BackgroundColor, b, wx.DefaultPosition, wx.Size(50,25))
858 s4.Add((1, 1), 1, wx.EXPAND)
859 s4.Add(wx.StaticText(self, -1, "Background Color:"))
860 s4.Add(self._background_color)
861 s4.Add((1, 1), 1, wx.EXPAND)
862 s4.SetItemMinSize(1, (180, 20))
863
864 s5 = wx.BoxSizer(wx.HORIZONTAL)
865 self._sash_color = wx.BitmapButton(self, ID_SashColor, b, wx.DefaultPosition, wx.Size(50,25))
866 s5.Add((1, 1), 1, wx.EXPAND)
867 s5.Add(wx.StaticText(self, -1, "Sash Color:"))
868 s5.Add(self._sash_color)
869 s5.Add((1, 1), 1, wx.EXPAND)
870 s5.SetItemMinSize(1, (180, 20))
871
872 s6 = wx.BoxSizer(wx.HORIZONTAL)
873 self._inactive_caption_color = wx.BitmapButton(self, ID_InactiveCaptionColor, b,
874 wx.DefaultPosition, wx.Size(50,25))
875 s6.Add((1, 1), 1, wx.EXPAND)
876 s6.Add(wx.StaticText(self, -1, "Normal Caption:"))
877 s6.Add(self._inactive_caption_color)
878 s6.Add((1, 1), 1, wx.EXPAND)
879 s6.SetItemMinSize(1, (180, 20))
880
881 s7 = wx.BoxSizer(wx.HORIZONTAL)
882 self._inactive_caption_gradient_color = wx.BitmapButton(self, ID_InactiveCaptionGradientColor,
883 b, wx.DefaultPosition, wx.Size(50,25))
884 s7.Add((1, 1), 1, wx.EXPAND)
885 s7.Add(wx.StaticText(self, -1, "Normal Caption Gradient:"))
886 s7.Add(self._inactive_caption_gradient_color)
887 s7.Add((1, 1), 1, wx.EXPAND)
888 s7.SetItemMinSize(1, (180, 20))
889
890 s8 = wx.BoxSizer(wx.HORIZONTAL)
891 self._inactive_caption_text_color = wx.BitmapButton(self, ID_InactiveCaptionTextColor, b,
892 wx.DefaultPosition, wx.Size(50,25))
893 s8.Add((1, 1), 1, wx.EXPAND)
894 s8.Add(wx.StaticText(self, -1, "Normal Caption Text:"))
895 s8.Add(self._inactive_caption_text_color)
896 s8.Add((1, 1), 1, wx.EXPAND)
897 s8.SetItemMinSize(1, (180, 20))
898
899 s9 = wx.BoxSizer(wx.HORIZONTAL)
900 self._active_caption_color = wx.BitmapButton(self, ID_ActiveCaptionColor, b,
901 wx.DefaultPosition, wx.Size(50,25))
902 s9.Add((1, 1), 1, wx.EXPAND)
903 s9.Add(wx.StaticText(self, -1, "Active Caption:"))
904 s9.Add(self._active_caption_color)
905 s9.Add((1, 1), 1, wx.EXPAND)
906 s9.SetItemMinSize(1, (180, 20))
907
908 s10 = wx.BoxSizer(wx.HORIZONTAL)
909 self._active_caption_gradient_color = wx.BitmapButton(self, ID_ActiveCaptionGradientColor,
910 b, wx.DefaultPosition, wx.Size(50,25))
911 s10.Add((1, 1), 1, wx.EXPAND)
912 s10.Add(wx.StaticText(self, -1, "Active Caption Gradient:"))
913 s10.Add(self._active_caption_gradient_color)
914 s10.Add((1, 1), 1, wx.EXPAND)
915 s10.SetItemMinSize(1, (180, 20))
916
917 s11 = wx.BoxSizer(wx.HORIZONTAL)
918 self._active_caption_text_color = wx.BitmapButton(self, ID_ActiveCaptionTextColor,
919 b, wx.DefaultPosition, wx.Size(50,25))
920 s11.Add((1, 1), 1, wx.EXPAND)
921 s11.Add(wx.StaticText(self, -1, "Active Caption Text:"))
922 s11.Add(self._active_caption_text_color)
923 s11.Add((1, 1), 1, wx.EXPAND)
924 s11.SetItemMinSize(1, (180, 20))
925
926 s12 = wx.BoxSizer(wx.HORIZONTAL)
927 self._border_color = wx.BitmapButton(self, ID_BorderColor, b, wx.DefaultPosition,
928 wx.Size(50,25))
929 s12.Add((1, 1), 1, wx.EXPAND)
930 s12.Add(wx.StaticText(self, -1, "Border Color:"))
931 s12.Add(self._border_color)
932 s12.Add((1, 1), 1, wx.EXPAND)
933 s12.SetItemMinSize(1, (180, 20))
934
935 s13 = wx.BoxSizer(wx.HORIZONTAL)
936 self._gripper_color = wx.BitmapButton(self, ID_GripperColor, b, wx.DefaultPosition,
937 wx.Size(50,25))
938 s13.Add((1, 1), 1, wx.EXPAND)
939 s13.Add(wx.StaticText(self, -1, "Gripper Color:"))
940 s13.Add(self._gripper_color)
941 s13.Add((1, 1), 1, wx.EXPAND)
942 s13.SetItemMinSize(1, (180, 20))
943
944 grid_sizer = wx.GridSizer(0, 2)
945 grid_sizer.SetHGap(5)
946 grid_sizer.Add(s1)
947 grid_sizer.Add(s4)
948 grid_sizer.Add(s2)
949 grid_sizer.Add(s5)
950 grid_sizer.Add(s3)
951 grid_sizer.Add(s13)
952 grid_sizer.Add((1, 1))
953 grid_sizer.Add(s12)
954 grid_sizer.Add(s6)
955 grid_sizer.Add(s9)
956 grid_sizer.Add(s7)
957 grid_sizer.Add(s10)
958 grid_sizer.Add(s8)
959 grid_sizer.Add(s11)
960
961 cont_sizer = wx.BoxSizer(wx.VERTICAL)
962 cont_sizer.Add(grid_sizer, 1, wx.EXPAND | wx.ALL, 5)
963 self.SetSizer(cont_sizer)
964 self.GetSizer().SetSizeHints(self)
965
de824c0c
RD
966 self._border_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE))
967 self._sash_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_SASH_SIZE))
968 self._caption_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE))
febb39df
RD
969
970 self.UpdateColors()
971
972 self.Bind(wx.EVT_SPINCTRL, self.OnPaneBorderSize, id=ID_PaneBorderSize)
973 self.Bind(wx.EVT_SPINCTRL, self.OnSashSize, id=ID_SashSize)
974 self.Bind(wx.EVT_SPINCTRL, self.OnCaptionSize, id=ID_CaptionSize)
975 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_BackgroundColor)
976 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_SashColor)
977 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionColor)
978 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionGradientColor)
979 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionTextColor)
980 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionColor)
981 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionGradientColor)
982 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionTextColor)
983 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_BorderColor)
984 self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_GripperColor)
985
986
987 def CreateColorBitmap(self, c):
988 image = wx.EmptyImage(25, 14)
989
990 for x in xrange(25):
991 for y in xrange(14):
992 pixcol = c
993 if x == 0 or x == 24 or y == 0 or y == 13:
994 pixcol = wx.BLACK
995
996 image.SetRGB(x, y, pixcol.Red(), pixcol.Green(), pixcol.Blue())
997
998 return image.ConvertToBitmap()
999
1000
1001 def UpdateColors(self):
1002
de824c0c 1003 bk = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BACKGROUND_COLOUR)
febb39df
RD
1004 self._background_color.SetBitmapLabel(self.CreateColorBitmap(bk))
1005
de824c0c 1006 cap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR)
febb39df
RD
1007 self._inactive_caption_color.SetBitmapLabel(self.CreateColorBitmap(cap))
1008
de824c0c 1009 capgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR)
febb39df
RD
1010 self._inactive_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(capgrad))
1011
de824c0c 1012 captxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR)
febb39df
RD
1013 self._inactive_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(captxt))
1014
de824c0c 1015 acap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR)
febb39df
RD
1016 self._active_caption_color.SetBitmapLabel(self.CreateColorBitmap(acap))
1017
de824c0c 1018 acapgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR)
febb39df
RD
1019 self._active_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(acapgrad))
1020
de824c0c 1021 acaptxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR)
febb39df
RD
1022 self._active_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(acaptxt))
1023
de824c0c 1024 sash = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_SASH_COLOUR)
febb39df
RD
1025 self._sash_color.SetBitmapLabel(self.CreateColorBitmap(sash))
1026
de824c0c 1027 border = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BORDER_COLOUR)
febb39df
RD
1028 self._border_color.SetBitmapLabel(self.CreateColorBitmap(border))
1029
de824c0c 1030 gripper = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_GRIPPER_COLOUR)
febb39df
RD
1031 self._gripper_color.SetBitmapLabel(self.CreateColorBitmap(gripper))
1032
1033
1034 def OnPaneBorderSize(self, event):
1035
de824c0c 1036 self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE,
febb39df
RD
1037 event.GetInt())
1038 self._frame.DoUpdate()
1039
1040
1041 def OnSashSize(self, event):
1042
de824c0c 1043 self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_SASH_SIZE,
febb39df
RD
1044 event.GetInt())
1045 self._frame.DoUpdate()
1046
1047
1048 def OnCaptionSize(self, event):
1049
de824c0c 1050 self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE,
febb39df
RD
1051 event.GetInt())
1052 self._frame.DoUpdate()
1053
1054
1055 def OnSetColor(self, event):
1056
1057 dlg = wx.ColourDialog(self._frame)
1058
1059 dlg.SetTitle("Color Picker")
1060
1061 if dlg.ShowModal() != wx.ID_OK:
1062 return
1063
1064 var = 0
1065 if event.GetId() == ID_BackgroundColor:
de824c0c 1066 var = wx.aui.AUI_DOCKART_BACKGROUND_COLOUR
febb39df 1067 elif event.GetId() == ID_SashColor:
de824c0c 1068 var = wx.aui.AUI_DOCKART_SASH_COLOUR
febb39df 1069 elif event.GetId() == ID_InactiveCaptionColor:
de824c0c 1070 var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR
febb39df 1071 elif event.GetId() == ID_InactiveCaptionGradientColor:
de824c0c 1072 var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR
febb39df 1073 elif event.GetId() == ID_InactiveCaptionTextColor:
de824c0c 1074 var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR
febb39df 1075 elif event.GetId() == ID_ActiveCaptionColor:
de824c0c 1076 var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR
febb39df 1077 elif event.GetId() == ID_ActiveCaptionGradientColor:
de824c0c 1078 var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR
febb39df 1079 elif event.GetId() == ID_ActiveCaptionTextColor:
de824c0c 1080 var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR
febb39df 1081 elif event.GetId() == ID_BorderColor:
de824c0c 1082 var = wx.aui.AUI_DOCKART_BORDER_COLOUR
febb39df 1083 elif event.GetId() == ID_GripperColor:
de824c0c 1084 var = wx.aui.AUI_DOCKART_GRIPPER_COLOUR
febb39df
RD
1085 else:
1086 return
1087
1088 self._frame.GetDockArt().SetColor(var, dlg.GetColourData().GetColour())
1089 self._frame.DoUpdate()
1090 self.UpdateColors()
1091
1092
1093
1094#----------------------------------------------------------------------
1095
1096class TestPanel(wx.Panel):
1097 def __init__(self, parent, log):
1098 self.log = log
1099 wx.Panel.__init__(self, parent, -1)
1100 b = wx.Button(self, -1, "Show the wx.aui Demo Frame", (50,50))
1101 self.Bind(wx.EVT_BUTTON, self.OnButton, b)
1102
1103 def OnButton(self, evt):
1104 frame = PyAUIFrame(self, wx.ID_ANY, "wx.aui wxPython Demo", size=(750, 590))
1105 frame.Show()
1106
1107#----------------------------------------------------------------------
1108
1109def runTest(frame, nb, log):
1110 win = TestPanel(nb, log)
1111 return win
1112
1113#----------------------------------------------------------------------
1114
1115
1116
1117overview = """\
1118<html><body>
1119<h3>wx.aui, the Advanced User Interface module</h3>
1120
1121<br/><b>Overview</b><br/>
1122
1123<p>wx.aui is an Advanced User Interface library for the wxWidgets toolkit
1124that allows developers to create high-quality, cross-platform user
1125interfaces quickly and easily.</p>
1126
1127<p><b>Features</b></p>
1128
1129<p>With wx.aui developers can create application frameworks with:</p>
1130
1131<ul>
1132<li>Native, dockable floating frames</li>
1133<li>Perspective saving and loading</li>
1134<li>Native toolbars incorporating real-time, &quot;spring-loaded&quot; dragging</li>
1135<li>Customizable floating/docking behavior</li>
1136<li>Completely customizable look-and-feel</li>
1137<li>Optional transparent window effects (while dragging or docking)</li>
1138</ul>
1139
1140</body></html>
1141"""
1142
1143
1144
1145
1146if __name__ == '__main__':
1147 import sys,os
1148 import run
1149 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
1150