mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
improved object palette tree loading time
This commit is contained in:
parent
4fd129413a
commit
d97bdd1440
@ -29,7 +29,8 @@ class ObjectPaletteUI(wx.Panel):
|
|||||||
self.palette = self.editor.objectPalette
|
self.palette = self.editor.objectPalette
|
||||||
self.tree = ObjectPaletteTreeCtrl(self)
|
self.tree = ObjectPaletteTreeCtrl(self)
|
||||||
root = self.tree.AddRoot('Objects')
|
root = self.tree.AddRoot('Objects')
|
||||||
self.addTreeNodes(root, self.palette.dataStruct, self.palette.dataKeys)
|
self.dataKeys = self.palette.dataKeys[:]
|
||||||
|
self.addTreeNodes(root, self.palette.rootName, self.palette.dataStruct, self.dataKeys)
|
||||||
|
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
sizer.Add(self.tree, 1, wx.EXPAND, 0)
|
sizer.Add(self.tree, 1, wx.EXPAND, 0)
|
||||||
@ -76,27 +77,20 @@ class ObjectPaletteUI(wx.Panel):
|
|||||||
item, cookie = self.tree.GetNextChild(parent, cookie)
|
item, cookie = self.tree.GetNextChild(parent, cookie)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def addTreeNode(self, itemText, parentItem, items):
|
def addTreeNodes(self, parentItem, parentItemName, items, itemKeys):
|
||||||
newItem = wx.TreeItemId
|
roots = []
|
||||||
parentText = items[itemText]
|
rootItems = []
|
||||||
if parentText == self.palette.rootName:
|
#import pdb;set_trace()
|
||||||
newItem = self.tree.AppendItem(parentItem, itemText)
|
|
||||||
self.tree.SetItemPyData(newItem, itemText)
|
|
||||||
else:
|
|
||||||
item = self.traverse(parentItem, parentText)
|
|
||||||
if item is None:
|
|
||||||
item = self.addTreeNode(parentText, parentItem, items)
|
|
||||||
|
|
||||||
newItem = self.tree.AppendItem(item, itemText)
|
|
||||||
self.tree.SetItemPyData(newItem, itemText)
|
|
||||||
|
|
||||||
return newItem
|
|
||||||
|
|
||||||
def addTreeNodes(self, parentItem, items, itemKeys):
|
|
||||||
for key in itemKeys:
|
for key in itemKeys:
|
||||||
item = self.traverse(parentItem, key)
|
if parentItemName == items[key]:
|
||||||
if item is None:
|
roots.append(key)
|
||||||
newItem = self.addTreeNode(key, parentItem, items)
|
for root in roots:
|
||||||
|
newItem = self.tree.AppendItem(parentItem, root)
|
||||||
|
self.tree.SetItemPyData(newItem, root)
|
||||||
|
rootItems.append(newItem)
|
||||||
|
itemKeys.remove(root)
|
||||||
|
for rootItem in rootItems:
|
||||||
|
self.addTreeNodes(rootItem, self.tree.GetItemText(rootItem), items, itemKeys)
|
||||||
|
|
||||||
def SortTreeNodes(self, parent):
|
def SortTreeNodes(self, parent):
|
||||||
self.tree.SortChildren(parent)
|
self.tree.SortChildren(parent)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user