diff -r cb4e5bbf3a2c -r 3f5e8b0a338e eric6/Graphics/UMLClassDiagramBuilder.py --- a/eric6/Graphics/UMLClassDiagramBuilder.py Thu May 06 19:46:00 2021 +0200 +++ b/eric6/Graphics/UMLClassDiagramBuilder.py Sat May 08 18:34:08 2021 +0200 @@ -8,6 +8,7 @@ """ from itertools import zip_longest +import os from PyQt5.QtWidgets import QGraphicsTextItem @@ -92,9 +93,10 @@ self.file, extensions=extensions, caching=False) except ImportError: ct = QGraphicsTextItem(None) - ct.setHtml( + ct.setHtml(self.buildErrorMessage( self.tr("The module <b>'{0}'</b> could not be found.") - .format(self.file)) + .format(self.file) + )) self.scene.addItem(ct) return @@ -154,9 +156,10 @@ self.umlView.autoAdjustSceneSize(limit=True) else: ct = QGraphicsTextItem(None) - ct.setHtml(self.tr( - "The module <b>'{0}'</b> does not contain any classes.") - .format(self.file)) + ct.setHtml(self.buildErrorMessage( + self.tr("The module <b>'{0}'</b> does not contain any" + " classes.").format(self.file) + )) self.scene.addItem(ct) def __arrangeClasses(self, nodes, routes, whiteSpaceFactor=1.2): @@ -365,3 +368,40 @@ ) return data + + def fromDict(self, version, data): + """ + Public method to populate the class with data persisted by 'toDict()'. + + @param version version of the data + @type str + @param data dictionary containing the persisted data + @type dict + @return tuple containing a flag indicating success and an info + message in case the diagram belongs to a different project + @rtype tuple of (bool, str) + """ + try: + self.noAttrs = data["no_attributes"] + + file = Utilities.toNativeSeparators(data["file"]) + if os.path.isabs(file): + self.file = file + self.__relFile = "" + else: + # relative file paths indicate a project file + if data["project_name"] != self.project.getProjectName(): + msg = self.tr( + "<p>The diagram belongs to project <b>{0}</b>." + " Please open it and try again.</p>" + ).format(data["project_name"]) + return False, msg + + self.__relFile = file + self.file = self.project.getAbsolutePath(file) + except KeyError: + return False, "" + + self.initialize() + + return True, ""