From 67c41ab3ee537dd865cbe66f0bafb6ce1515840d Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Thu, 31 Jul 2025 01:01:30 +0800 Subject: [PATCH] =?UTF-8?q?chore(core):=20=E4=BC=98=E5=8C=96=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E9=98=9F=E5=88=97=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 209 ++++++------ app/core/task_manager.py | 16 +- app/core/timer.py | 6 +- app/services/security.py | 18 +- app/ui/dispatch_center.py | 14 +- app/ui/main_window.py | 24 +- app/ui/queue_manager.py | 315 ++++-------------- .../{member_manager.py => script_manager.py} | 274 +++++++-------- resources/version.json | 7 +- 9 files changed, 342 insertions(+), 541 deletions(-) rename app/ui/{member_manager.py => script_manager.py} (95%) diff --git a/app/core/config.py b/app/core/config.py index b27c8ba..f9333c6 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -276,78 +276,49 @@ class QueueConfig(LQConfig): super().__init__() self.queueSet_Name = ConfigItem("QueueSet", "Name", "") - self.queueSet_Enabled = ConfigItem( - "QueueSet", "Enabled", False, BoolValidator() + self.queueSet_TimeEnabled = ConfigItem( + "QueueSet", "TimeEnabled", False, BoolValidator() ) self.queueSet_AfterAccomplish = OptionsConfigItem( "QueueSet", "AfterAccomplish", "NoAction", OptionsValidator( - ["NoAction", "KillSelf", "Sleep", "Hibernate", "Shutdown"] + [ + "NoAction", + "KillSelf", + "Sleep", + "Hibernate", + "Shutdown", + "ShutdownForce", + ] ), ) - self.time_TimeEnabled_0 = ConfigItem( - "Time", "TimeEnabled_0", False, BoolValidator() - ) - self.time_TimeSet_0 = ConfigItem("Time", "TimeSet_0", "00:00") + self.config_item_dict: dict[str, Dict[str, ConfigItem]] = { + "Queue": {}, + "Time": {}, + } - self.time_TimeEnabled_1 = ConfigItem( - "Time", "TimeEnabled_1", False, BoolValidator() - ) - self.time_TimeSet_1 = ConfigItem("Time", "TimeSet_1", "00:00") + for i in range(10): - self.time_TimeEnabled_2 = ConfigItem( - "Time", "TimeEnabled_2", False, BoolValidator() - ) - self.time_TimeSet_2 = ConfigItem("Time", "TimeSet_2", "00:00") + self.config_item_dict["Time"][f"Enabled_{i}"] = ConfigItem( + "Time", f"Enabled_{i}", False, BoolValidator() + ) + self.config_item_dict["Time"][f"Set_{i}"] = ConfigItem( + "Time", f"Set_{i}", "00:00" + ) + self.config_item_dict["Queue"][f"Script_{i}"] = OptionsConfigItem( + "Queue", f"Script_{i}", "禁用" + ) - self.time_TimeEnabled_3 = ConfigItem( - "Time", "TimeEnabled_3", False, BoolValidator() - ) - self.time_TimeSet_3 = ConfigItem("Time", "TimeSet_3", "00:00") - - self.time_TimeEnabled_4 = ConfigItem( - "Time", "TimeEnabled_4", False, BoolValidator() - ) - self.time_TimeSet_4 = ConfigItem("Time", "TimeSet_4", "00:00") - - self.time_TimeEnabled_5 = ConfigItem( - "Time", "TimeEnabled_5", False, BoolValidator() - ) - self.time_TimeSet_5 = ConfigItem("Time", "TimeSet_5", "00:00") - - self.time_TimeEnabled_6 = ConfigItem( - "Time", "TimeEnabled_6", False, BoolValidator() - ) - self.time_TimeSet_6 = ConfigItem("Time", "TimeSet_6", "00:00") - - self.time_TimeEnabled_7 = ConfigItem( - "Time", "TimeEnabled_7", False, BoolValidator() - ) - self.time_TimeSet_7 = ConfigItem("Time", "TimeSet_7", "00:00") - - self.time_TimeEnabled_8 = ConfigItem( - "Time", "TimeEnabled_8", False, BoolValidator() - ) - self.time_TimeSet_8 = ConfigItem("Time", "TimeSet_8", "00:00") - - self.time_TimeEnabled_9 = ConfigItem( - "Time", "TimeEnabled_9", False, BoolValidator() - ) - self.time_TimeSet_9 = ConfigItem("Time", "TimeSet_9", "00:00") - - self.queue_Member_1 = OptionsConfigItem("Queue", "Member_1", "禁用") - self.queue_Member_2 = OptionsConfigItem("Queue", "Member_2", "禁用") - self.queue_Member_3 = OptionsConfigItem("Queue", "Member_3", "禁用") - self.queue_Member_4 = OptionsConfigItem("Queue", "Member_4", "禁用") - self.queue_Member_5 = OptionsConfigItem("Queue", "Member_5", "禁用") - self.queue_Member_6 = OptionsConfigItem("Queue", "Member_6", "禁用") - self.queue_Member_7 = OptionsConfigItem("Queue", "Member_7", "禁用") - self.queue_Member_8 = OptionsConfigItem("Queue", "Member_8", "禁用") - self.queue_Member_9 = OptionsConfigItem("Queue", "Member_9", "禁用") - self.queue_Member_10 = OptionsConfigItem("Queue", "Member_10", "禁用") + setattr( + self, f"Time_Enabled_{i}", self.config_item_dict["Time"][f"Enabled_{i}"] + ) + setattr(self, f"Time_Set_{i}", self.config_item_dict["Time"][f"Set_{i}"]) + setattr( + self, f"Queue_Script_{i}", self.config_item_dict["Queue"][f"Script_{i}"] + ) self.Data_LastProxyTime = ConfigItem( "Data", "LastProxyTime", "2000-01-01 00:00:00" @@ -713,7 +684,7 @@ class GeneralSubConfig(LQConfig): class AppConfig(GlobalConfig): - VERSION = "4.4.1.4" + VERSION = "4.4.1.5" stage_refreshed = Signal() PASSWORD_refreshed = Signal() @@ -750,7 +721,9 @@ class AppConfig(GlobalConfig): self.if_ignore_silence = False self.if_database_opened = False - self.search_member() + self.initialize() + + self.search_script() self.search_queue() parser = argparse.ArgumentParser( @@ -766,12 +739,15 @@ class AppConfig(GlobalConfig): parser.add_argument( "--config", nargs="+", - choices=list(self.member_dict.keys()) + list(self.queue_dict.keys()), + choices=list(self.script_dict.keys()) + list(self.queue_dict.keys()), help="指定需要运行哪些配置项", ) self.args = parser.parse_args() - self.initialize() + logger.info( + f"运行模式: {'图形化界面' if self.args.mode == 'gui' else '命令行界面'},配置项: {self.args.config if self.args.config else '启动时运行的调度队列'}", + module="配置管理", + ) def initialize(self) -> None: """初始化程序配置管理模块""" @@ -818,14 +794,8 @@ class AppConfig(GlobalConfig): logger.info("AUTO_MAA 主程序", module="配置管理") logger.info(f"版本号: v{self.VERSION}", module="配置管理") logger.info(f"根目录: {self.app_path}", module="配置管理") - logger.info( - f"运行模式: {'图形化界面' if self.args.mode == 'gui' else '命令行界面'}", - module="配置管理", - ) logger.info("===================================", module="配置管理") - logger.info("日志记录器初始化完成", module="配置管理") - def check_data(self) -> None: """检查用户数据文件并处理数据文件版本更新""" @@ -834,7 +804,7 @@ class AppConfig(GlobalConfig): db = sqlite3.connect(self.database_path) cur = db.cursor() cur.execute("CREATE TABLE version(v text)") - cur.execute("INSERT INTO version VALUES(?)", ("v1.7",)) + cur.execute("INSERT INTO version VALUES(?)", ("v1.8",)) db.commit() cur.close() db.close() @@ -845,7 +815,7 @@ class AppConfig(GlobalConfig): cur.execute("SELECT * FROM version WHERE True") version = cur.fetchall() - if version[0][0] != "v1.7": + if version[0][0] != "v1.8": logger.info("数据文件版本更新开始", module="配置管理") if_streaming = False # v1.4-->v1.5 @@ -975,7 +945,6 @@ class AppConfig(GlobalConfig): cur.execute("DELETE FROM version WHERE v = ?", ("v1.4",)) cur.execute("INSERT INTO version VALUES(?)", ("v1.5",)) db.commit() - # v1.5-->v1.6 if version[0][0] == "v1.5" or if_streaming: logger.info("数据文件版本更新:v1.5-->v1.6", module="配置管理") @@ -1077,6 +1046,39 @@ class AppConfig(GlobalConfig): cur.execute("DELETE FROM version WHERE v = ?", ("v1.6",)) cur.execute("INSERT INTO version VALUES(?)", ("v1.7",)) db.commit() + # v1.7-->v1.8 + if version[0][0] == "v1.7" or if_streaming: + logger.info("数据文件版本更新:v1.7-->v1.8", module="配置管理") + if_streaming = True + + if (self.app_path / "config/QueueConfig").exists(): + for QueueConfig in (self.app_path / "config/QueueConfig").glob( + "*.json" + ): + with QueueConfig.open(encoding="utf-8") as f: + queue_config = json.load(f) + + queue_config["QueueSet"]["TimeEnabled"] = queue_config[ + "QueueSet" + ]["Enabled"] + + for i in range(10): + queue_config["Queue"][f"Script_{i}"] = queue_config[ + "Queue" + ][f"Member_{i + 1}"] + queue_config["Time"][f"Enabled_{i}"] = queue_config["Time"][ + f"TimeEnabled_{i}" + ] + queue_config["Time"][f"Set_{i}"] = queue_config["Time"][ + f"TimeSet_{i}" + ] + + with QueueConfig.open("w", encoding="utf-8") as f: + json.dump(queue_config, f, ensure_ascii=False, indent=4) + + cur.execute("DELETE FROM version WHERE v = ?", ("v1.7",)) + cur.execute("INSERT INTO version VALUES(?)", ("v1.8",)) + db.commit() cur.close() db.close() @@ -1176,11 +1178,11 @@ class AppConfig(GlobalConfig): dt = dt - timedelta(days=1) return dt.date() - def search_member(self) -> None: + def search_script(self) -> None: """更新脚本实例配置信息""" logger.info("开始搜索并读入脚本实例配置", module="配置管理") - self.member_dict: Dict[ + self.script_dict: Dict[ str, Dict[ str, @@ -1200,7 +1202,7 @@ class AppConfig(GlobalConfig): maa_config.load(maa_dir / "config.json", maa_config) maa_config.save() - self.member_dict[maa_dir.name] = { + self.script_dict[maa_dir.name] = { "Type": "Maa", "Path": maa_dir, "Config": maa_config, @@ -1214,19 +1216,19 @@ class AppConfig(GlobalConfig): general_config.load(general_dir / "config.json", general_config) general_config.save() - self.member_dict[general_dir.name] = { + self.script_dict[general_dir.name] = { "Type": "General", "Path": general_dir, "Config": general_config, "SubData": None, } - self.member_dict = dict( - sorted(self.member_dict.items(), key=lambda x: int(x[0][3:])) + self.script_dict = dict( + sorted(self.script_dict.items(), key=lambda x: int(x[0][3:])) ) logger.success( - f"脚本实例配置搜索完成,共找到 {len(self.member_dict)} 个实例", + f"脚本实例配置搜索完成,共找到 {len(self.script_dict)} 个实例", module="配置管理", ) @@ -1241,7 +1243,7 @@ class AppConfig(GlobalConfig): logger.info(f"开始搜索并读入 MAA 脚本实例 {name} 的用户信息", module="配置管理") user_dict: Dict[str, Dict[str, Union[Path, MaaUserConfig]]] = {} - for user_dir in (Config.member_dict[name]["Path"] / "UserData").iterdir(): + for user_dir in (Config.script_dict[name]["Path"] / "UserData").iterdir(): if user_dir.is_dir(): user_config = MaaUserConfig() @@ -1250,7 +1252,7 @@ class AppConfig(GlobalConfig): user_dict[user_dir.stem] = {"Path": user_dir, "Config": user_config} - self.member_dict[name]["UserData"] = dict( + self.script_dict[name]["UserData"] = dict( sorted(user_dict.items(), key=lambda x: int(x[0][3:])) ) @@ -1272,7 +1274,7 @@ class AppConfig(GlobalConfig): ) user_dict: Dict[str, Dict[str, Union[Path, GeneralSubConfig]]] = {} - for sub_dir in (Config.member_dict[name]["Path"] / "SubData").iterdir(): + for sub_dir in (Config.script_dict[name]["Path"] / "SubData").iterdir(): if sub_dir.is_dir(): sub_config = GeneralSubConfig() @@ -1281,7 +1283,7 @@ class AppConfig(GlobalConfig): user_dict[sub_dir.stem] = {"Path": sub_dir, "Config": sub_config} - self.member_dict[name]["SubData"] = dict( + self.script_dict[name]["SubData"] = dict( sorted(user_dict.items(), key=lambda x: int(x[0][3:])) ) @@ -1359,26 +1361,17 @@ class AppConfig(GlobalConfig): for queue in self.queue_dict.values(): - if queue["Config"].get(queue["Config"].queue_Member_1) == old: - queue["Config"].set(queue["Config"].queue_Member_1, new) - if queue["Config"].get(queue["Config"].queue_Member_2) == old: - queue["Config"].set(queue["Config"].queue_Member_2, new) - if queue["Config"].get(queue["Config"].queue_Member_3) == old: - queue["Config"].set(queue["Config"].queue_Member_3, new) - if queue["Config"].get(queue["Config"].queue_Member_4) == old: - queue["Config"].set(queue["Config"].queue_Member_4, new) - if queue["Config"].get(queue["Config"].queue_Member_5) == old: - queue["Config"].set(queue["Config"].queue_Member_5, new) - if queue["Config"].get(queue["Config"].queue_Member_6) == old: - queue["Config"].set(queue["Config"].queue_Member_6, new) - if queue["Config"].get(queue["Config"].queue_Member_7) == old: - queue["Config"].set(queue["Config"].queue_Member_7, new) - if queue["Config"].get(queue["Config"].queue_Member_8) == old: - queue["Config"].set(queue["Config"].queue_Member_8, new) - if queue["Config"].get(queue["Config"].queue_Member_9) == old: - queue["Config"].set(queue["Config"].queue_Member_9, new) - if queue["Config"].get(queue["Config"].queue_Member_10) == old: - queue["Config"].set(queue["Config"].queue_Member_10, new) + for i in range(10): + + if ( + queue["Config"].get( + queue["Config"].config_item_dict["Queue"][f"Script_{i}"] + ) + == old + ): + queue["Config"].set( + queue["Config"].config_item_dict["Queue"][f"Script_{i}"], new + ) logger.success(f"调度队列参数修改完成:{old} -> {new}", module="配置管理") @@ -1392,9 +1385,9 @@ class AppConfig(GlobalConfig): logger.info(f"开始修改计划表参数:{old} -> {new}", module="配置管理") - for member in self.member_dict.values(): + for script in self.script_dict.values(): - for user in member["UserData"].values(): + for user in script["UserData"].values(): if user["Config"].get(user["Config"].Info_StageMode) == old: user["Config"].set(user["Config"].Info_StageMode, new) @@ -1417,7 +1410,7 @@ class AppConfig(GlobalConfig): for user, info in user_data.items(): - user_config = self.member_dict[name]["UserData"][user]["Config"] + user_config = self.script_dict[name]["UserData"][user]["Config"] user_config.set( user_config.Info_RemainedDay, info["Config"]["Info"]["RemainedDay"] @@ -1464,7 +1457,7 @@ class AppConfig(GlobalConfig): for sub, info in sub_data.items(): - sub_config = self.member_dict[name]["SubData"][sub]["Config"] + sub_config = self.script_dict[name]["SubData"][sub]["Config"] sub_config.set( sub_config.Info_RemainedDay, info["Config"]["Info"]["RemainedDay"] diff --git a/app/core/task_manager.py b/app/core/task_manager.py index 566b3ad..c9d8a41 100644 --- a/app/core/task_manager.py +++ b/app/core/task_manager.py @@ -81,7 +81,7 @@ class Task(QThread): self.task = MaaManager( self.mode, - Config.member_dict[self.name], + Config.script_dict[self.name], (None if "全局" in self.mode else self.info["SetMaaInfo"]["Path"]), ) self.task.check_maa_version.connect(self.check_maa_version.emit) @@ -104,7 +104,7 @@ class Task(QThread): self.task = GeneralManager( self.mode, - Config.member_dict[self.name], + Config.script_dict[self.name], self.info["SetSubInfo"]["Path"], ) self.task.push_info_bar.connect(self.push_info_bar.emit) @@ -126,8 +126,8 @@ class Task(QThread): [ ( value - if Config.member_dict[value]["Config"].get_name() == "" - else f"{value} - {Config.member_dict[value]["Config"].get_name()}" + if Config.script_dict[value]["Config"].get_name() == "" + else f"{value} - {Config.script_dict[value]["Config"].get_name()}" ), "等待", value, @@ -165,11 +165,11 @@ class Task(QThread): logger.info(f"任务开始:{task[0]}", module=f"业务 {self.name}") self.push_info_bar.emit("info", "任务开始", task[0], 3000) - if Config.member_dict[task[2]]["Type"] == "Maa": + if Config.script_dict[task[2]]["Type"] == "Maa": self.task = MaaManager( self.mode[0:4], - Config.member_dict[task[2]], + Config.script_dict[task[2]], ) self.task.check_maa_version.connect(self.check_maa_version.emit) @@ -186,11 +186,11 @@ class Task(QThread): lambda log: self.task_accomplish(task[2], log) ) - elif Config.member_dict[task[2]]["Type"] == "General": + elif Config.script_dict[task[2]]["Type"] == "General": self.task = GeneralManager( self.mode[0:4], - Config.member_dict[task[2]], + Config.script_dict[task[2]], ) self.task.question.connect(self.question.emit) diff --git a/app/core/timer.py b/app/core/timer.py index 690c460..c8a8e62 100644 --- a/app/core/timer.py +++ b/app/core/timer.py @@ -79,15 +79,15 @@ class _MainTimer(QObject): for name, info in Config.queue_dict.items(): - if not info["Config"].get(info["Config"].queueSet_Enabled): + if not info["Config"].get(info["Config"].queueSet_TimeEnabled): continue data = info["Config"].toDict() time_set = [ - data["Time"][f"TimeSet_{_}"] + data["Time"][f"Set_{_}"] for _ in range(10) - if data["Time"][f"TimeEnabled_{_}"] + if data["Time"][f"Enabled_{_}"] ] # 按时间调起代理任务 curtime = datetime.now().strftime("%Y-%m-%d %H:%M") diff --git a/app/services/security.py b/app/services/security.py index b811f95..d597f60 100644 --- a/app/services/security.py +++ b/app/services/security.py @@ -167,22 +167,22 @@ class CryptoHandler: :type PASSWORD_new: str """ - for member in Config.member_dict.values(): + for script in Config.script_dict.values(): # 使用旧管理密钥解密 - if member["Type"] == "Maa": - for user in member["UserData"].values(): + if script["Type"] == "Maa": + for user in script["UserData"].values(): user["Password"] = self.AUTO_decryptor( user["Config"].get(user["Config"].Info_Password), PASSWORD_old ) self.get_PASSWORD(PASSWORD_new) - for member in Config.member_dict.values(): + for script in Config.script_dict.values(): # 使用新管理密钥重新加密 - if member["Type"] == "Maa": - for user in member["UserData"].values(): + if script["Type"] == "Maa": + for user in script["UserData"].values(): user["Config"].set( user["Config"].Info_Password, self.AUTO_encryptor(user["Password"]), @@ -200,10 +200,10 @@ class CryptoHandler: self.get_PASSWORD(PASSWORD_new) - for member in Config.member_dict.values(): + for script in Config.script_dict.values(): - if member["Type"] == "Maa": - for user in member["UserData"].values(): + if script["Type"] == "Maa": + for user in script["UserData"].values(): user["Config"].set( user["Config"].Info_Password, self.AUTO_encryptor("数据已重置") ) diff --git a/app/ui/dispatch_center.py b/app/ui/dispatch_center.py index 08d7d2a..8e9ce40 100644 --- a/app/ui/dispatch_center.py +++ b/app/ui/dispatch_center.py @@ -246,7 +246,7 @@ class DispatchCenter(QWidget): userData=name, ) - for name, info in Config.member_dict.items(): + for name, info in Config.script_dict.items(): self.script_list["主调度台"].top_bar.object.addItem( ( f"实例 - {info['Type']}" @@ -258,7 +258,7 @@ class DispatchCenter(QWidget): if len(Config.queue_dict) == 1: self.script_list["主调度台"].top_bar.object.setCurrentIndex(0) - elif len(Config.member_dict) == 1: + elif len(Config.script_dict) == 1: self.script_list["主调度台"].top_bar.object.setCurrentIndex( len(Config.queue_dict) ) @@ -278,7 +278,7 @@ class DispatchCenter(QWidget): "Sleep": "睡眠", "Hibernate": "休眠", "Shutdown": "关机", - "ShutdownForce": "关机(强制)" + "ShutdownForce": "关机(强制)", } self.power_combox.currentIndexChanged.disconnect() self.power_combox.setCurrentText(mode_book[Config.power_sign]) @@ -317,7 +317,7 @@ class DispatchCenter(QWidget): ) data_list.append(name) - for name, info in Config.member_dict.items(): + for name, info in Config.script_dict.items(): if name in Config.running_list: continue text_list.append( @@ -365,7 +365,7 @@ class DispatchCenter(QWidget): TaskManager.add_task( "自动代理_新调度台", f"自定义队列 - {choice.input[0].currentData()}", - {"Queue": {"Member_1": choice.input[0].currentData()}}, + {"Queue": {"Script_0": choice.input[0].currentData()}}, ) class DispatchBox(QWidget): @@ -455,7 +455,7 @@ class DispatchCenter(QWidget): if ( "脚本" in self.object.currentData() - and Config.member_dict[self.object.currentData()]["Type"] + and Config.script_dict[self.object.currentData()]["Type"] == "General" and self.mode.currentData() == "人工排查" ): @@ -484,7 +484,7 @@ class DispatchCenter(QWidget): TaskManager.add_task( f"{self.mode.currentText()}_主调度台", "自定义队列", - {"Queue": {"Member_1": self.object.currentData()}}, + {"Queue": {"Script_0": self.object.currentData()}}, ) class DispatchInfoCard(HeaderCardWidget): diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 3f37120..fc7fa18 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -40,14 +40,12 @@ from qfluentwidgets import ( ) from PySide6.QtGui import QIcon, QCloseEvent from PySide6.QtCore import QTimer -from datetime import datetime, timedelta -import shutil import darkdetect from app.core import Config, logger, TaskManager, MainTimer, MainInfoBar, SoundPlayer from app.services import Notify, Crypto, System from .home import Home -from .member_manager import MemberManager +from .script_manager import ScriptManager from .plan_manager import PlanManager from .queue_manager import QueueManager from .dispatch_center import DispatchCenter @@ -84,7 +82,7 @@ class AUTO_MAA(MSFluentWindow): logger.info("正在创建各子窗口", module="主窗口") self.home = Home(self) self.plan_manager = PlanManager(self) - self.member_manager = MemberManager(self) + self.script_manager = ScriptManager(self) self.queue_manager = QueueManager(self) self.dispatch_center = DispatchCenter(self) self.history = History(self) @@ -98,7 +96,7 @@ class AUTO_MAA(MSFluentWindow): NavigationItemPosition.TOP, ) self.addSubInterface( - self.member_manager, + self.script_manager, FluentIcon.ROBOT, "脚本管理", FluentIcon.ROBOT, @@ -190,7 +188,7 @@ class AUTO_MAA(MSFluentWindow): self.set_min_method() # 绑定各组件信号 - Config.sub_info_changed.connect(self.member_manager.refresh_dashboard) + Config.sub_info_changed.connect(self.script_manager.refresh_dashboard) Config.power_sign_changed.connect(self.dispatch_center.update_power_sign) TaskManager.create_gui.connect(self.dispatch_center.add_board) TaskManager.connect_gui.connect(self.dispatch_center.connect_main_board) @@ -408,16 +406,16 @@ class AUTO_MAA(MSFluentWindow): Config.queue_dict["调度队列_1"]["Config"].toDict(), ) - for config in [_ for _ in Config.args.config if _ in Config.member_dict]: + for config in [_ for _ in Config.args.config if _ in Config.script_dict]: TaskManager.add_task( "自动代理_新调度台", "自定义队列", - {"Queue": {"Member_1": config}}, + {"Queue": {"Script_0": config}}, ) if not any( - _ in (list(Config.member_dict.keys()) + list(Config.queue_dict.keys())) + _ in (list(Config.script_dict.keys()) + list(Config.queue_dict.keys())) for _ in Config.args.config ): @@ -449,11 +447,11 @@ class AUTO_MAA(MSFluentWindow): Config.queue_dict["调度队列_1"]["Config"].toDict(), ) - elif "脚本_1" in Config.member_dict: + elif "脚本_1" in Config.script_dict: logger.info("自动添加任务:脚本_1", module="主窗口") TaskManager.add_task( - "自动代理_主调度台", "自定义队列", {"Queue": {"Member_1": "脚本_1"}} + "自动代理_主调度台", "自定义队列", {"Queue": {"Script_0": "脚本_1"}} ) else: @@ -471,9 +469,9 @@ class AUTO_MAA(MSFluentWindow): """切换界面时任务""" if index == 1: - self.member_manager.reload_plan_name() + self.script_manager.reload_plan_name() elif index == 3: - self.queue_manager.reload_member_name() + self.queue_manager.reload_script_name() elif index == 4: self.dispatch_center.pivot.setCurrentItem("主调度台") self.dispatch_center.update_top_bar() diff --git a/app/ui/queue_manager.py b/app/ui/queue_manager.py index a022abd..d6d477b 100644 --- a/app/ui/queue_manager.py +++ b/app/ui/queue_manager.py @@ -39,7 +39,7 @@ from qfluentwidgets import ( HeaderCardWidget, CommandBar, ) -from typing import List +from typing import List, Dict from app.core import QueueConfig, Config, MainInfoBar, SoundPlayer, logger from .Widget import ( @@ -251,12 +251,12 @@ class QueueManager(QWidget): logger.success(f"{name} 右移成功", module="队列管理") MainInfoBar.push_info_bar("success", "操作成功", f"右移 {name}", 3000) - def reload_member_name(self): - """刷新调度队列成员""" + def reload_script_name(self): + """刷新调度队列脚本成员名称""" - # 获取成员列表 - member_list = [ - ["禁用"] + [_ for _ in Config.member_dict.keys()], + # 获取脚本成员列表 + script_list = [ + ["禁用"] + [_ for _ in Config.script_dict.keys()], ["未启用"] + [ ( @@ -264,41 +264,12 @@ class QueueManager(QWidget): if v["Config"].get_name() == "" else f"{k} - {v["Config"].get_name()}" ) - for k, v in Config.member_dict.items() + for k, v in Config.script_dict.items() ], ] for script in self.queue_manager.script_list: - - script.task.card_Member_1.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_2.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_3.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_4.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_5.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_6.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_7.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_8.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_9.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) - script.task.card_Member_10.reLoadOptions( - value=member_list[0], texts=member_list[1] - ) + for card in script.task.card_dict.values(): + card.reLoadOptions(value=script_list[0], texts=script_list[1]) class QueueSettingBox(QWidget): @@ -432,11 +403,11 @@ class QueueManager(QWidget): parent=self, ) self.card_Enable = SwitchSettingCard( - icon=FluentIcon.HOME, - title="状态", - content="调度队列状态,仅启用时会执行定时任务", + icon=FluentIcon.CHECKBOX, + title="定时运行状态", + content="调度队列定时运行状态,仅启用时会执行定时任务", qconfig=self.config, - configItem=self.config.queueSet_Enabled, + configItem=self.config.queueSet_TimeEnabled, parent=self, ) self.card_AfterAccomplish = ComboBoxSettingCard( @@ -449,6 +420,7 @@ class QueueManager(QWidget): "睡眠(win系统需禁用休眠)", "休眠", "关机", + "关机(强制)", ], qconfig=self.config, configItem=self.config.queueSet_AfterAccomplish, @@ -476,107 +448,29 @@ class QueueManager(QWidget): Layout_2 = QVBoxLayout(widget_2) Layout = QHBoxLayout() - self.card_Time_0 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 1", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_0, - configItem_time=self.config.time_TimeSet_0, - parent=self, - ) - self.card_Time_1 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 2", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_1, - configItem_time=self.config.time_TimeSet_1, - parent=self, - ) - self.card_Time_2 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 3", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_2, - configItem_time=self.config.time_TimeSet_2, - parent=self, - ) - self.card_Time_3 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 4", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_3, - configItem_time=self.config.time_TimeSet_3, - parent=self, - ) - self.card_Time_4 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 5", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_4, - configItem_time=self.config.time_TimeSet_4, - parent=self, - ) - self.card_Time_5 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 6", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_5, - configItem_time=self.config.time_TimeSet_5, - parent=self, - ) - self.card_Time_6 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 7", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_6, - configItem_time=self.config.time_TimeSet_6, - parent=self, - ) - self.card_Time_7 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 8", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_7, - configItem_time=self.config.time_TimeSet_7, - parent=self, - ) - self.card_Time_8 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 9", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_8, - configItem_time=self.config.time_TimeSet_8, - parent=self, - ) - self.card_Time_9 = TimeEditSettingCard( - icon=FluentIcon.STOP_WATCH, - title="定时 10", - content=None, - qconfig=self.config, - configItem_bool=self.config.time_TimeEnabled_9, - configItem_time=self.config.time_TimeSet_9, - parent=self, - ) + self.card_dict: Dict[str, TimeEditSettingCard] = {} + + for i in range(10): + + self.card_dict[f"Time_{i}"] = TimeEditSettingCard( + icon=FluentIcon.STOP_WATCH, + title=f"定时 {i + 1}", + content=None, + qconfig=self.config, + configItem_bool=self.config.config_item_dict["Time"][ + f"Enabled_{i}" + ], + configItem_time=self.config.config_item_dict["Time"][ + f"Set_{i}" + ], + parent=self, + ) + + if i < 5: + Layout_1.addWidget(self.card_dict[f"Time_{i}"]) + else: + Layout_2.addWidget(self.card_dict[f"Time_{i}"]) - Layout_1.addWidget(self.card_Time_0) - Layout_1.addWidget(self.card_Time_1) - Layout_1.addWidget(self.card_Time_2) - Layout_1.addWidget(self.card_Time_3) - Layout_1.addWidget(self.card_Time_4) - Layout_2.addWidget(self.card_Time_5) - Layout_2.addWidget(self.card_Time_6) - Layout_2.addWidget(self.card_Time_7) - Layout_2.addWidget(self.card_Time_8) - Layout_2.addWidget(self.card_Time_9) Layout.addWidget(widget_1) Layout.addWidget(widget_2) @@ -590,8 +484,8 @@ class QueueManager(QWidget): self.setTitle("任务队列") self.config = config - member_list = [ - ["禁用"] + [_ for _ in Config.member_dict.keys()], + script_list = [ + ["禁用"] + [_ for _ in Config.script_dict.keys()], ["未启用"] + [ ( @@ -599,121 +493,32 @@ class QueueManager(QWidget): if v["Config"].get_name() == "" else f"{k} - {v["Config"].get_name()}" ) - for k, v in Config.member_dict.items() + for k, v in Config.script_dict.items() ], ] - self.card_Member_1 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 1", - content="第一个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_1, - parent=self, - ) - self.card_Member_2 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 2", - content="第二个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_2, - parent=self, - ) - self.card_Member_3 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 3", - content="第三个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_3, - parent=self, - ) - self.card_Member_4 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 4", - content="第四个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_4, - parent=self, - ) - self.card_Member_5 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 5", - content="第五个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_5, - parent=self, - ) - self.card_Member_6 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 6", - content="第六个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_6, - parent=self, - ) - self.card_Member_7 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 7", - content="第七个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_7, - parent=self, - ) - self.card_Member_8 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 8", - content="第八个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_8, - parent=self, - ) - self.card_Member_9 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 9", - content="第九个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_9, - parent=self, - ) - self.card_Member_10 = NoOptionComboBoxSettingCard( - icon=FluentIcon.APPLICATION, - title="任务实例 10", - content="第十个调起的脚本任务实例", - value=member_list[0], - texts=member_list[1], - qconfig=self.config, - configItem=self.config.queue_Member_10, - parent=self, - ) + self.card_dict: Dict[ + str, + NoOptionComboBoxSettingCard, + ] = {} Layout = QVBoxLayout() - Layout.addWidget(self.card_Member_1) - Layout.addWidget(self.card_Member_2) - Layout.addWidget(self.card_Member_3) - Layout.addWidget(self.card_Member_4) - Layout.addWidget(self.card_Member_5) - Layout.addWidget(self.card_Member_6) - Layout.addWidget(self.card_Member_7) - Layout.addWidget(self.card_Member_8) - Layout.addWidget(self.card_Member_9) - Layout.addWidget(self.card_Member_10) + + for i in range(10): + + self.card_dict[f"Script_{i}"] = NoOptionComboBoxSettingCard( + icon=FluentIcon.APPLICATION, + title=f"任务实例 {i + 1}", + content=f"第{i + 1}个调起的脚本任务实例", + value=script_list[0], + texts=script_list[1], + qconfig=self.config, + configItem=self.config.config_item_dict["Queue"][ + f"Script_{i}" + ], + parent=self, + ) + + Layout.addWidget(self.card_dict[f"Script_{i}"]) self.viewLayout.addLayout(Layout) diff --git a/app/ui/member_manager.py b/app/ui/script_manager.py similarity index 95% rename from app/ui/member_manager.py rename to app/ui/script_manager.py index 2d6504c..51578b2 100644 --- a/app/ui/member_manager.py +++ b/app/ui/script_manager.py @@ -99,7 +99,7 @@ from .Widget import ( ) -class MemberManager(QWidget): +class ScriptManager(QWidget): """脚本管理父界面""" def __init__(self, parent=None): @@ -110,22 +110,22 @@ class MemberManager(QWidget): layout = QVBoxLayout(self) self.tools = CommandBar() - self.member_manager = self.MemberSettingBox(self) + self.script_manager = self.ScriptSettingBox(self) # 逐个添加动作 self.tools.addActions( [ - Action(FluentIcon.ADD_TO, "新建脚本实例", triggered=self.add_member), + Action(FluentIcon.ADD_TO, "新建脚本实例", triggered=self.add_script), Action( - FluentIcon.REMOVE_FROM, "删除脚本实例", triggered=self.del_member + FluentIcon.REMOVE_FROM, "删除脚本实例", triggered=self.del_script ), ] ) self.tools.addSeparator() self.tools.addActions( [ - Action(FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_member), - Action(FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_member), + Action(FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_script), + Action(FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_script), ] ) self.tools.addSeparator() @@ -133,7 +133,7 @@ class MemberManager(QWidget): Action( FluentIcon.DOWNLOAD, "脚本下载器", - triggered=self.member_downloader, + triggered=self.script_downloader, ) ) self.tools.addSeparator() @@ -146,9 +146,9 @@ class MemberManager(QWidget): self.tools.addAction(self.key) layout.addWidget(self.tools) - layout.addWidget(self.member_manager) + layout.addWidget(self.script_manager) - def add_member(self): + def add_script(self): """添加一个脚本实例""" choice = ComboBoxMessageBox( @@ -165,7 +165,7 @@ class MemberManager(QWidget): if choice.input[0].currentText() == "MAA": - index = len(Config.member_dict) + 1 + index = len(Config.script_dict) + 1 # 初始化 MAA 配置 maa_config = MaaConfig() @@ -178,7 +178,7 @@ class MemberManager(QWidget): parents=True, exist_ok=True ) - Config.member_dict[f"脚本_{index}"] = { + Config.script_dict[f"脚本_{index}"] = { "Type": "Maa", "Path": Config.app_path / f"config/MaaConfig/脚本_{index}", "Config": maa_config, @@ -186,10 +186,10 @@ class MemberManager(QWidget): } # 添加 MAA 实例设置界面 - self.member_manager.add_SettingBox( - index, self.MemberSettingBox.MaaSettingBox + self.script_manager.add_SettingBox( + index, self.ScriptSettingBox.MaaSettingBox ) - self.member_manager.switch_SettingBox(index) + self.script_manager.switch_SettingBox(index) logger.success(f"MAA实例 脚本_{index} 添加成功", module="脚本管理") MainInfoBar.push_info_bar( @@ -199,7 +199,7 @@ class MemberManager(QWidget): elif choice.input[0].currentText() == "通用": - index = len(Config.member_dict) + 1 + index = len(Config.script_dict) + 1 # 初始化通用配置 general_config = GeneralConfig() @@ -212,7 +212,7 @@ class MemberManager(QWidget): parents=True, exist_ok=True ) - Config.member_dict[f"脚本_{index}"] = { + Config.script_dict[f"脚本_{index}"] = { "Type": "General", "Path": Config.app_path / f"config/GeneralConfig/脚本_{index}", "Config": general_config, @@ -220,10 +220,10 @@ class MemberManager(QWidget): } # 添加通用实例设置界面 - self.member_manager.add_SettingBox( - index, self.MemberSettingBox.GeneralSettingBox + self.script_manager.add_SettingBox( + index, self.ScriptSettingBox.GeneralSettingBox ) - self.member_manager.switch_SettingBox(index) + self.script_manager.switch_SettingBox(index) logger.success(f"通用实例 脚本_{index} 添加成功", module="脚本管理") MainInfoBar.push_info_bar( @@ -231,10 +231,10 @@ class MemberManager(QWidget): ) SoundPlayer.play("添加脚本实例") - def del_member(self): + def del_script(self): """删除一个脚本实例""" - name = self.member_manager.pivot.currentRouteKey() + name = self.script_manager.pivot.currentRouteKey() if name is None: logger.warning("删除脚本实例时未选择脚本实例", module="脚本管理") @@ -255,19 +255,19 @@ class MemberManager(QWidget): logger.info(f"正在删除脚本实例: {name}", module="脚本管理") - self.member_manager.clear_SettingBox() + self.script_manager.clear_SettingBox() # 删除脚本实例的配置文件并同步修改相应配置项 - shutil.rmtree(Config.member_dict[name]["Path"]) + shutil.rmtree(Config.script_dict[name]["Path"]) Config.change_queue(name, "禁用") - for i in range(int(name[3:]) + 1, len(Config.member_dict) + 1): - if Config.member_dict[f"脚本_{i}"]["Path"].exists(): - Config.member_dict[f"脚本_{i}"]["Path"].rename( - Config.member_dict[f"脚本_{i}"]["Path"].with_name(f"脚本_{i-1}") + for i in range(int(name[3:]) + 1, len(Config.script_dict) + 1): + if Config.script_dict[f"脚本_{i}"]["Path"].exists(): + Config.script_dict[f"脚本_{i}"]["Path"].rename( + Config.script_dict[f"脚本_{i}"]["Path"].with_name(f"脚本_{i-1}") ) Config.change_queue(f"脚本_{i}", f"脚本_{i-1}") - self.member_manager.show_SettingBox(max(int(name[3:]) - 1, 1)) + self.script_manager.show_SettingBox(max(int(name[3:]) - 1, 1)) logger.success(f"脚本实例 {name} 删除成功", module="脚本管理") MainInfoBar.push_info_bar( @@ -275,10 +275,10 @@ class MemberManager(QWidget): ) SoundPlayer.play("删除脚本实例") - def left_member(self): + def left_script(self): """向左移动脚本实例""" - name = self.member_manager.pivot.currentRouteKey() + name = self.script_manager.pivot.currentRouteKey() if name is None: logger.warning("向左移动脚本实例时未选择脚本实例", module="脚本管理") @@ -305,31 +305,31 @@ class MemberManager(QWidget): logger.info(f"正在向左移动脚本实例: {name}", module="脚本管理") - self.member_manager.clear_SettingBox() + self.script_manager.clear_SettingBox() # 移动脚本实例配置文件并同步修改配置项 - Config.member_dict[name]["Path"].rename( - Config.member_dict[name]["Path"].with_name("脚本_0") + Config.script_dict[name]["Path"].rename( + Config.script_dict[name]["Path"].with_name("脚本_0") ) Config.change_queue(name, "脚本_0") - Config.member_dict[f"脚本_{index-1}"]["Path"].rename( - Config.member_dict[f"脚本_{index-1}"]["Path"].with_name(name) + Config.script_dict[f"脚本_{index-1}"]["Path"].rename( + Config.script_dict[f"脚本_{index-1}"]["Path"].with_name(name) ) Config.change_queue(f"脚本_{index-1}", name) - Config.member_dict[name]["Path"].with_name("脚本_0").rename( - Config.member_dict[name]["Path"].with_name(f"脚本_{index-1}") + Config.script_dict[name]["Path"].with_name("脚本_0").rename( + Config.script_dict[name]["Path"].with_name(f"脚本_{index-1}") ) Config.change_queue("脚本_0", f"脚本_{index-1}") - self.member_manager.show_SettingBox(index - 1) + self.script_manager.show_SettingBox(index - 1) logger.success(f"脚本实例 {name} 左移成功", module="脚本管理") MainInfoBar.push_info_bar("success", "操作成功", f"左移脚本实例 {name}", 3000) - def right_member(self): + def right_script(self): """向右移动脚本实例""" - name = self.member_manager.pivot.currentRouteKey() + name = self.script_manager.pivot.currentRouteKey() if name is None: logger.warning("向右移动脚本实例时未选择脚本实例", module="脚本管理") @@ -340,7 +340,7 @@ class MemberManager(QWidget): index = int(name[3:]) - if index == len(Config.member_dict): + if index == len(Config.script_dict): logger.warning("向右移动脚本实例时已到达最右端", module="脚本管理") MainInfoBar.push_info_bar( "warning", "已经是最后一个脚本实例", "无法向右移动", 5000 @@ -356,28 +356,28 @@ class MemberManager(QWidget): logger.info(f"正在向右移动脚本实例: {name}", module="脚本管理") - self.member_manager.clear_SettingBox() + self.script_manager.clear_SettingBox() # 移动脚本实例配置文件并同步修改配置项 - Config.member_dict[name]["Path"].rename( - Config.member_dict[name]["Path"].with_name("脚本_0") + Config.script_dict[name]["Path"].rename( + Config.script_dict[name]["Path"].with_name("脚本_0") ) Config.change_queue(name, "脚本_0") - Config.member_dict[f"脚本_{index+1}"]["Path"].rename( - Config.member_dict[f"脚本_{index+1}"]["Path"].with_name(name) + Config.script_dict[f"脚本_{index+1}"]["Path"].rename( + Config.script_dict[f"脚本_{index+1}"]["Path"].with_name(name) ) Config.change_queue(f"脚本_{index+1}", name) - Config.member_dict[name]["Path"].with_name("脚本_0").rename( - Config.member_dict[name]["Path"].with_name(f"脚本_{index+1}") + Config.script_dict[name]["Path"].with_name("脚本_0").rename( + Config.script_dict[name]["Path"].with_name(f"脚本_{index+1}") ) Config.change_queue("脚本_0", f"脚本_{index+1}") - self.member_manager.show_SettingBox(index + 1) + self.script_manager.show_SettingBox(index + 1) logger.success(f"脚本实例 {name} 右移成功", module="脚本管理") MainInfoBar.push_info_bar("success", "操作成功", f"右移脚本实例 {name}", 3000) - def member_downloader(self): + def script_downloader(self): """脚本下载器""" if not Config.get(Config.update_MirrorChyanCDK): @@ -567,11 +567,11 @@ class MemberManager(QWidget): ] # 刷新所有脚本实例的计划表名称 - for member in self.member_manager.script_list: + for script in self.script_manager.script_list: - if isinstance(member, MemberManager.MemberSettingBox.MaaSettingBox): + if isinstance(script, ScriptManager.ScriptSettingBox.MaaSettingBox): - for user_setting in member.user_setting.user_manager.script_list: + for user_setting in script.user_setting.user_manager.script_list: user_setting.card_StageMode.comboBox.currentIndexChanged.disconnect( user_setting.switch_stage_mode @@ -588,25 +588,25 @@ class MemberManager(QWidget): def refresh_dashboard(self): """刷新所有脚本实例的仪表盘""" - for member in self.member_manager.script_list: + for script in self.script_manager.script_list: - if isinstance(member, MemberManager.MemberSettingBox.MaaSettingBox): - member.user_setting.user_manager.user_dashboard.load_info() - elif isinstance(member, MemberManager.MemberSettingBox.GeneralSettingBox): - member.branch_manager.sub_manager.sub_dashboard.load_info() + if isinstance(script, ScriptManager.ScriptSettingBox.MaaSettingBox): + script.user_setting.user_manager.user_dashboard.load_info() + elif isinstance(script, ScriptManager.ScriptSettingBox.GeneralSettingBox): + script.branch_manager.sub_manager.sub_dashboard.load_info() def refresh_plan_info(self): """刷新所有计划信息""" - for member in self.member_manager.script_list: + for script in self.script_manager.script_list: - if isinstance(member, MemberManager.MemberSettingBox.MaaSettingBox): + if isinstance(script, ScriptManager.ScriptSettingBox.MaaSettingBox): - member.user_setting.user_manager.user_dashboard.load_info() - for user_setting in member.user_setting.user_manager.script_list: + script.user_setting.user_manager.user_dashboard.load_info() + for user_setting in script.user_setting.user_manager.script_list: user_setting.switch_stage_mode() - class MemberSettingBox(QWidget): + class ScriptSettingBox(QWidget): """脚本管理子页面组""" def __init__(self, parent=None): @@ -623,8 +623,8 @@ class MemberManager(QWidget): self.script_list: List[ Union[ - MemberManager.MemberSettingBox.MaaSettingBox, - MemberManager.MemberSettingBox.GeneralSettingBox, + ScriptManager.ScriptSettingBox.MaaSettingBox, + ScriptManager.ScriptSettingBox.GeneralSettingBox, ] ] = [] @@ -649,9 +649,9 @@ class MemberManager(QWidget): :type index: int """ - Config.search_member() + Config.search_script() - for name, info in Config.member_dict.items(): + for name, info in Config.script_dict.items(): if info["Type"] == "Maa": self.add_SettingBox(int(name[3:]), self.MaaSettingBox) elif info["Type"] == "General": @@ -669,10 +669,10 @@ class MemberManager(QWidget): :type if_chang_pivot: bool """ - if len(Config.member_dict) == 0: + if len(Config.script_dict) == 0: return None - if index > len(Config.member_dict): + if index > len(Config.script_dict): return None if if_chang_pivot: @@ -681,14 +681,14 @@ class MemberManager(QWidget): if isinstance( self.script_list[index - 1], - MemberManager.MemberSettingBox.MaaSettingBox, + ScriptManager.ScriptSettingBox.MaaSettingBox, ): self.script_list[index - 1].user_setting.user_manager.switch_SettingBox( "用户仪表盘" ) elif isinstance( self.script_list[index - 1], - MemberManager.MemberSettingBox.GeneralSettingBox, + ScriptManager.ScriptSettingBox.GeneralSettingBox, ): self.script_list[ index - 1 @@ -731,7 +731,7 @@ class MemberManager(QWidget): super().__init__(parent) self.setObjectName(f"脚本_{uid}") - self.config = Config.member_dict[f"脚本_{uid}"]["Config"] + self.config = Config.script_dict[f"脚本_{uid}"]["Config"] self.app_setting = self.AppSettingCard(f"脚本_{uid}", self.config, self) self.user_setting = self.UserManager(f"脚本_{uid}", self) @@ -834,12 +834,12 @@ class MemberManager(QWidget): ) return None - (Config.member_dict[self.name]["Path"] / "Default").mkdir( + (Config.script_dict[self.name]["Path"] / "Default").mkdir( parents=True, exist_ok=True ) shutil.copy( Path(folder) / "config/gui.json", - Config.member_dict[self.name]["Path"] / "Default/gui.json", + Config.script_dict[self.name]["Path"] / "Default/gui.json", ) self.config.set(self.config.MaaSet_Path, folder) @@ -986,21 +986,21 @@ class MemberManager(QWidget): def add_user(self): """添加一个用户""" - index = len(Config.member_dict[self.name]["UserData"]) + 1 + index = len(Config.script_dict[self.name]["UserData"]) + 1 logger.info(f"正在添加 {self.name} 用户_{index}", module="脚本管理") # 初始化用户配置信息 user_config = MaaUserConfig() user_config.load( - Config.member_dict[self.name]["Path"] + Config.script_dict[self.name]["Path"] / f"UserData/用户_{index}/config.json", user_config, ) user_config.save() - Config.member_dict[self.name]["UserData"][f"用户_{index}"] = { - "Path": Config.member_dict[self.name]["Path"] + Config.script_dict[self.name]["UserData"][f"用户_{index}"] = { + "Path": Config.script_dict[self.name]["Path"] / f"UserData/用户_{index}", "Config": user_config, } @@ -1053,19 +1053,19 @@ class MemberManager(QWidget): # 删除用户配置文件并同步修改相应配置项 shutil.rmtree( - Config.member_dict[self.name]["UserData"][name]["Path"] + Config.script_dict[self.name]["UserData"][name]["Path"] ) for i in range( int(name[3:]) + 1, - len(Config.member_dict[self.name]["UserData"]) + 1, + len(Config.script_dict[self.name]["UserData"]) + 1, ): - if Config.member_dict[self.name]["UserData"][f"用户_{i}"][ + if Config.script_dict[self.name]["UserData"][f"用户_{i}"][ "Path" ].exists(): - Config.member_dict[self.name]["UserData"][f"用户_{i}"][ + Config.script_dict[self.name]["UserData"][f"用户_{i}"][ "Path" ].rename( - Config.member_dict[self.name]["UserData"][ + Config.script_dict[self.name]["UserData"][ f"用户_{i}" ]["Path"].with_name(f"用户_{i-1}") ) @@ -1121,18 +1121,18 @@ class MemberManager(QWidget): self.user_manager.clear_SettingBox() # 移动用户配置文件并同步修改配置项 - Config.member_dict[self.name]["UserData"][name]["Path"].rename( - Config.member_dict[self.name]["UserData"][name][ + Config.script_dict[self.name]["UserData"][name]["Path"].rename( + Config.script_dict[self.name]["UserData"][name][ "Path" ].with_name("用户_0") ) - Config.member_dict[self.name]["UserData"][f"用户_{index-1}"][ + Config.script_dict[self.name]["UserData"][f"用户_{index-1}"][ "Path" - ].rename(Config.member_dict[self.name]["UserData"][name]["Path"]) - Config.member_dict[self.name]["UserData"][name]["Path"].with_name( + ].rename(Config.script_dict[self.name]["UserData"][name]["Path"]) + Config.script_dict[self.name]["UserData"][name]["Path"].with_name( "用户_0" ).rename( - Config.member_dict[self.name]["UserData"][f"用户_{index-1}"][ + Config.script_dict[self.name]["UserData"][f"用户_{index-1}"][ "Path" ] ) @@ -1164,7 +1164,7 @@ class MemberManager(QWidget): index = int(name[3:]) - if index == len(Config.member_dict[self.name]["UserData"]): + if index == len(Config.script_dict[self.name]["UserData"]): logger.warning("向后移动用户时已到达最右端", module="脚本管理") MainInfoBar.push_info_bar( "warning", "已经是最后一个用户", "无法向后移动", 5000 @@ -1182,18 +1182,18 @@ class MemberManager(QWidget): self.user_manager.clear_SettingBox() - Config.member_dict[self.name]["UserData"][name]["Path"].rename( - Config.member_dict[self.name]["UserData"][name][ + Config.script_dict[self.name]["UserData"][name]["Path"].rename( + Config.script_dict[self.name]["UserData"][name][ "Path" ].with_name("用户_0") ) - Config.member_dict[self.name]["UserData"][f"用户_{index+1}"][ + Config.script_dict[self.name]["UserData"][f"用户_{index+1}"][ "Path" - ].rename(Config.member_dict[self.name]["UserData"][name]["Path"]) - Config.member_dict[self.name]["UserData"][name]["Path"].with_name( + ].rename(Config.script_dict[self.name]["UserData"][name]["Path"]) + Config.script_dict[self.name]["UserData"][name]["Path"].with_name( "用户_0" ).rename( - Config.member_dict[self.name]["UserData"][f"用户_{index+1}"][ + Config.script_dict[self.name]["UserData"][f"用户_{index+1}"][ "Path" ] ) @@ -1224,7 +1224,7 @@ class MemberManager(QWidget): ) self.script_list: List[ - MemberManager.MemberSettingBox.MaaSettingBox.UserManager.UserSettingBox.UserMemberSettingBox + ScriptManager.ScriptSettingBox.MaaSettingBox.UserManager.UserSettingBox.UserMemberSettingBox ] = [] self.user_dashboard = self.UserDashboard(self.name, self) @@ -1255,7 +1255,7 @@ class MemberManager(QWidget): Config.search_maa_user(self.name) - for name in Config.member_dict[self.name]["UserData"].keys(): + for name in Config.script_dict[self.name]["UserData"].keys(): self.add_userSettingBox(name[3:]) self.switch_SettingBox(index) @@ -1272,11 +1272,11 @@ class MemberManager(QWidget): :type if_change_pivot: bool """ - if len(Config.member_dict[self.name]["UserData"]) == 0: + if len(Config.script_dict[self.name]["UserData"]) == 0: index = "用户仪表盘" if index != "用户仪表盘" and int(index[3:]) > len( - Config.member_dict[self.name]["UserData"] + Config.script_dict[self.name]["UserData"] ): return None @@ -1382,7 +1382,7 @@ class MemberManager(QWidget): module="脚本管理", ) - self.user_data = Config.member_dict[self.name]["UserData"] + self.user_data = Config.script_dict[self.name]["UserData"] self.dashboard.setRowCount(len(self.user_data)) @@ -1554,10 +1554,10 @@ class MemberManager(QWidget): self.setObjectName(f"用户_{uid}") self.setTitle(f"用户 {uid}") self.name = name - self.config = Config.member_dict[self.name]["UserData"][ + self.config = Config.script_dict[self.name]["UserData"][ f"用户_{uid}" ]["Config"] - self.user_path = Config.member_dict[self.name]["UserData"][ + self.user_path = Config.script_dict[self.name]["UserData"][ f"用户_{uid}" ]["Path"] @@ -2350,7 +2350,7 @@ class MemberManager(QWidget): super().__init__(parent) self.setObjectName(f"脚本_{uid}") - self.config = Config.member_dict[f"脚本_{uid}"]["Config"] + self.config = Config.script_dict[f"脚本_{uid}"]["Config"] self.app_setting = self.AppSettingCard(f"脚本_{uid}", self.config, self) self.branch_manager = self.BranchManager(f"脚本_{uid}", self) @@ -2804,10 +2804,10 @@ class MemberManager(QWidget): shutil.copy( file_path, - Config.member_dict[self.name]["Path"] / "config.json", + Config.script_dict[self.name]["Path"] / "config.json", ) self.config.load( - Config.member_dict[self.name]["Path"] / "config.json" + Config.script_dict[self.name]["Path"] / "config.json" ) logger.success( @@ -2929,13 +2929,13 @@ class MemberManager(QWidget): return None with ( - Config.member_dict[self.name]["Path"] / "config.json" + Config.script_dict[self.name]["Path"] / "config.json" ).open("w", encoding="utf-8") as file: json.dump( config_data, file, ensure_ascii=False, indent=4 ) self.config.load( - Config.member_dict[self.name]["Path"] / "config.json" + Config.script_dict[self.name]["Path"] / "config.json" ) logger.success( @@ -3098,7 +3098,7 @@ class MemberManager(QWidget): def add_sub(self): """添加一个配置""" - index = len(Config.member_dict[self.name]["SubData"]) + 1 + index = len(Config.script_dict[self.name]["SubData"]) + 1 logger.info( f"正在添加 {self.name} 的配置_{index}", module="脚本管理" @@ -3107,14 +3107,14 @@ class MemberManager(QWidget): # 初始化通用配置 sub_config = GeneralSubConfig() sub_config.load( - Config.member_dict[self.name]["Path"] + Config.script_dict[self.name]["Path"] / f"SubData/配置_{index}/config.json", sub_config, ) sub_config.save() - Config.member_dict[self.name]["SubData"][f"配置_{index}"] = { - "Path": Config.member_dict[self.name]["Path"] + Config.script_dict[self.name]["SubData"][f"配置_{index}"] = { + "Path": Config.script_dict[self.name]["Path"] / f"SubData/配置_{index}", "Config": sub_config, } @@ -3169,19 +3169,19 @@ class MemberManager(QWidget): # 删除配置文件并同步到相关配置项 shutil.rmtree( - Config.member_dict[self.name]["SubData"][name]["Path"] + Config.script_dict[self.name]["SubData"][name]["Path"] ) for i in range( int(name[3:]) + 1, - len(Config.member_dict[self.name]["SubData"]) + 1, + len(Config.script_dict[self.name]["SubData"]) + 1, ): - if Config.member_dict[self.name]["SubData"][f"配置_{i}"][ + if Config.script_dict[self.name]["SubData"][f"配置_{i}"][ "Path" ].exists(): - Config.member_dict[self.name]["SubData"][f"配置_{i}"][ + Config.script_dict[self.name]["SubData"][f"配置_{i}"][ "Path" ].rename( - Config.member_dict[self.name]["SubData"][ + Config.script_dict[self.name]["SubData"][ f"配置_{i}" ]["Path"].with_name(f"配置_{i-1}") ) @@ -3239,18 +3239,18 @@ class MemberManager(QWidget): self.sub_manager.clear_SettingBox() # 移动配置文件并同步到相关配置项 - Config.member_dict[self.name]["SubData"][name]["Path"].rename( - Config.member_dict[self.name]["SubData"][name][ + Config.script_dict[self.name]["SubData"][name]["Path"].rename( + Config.script_dict[self.name]["SubData"][name][ "Path" ].with_name("配置_0") ) - Config.member_dict[self.name]["SubData"][f"配置_{index-1}"][ + Config.script_dict[self.name]["SubData"][f"配置_{index-1}"][ "Path" - ].rename(Config.member_dict[self.name]["SubData"][name]["Path"]) - Config.member_dict[self.name]["SubData"][name]["Path"].with_name( + ].rename(Config.script_dict[self.name]["SubData"][name]["Path"]) + Config.script_dict[self.name]["SubData"][name]["Path"].with_name( "配置_0" ).rename( - Config.member_dict[self.name]["SubData"][f"配置_{index-1}"][ + Config.script_dict[self.name]["SubData"][f"配置_{index-1}"][ "Path" ] ) @@ -3282,7 +3282,7 @@ class MemberManager(QWidget): index = int(name[3:]) - if index == len(Config.member_dict[self.name]["SubData"]): + if index == len(Config.script_dict[self.name]["SubData"]): logger.warning("向后移动配置时已到达最右端", module="脚本管理") MainInfoBar.push_info_bar( "warning", "已经是最后一个配置", "无法向后移动", 5000 @@ -3303,18 +3303,18 @@ class MemberManager(QWidget): self.sub_manager.clear_SettingBox() # 移动配置文件并同步到相关配置项 - Config.member_dict[self.name]["SubData"][name]["Path"].rename( - Config.member_dict[self.name]["SubData"][name][ + Config.script_dict[self.name]["SubData"][name]["Path"].rename( + Config.script_dict[self.name]["SubData"][name][ "Path" ].with_name("配置_0") ) - Config.member_dict[self.name]["SubData"][f"配置_{index+1}"][ + Config.script_dict[self.name]["SubData"][f"配置_{index+1}"][ "Path" - ].rename(Config.member_dict[self.name]["SubData"][name]["Path"]) - Config.member_dict[self.name]["SubData"][name]["Path"].with_name( + ].rename(Config.script_dict[self.name]["SubData"][name]["Path"]) + Config.script_dict[self.name]["SubData"][name]["Path"].with_name( "配置_0" ).rename( - Config.member_dict[self.name]["SubData"][f"配置_{index+1}"][ + Config.script_dict[self.name]["SubData"][f"配置_{index+1}"][ "Path" ] ) @@ -3345,7 +3345,7 @@ class MemberManager(QWidget): ) self.script_list: List[ - MemberManager.MemberSettingBox.GeneralSettingBox.BranchManager.SubConfigSettingBox.SubMemberSettingBox + ScriptManager.ScriptSettingBox.GeneralSettingBox.BranchManager.SubConfigSettingBox.SubMemberSettingBox ] = [] self.sub_dashboard = self.SubDashboard(self.name, self) @@ -3375,7 +3375,7 @@ class MemberManager(QWidget): Config.search_general_sub(self.name) - for name in Config.member_dict[self.name]["SubData"].keys(): + for name in Config.script_dict[self.name]["SubData"].keys(): self.add_SettingBox(name[3:]) self.switch_SettingBox(index) @@ -3390,11 +3390,11 @@ class MemberManager(QWidget): :param if_change_pivot: 是否更改 pivot 的当前项 """ - if len(Config.member_dict[self.name]["SubData"]) == 0: + if len(Config.script_dict[self.name]["SubData"]) == 0: index = "配置仪表盘" if index != "配置仪表盘" and int(index[3:]) > len( - Config.member_dict[self.name]["SubData"] + Config.script_dict[self.name]["SubData"] ): return None @@ -3480,7 +3480,7 @@ class MemberManager(QWidget): module="脚本管理", ) - self.sub_data = Config.member_dict[self.name]["SubData"] + self.sub_data = Config.script_dict[self.name]["SubData"] self.dashboard.setRowCount(len(self.sub_data)) @@ -3546,10 +3546,10 @@ class MemberManager(QWidget): self.setObjectName(f"配置_{uid}") self.setTitle(f"配置 {uid}") self.name = name - self.config = Config.member_dict[self.name]["SubData"][ + self.config = Config.script_dict[self.name]["SubData"][ f"配置_{uid}" ]["Config"] - self.sub_path = Config.member_dict[self.name]["SubData"][ + self.sub_path = Config.script_dict[self.name]["SubData"][ f"配置_{uid}" ]["Path"] diff --git a/resources/version.json b/resources/version.json index c01428e..2d94d2b 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,6 +1,11 @@ { - "main_version": "4.4.1.4", + "main_version": "4.4.1.5", "version_info": { + "4.4.1.5": { + "程序优化": [ + "优化调度队列配置逻辑" + ] + }, "4.4.1.4": { "修复BUG": [ "添加强制关机功能并优化关机流程"