split to file

pull/36410/head
Shane Smiskol 1 month ago
parent 7a11c1d441
commit 6d4f568f7d
  1. 7
      system/ui/lib/application.py
  2. 46
      system/ui/lib/multilang.py

@ -12,6 +12,7 @@ from typing import NamedTuple
from importlib.resources import as_file, files
from openpilot.common.swaglog import cloudlog
from openpilot.system.hardware import HARDWARE, PC
from openpilot.system.ui.lib.multilang import Multilang
from openpilot.common.realtime import Ratekeeper
DEFAULT_FPS = int(os.getenv("FPS", "60"))
@ -135,6 +136,7 @@ class GuiApplication:
self._window_close_requested = False
self._trace_log_callback = None
self._modal_overlay = ModalOverlay()
self._multilang = Multilang()
self._mouse = MouseState(self._scale)
self._mouse_events: list[MouseEvent] = []
@ -318,11 +320,6 @@ class GuiApplication:
def height(self):
return self._height
def _load_languages(self):
LANGUAGE_DIR = os.path.join(BASEDIR, "selfdrive", "ui", "translations")
for file in os.listdir(LANGUAGE_DIR):
if file.endswith(".ts"):
pass
def _load_fonts(self):
# Create a character set from our keyboard layouts

@ -0,0 +1,46 @@
import os
import pyray as rl
from typing import Union
from openpilot.common.params import Params
from openpilot.common.basedir import BASEDIR
class Multilang:
def __init__(self):
self._language: str = "main_en"
self._translations: dict[str, dict[str, str]] = {}
self._load_languages()
self._hook_draw_text()
def _load_languages(self):
self._language = Params().get("LanguageSetting")
LANGUAGE_DIR = os.path.join(BASEDIR, "selfdrive", "ui", "translations")
for file in os.listdir(LANGUAGE_DIR):
if file.endswith(".ts"):
pass
def _get_translated_text(self, text: str) -> str:
if self._language not in self._translations:
return text
return self._translations[self._language].get(text, text)
def _hook_draw_text(self):
# hook rl.draw_text* to get text for multilang
# TODO: and measure text
original_draw_text = rl.draw_text
original_draw_text_ex = rl.draw_text_ex
def draw_text_wrapper(text: str, posX: int, posY: int, fontSize: int, color: Union[rl.Color, list, tuple]) -> None:
assert False
text = self._get_translated_text(text)
return original_draw_text(text, posX, posY, fontSize, color)
def draw_text_ex_wrapper(font: Union[rl.Font, list, tuple], text: str, position: Union[rl.Vector2, list, tuple], fontSize: float, spacing: float,
tint: Union[rl.Color, list, tuple]) -> None:
text = self._get_translated_text(text)
return original_draw_text_ex(font, text, position, fontSize, spacing, tint)
rl.draw_text = draw_text_wrapper
rl.draw_text_ex = draw_text_ex_wrapper
Loading…
Cancel
Save