hytos / DTI_PID / DTI_PID / ItemDataFormatDialog.py @ 91bd57c8
이력 | 보기 | 이력해설 | 다운로드 (7.23 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 |
|
23 |
self.parent = parent
|
24 |
self.ui = ItemDataFormat_UI.Ui_ItemDataFormatDialog()
|
25 |
self.ui.setupUi(self) |
26 |
|
27 |
self.columnListAll = columnListAll
|
28 |
self.columnOrder = columnOrder
|
29 |
|
30 |
self.delimiter = '!-!' |
31 |
self.selectedCol = None |
32 |
|
33 |
self.listWidgets = []
|
34 |
self.listWidgets.append(self.ui.listWidgetLine) |
35 |
self.listWidgets.append(self.ui.listWidgetEquipment) |
36 |
self.listWidgets.append(self.ui.listWidgetValve) |
37 |
self.listWidgets.append(self.ui.listWidgetInstrument) |
38 |
self.listWidgets.append(self.ui.listWidgetNote) |
39 |
|
40 |
self.tableWidgets = []
|
41 |
self.tableWidgets.append(self.ui.tableWidgetLine) |
42 |
self.tableWidgets.append(self.ui.tableWidgetEquipment) |
43 |
self.tableWidgets.append(self.ui.tableWidgetValve) |
44 |
self.tableWidgets.append(self.ui.tableWidgetInstrument) |
45 |
self.tableWidgets.append(self.ui.tableWidgetNote) |
46 |
|
47 |
self.sections = []
|
48 |
self.sections.append(self.lineSectionClicked) |
49 |
self.sections.append(self.equipmentSectionClicked) |
50 |
self.sections.append(self.valveSectionClicked) |
51 |
self.sections.append(self.instrumentSectionClicked) |
52 |
self.sections.append(self.noteSectionClicked) |
53 |
|
54 |
self.items = []
|
55 |
self.items.append(self.lineItemDoubleCliked) |
56 |
self.items.append(self.equipmentItemDoubleCliked) |
57 |
self.items.append(self.valveItemDoubleCliked) |
58 |
self.items.append(self.instrumentItemDoubleCliked) |
59 |
self.items.append(self.noteItemDoubleCliked) |
60 |
|
61 |
# attribute list setting
|
62 |
for index in range(len(self.listWidgets)): |
63 |
self.listWidgets[index].itemDoubleClicked.connect(self.items[index]) |
64 |
for header in range(1, len(columnListAll[index])): |
65 |
item = QListWidgetItem(columnListAll[index][header], self.listWidgets[index])
|
66 |
self.listWidgets[index].addItem(item)
|
67 |
|
68 |
# tableWidget setting
|
69 |
for index in range(len(self.tableWidgets)): |
70 |
self.tableWidgets[index].horizontalHeader().setSectionsMovable(True) |
71 |
self.tableWidgets[index].setSelectionMode(QAbstractItemView.SingleSelection)
|
72 |
self.tableWidgets[index].setEditTriggers(QAbstractItemView.NoEditTriggers)
|
73 |
self.tableWidgets[index].horizontalHeader().setSectionsClickable(True) |
74 |
self.tableWidgets[index].horizontalHeader().setHighlightSections(True) |
75 |
self.tableWidgets[index].setColumnCount(len(self.columnOrder[index])) |
76 |
self.tableWidgets[index].setHorizontalHeaderLabels(self.columnOrder[index]) |
77 |
self.tableWidgets[index].horizontalHeader().sectionClicked.connect(self.sections[index]) |
78 |
for listIndex in range(len(self.columnOrder[index])): |
79 |
self.tableWidgets[index].horizontalHeaderItem(listIndex).setSizeHint(QSize(25, 25)) |
80 |
self.tableWidgets[index].setColumnWidth(listIndex, len(self.columnOrder[index][listIndex]) * 8 + 10) |
81 |
self.tableWidgets[index].hideColumn(0) |
82 |
|
83 |
self.ui.pushButtonApply.clicked.connect(self.pushButtonApplyClicked) |
84 |
self.ui.pushButtonClose.clicked.connect(self.pushButtonCloseClicked) |
85 |
|
86 |
'''
|
87 |
@brief save and apply all change
|
88 |
@author euisung
|
89 |
@date 2018.10.25
|
90 |
'''
|
91 |
def pushButtonApplyClicked(self): |
92 |
docData = AppDocData.instance() |
93 |
configs = [] |
94 |
for index in range(len(self.tableWidgets)): |
95 |
headerCount = self.tableWidgets[index].columnCount()
|
96 |
currentCol = [] |
97 |
logicalList = [] |
98 |
for logicalCol in range(headerCount): |
99 |
logicalList.append(self.tableWidgets[index].horizontalHeaderItem(logicalCol).text())
|
100 |
for i in range(len(self.columnListAll[index])): |
101 |
currentCol.append(self.tableWidgets[index].horizontalHeader().logicalIndex(i))
|
102 |
|
103 |
value = ''
|
104 |
for header in currentCol: |
105 |
if header is -1: |
106 |
continue
|
107 |
value += logicalList[header] + self.delimiter
|
108 |
value = value[:-len(self.delimiter)] |
109 |
configs.append(Config(dbListOrderName[index], str(index), value))
|
110 |
|
111 |
docData.saveConfigs(configs) |
112 |
|
113 |
'''
|
114 |
@brief attribure list double clicked event, add to table
|
115 |
@author euisung
|
116 |
@date 2018.10.25
|
117 |
'''
|
118 |
def listItemDoubleClicked(self, table, item): |
119 |
print(table.objectName() + ' : ' + item.text())
|
120 |
|
121 |
def lineItemDoubleCliked(self, item): |
122 |
self.listItemDoubleClicked(self.tableWidgets[0], item) |
123 |
|
124 |
def equipmentItemDoubleCliked(self, item): |
125 |
self.listItemDoubleClicked(self.tableWidgets[1], item) |
126 |
|
127 |
def valveItemDoubleCliked(self, item): |
128 |
self.listItemDoubleClicked(self.tableWidgets[2], item) |
129 |
|
130 |
def instrumentItemDoubleCliked(self, item): |
131 |
self.listItemDoubleClicked(self.tableWidgets[3], item) |
132 |
|
133 |
def noteItemDoubleCliked(self, item): |
134 |
self.listItemDoubleClicked(self.tableWidgets[4], item) |
135 |
|
136 |
'''
|
137 |
@brief close without save
|
138 |
@author euisung
|
139 |
@date 2018.10.25
|
140 |
'''
|
141 |
def pushButtonCloseClicked(self): |
142 |
QDialog.reject(self)
|
143 |
|
144 |
'''
|
145 |
@brief key pressed event
|
146 |
@author euisung
|
147 |
@date 2018.10.25
|
148 |
'''
|
149 |
def keyPressEvent(self, event): |
150 |
try:
|
151 |
if event.key() == Qt.Key_Delete and self.selectedCol is not None: |
152 |
self.selectedCol[0].removeColumn(self.selectedCol[1]) |
153 |
self.selectedCol[0].setCurrentCell(0, self.selectedCol[1]) |
154 |
|
155 |
QDialog.keyPressEvent(self, event)
|
156 |
except Exception as ex: |
157 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
158 |
self.addMessage.emit(MessageType.Error, message)
|
159 |
|
160 |
'''
|
161 |
@brief table section clicked event, set selected column
|
162 |
@author euisung
|
163 |
@date 2018.10.25
|
164 |
'''
|
165 |
def sectionClicked(self, table, logicalIndex): |
166 |
table.setCurrentCell(0, logicalIndex)
|
167 |
self.selectedCol = [table, logicalIndex]
|
168 |
|
169 |
def lineSectionClicked(self, logicalIndex): |
170 |
self.sectionClicked(self.tableWidgets[0], logicalIndex) |
171 |
|
172 |
def equipmentSectionClicked(self, logicalIndex): |
173 |
self.sectionClicked(self.tableWidgets[1], logicalIndex) |
174 |
|
175 |
def valveSectionClicked(self, logicalIndex): |
176 |
self.sectionClicked(self.tableWidgets[2], logicalIndex) |
177 |
|
178 |
def instrumentSectionClicked(self, logicalIndex): |
179 |
self.sectionClicked(self.tableWidgets[3], logicalIndex) |
180 |
|
181 |
def noteSectionClicked(self, logicalIndex): |
182 |
self.sectionClicked(self.tableWidgets[4], logicalIndex) |
183 |
|