feat(ui): 主调度台支持直接启动多开调度台

This commit is contained in:
DLmaster361
2025-04-26 22:40:47 +08:00
parent fecff625a3
commit e6a97f2b17
6 changed files with 118 additions and 21 deletions

View File

@@ -109,7 +109,14 @@ class LineEditMessageBox(MessageBoxBase):
class ComboBoxMessageBox(MessageBoxBase):
"""选择对话框"""
def __init__(self, parent, title: str, content: List[str], list: List[List[str]]):
def __init__(
self,
parent,
title: str,
content: List[str],
text_list: List[List[str]],
data_list: List[List[str]] = None,
):
super().__init__(parent)
self.title = SubtitleLabel(title)
@@ -121,7 +128,11 @@ class ComboBoxMessageBox(MessageBoxBase):
for i in range(len(content)):
self.input.append(ComboBox())
self.input[i].addItems(list[i])
if data_list:
for j in range(len(text_list[i])):
self.input[i].addItem(text_list[i][j], userData=data_list[i][j])
else:
self.input[i].addItems(text_list[i])
self.input[i].setCurrentIndex(-1)
self.input[i].setPlaceholderText(content[i])
Layout.addWidget(self.input[i])

View File

@@ -50,7 +50,7 @@ from typing import List, Dict
from app.core import Config, TaskManager, Task, MainInfoBar
from .Widget import StatefulItemCard
from .Widget import StatefulItemCard, ComboBoxMessageBox
class DispatchCenter(QWidget):
@@ -89,7 +89,7 @@ class DispatchCenter(QWidget):
dispatch_box = DispatchBox(task.name, self)
dispatch_box.top_bar.button.clicked.connect(
dispatch_box.top_bar.main_button.clicked.connect(
lambda: TaskManager.stop_task(task.name)
)
@@ -123,9 +123,10 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.Lable.show()
self.script_list["主调度台"].top_bar.object.hide()
self.script_list["主调度台"].top_bar.mode.hide()
self.script_list["主调度台"].top_bar.button.clicked.disconnect()
self.script_list["主调度台"].top_bar.button.setText("中止任务")
self.script_list["主调度台"].top_bar.button.clicked.connect(
self.script_list["主调度台"].top_bar.multi_button.show()
self.script_list["主调度台"].top_bar.main_button.clicked.disconnect()
self.script_list["主调度台"].top_bar.main_button.setText("中止任务")
self.script_list["主调度台"].top_bar.main_button.clicked.connect(
lambda: TaskManager.stop_task(task.name)
)
task.create_task_list.connect(
@@ -153,10 +154,11 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.Lable.hide()
self.script_list["主调度台"].top_bar.object.show()
self.script_list["主调度台"].top_bar.mode.show()
self.script_list["主调度台"].top_bar.button.clicked.disconnect()
self.script_list["主调度台"].top_bar.button.setText("开始任务")
self.script_list["主调度台"].top_bar.button.clicked.connect(
self.script_list["主调度台"].top_bar.start_task
self.script_list["主调度台"].top_bar.multi_button.hide()
self.script_list["主调度台"].top_bar.main_button.clicked.disconnect()
self.script_list["主调度台"].top_bar.main_button.setText("开始任务")
self.script_list["主调度台"].top_bar.main_button.clicked.connect(
self.script_list["主调度台"].top_bar.start_main_task
)
if len(logs) > 0:
history = ""
@@ -250,25 +252,29 @@ class DispatchBox(QWidget):
self.mode = ComboBox()
self.mode.setPlaceholderText("请选择调度模式")
self.button = PushButton("开始任务")
self.button.clicked.connect(self.start_task)
self.multi_button = PushButton("添加任务")
self.multi_button.clicked.connect(self.start_multi_task)
self.main_button = PushButton("开始任务")
self.main_button.clicked.connect(self.start_main_task)
self.multi_button.hide()
Layout.addWidget(self.Lable)
Layout.addWidget(self.object)
Layout.addWidget(self.mode)
Layout.addStretch(1)
Layout.addWidget(self.button)
Layout.addWidget(self.multi_button)
Layout.addWidget(self.main_button)
else:
self.Lable = SubtitleLabel(name, self)
self.button = PushButton("中止任务")
self.main_button = PushButton("中止任务")
Layout.addWidget(self.Lable)
Layout.addStretch(1)
Layout.addWidget(self.button)
Layout.addWidget(self.main_button)
def start_task(self):
def start_main_task(self):
"""开始任务"""
if self.object.currentIndex() == -1:
@@ -312,6 +318,74 @@ class DispatchBox(QWidget):
{"Queue": {"Member_1": self.object.currentData()}},
)
def start_multi_task(self):
"""开始任务"""
# 获取所有可用的队列和实例
text_list = []
data_list = []
for name, info in Config.queue_dict.items():
if name in Config.running_list:
continue
text_list.append(
"队列"
if info["Config"].get(info["Config"].queueSet_Name) == ""
else f"队列 - {info["Config"].get(info["Config"].queueSet_Name)}"
)
data_list.append(name)
for name, info in Config.member_dict.items():
if name in Config.running_list:
continue
text_list.append(
f"实例 - {info['Type']}"
if info["Config"].get(info["Config"].MaaSet_Name) == ""
else f"实例 - {info['Type']} - {info["Config"].get(info["Config"].MaaSet_Name)}"
)
data_list.append(name)
choice = ComboBoxMessageBox(
self.window(),
"选择一个对象以添加相应多开任务",
["选择调度对象"],
[text_list],
[data_list],
)
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()}")
MainInfoBar.push_info_bar(
"warning", "任务已存在", choice.input[0].currentData(), 5000
)
return None
if "调度队列" in choice.input[0].currentData():
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
TaskManager.add_task(
"自动代理_新调度台",
choice.input[0].currentData(),
Config.queue_dict[choice.input[0].currentData()][
"Config"
].toDict(),
)
elif "脚本" in choice.input[0].currentData():
if (
Config.member_dict[choice.input[0].currentData()]["Type"]
== "Maa"
):
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
TaskManager.add_task(
"自动代理_新调度台",
f"自定义队列 - {choice.input[0].currentData()}",
{"Queue": {"Member_1": choice.input[0].currentData()}},
)
class DispatchInfoCard(HeaderCardWidget):
def __init__(self, parent=None):

View File

@@ -487,7 +487,7 @@ class FunctionSettingCard(HeaderCardWidget):
icon=FluentIcon.PAGE_RIGHT,
title="历史记录保留时间",
content="选择历史记录的保留时间,超期自动清理",
texts=["7 天", "15 天", "30 天", "60 天", "永久"],
texts=["7 天", "15 天", "30 天", "60 天", "90 天", "半年", "一年", "永久"],
qconfig=Config,
configItem=Config.function_HistoryRetentionTime,
parent=self,