At 17.08.2011 12:46, Pierre-Louis Bonicoli wrote:
Hi,
Right_connection and left_connection members of the UMLAttribute
structure are not available from bindings.
The connections are available on the object level, getting the one matching
a specific attribute is possible already, although more difficult than your
approach. See attached pydia sample.
Here is a patch which allows to access to these connection points with
pydia.
The patch looks basically right on the implementation level to me. But I
didn't apply it yet. Bad things would of course happen, if the
connectionpoint property would be set. But you rightly do not implement that.
But on the design level I wonder if the extra convenience your patch offers
really justifies all the extra complexity.
In attachement, test.py is an example of use.
Comments are welcome :)
Thanks,
Hans
-------- Hans "at" Breuer "dot" Org -----------
Tell me what you need, and I'll tell you how to
get along without it. -- Dilbert
#encoding: utf-8
import dia
def test(data, flags):
classes = []
layer = dia.active_display().diagram.data.layers[0]
for obj in layer.objects:
if obj.type.name == "UML - Class":
print "\nobject", obj
CP_ATTR_OFS = 8 # not including the mainpoint
i = 0
connections = []
for cpt in obj.connections : # connection points
for co in cpt.connected : # connected objects
in this point
connections.append ((i, co))
i += 1
attrs = obj.properties['attributes'].value
for con in connections :
n = con[0] - CP_ATTR_OFS
attr = attrs[n/2]
if (n % 2) == 0 :
print n, "\t %s left: connected to %s"
% (attr[0], con[1])
else :
print n, "\t %s right: connected to %s"
% (attr[0], con[1])
#for attr in obj.properties['attributes'].value:
# attr is a tuple, len(attr) == 9
# left_connection: attr[7] -> ConnectionPoint
# right_connection: attr[8] -> ConnectionPoint
# if attr[7].connected:
# print "\t %s left: connected to %s" %
(attr[0],
# attr[7].connected)
# if attr[8].connected:
# print "\t %s right: connected to %s" %
(attr[0],
# attr[8].connected)
classes.append(obj)
#dia.register_callback("Test", "<Display>/Debug/AttConns", test)
dia.register_action ("TestAttConns", "Attribute connections",
"/DisplayMenu/Debug/DebugExtensionStart",
test)
_______________________________________________
dia-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/dia-list
FAQ at http://live.gnome.org/Dia/Faq
Main page at http://live.gnome.org/Dia