Sat, 08 May 2021 18:34:08 +0200
UML Diagrams
- added code to load diagrams saved as JSON files
- changed the prining code
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7780
diff
changeset
|
3 | # Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the UML diagram builder base class. |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3656
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
10 | from PyQt5.QtCore import QObject |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | class UMLDiagramBuilder(QObject): |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | Class implementing the UML diagram builder base class. |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | def __init__(self, dialog, view, project): |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | Constructor |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
8289
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
21 | @param dialog reference to the UML dialog |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
22 | @type UMLDialog |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
23 | @param view reference to the view object |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
24 | @type UMLGraphicsView |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
25 | @param project reference to the project object |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
26 | @type Project |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
28 | super().__init__(dialog) |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | self.umlView = view |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | self.scene = self.umlView.scene() |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | self.project = project |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
2033
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
34 | def initialize(self): |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
35 | """ |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
36 | Public method to initialize the object. |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
37 | """ |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
38 | return |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
39 | |
8295 | 40 | def buildErrorMessage(self, msg): |
41 | """ | |
42 | Public method to build an error string to be included in the scene. | |
43 | ||
44 | @param msg error message | |
45 | @type str | |
46 | @return prepared error string | |
47 | @rtype str | |
48 | """ | |
49 | return ( | |
50 | "<font color='{0}'>".format( | |
51 | self.umlView.getDrawingColors()[0].name()) + | |
52 | msg + | |
53 | "</font>" | |
54 | ) | |
55 | ||
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | def buildDiagram(self): |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | Public method to build the diagram. |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | This class must be implemented in subclasses. |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
61 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
62 | @exception NotImplementedError raised to indicate that this class |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
63 | must be subclassed |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | raise NotImplementedError( |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | "Method 'buildDiagram' must be implemented in subclasses.") |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | |
2033
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
68 | def getPersistenceData(self): |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
69 | """ |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
70 | Public method to get a string for data to be persisted. |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
71 | |
8289
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
72 | @return persisted data string |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
73 | @rtype str |
2033
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
74 | """ |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
75 | return "" |
4b99609f6a87
Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2031
diff
changeset
|
76 | |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
77 | def parsePersistenceData(self, version, data): |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | Public method to parse persisted data. |
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
8289
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
81 | @param version version of the data |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
82 | @type str |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
83 | @param data persisted data to be parsed |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
84 | @type str |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
85 | @return flag indicating success |
871b40c5a77a
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
86 | @rtype bool |
2031
c36c2eb62a75
Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | """ |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
88 | return True |
8291 | 89 | |
90 | def toDict(self): | |
91 | """ | |
92 | Public method to collect data to be persisted. | |
93 | ||
94 | @return dictionary containing data to be persisted | |
95 | @rtype dict | |
96 | """ | |
97 | return {} | |
8295 | 98 | |
99 | def fromDict(self, version, data): | |
100 | """ | |
101 | Public method to populate the class with data persisted by 'toDict()'. | |
102 | ||
103 | @param version version of the data | |
104 | @type str | |
105 | @param data dictionary containing the persisted data | |
106 | @type dict | |
107 | @return tuple containing a flag indicating success and an info | |
108 | message in case the diagram belongs to a different project | |
109 | @rtype tuple of (bool, str) | |
110 | """ | |
111 | return True, "" |