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:
Blake Harnden 2019-12-05 17:01:48 -08:00
parent 81eeac9ec6
commit 6077e81bf4
3 changed files with 22 additions and 14 deletions

View file

@ -85,3 +85,6 @@ class CanvasEdge:
def delete(self): def delete(self):
self.canvas.delete(self.id) self.canvas.delete(self.id)
if self.link_info:
self.canvas.delete(self.link_info.id1)
self.canvas.delete(self.link_info.id2)

View file

@ -376,14 +376,15 @@ class CanvasGraph(tk.Canvas):
edges = set() edges = set()
nodes = [] nodes = []
for object_id in self.selection: 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: if object_id in self.nodes:
selection_id = self.selection[object_id]
canvas_node = self.nodes.pop(object_id) canvas_node = self.nodes.pop(object_id)
canvas_node.delete()
nodes.append(canvas_node) 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) is_wireless = NodeUtils.is_wireless_node(canvas_node.core_node.type)
# delete related edges # delete related edges
@ -391,10 +392,10 @@ class CanvasGraph(tk.Canvas):
if edge in edges: if edge in edges:
continue continue
edges.add(edge) edges.add(edge)
self.edges.pop(edge.token) del self.edges[edge.token]
self.delete(edge.id) edge.delete()
self.delete(edge.link_info.id1)
self.delete(edge.link_info.id2) # update node connected to edge being deleted
other_id = edge.src other_id = edge.src
other_interface = edge.src_interface other_interface = edge.src_interface
if edge.src == object_id: if edge.src == object_id:
@ -408,11 +409,11 @@ class CanvasGraph(tk.Canvas):
pass pass
if is_wireless: if is_wireless:
other_node.delete_antenna() other_node.delete_antenna()
# delete shape
if object_id in self.shapes: if object_id in self.shapes:
selection_id = self.selection[object_id] shape = self.shapes.pop(object_id)
self.shapes[object_id].delete() shape.delete()
self.delete(selection_id)
self.shapes.pop(object_id)
self.selection.clear() self.selection.clear()
return nodes return nodes

View file

@ -49,6 +49,11 @@ class CanvasNode:
self.moving = None self.moving = None
self.antennae = [] self.antennae = []
def delete(self):
self.canvas.delete(self.id)
self.canvas.delete(self.text_id)
self.delete_antennae()
def add_antenna(self): def add_antenna(self):
x, y = self.canvas.coords(self.id) x, y = self.canvas.coords(self.id)
offset = len(self.antennae) * 8 offset = len(self.antennae) * 8
@ -78,7 +83,6 @@ class CanvasNode:
:return: nothing :return: nothing
""" """
logging.info("deleting antennae: %s", self.antennae)
for antenna_id in self.antennae: for antenna_id in self.antennae:
self.canvas.delete(antenna_id) self.canvas.delete(antenna_id)
self.antennae.clear() self.antennae.clear()