src/eric7/Graphics/UMLDialog.py

Thu, 07 Jul 2022 11:23:56 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 07 Jul 2022 11:23:56 +0200
branch
eric7
changeset 9209
b99e7fd55fd3
parent 9153
eric7/Graphics/UMLDialog.py@506e35e424d5
child 9221
bf71ee032bb4
permissions
-rw-r--r--

Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8360
diff changeset
3 # Copyright (c) 2007 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog showing UML like diagrams.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
10 import enum
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
11 import json
9152
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
12 import pathlib
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
13
9152
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
14 from PyQt6.QtCore import pyqtSlot, Qt, QCoreApplication
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
15 from PyQt6.QtGui import QAction
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
16 from PyQt6.QtWidgets import QToolBar, QGraphicsScene
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
8358
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
18 from EricWidgets import EricMessageBox, EricFileDialog
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
19 from EricWidgets.EricMainWindow import EricMainWindow
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
20
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import UI.Config
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import UI.PixmapCache
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
24
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
25 class UMLDialogType(enum.Enum):
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
26 """
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
27 Class defining the UML dialog types.
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
28 """
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
29 CLASS_DIAGRAM = 0
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
30 PACKAGE_DIAGRAM = 1
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
31 IMPORTS_DIAGRAM = 2
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
32 APPLICATION_DIAGRAM = 3
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
33 NO_DIAGRAM = 255
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
34
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
35
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
36 class UMLDialog(EricMainWindow):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Class implementing a dialog showing UML like diagrams.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
40 FileVersions = ("1.0", )
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
41 JsonFileVersions = ("1.0", )
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
42
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
43 UMLDialogType2String = {
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
44 UMLDialogType.CLASS_DIAGRAM:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
45 QCoreApplication.translate("UMLDialog", "Class Diagram"),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
46 UMLDialogType.PACKAGE_DIAGRAM:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
47 QCoreApplication.translate("UMLDialog", "Package Diagram"),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
48 UMLDialogType.IMPORTS_DIAGRAM:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
49 QCoreApplication.translate("UMLDialog", "Imports Diagram"),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
50 UMLDialogType.APPLICATION_DIAGRAM:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
51 QCoreApplication.translate("UMLDialog", "Application Diagram"),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
52 }
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
53
2953
703452a2876f Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
54 def __init__(self, diagramType, project, path="", parent=None,
703452a2876f Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
55 initBuilder=True, **kwargs):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
59 @param diagramType type of the diagram
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
60 @type UMLDialogType
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
61 @param project reference to the project object
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
62 @type Project
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
63 @param path file or directory path to build the diagram from
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
64 @type str
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
65 @param parent parent widget of the dialog
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
66 @type QWidget
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
67 @param initBuilder flag indicating to initialize the diagram
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
68 builder
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
69 @type bool
2953
703452a2876f Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
70 @keyparam kwargs diagram specific data
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
71 @type dict
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
73 super().__init__(parent)
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
74 self.setObjectName("UMLDialog")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8269
diff changeset
76 self.__project = project
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
77 self.__diagramType = diagramType
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
78
2401
4f428de32b69 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2334
diff changeset
79 from .UMLGraphicsView import UMLGraphicsView
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.scene = QGraphicsScene(0.0, 0.0, 800.0, 600.0)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
81 self.umlView = UMLGraphicsView(self.scene, parent=self)
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
82 self.builder = self.__diagramBuilder(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
83 self.__diagramType, path, **kwargs)
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
84 if self.builder and initBuilder:
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
85 self.builder.initialize()
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
86
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
87 self.__fileName = ""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
89 self.__initActions()
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
90 self.__initToolBars()
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
91
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
92 self.setCentralWidget(self.umlView)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
93
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
94 self.umlView.relayout.connect(self.__relayout)
2334
fc69ad77e18a Introduced a zoom widget in the status bar of several windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
95
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
96 self.setWindowTitle(self.__getDiagramTitel(self.__diagramType))
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
97
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
98 def __getDiagramTitel(self, diagramType):
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
99 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
100 Private method to get a textual description for the diagram type.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
101
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
102 @param diagramType diagram type string
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
103 @type str
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
104 @return titel of the diagram
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
105 @rtype str
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
106 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
107 return UMLDialog.UMLDialogType2String.get(
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
108 diagramType, self.tr("Illegal Diagram Type")
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
109 )
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
110
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
111 def __initActions(self):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
112 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
113 Private slot to initialize the actions.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
114 """
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
115 self.closeAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
116 UI.PixmapCache.getIcon("close"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
117 self.tr("Close"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
118 self.closeAct.triggered.connect(self.close)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
120 self.openAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
121 UI.PixmapCache.getIcon("open"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
122 self.tr("Load"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
123 self.openAct.triggered.connect(self.load)
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
124
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
125 self.saveAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
126 UI.PixmapCache.getIcon("fileSave"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
127 self.tr("Save"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
128 self.saveAct.triggered.connect(self.__save)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
129
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
130 self.saveAsAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
131 UI.PixmapCache.getIcon("fileSaveAs"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
132 self.tr("Save As..."), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
133 self.saveAsAct.triggered.connect(self.__saveAs)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
134
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
135 self.saveImageAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
136 UI.PixmapCache.getIcon("fileSavePixmap"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
137 self.tr("Save as Image"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
138 self.saveImageAct.triggered.connect(self.umlView.saveImage)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
139
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
140 self.printAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
141 UI.PixmapCache.getIcon("print"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
142 self.tr("Print"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
143 self.printAct.triggered.connect(self.umlView.printDiagram)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
144
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
145 self.printPreviewAct = QAction(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
146 UI.PixmapCache.getIcon("printPreview"),
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
147 self.tr("Print Preview"), self)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
148 self.printPreviewAct.triggered.connect(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
149 self.umlView.printPreviewDiagram)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
150
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
151 def __initToolBars(self):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
152 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
153 Private slot to initialize the toolbars.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
154 """
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
155 self.windowToolBar = QToolBar(self.tr("Window"), self)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.windowToolBar.setIconSize(UI.Config.ToolBarIconSize)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.windowToolBar.addAction(self.closeAct)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
159 self.fileToolBar = QToolBar(self.tr("File"), self)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
160 self.fileToolBar.setIconSize(UI.Config.ToolBarIconSize)
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
161 self.fileToolBar.addAction(self.openAct)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
162 self.fileToolBar.addSeparator()
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
163 self.fileToolBar.addAction(self.saveAct)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
164 self.fileToolBar.addAction(self.saveAsAct)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
165 self.fileToolBar.addAction(self.saveImageAct)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
166 self.fileToolBar.addSeparator()
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
167 self.fileToolBar.addAction(self.printPreviewAct)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
168 self.fileToolBar.addAction(self.printAct)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
169
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.umlToolBar = self.umlView.initToolBar()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
172 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.fileToolBar)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
173 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.windowToolBar)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
174 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.umlToolBar)
2027
144463496a54 A few fixes for issues with the graphics dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2026
diff changeset
175
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
176 def show(self, fromFile=False):
2027
144463496a54 A few fixes for issues with the graphics dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2026
diff changeset
177 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
178 Public method to show the dialog.
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
179
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
180 @param fromFile flag indicating, that the diagram was loaded
8289
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
181 from file
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
182 @type bool
2027
144463496a54 A few fixes for issues with the graphics dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2026
diff changeset
183 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
184 if not fromFile and self.builder:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
185 self.builder.buildDiagram()
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
186 super().show()
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
187
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
188 def __relayout(self):
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
189 """
8289
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
190 Private method to re-layout the diagram.
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
191 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
192 if self.builder:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
193 self.builder.buildDiagram()
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
194
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
195 def __diagramBuilder(self, diagramType, path, **kwargs):
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
196 """
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
197 Private method to instantiate a diagram builder object.
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
198
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
199 @param diagramType type of the diagram
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
200 @type UMLDialogType
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
201 @param path file or directory path to build the diagram from
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
202 @type str
2953
703452a2876f Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
203 @keyparam kwargs diagram specific data
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
204 @type dict
2953
703452a2876f Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
205 @return reference to the instantiated diagram builder
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
206 @rtype UMLDiagramBuilder
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
207 """
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
208 if diagramType == UMLDialogType.CLASS_DIAGRAM:
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
209 from .UMLClassDiagramBuilder import UMLClassDiagramBuilder
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
210 return UMLClassDiagramBuilder(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
211 self, self.umlView, self.__project, path, **kwargs)
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
212 elif diagramType == UMLDialogType.PACKAGE_DIAGRAM:
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
213 from .PackageDiagramBuilder import PackageDiagramBuilder
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
214 return PackageDiagramBuilder(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
215 self, self.umlView, self.__project, path, **kwargs)
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
216 elif diagramType == UMLDialogType.IMPORTS_DIAGRAM:
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
217 from .ImportsDiagramBuilder import ImportsDiagramBuilder
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
218 return ImportsDiagramBuilder(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
219 self, self.umlView, self.__project, path, **kwargs)
8276
1436fd09d1e1 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
220 elif diagramType == UMLDialogType.APPLICATION_DIAGRAM:
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
221 from .ApplicationDiagramBuilder import ApplicationDiagramBuilder
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2992
diff changeset
222 return ApplicationDiagramBuilder(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2992
diff changeset
223 self, self.umlView, self.__project, **kwargs)
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
224 else:
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
225 return None
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
226
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
227 def __save(self):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
228 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
229 Private slot to save the diagram with the current name.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
230 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
231 self.__saveAs(self.__fileName)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
232
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
233 @pyqtSlot()
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
234 def __saveAs(self, filename=""):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
235 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
236 Private slot to save the diagram.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
237
8289
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
238 @param filename name of the file to write to
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
239 @type str
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
240 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
241 if not filename:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
242 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
243 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
244 self.tr("Save Diagram"),
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
245 "",
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
246 self.tr("Eric Graphics File (*.egj);;"
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
247 "Eric Text Graphics File (*.e5g);;"
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
248 "All Files (*)"),
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
249 "",
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
250 EricFileDialog.DontConfirmOverwrite)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
251 if not fname:
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
252 return
9152
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
253
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
254 fpath = pathlib.Path(fname)
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
255 if not fpath.suffix:
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
256 ex = selectedFilter.split("(*")[1].split(")")[0]
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
257 if ex:
9152
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
258 fpath = fpath.with_suffix(ex)
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
259 if fpath.exists():
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
260 res = EricMessageBox.yesNo(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
261 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
262 self.tr("Save Diagram"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
263 self.tr("<p>The file <b>{0}</b> already exists."
9153
506e35e424d5 Finished replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9152
diff changeset
264 " Overwrite it?</p>").format(fpath),
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
265 icon=EricMessageBox.Warning)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
266 if not res:
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
267 return
9152
8a68afaf1ba2 Started replacing the use of "QFileInfo()" with Python equivalents.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
268 filename = str(fpath)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
269
8348
f4775ae8f441 Renamed the E5Graphics stuff to EricGraphics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
270 res = self.__writeJsonGraphicsFile(filename)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
271
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
272 if res:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
273 # save the file name only in case of success
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
274 self.__fileName = filename
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
275
8348
f4775ae8f441 Renamed the E5Graphics stuff to EricGraphics.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
276 # Note: remove loading of eric6 line based diagram format after 22.6
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
277 def load(self, filename=""):
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
278 """
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
279 Public method to load a diagram from a file.
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
280
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
281 @param filename name of the file to be loaded
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
282 @type str
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
283 @return flag indicating success
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
284 @rtype bool
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
285 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
286 if not filename:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
287 filename = EricFileDialog.getOpenFileName(
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
288 self,
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
289 self.tr("Load Diagram"),
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
290 "",
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
291 self.tr("Eric Graphics File (*.egj);;"
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
292 "Eric Text Graphics File (*.e5g);;"
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
293 "All Files (*)"))
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
294 if not filename:
8289
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
295 # Canceled by user
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
296 return False
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
297
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
298 return (
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
299 self.__readLineBasedGraphicsFile(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
300 if filename.endswith(".e5g") else
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
301 # JSON format is the default
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
302 self.__readJsonGraphicsFile(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
303 )
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
304
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
305 #######################################################################
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
306 ## Methods to read and write eric graphics files of the old line
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
307 ## based file format.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
308 #######################################################################
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
309
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
310 def __readLineBasedGraphicsFile(self, filename):
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
311 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
312 Private method to read an eric graphics file using the old line
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
313 based file format.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
314
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
315 @param filename name of the file to be read
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
316 @type str
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
317 @return flag indicating success
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
318 @rtype bool
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
319 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
320 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
321 with open(filename, "r", encoding="utf-8") as f:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
322 data = f.read()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
323 except OSError as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
324 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
325 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
326 self.tr("Load Diagram"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
327 self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
328 """<p>The file <b>{0}</b> could not be read.</p>"""
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
329 """<p>Reason: {1}</p>""").format(filename, str(err)))
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
330 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
331
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
332 lines = data.splitlines()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
333 if len(lines) < 3:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
334 self.__showInvalidDataMessage(filename)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
335 return False
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
336
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
337 try:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
338 # step 1: check version
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
339 linenum = 0
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
340 key, value = lines[linenum].split(": ", 1)
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
341 if (
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
342 key.strip() != "version" or
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
343 value.strip() not in UMLDialog.FileVersions
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
344 ):
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
345 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
346 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
347 else:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
348 version = value
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
349
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
350 # step 2: extract diagram type
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
351 linenum += 1
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
352 key, value = lines[linenum].split(": ", 1)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
353 if key.strip() != "diagram_type":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
354 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
355 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
356 try:
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
357 diagramType = value.strip().split(None, 1)[0]
8282
16b243bdb12f UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
358 self.__diagramType = UMLDialogType(int(diagramType))
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
359 except ValueError:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
360 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
361 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
362 self.scene.clear()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
363 self.builder = self.__diagramBuilder(self.__diagramType, "")
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
364
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
365 # step 3: extract scene size
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
366 linenum += 1
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
367 key, value = lines[linenum].split(": ", 1)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
368 if key.strip() != "scene_size":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
369 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
370 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
371 try:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
372 width, height = [float(v.strip()) for v in value.split(";")]
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
373 except ValueError:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
374 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
375 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
376 self.umlView.setSceneSize(width, height)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
377
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
378 # step 4: extract builder data if available
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
379 linenum += 1
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
380 key, value = lines[linenum].split(": ", 1)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
381 if key.strip() == "builder_data":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
382 ok = self.builder.parsePersistenceData(version, value)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
383 if not ok:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
384 self.__showInvalidDataMessage(filename, linenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
385 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
386 linenum += 1
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
387
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
388 # step 5: extract the graphics items
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
389 ok, vlinenum = self.umlView.parsePersistenceData(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
390 version, lines[linenum:])
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
391 if not ok:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
392 self.__showInvalidDataMessage(filename, linenum + vlinenum)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
393 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
394
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
395 except IndexError:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
396 self.__showInvalidDataMessage(filename)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
397 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
398
4645
3d6762252f04 Fixed an issue causing a wrong window title when a UML diagram was loaded.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
399 # everything worked fine, so remember the file name and set the
3d6762252f04 Fixed an issue causing a wrong window title when a UML diagram was loaded.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
400 # window title
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
401 self.setWindowTitle(self.__getDiagramTitel(self.__diagramType))
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
402 self.__fileName = filename
4645
3d6762252f04 Fixed an issue causing a wrong window title when a UML diagram was loaded.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
403
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
404 return True
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
405
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
406 def __showInvalidDataMessage(self, filename, linenum=-1):
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
407 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
408 Private slot to show a message dialog indicating an invalid data file.
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
409
8289
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
410 @param filename name of the file containing the invalid data
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
411 @type str
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
412 @param linenum number of the invalid line
871b40c5a77a Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8282
diff changeset
413 @type int
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
414 """
8257
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
415 msg = (
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
416 self.tr("""<p>The file <b>{0}</b> does not contain"""
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
417 """ valid data.</p>""").format(filename)
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
418 if linenum < 0 else
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
419 self.tr("""<p>The file <b>{0}</b> does not contain"""
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
420 """ valid data.</p><p>Invalid line: {1}</p>"""
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
421 ).format(filename, linenum + 1)
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
422 )
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
423 EricMessageBox.critical(self, self.tr("Load Diagram"), msg)
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
424
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
425 #######################################################################
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
426 ## Methods to read and write eric graphics files of the JSON based
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
427 ## file format.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
428 #######################################################################
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
429
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
430 def __writeJsonGraphicsFile(self, filename):
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
431 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
432 Private method to write an eric graphics file using the JSON based
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
433 file format.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
434
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
435 @param filename name of the file to write to
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
436 @type str
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
437 @return flag indicating a successful write
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
438 @rtype bool
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
439 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
440 data = {
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
441 "version": "1.0",
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
442 "type": self.__diagramType.value,
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
443 "title": self.__getDiagramTitel(self.__diagramType),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
444 "width": self.scene.width(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
445 "height": self.scene.height(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
446 "builder": self.builder.toDict(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
447 "view": self.umlView.toDict(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
448 }
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
449
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
450 try:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
451 jsonString = json.dumps(data, indent=2)
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
452 with open(filename, "w") as f:
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
453 f.write(jsonString)
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
454 return True
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
455 except (TypeError, OSError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
456 EricMessageBox.critical(
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
457 self,
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
458 self.tr("Save Diagram"),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
459 self.tr(
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
460 """<p>The file <b>{0}</b> could not be saved.</p>"""
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
461 """<p>Reason: {1}</p>""").format(filename, str(err))
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
462 )
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
463 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
464
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
465 def __readJsonGraphicsFile(self, filename):
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
466 """
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
467 Private method to read an eric graphics file using the JSON based
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
468 file format.
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
469
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
470 @param filename name of the file to be read
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
471 @type str
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
472 @return flag indicating a successful read
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
473 @rtype bool
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
474 """
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
475 try:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
476 with open(filename, "r") as f:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
477 jsonString = f.read()
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
478 data = json.loads(jsonString)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
479 except (OSError, json.JSONDecodeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
480 EricMessageBox.critical(
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
481 None,
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
482 self.tr("Load Diagram"),
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
483 self.tr(
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
484 """<p>The file <b>{0}</b> could not be read.</p>"""
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
485 """<p>Reason: {1}</p>""").format(filename, str(err))
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
486 )
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8289
diff changeset
487 return False
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
488
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
489 try:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
490 # step 1: check version
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
491 if data["version"] in UMLDialog.JsonFileVersions:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
492 version = data["version"]
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
493 else:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
494 self.__showInvalidDataMessage(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
495 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
496
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
497 # step 2: set diagram type
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
498 try:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
499 self.__diagramType = UMLDialogType(data["type"])
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
500 except ValueError:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
501 self.__showInvalidDataMessage(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
502 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
503 self.scene.clear()
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
504 self.builder = self.__diagramBuilder(self.__diagramType, "")
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
505
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
506 # step 3: set scene size
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
507 self.umlView.setSceneSize(data["width"], data["height"])
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
508
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
509 # step 4: extract builder data if available
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
510 ok, msg = self.builder.fromDict(version, data["builder"])
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
511 if not ok:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
512 if msg:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
513 res = EricMessageBox.warning(
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
514 self,
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
515 self.tr("Load Diagram"),
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
516 msg,
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
517 EricMessageBox.Abort | EricMessageBox.Ignore,
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
518 EricMessageBox.Abort)
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
519 if res == EricMessageBox.Abort:
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
520 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
521 else:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
522 self.umlView.setLayoutActionsEnabled(False)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
523 else:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
524 self.__showInvalidDataMessage(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
525 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
526
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
527 # step 5: extract the graphics items
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
528 ok = self.umlView.fromDict(version, data["view"])
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
529 if not ok:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
530 self.__showInvalidDataMessage(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
531 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
532 except KeyError:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
533 self.__showInvalidDataMessage(filename)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
534 return False
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
535
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
536 # everything worked fine, so remember the file name and set the
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
537 # window title
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
538 self.setWindowTitle(self.__getDiagramTitel(self.__diagramType))
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
539 self.__fileName = filename
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
540
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
541 return True

eric ide

mercurial