enabled node context delete/copy and edit menu delete in python gui
This commit is contained in:
parent
e0ce29b25a
commit
fc40c8d7bb
4 changed files with 39 additions and 24 deletions
|
@ -1,6 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from typing import TYPE_CHECKING, List, Tuple
|
from typing import TYPE_CHECKING, Tuple
|
||||||
|
|
||||||
from PIL import Image, ImageTk
|
from PIL import Image, ImageTk
|
||||||
|
|
||||||
|
@ -440,7 +440,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
if select_id is not None:
|
if select_id is not None:
|
||||||
self.move(select_id, x_offset, y_offset)
|
self.move(select_id, x_offset, y_offset)
|
||||||
|
|
||||||
def delete_selection_objects(self) -> List[CanvasNode]:
|
def delete_selected_objects(self) -> None:
|
||||||
edges = set()
|
edges = set()
|
||||||
nodes = []
|
nodes = []
|
||||||
for object_id in self.selection:
|
for object_id in self.selection:
|
||||||
|
@ -484,7 +484,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
shape.delete()
|
shape.delete()
|
||||||
|
|
||||||
self.selection.clear()
|
self.selection.clear()
|
||||||
return nodes
|
self.core.delete_graph_nodes(nodes)
|
||||||
|
|
||||||
def zoom(self, event: tk.Event, factor: float = None):
|
def zoom(self, event: tk.Event, factor: float = None):
|
||||||
if not factor:
|
if not factor:
|
||||||
|
@ -640,16 +640,17 @@ class CanvasGraph(tk.Canvas):
|
||||||
self.select_box.shape_motion(x, y)
|
self.select_box.shape_motion(x, y)
|
||||||
|
|
||||||
def click_context(self, event: tk.Event):
|
def click_context(self, event: tk.Event):
|
||||||
|
logging.info("context: %s", self.context)
|
||||||
if not self.context:
|
if not self.context:
|
||||||
selected = self.get_selected(event)
|
selected = self.get_selected(event)
|
||||||
canvas_node = self.nodes.get(selected)
|
canvas_node = self.nodes.get(selected)
|
||||||
if canvas_node:
|
if canvas_node:
|
||||||
logging.debug("node context: %s", selected)
|
logging.debug("node context: %s", selected)
|
||||||
self.context = canvas_node.create_context()
|
self.context = canvas_node.create_context()
|
||||||
self.context.bind("<Leave>", self.hide_context)
|
self.context.bind("<Unmap>", self.hide_context)
|
||||||
self.context.post(event.x_root, event.y_root)
|
self.context.post(event.x_root, event.y_root)
|
||||||
# else:
|
else:
|
||||||
# self.hide_context()
|
self.hide_context()
|
||||||
|
|
||||||
def press_delete(self, event: tk.Event):
|
def press_delete(self, event: tk.Event):
|
||||||
"""
|
"""
|
||||||
|
@ -657,8 +658,7 @@ class CanvasGraph(tk.Canvas):
|
||||||
"""
|
"""
|
||||||
logging.debug("press delete key")
|
logging.debug("press delete key")
|
||||||
if not self.app.core.is_runtime():
|
if not self.app.core.is_runtime():
|
||||||
nodes = self.delete_selection_objects()
|
self.delete_selected_objects()
|
||||||
self.core.delete_graph_nodes(nodes)
|
|
||||||
else:
|
else:
|
||||||
logging.info("node deletion is disabled during runtime state")
|
logging.info("node deletion is disabled during runtime state")
|
||||||
|
|
||||||
|
|
|
@ -233,17 +233,25 @@ class CanvasNode:
|
||||||
label="Link To Selected", command=self.wireless_link_selected
|
label="Link To Selected", command=self.wireless_link_selected
|
||||||
)
|
)
|
||||||
context.add_command(label="Select Members", state=tk.DISABLED)
|
context.add_command(label="Select Members", state=tk.DISABLED)
|
||||||
context.add_command(label="Select Adjacent", state=tk.DISABLED)
|
edit_menu = tk.Menu(context)
|
||||||
context.add_command(label="Create Link To", state=tk.DISABLED)
|
themes.style_menu(edit_menu)
|
||||||
context.add_command(label="Assign To", state=tk.DISABLED)
|
edit_menu.add_command(label="Cut", state=tk.DISABLED)
|
||||||
context.add_command(label="Move To", state=tk.DISABLED)
|
edit_menu.add_command(label="Copy", command=self.canvas_copy)
|
||||||
context.add_command(label="Cut", state=tk.DISABLED)
|
edit_menu.add_command(label="Delete", command=self.canvas_delete)
|
||||||
context.add_command(label="Copy", state=tk.DISABLED)
|
edit_menu.add_command(label="Hide", state=tk.DISABLED)
|
||||||
context.add_command(label="Paste", state=tk.DISABLED)
|
context.add_cascade(label="Edit", menu=edit_menu)
|
||||||
context.add_command(label="Delete", state=tk.DISABLED)
|
|
||||||
context.add_command(label="Hide", state=tk.DISABLED)
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def canvas_delete(self) -> None:
|
||||||
|
self.canvas.clear_selection()
|
||||||
|
self.canvas.selection[self.id] = self
|
||||||
|
self.canvas.delete_selected_objects()
|
||||||
|
|
||||||
|
def canvas_copy(self) -> None:
|
||||||
|
self.canvas.clear_selection()
|
||||||
|
self.canvas.selection[self.id] = self
|
||||||
|
self.canvas.copy()
|
||||||
|
|
||||||
def show_config(self):
|
def show_config(self):
|
||||||
self.canvas.context = None
|
self.canvas.context = None
|
||||||
dialog = NodeConfigDialog(self.app, self.app, self)
|
dialog = NodeConfigDialog(self.app, self.app, self)
|
||||||
|
|
|
@ -152,31 +152,34 @@ class MenuAction:
|
||||||
dialog = ServersDialog(self.app, self.app)
|
dialog = ServersDialog(self.app, self.app)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
def edit_observer_widgets(self):
|
def edit_observer_widgets(self) -> None:
|
||||||
dialog = ObserverDialog(self.app, self.app)
|
dialog = ObserverDialog(self.app, self.app)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
def show_about(self):
|
def show_about(self) -> None:
|
||||||
dialog = AboutDialog(self.app, self.app)
|
dialog = AboutDialog(self.app, self.app)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
def throughput(self):
|
def throughput(self) -> None:
|
||||||
if not self.app.core.handling_throughputs:
|
if not self.app.core.handling_throughputs:
|
||||||
self.app.core.enable_throughputs()
|
self.app.core.enable_throughputs()
|
||||||
else:
|
else:
|
||||||
self.app.core.cancel_throughputs()
|
self.app.core.cancel_throughputs()
|
||||||
|
|
||||||
def copy(self, event: tk.Event = None):
|
def copy(self, event: tk.Event = None) -> None:
|
||||||
self.app.canvas.copy()
|
self.app.canvas.copy()
|
||||||
|
|
||||||
def paste(self, event: tk.Event = None):
|
def paste(self, event: tk.Event = None) -> None:
|
||||||
self.app.canvas.paste()
|
self.app.canvas.paste()
|
||||||
|
|
||||||
def config_throughput(self):
|
def delete(self, event: tk.Event = None) -> None:
|
||||||
|
self.app.canvas.delete_selected_objects()
|
||||||
|
|
||||||
|
def config_throughput(self) -> None:
|
||||||
dialog = ThroughputDialog(self.app, self.app)
|
dialog = ThroughputDialog(self.app, self.app)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
def add_recent_file_to_gui_config(self, file_path):
|
def add_recent_file_to_gui_config(self, file_path) -> None:
|
||||||
recent_files = self.app.guiconfig["recentfiles"]
|
recent_files = self.app.guiconfig["recentfiles"]
|
||||||
num_files = len(recent_files)
|
num_files = len(recent_files)
|
||||||
if num_files == 0:
|
if num_files == 0:
|
||||||
|
|
|
@ -101,6 +101,9 @@ class Menubar(tk.Menu):
|
||||||
menu.add_command(
|
menu.add_command(
|
||||||
label="Paste", accelerator="Ctrl+V", command=self.menuaction.paste
|
label="Paste", accelerator="Ctrl+V", command=self.menuaction.paste
|
||||||
)
|
)
|
||||||
|
menu.add_command(
|
||||||
|
label="Delete", accelerator="Ctrl+D", command=self.menuaction.delete
|
||||||
|
)
|
||||||
menu.add_separator()
|
menu.add_separator()
|
||||||
menu.add_command(label="Select all", accelerator="Ctrl+A", state=tk.DISABLED)
|
menu.add_command(label="Select all", accelerator="Ctrl+A", state=tk.DISABLED)
|
||||||
menu.add_command(
|
menu.add_command(
|
||||||
|
@ -113,6 +116,7 @@ class Menubar(tk.Menu):
|
||||||
|
|
||||||
self.app.master.bind_all("<Control-c>", self.menuaction.copy)
|
self.app.master.bind_all("<Control-c>", self.menuaction.copy)
|
||||||
self.app.master.bind_all("<Control-v>", self.menuaction.paste)
|
self.app.master.bind_all("<Control-v>", self.menuaction.paste)
|
||||||
|
self.app.master.bind_all("<Control-d>", self.menuaction.delete)
|
||||||
self.edit_menu = menu
|
self.edit_menu = menu
|
||||||
|
|
||||||
def draw_canvas_menu(self):
|
def draw_canvas_menu(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue