From dd73c968301f448b9fe7a81c477c898b13f8d86f Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Mon, 11 Nov 2019 13:33:37 -0800 Subject: [PATCH] added observers to gui config and display them within menu --- coretk/coretk/appdirs.py | 1 + coretk/coretk/coreclient.py | 9 +++++++-- coretk/coretk/menubar.py | 15 ++++++++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/coretk/coretk/appdirs.py b/coretk/coretk/appdirs.py index 553b0949..9eebd3a4 100644 --- a/coretk/coretk/appdirs.py +++ b/coretk/coretk/appdirs.py @@ -45,6 +45,7 @@ def check_directory(): config = { "servers": [{"name": "example", "address": "127.0.0.1", "port": 50051}], "nodes": [], + "observers": [], } save_config(config) diff --git a/coretk/coretk/coreclient.py b/coretk/coretk/coreclient.py index 73a9dd15..8ae310c9 100644 --- a/coretk/coretk/coreclient.py +++ b/coretk/coretk/coreclient.py @@ -101,6 +101,7 @@ class CoreClient: # loaded configuration data self.servers = {} self.custom_nodes = {} + self.custom_observers = {} self.read_config() # data for managing the current session @@ -123,14 +124,14 @@ class CoreClient: def read_config(self): # read distributed server - for server_config in self.app.config["servers"]: + for server_config in self.app.config.get("servers", []): server = CoreServer( server_config["name"], server_config["address"], server_config["port"] ) self.servers[server.name] = server # read custom nodes - for node in self.app.config["nodes"]: + for node in self.app.config.get("nodes", []): image_file = node["image"] image = Images.get_custom(image_file) custom_node = CustomNode( @@ -138,6 +139,10 @@ class CoreClient: ) self.custom_nodes[custom_node.name] = custom_node + # read observers + for observer in self.app.config.get("observers", []): + self.custom_observers[observer["name"]] = observer["cmd"] + def handle_events(self, event): logging.info("event: %s", event) if event.HasField("link_event"): diff --git a/coretk/coretk/menubar.py b/coretk/coretk/menubar.py index d590c091..c39bd3f8 100644 --- a/coretk/coretk/menubar.py +++ b/coretk/coretk/menubar.py @@ -369,6 +369,10 @@ class Menubar(tk.Menu): var = tk.StringVar(value="none") menu = tk.Menu(widget_menu) menu.var = var + menu.add_command( + label="Edit Observers", command=self.menuaction.edit_observer_widgets + ) + menu.add_separator() menu.add_radiobutton( label="None", variable=var, @@ -383,9 +387,14 @@ class Menubar(tk.Menu): value=name, command=partial(self.app.core.set_observer, cmd), ) - menu.add_radiobutton( - label="Edit...", command=self.menuaction.edit_observer_widgets - ) + for name in sorted(self.app.core.custom_observers): + cmd = self.app.core.custom_observers[name] + menu.add_radiobutton( + label=name, + variable=var, + value=name, + command=partial(self.app.core.set_observer, cmd), + ) widget_menu.add_cascade(label="Observer Widgets", menu=menu) def create_adjacency_menu(self, widget_menu):