drivers: use radio buttons instead of checkbox to install drivers

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2022-03-30 17:52:21 +02:00
parent 595254159e
commit d6048a6914
1 changed files with 27 additions and 4 deletions

View File

@ -29,7 +29,7 @@ from urwid import (
from subiquitycore.ui.buttons import back_btn, ok_btn from subiquitycore.ui.buttons import back_btn, ok_btn
from subiquitycore.ui.form import ( from subiquitycore.ui.form import (
Form, Form,
BooleanField, RadioButtonField,
) )
from subiquitycore.ui.spinner import Spinner from subiquitycore.ui.spinner import Spinner
from subiquitycore.ui.utils import screen from subiquitycore.ui.utils import screen
@ -44,8 +44,16 @@ class DriversForm(Form):
available drivers or not. """ available drivers or not. """
cancel_label = _("Back") cancel_label = _("Back")
ok_label = _("Continue")
install = BooleanField(_("Install the drivers")) group: List[RadioButtonField] = []
install = RadioButtonField(
group,
_("Install all third-party drivers"))
do_not_install = RadioButtonField(
group,
_("Do not install third-party drivers now"))
class DriversViewStatus(Enum): class DriversViewStatus(Enum):
@ -64,6 +72,13 @@ class DriversView(BaseView):
install: bool) -> None: install: bool) -> None:
self.controller = controller self.controller = controller
self.search_later = [
Text(_("Note: You can search again later for third-party " +
"drivers using the command:")),
Text(""),
Text(" $ ubuntu-drivers list --recommended --gpgpu"),
]
if drivers is None: if drivers is None:
self.make_waiting(install) self.make_waiting(install)
elif not drivers: elif not drivers:
@ -102,7 +117,10 @@ class DriversView(BaseView):
""" Change the view into an information page that shows that no """ Change the view into an information page that shows that no
third-party drivers are available for installation. """ third-party drivers are available for installation. """
rows = [Text(_("No applicable third-party drivers were found."))] rows = [
Text(_("No applicable third-party drivers were found.")),
Text(""),
] + self.search_later
self.cont_btn = ok_btn( self.cont_btn = ok_btn(
_("Continue"), _("Continue"),
on_press=lambda sender: self.done(False)) on_press=lambda sender: self.done(False))
@ -111,7 +129,10 @@ class DriversView(BaseView):
def make_main(self, install: bool, drivers: List[str]) -> None: def make_main(self, install: bool, drivers: List[str]) -> None:
""" Change the view to display the drivers form. """ """ Change the view to display the drivers form. """
self.form = DriversForm(initial={'install': install}) self.form = DriversForm(initial={
"install": bool(install),
"do_not_install": (not install),
})
excerpt = _( excerpt = _(
"The following third-party drivers were found. " "The following third-party drivers were found. "
@ -128,6 +149,8 @@ class DriversView(BaseView):
rows = [Text(f"* {driver}") for driver in drivers] rows = [Text(f"* {driver}") for driver in drivers]
rows.append(Text("")) rows.append(Text(""))
rows.extend(self.form.as_rows()) rows.extend(self.form.as_rows())
rows.append(Text(""))
rows.extend(self.search_later)
self._w = screen(rows, self.form.buttons, excerpt=excerpt) self._w = screen(rows, self.form.buttons, excerpt=excerpt)
self.status = DriversViewStatus.MAIN self.status = DriversViewStatus.MAIN