개정판 bfba2652
dev issue #627: dev line data list form
DTI_PID/DTI_PID/AppDocData.py | ||
---|---|---|
1624 | 1624 |
conn.close() |
1625 | 1625 |
|
1626 | 1626 |
''' |
1627 |
@brief get line documentName list |
|
1628 |
@author kyouho |
|
1629 |
@date 2018.08.13 |
|
1630 |
''' |
|
1631 |
def getLineDocumentNameList(self): |
|
1632 |
result = [] |
|
1633 |
|
|
1634 |
try: |
|
1635 |
# Creates or opens a file called mydb with a SQLite3 DB |
|
1636 |
dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), 'ITI_PID.db') |
|
1637 |
conn = sqlite3.connect(dbPath) |
|
1638 |
# Get a cursor object |
|
1639 |
cursor = conn.cursor() |
|
1640 |
|
|
1641 |
sql = 'select DISTINCT(documentName) from LINE_DATA_LIST' |
|
1642 |
|
|
1643 |
cursor.execute(sql) |
|
1644 |
rows = cursor.fetchall() |
|
1645 |
for row in rows: |
|
1646 |
result.append(row[0]) |
|
1647 |
# Catch the exception |
|
1648 |
except Exception as ex: |
|
1649 |
# Roll back any change if something goes wrong |
|
1650 |
conn.rollback() |
|
1651 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
1652 |
finally: |
|
1653 |
# Close the db connection |
|
1654 |
conn.close() |
|
1655 |
|
|
1656 |
return result |
|
1657 |
|
|
1658 |
|
|
1659 |
''' |
|
1660 |
@brief get line data list |
|
1661 |
@author kyouho |
|
1662 |
@date 2018.08.13 |
|
1663 |
''' |
|
1664 |
def getLineDataList(self, docName = None): |
|
1665 |
result = [] |
|
1666 |
|
|
1667 |
try: |
|
1668 |
# Creates or opens a file called mydb with a SQLite3 DB |
|
1669 |
dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), 'ITI_PID.db') |
|
1670 |
conn = sqlite3.connect(dbPath) |
|
1671 |
# Get a cursor object |
|
1672 |
cursor = conn.cursor() |
|
1673 |
|
|
1674 |
sql = 'select UID, lineNo, nominalDiameter, fluidCode, tagSeqNo, insulationPurpose, streamNo, phase, pressure, temperature, documentName from LINE_DATA_LIST' |
|
1675 |
if docName is not None: |
|
1676 |
sql += " where documentName = '{}'".format(docName) |
|
1677 |
|
|
1678 |
cursor.execute(sql) |
|
1679 |
#columnName = list(map(lambda x: x[0].upper(), cursor.description)) |
|
1680 |
rows = cursor.fetchall() |
|
1681 |
for row in rows: |
|
1682 |
data = [] |
|
1683 |
for index in range(len(cursor.description)): |
|
1684 |
data.append(row[index]) |
|
1685 |
result.append(data) |
|
1686 |
# Catch the exception |
|
1687 |
except Exception as ex: |
|
1688 |
# Roll back any change if something goes wrong |
|
1689 |
conn.rollback() |
|
1690 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
1691 |
finally: |
|
1692 |
# Close the db connection |
|
1693 |
conn.close() |
|
1694 |
|
|
1695 |
return result |
|
1696 |
|
|
1697 |
''' |
|
1698 |
@brief set line data list |
|
1699 |
@author kyouho |
|
1700 |
@date 2018.08.13 |
|
1701 |
''' |
|
1702 |
def setLineDataList(self, dataLists): |
|
1703 |
try: |
|
1704 |
# Creates or opens a file called mydb with a SQLite3 DB |
|
1705 |
dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), 'ITI_PID.db') |
|
1706 |
conn = sqlite3.connect(dbPath) |
|
1707 |
# Get a cursor object |
|
1708 |
cursor = conn.cursor() |
|
1709 |
|
|
1710 |
for data in dataLists: |
|
1711 |
sql = "insert or replace into LINE_DATA_LIST(UID, lineNo, nominalDiameter, fluidCode, tagSeqNo, insulationPurpose, streamNo, phase, pressure, temperature, documentName) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" |
|
1712 |
param = (data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10]) |
|
1713 |
cursor.execute(sql, param) |
|
1714 |
|
|
1715 |
conn.commit() |
|
1716 |
|
|
1717 |
# Catch the exception |
|
1718 |
except Exception as ex: |
|
1719 |
# Roll back any change if something goes wrong |
|
1720 |
conn.rollback() |
|
1721 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
1722 |
finally: |
|
1723 |
# Close the db connection |
|
1724 |
conn.close() |
|
1725 |
|
|
1726 |
''' |
|
1727 |
@brief delete line data list |
|
1728 |
@author kyouho |
|
1729 |
@date 2018.08.13 |
|
1730 |
''' |
|
1731 |
def deleteLineDataList(self, removeUID): |
|
1732 |
try: |
|
1733 |
# Creates or opens a file called mydb with a SQLite3 DB |
|
1734 |
dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), 'ITI_PID.db') |
|
1735 |
conn = sqlite3.connect(dbPath) |
|
1736 |
# Get a cursor object |
|
1737 |
cursor = conn.cursor() |
|
1738 |
|
|
1739 |
for uid in removeUID: |
|
1740 |
sql = "delete from LINE_DATA_LIST where uid = '{}'".format(uid) |
|
1741 |
cursor.execute(sql) |
|
1742 |
|
|
1743 |
conn.commit() |
|
1744 |
|
|
1745 |
# Catch the exception |
|
1746 |
except Exception as ex: |
|
1747 |
# Roll back any change if something goes wrong |
|
1748 |
conn.rollback() |
|
1749 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
1750 |
finally: |
|
1751 |
# Close the db connection |
|
1752 |
conn.close() |
|
1753 |
|
|
1754 |
''' |
|
1627 | 1755 |
@brief get equipment data list |
1628 | 1756 |
@author humkyung |
1629 | 1757 |
@date 2018.05.03 |
DTI_PID/DTI_PID/ItemDataExportDialog.py | ||
---|---|---|
1 |
# coding: utf-8 |
|
2 |
import os |
|
3 |
import sys |
|
4 |
from PyQt5.QtCore import * |
|
5 |
from PyQt5.QtGui import * |
|
6 |
from PyQt5.QtWidgets import * |
|
7 |
import sqlite3 |
|
8 |
from AppDocData import AppDocData |
|
9 |
from AppDocData import Config |
|
10 |
import ItemDataExport_UI |
|
11 |
|
|
12 |
class QItemDataExportDialog(QDialog): |
|
13 |
def __init__(self, parent): |
|
14 |
QDialog.__init__(self, parent) |
|
15 |
|
|
16 |
self.sceneLineData = {} |
|
17 |
self.lineColumnList = [] |
|
18 |
self.equipColumnList = [] |
|
19 |
self.instColumnList = [] |
|
20 |
|
|
21 |
self.removeUID = [[], [], []] |
|
22 |
|
|
23 |
self.parent = parent |
|
24 |
self.ui = ItemDataExport_UI.Ui_ItemDataExportDialog() |
|
25 |
self.ui.setupUi(self) |
|
26 |
|
|
27 |
# save scene data |
|
28 |
self.saveLineDataAtScene() |
|
29 |
# setting combobox |
|
30 |
self.initComboBox() |
|
31 |
# setting table |
|
32 |
self.initTableWidget() |
|
33 |
|
|
34 |
# evnet connect |
|
35 |
self.ui.comboBoxDoc.currentTextChanged.connect(self.docNameChanged) |
|
36 |
|
|
37 |
|
|
38 |
|
|
39 |
''' |
|
40 |
@brief init combobox |
|
41 |
@author kyouho |
|
42 |
@date 2018.08.13 |
|
43 |
''' |
|
44 |
def initComboBox(self): |
|
45 |
self.ui.comboBoxDoc.addItem('ALL') |
|
46 |
self.ui.comboBoxDoc |
|
47 |
docData = AppDocData.instance() |
|
48 |
|
|
49 |
documentNameData = docData.getLineDocumentNameList() |
|
50 |
for name in documentNameData: |
|
51 |
self.ui.comboBoxDoc.addItem(name) |
|
52 |
|
|
53 |
|
|
54 |
if not self.parent.graphicsView.hasImage(): |
|
55 |
return |
|
56 |
result = self.ui.comboBoxDoc.findText(docData.imgName) |
|
57 |
if result == -1: |
|
58 |
self.ui.comboBoxDoc.addItem(docData.imgName) |
|
59 |
|
|
60 |
|
|
61 |
''' |
|
62 |
@brief init table widget |
|
63 |
@author kyouho |
|
64 |
@date 2018.08.13 |
|
65 |
''' |
|
66 |
def initTableWidget(self): |
|
67 |
lineTable = self.ui.tableWidgetLineDataList |
|
68 |
equipTable = self.ui.tableWidgetEquipmentDataList |
|
69 |
instTable = self.ui.tableWidgetInstrumentDataList |
|
70 |
|
|
71 |
# Table Header Label 설정 |
|
72 |
self.lineColumnList = ['UID', 'LINENO', 'NOMINALDIAMETER', 'FLUIDCODE', 'TAGSEQNO', 'INSULATIONPURPOSE', 'STREAMNO', 'PHASE', 'PRESSURE', 'TEMPERATURE', 'DOCUMENTNAME'] |
|
73 |
self.equipColumnList = ['UID', 'NAME', 'PRESSURE', 'TEMPERATURE', 'DOCUMENTNAME'] |
|
74 |
self.instColumnList = ['UID', 'NAME', 'VARIABLECODE', 'TYPEMODIFIER', 'TAGSEQNO', 'TAGSUFFIX', 'DOCUMENTNAME'] |
|
75 |
|
|
76 |
lineTable.setHorizontalHeaderLabels(['UID', 'Line No', 'Nominal\r\nDiameter', 'Fluid Code', 'Tag Seq No', 'Insulation\r\nPurpose', 'Stream No', 'Phase', 'Pressure', 'Temperature', 'Document Name']) |
|
77 |
equipTable.setHorizontalHeaderLabels(['UID', 'Name', 'Pressure', 'Temperature', 'Document Name']) |
|
78 |
instTable.setHorizontalHeaderLabels(['UID', 'Name', 'Variable Code', 'Type Modifier', 'Tag Seq No', 'Tag Suffix', 'Document Name']) |
|
79 |
# Table Header 크기 설정 |
|
80 |
lineTable.horizontalHeaderItem(1).setSizeHint(QSize(40, 40)) |
|
81 |
equipTable.horizontalHeaderItem(1).setSizeHint(QSize(40, 40)) |
|
82 |
instTable.horizontalHeaderItem(1).setSizeHint(QSize(40, 40)) |
|
83 |
|
|
84 |
# linedata 설정 |
|
85 |
self.settingLineData() |
|
86 |
|
|
87 |
|
|
88 |
''' |
|
89 |
@brief setting line data |
|
90 |
@author kyouho |
|
91 |
@date 2018.08.13 |
|
92 |
''' |
|
93 |
def settingLineData(self): |
|
94 |
lineTable = self.ui.tableWidgetLineDataList |
|
95 |
docData = AppDocData.instance() |
|
96 |
# 기존 저장된 데이터 불러옴 |
|
97 |
index = self.ui.comboBoxDoc.currentIndex() |
|
98 |
text = self.ui.comboBoxDoc.itemText(index) |
|
99 |
if self.ui.comboBoxDoc.currentIndex() == 0: |
|
100 |
text = None |
|
101 |
dataList = docData.getLineDataList(text) |
|
102 |
lineTable.setRowCount(len(dataList)) |
|
103 |
row = 0 |
|
104 |
for data in dataList: |
|
105 |
for dataIndex in range(len(data)): |
|
106 |
lineTable.setItem(row, dataIndex, QTableWidgetItem(data[dataIndex] if data[dataIndex] is not None else '')) |
|
107 |
row += 1 |
|
108 |
|
|
109 |
# 현재 문서명이 같으면 중복 체크 |
|
110 |
if docData.imgName is not None and (docData.imgName == text or self.ui.comboBoxDoc.currentIndex() == 0): |
|
111 |
lineTable = self.ui.tableWidgetLineDataList |
|
112 |
rowCount = lineTable.rowCount() |
|
113 |
lineNo = [] |
|
114 |
for row in range(rowCount): |
|
115 |
lineNo.append(lineTable.item(row, 1).text()) |
|
116 |
|
|
117 |
for line in self.sceneLineData.keys(): |
|
118 |
# 중복 (어떻게 할지) |
|
119 |
if lineNo.count(line) >= 1: |
|
120 |
continue |
|
121 |
# 신규 |
|
122 |
else: |
|
123 |
rowCount += 1 |
|
124 |
lineTable.setRowCount(rowCount) |
|
125 |
lineData = self.sceneLineData[line] |
|
126 |
|
|
127 |
index = self.lineColumnList.index('DOCUMENTNAME') |
|
128 |
widgetItem = QTableWidgetItem(docData.imgName) |
|
129 |
widgetItem.setBackground(QColor(int(134), int(229), int(127))) |
|
130 |
lineTable.setItem(rowCount - 1, index, widgetItem) |
|
131 |
|
|
132 |
for data in lineData: |
|
133 |
columnName = data[0].upper().replace(' ', '') |
|
134 |
if self.lineColumnList.count(columnName): |
|
135 |
index = self.lineColumnList.index(columnName) |
|
136 |
widgetItem = QTableWidgetItem(data[1] if data[1] is not None else '') |
|
137 |
if widgetItem.text() != '': |
|
138 |
widgetItem.setBackground(QColor(int(134), int(229), int(127))) |
|
139 |
lineTable.setItem(rowCount - 1, index, widgetItem) |
|
140 |
|
|
141 |
|
|
142 |
''' |
|
143 |
@brief doc name change event |
|
144 |
@author kyouho |
|
145 |
@date 2018.08.13 |
|
146 |
''' |
|
147 |
def docNameChanged(self, text): |
|
148 |
self.settingLineData() |
|
149 |
|
|
150 |
''' |
|
151 |
@brief save Line Data at scene |
|
152 |
@author kyouho |
|
153 |
@date 2018.08.13 |
|
154 |
''' |
|
155 |
def saveLineDataAtScene(self): |
|
156 |
if not self.parent.graphicsView.hasImage(): |
|
157 |
return |
|
158 |
|
|
159 |
from QEngineeringLineNoTextItem import QEngineeringLineNoTextItem |
|
160 |
items = [item for item in self.parent.graphicsView.scene.items() if type(item) is QEngineeringLineNoTextItem] |
|
161 |
for item in items: |
|
162 |
text = item.text() |
|
163 |
attrs = item.getLineNoAttributes(True) |
|
164 |
|
|
165 |
self.sceneLineData[text] = attrs |
|
166 |
|
|
167 |
''' |
|
168 |
@brief save Datas |
|
169 |
@author kyouho |
|
170 |
@date 2018.08.13 |
|
171 |
''' |
|
172 |
def accept(self): |
|
173 |
docData = AppDocData.instance() |
|
174 |
self.saveLineDataList() |
|
175 |
docData.deleteLineDataList(self.removeUID[0]) |
|
176 |
|
|
177 |
QDialog.accept(self) |
|
178 |
|
|
179 |
|
|
180 |
''' |
|
181 |
@brief save Line Data |
|
182 |
@author kyouho |
|
183 |
@date 2018.08.13 |
|
184 |
''' |
|
185 |
def saveLineDataList(self): |
|
186 |
import uuid |
|
187 |
|
|
188 |
lineTable = self.ui.tableWidgetLineDataList |
|
189 |
docData = AppDocData.instance() |
|
190 |
|
|
191 |
dataLists = [] |
|
192 |
for rowIndex in range(lineTable.rowCount()): |
|
193 |
dataList = [] |
|
194 |
for columnIndex in range(lineTable.columnCount()): |
|
195 |
widgetItem = lineTable.item(rowIndex, columnIndex) |
|
196 |
|
|
197 |
if widgetItem is not None: |
|
198 |
dataList.append(widgetItem.text()) |
|
199 |
else: |
|
200 |
if columnIndex == 0: |
|
201 |
dataList.append(str(uuid.uuid4())) |
|
202 |
else: |
|
203 |
dataList.append('') |
|
204 |
|
|
205 |
dataLists.append(dataList) |
|
206 |
|
|
207 |
docData.setLineDataList(dataLists) |
|
208 |
|
|
209 |
''' |
|
210 |
@brief key press event |
|
211 |
@author kyouho |
|
212 |
@date 2018.08.13 |
|
213 |
''' |
|
214 |
def keyPressEvent(self, e): |
|
215 |
if e.key() == Qt.Key_Delete: |
|
216 |
_tabWidget = self.ui.tabWidget |
|
217 |
currentTabIndex = _tabWidget.currentIndex() |
|
218 |
tableName = '' |
|
219 |
if currentTabIndex == 0: |
|
220 |
tableName = 'tableWidgetLineDataList' |
|
221 |
elif currentTabIndex == 1: |
|
222 |
tableName = 'tableWidgetEquipmentDataList' |
|
223 |
else: |
|
224 |
tableName = 'tableWidgetInstrumentDataList' |
|
225 |
table = self.findChild(QTableWidget, tableName) |
|
226 |
|
|
227 |
if table: |
|
228 |
|
|
229 |
selectedIndexes = table.selectedIndexes() |
|
230 |
selectedRows = [item.row() for item in selectedIndexes] |
|
231 |
model = table.model() |
|
232 |
|
|
233 |
rowsIndex = [] |
|
234 |
for row in selectedRows: |
|
235 |
rowsIndex.append(row) |
|
236 |
|
|
237 |
#중복 제거 |
|
238 |
rowsIndex = list(set(rowsIndex)) |
|
239 |
rowsIndex.reverse() |
|
240 |
|
|
241 |
for row in rowsIndex: |
|
242 |
uidCell = table.item(row, 0) |
|
243 |
if uidCell is not None: |
|
244 |
uid = table.item(row, 0).text() |
|
245 |
self.removeUID[currentTabIndex].append(uid) |
|
246 |
model.removeRow(row) |
DTI_PID/DTI_PID/ItemDataExport_UI.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
|
|
3 |
# Form implementation generated from reading ui file './UI/ItemDataExport.ui' |
|
4 |
# |
|
5 |
# Created by: PyQt5 UI code generator 5.9.2 |
|
6 |
# |
|
7 |
# WARNING! All changes made in this file will be lost! |
|
8 |
|
|
9 |
from PyQt5 import QtCore, QtGui, QtWidgets |
|
10 |
|
|
11 |
class Ui_ItemDataExportDialog(object): |
|
12 |
def setupUi(self, ItemDataExportDialog): |
|
13 |
ItemDataExportDialog.setObjectName("ItemDataExportDialog") |
|
14 |
ItemDataExportDialog.resize(1142, 709) |
|
15 |
font = QtGui.QFont() |
|
16 |
font.setFamily("맑은 고딕") |
|
17 |
ItemDataExportDialog.setFont(font) |
|
18 |
self.gridLayout = QtWidgets.QGridLayout(ItemDataExportDialog) |
|
19 |
self.gridLayout.setObjectName("gridLayout") |
|
20 |
self.tabWidget = QtWidgets.QTabWidget(ItemDataExportDialog) |
|
21 |
self.tabWidget.setObjectName("tabWidget") |
|
22 |
self.tabLineList = QtWidgets.QWidget() |
|
23 |
self.tabLineList.setObjectName("tabLineList") |
|
24 |
self.gridLayout_3 = QtWidgets.QGridLayout(self.tabLineList) |
|
25 |
self.gridLayout_3.setObjectName("gridLayout_3") |
|
26 |
self.tableWidgetLineDataList = QtWidgets.QTableWidget(self.tabLineList) |
|
27 |
self.tableWidgetLineDataList.setColumnCount(11) |
|
28 |
self.tableWidgetLineDataList.setObjectName("tableWidgetLineDataList") |
|
29 |
self.tableWidgetLineDataList.setRowCount(0) |
|
30 |
self.tableWidgetLineDataList.verticalHeader().setVisible(False) |
|
31 |
self.gridLayout_3.addWidget(self.tableWidgetLineDataList, 0, 0, 1, 1) |
|
32 |
self.tabWidget.addTab(self.tabLineList, "") |
|
33 |
self.tabEquipmentList = QtWidgets.QWidget() |
|
34 |
self.tabEquipmentList.setObjectName("tabEquipmentList") |
|
35 |
self.gridLayout_5 = QtWidgets.QGridLayout(self.tabEquipmentList) |
|
36 |
self.gridLayout_5.setObjectName("gridLayout_5") |
|
37 |
self.tableWidgetEquipmentDataList = QtWidgets.QTableWidget(self.tabEquipmentList) |
|
38 |
self.tableWidgetEquipmentDataList.setColumnCount(5) |
|
39 |
self.tableWidgetEquipmentDataList.setObjectName("tableWidgetEquipmentDataList") |
|
40 |
self.tableWidgetEquipmentDataList.setRowCount(0) |
|
41 |
self.tableWidgetEquipmentDataList.verticalHeader().setVisible(False) |
|
42 |
self.gridLayout_5.addWidget(self.tableWidgetEquipmentDataList, 0, 0, 1, 1) |
|
43 |
self.tabWidget.addTab(self.tabEquipmentList, "") |
|
44 |
self.tabInstrumentList = QtWidgets.QWidget() |
|
45 |
self.tabInstrumentList.setObjectName("tabInstrumentList") |
|
46 |
self.gridLayout_7 = QtWidgets.QGridLayout(self.tabInstrumentList) |
|
47 |
self.gridLayout_7.setObjectName("gridLayout_7") |
|
48 |
self.tableWidgetInstrumentDataList = QtWidgets.QTableWidget(self.tabInstrumentList) |
|
49 |
self.tableWidgetInstrumentDataList.setColumnCount(7) |
|
50 |
self.tableWidgetInstrumentDataList.setObjectName("tableWidgetInstrumentDataList") |
|
51 |
self.tableWidgetInstrumentDataList.setRowCount(0) |
|
52 |
self.tableWidgetInstrumentDataList.verticalHeader().setVisible(False) |
|
53 |
self.gridLayout_7.addWidget(self.tableWidgetInstrumentDataList, 0, 0, 1, 1) |
|
54 |
self.tabWidget.addTab(self.tabInstrumentList, "") |
|
55 |
self.gridLayout.addWidget(self.tabWidget, 0, 1, 1, 1) |
|
56 |
self.horizontalLayout = QtWidgets.QHBoxLayout() |
|
57 |
self.horizontalLayout.setObjectName("horizontalLayout") |
|
58 |
self.comboBoxDoc = QtWidgets.QComboBox(ItemDataExportDialog) |
|
59 |
self.comboBoxDoc.setObjectName("comboBoxDoc") |
|
60 |
self.horizontalLayout.addWidget(self.comboBoxDoc) |
|
61 |
self.pushButtonExport = QtWidgets.QPushButton(ItemDataExportDialog) |
|
62 |
self.pushButtonExport.setMaximumSize(QtCore.QSize(64, 24)) |
|
63 |
self.pushButtonExport.setObjectName("pushButtonExport") |
|
64 |
self.horizontalLayout.addWidget(self.pushButtonExport) |
|
65 |
self.buttonBox = QtWidgets.QDialogButtonBox(ItemDataExportDialog) |
|
66 |
self.buttonBox.setOrientation(QtCore.Qt.Horizontal) |
|
67 |
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) |
|
68 |
self.buttonBox.setObjectName("buttonBox") |
|
69 |
self.horizontalLayout.addWidget(self.buttonBox) |
|
70 |
self.gridLayout.addLayout(self.horizontalLayout, 1, 1, 1, 1) |
|
71 |
|
|
72 |
self.retranslateUi(ItemDataExportDialog) |
|
73 |
self.tabWidget.setCurrentIndex(0) |
|
74 |
self.buttonBox.accepted.connect(ItemDataExportDialog.accept) |
|
75 |
self.buttonBox.rejected.connect(ItemDataExportDialog.reject) |
|
76 |
QtCore.QMetaObject.connectSlotsByName(ItemDataExportDialog) |
|
77 |
|
|
78 |
def retranslateUi(self, ItemDataExportDialog): |
|
79 |
_translate = QtCore.QCoreApplication.translate |
|
80 |
ItemDataExportDialog.setWindowTitle(_translate("ItemDataExportDialog", "리스트 출력")) |
|
81 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabLineList), _translate("ItemDataExportDialog", "라인 리스트")) |
|
82 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabEquipmentList), _translate("ItemDataExportDialog", "장치 리스트")) |
|
83 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabInstrumentList), _translate("ItemDataExportDialog", "계장 리스트")) |
|
84 |
self.pushButtonExport.setText(_translate("ItemDataExportDialog", "Export")) |
|
85 |
|
|
86 |
|
|
87 |
if __name__ == "__main__": |
|
88 |
import sys |
|
89 |
app = QtWidgets.QApplication(sys.argv) |
|
90 |
ItemDataExportDialog = QtWidgets.QDialog() |
|
91 |
ui = Ui_ItemDataExportDialog() |
|
92 |
ui.setupUi(ItemDataExportDialog) |
|
93 |
ItemDataExportDialog.show() |
|
94 |
sys.exit(app.exec_()) |
|
95 |
|
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
500 | 500 |
@date 2018.05.03 |
501 | 501 |
''' |
502 | 502 |
def showLineDataList(self): |
503 |
from QLineDataListDialog import QLineDataListDialog
|
|
503 |
from ItemDataExportDialog import QItemDataExportDialog
|
|
504 | 504 |
|
505 |
self.dlgLineDataList = QLineDataListDialog(self)
|
|
505 |
self.dlgLineDataList = QItemDataExportDialog(self)
|
|
506 | 506 |
self.dlgLineDataList.exec_() |
507 | 507 |
|
508 | 508 |
''' |
DTI_PID/DTI_PID/Scripts/LINE_DATA_LIST.sql | ||
---|---|---|
1 |
CREATE TABLE IF NOT EXISTS LINE_DATA_LIST ( |
|
2 |
UID TEXT, |
|
3 |
lineNo TEXT, |
|
4 |
nominalDiameter TEXT, |
|
5 |
fluidCode TEXT, |
|
6 |
tagSeqNo TEXT, |
|
7 |
insulationPurpose TEXT, |
|
8 |
streamNo TEXT, |
|
9 |
phase TEXT, |
|
10 |
pressure TEXT, |
|
11 |
temperature TEXT, |
|
12 |
documentName TEXT, |
|
13 |
CONSTRAINT LINE_DATA_LIST_PK PRIMARY KEY (UID) |
|
14 |
); |
|
15 |
CREATE UNIQUE INDEX IF NOT EXISTS LINE_DATA_LIST_TAG_NO_IDX ON LINE_DATA_LIST (UID); |
DTI_PID/DTI_PID/Shapes/QEngineeringLineNoTextItem.py | ||
---|---|---|
86 | 86 |
@history humkyung 2018.05.09 evaluate string for Tag Seq No |
87 | 87 |
kyouho 2018.07.06 add using TextItemFactory.isLineNo method |
88 | 88 |
''' |
89 |
def getLineNoAttributes(self): |
|
89 |
def getLineNoAttributes(self, getLineNo = False):
|
|
90 | 90 |
res = [] |
91 | 91 |
|
92 | 92 |
try: |
... | ... | |
118 | 118 |
res.append((configs[i], result[i])) |
119 | 119 |
|
120 | 120 |
res.extend(self._attrs) |
121 |
if getLineNo: |
|
122 |
res.append(('Line No', self.uid)) |
|
121 | 123 |
except Exception as ex: |
122 | 124 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
123 | 125 |
|
DTI_PID/DTI_PID/UI/ItemDataExport.ui | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<ui version="4.0"> |
|
3 |
<class>ItemDataExportDialog</class> |
|
4 |
<widget class="QDialog" name="ItemDataExportDialog"> |
|
5 |
<property name="geometry"> |
|
6 |
<rect> |
|
7 |
<x>0</x> |
|
8 |
<y>0</y> |
|
9 |
<width>1142</width> |
|
10 |
<height>709</height> |
|
11 |
</rect> |
|
12 |
</property> |
|
13 |
<property name="font"> |
|
14 |
<font> |
|
15 |
<family>맑은 고딕</family> |
|
16 |
</font> |
|
17 |
</property> |
|
18 |
<property name="windowTitle"> |
|
19 |
<string>리스트 출력</string> |
|
20 |
</property> |
|
21 |
<layout class="QGridLayout" name="gridLayout"> |
|
22 |
<item row="0" column="1"> |
|
23 |
<widget class="QTabWidget" name="tabWidget"> |
|
24 |
<property name="currentIndex"> |
|
25 |
<number>0</number> |
|
26 |
</property> |
|
27 |
<widget class="QWidget" name="tabLineList"> |
|
28 |
<attribute name="title"> |
|
29 |
<string>라인 리스트</string> |
|
30 |
</attribute> |
|
31 |
<layout class="QGridLayout" name="gridLayout_3"> |
|
32 |
<item row="0" column="0"> |
|
33 |
<widget class="QTableWidget" name="tableWidgetLineDataList"> |
|
34 |
<property name="columnCount"> |
|
35 |
<number>11</number> |
|
36 |
</property> |
|
37 |
<attribute name="verticalHeaderVisible"> |
|
38 |
<bool>false</bool> |
|
39 |
</attribute> |
|
40 |
<column/> |
|
41 |
<column/> |
|
42 |
<column/> |
|
43 |
<column/> |
|
44 |
<column/> |
|
45 |
<column/> |
|
46 |
<column/> |
|
47 |
<column/> |
|
48 |
<column/> |
|
49 |
<column/> |
|
50 |
<column/> |
|
51 |
</widget> |
|
52 |
</item> |
|
53 |
</layout> |
|
54 |
</widget> |
|
55 |
<widget class="QWidget" name="tabEquipmentList"> |
|
56 |
<attribute name="title"> |
|
57 |
<string>장치 리스트</string> |
|
58 |
</attribute> |
|
59 |
<layout class="QGridLayout" name="gridLayout_5"> |
|
60 |
<item row="0" column="0"> |
|
61 |
<widget class="QTableWidget" name="tableWidgetEquipmentDataList"> |
|
62 |
<property name="columnCount"> |
|
63 |
<number>5</number> |
|
64 |
</property> |
|
65 |
<attribute name="verticalHeaderVisible"> |
|
66 |
<bool>false</bool> |
|
67 |
</attribute> |
|
68 |
<column/> |
|
69 |
<column/> |
|
70 |
<column/> |
|
71 |
<column/> |
|
72 |
<column/> |
|
73 |
</widget> |
|
74 |
</item> |
|
75 |
</layout> |
|
76 |
</widget> |
|
77 |
<widget class="QWidget" name="tabInstrumentList"> |
|
78 |
<attribute name="title"> |
|
79 |
<string>계장 리스트</string> |
|
80 |
</attribute> |
|
81 |
<layout class="QGridLayout" name="gridLayout_7"> |
|
82 |
<item row="0" column="0"> |
|
83 |
<widget class="QTableWidget" name="tableWidgetInstrumentDataList"> |
|
84 |
<property name="columnCount"> |
|
85 |
<number>7</number> |
|
86 |
</property> |
|
87 |
<attribute name="verticalHeaderVisible"> |
|
88 |
<bool>false</bool> |
|
89 |
</attribute> |
|
90 |
<column/> |
|
91 |
<column/> |
|
92 |
<column/> |
|
93 |
<column/> |
|
94 |
<column/> |
|
95 |
<column/> |
|
96 |
<column/> |
|
97 |
</widget> |
|
98 |
</item> |
|
99 |
</layout> |
|
100 |
</widget> |
|
101 |
</widget> |
|
102 |
</item> |
|
103 |
<item row="1" column="1"> |
|
104 |
<layout class="QHBoxLayout" name="horizontalLayout"> |
|
105 |
<item> |
|
106 |
<widget class="QComboBox" name="comboBoxDoc"/> |
|
107 |
</item> |
|
108 |
<item> |
|
109 |
<widget class="QPushButton" name="pushButtonExport"> |
|
110 |
<property name="maximumSize"> |
|
111 |
<size> |
|
112 |
<width>64</width> |
|
113 |
<height>24</height> |
|
114 |
</size> |
|
115 |
</property> |
|
116 |
<property name="text"> |
|
117 |
<string>Export</string> |
|
118 |
</property> |
|
119 |
</widget> |
|
120 |
</item> |
|
121 |
<item> |
|
122 |
<widget class="QDialogButtonBox" name="buttonBox"> |
|
123 |
<property name="orientation"> |
|
124 |
<enum>Qt::Horizontal</enum> |
|
125 |
</property> |
|
126 |
<property name="standardButtons"> |
|
127 |
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
|
128 |
</property> |
|
129 |
</widget> |
|
130 |
</item> |
|
131 |
</layout> |
|
132 |
</item> |
|
133 |
</layout> |
|
134 |
</widget> |
|
135 |
<resources/> |
|
136 |
<connections> |
|
137 |
<connection> |
|
138 |
<sender>buttonBox</sender> |
|
139 |
<signal>accepted()</signal> |
|
140 |
<receiver>ItemDataExportDialog</receiver> |
|
141 |
<slot>accept()</slot> |
|
142 |
<hints> |
|
143 |
<hint type="sourcelabel"> |
|
144 |
<x>248</x> |
|
145 |
<y>254</y> |
|
146 |
</hint> |
|
147 |
<hint type="destinationlabel"> |
|
148 |
<x>157</x> |
|
149 |
<y>274</y> |
|
150 |
</hint> |
|
151 |
</hints> |
|
152 |
</connection> |
|
153 |
<connection> |
|
154 |
<sender>buttonBox</sender> |
|
155 |
<signal>rejected()</signal> |
|
156 |
<receiver>ItemDataExportDialog</receiver> |
|
157 |
<slot>reject()</slot> |
|
158 |
<hints> |
|
159 |
<hint type="sourcelabel"> |
|
160 |
<x>316</x> |
|
161 |
<y>260</y> |
|
162 |
</hint> |
|
163 |
<hint type="destinationlabel"> |
|
164 |
<x>286</x> |
|
165 |
<y>274</y> |
|
166 |
</hint> |
|
167 |
</hints> |
|
168 |
</connection> |
|
169 |
</connections> |
|
170 |
</ui> |
내보내기 Unified diff