mirror of
https://github.com/KenanZhu/AutoLibrary.git
synced 2026-06-18 23:43:02 +08:00
fix(gui): optimize the config files' status management
This commit is contained in:
+90
-60
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user