|
|
|
import json
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QMainWindow, QDialog, QTabWidget, QPushButton, QSpacerItem, QSizePolicy,QMessageBox, QHBoxLayout, QWidget
|
|
|
|
from PyQt5.QtGui import QIcon
|
|
|
|
from PyQt5.QtCore import QSize
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
class DeviceWidget(QMainWindow):
|
|
|
|
def __init__(self, dockWidget, devicesManange):
|
|
|
|
super().__init__()
|
|
|
|
self.dockWidget = dockWidget
|
|
|
|
self.forceValues = []
|
|
|
|
self.devicesManange = devicesManange
|
|
|
|
self.initUI()
|
|
|
|
|
|
|
|
|
|
|
|
def initUI(self):
|
|
|
|
#获取DP、PA协议和主从模式
|
|
|
|
|
|
|
|
self.proType = self.dockWidget.windowTitle()[0:2]
|
|
|
|
self.masterSlaveModel = self.dockWidget.windowTitle()[2:4]
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
self.initWidget(True)
|
|
|
|
|
|
|
|
# 设置主窗口的中心部分为 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)
|
|
|
|
self.devicesManange.delDevice(deviceName = self.deviceName)
|
|
|
|
DeviceDB.deleteDevice(deviceName = self.deviceName)
|
|
|
|
else:
|
|
|
|
return
|
|
|
|
if self.deviceTabWidget.count() == 0:
|
|
|
|
self.initWidget(True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
self.devicesManange.addDevice(proType=self.proType, masterSlaveModel = self.masterSlaveModel, deviceName = self.deviceName)
|
|
|
|
else:
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
|
|
|
|
self.deviceName = deviceName
|
|
|
|
self.titleName = self.deviceName[:-4]
|
|
|
|
areaTabWidget = AreaTabWidget(self)
|
|
|
|
self.deviceTabWidget.tabBar().setHidden(False)
|
|
|
|
self.deviceTabWidget.addTab(areaTabWidget,str(self.titleName))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def initWidget(self,state):
|
|
|
|
alldevices = DevicesManange.getAllDevice()
|
|
|
|
titleName = self.dockWidget.windowTitle()
|
|
|
|
if alldevices:
|
|
|
|
for devices in alldevices:
|
|
|
|
deviceName = devices[0]
|
|
|
|
|
|
|
|
if titleName in deviceName:
|
|
|
|
self.devicesManange.addDevice(proType = devices[1], masterSlaveModel = devices[2], deviceName = devices[0])
|
|
|
|
self.addDeviceWidget(deviceName=deviceName)
|
|
|
|
|
|
|
|
state = False
|
|
|
|
if state:
|
|
|
|
widget = QWidget()
|
|
|
|
layout = QHBoxLayout()
|
|
|
|
addButton = QPushButton('添加设备')
|
|
|
|
addButton.setObjectName('initAddDeviceButton')
|
|
|
|
icon = QIcon('Static/add.png')
|
|
|
|
iconSize = QSize(50,50)
|
|
|
|
addButton.setIcon(icon)
|
|
|
|
addButton.setIconSize(iconSize)
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|