eric6/Graphics/UMLDialog.py

branch
maintenance
changeset 8273
698ae46f40a4
parent 8176
31965986ecd1
parent 8270
6ba3564b7161
child 8400
b3eefd7e58d1
--- a/eric6/Graphics/UMLDialog.py	Fri Apr 02 11:59:41 2021 +0200
+++ b/eric6/Graphics/UMLDialog.py	Sat May 01 14:27:20 2021 +0200
@@ -21,6 +21,7 @@
     """
     Class implementing a dialog showing UML like diagrams.
     """
+    # convert to Enum
     NoDiagram = 255
     ClassDiagram = 0
     PackageDiagram = 1
@@ -43,11 +44,17 @@
             builder (boolean)
         @keyparam kwargs diagram specific data
         """
-        super(UMLDialog, self).__init__(parent)
+        super().__init__(parent)
         self.setObjectName("UMLDialog")
         
+        self.__project = project
         self.__diagramType = diagramType
-        self.__project = project
+        self.__diagramTypeString = {
+            UMLDialog.ClassDiagram: "Class Diagram",
+            UMLDialog.PackageDiagram: "Package Diagram",
+            UMLDialog.ImportsDiagram: "Imports Diagram",
+            UMLDialog.ApplicationDiagram: "Application Diagram",
+        }.get(diagramType, "Illegal Diagram Type")
         
         from .UMLGraphicsView import UMLGraphicsView
         self.scene = QGraphicsScene(0.0, 0.0, 800.0, 600.0)
@@ -66,7 +73,7 @@
         
         self.umlView.relayout.connect(self.__relayout)
         
-        self.setWindowTitle(self.__diagramTypeString())
+        self.setWindowTitle(self.__diagramTypeString)
     
     def __initActions(self):
         """
@@ -142,7 +149,7 @@
         """
         if not fromFile and self.builder:
             self.builder.buildDiagram()
-        super(UMLDialog, self).show()
+        super().show()
     
     def __relayout(self):
         """
@@ -163,6 +170,14 @@
         @return reference to the instantiated diagram builder
         @exception ValueError raised to indicate an illegal diagram type
         """
+        if diagramType not in (
+            UMLDialog.ClassDiagram, UMLDialog.PackageDiagram,
+            UMLDialog.ImportsDiagram, UMLDialog.ApplicationDiagram,
+            UMLDialog.NoDiagram
+        ):
+            raise ValueError(self.tr(
+                "Illegal diagram type '{0}' given.").format(diagramType))
+        
         if diagramType == UMLDialog.ClassDiagram:
             from .UMLClassDiagramBuilder import UMLClassDiagramBuilder
             return UMLClassDiagramBuilder(
@@ -179,28 +194,8 @@
             from .ApplicationDiagramBuilder import ApplicationDiagramBuilder
             return ApplicationDiagramBuilder(
                 self, self.umlView, self.__project, **kwargs)
-        elif diagramType == UMLDialog.NoDiagram:
+        else:
             return None
-        else:
-            raise ValueError(self.tr(
-                "Illegal diagram type '{0}' given.").format(diagramType))
-    
-    def __diagramTypeString(self):
-        """
-        Private method to generate a readable string for the diagram type.
-        
-        @return readable type string (string)
-        """
-        if self.__diagramType == UMLDialog.ClassDiagram:
-            return "Class Diagram"
-        elif self.__diagramType == UMLDialog.PackageDiagram:
-            return "Package Diagram"
-        elif self.__diagramType == UMLDialog.ImportsDiagram:
-            return "Imports Diagram"
-        elif self.__diagramType == UMLDialog.ApplicationDiagram:
-            return "Application Diagram"
-        else:
-            return "Illegal Diagram Type"
     
     def __save(self):
         """
@@ -208,6 +203,7 @@
         """
         self.__saveAs(self.__fileName)
     
+    # TODO: change this to save file in JSON format
     @pyqtSlot()
     def __saveAs(self, filename=""):
         """
@@ -244,7 +240,7 @@
         lines = [
             "version: 1.0",
             "diagram_type: {0} ({1})".format(
-                self.__diagramType, self.__diagramTypeString()),
+                self.__diagramType, self.__diagramTypeString),
             "scene_size: {0};{1}".format(self.scene.width(),
                                          self.scene.height()),
         ]
@@ -267,6 +263,8 @@
         
         self.__fileName = filename
     
+    # TODO: add loading of file in JSON format
+    # TODO: delete the current one with eric7
     def load(self):
         """
         Public method to load a diagram from a file.
@@ -319,7 +317,10 @@
                 self.__showInvalidDataMessage(filename, linenum)
                 return False
             try:
-                self.__diagramType = int(value.strip().split(None, 1)[0])
+                diagramType, diagramTypeString = value.strip().split(None, 1)
+                self.__diagramType = int(self.__diagramType)
+                self.__diagramTypeString = diagramTypeString[1:-1]
+                # remove opening an closing bracket
             except ValueError:
                 self.__showInvalidDataMessage(filename, linenum)
                 return False
@@ -362,7 +363,7 @@
         
         # everything worked fine, so remember the file name and set the
         # window title
-        self.setWindowTitle(self.__diagramTypeString())
+        self.setWindowTitle(self.__diagramTypeString)
         self.__fileName = filename
         
         return True
@@ -374,11 +375,12 @@
         @param filename name of the file containing the invalid data (string)
         @param linenum number of the invalid line (integer)
         """
-        if linenum < 0:
-            msg = self.tr("""<p>The file <b>{0}</b> does not contain"""
-                          """ valid data.</p>""").format(filename)
-        else:
-            msg = self.tr("""<p>The file <b>{0}</b> does not contain"""
-                          """ valid data.</p><p>Invalid line: {1}</p>"""
-                          ).format(filename, linenum + 1)
+        msg = (
+            self.tr("""<p>The file <b>{0}</b> does not contain"""
+                    """ valid data.</p>""").format(filename)
+            if linenum < 0 else
+            self.tr("""<p>The file <b>{0}</b> does not contain"""
+                    """ valid data.</p><p>Invalid line: {1}</p>"""
+                    ).format(filename, linenum + 1)
+        )
         E5MessageBox.critical(self, self.tr("Load Diagram"), msg)

eric ide

mercurial