diff --git a/src-python/models/overlay/overlay.py b/src-python/models/overlay/overlay.py index 5b740728..b61213e3 100644 --- a/src-python/models/overlay/overlay.py +++ b/src-python/models/overlay/overlay.py @@ -92,7 +92,6 @@ class Overlay: for i, size in enumerate(self.settings.keys()): self.handle[size] = self.overlay.createOverlay(f"VRCT{i}", f"VRCT{i}") self.overlay.showOverlay(self.handle[size]) - self.initialized = True for size in self.settings.keys(): self.updateImage(Image.new("RGBA", (1, 1), (0, 0, 0, 0)), size) @@ -109,6 +108,7 @@ class Overlay: self.settings[size]["tracker"], size ) + self.initialized = True except Exception as e: printLog("error:Could not initialise OpenVR", e) @@ -248,9 +248,10 @@ class Overlay: self.mainloop() def startOverlay(self): - self.thread_overlay = Thread(target=self.main) - self.thread_overlay.daemon = True - self.thread_overlay.start() + if self.checkSteamvrRunning() and self.initialized is False: + self.thread_overlay = Thread(target=self.main) + self.thread_overlay.daemon = True + self.thread_overlay.start() def shutdownOverlay(self): if isinstance(self.thread_overlay, Thread): @@ -315,7 +316,9 @@ if __name__ == "__main__": overlay_image = OverlayImage() overlay = Overlay(settings_dict) overlay.startOverlay() - time.sleep(1) + + while overlay.initialized is False: + time.sleep(1) # Example usage img = overlay_image.createOverlayImageLargeLog("send", "こんにちは、世界!さようなら", "Japanese", "Hello,World!Goodbye", "Japanese") diff --git a/src-python/models/overlay/overlay_image.py b/src-python/models/overlay/overlay_image.py index c5180650..562cff99 100644 --- a/src-python/models/overlay/overlay_image.py +++ b/src-python/models/overlay/overlay_image.py @@ -51,10 +51,12 @@ class OverlayImage: font_family = self.LANGUAGES.get(language, "NotoSansJP-Regular") img = Image.new("RGBA", (base_width, base_height), (0, 0, 0, 0)) draw = ImageDraw.Draw(img) - font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", f"{font_family}.ttf") + try: + font_path = os_path.join(os_path.dirname(os_path.dirname(os_path.dirname(__file__))), "fonts", f"{font_family}.ttf") font = ImageFont.truetype(font_path, font_size) except Exception: + font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", f"{font_family}.ttf") font = ImageFont.truetype(font_path, font_size) text_width = draw.textlength(text, font) @@ -126,10 +128,12 @@ class OverlayImage: img = Image.new("RGBA", (0, 0), (0, 0, 0, 0)) draw = ImageDraw.Draw(img) - font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", f"{font_family}.ttf") + try: + font_path = os_path.join(os_path.dirname(os_path.dirname(os_path.dirname(__file__))), "fonts", f"{font_family}.ttf") font = ImageFont.truetype(font_path, font_size) except Exception: + font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", f"{font_family}.ttf") font = ImageFont.truetype(font_path, font_size) text_width = draw.textlength(text, font) @@ -158,10 +162,12 @@ class OverlayImage: img = Image.new("RGBA", (0, 0), (0, 0, 0, 0)) draw = ImageDraw.Draw(img) - font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", "NotoSansJP-Regular.ttf") + try: + font_path = os_path.join(os_path.dirname(os_path.dirname(os_path.dirname(__file__))), "fonts", "NotoSansJP-Regular.ttf") font = ImageFont.truetype(font_path, font_size) except Exception: + font_path = os_path.join(os_path.dirname(__file__), "..", "..", "..", "fonts", "NotoSansJP-Regular.ttf") font = ImageFont.truetype(font_path, font_size) text_height = font_size + ui_padding diff --git a/src-python/webui_controller.py b/src-python/webui_controller.py index a1d13699..b73a5e45 100644 --- a/src-python/webui_controller.py +++ b/src-python/webui_controller.py @@ -251,7 +251,7 @@ class Controller: model.logger.info(f"[SENT] {message}{translation}") if config.OVERLAY_LARGE_LOG is True and model.overlay.initialized is True: - overlay_image = model.createOverlayImageLargeLog("send", message, translation) + overlay_image = model.createOverlayImageLargeLog("send", message, translation[0] if len(translation) > 0 else "") model.updateOverlayLargeLog(overlay_image) def speakerMessage(self, message) -> None: @@ -290,11 +290,11 @@ class Controller: if config.ENABLE_TRANSCRIPTION_RECEIVE is True: if config.OVERLAY_SMALL_LOG is True and model.overlay.initialized is True: - overlay_image = model.createOverlayImageSmallLog(message, translation) + overlay_image = model.createOverlayImageSmallLog(message, translation[0] if len(translation) > 0 else "") model.updateOverlaySmallLog(overlay_image) if config.OVERLAY_LARGE_LOG is True and model.overlay.initialized is True: - overlay_image = model.createOverlayImageLargeLog("receive", message, translation) + overlay_image = model.createOverlayImageLargeLog("receive", message, translation[0] if len(translation) > 0 else "") model.updateOverlayLargeLog(overlay_image) if config.SEND_RECEIVED_MESSAGE_TO_VRC is True: @@ -361,7 +361,7 @@ class Controller: model.oscSendMessage(osc_message) if config.OVERLAY_LARGE_LOG is True: - overlay_image = model.createOverlayImageLargeLog("send", message, translation) + overlay_image = model.createOverlayImageLargeLog("send", message, translation[0] if len(translation) > 0 else "") model.updateOverlayLargeLog(overlay_image) # update textbox message log (Sent) @@ -1167,8 +1167,7 @@ class Controller: @staticmethod def setEnableOverlaySmallLog(*args, **kwargs) -> dict: config.OVERLAY_SMALL_LOG = True - if model.overlay.initialized is False and model.overlay.checkSteamvrRunning() is True: - model.startOverlay() + model.startOverlay() return {"status":200, "result":config.OVERLAY_SMALL_LOG} @staticmethod @@ -1197,8 +1196,7 @@ class Controller: @staticmethod def setEnableOverlayLargeLog(*args, **kwargs) -> dict: config.OVERLAY_LARGE_LOG = True - if model.overlay.initialized is False and model.overlay.checkSteamvrRunning() is True: - model.startOverlay() + model.startOverlay() return {"status":200, "result":config.OVERLAY_LARGE_LOG} @staticmethod @@ -1356,10 +1354,8 @@ class Controller: def setEnableTranscriptionSend(self, *args, **kwargs) -> dict: self.startThreadingTranscriptionSendMessage() config.ENABLE_TRANSCRIPTION_SEND = True - if (config.OVERLAY_LARGE_LOG is True and - model.overlay.initialized is False and - model.overlay.checkSteamvrRunning() is True): - model.startOverlay() + if config.OVERLAY_LARGE_LOG is True: + model.startOverlay() return {"status":200, "result":config.ENABLE_TRANSCRIPTION_SEND} def setDisableTranscriptionSend(self, *args, **kwargs) -> dict: @@ -1369,14 +1365,8 @@ class Controller: def setEnableTranscriptionReceive(self, *args, **kwargs) -> dict: self.startThreadingTranscriptionReceiveMessage() - if (config.OVERLAY_SMALL_LOG is True and - model.overlay.initialized is False and - model.overlay.checkSteamvrRunning() is True): - model.startOverlay() - if (config.OVERLAY_LARGE_LOG is True and - model.overlay.initialized is False and - model.overlay.checkSteamvrRunning() is True): - model.startOverlay() + if (config.OVERLAY_SMALL_LOG is True or config.OVERLAY_LARGE_LOG is True): + model.startOverlay() config.ENABLE_TRANSCRIPTION_RECEIVE = True return {"status":200, "result":config.ENABLE_TRANSCRIPTION_RECEIVE}