From a51477d40dece8158c3fcbf3fb5cf4b2f9affdf3 Mon Sep 17 00:00:00 2001 From: Maxime Desroches Date: Wed, 6 Aug 2025 18:07:06 -0700 Subject: [PATCH] ui: use Label in keyboard (#35941) better --- system/ui/widgets/keyboard.py | 14 +++++++------- system/ui/widgets/label.py | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/system/ui/widgets/keyboard.py b/system/ui/widgets/keyboard.py index 388d7e2664..dee424a2d3 100644 --- a/system/ui/widgets/keyboard.py +++ b/system/ui/widgets/keyboard.py @@ -8,7 +8,7 @@ from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.widgets import Widget from openpilot.system.ui.widgets.button import ButtonStyle, Button from openpilot.system.ui.widgets.inputbox import InputBox -from openpilot.system.ui.widgets.label import gui_label +from openpilot.system.ui.widgets.label import Label, TextAlignment KEY_FONT_SIZE = 96 DOUBLE_CLICK_THRESHOLD = 0.5 # seconds @@ -62,8 +62,8 @@ class Keyboard(Widget): self._layout_name: Literal["lowercase", "uppercase", "numbers", "specials"] = "lowercase" self._caps_lock = False self._last_shift_press_time = 0 - self._title = "" - self._sub_title = "" + self._title = Label("", 90, FontWeight.BOLD, TextAlignment.LEFT) + self._sub_title = Label("", 55, FontWeight.NORMAL, TextAlignment.LEFT) self._max_text_size = max_text_size self._min_text_size = min_text_size @@ -115,8 +115,8 @@ class Keyboard(Widget): self._backspace_pressed = False def set_title(self, title: str, sub_title: str = ""): - self._title = title - self._sub_title = sub_title + self._title.set_text(title) + self._sub_title.set_text(sub_title) def _eye_button_callback(self): self._password_mode = not self._password_mode @@ -133,8 +133,8 @@ class Keyboard(Widget): def _render(self, rect: rl.Rectangle): rect = rl.Rectangle(rect.x + CONTENT_MARGIN, rect.y + CONTENT_MARGIN, rect.width - 2 * CONTENT_MARGIN, rect.height - 2 * CONTENT_MARGIN) - gui_label(rl.Rectangle(rect.x, rect.y, rect.width, 95), self._title, 90, font_weight=FontWeight.BOLD) - gui_label(rl.Rectangle(rect.x, rect.y + 95, rect.width, 60), self._sub_title, 55, font_weight=FontWeight.NORMAL) + self._title.render(rl.Rectangle(rect.x, rect.y, rect.width, 95)) + self._sub_title.render(rl.Rectangle(rect.x, rect.y + 95, rect.width, 60)) self._cancel_button.render(rl.Rectangle(rect.x + rect.width - 386, rect.y, 386, 125)) # Draw input box and password toggle diff --git a/system/ui/widgets/label.py b/system/ui/widgets/label.py index f73b72cc59..2b0b017698 100644 --- a/system/ui/widgets/label.py +++ b/system/ui/widgets/label.py @@ -112,10 +112,11 @@ class Label(Widget): self._text_size = measure_text_cached(self._font, self._text, self._font_size) self._text_color = text_color self._icon = icon - self.emojis = find_emoji(self._text) + self._emojis = find_emoji(self._text) def set_text(self, text): self._text = text + self._emojis = find_emoji(self._text) self._text_size = measure_text_cached(self._font, self._text, self._font_size) def set_text_color(self, color): @@ -148,7 +149,7 @@ class Label(Widget): text_pos.x = self._rect.x + self._rect.width - self._text_size.x - self._text_padding prev_index = 0 - for start, end, emoji in self.emojis: + for start, end, emoji in self._emojis: text_before = self._text[prev_index:start] width_before = measure_text_cached(self._font, text_before, self._font_size) rl.draw_text_ex(self._font, text_before, text_pos, self._font_size, 0, self._text_color)