92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
|
|
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)
|