root/gaphor/tags/gaphor-0.3.0/gaphor/UML/uml2.override

Revision 217, 3.6 kB (checked in by arjanmol, 5 years ago)

*** empty log message ***

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 comment
2   vim:sw=4:et:syntax=python
3
4   This is a file with custom definitions for Gaphors data model.
5
6   Parts are separated by '%%' (no training spaces) on a line.
7   Comment parts start with 'comment' on the line belowe the percentage
8   symbols, 'override' is used to define a overridden variable.
9
10 %%
11 override Element
12 from element import Element
13 %%
14 override Diagram
15 from diagram import Diagram
16 %%
17 override MultiplicityElement.lower
18 # Make it watch MultiplicityElement.lowerValue.value
19 def _get(self):
20     return self.lowerValue and self.lowerValue.value
21 def _set(self, value):
22     if not self.lowerValue:
23         self.lowerValue = self._factory.create(LiteralString)
24     self.lowerValue.value = value
25 def _del(self):
26     if self.lowerValue:
27         del self.lowerValue.value
28
29 MultiplicityElement.lower = property(_get, _set, _del)
30 del _get, _set, _del
31 # TODO: let it also emit notifications
32 # A notifier should be connected on instantiation of the lowerValue element.
33 # - this should be done on creation of the lowerValue, hence we should
34 #   add a notifier when self.lowerValue changes.
35 # - This requires some extra code to be executed on creation of our
36 #   MultiplicityElement. This can be done either in the Element or the
37 #   ElementFactory.
38 %%
39 override MultiplicityElement.upper
40 # Make it watch MultiplicityElement.upperValue.value
41 def _get(self):
42     return self.upperValue and self.upperValue.value
43 def _set(self, value):
44     if not self.upperValue:
45         self.upperValue = self._factory.create(LiteralString)
46     self.upperValue.value = value
47 def _del(self):
48     if self.upperValue:
49         del self.upperValue.value
50
51 MultiplicityElement.upper = property(_get, _set, _del)
52 del _get, _set, _del
53 %%
54 override Classifier.inheritedMember
55 Classifier.inheritedMember = derivedunion('inheritedMember', 0, '*')
56 %%
57 override Classifier.general
58 Classifier.general = derivedunion('inheritedMember', 0, '*')
59 %%
60 override Namespace.importedMember
61 Namespace.importedMember = derivedunion('importedMember', 0, '*')
62 %%
63 override Property.opposite
64
65 def property_opposite(self):
66     """In the case where the property is one navigable end of a binary
67     association with both ends navigable, this gives the other end.
68
69     For Gaphor the property on the other end is returned regardless the
70     navigability.
71     """
72     #if not self.owningAssociation and len(self.association.memberEnd) == 2:
73     #    other_end = self.association.memberEnd[0] is self \
74     #                and self.association.memberEnd[1] \
75     #                or self.association.memberEnd[0]
76     #    return other_end
77     if len(self.association.memberEnd) == 2:
78         return self.association.memberEnd[0] is self \
79                and self.association.memberEnd[1] \
80                or self.association.memberEnd[0]
81     return None
82
83 Property.opposite = property(property_opposite, doc=property_opposite.__doc__)
84
85 del property_opposite
86 %%
87 override Property.isComposite
88 Property.isComposite = property(lambda self: self.aggregation == intern('composite'))
89 %%
90 override Constraint.context
91 Constraint.context = derivedunion('context', 0, 1)
92 %%
93 override Association.endType
94 Association.endType = derivedunion('endType', 1, '*')
95 %%
96 override Operation.type
97 Operation.type = derivedunion('type', 0, 1)
98 %%
99 override Property.parse
100 from umllex import parse_property
101 Property.parse = parse_property
102 del parse_property
103 %%
104 override Property.render
105 from umllex import render_property
106 Property.render = render_property
107 del render_property
108 %%
109 override Operation.parse
110 from umllex import parse_operation
111 Operation.parse = parse_operation
112 del parse_operation
113 %%
114 override Operation.render
115 from umllex import render_operation
116 Operation.render = render_operation
117 del render_operation
Note: See TracBrowser for help on using the browser.