You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PROFIBUS/UI/DeviceWidget.py

135 lines
5.1 KiB
Python

2 years ago
import json
from PyQt5.QtWidgets import QMainWindow, QDialog, QTabWidget, QPushButton, QSpacerItem, QSizePolicy,QMessageBox, QHBoxLayout, QWidget
from PyQt5.QtGui import QIcon
2 years ago
from PyQt5.QtCore import QSize
2 years ago
2 years ago
from UI.DeviceDialogWidget import DeviceDialog
from model.ProjectModel.DeviceManage import DevicesManange
from utils.DBModels.BaseModel import *
from UI.AreaTabWidget import AreaTabWidget
from utils.DBModels.DeviceModels import DeviceDB
from model.ProjectModel.DeviceManage import DevicesManange
from UI.DeviceDialogWidget import DeviceDialog
2 years ago
2 years ago
class DeviceWidget(QMainWindow):
2 years ago
def __init__(self, dockWidget, devicesManange):
2 years ago
super().__init__()
self.dockWidget = dockWidget
self.forceValues = []
2 years ago
self.devicesManange = devicesManange
2 years ago
self.initUI()
2 years ago
def initUI(self):
2 years ago
#获取DP、PA协议和主从模式
self.proType = self.dockWidget.windowTitle()[0:2]
self.masterSlaveModel = self.dockWidget.windowTitle()[2:4]
2 years ago
2 years ago
self.deviceTabWidget = QTabWidget(self)
self.deviceTabWidget.setObjectName('deviceTabWidget')
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.addDeviceButton = QPushButton('添加设备 ')
self.addDeviceButton.setObjectName('deviceAddButton')
self.addDeviceButton.setIcon(QIcon('Static/add.png'))
self.addDeviceButton.setFlat(True)
self.addDeviceButton.clicked.connect(self.addDeviceWidget)
self.deviceTabWidget.setCornerWidget(self.addDeviceButton)
self.deviceTabWidget.setTabsClosable(True)
self.deviceTabWidget.tabCloseRequested.connect(self.closeTab)
2 years ago
self.initWidget(True)
2 years ago
# 设置主窗口的中心部分为 QTabWidget
self.setCentralWidget(self.deviceTabWidget)
def closeTab(self, index):
reply = QMessageBox.question(self, 'Confirmation', '确定删掉此设备吗?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
if index != -1:
self.deviceTabWidget.removeTab(index)
2 years ago
self.devicesManange.delDevice(deviceName = self.deviceName)
2 years ago
DeviceDB.deleteDevice(deviceName = self.deviceName)
else:
return
if self.deviceTabWidget.count() == 0:
2 years ago
self.initWidget(True)
2 years ago
def addDeviceWidget(self,init = False,deviceName = None):
if deviceName is None:
dialog = DeviceDialog()
if dialog.exec_() == QDialog.Accepted:
self.titleName = dialog.getParameters()
self.deviceName = self.titleName + self.dockWidget.windowTitle()
DeviceDB().addDevice(deviceName = self.deviceName, proType = self.proType , masterSlaveModel = self.masterSlaveModel)
areaTabWidget = AreaTabWidget(self)
if init:
self.deviceTabWidget.removeTab(0)
tabIndex = self.deviceTabWidget.count()
self.deviceTabWidget.tabBar().setHidden(False)
self.deviceTabWidget.addTab(areaTabWidget,str(self.titleName))
self.deviceTabWidget.setCurrentIndex(tabIndex)
2 years ago
self.devicesManange.addDevice(proType=self.proType, masterSlaveModel = self.masterSlaveModel, deviceName = self.deviceName)
2 years ago
else:
return
else:
2 years ago
2 years ago
self.deviceName = deviceName
self.titleName = self.deviceName[:-4]
areaTabWidget = AreaTabWidget(self)
self.deviceTabWidget.tabBar().setHidden(False)
2 years ago
self.deviceTabWidget.addTab(areaTabWidget,str(self.titleName))
2 years ago
2 years ago
def initWidget(self,state):
2 years ago
alldevices = DevicesManange.getAllDevice()
titleName = self.dockWidget.windowTitle()
if alldevices:
for devices in alldevices:
deviceName = devices[0]
2 years ago
2 years ago
if titleName in deviceName:
2 years ago
self.devicesManange.addDevice(proType = devices[1], masterSlaveModel = devices[2], deviceName = devices[0])
2 years ago
self.addDeviceWidget(deviceName=deviceName)
2 years ago
2 years ago
state = False
if state:
widget = QWidget()
layout = QHBoxLayout()
addButton = QPushButton('添加设备')
2 years ago
addButton.setObjectName('initAddDeviceButton')
icon = QIcon('Static/add.png')
iconSize = QSize(50,50)
addButton.setIcon(icon)
addButton.setIconSize(iconSize)
2 years ago
addButton.clicked.connect(lambda: self.addDeviceWidget(True))
layout.addItem(self.horizontalSpacer)
layout.addWidget(addButton)
layout.addItem(self.horizontalSpacer)
widget.setLayout(layout)
self.deviceTabWidget.addTab(widget,'')
self.deviceTabWidget.tabBar().setHidden(True)
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago