TG-PlatformPlus/insertProTaskDlg.py

92 lines
3.4 KiB
Python
Raw Permalink Normal View History

2026-03-02 14:29:58 +08:00
import json
import re
import base64
from PyQt6 import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
from ui.Ui_insertTaskDlg import Ui_insertTaskDlg
from taskModel.taskManager import taskManager
from taskInstructionModel.taskInstructionManager import taskInstructionManager
class InsertProTaskDlg(QDialog):
insertFinished = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_insertTaskDlg()
self.ui.setupUi(self)
self.targetIds = []
self.includingSubtasks = {}
self.targetType = "task"
self.taskModel = QStandardItemModel()
self.taskProxyModel = QSortFilterProxyModel()
self.taskProxyModel.setSourceModel(self.taskModel)
self.ui.tableViewTask.setModel(self.taskProxyModel)
self.ui.leSearchTask.textChanged.connect(self.handleTaskSearch)
self.ui.pbSave.clicked.connect(self.handleSave)
self.ui.pbCancel.clicked.connect(self.reject)
def handleSave(self):
selectedRows = self.ui.tableViewTask.selectionModel().selectedRows()
levelIndex = 0
if len(selectedRows) > 0:
self.targetIds = []
for row in selectedRows:
index = row.model().index(row.row(), 0)
targetId = index.data()
self.targetIds.append(targetId)
self.accept()
def showDlg(self):
self.setWindowTitle('添加任务')
self.taskModel.clear()
self.loadAllIncludingSubtasks()
self.loadTask()
self.exec()
def batchOperation(self):
self.setAllColumnWidth()
self.hideAllColumn()
self.setAllHorizontalHeaderLabels()
def handleTaskSearch(self):
self.taskProxyModel.setFilterRegularExpression(re.escape(self.ui.leSearchTask.text()))
self.taskProxyModel.setFilterKeyColumn(1)
#加载全部包含子任务的任务
def loadAllIncludingSubtasks(self):
return
tasks = taskInstructionManager.getIncludingsubtasks()
if len(tasks) > 0:
for task in tasks:
if str(task['task_id']) not in self.includingSubtasks:
self.includingSubtasks[str(task['task_id'])] = True
# 加载队列
def loadTask(self):
self.taskModel.clear()
tasks = taskManager.getInfo()
if len(tasks) > 0:
for task in tasks:
index = self.taskModel.rowCount()
if str(task['id']) not in self.includingSubtasks:
self.taskModel.setItem(index, 0, QStandardItem(str(task['id'])))
self.taskModel.setItem(index, 1, QStandardItem(task['name']))
self.taskModel.setItem(index, 2, QStandardItem(str(task['loop'])))
self.taskModel.setItem(index, 3, QStandardItem(str(task['delay'])))
self.taskModel.setItem(index, 4, QStandardItem(task['remark']))
self.batchOperation()
# 批量设置标题
def setAllHorizontalHeaderLabels(self):
self.taskModel.setHorizontalHeaderLabels(['ID','名称', '循环次数', '间隔时间(ms)', '备注'])
# 隐藏指定列
def hideAllColumn(self):
self.ui.tableViewTask.setColumnHidden(0, True)
# 批量设置列宽
def setAllColumnWidth(self):
self.ui.tableViewTask.setColumnWidth(1, 200)
self.ui.tableViewTask.setColumnWidth(4, 200)