eric6/Graphics/UMLClassDiagramBuilder.py

changeset 8295
3f5e8b0a338e
parent 8291
3d79b1e5bf3c
child 8400
b3eefd7e58d1
--- 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, ""

eric ide

mercurial