moved node/edge delete logic into their own classes for helping make them managing their own data a bit easier
This commit is contained in:
parent
81eeac9ec6
commit
6077e81bf4
3 changed files with 22 additions and 14 deletions
|
@ -85,3 +85,6 @@ class CanvasEdge:
|
|||
|
||||
def delete(self):
|
||||
self.canvas.delete(self.id)
|
||||
if self.link_info:
|
||||
self.canvas.delete(self.link_info.id1)
|
||||
self.canvas.delete(self.link_info.id2)
|
||||
|
|
|
@ -376,14 +376,15 @@ class CanvasGraph(tk.Canvas):
|
|||
edges = set()
|
||||
nodes = []
|
||||
for object_id in self.selection:
|
||||
# delete selection box
|
||||
selection_id = self.selection[object_id]
|
||||
self.delete(selection_id)
|
||||
|
||||
# delete node and related edges
|
||||
if object_id in self.nodes:
|
||||
selection_id = self.selection[object_id]
|
||||
canvas_node = self.nodes.pop(object_id)
|
||||
canvas_node.delete()
|
||||
nodes.append(canvas_node)
|
||||
self.delete(object_id)
|
||||
self.delete(selection_id)
|
||||
self.delete(canvas_node.text_id)
|
||||
canvas_node.delete_antennae()
|
||||
is_wireless = NodeUtils.is_wireless_node(canvas_node.core_node.type)
|
||||
|
||||
# delete related edges
|
||||
|
@ -391,10 +392,10 @@ class CanvasGraph(tk.Canvas):
|
|||
if edge in edges:
|
||||
continue
|
||||
edges.add(edge)
|
||||
self.edges.pop(edge.token)
|
||||
self.delete(edge.id)
|
||||
self.delete(edge.link_info.id1)
|
||||
self.delete(edge.link_info.id2)
|
||||
del self.edges[edge.token]
|
||||
edge.delete()
|
||||
|
||||
# update node connected to edge being deleted
|
||||
other_id = edge.src
|
||||
other_interface = edge.src_interface
|
||||
if edge.src == object_id:
|
||||
|
@ -408,11 +409,11 @@ class CanvasGraph(tk.Canvas):
|
|||
pass
|
||||
if is_wireless:
|
||||
other_node.delete_antenna()
|
||||
|
||||
# delete shape
|
||||
if object_id in self.shapes:
|
||||
selection_id = self.selection[object_id]
|
||||
self.shapes[object_id].delete()
|
||||
self.delete(selection_id)
|
||||
self.shapes.pop(object_id)
|
||||
shape = self.shapes.pop(object_id)
|
||||
shape.delete()
|
||||
|
||||
self.selection.clear()
|
||||
return nodes
|
||||
|
|
|
@ -49,6 +49,11 @@ class CanvasNode:
|
|||
self.moving = None
|
||||
self.antennae = []
|
||||
|
||||
def delete(self):
|
||||
self.canvas.delete(self.id)
|
||||
self.canvas.delete(self.text_id)
|
||||
self.delete_antennae()
|
||||
|
||||
def add_antenna(self):
|
||||
x, y = self.canvas.coords(self.id)
|
||||
offset = len(self.antennae) * 8
|
||||
|
@ -78,7 +83,6 @@ class CanvasNode:
|
|||
|
||||
:return: nothing
|
||||
"""
|
||||
logging.info("deleting antennae: %s", self.antennae)
|
||||
for antenna_id in self.antennae:
|
||||
self.canvas.delete(antenna_id)
|
||||
self.antennae.clear()
|
||||
|
|
Loading…
Add table
Reference in a new issue