hytos / DTI_PID / DTI_PID / ItemDataFormatDialog.py @ 16ddb6fb
이력 | 보기 | 이력해설 | 다운로드 (10.6 KB)
1 |
# coding: utf-8
|
---|---|
2 |
"""
|
3 |
This is ItemDataFormatDialog module
|
4 |
"""
|
5 |
|
6 |
import os |
7 |
import sys |
8 |
from PyQt5.QtCore import * |
9 |
from PyQt5.QtGui import * |
10 |
from PyQt5.QtWidgets import * |
11 |
from AppDocData import AppDocData, Config |
12 |
import ItemDataFormat_UI |
13 |
|
14 |
dbListOrderName = ['LINE_DATA_LIST_EXPORT_ORDER', 'EQUIPMENT_DATA_LIST_EXPORT_ORDER', 'VALVE_DATA_LIST_EXPORT_ORDER', 'INSTRUMENT_DATA_LIST_EXPORT_ORDER', 'NOTE_DATA_LIST_EXPORT_ORDER'] |
15 |
|
16 |
class QItemDataFormatDialog(QDialog): |
17 |
"""
|
18 |
This is QItemDataFormatDialog class
|
19 |
"""
|
20 |
def __init__(self, parent, columnListAll, columnOrder): |
21 |
QDialog.__init__(self, parent)
|
22 |
self.setWindowFlag(Qt.WindowMinMaxButtonsHint)
|
23 |
|
24 |
self.parent = parent
|
25 |
self.ui = ItemDataFormat_UI.Ui_ItemDataFormatDialog()
|
26 |
self.ui.setupUi(self) |
27 |
|
28 |
self.columnListAll = columnListAll
|
29 |
self.columnOrder = columnOrder
|
30 |
|
31 |
self.delimiter = '!-!' |
32 |
self.selectedCol = None |
33 |
|
34 |
self.listWidgets = []
|
35 |
self.listWidgets.append(self.ui.listWidgetLine) |
36 |
self.listWidgets.append(self.ui.listWidgetEquipment) |
37 |
self.listWidgets.append(self.ui.listWidgetValve) |
38 |
self.listWidgets.append(self.ui.listWidgetInstrument) |
39 |
self.listWidgets.append(self.ui.listWidgetNote) |
40 |
|
41 |
self.tableWidgets = []
|
42 |
self.tableWidgets.append(self.ui.tableWidgetLine) |
43 |
self.tableWidgets.append(self.ui.tableWidgetEquipment) |
44 |
self.tableWidgets.append(self.ui.tableWidgetValve) |
45 |
self.tableWidgets.append(self.ui.tableWidgetInstrument) |
46 |
self.tableWidgets.append(self.ui.tableWidgetNote) |
47 |
|
48 |
self.sections = []
|
49 |
self.sections.append(self.lineSectionClicked) |
50 |
self.sections.append(self.equipmentSectionClicked) |
51 |
self.sections.append(self.valveSectionClicked) |
52 |
self.sections.append(self.instrumentSectionClicked) |
53 |
self.sections.append(self.noteSectionClicked) |
54 |
|
55 |
self.items = []
|
56 |
self.items.append(self.lineItemDoubleCliked) |
57 |
self.items.append(self.equipmentItemDoubleCliked) |
58 |
self.items.append(self.valveItemDoubleCliked) |
59 |
self.items.append(self.instrumentItemDoubleCliked) |
60 |
self.items.append(self.noteItemDoubleCliked) |
61 |
|
62 |
self.deleteButtons = []
|
63 |
self.deleteButtons.append(self.ui.pushButtonLineDelete) |
64 |
self.deleteButtons.append(self.ui.pushButtonEquipmentDelete) |
65 |
self.deleteButtons.append(self.ui.pushButtonValveDelete) |
66 |
self.deleteButtons.append(self.ui.pushButtonInstrumentDelete) |
67 |
self.deleteButtons.append(self.ui.pushButtonNoteDelete) |
68 |
|
69 |
self.deletes = []
|
70 |
self.deletes.append(self.lineDeleteClicked) |
71 |
self.deletes.append(self.equipmentDeleteClicked) |
72 |
self.deletes.append(self.valveDeleteClicked) |
73 |
self.deletes.append(self.instrumentDeleteClicked) |
74 |
self.deletes.append(self.noteDeleteClicked) |
75 |
|
76 |
self.addButtons = []
|
77 |
self.addButtons.append(self.ui.pushButtonLineAdd) |
78 |
self.addButtons.append(self.ui.pushButtonEquipmentAdd) |
79 |
self.addButtons.append(self.ui.pushButtonValveAdd) |
80 |
self.addButtons.append(self.ui.pushButtonInstrumentAdd) |
81 |
self.addButtons.append(self.ui.pushButtonNoteAdd) |
82 |
|
83 |
self.adds = []
|
84 |
self.adds.append(self.lineAddClicked) |
85 |
self.adds.append(self.equipmentAddClicked) |
86 |
self.adds.append(self.valveAddClicked) |
87 |
self.adds.append(self.instrumentAddClicked) |
88 |
self.adds.append(self.noteAddClicked) |
89 |
|
90 |
# attribute list setting
|
91 |
for index in range(len(self.listWidgets)): |
92 |
self.listWidgets[index].itemDoubleClicked.connect(self.items[index]) |
93 |
for header in range(1, len(columnListAll[index])): |
94 |
item = QListWidgetItem(columnListAll[index][header], self.listWidgets[index])
|
95 |
self.listWidgets[index].addItem(item)
|
96 |
|
97 |
# tableWidget setting
|
98 |
for index in range(len(self.tableWidgets)): |
99 |
self.tableWidgets[index].horizontalHeader().setSectionsMovable(True) |
100 |
self.tableWidgets[index].setSelectionMode(QAbstractItemView.SingleSelection)
|
101 |
self.tableWidgets[index].setEditTriggers(QAbstractItemView.NoEditTriggers)
|
102 |
self.tableWidgets[index].horizontalHeader().setSectionsClickable(True) |
103 |
self.tableWidgets[index].horizontalHeader().setHighlightSections(True) |
104 |
self.tableWidgets[index].setColumnCount(len(self.columnOrder[index])) |
105 |
self.tableWidgets[index].setHorizontalHeaderLabels(self.columnOrder[index]) |
106 |
self.tableWidgets[index].horizontalHeader().sectionClicked.connect(self.sections[index]) |
107 |
self.deleteButtons[index].clicked.connect(self.deletes[index]) |
108 |
self.addButtons[index].clikced.connet(self.adds[index]) |
109 |
for listIndex in range(len(self.columnOrder[index])): |
110 |
self.tableWidgets[index].horizontalHeaderItem(listIndex).setSizeHint(QSize(25, 25)) |
111 |
self.tableWidgets[index].setColumnWidth(listIndex, len(self.columnOrder[index][listIndex]) * 8 + 10) |
112 |
self.tableWidgets[index].hideColumn(0) |
113 |
|
114 |
self.ui.pushButtonApply.clicked.connect(self.pushButtonApplyClicked) |
115 |
self.ui.pushButtonClose.clicked.connect(self.pushButtonCloseClicked) |
116 |
|
117 |
'''
|
118 |
@brief save and apply all change
|
119 |
@author euisung
|
120 |
@date 2018.10.25
|
121 |
'''
|
122 |
def pushButtonApplyClicked(self): |
123 |
docData = AppDocData.instance() |
124 |
configs = [] |
125 |
for index in range(len(self.tableWidgets)): |
126 |
headerCount = self.tableWidgets[index].columnCount()
|
127 |
currentCol = [] |
128 |
logicalList = [] |
129 |
for logicalCol in range(headerCount): |
130 |
logicalList.append(self.tableWidgets[index].horizontalHeaderItem(logicalCol).text())
|
131 |
for i in range(len(self.columnListAll[index])): |
132 |
currentCol.append(self.tableWidgets[index].horizontalHeader().logicalIndex(i))
|
133 |
|
134 |
value = ''
|
135 |
for header in currentCol: |
136 |
if header is -1: |
137 |
continue
|
138 |
value += logicalList[header] + self.delimiter
|
139 |
value = value[:-len(self.delimiter)] |
140 |
configs.append(Config(dbListOrderName[index], str(index), value))
|
141 |
|
142 |
docData.saveConfigs(configs) |
143 |
|
144 |
'''
|
145 |
@brief attribure list double clicked event, add to table
|
146 |
@author euisung
|
147 |
@date 2018.10.25
|
148 |
'''
|
149 |
def listItemDoubleClicked(self, table, item): |
150 |
for index in range(table.columnCount()): |
151 |
if item.text() == table.horizontalHeaderItem(index).text():
|
152 |
return
|
153 |
table.setColumnCount(table.columnCount() + 1)
|
154 |
table.setHorizontalHeaderItem(table.columnCount() - 1, QTableWidgetItem(item.text()))
|
155 |
table.horizontalHeader().moveSection(table.columnCount() - 1, 1) |
156 |
|
157 |
def lineItemDoubleCliked(self, item): |
158 |
self.listItemDoubleClicked(self.tableWidgets[0], item) |
159 |
|
160 |
def equipmentItemDoubleCliked(self, item): |
161 |
self.listItemDoubleClicked(self.tableWidgets[1], item) |
162 |
|
163 |
def valveItemDoubleCliked(self, item): |
164 |
self.listItemDoubleClicked(self.tableWidgets[2], item) |
165 |
|
166 |
def instrumentItemDoubleCliked(self, item): |
167 |
self.listItemDoubleClicked(self.tableWidgets[3], item) |
168 |
|
169 |
def noteItemDoubleCliked(self, item): |
170 |
self.listItemDoubleClicked(self.tableWidgets[4], item) |
171 |
|
172 |
'''
|
173 |
@brief close without save
|
174 |
@author euisung
|
175 |
@date 2018.10.25
|
176 |
'''
|
177 |
def pushButtonCloseClicked(self): |
178 |
QDialog.reject(self)
|
179 |
|
180 |
'''
|
181 |
@brief key pressed event
|
182 |
@author euisung
|
183 |
@date 2018.10.25
|
184 |
'''
|
185 |
def keyPressEvent(self, event): |
186 |
try:
|
187 |
if event.key() == Qt.Key_Delete and self.selectedCol is not None: |
188 |
self.selectedCol[0].removeColumn(self.selectedCol[1]) |
189 |
self.selectedCol[0].setCurrentCell(0, self.selectedCol[1]) |
190 |
|
191 |
QDialog.keyPressEvent(self, event)
|
192 |
except Exception as ex: |
193 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
194 |
self.addMessage.emit(MessageType.Error, message)
|
195 |
|
196 |
'''
|
197 |
@brief add column by button clicked
|
198 |
@author euisung
|
199 |
@date 2018.10.25
|
200 |
'''
|
201 |
def addClicked(self, table, attList): |
202 |
for index in range(table.columnCount()): |
203 |
if item.text() == table.horizontalHeaderItem(index).text():
|
204 |
return
|
205 |
table.setColumnCount(table.columnCount() + 1)
|
206 |
table.setHorizontalHeaderItem(table.columnCount() - 1, QTableWidgetItem(item.text()))
|
207 |
table.horizontalHeader().moveSection(table.columnCount() - 1, 1) |
208 |
|
209 |
|
210 |
table.removeColumn(table.currentColumn()) |
211 |
self.selectedCol = []
|
212 |
|
213 |
def lineAddClicked(self): |
214 |
self.addClicked(self.tableWidgets[0], self.listWidgets[0]) |
215 |
|
216 |
def equipmentAddClicked(self): |
217 |
self.addClicked(self.tableWidgets[1]) |
218 |
|
219 |
def valveAddClicked(self): |
220 |
self.addClicked(self.tableWidgets[2]) |
221 |
|
222 |
def instrumentAddClicked(self): |
223 |
self.addClicked(self.tableWidgets[3]) |
224 |
|
225 |
def noteAddClicked(self): |
226 |
self.addClicked(self.tableWidgets[4]) |
227 |
|
228 |
'''
|
229 |
@brief delete column by button clicked
|
230 |
@author euisung
|
231 |
@date 2018.10.25
|
232 |
'''
|
233 |
def deleteClicked(self, table): |
234 |
table.removeColumn(table.currentColumn()) |
235 |
self.selectedCol = []
|
236 |
|
237 |
def lineDeleteClicked(self): |
238 |
self.deleteClicked(self.tableWidgets[0]) |
239 |
|
240 |
def equipmentDeleteClicked(self): |
241 |
self.deleteClicked(self.tableWidgets[1]) |
242 |
|
243 |
def valveDeleteClicked(self): |
244 |
self.deleteClicked(self.tableWidgets[2]) |
245 |
|
246 |
def instrumentDeleteClicked(self): |
247 |
self.deleteClicked(self.tableWidgets[3]) |
248 |
|
249 |
def noteDeleteClicked(self): |
250 |
self.deleteClicked(self.tableWidgets[4]) |
251 |
|
252 |
'''
|
253 |
@brief table section clicked event, set selected column
|
254 |
@author euisung
|
255 |
@date 2018.10.25
|
256 |
'''
|
257 |
def sectionClicked(self, table, logicalIndex): |
258 |
table.setCurrentCell(0, logicalIndex)
|
259 |
self.selectedCol = [table, logicalIndex]
|
260 |
|
261 |
def lineSectionClicked(self, logicalIndex): |
262 |
self.sectionClicked(self.tableWidgets[0], logicalIndex) |
263 |
|
264 |
def equipmentSectionClicked(self, logicalIndex): |
265 |
self.sectionClicked(self.tableWidgets[1], logicalIndex) |
266 |
|
267 |
def valveSectionClicked(self, logicalIndex): |
268 |
self.sectionClicked(self.tableWidgets[2], logicalIndex) |
269 |
|
270 |
def instrumentSectionClicked(self, logicalIndex): |
271 |
self.sectionClicked(self.tableWidgets[3], logicalIndex) |
272 |
|
273 |
def noteSectionClicked(self, logicalIndex): |
274 |
self.sectionClicked(self.tableWidgets[4], logicalIndex) |
275 |
|