TG-PlatformPlus/createTaskDlg.py

87 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()