--- 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): """