TG-PlatformPlus/createTaskDlg.py

87 lines
3.2 KiB
Python
Raw Permalink Normal View History

2026-03-02 14:29:58 +08:00
import os
import re
import json
import base64
from PyQt6 import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
from ui.Ui_createTaskDlg import Ui_createTaskDlg
from taskModel.taskManager import taskManager
from show_editor import CodeDialog
import ui.res_rc
class CreateTaskDlg(QDialog):
createFinished = pyqtSignal()
editFinished = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_createTaskDlg()
self.ui.setupUi(self)
self.taskId = ""
self.taskGroupId = ""
with open(os.path.join(os.path.dirname(__file__),"default_task.py"), "r", encoding="utf-8") as f:
self.defaultScriptBase64 = f.read()
# 删除UTF-8 BOM如果有的话
# UTF-8 BOM的字节序列是\xef\xbb\xbf解码为字符串后是'\ufeff'
if self.defaultScriptBase64.startswith('\ufeff'):
self.defaultScriptBase64 = self.defaultScriptBase64[1:] # 切片以删除第一个字符即BOM
self.scriptStr = self.defaultScriptBase64
self.codeDialog = CodeDialog("任务脚本编辑")
self.ui.pbScript.clicked.connect(self.handleScript)
self.ui.pbSave.clicked.connect(self.handleAccept)
self.ui.pbCancel.clicked.connect(self.reject)
def showCreateDlg(self, group_id):
self.setWindowTitle("创建任务")
self.taskId = ""
self.taskGroupId = group_id
self.scriptStr = self.defaultScriptBase64
self.ui.leName.setText("")
self.ui.sLoop.setValue(1)
self.ui.sDelay.setValue(0)
self.ui.leRemark.setText("")
self.exec()
def showEditDlg(self, task):
self.setWindowTitle("编辑任务")
self.taskId = task["id"]
self.ui.leName.setText(task["name"])
self.ui.sLoop.setValue(int(task["loop"]))
self.ui.sDelay.setValue(int(task["delay"]))
self.ui.leRemark.setText(task["remark"])
self.scriptStr = task["script"] and str(base64.b64decode(task["script"] ), 'utf-8') or self.defaultScriptBase64
self.exec()
def handleScript(self):
self.scriptStr = self.codeDialog.showEditor(self.scriptStr)
def handleAccept(self):
name = self.ui.leName.text()
loop = str(self.ui.sLoop.value())
delay = str(self.ui.sDelay.value())
remark = self.ui.leRemark.text()
script = base64.b64encode(self.scriptStr.encode("utf-8"))
if name == "":
QMessageBox.warning(self, "错误", "任务名称不能为空", QMessageBox.StandardButton.Ok)
return
if self.windowTitle() == "创建任务":
id = taskManager.create(self.taskGroupId, name, loop, delay, remark, script)
if id != "":
self.createFinished.emit()
elif self.windowTitle() == "编辑任务":
param = {
"name": name,
"loop": loop,
"delay": delay,
"remark": remark,
"script": script
}
result = taskManager.update(self.taskId, param)
if result:
self.editFinished.emit()
self.accept()