feat(core):初步完成主调度自动代理功能开发

This commit is contained in:
DLmaster
2025-01-26 07:58:33 +08:00
parent 7e08c88a3e
commit c625354dec
41 changed files with 1645 additions and 694 deletions

View File

@@ -57,8 +57,8 @@ import datetime
import json
import shutil
from app.core import AppConfig, MaaConfig, MainInfoBar
from app.services import Notification, CryptoHandler
from app.core import Config, MainInfoBar
from app.services import Notify, Crypto
from .Widget import (
InputMessageBox,
LineEditSettingCard,
@@ -71,26 +71,19 @@ class MemberManager(QWidget):
def __init__(
self,
config: AppConfig,
notify: Notification,
crypto: CryptoHandler,
parent=None,
):
super().__init__(parent)
self.setObjectName("脚本管理")
self.config = config
self.notify = notify
self.crypto = crypto
setTheme(Theme.AUTO)
layout = QVBoxLayout(self)
self.tools = CommandBar()
self.member_manager = MemberSettingBox(self.config, self.crypto, self)
self.member_manager = MemberSettingBox(self)
# 逐个添加动作
self.tools.addActions(
@@ -147,14 +140,14 @@ class MemberManager(QWidget):
index = len(self.member_manager.search_member()) + 1
qconfig.load(
self.config.app_path / f"config/MaaConfig/脚本_{index}/config.json",
self.config.maa_config,
Config.app_path / f"config/MaaConfig/脚本_{index}/config.json",
Config.maa_config,
)
self.config.clear_maa_config()
self.config.maa_config.save()
Config.clear_maa_config()
Config.maa_config.save()
self.config.open_database("Maa", f"脚本_{index}")
self.config.init_database("Maa")
Config.open_database("Maa", f"脚本_{index}")
Config.init_database("Maa")
self.member_manager.add_MaaSettingBox(index)
self.member_manager.switch_SettingBox(index)
@@ -181,16 +174,12 @@ class MemberManager(QWidget):
self.member_manager.clear_SettingBox()
shutil.rmtree(self.config.app_path / f"config/{type[0]}Config/{name}")
shutil.rmtree(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]}"
).exists():
(
self.config.app_path / f"config/{member[1]}Config/{member[0]}"
).rename(
self.config.app_path
if (Config.app_path / f"config/{member[1]}Config/{member[0]}").exists():
(Config.app_path / f"config/{member[1]}Config/{member[0]}").rename(
Config.app_path
/ f"config/{member[1]}Config/脚本_{int(member[0][3:])-1}",
)
self.change_queue(member[0], f"脚本_{int(member[0][3:])-1}")
@@ -216,16 +205,16 @@ 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"
(Config.app_path / f"config/{type_right[0]}Config/脚本_{index}").rename(
Config.app_path / f"config/{type_right[0]}Config/脚本_0"
)
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}"
(Config.app_path / f"config/{type_left[0]}Config/脚本_{index-1}").rename(
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}"
(Config.app_path / f"config/{type_right[0]}Config/脚本_0").rename(
Config.app_path / f"config/{type_right[0]}Config/脚本_{index-1}"
)
self.change_queue("脚本_0", f"脚本_{index-1}")
@@ -250,16 +239,16 @@ class MemberManager(QWidget):
self.member_manager.clear_SettingBox()
(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}").rename(
self.config.app_path / f"config/{type_left[0]}Config/脚本_0",
(Config.app_path / f"config/{type_left[0]}Config/脚本_{index}").rename(
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}",
(Config.app_path / f"config/{type_right[0]}Config/脚本_{index+1}").rename(
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}",
(Config.app_path / f"config/{type_left[0]}Config/脚本_0").rename(
Config.app_path / f"config/{type_left[0]}Config/脚本_{index+1}",
)
self.change_queue("脚本_0", f"脚本_{index+1}")
@@ -267,7 +256,7 @@ class MemberManager(QWidget):
def show_password(self):
if self.config.PASSWORD == "":
if Config.PASSWORD == "":
choice = InputMessageBox(
self,
"请输入管理密钥",
@@ -275,21 +264,21 @@ class MemberManager(QWidget):
"密码",
)
if choice.exec() and choice.input.text() != "":
self.config.PASSWORD = choice.input.text()
Config.PASSWORD = choice.input.text()
self.member_manager.script_list[
int(self.member_manager.pivot.currentRouteKey()[3:]) - 1
].user_setting.user_list.update_user_info("normal")
self.key.setIcon(FluentIcon.VIEW)
self.key.setChecked(True)
else:
self.config.PASSWORD = ""
Config.PASSWORD = ""
self.member_manager.script_list[
int(self.member_manager.pivot.currentRouteKey()[3:]) - 1
].user_setting.user_list.update_user_info("normal")
self.key.setIcon(FluentIcon.HIDE)
self.key.setChecked(False)
else:
self.config.PASSWORD = ""
Config.PASSWORD = ""
self.member_manager.script_list[
int(self.member_manager.pivot.currentRouteKey()[3:]) - 1
].user_setting.user_list.update_user_info("normal")
@@ -299,10 +288,8 @@ class MemberManager(QWidget):
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"
):
if (Config.app_path / "config/QueueConfig").exists():
for json_file in (Config.app_path / "config/QueueConfig").glob("*.json"):
with json_file.open("r", encoding="utf-8") as f:
data = json.load(f)
@@ -325,12 +312,10 @@ class MemberManager(QWidget):
class MemberSettingBox(QWidget):
def __init__(self, config: AppConfig, crypto: CryptoHandler, parent=None):
def __init__(self, parent=None):
super().__init__(parent)
self.setObjectName("脚本管理")
self.config = config
self.crypto = crypto
self.pivot = Pivot(self)
self.stackedWidget = QStackedWidget(self)
@@ -354,16 +339,16 @@ class MemberSettingBox(QWidget):
member_list = self.search_member()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.maa_config,
Config.app_path / "config/临时.json",
Config.maa_config,
)
self.config.clear_maa_config()
Config.clear_maa_config()
for member in member_list:
if member[1] == "Maa":
self.config.open_database(member[1], member[0])
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()
if (Config.app_path / "config/临时.json").exists():
(Config.app_path / "config/临时.json").unlink()
self.switch_SettingBox(index)
@@ -381,11 +366,11 @@ class MemberSettingBox(QWidget):
type = [_[1] for _ in member_list if _[0] == f"脚本_{index}"]
qconfig.load(
self.config.app_path
Config.app_path
/ f"config/{type[0]}Config/{self.script_list[index-1].objectName()}/config.json",
self.config.maa_config,
Config.maa_config,
)
self.config.open_database(type[0], self.script_list[index - 1].objectName())
Config.open_database(type[0], self.script_list[index - 1].objectName())
self.script_list[index - 1].user_setting.user_list.update_user_info("normal")
if if_chang_pivot:
@@ -401,18 +386,18 @@ class MemberSettingBox(QWidget):
self.script_list.clear()
self.pivot.clear()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.maa_config,
Config.app_path / "config/临时.json",
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()
Config.clear_maa_config()
if (Config.app_path / "config/临时.json").exists():
(Config.app_path / "config/临时.json").unlink()
Config.close_database()
def add_MaaSettingBox(self, uid: int) -> None:
"""添加一个MAA设置界面"""
maa_setting_box = MaaSettingBox(self.config, self.crypto, uid, self)
maa_setting_box = MaaSettingBox(uid, self)
self.script_list.append(maa_setting_box)
@@ -425,8 +410,8 @@ class MemberSettingBox(QWidget):
member_list = []
if (self.config.app_path / "config/MaaConfig").exists():
for subdir in (self.config.app_path / "config/MaaConfig").iterdir():
if (Config.app_path / "config/MaaConfig").exists():
for subdir in (Config.app_path / "config/MaaConfig").iterdir():
if subdir.is_dir():
member_list.append([subdir.name, "Maa"])
@@ -435,14 +420,11 @@ class MemberSettingBox(QWidget):
class MaaSettingBox(QWidget):
def __init__(self, config: AppConfig, crypto: CryptoHandler, uid: int, parent=None):
def __init__(self, uid: int, parent=None):
super().__init__(parent)
self.setObjectName(f"脚本_{uid}")
self.config = config
self.crypto = crypto
layout = QVBoxLayout()
scrollArea = ScrollArea()
@@ -451,10 +433,8 @@ class MaaSettingBox(QWidget):
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)
self.app_setting = self.AppSettingCard(self, self.config, uid)
self.user_setting = self.UserSettingCard(
self, self.objectName(), self.config, self.crypto
)
self.app_setting = self.AppSettingCard(self, uid)
self.user_setting = self.UserSettingCard(self, self.objectName())
content_layout.addWidget(self.app_setting)
content_layout.addWidget(self.user_setting)
@@ -468,12 +448,11 @@ class MaaSettingBox(QWidget):
class AppSettingCard(HeaderCardWidget):
def __init__(self, parent=None, config: AppConfig = None, uid: int = None):
def __init__(self, parent=None, uid: int = None):
super().__init__(parent)
self.setTitle("MAA实例")
self.config = config
self.uid = uid
Layout = QVBoxLayout()
@@ -483,13 +462,13 @@ class MaaSettingBox(QWidget):
FluentIcon.EDIT,
"实例名称",
"用于标识MAA实例的名称",
self.config.maa_config.MaaSet_Name,
Config.maa_config.MaaSet_Name,
)
self.card_Path = PushSettingCard(
"选择文件夹",
FluentIcon.FOLDER,
"MAA目录",
self.config.maa_config.get(self.config.maa_config.MaaSet_Path),
Config.maa_config.get(Config.maa_config.MaaSet_Path),
)
self.card_Set = PushSettingCard(
"设置",
@@ -497,12 +476,12 @@ class MaaSettingBox(QWidget):
"MAA全局配置",
"简洁模式下MAA将继承全局配置",
)
self.RunSet = self.RunSetSettingCard(self, self.config.maa_config)
self.RunSet = self.RunSetSettingCard(self)
self.card_Path.clicked.connect(self.PathClicked)
self.config.maa_config.MaaSet_Path.valueChanged.connect(
Config.maa_config.MaaSet_Path.valueChanged.connect(
lambda: self.card_Path.setContent(
self.config.maa_config.get(self.config.maa_config.MaaSet_Path)
Config.maa_config.get(Config.maa_config.MaaSet_Path)
)
)
@@ -518,8 +497,7 @@ class MaaSettingBox(QWidget):
folder = QFileDialog.getExistingDirectory(self, "选择MAA目录", "./")
if (
not folder
or self.config.maa_config.get(self.config.maa_config.MaaSet_Path)
== folder
or Config.maa_config.get(Config.maa_config.MaaSet_Path) == folder
):
logger.warning("选择MAA目录时未选择文件夹或未更改文件夹")
MainInfoBar.push_info_bar(
@@ -536,20 +514,19 @@ class MaaSettingBox(QWidget):
)
return None
(self.config.app_path / f"config/MaaConfig/脚本_{self.uid}/Default").mkdir(
(Config.app_path / f"config/MaaConfig/脚本_{self.uid}/Default").mkdir(
parents=True, exist_ok=True
)
shutil.copy(
Path(folder) / "config/gui.json",
self.config.app_path
/ f"config/MaaConfig/脚本_{self.uid}/Default/gui.json",
Config.app_path / f"config/MaaConfig/脚本_{self.uid}/Default/gui.json",
)
self.config.maa_config.set(self.config.maa_config.MaaSet_Path, folder)
Config.maa_config.set(Config.maa_config.MaaSet_Path, folder)
self.card_Path.setContent(folder)
class RunSetSettingCard(ExpandGroupSettingCard):
def __init__(self, parent=None, maa_config: MaaConfig = None):
def __init__(self, parent=None):
super().__init__(
FluentIcon.SETTING,
"运行",
@@ -557,8 +534,6 @@ class MaaSettingBox(QWidget):
parent,
)
self.maa_config = maa_config
widget = QWidget()
Layout = QVBoxLayout(widget)
@@ -567,7 +542,7 @@ class MaaSettingBox(QWidget):
FluentIcon.PAGE_RIGHT,
"剿灭代理超时限制",
"MAA日志无变化时间超过该阈值视为超时单位为分钟",
self.maa_config.RunSet_AnnihilationTimeLimit,
Config.maa_config.RunSet_AnnihilationTimeLimit,
)
self.RoutineTimeLimit = SpinBoxSettingCard(
@@ -575,7 +550,7 @@ class MaaSettingBox(QWidget):
FluentIcon.PAGE_RIGHT,
"自动代理超时限制",
"MAA日志无变化时间超过该阈值视为超时单位为分钟",
self.maa_config.RunSet_RoutineTimeLimit,
Config.maa_config.RunSet_RoutineTimeLimit,
)
self.RunTimesLimit = SpinBoxSettingCard(
@@ -583,7 +558,7 @@ class MaaSettingBox(QWidget):
FluentIcon.PAGE_RIGHT,
"代理重试次数限制",
"若超过该次数限制仍未完成代理,视为代理失败",
self.maa_config.RunSet_RunTimesLimit,
Config.maa_config.RunSet_RunTimesLimit,
)
Layout.addWidget(self.AnnihilationTimeLimit)
@@ -601,20 +576,16 @@ class MaaSettingBox(QWidget):
self,
parent=None,
name: str = None,
config: AppConfig = None,
crypto: CryptoHandler = None,
):
super().__init__(parent)
self.setTitle("用户列表")
self.config = config
self.crypto = crypto
self.name = name
Layout = QVBoxLayout()
self.user_list = self.UserListBox(self.name, self.config, self.crypto, self)
self.user_list = self.UserListBox(self.name, self)
self.tools = CommandBar()
self.tools.addActions(
@@ -656,8 +627,8 @@ class MaaSettingBox(QWidget):
def set_more(self):
self.config.cur.execute("SELECT * FROM adminx WHERE True")
data = self.config.cur.fetchall()
Config.cur.execute("SELECT * FROM adminx WHERE True")
data = Config.cur.fetchall()
if self.user_list.pivot.currentRouteKey() == f"{self.name}_简洁用户列表":
@@ -685,12 +656,12 @@ class MaaSettingBox(QWidget):
)
if file_path != "":
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure"
).mkdir(parents=True, exist_ok=True)
shutil.copy(
file_path,
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure",
)
else:
@@ -712,13 +683,9 @@ class MaaSettingBox(QWidget):
class UserListBox(QWidget):
def __init__(
self, name: str, config: AppConfig, crypto: CryptoHandler, parent=None
):
def __init__(self, name: str, parent=None):
super().__init__(parent)
self.setObjectName(f"{name}_用户列表")
self.config = config
self.crypto = crypto
self.name = name
@@ -874,8 +841,8 @@ class MaaSettingBox(QWidget):
"""将本地数据库中的用户配置同步至GUI的用户管理界面"""
# 读入本地数据库
self.config.cur.execute("SELECT * FROM adminx WHERE True")
data = self.config.cur.fetchall()
Config.cur.execute("SELECT * FROM adminx WHERE True")
data = Config.cur.fetchall()
# 处理部分模式调整
if operation == "read_only":
@@ -946,15 +913,13 @@ class MaaSettingBox(QWidget):
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
elif j == 12:
if self.config.PASSWORD == "":
if Config.PASSWORD == "":
item = QTableWidgetItem("******")
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
else:
result = self.crypto.decryptx(
value, self.config.PASSWORD
)
result = Crypto.decryptx(value, Config.PASSWORD)
item = QTableWidgetItem(result)
if result == "管理密钥错误":
item.setFlags(
@@ -1022,15 +987,13 @@ class MaaSettingBox(QWidget):
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
elif j == 12:
if self.config.PASSWORD == "":
if Config.PASSWORD == "":
item = QTableWidgetItem("******")
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
else:
result = self.crypto.decryptx(
value, self.config.PASSWORD
)
result = Crypto.decryptx(value, Config.PASSWORD)
item = QTableWidgetItem(result)
if result == "管理密钥错误":
item.setFlags(
@@ -1094,9 +1057,7 @@ class MaaSettingBox(QWidget):
if item.column() in [6, 7, 8]: # 关卡号
# 导入与应用特殊关卡规则
games = {}
with self.config.gameid_path.open(
mode="r", encoding="utf-8"
) as f:
with Config.gameid_path.open(mode="r", encoding="utf-8") as f:
gameids = f.readlines()
for line in gameids:
if "" in line:
@@ -1104,11 +1065,11 @@ class MaaSettingBox(QWidget):
games[game_in.strip()] = game_out.strip()
text = games.get(text, text)
if item.column() == 11: # 密码
text = self.crypto.encryptx(text)
text = Crypto.encryptx(text)
# 保存至本地数据库
if text != "":
self.config.cur.execute(
Config.cur.execute(
f"UPDATE adminx SET {self.user_column[self.userlist_simple_index.index(item.column())]} = ? WHERE mode = 'simple' AND uid = ?",
(text, item.row()),
)
@@ -1122,15 +1083,15 @@ class MaaSettingBox(QWidget):
self.update_user_info("normal")
return None
if item.column() == 6: # 密码
text = self.crypto.encryptx(text)
text = Crypto.encryptx(text)
# 保存至本地数据库
if text != "":
self.config.cur.execute(
Config.cur.execute(
f"UPDATE adminx SET {self.user_column[self.userlist_beta_index.index(item.column())]} = ? WHERE mode = 'beta' AND uid = ?",
(text, item.row()),
)
self.config.db.commit()
Config.db.commit()
# 同步一般用户信息更改到GUI
self.update_user_info("normal")
@@ -1156,7 +1117,7 @@ class MaaSettingBox(QWidget):
# or (
# index == 0
# and not (
# self.config.app_path
# Config.app_path
# / f"data/MAAconfig/{self.user_mode_list[index]}/{row}/{column}/gui.json"
# ).exists()
# )
@@ -1173,14 +1134,14 @@ class MaaSettingBox(QWidget):
# 服务器
if mode == 0 and column == "server":
server_list = ["Official", "Bilibili"]
self.config.cur.execute(
Config.cur.execute(
f"UPDATE adminx SET server = ? WHERE mode = 'simple' AND uid = ?",
(server_list[index], row),
)
# 其它(启用/禁用)
elif index in [0, 1]:
index_list = ["y", "n"]
self.config.cur.execute(
Config.cur.execute(
f"UPDATE adminx SET {column} = ? WHERE mode = ? AND uid = ?",
(
index_list[index],
@@ -1188,7 +1149,7 @@ class MaaSettingBox(QWidget):
row,
),
)
self.config.db.commit()
Config.db.commit()
# 同步用户组件信息修改到GUI
self.update_user_info("normal")
@@ -1201,15 +1162,15 @@ class MaaSettingBox(QWidget):
set_book = ["simple", self.user_list_simple.rowCount()]
elif "高级用户列表" in self.pivot.currentRouteKey():
set_book = ["beta", self.user_list_beta.rowCount()]
self.config.cur.execute(
Config.cur.execute(
"INSERT INTO adminx VALUES('新用户','手机号码(官服)/B站IDB服','Official',-1,'y','2000-01-01','1-7','-','-','n','n','n',?,'',0,?,?)",
(
self.crypto.encryptx("未设置"),
Crypto.encryptx("未设置"),
set_book[0],
set_book[1],
),
)
self.config.db.commit(),
Config.db.commit(),
# 同步新用户至GUI
self.update_user_info("normal")
@@ -1248,14 +1209,14 @@ class MaaSettingBox(QWidget):
return None
# 确认待删除用户信息
self.config.cur.execute(
Config.cur.execute(
"SELECT * FROM adminx WHERE mode = ? AND uid = ?",
(
self.user_mode_list[mode],
row,
),
)
data = self.config.cur.fetchall()
data = Config.cur.fetchall()
choice = MessageBox(
"确认",
f"确定要删除用户 {data[0][0]} 吗?",
@@ -1273,26 +1234,26 @@ class MaaSettingBox(QWidget):
# 删除用户
if choice.exec():
# 删除所选用户
self.config.cur.execute(
Config.cur.execute(
"DELETE FROM adminx WHERE mode = ? AND uid = ?",
(
self.user_mode_list[mode],
row,
),
)
self.config.db.commit()
Config.db.commit()
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).exists():
shutil.rmtree(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
)
# 后续用户补位
for i in range(row + 1, current_numb):
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
i - 1,
@@ -1300,16 +1261,16 @@ class MaaSettingBox(QWidget):
i,
),
)
self.config.db.commit()
Config.db.commit()
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i}"
)
@@ -1350,7 +1311,7 @@ class MaaSettingBox(QWidget):
if row == 0:
return None
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
-1,
@@ -1358,7 +1319,7 @@ class MaaSettingBox(QWidget):
row,
),
)
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
row,
@@ -1366,7 +1327,7 @@ class MaaSettingBox(QWidget):
row - 1,
),
)
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
row - 1,
@@ -1374,39 +1335,39 @@ class MaaSettingBox(QWidget):
-1,
),
)
self.config.db.commit()
Config.db.commit()
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
)
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row - 1}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row - 1}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
)
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row - 1}"
)
@@ -1452,7 +1413,7 @@ class MaaSettingBox(QWidget):
if row == current_numb - 1:
return None
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
-1,
@@ -1460,7 +1421,7 @@ class MaaSettingBox(QWidget):
row,
),
)
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
row,
@@ -1468,7 +1429,7 @@ class MaaSettingBox(QWidget):
row + 1,
),
)
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
row + 1,
@@ -1476,39 +1437,39 @@ class MaaSettingBox(QWidget):
-1,
),
)
self.config.db.commit()
Config.db.commit()
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
)
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row + 1}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row + 1}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
)
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{-1}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row + 1}"
)
@@ -1550,14 +1511,14 @@ class MaaSettingBox(QWidget):
return None
# 确认待切换用户信息
self.config.cur.execute(
Config.cur.execute(
"SELECT * FROM adminx WHERE mode = ? AND uid = ?",
(
self.user_mode_list[mode],
row,
),
)
data = self.config.cur.fetchall()
data = Config.cur.fetchall()
mode_list = ["简洁", "高级"]
choice = MessageBox(
@@ -1576,15 +1537,15 @@ class MaaSettingBox(QWidget):
# 切换用户
if choice.exec():
self.config.cur.execute("SELECT * FROM adminx WHERE True")
data = self.config.cur.fetchall()
Config.cur.execute("SELECT * FROM adminx WHERE True")
data = Config.cur.fetchall()
if mode == 0:
current_numb = self.user_list_simple.rowCount()
elif mode == 1:
current_numb = self.user_list_beta.rowCount()
# 切换所选用户
other_numb = len(data) - current_numb
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET mode = ?, uid = ? WHERE mode = ? AND uid = ?",
(
self.user_mode_list[1 - mode],
@@ -1593,20 +1554,20 @@ class MaaSettingBox(QWidget):
row,
),
)
self.config.db.commit()
Config.db.commit()
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}"
).exists():
shutil.move(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{row}",
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[1 - mode]}/{other_numb}",
)
# 后续用户补位
for i in range(row + 1, current_numb):
self.config.cur.execute(
Config.cur.execute(
"UPDATE adminx SET uid = ? WHERE mode = ? AND uid = ?",
(
i - 1,
@@ -1614,16 +1575,16 @@ class MaaSettingBox(QWidget):
i,
),
)
self.config.db.commit(),
Config.db.commit(),
if (
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i}"
).exists():
(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i}"
).rename(
self.config.app_path
Config.app_path
/ f"config/MaaConfig/{self.name}/{self.user_mode_list[mode]}/{i - 1}"
)