Example #1
0
 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),
         )
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
 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)