프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

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

    
클립보드 이미지 추가 (최대 크기: 500 MB)