diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 0353e78046..911f74365f 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -586,9 +586,7 @@ if FROZEN: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/recovery.py')) if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/fido.py')) - elif TREZOR_MODEL in ('1',): - SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/t1.py')) - elif TREZOR_MODEL in ('R',): + elif TREZOR_MODEL in ('1', 'R'): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tr/__init__.py')) else: raise ValueError('Unknown Trezor model') diff --git a/core/SConscript.unix b/core/SConscript.unix index 6f9c8e91e7..b8ae28f737 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -540,9 +540,7 @@ if FROZEN: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/recovery.py')) if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/fido.py')) - elif TREZOR_MODEL in ('1',): - SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/t1.py')) - elif TREZOR_MODEL in ('R',): + elif TREZOR_MODEL in ('1', 'R'): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tr/__init__.py')) else: raise ValueError('Unknown Trezor model') diff --git a/core/src/all_modules.py b/core/src/all_modules.py index ee72fdd31f..c40e665b27 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -145,10 +145,6 @@ trezor.strings import trezor.strings trezor.ui import trezor.ui -trezor.ui.components -import trezor.ui.components -trezor.ui.components.common -import trezor.ui.components.common trezor.ui.components.common.confirm import trezor.ui.components.common.confirm trezor.ui.layouts @@ -161,8 +157,6 @@ trezor.ui.layouts.recovery import trezor.ui.layouts.recovery trezor.ui.layouts.reset import trezor.ui.layouts.reset -trezor.ui.layouts.t1 -import trezor.ui.layouts.t1 trezor.ui.layouts.tr import trezor.ui.layouts.tr trezor.ui.layouts.tt_v2 diff --git a/core/src/trezor/ui/layouts/__init__.py b/core/src/trezor/ui/layouts/__init__.py index a90247cc3c..bdc9f348e5 100644 --- a/core/src/trezor/ui/layouts/__init__.py +++ b/core/src/trezor/ui/layouts/__init__.py @@ -4,9 +4,7 @@ from .common import * # noqa: F401,F403 # NOTE: using any import magic probably causes mypy not to check equivalence of # layout type signatures across models -if utils.MODEL in ("1",): - from .t1 import * # noqa: F401,F403 -elif utils.MODEL in ("R",): +if utils.MODEL in ("1", "R"): from .tr import * # noqa: F401,F403 elif utils.MODEL in ("T",): from .tt_v2 import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/t1.py b/core/src/trezor/ui/layouts/t1.py deleted file mode 100644 index 420c1f085a..0000000000 --- a/core/src/trezor/ui/layouts/t1.py +++ /dev/null @@ -1,143 +0,0 @@ -from typing import TYPE_CHECKING - -from trezor import io, log, loop, ui, wire, workflow -from trezor.enums import ButtonRequestType - -import trezorui2 - -from ..components.common.confirm import is_confirmed -from .common import interact - -if TYPE_CHECKING: - from typing import Any, NoReturn, Type - - ExceptionType = BaseException | Type[BaseException] - - -class _RustLayout(ui.Layout): - # pylint: disable=super-init-not-called - def __init__(self, layout: Any): - self.layout = layout - self.timer = loop.Timer() - - def set_timer(self, token: int, deadline: int) -> None: - self.timer.schedule(deadline, token) - - def create_tasks(self) -> tuple[loop.Task, ...]: - return self.handle_timers(), self.handle_input_and_rendering() - - def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] - button = loop.wait(io.BUTTON) - ui.display.clear() - self.layout.attach_timer_fn(self.set_timer) - self.layout.paint() - while True: - # Using `yield` instead of `await` to avoid allocations. - event, button_num = yield button - workflow.idle_timer.touch() - msg = None - if event in (io.BUTTON_PRESSED, io.BUTTON_RELEASED): - msg = self.layout.button_event(event, button_num) - self.layout.paint() - if msg is not None: - raise ui.Result(msg) - - def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] - while True: - # Using `yield` instead of `await` to avoid allocations. - token = yield self.timer - msg = self.layout.timer(token) - self.layout.paint() - if msg is not None: - raise ui.Result(msg) - - -async def confirm_action( - ctx: wire.GenericContext, - br_type: str, - title: str, - action: str | None = None, - description: str | None = None, - description_param: str | None = None, - description_param_font: int = ui.BOLD, - verb: str | bytes | None = "OK", - verb_cancel: str | bytes | None = "cancel", - hold: bool = False, - reverse: bool = False, - exc: ExceptionType = wire.ActionCancelled, - br_code: ButtonRequestType = ButtonRequestType.Other, -) -> None: - if isinstance(verb, bytes) or isinstance(verb_cancel, bytes): - raise NotImplementedError - - if description is not None and description_param is not None: - if description_param_font != ui.BOLD: - log.error(__name__, "confirm_action description_param_font not implemented") - description = description.format(description_param) - - if hold: - log.error(__name__, "confirm_action hold not implemented") - - result = await interact( - ctx, - _RustLayout( - trezorui2.confirm_action( - title=title.upper(), - action=action, - description=description, - verb=verb, - verb_cancel=verb_cancel, - hold=hold, - reverse=reverse, - ) - ), - br_type, - br_code, - ) - if not is_confirmed(result): - raise exc - - -async def confirm_text( - ctx: wire.GenericContext, - br_type: str, - title: str, - data: str, - description: str | None = None, - br_code: ButtonRequestType = ButtonRequestType.Other, -) -> None: - result = await interact( - ctx, - _RustLayout( - trezorui2.confirm_text( - title=title.upper(), - data=data, - description=description, - ) - ), - br_type, - br_code, - ) - if not is_confirmed(result): - raise wire.ActionCancelled - - -async def show_error_and_raise( - ctx: wire.GenericContext, - br_type: str, - content: str, - subheader: str | None = None, - button: str = "Close", - exc: ExceptionType = wire.ActionCancelled, -) -> NoReturn: - raise NotImplementedError - - -async def show_popup( - title: str, - description: str, - subtitle: str | None = None, - description_param: str = "", - timeout_ms: int = 3000, -) -> None: - raise NotImplementedError