import sys import logging from PySide6.QtWidgets import QApplication from PySide6.QtGui import QIcon from src.main_window import MainWindow from src.logger_module import Logger from login.login_dialog import LoginDialog from src.databaseManager import DatabaseManager import ctypes # COM 초기화 (멀티스레드 모드) def initialize_com(): COINIT_MULTITHREADED = 0x0 ctypes.windll.ole32.CoInitializeEx(None, COINIT_MULTITHREADED) # COM 해제 def uninitialize_com(): ctypes.windll.ole32.CoUninitialize() if __name__ == "__main__": initialize_com() # COM 초기화 logger = Logger(log_file="jjim2.log", logger_name="jjim_Logger", level=logging.DEBUG) app = QApplication(sys.argv) app.setWindowIcon(QIcon("jjim.ico")) # 로그인 다이얼로그 실행 (모달) 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: db_manager = DatabaseManager(logger) # 전체 프로그램 GUI 실행 window = MainWindow(logger, db_manager, user_info) window.show() sys.exit(app.exec()) # 메인 UI 실행 else: # 로그인 실패 시 sys.exit(0) # 프로그램 종료 uninitialize_com() # COM 해제