mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-22 22:38:08 +00:00
replace scrolling to componenet, added mockup for recovery device layout
This commit is contained in:
parent
887c877567
commit
771372adb2
@ -26,6 +26,13 @@ def dispatch_WipeDevice(mtype, mbuf):
|
|||||||
return layout_wipe_device(message)
|
return layout_wipe_device(message)
|
||||||
|
|
||||||
|
|
||||||
|
@unimport_func
|
||||||
|
def dispatch_RecoveryDevice(mtype, mbuf):
|
||||||
|
from trezor.messages.RecoveryDevice import RecoveryDevice
|
||||||
|
message = RecoveryDevice.loads(mbuf)
|
||||||
|
from .layout_recovery_device import layout_recovery_device
|
||||||
|
return layout_recovery_device(message)
|
||||||
|
|
||||||
def boot():
|
def boot():
|
||||||
LoadDevice = 13
|
LoadDevice = 13
|
||||||
register(LoadDevice, dispatch_LoadDevice)
|
register(LoadDevice, dispatch_LoadDevice)
|
||||||
@ -33,3 +40,5 @@ def boot():
|
|||||||
register(ResetDevice, dispatch_ResetDevice)
|
register(ResetDevice, dispatch_ResetDevice)
|
||||||
WipeDevice = 5
|
WipeDevice = 5
|
||||||
register(WipeDevice, dispatch_WipeDevice)
|
register(WipeDevice, dispatch_WipeDevice)
|
||||||
|
RecoveryDevice = 45
|
||||||
|
register(RecoveryDevice, dispatch_RecoveryDevice)
|
16
src/apps/management/layout_recovery_device.py
Normal file
16
src/apps/management/layout_recovery_device.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from trezor import ui, loop, wire
|
||||||
|
from trezor.utils import unimport_gen
|
||||||
|
|
||||||
|
def ord(n):
|
||||||
|
return str(n)+("th" if 4<=n%100<=20 else {1:"st",2:"nd",3:"rd"}.get(n%10, "th"))
|
||||||
|
|
||||||
|
@unimport_gen
|
||||||
|
def layout_recovery_device(message):
|
||||||
|
|
||||||
|
msg = 'Please enter ' + ord(message.word_count) + ' word'
|
||||||
|
|
||||||
|
ui.clear()
|
||||||
|
ui.display.text(10, 30, 'Recovering device', ui.BOLD, ui.LIGHT_GREEN, ui.BLACK)
|
||||||
|
ui.display.text(10, 74, msg, ui.BOLD, ui.WHITE, ui.BLACK)
|
||||||
|
ui.display.text(10, 104, 'of your mnemonic.', ui.BOLD, ui.WHITE, ui.BLACK)
|
||||||
|
yield from wire.read(None)
|
@ -1,6 +1,7 @@
|
|||||||
from trezor import wire, loop, res, ui
|
from trezor import wire, loop, res, ui
|
||||||
from trezor.ui.swipe import Swipe, SWIPE_UP, SWIPE_DOWN
|
from trezor.ui.swipe import Swipe, SWIPE_UP, SWIPE_DOWN
|
||||||
from trezor.ui.button import Button, CONFIRM_BUTTON, CONFIRM_BUTTON_ACTIVE
|
from trezor.ui.button import Button, CONFIRM_BUTTON, CONFIRM_BUTTON_ACTIVE
|
||||||
|
from trezor.ui.scroll import Scroll
|
||||||
from trezor.crypto import hashlib, random, bip39
|
from trezor.crypto import hashlib, random, bip39
|
||||||
from trezor.utils import unimport_gen
|
from trezor.utils import unimport_gen
|
||||||
|
|
||||||
@ -62,23 +63,8 @@ def layout_reset_device(m):
|
|||||||
ui.display.text_right(40, top, '%d.' % (index + 1), ui.BOLD, ui.LIGHT_GREEN, ui.BLACK)
|
ui.display.text_right(40, top, '%d.' % (index + 1), ui.BOLD, ui.LIGHT_GREEN, ui.BLACK)
|
||||||
ui.display.text(45, top, '%s' % word, ui.BOLD, ui.WHITE, ui.BLACK)
|
ui.display.text(45, top, '%s' % word, ui.BOLD, ui.WHITE, ui.BLACK)
|
||||||
|
|
||||||
# print side scrolling indicator
|
scroll = Scroll(page=page, totale_lines=mnemonic_words, lines_per_page=words_per_page)
|
||||||
|
scroll.render()
|
||||||
count = len(mnemonic_words) // words_per_page # 6
|
|
||||||
padding = 20
|
|
||||||
screen_height = const(220)
|
|
||||||
cursor = 8
|
|
||||||
|
|
||||||
if count * padding > screen_height:
|
|
||||||
padding = screen_height // count
|
|
||||||
|
|
||||||
x = 220
|
|
||||||
y = (10 + (screen_height // 2)) - ((count // 2) * padding)
|
|
||||||
|
|
||||||
for i in range(0, count):
|
|
||||||
if (i != page):
|
|
||||||
ui.display.bar(x, y + i * padding, cursor, cursor, ui.GREY)
|
|
||||||
ui.display.bar(x, y + page * padding, cursor, cursor, ui.WHITE)
|
|
||||||
|
|
||||||
# TODO: remove swipedown icon when this button is showed
|
# TODO: remove swipedown icon when this button is showed
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ from trezor.workflows.confirm import confirm
|
|||||||
def layout_wipe_device(message):
|
def layout_wipe_device(message):
|
||||||
|
|
||||||
ui.clear()
|
ui.clear()
|
||||||
ui.display.text(10, 30, 'Wipe device', ui.BOLD, ui.LIGHT_GREEN, ui.BLACK)
|
ui.display.text(10, 30, 'Wiping device', ui.BOLD, ui.LIGHT_GREEN, ui.BLACK)
|
||||||
ui.display.text(10, 74, 'Do you really want to', ui.BOLD, ui.WHITE, ui.BLACK)
|
ui.display.text(10, 74, 'Do you really want to', ui.BOLD, ui.WHITE, ui.BLACK)
|
||||||
ui.display.text(10, 104, 'wipe the device?', ui.BOLD, ui.WHITE, ui.BLACK)
|
ui.display.text(10, 104, 'wipe the device?', ui.BOLD, ui.WHITE, ui.BLACK)
|
||||||
ui.display.text(10, 164, 'All data will be lost.', ui.NORMAL, ui.WHITE, ui.BLACK)
|
ui.display.text(10, 164, 'All data will be lost.', ui.NORMAL, ui.WHITE, ui.BLACK)
|
||||||
|
32
src/trezor/ui/scroll.py
Normal file
32
src/trezor/ui/scroll.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
from . import display
|
||||||
|
from trezor import ui, loop, res
|
||||||
|
|
||||||
|
|
||||||
|
class Scroll():
|
||||||
|
|
||||||
|
def __init__(self, page=0, totale_lines=0, lines_per_page=4):
|
||||||
|
self.page = page
|
||||||
|
self.totale_lines = totale_lines
|
||||||
|
self.lines_per_page = lines_per_page
|
||||||
|
|
||||||
|
def render(self):
|
||||||
|
count = len(self.totale_lines) // self.lines_per_page
|
||||||
|
padding = 20
|
||||||
|
screen_height = const(220)
|
||||||
|
cursor = 8
|
||||||
|
|
||||||
|
if count * padding > screen_height:
|
||||||
|
padding = screen_height // count
|
||||||
|
|
||||||
|
x = 220
|
||||||
|
y = (10 + (screen_height // 2)) - ((count // 2) * padding)
|
||||||
|
|
||||||
|
for i in range(0, count):
|
||||||
|
if (i != self.page):
|
||||||
|
ui.display.bar(x, y + i * padding, cursor, cursor, ui.GREY)
|
||||||
|
ui.display.bar(x, y + self.page * padding, cursor, cursor, ui.WHITE)
|
||||||
|
|
||||||
|
def wait(self):
|
||||||
|
while True:
|
||||||
|
self.render()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user