Thu, 30 Dec 2021 11:17:58 +0100
Updated copyright for 2022.
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:
8805
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 an UML like class item. |
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 | |
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
|
10 | from PyQt6.QtCore import QCoreApplication |
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
|
11 | from PyQt6.QtGui import QFont |
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
|
12 | from PyQt6.QtWidgets import QGraphicsSimpleTextItem, QStyle |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
14 | from .UMLItem import UMLModel, UMLItem |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
16 | import Utilities |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
17 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
18 | |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
19 | class ClassModel(UMLModel): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Class implementing the class model. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
8277 | 23 | def __init__(self, name, methods=None, instanceAttributes=None, |
24 | classAttributes=None): | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | |
8277 | 28 | @param name the class name |
29 | @type str | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | @param methods list of method names of the class |
8277 | 31 | @type list of str |
32 | @param instanceAttributes list of instance attribute names of the class | |
33 | @type list of str | |
34 | @param classAttributes list of class attribute names of the class | |
35 | @type list of str | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
37 | super().__init__(name) |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
38 | |
5651
982465f8389c
Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
39 | self.methods = [] if methods is None else methods[:] |
8277 | 40 | self.instanceAttributes = ( |
41 | [] | |
42 | if instanceAttributes is None else | |
43 | instanceAttributes[:] | |
44 | ) | |
45 | self.classAttributes = ( | |
46 | [] | |
47 | if classAttributes is None else | |
48 | classAttributes[:] | |
49 | ) | |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
50 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | def addMethod(self, method): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
53 | Public method to add a method to the class model. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | |
8277 | 55 | @param method method name to be added |
56 | @type str | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | self.methods.append(method) |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
59 | |
8277 | 60 | def addInstanceAttribute(self, attribute): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
8277 | 62 | Public method to add an instance attribute to the class model. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
8277 | 64 | @param attribute instance attribute name to be added |
65 | @type str | |
66 | """ | |
67 | self.instanceAttributes.append(attribute) | |
68 | ||
69 | def addClassAttribute(self, attribute): | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | """ |
8277 | 71 | Public method to add a class attribute to the class model. |
72 | ||
73 | @param attribute class attribute name to be added | |
74 | @type str | |
75 | """ | |
76 | self.classAttributes.append(attribute) | |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
77 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | def getMethods(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
80 | Public method to retrieve the methods of the class. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
8277 | 82 | @return list of class methods |
8281
184ece570a2b
Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8277
diff
changeset
|
83 | @rtype list of str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | return self.methods[:] |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
86 | |
8277 | 87 | def getInstanceAttributes(self): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
89 | Public method to retrieve the attributes of the class. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
8277 | 91 | @return list of instance attributes |
8281
184ece570a2b
Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8277
diff
changeset
|
92 | @rtype list of str |
8277 | 93 | """ |
94 | return self.instanceAttributes[:] | |
95 | ||
96 | def getClassAttributes(self): | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | """ |
8277 | 98 | Public method to retrieve the global attributes of the class. |
99 | ||
100 | @return list of class attributes | |
8281
184ece570a2b
Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8277
diff
changeset
|
101 | @rtype list of str |
8277 | 102 | """ |
103 | return self.classAttributes[:] | |
104 | ||
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
105 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | class ClassItem(UMLItem): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | Class implementing an UML like class item. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | """ |
2032
704593d042fe
Introduced the ItemType class variable for the various UML graphics items.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2030
diff
changeset
|
110 | ItemType = "class" |
704593d042fe
Introduced the ItemType class variable for the various UML graphics items.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2030
diff
changeset
|
111 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
112 | def __init__(self, model=None, external=False, x=0, y=0, |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
113 | rounded=False, noAttrs=False, colors=None, parent=None, |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
114 | scene=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
118 | @param model class model containing the class data |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
119 | @type ClassModel |
2992
dbdf27746da5
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
120 | @param external flag indicating a class defined outside our scope |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
121 | @type boolean |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
122 | @param x x-coordinate |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
123 | @type int |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
124 | @param y y-coordinate |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
125 | @type int |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
126 | @param rounded flag indicating a rounded corner |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
127 | @type bool |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
128 | @param noAttrs flag indicating, that no attributes should be shown |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
129 | @type bool |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
130 | @param colors tuple containing the foreground and background colors |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
131 | @type tuple of (QColor, QColor) |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
132 | @param parent reference to the parent object |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
133 | @type QGraphicsItem |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
134 | @param scene reference to the scene object |
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
135 | @type QGraphicsScene |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | """ |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
137 | UMLItem.__init__(self, model, x, y, rounded, colors, parent) |
2039
fa41ccd7f7bc
Added the capability to rebuild a diagram without losing the current item positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2034
diff
changeset
|
138 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | self.external = external |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.noAttrs = noAttrs |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
8295 | 142 | if scene: |
143 | scene.addItem(self) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | if self.model: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | self.__createTexts() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | self.__calculateSize() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | def __createTexts(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | Private method to create the text items of the class item. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | if self.model is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | boldFont = QFont(self.font) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | boldFont.setBold(True) |
8277 | 158 | boldFont.setUnderline(True) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | |
8277 | 160 | classAttributes = self.model.getClassAttributes() |
161 | attrs = self.model.getInstanceAttributes() | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | meths = self.model.getMethods() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
164 | x = self.margin + int(self.rect().x()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
165 | y = self.margin + int(self.rect().y()) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | self.header = QGraphicsSimpleTextItem(self) |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
167 | self.header.setBrush(self._colors[0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | self.header.setFont(boldFont) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | self.header.setText(self.model.getName()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | self.header.setPos(x, y) |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
171 | y += int(self.header.boundingRect().height()) + self.margin |
8277 | 172 | |
173 | if self.external: | |
174 | self.classAttributes = None | |
175 | else: | |
176 | txt = QCoreApplication.translate( | |
177 | "ClassItem", "Class Attributes:\n ") | |
178 | txt += ( | |
179 | "\n ".join(classAttributes) | |
180 | if globals else | |
181 | " " + QCoreApplication.translate("ClassItem", "none") | |
182 | ) | |
183 | self.classAttributes = QGraphicsSimpleTextItem(self) | |
184 | self.classAttributes.setBrush(self._colors[0]) | |
185 | self.classAttributes.setFont(self.font) | |
186 | self.classAttributes.setText(txt) | |
187 | self.classAttributes.setPos(x, y) | |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
188 | y += (int(self.classAttributes.boundingRect().height()) + |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
189 | self.margin) |
8277 | 190 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | if not self.noAttrs and not self.external: |
8277 | 192 | txt = QCoreApplication.translate( |
193 | "ClassItem", "Instance Attributes:\n ") | |
194 | txt += ( | |
195 | "\n ".join(attrs) | |
196 | if attrs else | |
197 | " " + QCoreApplication.translate("ClassItem", "none") | |
198 | ) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | self.attrs = QGraphicsSimpleTextItem(self) |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
200 | self.attrs.setBrush(self._colors[0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | self.attrs.setFont(self.font) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | self.attrs.setText(txt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | self.attrs.setPos(x, y) |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
204 | y += int(self.attrs.boundingRect().height()) + self.margin |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | self.attrs = None |
8277 | 207 | |
208 | if self.external: | |
209 | txt = " " | |
210 | else: | |
211 | txt = QCoreApplication.translate("ClassItem", "Methods:\n ") | |
212 | txt += ( | |
213 | "\n ".join(meths) | |
214 | if meths else | |
215 | " " + QCoreApplication.translate("ClassItem", "none") | |
216 | ) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | self.meths = QGraphicsSimpleTextItem(self) |
7529
2b8a0d8ba12a
UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
218 | self.meths.setBrush(self._colors[0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | self.meths.setFont(self.font) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | self.meths.setText(txt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | self.meths.setPos(x, y) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | def __calculateSize(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | Private method to calculate the size of the class item. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | if self.model is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
230 | width = int(self.header.boundingRect().width()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
231 | height = int(self.header.boundingRect().height()) |
8277 | 232 | if self.classAttributes: |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
233 | width = max(width, |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
234 | int(self.classAttributes.boundingRect().width())) |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
235 | height += ( |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
236 | int(self.classAttributes.boundingRect().height()) + self.margin |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
237 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | if self.attrs: |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
239 | width = max(width, |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
240 | int(self.attrs.boundingRect().width())) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
241 | height = ( |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
242 | height + int(self.attrs.boundingRect().height()) + self.margin |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
243 | ) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | if self.meths: |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
245 | width = max(width, |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
246 | int(self.meths.boundingRect().width())) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
247 | height += int(self.meths.boundingRect().height()) |
8277 | 248 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | self.setSize(width + 2 * self.margin, height + 2 * self.margin) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | def setModel(self, model): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
253 | Public method to set the class model. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
255 | @param model class model containing the class data |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
256 | @type ClassModel |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | self.scene().removeItem(self.header) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | self.header = None |
8277 | 260 | if self.classAttributes: |
261 | self.scene().removeItem(self.classAttributes) | |
262 | self.classAttributes = None | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | if self.attrs: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | self.scene().removeItem(self.attrs) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | self.attrs = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | if self.meths: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | self.scene().removeItem(self.meths) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | self.meths = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | self.model = model |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | self.__createTexts() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | self.__calculateSize() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
273 | def paint(self, painter, option, widget=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | Public method to paint the item in local coordinates. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
277 | @param painter reference to the painter object |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
278 | @type QPainter |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
279 | @param option style options |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
280 | @type QStyleOptionGraphicsItem |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
281 | @param widget optional reference to the widget painted on |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
282 | @type QWidget |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | pen = self.pen() |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
285 | if ( |
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
|
286 | (option.state & QStyle.StateFlag.State_Selected) == |
8720
336f594ff5dd
Fixed a few enum related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8348
diff
changeset
|
287 | QStyle.StateFlag.State_Selected |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
288 | ): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | pen.setWidth(2) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | pen.setWidth(1) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | painter.setPen(pen) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | painter.setBrush(self.brush()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | painter.setFont(self.font) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
297 | offsetX = int(self.rect().x()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
298 | offsetY = int(self.rect().y()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
299 | w = int(self.rect().width()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
300 | h = int(self.rect().height()) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | painter.drawRect(offsetX, offsetY, w, h) |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
303 | y = self.margin + int(self.header.boundingRect().height()) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | painter.drawLine(offsetX, offsetY + y, offsetX + w - 1, offsetY + y) |
8277 | 305 | if self.classAttributes: |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
306 | y += ( |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
307 | self.margin + |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
308 | int(self.classAttributes.boundingRect().height()) |
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
309 | ) |
8277 | 310 | painter.drawLine(offsetX, offsetY + y, |
311 | offsetX + w - 1, offsetY + y) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | if self.attrs: |
8805
6e3a15f98fd2
Fixed an issue with respect to type conversion from float to int in the Graphics package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8720
diff
changeset
|
313 | y += self.margin + int(self.attrs.boundingRect().height()) |
2992
dbdf27746da5
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
314 | painter.drawLine(offsetX, offsetY + y, |
dbdf27746da5
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
315 | offsetX + w - 1, offsetY + y) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | self.adjustAssociations() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | def isExternal(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
321 | Public method returning the external state. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
323 | @return external state |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
324 | @rtype bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | return self.external |
2030
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
327 | |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
328 | def parseItemDataString(self, version, data): |
2030
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
329 | """ |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
330 | Public method to parse the given persistence data. |
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
331 | |
8287
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
332 | @param version version of the data |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
333 | @type str |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
334 | @param data persisted data to be parsed |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
335 | @type str |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
336 | @return flag indicating success |
30eb7bc13d63
Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8281
diff
changeset
|
337 | @rtype bool |
2030
db11a2fe9bbc
Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
338 | """ |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
339 | parts = data.split(", ") |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
340 | if len(parts) < 3: |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
341 | return False |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
342 | |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
343 | name = "" |
8277 | 344 | instanceAttributes = [] |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
345 | methods = [] |
8277 | 346 | classAttributes = [] |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
347 | |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
348 | for part in parts: |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
349 | key, value = part.split("=", 1) |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
350 | if key == "is_external": |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
351 | self.external = Utilities.toBool(value.strip()) |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
352 | elif key == "no_attributes": |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
353 | self.noAttrs = Utilities.toBool(value.strip()) |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
354 | elif key == "name": |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
355 | name = value.strip() |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
356 | elif key == "attributes": |
8277 | 357 | instanceAttributes = value.strip().split("||") |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
358 | elif key == "methods": |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
359 | methods = value.strip().split("||") |
8277 | 360 | elif key == "class_attributes": |
361 | classAttributes = value.strip().split("||") | |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
362 | else: |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
363 | return False |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
364 | |
8277 | 365 | self.model = ClassModel(name, methods, instanceAttributes, |
366 | classAttributes) | |
2034
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
367 | self.__createTexts() |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
368 | self.__calculateSize() |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
369 | |
8de0fc1f7fef
Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2033
diff
changeset
|
370 | return True |
8291 | 371 | |
372 | def toDict(self): | |
373 | """ | |
374 | Public method to collect data to be persisted. | |
375 | ||
376 | @return dictionary containing data to be persisted | |
377 | @rtype dict | |
378 | """ | |
379 | return { | |
8295 | 380 | "id": self.getId(), |
381 | "x": self.x(), | |
382 | "y": self.y(), | |
383 | "type": self.getItemType(), | |
8291 | 384 | "is_external": self.external, |
385 | "no_attributes": self.noAttrs, | |
8295 | 386 | "model_name": self.model.getName(), |
8291 | 387 | "attributes": self.model.getInstanceAttributes(), |
388 | "methods": self.model.getMethods(), | |
389 | "class_attributes": self.model.getClassAttributes(), | |
390 | } | |
8295 | 391 | |
392 | @classmethod | |
393 | def fromDict(cls, data, colors=None): | |
394 | """ | |
395 | Class method to create a class item from persisted data. | |
396 | ||
397 | @param data dictionary containing the persisted data as generated | |
398 | by toDict() | |
399 | @type dict | |
400 | @param colors tuple containing the foreground and background colors | |
401 | @type tuple of (QColor, QColor) | |
402 | @return created class item | |
403 | @rtype ClassItem | |
404 | """ | |
405 | try: | |
406 | model = ClassModel(data["model_name"], | |
407 | data["methods"], | |
408 | data["attributes"], | |
409 | data["class_attributes"]) | |
410 | itm = cls(model=model, | |
411 | external=data["is_external"], | |
412 | x=0, | |
413 | y=0, | |
414 | noAttrs=data["no_attributes"], | |
415 | colors=colors) | |
416 | itm.setPos(data["x"], data["y"]) | |
417 | itm.setId(data["id"]) | |
418 | return itm | |
419 | except KeyError: | |
420 | return None |