feat(core): 恢复基本所有原功能,数据文件版本更新

This commit is contained in:
DLmaster
2025-01-27 10:38:17 +08:00
parent c625354dec
commit 126799d2a2
61 changed files with 836 additions and 8093 deletions

View File

@@ -44,12 +44,10 @@ from qfluentwidgets import (
MessageBox,
HeaderCardWidget,
CommandBar,
setTheme,
Theme,
ExpandGroupSettingCard,
PushSettingCard,
)
from PySide6 import QtCore
from PySide6.QtCore import Qt
from functools import partial
from pathlib import Path
from typing import List
@@ -57,8 +55,8 @@ import datetime
import json
import shutil
from app.core import Config, MainInfoBar
from app.services import Notify, Crypto
from app.core import Config, MainInfoBar, Task_manager
from app.services import Crypto
from .Widget import (
InputMessageBox,
LineEditSettingCard,
@@ -77,8 +75,6 @@ class MemberManager(QWidget):
self.setObjectName("脚本管理")
setTheme(Theme.AUTO)
layout = QVBoxLayout(self)
self.tools = CommandBar()
@@ -157,6 +153,17 @@ class MemberManager(QWidget):
name = self.member_manager.pivot.currentRouteKey()
if name == None:
logger.warning("删除脚本实例时未选择脚本实例")
MainInfoBar.push_info_bar(
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
)
return None
if len(Config.running_list) > 0:
logger.warning("删除脚本实例时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
choice = MessageBox(
@@ -192,12 +199,27 @@ class MemberManager(QWidget):
name = self.member_manager.pivot.currentRouteKey()
if name == None:
logger.warning("向左移动脚本实例时未选择脚本实例")
MainInfoBar.push_info_bar(
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
)
return None
member_list = self.member_manager.search_member()
index = int(name[3:])
if index == 1:
logger.warning("向左移动脚本实例时已到达最左端")
MainInfoBar.push_info_bar(
"warning", "已经是第一个脚本实例", "无法向左移动", 5000
)
return None
if len(Config.running_list) > 0:
logger.warning("向左移动脚本实例时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
type_right = [_[1] for _ in member_list if _[0] == name]
@@ -226,12 +248,27 @@ class MemberManager(QWidget):
name = self.member_manager.pivot.currentRouteKey()
if name == None:
logger.warning("向右移动脚本实例时未选择脚本实例")
MainInfoBar.push_info_bar(
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
)
return None
member_list = self.member_manager.search_member()
index = int(name[3:])
if index == len(member_list):
logger.warning("向右移动脚本实例时已到达最右端")
MainInfoBar.push_info_bar(
"warning", "已经是最后一个脚本实例", "无法向右移动", 5000
)
return None
if len(Config.running_list) > 0:
logger.warning("向右移动脚本实例时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
type_left = [_[1] for _ in member_list if _[0] == name]
@@ -323,7 +360,7 @@ class MemberSettingBox(QWidget):
self.script_list: List[MaaSettingBox] = []
self.Layout.addWidget(self.pivot, 0, QtCore.Qt.AlignHCenter)
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
@@ -433,7 +470,7 @@ class MaaSettingBox(QWidget):
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)
self.app_setting = self.AppSettingCard(self, uid)
self.app_setting = self.AppSettingCard(self, self.objectName())
self.user_setting = self.UserSettingCard(self, self.objectName())
content_layout.addWidget(self.app_setting)
@@ -448,12 +485,12 @@ class MaaSettingBox(QWidget):
class AppSettingCard(HeaderCardWidget):
def __init__(self, parent=None, uid: int = None):
def __init__(self, parent=None, name: str = None):
super().__init__(parent)
self.setTitle("MAA实例")
self.uid = uid
self.name = name
Layout = QVBoxLayout()
@@ -484,6 +521,9 @@ class MaaSettingBox(QWidget):
Config.maa_config.get(Config.maa_config.MaaSet_Path)
)
)
self.card_Set.clicked.connect(
lambda: Task_manager.add_task("设置MAA_全局", self.name, None)
)
Layout.addWidget(self.card_Name)
Layout.addWidget(self.card_Path)
@@ -514,12 +554,12 @@ class MaaSettingBox(QWidget):
)
return None
(Config.app_path / f"config/MaaConfig/脚本_{self.uid}/Default").mkdir(
(Config.app_path / f"config/MaaConfig/{self.name}/Default").mkdir(
parents=True, exist_ok=True
)
shutil.copy(
Path(folder) / "config/gui.json",
Config.app_path / f"config/MaaConfig/脚本_{self.uid}/Default/gui.json",
Config.app_path / f"config/MaaConfig/{self.name}/Default/gui.json",
)
Config.maa_config.set(Config.maa_config.MaaSet_Path, folder)
self.card_Path.setContent(folder)
@@ -572,11 +612,7 @@ class MaaSettingBox(QWidget):
class UserSettingCard(HeaderCardWidget):
def __init__(
self,
parent=None,
name: str = None,
):
def __init__(self, parent=None, name: str = None):
super().__init__(parent)
self.setTitle("用户列表")
@@ -626,6 +662,14 @@ class MaaSettingBox(QWidget):
self.viewLayout.addLayout(Layout)
def set_more(self):
"""用户选项配置"""
if len(Config.running_list) > 0:
logger.warning("配置用户选项时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
Config.cur.execute("SELECT * FROM adminx WHERE True")
data = Config.cur.fetchall()
@@ -665,21 +709,39 @@ class MaaSettingBox(QWidget):
/ f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure",
)
else:
choice = MessageBox(
"错误",
"未选择自定义基建文件",
self.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent(),
logger.warning("未选择自定义基建文件")
MainInfoBar.push_info_bar(
"warning", "警告", "未选择自定义基建文件", 5000
)
choice.cancelButton.hide()
choice.buttonLayout.insertStretch(1)
if choice.exec():
pass
elif self.user_list.pivot.currentRouteKey() == f"{self.name}_高级用户列表":
user_list = [_[0] for _ in data if _[15] == "beta"]
set_list = ["MAA日常配置", "MAA剿灭配置"]
choice = SetMessageBox(
self.parent().parent().parent().parent().parent().parent().parent(),
"用户选项配置",
["选择要配置的用户", "选择要配置的选项"],
[user_list, set_list],
)
if (
choice.exec()
and choice.input[0].currentIndex() != -1
and choice.input[1].currentIndex() != -1
):
set_book = ["routine", "annihilation"]
Task_manager.add_task(
"设置MAA_用户",
self.name,
{
"SetMaaInfo": {
"UserId": choice.input[0].currentIndex(),
"SetType": set_book[choice.input[1].currentIndex()],
}
},
)
class UserListBox(QWidget):
@@ -762,9 +824,7 @@ class MaaSettingBox(QWidget):
self.user_list_simple.setBorderVisible(True)
self.user_list_simple.setBorderRadius(10)
self.user_list_simple.setWordWrap(False)
self.user_list_simple.setVerticalScrollBarPolicy(
QtCore.Qt.ScrollBarAlwaysOff
)
self.user_list_simple.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.user_list_simple.setHorizontalHeaderLabels(
[
"用户名",
@@ -789,9 +849,7 @@ class MaaSettingBox(QWidget):
self.user_list_beta.setBorderVisible(True)
self.user_list_beta.setBorderRadius(10)
self.user_list_beta.setWordWrap(False)
self.user_list_beta.setVerticalScrollBarPolicy(
QtCore.Qt.ScrollBarAlwaysOff
)
self.user_list_beta.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.user_list_beta.setHorizontalHeaderLabels(
[
"用户名",
@@ -818,7 +876,7 @@ class MaaSettingBox(QWidget):
routeKey=f"{name}_高级用户列表", text=f"高级用户列表"
)
self.Layout.addWidget(self.pivot, 0, QtCore.Qt.AlignHCenter)
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
@@ -909,22 +967,17 @@ class MaaSettingBox(QWidget):
item = QTableWidgetItem(
f"今日已代理{data_simple[i][14]}"
)
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
elif j == 12:
if Config.PASSWORD == "":
item = QTableWidgetItem("******")
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
else:
result = Crypto.decryptx(value, Config.PASSWORD)
item = QTableWidgetItem(result)
if result == "管理密钥错误":
item.setFlags(
QtCore.Qt.ItemIsSelectable
| QtCore.Qt.ItemIsEnabled
Qt.ItemIsSelectable | Qt.ItemIsEnabled
)
else:
item = QTableWidgetItem(str(value))
@@ -983,22 +1036,17 @@ class MaaSettingBox(QWidget):
item = QTableWidgetItem(
f"今日已代理{data_beta[i][14]}"
)
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
elif j == 12:
if Config.PASSWORD == "":
item = QTableWidgetItem("******")
item.setFlags(
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
)
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
else:
result = Crypto.decryptx(value, Config.PASSWORD)
item = QTableWidgetItem(result)
if result == "管理密钥错误":
item.setFlags(
QtCore.Qt.ItemIsSelectable
| QtCore.Qt.ItemIsEnabled
Qt.ItemIsSelectable | Qt.ItemIsEnabled
)
else:
item = QTableWidgetItem(str(value))
@@ -1178,6 +1226,13 @@ class MaaSettingBox(QWidget):
def del_user(self) -> None:
"""删除选中的首位用户"""
if len(Config.running_list) > 0:
logger.warning("删除用户时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
# 获取对应的行索引
if "简洁用户列表" in self.pivot.currentRouteKey():
row = self.user_list_simple.currentRow()
@@ -1190,23 +1245,11 @@ class MaaSettingBox(QWidget):
# 判断选择合理性
if row == -1:
choice = MessageBox(
"错误",
"请选中一个用户后再执行删除操作",
self.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent(),
logger.warning("删除用户时未选中用户")
MainInfoBar.push_info_bar(
"warning", "未选择用户", "请先选择一个用户", 5000
)
choice.cancelButton.hide()
choice.buttonLayout.insertStretch(1)
if choice.exec():
return None
return None
# 确认待删除用户信息
Config.cur.execute(
@@ -1280,6 +1323,13 @@ class MaaSettingBox(QWidget):
def up_user(self):
"""向上移动用户"""
if len(Config.running_list) > 0:
logger.warning("向上移动用户时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
# 获取对应的行索引
if "简洁用户列表" in self.pivot.currentRouteKey():
row = self.user_list_simple.currentRow()
@@ -1290,23 +1340,11 @@ class MaaSettingBox(QWidget):
# 判断选择合理性
if row == -1:
choice = MessageBox(
"错误",
"请选中一个用户后再执行向下移动操作",
self.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent(),
logger.warning("向上移动用户时未选中用户")
MainInfoBar.push_info_bar(
"warning", "未选中用户", "请先选择一个用户", 5000
)
choice.cancelButton.hide()
choice.buttonLayout.insertStretch(1)
if choice.exec():
return None
return None
if row == 0:
return None
@@ -1380,6 +1418,13 @@ class MaaSettingBox(QWidget):
def down_user(self):
"""向下移动用户"""
if len(Config.running_list) > 0:
logger.warning("向下移动用户时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
# 获取对应的行索引
if "简洁用户列表" in self.pivot.currentRouteKey():
row = self.user_list_simple.currentRow()
@@ -1392,23 +1437,11 @@ class MaaSettingBox(QWidget):
# 判断选择合理性
if row == -1:
choice = MessageBox(
"错误",
"请选中一个用户后再执行向下移动操作",
self.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent(),
logger.warning("向下移动用户时未选中用户")
MainInfoBar.push_info_bar(
"warning", "未选中用户", "请先选择一个用户", 5000
)
choice.cancelButton.hide()
choice.buttonLayout.insertStretch(1)
if choice.exec():
return None
return None
if row == current_numb - 1:
return None
@@ -1482,6 +1515,13 @@ class MaaSettingBox(QWidget):
def switch_user(self) -> None:
"""切换用户配置模式"""
if len(Config.running_list) > 0:
logger.warning("切换用户配置模式时调度队列未停止运行")
MainInfoBar.push_info_bar(
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
)
return None
# 获取当前用户配置模式信息
if "简洁用户列表" in self.pivot.currentRouteKey():
row = self.user_list_simple.currentRow()
@@ -1492,23 +1532,11 @@ class MaaSettingBox(QWidget):
# 判断选择合理性
if row == -1:
choice = MessageBox(
"错误",
"请选中一个用户后再执行切换操作",
self.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent()
.parent(),
logger.warning("切换用户配置模式时未选中用户")
MainInfoBar.push_info_bar(
"warning", "未选中用户", "请先选择一个用户", 5000
)
choice.cancelButton.hide()
choice.buttonLayout.insertStretch(1)
if choice.exec():
return None
return None
# 确认待切换用户信息
Config.cur.execute(