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