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.

244 lines
7.2 KiB
Python

2 years ago
import peewee
from PyQt5 import QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLabel, QLineEdit, QPushButton, QListView, QGroupBox, QGridLayout, QSplitter, \
QCheckBox, QVBoxLayout, QHBoxLayout, QFrame, QMessageBox
from DcsUi.variablecoercion.model import table_structure, standard_structure, variableGroupModel
from utils import core
from utils.WorkModels import PointModel, PointGroup
from xps.ExploreTable import listViewModel
class configureTable(QWidget):
my_Signal = QtCore.pyqtSignal(str)
def __init__(self, group_name):
super().__init__()
self.setWindowModality(Qt.ApplicationModal)
self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
self.checkBox_list = []
self.header = []
self.resize(800, 800)
self.group_name = group_name
self.deleteRow = None
self.deleteData = None
self.addItem = None
self.addData = None
self._setinit_()
def _setinit_(self):
self.label = QLabel('组:[default]')
self.label1 = QLabel('搜索-8000点名:')
self.label2 = QLabel('组内点:')
self.line = QLineEdit(self)
self.line1 = QFrame(self)
self.line1.setFrameShape(QFrame.HLine)
self.line1.setFrameShadow(QFrame.Sunken)
self.line1.setObjectName("line")
self.btn_search = QPushButton('搜索')
self.btn_search.clicked.connect(self.buttonSearch)
self.btn_addgroup = QPushButton('加入组>>')
self.btn_addgroup.clicked.connect(self.buttonAddGroup)
self.btn_remove = QPushButton('<<移除')
self.btn_remove.clicked.connect(self.buttonRemove)
self.btn_confirm = QPushButton('确认')
self.btn_confirm.clicked.connect(self.buttonConfirm)
self.btn_cancel = QPushButton('取消')
self.btn_cancel.clicked.connect(self.close)
points = PointGroup.get(PointGroup.group_name == self.group_name)
self.listView1 = QListView()
self.listModel = listViewModel(points.points)
self.listView1.setModel(self.listModel)
self.listView1.clicked.connect(self.clicked1)
points = PointModel.all_points()
self.listView2 = QListView()
self.listAllModel = listViewModel(points)
self.listView2.setModel(self.listAllModel)
self.listView2.clicked.connect(self.clicked2)
self.createGridGroupBox()
self.createCheckBox()
layout = QVBoxLayout()
h1 = QHBoxLayout()
h2 = QHBoxLayout()
h3 = QHBoxLayout()
h4 = QHBoxLayout()
smallayout = QVBoxLayout()
h1.addWidget(self.label)
h1.addWidget(self.label1)
h2.addWidget(self.label2)
h2.addWidget(QSplitter())
h2.addWidget(self.line)
h2.addWidget(self.btn_search)
smallayout.addWidget(self.btn_addgroup)
smallayout.addWidget(self.btn_remove)
h3.addWidget(self.listView2)
h3.addLayout(smallayout)
h3.addWidget(self.listView1)
h4.addWidget(QSplitter())
h4.addWidget(self.btn_confirm)
h4.addWidget(self.btn_cancel)
h4.addWidget(QSplitter())
layout.addWidget(self.groupBox)
layout.addLayout(self.layout)
layout.addWidget(self.line1)
layout.addLayout(h1)
layout.addLayout(h2)
layout.addLayout(h3)
layout.addLayout(h4)
self.setLayout(layout)
def createGridGroupBox(self):
self.setWindowTitle('用户组设置')
self.groupBox = QGroupBox(self)
self.groupBox.setTitle('全选设置')
layout = QGridLayout()
self.btn_allUser = QPushButton('全选')
self.btn_unAllUser = QPushButton('全不选')
self.btn_allUser.clicked.connect(self.selectAll)
self.btn_unAllUser.clicked.connect(self.unSelectAll)
layout.addWidget(self.btn_allUser, 1, 0)
layout.addWidget(self.btn_unAllUser, 1, 1)
layout.addWidget(QSplitter(), 2, 2)
self.groupBox.setLayout(layout)
def createCheckBox(self):
self.layout = QGridLayout()
positions = [(i, j) for i in range(len(table_structure) // 4 + 1) for j in range(4)]
for position, name in zip(positions, table_structure):
checkBox = QCheckBox(name[1])
self.checkBox_list.append(checkBox)
checkBox.stateChanged.connect(self.checkDisplay)
self.layout.addWidget(checkBox, *position)
if name in core.MainWindowConfig.header:
checkBox.setChecked(True)
def buttonSearch(self):
pass
def buttonAddGroup(self):
pass
def buttonRemove(self):
pass
def clicked1(self, index):
pass
def clicked2(self, index):
pass
def buttonConfirm(self):
pass
def checkDisplay(self, state):
pass
def selectAll(self):
pass
def unSelectAll(self):
pass
class configure(configureTable):
def __init__(self, group_name):
configureTable.__init__(self, group_name)
def buttonSearch(self):
text = self.line.text()
lis = variableGroupModel.searchEdi(text)
self.listAllModel.updataItem(lis)
def buttonAddGroup(self):
if self.addItem == None:
QMessageBox.information(
self,
"信息提示",
'所要添加行未选中',
QMessageBox.Yes | QMessageBox.No
)
return
try:
self.listModel.addItem(self.addItem)
variableGroupModel.addGroupData(self.group_name, self.addData)
except peewee.IntegrityError as e:
QMessageBox.information(
self,
"信息提示",
'所要添加行已存在',
QMessageBox.Yes | QMessageBox.No
)
self.listModel.deleteItem(-1)
def buttonRemove(self):
if self.deleteRow == None:
QMessageBox.information(
self,
"信息提示",
'所要移除行未选中',
QMessageBox.Yes | QMessageBox.No
)
return
else:
self.listModel.deleteItem(self.deleteRow)
variableGroupModel.deleteGroupData(self.group_name, self.deleteData)
def clicked1(self, index):
self.deleteData = self.listModel.ListItemDate[index.row()]['data']
self.deleteRow = index.row()
def clicked2(self, index):
self.addData = self.listAllModel.ListItemDate[index.row()]['data']
self.addItem = self.listAllModel.ListItemDate[index.row()]
def buttonConfirm(self):
core.MainWindowConfig.header = standard_structure + self.header
self.my_Signal.emit('')
self.close()
def checkDisplay(self, state):
checkBox = self.sender()
if state == Qt.Checked:
for i in table_structure:
if checkBox.text() in i:
self.header.append(i)
else:
for j in self.header:
if checkBox.text() in j:
self.header.remove(j)
def selectAll(self):
for i in self.checkBox_list:
i.setChecked(True)
def unSelectAll(self):
for i in self.checkBox_list:
i.setChecked(False)