Merge branch 'coretk' into coretk-progress

This commit is contained in:
Huy Pham 2019-11-27 13:15:57 -08:00
commit 0f6cca1194
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: if session_event.event <= core_pb2.SessionState.SHUTDOWN:
self.state = event.session_event.event self.state = event.session_event.event
# mobility start # mobility start
elif session_event.event == 7: elif session_event.event in {7, 8, 9}:
node_id = session_event.node_id node_id = session_event.node_id
if node_id not in self.mobility_players: dialog = self.mobility_players.get(node_id)
canvas_node = self.canvas_nodes[node_id] if dialog:
dialog = MobilityPlayerDialog(self.app, self.app, canvas_node) if session_event.event == 7:
dialog.show() dialog.set_play()
self.mobility_players[node_id] = dialog elif session_event.event == 8:
# mobility stop dialog.set_stop()
elif session_event.event == 8: else:
pass dialog.set_pause()
# mobility pause else:
elif session_event.event == 9: logging.warning("unknown session event: %s", session_event)
pass
elif event.HasField("node_event"): elif event.HasField("node_event"):
node_event = event.node_event node_event = event.node_event
node_id = node_event.node.id node_id = node_event.node.id
@ -359,6 +358,13 @@ class CoreClient:
logging.debug("start session(%s), result: %s", self.session_id, response.result) logging.debug("start session(%s), result: %s", self.session_id, response.result)
self.app.statusbar.start_session_callback(process_time) 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): def stop_session(self, session_id=None):
if not session_id: if not session_id:
session_id = self.session_id session_id = self.session_id

View file

@ -10,13 +10,13 @@ ICON_SIZE = 16
class MobilityPlayerDialog(Dialog): class MobilityPlayerDialog(Dialog):
def __init__(self, master, app, canvas_node): def __init__(self, master, app, canvas_node, config):
super().__init__( super().__init__(
master, app, f"{canvas_node.core_node.name} Mobility Player", modal=False master, app, f"{canvas_node.core_node.name} Mobility Player", modal=False
) )
self.canvas_node = canvas_node self.canvas_node = canvas_node
self.node = canvas_node.core_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.play_button = None
self.pause_button = None self.pause_button = None
self.stop_button = None self.stop_button = None
@ -30,14 +30,8 @@ class MobilityPlayerDialog(Dialog):
label = ttk.Label(self.top, text=file_name) label = ttk.Label(self.top, text=file_name)
label.grid(sticky="ew", pady=PAD) label.grid(sticky="ew", pady=PAD)
frame = ttk.Frame(self.top) self.progressbar = ttk.Progressbar(self.top, mode="indeterminate")
frame.grid(sticky="ew", pady=PAD) self.progressbar.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)
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PAD) 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 = ttk.Button(frame, image=image, command=self.click_stop)
self.stop_button.image = image self.stop_button.image = image
self.stop_button.grid(row=0, column=2, sticky="ew", padx=PAD) 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")) loop = tk.IntVar(value=int(self.config["loop"].value == "1"))
checkbutton = ttk.Checkbutton( checkbutton = ttk.Checkbutton(
@ -74,29 +69,38 @@ class MobilityPlayerDialog(Dialog):
self.pause_button.state(["!pressed"]) self.pause_button.state(["!pressed"])
self.stop_button.state(["!pressed"]) self.stop_button.state(["!pressed"])
def click_play(self): def set_play(self):
self.clear_buttons() self.clear_buttons()
self.play_button.state(["pressed"]) 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 session_id = self.app.core.session_id
self.app.core.client.mobility_action( self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.START session_id, self.node.id, core_pb2.MobilityAction.START
) )
self.progressbar.start()
def click_pause(self): def click_pause(self):
self.clear_buttons() self.set_pause()
self.pause_button.state(["pressed"])
session_id = self.app.core.session_id session_id = self.app.core.session_id
self.app.core.client.mobility_action( self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.PAUSE session_id, self.node.id, core_pb2.MobilityAction.PAUSE
) )
self.progressbar.stop()
def click_stop(self): def click_stop(self):
self.clear_buttons() self.set_stop()
self.stop_button.state(["pressed"])
session_id = self.app.core.session_id session_id = self.app.core.session_id
self.app.core.client.mobility_action( self.app.core.client.mobility_action(
session_id, self.node.id, core_pb2.MobilityAction.STOP 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" label="Open...", command=self.menuaction.file_open_xml, accelerator="Ctrl+O"
) )
self.app.bind_all("<Control-o>", self.menuaction.file_open_xml) self.app.bind_all("<Control-o>", self.menuaction.file_open_xml)
menu.add_command(label="Reload", underline=0, state=tk.DISABLED)
menu.add_command( menu.add_command(
label="Save", accelerator="Ctrl+S", command=self.menuaction.file_save_as_xml 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) self.app.bind_all("<Control-s>", self.menuaction.file_save_as_xml)
menu.add_separator() menu.add_separator()
menu.add_command(label="Export Python script...", state=tk.DISABLED) menu.add_command(label="Export Python script...", state=tk.DISABLED)