import ctypes from PySide6.QtWidgets import QApplication from gui import TranslationApp # 기존 TranslationApp UI 사용 from logger_module import setup_logger import asyncio import os from whale_translator import WhaleTranslator # 절전모드를 방지하는 설정 값 ES_CONTINUOUS = 0x80000000 ES_SYSTEM_REQUIRED = 0x00000001 def prevent_sleep(): """절전모드 방지를 위해 시스템 설정을 변경""" ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED) def allow_sleep(): """절전모드 방지 설정을 해제""" ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS) async def process_qt_events(app): """PySide6의 이벤트를 처리하는 비동기 함수""" while True: app.processEvents() await asyncio.sleep(0.01) # 10ms마다 Qt 이벤트 처리 async def main(): # 로깅 설정 logger = setup_logger('default_logger', f'appTranslator.log') # 절전모드 방지 활성화 prevent_sleep() try: # PySide6 앱 실행 app = QApplication([]) # DPI 설정 try: os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" ctypes.windll.shcore.SetProcessDpiAwareness(2) except Exception as e: print(f"DPI 인식 설정 실패: {e}") # 기존 TranslationApp UI 사용 whale_translator = WhaleTranslator(app, logger, secret_mode=True,vd_mode=True) # 디버그 모드 켜기 await whale_translator.start_whale_browser() window = TranslationApp(logger, whale_translator) # PySide6 UI window.show() # asyncio와 PySide6 이벤트 루프를 통합 await asyncio.gather( process_qt_events(app), # PySide6 이벤트 처리 window.run_async_tasks() # 비동기 작업 ) finally: # 앱 종료 시 절전모드 방지 해제 allow_sleep() if __name__ == '__main__': asyncio.run(main()) # 비동기 함수는 asyncio.run()으로 실행