mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
fixed a problem with adding a pandaObject tree branch when adding a new pandaobject
This commit is contained in:
parent
29c61ac510
commit
bc84a2c412
@ -40,14 +40,12 @@ class SceneGraphUI(wx.Panel):
|
|||||||
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected)
|
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected)
|
||||||
self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.onBeginDrag)
|
self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.onBeginDrag)
|
||||||
|
|
||||||
|
def traversePandaObjects(self, parent, objNodePath):
|
||||||
def traversePandaObjects(self, item, objNodePath):
|
itemId = self.tree.GetItemPyData(parent)
|
||||||
itemId = self.tree.GetItemPyData(item)
|
|
||||||
i = 0
|
i = 0
|
||||||
# import pdb;pdb.set_trace()
|
|
||||||
for child in objNodePath.getChildren():
|
for child in objNodePath.getChildren():
|
||||||
namestr = "%s %s"%(child.node().getType(), child.node().getName())
|
namestr = "%s.%s"%(child.node().getType(), child.node().getName())
|
||||||
newItem = self.tree.AppendItem(item, namestr)
|
newItem = self.tree.PrependItem(parent, namestr)
|
||||||
newItemId = "%s.%s"%(itemId, i)
|
newItemId = "%s.%s"%(itemId, i)
|
||||||
self.tree.SetItemPyData(newItem, newItemId)
|
self.tree.SetItemPyData(newItem, newItemId)
|
||||||
|
|
||||||
@ -55,15 +53,21 @@ class SceneGraphUI(wx.Panel):
|
|||||||
self.traversePandaObjects(newItem, child)
|
self.traversePandaObjects(newItem, child)
|
||||||
i = i + 1
|
i = i + 1
|
||||||
|
|
||||||
def addPandaObjectChildren(self, item):
|
def addPandaObjectChildren(self, parent):
|
||||||
# first, find Panda Object's NodePath of the item
|
# first, find Panda Object's NodePath of the item
|
||||||
itemId = self.tree.GetItemPyData(item)
|
itemId = self.tree.GetItemPyData(parent)
|
||||||
obj = self.editor.objectMgr.findObjectById(itemId)
|
obj = self.editor.objectMgr.findObjectById(itemId)
|
||||||
if obj is None:
|
if obj is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
objNodePath = obj[OG.OBJ_NP]
|
objNodePath = obj[OG.OBJ_NP]
|
||||||
self.traversePandaObjects(item, objNodePath)
|
self.traversePandaObjects(parent, objNodePath)
|
||||||
|
|
||||||
|
item, cookie = self.tree.GetFirstChild(parent)
|
||||||
|
while item:
|
||||||
|
# recursing...
|
||||||
|
self.addPandaObjectChildren(item)
|
||||||
|
item, cookie = self.tree.GetNextChild(parent, cookie)
|
||||||
|
|
||||||
def removePandaObjectChildren(self, parent):
|
def removePandaObjectChildren(self, parent):
|
||||||
# first, find Panda Object's NodePath of the item
|
# first, find Panda Object's NodePath of the item
|
||||||
@ -182,17 +186,27 @@ class SceneGraphUI(wx.Panel):
|
|||||||
dragToItemObjNodePath = dragToItemObj[OG.OBJ_NP]
|
dragToItemObjNodePath = dragToItemObj[OG.OBJ_NP]
|
||||||
objNodePath.wrtReparentTo(dragToItemObjNodePath)
|
objNodePath.wrtReparentTo(dragToItemObjNodePath)
|
||||||
|
|
||||||
|
if self.shouldShowPandaObjChildren:
|
||||||
|
self.removePandaObjectChildren(dragToItem)
|
||||||
|
self.addPandaObjectChildren(dragToItem)
|
||||||
|
|
||||||
|
|
||||||
def showPandaObjectChildren(self):
|
def showPandaObjectChildren(self):
|
||||||
#import pdb;set_trace()
|
itemList = list()
|
||||||
self.shouldShowPandaObjChildren = not self.shouldShowPandaObjChildren
|
self.shouldShowPandaObjChildren = not self.shouldShowPandaObjChildren
|
||||||
|
|
||||||
item, cookie = self.tree.GetFirstChild(self.root)
|
item, cookie = self.tree.GetFirstChild(self.root)
|
||||||
while item:
|
while item:
|
||||||
|
itemList.append(item)
|
||||||
|
item, cookie = self.tree.GetNextChild(self.root, cookie)
|
||||||
|
|
||||||
|
#import pdb;set_trace()
|
||||||
|
for item in itemList:
|
||||||
if self.shouldShowPandaObjChildren:
|
if self.shouldShowPandaObjChildren:
|
||||||
self.addPandaObjectChildren(item)
|
self.addPandaObjectChildren(item)
|
||||||
else:
|
else:
|
||||||
self.removePandaObjectChildren(item)
|
self.removePandaObjectChildren(item)
|
||||||
# continue iteration to the next child
|
# continue iteration to the next child
|
||||||
item, cookie = self.tree.GetNextChild(self.root, cookie)
|
|
||||||
|
|
||||||
def onSelected(self, event):
|
def onSelected(self, event):
|
||||||
itemId = self.tree.GetItemPyData(event.GetItem())
|
itemId = self.tree.GetItemPyData(event.GetItem())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user