diff --git a/subiquity/controllers/installprogress.py b/subiquity/controllers/installprogress.py index f13e673d..c66bf4e2 100644 --- a/subiquity/controllers/installprogress.py +++ b/subiquity/controllers/installprogress.py @@ -148,6 +148,8 @@ class InstallProgressController(BaseController): raise Exception('AIEEE!') self.install_state = InstallState.RUNNING_POSTINSTALL + if self.progress_view is not None: + self.progress_view.set_status("Running postinstall step.") if self.opts.dry_run: log.debug("Installprogress: this is a dry-run") curtin_cmd = [ @@ -176,7 +178,6 @@ class InstallProgressController(BaseController): self.install_state = InstallState.DONE_POSTINSTALL def progress_indicator(self, *args, **kwargs): - log.debug('progress_indicator') if self.install_state == InstallState.ERROR: log.debug('progress_indicator: error detected') self.curtin_error() @@ -209,6 +210,10 @@ class InstallProgressController(BaseController): self.ui.set_header(title, excerpt) self.ui.set_footer(footer, 90) self.progress_view = ProgressView(self.model, self) + if self.install_state < InstallState.RUNNING_POSTINSTALL: + self.progress_view.set_status("Running install step.") + else: + self.progress_view.set_status("Running postinstall step.") self.ui.set_body(self.progress_view) self.progress_indicator() diff --git a/subiquity/ui/views/installprogress.py b/subiquity/ui/views/installprogress.py index 2cfc60bc..6b311a27 100644 --- a/subiquity/ui/views/installprogress.py +++ b/subiquity/ui/views/installprogress.py @@ -14,13 +14,16 @@ # along with this program. If not, see . import logging -from urwid import (Text, Filler, - Pile) +from urwid import ( + LineBox, + ListBox, + Text, + Pile, + ) from subiquitycore.view import BaseView from subiquitycore.ui.buttons import confirm_btn from subiquitycore.ui.utils import Padding, Color -from subiquitycore import utils log = logging.getLogger("subiquity.views.installprogress") @@ -29,22 +32,30 @@ class ProgressView(BaseView): def __init__(self, model, controller): self.model = model self.controller = controller - self.text = Text("Installing Ubuntu ...", align="left") - self.body = [ - Padding.center_79(self.text), - Padding.line_break(""), + self.error = Text("") + self.status = Text("Running install step.") + self.log = Text("") + body = [ + ('pack', Padding.center_79(self.error)), + ('pack', Padding.center_79(self.status)), + ('pack', Text("")), + ('weight', 1, Padding.center_79(LineBox(ListBox([self.log]), title="Installation logs"))), + ('pack', Text("")), ] - self.pile = Pile(self.body) - super().__init__(Filler(self.pile, valign="middle")) + self.pile = Pile(body) + super().__init__(self.pile) def set_log_tail(self, text): - self.text.set_text(text) + self.log.set_text(text) + + def set_status(self, text): + self.status.set_text(text) def set_error(self, text): - self.text.set_text(text) + self.error.set_text(text) def show_complete(self): - self.text.set_text("Finished install!") + self.status.set_text("Finished install!") w = Padding.fixed_20( Color.button(confirm_btn(label="Reboot now", on_press=self.reboot), @@ -55,9 +66,11 @@ class ProgressView(BaseView): on_press=self.quit), focus_map='button focus')) - self.pile.contents.append((w, self.pile.options())) - self.pile.contents.append((z, self.pile.options())) - self.pile.focus_position = 2 + new_focus = len(self.pile.contents) + self.pile.contents.append((w, self.pile.options('pack'))) + self.pile.contents.append((z, self.pile.options('pack'))) + self.pile.contents.append((Text(""), self.pile.options('pack'))) + self.pile.focus_position = new_focus def reboot(self, btn): self.controller.reboot()