From 91dc487dcda9ef7d565f11edfb74d22c0c3dc9c2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 27 Feb 2018 15:04:03 +0100 Subject: [PATCH] src/apps/wallet: use max_lines in Text component --- src/apps/wallet/cipher_key_value.py | 2 +- src/apps/wallet/sign_message.py | 2 +- src/apps/wallet/verify_message.py | 2 +- src/trezor/ui/text.py | 11 +++++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/apps/wallet/cipher_key_value.py b/src/apps/wallet/cipher_key_value.py index 3176330c5..7a4d064f7 100644 --- a/src/apps/wallet/cipher_key_value.py +++ b/src/apps/wallet/cipher_key_value.py @@ -23,7 +23,7 @@ async def cipher_key_value(ctx, msg): else: title = 'Decrypt value' lines = split_words(msg.key, ui.WIDTH - 2 * TEXT_MARGIN_LEFT, metric=lambda x: ui.display.text_width(x, ui.NORMAL)) - await require_confirm(ctx, Text(title, ui.ICON_DEFAULT, *lines)) + await require_confirm(ctx, Text(title, ui.ICON_DEFAULT, max_lines=5, *lines)) node = await seed.derive_node(ctx, msg.address_n) value = compute_cipher_key_value(msg, node.private_key()) diff --git a/src/apps/wallet/sign_message.py b/src/apps/wallet/sign_message.py index b1862a457..ef1d820d7 100644 --- a/src/apps/wallet/sign_message.py +++ b/src/apps/wallet/sign_message.py @@ -34,5 +34,5 @@ async def sign_message(ctx, msg): async def confirm_sign_message(ctx, message): message = split_message(message) - content = Text('Sign message', ui.ICON_CONFIRM, *message) + content = Text('Sign message', ui.ICON_DEFAULT, max_lines=5, *message) await require_confirm(ctx, content) diff --git a/src/apps/wallet/verify_message.py b/src/apps/wallet/verify_message.py index d6d44b18c..9da60f5e4 100644 --- a/src/apps/wallet/verify_message.py +++ b/src/apps/wallet/verify_message.py @@ -37,5 +37,5 @@ async def verify_message(ctx, msg): async def confirm_verify_message(ctx, message): message = split_message(message) - content = Text('Verify message', ui.ICON_CONFIRM, ui.MONO, *message) + content = Text('Verify message', ui.ICON_DEFAULT, max_lines=5, *message) await require_confirm(ctx, content) diff --git a/src/trezor/ui/text.py b/src/trezor/ui/text.py index 3d8338312..594092450 100644 --- a/src/trezor/ui/text.py +++ b/src/trezor/ui/text.py @@ -8,11 +8,12 @@ TEXT_MARGIN_LEFT = const(14) class Text(ui.Widget): - def __init__(self, header_text, header_icon, *content, icon_color=ui.ORANGE_ICON): + def __init__(self, header_text, header_icon, *content, icon_color=ui.ORANGE_ICON, max_lines=None): self.header_text = header_text self.header_icon = header_icon self.icon_color = icon_color self.content = content + self.max_lines = max_lines def render(self): offset_x = TEXT_MARGIN_LEFT @@ -22,10 +23,16 @@ class Text(ui.Widget): bg = ui.BG ui.header(self.header_text, self.header_icon, ui.TITLE_GREY, ui.BG, self.icon_color) + line = 1 for item in self.content: if isinstance(item, str): - ui.display.text(offset_x, offset_y, item, style, fg, bg) + if self.max_lines is not None and line >= self.max_lines: + ui.display.text(offset_x, offset_y, item + '...', style, fg, bg) + break + else: + ui.display.text(offset_x, offset_y, item, style, fg, bg) offset_y += TEXT_LINE_HEIGHT + line += 1 elif item == ui.MONO or item == ui.NORMAL or item == ui.BOLD: style = item else: