display mobility player on session start, change buttons and progress bar on session events

This commit is contained in:
Blake Harnden 2019-11-27 11:41:54 -08:00
parent da203d578e
commit 9a55ff4ca5
3 changed files with 41 additions and 31 deletions

View file

@ -128,19 +128,18 @@ class CoreClient:
if session_event.event <= core_pb2.SessionState.SHUTDOWN:
self.state = event.session_event.event
# mobility start
elif session_event.event == 7:
elif session_event.event in {7, 8, 9}:
node_id = session_event.node_id
if node_id not in self.mobility_players:
canvas_node = self.canvas_nodes[node_id]
dialog = MobilityPlayerDialog(self.app, self.app, canvas_node)
dialog.show()
self.mobility_players[node_id] = dialog
# mobility stop
elif session_event.event == 8:
pass
# mobility pause
elif session_event.event == 9:
pass
dialog = self.mobility_players.get(node_id)
if dialog:
if session_event.event == 7:
dialog.set_play()
elif session_event.event == 8:
dialog.set_stop()
else:
dialog.set_pause()
else:
logging.warning("unknown session event: %s", session_event)
elif event.HasField("node_event"):
node_event = event.node_event
node_id = node_event.node.id
@ -359,6 +358,13 @@ class CoreClient:
logging.debug("start session(%s), result: %s", self.session_id, response.result)
self.app.statusbar.start_session_callback(process_time)
# display mobility players
for node_id, config in self.mobility_configs.items():
canvas_node = self.canvas_nodes[node_id]
dialog = MobilityPlayerDialog(self.app, self.app, canvas_node, config)
dialog.show()
self.mobility_players[node_id] = dialog
def stop_session(self, session_id=None):
if not session_id:
session_id = self.session_id

View file

@ -10,13 +10,13 @@ ICON_SIZE = 16
class MobilityPlayerDialog(Dialog):
def __init__(self, master, app, canvas_node):
def __init__(self, master, app, canvas_node, config):
super().__init__(
master, app, f"{canvas_node.core_node.name} Mobility Player", modal=False
)
self.canvas_node = canvas_node
self.node = canvas_node.core_node
self.config = self.app.core.mobility_configs[canvas_node.core_node.id]
self.config = config
self.play_button = None
self.pause_button = None
self.stop_button = None
@ -30,14 +30,8 @@ class MobilityPlayerDialog(Dialog):
label = ttk.Label(self.top, text=file_name)
label.grid(sticky="ew", pady=PAD)
frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD)
frame.columnconfigure(0, weight=1)
self.progressbar = ttk.Progressbar(frame, mode="indeterminate")
self.progressbar.grid(row=0, column=0, sticky="ew", padx=PAD)
self.progressbar.start()
label = ttk.Label(frame, text="time")
label.grid(row=0, column=1)
self.progressbar = ttk.Progressbar(self.top, mode="indeterminate")
self.progressbar.grid(sticky="ew", pady=PAD)
frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD)
@ -58,6 +52,7 @@ class MobilityPlayerDialog(Dialog):
self.stop_button = ttk.Button(frame, image=image, command=self.click_stop)
self.stop_button.image = image
self.stop_button.grid(row=0, column=2, sticky="ew", padx=PAD)
self.stop_button.state(["pressed"])
loop = tk.IntVar(value=int(self.config["loop"].value == "1"))
checkbutton = ttk.Checkbutton(
@ -74,29 +69,38 @@ class MobilityPlayerDialog(Dialog):
self.pause_button.state(["!pressed"])
self.stop_button.state(["!pressed"])
def click_play(self):
def set_play(self):
self.clear_buttons()
self.play_button.state(["pressed"])
self.progressbar.start()
def set_pause(self):
self.clear_buttons()
self.pause_button.state(["pressed"])
self.progressbar.stop()
def set_stop(self):
self.clear_buttons()
self.stop_button.state(["pressed"])
self.progressbar.stop()
def click_play(self):
self.set_play()
session_id = self.app.core.session_id
self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.START
)
self.progressbar.start()
def click_pause(self):
self.clear_buttons()
self.pause_button.state(["pressed"])
self.set_pause()
session_id = self.app.core.session_id
self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.PAUSE
)
self.progressbar.stop()
def click_stop(self):
self.clear_buttons()
self.stop_button.state(["pressed"])
self.set_stop()
session_id = self.app.core.session_id
self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.STOP
)
self.progressbar.stop()

View file

@ -51,10 +51,10 @@ class Menubar(tk.Menu):
label="Open...", command=self.menuaction.file_open_xml, accelerator="Ctrl+O"
)
self.app.bind_all("<Control-o>", self.menuaction.file_open_xml)
menu.add_command(label="Reload", underline=0, state=tk.DISABLED)
menu.add_command(
label="Save", accelerator="Ctrl+S", command=self.menuaction.file_save_as_xml
)
menu.add_command(label="Reload", underline=0, state=tk.DISABLED)
self.app.bind_all("<Control-s>", self.menuaction.file_save_as_xml)
menu.add_separator()
menu.add_command(label="Export Python script...", state=tk.DISABLED)