added observers to gui config and display them within menu

This commit is contained in:
Blake Harnden 2019-11-11 13:33:37 -08:00
parent aa718817d0
commit dd73c96830
3 changed files with 20 additions and 5 deletions

View file

@ -45,6 +45,7 @@ def check_directory():
config = {
"servers": [{"name": "example", "address": "127.0.0.1", "port": 50051}],
"nodes": [],
"observers": [],
}
save_config(config)

View file

@ -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"):

View file

@ -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):