diff --git a/src/apps/common/signverify.py b/src/apps/common/signverify.py index 231ca4786..7f3d0679c 100644 --- a/src/apps/common/signverify.py +++ b/src/apps/common/signverify.py @@ -1,9 +1,7 @@ from ubinascii import hexlify -from trezor import ui from trezor.crypto.hashlib import sha256 -from trezor.ui.text import TEXT_MARGIN_LEFT -from trezor.utils import HashWriter, chunks, split_words +from trezor.utils import HashWriter from apps.wallet.sign_tx.signing import write_varint @@ -21,13 +19,10 @@ def message_digest(coin, message): def split_message(message): - def measure(s): - return ui.display.text_width(s, ui.NORMAL) - try: m = bytes(message).decode() - lines = split_words(m, ui.WIDTH - 2 * TEXT_MARGIN_LEFT, metric=measure) + words = m.split(" ") except UnicodeError: m = hexlify(message) - lines = chunks(m, 16) - return lines + words = [m] + return words diff --git a/src/apps/ethereum/sign_message.py b/src/apps/ethereum/sign_message.py index 6a4c69efd..349b297c0 100644 --- a/src/apps/ethereum/sign_message.py +++ b/src/apps/ethereum/sign_message.py @@ -34,6 +34,6 @@ async def sign_message(ctx, msg): async def require_confirm_sign_message(ctx, message): message = split_message(message) - text = Text("Sign ETH message") + text = Text("Sign ETH message", new_lines=False) text.normal(*message) await require_confirm(ctx, text) diff --git a/src/apps/ethereum/verify_message.py b/src/apps/ethereum/verify_message.py index 6d16adc1c..b03d66230 100644 --- a/src/apps/ethereum/verify_message.py +++ b/src/apps/ethereum/verify_message.py @@ -32,10 +32,10 @@ async def verify_message(ctx, msg): async def require_confirm_verify_message(ctx, address, message): - text = Text("Confirm address") + text = Text("Confirm address", new_lines=False) text.mono(*split_address(address)) await require_confirm(ctx, text) - text = Text("Verify message") + text = Text("Verify message", new_lines=False) text.mono(*split_message(message)) await require_confirm(ctx, text) diff --git a/src/apps/lisk/sign_message.py b/src/apps/lisk/sign_message.py index 9892f32e3..251939660 100644 --- a/src/apps/lisk/sign_message.py +++ b/src/apps/lisk/sign_message.py @@ -39,6 +39,6 @@ async def sign_message(ctx, msg): async def require_confirm_sign_message(ctx, message): - text = Text("Sign Lisk message") + text = Text("Sign Lisk message", new_lines=False) text.normal(*split_message(message)) await require_confirm(ctx, text) diff --git a/src/apps/nem/layout.py b/src/apps/nem/layout.py index d3a340395..6c116218b 100644 --- a/src/apps/nem/layout.py +++ b/src/apps/nem/layout.py @@ -1,7 +1,7 @@ from trezor import ui from trezor.messages import ButtonRequestType from trezor.ui.text import Text -from trezor.utils import format_amount, split_words +from trezor.utils import format_amount from .helpers import NEM_MAX_DIVISIBILITY @@ -9,8 +9,10 @@ from apps.common.confirm import require_confirm, require_hold_to_confirm async def require_confirm_text(ctx, action: str): - words = split_words(action, 18) - await require_confirm_content(ctx, "Confirm action", words) + content = action.split(" ") + text = Text("Confirm action", ui.ICON_SEND, icon_color=ui.GREEN, new_lines=False) + text.normal(*content) + await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) async def require_confirm_fee(ctx, action: str, fee: int): diff --git a/src/apps/nem/mosaic/layout.py b/src/apps/nem/mosaic/layout.py index 953a93a76..1e1c9bb6b 100644 --- a/src/apps/nem/mosaic/layout.py +++ b/src/apps/nem/mosaic/layout.py @@ -12,7 +12,6 @@ from trezor.messages import ( from trezor.ui.confirm import ConfirmDialog from trezor.ui.scroll import Scrollpage, animate_swipe, paginate from trezor.ui.text import Text -from trezor.utils import split_words from ..layout import ( require_confirm_content, @@ -97,9 +96,10 @@ def _get_mosaic_properties(definition: NEMMosaicDefinition): # description if definition.description: - t = Text("Confirm properties", ui.ICON_SEND) + t = Text("Confirm properties", ui.ICON_SEND, new_lines=False) t.bold("Description:") - t.normal(*split_words(definition.description, 22)) + t.br() + t.normal(*definition.description.split(" ")) properties.append(t) # transferable diff --git a/src/apps/nem/transfer/layout.py b/src/apps/nem/transfer/layout.py index 3fa9b6294..a0c5a78ba 100644 --- a/src/apps/nem/transfer/layout.py +++ b/src/apps/nem/transfer/layout.py @@ -9,7 +9,7 @@ from trezor.messages import ( NEMTransfer, ) from trezor.ui.text import Text -from trezor.utils import format_amount, split_words +from trezor.utils import format_amount from ..helpers import ( NEM_LEVY_PERCENTILE_DIVISOR_ABSOLUTE, @@ -68,11 +68,9 @@ async def ask_transfer_mosaic( else: msg = Text("Confirm mosaic", ui.ICON_SEND, icon_color=ui.RED) msg.bold("Unknown mosaic!") - msg.normal( - *split_words( - "Divisibility and levy cannot be shown for unknown mosaics", 22 - ) - ) + msg.normal("Divisibility and levy") + msg.normal("cannot be shown for") + msg.normal("unknown mosaics") await require_confirm(ctx, msg, ButtonRequestType.ConfirmOutput) msg = Text("Confirm mosaic", ui.ICON_SEND, icon_color=ui.GREEN) @@ -136,9 +134,9 @@ async def _require_confirm_payload(ctx, payload: bytearray, encrypt=False): if encrypt: text = Text("Confirm payload", ui.ICON_SEND, icon_color=ui.GREEN) text.bold("Encrypted:") - text.normal(*split_words(payload, 22)) + text.normal(*payload.split(" ")) else: text = Text("Confirm payload", ui.ICON_SEND, icon_color=ui.RED) text.bold("Unencrypted:") - text.normal(*split_words(payload, 22)) + text.normal(*payload.split(" ")) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) diff --git a/src/apps/wallet/sign_message.py b/src/apps/wallet/sign_message.py index d4a00e7dd..9128920bd 100644 --- a/src/apps/wallet/sign_message.py +++ b/src/apps/wallet/sign_message.py @@ -40,6 +40,6 @@ async def sign_message(ctx, msg): async def require_confirm_sign_message(ctx, message): message = split_message(message) - text = Text("Sign message") + text = Text("Sign message", new_lines=False) text.normal(*message) await require_confirm(ctx, text) diff --git a/src/apps/wallet/verify_message.py b/src/apps/wallet/verify_message.py index 0c6f88d34..ee0d11a5e 100644 --- a/src/apps/wallet/verify_message.py +++ b/src/apps/wallet/verify_message.py @@ -68,6 +68,6 @@ async def require_confirm_verify_message(ctx, address, message): text.mono(*split_address(address)) await require_confirm(ctx, text) - text = Text("Verify message") + text = Text("Verify message", new_lines=False) text.normal(*split_message(message)) await require_confirm(ctx, text) diff --git a/src/trezor/ui/text.py b/src/trezor/ui/text.py index 4e95b0395..5e5917a4a 100644 --- a/src/trezor/ui/text.py +++ b/src/trezor/ui/text.py @@ -140,6 +140,9 @@ class Text(ui.LazyWidget): self.content.extend(content) self.content.append(ui.NORMAL) + def br(self): + self.content.append(BR) + def render(self): ui.header( self.header_text, self.header_icon, ui.TITLE_GREY, ui.BG, self.icon_color diff --git a/src/trezor/utils.py b/src/trezor/utils.py index c85d72558..0b505680a 100644 --- a/src/trezor/utils.py +++ b/src/trezor/utils.py @@ -47,27 +47,6 @@ def chunks(items, size): yield items[i : i + size] -def split_words(sentence, width, metric=len): - line = [] - for w in sentence.split(" "): - # empty word -> skip - if not w: - continue - # new word will not fit -> break the line - if metric(" ".join(line + [w])) >= width: - yield " ".join(line) - line = [] - # word is too wide -> split the word - while metric(w) >= width: - for i in range(1, len(w) + 1): - if metric(w[:-i]) < width: - yield w[:-i] + "-" - w = w[-i:] - break - line.append(w) - yield " ".join(line) - - def format_amount(amount, decimals): d = pow(10, decimals) amount = ("%d.%0*d" % (amount // d, decimals, amount % d)).rstrip("0")