mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-22 20:42:03 +00:00
core/layout: create progress.py
This commit is contained in:
parent
818e2e2827
commit
af685c9e14
@ -153,6 +153,8 @@ trezor.ui.layouts.fido
|
|||||||
import trezor.ui.layouts.fido
|
import trezor.ui.layouts.fido
|
||||||
trezor.ui.layouts.homescreen
|
trezor.ui.layouts.homescreen
|
||||||
import trezor.ui.layouts.homescreen
|
import trezor.ui.layouts.homescreen
|
||||||
|
trezor.ui.layouts.progress
|
||||||
|
import trezor.ui.layouts.progress
|
||||||
trezor.ui.layouts.recovery
|
trezor.ui.layouts.recovery
|
||||||
import trezor.ui.layouts.recovery
|
import trezor.ui.layouts.recovery
|
||||||
trezor.ui.layouts.reset
|
trezor.ui.layouts.reset
|
||||||
@ -165,6 +167,8 @@ trezor.ui.layouts.tt_v2.fido
|
|||||||
import trezor.ui.layouts.tt_v2.fido
|
import trezor.ui.layouts.tt_v2.fido
|
||||||
trezor.ui.layouts.tt_v2.homescreen
|
trezor.ui.layouts.tt_v2.homescreen
|
||||||
import trezor.ui.layouts.tt_v2.homescreen
|
import trezor.ui.layouts.tt_v2.homescreen
|
||||||
|
trezor.ui.layouts.tt_v2.progress
|
||||||
|
import trezor.ui.layouts.tt_v2.progress
|
||||||
trezor.ui.layouts.tt_v2.recovery
|
trezor.ui.layouts.tt_v2.recovery
|
||||||
import trezor.ui.layouts.tt_v2.recovery
|
import trezor.ui.layouts.tt_v2.recovery
|
||||||
trezor.ui.layouts.tt_v2.reset
|
trezor.ui.layouts.tt_v2.reset
|
||||||
|
@ -111,7 +111,7 @@ class Progress:
|
|||||||
|
|
||||||
def report_init(self) -> None:
|
def report_init(self) -> None:
|
||||||
from trezor import workflow
|
from trezor import workflow
|
||||||
from trezor.ui.layouts import bitcoin_progress, coinjoin_progress
|
from trezor.ui.layouts.progress import bitcoin_progress, coinjoin_progress
|
||||||
|
|
||||||
progress_layout = bitcoin_progress
|
progress_layout = bitcoin_progress
|
||||||
if self.is_coinjoin:
|
if self.is_coinjoin:
|
||||||
|
@ -97,7 +97,7 @@ _progress_obj: ProgressLayout | None = None
|
|||||||
|
|
||||||
def _start_progress() -> None:
|
def _start_progress() -> None:
|
||||||
from trezor import workflow
|
from trezor import workflow
|
||||||
from trezor.ui.layouts import progress
|
from trezor.ui.layouts.progress import progress
|
||||||
|
|
||||||
global _progress_obj
|
global _progress_obj
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ _progress_obj: ProgressLayout | None = None
|
|||||||
async def get_firmware_hash(ctx: Context, msg: GetFirmwareHash) -> FirmwareHash:
|
async def get_firmware_hash(ctx: Context, msg: GetFirmwareHash) -> FirmwareHash:
|
||||||
from trezor.messages import FirmwareHash
|
from trezor.messages import FirmwareHash
|
||||||
from trezor.utils import firmware_hash
|
from trezor.utils import firmware_hash
|
||||||
from trezor.ui.layouts import progress
|
from trezor.ui.layouts.progress import progress
|
||||||
from trezor import wire, workflow
|
from trezor import wire, workflow
|
||||||
|
|
||||||
workflow.close_others()
|
workflow.close_others()
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from trezor.enums import ButtonRequestType
|
from trezor.enums import ButtonRequestType
|
||||||
from trezor.ui.layouts import ( # noqa: F401
|
from trezor.ui.layouts import confirm_action, confirm_metadata # noqa: F401
|
||||||
confirm_action,
|
from trezor.ui.layouts.progress import ( # noqa: F401
|
||||||
confirm_metadata,
|
|
||||||
monero_keyimage_sync_progress,
|
monero_keyimage_sync_progress,
|
||||||
monero_live_refresh_progress,
|
monero_live_refresh_progress,
|
||||||
monero_transaction_progress_inner,
|
monero_transaction_progress_inner,
|
||||||
|
@ -25,7 +25,7 @@ def allow_all_loader_messages() -> None:
|
|||||||
|
|
||||||
def render_empty_loader(message: str, description: str) -> None:
|
def render_empty_loader(message: str, description: str) -> None:
|
||||||
"""Render empty loader to prevent the screen appear to be frozen."""
|
"""Render empty loader to prevent the screen appear to be frozen."""
|
||||||
from trezor.ui.layouts import pin_progress
|
from trezor.ui.layouts.progress import pin_progress
|
||||||
|
|
||||||
global _progress_layout
|
global _progress_layout
|
||||||
global _started_with_empty_loader
|
global _started_with_empty_loader
|
||||||
@ -37,7 +37,7 @@ def render_empty_loader(message: str, description: str) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def show_pin_timeout(seconds: int, progress: int, message: str) -> bool:
|
def show_pin_timeout(seconds: int, progress: int, message: str) -> bool:
|
||||||
from trezor.ui.layouts import pin_progress
|
from trezor.ui.layouts.progress import pin_progress
|
||||||
|
|
||||||
# Possibility to ignore certain messages - not showing loader for them
|
# Possibility to ignore certain messages - not showing loader for them
|
||||||
if message in _ignore_loader_messages:
|
if message in _ignore_loader_messages:
|
||||||
|
1
core/src/trezor/ui/layouts/progress.py
Normal file
1
core/src/trezor/ui/layouts/progress.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .tt_v2.progress import * # noqa: F401,F403
|
@ -1168,65 +1168,3 @@ async def request_pin_on_device(
|
|||||||
raise PinCancelled
|
raise PinCancelled
|
||||||
assert isinstance(result, str)
|
assert isinstance(result, str)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
class RustProgress:
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
layout: Any,
|
|
||||||
):
|
|
||||||
self.layout = layout
|
|
||||||
ui.backlight_fade(ui.style.BACKLIGHT_DIM)
|
|
||||||
ui.display.clear()
|
|
||||||
self.layout.attach_timer_fn(self.set_timer)
|
|
||||||
self.layout.paint()
|
|
||||||
ui.backlight_fade(ui.style.BACKLIGHT_NORMAL)
|
|
||||||
|
|
||||||
def set_timer(self, token: int, deadline: int) -> None:
|
|
||||||
raise RuntimeError # progress layouts should not set timers
|
|
||||||
|
|
||||||
def report(self, value: int, description: str | None = None):
|
|
||||||
msg = self.layout.progress_event(value, description or "")
|
|
||||||
assert msg is None
|
|
||||||
self.layout.paint()
|
|
||||||
ui.refresh()
|
|
||||||
|
|
||||||
|
|
||||||
def progress(
|
|
||||||
message: str = "PLEASE WAIT",
|
|
||||||
description: str | None = None,
|
|
||||||
indeterminate: bool = False,
|
|
||||||
) -> ProgressLayout:
|
|
||||||
return RustProgress(
|
|
||||||
layout=trezorui2.show_progress(
|
|
||||||
title=message.upper(),
|
|
||||||
indeterminate=indeterminate,
|
|
||||||
description=description or "",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def bitcoin_progress(message: str) -> ProgressLayout:
|
|
||||||
return progress(message)
|
|
||||||
|
|
||||||
|
|
||||||
def coinjoin_progress(message: str) -> ProgressLayout:
|
|
||||||
return RustProgress(
|
|
||||||
layout=trezorui2.show_progress_coinjoin(title=message, indeterminate=False)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def pin_progress(message: str, description: str) -> ProgressLayout:
|
|
||||||
return progress(message, description=description)
|
|
||||||
|
|
||||||
|
|
||||||
def monero_keyimage_sync_progress() -> ProgressLayout:
|
|
||||||
return progress("SYNCING")
|
|
||||||
|
|
||||||
|
|
||||||
def monero_live_refresh_progress() -> ProgressLayout:
|
|
||||||
return progress("REFRESHING", indeterminate=True)
|
|
||||||
|
|
||||||
|
|
||||||
def monero_transaction_progress_inner() -> ProgressLayout:
|
|
||||||
return progress("SIGNING TRANSACTION")
|
|
||||||
|
72
core/src/trezor/ui/layouts/tt_v2/progress.py
Normal file
72
core/src/trezor/ui/layouts/tt_v2/progress.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from trezor import ui
|
||||||
|
|
||||||
|
import trezorui2
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from ..common import ProgressLayout
|
||||||
|
|
||||||
|
|
||||||
|
class RustProgress:
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
layout: Any,
|
||||||
|
):
|
||||||
|
self.layout = layout
|
||||||
|
ui.backlight_fade(ui.style.BACKLIGHT_DIM)
|
||||||
|
ui.display.clear()
|
||||||
|
self.layout.attach_timer_fn(self.set_timer)
|
||||||
|
self.layout.paint()
|
||||||
|
ui.backlight_fade(ui.style.BACKLIGHT_NORMAL)
|
||||||
|
|
||||||
|
def set_timer(self, token: int, deadline: int) -> None:
|
||||||
|
raise RuntimeError # progress layouts should not set timers
|
||||||
|
|
||||||
|
def report(self, value: int, description: str | None = None):
|
||||||
|
msg = self.layout.progress_event(value, description or "")
|
||||||
|
assert msg is None
|
||||||
|
self.layout.paint()
|
||||||
|
ui.refresh()
|
||||||
|
|
||||||
|
|
||||||
|
def progress(
|
||||||
|
message: str = "PLEASE WAIT",
|
||||||
|
description: str | None = None,
|
||||||
|
indeterminate: bool = False,
|
||||||
|
) -> ProgressLayout:
|
||||||
|
return RustProgress(
|
||||||
|
layout=trezorui2.show_progress(
|
||||||
|
title=message.upper(),
|
||||||
|
indeterminate=indeterminate,
|
||||||
|
description=description or "",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def bitcoin_progress(message: str) -> ProgressLayout:
|
||||||
|
return progress(message)
|
||||||
|
|
||||||
|
|
||||||
|
def coinjoin_progress(message: str) -> ProgressLayout:
|
||||||
|
return RustProgress(
|
||||||
|
layout=trezorui2.show_progress_coinjoin(title=message, indeterminate=False)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pin_progress(message: str, description: str) -> ProgressLayout:
|
||||||
|
return progress(message, description=description)
|
||||||
|
|
||||||
|
|
||||||
|
def monero_keyimage_sync_progress() -> ProgressLayout:
|
||||||
|
return progress("SYNCING")
|
||||||
|
|
||||||
|
|
||||||
|
def monero_live_refresh_progress() -> ProgressLayout:
|
||||||
|
return progress("REFRESHING", indeterminate=True)
|
||||||
|
|
||||||
|
|
||||||
|
def monero_transaction_progress_inner() -> ProgressLayout:
|
||||||
|
return progress("SIGNING TRANSACTION")
|
Loading…
Reference in New Issue
Block a user