pygui some delete node/link cleanup and added unlink option to node context menu for an easier unlinking
This commit is contained in:
parent
d158fc99c6
commit
5a8984de10
3 changed files with 49 additions and 22 deletions
|
@ -1,3 +1,4 @@
|
|||
import functools
|
||||
import logging
|
||||
import tkinter as tk
|
||||
from typing import TYPE_CHECKING
|
||||
|
@ -15,6 +16,7 @@ from core.gui.dialogs.nodeservice import NodeServiceDialog
|
|||
from core.gui.dialogs.wlanconfig import WlanConfigDialog
|
||||
from core.gui.errors import show_grpc_error
|
||||
from core.gui.graph import tags
|
||||
from core.gui.graph.edges import CanvasEdge
|
||||
from core.gui.graph.tooltip import CanvasTooltip
|
||||
from core.gui.images import ImageEnum, Images
|
||||
from core.gui.nodeutils import ANTENNA_SIZE, NodeUtils
|
||||
|
@ -230,6 +232,18 @@ class CanvasNode:
|
|||
label="Link To Selected", command=self.wireless_link_selected
|
||||
)
|
||||
context.add_command(label="Select Members", state=tk.DISABLED)
|
||||
unlink_menu = tk.Menu(context)
|
||||
for edge in self.edges:
|
||||
other_id = edge.src
|
||||
if self.id == other_id:
|
||||
other_id = edge.dst
|
||||
other_node = self.canvas.nodes[other_id]
|
||||
func_unlink = functools.partial(self.click_unlink, edge)
|
||||
unlink_menu.add_command(
|
||||
label=other_node.core_node.name, command=func_unlink
|
||||
)
|
||||
themes.style_menu(unlink_menu)
|
||||
context.add_cascade(label="Unlink", menu=unlink_menu)
|
||||
edit_menu = tk.Menu(context)
|
||||
themes.style_menu(edit_menu)
|
||||
edit_menu.add_command(label="Cut", command=self.click_cut)
|
||||
|
@ -242,6 +256,10 @@ class CanvasNode:
|
|||
self.canvas_copy()
|
||||
self.canvas_delete()
|
||||
|
||||
def click_unlink(self, edge: CanvasEdge) -> None:
|
||||
self.canvas.delete_edge(edge)
|
||||
self.app.core.deleted_graph_edges([edge])
|
||||
|
||||
def canvas_delete(self) -> None:
|
||||
self.canvas.clear_selection()
|
||||
self.canvas.selection[self.id] = self
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue