Files
Phoenix/demo/agw/PersistentControls.py
Robin Dunn f039f7c367 Initial port of wxPython demo from Classic to Phoenix.
Pulled and squashed from https://github.com/RobinD42/Phoenix/pull/7
Thanks Metallicow!

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@74199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-06-13 06:06:29 +00:00

577 lines
20 KiB
Python

import wx
import os
import sys
import images
import random
from wx.lib.expando import ExpandoTextCtrl
import wx.lib.agw.aui as AUI
import wx.lib.agw.floatspin as FS
try:
dirName = os.path.dirname(os.path.abspath(__file__))
except:
dirName = os.path.dirname(os.path.abspath(sys.argv[0]))
sys.path.append(os.path.split(dirName)[0])
try:
import agw.persist as PM
except ImportError: # if it's not there locally, try the wxPython lib.
import wx.lib.agw.persist as PM
_sampleText1 = "wx.Frame with AUI perspective, wx.MenuBar, wx.ColourDialog, " \
"wx.FindReplaceDialog, wx.FontDialog, wx.TextEntryDialog, " \
"wx.ColourPickerCtrl, wx.DirPickerCtrl, wx.FilePickerCtrl, " \
"AuiToolBar, wx.RadioBox, wx.ToggleButton, wx.ComboBox, " \
"wx.Slider, wx.SpinCtrl, FloatSpin\n\n" \
"PersistenceManager Style: PM.PM_DEFAULT_STYLE\n"
_sampleText2 = "wx.Frame, wx.SplitterWindow, wx.TreeCtrl, wx.Notebook, " \
"wx.CheckListBox, wx.CheckBox, wx.SearchCtrl, wx.TextCtrl, " \
"wx.DatePickerCtrl, wx.Choice, AuiNotebook, wx.ListCtrl, " \
"TreeListCtrl, wx.HtmlListBox\n\nPersistenceManager Style: " \
"PM.PM_SAVE_RESTORE_TREE_LIST_SELECTIONS\n"
_sampleList = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
_sampleList2 = _sampleList + ['nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen']
_title = "PersistentControls for wxPython :-D "
_configFile1 = os.path.join(dirName, "Example1")
_configFile2 = os.path.join(dirName, "Example2")
ID_AuiToolBar = wx.ID_HIGHEST + 100
class PersistentPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent)
mainSizer = wx.BoxSizer(wx.VERTICAL)
sizer = wx.FlexGridSizer(3, 2, 10, 10)
btn1 = wx.Button(self, -1, "Example 1")
text1 = ExpandoTextCtrl(self, -1, _sampleText1, size=(300,-1), style=wx.TE_READONLY)
btn2 = wx.Button(self, -1, "Example 2")
text2 = ExpandoTextCtrl(self, -1, _sampleText2, size=(300,-1), style=wx.TE_READONLY)
sizer.Add(btn1, 0, wx.ALIGN_CENTER)
sizer.Add(text1, 1, wx.EXPAND)
sizer.Add(btn2, 0, wx.ALIGN_CENTER)
sizer.Add(text2, 1, wx.EXPAND)
sizer.AddGrowableCol(1)
mainSizer.Add(sizer, 1, wx.EXPAND|wx.ALL, 20)
self.SetSizer(mainSizer)
mainSizer.Layout()
btn1.Bind(wx.EVT_BUTTON, self.OnExample1)
btn2.Bind(wx.EVT_BUTTON, self.OnExample2)
def OnExample1(self, event):
frame = PersistentFrame1(self, _title + "- Example 1", (700, 500))
def OnExample2(self, event):
frame = PersistentFrame2(self, _title + "- Example 2", (700, 500))
class PersistentFrame1(wx.Frame):
def __init__(self, parent, title, size):
wx.Frame.__init__(self, parent, -1, title, size=size, name="Example1")
self._auiMgr = AUI.AuiManager()
self._auiMgr.SetManagedWindow(self)
self._persistMgr = PM.PersistenceManager.Get()
self._persistMgr.SetPersistenceFile(_configFile1)
self.CreateMenuBar()
self.CreateAuiToolBar()
self.BuildPanes()
self.SetIcon(images.Mondrian.Icon)
self.CenterOnParent()
self.Show()
self.Bind(wx.EVT_CLOSE, self.OnClose)
wx.CallAfter(self.RegisterControls)
def CreateMenuBar(self):
# Prepare the menu bar
menuBar = wx.MenuBar()
menuBar.SetName("MenuBar1")
# 1st menu from left
menu1 = wx.Menu()
menu1.Append(101, "wx.Colo&urDialog")
menu1.Append(102, "wx.F&ontDialog")
menu1.AppendSeparator()
menu1.Append(103, "wx.&TextEntryDialog")
menu1.AppendSeparator()
menu1.Append(105, "&Close", "Close this frame")
# Add menu to the menu bar
menuBar.Append(menu1, "&Dialogs")
menu2 = wx.Menu()
# Radio items
menu2.Append(201, "Radio 1-1", "", wx.ITEM_RADIO)
menu2.Append(202, "Radio 1-2", "", wx.ITEM_RADIO)
menu2.Append(203, "Radio 1-3", "", wx.ITEM_RADIO)
menu2.AppendSeparator()
menu2.Append(204, "Radio 2-1", "", wx.ITEM_RADIO)
menu2.Append(205, "Radio 2-2", "", wx.ITEM_RADIO)
menuBar.Append(menu2, "&Radio Items")
menu3 = wx.Menu()
# Check menu items
menu3.Append(301, "Check 1", "", wx.ITEM_CHECK)
menu3.Append(302, "Check 2", "", wx.ITEM_CHECK)
menu3.Append(303, "Check 3", "", wx.ITEM_CHECK)
menuBar.Append(menu3, "Chec&k Items")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU_RANGE, self.OnDialogs, id=101, id2=103)
self.Bind(wx.EVT_MENU, self.CloseWindow, id=105)
def CreateAuiToolBar(self):
tb3 = AUI.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, AUI.AUI_TB_DEFAULT_STYLE)
tb3.SetName("AuiToolBar")
tb3.SetToolBitmapSize(wx.Size(16, 16))
tb3_bmp1 = wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16, 16))
tb3.AddSimpleTool(ID_AuiToolBar, "Check 1", tb3_bmp1, "Check 1", AUI.ITEM_CHECK)
tb3.AddSimpleTool(ID_AuiToolBar+1, "Check 2", tb3_bmp1, "Check 2", AUI.ITEM_CHECK)
tb3.AddSimpleTool(ID_AuiToolBar+2, "Check 3", tb3_bmp1, "Check 3", AUI.ITEM_CHECK)
tb3.AddSimpleTool(ID_AuiToolBar+3, "Check 4", tb3_bmp1, "Check 4", AUI.ITEM_CHECK)
tb3.AddSeparator()
tb3.AddSimpleTool(ID_AuiToolBar+4, "Radio 1", tb3_bmp1, "Radio 1", AUI.ITEM_RADIO)
tb3.AddSimpleTool(ID_AuiToolBar+5, "Radio 2", tb3_bmp1, "Radio 2", AUI.ITEM_RADIO)
tb3.AddSimpleTool(ID_AuiToolBar+6, "Radio 3", tb3_bmp1, "Radio 3", AUI.ITEM_RADIO)
tb3.AddSeparator()
tb3.AddSimpleTool(ID_AuiToolBar+7, "Radio 1 (Group 2)", tb3_bmp1, "Radio 1 (Group 2)", AUI.ITEM_RADIO)
tb3.AddSimpleTool(ID_AuiToolBar+8, "Radio 2 (Group 2)", tb3_bmp1, "Radio 2 (Group 2)", AUI.ITEM_RADIO)
tb3.AddSimpleTool(ID_AuiToolBar+9, "Radio 3 (Group 2)", tb3_bmp1, "Radio 3 (Group 2)", AUI.ITEM_RADIO)
tb3.Realize()
self._auiMgr.AddPane(tb3, AUI.AuiPaneInfo().Name("tb3").Caption("AuiToolbar").ToolbarPane().Top())
def BuildPanes(self):
pickerPanel = wx.Panel(self)
box1 = wx.BoxSizer(wx.VERTICAL)
fgs = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
fgs.Add(wx.StaticText(pickerPanel, -1, "wx.ColourPickerCtrl:"), 0, wx.ALIGN_CENTER_VERTICAL)
cp1 = wx.ColourPickerCtrl(pickerPanel, name="ColourPicker1")
fgs.Add(cp1, 0, wx.ALIGN_CENTER)
fgs.Add(wx.StaticText(pickerPanel, -1, " with label:"), 0, wx.ALIGN_CENTER_VERTICAL)
cp3 = wx.ColourPickerCtrl(pickerPanel, style=wx.CLRP_SHOW_LABEL, name="ColourPicker2")
fgs.Add(cp3, 0, wx.ALIGN_CENTER)
fgs.Add(wx.StaticText(pickerPanel, -1, "wx.DirPickerCtrl:"), 0, wx.ALIGN_CENTER_VERTICAL)
dp1 = wx.DirPickerCtrl(pickerPanel, name="DirPicker1")
fgs.Add(dp1, 0, wx.ALIGN_CENTER)
fgs.Add(wx.StaticText(pickerPanel, -1, "wx.FilePickerCtrl:"), 0, wx.ALIGN_CENTER_VERTICAL)
fp1 = wx.FilePickerCtrl(pickerPanel, name="FilePicker1")
fgs.Add(fp1, 0, wx.ALIGN_CENTER)
fgs.Add(wx.StaticText(pickerPanel, -1, "wx.FontPickerCtrl:"), 0, wx.ALIGN_CENTER_VERTICAL)
fnt1 = wx.FontPickerCtrl(pickerPanel, style=wx.FNTP_FONTDESC_AS_LABEL, name="FontPicker1")
fgs.Add(fnt1, 0, wx.ALIGN_CENTER)
box1.Add(fgs, 1, wx.EXPAND|wx.ALL, 5)
pickerPanel.SetSizer(box1)
box1.Layout()
otherPanel = wx.Panel(self)
box2 = wx.BoxSizer(wx.VERTICAL)
radiobox = wx.RadioBox(otherPanel, -1, "RadioBox", choices=_sampleList, majorDimension=2,
style=wx.RA_SPECIFY_COLS, name="RadioBox1")
toggle = wx.ToggleButton(otherPanel, -1, "ToggleButton", name="Toggle1")
combo = wx.ComboBox(otherPanel, -1, choices=_sampleList, style=wx.CB_DROPDOWN|wx.CB_READONLY,
name="ComboBox1")
boldFont = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, "")
box2 = wx.BoxSizer(wx.HORIZONTAL)
box2.Add((0, 0), 1)
box2.Add(radiobox, 0, wx.ALL|wx.ALIGN_CENTER, 5)
box2.Add((20, 0))
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add((20, 20), 1)
sizer_1.Add(toggle, 0, wx.ALL, 5)
sizer_1.Add((0, 10))
label_1 = wx.StaticText(otherPanel, -1, "ComboBox")
label_1.SetFont(boldFont)
sizer_1.Add(label_1, 0, wx.ALL, 5)
sizer_1.Add(combo, 0, wx.LEFT|wx.RIGHT, 5)
sizer_1.Add((20, 20), 1)
box2.Add(sizer_1, 1, wx.EXPAND|wx.ALIGN_CENTER, 0)
box2.Add((0, 0), 1, 1)
otherPanel.SetSizer(box2)
otherPanel2 = wx.Panel(self)
box3 = wx.BoxSizer(wx.VERTICAL)
gs1 = wx.FlexGridSizer(2, 3, 5, 10)
slider = wx.Slider(otherPanel2, -1, 3, 0, 10, style=wx.SL_HORIZONTAL|wx.SL_LABELS,
name="Slider1")
spinctrl = wx.SpinCtrl(otherPanel2, -1, "20", min=0, max=100, name="SpinCtrl1")
floatspin = FS.FloatSpin(otherPanel2, -1, value=150, min_val=20, max_val=200, name="FloatSpin1")
floatspin.SetDigits(2)
label_2 = wx.StaticText(otherPanel2, -1, "Slider")
label_2.SetFont(boldFont)
gs1.Add(label_2, 0, wx.ALIGN_CENTER_VERTICAL, 0)
label_3 = wx.StaticText(otherPanel2, -1, "SpinCtrl")
label_3.SetFont(boldFont)
gs1.Add(label_3, 0, wx.ALIGN_CENTER_VERTICAL, 0)
label_4 = wx.StaticText(otherPanel2, -1, "FloatSpin")
label_4.SetFont(boldFont)
gs1.Add(label_4, 0, wx.ALIGN_CENTER_VERTICAL, 0)
gs1.Add(slider, 0, wx.ALIGN_CENTER_VERTICAL, 0)
gs1.Add(spinctrl, 0, wx.ALIGN_CENTER_VERTICAL, 0)
gs1.Add(floatspin, 0, wx.ALIGN_CENTER_VERTICAL, 0)
gs1.AddGrowableCol(0)
gs1.AddGrowableCol(1)
gs1.AddGrowableCol(2)
box3.Add(gs1, 1, wx.EXPAND|wx.ALL, 5)
otherPanel2.SetSizer(box3)
self._auiMgr.AddPane(pickerPanel, AUI.AuiPaneInfo().Name("DummyPanel1").Caption("Pickers").
Left().MinSize(wx.Size(300, -1)).FloatingSize(wx.Size(300, 300)))
self._auiMgr.AddPane(otherPanel, AUI.AuiPaneInfo().Name("DummyPanel2").CenterPane())
self._auiMgr.AddPane(otherPanel2, AUI.AuiPaneInfo().Name("DummyPanel3").Bottom().
BestSize(wx.Size(-1, 200)).Caption("Slider & Spins").
FloatingSize(wx.Size(300, 300)))
self._auiMgr.Update()
def RegisterControls(self):
self.Freeze()
self.Register()
self.Thaw()
def Register(self, children=None):
if children is None:
self._persistMgr.RegisterAndRestore(self)
self._persistMgr.RegisterAndRestore(self.GetMenuBar())
children = self.GetChildren()
for child in children:
name = child.GetName()
if name not in PM.BAD_DEFAULT_NAMES and "widget" not in name and \
"wxSpinButton" not in name and "auiFloating" not in name and \
"AuiTabCtrl" not in name and "AuiNotebook" not in name:
self._persistMgr.RegisterAndRestore(child)
if child.GetChildren():
self.Register(child.GetChildren())
def CloseWindow(self, event):
self.Close()
def OnClose(self, event):
self._persistMgr.SaveAndUnregister()
event.Skip()
def OnDialogs(self, event):
evId = event.GetId()
if evId == 101:
# wx.ColourDialog
data = wx.ColourData()
dlg = wx.ColourDialog(self, data)
dlg.SetName("ColourDialog1")
elif evId == 102:
# wx.FontDialog
data = wx.FontData()
dlg = wx.FontDialog(self, data)
dlg.SetName("FontDialog1")
elif evId == 103:
# wx.TextEntryDialog
dlg = wx.TextEntryDialog(self, 'What is your favorite programming language?',
'Eh??', 'Python')
dlg.SetValue("Python is the best!")
dlg.SetName("TextEntryDialog1")
self._persistMgr.RegisterAndRestore(dlg)
if dlg.ShowModal() == wx.ID_OK:
self._persistMgr.Save(dlg)
self._persistMgr.Unregister(dlg)
dlg.Destroy()
# The wx.HtmlListBox derives from wx.VListBox, but draws each item
# itself as a wx.HtmlCell.
class MyHtmlListBox(wx.HtmlListBox):
def OnGetItem(self, n):
if n % 2 == 0:
return "This is item# <b>%d</b>" % n
else:
return "This is item# <b>%d</b> <br>Any <font color='RED'>HTML</font> is okay." % n
class PersistentFrame2(wx.Frame):
def __init__(self, parent, title, size):
wx.Frame.__init__(self, parent, -1, title, size=size, name="Example2")
self._persistMgr = PM.PersistenceManager.Get()
self._persistMgr.SetManagerStyle(PM.PM_DEFAULT_STYLE|PM.PM_SAVE_RESTORE_TREE_LIST_SELECTIONS)
self._persistMgr.SetPersistenceFile(_configFile2)
self.split1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER, name="Splitter1")
self.treectrl = self.CreateTreeListCtrl(False)
self.split2 = wx.SplitterWindow(self.split1, -1, style=wx.SP_3D|wx.SP_BORDER, name="Splitter2")
self.notebook = wx.Notebook(self.split2, name="Notebook1")
dummyPanel = wx.Panel(self.split2)
text = "Hello world!\nI am a simple wx.TextCtrl" \
"I will remember my value if you change it!"
self.checklistbox = wx.CheckListBox(dummyPanel, -1, choices=_sampleList2, name="CheckListBox1")
self.textctrl = wx.TextCtrl(dummyPanel, -1, text, style=wx.TE_MULTILINE, name="TextCtrl1")
self.searchctrl = wx.SearchCtrl(dummyPanel, -1, "", name="SearchCtrl1")
self.checkbox = wx.CheckBox(dummyPanel, -1, "CheckBox", name="CheckBox1")
self.datepickerctrl = wx.DatePickerCtrl(dummyPanel, style=wx.DP_DROPDOWN, name="DatePicker1")
self.choice = wx.Choice(dummyPanel, -1, choices=_sampleList, name="Choice1")
self.split2.SplitHorizontally(self.notebook, dummyPanel)
self.split1.SplitVertically(self.treectrl, self.split2)
self.DoLayout(dummyPanel)
self.SetIcon(images.Mondrian.Icon)
self.Bind(wx.EVT_CLOSE, self.OnClose)
wx.CallAfter(self.RegisterControls)
self.CenterOnParent()
self.Show()
def DoLayout(self, dummyPanel):
sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
sizer_6 = wx.BoxSizer(wx.VERTICAL)
self.notebook.AddPage(self.CreateNotebook(), "AuiNotebook")
self.notebook.AddPage(self.CreateListCtrl(), "wx.ListCtrl")
self.notebook.AddPage(self.CreateTreeListCtrl(True), "TreeListCtrl")
self.notebook.AddPage(self.CreateHtmlListBox(), "wx.HtmlListBox")
sizer_5.Add(self.checklistbox, 1, wx.EXPAND|wx.ALL, 5)
sizer_6.Add(self.textctrl, 1, wx.EXPAND|wx.BOTTOM, 10)
sizer_6.Add(self.searchctrl, 0, wx.BOTTOM, 10)
sizer_6.Add(self.checkbox, 0, wx.BOTTOM, 10)
sizer_6.Add(self.datepickerctrl, 0, wx.BOTTOM, 10)
sizer_6.Add(self.choice, 0, 0, 0)
sizer_5.Add(sizer_6, 1, wx.ALL|wx.EXPAND, 5)
dummyPanel.SetSizer(sizer_5)
self.Layout()
def CreateNotebook(self):
# create the notebook off-window to avoid flicker
ctrl = AUI.AuiNotebook(self.notebook, -1)
ctrl.SetName("AuiNotebook1")
page_bmp = wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16, 16))
ctrl.AddPage(wx.Panel(ctrl), "Page 1", False, page_bmp)
ctrl.AddPage(wx.TextCtrl(ctrl, -1, "Some text", wx.DefaultPosition, wx.DefaultSize,
wx.TE_MULTILINE|wx.NO_BORDER), "Page 1", False, page_bmp)
ctrl.AddPage(wx.TextCtrl(ctrl, -1, "Some more text", wx.DefaultPosition, wx.DefaultSize,
wx.TE_MULTILINE|wx.NO_BORDER), "Page 2")
ctrl.AddPage(wx.TextCtrl(ctrl, -1, "Some more text", wx.DefaultPosition, wx.DefaultSize,
wx.TE_MULTILINE|wx.NO_BORDER), "Page 3")
ctrl.AddPage(wx.TextCtrl(ctrl, -1, "Some more text", wx.DefaultPosition, wx.DefaultSize,
wx.TE_MULTILINE|wx.NO_BORDER), "Page 4")
return ctrl
def CreateListCtrl(self):
il = wx.ImageList(16, 16)
il.Add(images.Smiles.GetBitmap())
listCtrl = wx.ListCtrl(self.notebook, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER, name="ListCtrl1")
for col in xrange(6):
listCtrl.InsertColumn(col, "Column %d"%col)
listCtrl.AssignImageList(il, wx.IMAGE_LIST_SMALL)
text = "Row: %d, Col: %d"
for row in xrange(30):
if random.randint(0, 1):
idx = listCtrl.InsertImageStringItem(sys.maxint, text%(row+1, 1), 0)
else:
idx = listCtrl.InsertStringItem(sys.maxint, text%(row+1, 1))
for col in xrange(1, 6):
listCtrl.SetStringItem(idx, col, text%(row+1, col+1), random.randint(0, 1)-1)
return listCtrl
def CreateTreeListCtrl(self, isTreeList):
if isTreeList:
treeList = wx.gizmos.TreeListCtrl(self.notebook, style=wx.TR_DEFAULT_STYLE|wx.TR_FULL_ROW_HIGHLIGHT|
wx.SUNKEN_BORDER|wx.TR_MULTIPLE, name="TreeList1")
else:
treeList = wx.TreeCtrl(self.split1, style=wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER|wx.TR_MULTIPLE,
name="TreeCtrl1")
il = wx.ImageList(16, 16)
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16, 16)))
smileidx = il.Add(images.Smiles.GetBitmap())
treeList.AssignImageList(il)
if isTreeList:
# create some columns
treeList.AddColumn("Main column")
treeList.AddColumn("Column 1")
treeList.AddColumn("Column 2")
treeList.SetMainColumn(0) # the one with the tree in it...
treeList.SetColumnWidth(0, 175)
root = treeList.AddRoot("The Root Item")
if isTreeList:
treeList.SetItemText(root, "col 1 root", 1)
treeList.SetItemText(root, "col 2 root", 2)
treeList.SetItemImage(root, fldridx)
for x in range(15):
txt = "Item %d" % x
child = treeList.AppendItem(root, txt)
treeList.SetItemImage(child, smileidx)
if isTreeList:
treeList.SetItemText(child, txt + "(c1)", 1)
treeList.SetItemText(child, txt + "(c2)", 2)
for y in range(5):
txt = "item %d-%s" % (x, chr(ord("a")+y))
last = treeList.AppendItem(child, txt)
treeList.SetItemImage(last, fldridx)
if isTreeList:
treeList.SetItemText(last, txt + "(c1)", 1)
treeList.SetItemText(last, txt + "(c2)", 2)
for z in range(5):
txt = "item %d-%s-%d" % (x, chr(ord("a")+y), z)
item = treeList.AppendItem(last, txt)
treeList.SetItemImage(item, smileidx)
if isTreeList:
treeList.SetItemText(item, txt + "(c1)", 1)
treeList.SetItemText(item, txt + "(c2)", 2)
treeList.Expand(root)
return treeList
def CreateHtmlListBox(self):
hlb = MyHtmlListBox(self.notebook, -1, style=wx.BORDER_SUNKEN|wx.LB_MULTIPLE, name="HtmlListBox1")
hlb.SetItemCount(300)
hlb.SetSelection(0)
return hlb
def OnClose(self, event):
self._persistMgr.SaveAndUnregister()
event.Skip()
def RegisterControls(self):
self.Freeze()
self.Register()
self.Thaw()
def Register(self, children=None):
if children is None:
self._persistMgr.RegisterAndRestore(self)
children = self.GetChildren()
for child in children:
name = child.GetName()
if name not in PM.BAD_DEFAULT_NAMES and "wxtreelist" not in name and \
"AuiTabCtrl" not in name:
self._persistMgr.RegisterAndRestore(child)
if child.GetChildren():
self.Register(child.GetChildren())
#----------------------------------------------------------------------
def runTest(frame, nb, log):
win = PersistentPanel(nb, log)
return win
#----------------------------------------------------------------------
overview = PM.__doc__
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])