Browse Source

Made LE data can be loaded outside of LE

Gyedo Jeon 16 years ago
parent
commit
6b22e16a51

+ 15 - 4
direct/src/leveleditor/FileMgr.py

@@ -1,6 +1,10 @@
 import os
 import imp
 
+from ObjectMgr import ObjectMgr
+from ObjectHandler import ObjectHandler
+from ObjectPalette import ObjectPalette
+
 import ObjectGlobals as OG
 
 class FileMgr:
@@ -13,9 +17,12 @@ class FileMgr:
         try:
             f = open(fileName, 'w')
             f.write("from pandac.PandaModules import *\n")
-            f.write("\nobjectMgr = base.le.objectMgr\n")
-            f.write('ui = base.le.ui\n')
-            f.write('\nui.sceneGraphUI.reset()\n\n')
+            f.write("\nhasattr(base, 'le'):\n")
+            f.write("\tobjectMgr = base.le.objectMgr\n")
+            f.write('\tui = base.le.ui\n')
+            f.write('\tui.sceneGraphUI.reset()\n\n')
+            f.write("else:\n")
+            f.write("\tobjectMgr = base.objectMgr\n")
             f.write("# temporary place holder for nodepath\n")
             f.write("objects = {}\n")
             saveData = self.editor.objectMgr.getSaveData()
@@ -36,9 +43,13 @@ class FileMgr:
         dirname, moduleName = os.path.split(fileName)
         if moduleName.endswith('.py'):
             moduleName = moduleName[:-3]
-
         file, pathname, description = imp.find_module(moduleName, [dirname])
         try:
+            if self.editor is None: # when loaded outside of LE
+                base.objectPalette = ObjectPalette()
+                base.objectHandler = ObjectHandler(None)
+                base.objectMgr = ObjectMgr(None)
+
             module = imp.load_module(moduleName, file, pathname, description)
         except:
             print 'failed to load %s'%fileName

+ 255 - 254
direct/src/leveleditor/LayerEditorUI.py

@@ -1,254 +1,255 @@
-"""
-Defines Layer UI
-"""
-import wx
-import sys
-import cPickle as pickle
-from pandac.PandaModules import *
-
-import ObjectGlobals as OG
-
-class LayerEditorUI(wx.Panel):
-    def __init__(self, parent, editor):
-        wx.Panel.__init__(self, parent)
-
-        self.editor = editor
-        self.editorTxt = "Layer Editor"
-        self.saveData = []
-        self.layersDataDict = dict()
-        self.layersDataDictNextKey = 0
-        self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER)
-        self.llist.InsertColumn(0, "Layers")
-
-        sizer = wx.BoxSizer(wx.VERTICAL)
-        sizer.Add(self.llist, 1, wx.EXPAND, 0)
-        self.SetSizer(sizer); self.Layout()
-
-        parentSizer = wx.BoxSizer(wx.VERTICAL)
-        parentSizer.Add(self, 1, wx.EXPAND, 0)
-        parent.SetSizer(parentSizer); parent.Layout()
-
-        self.opAdd       = "Add Layer"
-        self.opDelete    = "Delete Layer"
-        self.opRename    = "Rename Layer"
-        self.opAddObj    = "Add Selected Object"
-        self.opRemoveObj = "Remove Selected Object"
-        self.opShowObj   = "Show Layer Objects"
-        self.opHideObj   = "Hide Layer Objects"
-
-        self.menuItemsGen = list()
-        self.menuItemsGen.append(self.opAdd)
-        #self.menuItems.append(self.opRename)
-
-        self.menuItemsObj = list()
-        self.menuItemsObj.append(self.opAddObj)
-        self.menuItemsObj.append(self.opRemoveObj)
-        self.menuItemsObj.append(self.opShowObj)
-        self.menuItemsObj.append(self.opHideObj)
-        self.menuItemsObj.append(self.opDelete)
-
-        self.popupmenu = wx.Menu()
-        for item in self.menuItemsGen:
-            menuItem = self.popupmenu.Append(-1, item)
-            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
-
-        self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
-        self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
-
-    def menuAppendGenItems(self):
-        for item in self.menuItemsGen:
-            menuItem = self.popupmenu.Append(-1, item)
-            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
-
-    def menuAppendObjItems(self):
-        for item in self.menuItemsObj:
-            menuItem = self.popupmenu.Append(-1, item)
-            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
-
-    def onShowPopup(self, event):
-        pos = event.GetPosition()
-        pos = self.ScreenToClient(pos)
-
-        for menuItem in self.popupmenu.GetMenuItems():
-            self.popupmenu.RemoveItem(menuItem)
-
-        #import pdb;set_trace()
-        hitItem, flags = self.llist.HitTest(pos)
-        if hitItem == -1:
-           self.menuAppendGenItems()
-        else:
-           self.menuAppendObjItems()
-        self.PopupMenu(self.popupmenu, pos)
-
-    def onPopupItemSelected(self, event):
-        menuItem = self.popupmenu.FindItemById(event.GetId())
-        text = menuItem.GetText()
-        if text == self.opAddObj:
-           self.addObj()
-        elif text == self.opRemoveObj:
-           self.removeObj()
-        elif text == self.opShowObj:
-           self.HideObj(False)
-        elif text == self.opHideObj:
-           self.HideObj(True)
-        elif text == self.opAdd:
-           self.addLayer()
-        elif text == self.opDelete:
-           self.deleteLayer()
-        elif text == self.opRename:
-           self.renameLayer()
-        else:
-           wx.MessageBox("You selected item '%s'" % text)
-
-    def reset(self):
-        #import pdb;set_trace()
-        self.layersDataDict.clear()
-        self.layersDataDictNextKey = 0
-        self.llist.DeleteAllItems()
-
-    def findLabel(self, text):
-        found = False
-        for index in range(self.llist.GetItemCount()):
-            itemtext = self.llist.GetItemText(index)
-            if itemtext == text:
-               return True
-        return found
-
-    def addLayerData(self, idx, objUID):
-        self.removeObjData(objUID)
-        layerData = self.layersDataDict[idx]
-        layerData.append(objUID)
-
-    def addLayerEntry(self, name, idx):
-        index = self.llist.InsertStringItem(self.llist.GetItemCount(), name)
-        self.llist.SetItemData(index, idx)
-        layersData = list()
-        self.layersDataDict[idx] = layersData
-        if idx > self.layersDataDictNextKey:
-           self.layersDataDictNextKey = idx
-
-    def addLayer(self):
-        #import pdb;set_trace()
-        count = self.llist.GetItemCount()
-        i = 1
-        text = "Layer%s"%(count + i)
-        found = self.findLabel(text)
-        while found:
-              i = i + 1
-              text = "Layer%s"%(count + i)
-              found = self.findLabel(text)
-
-        self.layersDataDictNextKey = self.layersDataDictNextKey + 1
-        self.addLayerEntry(text, self.layersDataDictNextKey)
-
-    def deleteLayer(self):
-        index = self.llist.GetFirstSelected()
-        if index != -1:
-           key = self.llist.GetItemData(index)
-           del(self.layersDataDict[key])
-           item = self.llist.DeleteItem(index)
-
-    def renameLayer(self):
-        index = self.llist.GetFirstSelected()
-        if index != -1:
-           self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
-           self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
-
-    def removeObjData(self, objUID):
-        layersDataDictKeys = self.layersDataDict.keys()
-        for i in range(len(layersDataDictKeys)):
-            layersData = self.layersDataDict[layersDataDictKeys[i]]
-            for j in range(len(layersData)):
-                if layersData[j] == objUID:
-                   del(layersData[j])
-
-    def removeObj(self):
-        objNodePath = base.direct.selected.last
-        if objNodePath is None:
-           wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
-           return
-        obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
-        if obj is not None:
-           self.removeObjData(obj[OG.OBJ_UID])
-
-    def addObj(self):
-        index = self.llist.GetFirstSelected()
-        if index == -1:
-           wx.MessageBox("No layer was selected.", self.editorTxt,  wx.OK|wx.ICON_EXCLAMATION)
-           return
-        objNodePath = base.direct.selected.last
-        if objNodePath is None:
-           wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
-           return
-
-        # Checking if the object was laready added to the layer
-        obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
-        if obj is not None:
-           i = self.llist.GetItemData(index)
-           layersData = self.layersDataDict[i]
-           for j in range(len(layersData)):
-              if layersData[j] == obj[OG.OBJ_UID]:
-                 wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
-                 return
-           # Looking for the object in the other layers
-           # If the object is found - delete it.
-           self.removeObj()
-
-           layersData.append(obj[OG.OBJ_UID])
-
-    def onShowMembers(self, event):
-        item = event.GetItem()
-        layerMembers = list()
-        layerName = item.GetText()
-        key = item.GetData()
-        layerData = self.layersDataDict[key]
-        for i in range(len(layerData)):
-            obj = self.editor.objectMgr.findObjectById(layerData[i])
-            namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID])
-            layerMembers.append(namestr)
-        dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers)
-        if dialog.ShowModal() == wx.ID_OK:
-           #do something here
-           dialog.GetStringSelection()
-        dialog.Destroy()
-
-    def HideObj(self, hide):
-        index = self.llist.GetFirstSelected()
-        if index == -1:
-           wx.MessageBox("No layer was selected.", self.editorTxt,  wx.OK|wx.ICON_EXCLAMATION)
-           return
-
-        key = self.llist.GetItemData(index)
-        layerData = self.layersDataDict[key]
-        if len(layerData) == 0:
-           return
-        for i in range(len(layerData)):
-            obj = self.editor.objectMgr.findObjectById(layerData[i])
-            if hide:
-               obj[OG.OBJ_NP].hide()
-            else:
-               obj[OG.OBJ_NP].show()
-
-        font = wx.Font
-        font = self.llist.GetItemFont(index)
-        if hide:
-           font.SetWeight(wx.FONTWEIGHT_BOLD)
-        else:
-           font.SetWeight(wx.FONTWEIGHT_NORMAL)
-        self.llist.SetItemFont(index, font)
-
-    def traverse(self):
-        self.saveData.append("ui.layerEditorUI.reset()")
-        for index in range(self.llist.GetItemCount()):
-            self.saveData.append("ui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
-        layersDataDictKeys = self.layersDataDict.keys()
-        for i in range(len(layersDataDictKeys)):
-            layerData = self.layersDataDict[layersDataDictKeys[i]]
-            for j in range(len(layerData)):
-                self.saveData.append("ui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
-
-    def getSaveData(self):
-        self.saveData = []
-        self.traverse()
-        return self.saveData
-
+"""
+Defines Layer UI
+"""
+import wx
+import sys
+import cPickle as pickle
+from pandac.PandaModules import *
+
+import ObjectGlobals as OG
+
+class LayerEditorUI(wx.Panel):
+    def __init__(self, parent, editor):
+        wx.Panel.__init__(self, parent)
+
+        self.editor = editor
+        self.editorTxt = "Layer Editor"
+        self.saveData = []
+        self.layersDataDict = dict()
+        self.layersDataDictNextKey = 0
+        self.llist = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_NO_HEADER)
+        self.llist.InsertColumn(0, "Layers")
+
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(self.llist, 1, wx.EXPAND, 0)
+        self.SetSizer(sizer); self.Layout()
+
+        parentSizer = wx.BoxSizer(wx.VERTICAL)
+        parentSizer.Add(self, 1, wx.EXPAND, 0)
+        parent.SetSizer(parentSizer); parent.Layout()
+
+        self.opAdd       = "Add Layer"
+        self.opDelete    = "Delete Layer"
+        self.opRename    = "Rename Layer"
+        self.opAddObj    = "Add Selected Object"
+        self.opRemoveObj = "Remove Selected Object"
+        self.opShowObj   = "Show Layer Objects"
+        self.opHideObj   = "Hide Layer Objects"
+
+        self.menuItemsGen = list()
+        self.menuItemsGen.append(self.opAdd)
+        #self.menuItems.append(self.opRename)
+
+        self.menuItemsObj = list()
+        self.menuItemsObj.append(self.opAddObj)
+        self.menuItemsObj.append(self.opRemoveObj)
+        self.menuItemsObj.append(self.opShowObj)
+        self.menuItemsObj.append(self.opHideObj)
+        self.menuItemsObj.append(self.opDelete)
+
+        self.popupmenu = wx.Menu()
+        for item in self.menuItemsGen:
+            menuItem = self.popupmenu.Append(-1, item)
+            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
+
+        self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
+        self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
+
+    def menuAppendGenItems(self):
+        for item in self.menuItemsGen:
+            menuItem = self.popupmenu.Append(-1, item)
+            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
+
+    def menuAppendObjItems(self):
+        for item in self.menuItemsObj:
+            menuItem = self.popupmenu.Append(-1, item)
+            self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
+
+    def onShowPopup(self, event):
+        pos = event.GetPosition()
+        pos = self.ScreenToClient(pos)
+
+        for menuItem in self.popupmenu.GetMenuItems():
+            self.popupmenu.RemoveItem(menuItem)
+
+        #import pdb;set_trace()
+        hitItem, flags = self.llist.HitTest(pos)
+        if hitItem == -1:
+           self.menuAppendGenItems()
+        else:
+           self.menuAppendObjItems()
+        self.PopupMenu(self.popupmenu, pos)
+
+    def onPopupItemSelected(self, event):
+        menuItem = self.popupmenu.FindItemById(event.GetId())
+        text = menuItem.GetText()
+        if text == self.opAddObj:
+           self.addObj()
+        elif text == self.opRemoveObj:
+           self.removeObj()
+        elif text == self.opShowObj:
+           self.HideObj(False)
+        elif text == self.opHideObj:
+           self.HideObj(True)
+        elif text == self.opAdd:
+           self.addLayer()
+        elif text == self.opDelete:
+           self.deleteLayer()
+        elif text == self.opRename:
+           self.renameLayer()
+        else:
+           wx.MessageBox("You selected item '%s'" % text)
+
+    def reset(self):
+        #import pdb;set_trace()
+        self.layersDataDict.clear()
+        self.layersDataDictNextKey = 0
+        self.llist.DeleteAllItems()
+
+    def findLabel(self, text):
+        found = False
+        for index in range(self.llist.GetItemCount()):
+            itemtext = self.llist.GetItemText(index)
+            if itemtext == text:
+               return True
+        return found
+
+    def addLayerData(self, idx, objUID):
+        self.removeObjData(objUID)
+        layerData = self.layersDataDict[idx]
+        layerData.append(objUID)
+
+    def addLayerEntry(self, name, idx):
+        index = self.llist.InsertStringItem(self.llist.GetItemCount(), name)
+        self.llist.SetItemData(index, idx)
+        layersData = list()
+        self.layersDataDict[idx] = layersData
+        if idx > self.layersDataDictNextKey:
+           self.layersDataDictNextKey = idx
+
+    def addLayer(self):
+        #import pdb;set_trace()
+        count = self.llist.GetItemCount()
+        i = 1
+        text = "Layer%s"%(count + i)
+        found = self.findLabel(text)
+        while found:
+              i = i + 1
+              text = "Layer%s"%(count + i)
+              found = self.findLabel(text)
+
+        self.layersDataDictNextKey = self.layersDataDictNextKey + 1
+        self.addLayerEntry(text, self.layersDataDictNextKey)
+
+    def deleteLayer(self):
+        index = self.llist.GetFirstSelected()
+        if index != -1:
+           key = self.llist.GetItemData(index)
+           del(self.layersDataDict[key])
+           item = self.llist.DeleteItem(index)
+
+    def renameLayer(self):
+        index = self.llist.GetFirstSelected()
+        if index != -1:
+           self.llist.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
+           self.llist.SetItemState(index, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
+
+    def removeObjData(self, objUID):
+        layersDataDictKeys = self.layersDataDict.keys()
+        for i in range(len(layersDataDictKeys)):
+            layersData = self.layersDataDict[layersDataDictKeys[i]]
+            for j in range(len(layersData)):
+                if layersData[j] == objUID:
+                   del(layersData[j])
+
+    def removeObj(self):
+        objNodePath = base.direct.selected.last
+        if objNodePath is None:
+           wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
+           return
+        obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
+        if obj is not None:
+           self.removeObjData(obj[OG.OBJ_UID])
+
+    def addObj(self):
+        index = self.llist.GetFirstSelected()
+        if index == -1:
+           wx.MessageBox("No layer was selected.", self.editorTxt,  wx.OK|wx.ICON_EXCLAMATION)
+           return
+        objNodePath = base.direct.selected.last
+        if objNodePath is None:
+           wx.MessageBox("No object was selected.", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
+           return
+
+        # Checking if the object was laready added to the layer
+        obj = self.editor.objectMgr.findObjectByNodePath(objNodePath)
+        if obj is not None:
+           i = self.llist.GetItemData(index)
+           layersData = self.layersDataDict[i]
+           for j in range(len(layersData)):
+              if layersData[j] == obj[OG.OBJ_UID]:
+                 wx.MessageBox("Selected object already is this layer", self.editorTxt, wx.OK|wx.ICON_EXCLAMATION)
+                 return
+           # Looking for the object in the other layers
+           # If the object is found - delete it.
+           self.removeObj()
+
+           layersData.append(obj[OG.OBJ_UID])
+
+    def onShowMembers(self, event):
+        item = event.GetItem()
+        layerMembers = list()
+        layerName = item.GetText()
+        key = item.GetData()
+        layerData = self.layersDataDict[key]
+        for i in range(len(layerData)):
+            obj = self.editor.objectMgr.findObjectById(layerData[i])
+            namestr = "%s_%s"%(obj[OG.OBJ_DEF].name, obj[OG.OBJ_UID])
+            layerMembers.append(namestr)
+        dialog = wx.SingleChoiceDialog(None, layerName, self.editorTxt, layerMembers)
+        if dialog.ShowModal() == wx.ID_OK:
+           #do something here
+           dialog.GetStringSelection()
+        dialog.Destroy()
+
+    def HideObj(self, hide):
+        index = self.llist.GetFirstSelected()
+        if index == -1:
+           wx.MessageBox("No layer was selected.", self.editorTxt,  wx.OK|wx.ICON_EXCLAMATION)
+           return
+
+        key = self.llist.GetItemData(index)
+        layerData = self.layersDataDict[key]
+        if len(layerData) == 0:
+           return
+        for i in range(len(layerData)):
+            obj = self.editor.objectMgr.findObjectById(layerData[i])
+            if hide:
+               obj[OG.OBJ_NP].hide()
+            else:
+               obj[OG.OBJ_NP].show()
+
+        font = wx.Font
+        font = self.llist.GetItemFont(index)
+        if hide:
+           font.SetWeight(wx.FONTWEIGHT_BOLD)
+        else:
+           font.SetWeight(wx.FONTWEIGHT_NORMAL)
+        self.llist.SetItemFont(index, font)
+
+    def traverse(self):
+        self.saveData.append("\nif hasattr(base, 'le'):")
+        self.saveData.append("\tui.layerEditorUI.reset()")
+        for index in range(self.llist.GetItemCount()):
+            self.saveData.append("\tui.layerEditorUI.addLayerEntry('%s', %s )"%(self.llist.GetItemText(index), self.llist.GetItemData(index)))
+        layersDataDictKeys = self.layersDataDict.keys()
+        for i in range(len(layersDataDictKeys)):
+            layerData = self.layersDataDict[layersDataDictKeys[i]]
+            for j in range(len(layerData)):
+                self.saveData.append("\tui.layerEditorUI.addLayerData(%s, '%s')"%(layersDataDictKeys[i], layerData[j]))
+
+    def getSaveData(self):
+        self.saveData = []
+        self.traverse()
+        return self.saveData
+

+ 2 - 1
direct/src/leveleditor/ObjectHandler.py

@@ -45,7 +45,8 @@ class ObjectHandler:
 
     def updateSmiley(self, val, obj):
         objNP = obj[OG.OBJ_NP]
-        base.direct.deselectAll()
+        if base.direct:
+            base.direct.deselectAll()
         for child in objNP.findAllMatches("+GeomNode"):
             child.removeNode()
 

+ 19 - 10
direct/src/leveleditor/ObjectMgr.py

@@ -63,9 +63,12 @@ class ObjectMgr:
         if parent is None:
             parent = render
 
-        objDef = self.editor.objectPalette.findItem(typeName)
-        if objDef is None:
-            objDef = self.editor.protoPalette.findItem(typeName)
+        if self.editor:
+            objDef = self.editor.objectPalette.findItem(typeName)
+            if objDef is None:
+                objDef = self.editor.protoPalette.findItem(typeName)
+        else:
+            objDef = base.objectPalette.findItem(typeName)
         newobj = None
         if objDef and type(objDef) != dict:
             if objDef.createFunction:
@@ -73,7 +76,10 @@ class ObjectMgr:
                 funcArgs = objDef.createFunction[OG.FUNC_ARGS]
                 if funcName.startswith('.'):
                     # when it's using default objectHandler
-                    func = Functor(eval("base.le.objectHandler%s"%funcName))
+                    if self.editor:
+                        func = Functor(eval("base.le.objectHandler%s"%funcName))
+                    else:
+                        func = Functor(eval("base.objectHandler%s"%funcName))                        
                 else:
                     # when it's not using default objectHandler, whole name of the handling obj
                     # should be included in function name
@@ -125,10 +131,10 @@ class ObjectMgr:
             self.objects[uid] = [uid, newobj, objDef, model, anim, properties]
             self.npIndex[NodePath(newobj)] = uid
 
-            if fSelectObject:
-                base.direct.select(newobj)
-                
-            self.editor.ui.sceneGraphUI.add(newobj)
+            if self.editor:
+                if fSelectObject:
+                    base.direct.select(newobj)
+                self.editor.ui.sceneGraphUI.add(newobj)
 
         return newobj
 
@@ -397,7 +403,10 @@ class ObjectMgr:
         funcArgs = propDef[OG.PROP_FUNC][OG.FUNC_ARGS]
 
         if funcName.startswith('.'):
-            func = Functor(eval("base.le.objectHandler%s"%funcName))
+            if self.editor:
+                func = Functor(eval("base.le.objectHandler%s"%funcName))
+            else:
+                func = Functor(eval("base.objectHandler%s"%funcName))                
         else:
             func = Functor(eval(funcName))
 
@@ -414,7 +423,7 @@ class ObjectMgr:
         # finally call update function
         func(**kwargs)
 
-        if fSelectObject:
+        if self.editor and fSelectObject:
             base.direct.select(obj[OG.OBJ_NP])
 
     def updateObjectProperties(self, nodePath, propValues):

+ 65 - 54
direct/src/leveleditor/testData.py

@@ -1,54 +1,65 @@
-from pandac.PandaModules import *
-
-objectMgr = base.le.objectMgr
-# temporary place holder for nodepath
-objects = {}
-
-objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
-if objects['1252538687.73gjeon']:
-    objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
-    objects['1252538687.73gjeon'].setHpr(VBase3(180, 0, 0))
-    objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
-
-objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon'])
-if objects['1252538690.2gjeon']:
-    objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046))
-    objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0))
-    objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
-
-objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon'])
-if objects['1252539696.69gjeon']:
-    objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0))
-    objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0))
-    objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
-
-objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon'])
-if objects['1252539897.22gjeon']:
-    objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046))
-    objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0))
-    objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
-
-objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon'])
-if objects['1252538689.13gjeon']:
-    objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791))
-    objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0))
-    objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
-
-objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon'])
-if objects['1252539974.19gjeon']:
-    objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209))
-    objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0))
-    objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1))
-    objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
-
-objects['1252623762.9gjeon'] = objectMgr.addNewObject('Panda', '1252623762.9gjeon', None, None)
-if objects['1252623762.9gjeon']:
-    objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
-    objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
-    objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
-    objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {'Distance': 1.0, 'Abc': 'a'})
+from pandac.PandaModules import *
+
+hasattr(base, 'le'):
+	objectMgr = base.le.objectMgr
+	ui = base.le.ui
+	ui.sceneGraphUI.reset()
+
+else:
+	objectMgr = base.objectMgr
+# temporary place holder for nodepath
+objects = {}
+
+objects['1252538687.73gjeon'] = objectMgr.addNewObject('Smiley', '1252538687.73gjeon', 'models/smiley.egg', None)
+if objects['1252538687.73gjeon']:
+    objects['1252538687.73gjeon'].setPos(Point3(8.66381, 0, 7.13246))
+    objects['1252538687.73gjeon'].setHpr(VBase3(-180, 0, 0))
+    objects['1252538687.73gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252538687.73gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
+
+objects['1252538690.2gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252538690.2gjeon', None, objects['1252538687.73gjeon'])
+if objects['1252538690.2gjeon']:
+    objects['1252538690.2gjeon'].setPos(Point3(0, 0, 2.12046))
+    objects['1252538690.2gjeon'].setHpr(VBase3(0, 0, 0))
+    objects['1252538690.2gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252538690.2gjeon'], {'Distance': 2.0, 'Abc': 'a'})
+
+objects['1252539696.69gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539696.69gjeon', None, objects['1252538687.73gjeon'])
+if objects['1252539696.69gjeon']:
+    objects['1252539696.69gjeon'].setPos(Point3(-9.53674e-006, 0, 0))
+    objects['1252539696.69gjeon'].setHpr(VBase3(0, 0, 0))
+    objects['1252539696.69gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252539696.69gjeon'], {'Distance': 2.0, 'Abc': 'a'})
+
+objects['1252539897.22gjeon'] = objectMgr.addNewObject('H Double Smiley', '1252539897.22gjeon', None, objects['1252538687.73gjeon'])
+if objects['1252539897.22gjeon']:
+    objects['1252539897.22gjeon'].setPos(Point3(0.06987, 0, -2.12046))
+    objects['1252539897.22gjeon'].setHpr(VBase3(0, 0, 0))
+    objects['1252539897.22gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252539897.22gjeon'], {'Distance': 2.0, 'Abc': 'a'})
+
+objects['1252538689.13gjeon'] = objectMgr.addNewObject('V Double Smiley', '1252538689.13gjeon', None, objects['1252538687.73gjeon'])
+if objects['1252538689.13gjeon']:
+    objects['1252538689.13gjeon'].setPos(Point3(6.07152, 0, -0.863791))
+    objects['1252538689.13gjeon'].setHpr(VBase3(0, 0, 0))
+    objects['1252538689.13gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252538689.13gjeon'], {'Distance': 1.0, 'Abc': 'a'})
+
+objects['1252539974.19gjeon'] = objectMgr.addNewObject('Smiley', '1252539974.19gjeon', 'models/frowney.egg', objects['1252538689.13gjeon'])
+if objects['1252539974.19gjeon']:
+    objects['1252539974.19gjeon'].setPos(Point3(0.06987, 0, 3.09209))
+    objects['1252539974.19gjeon'].setHpr(VBase3(0, 0, 0))
+    objects['1252539974.19gjeon'].setScale(VBase3(1, 1, 1))
+    objectMgr.updateObjectProperties(objects['1252539974.19gjeon'], {'123': 1, 'Abc': 'a', 'Number': 1, 'Happy': True})
+
+objects['1252623762.9gjeon'] = objectMgr.addNewObject('Panda', '1252623762.9gjeon', None, None)
+if objects['1252623762.9gjeon']:
+    objects['1252623762.9gjeon'].setPos(Point3(0, 0, 0))
+    objects['1252623762.9gjeon'].setHpr(VBase3(172.8, 0, 0))
+    objects['1252623762.9gjeon'].setScale(VBase3(0.005, 0.005, 0.005))
+    objectMgr.updateObjectProperties(objects['1252623762.9gjeon'], {})
+
+if hasattr(base, 'le'):
+	ui.layerEditorUI.reset()
+	ui.layerEditorUI.addLayerEntry('Layer1', 1 )
+	ui.layerEditorUI.addLayerData(1, '1252538687.73gjeon')