feat(core): 重构日志记录,载入更多日志记录项
This commit is contained in:
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
@@ -48,7 +47,7 @@ from PySide6.QtGui import QTextCursor
|
||||
from typing import List, Dict
|
||||
|
||||
|
||||
from app.core import Config, TaskManager, Task, MainInfoBar, SoundPlayer
|
||||
from app.core import Config, TaskManager, Task, MainInfoBar, logger
|
||||
from .Widget import StatefulItemCard, ComboBoxMessageBox, PivotArea
|
||||
|
||||
|
||||
@@ -59,10 +58,12 @@ class DispatchCenter(QWidget):
|
||||
|
||||
self.setObjectName("调度中枢")
|
||||
|
||||
# 添加任务按钮
|
||||
self.multi_button = PushButton(FluentIcon.ADD, "添加任务", self)
|
||||
self.multi_button.setToolTip("添加任务")
|
||||
self.multi_button.clicked.connect(self.start_multi_task)
|
||||
|
||||
# 电源动作设置组件
|
||||
self.power_combox = ComboBox()
|
||||
self.power_combox.addItem("无动作", userData="NoAction")
|
||||
self.power_combox.addItem("退出软件", userData="KillSelf")
|
||||
@@ -72,15 +73,18 @@ class DispatchCenter(QWidget):
|
||||
self.power_combox.setCurrentText("无动作")
|
||||
self.power_combox.currentIndexChanged.connect(self.set_power_sign)
|
||||
|
||||
# 导航栏
|
||||
self.pivotArea = PivotArea(self)
|
||||
self.pivot = self.pivotArea.pivot
|
||||
|
||||
# 导航页面组
|
||||
self.stackedWidget = QStackedWidget(self)
|
||||
self.stackedWidget.setContentsMargins(0, 0, 0, 0)
|
||||
self.stackedWidget.setStyleSheet("background: transparent; border: none;")
|
||||
|
||||
self.script_list: Dict[str, DispatchCenter.DispatchBox] = {}
|
||||
|
||||
# 添加主调度台
|
||||
dispatch_box = self.DispatchBox("主调度台", self)
|
||||
self.script_list["主调度台"] = dispatch_box
|
||||
self.stackedWidget.addWidget(self.script_list["主调度台"])
|
||||
@@ -91,6 +95,7 @@ class DispatchCenter(QWidget):
|
||||
icon=FluentIcon.CAFE,
|
||||
)
|
||||
|
||||
# 顶栏组合
|
||||
h_layout = QHBoxLayout()
|
||||
h_layout.addWidget(self.multi_button)
|
||||
h_layout.addWidget(self.pivotArea)
|
||||
@@ -108,7 +113,13 @@ class DispatchCenter(QWidget):
|
||||
)
|
||||
|
||||
def add_board(self, task: Task) -> None:
|
||||
"""添加一个调度台界面"""
|
||||
"""
|
||||
为任务添加一个调度台界面并绑定信号
|
||||
|
||||
:param task: 任务对象
|
||||
"""
|
||||
|
||||
logger.info(f"添加调度台:{task.name}", module="调度中枢")
|
||||
|
||||
dispatch_box = self.DispatchBox(task.name, self)
|
||||
|
||||
@@ -129,19 +140,36 @@ class DispatchCenter(QWidget):
|
||||
|
||||
self.pivot.addItem(routeKey=f"调度台_{task.name}", text=f"调度台 {task.name}")
|
||||
|
||||
logger.success(f"调度台 {task.name} 添加成功", module="调度中枢")
|
||||
|
||||
def del_board(self, name: str) -> None:
|
||||
"""删除指定子界面"""
|
||||
"""
|
||||
删除指定子界面
|
||||
|
||||
:param name: 子界面名称
|
||||
"""
|
||||
|
||||
logger.info(f"删除调度台:{name}", module="调度中枢")
|
||||
|
||||
self.pivot.setCurrentItem("主调度台")
|
||||
self.stackedWidget.removeWidget(self.script_list[name])
|
||||
self.script_list[name].deleteLater()
|
||||
self.script_list.pop(name)
|
||||
self.pivot.removeWidget(name)
|
||||
|
||||
logger.success(f"调度台 {name} 删除成功", module="调度中枢")
|
||||
|
||||
def connect_main_board(self, task: Task) -> None:
|
||||
"""连接主调度台"""
|
||||
"""
|
||||
将任务连接到主调度台
|
||||
|
||||
:param task: 任务对象
|
||||
"""
|
||||
|
||||
logger.info(f"主调度台载入任务:{task.name}", module="调度中枢")
|
||||
|
||||
self.script_list["主调度台"].top_bar.Lable.setText(
|
||||
f"{task.name} - {task.mode.replace("_主调度台","")}模式"
|
||||
f"{task.name} - {task.mode.replace('_主调度台','')}模式"
|
||||
)
|
||||
self.script_list["主调度台"].top_bar.Lable.show()
|
||||
self.script_list["主调度台"].top_bar.object.hide()
|
||||
@@ -170,8 +198,17 @@ class DispatchCenter(QWidget):
|
||||
lambda logs: self.disconnect_main_board(task.name, logs)
|
||||
)
|
||||
|
||||
logger.success(f"主调度台成功载入:{task.name} ", module="调度中枢")
|
||||
|
||||
def disconnect_main_board(self, name: str, logs: list) -> None:
|
||||
"""断开主调度台"""
|
||||
"""
|
||||
断开主调度台
|
||||
|
||||
:param name: 任务名称
|
||||
:param logs: 任务日志列表
|
||||
"""
|
||||
|
||||
logger.info(f"主调度台断开任务:{name}", module="调度中枢")
|
||||
|
||||
self.script_list["主调度台"].top_bar.Lable.hide()
|
||||
self.script_list["主调度台"].top_bar.object.show()
|
||||
@@ -191,6 +228,8 @@ class DispatchCenter(QWidget):
|
||||
else:
|
||||
self.script_list["主调度台"].info.log_text.text.setText("没有任务被执行")
|
||||
|
||||
logger.success(f"主调度台成功断开:{name}", module="调度中枢")
|
||||
|
||||
def update_top_bar(self):
|
||||
"""更新顶栏"""
|
||||
|
||||
@@ -253,10 +292,7 @@ class DispatchCenter(QWidget):
|
||||
self.power_combox.currentIndexChanged.connect(self.set_power_sign)
|
||||
logger.warning("没有正在运行的任务,无法设置任务完成后动作")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"没有正在运行的任务",
|
||||
"无法设置任务完成后动作",
|
||||
5000,
|
||||
"warning", "没有正在运行的任务", "无法设置任务完成后动作", 5000
|
||||
)
|
||||
|
||||
else:
|
||||
@@ -264,7 +300,7 @@ class DispatchCenter(QWidget):
|
||||
Config.set_power_sign(self.power_combox.currentData())
|
||||
|
||||
def start_multi_task(self) -> None:
|
||||
"""开始任务"""
|
||||
"""开始多开任务"""
|
||||
|
||||
# 获取所有可用的队列和实例
|
||||
text_list = []
|
||||
@@ -300,7 +336,9 @@ class DispatchCenter(QWidget):
|
||||
if choice.exec() and choice.input[0].currentIndex() != -1:
|
||||
|
||||
if choice.input[0].currentData() in Config.running_list:
|
||||
logger.warning(f"任务已存在:{choice.input[0].currentData()}")
|
||||
logger.warning(
|
||||
f"任务已存在:{choice.input[0].currentData()}", module="调度中枢"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "任务已存在", choice.input[0].currentData(), 5000
|
||||
)
|
||||
@@ -308,7 +346,9 @@ class DispatchCenter(QWidget):
|
||||
|
||||
if "调度队列" in choice.input[0].currentData():
|
||||
|
||||
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
|
||||
logger.info(
|
||||
f"用户添加任务:{choice.input[0].currentData()}", module="调度中枢"
|
||||
)
|
||||
TaskManager.add_task(
|
||||
"自动代理_新调度台",
|
||||
choice.input[0].currentData(),
|
||||
@@ -317,7 +357,9 @@ class DispatchCenter(QWidget):
|
||||
|
||||
elif "脚本" in choice.input[0].currentData():
|
||||
|
||||
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
|
||||
logger.info(
|
||||
f"用户添加任务:{choice.input[0].currentData()}", module="调度中枢"
|
||||
)
|
||||
TaskManager.add_task(
|
||||
"自动代理_新调度台",
|
||||
f"自定义队列 - {choice.input[0].currentData()}",
|
||||
@@ -384,24 +426,26 @@ class DispatchCenter(QWidget):
|
||||
Layout.addWidget(self.main_button)
|
||||
|
||||
def start_main_task(self):
|
||||
"""开始任务"""
|
||||
"""从主调度台开始任务"""
|
||||
|
||||
if self.object.currentIndex() == -1:
|
||||
logger.warning("未选择调度对象")
|
||||
logger.warning("未选择调度对象", module="调度中枢")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择调度对象", "请选择后再开始任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.mode.currentIndex() == -1:
|
||||
logger.warning("未选择调度模式")
|
||||
logger.warning("未选择调度模式", module="调度中枢")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择调度模式", "请选择后再开始任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.object.currentData() in Config.running_list:
|
||||
logger.warning(f"任务已存在:{self.object.currentData()}")
|
||||
logger.warning(
|
||||
f"任务已存在:{self.object.currentData()}", module="调度中枢"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "任务已存在", self.object.currentData(), 5000
|
||||
)
|
||||
@@ -413,7 +457,7 @@ class DispatchCenter(QWidget):
|
||||
== "General"
|
||||
and self.mode.currentData() == "人工排查"
|
||||
):
|
||||
logger.warning("通用脚本类型不存在人工排查功能")
|
||||
logger.warning("通用脚本类型不存在人工排查功能", module="调度中枢")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "不支持的任务", "通用脚本无人工排查功能", 5000
|
||||
)
|
||||
@@ -421,7 +465,9 @@ class DispatchCenter(QWidget):
|
||||
|
||||
if "调度队列" in self.object.currentData():
|
||||
|
||||
logger.info(f"用户添加任务:{self.object.currentData()}")
|
||||
logger.info(
|
||||
f"用户添加任务:{self.object.currentData()}", module="调度中枢"
|
||||
)
|
||||
TaskManager.add_task(
|
||||
f"{self.mode.currentText()}_主调度台",
|
||||
self.object.currentData(),
|
||||
@@ -430,7 +476,9 @@ class DispatchCenter(QWidget):
|
||||
|
||||
elif "脚本" in self.object.currentData():
|
||||
|
||||
logger.info(f"用户添加任务:{self.object.currentData()}")
|
||||
logger.info(
|
||||
f"用户添加任务:{self.object.currentData()}", module="调度中枢"
|
||||
)
|
||||
TaskManager.add_task(
|
||||
f"{self.mode.currentText()}_主调度台",
|
||||
"自定义队列",
|
||||
@@ -476,7 +524,11 @@ class DispatchCenter(QWidget):
|
||||
self.task_cards: List[StatefulItemCard] = []
|
||||
|
||||
def create_task(self, task_list: list):
|
||||
"""创建任务队列"""
|
||||
"""
|
||||
创建任务队列
|
||||
|
||||
:param task_list: 包含任务信息的任务列表
|
||||
"""
|
||||
|
||||
while self.Layout.count() > 0:
|
||||
item = self.Layout.takeAt(0)
|
||||
@@ -495,7 +547,11 @@ class DispatchCenter(QWidget):
|
||||
self.Layout.addStretch(1)
|
||||
|
||||
def update_task(self, task_list: list):
|
||||
"""更新任务队列"""
|
||||
"""
|
||||
更新任务队列信息
|
||||
|
||||
:param task_list: 包含任务信息的任务列表
|
||||
"""
|
||||
|
||||
for i in range(len(task_list)):
|
||||
|
||||
@@ -514,7 +570,11 @@ class DispatchCenter(QWidget):
|
||||
self.user_cards: List[StatefulItemCard] = []
|
||||
|
||||
def create_user(self, user_list: list):
|
||||
"""创建用户队列"""
|
||||
"""
|
||||
创建用户队列
|
||||
|
||||
:param user_list: 包含用户信息的用户列表
|
||||
"""
|
||||
|
||||
while self.Layout.count() > 0:
|
||||
item = self.Layout.takeAt(0)
|
||||
@@ -533,7 +593,11 @@ class DispatchCenter(QWidget):
|
||||
self.Layout.addStretch(1)
|
||||
|
||||
def update_user(self, user_list: list):
|
||||
"""更新用户队列"""
|
||||
"""
|
||||
更新用户队列信息
|
||||
|
||||
:param user_list: 包含用户信息的用户列表
|
||||
"""
|
||||
|
||||
for i in range(len(user_list)):
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
import zipfile
|
||||
import requests
|
||||
import subprocess
|
||||
@@ -46,7 +45,7 @@ from PySide6.QtCore import QThread, Signal, QTimer, QEventLoop
|
||||
|
||||
from typing import List, Dict, Union
|
||||
|
||||
from app.core import Config
|
||||
from app.core import Config, logger
|
||||
from app.services import System
|
||||
|
||||
|
||||
@@ -83,6 +82,8 @@ class DownloadProcess(QThread):
|
||||
|
||||
self.setObjectName(f"DownloadProcess-{url}-{start_byte}-{end_byte}")
|
||||
|
||||
logger.info(f"创建下载子线程:{self.objectName()}", module="下载子线程")
|
||||
|
||||
self.url = url
|
||||
self.start_byte = start_byte
|
||||
self.end_byte = end_byte
|
||||
@@ -97,7 +98,8 @@ class DownloadProcess(QThread):
|
||||
self.download_path.unlink()
|
||||
|
||||
logger.info(
|
||||
f"开始下载:{self.url},范围:{self.start_byte}-{self.end_byte},存储地址:{self.download_path}"
|
||||
f"开始下载:{self.url},范围:{self.start_byte}-{self.end_byte},存储地址:{self.download_path}",
|
||||
module="下载子线程",
|
||||
)
|
||||
|
||||
headers = (
|
||||
@@ -129,13 +131,17 @@ class DownloadProcess(QThread):
|
||||
self.check_times -= 1
|
||||
|
||||
logger.error(
|
||||
f"连接失败:{self.url},状态码:{response.status_code},剩余重试次数:{self.check_times}"
|
||||
f"连接失败:{self.url},状态码:{response.status_code},剩余重试次数:{self.check_times}",
|
||||
module="下载子线程",
|
||||
)
|
||||
|
||||
time.sleep(1)
|
||||
continue
|
||||
|
||||
logger.info(f"连接成功:{self.url},状态码:{response.status_code}")
|
||||
logger.info(
|
||||
f"连接成功:{self.url},状态码:{response.status_code}",
|
||||
module="下载子线程",
|
||||
)
|
||||
|
||||
downloaded_size = 0
|
||||
with self.download_path.open(mode="wb") as f:
|
||||
@@ -155,13 +161,14 @@ class DownloadProcess(QThread):
|
||||
if self.download_path.exists():
|
||||
self.download_path.unlink()
|
||||
self.accomplish.emit(0)
|
||||
logger.info(f"下载中止:{self.url}")
|
||||
logger.info(f"下载中止:{self.url}", module="下载子线程")
|
||||
|
||||
else:
|
||||
|
||||
self.accomplish.emit(time.time() - start_time)
|
||||
logger.success(
|
||||
f"下载完成:{self.url},实际下载大小:{downloaded_size} 字节,耗时:{time.time() - start_time:.2f} 秒"
|
||||
f"下载完成:{self.url},实际下载大小:{downloaded_size} 字节,耗时:{time.time() - start_time:.2f} 秒",
|
||||
module="下载子线程",
|
||||
)
|
||||
|
||||
break
|
||||
@@ -172,7 +179,8 @@ class DownloadProcess(QThread):
|
||||
self.check_times -= 1
|
||||
|
||||
logger.exception(
|
||||
f"下载出错:{self.url},错误信息:{e},剩余重试次数:{self.check_times}"
|
||||
f"下载出错:{self.url},错误信息:{e},剩余重试次数:{self.check_times}",
|
||||
module="下载子线程",
|
||||
)
|
||||
time.sleep(1)
|
||||
|
||||
@@ -181,7 +189,7 @@ class DownloadProcess(QThread):
|
||||
if self.download_path.exists():
|
||||
self.download_path.unlink()
|
||||
self.accomplish.emit(0)
|
||||
logger.error(f"下载失败:{self.url}")
|
||||
logger.error(f"下载失败:{self.url}", module="下载子线程")
|
||||
|
||||
|
||||
class ZipExtractProcess(QThread):
|
||||
@@ -195,6 +203,8 @@ class ZipExtractProcess(QThread):
|
||||
|
||||
self.setObjectName(f"ZipExtractProcess-{name}")
|
||||
|
||||
logger.info(f"创建解压子线程:{self.objectName()}", module="解压子线程")
|
||||
|
||||
self.name = name
|
||||
self.app_path = app_path
|
||||
self.download_path = download_path
|
||||
@@ -204,7 +214,10 @@ class ZipExtractProcess(QThread):
|
||||
|
||||
try:
|
||||
|
||||
logger.info(f"开始解压:{self.download_path} 到 {self.app_path}")
|
||||
logger.info(
|
||||
f"开始解压:{self.download_path} 到 {self.app_path}",
|
||||
module="解压子线程",
|
||||
)
|
||||
|
||||
while True:
|
||||
|
||||
@@ -215,7 +228,10 @@ class ZipExtractProcess(QThread):
|
||||
with zipfile.ZipFile(self.download_path, "r") as zip_ref:
|
||||
zip_ref.extractall(self.app_path)
|
||||
self.accomplish.emit()
|
||||
logger.success(f"解压完成:{self.download_path} 到 {self.app_path}")
|
||||
logger.success(
|
||||
f"解压完成:{self.download_path} 到 {self.app_path}",
|
||||
module="解压子线程",
|
||||
)
|
||||
break
|
||||
except PermissionError:
|
||||
if self.name == "AUTO_MAA":
|
||||
@@ -223,7 +239,10 @@ class ZipExtractProcess(QThread):
|
||||
System.kill_process(self.app_path / "AUTO_MAA.exe")
|
||||
else:
|
||||
self.info.emit(f"解压出错:{self.name}正在运行,正在等待其关闭")
|
||||
logger.warning(f"解压出错:{self.name}正在运行,正在等待其关闭")
|
||||
logger.warning(
|
||||
f"解压出错:{self.name}正在运行,正在等待其关闭",
|
||||
module="解压子线程",
|
||||
)
|
||||
time.sleep(1)
|
||||
|
||||
except Exception as e:
|
||||
@@ -231,7 +250,7 @@ class ZipExtractProcess(QThread):
|
||||
e = str(e)
|
||||
e = "\n".join([e[_ : _ + 75] for _ in range(0, len(e), 75)])
|
||||
self.info.emit(f"解压更新时出错:\n{e}")
|
||||
logger.exception(f"解压更新时出错:{e}")
|
||||
logger.exception(f"解压更新时出错:{e}", module="解压子线程")
|
||||
return None
|
||||
|
||||
|
||||
@@ -277,17 +296,27 @@ class DownloadManager(QDialog):
|
||||
|
||||
def run(self) -> None:
|
||||
|
||||
logger.info(
|
||||
f"开始执行下载任务:{self.name},版本:{version_text(self.version)}",
|
||||
module="下载管理器",
|
||||
)
|
||||
|
||||
if self.name == "AUTO_MAA":
|
||||
if self.config["mode"] == "Proxy":
|
||||
self.test_speed_task1()
|
||||
self.speed_test_accomplish.connect(self.download_task1)
|
||||
self.start_test_speed()
|
||||
self.speed_test_accomplish.connect(self.start_download)
|
||||
elif self.config["mode"] == "MirrorChyan":
|
||||
self.download_task1()
|
||||
self.start_download()
|
||||
elif self.config["mode"] == "MirrorChyan":
|
||||
self.download_task1()
|
||||
self.start_download()
|
||||
|
||||
def get_download_url(self, mode: str) -> Union[str, Dict[str, str]]:
|
||||
"""获取下载链接"""
|
||||
"""
|
||||
生成下载链接
|
||||
|
||||
:param mode: "测速" 或 "下载"
|
||||
:return: 测速模式返回 url 字典,下载模式返回 url 字符串
|
||||
"""
|
||||
|
||||
url_dict = {}
|
||||
|
||||
@@ -362,7 +391,8 @@ class DownloadManager(QDialog):
|
||||
if response.status_code == 200:
|
||||
return response.url
|
||||
|
||||
def test_speed_task1(self) -> None:
|
||||
def start_test_speed(self) -> None:
|
||||
"""启动测速任务,下载4MB文件以测试下载速度"""
|
||||
|
||||
if self.isInterruptionRequested:
|
||||
return None
|
||||
@@ -370,7 +400,7 @@ class DownloadManager(QDialog):
|
||||
url_dict = self.get_download_url("测速")
|
||||
self.test_speed_result: Dict[str, float] = {}
|
||||
|
||||
logger.info(f"测速链接:{url_dict}")
|
||||
logger.info(f"开始测速任务,链接:{url_dict}", module="下载管理器")
|
||||
|
||||
for name, url in url_dict.items():
|
||||
|
||||
@@ -387,10 +417,11 @@ class DownloadManager(QDialog):
|
||||
)
|
||||
self.test_speed_result[name] = -1
|
||||
self.download_process_dict[name].accomplish.connect(
|
||||
partial(self.test_speed_task2, name)
|
||||
partial(self.check_test_speed, name)
|
||||
)
|
||||
|
||||
self.download_process_dict[name].start()
|
||||
|
||||
# 创建防超时定时器,30秒后强制停止测速
|
||||
timer = QTimer(self)
|
||||
timer.setSingleShot(True)
|
||||
timer.timeout.connect(partial(self.kill_speed_test, name))
|
||||
@@ -401,11 +432,22 @@ class DownloadManager(QDialog):
|
||||
self.update_progress(0, 1, 0)
|
||||
|
||||
def kill_speed_test(self, name: str) -> None:
|
||||
"""
|
||||
强制停止测速任务
|
||||
|
||||
:param name: 测速任务的名称
|
||||
"""
|
||||
|
||||
if name in self.download_process_dict:
|
||||
self.download_process_dict[name].requestInterruption()
|
||||
|
||||
def test_speed_task2(self, name: str, t: float) -> None:
|
||||
def check_test_speed(self, name: str, t: float) -> None:
|
||||
"""
|
||||
更新测速子任务wc信息,并检查测速任务是否允许结束
|
||||
|
||||
:param name: 测速任务的名称
|
||||
:param t: 测速任务的耗时
|
||||
"""
|
||||
|
||||
# 计算下载速度
|
||||
if self.isInterruptionRequested:
|
||||
@@ -453,12 +495,13 @@ class DownloadManager(QDialog):
|
||||
|
||||
# 保存测速结果
|
||||
self.config["speed_result"] = self.test_speed_result
|
||||
logger.info(f"测速结果:{self.test_speed_result}")
|
||||
logger.success(f"测速完成,结果:{self.test_speed_result}", module="下载管理器")
|
||||
|
||||
self.update_info("测速完成!")
|
||||
self.speed_test_accomplish.emit()
|
||||
|
||||
def download_task1(self) -> None:
|
||||
def start_download(self) -> None:
|
||||
"""开始下载任务"""
|
||||
|
||||
if self.isInterruptionRequested:
|
||||
return None
|
||||
@@ -466,6 +509,8 @@ class DownloadManager(QDialog):
|
||||
url = self.get_download_url("下载")
|
||||
self.downloaded_size_list: List[List[int, bool]] = []
|
||||
|
||||
logger.info(f"开始下载任务,链接:{url}", module="下载管理器")
|
||||
|
||||
response = requests.head(
|
||||
url,
|
||||
timeout=10,
|
||||
@@ -506,20 +551,27 @@ class DownloadManager(QDialog):
|
||||
)
|
||||
self.downloaded_size_list.append([0, False])
|
||||
self.download_process_dict[f"part{i}"].progress.connect(
|
||||
partial(self.download_task2, i)
|
||||
partial(self.update_download, i)
|
||||
)
|
||||
self.download_process_dict[f"part{i}"].accomplish.connect(
|
||||
partial(self.download_task3, i)
|
||||
partial(self.check_download, i)
|
||||
)
|
||||
self.download_process_dict[f"part{i}"].start()
|
||||
|
||||
def download_task2(self, index: str, current: int) -> None:
|
||||
"""更新下载进度"""
|
||||
def update_download(self, index: str, current: int) -> None:
|
||||
"""
|
||||
更新子任务下载进度,将信息更新到 UI 上
|
||||
|
||||
:param index: 下载任务的索引
|
||||
:param current: 当前下载大小
|
||||
"""
|
||||
|
||||
# 更新指定线程的下载进度
|
||||
self.downloaded_size_list[index][0] = current
|
||||
self.downloaded_size = sum([_[0] for _ in self.downloaded_size_list])
|
||||
self.update_progress(0, self.file_size, self.downloaded_size)
|
||||
|
||||
# 速度每秒更新一次
|
||||
if time.time() - self.last_time >= 1.0:
|
||||
self.speed = (
|
||||
(self.downloaded_size - self.last_download_size)
|
||||
@@ -538,7 +590,13 @@ class DownloadManager(QDialog):
|
||||
f"正在下载:{self.name} 已下载:{self.downloaded_size / 1048576:.2f}/{self.file_size / 1048576:.2f} MB ({self.downloaded_size / self.file_size * 100:.2f}%) 下载速度:{self.speed:.2f} KB/s",
|
||||
)
|
||||
|
||||
def download_task3(self, index: str, t: float) -> None:
|
||||
def check_download(self, index: str, t: float) -> None:
|
||||
"""
|
||||
更新下载子任务完成信息,检查下载任务是否完成,完成后自动执行后续处理任务
|
||||
|
||||
:param index: 下载任务的索引
|
||||
:param t: 下载任务的耗时
|
||||
"""
|
||||
|
||||
# 标记下载线程完成
|
||||
self.downloaded_size_list[index][1] = True
|
||||
@@ -560,7 +618,8 @@ class DownloadManager(QDialog):
|
||||
|
||||
# 合并下载的分段文件
|
||||
logger.info(
|
||||
f"所有分段下载完成:{self.name},开始合并分段文件到 {self.download_path}"
|
||||
f"所有分段下载完成:{self.name},开始合并分段文件到 {self.download_path}",
|
||||
module="下载管理器",
|
||||
)
|
||||
with self.download_path.open(mode="wb") as outfile:
|
||||
for i in range(self.config["thread_numb"]):
|
||||
@@ -571,7 +630,8 @@ class DownloadManager(QDialog):
|
||||
self.download_path.with_suffix(f".part{i}").unlink()
|
||||
|
||||
logger.success(
|
||||
f"合并完成:{self.name},下载文件大小:{self.download_path.stat().st_size} 字节"
|
||||
f"合并完成:{self.name},下载文件大小:{self.download_path.stat().st_size} 字节",
|
||||
module="下载管理器",
|
||||
)
|
||||
|
||||
self.update_info("正在解压更新文件")
|
||||
@@ -610,9 +670,21 @@ class DownloadManager(QDialog):
|
||||
self.download_accomplish.emit()
|
||||
|
||||
def update_info(self, text: str) -> None:
|
||||
"""
|
||||
更新信息文本
|
||||
|
||||
:param text: 要显示的信息文本
|
||||
"""
|
||||
self.info.setText(text)
|
||||
|
||||
def update_progress(self, begin: int, end: int, current: int) -> None:
|
||||
"""
|
||||
更新进度条
|
||||
|
||||
:param begin: 进度条起始值
|
||||
:param end: 进度条结束值
|
||||
:param current: 进度条当前值
|
||||
"""
|
||||
|
||||
if begin == 0 and end == 0:
|
||||
self.progress_2.setVisible(False)
|
||||
@@ -626,7 +698,7 @@ class DownloadManager(QDialog):
|
||||
def requestInterruption(self) -> None:
|
||||
"""请求中断下载任务"""
|
||||
|
||||
logger.info("收到下载任务中止请求")
|
||||
logger.info("收到下载任务中止请求", module="下载管理器")
|
||||
|
||||
self.isInterruptionRequested = True
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
@@ -51,11 +50,12 @@ from pathlib import Path
|
||||
from typing import List, Dict
|
||||
|
||||
|
||||
from app.core import Config, SoundPlayer
|
||||
from app.core import Config, SoundPlayer, logger
|
||||
from .Widget import StatefulItemCard, QuantifiedItemCard, QuickExpandGroupCard
|
||||
|
||||
|
||||
class History(QWidget):
|
||||
"""历史记录界面"""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
@@ -81,10 +81,21 @@ class History(QWidget):
|
||||
self.history_card_list = []
|
||||
|
||||
def reload_history(self, mode: str, start_date: QDate, end_date: QDate) -> None:
|
||||
"""加载历史记录界面"""
|
||||
"""
|
||||
加载历史记录界面
|
||||
|
||||
:param mode: 查询模式
|
||||
:param start_date: 查询范围起始日期
|
||||
:param end_date: 查询范围结束日期
|
||||
"""
|
||||
|
||||
logger.info(
|
||||
f"查询历史记录: {mode}, {start_date.toString()}, {end_date.toString()}",
|
||||
module="历史记录",
|
||||
)
|
||||
SoundPlayer.play("历史记录查询")
|
||||
|
||||
# 清空已有的历史记录卡片
|
||||
while self.content_layout.count() > 0:
|
||||
item = self.content_layout.takeAt(0)
|
||||
if item.spacerItem():
|
||||
@@ -100,6 +111,7 @@ class History(QWidget):
|
||||
datetime(end_date.year(), end_date.month(), end_date.day()),
|
||||
)
|
||||
|
||||
# 生成历史记录卡片并添加到布局中
|
||||
for date, user_dict in history_dict.items():
|
||||
|
||||
self.history_card_list.append(self.HistoryCard(date, user_dict, self))
|
||||
@@ -154,7 +166,13 @@ class History(QWidget):
|
||||
Layout.addWidget(self.search)
|
||||
|
||||
def select_date(self, date: str) -> None:
|
||||
"""选中最近一段时间并启动查询"""
|
||||
"""
|
||||
选中最近一段时间并启动查询
|
||||
|
||||
:param date: 选择的时间段("week" 或 "month")
|
||||
"""
|
||||
|
||||
logger.info(f"选择最近{date}的记录并开始查询", module="历史记录")
|
||||
|
||||
server_date = Config.server_date()
|
||||
if date == "week":
|
||||
@@ -187,6 +205,7 @@ class History(QWidget):
|
||||
|
||||
self.user_history_card_list = []
|
||||
|
||||
# 生成用户历史记录卡片并添加到布局中
|
||||
for user, info in user_dict.items():
|
||||
self.user_history_card_list.append(
|
||||
self.UserHistoryCard(user, info, self)
|
||||
@@ -219,7 +238,12 @@ class History(QWidget):
|
||||
self.update_info("数据总览")
|
||||
|
||||
def get_statistics(self, mode: str) -> dict:
|
||||
"""生成GUI相应结构化统计数据"""
|
||||
"""
|
||||
生成GUI相应结构化统计数据
|
||||
|
||||
:param mode: 查询模式
|
||||
:return: 结构化统计数据
|
||||
"""
|
||||
|
||||
history_info = Config.merge_statistic_info(
|
||||
self.user_history if mode == "数据总览" else [Path(mode)]
|
||||
@@ -244,7 +268,11 @@ class History(QWidget):
|
||||
return statistics_info
|
||||
|
||||
def update_info(self, index: str) -> None:
|
||||
"""更新信息"""
|
||||
"""
|
||||
更新信息到UI界面
|
||||
|
||||
:param index: 选择的索引
|
||||
"""
|
||||
|
||||
# 移除已有统计信息UI组件
|
||||
while self.statistics_card.count() > 0:
|
||||
@@ -254,8 +282,10 @@ class History(QWidget):
|
||||
elif item.widget():
|
||||
item.widget().deleteLater()
|
||||
|
||||
# 统计信息上传至 UI
|
||||
if index == "数据总览":
|
||||
|
||||
# 生成数据统计信息卡片组
|
||||
for name, item_list in self.get_statistics("数据总览").items():
|
||||
|
||||
statistics_card = self.StatisticsCard(name, item_list, self)
|
||||
@@ -268,10 +298,12 @@ class History(QWidget):
|
||||
single_history = self.get_statistics(index)
|
||||
log_path = Path(index).with_suffix(".log")
|
||||
|
||||
# 生成单个历史记录的统计信息卡片组
|
||||
for name, item_list in single_history.items():
|
||||
statistics_card = self.StatisticsCard(name, item_list, self)
|
||||
self.statistics_card.addWidget(statistics_card)
|
||||
|
||||
# 显示日志信息并绑定点击事件
|
||||
with log_path.open("r", encoding="utf-8") as f:
|
||||
log = f.read()
|
||||
|
||||
@@ -291,6 +323,7 @@ class History(QWidget):
|
||||
self.setMinimumHeight(300)
|
||||
|
||||
class IndexCard(HeaderCardWidget):
|
||||
"""历史记录索引卡片组"""
|
||||
|
||||
index_changed = Signal(str)
|
||||
|
||||
@@ -304,9 +337,11 @@ class History(QWidget):
|
||||
|
||||
self.index_cards: List[StatefulItemCard] = []
|
||||
|
||||
# 生成索引卡片信息
|
||||
index_list = Config.merge_statistic_info(history_list)["index"]
|
||||
index_list.insert(0, ["数据总览", "运行", "数据总览"])
|
||||
|
||||
# 生成索引卡片组件并绑定点击事件
|
||||
for index in index_list:
|
||||
|
||||
self.index_cards.append(StatefulItemCard(index[:2]))
|
||||
@@ -318,6 +353,7 @@ class History(QWidget):
|
||||
self.Layout.addStretch(1)
|
||||
|
||||
class StatisticsCard(HeaderCardWidget):
|
||||
"""历史记录统计信息卡片组"""
|
||||
|
||||
def __init__(self, name: str, item_list: list, parent=None):
|
||||
super().__init__(parent)
|
||||
@@ -340,6 +376,7 @@ class History(QWidget):
|
||||
self.Layout.addStretch(1)
|
||||
|
||||
class LogCard(HeaderCardWidget):
|
||||
"""历史记录日志卡片"""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
@@ -49,7 +48,7 @@ import json
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from app.core import Config, MainInfoBar, Network
|
||||
from app.core import Config, MainInfoBar, Network, logger
|
||||
from .Widget import Banner, IconButton
|
||||
|
||||
|
||||
@@ -160,8 +159,12 @@ class Home(QWidget):
|
||||
def get_home_image(self) -> None:
|
||||
"""获取主页图片"""
|
||||
|
||||
logger.info("获取主页图片", module="主页")
|
||||
|
||||
if Config.get(Config.function_HomeImageMode) == "默认":
|
||||
pass
|
||||
|
||||
logger.info("使用默认主页图片", module="主页")
|
||||
|
||||
elif Config.get(Config.function_HomeImageMode) == "自定义":
|
||||
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
@@ -180,7 +183,7 @@ class Home(QWidget):
|
||||
/ f"resources/images/Home/BannerCustomize{Path(file_path).suffix}",
|
||||
)
|
||||
|
||||
logger.info(f"自定义主页图片更换成功:{file_path}")
|
||||
logger.info(f"自定义主页图片更换成功:{file_path}", module="主页")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success",
|
||||
"主页图片更换成功",
|
||||
@@ -189,7 +192,7 @@ class Home(QWidget):
|
||||
)
|
||||
|
||||
else:
|
||||
logger.warning("自定义主页图片更换失败:未选择图片文件")
|
||||
logger.warning("自定义主页图片更换失败:未选择图片文件", module="主页")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"主页图片更换失败",
|
||||
@@ -198,7 +201,7 @@ class Home(QWidget):
|
||||
)
|
||||
elif Config.get(Config.function_HomeImageMode) == "主题图像":
|
||||
|
||||
# 从远程服务器获取最新主题图像
|
||||
# 从远程服务器获取最新主题图像信息
|
||||
network = Network.add_task(
|
||||
mode="get",
|
||||
url="https://gitee.com/DLmaster_361/AUTO_MAA/raw/server/theme_image.json",
|
||||
@@ -209,7 +212,8 @@ class Home(QWidget):
|
||||
theme_image = network_result["response_json"]
|
||||
else:
|
||||
logger.warning(
|
||||
f"获取最新主题图像时出错:{network_result['error_message']}"
|
||||
f"获取最新主题图像时出错:{network_result['error_message']}",
|
||||
module="主页",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
@@ -230,6 +234,7 @@ class Home(QWidget):
|
||||
else:
|
||||
time_local = datetime.strptime("2000-01-01 00:00", "%Y-%m-%d %H:%M")
|
||||
|
||||
# 检查主题图像是否需要更新
|
||||
if not (
|
||||
Config.app_path / "resources/images/Home/BannerTheme.jpg"
|
||||
).exists() or (
|
||||
@@ -253,7 +258,9 @@ class Home(QWidget):
|
||||
) as f:
|
||||
json.dump(theme_image, f, ensure_ascii=False, indent=4)
|
||||
|
||||
logger.success(f"主题图像「{theme_image["name"]}」下载成功")
|
||||
logger.success(
|
||||
f"主题图像「{theme_image["name"]}」下载成功", module="主页"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"success",
|
||||
"主题图像下载成功",
|
||||
@@ -264,7 +271,8 @@ class Home(QWidget):
|
||||
else:
|
||||
|
||||
logger.warning(
|
||||
f"下载最新主题图像时出错:{network_result['error_message']}"
|
||||
f"下载最新主题图像时出错:{network_result['error_message']}",
|
||||
module="主页",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
@@ -275,18 +283,16 @@ class Home(QWidget):
|
||||
|
||||
else:
|
||||
|
||||
logger.info("主题图像已是最新")
|
||||
logger.info("主题图像已是最新", module="主页")
|
||||
MainInfoBar.push_info_bar(
|
||||
"info",
|
||||
"主题图像已是最新",
|
||||
"主题图像已是最新!",
|
||||
3000,
|
||||
"info", "主题图像已是最新", "主题图像已是最新!", 3000
|
||||
)
|
||||
|
||||
self.set_banner()
|
||||
|
||||
def set_banner(self):
|
||||
"""设置主页图像"""
|
||||
|
||||
if Config.get(Config.function_HomeImageMode) == "默认":
|
||||
self.banner.set_banner_image(
|
||||
str(Config.app_path / "resources/images/Home/BannerDefault.png")
|
||||
@@ -366,7 +372,7 @@ class ButtonGroup(SimpleCardWidget):
|
||||
doc_button = IconButton(
|
||||
FluentIcon.CHAT.icon(color=QColor("#fff")),
|
||||
tip_title="官方社群",
|
||||
tip_content="加入官方群聊【AUTO_MAA绝赞DeBug中!】",
|
||||
tip_content="加入官方群聊「AUTO_MAA绝赞DeBug中!」",
|
||||
isTooltip=True,
|
||||
)
|
||||
doc_button.setIconSize(QSize(32, 32))
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import QApplication, QSystemTrayIcon
|
||||
from qfluentwidgets import (
|
||||
Action,
|
||||
@@ -45,7 +44,7 @@ from datetime import datetime, timedelta
|
||||
import shutil
|
||||
import darkdetect
|
||||
|
||||
from app.core import Config, TaskManager, MainTimer, MainInfoBar, SoundPlayer
|
||||
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
|
||||
@@ -57,6 +56,7 @@ from .setting import Setting
|
||||
|
||||
|
||||
class AUTO_MAA(MSFluentWindow):
|
||||
"""AUTO_MAA主界面"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
@@ -77,9 +77,11 @@ class AUTO_MAA(MSFluentWindow):
|
||||
self.splashScreen = SplashScreen(self.windowIcon(), self)
|
||||
self.show_ui("显示主窗口", if_quick=True)
|
||||
|
||||
# 设置主窗口的引用,便于各组件访问
|
||||
Config.main_window = self.window()
|
||||
|
||||
# 创建主窗口
|
||||
# 创建各子窗口
|
||||
logger.info("正在创建各子窗口", module="主窗口")
|
||||
self.home = Home(self)
|
||||
self.plan_manager = PlanManager(self)
|
||||
self.member_manager = MemberManager(self)
|
||||
@@ -138,8 +140,10 @@ class AUTO_MAA(MSFluentWindow):
|
||||
NavigationItemPosition.BOTTOM,
|
||||
)
|
||||
self.stackedWidget.currentChanged.connect(self.__currentChanged)
|
||||
logger.success("各子窗口创建完成", module="主窗口")
|
||||
|
||||
# 创建系统托盘及其菜单
|
||||
logger.info("正在创建系统托盘", module="主窗口")
|
||||
self.tray = QSystemTrayIcon(
|
||||
QIcon(str(Config.app_path / "resources/icons/AUTO_MAA.ico")), self
|
||||
)
|
||||
@@ -181,9 +185,11 @@ class AUTO_MAA(MSFluentWindow):
|
||||
# 设置托盘菜单
|
||||
self.tray.setContextMenu(self.tray_menu)
|
||||
self.tray.activated.connect(self.on_tray_activated)
|
||||
logger.success("系统托盘创建完成", module="主窗口")
|
||||
|
||||
self.set_min_method()
|
||||
|
||||
# 绑定各组件信号
|
||||
Config.sub_info_changed.connect(self.member_manager.refresh_dashboard)
|
||||
Config.power_sign_changed.connect(self.dispatch_center.update_power_sign)
|
||||
TaskManager.create_gui.connect(self.dispatch_center.add_board)
|
||||
@@ -205,6 +211,8 @@ class AUTO_MAA(MSFluentWindow):
|
||||
self.themeListener.systemThemeChanged.connect(self.switch_theme)
|
||||
self.themeListener.start()
|
||||
|
||||
logger.success("AUTO_MAA主程序初始化完成", module="主窗口")
|
||||
|
||||
def switch_theme(self) -> None:
|
||||
"""切换主题"""
|
||||
|
||||
@@ -348,8 +356,10 @@ class AUTO_MAA(MSFluentWindow):
|
||||
def start_up_task(self) -> None:
|
||||
"""启动时任务"""
|
||||
|
||||
# 清理旧日志
|
||||
self.clean_old_logs()
|
||||
logger.info("开始执行启动时任务", module="主窗口")
|
||||
|
||||
# 清理旧历史记录
|
||||
Config.clean_old_history()
|
||||
|
||||
# 清理安装包
|
||||
if (Config.app_path / "AUTO_MAA-Setup.exe").exists():
|
||||
@@ -373,6 +383,9 @@ class AUTO_MAA(MSFluentWindow):
|
||||
|
||||
self.start_main_task()
|
||||
|
||||
# 启动定时器
|
||||
MainTimer.start()
|
||||
|
||||
# 获取公告
|
||||
self.setting.show_notice(if_first=True)
|
||||
|
||||
@@ -420,41 +433,16 @@ class AUTO_MAA(MSFluentWindow):
|
||||
)
|
||||
System.set_power("KillSelf")
|
||||
|
||||
def clean_old_logs(self):
|
||||
"""
|
||||
删除超过用户设定天数的日志文件(基于目录日期)
|
||||
"""
|
||||
|
||||
if Config.get(Config.function_HistoryRetentionTime) == 0:
|
||||
logger.info("由于用户设置日志永久保留,跳过日志清理")
|
||||
return
|
||||
|
||||
deleted_count = 0
|
||||
|
||||
for date_folder in (Config.app_path / "history").iterdir():
|
||||
if not date_folder.is_dir():
|
||||
continue # 只处理日期文件夹
|
||||
|
||||
try:
|
||||
# 只检查 `YYYY-MM-DD` 格式的文件夹
|
||||
folder_date = datetime.strptime(date_folder.name, "%Y-%m-%d")
|
||||
if datetime.now() - folder_date > timedelta(
|
||||
days=Config.get(Config.function_HistoryRetentionTime)
|
||||
):
|
||||
shutil.rmtree(date_folder, ignore_errors=True)
|
||||
deleted_count += 1
|
||||
logger.info(f"已删除超期日志目录: {date_folder}")
|
||||
except ValueError:
|
||||
logger.warning(f"非日期格式的目录: {date_folder}")
|
||||
|
||||
logger.info(f"清理完成: {deleted_count} 个日期目录")
|
||||
logger.success("启动时任务执行完成", module="主窗口")
|
||||
|
||||
def start_main_task(self) -> None:
|
||||
"""启动主任务"""
|
||||
|
||||
logger.info("正在启动主任务", module="主窗口")
|
||||
|
||||
if "调度队列_1" in Config.queue_dict:
|
||||
|
||||
logger.info("自动添加任务:调度队列_1")
|
||||
logger.info("自动添加任务:调度队列_1", module="主窗口")
|
||||
TaskManager.add_task(
|
||||
"自动代理_主调度台",
|
||||
"调度队列_1",
|
||||
@@ -463,18 +451,22 @@ class AUTO_MAA(MSFluentWindow):
|
||||
|
||||
elif "脚本_1" in Config.member_dict:
|
||||
|
||||
logger.info("自动添加任务:脚本_1")
|
||||
logger.info("自动添加任务:脚本_1", module="主窗口")
|
||||
TaskManager.add_task(
|
||||
"自动代理_主调度台", "自定义队列", {"Queue": {"Member_1": "脚本_1"}}
|
||||
)
|
||||
|
||||
else:
|
||||
|
||||
logger.warning("启动主任务失败:未找到有效的主任务配置文件")
|
||||
logger.warning(
|
||||
"启动主任务失败:未找到有效的主任务配置文件", module="主窗口"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "启动主任务失败", "「调度队列_1」与「脚本_1」均不存在", -1
|
||||
)
|
||||
|
||||
logger.success("主任务启动完成", module="主窗口")
|
||||
|
||||
def __currentChanged(self, index: int) -> None:
|
||||
"""切换界面时任务"""
|
||||
|
||||
@@ -489,20 +481,18 @@ class AUTO_MAA(MSFluentWindow):
|
||||
def closeEvent(self, event: QCloseEvent):
|
||||
"""清理残余进程"""
|
||||
|
||||
logger.info("保存窗口位置与大小信息", module="主窗口")
|
||||
self.show_ui("隐藏到托盘", if_quick=True)
|
||||
|
||||
# 清理各功能线程
|
||||
MainTimer.Timer.stop()
|
||||
MainTimer.Timer.deleteLater()
|
||||
MainTimer.LongTimer.stop()
|
||||
MainTimer.LongTimer.deleteLater()
|
||||
MainTimer.stop()
|
||||
TaskManager.stop_task("ALL")
|
||||
|
||||
# 关闭主题监听
|
||||
self.themeListener.terminate()
|
||||
self.themeListener.deleteLater()
|
||||
|
||||
logger.info("AUTO_MAA主程序关闭")
|
||||
logger.info("----------------END----------------")
|
||||
logger.info("AUTO_MAA主程序关闭", module="主窗口")
|
||||
logger.info("----------------END----------------", module="主窗口")
|
||||
|
||||
event.accept()
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QFileDialog,
|
||||
@@ -61,6 +60,7 @@ import json
|
||||
|
||||
from app.core import (
|
||||
Config,
|
||||
logger,
|
||||
MainInfoBar,
|
||||
TaskManager,
|
||||
MaaConfig,
|
||||
@@ -109,31 +109,22 @@ class MemberManager(QWidget):
|
||||
layout = QVBoxLayout(self)
|
||||
|
||||
self.tools = CommandBar()
|
||||
|
||||
self.member_manager = self.MemberSettingBox(self)
|
||||
|
||||
# 逐个添加动作
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(FluentIcon.ADD_TO, "新建脚本实例", triggered=self.add_member),
|
||||
Action(
|
||||
FluentIcon.ADD_TO, "新建脚本实例", triggered=self.add_setting_box
|
||||
),
|
||||
Action(
|
||||
FluentIcon.REMOVE_FROM,
|
||||
"删除脚本实例",
|
||||
triggered=self.del_setting_box,
|
||||
FluentIcon.REMOVE_FROM, "删除脚本实例", triggered=self.del_member
|
||||
),
|
||||
]
|
||||
)
|
||||
self.tools.addSeparator()
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(
|
||||
FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_setting_box
|
||||
),
|
||||
Action(
|
||||
FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_setting_box
|
||||
),
|
||||
Action(FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_member),
|
||||
Action(FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_member),
|
||||
]
|
||||
)
|
||||
self.tools.addSeparator()
|
||||
@@ -156,7 +147,7 @@ class MemberManager(QWidget):
|
||||
layout.addWidget(self.tools)
|
||||
layout.addWidget(self.member_manager)
|
||||
|
||||
def add_setting_box(self):
|
||||
def add_member(self):
|
||||
"""添加一个脚本实例"""
|
||||
|
||||
choice = ComboBoxMessageBox(
|
||||
@@ -167,10 +158,15 @@ class MemberManager(QWidget):
|
||||
)
|
||||
if choice.exec() and choice.input[0].currentIndex() != -1:
|
||||
|
||||
logger.info(
|
||||
f"添加脚本实例: {choice.input[0].currentText()}", module="脚本管理"
|
||||
)
|
||||
|
||||
if choice.input[0].currentText() == "MAA":
|
||||
|
||||
index = len(Config.member_dict) + 1
|
||||
|
||||
# 初始化 MAA 配置
|
||||
maa_config = MaaConfig()
|
||||
maa_config.load(
|
||||
Config.app_path / f"config/MaaConfig/脚本_{index}/config.json",
|
||||
@@ -188,12 +184,13 @@ class MemberManager(QWidget):
|
||||
"UserData": {},
|
||||
}
|
||||
|
||||
# 添加 MAA 实例设置界面
|
||||
self.member_manager.add_SettingBox(
|
||||
index, self.MemberSettingBox.MaaSettingBox
|
||||
)
|
||||
self.member_manager.switch_SettingBox(index)
|
||||
|
||||
logger.success(f"MAA实例 脚本_{index} 添加成功")
|
||||
logger.success(f"MAA实例 脚本_{index} 添加成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"添加 MAA 实例 脚本_{index}", 3000
|
||||
)
|
||||
@@ -203,6 +200,7 @@ class MemberManager(QWidget):
|
||||
|
||||
index = len(Config.member_dict) + 1
|
||||
|
||||
# 初始化通用配置
|
||||
general_config = GeneralConfig()
|
||||
general_config.load(
|
||||
Config.app_path / f"config/GeneralConfig/脚本_{index}/config.json",
|
||||
@@ -220,31 +218,32 @@ class MemberManager(QWidget):
|
||||
"SubData": {},
|
||||
}
|
||||
|
||||
# 添加通用实例设置界面
|
||||
self.member_manager.add_SettingBox(
|
||||
index, self.MemberSettingBox.GeneralSettingBox
|
||||
)
|
||||
self.member_manager.switch_SettingBox(index)
|
||||
|
||||
logger.success(f"通用实例 脚本_{index} 添加成功")
|
||||
logger.success(f"通用实例 脚本_{index} 添加成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"添加通用实例 脚本_{index}", 3000
|
||||
)
|
||||
SoundPlayer.play("添加脚本实例")
|
||||
|
||||
def del_setting_box(self):
|
||||
def del_member(self):
|
||||
"""删除一个脚本实例"""
|
||||
|
||||
name = self.member_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("删除脚本实例时未选择脚本实例")
|
||||
logger.warning("删除脚本实例时未选择脚本实例", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("删除脚本实例时调度队列未停止运行")
|
||||
logger.warning("删除脚本实例时调度队列未停止运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
@@ -253,8 +252,11 @@ class MemberManager(QWidget):
|
||||
choice = MessageBox("确认", f"确定要删除 {name} 实例吗?", self.window())
|
||||
if choice.exec():
|
||||
|
||||
logger.info(f"正在删除脚本实例: {name}", module="脚本管理")
|
||||
|
||||
self.member_manager.clear_SettingBox()
|
||||
|
||||
# 删除脚本实例的配置文件并同步修改相应配置项
|
||||
shutil.rmtree(Config.member_dict[name]["Path"])
|
||||
Config.change_queue(name, "禁用")
|
||||
for i in range(int(name[3:]) + 1, len(Config.member_dict) + 1):
|
||||
@@ -266,19 +268,19 @@ class MemberManager(QWidget):
|
||||
|
||||
self.member_manager.show_SettingBox(max(int(name[3:]) - 1, 1))
|
||||
|
||||
logger.success(f"脚本实例 {name} 删除成功")
|
||||
logger.success(f"脚本实例 {name} 删除成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"删除脚本实例 {name}", 3000
|
||||
)
|
||||
SoundPlayer.play("删除脚本实例")
|
||||
|
||||
def left_setting_box(self):
|
||||
def left_member(self):
|
||||
"""向左移动脚本实例"""
|
||||
|
||||
name = self.member_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("向左移动脚本实例时未选择脚本实例")
|
||||
logger.warning("向左移动脚本实例时未选择脚本实例", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
|
||||
)
|
||||
@@ -287,21 +289,24 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == 1:
|
||||
logger.warning("向左移动脚本实例时已到达最左端")
|
||||
logger.warning("向左移动脚本实例时已到达最左端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是第一个脚本实例", "无法向左移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("向左移动脚本实例时调度队列未停止运行")
|
||||
logger.warning("向左移动脚本实例时调度队列未停止运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在向左移动脚本实例: {name}", module="脚本管理")
|
||||
|
||||
self.member_manager.clear_SettingBox()
|
||||
|
||||
# 移动脚本实例配置文件并同步修改配置项
|
||||
Config.member_dict[name]["Path"].rename(
|
||||
Config.member_dict[name]["Path"].with_name("脚本_0")
|
||||
)
|
||||
@@ -317,16 +322,16 @@ class MemberManager(QWidget):
|
||||
|
||||
self.member_manager.show_SettingBox(index - 1)
|
||||
|
||||
logger.success(f"脚本实例 {name} 左移成功")
|
||||
logger.success(f"脚本实例 {name} 左移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"左移脚本实例 {name}", 3000)
|
||||
|
||||
def right_setting_box(self):
|
||||
def right_member(self):
|
||||
"""向右移动脚本实例"""
|
||||
|
||||
name = self.member_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("向右移动脚本实例时未选择脚本实例")
|
||||
logger.warning("向右移动脚本实例时未选择脚本实例", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择脚本实例", "请选择一个脚本实例", 5000
|
||||
)
|
||||
@@ -335,21 +340,24 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == len(Config.member_dict):
|
||||
logger.warning("向右移动脚本实例时已到达最右端")
|
||||
logger.warning("向右移动脚本实例时已到达最右端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是最后一个脚本实例", "无法向右移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("向右移动脚本实例时调度队列未停止运行")
|
||||
logger.warning("向右移动脚本实例时调度队列未停止运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在向右移动脚本实例: {name}", module="脚本管理")
|
||||
|
||||
self.member_manager.clear_SettingBox()
|
||||
|
||||
# 移动脚本实例配置文件并同步修改配置项
|
||||
Config.member_dict[name]["Path"].rename(
|
||||
Config.member_dict[name]["Path"].with_name("脚本_0")
|
||||
)
|
||||
@@ -365,7 +373,7 @@ class MemberManager(QWidget):
|
||||
|
||||
self.member_manager.show_SettingBox(index + 1)
|
||||
|
||||
logger.success(f"脚本实例 {name} 右移成功")
|
||||
logger.success(f"脚本实例 {name} 右移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"右移脚本实例 {name}", 3000)
|
||||
|
||||
def member_downloader(self):
|
||||
@@ -373,7 +381,7 @@ class MemberManager(QWidget):
|
||||
|
||||
if not Config.get(Config.update_MirrorChyanCDK):
|
||||
|
||||
logger.warning("脚本下载器未设置CDK")
|
||||
logger.warning("脚本下载器未设置CDK", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"未设置Mirror酱CDK",
|
||||
@@ -392,7 +400,10 @@ class MemberManager(QWidget):
|
||||
if network_result["status_code"] == 200:
|
||||
apps_info = network_result["response_json"]
|
||||
else:
|
||||
logger.warning(f"获取应用列表时出错:{network_result['error_message']}")
|
||||
logger.warning(
|
||||
f"获取应用列表时出错:{network_result['error_message']}",
|
||||
module="脚本管理",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取应用列表时出错",
|
||||
@@ -419,7 +430,9 @@ class MemberManager(QWidget):
|
||||
str(Config.app_path / f"script/{app_rid}"),
|
||||
)
|
||||
if not folder:
|
||||
logger.warning(f"选择{app_name}下载目录时未选择文件夹")
|
||||
logger.warning(
|
||||
f"选择{app_name}下载目录时未选择文件夹", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "警告", f"未选择{app_name}下载目录", 5000
|
||||
)
|
||||
@@ -442,7 +455,10 @@ class MemberManager(QWidget):
|
||||
|
||||
if app_info["code"] != 0:
|
||||
|
||||
logger.error(f"获取版本信息时出错:{app_info["msg"]}")
|
||||
logger.error(
|
||||
f"获取应用版本信息时出错:{app_info["msg"]}",
|
||||
module="脚本管理",
|
||||
)
|
||||
|
||||
error_remark_dict = {
|
||||
1001: "获取版本信息的URL参数不正确",
|
||||
@@ -475,7 +491,10 @@ class MemberManager(QWidget):
|
||||
|
||||
return None
|
||||
|
||||
logger.warning(f"获取版本信息时出错:{network_result['error_message']}")
|
||||
logger.warning(
|
||||
f"获取版本信息时出错:{network_result['error_message']}",
|
||||
module="脚本管理",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取版本信息时出错",
|
||||
@@ -484,6 +503,8 @@ class MemberManager(QWidget):
|
||||
)
|
||||
return None
|
||||
|
||||
# 创建下载管理器并开始下载
|
||||
logger.info(f"开始下载{app_name},下载目录:{folder}", module="脚本管理")
|
||||
self.downloader = DownloadManager(
|
||||
Path(folder),
|
||||
app_rid,
|
||||
@@ -502,6 +523,7 @@ class MemberManager(QWidget):
|
||||
self.downloader.run()
|
||||
|
||||
def show_password(self):
|
||||
"""显示或隐藏密码"""
|
||||
|
||||
if Config.PASSWORD == "":
|
||||
choice = LineEditMessageBox(
|
||||
@@ -529,6 +551,7 @@ class MemberManager(QWidget):
|
||||
def reload_plan_name(self):
|
||||
"""刷新计划表名称"""
|
||||
|
||||
# 生成计划列表信息
|
||||
plan_list = [
|
||||
["固定"] + [_ for _ in Config.plan_dict.keys()],
|
||||
["固定"]
|
||||
@@ -541,6 +564,8 @@ class MemberManager(QWidget):
|
||||
for k, v in Config.plan_dict.items()
|
||||
],
|
||||
]
|
||||
|
||||
# 刷新所有脚本实例的计划表名称
|
||||
for member in self.member_manager.script_list:
|
||||
|
||||
if isinstance(member, MemberManager.MemberSettingBox.MaaSettingBox):
|
||||
@@ -616,7 +641,12 @@ class MemberManager(QWidget):
|
||||
self.show_SettingBox(1)
|
||||
|
||||
def show_SettingBox(self, index) -> None:
|
||||
"""加载所有子界面"""
|
||||
"""
|
||||
加载所有子界面并切换到指定子界面
|
||||
|
||||
:param index: 要切换到的子界面索引
|
||||
:type index: int
|
||||
"""
|
||||
|
||||
Config.search_member()
|
||||
|
||||
@@ -629,7 +659,14 @@ class MemberManager(QWidget):
|
||||
self.switch_SettingBox(index)
|
||||
|
||||
def switch_SettingBox(self, index: int, if_chang_pivot: bool = True) -> None:
|
||||
"""切换到指定的子界面"""
|
||||
"""
|
||||
切换到指定的子界面
|
||||
|
||||
:param index: 要切换到的子界面索引
|
||||
:type index: int
|
||||
:param if_chang_pivot: 是否更改导航栏的当前项
|
||||
:type if_chang_pivot: bool
|
||||
"""
|
||||
|
||||
if len(Config.member_dict) == 0:
|
||||
return None
|
||||
@@ -666,7 +703,14 @@ class MemberManager(QWidget):
|
||||
self.pivot.clear()
|
||||
|
||||
def add_SettingBox(self, uid: int, type: Type) -> None:
|
||||
"""添加指定类型设置子界面"""
|
||||
"""
|
||||
添加指定类型设置子界面
|
||||
|
||||
:param uid: 脚本实例的唯一标识符
|
||||
:type uid: int
|
||||
:param type: 要添加的设置子界面类型
|
||||
:type type: Type
|
||||
"""
|
||||
|
||||
if type == self.MaaSettingBox:
|
||||
setting_box = self.MaaSettingBox(uid, self)
|
||||
@@ -762,6 +806,7 @@ class MemberManager(QWidget):
|
||||
self.viewLayout.addLayout(Layout)
|
||||
|
||||
def PathClicked(self):
|
||||
"""选择MAA目录并验证"""
|
||||
|
||||
folder = QFileDialog.getExistingDirectory(
|
||||
self,
|
||||
@@ -769,7 +814,9 @@ class MemberManager(QWidget):
|
||||
self.config.get(self.config.MaaSet_Path),
|
||||
)
|
||||
if not folder or self.config.get(self.config.MaaSet_Path) == folder:
|
||||
logger.warning("选择MAA目录时未选择文件夹或未更改文件夹")
|
||||
logger.warning(
|
||||
"选择MAA目录时未选择文件夹或未更改文件夹", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "警告", "未选择文件夹或未更改文件夹", 5000
|
||||
)
|
||||
@@ -778,7 +825,9 @@ class MemberManager(QWidget):
|
||||
not (Path(folder) / "config/gui.json").exists()
|
||||
or not (Path(folder) / "MAA.exe").exists()
|
||||
):
|
||||
logger.warning("选择MAA目录时未找到MAA程序或配置文件")
|
||||
logger.warning(
|
||||
"选择MAA目录时未找到MAA程序或配置文件", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "警告", "未找到MAA程序或配置文件", 5000
|
||||
)
|
||||
@@ -938,6 +987,9 @@ class MemberManager(QWidget):
|
||||
|
||||
index = len(Config.member_dict[self.name]["UserData"]) + 1
|
||||
|
||||
logger.info(f"正在添加 {self.name} 用户_{index}", module="脚本管理")
|
||||
|
||||
# 初始化用户配置信息
|
||||
user_config = MaaUserConfig()
|
||||
user_config.load(
|
||||
Config.member_dict[self.name]["Path"]
|
||||
@@ -952,10 +1004,13 @@ class MemberManager(QWidget):
|
||||
"Config": user_config,
|
||||
}
|
||||
|
||||
# 添加用户设置面板
|
||||
self.user_manager.add_userSettingBox(index)
|
||||
self.user_manager.switch_SettingBox(f"用户_{index}")
|
||||
|
||||
logger.success(f"{self.name} 用户_{index} 添加成功")
|
||||
logger.success(
|
||||
f"{self.name} 用户_{index} 添加成功", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 添加 用户_{index}", 3000
|
||||
)
|
||||
@@ -967,20 +1022,20 @@ class MemberManager(QWidget):
|
||||
name = self.user_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择用户")
|
||||
logger.warning("未选择用户", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请先选择一个用户", 5000
|
||||
)
|
||||
return None
|
||||
if name == "用户仪表盘":
|
||||
logger.warning("试图删除用户仪表盘")
|
||||
logger.warning("试图删除用户仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请勿尝试删除用户仪表盘", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
@@ -991,8 +1046,11 @@ class MemberManager(QWidget):
|
||||
)
|
||||
if choice.exec():
|
||||
|
||||
logger.info(f"正在删除 {self.name} {name}", module="脚本管理")
|
||||
|
||||
self.user_manager.clear_SettingBox()
|
||||
|
||||
# 删除用户配置文件并同步修改相应配置项
|
||||
shutil.rmtree(
|
||||
Config.member_dict[self.name]["UserData"][name]["Path"]
|
||||
)
|
||||
@@ -1015,7 +1073,9 @@ class MemberManager(QWidget):
|
||||
f"用户_{max(int(name[3:]) - 1, 1)}"
|
||||
)
|
||||
|
||||
logger.success(f"{self.name} {name} 删除成功")
|
||||
logger.success(
|
||||
f"{self.name} {name} 删除成功", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 删除 {name}", 3000
|
||||
)
|
||||
@@ -1027,13 +1087,13 @@ class MemberManager(QWidget):
|
||||
name = self.user_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择用户")
|
||||
logger.warning("未选择用户", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请先选择一个用户", 5000
|
||||
)
|
||||
return None
|
||||
if name == "用户仪表盘":
|
||||
logger.warning("试图移动用户仪表盘")
|
||||
logger.warning("试图移动用户仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请勿尝试移动用户仪表盘", 5000
|
||||
)
|
||||
@@ -1042,21 +1102,24 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == 1:
|
||||
logger.warning("向前移动用户时已到达最左端")
|
||||
logger.warning("向前移动用户时已到达最左端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是第一个用户", "无法向前移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在向前移动 {self.name} {name}", module="脚本管理")
|
||||
|
||||
self.user_manager.clear_SettingBox()
|
||||
|
||||
# 移动用户配置文件并同步修改配置项
|
||||
Config.member_dict[self.name]["UserData"][name]["Path"].rename(
|
||||
Config.member_dict[self.name]["UserData"][name][
|
||||
"Path"
|
||||
@@ -1075,7 +1138,7 @@ class MemberManager(QWidget):
|
||||
|
||||
self.user_manager.show_SettingBox(f"用户_{index - 1}")
|
||||
|
||||
logger.success(f"{self.name} {name} 前移成功")
|
||||
logger.success(f"{self.name} {name} 前移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 前移 {name}", 3000
|
||||
)
|
||||
@@ -1086,13 +1149,13 @@ class MemberManager(QWidget):
|
||||
name = self.user_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择用户")
|
||||
logger.warning("未选择用户", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请先选择一个用户", 5000
|
||||
)
|
||||
return None
|
||||
if name == "用户仪表盘":
|
||||
logger.warning("试图删除用户仪表盘")
|
||||
logger.warning("试图删除用户仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择用户", "请勿尝试移动用户仪表盘", 5000
|
||||
)
|
||||
@@ -1101,19 +1164,21 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == len(Config.member_dict[self.name]["UserData"]):
|
||||
logger.warning("向后移动用户时已到达最右端")
|
||||
logger.warning("向后移动用户时已到达最右端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是最后一个用户", "无法向后移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在向后移动 {self.name} {name}", module="脚本管理")
|
||||
|
||||
self.user_manager.clear_SettingBox()
|
||||
|
||||
Config.member_dict[self.name]["UserData"][name]["Path"].rename(
|
||||
@@ -1134,7 +1199,7 @@ class MemberManager(QWidget):
|
||||
|
||||
self.user_manager.show_SettingBox(f"用户_{index + 1}")
|
||||
|
||||
logger.success(f"{self.name} {name} 后移成功")
|
||||
logger.success(f"{self.name} {name} 后移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 后移 {name}", 3000
|
||||
)
|
||||
@@ -1180,7 +1245,12 @@ class MemberManager(QWidget):
|
||||
self.show_SettingBox("用户仪表盘")
|
||||
|
||||
def show_SettingBox(self, index: str) -> None:
|
||||
"""加载所有子界面"""
|
||||
"""
|
||||
加载所有子界面并切换到指定子界面
|
||||
|
||||
:param index: 要切换到的子界面索引或名称
|
||||
:type index: str
|
||||
"""
|
||||
|
||||
Config.search_maa_user(self.name)
|
||||
|
||||
@@ -1192,7 +1262,14 @@ class MemberManager(QWidget):
|
||||
def switch_SettingBox(
|
||||
self, index: str, if_change_pivot: bool = True
|
||||
) -> None:
|
||||
"""切换到指定的子界面"""
|
||||
"""
|
||||
切换到指定的子界面
|
||||
|
||||
:param index: 要切换到的子界面索引或名称
|
||||
:type index: str
|
||||
:param if_change_pivot: 是否更改导航栏的当前项
|
||||
:type if_change_pivot: bool
|
||||
"""
|
||||
|
||||
if len(Config.member_dict[self.name]["UserData"]) == 0:
|
||||
index = "用户仪表盘"
|
||||
@@ -1214,7 +1291,7 @@ class MemberManager(QWidget):
|
||||
)
|
||||
|
||||
def clear_SettingBox(self) -> None:
|
||||
"""清空所有子界面"""
|
||||
"""清空除用户仪表盘外所有子界面"""
|
||||
|
||||
for sub_interface in self.script_list:
|
||||
Config.stage_refreshed.disconnect(
|
||||
@@ -1232,7 +1309,12 @@ class MemberManager(QWidget):
|
||||
self.pivot.addItem(routeKey="用户仪表盘", text="用户仪表盘")
|
||||
|
||||
def add_userSettingBox(self, uid: int) -> None:
|
||||
"""添加一个用户设置界面"""
|
||||
"""
|
||||
添加一个用户设置界面
|
||||
|
||||
:param uid: 用户的唯一标识符
|
||||
:type uid: int
|
||||
"""
|
||||
|
||||
setting_box = self.UserMemberSettingBox(self.name, uid, self)
|
||||
|
||||
@@ -1292,6 +1374,12 @@ class MemberManager(QWidget):
|
||||
Config.PASSWORD_refreshed.connect(self.load_info)
|
||||
|
||||
def load_info(self):
|
||||
"""加载用户信息到仪表盘"""
|
||||
|
||||
logger.info(
|
||||
f"正在加载 {self.name} 用户信息到仪表盘",
|
||||
module="脚本管理",
|
||||
)
|
||||
|
||||
self.user_data = Config.member_dict[self.name]["UserData"]
|
||||
|
||||
@@ -1452,6 +1540,10 @@ class MemberManager(QWidget):
|
||||
int(name[3:]) - 1, 11, button
|
||||
)
|
||||
|
||||
logger.success(
|
||||
f"{self.name} 用户仪表盘成功加载信息", module="脚本管理"
|
||||
)
|
||||
|
||||
class UserMemberSettingBox(HeaderCardWidget):
|
||||
"""用户管理子页面"""
|
||||
|
||||
@@ -1915,6 +2007,7 @@ class MemberManager(QWidget):
|
||||
self.switch_infrastructure()
|
||||
|
||||
def switch_mode(self) -> None:
|
||||
"""切换用户配置模式"""
|
||||
|
||||
if self.config.get(self.config.Info_Mode) == "简洁":
|
||||
|
||||
@@ -1931,6 +2024,7 @@ class MemberManager(QWidget):
|
||||
self.card_Routine.setVisible(True)
|
||||
|
||||
def switch_stage_mode(self) -> None:
|
||||
"""切换关卡配置模式"""
|
||||
|
||||
for card, name in zip(
|
||||
[
|
||||
@@ -1967,6 +2061,7 @@ class MemberManager(QWidget):
|
||||
)
|
||||
|
||||
def switch_infrastructure(self) -> None:
|
||||
"""切换基建配置模式"""
|
||||
|
||||
if (
|
||||
self.config.get(self.config.Info_InfrastMode)
|
||||
@@ -1988,6 +2083,7 @@ class MemberManager(QWidget):
|
||||
)
|
||||
|
||||
def refresh_stage(self):
|
||||
"""刷新关卡配置"""
|
||||
|
||||
self.card_Stage.reLoadOptions(
|
||||
Config.stage_dict["ALL"]["value"],
|
||||
@@ -2011,6 +2107,7 @@ class MemberManager(QWidget):
|
||||
)
|
||||
|
||||
def refresh_password(self):
|
||||
"""刷新密码配置"""
|
||||
|
||||
self.card_Password.setValue(
|
||||
self.card_Password.qconfig.get(
|
||||
@@ -2054,7 +2151,7 @@ class MemberManager(QWidget):
|
||||
"""配置MAA子配置"""
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
@@ -2463,7 +2560,12 @@ class MemberManager(QWidget):
|
||||
self.addGroupWidget(widget)
|
||||
|
||||
def change_path(self, old_path: Path, new_path: Path) -> None:
|
||||
"""根据脚本根目录重新计算配置文件路径"""
|
||||
"""
|
||||
根据脚本根目录重新计算配置文件路径
|
||||
|
||||
:param old_path: 旧路径
|
||||
:param new_path: 新路径
|
||||
"""
|
||||
|
||||
path_list = [
|
||||
self.config.Script_ScriptPath,
|
||||
@@ -2491,7 +2593,8 @@ class MemberManager(QWidget):
|
||||
|
||||
self.config.set(configItem, str(old_path))
|
||||
logger.warning(
|
||||
f"配置路径 {new_path} 不在脚本根目录下,已重置为 {old_path}"
|
||||
f"配置路径 {new_path} 不在脚本根目录下,已重置为 {old_path}",
|
||||
module="脚本管理",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "路径异常", "所选路径不在脚本根目录下", 5000
|
||||
@@ -2738,6 +2841,11 @@ class MemberManager(QWidget):
|
||||
|
||||
index = len(Config.member_dict[self.name]["SubData"]) + 1
|
||||
|
||||
logger.info(
|
||||
f"正在添加 {self.name} 的配置_{index}", module="脚本管理"
|
||||
)
|
||||
|
||||
# 初始化通用配置
|
||||
sub_config = GeneralSubConfig()
|
||||
sub_config.load(
|
||||
Config.member_dict[self.name]["Path"]
|
||||
@@ -2752,10 +2860,13 @@ class MemberManager(QWidget):
|
||||
"Config": sub_config,
|
||||
}
|
||||
|
||||
# 添加通用配置页面
|
||||
self.sub_manager.add_SettingBox(index)
|
||||
self.sub_manager.switch_SettingBox(f"配置_{index}")
|
||||
|
||||
logger.success(f"{self.name} 配置_{index} 添加成功")
|
||||
logger.success(
|
||||
f"{self.name} 配置_{index} 添加成功", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 添加 配置_{index}", 3000
|
||||
)
|
||||
@@ -2767,20 +2878,20 @@ class MemberManager(QWidget):
|
||||
name = self.sub_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择配置")
|
||||
logger.warning("未选择配置", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请先选择一个配置", 5000
|
||||
)
|
||||
return None
|
||||
if name == "配置仪表盘":
|
||||
logger.warning("试图删除配置仪表盘")
|
||||
logger.warning("试图删除配置仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请勿尝试删除配置仪表盘", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
@@ -2791,8 +2902,13 @@ class MemberManager(QWidget):
|
||||
)
|
||||
if choice.exec():
|
||||
|
||||
logger.info(
|
||||
f"正在删除 {self.name} 的配置_{name}", module="脚本管理"
|
||||
)
|
||||
|
||||
self.sub_manager.clear_SettingBox()
|
||||
|
||||
# 删除配置文件并同步到相关配置项
|
||||
shutil.rmtree(
|
||||
Config.member_dict[self.name]["SubData"][name]["Path"]
|
||||
)
|
||||
@@ -2815,7 +2931,9 @@ class MemberManager(QWidget):
|
||||
f"配置_{max(int(name[3:]) - 1, 1)}"
|
||||
)
|
||||
|
||||
logger.success(f"{self.name} {name} 删除成功")
|
||||
logger.success(
|
||||
f"{self.name} {name} 删除成功", module="脚本管理"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 删除 {name}", 3000
|
||||
)
|
||||
@@ -2827,13 +2945,13 @@ class MemberManager(QWidget):
|
||||
name = self.sub_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择配置")
|
||||
logger.warning("未选择配置", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请先选择一个配置", 5000
|
||||
)
|
||||
return None
|
||||
if name == "配置仪表盘":
|
||||
logger.warning("试图移动配置仪表盘")
|
||||
logger.warning("试图移动配置仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请勿尝试移动配置仪表盘", 5000
|
||||
)
|
||||
@@ -2842,21 +2960,26 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == 1:
|
||||
logger.warning("向前移动配置时已到达最左端")
|
||||
logger.warning("向前移动配置时已到达最左端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是第一个配置", "无法向前移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(
|
||||
f"正在将 {self.name} 的配置_{name} 前移", module="脚本管理"
|
||||
)
|
||||
|
||||
self.sub_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.member_dict[self.name]["SubData"][name]["Path"].rename(
|
||||
Config.member_dict[self.name]["SubData"][name][
|
||||
"Path"
|
||||
@@ -2875,7 +2998,7 @@ class MemberManager(QWidget):
|
||||
|
||||
self.sub_manager.show_SettingBox(f"配置_{index - 1}")
|
||||
|
||||
logger.success(f"{self.name} {name} 前移成功")
|
||||
logger.success(f"{self.name} {name} 前移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 前移 {name}", 3000
|
||||
)
|
||||
@@ -2886,13 +3009,13 @@ class MemberManager(QWidget):
|
||||
name = self.sub_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择配置")
|
||||
logger.warning("未选择配置", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请先选择一个配置", 5000
|
||||
)
|
||||
return None
|
||||
if name == "配置仪表盘":
|
||||
logger.warning("试图删除配置仪表盘")
|
||||
logger.warning("试图删除配置仪表盘", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择配置", "请勿尝试移动配置仪表盘", 5000
|
||||
)
|
||||
@@ -2901,21 +3024,26 @@ class MemberManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == len(Config.member_dict[self.name]["SubData"]):
|
||||
logger.warning("向后移动配置时已到达最右端")
|
||||
logger.warning("向后移动配置时已到达最右端", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是最后一个配置", "无法向后移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(
|
||||
f"正在将 {self.name} 的配置_{name} 后移", module="脚本管理"
|
||||
)
|
||||
|
||||
self.sub_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.member_dict[self.name]["SubData"][name]["Path"].rename(
|
||||
Config.member_dict[self.name]["SubData"][name][
|
||||
"Path"
|
||||
@@ -2934,7 +3062,7 @@ class MemberManager(QWidget):
|
||||
|
||||
self.sub_manager.show_SettingBox(f"配置_{index + 1}")
|
||||
|
||||
logger.success(f"{self.name} {name} 后移成功")
|
||||
logger.success(f"{self.name} {name} 后移成功", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"{self.name} 后移 {name}", 3000
|
||||
)
|
||||
@@ -2980,7 +3108,11 @@ class MemberManager(QWidget):
|
||||
self.show_SettingBox("配置仪表盘")
|
||||
|
||||
def show_SettingBox(self, index: str) -> None:
|
||||
"""加载所有子界面"""
|
||||
"""
|
||||
加载所有子界面
|
||||
|
||||
:param index: 要显示的子界面索引
|
||||
"""
|
||||
|
||||
Config.search_general_sub(self.name)
|
||||
|
||||
@@ -2992,7 +3124,12 @@ class MemberManager(QWidget):
|
||||
def switch_SettingBox(
|
||||
self, index: str, if_change_pivot: bool = True
|
||||
) -> None:
|
||||
"""切换到指定的子界面"""
|
||||
"""
|
||||
切换到指定的子界面
|
||||
|
||||
:param index: 要切换到的子界面索引
|
||||
:param if_change_pivot: 是否更改 pivot 的当前项
|
||||
"""
|
||||
|
||||
if len(Config.member_dict[self.name]["SubData"]) == 0:
|
||||
index = "配置仪表盘"
|
||||
@@ -3026,7 +3163,11 @@ class MemberManager(QWidget):
|
||||
self.pivot.addItem(routeKey="配置仪表盘", text="配置仪表盘")
|
||||
|
||||
def add_SettingBox(self, uid: int) -> None:
|
||||
"""添加一个配置设置界面"""
|
||||
"""
|
||||
添加一个配置设置界面
|
||||
|
||||
:param uid: 配置的唯一标识符
|
||||
"""
|
||||
|
||||
setting_box = self.SubMemberSettingBox(self.name, uid, self)
|
||||
|
||||
@@ -3073,6 +3214,12 @@ class MemberManager(QWidget):
|
||||
Config.PASSWORD_refreshed.connect(self.load_info)
|
||||
|
||||
def load_info(self):
|
||||
"""加载配置仪表盘信息"""
|
||||
|
||||
logger.info(
|
||||
f"正在加载 {self.name} 的配置仪表盘信息",
|
||||
module="脚本管理",
|
||||
)
|
||||
|
||||
self.sub_data = Config.member_dict[self.name]["SubData"]
|
||||
|
||||
@@ -3127,6 +3274,10 @@ class MemberManager(QWidget):
|
||||
int(name[3:]) - 1, 4, button
|
||||
)
|
||||
|
||||
logger.success(
|
||||
f"{self.name} 配置仪表盘信息加载成功", module="脚本管理"
|
||||
)
|
||||
|
||||
class SubMemberSettingBox(HeaderCardWidget):
|
||||
"""配置管理子页面"""
|
||||
|
||||
@@ -3302,7 +3453,7 @@ class MemberManager(QWidget):
|
||||
"""配置子配置"""
|
||||
|
||||
if self.name in Config.running_list:
|
||||
logger.warning("所属脚本正在运行")
|
||||
logger.warning("所属脚本正在运行", module="脚本管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "所属脚本正在运行", "请先停止任务", 5000
|
||||
)
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
@@ -43,7 +42,7 @@ from qfluentwidgets import (
|
||||
from typing import List, Dict, Union
|
||||
import shutil
|
||||
|
||||
from app.core import Config, MainInfoBar, MaaPlanConfig, SoundPlayer
|
||||
from app.core import Config, MainInfoBar, MaaPlanConfig, SoundPlayer, logger
|
||||
from .Widget import (
|
||||
ComboBoxMessageBox,
|
||||
LineEditSettingCard,
|
||||
@@ -66,27 +65,20 @@ class PlanManager(QWidget):
|
||||
layout = QVBoxLayout(self)
|
||||
|
||||
self.tools = CommandBar()
|
||||
|
||||
self.plan_manager = self.PlanSettingBox(self)
|
||||
|
||||
# 逐个添加动作
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(FluentIcon.ADD_TO, "新建计划表", triggered=self.add_setting_box),
|
||||
Action(
|
||||
FluentIcon.REMOVE_FROM, "删除计划表", triggered=self.del_setting_box
|
||||
),
|
||||
Action(FluentIcon.ADD_TO, "新建计划表", triggered=self.add_plan),
|
||||
Action(FluentIcon.REMOVE_FROM, "删除计划表", triggered=self.del_plan),
|
||||
]
|
||||
)
|
||||
self.tools.addSeparator()
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(
|
||||
FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_setting_box
|
||||
),
|
||||
Action(
|
||||
FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_setting_box
|
||||
),
|
||||
Action(FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_plan),
|
||||
Action(FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_plan),
|
||||
]
|
||||
)
|
||||
self.tools.addSeparator()
|
||||
@@ -94,7 +86,7 @@ class PlanManager(QWidget):
|
||||
layout.addWidget(self.tools)
|
||||
layout.addWidget(self.plan_manager)
|
||||
|
||||
def add_setting_box(self):
|
||||
def add_plan(self):
|
||||
"""添加一个计划表"""
|
||||
|
||||
choice = ComboBoxMessageBox(
|
||||
@@ -109,6 +101,7 @@ class PlanManager(QWidget):
|
||||
|
||||
index = len(Config.plan_dict) + 1
|
||||
|
||||
# 初始化 MaaPlanConfig
|
||||
maa_plan_config = MaaPlanConfig()
|
||||
maa_plan_config.load(
|
||||
Config.app_path / f"config/MaaPlanConfig/计划_{index}/config.json",
|
||||
@@ -122,29 +115,30 @@ class PlanManager(QWidget):
|
||||
"Config": maa_plan_config,
|
||||
}
|
||||
|
||||
# 添加计划表到界面
|
||||
self.plan_manager.add_MaaPlanSettingBox(index)
|
||||
self.plan_manager.switch_SettingBox(index)
|
||||
|
||||
logger.success(f"计划管理 计划_{index} 添加成功")
|
||||
logger.success(f"计划管理 计划_{index} 添加成功", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", f"添加计划表 计划_{index}", 3000
|
||||
)
|
||||
SoundPlayer.play("添加计划表")
|
||||
|
||||
def del_setting_box(self):
|
||||
def del_plan(self):
|
||||
"""删除一个计划表"""
|
||||
|
||||
name = self.plan_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("删除计划表时未选择计划表")
|
||||
logger.warning("删除计划表时未选择计划表", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择计划表", "请选择一个计划表", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("删除计划表时调度队列未停止运行")
|
||||
logger.warning("删除计划表时调度队列未停止运行", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
@@ -153,8 +147,11 @@ class PlanManager(QWidget):
|
||||
choice = MessageBox("确认", f"确定要删除 {name} 吗?", self.window())
|
||||
if choice.exec():
|
||||
|
||||
logger.info(f"正在删除计划表 {name}", module="计划管理")
|
||||
|
||||
self.plan_manager.clear_SettingBox()
|
||||
|
||||
# 删除计划表配置文件并同步到相关配置项
|
||||
shutil.rmtree(Config.plan_dict[name]["Path"])
|
||||
Config.change_plan(name, "固定")
|
||||
for i in range(int(name[3:]) + 1, len(Config.plan_dict) + 1):
|
||||
@@ -166,17 +163,17 @@ class PlanManager(QWidget):
|
||||
|
||||
self.plan_manager.show_SettingBox(max(int(name[3:]) - 1, 1))
|
||||
|
||||
logger.success(f"计划表 {name} 删除成功")
|
||||
logger.success(f"计划表 {name} 删除成功", module="计划管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"删除计划表 {name}", 3000)
|
||||
SoundPlayer.play("删除计划表")
|
||||
|
||||
def left_setting_box(self):
|
||||
def left_plan(self):
|
||||
"""向左移动计划表"""
|
||||
|
||||
name = self.plan_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("向左移动计划表时未选择计划表")
|
||||
logger.warning("向左移动计划表时未选择计划表", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择计划表", "请选择一个计划表", 5000
|
||||
)
|
||||
@@ -185,21 +182,24 @@ class PlanManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == 1:
|
||||
logger.warning("向左移动计划表时已到达最左端")
|
||||
logger.warning("向左移动计划表时已到达最左端", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是第一个计划表", "无法向左移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("向左移动计划表时调度队列未停止运行")
|
||||
logger.warning("向左移动计划表时调度队列未停止运行", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在左移计划表 {name}", module="计划管理")
|
||||
|
||||
self.plan_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.plan_dict[name]["Path"].rename(
|
||||
Config.plan_dict[name]["Path"].with_name("计划_0")
|
||||
)
|
||||
@@ -215,16 +215,16 @@ class PlanManager(QWidget):
|
||||
|
||||
self.plan_manager.show_SettingBox(index - 1)
|
||||
|
||||
logger.success(f"计划表 {name} 左移成功")
|
||||
logger.success(f"计划表 {name} 左移成功", module="计划管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"左移计划表 {name}", 3000)
|
||||
|
||||
def right_setting_box(self):
|
||||
def right_plan(self):
|
||||
"""向右移动计划表"""
|
||||
|
||||
name = self.plan_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("向右移动计划表时未选择计划表")
|
||||
logger.warning("向右移动计划表时未选择计划表", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择计划表", "请选择一个计划表", 5000
|
||||
)
|
||||
@@ -233,21 +233,24 @@ class PlanManager(QWidget):
|
||||
index = int(name[3:])
|
||||
|
||||
if index == len(Config.plan_dict):
|
||||
logger.warning("向右移动计划表时已到达最右端")
|
||||
logger.warning("向右移动计划表时已到达最右端", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是最后一个计划表", "无法向右移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if len(Config.running_list) > 0:
|
||||
logger.warning("向右移动计划表时调度队列未停止运行")
|
||||
logger.warning("向右移动计划表时调度队列未停止运行", module="计划管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度中心正在执行任务", "请等待或手动中止任务", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在右移计划表 {name}", module="计划管理")
|
||||
|
||||
self.plan_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.plan_dict[name]["Path"].rename(
|
||||
Config.plan_dict[name]["Path"].with_name("计划_0")
|
||||
)
|
||||
@@ -263,7 +266,7 @@ class PlanManager(QWidget):
|
||||
|
||||
self.plan_manager.show_SettingBox(index + 1)
|
||||
|
||||
logger.success(f"计划表 {name} 右移成功")
|
||||
logger.success(f"计划表 {name} 右移成功", module="计划管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"右移计划表 {name}", 3000)
|
||||
|
||||
class PlanSettingBox(QWidget):
|
||||
@@ -297,7 +300,11 @@ class PlanManager(QWidget):
|
||||
self.show_SettingBox(1)
|
||||
|
||||
def show_SettingBox(self, index) -> None:
|
||||
"""加载所有子界面"""
|
||||
"""
|
||||
加载所有子界面并切换到指定的子界面
|
||||
|
||||
:param index: 要显示的子界面索引
|
||||
"""
|
||||
|
||||
Config.search_plan()
|
||||
|
||||
@@ -308,7 +315,12 @@ class PlanManager(QWidget):
|
||||
self.switch_SettingBox(index)
|
||||
|
||||
def switch_SettingBox(self, index: int, if_chang_pivot: bool = True) -> None:
|
||||
"""切换到指定的子界面"""
|
||||
"""
|
||||
切换到指定的子界面
|
||||
|
||||
:param index: 要切换到的子界面索引
|
||||
:param if_chang_pivot: 是否更改 pivot 的当前项
|
||||
"""
|
||||
|
||||
if len(Config.plan_dict) == 0:
|
||||
return None
|
||||
@@ -331,7 +343,11 @@ class PlanManager(QWidget):
|
||||
self.pivot.clear()
|
||||
|
||||
def add_MaaPlanSettingBox(self, uid: int) -> None:
|
||||
"""添加一个MAA设置界面"""
|
||||
"""
|
||||
添加一个MAA设置界面
|
||||
|
||||
:param uid: MAA计划表的唯一标识符
|
||||
"""
|
||||
|
||||
maa_plan_setting_box = self.MaaPlanSettingBox(uid, self)
|
||||
|
||||
@@ -475,6 +491,7 @@ class PlanManager(QWidget):
|
||||
)
|
||||
|
||||
def refresh_stage(self):
|
||||
"""刷新关卡列表"""
|
||||
|
||||
for group, name_dict in self.item_dict.items():
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
@@ -42,7 +41,7 @@ from qfluentwidgets import (
|
||||
)
|
||||
from typing import List
|
||||
|
||||
from app.core import QueueConfig, Config, MainInfoBar, SoundPlayer
|
||||
from app.core import QueueConfig, Config, MainInfoBar, SoundPlayer, logger
|
||||
from .Widget import (
|
||||
SwitchSettingCard,
|
||||
ComboBoxSettingCard,
|
||||
@@ -70,36 +69,31 @@ class QueueManager(QWidget):
|
||||
# 逐个添加动作
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(FluentIcon.ADD_TO, "新建调度队列", triggered=self.add_queue),
|
||||
Action(
|
||||
FluentIcon.ADD_TO, "新建调度队列", triggered=self.add_setting_box
|
||||
),
|
||||
Action(
|
||||
FluentIcon.REMOVE_FROM,
|
||||
"删除调度队列",
|
||||
triggered=self.del_setting_box,
|
||||
FluentIcon.REMOVE_FROM, "删除调度队列", triggered=self.del_queue
|
||||
),
|
||||
]
|
||||
)
|
||||
self.tools.addSeparator()
|
||||
self.tools.addActions(
|
||||
[
|
||||
Action(
|
||||
FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_setting_box
|
||||
),
|
||||
Action(
|
||||
FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_setting_box
|
||||
),
|
||||
Action(FluentIcon.LEFT_ARROW, "向左移动", triggered=self.left_queue),
|
||||
Action(FluentIcon.RIGHT_ARROW, "向右移动", triggered=self.right_queue),
|
||||
]
|
||||
)
|
||||
|
||||
layout.addWidget(self.tools)
|
||||
layout.addWidget(self.queue_manager)
|
||||
|
||||
def add_setting_box(self):
|
||||
def add_queue(self):
|
||||
"""添加一个调度队列"""
|
||||
|
||||
index = len(Config.queue_dict) + 1
|
||||
|
||||
logger.info(f"正在添加调度队列_{index}", module="队列管理")
|
||||
|
||||
# 初始化队列配置
|
||||
queue_config = QueueConfig()
|
||||
queue_config.load(
|
||||
Config.app_path / f"config/QueueConfig/调度队列_{index}.json", queue_config
|
||||
@@ -111,27 +105,28 @@ class QueueManager(QWidget):
|
||||
"Config": queue_config,
|
||||
}
|
||||
|
||||
# 添加到配置界面
|
||||
self.queue_manager.add_SettingBox(index)
|
||||
self.queue_manager.switch_SettingBox(index)
|
||||
|
||||
logger.success(f"调度队列_{index} 添加成功")
|
||||
logger.success(f"调度队列_{index} 添加成功", module="队列管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"添加 调度队列_{index}", 3000)
|
||||
SoundPlayer.play("添加调度队列")
|
||||
|
||||
def del_setting_box(self):
|
||||
def del_queue(self):
|
||||
"""删除一个调度队列实例"""
|
||||
|
||||
name = self.queue_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择调度队列")
|
||||
logger.warning("未选择调度队列", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择调度队列", "请先选择一个调度队列", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if name in Config.running_list:
|
||||
logger.warning("调度队列正在运行")
|
||||
logger.warning("调度队列正在运行", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "调度队列正在运行", "请先停止调度队列", 5000
|
||||
)
|
||||
@@ -140,8 +135,11 @@ class QueueManager(QWidget):
|
||||
choice = MessageBox("确认", f"确定要删除 {name} 吗?", self.window())
|
||||
if choice.exec():
|
||||
|
||||
logger.info(f"正在删除调度队列 {name}", module="队列管理")
|
||||
|
||||
self.queue_manager.clear_SettingBox()
|
||||
|
||||
# 删除队列配置文件并同步到相关配置项
|
||||
Config.queue_dict[name]["Path"].unlink()
|
||||
for i in range(int(name[5:]) + 1, len(Config.queue_dict) + 1):
|
||||
if Config.queue_dict[f"调度队列_{i}"]["Path"].exists():
|
||||
@@ -153,17 +151,17 @@ class QueueManager(QWidget):
|
||||
|
||||
self.queue_manager.show_SettingBox(max(int(name[5:]) - 1, 1))
|
||||
|
||||
logger.success(f"{name} 删除成功")
|
||||
logger.success(f"{name} 删除成功", module="队列管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"删除 {name}", 3000)
|
||||
SoundPlayer.play("删除调度队列")
|
||||
|
||||
def left_setting_box(self):
|
||||
def left_queue(self):
|
||||
"""向左移动调度队列实例"""
|
||||
|
||||
name = self.queue_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择调度队列")
|
||||
logger.warning("未选择调度队列", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择调度队列", "请先选择一个调度队列", 5000
|
||||
)
|
||||
@@ -172,21 +170,24 @@ class QueueManager(QWidget):
|
||||
index = int(name[5:])
|
||||
|
||||
if index == 1:
|
||||
logger.warning("向左移动调度队列时已到达最左端")
|
||||
logger.warning("向左移动调度队列时已到达最左端", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是第一个调度队列", "无法向左移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if name in Config.running_list or f"调度队列_{index-1}" in Config.running_list:
|
||||
logger.warning("相关调度队列正在运行")
|
||||
logger.warning("相关调度队列正在运行", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "相关调度队列正在运行", "请先停止调度队列", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在左移调度队列 {name}", module="队列管理")
|
||||
|
||||
self.queue_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.queue_dict[name]["Path"].rename(
|
||||
Config.queue_dict[name]["Path"].with_name("调度队列_0.json")
|
||||
)
|
||||
@@ -199,16 +200,16 @@ class QueueManager(QWidget):
|
||||
|
||||
self.queue_manager.show_SettingBox(index - 1)
|
||||
|
||||
logger.success(f"{name} 左移成功")
|
||||
logger.success(f"{name} 左移成功", module="队列管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"左移 {name}", 3000)
|
||||
|
||||
def right_setting_box(self):
|
||||
def right_queue(self):
|
||||
"""向右移动调度队列实例"""
|
||||
|
||||
name = self.queue_manager.pivot.currentRouteKey()
|
||||
|
||||
if name is None:
|
||||
logger.warning("未选择调度队列")
|
||||
logger.warning("未选择调度队列", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "未选择调度队列", "请先选择一个调度队列", 5000
|
||||
)
|
||||
@@ -217,21 +218,24 @@ class QueueManager(QWidget):
|
||||
index = int(name[5:])
|
||||
|
||||
if index == len(Config.queue_dict):
|
||||
logger.warning("向右移动调度队列时已到达最右端")
|
||||
logger.warning("向右移动调度队列时已到达最右端", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "已经是最后一个调度队列", "无法向右移动", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
if name in Config.running_list or f"调度队列_{index+1}" in Config.running_list:
|
||||
logger.warning("相关调度队列正在运行")
|
||||
logger.warning("相关调度队列正在运行", module="队列管理")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning", "相关调度队列正在运行", "请先停止调度队列", 5000
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(f"正在右移调度队列 {name}", module="队列管理")
|
||||
|
||||
self.queue_manager.clear_SettingBox()
|
||||
|
||||
# 移动配置文件并同步到相关配置项
|
||||
Config.queue_dict[name]["Path"].rename(
|
||||
Config.queue_dict[name]["Path"].with_name("调度队列_0.json")
|
||||
)
|
||||
@@ -244,12 +248,13 @@ class QueueManager(QWidget):
|
||||
|
||||
self.queue_manager.show_SettingBox(index + 1)
|
||||
|
||||
logger.success(f"{name} 右移成功")
|
||||
logger.success(f"{name} 右移成功", module="队列管理")
|
||||
MainInfoBar.push_info_bar("success", "操作成功", f"右移 {name}", 3000)
|
||||
|
||||
def reload_member_name(self):
|
||||
"""刷新调度队列成员"""
|
||||
|
||||
# 获取成员列表
|
||||
member_list = [
|
||||
["禁用"] + [_ for _ in Config.member_dict.keys()],
|
||||
["未启用"]
|
||||
@@ -337,7 +342,12 @@ class QueueManager(QWidget):
|
||||
self.switch_SettingBox(index)
|
||||
|
||||
def switch_SettingBox(self, index: int, if_change_pivot: bool = True) -> None:
|
||||
"""切换到指定的子界面"""
|
||||
"""
|
||||
切换到指定的子界面并切换到指定的子页面
|
||||
|
||||
:param index: 要切换到的子界面索引
|
||||
:param if_change_pivot: 是否更改导航栏当前项
|
||||
"""
|
||||
|
||||
if len(Config.queue_dict) == 0:
|
||||
return None
|
||||
|
||||
@@ -25,7 +25,6 @@ v4.4
|
||||
作者:DLmaster_361
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
from PySide6.QtWidgets import QWidget, QVBoxLayout
|
||||
from PySide6.QtGui import QIcon
|
||||
from PySide6.QtCore import Qt
|
||||
@@ -49,7 +48,7 @@ from packaging import version
|
||||
from pathlib import Path
|
||||
from typing import Dict, Union
|
||||
|
||||
from app.core import Config, MainInfoBar, Network, SoundPlayer
|
||||
from app.core import Config, MainInfoBar, Network, SoundPlayer, logger
|
||||
from app.services import Crypto, System, Notify
|
||||
from .downloader import DownloadManager
|
||||
from .Widget import (
|
||||
@@ -124,7 +123,7 @@ class Setting(QWidget):
|
||||
self.window(),
|
||||
)
|
||||
if choice.exec():
|
||||
logger.success("确认授权bilibili游戏隐私政策")
|
||||
logger.success("确认授权bilibili游戏隐私政策", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", "已确认授权bilibili游戏隐私政策", 3000
|
||||
)
|
||||
@@ -132,7 +131,7 @@ class Setting(QWidget):
|
||||
Config.set(Config.function_IfAgreeBilibili, False)
|
||||
else:
|
||||
|
||||
logger.info("取消授权bilibili游戏隐私政策")
|
||||
logger.info("取消授权bilibili游戏隐私政策", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"info", "操作成功", "已取消授权bilibili游戏隐私政策", 3000
|
||||
)
|
||||
@@ -158,7 +157,7 @@ class Setting(QWidget):
|
||||
|
||||
MuMu_splash_ads_path.touch()
|
||||
|
||||
logger.success("开启跳过MuMu启动广告功能")
|
||||
logger.success("开启跳过MuMu启动广告功能", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", "已开启跳过MuMu启动广告功能", 3000
|
||||
)
|
||||
@@ -170,7 +169,7 @@ class Setting(QWidget):
|
||||
if MuMu_splash_ads_path.exists() and MuMu_splash_ads_path.is_file():
|
||||
MuMu_splash_ads_path.unlink()
|
||||
|
||||
logger.info("关闭跳过MuMu启动广告功能")
|
||||
logger.info("关闭跳过MuMu启动广告功能", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"info", "操作成功", "已关闭跳过MuMu启动广告功能", 3000
|
||||
)
|
||||
@@ -181,6 +180,8 @@ class Setting(QWidget):
|
||||
if Config.key_path.exists():
|
||||
return None
|
||||
|
||||
logger.info("未设置管理密钥,开始要求用户进行设置", module="设置界面")
|
||||
|
||||
while True:
|
||||
|
||||
choice = LineEditMessageBox(
|
||||
@@ -188,6 +189,7 @@ class Setting(QWidget):
|
||||
)
|
||||
if choice.exec() and choice.input.text() != "":
|
||||
Crypto.get_PASSWORD(choice.input.text())
|
||||
logger.success("成功设置管理密钥", module="设置界面")
|
||||
break
|
||||
else:
|
||||
choice = MessageBox(
|
||||
@@ -207,10 +209,7 @@ class Setting(QWidget):
|
||||
while if_change:
|
||||
|
||||
choice = LineEditMessageBox(
|
||||
self.window(),
|
||||
"请输入旧的管理密钥",
|
||||
"旧管理密钥",
|
||||
"密码",
|
||||
self.window(), "请输入旧的管理密钥", "旧管理密钥", "密码"
|
||||
)
|
||||
if choice.exec() and choice.input.text() != "":
|
||||
|
||||
@@ -231,6 +230,7 @@ class Setting(QWidget):
|
||||
|
||||
# 修改管理密钥
|
||||
Crypto.change_PASSWORD(PASSWORD_old, choice.input.text())
|
||||
logger.success("成功修改管理密钥", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", "管理密钥修改成功", 3000
|
||||
)
|
||||
@@ -291,6 +291,7 @@ class Setting(QWidget):
|
||||
|
||||
# 重置管理密钥
|
||||
Crypto.reset_PASSWORD(choice.input.text())
|
||||
logger.success("成功重置管理密钥", module="设置界面")
|
||||
MainInfoBar.push_info_bar(
|
||||
"success", "操作成功", "管理密钥重置成功", 3000
|
||||
)
|
||||
@@ -316,7 +317,12 @@ class Setting(QWidget):
|
||||
)
|
||||
|
||||
def check_update(self, if_show: bool = False, if_first: bool = False) -> None:
|
||||
"""检查版本更新,调起文件下载进程"""
|
||||
"""
|
||||
检查版本更新,调起更新线程
|
||||
|
||||
:param if_show: 是否显示更新信息
|
||||
:param if_first: 是否为启动时检查更新
|
||||
"""
|
||||
|
||||
current_version = list(map(int, Config.VERSION.split(".")))
|
||||
|
||||
@@ -339,7 +345,9 @@ class Setting(QWidget):
|
||||
|
||||
if version_info["code"] != 0:
|
||||
|
||||
logger.error(f"获取版本信息时出错:{version_info['msg']}")
|
||||
logger.error(
|
||||
f"获取版本信息时出错:{version_info['msg']}", module="设置界面"
|
||||
)
|
||||
|
||||
error_remark_dict = {
|
||||
1001: "获取版本信息的URL参数不正确",
|
||||
@@ -372,7 +380,10 @@ class Setting(QWidget):
|
||||
|
||||
return None
|
||||
|
||||
logger.warning(f"获取版本信息时出错:{network_result['error_message']}")
|
||||
logger.warning(
|
||||
f"获取版本信息时出错:{network_result['error_message']}",
|
||||
module="设置界面",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取版本信息时出错",
|
||||
@@ -470,11 +481,12 @@ class Setting(QWidget):
|
||||
download_info = network_result["response_json"]
|
||||
else:
|
||||
logger.warning(
|
||||
f"获取应用列表时出错:{network_result['error_message']}"
|
||||
f"获取下载信息时出错:{network_result['error_message']}",
|
||||
module="设置界面",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取应用列表时出错",
|
||||
"获取下载信息时出错",
|
||||
f"网络错误:{network_result['status_code']}",
|
||||
5000,
|
||||
)
|
||||
@@ -492,6 +504,8 @@ class Setting(QWidget):
|
||||
"download_dict": download_info["download_dict"],
|
||||
}
|
||||
|
||||
logger.info("开始执行更新任务", module="设置界面")
|
||||
|
||||
self.downloader = DownloadManager(
|
||||
Config.app_path, "AUTO_MAA", remote_version, download_config
|
||||
)
|
||||
@@ -526,6 +540,9 @@ class Setting(QWidget):
|
||||
SoundPlayer.play("无新版本")
|
||||
|
||||
def start_setup(self) -> None:
|
||||
"""启动安装程序"""
|
||||
|
||||
logger.info("启动安装程序", module="设置界面")
|
||||
subprocess.Popen(
|
||||
[
|
||||
Config.app_path / "AUTO_MAA-Setup.exe",
|
||||
@@ -555,7 +572,10 @@ class Setting(QWidget):
|
||||
if network_result["status_code"] == 200:
|
||||
notice = network_result["response_json"]
|
||||
else:
|
||||
logger.warning(f"获取最新公告时出错:{network_result['error_message']}")
|
||||
logger.warning(
|
||||
f"获取最新公告时出错:{network_result['error_message']}",
|
||||
module="设置界面",
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取最新公告时出错",
|
||||
|
||||
Reference in New Issue
Block a user