diff --git a/app/config.py b/app/config.py index 14bd977..c11b620 100644 --- a/app/config.py +++ b/app/config.py @@ -70,9 +70,9 @@ class AppConfig: # 检查目录 (self.app_path / "config").mkdir(parents=True, exist_ok=True) - (self.app_path / "data/MAAconfig/simple").mkdir(parents=True, exist_ok=True) - (self.app_path / "data/MAAconfig/beta").mkdir(parents=True, exist_ok=True) - (self.app_path / "data/MAAconfig/Default").mkdir(parents=True, exist_ok=True) + # (self.app_path / "data/MAAconfig/simple").mkdir(parents=True, exist_ok=True) + # (self.app_path / "data/MAAconfig/beta").mkdir(parents=True, exist_ok=True) + # (self.app_path / "data/MAAconfig/Default").mkdir(parents=True, exist_ok=True) # 生成版本信息文件 if not self.version_path.exists(): @@ -90,11 +90,11 @@ class AppConfig: encoding="utf-8", ) - self.get_config() + self.init_config() # self.check_database() - def get_config(self) -> None: - """创建配置类""" + def init_config(self) -> None: + """初始化配置类""" self.global_config = GlobalConfig() qconfig.load(self.config_path, self.global_config) @@ -102,6 +102,17 @@ class AppConfig: self.queue_config = QueueConfig() self.maa_config = MaaConfig() + def init_database(self, mode: str) -> None: + """初始化用户数据库""" + + if mode == "Maa": + self.cur.execute( + "CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int)" + ) + self.cur.execute("CREATE TABLE version(v text)") + self.cur.execute("INSERT INTO version VALUES(?)", ("v1.3",)) + self.db.commit() + def check_database(self) -> None: """检查用户数据库文件并处理数据库版本更新""" @@ -181,17 +192,6 @@ class AppConfig: cur.close() db.close() - def init_database(self, mode: str) -> None: - """初始化用户数据库""" - - if mode == "Maa": - self.cur.execute( - "CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int)" - ) - self.cur.execute("CREATE TABLE version(v text)") - self.cur.execute("INSERT INTO version VALUES(?)", ("v1.3",)) - self.db.commit() - def open_database(self, mode: str, index: str = None) -> None: """打开数据库""" @@ -212,6 +212,56 @@ class AppConfig: self.db.close() self.if_database_opened = False + def clear_maa_config(self) -> None: + """清空MAA配置""" + + self.maa_config.set(self.maa_config.MaaSet_Name, "") + self.maa_config.set(self.maa_config.MaaSet_Path, ".") + self.maa_config.set(self.maa_config.RunSet_AnnihilationTimeLimit, 40) + self.maa_config.set(self.maa_config.RunSet_RoutineTimeLimit, 10) + self.maa_config.set(self.maa_config.RunSet_RunTimesLimit, 3) + self.maa_config.set(self.maa_config.MaaSet_Name, "") + self.maa_config.set(self.maa_config.MaaSet_Name, "") + self.maa_config.set(self.maa_config.MaaSet_Name, "") + + def clear_queue_config(self) -> None: + """清空队列配置""" + + self.queue_config.set(self.queue_config.queueSet_Name, "") + self.queue_config.set(self.queue_config.queueSet_Enabled, False) + + self.queue_config.set(self.queue_config.time_TimeEnabled_0, False) + self.queue_config.set(self.queue_config.time_TimeSet_0, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_1, False) + self.queue_config.set(self.queue_config.time_TimeSet_1, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_2, False) + self.queue_config.set(self.queue_config.time_TimeSet_2, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_3, False) + self.queue_config.set(self.queue_config.time_TimeSet_3, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_4, False) + self.queue_config.set(self.queue_config.time_TimeSet_4, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_5, False) + self.queue_config.set(self.queue_config.time_TimeSet_5, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_6, False) + self.queue_config.set(self.queue_config.time_TimeSet_6, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_7, False) + self.queue_config.set(self.queue_config.time_TimeSet_7, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_8, False) + self.queue_config.set(self.queue_config.time_TimeSet_8, "00:00") + self.queue_config.set(self.queue_config.time_TimeEnabled_9, False) + self.queue_config.set(self.queue_config.time_TimeSet_9, "00:00") + + self.queue_config.set(self.queue_config.queue_Member_1, "禁用") + self.queue_config.set(self.queue_config.queue_Member_2, "禁用") + self.queue_config.set(self.queue_config.queue_Member_3, "禁用") + self.queue_config.set(self.queue_config.queue_Member_4, "禁用") + self.queue_config.set(self.queue_config.queue_Member_5, "禁用") + self.queue_config.set(self.queue_config.queue_Member_6, "禁用") + self.queue_config.set(self.queue_config.queue_Member_7, "禁用") + self.queue_config.set(self.queue_config.queue_Member_8, "禁用") + self.queue_config.set(self.queue_config.queue_Member_9, "禁用") + self.queue_config.set(self.queue_config.queue_Member_10, "禁用") + class GlobalConfig(QConfig): """全局配置""" diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 45090f0..974925e 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -149,6 +149,9 @@ class AUTO_MAA(MSFluentWindow): FluentIcon.BOOK_SHELF, NavigationItemPosition.TOP, ) + self.stackedWidget.currentChanged.connect( + lambda index: self.queue_manager.refresh() if index == 2 else None + ) # 创建系统托盘及其菜单 self.tray = QSystemTrayIcon( diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 4c8c9ad..e9c3a58 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -76,7 +76,7 @@ from typing import List, Tuple from pathlib import Path import os import datetime -import ctypes +import json import subprocess import shutil import win32gui @@ -183,21 +183,7 @@ class MemberManager(QWidget): self.config.app_path / f"config/MaaConfig/脚本_{index}/config.json", self.config.maa_config, ) - - self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "") - self.config.maa_config.set(self.config.maa_config.MaaSet_Path, ".") - self.config.maa_config.set( - self.config.maa_config.RunSet_AnnihilationTimeLimit, 40 - ) - self.config.maa_config.set( - self.config.maa_config.RunSet_RoutineTimeLimit, 10 - ) - self.config.maa_config.set( - self.config.maa_config.RunSet_RunTimesLimit, 3 - ) - self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "") - self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "") - self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "") + self.config.clear_maa_config() self.config.maa_config.save() self.config.open_database("Maa", f"脚本_{index}") @@ -229,6 +215,7 @@ class MemberManager(QWidget): self.member_manager.clear_SettingBox() shutil.rmtree(self.config.app_path / f"config/{type[0]}Config/{name}") + self.change_queue(name, "禁用") for member in move_list: if ( self.config.app_path / f"config/{member[1]}Config/{member[0]}" @@ -237,8 +224,9 @@ class MemberManager(QWidget): self.config.app_path / f"config/{member[1]}Config/{member[0]}" ).rename( self.config.app_path - / f"config/{member[1]}Config/{member[0][:3]}{int(member[0][3:])-1}", + / f"config/{member[1]}Config/脚本_{int(member[0][3:])-1}", ) + self.change_queue(member[0], f"脚本_{int(member[0][3:])-1}") self.member_manager.show_SettingBox(index) @@ -262,15 +250,17 @@ class MemberManager(QWidget): self.member_manager.clear_SettingBox() (self.config.app_path / f"config/{type_right[0]}Config/脚本_{index}").rename( - self.config.app_path / f"config/{type_right[0]}Config/脚本_0", + self.config.app_path / f"config/{type_right[0]}Config/脚本_0" ) - shutil.move( - str(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index-1}"), - str(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}"), + self.change_queue(f"脚本_{index}", "脚本_0") + (self.config.app_path / f"config/{type_left[0]}Config/脚本_{index-1}").rename( + self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}" ) + self.change_queue(f"脚本_{index-1}", f"脚本_{index}") (self.config.app_path / f"config/{type_right[0]}Config/脚本_0").rename( - self.config.app_path / f"config/{type_right[0]}Config/脚本_{index-1}", + self.config.app_path / f"config/{type_right[0]}Config/脚本_{index-1}" ) + self.change_queue("脚本_0", f"脚本_{index-1}") self.member_manager.show_SettingBox(index - 1) @@ -296,12 +286,15 @@ class MemberManager(QWidget): (self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}").rename( self.config.app_path / f"config/{type_left[0]}Config/脚本_0", ) + self.change_queue(f"脚本_{index}", "脚本_0") (self.config.app_path / f"config/{type_right[0]}Config/脚本_{index+1}").rename( self.config.app_path / f"config/{type_right[0]}Config/脚本_{index}", ) + self.change_queue(f"脚本_{index+1}", f"脚本_{index}") (self.config.app_path / f"config/{type_left[0]}Config/脚本_0").rename( self.config.app_path / f"config/{type_left[0]}Config/脚本_{index+1}", ) + self.change_queue("脚本_0", f"脚本_{index+1}") self.member_manager.show_SettingBox(index + 1) @@ -336,6 +329,23 @@ class MemberManager(QWidget): self.key.setIcon(FluentIcon.HIDE) self.key.setChecked(False) + def change_queue(self, old: str, new: str) -> None: + """修改调度队列配置文件的队列参数""" + + if (self.config.app_path / "config/QueueConfig").exists(): + for json_file in (self.config.app_path / "config/QueueConfig").glob( + "*.json" + ): + with json_file.open("r", encoding="utf-8") as f: + data = json.load(f) + + for i in range(10): + if data["Queue"][f"Member_{i+1}"] == old: + data["Queue"][f"Member_{i+1}"] = new + + with json_file.open("w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=4) + class MemberSettingBox(QWidget): @@ -367,10 +377,17 @@ class MemberSettingBox(QWidget): member_list = self.search_member() + qconfig.load( + self.config.app_path / "config/临时.json", + self.config.maa_config, + ) + self.config.clear_maa_config() for member in member_list: if member[1] == "Maa": self.config.open_database(member[1], member[0]) self.add_MaaSettingBox(int(member[0][3:])) + if (self.config.app_path / "config/临时.json").exists(): + (self.config.app_path / "config/临时.json").unlink() self.switch_SettingBox(index) @@ -404,6 +421,13 @@ class MemberSettingBox(QWidget): sub_interface.deleteLater() self.script_list.clear() self.pivot.clear() + qconfig.load( + self.config.app_path / "config/临时.json", + self.config.maa_config, + ) + self.config.clear_maa_config() + if (self.config.app_path / "config/临时.json").exists(): + (self.config.app_path / "config/临时.json").unlink() self.config.close_database() def add_MaaSettingBox(self, uid: int) -> None: @@ -475,7 +499,7 @@ class MaaSettingBox(QWidget): Layout = QVBoxLayout() self.card_Name = LineEditSettingCard( - "实例名称", + "请输入实例名称", FluentIcon.EDIT, "实例名称", "用于标识MAA实例的名称", diff --git a/app/ui/queue_manager.py b/app/ui/queue_manager.py index 6a2c75e..d594aa4 100644 --- a/app/ui/queue_manager.py +++ b/app/ui/queue_manager.py @@ -147,8 +147,6 @@ class QueueManager(QWidget): ), ] ) - self.tools.addSeparator() - self.tools.addAction(Action(FluentIcon.ROTATE, "刷新", triggered=self.refresh)) layout.addWidget(self.tools) layout.addWidget(self.queue_manager) @@ -162,42 +160,7 @@ class QueueManager(QWidget): self.config.app_path / f"config/QueueConfig/调度队列_{index}.json", self.config.queue_config, ) - - self.config.queue_config.set(self.config.queue_config.queueSet_Name, "") - self.config.queue_config.set(self.config.queue_config.queueSet_Enabled, False) - - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_0, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_0, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_1, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_1, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_2, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_2, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_3, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_3, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_4, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_4, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_5, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_5, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_6, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_6, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_7, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_7, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_8, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_8, "00:00") - self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_9, False) - self.config.queue_config.set(self.config.queue_config.time_TimeSet_9, "00:00") - - self.config.queue_config.set(self.config.queue_config.queue_Member_1, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_2, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_3, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_4, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_5, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_6, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_7, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_8, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_9, "禁用") - self.config.queue_config.set(self.config.queue_config.queue_Member_10, "禁用") - + self.config.clear_queue_config() self.config.queue_config.save() self.queue_manager.add_QueueSettingBox(index) @@ -225,7 +188,7 @@ class QueueManager(QWidget): self.queue_manager.clear_SettingBox() - os.remove(self.config.app_path / f"config/QueueConfig/{name}.json") + (self.config.app_path / f"config/QueueConfig/{name}.json").unlink() for queue in move_list: if ( self.config.app_path / f"config/QueueConfig/{queue[0]}.json" @@ -332,8 +295,15 @@ class QueueSettingBox(QWidget): queue_list = self.search_queue() + qconfig.load( + self.config.app_path / "config/临时.json", + self.config.queue_config, + ) + self.config.clear_queue_config() for queue in queue_list: self.add_QueueSettingBox(int(queue[0][5:])) + if (self.config.app_path / "config/临时.json").exists(): + (self.config.app_path / "config/临时.json").unlink() self.switch_SettingBox(index) @@ -363,6 +333,13 @@ class QueueSettingBox(QWidget): sub_interface.deleteLater() self.script_list.clear() self.pivot.clear() + qconfig.load( + self.config.app_path / "config/临时.json", + self.config.queue_config, + ) + self.config.clear_queue_config() + if (self.config.app_path / "config/临时.json").exists(): + (self.config.app_path / "config/临时.json").unlink() def add_QueueSettingBox(self, uid: int) -> None: """添加一个调度队列设置界面""" @@ -435,7 +412,7 @@ class QueueMemberSettingBox(QWidget): Layout = QVBoxLayout() self.card_Name = LineEditSettingCard( - "调度队列名称", + "请输入调度队列名称", FluentIcon.EDIT, "调度队列名称", "用于标识调度队列的名称", @@ -566,7 +543,7 @@ class QueueMemberSettingBox(QWidget): Layout = QVBoxLayout() self.card_Name = LineEditSettingCard( - "调度队列名称", + "请输入调度队列名称", FluentIcon.EDIT, "调度队列名称", "用于标识调度队列的名称", @@ -589,7 +566,7 @@ class QueueMemberSettingBox(QWidget): def __init__(self, parent=None, config: AppConfig = None): super().__init__(parent) - self.setTitle("定时设置") + self.setTitle("任务队列") self.config = config self.queue_config = config.queue_config @@ -601,7 +578,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_1 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_1, FluentIcon.APPLICATION, - "任务实例1", + "任务实例 1", "第一个调起的脚本任务实例", member_list[0], member_list[1], @@ -609,7 +586,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_2 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_2, FluentIcon.APPLICATION, - "任务实例2", + "任务实例 2", "第二个调起的脚本任务实例", member_list[0], member_list[1], @@ -617,7 +594,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_3 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_3, FluentIcon.APPLICATION, - "任务实例3", + "任务实例 3", "第三个调起的脚本任务实例", member_list[0], member_list[1], @@ -625,7 +602,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_4 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_4, FluentIcon.APPLICATION, - "任务实例4", + "任务实例 4", "第四个调起的脚本任务实例", member_list[0], member_list[1], @@ -633,7 +610,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_5 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_5, FluentIcon.APPLICATION, - "任务实例5", + "任务实例 5", "第五个调起的脚本任务实例", member_list[0], member_list[1], @@ -641,7 +618,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_6 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_6, FluentIcon.APPLICATION, - "任务实例6", + "任务实例 6", "第六个调起的脚本任务实例", member_list[0], member_list[1], @@ -649,7 +626,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_7 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_7, FluentIcon.APPLICATION, - "任务实例7", + "任务实例 7", "第七个调起的脚本任务实例", member_list[0], member_list[1], @@ -657,7 +634,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_8 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_8, FluentIcon.APPLICATION, - "任务实例8", + "任务实例 8", "第八个调起的脚本任务实例", member_list[0], member_list[1], @@ -665,7 +642,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_9 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_9, FluentIcon.APPLICATION, - "任务实例9", + "任务实例 9", "第九个调起的脚本任务实例", member_list[0], member_list[1], @@ -673,7 +650,7 @@ class QueueMemberSettingBox(QWidget): self.card_Member_10 = NoOptionComboBoxSettingCard( self.queue_config.queue_Member_10, FluentIcon.APPLICATION, - "任务实例10", + "任务实例 10", "第十个调起的脚本任务实例", member_list[0], member_list[1], diff --git a/app/ui/setting.py b/app/ui/setting.py index c2b768c..6155c9d 100644 --- a/app/ui/setting.py +++ b/app/ui/setting.py @@ -77,13 +77,7 @@ import json import datetime import ctypes import subprocess -import shutil -import win32gui -import win32process -import psutil -import pyautogui import time -import winreg import requests uiLoader = QUiLoader() diff --git a/app/utils/Updater.py b/app/utils/Updater.py index ec59e17..32fb829 100644 --- a/app/utils/Updater.py +++ b/app/utils/Updater.py @@ -67,10 +67,8 @@ class UpdateProcess(QThread): def run(self) -> None: # 清理可能存在的临时文件 - try: - os.remove(self.download_path) - except FileNotFoundError: - pass + if self.download_path.exists(): + self.download_path.unlink() self.info.emit("正在获取下载链接") url_list = self.get_download_url() @@ -158,7 +156,7 @@ class UpdateProcess(QThread): self.info.emit("正在删除临时文件") self.progress.emit(0, 0, 0) - os.remove(self.download_path) + self.download_path.unlink() self.info.emit(f"{self.name}更新成功!") self.progress.emit(0, 100, 100) diff --git a/app/utils/package.py b/app/utils/package.py index 5120980..de65d2b 100644 --- a/app/utils/package.py +++ b/app/utils/package.py @@ -99,7 +99,7 @@ if __name__ == "__main__": print(result.stderr) print("AUTO_MAA update program packaging completed !") - os.remove(root_path / "Updater.py") + (root_path / "Updater.py").unlink() (root_path / "version_info.txt").write_text( f"{version_text(main_version_numb)}\n{version_text(updater_version_numb)}{version["announcement"]}",