diff --git a/direct/src/leveleditor/SceneGraphUIBase.py b/direct/src/leveleditor/SceneGraphUIBase.py index f626452cdb..19c07a179e 100755 --- a/direct/src/leveleditor/SceneGraphUIBase.py +++ b/direct/src/leveleditor/SceneGraphUIBase.py @@ -44,6 +44,7 @@ class SceneGraphUIBase(wx.Panel): self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected) self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.onBeginDrag) + self.currItem = None self.currObj = None self.menu = wx.Menu() self.populateMenu() @@ -309,6 +310,7 @@ class SceneGraphUIBase(wx.Panel): item, flags = self.tree.HitTest(pos) if not item.IsOk(): return + self.currItem = item itemId = self.tree.GetItemPyData(item) if not itemId: return @@ -317,6 +319,10 @@ class SceneGraphUIBase(wx.Panel): self.PopupMenu(self.menu, pos) def populateMenu(self): + menuitem = self.menu.Append(-1, 'Expand All') + self.Bind(wx.EVT_MENU, self.onExpandAllChildren, menuitem) + menuitem = self.menu.Append(-1, 'Collapse All') + self.Bind(wx.EVT_MENU, self.onCollapseAllChildren, menuitem) menuitem = self.menu.Append(-1, 'Delete') self.Bind(wx.EVT_MENU, self.onDelete, menuitem) self.populateExtraMenu() @@ -325,6 +331,14 @@ class SceneGraphUIBase(wx.Panel): # You should implement this in subclass raise NotImplementedError('populateExtraMenu() must be implemented in subclass') + def onCollapseAllChildren(self, evt=None): + if self.currItem: + self.tree.CollapseAllChildren(self.currItem) + + def onExpandAllChildren(self, evt=None): + if self.currItem: + self.tree.ExpandAllChildren(self.currItem) + def onDelete(self, evt=None): if self.currObj is None: return