프로젝트

일반

사용자정보

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

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

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