eric6/Graphics/ClassItem.py

Mon, 03 May 2021 19:58:28 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 03 May 2021 19:58:28 +0200
changeset 8287
30eb7bc13d63
parent 8281
184ece570a2b
child 8291
3d79b1e5bf3c
permissions
-rw-r--r--

Changed some source docu string to the new style.

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
3 # Copyright (c) 2007 - 2021 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
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
10 from PyQt5.QtCore import QCoreApplication
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
11 from PyQt5.QtGui import QFont
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
12 from PyQt5.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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
23 def __init__(self, name, methods=None, instanceAttributes=None,
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
28 @param name the class name
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
31 @type list of str
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
32 @param instanceAttributes list of instance attribute names of the class
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
33 @type list of str
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
34 @param classAttributes list of class attribute names of the class
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
40 self.instanceAttributes = (
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
41 []
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
42 if instanceAttributes is None else
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
43 instanceAttributes[:]
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
44 )
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
45 self.classAttributes = (
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
46 []
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
47 if classAttributes is None else
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
48 classAttributes[:]
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
55 @param method method name to be added
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
60 def addInstanceAttribute(self, attribute):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
64 @param attribute instance attribute name to be added
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
65 @type str
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
66 """
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
67 self.instanceAttributes.append(attribute)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
68
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
69 def addClassAttribute(self, attribute):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
71 Public method to add a class attribute to the class model.
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
72
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
73 @param attribute class attribute name to be added
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
74 @type str
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
75 """
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
93 """
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
94 return self.instanceAttributes[:]
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
95
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
96 def getClassAttributes(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
98 Public method to retrieve the global attributes of the class.
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
99
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
102 """
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
103 return self.classAttributes[:]
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
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
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 scene.addItem(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if self.model:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.__createTexts()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.__calculateSize()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 def __createTexts(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 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
151 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if self.model is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 boldFont = QFont(self.font)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 boldFont.setBold(True)
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
157 boldFont.setUnderline(True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
159 classAttributes = self.model.getClassAttributes()
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
160 attrs = self.model.getInstanceAttributes()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 meths = self.model.getMethods()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 x = self.margin + self.rect().x()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 y = self.margin + self.rect().y()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 self.header = QGraphicsSimpleTextItem(self)
7529
2b8a0d8ba12a UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
166 self.header.setBrush(self._colors[0])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.header.setFont(boldFont)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.header.setText(self.model.getName())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.header.setPos(x, y)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 y += self.header.boundingRect().height() + self.margin
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
171
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
172 if self.external:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
173 self.classAttributes = None
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
174 else:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
175 txt = QCoreApplication.translate(
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
176 "ClassItem", "Class Attributes:\n ")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
177 txt += (
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
178 "\n ".join(classAttributes)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
179 if globals else
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
180 " " + QCoreApplication.translate("ClassItem", "none")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
181 )
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
182 self.classAttributes = QGraphicsSimpleTextItem(self)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
183 self.classAttributes.setBrush(self._colors[0])
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
184 self.classAttributes.setFont(self.font)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
185 self.classAttributes.setText(txt)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
186 self.classAttributes.setPos(x, y)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
187 y += self.classAttributes.boundingRect().height() + self.margin
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
188
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 if not self.noAttrs and not self.external:
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
190 txt = QCoreApplication.translate(
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
191 "ClassItem", "Instance Attributes:\n ")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
192 txt += (
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
193 "\n ".join(attrs)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
194 if attrs else
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
195 " " + QCoreApplication.translate("ClassItem", "none")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
196 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.attrs = QGraphicsSimpleTextItem(self)
7529
2b8a0d8ba12a UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
198 self.attrs.setBrush(self._colors[0])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 self.attrs.setFont(self.font)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self.attrs.setText(txt)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.attrs.setPos(x, y)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 y += self.attrs.boundingRect().height() + self.margin
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.attrs = None
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
205
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
206 if self.external:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
207 txt = " "
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
208 else:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
209 txt = QCoreApplication.translate("ClassItem", "Methods:\n ")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
210 txt += (
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
211 "\n ".join(meths)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
212 if meths else
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
213 " " + QCoreApplication.translate("ClassItem", "none")
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
214 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.meths = QGraphicsSimpleTextItem(self)
7529
2b8a0d8ba12a UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
216 self.meths.setBrush(self._colors[0])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self.meths.setFont(self.font)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 self.meths.setText(txt)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.meths.setPos(x, y)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 def __calculateSize(self):
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 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
224 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 if self.model is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 width = self.header.boundingRect().width()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 height = self.header.boundingRect().height()
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
230 if self.classAttributes:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
231 width = max(width, 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
232 height += (
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
233 self.classAttributes.boundingRect().height() + self.margin
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
234 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 if self.attrs:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 width = max(width, self.attrs.boundingRect().width())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 height = height + self.attrs.boundingRect().height() + self.margin
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 if self.meths:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 width = max(width, self.meths.boundingRect().width())
8217
385f60c94548 Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
240 height += self.meths.boundingRect().height()
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
241
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 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
243
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 def setModel(self, model):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3178
diff changeset
246 Public method to set the class model.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
248 @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
249 @type ClassModel
0
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 self.scene().removeItem(self.header)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 self.header = None
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
253 if self.classAttributes:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
254 self.scene().removeItem(self.classAttributes)
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
255 self.classAttributes = None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if self.attrs:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.scene().removeItem(self.attrs)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.attrs = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 if self.meths:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.scene().removeItem(self.meths)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 self.meths = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 self.model = model
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 self.__createTexts()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 self.__calculateSize()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
266 def paint(self, painter, option, widget=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 Public method to paint the item in local coordinates.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
270 @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
271 @type QPainter
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
272 @param option style options
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
273 @type QStyleOptionGraphicsItem
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
274 @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
275 @type QWidget
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 pen = self.pen()
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
278 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
279 (option.state & QStyle.StateFlag.State_Selected) ==
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
280 QStyle.State(QStyle.StateFlag.State_Selected)
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
281 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 pen.setWidth(2)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 pen.setWidth(1)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 painter.setPen(pen)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 painter.setBrush(self.brush())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 painter.setFont(self.font)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 offsetX = self.rect().x()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 offsetY = self.rect().y()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 w = self.rect().width()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 h = self.rect().height()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 painter.drawRect(offsetX, offsetY, w, h)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 y = self.margin + self.header.boundingRect().height()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 painter.drawLine(offsetX, offsetY + y, offsetX + w - 1, offsetY + y)
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
298 if self.classAttributes:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
299 y += self.margin + self.classAttributes.boundingRect().height()
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
300 painter.drawLine(offsetX, offsetY + y,
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
301 offsetX + w - 1, offsetY + y)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 if self.attrs:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 y += self.margin + 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
304 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
305 offsetX + w - 1, offsetY + y)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 self.adjustAssociations()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 def isExternal(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3178
diff changeset
311 Public method returning the external state.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
313 @return external state
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
314 @rtype bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 return self.external
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
317
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
318 def buildItemDataString(self):
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
319 """
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
320 Public method to build a string to persist the specific item data.
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
321
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
322 This string must start with ", " and should be built like
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
323 "attribute=value" with pairs separated by ", ". value must not
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
324 contain ", " or newlines.
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
325
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
326 @return persistence data
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
327 @rtype str
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
328 """
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
329 entries = [
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
330 "is_external={0}".format(self.external),
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
331 "no_attributes={0}".format(self.noAttrs),
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
332 "name={0}".format(self.model.getName()),
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
333 ]
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
334 instanceAttributes = self.model.getInstanceAttributes()
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
335 if instanceAttributes:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
336 entries.append("attributes={0}".format(
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
337 "||".join(instanceAttributes)))
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
338 methods = self.model.getMethods()
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
339 if methods:
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
340 entries.append("methods={0}".format(
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
341 "||".join(methods)))
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
342 classAttributes = self.model.getClassAttributes()
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
343 if classAttributes:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
344 entries.append("class_attributes={0}".format(
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
345 "||".join(classAttributes)))
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
346
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
347 return ", " + ", ".join(entries)
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
348
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
349 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
350 """
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
351 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
352
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
353 @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
354 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
355 @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
356 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
357 @return flag indicating success
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8281
diff changeset
358 @rtype bool
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
359 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
360 parts = data.split(", ")
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
361 if len(parts) < 3:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
362 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
363
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
364 name = ""
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
365 instanceAttributes = []
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
366 methods = []
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
367 classAttributes = []
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
368
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
369 for part in parts:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
370 key, value = part.split("=", 1)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
371 if key == "is_external":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
372 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
373 elif key == "no_attributes":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
374 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
375 elif key == "name":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
376 name = value.strip()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
377 elif key == "attributes":
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
378 instanceAttributes = value.strip().split("||")
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
379 elif key == "methods":
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
380 methods = value.strip().split("||")
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
381 elif key == "class_attributes":
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
382 classAttributes = value.strip().split("||")
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
383 else:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
384 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
385
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
386 self.model = ClassModel(name, methods, instanceAttributes,
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
387 classAttributes)
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
388 self.__createTexts()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
389 self.__calculateSize()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
390
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
391 return True

eric ide

mercurial