AutoPercenty3/main.py

64 lines
2.0 KiB
Python

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()으로 실행