diff --git a/archinstall/default_profiles/desktop.py b/archinstall/default_profiles/desktop.py index 191b0791..19149f72 100644 --- a/archinstall/default_profiles/desktop.py +++ b/archinstall/default_profiles/desktop.py @@ -5,7 +5,8 @@ from archinstall.lib.output import info from archinstall.lib.profile.profiles_handler import profile_handler from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import FrameProperties, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import FrameProperties, PreviewStyle if TYPE_CHECKING: from archinstall.lib.installer import Installer diff --git a/archinstall/default_profiles/desktops/hyprland.py b/archinstall/default_profiles/desktops/hyprland.py index a04d63bb..5904e4ab 100644 --- a/archinstall/default_profiles/desktops/hyprland.py +++ b/archinstall/default_profiles/desktops/hyprland.py @@ -5,7 +5,8 @@ from archinstall.default_profiles.profile import GreeterType, ProfileType from archinstall.default_profiles.xorg import XorgProfile from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties if TYPE_CHECKING: from collections.abc import Callable diff --git a/archinstall/default_profiles/desktops/labwc.py b/archinstall/default_profiles/desktops/labwc.py index 7203ebb5..8fc30d5a 100644 --- a/archinstall/default_profiles/desktops/labwc.py +++ b/archinstall/default_profiles/desktops/labwc.py @@ -5,7 +5,8 @@ from archinstall.default_profiles.profile import GreeterType, ProfileType from archinstall.default_profiles.xorg import XorgProfile from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties if TYPE_CHECKING: from collections.abc import Callable diff --git a/archinstall/default_profiles/desktops/niri.py b/archinstall/default_profiles/desktops/niri.py index fea6a02b..c0e27058 100644 --- a/archinstall/default_profiles/desktops/niri.py +++ b/archinstall/default_profiles/desktops/niri.py @@ -5,7 +5,8 @@ from archinstall.default_profiles.profile import GreeterType, ProfileType from archinstall.default_profiles.xorg import XorgProfile from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties if TYPE_CHECKING: from collections.abc import Callable diff --git a/archinstall/default_profiles/desktops/sway.py b/archinstall/default_profiles/desktops/sway.py index 40b830e4..c228a0bb 100644 --- a/archinstall/default_profiles/desktops/sway.py +++ b/archinstall/default_profiles/desktops/sway.py @@ -5,7 +5,8 @@ from archinstall.default_profiles.profile import GreeterType, ProfileType from archinstall.default_profiles.xorg import XorgProfile from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties if TYPE_CHECKING: from collections.abc import Callable diff --git a/archinstall/default_profiles/server.py b/archinstall/default_profiles/server.py index 68b756e7..38ef26a5 100644 --- a/archinstall/default_profiles/server.py +++ b/archinstall/default_profiles/server.py @@ -5,7 +5,8 @@ from archinstall.lib.output import info from archinstall.lib.profile.profiles_handler import profile_handler from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import FrameProperties, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import FrameProperties, PreviewStyle if TYPE_CHECKING: from archinstall.lib.installer import Installer diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index d8e6cb22..07398813 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -6,7 +6,8 @@ from typing import TYPE_CHECKING from archinstall.tui.curses_menu import SelectMenu, Tui from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle from .args import ArchConfig from .general import JSON, UNSAFE_JSON diff --git a/archinstall/lib/disk/encryption_menu.py b/archinstall/lib/disk/encryption_menu.py index 6cd15492..f7f81952 100644 --- a/archinstall/lib/disk/encryption_menu.py +++ b/archinstall/lib/disk/encryption_menu.py @@ -13,7 +13,8 @@ from archinstall.lib.models.device_model import ( ) from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties from ..menu.abstract_menu import AbstractSubMenu from ..models.device_model import Fido2Device diff --git a/archinstall/lib/disk/partitioning_menu.py b/archinstall/lib/disk/partitioning_menu.py index 2df42779..2a52e76d 100644 --- a/archinstall/lib/disk/partitioning_menu.py +++ b/archinstall/lib/disk/partitioning_menu.py @@ -19,7 +19,8 @@ from archinstall.lib.models.device_model import ( ) from archinstall.tui.curses_menu import EditMenu, SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, Orientation, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, Orientation from ..menu.list_manager import ListManager from ..output import FormattedOutput diff --git a/archinstall/lib/disk/subvolume_menu.py b/archinstall/lib/disk/subvolume_menu.py index b4f3ec57..0d5c1e49 100644 --- a/archinstall/lib/disk/subvolume_menu.py +++ b/archinstall/lib/disk/subvolume_menu.py @@ -3,7 +3,8 @@ from typing import TYPE_CHECKING, assert_never, override from archinstall.lib.models.device_model import SubvolumeModification from archinstall.tui.curses_menu import EditMenu -from archinstall.tui.types import Alignment, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment from ..menu.list_manager import ListManager from ..utils.util import prompt_dir diff --git a/archinstall/lib/interactions/disk_conf.py b/archinstall/lib/interactions/disk_conf.py index 9d0e8c35..15c58867 100644 --- a/archinstall/lib/interactions/disk_conf.py +++ b/archinstall/lib/interactions/disk_conf.py @@ -30,7 +30,8 @@ from archinstall.lib.models.device_model import ( from archinstall.lib.output import debug from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle from ..output import FormattedOutput from ..utils.util import prompt_dir diff --git a/archinstall/lib/interactions/general_conf.py b/archinstall/lib/interactions/general_conf.py index d787ebc2..ab5e0e12 100644 --- a/archinstall/lib/interactions/general_conf.py +++ b/archinstall/lib/interactions/general_conf.py @@ -7,7 +7,8 @@ from archinstall.lib.models.packages import Repository from archinstall.lib.packages.packages import list_available_packages from archinstall.tui.curses_menu import EditMenu, SelectMenu, Tui from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle from ..locale.utils import list_timezones from ..models.audio_configuration import Audio, AudioConfiguration diff --git a/archinstall/lib/interactions/manage_users_conf.py b/archinstall/lib/interactions/manage_users_conf.py index e333f4fe..1b827510 100644 --- a/archinstall/lib/interactions/manage_users_conf.py +++ b/archinstall/lib/interactions/manage_users_conf.py @@ -5,7 +5,8 @@ from typing import TYPE_CHECKING, override from archinstall.tui.curses_menu import EditMenu, SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, Orientation, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, Orientation from ..menu.list_manager import ListManager from ..models.users import User diff --git a/archinstall/lib/interactions/network_menu.py b/archinstall/lib/interactions/network_menu.py index 4353a2bd..dd2243eb 100644 --- a/archinstall/lib/interactions/network_menu.py +++ b/archinstall/lib/interactions/network_menu.py @@ -5,7 +5,8 @@ from typing import TYPE_CHECKING, assert_never, override from archinstall.tui.curses_menu import EditMenu, SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties from ..menu.list_manager import ListManager from ..models.network_configuration import NetworkConfiguration, Nic, NicType diff --git a/archinstall/lib/interactions/system_conf.py b/archinstall/lib/interactions/system_conf.py index 466e9be3..e42b3419 100644 --- a/archinstall/lib/interactions/system_conf.py +++ b/archinstall/lib/interactions/system_conf.py @@ -4,7 +4,8 @@ from typing import TYPE_CHECKING from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, FrameStyle, Orientation, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, FrameStyle, Orientation, PreviewStyle from ..hardware import GfxDriver, SysInfo from ..models.bootloader import Bootloader diff --git a/archinstall/lib/locale/locale_menu.py b/archinstall/lib/locale/locale_menu.py index 9f09caca..267f61f9 100644 --- a/archinstall/lib/locale/locale_menu.py +++ b/archinstall/lib/locale/locale_menu.py @@ -2,7 +2,8 @@ from typing import TYPE_CHECKING, override from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties from ..menu.abstract_menu import AbstractSubMenu from ..models.locale import LocaleConfiguration diff --git a/archinstall/lib/menu/abstract_menu.py b/archinstall/lib/menu/abstract_menu.py index d951eb9a..35699ea1 100644 --- a/archinstall/lib/menu/abstract_menu.py +++ b/archinstall/lib/menu/abstract_menu.py @@ -5,7 +5,8 @@ from typing import TYPE_CHECKING, Any, Self from archinstall.tui.curses_menu import SelectMenu, Tui from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Chars, FrameProperties, FrameStyle, PreviewStyle, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Chars, FrameProperties, FrameStyle, PreviewStyle from ..output import error diff --git a/archinstall/lib/menu/list_manager.py b/archinstall/lib/menu/list_manager.py index ffcfd44a..f6fd172f 100644 --- a/archinstall/lib/menu/list_manager.py +++ b/archinstall/lib/menu/list_manager.py @@ -3,7 +3,8 @@ from typing import TYPE_CHECKING, Any from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment from ..output import FormattedOutput diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py index c81c32b8..35185681 100644 --- a/archinstall/lib/mirrors.py +++ b/archinstall/lib/mirrors.py @@ -5,7 +5,8 @@ from typing import TYPE_CHECKING, override from archinstall.tui.curses_menu import EditMenu, SelectMenu, Tui from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties from .menu.abstract_menu import AbstractSubMenu from .menu.list_manager import ListManager diff --git a/archinstall/lib/profile/profile_menu.py b/archinstall/lib/profile/profile_menu.py index fe283513..8533c751 100644 --- a/archinstall/lib/profile/profile_menu.py +++ b/archinstall/lib/profile/profile_menu.py @@ -5,7 +5,8 @@ from typing import TYPE_CHECKING, override from archinstall.default_profiles.profile import GreeterType, Profile from archinstall.tui.curses_menu import SelectMenu from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.types import Alignment, FrameProperties, Orientation, ResultType +from archinstall.tui.result import ResultType +from archinstall.tui.types import Alignment, FrameProperties, Orientation from ..hardware import GfxDriver from ..interactions.system_conf import select_driver diff --git a/archinstall/tui/__init__.py b/archinstall/tui/__init__.py index 1e45f28f..8708c8c5 100644 --- a/archinstall/tui/__init__.py +++ b/archinstall/tui/__init__.py @@ -1,6 +1,7 @@ from .curses_menu import EditMenu, SelectMenu, Tui from .menu_item import MenuItem, MenuItemGroup -from .types import Alignment, Chars, FrameProperties, FrameStyle, Orientation, PreviewStyle, Result, ResultType +from .result import Result, ResultType +from .types import Alignment, Chars, FrameProperties, FrameStyle, Orientation, PreviewStyle __all__ = [ 'Alignment', diff --git a/archinstall/tui/curses_menu.py b/archinstall/tui/curses_menu.py index a3cc1fb0..207ab44d 100644 --- a/archinstall/tui/curses_menu.py +++ b/archinstall/tui/curses_menu.py @@ -14,6 +14,7 @@ from typing import TYPE_CHECKING, Literal, override from ..lib.output import debug from .help import Help from .menu_item import MenuItem, MenuItemGroup, MenuItemsState +from .result import Result, ResultType from .types import ( SCROLL_INTERVAL, STYLE, @@ -24,8 +25,6 @@ from .types import ( MenuKeys, Orientation, PreviewStyle, - Result, - ResultType, ViewportEntry, _FrameDim, ) diff --git a/archinstall/tui/result.py b/archinstall/tui/result.py new file mode 100644 index 00000000..4307efb6 --- /dev/null +++ b/archinstall/tui/result.py @@ -0,0 +1,38 @@ +from dataclasses import dataclass +from enum import Enum, auto +from typing import Any + +from .menu_item import MenuItem + + +class ResultType(Enum): + Selection = auto() + Skip = auto() + Reset = auto() + + +@dataclass +class Result: + type_: ResultType + _item: MenuItem | list[MenuItem] | str | None + + def has_item(self) -> bool: + return self._item is not None + + def get_value(self) -> Any: + return self.item().get_value() + + def get_values(self) -> list[Any]: + return [i.get_value() for i in self.items()] + + def item(self) -> MenuItem: + assert self._item is not None and isinstance(self._item, MenuItem) + return self._item + + def items(self) -> list[MenuItem]: + assert self._item is not None and isinstance(self._item, list) + return self._item + + def text(self) -> str: + assert self._item is not None and isinstance(self._item, str) + return self._item diff --git a/archinstall/tui/types.py b/archinstall/tui/types.py index f7525a33..de64dc95 100644 --- a/archinstall/tui/types.py +++ b/archinstall/tui/types.py @@ -1,9 +1,6 @@ import curses from dataclasses import dataclass from enum import Enum, auto -from typing import Any - -from .menu_item import MenuItem SCROLL_INTERVAL = 10 @@ -94,23 +91,11 @@ class FrameProperties: ) -class ResultType(Enum): - Selection = auto() - Skip = auto() - Reset = auto() - - class Orientation(Enum): VERTICAL = auto() HORIZONTAL = auto() -@dataclass -class MenuCell: - item: MenuItem - text: str - - class PreviewStyle(Enum): NONE = auto() BOTTOM = auto() @@ -135,33 +120,6 @@ class Chars: Right_arrow = "←" -@dataclass -class Result: - type_: ResultType - _item: MenuItem | list[MenuItem] | str | None - - def has_item(self) -> bool: - return self._item is not None - - def get_value(self) -> Any: - return self.item().get_value() - - def get_values(self) -> list[Any]: - return [i.get_value() for i in self.items()] - - def item(self) -> MenuItem: - assert self._item is not None and isinstance(self._item, MenuItem) - return self._item - - def items(self) -> list[MenuItem]: - assert self._item is not None and isinstance(self._item, list) - return self._item - - def text(self) -> str: - assert self._item is not None and isinstance(self._item, str) - return self._item - - @dataclass class ViewportEntry: text: str