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.

160 lines
5.3 KiB
Python

2 years ago
import re
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox
from DcsUi.Config.configure import textEnvironment, networkConfiguration, environmentChecking, timeInterval
from DcsUi.Config.getData import getListData
from DcsUi.Config.importThread import myQThreading
from DcsUi.userManagement.AccountManagement import AccountManagement
from utils import core
from utils.WorkModels import *
class textEnviron(textEnvironment):
def __init__(self):
textEnvironment.__init__(self)
def leadingIn(self):
dirPath = QtWidgets.QFileDialog.getOpenFileName(self,
"选取文件",
"./"
)[0]
if dirPath != '':
self.threading = myQThreading(path=dirPath)
self.threading.sinOut.connect(self.textset)
self.threading.start()
def getdicdata(self):
lis = []
dev_list = NetworkConfig.filter(NetworkConfig.protocol == 'TCP/IP')
var_list = PointModel.filter(PointModel.slot.in_([x.slot for x in dev_list])).order_by(PointModel.id)
for i in var_list:
self.list_name.append(i)
lis.append([i.id, i.sig_name, i.sig_type, i.slot, i.channel])
return lis
def textset(self, text):
if text == '导入Excel完成\n':
self.queryModel.datas = self.getdicdata()
self.queryModel.layoutChanged.emit()
def search(self):
lis = []
text = self.line.text()
for i in self.list_name:
if text in i.sig_name:
lis.append([i.id, i.sig_name, i.sig_type, i.slot, i.channel])
self.queryModel.datas = lis
self.queryModel.layoutChanged.emit()
class networkConfig(networkConfiguration):
def __init__(self):
networkConfiguration.__init__(self)
def getdicdata(self):
lis = []
datas = NetworkConfig.select()
for x in datas:
lis.append([x.id, x.slot, x.description, x.uri])
return lis
def search(self):
text = self.line.text()
datas = getListData.search_NetworkConfig(text)
self.queryModel.datas = datas
self.queryModel.layoutChanged.emit()
class environmentCheck(environmentChecking):
def __init__(self):
environmentChecking.__init__(self)
def startSelfscan(self):
if self.threading.isRunning():
QMessageBox.information(
self,
"信息提示",
"正在自检请勿点击",
QMessageBox.Yes | QMessageBox.No
)
return
else:
self.queryModel.datas = []
self.queryModel.layoutChanged.emit()
self.threading.start()
def slotAdd(self, lis):
self.queryModel.append_data(lis)
class timeInter(timeInterval):
def __init__(self):
timeInterval.__init__(self)
def confirm(self):
fieldData = {}
qletext = self.qle.text()
boxtext = self.box.currentText()
fieldData['time'] = qletext or str((core.MainWindowConfig.RunInterval or 0.5) * 1000)
fieldData['ensure'] = boxtext or core.MainWindowConfig.ContinueRunFalse
continue_run_false = True if fieldData['ensure'] == u'' else False
if re.match(r'^[0-9]+\.[0-9]+$', fieldData['time']):
if int(float(fieldData['time'])) > 3000 or int(float(fieldData['time'])) < 300:
QMessageBox.information(
self,
"信息提示",
"请输入300-3000之间的整数",
QMessageBox.Yes | QMessageBox.No
)
else:
set_time = float(fieldData['time'])
core.MainWindowConfig.ContinueRunFalse = continue_run_false
core.MainWindowConfig.RunInterval = set_time
QMessageBox.information(
self,
"信息提示",
"设置成功,请关闭窗口!",
QMessageBox.Yes | QMessageBox.No
)
else:
QMessageBox.information(
self,
"信息提示",
"输入有误,请重新输入!",
QMessageBox.Yes | QMessageBox.No
)
class configureWindow(AccountManagement):
def __init__(self):
super().__init__()
self.setObjectName('配置')
self.setWindowTitle('配置')
def _setdata_(self):
win1 = textEnviron()
win2 = networkConfig()
win3 = environmentCheck()
# win4 = timeInter()
self.lis_name = ['测试环境', '网络配置', '环境自检']
self.lis_win = [win1, win2, win3]
self.lis_img = [
':/static/environment_settings_icon0.png',
':/static/NetworkSettings.png',
':/static/VariableSettings.png',
# ':/static/time_interval.png'
]
def changeData(self):
win = self.right_widget.currentWidget()
if hasattr(win, 'getdicdata'):
win.queryModel.datas = win.getdicdata()
win.queryModel.layoutChanged.emit()
def closeEvent(self, event):
win = self.right_widget.widget(2)
win.threading.interrupt.emit('')
self.close()