AutoPercenty3/main.py

113 lines
4.0 KiB
Python

import sys
import ctypes
import os
import time
import logging
from PySide6.QtWidgets import QApplication, QMessageBox
from sleep_control import prevent_sleep_mode, restore_sleep_mode
from login_dialog import LoginDialog
from mainUI_SP import AutoPercentyGUI
from limited_gui import AutoPercentyLimitedGUI
from loggerModule import Logger # 추가
# Windows DPI Awareness Constants
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = -4
def set_dpi_awareness():
"""Windows DPI Awareness 설정"""
try:
ctypes.windll.user32.SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)
except Exception as e:
print(f"DPI Awareness 설정 실패: {e}")
def main():
# # 로그 파일 경로 설정 수정
# # 실행 파일 경로 대신 현재 스크립트 경로를 기준으로 로그 파일 생성
# script_dir = os.path.dirname(os.path.abspath(__file__))
# logs_dir = os.path.join(script_dir, "logs")
# # 로그 디렉토리 생성 (존재하지 않는 경우)
# try:
# if not os.path.exists(logs_dir):
# os.makedirs(logs_dir)
# except Exception as e:
# print(f"로그 디렉토리 생성 실패: {e}")
# logs_dir = script_dir # 실패 시 스크립트 디렉토리 사용
# log_file_path = os.path.join(logs_dir, "autopercenty3.log")
# # 로그 파일 경로 출력 (디버깅용)
# print(f"로그 파일 경로: {log_file_path}")
# 로거 초기화
logger = Logger(log_file="autopercenty3.log", logger_name="AP3_Logger", level=logging.DEBUG)
logger.log("===== 프로그램 시작 =====", level=logging.INFO)
# DPI 관련 경고 제거 (Qt 기본값 설정)
set_dpi_awareness()
"""프로그램 시작점"""
app = QApplication([])
# 애플리케이션 아이콘 설정
try:
script_dir = os.path.dirname(os.path.abspath(__file__))
icon_path = os.path.join(script_dir, "AutoPercenty3.ico")
if os.path.exists(icon_path):
from PySide6.QtGui import QIcon
app.setWindowIcon(QIcon(icon_path))
logger.log(f"애플리케이션 아이콘 설정: {icon_path}", level=logging.INFO)
else:
logger.log(f"아이콘 파일을 찾을 수 없습니다: {icon_path}", level=logging.WARNING)
except Exception as e:
logger.log(f"아이콘 설정 실패: {e}", level=logging.ERROR)
# 슬립 방지 활성화
prevent_sleep_mode()
# 로그인 다이얼로그 실행 (모달)
login_dialog = LoginDialog(logger)
if login_dialog.exec() == LoginDialog.Accepted:
user_info = login_dialog.get_user_info()
supabase_manager = login_dialog.get_supabase_manager()
else:
sys.exit("로그인 실패 또는 취소되었습니다.")
# # 로그인 완료 후 업데이트 여부 체크 (업데이트가 있다면 재시작됩니다)
# changelog = check_for_updates(logger)
changelog =""
# 로그인 성공 후, 멤버십 유효성 검사
valid = supabase_manager.check_membership_validity(user_info)
if valid:
# 전체 프로그램 GUI 실행
mainWindow = AutoPercentyGUI(logger, user_info, supabase_manager, update_log=changelog)
else:
# 제한된 기능만 제공하는 GUI 실행 (예: 금지어 관리 등)
mainWindow = AutoPercentyLimitedGUI(logger, user_info, supabase_manager)
# 윈도우에도 아이콘 설정
try:
script_dir = os.path.dirname(os.path.abspath(__file__))
icon_path = os.path.join(script_dir, "AutoPercenty3.ico")
if os.path.exists(icon_path):
from PySide6.QtGui import QIcon
app_icon = QIcon(icon_path)
mainWindow.setWindowIcon(app_icon)
logger.log("메인 윈도우에 아이콘 설정 완료", level=logging.INFO)
except Exception as e:
logger.log(f"메인 윈도우 아이콘 설정 실패: {e}", level=logging.ERROR)
mainWindow.destroyed.connect(restore_sleep_mode)
mainWindow.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()