trezor-core/src/trezor/ui/text.py

40 lines
1.3 KiB
Python
Raw Normal View History

2016-09-29 03:29:43 -07:00
from micropython import const
2016-09-27 07:08:02 -07:00
from trezor import ui
2018-01-11 10:46:40 -08:00
TEXT_HEADER_HEIGHT = const(48)
TEXT_LINE_HEIGHT = const(26)
2017-11-03 09:14:01 -07:00
TEXT_MARGIN_LEFT = const(14)
2016-09-27 07:08:02 -07:00
2017-03-28 10:08:48 -07:00
class Text(ui.Widget):
2016-09-27 07:08:02 -07:00
def __init__(self, header_text, header_icon, *content, icon_color=ui.ORANGE_ICON, max_lines=None):
2016-10-20 06:06:40 -07:00
self.header_text = header_text
self.header_icon = header_icon
2018-01-11 10:46:40 -08:00
self.icon_color = icon_color
2016-09-27 07:30:08 -07:00
self.content = content
self.max_lines = max_lines
2016-09-27 07:08:02 -07:00
def render(self):
2016-10-20 06:06:40 -07:00
offset_x = TEXT_MARGIN_LEFT
offset_y = TEXT_LINE_HEIGHT + TEXT_HEADER_HEIGHT
2016-09-27 07:30:08 -07:00
style = ui.NORMAL
2017-09-26 03:05:05 -07:00
fg = ui.FG
bg = ui.BG
2018-01-11 10:46:40 -08:00
ui.header(self.header_text, self.header_icon, ui.TITLE_GREY, ui.BG, self.icon_color)
2016-10-20 06:06:40 -07:00
line = 1
2018-01-30 10:08:51 -08:00
for item in self.content:
if isinstance(item, str):
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)
2016-10-20 06:06:40 -07:00
offset_y += TEXT_LINE_HEIGHT
line += 1
2018-01-30 10:08:51 -08:00
elif item == ui.MONO or item == ui.NORMAL or item == ui.BOLD:
style = item
2016-10-20 06:06:40 -07:00
else:
2018-01-30 10:08:51 -08:00
fg = item