From: Marius Gedminas <marius@gedmin.as>
| ... | ... |
@@ -346,9 +346,10 @@ def square_distance(x1, y1, x2, y2): |
| 346 | 346 |
|
| 347 | 347 |
class Edge(Element): |
| 348 | 348 |
|
| 349 |
- def __init__(self, points, shapes): |
|
| 349 |
+ def __init__(self, src, dst, points, shapes): |
|
| 350 | 350 |
Element.__init__(self, shapes) |
| 351 |
- |
|
| 351 |
+ self.src = src |
|
| 352 |
+ self.dst = dst |
|
| 352 | 353 |
self.points = points |
| 353 | 354 |
|
| 354 | 355 |
RADIUS = 10 |
| ... | ... |
@@ -577,6 +578,7 @@ class XDotParser: |
| 577 | 578 |
|
| 578 | 579 |
nodes = [] |
| 579 | 580 |
edges = [] |
| 581 |
+ node_by_name = {}
|
|
| 580 | 582 |
|
| 581 | 583 |
for node in graph.get_node_list(): |
| 582 | 584 |
if node.pos is None: |
| ... | ... |
@@ -590,8 +592,11 @@ class XDotParser: |
| 590 | 592 |
parser = XDotAttrParser(self, getattr(node, attr)) |
| 591 | 593 |
shapes.extend(parser.parse()) |
| 592 | 594 |
url = node.URL |
| 595 |
+ my_node = Node(x, y, w, h, shapes, url) |
|
| 596 |
+ node_name = node.get_name().strip('"') # XXX
|
|
| 597 |
+ node_by_name[node_name] = my_node |
|
| 593 | 598 |
if shapes: |
| 594 |
- nodes.append(Node(x, y, w, h, shapes, url)) |
|
| 599 |
+ nodes.append(my_node) |
|
| 595 | 600 |
|
| 596 | 601 |
for edge in graph.get_edge_list(): |
| 597 | 602 |
if edge.pos is None: |
| ... | ... |
@@ -603,7 +608,9 @@ class XDotParser: |
| 603 | 608 |
parser = XDotAttrParser(self, getattr(edge, attr)) |
| 604 | 609 |
shapes.extend(parser.parse()) |
| 605 | 610 |
if shapes: |
| 606 |
- edges.append(Edge(points, shapes)) |
|
| 611 |
+ src = node_by_name[edge.get_source()] |
|
| 612 |
+ dst = node_by_name[edge.get_destination()] |
|
| 613 |
+ edges.append(Edge(src, dst, points, shapes)) |
|
| 607 | 614 |
|
| 608 | 615 |
return Graph(width, height, nodes, edges) |
| 609 | 616 |
|