107 lines
4.1 KiB
Python
107 lines
4.1 KiB
Python
import sys
|
|
import ctypes
|
|
import json
|
|
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 check_for_updates(logger):
|
|
# """
|
|
# pyupdater를 사용하여 업데이트 여부를 체크하고,
|
|
# 업데이트가 있다면 증분 업데이트를 다운로드 후 적용(재시작)합니다.
|
|
# 업데이트가 없거나 이미 업데이트가 적용된 상태라면 changelog(문자열)를 반환합니다.
|
|
# """
|
|
# changelog = ""
|
|
# try:
|
|
# from pyupdater.client import Client
|
|
# APP_NAME = 'AutoPercenty3'
|
|
# CURRENT_VERSION = '1.0.0' # 현재 버전 (아래 설명 참조)
|
|
# PUBLIC_KEY = 'YOUR_PUBLIC_KEY' # 실제 공개키 (아래 설명 참조)
|
|
|
|
# # pyu-data/keys.json 파일에 저장된 키 정보를 읽어옵니다.
|
|
# import json
|
|
# with open('pyu-data/keys.json', 'r', encoding='utf-8') as f:
|
|
# data = json.load(f)
|
|
|
|
# client = Client(data, refresh=True, version=CURRENT_VERSION, public_key=PUBLIC_KEY)
|
|
# app_update = client.update_check(APP_NAME, CURRENT_VERSION)
|
|
# if app_update is not None:
|
|
# logger.log("업데이트가 감지되었습니다. 다운로드를 시작합니다.", level=logging.INFO)
|
|
# app_update.download()
|
|
# while not app_update.is_downloaded():
|
|
# import time
|
|
# time.sleep(1)
|
|
# changelog = app_update.get_changelog() if hasattr(app_update, "get_changelog") else ""
|
|
# logger.log("업데이트 다운로드 완료. 업데이트를 적용하고 프로그램을 재시작합니다.", level=logging.INFO)
|
|
# app_update.extract_restart()
|
|
# else:
|
|
# logger.log("업데이트가 없습니다.", level=logging.INFO)
|
|
# except Exception as e:
|
|
# logger.log(f"업데이트 확인 중 오류 발생: {e}", level=logging.ERROR)
|
|
# return changelog
|
|
|
|
def main():
|
|
logger = Logger(log_file="AutoPercenty3.log", logger_name="AP3_Logger", level=logging.DEBUG)
|
|
|
|
# DPI 관련 경고 제거 (Qt 기본값 설정)
|
|
set_dpi_awareness()
|
|
|
|
"""프로그램 시작점"""
|
|
app = QApplication([])
|
|
|
|
# 슬립 방지 활성화
|
|
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("로그인 실패 또는 취소되었습니다.")
|
|
|
|
# 로그인 성공 후, 멤버십 유효성 검사
|
|
valid = supabase_manager.check_membership_validity(user_info)
|
|
if valid:
|
|
# 전체 프로그램 GUI 실행
|
|
mainWindow = AutoPercentyGUI(logger, user_info, supabase_manager)
|
|
else:
|
|
# 제한된 기능만 제공하는 GUI 실행 (예: 금지어 관리 등)
|
|
mainWindow = AutoPercentyLimitedGUI(logger, user_info, supabase_manager)
|
|
|
|
# # 로그인 완료 후 업데이트 여부 체크 (업데이트가 있다면 재시작됩니다)
|
|
# changelog = check_for_updates(logger)
|
|
|
|
changelog =""
|
|
|
|
# GUI 실행 (업데이트가 없거나 업데이트 후 재시작된 경우)
|
|
if valid:
|
|
mainWindow = AutoPercentyGUI(logger, user_info, supabase_manager, update_log=changelog)
|
|
else:
|
|
mainWindow = AutoPercentyLimitedGUI(logger, user_info, supabase_manager)
|
|
|
|
mainWindow.destroyed.connect(restore_sleep_mode)
|
|
mainWindow.show()
|
|
sys.exit(app.exec())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|