1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-18 23:43:02 +08:00

Compare commits

..

1 Commits

Author SHA1 Message Date
KenanZhu 9f17474c1b fix(gui): optimize the config files' status management 2025-11-22 14:27:40 +08:00
2 changed files with 93 additions and 65 deletions
+90 -60
View File
@@ -32,27 +32,24 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
self, self,
parent = None, parent = None,
config_paths = { config_paths = {
"system": "system": "",
f"{QDir.toNativeSeparators(QFileInfo(sys.executable).absoluteDir().absoluteFilePath("system.json"))}", "users": ""
"users":
f"{QDir.toNativeSeparators(QFileInfo(sys.executable).absoluteDir().absoluteFilePath("users.json"))}",
} }
): ):
super().__init__(parent) super().__init__(parent)
self.setupUi(self) self.setupUi(self)
self.connectSignals()
self.modifyUi()
self.__config_paths = config_paths self.__config_paths = config_paths
self.__system_config_data = self.loadSystemConfig(self.__config_paths["system"]) self.__config_data = {"system": {}, "users": {}}
self.__users_config_data = self.loadUsersConfig(self.__config_paths["users"]) self.__seat_map_widget = None
if not self.__system_config_data:
self.initlizeDefaultConfig("system") self.modifyUi()
if not self.__users_config_data: self.connectSignals()
self.initlizeDefaultConfig("users") self.initlizeFloorRoomMap()
self.initlizeConfigToWidget("system", self.__system_config_data) self.initlizeDefaultConfigPaths()
self.initlizeConfigToWidget("users", self.__users_config_data) if not self.initlizeConfigs():
self.close()
def modifyUi( def modifyUi(
@@ -129,42 +126,16 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
def initlizeDefaultConfigPaths( def initlizeDefaultConfigPaths(
self self
) -> dict: ):
script_path = sys.executable script_path = sys.executable
script_dir = QFileInfo(script_path).absoluteDir() script_dir = QFileInfo(script_path).absoluteDir()
return { self.__default_config_paths = {
"users": QDir.toNativeSeparators(script_dir.absoluteFilePath("users.json")), "users": QDir.toNativeSeparators(script_dir.absoluteFilePath("users.json")),
"system": QDir.toNativeSeparators(script_dir.absoluteFilePath("system.json")) "system": QDir.toNativeSeparators(script_dir.absoluteFilePath("system.json"))
} }
def initlizeDefaultConfig(
self,
which: str
):
default_config_paths = self.initlizeDefaultConfigPaths()
if which == "system":
self.__system_config_data = self.defaultSystemConfig()
self.__config_paths["system"] = default_config_paths["system"]
self.saveSystemConfig(self.__config_paths["system"], self.__system_config_data)
elif which == "users":
self.__users_config_data = self.defaultUsersConfig()
self.__config_paths["users"] = default_config_paths["users"]
self.saveUsersConfig(self.__config_paths["users"], self.__users_config_data)
if which == "system":
file_type = "系统配置文件"
elif which == "users":
file_type = "用户配置文件"
QMessageBox.information(
self,
"提示 - AutoLibrary",
f"{file_type}已初始化, \n"\
f" 文件路径: {self.__config_paths[which]}"
)
def initlizeConfigToWidget( def initlizeConfigToWidget(
self, self,
which: str, which: str,
@@ -180,6 +151,63 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
self.CurrentUserConfigEdit.setText(self.__config_paths["users"]) self.CurrentUserConfigEdit.setText(self.__config_paths["users"])
def initlizeConfig(
self,
which: str
) -> bool:
msg = ""
is_success = True
if which == "system":
system_config_path = self.__config_paths[which]
if not os.path.exists(system_config_path):
self.__config_data[which] = self.defaultSystemConfig()
self.__config_paths[which] = self.__default_config_paths[which]
if self.saveSystemConfig(self.__config_paths[which], self.__config_data[which]):
msg += f"系统配置文件已初始化, 文件路径: \n{self.__config_paths[which]}\n"
else:
is_success = False
else:
self.__config_data[which] = self.loadSystemConfig(system_config_path)
if self.__config_data[which] is None:
is_success = False
elif which == "users":
users_config_path = self.__config_paths[which]
if not os.path.exists(users_config_path):
self.__config_data[which] = self.defaultUsersConfig()
self.__config_paths[which] = self.__default_config_paths[which]
if self.saveUsersConfig(self.__config_paths[which], self.__config_data[which]):
msg += f"用户配置文件已初始化, 文件路径: \n{self.__config_paths[which]}\n"
else:
is_success = False
else:
self.__config_data[which] = self.loadUsersConfig(users_config_path)
if self.__config_data[which] is None:
is_success = False
if msg:
QMessageBox.information(
self,
"提示 - AutoLibrary",
f"配置文件初始化完成: \n{msg}"
)
return is_success
def initlizeConfigs(
self
) -> bool:
is_success = True
for which in ["system", "users"]:
if not self.__config_paths[which]:
self.__config_paths[which] = self.__default_config_paths[which]
if not self.initlizeConfig(which):
is_success = False
break
self.initlizeConfigToWidget(which, self.__config_data[which])
return is_success
def defaultSystemConfig( def defaultSystemConfig(
self self
) -> dict: ) -> dict:
@@ -448,21 +476,21 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
) -> bool: ) -> bool:
if users_config_path: if users_config_path:
self.__users_config_data = self.defaultUsersConfig() self.__config_data["users"] = self.defaultUsersConfig()
for index in range(self.UserListWidget.count()): for index in range(self.UserListWidget.count()):
user_config = self.collectUserConfigFromUserListWidget(index) user_config = self.collectUserConfigFromUserListWidget(index)
if user_config: if user_config:
self.__users_config_data["users"].append(user_config) self.__config_data["users"]["users"].append(user_config)
if not self.saveUsersConfig( if not self.saveUsersConfig(
users_config_path, users_config_path,
self.__users_config_data self.__config_data["users"]
): ):
return False return False
if system_config_path: if system_config_path:
self.__system_config_data = self.collectSystemConfigFromWidget() self.__config_data["system"] = self.collectSystemConfigFromWidget()
if not self.saveSystemConfig( if not self.saveSystemConfig(
system_config_path, system_config_path,
self.__system_config_data self.__config_data["system"]
): ):
return False return False
return True return True
@@ -486,12 +514,12 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
system_config = self.loadSystemConfig(config_path) system_config = self.loadSystemConfig(config_path)
users_config = self.loadUsersConfig(config_path) users_config = self.loadUsersConfig(config_path)
if system_config is not None: if system_config is not None:
self.__system_config_data.update(system_config) self.__config_data["system"].update(system_config)
self.setSystemConfigToWidget(self.__system_config_data) self.setSystemConfigToWidget(self.__config_data["system"])
return True return True
if users_config is not None: if users_config is not None:
self.__users_config_data.update(users_config) self.__config_data["users"].update(users_config)
self.fillUsersList(self.__users_config_data) self.fillUsersList(self.__config_data["users"])
return True return True
except: except:
return False return False
@@ -707,6 +735,8 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
"", users_config_path "", users_config_path
): ):
msg += f"用户配置文件已导出到: \n'{users_config_path}'\n" msg += f"用户配置文件已导出到: \n'{users_config_path}'\n"
else:
msg += f"用户配置文件导出失败: \n'{users_config_path}'\n"
if msg: if msg:
QMessageBox.information( QMessageBox.information(
self, self,
@@ -746,21 +776,21 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
exist_files.append(users_config_path) exist_files.append(users_config_path)
reply = QMessageBox.information( reply = QMessageBox.information(
self, self,
"信息 - AutoLibrary", "提示 - AutoLibrary",
f"文件夹中已存在以下文件, 是否覆盖 ?\n{chr(10).join(exist_files)}", f"文件夹中已存在以下文件, 是否覆盖 ?\n{chr(10).join(exist_files)}",
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes | QMessageBox.No,
QMessageBox.No QMessageBox.No
) )
if reply == QMessageBox.No: if reply == QMessageBox.No:
return return
self.__system_config_data = self.defaultSystemConfig() self.__config_data["system"] = self.defaultSystemConfig()
self.__users_config_data = self.defaultUsersConfig() self.__config_data["users"] = self.defaultUsersConfig()
self.__config_paths = { self.__config_paths = {
"system": system_config_path, "system": system_config_path,
"users": users_config_path "users": users_config_path
} }
self.initlizeConfigToWidget("system", self.__system_config_data) self.initlizeConfigToWidget("system", self.__config_data["system"])
self.initlizeConfigToWidget("users", self.__users_config_data) self.initlizeConfigToWidget("users", self.__config_data["users"])
@Slot() @Slot()
def onConfirmButtonClicked( def onConfirmButtonClicked(
@@ -768,16 +798,16 @@ class ALConfigWidget(QWidget, Ui_ALConfigWidget):
): ):
if self.UserListWidget.currentItem() is not None: if self.UserListWidget.currentItem() is not None:
user = self.collectUserConfigFromUserInfoWidget() user_config = self.collectUserConfigFromUserInfoWidget()
if user: if user_config:
self.UserListWidget.currentItem().setData(Qt.UserRole, user) self.UserListWidget.currentItem().setData(Qt.UserRole, user_config)
if self.saveConfigs( if self.saveConfigs(
self.__config_paths["system"], self.__config_paths["system"],
self.__config_paths["users"] self.__config_paths["users"]
): ):
QMessageBox.information( QMessageBox.information(
self, self,
"信息 - AutoLibrary", "提示 - AutoLibrary",
"配置文件保存成功 !\n" "配置文件保存成功 !\n"
f"系统配置文件路径: \n{self.__config_paths['system']}\n"\ f"系统配置文件路径: \n{self.__config_paths['system']}\n"\
f"用户配置文件路径: \n{self.__config_paths['users']}" f"用户配置文件路径: \n{self.__config_paths['users']}"
+3 -5
View File
@@ -13,7 +13,7 @@ import time
import queue import queue
from PySide6.QtCore import ( from PySide6.QtCore import (
Qt, Signal, Slot, QDir, QFileInfo, QTimer, QThread Qt, Signal, Slot, QTimer, QThread
) )
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QMainWindow, QMenu QMainWindow, QMenu
@@ -130,10 +130,8 @@ class ALMainWindow(QMainWindow, Ui_ALMainWindow):
self.__input_queue = queue.Queue() self.__input_queue = queue.Queue()
self.__output_queue = queue.Queue() self.__output_queue = queue.Queue()
self.__config_paths = { self.__config_paths = {
"system": "system": "",
f"{QDir.toNativeSeparators(QFileInfo(sys.executable).absoluteDir().absoluteFilePath("system.json"))}", "users": "",
"users":
f"{QDir.toNativeSeparators(QFileInfo(sys.executable).absoluteDir().absoluteFilePath("users.json"))}",
} }
self.__alConfigWidget = None self.__alConfigWidget = None
self.__auto_lib_thread = None self.__auto_lib_thread = None