def draw_sessions(self) -> None: self.tree.delete(*self.tree.get_children()) for index, session in enumerate(self.get_sessions()): state_name = SessionState(session.state).name self.tree.insert( "", tk.END, text=str(session.id), values=(session.id, state_name, session.nodes), )
def draw_tree(self) -> None: frame = ttk.Frame(self.top) frame.columnconfigure(0, weight=1) frame.rowconfigure(0, weight=1) frame.grid(sticky=tk.NSEW, pady=PADY) self.tree = ttk.Treeview( frame, columns=("id", "state", "nodes"), show="headings", selectmode=tk.BROWSE, ) style = ttk.Style() heading_size = int(self.app.guiconfig.scale * 10) style.configure("Treeview.Heading", font=(None, heading_size, "bold")) self.tree.grid(sticky=tk.NSEW) self.tree.column("id", stretch=tk.YES, anchor="center") self.tree.heading("id", text="ID") self.tree.column("state", stretch=tk.YES, anchor="center") self.tree.heading("state", text="State") self.tree.column("nodes", stretch=tk.YES, anchor="center") self.tree.heading("nodes", text="Node Count") for index, session in enumerate(self.sessions): state_name = SessionState(session.state).name self.tree.insert( "", tk.END, text=str(session.id), values=(session.id, state_name, session.nodes), ) self.tree.bind("<Double-1>", self.double_click_join) self.tree.bind("<<TreeviewSelect>>", self.click_select) yscrollbar = ttk.Scrollbar(frame, orient="vertical", command=self.tree.yview) yscrollbar.grid(row=0, column=1, sticky=tk.NS) self.tree.configure(yscrollcommand=yscrollbar.set) xscrollbar = ttk.Scrollbar(frame, orient="horizontal", command=self.tree.xview) xscrollbar.grid(row=1, sticky=tk.EW) self.tree.configure(xscrollcommand=xscrollbar.set)
def handle_events(self, event: core_pb2.Event) -> None: if event.source == GUI_SOURCE: return if event.session_id != self.session.id: logging.warning( "ignoring event session(%s) current(%s)", event.session_id, self.session.id, ) return if event.HasField("link_event"): link_event = LinkEvent.from_proto(event.link_event) self.app.after(0, self.handle_link_event, link_event) elif event.HasField("session_event"): logging.info("session event: %s", event) session_event = event.session_event if session_event.event <= SessionState.SHUTDOWN.value: self.session.state = SessionState(session_event.event) elif session_event.event in {7, 8, 9}: node_id = session_event.node_id 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 = NodeEvent.from_proto(event.node_event) self.app.after(0, self.handle_node_event, node_event) elif event.HasField("config_event"): logging.info("config event: %s", event) elif event.HasField("exception_event"): event = ExceptionEvent.from_proto(event.session_id, event.exception_event) self.handle_exception_event(event) else: logging.info("unhandled event: %s", event)
def handle_events(self, event: Event) -> None: if not self.session or event.source == GUI_SOURCE: return if event.session_id != self.session.id: logger.warning( "ignoring event session(%s) current(%s)", event.session_id, self.session.id, ) return if event.link_event: self.app.after(0, self.handle_link_event, event.link_event) elif event.session_event: logger.info("session event: %s", event) session_event = event.session_event if session_event.event <= SessionState.SHUTDOWN.value: self.session.state = SessionState(session_event.event) elif session_event.event in {7, 8, 9}: node_id = session_event.node_id 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: logger.warning("unknown session event: %s", session_event) elif event.node_event: self.app.after(0, self.handle_node_event, event.node_event) elif event.config_event: logger.info("config event: %s", event) elif event.exception_event: self.handle_exception_event(event.exception_event) else: logger.info("unhandled event: %s", event)