diff --git a/src/Main.py b/src/Main.py index f1468d8..e27a75a 100644 --- a/src/Main.py +++ b/src/Main.py @@ -15,7 +15,7 @@ from PySide6.QtWidgets import QApplication from gui.ALMainWindow import ALMainWindow from gui.resources import ALResource -from utils.AppInitializer import initializeApp +from boot.AppInitializer import initializeApp def main(): diff --git a/src/base/MsgBase.py b/src/base/MsgBase.py index d52e193..4ccf570 100644 --- a/src/base/MsgBase.py +++ b/src/base/MsgBase.py @@ -11,7 +11,7 @@ import logging import queue import datetime -from utils.LogManager import getLogger +from managers.log.LogManager import getLogger class MsgBase: diff --git a/src/utils/AppInitializer.py b/src/boot/AppInitializer.py similarity index 68% rename from src/utils/AppInitializer.py rename to src/boot/AppInitializer.py index d19ba1c..47091fd 100644 --- a/src/utils/AppInitializer.py +++ b/src/boot/AppInitializer.py @@ -11,10 +11,22 @@ import os from PySide6.QtCore import QStandardPaths, QDir -from utils.ConfigManager import instance as configInstance -from utils.LogManager import instance as logInstance +from managers.log.LogManager import instance as logInstance +from managers.config.ConfigManager import instance as configInstance +from managers.driver.WebDriverManager import instance as webdriverInstance +def initializeLogManager( +) -> bool: + + app_dir = QStandardPaths.writableLocation(QStandardPaths.StandardLocation.AppDataLocation) + log_dir = os.path.join(app_dir, "logs") + if not QDir(log_dir).exists(): + if not QDir().mkpath(log_dir): + return False + logInstance(log_dir) + return True + def initializeConfigManager( ) -> bool: @@ -37,15 +49,20 @@ def initializeConfigManager( configInstance(new_config_dir) return True -def initializeLogManager( +def initializeWebDriverManager( ) -> bool: + logger = logInstance().getLogger("AppInitializer") + app_dir = QStandardPaths.writableLocation(QStandardPaths.StandardLocation.AppDataLocation) - log_dir = os.path.join(app_dir, "logs") - if not QDir(log_dir).exists(): - if not QDir().mkpath(log_dir): + driver_dir = os.path.join(app_dir, "drivers") + logger.info("初始化驱动目录 %s", driver_dir) + if not QDir(driver_dir).exists(): + logger.error("创建驱动目录 %s 失败", driver_dir) + if not QDir().mkpath(driver_dir): + logger.error("创建驱动目录 %s 失败", driver_dir) return False - logInstance(log_dir) + webdriverInstance(driver_dir) return True def initializeApp( @@ -55,4 +72,6 @@ def initializeApp( return False if not initializeConfigManager(): return False + if not initializeWebDriverManager(): + return False return True diff --git a/src/boot/__init__.py b/src/boot/__init__.py new file mode 100644 index 0000000..393e4ca --- /dev/null +++ b/src/boot/__init__.py @@ -0,0 +1,6 @@ +""" + Boot module for the AutoLibrary project. + + Here are the classes and modules in this package: + - AppInitializer: Application initializer class. +""" \ No newline at end of file diff --git a/src/gui/ALConfigWidget.py b/src/gui/ALConfigWidget.py index 0e4c8f9..b0768ea 100644 --- a/src/gui/ALConfigWidget.py +++ b/src/gui/ALConfigWidget.py @@ -20,7 +20,7 @@ from PySide6.QtGui import ( QCloseEvent, QAction ) -import utils.ConfigManager as ConfigManager +import managers.config.ConfigManager as ConfigManager from utils.JSONReader import JSONReader from utils.JSONWriter import JSONWriter diff --git a/src/gui/ALMainWindow.py b/src/gui/ALMainWindow.py index e015d0d..f1744b5 100644 --- a/src/gui/ALMainWindow.py +++ b/src/gui/ALMainWindow.py @@ -19,7 +19,7 @@ from PySide6.QtGui import ( QTextCursor, QCloseEvent, QFont, QIcon, QDesktopServices ) -import utils.ConfigManager as ConfigManager +import managers.config.ConfigManager as ConfigManager from base.MsgBase import MsgBase diff --git a/src/gui/ALTimerTaskManageWidget.py b/src/gui/ALTimerTaskManageWidget.py index 22d2298..74060a6 100644 --- a/src/gui/ALTimerTaskManageWidget.py +++ b/src/gui/ALTimerTaskManageWidget.py @@ -25,7 +25,7 @@ from PySide6.QtGui import ( QCloseEvent ) -import utils.ConfigManager as ConfigManager +import managers.config.ConfigManager as ConfigManager import utils.TimerUtils as TimerUtils from gui.resources.ui.Ui_ALTimerTaskManageWidget import Ui_ALTimerTaskManageWidget diff --git a/src/gui/__init__.py b/src/gui/__init__.py new file mode 100644 index 0000000..c0cf4b0 --- /dev/null +++ b/src/gui/__init__.py @@ -0,0 +1,18 @@ +""" + GUI module for the AutoLibrary project. + + Here are the classes and modules in this package: + - ALMainWindow: Main window class. + - ALAboutDialog: About dialog class. + - ALConfigWidget: Configuration widget class. + - ALSeatFrame: Seat frame class. + - ALSeatMapView: Seat map view class. + - ALSeatMapTable: Seat map table class. + - ALSeatMapSelectDialog: Seat map select dialog class. + - ALTimerTaskAddDialog: Timer task add dialog class. + - ALTimerTaskHistoryDialog: Timer task history dialog class. + - ALTimerTaskManageWidget: Timer task manage widget class. + - ALUserTreeWidget: User tree widget class. + - ALMainWorkers: Main workers class. + - ALVersionInfo: Version info class. +""" \ No newline at end of file diff --git a/src/gui/resources/__init__.py b/src/gui/resources/__init__.py new file mode 100644 index 0000000..482953b --- /dev/null +++ b/src/gui/resources/__init__.py @@ -0,0 +1,3 @@ +""" + GUI resources module for the AutoLibrary project. +""" \ No newline at end of file diff --git a/src/managers/__init__.py b/src/managers/__init__.py new file mode 100644 index 0000000..6665757 --- /dev/null +++ b/src/managers/__init__.py @@ -0,0 +1,8 @@ +""" + Managers module for the AutoLibrary project. + + Here are the classes and modules in this package: + - ConfigManager: Config manager for managing configuration files. + - LogManager: Log manager for logging. + - WebDriverManager: Web driver manager for managing web drivers. +""" \ No newline at end of file diff --git a/src/utils/ConfigManager.py b/src/managers/config/ConfigManager.py similarity index 96% rename from src/utils/ConfigManager.py rename to src/managers/config/ConfigManager.py index b45f5f9..247ec42 100644 --- a/src/utils/ConfigManager.py +++ b/src/managers/config/ConfigManager.py @@ -234,11 +234,12 @@ def instance( global _config_manager_instance with _instance_lock: if _config_manager_instance is None: + if not config_dir: + raise ValueError("ConfigManager 需要配置目录参数") _config_manager_instance = ConfigManager(config_dir) else: if config_dir == "": return _config_manager_instance if getBaseConfigDir() != config_dir: - raise ValueError( - "ConfigManager 的实例已初始化,不能使用不同的配置目录。") + raise ValueError("ConfigManager 的实例已初始化,不能使用不同的配置目录。") return _config_manager_instance diff --git a/src/managers/config/__init__.py b/src/managers/config/__init__.py new file mode 100644 index 0000000..1c1c60e --- /dev/null +++ b/src/managers/config/__init__.py @@ -0,0 +1,6 @@ +""" + Config managers module for the AutoLibrary project. + + Here are the classes and modules in this package: + - ConfigManager: Config manager for managing configuration files. +""" \ No newline at end of file diff --git a/src/managers/driver/__init__.py b/src/managers/driver/__init__.py new file mode 100644 index 0000000..7e0b908 --- /dev/null +++ b/src/managers/driver/__init__.py @@ -0,0 +1,8 @@ +""" + Driver managers module for the AutoLibrary project. + + Here are the classes and modules in this package: + - WebBrowserDetector: Web browser detector class. + - WebDriverDownloader: Web driver downloader class. + - WebDriverManager: Web driver manager class. +""" \ No newline at end of file diff --git a/src/utils/LogManager.py b/src/managers/log/LogManager.py similarity index 94% rename from src/utils/LogManager.py rename to src/managers/log/LogManager.py index 8af4ae9..a931ada 100644 --- a/src/utils/LogManager.py +++ b/src/managers/log/LogManager.py @@ -174,11 +174,11 @@ def instance( with _instance_lock: if _log_manager_instance is None: if not log_dir: - raise ValueError("LogManager initialization requires log_dir parameter") + raise ValueError("LogManager 需要日志目录参数") _log_manager_instance = LogManager(log_dir) else: if log_dir and _log_manager_instance.logDir() != os.path.abspath(log_dir): - raise ValueError("LogManager instance already initialized with a different log directory") + raise ValueError("LogManager 的实例已初始化,不能使用不同的日志目录") return _log_manager_instance @@ -187,5 +187,5 @@ def getLogger( ) -> logging.Logger: if _log_manager_instance is None: - raise RuntimeError("LogManager not initialized, please call LogManager.instance(log_dir) first") + raise RuntimeError("LogManager 未初始化,请先调用 LogManager.instance(log_dir) 初始化") return _log_manager_instance.getLogger(name) diff --git a/src/managers/log/__init__.py b/src/managers/log/__init__.py new file mode 100644 index 0000000..bdf450a --- /dev/null +++ b/src/managers/log/__init__.py @@ -0,0 +1,6 @@ +""" + Log managers module for the AutoLibrary project. + + Here are the classes and modules in this package: + - LogManager: Log manager for logging. +""" \ No newline at end of file diff --git a/src/utils/__init__.py b/src/utils/__init__.py index a05bee0..4d0a056 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -2,7 +2,7 @@ Utils module for the AutoLibrary project. Here are the classes and modules in this package: - - ConfigManager: Configuration manager class for the AutoLibrary project. + - TimerUtils: Timer utils class for the AutoLibrary project. - JSONReader: JSON reader class for the AutoLibrary project. - JSONWriter: JSON writer class for the AutoLibrary project. """ \ No newline at end of file