|
|
|
@ -9,6 +9,7 @@ from PyQt5 import QtGui,QtCore,QtWidgets
|
|
|
|
|
from PyQt5.QtCore import QAbstractTableModel, QModelIndex, Qt, QVariant, QSize
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget, QMessageBox, QComboBox, QStyleOptionViewItem
|
|
|
|
|
from UI.VarManages.BaseButtonDelegate import BaseButtonDelegate
|
|
|
|
|
from sympy import N
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -204,12 +205,12 @@ class VarTableModel(QAbstractTableModel):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VarButtonDelegate(QItemDelegate):
|
|
|
|
|
class ModbusButtonDelegate(BaseButtonDelegate):
|
|
|
|
|
"""该类用于向单元格中添加按钮 任务表格"""
|
|
|
|
|
trendWidgetDict = {}
|
|
|
|
|
|
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
|
super(VarButtonDelegate, self).__init__(parent)
|
|
|
|
|
super(ModbusButtonDelegate, self).__init__(parent)
|
|
|
|
|
|
|
|
|
|
def trendWidget(self, varName):
|
|
|
|
|
if varName not in self.trendWidgetDict:
|
|
|
|
@ -310,8 +311,16 @@ class VarButtonDelegate(QItemDelegate):
|
|
|
|
|
def start_action(self):
|
|
|
|
|
sender = self.sender()
|
|
|
|
|
model = self.parent().model
|
|
|
|
|
varMes = model.datas[sender.index[0]]
|
|
|
|
|
value, name, des, varType, slaveID, address, min, max, order = str(varMes[1]), str(varMes[3]), str(varMes[4]), str(varMes[5]), str(varMes[6]), str(varMes[7]), str(varMes[8]), str(varMes[9]), str(varMes[10])
|
|
|
|
|
|
|
|
|
|
# 使用基类的验证方法获取行索引
|
|
|
|
|
view_row, source_row = self._validate_button_indices(sender)
|
|
|
|
|
if view_row is None:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
# 获取强制值(从视图)和其他数据(从源模型)
|
|
|
|
|
value = str(self._get_view_data(view_row, 1)) # 强制值列
|
|
|
|
|
varMes = model.datas[source_row]
|
|
|
|
|
name, des, varType, slaveID, address, min, max, order = str(varMes[3]), str(varMes[4]), str(varMes[5]), str(varMes[6]), str(varMes[7]), str(varMes[8]), str(varMes[9]), str(varMes[10])
|
|
|
|
|
pattern = re.compile(r'[^0-9\.-]+')
|
|
|
|
|
if not value or re.findall(pattern, str(value)):
|
|
|
|
|
reply = QMessageBox.question(self.parent(),
|
|
|
|
@ -363,22 +372,27 @@ class VarButtonDelegate(QItemDelegate):
|
|
|
|
|
sender = self.sender()
|
|
|
|
|
model = self.parent().model
|
|
|
|
|
modbusType = self.parent().modbusType
|
|
|
|
|
fucationCbRow = str('cb' + str(sender.index[0]) + str(5))
|
|
|
|
|
fucationIndex = self.parent().model.index(sender.index[0], 5)
|
|
|
|
|
|
|
|
|
|
# 使用基类的验证方法获取行索引
|
|
|
|
|
view_row, source_row = self._validate_button_indices(sender)
|
|
|
|
|
if view_row is None:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
fucationCbRow = str('cb' + str(source_row) + str(5))
|
|
|
|
|
fucationIndex = self.parent().model.index(source_row, 5)
|
|
|
|
|
fucationDelegate = self.parent().itemDelegate(fucationIndex)
|
|
|
|
|
fucationCheckbox = getattr(fucationDelegate, fucationCbRow)
|
|
|
|
|
|
|
|
|
|
if sender.isEdit:
|
|
|
|
|
sender.setIcon(qtawesome.icon('fa.save', color='#1fbb6f'))
|
|
|
|
|
sender.isEdit = False
|
|
|
|
|
sender.oldName = model.datas[sender.index[0]][3]
|
|
|
|
|
model.editableList.append(sender.index[0])
|
|
|
|
|
sender.oldName = model.datas[source_row][3]
|
|
|
|
|
model.editableList.append(source_row)
|
|
|
|
|
fucationCheckbox.setEnabled(True)
|
|
|
|
|
self.parent().viewport().update()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
varMes = model.datas[sender.index[0]]
|
|
|
|
|
varMes = model.datas[source_row]
|
|
|
|
|
name, des, varType, slaveID, address, min, max, varModel, order = str(varMes[3]), str(varMes[4]), str(varMes[5]), str(varMes[6]), str(varMes[7]), str(varMes[8]), str(varMes[9]), str(varMes[-2]), str(varMes[-1])
|
|
|
|
|
if varType == '':
|
|
|
|
|
varType = 0
|
|
|
|
@ -419,36 +433,47 @@ class VarButtonDelegate(QItemDelegate):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sender.setIcon(qtawesome.icon('fa.pencil', color='#4c8cf2'))
|
|
|
|
|
rowIndex = sender.index[0]
|
|
|
|
|
varMes = ModbusVarManage.getByName(name, modbusType)
|
|
|
|
|
varMes.append('本地值')
|
|
|
|
|
varMes.append('int')
|
|
|
|
|
varMes.insert(1, '')
|
|
|
|
|
varMes.insert(2, '')
|
|
|
|
|
model.insert_data(varMes, rowIndex)
|
|
|
|
|
model.remove_row(rowIndex + 1)
|
|
|
|
|
model.insert_data(varMes, source_row)
|
|
|
|
|
model.remove_row(source_row + 1)
|
|
|
|
|
|
|
|
|
|
sender.isEdit = True
|
|
|
|
|
fucationCheckbox.setEnabled(False)
|
|
|
|
|
# varModelCheckbox.setEnabled(False)
|
|
|
|
|
model.editableList.remove(sender.index[0])
|
|
|
|
|
model.editableList.remove(source_row)
|
|
|
|
|
self.parent().viewport().update()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def delete_action(self):
|
|
|
|
|
sender = self.sender()
|
|
|
|
|
model = self.parent().model
|
|
|
|
|
name = str(model.datas[sender.index[0]][3])
|
|
|
|
|
|
|
|
|
|
# 使用基类的验证方法获取行索引
|
|
|
|
|
view_row, source_row = self._validate_button_indices(sender)
|
|
|
|
|
if view_row is None:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
name = str(model.datas[source_row][3])
|
|
|
|
|
modbusType = self.parent().modbusType
|
|
|
|
|
if sender.editButton.isEdit:
|
|
|
|
|
ModbusVarManage.deleteVar(name = name, modbusType = modbusType)
|
|
|
|
|
model.remove_row(sender.index[0])
|
|
|
|
|
model.remove_row(source_row)
|
|
|
|
|
|
|
|
|
|
def trend_action(self):
|
|
|
|
|
model = self.parent().model
|
|
|
|
|
if model.table.parent._isPopenOpen:
|
|
|
|
|
sender = self.sender()
|
|
|
|
|
name = str(model.datas[sender.index[0]][3])
|
|
|
|
|
|
|
|
|
|
# 使用基类的验证方法获取行索引
|
|
|
|
|
view_row, source_row = self._validate_button_indices(sender)
|
|
|
|
|
if view_row is None:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
name = str(model.datas[source_row][3])
|
|
|
|
|
trend = self.trendWidget(varName = name)
|
|
|
|
|
trend.show()
|
|
|
|
|
|
|
|
|
|