|
|
|
@ -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:
|
|
|
|
|