69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
import sys
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
|
|
from asyncqt import QEventLoop
|
|
from ui.main_window import MainWindow
|
|
from ui.license_dialog import LicenseDialog
|
|
from utils.config import ConfigManager
|
|
from utils.logger import setup_logger
|
|
import logging, os
|
|
import asyncio
|
|
|
|
def main():
|
|
config = ConfigManager()
|
|
|
|
# config.ini 파일이 없을 경우 생성
|
|
if not os.path.exists('config.ini'):
|
|
config._create_default_config()
|
|
print("config.ini 파일이 생성되었습니다.")
|
|
|
|
# log_level = config.get('DEFAULT', 'log_level', fallback='DEBUG')
|
|
log_level = 'INFO'
|
|
# 로그 파일 경로 설정
|
|
log_file_path = os.path.join(os.path.dirname(__file__), 'application.log')
|
|
|
|
# 로그 설정 호출
|
|
logger = setup_logger(log_file=log_file_path, log_level=log_level)
|
|
|
|
# logger = setup_logger(log_level)
|
|
|
|
app = QApplication(sys.argv)
|
|
app.setStyle('Fusion')
|
|
# app.setStyle('windows')
|
|
loop = QEventLoop(app)
|
|
asyncio.set_event_loop(loop)
|
|
|
|
license_dialog = LicenseDialog()
|
|
if license_dialog.exec_() == QDialog.Accepted:
|
|
main_window = MainWindow(config, logger)
|
|
main_window.show()
|
|
|
|
async def cleanup():
|
|
print("프로그램 종료 중...")
|
|
tasks = [task for task in asyncio.all_tasks(loop) if task is not asyncio.current_task()]
|
|
for task in tasks:
|
|
task.cancel()
|
|
results = await asyncio.gather(*tasks, return_exceptions=True)
|
|
for result in results:
|
|
if isinstance(result, Exception):
|
|
print(f"Task raised an exception: {result}")
|
|
loop.stop()
|
|
|
|
app.aboutToQuit.connect(lambda: asyncio.create_task(cleanup()))
|
|
|
|
with loop:
|
|
try:
|
|
loop.run_forever()
|
|
except KeyboardInterrupt:
|
|
pass
|
|
finally:
|
|
print("이벤트 루프 정리 중...")
|
|
if loop:
|
|
loop.close()
|
|
print("이벤트 루프 종료 완료.")
|
|
else:
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|