87 lines
3.2 KiB
Python
87 lines
3.2 KiB
Python
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()
|
||
|
||
|
||
|