|
|
@@ -14,7 +14,9 @@ class LayerEditorUI(wx.Panel):
|
|
|
|
|
|
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")
|
|
|
|
|
|
@@ -44,36 +46,41 @@ class LayerEditorUI(wx.Panel):
|
|
|
self.popupmenu = wx.Menu()
|
|
|
for item in self.menuItems:
|
|
|
menuItem = self.popupmenu.Append(-1, item)
|
|
|
- self.Bind(wx.EVT_MENU, self.OnPopupItemSelected, menuItem)
|
|
|
+ self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
|
|
|
|
|
|
- self.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup)
|
|
|
+ self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
|
|
|
self.llist.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onShowMembers)
|
|
|
|
|
|
- def OnShowPopup(self, event):
|
|
|
+ def reset(self):
|
|
|
#import pdb;set_trace()
|
|
|
+ self.layersDataDict.clear()
|
|
|
+ self.layersDataDictNextKey = 0
|
|
|
+ self.llist.DeleteAllItems()
|
|
|
+
|
|
|
+ def onShowPopup(self, event):
|
|
|
pos = event.GetPosition()
|
|
|
pos = self.ScreenToClient(pos)
|
|
|
self.PopupMenu(self.popupmenu, pos)
|
|
|
|
|
|
- def OnPopupItemSelected(self, event):
|
|
|
+ def onPopupItemSelected(self, event):
|
|
|
menuItem = self.popupmenu.FindItemById(event.GetId())
|
|
|
text = menuItem.GetText()
|
|
|
if text == self.opAddObj:
|
|
|
- self.AddObj()
|
|
|
+ self.addObj()
|
|
|
elif text == self.opRemoveObj:
|
|
|
- self.RemoveObj()
|
|
|
+ self.removeObj()
|
|
|
elif text == self.opShow:
|
|
|
self.onShowMembers()
|
|
|
elif text == self.opAdd:
|
|
|
- self.AddLayer()
|
|
|
+ self.addLayer()
|
|
|
elif text == self.opDelete:
|
|
|
- self.DeleteLayer()
|
|
|
+ self.deleteLayer()
|
|
|
elif text == self.opRename:
|
|
|
- self.RenameLayer()
|
|
|
+ self.renameLayer()
|
|
|
else:
|
|
|
wx.MessageBox("You selected item '%s'" % text)
|
|
|
|
|
|
- def FindLabel(self, text):
|
|
|
+ def findLabel(self, text):
|
|
|
found = False
|
|
|
for index in range(self.llist.GetItemCount()):
|
|
|
itemtext = self.llist.GetItemText(index)
|
|
|
@@ -81,52 +88,64 @@ class LayerEditorUI(wx.Panel):
|
|
|
return True
|
|
|
return found
|
|
|
|
|
|
- def AddLayer(self):
|
|
|
+ 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)
|
|
|
+ found = self.findLabel(text)
|
|
|
while found:
|
|
|
i = i + 1
|
|
|
- text = "Layer%s"%(count+i)
|
|
|
- found = self.FindLabel(text)
|
|
|
- index = self.llist.InsertStringItem(count, text)
|
|
|
- self.llist.SetItemData(index, count + i)
|
|
|
- layersData = list()
|
|
|
- self.layersDataDict[count + i] = layersData
|
|
|
+ text = "Layer%s"%(count + i)
|
|
|
+ found = self.findLabel(text)
|
|
|
|
|
|
- def DeleteLayer(self):
|
|
|
- import pdb;set_trace()
|
|
|
+ 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):
|
|
|
- #import pdb;set_trace()
|
|
|
+ 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 RemoveObj(self):
|
|
|
- #import pdb;set_trace()
|
|
|
+ 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:
|
|
|
- layersDataDictKeys = self.layersDataDict.keys()
|
|
|
- for i in range(len(layersDataDictKeys)):
|
|
|
- layersData = self.layersDataDict[layersDataDictKeys[i]]
|
|
|
- for j in range(len(layersData)):
|
|
|
- if layersData[j] == obj[OG.OBJ_UID]:
|
|
|
- del(layersData[j])
|
|
|
-
|
|
|
- def AddObj(self):
|
|
|
- #import pdb;set_trace()
|
|
|
+ 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)
|
|
|
@@ -147,14 +166,12 @@ class LayerEditorUI(wx.Panel):
|
|
|
return
|
|
|
# Looking for the object in the other layers
|
|
|
# If the object is found - delete it.
|
|
|
- self.RemoveObj()
|
|
|
+ self.removeObj()
|
|
|
|
|
|
layersData.append(obj[OG.OBJ_UID])
|
|
|
|
|
|
def onShowMembers(self, event):
|
|
|
- #import pdb;set_trace()
|
|
|
item = event.GetItem()
|
|
|
-
|
|
|
layerMembers = list()
|
|
|
layerName = item.GetText()
|
|
|
key = item.GetData()
|
|
|
@@ -168,4 +185,19 @@ class LayerEditorUI(wx.Panel):
|
|
|
#do something here
|
|
|
dialog.GetStringSelection()
|
|
|
dialog.Destroy()
|
|
|
+
|
|
|
+ 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
|
|
|
|