Example #1
0
    def create(self) -> urwid.Widget:
        self._progress = RsyncProgressBar(self.rsync, self.get_rsync_params())
        urwid.connect_signal(self._progress, "done", self._on_sync_done)
        urwid.connect_signal(self._progress, "failed", self._on_sync_failed)

        self._b_close = widget.PlainButton("Close")
        urwid.connect_signal(self._b_close, "click", self._on_close)

        b_cancel = widget.PlainButton("Cancel")
        urwid.connect_signal(b_cancel, "click", self._on_cancel)

        self.status_msg = urwid.Text("\n")

        self._button_row = urwid.GridFlow([b_cancel], 16, 1, 1, align="center")

        content = urwid.Pile(
            [
                urwid.Divider(),
                urwid.Text(self.msg_description),
                urwid.Divider(),
                self._progress,
                self.status_msg,
                self._button_row,
            ]
        )
        w = urwid.LineBox(content, title=self.msg_title)
        return w
Example #2
0
    async def _list_upgradables(self) -> None:
        self.upgradables = await self.opkg_tools.list_upgradables()

        if self.upgradables:
            continue_btn = widget.PlainButton(" Continue ")
            urwid.connect_signal(continue_btn, "click", self._on_continue)
            message = [
                ("success banner", f" {len(self.upgradables)} "),
                ("success message", " upgradable packages found!"),
            ]
            message_wdg = urwid.Columns(
                [("pack", urwid.Text(message)), ("pack", continue_btn)],
                dividechars=1,
            )
        else:
            exit_btn = widget.PlainButton(" Exit ")
            urwid.connect_signal(exit_btn, "click", self._on_exit)
            message = [("remark", "No updates found")]
            message_wdg = urwid.Columns(
                [("pack", urwid.Text(message)), ("pack", exit_btn)],
                dividechars=1,
            )

        self.message_line.original_widget = message_wdg
        # Allow widget to handle kyboard now, as we have selectable controls
        self._w._selectable = True
Example #3
0
    def create(self) -> urwid.Widget:
        intro = urwid.Text(
            [
                (
                    "remark",
                    "This app allows to copy files to and from USB stick directory ",
                ),
                BACKUP_DEST,
                ("remark", "."),
            ]
        )
        backup_help = urwid.Text(
            "The following directories will be copied to USB stick:"
        )

        backupdirs = urwid.Pile([urwid.Text(f"  * {d}") for d in BACKUP_DIRS])
        self.restoredirs = urwid.Pile([])

        b_backup = widget.PlainButton("Backup")
        urwid.connect_signal(b_backup, "click", self._on_backup)

        b_restore = widget.PlainButton("Restore")
        urwid.connect_signal(b_restore, "click", self._on_restore)

        restore_help = urwid.Text(
            "The following directories will be copied from USB stick "
            "to root filesystem:"
        )

        self._app_view = urwid.Filler(
            urwid.Pile(
                [
                    intro,
                    urwid.Divider(),
                    backup_help,
                    urwid.Divider(),
                    backupdirs,
                    urwid.Divider(),
                    self._button_grid([b_backup]),
                    urwid.Divider(),
                    restore_help,
                    urwid.Divider(),
                    self.restoredirs,
                    urwid.Divider(),
                    self._button_grid([b_restore]),
                ]
            ),
            "top",
        )

        curtain = USBStorageCurtain(self.mountwatcher, self._app_view)
        urwid.connect_signal(curtain, "mounted", self._on_mounted)

        self.frame = urwid.Frame(
            curtain, header=widget.ActivityHeader("Backup & Restore")
        )
        return self.frame
Example #4
0
    def _create_buttons(self) -> urwid.Widget:
        btn_select_all = widget.PlainButton("Select All")
        urwid.connect_signal(btn_select_all, "click", self._on_select_all)
        btn_upgrade = widget.PlainButton("Upgrade")
        urwid.connect_signal(btn_upgrade, "click", self._on_upgrade)

        buttons = urwid.GridFlow(
            [btn_select_all, btn_upgrade],
            cell_width=15,
            h_sep=2,
            v_sep=1,
            align="left",
        )

        return buttons
Example #5
0
 def add_button(self, label: str, handler: Callable[[], bool]) -> None:
     button = widget.PlainButton(label)
     urwid.connect_signal(button,
                          "click",
                          self._on_button_clicked,
                          user_args=[handler])
     self.button_widgets.append(button)
Example #6
0
 def _on_opkg_upgrade_finished(self, wdg: urwid.Widget) -> None:
     exit_btn = widget.PlainButton(" Exit ")
     urwid.connect_signal(exit_btn, "click", self._on_exit)
     message = ("success message", "Upgrade completed!")
     message_wdg = urwid.Columns(
         [("pack", urwid.Text(message)), ("pack", exit_btn)],
         dividechars=1,
     )
     self.message_line.original_widget = message_wdg
Example #7
0
    def create(self) -> urwid.Widget:
        formitems = []

        for name, desc in self.fields.items():
            if desc["Type"] == "psk":
                formitems.append(self._make_field_psk(name, desc))

        formitems.append(urwid.Divider())

        btn_confirm = widget.PlainButton("Confirm")
        urwid.connect_signal(btn_confirm, "click", self._handle_confirm)
        btn_cancel = widget.PlainButton("Cancel")
        urwid.connect_signal(btn_cancel, "click", self._handle_cancel)
        formitems.append(
            urwid.GridFlow([btn_confirm, btn_cancel], 16, 1, 1, urwid.RIGHT))

        form = urwid.Pile(formitems)
        return urwid.LineBox(form, self.service.name)
Example #8
0
 def _on_opkg_upgrade_finished(self, wdg: urwid.Widget) -> None:
     exit_btn = widget.PlainButton(" Exit ")
     urwid.connect_signal(exit_btn, "click", self._on_exit)
     message = ("success message", "Upgrade completed!")
     message_wdg = urwid.Columns(
         [("pack", urwid.Text(message)), ("pack", exit_btn)],
         dividechars=1,
     )
     self.message_line.original_widget = message_wdg
     # Allow widget to handle kyboard now, as we have selectable controls
     self._w._selectable = True
    def _on_opkg_update_finished(self, wdg: urwid.Widget) -> None:
        self.upgradables = self.opkg_tools.list_upgradables()
        if self.upgradables:
            continue_btn = widget.PlainButton(" Continue ")
            urwid.connect_signal(continue_btn, "click", self._on_continue)
            message = [
                ("success banner", f" {len(self.upgradables)} "),
                ("success message", " upgradable packages found!"),
            ]
            message_wdg = urwid.Columns(
                [("pack", urwid.Text(message)), ("pack", continue_btn)],
                dividechars=1,
            )
        else:
            exit_btn = widget.PlainButton(" Exit ")
            urwid.connect_signal(exit_btn, "click", self._on_exit)
            message = [("remark", f"No updates found")]
            message_wdg = urwid.Columns(
                [("pack", urwid.Text(message)), ("pack", exit_btn)],
                dividechars=1,
            )

        self.message_line.original_widget = message_wdg
Example #10
0
    def add_button(self, label: str, handler: Callable[[], bool]) -> None:
        if not self.custom_buttons:
            self.buttons.contents = []

        self._update_btn_width(label)
        button = widget.PlainButton(label)
        urwid.connect_signal(button,
                             "click",
                             self._on_button_clicked,
                             user_args=[handler])
        contents = [(w, ("given", self.button_width))
                    for w, opts in self.buttons.contents]
        # self.button_widgets.append(button)
        contents.append((button, ("given", self.button_width)))
        self.buttons.contents = contents
        self.custom_buttons = True
Example #11
0
    def create(self) -> urwid.Widget:
        # Add simple default button that can be oberridden by adding custom
        # buttons.
        default_btn_text = "Close"
        btn = widget.PlainButton(default_btn_text)
        self.btn_width = len(default_btn_text) + 2
        urwid.connect_signal(
            btn, "click", self._on_button_clicked, user_args=[lambda: True]
        )
        self.buttons = urwid.GridFlow(
            [btn], cell_width=11, h_sep=2, v_sep=1, align="center",
        )

        content = urwid.Pile([self.message, urwid.Divider(), self.buttons])
        view = urwid.LineBox(content, self.title)
        return view
Example #12
0
    def _on_wizard_completed(self, w: urwid.Widget) -> None:
        done_msg = [
            ("highlight", "Setup is complete"),
            "\n\n",
            "Openvario is ready to use. Happy flying!",
        ]

        exit_btn = widget.PlainButton("Exit")
        urwid.connect_signal(exit_btn, "click", self._on_exit)

        done_contents = [
            (urwid.Text(done_msg), ("pack", None)),
            (urwid.Divider(), ("pack", None)),
            (_button_row([exit_btn]), ("pack", None)),
            (urwid.SolidFill(" "), ("weight", 1)),
        ]
        self.content_pile.contents = done_contents
Example #13
0
    def __init__(self, shell: api.OpenVarioShell) -> None:
        self.shell = shell

        msg = [
            "If your Openvario has sensorboard connected, calibrate sensors here. ",
            "\n\n",
            "If sensors are not installed, skip this step.",
        ]

        cal_btn = widget.PlainButton("Calibrate")
        urwid.connect_signal(cal_btn, "click", self._on_calibrate)

        content = urwid.Pile([
            ("pack", urwid.Text(msg)),
            ("pack", urwid.Divider()),
            (
                "pack",
                _button_row([self.make_next_button("Skip"), cal_btn]),
            ),
        ])
        super().__init__(content)
Example #14
0
    def __init__(self, shell: api.OpenVarioShell) -> None:
        self.shell = shell

        msg = [
            "If your Openvario is equipped with a touch-screen, ",
            "it needs to be calibrated. You will need to press the indicated ",
            "areas of the screen. It is recommended to press resistive ",
            "touch-screen with your fingernail.",
            "\n\n",
            "If touch-screen is not installed, skip this step.",
        ]

        cal_btn = widget.PlainButton("Calibrate")
        urwid.connect_signal(cal_btn, "click", self._on_calibrate)

        content = urwid.Pile([
            ("pack", urwid.Text(msg)),
            ("pack", urwid.Divider()),
            (
                "pack",
                _button_row([self.make_next_button("Skip"), cal_btn]),
            ),
        ])
        super().__init__(content)
Example #15
0
 def _make_scan_button(self) -> urwid.Widget:
     btn = widget.PlainButton("Scan")
     urwid.connect_signal(btn, "click", self._handle_scan)
     self.scan_waiting = widget.Waiting(6)
     return urwid.Columns([(8, btn), ("pack", self.scan_waiting)], dividechars=1)
Example #16
0
 def make_next_button(self, title: str) -> urwid.Widget:
     btn = widget.PlainButton(title)
     urwid.connect_signal(btn, "click", self._on_next)
     return btn