TG-PlatformPlus/createDeviceDlg.py

122 lines
4.8 KiB
Python

import json
from PyQt6 import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
from ui.Ui_createDeviceDlg import Ui_createDeviceDlg
from deviceModel.deviceManager import deviceManager
from devmodelModel.devModelManager import devModelManager
from dmGroupModel.dmGroupManager import dmGroupManager
from common import common
class CreateDeviceDlg(QDialog):
createFinished = pyqtSignal()
editFinished = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_createDeviceDlg()
self.ui.setupUi(self)
self.deviceId = ""
self.group_id = ''
self.devModelId = ""
self.interfaces = []
self.deviceextendedProperty = {}
self.pixmap = ''
self.ui.cbModelGroup.currentIndexChanged.connect(self.loadGroupDevModel)
self.ui.cbDevModel.currentIndexChanged.connect(self.loadImage)
self.ui.pbSave.clicked.connect(self.handleAccept)
self.ui.pbCancel.clicked.connect(self.reject)
# 加载设备模型分组
def loadModelGroup(self):
modelGroups = dmGroupManager.getInfo()
self.ui.cbModelGroup.clear()
if len(modelGroups) > 0:
for modelGroup in modelGroups:
self.ui.cbModelGroup.addItem(modelGroup["name"], modelGroup)
# 加载设备模型
def loadGroupDevModel(self):
group_id = self.ui.cbModelGroup.currentData()["id"]
devModels = devModelManager.getGroupDm(group_id)
self.ui.cbDevModel.clear()
if len(devModels) > 0:
for devModel in devModels:
self.ui.cbDevModel.addItem(devModel["name"], devModel)
def showCreateDlg(self, group_id):
self.setWindowTitle("创建设备")
self.pixmap = ''
self.interfaceIndex = -1
self.group_id = group_id
self.ui.widgetDevModel.setVisible(True)
self.loadModelGroup()
self.ui.leDevName.setText("")
self.ui.cbDevModel.setCurrentIndex(0)
self.ui.leDevDescription.setText("")
self.exec()
def showEditDlg(self, devModelId, device):
self.setWindowTitle("编辑设备")
self.deviceId = device["id"]
self.devModelId = devModelId
self.ui.leDevName.setText(device["name"])
self.ui.widgetDevModel.setVisible(False)
self.ui.widgetDevGroup.setVisible(False)
description = ""
self.deviceextendedProperty = {}
if "attr" in device:
try:
attr_json_dict = device["attr"]
if "description" in attr_json_dict:
description = attr_json_dict["description"]
if "extendedProperty" in attr_json_dict:
self.deviceextendedProperty = attr_json_dict["extendedProperty"]
if "image" in attr_json_dict:
self.pixmap = attr_json_dict["image"]
if "interfaceIndex" in attr_json_dict:
self.interfaceIndex = attr_json_dict["interfaceIndex"]
except Exception as e:
print(e)
self.ui.leDevDescription.setText(description)
self.exec()
def loadImage(self):
if self.windowTitle() == "创建设备":
devModel = self.ui.cbDevModel.currentData()
pixmap = QPixmap()
if devModel is not None:
if "attr" in devModel:
attr_json_dict = devModel["attr"]
if "image" in attr_json_dict:
self.pixmap = attr_json_dict["image"]
def handleAccept(self):
if self.windowTitle() == "创建设备":
name = self.ui.leDevName.text()
currentData = self.ui.cbDevModel.currentData()
devModelId = currentData["id"] if currentData else None
attr = {
"image": self.pixmap,
"description": self.ui.leDevDescription.text(),
"extendedProperty": self.deviceextendedProperty,
"interfaceIndex": -1
}
id = deviceManager.create(self.group_id, name, devModelId, attr, self.interfaces)
if id != "":
self.createFinished.emit()
elif self.windowTitle() == "编辑设备":
param = {
"name": self.ui.leDevName.text(),
"attr": {
"image": self.pixmap,
"description": self.ui.leDevDescription.text(),
"extendedProperty": self.deviceextendedProperty,
"interfaceIndex": self.interfaceIndex
}
}
if deviceManager.update(self.deviceId, param):
self.editFinished.emit()
self.accept()