diff --git a/archinstall/lib/global_menu.py b/archinstall/lib/global_menu.py index ea33be21..548ed522 100644 --- a/archinstall/lib/global_menu.py +++ b/archinstall/lib/global_menu.py @@ -502,12 +502,12 @@ class GlobalMenu(AbstractMenu[None]): return warnings - def _prev_install_invalid_config(self, item: MenuItem) -> str | PreviewResult | list[PreviewResult] | None: + def _prev_install_invalid_config(self, item: MenuItem) -> PreviewResult | None: self.sync_all_to_config() config_output = ConfigurationOutput(self._arch_config) warnings = self._get_install_warnings() - sections: list[PreviewResult] = [] + messages: list[tuple[str, MsgLevelType]] = [] errors = '' if missing := self._missing_configs(): @@ -522,20 +522,20 @@ class GlobalMenu(AbstractMenu[None]): errors += f'{tr("Invalid configuration:")}\n- {error}' if errors: - sections.append(PreviewResult(errors, MsgLevelType.MsgError)) + messages.append((errors, MsgLevelType.MsgError)) else: - sections.append(PreviewResult(tr('Ready to install'), MsgLevelType.MsgInfo)) + messages.append((tr('Ready to install'), MsgLevelType.MsgInfo)) if warnings: text = f'{tr("Warnings:")}\n' + '\n'.join(f'- {w}' for w in warnings) - sections.append(PreviewResult(text, MsgLevelType.MsgWarning)) + messages.append((text, MsgLevelType.MsgWarning)) if not errors: summary = config_output.as_summary() if summary: - sections.append(PreviewResult(summary, MsgLevelType.MsgNone)) + messages.append((summary, MsgLevelType.MsgNone)) - return sections + return PreviewResult(messages) def _prev_profile(self, item: MenuItem) -> str | None: profile_config: ProfileConfiguration | None = item.value diff --git a/archinstall/tui/components.py b/archinstall/tui/components.py index 0c7f0319..a2e6b132 100644 --- a/archinstall/tui/components.py +++ b/archinstall/tui/components.py @@ -27,22 +27,19 @@ from archinstall.tui.result import Result, ResultType ValueT = TypeVar('ValueT') -def _update_preview(widget: Label, result: str | PreviewResult | list[PreviewResult] | None) -> None: +def _update_preview(widget: Label, result: str | PreviewResult | None) -> None: if result is None: widget.update('') return if isinstance(result, str): widget.update(result) - elif isinstance(result, PreviewResult): - text = Text(result.message, style=result.msg_level.style()) - widget.update(text) else: text = Text() - for i, section in enumerate(result): + for i, (message, level) in enumerate(result.messages): if i > 0: text.append('\n\n') - text.append(section.message, style=section.msg_level.style()) + text.append(message, style=level.style()) widget.update(text) diff --git a/archinstall/tui/menu_item.py b/archinstall/tui/menu_item.py index c3b01606..d44126e9 100644 --- a/archinstall/tui/menu_item.py +++ b/archinstall/tui/menu_item.py @@ -29,8 +29,7 @@ class MsgLevelType(Enum): @dataclass class PreviewResult: - message: str - msg_level: MsgLevelType + messages: list[tuple[str, MsgLevelType]] @dataclass @@ -44,7 +43,7 @@ class MenuItem: dependencies: list[str | Callable[[], bool]] = field(default_factory=list) dependencies_not: list[str] = field(default_factory=list) display_action: Callable[[Any], str] | None = None - preview_action: Callable[[Self], str | PreviewResult | list[PreviewResult] | None] | None = None + preview_action: Callable[[Self], str | PreviewResult | None] | None = None key: str | None = None _id: str = ''