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):
|
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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Reference in a new issue