📄 aui_dockingwindowmgr.py
字号:
import wx
import wx.grid
import wx.html
import wx.aui
import cStringIO
ID_CreateTree = wx.NewId()
ID_CreateGrid = wx.NewId()
ID_CreateText = wx.NewId()
ID_CreateHTML = wx.NewId()
ID_CreateSizeReport = wx.NewId()
ID_GridContent = wx.NewId()
ID_TextContent = wx.NewId()
ID_TreeContent = wx.NewId()
ID_HTMLContent = wx.NewId()
ID_SizeReportContent = wx.NewId()
ID_CreatePerspective = wx.NewId()
ID_CopyPerspective = wx.NewId()
ID_TransparentHint = wx.NewId()
ID_VenetianBlindsHint = wx.NewId()
ID_RectangleHint = wx.NewId()
ID_NoHint = wx.NewId()
ID_HintFade = wx.NewId()
ID_AllowFloating = wx.NewId()
ID_NoVenetianFade = wx.NewId()
ID_TransparentDrag = wx.NewId()
ID_AllowActivePane = wx.NewId()
ID_NoGradient = wx.NewId()
ID_VerticalGradient = wx.NewId()
ID_HorizontalGradient = wx.NewId()
ID_Settings = wx.NewId()
ID_About = wx.NewId()
ID_FirstPerspective = ID_CreatePerspective+1000
#----------------------------------------------------------------------
def GetMondrianData():
return \
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\
\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\
ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\
o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\
\xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\
\x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\
\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82'
def GetMondrianBitmap():
return wx.BitmapFromImage(GetMondrianImage())
def GetMondrianImage():
stream = cStringIO.StringIO(GetMondrianData())
return wx.ImageFromStream(stream)
def GetMondrianIcon():
icon = wx.EmptyIcon()
icon.CopyFromBitmap(GetMondrianBitmap())
return icon
class PyAUIFrame(wx.Frame):
def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE |
wx.SUNKEN_BORDER |
wx.CLIP_CHILDREN):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
# tell FrameManager to manage this frame
self._mgr = wx.aui.AuiManager()
self._mgr.SetManagedWindow(self)
self._perspectives = []
self.n = 0
self.x = 0
self.SetIcon(GetMondrianIcon())
# create menu
mb = wx.MenuBar()
file_menu = wx.Menu()
file_menu.Append(wx.ID_EXIT, "Exit")
view_menu = wx.Menu()
view_menu.Append(ID_CreateText, "Create Text Control")
view_menu.Append(ID_CreateHTML, "Create HTML Control")
view_menu.Append(ID_CreateTree, "Create Tree")
view_menu.Append(ID_CreateGrid, "Create Grid")
view_menu.Append(ID_CreateSizeReport, "Create Size Reporter")
view_menu.AppendSeparator()
view_menu.Append(ID_GridContent, "Use a Grid for the Content Pane")
view_menu.Append(ID_TextContent, "Use a Text Control for the Content Pane")
view_menu.Append(ID_HTMLContent, "Use an HTML Control for the Content Pane")
view_menu.Append(ID_TreeContent, "Use a Tree Control for the Content Pane")
view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane")
options_menu = wx.Menu()
options_menu.AppendRadioItem(ID_TransparentHint, "Transparent Hint")
options_menu.AppendRadioItem(ID_VenetianBlindsHint, "Venetian Blinds Hint")
options_menu.AppendRadioItem(ID_RectangleHint, "Rectangle Hint")
options_menu.AppendRadioItem(ID_NoHint, "No Hint")
options_menu.AppendSeparator();
options_menu.AppendCheckItem(ID_HintFade, "Hint Fade-in")
options_menu.AppendCheckItem(ID_AllowFloating, "Allow Floating")
options_menu.AppendCheckItem(ID_NoVenetianFade, "Disable Venetian Blinds Hint Fade-in")
options_menu.AppendCheckItem(ID_TransparentDrag, "Transparent Drag")
options_menu.AppendCheckItem(ID_AllowActivePane, "Allow Active Pane")
options_menu.AppendSeparator();
options_menu.AppendRadioItem(ID_NoGradient, "No Caption Gradient")
options_menu.AppendRadioItem(ID_VerticalGradient, "Vertical Caption Gradient")
options_menu.AppendRadioItem(ID_HorizontalGradient, "Horizontal Caption Gradient")
options_menu.AppendSeparator();
options_menu.Append(ID_Settings, "Settings Pane")
self._perspectives_menu = wx.Menu()
self._perspectives_menu.Append(ID_CreatePerspective, "Create Perspective")
self._perspectives_menu.Append(ID_CopyPerspective, "Copy Perspective Data To Clipboard")
self._perspectives_menu.AppendSeparator()
self._perspectives_menu.Append(ID_FirstPerspective+0, "Default Startup")
self._perspectives_menu.Append(ID_FirstPerspective+1, "All Panes")
self._perspectives_menu.Append(ID_FirstPerspective+2, "Vertical Toolbar")
help_menu = wx.Menu()
help_menu.Append(ID_About, "About...")
mb.Append(file_menu, "File")
mb.Append(view_menu, "View")
mb.Append(self._perspectives_menu, "Perspectives")
mb.Append(options_menu, "Options")
mb.Append(help_menu, "Help")
self.SetMenuBar(mb)
self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
self.statusbar.SetStatusWidths([-2, -3])
self.statusbar.SetStatusText("Ready", 0)
self.statusbar.SetStatusText("Welcome To wxPython!", 1)
# min size for the frame itself isn't completely done.
# see the end up FrameManager::Update() for the test
# code. For now, just hard code a frame minimum size
self.SetMinSize(wx.Size(400, 300))
# create some toolbars
tb1 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb1.SetToolBitmapSize(wx.Size(48,48))
tb1.AddLabelTool(101, "Test", wx.ArtProvider_GetBitmap(wx.ART_ERROR))
tb1.AddSeparator()
tb1.AddLabelTool(102, "Test", wx.ArtProvider_GetBitmap(wx.ART_QUESTION))
tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_INFORMATION))
tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_WARNING))
tb1.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_MISSING_IMAGE))
tb1.Realize()
tb2 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb2.SetToolBitmapSize(wx.Size(16,16))
tb2_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_QUESTION, wx.ART_OTHER, wx.Size(16, 16))
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddSeparator()
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddSeparator()
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.AddLabelTool(101, "Test", tb2_bmp1)
tb2.Realize()
tb3 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER)
tb3.SetToolBitmapSize(wx.Size(16,16))
tb3_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16, 16))
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddSeparator()
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.AddLabelTool(101, "Test", tb3_bmp1)
tb3.Realize()
tb4 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_HORZ_TEXT)
tb4.SetToolBitmapSize(wx.Size(16,16))
tb4_bmp1 = wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16, 16))
tb4.AddLabelTool(101, "Item 1", tb4_bmp1)
tb4.AddLabelTool(101, "Item 2", tb4_bmp1)
tb4.AddLabelTool(101, "Item 3", tb4_bmp1)
tb4.AddLabelTool(101, "Item 4", tb4_bmp1)
tb4.AddSeparator()
tb4.AddLabelTool(101, "Item 5", tb4_bmp1)
tb4.AddLabelTool(101, "Item 6", tb4_bmp1)
tb4.AddLabelTool(101, "Item 7", tb4_bmp1)
tb4.AddLabelTool(101, "Item 8", tb4_bmp1)
tb4.Realize()
tb5 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_VERTICAL)
tb5.SetToolBitmapSize(wx.Size(48, 48))
tb5.AddLabelTool(101, "Test", wx.ArtProvider_GetBitmap(wx.ART_ERROR))
tb5.AddSeparator()
tb5.AddLabelTool(102, "Test", wx.ArtProvider_GetBitmap(wx.ART_QUESTION))
tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_INFORMATION))
tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_WARNING))
tb5.AddLabelTool(103, "Test", wx.ArtProvider_GetBitmap(wx.ART_MISSING_IMAGE))
tb5.Realize()
# add a bunch of panes
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test1").Caption("Pane Caption").Top().
CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test2").Caption("Client Size Reporter").
Bottom().Position(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test3").Caption("Client Size Reporter").
Bottom().CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test4").Caption("Pane Caption").
Left().CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test5").Caption("Pane Caption").
Right().CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test6").Caption("Client Size Reporter").
Right().Row(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test7").Caption("Client Size Reporter").
Left().Layer(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().
Name("test8").Caption("Tree Pane").
Left().Layer(1).Position(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test9").Caption("Min Size 200x100").
BestSize(wx.Size(200,100)).MinSize(wx.Size(200,100)).
Bottom().Layer(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo().
Name("test10").Caption("Text Pane").
Bottom().Layer(1).Position(1).CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().
Name("test11").Caption("Fixed Pane").
Bottom().Layer(1).Position(2).Fixed().CloseButton(True).MaximizeButton(True))
self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo().
Name("settings").Caption("Dock Manager Settings").
Dockable(False).Float().Hide().CloseButton(True).MaximizeButton(True))
# create some center panes
self._mgr.AddPane(self.CreateGrid(), wx.aui.AuiPaneInfo().Name("grid_content").
CenterPane().Hide())
self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().Name("tree_content").
CenterPane().Hide())
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().Name("sizereport_content").
CenterPane().Hide())
self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo().Name("text_content").
CenterPane().Hide())
self._mgr.AddPane(self.CreateHTMLCtrl(), wx.aui.AuiPaneInfo().Name("html_content").
CenterPane())
# add the toolbars to the manager
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -