explain basic mode on initial screen

This commit is contained in:
Michael Hudson-Doyle 2020-05-20 21:15:41 +12:00
parent 0d267b320e
commit 0950bf843e
1 changed files with 49 additions and 12 deletions

View File

@ -20,9 +20,11 @@ Welcome provides user with language selection
""" """
import logging import logging
from subiquitycore.ui.buttons import forward_btn from urwid import Text
from subiquitycore.ui.buttons import forward_btn, other_btn
from subiquitycore.ui.container import ListBox from subiquitycore.ui.container import ListBox
from subiquitycore.ui.utils import screen from subiquitycore.ui.utils import button_pile, rewrap, screen
from subiquitycore.view import BaseView from subiquitycore.view import BaseView
log = logging.getLogger("subiquity.views.welcome") log = logging.getLogger("subiquity.views.welcome")
@ -33,6 +35,13 @@ Select the language to use for the installer and to be configured in the
installed system. installed system.
""") """)
SERIAL_TEXT = """
As the installer is running on a serial console, it has started in a
very basic mode. If you are connecting from a terminal emulator such
as gnome-terminal that supports unicode and rich colors you can switch
to "rich mode" which uses colors and supports many languages.
"""
class WelcomeView(BaseView): class WelcomeView(BaseView):
title = "Willkommen! Bienvenue! Welcome! Добро пожаловать! Welkom!" title = "Willkommen! Bienvenue! Welcome! Добро пожаловать! Welkom!"
@ -40,27 +49,55 @@ class WelcomeView(BaseView):
def __init__(self, model, controller): def __init__(self, model, controller):
self.model = model self.model = model
self.controller = controller self.controller = controller
super().__init__(screen( if controller.app.opts.run_on_serial:
self._build_model_inputs(), s = self.make_serial_choices()
buttons=None, else:
narrow_rows=True, s = self.make_language_choices()
excerpt=_("Use UP, DOWN and ENTER keys to select your language."))) super().__init__(s)
def _build_model_inputs(self): def make_language_choices(self):
btns = [] btns = []
current_index = None current_index = None
for i, (code, native) in enumerate(self.model.get_languages()): for i, (code, native) in enumerate(self.model.get_languages()):
if code == self.model.selected_language: if code == self.model.selected_language:
current_index = i current_index = i
btns.append(forward_btn(label=native, on_press=self.confirm, btns.append(
forward_btn(
label=native,
on_press=self.choose_language,
user_arg=code)) user_arg=code))
lb = ListBox(btns) lb = ListBox(btns)
if current_index is not None: if current_index is not None:
lb.base_widget.focus_position = current_index lb.base_widget.focus_position = current_index
return lb return screen(
lb, buttons=None, narrow_rows=True,
excerpt=_("Use UP, DOWN and ENTER keys to select your language."))
def confirm(self, sender, code): def make_serial_choices(self):
btns = [
other_btn(
label="Switch to rich mode",
on_press=self.enable_rich),
forward_btn(
label="Continue in basic mode",
on_press=self.choose_language,
user_arg='C'),
]
widgets = [
Text(""),
Text(rewrap(SERIAL_TEXT)),
Text(""),
button_pile(btns),
]
lb = ListBox(widgets)
return screen(lb, buttons=None)
def enable_rich(self, sender):
self.controller.app.toggle_rich()
self._w = self.make_language_choices()
def choose_language(self, sender, code):
log.debug('WelcomeView %s', code) log.debug('WelcomeView %s', code)
self.controller.done(code) self.controller.done(code)