MultiProject/MultiProjectBrowser.py

changeset 5889
092d06e0193f
parent 5616
adcffadf4962
child 6048
82ad8ec9548c
--- a/MultiProject/MultiProjectBrowser.py	Tue Oct 03 19:37:44 2017 +0200
+++ b/MultiProject/MultiProjectBrowser.py	Wed Oct 04 20:06:26 2017 +0200
@@ -21,6 +21,9 @@
     """
     Class implementing the multi project browser.
     """
+    ProjectFileNameRole = Qt.UserRole
+    ProjectUidRole = Qt.UserRole + 1
+    
     def __init__(self, multiProject, project, parent=None):
         """
         Constructor
@@ -150,6 +153,7 @@
             'master': False,
             'description': "",
             'category': "",
+            'uid': "",
         }
         itm = self.__findProjectItem(project)
         if itm:
@@ -193,7 +197,7 @@
                 return
         
         if not self.__openingProject:
-            filename = itm.data(0, Qt.UserRole)
+            filename = itm.data(0, MultiProjectBrowser.ProjectFileNameRole)
             if filename:
                 self.__openingProject = True
                 self.multiProject.openProject(filename)
@@ -249,7 +253,9 @@
         else:
             itm.setIcon(0, UI.PixmapCache.getIcon("empty.png"))
         itm.setToolTip(0, project['file'])
-        itm.setData(0, Qt.UserRole, project['file'])
+        itm.setData(0, MultiProjectBrowser.ProjectFileNameRole,
+                    project['file'])
+        itm.setData(0, MultiProjectBrowser.ProjectUidRole, project['uid'])
     
     def __findProjectItem(self, project):
         """
@@ -258,12 +264,19 @@
         @param project reference to the project data dictionary
         @return reference to the item (QTreeWidgetItem) or None
         """
+        if project["uid"]:
+            compareData = project["uid"]
+            compareRole = MultiProjectBrowser.ProjectUidRole
+        else:
+            compareData = project["file"]
+            compareRole = MultiProjectBrowser.ProjectFileNameRole
+        
         for topIndex in range(self.topLevelItemCount()):
             topItm = self.topLevelItem(topIndex)
             for childIndex in range(topItm.childCount()):
                 itm = topItm.child(childIndex)
-                data = itm.data(0, Qt.UserRole)
-                if data == project['file']:
+                data = itm.data(0, compareRole)
+                if data == compareData:
                     return itm
         
         return None
@@ -274,9 +287,9 @@
         """
         itm = self.currentItem()
         if itm is not None and itm.parent() is not None:
-            filename = itm.data(0, Qt.UserRole)
-            if filename:
-                self.multiProject.removeProject(filename)
+            uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
+            if uid:
+                self.multiProject.removeProject(uid)
     
     def __showProjectProperties(self):
         """
@@ -284,9 +297,9 @@
         """
         itm = self.currentItem()
         if itm is not None and itm.parent() is not None:
-            filename = itm.data(0, Qt.UserRole)
-            if filename:
-                project = self.multiProject.getProject(filename)
+            uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
+            if uid:
+                project = self.multiProject.getProject(uid)
                 if project is not None:
                     from .AddProjectDialog import AddProjectDialog
                     dlg = AddProjectDialog(
@@ -309,7 +322,7 @@
         """
         Private method to add a new project entry.
         """
-        self.multiProject.addProject()
+        self.multiProject.addNewProject()
     
     def __createPopupMenu(self):
         """

eric ide

mercurial