프로젝트

일반

사용자정보

개정판 d60b3b6e

IDd60b3b6e5c19fd5d4f5ecd3f8fdcf10e1c12b7ba
상위 6d6ad72f
하위 8204d343, 6d46bd8c

humkyung 이(가) 6년 이상 전에 추가함

- Change file name from QPropertyTableWidget to PropertyTableWidget
- Change file name from QResultPropertyTableWidget to ResultPropertyTableWidget

차이점 보기:

DTI_PID/DTI_PID/DTI_PID.pyproj
72 72
    <Compile Include="QInstrumentDataListDialog.py" />
73 73
    <Compile Include="QLineDataListDialog.py" />
74 74
    <Compile Include="QOcrResultDialog.py" />
75
    <Compile Include="QPropertyTableWidget.py" />
75
    <Compile Include="PropertyTableWidget.py" />
76 76
    <Compile Include="QRecognitionDialog.py" />
77
    <Compile Include="QResultPropertyTableWidget.py" />
77
    <Compile Include="ResultPropertyTableWidget.py" />
78 78
    <Compile Include="QResultTreeWidget.py" />
79 79
    <Compile Include="QSymbolDisplayDialog.py" />
80 80
    <Compile Include="QSymbolEditorDialog.py" />
DTI_PID/DTI_PID/MainWindow.py
34 34
from QEngineeringSizeTextItem import QEngineeringSizeTextItem
35 35
from QEngineeringUnknownItem import QEngineeringUnknownItem
36 36
from AppDocData import AppDocData
37
import QDirTreeWidget, QPropertyTableWidget
37
import QDirTreeWidget, PropertyTableWidget
38 38
import QSymbolEditorDialog
39 39
import QResultTreeWidget
40
import QResultPropertyTableWidget
40
import ResultPropertyTableWidget
41 41
from TextItemFactory import TextItemFactory
42 42

  
43 43
class MainWindow(QMainWindow, DTI_PID_UI.Ui_MainWindow, SingletonInstane):
......
83 83
        self.symbolTabVerticalLayout.addWidget(self.dirTreeWidget)
84 84

  
85 85
        # Add Custom Property TableWidget
86
        self.propertyTableWidget = QPropertyTableWidget.QPropertyTableWidget()
86
        self.propertyTableWidget = PropertyTableWidget.QPropertyTableWidget()
87 87
        self.symbolTabVerticalLayout.addWidget(self.propertyTableWidget)
88 88
        self.dirTreeWidget.singleClicked.connect(self.propertyTableWidget.getClickedSymbol)
89 89
        # add splitter widget
......
99 99
        self.symbolExplorerVerticalLayout.addWidget(self.resultTreeWidget)
100 100

  
101 101
        # Add Empty Widget
102
        self.resultPropertyTableWidget = QResultPropertyTableWidget.QResultPropertyTableWidget()
102
        self.resultPropertyTableWidget = ResultPropertyTableWidget.QResultPropertyTableWidget()
103 103
        self.symbolExplorerVerticalLayout.addWidget(self.resultPropertyTableWidget)
104 104
        self.resultTreeWidget.singleClicked.connect(self.resultPropertyTableWidget.onSymbolClicked)
105 105
        self.resultTreeWidget.noteNoSingleClicked.connect(self.resultPropertyTableWidget.onNoteClicked)
......
646 646
                    item = QGraphicsBoundingBoxItem(pt[0], pt[1], size[0], size[1])
647 647
                    item.isSymbol = True
648 648
                    item.angle = angle
649
                    item.setPen(QPen(Qt.red, 20, Qt.SolidLine))
649
                    item.setPen(QPen(Qt.red, 10, Qt.SolidLine))
650 650
                    self.graphicsView.scene.addItem(item)
651 651
            # up to here
652 652
        except Exception as ex:
......
816 816
                    item = QGraphicsBoundingBoxItem(pt[0], pt[1], size[0], size[1])
817 817
                    item.isSymbol = True
818 818
                    item.angle = angle
819
                    item.setPen(QPen(Qt.red, 20, Qt.SolidLine))
819
                    item.setPen(QPen(Qt.red, 10, Qt.SolidLine))
820 820
                    self.graphicsView.scene.addItem(item)
821 821

  
822 822
            docData = AppDocData.instance()
......
938 938
        @history    2018.06.18  Jeongwoo    Set Z-index
939 939
    '''
940 940
    def addLineItemToScene(self, lineItem):
941
        '''
941 942
        lineRect = lineItem.boundingRectOnScene()
942 943
        items = self.graphicsView.scene.items(lineRect)
943 944
        if items is not None:
......
947 948
                    if item.startPoint() == lineItem.startPoint() and item.endPoint() == lineItem.endPoint(): # Equal
948 949
                        item.deleteLineItemFromScene()
949 950
        lineItem.setZValue(10)
951
        '''
950 952
        lineItem.addLineItemToScene(self.graphicsView.scene)
951 953

  
952 954
    '''
DTI_PID/DTI_PID/PropertyTableWidget.py
1
try:
2
    from PyQt5.QtCore import *
3
    from PyQt5.QtGui import *
4
    from PyQt5.QtWidgets import *
5
except ImportError:
6
    try:
7
        from PyQt4.QtCore import *
8
        from PyQt4.QtGui import *
9
    except ImportError:
10
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
11
from AppDocData import AppDocData
12
import os
13
import SymbolBase
14
import symbol
15

  
16
class QPropertyTableWidget(QTableWidget):
17
    def __init__(self):
18
        QTableWidget.__init__(self)
19
        self.project = AppDocData.instance().getCurrentProject()
20
        self.initPropertyTableWidget()
21
        self.symData = None
22

  
23
    '''
24
        @auther     Yecheol
25
        @date       2018-07-04
26
        @history    Add Instrument Label YN Column
27
                    humkyung 2018.07.08 show column header
28
    '''
29

  
30
    def initPropertyTableWidget(self):
31
        self.setColumnCount(2)
32
        self.setHorizontalHeaderLabels(['Name', 'Value'])
33
        self.horizontalHeaderItem(0).setSizeHint(QSize(30, 30))
34
        self.setRowCount(12)
35
        self.verticalHeader().hide()
36
        self.horizontalHeader().setStretchLastSection(True)
37
        self.initTitleCell()
38

  
39
        ### Rotation Count SpinBox Init
40
        rotationCountSpinBox = QSpinBox()
41
        rotationCountSpinBox.setRange(0, 3)
42
        rotationCountSpinBox.setSingleStep(1)
43
        rotationCountSpinBox.setValue(0)
44
        rotationCountSpinBox.setEnabled(False)
45
        self.setCellWidget(3, 1, rotationCountSpinBox)
46

  
47
        ### IsContainChild CheckBox Init
48
        isContainChildCheckBox = QCheckBox()
49
        isContainChildCheckBox.setEnabled(False)
50
        self.setCellWidget(4, 1, isContainChildCheckBox)
51

  
52
        ### Symbol Type ComboBox Init
53
        symbolTypeComboBox = QComboBox()
54
        for name in AppDocData.instance().getSymbolTypeComboBoxItems():
55
            symbolTypeComboBox.addItem(name)
56
        symbolTypeComboBox.setEnabled(False)
57
        self.setCellWidget(5, 1, symbolTypeComboBox)
58

  
59
        ### Base Symbol ComboBox Init
60
        baseSymbolComboBox = QComboBox()
61
        for name in AppDocData.instance().getBaseSymbolComboBoxItems():
62
            baseSymbolComboBox.addItem(name)
63
        baseSymbolComboBox.setEnabled(False)
64
        self.setCellWidget(6, 1, baseSymbolComboBox)
65

  
66
        ### IsExceptDetect CheckBox Init
67
        isExceptDetectCheckBox = QCheckBox()
68
        isExceptDetectCheckBox.setEnabled(False)
69
        self.setCellWidget(10, 1, isExceptDetectCheckBox)
70

  
71
        ### hasInstrumentLabel CheckBox Init
72
        hasInstrumentLabelCheckBox = QCheckBox()
73
        hasInstrumentLabelCheckBox.setEnabled(False)
74
        self.setCellWidget(11, 1, hasInstrumentLabelCheckBox)
75

  
76
    '''
77
        @brief  Init contents and background color in Title cell
78
    '''
79
    def initTitleCell(self):
80
        #self.setItem(0, 0, QTableWidgetItem("심볼ID"))
81
        #self.setItem(0, 0, QTableWidgetItem("심볼명"))
82
        #self.setItem(1, 0, QTableWidgetItem("임계값(%)"))
83
        #self.setItem(2, 0, QTableWidgetItem("최소 특징점 수"))
84
        #self.setItem(3, 0, QTableWidgetItem("검출 시 심볼 회전 수"))
85
        #self.setItem(4, 0, QTableWidgetItem("자식 심볼 포함 여부"))
86
        #self.setItem(5, 0, QTableWidgetItem("심볼 타입"))
87
        #self.setItem(6, 0, QTableWidgetItem("기초 심볼"))
88
        #self.setItem(7, 0, QTableWidgetItem("부가 심볼"))
89
        #self.setItem(8, 0, QTableWidgetItem("Original Point"))
90
        #self.setItem(9, 0, QTableWidgetItem("Connection Point"))
91
        #self.setItem(10, 0, QTableWidgetItem("검출 시 미포함 여부"))
92
        #self.setItem(11, 0, QTableWidgetItem("Instrument Label 여부"))
93

  
94
        item1 = QTableWidgetItem("심볼명")
95
        item1.setFlags(Qt.ItemIsEnabled)
96
        self.setItem(0, 0, item1)
97

  
98
        item2 = QTableWidgetItem("임계값(%)")
99
        item2.setFlags(Qt.ItemIsEnabled)
100
        self.setItem(1, 0, item2)
101

  
102
        item3 = QTableWidgetItem("최소 특징점 수")
103
        item3.setFlags(Qt.ItemIsEnabled)
104
        self.setItem(2, 0, item3)
105

  
106
        item4 = QTableWidgetItem("검출 시 심볼 회전 수")
107
        item4.setFlags(Qt.ItemIsEnabled)
108
        self.setItem(3, 0, item4)
109

  
110
        item5 = QTableWidgetItem("자식 심볼 포함 여부")
111
        item5.setFlags(Qt.ItemIsEnabled)
112
        self.setItem(4, 0, item5)
113

  
114
        item6 = QTableWidgetItem("심볼 타입")
115
        item6.setFlags(Qt.ItemIsEnabled)
116
        self.setItem(5, 0, item6)
117

  
118
        item7 = QTableWidgetItem("기초 심볼")
119
        item7.setFlags(Qt.ItemIsEnabled)
120
        self.setItem(6, 0, item7)
121

  
122
        item8 = QTableWidgetItem("부가 심볼")
123
        item8.setFlags(Qt.ItemIsEnabled)
124
        self.setItem(7, 0, item8)
125

  
126
        item9 = QTableWidgetItem("Original Point")
127
        item9.setFlags(Qt.ItemIsEnabled)
128
        self.setItem(8, 0, item9)
129

  
130
        item10 = QTableWidgetItem("Connection Point")
131
        item10.setFlags(Qt.ItemIsEnabled)
132
        self.setItem(9, 0, item10)
133

  
134
        item11 = QTableWidgetItem("검출 시 미포함 여부")
135
        item11.setFlags(Qt.ItemIsEnabled)
136
        self.setItem(10, 0, item11)
137

  
138
        item12 = QTableWidgetItem("Ins't 라벨 포함 여부")
139
        item12.setFlags(Qt.ItemIsEnabled)
140
        self.setItem(11, 0, item12)
141

  
142
        for index in range(self.rowCount()):
143
            self.item(index, 0).setBackground(QColor(220, 220, 220))
144

  
145
    def makeConnection(self, dirTreeWidget):
146
        dirTreeWidget.singleClicked.connect(self.getClickedSymbol)
147

  
148
    '''
149
        @history    18.04.24    Jeongwoo    If symbol.getId == -1: symData = None
150
    '''
151
    @pyqtSlot(SymbolBase.SymbolBase)
152
    def getClickedSymbol(self, symbol):
153
        if self.symData != symbol:
154
            self.symData = symbol #if symbol.getId() != -1 else None
155
            self.symbolChanged()
156

  
157
    '''
158
        @brief      Set symbol data on TableWidget
159
                    TableWidgetItem handles only string value
160
        @history    18.04.24    Jeongwoo    Add 14th row(isExceptDetect CheckBox)
161
    '''
162
    def symbolChanged(self):
163
        if self.symData.baseSymbol is not None:
164
            #self.setItem(0, 1, QTableWidgetItem(str(self.symData.getId())))
165
            #self.setItem(0, 1, QTableWidgetItem(self.symData.getName()))
166
            #self.setItem(1, 1, QTableWidgetItem(str(int(self.symData.getThreshold() * 100))))
167
            #self.setItem(2, 1, QTableWidgetItem(str(self.symData.getMinMatchCount())))
168

  
169
            Symboldata = QTableWidgetItem(self.symData.getName())
170
            Symboldata.setFlags(Qt.ItemIsEnabled)
171
            self.setItem(0, 1, Symboldata)
172

  
173
            SymbolThreshold = QTableWidgetItem(self.symData.getThreshold() *100)
174
            SymbolThreshold.setFlags(Qt.ItemIsEnabled)
175
            self.setItem(1, 1, SymbolThreshold)
176

  
177
            SymbolMinMatchCount = QTableWidgetItem(self.symData.getMinMatchCount())
178
            SymbolMinMatchCount.setFlags(Qt.ItemIsEnabled)
179
            self.setItem(2, 1, SymbolMinMatchCount)
180

  
181
            rotationCountSpinBox = self.cellWidget(3, 1)
182
            rotationCountSpinBox.setValue(self.symData.getRotationCount())
183

  
184
            isContainChildCheckBox = self.cellWidget(4, 1)
185
            isContainChildCheckBox.setChecked(True if self.symData.getIsContainChild() == 1 else False)
186

  
187
            symbolTypeComboBox = self.cellWidget(5, 1)
188
            symbolTypeComboBox.setCurrentIndex(symbolTypeComboBox.findText(self.symData.getType())) ##### USED FIND TEXT
189
            
190
            baseSymbolComboBox = self.cellWidget(6, 1)
191
            baseSymbolComboBox.clear()
192
            for name in AppDocData.instance().getBaseSymbolComboBoxItems(self.symData.getType()):
193
                baseSymbolComboBox.addItem(name)
194
            baseSymbolComboBox.setCurrentIndex(baseSymbolComboBox.findText(self.symData.getBaseSymbol())) ##### USED FIND TEXT
195

  
196
            additionalSymbolItem = QTableWidgetItem(self.symData.getAdditionalSymbol())
197
            additionalSymbolItem.setFlags(Qt.ItemIsEnabled)
198
            self.setItem(7, 1, additionalSymbolItem)
199

  
200
            originalPointItem = QTableWidgetItem(self.symData.getOriginalPoint())
201
            originalPointItem.setFlags(Qt.ItemIsEnabled)
202
            self.setItem(8, 1, originalPointItem)
203

  
204
            connectionPointItem = QTableWidgetItem(self.symData.getConnectionPoint())
205
            connectionPointItem.setFlags(Qt.ItemIsEnabled)
206
            self.setItem(9, 1, connectionPointItem)
207
            
208
            isExceptDetectCheckBox = self.cellWidget(10, 1)
209
            isExceptDetectCheckBox.setChecked(True if self.symData.getIsExceptDetect() == 1 else False)
210

  
211
            hasInstrumentLabelCheckBox = self.cellWidget(11, 1)
212
            hasInstrumentLabelCheckBox.setChecked(True if self.symData.getHasInstrumentLabel() == 1 else False)
213

  
214
        else:
215
            #self.setItem(0,     1,   QTableWidgetItem(""))
216
            #self.setItem(0,     1,   QTableWidgetItem(""))
217
            #self.setItem(1,     1,   QTableWidgetItem(""))
218
            #self.setItem(2,     1,   QTableWidgetItem(""))
219

  
220
            item1 = QTableWidgetItem("")
221
            item1.setFlags(Qt.ItemIsEnabled)
222
            self.setItem(0, 1, item1)
223

  
224
            item2 = QTableWidgetItem("")
225
            item2.setFlags(Qt.ItemIsEnabled)
226
            self.setItem(1, 1, item2)
227

  
228
            item3 = QTableWidgetItem("")
229
            item3.setFlags(Qt.ItemIsEnabled)
230
            self.setItem(2, 1, item3)
231

  
232

  
233
            rotationCountSpinBox = self.cellWidget(3, 1)
234
            rotationCountSpinBox.setValue(0)
235

  
236
            isContainChildCheckBox = self.cellWidget(4, 1)
237
            isContainChildCheckBox.setChecked(False)
238

  
239
            symbolTypeComboBox = self.cellWidget(5, 1)
240
            symbolTypeComboBox.setCurrentIndex(0)
241

  
242
            baseSymbolComboBox = self.cellWidget(6, 1)
243
            baseSymbolComboBox.setCurrentIndex(0)
244

  
245
            additionalSymbolItem = QTableWidgetItem("")
246
            additionalSymbolItem.setFlags(Qt.ItemIsEnabled)
247
            self.setItem(7, 1, additionalSymbolItem)
248

  
249
            originalPointItem = QTableWidgetItem("")
250
            originalPointItem.setFlags(Qt.ItemIsEnabled)
251
            self.setItem(8, 1, originalPointItem)
252

  
253
            connectionPointItem = QTableWidgetItem("")
254
            connectionPointItem.setFlags(Qt.ItemIsEnabled)
255
            self.setItem(9, 1, connectionPointItem)
256
            
257
            isExceptDetectCheckBox = self.cellWidget(10, 1)
258
            isExceptDetectCheckBox.setChecked(False)
259

  
260
            hasInstrumentLabelCheckBox = self.cellWidget(11, 1)
261
            hasInstrumentLabelCheckBox.setChecked(False)
DTI_PID/DTI_PID/QPropertyTableWidget.py
1
try:
2
    from PyQt5.QtCore import *
3
    from PyQt5.QtGui import *
4
    from PyQt5.QtWidgets import *
5
except ImportError:
6
    try:
7
        from PyQt4.QtCore import *
8
        from PyQt4.QtGui import *
9
    except ImportError:
10
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
11
from AppDocData import AppDocData
12
import os
13
import SymbolBase
14
import symbol
15

  
16
class QPropertyTableWidget(QTableWidget):
17
    def __init__(self):
18
        QTableWidget.__init__(self)
19
        self.project = AppDocData.instance().getCurrentProject()
20
        self.initPropertyTableWidget()
21
        self.symData = None
22

  
23
    '''
24
        @Auther     Yecheol
25
        @Date       2018-07-04
26
        @History    Add Instrument Label YN Column
27
    '''
28

  
29
    def initPropertyTableWidget(self):
30
        self.setColumnCount(2)
31
        self.setRowCount(12)
32
        self.horizontalHeader().hide()
33
        self.verticalHeader().hide()
34
        self.horizontalHeader().setStretchLastSection(True)
35
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
36
        self.initTitleCell()
37

  
38
        ### Rotation Count SpinBox Init
39
        rotationCountSpinBox = QSpinBox()
40
        rotationCountSpinBox.setRange(0, 3)
41
        rotationCountSpinBox.setSingleStep(1)
42
        rotationCountSpinBox.setValue(0)
43
        rotationCountSpinBox.setEnabled(False)
44
        self.setCellWidget(3, 1, rotationCountSpinBox)
45

  
46
        ### IsContainChild CheckBox Init
47
        isContainChildCheckBox = QCheckBox()
48
        isContainChildCheckBox.setEnabled(False)
49
        self.setCellWidget(4, 1, isContainChildCheckBox)
50

  
51
        ### Symbol Type ComboBox Init
52
        symbolTypeComboBox = QComboBox()
53
        for name in AppDocData.instance().getSymbolTypeComboBoxItems():
54
            symbolTypeComboBox.addItem(name)
55
        symbolTypeComboBox.setEnabled(False)
56
        self.setCellWidget(5, 1, symbolTypeComboBox)
57

  
58
        ### Base Symbol ComboBox Init
59
        baseSymbolComboBox = QComboBox()
60
        for name in AppDocData.instance().getBaseSymbolComboBoxItems():
61
            baseSymbolComboBox.addItem(name)
62
        baseSymbolComboBox.setEnabled(False)
63
        self.setCellWidget(6, 1, baseSymbolComboBox)
64

  
65
        ### IsExceptDetect CheckBox Init
66
        isExceptDetectCheckBox = QCheckBox()
67
        isExceptDetectCheckBox.setEnabled(False)
68
        self.setCellWidget(10, 1, isExceptDetectCheckBox)
69

  
70
        ### hasInstrumentLabel CheckBox Init
71
        hasInstrumentLabelCheckBox = QCheckBox()
72
        hasInstrumentLabelCheckBox.setEnabled(False)
73
        self.setCellWidget(11, 1, hasInstrumentLabelCheckBox)
74

  
75
    '''
76
        @brief  Init contents and background color in Title cell
77
    '''
78
    def initTitleCell(self):
79
        #self.setItem(0, 0, QTableWidgetItem("심볼ID"))
80
        #self.setItem(0, 0, QTableWidgetItem("심볼명"))
81
        #self.setItem(1, 0, QTableWidgetItem("임계값(%)"))
82
        #self.setItem(2, 0, QTableWidgetItem("최소 특징점 수"))
83
        #self.setItem(3, 0, QTableWidgetItem("검출 시 심볼 회전 수"))
84
        #self.setItem(4, 0, QTableWidgetItem("자식 심볼 포함 여부"))
85
        #self.setItem(5, 0, QTableWidgetItem("심볼 타입"))
86
        #self.setItem(6, 0, QTableWidgetItem("기초 심볼"))
87
        #self.setItem(7, 0, QTableWidgetItem("부가 심볼"))
88
        #self.setItem(8, 0, QTableWidgetItem("Original Point"))
89
        #self.setItem(9, 0, QTableWidgetItem("Connection Point"))
90
        #self.setItem(10, 0, QTableWidgetItem("검출 시 미포함 여부"))
91
        #self.setItem(11, 0, QTableWidgetItem("Instrument Label 여부"))
92

  
93
        item1 = QTableWidgetItem("심볼명")
94
        item1.setFlags(Qt.ItemIsEnabled)
95
        self.setItem(0, 0, item1)
96

  
97
        item2 = QTableWidgetItem("임계값(%)")
98
        item2.setFlags(Qt.ItemIsEnabled)
99
        self.setItem(1, 0, item2)
100

  
101
        item3 = QTableWidgetItem("최소 특징점 수")
102
        item3.setFlags(Qt.ItemIsEnabled)
103
        self.setItem(2, 0, item3)
104

  
105
        item4 = QTableWidgetItem("검출 시 심볼 회전 수")
106
        item4.setFlags(Qt.ItemIsEnabled)
107
        self.setItem(3, 0, item4)
108

  
109
        item5 = QTableWidgetItem("자식 심볼 포함 여부")
110
        item5.setFlags(Qt.ItemIsEnabled)
111
        self.setItem(4, 0, item5)
112

  
113
        item6 = QTableWidgetItem("심볼 타입")
114
        item6.setFlags(Qt.ItemIsEnabled)
115
        self.setItem(5, 0, item6)
116

  
117
        item7 = QTableWidgetItem("기초 심볼")
118
        item7.setFlags(Qt.ItemIsEnabled)
119
        self.setItem(6, 0, item7)
120

  
121
        item8 = QTableWidgetItem("부가 심볼")
122
        item8.setFlags(Qt.ItemIsEnabled)
123
        self.setItem(7, 0, item8)
124

  
125
        item9 = QTableWidgetItem("Original Point")
126
        item9.setFlags(Qt.ItemIsEnabled)
127
        self.setItem(8, 0, item9)
128

  
129
        item10 = QTableWidgetItem("Connection Point")
130
        item10.setFlags(Qt.ItemIsEnabled)
131
        self.setItem(9, 0, item10)
132

  
133
        item11 = QTableWidgetItem("검출 시 미포함 여부")
134
        item11.setFlags(Qt.ItemIsEnabled)
135
        self.setItem(10, 0, item11)
136

  
137
        item12 = QTableWidgetItem("Ins't 라벨 포함 여부")
138
        item12.setFlags(Qt.ItemIsEnabled)
139
        self.setItem(11, 0, item12)
140

  
141
        for index in range(self.rowCount()):
142
            self.item(index, 0).setBackground(QColor(220, 220, 220))
143

  
144
    def makeConnection(self, dirTreeWidget):
145
        dirTreeWidget.singleClicked.connect(self.getClickedSymbol)
146

  
147
    '''
148
        @history    18.04.24    Jeongwoo    If symbol.getId == -1: symData = None
149
    '''
150
    @pyqtSlot(SymbolBase.SymbolBase)
151
    def getClickedSymbol(self, symbol):
152
        if self.symData != symbol:
153
            self.symData = symbol #if symbol.getId() != -1 else None
154
            self.symbolChanged()
155

  
156
    '''
157
        @brief      Set symbol data on TableWidget
158
                    TableWidgetItem handles only string value
159
        @history    18.04.24    Jeongwoo    Add 14th row(isExceptDetect CheckBox)
160
    '''
161
    def symbolChanged(self):
162
        if self.symData.baseSymbol is not None:
163
            #self.setItem(0, 1, QTableWidgetItem(str(self.symData.getId())))
164
            #self.setItem(0, 1, QTableWidgetItem(self.symData.getName()))
165
            #self.setItem(1, 1, QTableWidgetItem(str(int(self.symData.getThreshold() * 100))))
166
            #self.setItem(2, 1, QTableWidgetItem(str(self.symData.getMinMatchCount())))
167

  
168
            Symboldata = QTableWidgetItem(self.symData.getName())
169
            Symboldata.setFlags(Qt.ItemIsEnabled)
170
            self.setItem(0, 1, Symboldata)
171

  
172
            SymbolThreshold = QTableWidgetItem(self.symData.getThreshold() *100)
173
            SymbolThreshold.setFlags(Qt.ItemIsEnabled)
174
            self.setItem(1, 1, SymbolThreshold)
175

  
176
            SymbolMinMatchCount = QTableWidgetItem(self.symData.getMinMatchCount())
177
            SymbolMinMatchCount.setFlags(Qt.ItemIsEnabled)
178
            self.setItem(2, 1, SymbolMinMatchCount)
179

  
180
            rotationCountSpinBox = self.cellWidget(3, 1)
181
            rotationCountSpinBox.setValue(self.symData.getRotationCount())
182

  
183
            isContainChildCheckBox = self.cellWidget(4, 1)
184
            isContainChildCheckBox.setChecked(True if self.symData.getIsContainChild() == 1 else False)
185

  
186
            symbolTypeComboBox = self.cellWidget(5, 1)
187
            symbolTypeComboBox.setCurrentIndex(symbolTypeComboBox.findText(self.symData.getType())) ##### USED FIND TEXT
188
            
189
            baseSymbolComboBox = self.cellWidget(6, 1)
190
            baseSymbolComboBox.clear()
191
            for name in AppDocData.instance().getBaseSymbolComboBoxItems(self.symData.getType()):
192
                baseSymbolComboBox.addItem(name)
193
            baseSymbolComboBox.setCurrentIndex(baseSymbolComboBox.findText(self.symData.getBaseSymbol())) ##### USED FIND TEXT
194

  
195
            additionalSymbolItem = QTableWidgetItem(self.symData.getAdditionalSymbol())
196
            additionalSymbolItem.setFlags(Qt.ItemIsEnabled)
197
            self.setItem(7, 1, additionalSymbolItem)
198

  
199
            originalPointItem = QTableWidgetItem(self.symData.getOriginalPoint())
200
            originalPointItem.setFlags(Qt.ItemIsEnabled)
201
            self.setItem(8, 1, originalPointItem)
202

  
203
            connectionPointItem = QTableWidgetItem(self.symData.getConnectionPoint())
204
            connectionPointItem.setFlags(Qt.ItemIsEnabled)
205
            self.setItem(9, 1, connectionPointItem)
206
            
207
            isExceptDetectCheckBox = self.cellWidget(10, 1)
208
            isExceptDetectCheckBox.setChecked(True if self.symData.getIsExceptDetect() == 1 else False)
209

  
210
            hasInstrumentLabelCheckBox = self.cellWidget(11, 1)
211
            hasInstrumentLabelCheckBox.setChecked(True if self.symData.getHasInstrumentLabel() == 1 else False)
212

  
213
        else:
214
            #self.setItem(0,     1,   QTableWidgetItem(""))
215
            #self.setItem(0,     1,   QTableWidgetItem(""))
216
            #self.setItem(1,     1,   QTableWidgetItem(""))
217
            #self.setItem(2,     1,   QTableWidgetItem(""))
218

  
219
            item1 = QTableWidgetItem("")
220
            item1.setFlags(Qt.ItemIsEnabled)
221
            self.setItem(0, 1, item1)
222

  
223
            item2 = QTableWidgetItem("")
224
            item2.setFlags(Qt.ItemIsEnabled)
225
            self.setItem(1, 1, item2)
226

  
227
            item3 = QTableWidgetItem("")
228
            item3.setFlags(Qt.ItemIsEnabled)
229
            self.setItem(2, 1, item3)
230

  
231

  
232
            rotationCountSpinBox = self.cellWidget(3, 1)
233
            rotationCountSpinBox.setValue(0)
234

  
235
            isContainChildCheckBox = self.cellWidget(4, 1)
236
            isContainChildCheckBox.setChecked(False)
237

  
238
            symbolTypeComboBox = self.cellWidget(5, 1)
239
            symbolTypeComboBox.setCurrentIndex(0)
240

  
241
            baseSymbolComboBox = self.cellWidget(6, 1)
242
            baseSymbolComboBox.setCurrentIndex(0)
243

  
244
            additionalSymbolItem = QTableWidgetItem("")
245
            additionalSymbolItem.setFlags(Qt.ItemIsEnabled)
246
            self.setItem(7, 1, additionalSymbolItem)
247

  
248
            originalPointItem = QTableWidgetItem("")
249
            originalPointItem.setFlags(Qt.ItemIsEnabled)
250
            self.setItem(8, 1, originalPointItem)
251

  
252
            connectionPointItem = QTableWidgetItem("")
253
            connectionPointItem.setFlags(Qt.ItemIsEnabled)
254
            self.setItem(9, 1, connectionPointItem)
255
            
256
            isExceptDetectCheckBox = self.cellWidget(10, 1)
257
            isExceptDetectCheckBox.setChecked(False)
258

  
259
            hasInstrumentLabelCheckBox = self.cellWidget(11, 1)
260
            hasInstrumentLabelCheckBox.setChecked(False)
DTI_PID/DTI_PID/QResultPropertyTableWidget.py
1
try:
2
    from PyQt5.QtCore import *
3
    from PyQt5.QtGui import *
4
    from PyQt5.QtWidgets import *
5
except ImportError:
6
    try:
7
        from PyQt4.QtCore import *
8
        from PyQt4.QtGui import *
9
    except ImportError:
10
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
11

  
12
import os
13
import sys
14
import math
15
from SymbolSvgItem import SymbolSvgItem
16
from QEngineeringLineNoTextItem import QEngineeringLineNoTextItem
17
from QEngineeringLineItem import QEngineeringLineItem
18
from QEngineeringNoteItem import QEngineeringNoteItem
19
from AppDocData import AppDocData
20
from Drawing import Drawing
21
from enum import Enum
22

  
23
'''
24
    @brief      ItemType
25
    @author     Jeongwoo
26
    @date       2018.04.27
27
    @history    2018.05.10  Jeongwoo    Add LINE_NO
28
'''
29
class ItemType(Enum):
30
    SYMBOL = 1
31
    NOTE = 2
32
    LINE_NO = 3
33

  
34
class QResultPropertyTableWidget(QTableWidget):
35
    def __init__(self):
36
        QTableWidget.__init__(self)
37
        self.symData = None
38
        self.initResultPropertyTableWidget()
39

  
40
    '''
41
        @brief  show item's property
42
        @author humkyung
43
        @date   2018.07.03
44
    '''
45
    def showItemProperty(self, item):
46
        if type(item) is QEngineeringLineItem:
47
            self.initTitleCell(item)
48
            self.setItem(0, 1, QTableWidgetItem(item.lineType))
49

  
50
            pt = item.startPoint()
51
            self.setItem(1, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
52
            pt = item.endPoint()
53
            self.setItem(2, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
54

  
55
            self.setItem(3, 1, QTableWidgetItem('{}'.format('None' if item.conns[0] is None else item.conns[0])))
56
            self.setItem(4, 1, QTableWidgetItem('{}'.format('None' if item.conns[1] is None else item.conns[1])))
57
        elif issubclass(type(item), SymbolSvgItem):
58
            self.onSymbolClicked(item)
59
        elif type(item) is QEngineeringLineNoTextItem:
60
            self.onLineNoClicked(item)
61
        elif type(item) is QEngineeringNoteItem:
62
            self.onNoteClicked(item)
63

  
64
    '''
65
        @brief      Initialize TableWidget
66
        @author     Jeongwoo
67
        @date       18.04.13
68
        @history    .
69
    '''
70
    def initResultPropertyTableWidget(self):
71
        self.setColumnCount(2)
72
        self.setRowCount(13)
73
        self.horizontalHeader().hide()
74
        self.verticalHeader().hide()
75
        self.horizontalHeader().setStretchLastSection(True)
76
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
77
        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
78
        
79
    '''
80
        @brief      Slot to accept item click event
81
        @author     Jeongwoo
82
        @date       18.04.13
83
        @history    humkyung 2018.04.17 check if given symbol type is SymbolSvgItem
84
    '''
85
    @pyqtSlot(SymbolSvgItem)
86
    def onSymbolClicked(self, symbol):
87
        if issubclass(type(symbol), SymbolSvgItem):
88
            self.symData = symbol
89
            self.symbolChanged(symbol)
90

  
91
    '''
92
        @brief      show drawing' attributes
93
        @author     humkyung 
94
        @date       2018.07.07
95
    '''
96
    @pyqtSlot(Drawing)
97
    def onDrawingClicked(self, drawing):
98
        self.setRowCount(len(drawing.attrs))
99

  
100
        row = 0
101
        for attr in drawing.attrs:
102
            name = attr[0]
103
            item = QTableWidgetItem(name)
104
            item.setFlags(Qt.ItemIsEnabled)
105
            item.setBackground(QColor(220, 220, 220))
106
            self.setItem(row, 0, item)
107

  
108
            value = attr[1]
109
            item = QTableWidgetItem(value)
110
            item.setFlags(Qt.ItemIsEnabled)
111
            self.setItem(row, 1, item)
112

  
113
            row = row + 1
114

  
115
    '''
116
        @brief      Slot to accept Note item click event
117
        @author     Jeongwoo
118
        @date       18.04.27
119
        @history    humkyung 2018.07.08 change method name to onNoteClicked
120
    '''
121
    @pyqtSlot(str, list)
122
    def onNoteClicked(self, noteNoStr, noteContentsList):
123
        self.noteChanged(noteNoStr, noteContentsList)
124

  
125
    '''
126
        @brief      Slot to accept Line No Item Click event
127
        @author     Jeongwoo
128
        @date       18.05.10
129
        @hisotry    humkyung 2018.07.08 change method name to onLineNoClicked
130
    '''
131
    @pyqtSlot(QEngineeringLineNoTextItem)
132
    def onLineNoClicked(self, item):
133
        self.lineNoChanged(item)
134
        
135
    '''
136
        @brief      Reset table with new SymbolSvgItem
137
        @author     Jeongwoo
138
        @date       18.04.13
139
        @history    .
140
    '''
141
    def symbolChanged(self, item):
142
        self.initTitleCell(item)
143
        self.initContentsCell()
144

  
145
    '''
146
        @brief      Reset table with note info
147
        @author     Jeongwoo
148
        @date       18.04.27
149
    '''
150
    def noteChanged(self, noteNoStr, noteContentsList):
151
        self.initTitleCell(QEngineeringNoteItem())
152
        self.initNoteCell(noteNoStr, noteContentsList)
153

  
154
    '''
155
        @brief      Reset table with line no item
156
        @author     Jeongwoo
157
        @date       18.05.10
158
    '''
159
    def lineNoChanged(self, item):
160
        from QEngineeringRunItem import QEngineeringRunItem
161

  
162
        if type(item) is QEngineeringLineNoTextItem:
163
            self.initTitleCell(item)
164
            self.initLineNoCell(item)
165
        elif type(item) is QEngineeringRunItem:
166
            self.initLineRunCell(item)
167

  
168
    '''
169
        @brief      Initialize Title Cell
170
        @author     Jeongwoos
171
        @date       18.04.13
172
        @history    2018.04.27 Jeongwoo Add if-statement by ItemType
173
                    2018.05.10 Jeongwoo Add if-statement LINE_NO ItemType
174
    '''
175
    def initTitleCell(self, item):
176
        self.clear()
177

  
178
        try:
179
            if issubclass(type(item), SymbolSvgItem) or type(item) is SymbolSvgItem:
180
                self.setRowCount(3)
181

  
182
                widgetItem = QTableWidgetItem("심볼명")
183
                self.setItem(0, 0, widgetItem)
184
                widgetItem = QTableWidgetItem("타입")
185
                self.setItem(1, 0, widgetItem)
186
                widgetItem = QTableWidgetItem("각도")
187
                self.setItem(2, 0, widgetItem)
188
            elif type(item) is QEngineeringNoteItem:
189
                self.setRowCount(1)
190

  
191
                widgetItem = QTableWidgetItem("노트번호")
192
                self.setItem(0, 0, widgetItem)
193
            elif type(item) is QEngineeringLineNoTextItem:
194
                '''
195
                DO NOTHING / initLineNoCell
196
                '''
197
            elif type(item) is QEngineeringLineItem:
198
                self.setRowCount(5)
199

  
200
                widgetItem = QTableWidgetItem("타입")
201
                self.setItem(0, 0, widgetItem)
202
                widgetItem = QTableWidgetItem("시작점")
203
                self.setItem(1, 0, widgetItem)
204
                widgetItem = QTableWidgetItem("끝점")
205
                self.setItem(2, 0, widgetItem)
206
                widgetItem = QTableWidgetItem("CONN1")
207
                self.setItem(3, 0, widgetItem)
208
                widgetItem = QTableWidgetItem("CONN2")
209
                self.setItem(4, 0, widgetItem)
210

  
211
            for index in range(self.rowCount()):
212
                item = self.item(index, 0)
213
                if item is not None:
214
                    item.setFlags(Qt.ItemIsEnabled)
215
                    item.setBackground(QColor(220, 220, 220))
216
        except Exception as ex:
217
            print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
218
                
219
    '''
220
        @brief      Initialize Contents Cell
221
        @author     Jeongwoo
222
        @date       18.04.13
223
        @history    humkyung 2018.06.14 display symbol attributes 
224
                    humkyung 2018.07.05 display connectivity
225
    '''
226
    def initContentsCell(self):
227
        from QEngineeringInstrumentItem import QEngineeringInstrumentItem
228

  
229
        if self.symData is not None:
230
            self.setRowCount(3 + len(self.symData.getAttributes()) + len(self.symData.conns))
231

  
232
            self.setItem(0, 1, QTableWidgetItem(self.symData.name))
233
            self.setItem(1, 1, QTableWidgetItem(self.symData.type))
234
            self.setItem(2, 1, QTableWidgetItem(str(round(math.degrees(self.symData.angle)))))
235

  
236
            row = 3
237
            # display attributes of symbol
238
            attrs = self.symData.getAttributes()
239
            if attrs is not None:
240
                attrItems = list(attrs.items())
241
                for index in range(len(attrItems)):
242
                    key = attrItems[index][0]
243
                    value = attrItems[index][1]
244
                    keyItem = QTableWidgetItem(key)
245
                    keyItem.setBackground(QColor(220, 220, 220))
246
                    self.setItem(3 + index, 0, keyItem)
247
                    self.setItem(3 + index, 1, QTableWidgetItem(value))
248
                    row = row + 1
249
            # up to here
250

  
251
            # display connectivity
252
            count = 1
253
            self.setRowCount(row + len(self.symData.conns))
254
            for conn in self.symData.conns:
255
                item = QTableWidgetItem('CONN{}'.format(count))
256
                item.setFlags(Qt.ItemIsEnabled)
257
                item.setBackground(QColor(220, 220, 220))
258
                self.setItem(row, 0, item)
259

  
260
                item = QTableWidgetItem('{}'.format('None' if conn is None else conn))
261
                item.setFlags(Qt.ItemIsEnabled)
262
                self.setItem(row, 1, item)
263
                row = row + 1
264
                count = count + 1
265
            # up to here
266
        else:
267
            self.setRowCount(0)
268

  
269
    '''
270
        @brief      Initialize Note Contents Cell
271
        @author     Jeongwoo
272
        @date       18.04.27
273
    '''
274
    def initNoteCell(self, noteNoStr, noteContentsList):
275
        self.setItem(0, 1, QTableWidgetItem(noteNoStr))
276
        
277
        row = self.rowCount()
278
        count = 1
279
        self.setRowCount(row + len(noteContentsList))
280
        for index in range(len(noteContentsList)):
281
            item = QTableWidgetItem("노트내용{}".format(count))
282
            item.setFlags(Qt.ItemIsEnabled)
283
            self.setItem(row, 0, item)
284
            self.setItem(row, 1, QTableWidgetItem(noteContentsList[index]))
285
            row = row + 1
286
            count = count + 1
287

  
288
    '''
289
        @brief      Initialize Line No Contents Cell
290
        @author     Jeongwoo
291
        @date       18.05.10
292
    '''
293
    def initLineNoCell(self, lineNoItem):
294
        self.setRowCount(1 + len(lineNoItem.getLineNoAttributes()))
295

  
296
        lineNoTitleItem = QTableWidgetItem("Line No.")
297
        lineNoTitleItem.setBackground(QColor(220, 220, 220))
298
        lineNoTitleItem.setFlags(Qt.ItemIsEnabled)
299
        self.setItem(0, 0, lineNoTitleItem)
300
        self.setItem(0, 1, QTableWidgetItem(lineNoItem.text()))
301

  
302
        attrItems = lineNoItem.getLineNoAttributes()
303
        if attrItems is not None:
304
            for index in range(len(attrItems)):
305
                key = attrItems[index][0]
306
                value = attrItems[index][1]
307
                keyItem = QTableWidgetItem(key)
308
                keyItem.setFlags(Qt.ItemIsEnabled)
309
                keyItem.setBackground(QColor(220, 220, 220))
310
                self.setItem(1 + index, 0, keyItem)
311
                self.setItem(1 + index, 1, QTableWidgetItem(value))
312
                
313
    '''
314
        @brief      Initialize Run Contents Cell
315
        @author     humkyung 
316
        @date       2018.05.27
317
    '''
318
    def initLineRunCell(self, item):
319
        self.setRowCount(1)
320

  
321
        lineTypeItem = QTableWidgetItem("라인 타입")
322
        lineTypeItem.setBackground(QColor(220, 220, 220))
323
        lineTypeItem.setFlags(Qt.ItemIsEnabled)
324
        self.setItem(0, 0, lineTypeItem)
325
        self.setItem(0, 1, QTableWidgetItem(item.lineType))
DTI_PID/DTI_PID/QResultTreeWidget.py
1
# coding: utf-8
2

  
1 3
try:
2 4
    from PyQt5.QtCore import *
3 5
    from PyQt5.QtGui import *
......
364 366
            elif type(itemData) is Drawing:
365 367
                self.drawingClicked.emit(itemData)
366 368
                
367
            itemData.setSelected(True)
368
            itemData.update()
369
            if issubclass(type(itemData), QGraphicsItem):
370
                itemData.setSelected(True)
371
                itemData.update()
369 372

  
370 373

  
371 374
    '''
DTI_PID/DTI_PID/READ ME.txt
1
????? : 2018.06.28(??)
2
????? : ?????? ???
1
�ۼ��� : 2018.06.28(��)
2
�ۼ��� : ������ ���
3 3

  
4
** ?????, ??? ???/???? ?? ??? ??? ??? **
4
** Ŭ����, �Լ� �ۼ�/���� �� �ּ� �ۼ� �ʿ� **
5 5
'''
6
	@brief		????
7
	@author		?????
8
	@date		?????
9
	@history	?????	?????	????
10
	(history?? ??? ???? ?? ???)
6
	@brief		����
7
	@author		�ۼ���
8
	@date		�ۼ���
9
	@history	�ۼ���	�ۼ���	����
10
	(history�� ��� ���� �� �ۼ�)
11 11
'''
12 12

  
13
** ?? ????? ???? ?? ??? ???? ?????? ???? **
13
** �� ���̽� ���� �� ��⿡ ���� ������ ���� **
14 14

  
15
1. DTI_PID ???? ?? ???
15
1. DTI_PID ���� �� ���
16 16
1) App.py
17
- 2018.06.28(??) ???? ???? ??????
18
- ?????? ???????(*.qss) ????
19
- __main__ ???? ????
20
- ProjectDialog ?? ??????, ??????? ????? ???? ?????? ?????? AppDocData?? ???? ?? MainWindow ?? ????
17
- 2018.06.28(��) ���� ���� ���α׷�
18
- ���α׷� ��Ÿ�Ͻ�Ʈ(*.qss) ����
19
- __main__ ���� ����
20
- ProjectDialog �� ����Ͽ�, ������Ʈ ���ÿ� ���� ������ ���޹޾� AppDocData�� ���� �� MainWindow �� ����
21 21

  
22 22
2) AppDocData.py
23
- ?????? ?????? ?????? ???? Configuration, Database ?????? ???? ???
24
- Source, Area, Config, NominalPipeSize, Color, AppDocData ?? ??????? ????
25
- Singleton???? ?????? AppDocData?? ??????? ?? ?????? ????
26
- Source : QtImageViewer?? ????? ????? ???? ?? ???
27
- Area : ???????????? ?????? ?? Drawing, Note ???? ???? ???? ???? ?? ???
28
- Config : ???? Configuration?? ???? ???? ????
29
- NominalPipeSize : ????? Nominal Pipe ?? ???? ???? ???? ?? ???
30
- Color : ????? ???? ?? ????? ???? ?? ???? ????
31
- AppDocData : ??? Database?? ????, Source, Area ?? ??? ??? ??????? ?????? ????????, ??? ???????? ???
23
- ���α׷� ������ ����ϴ� ���� Configuration, Database ������ ���� ���
24
- Source, Area, Config, NominalPipeSize, Color, AppDocData �� Ŭ������ ����
25
- Singleton���� ������ AppDocData�� �����Ͽ� �� ������ ����
26
- Source : QtImageViewer�� ��µǴ� �̹��� ���� �� ��ȯ
27
- Area : ������������ ������ �� Drawing, Note ���� ���� ���� ���� �� ��ȯ
28
- Config : ���� Configuration�� ���� ���� ����
29
- NominalPipeSize : ����� Nominal Pipe �� ���� ���� ���� �� ��ȯ
30
- Color : ����� ���� �� �ɺ��� ���� �⺻ ���� ����
31
- AppDocData : �ַ� Database�� ����, Source, Area �� ��Ÿ �ٸ� Ŭ������ ������ �����ϰų�, �׸� �ҷ����µ� ���
32 32

  
33 33
3) AreaOcrTestModule.py
34
- Tesseract?? ????? ???? ???? OCR ????? ??????? ???? ???
35
- ?????? ?????? ??? ???
34
- Tesseract�� �̿��� ���� ���� OCR ����� �׽�Ʈ�ϱ� ���� ���
35
- ������ ������ �ʴ� ���
36 36

  
37 37
4) azure_handwrite_ocr_module.py
38
- Azure Computer Vision API ?? Handwrite OCR?? ?????? ???? ???
39
- ???? ?????? ??? ???
40
- azure_ocr_module ?? ? ????? ??????, azure_ocr_module ?? ??? ?????? ???? ?????? ??? ???? ???? ????? ?????? ????? ??? ??????
38
- Azure Computer Vision API �� Handwrite OCR�� ����ϱ� ���� ���
39
- ���� ������ �ʴ� ���
40
- azure_ocr_module �� ū ���̴� ������, azure_ocr_module �� ��� ������ �ؽ�Ʈ ������ �ƴ� �ؽ�Ʈ ���� ����� ����Ǿ� ����� �ڵ尡 ������
41 41

  
42 42
5) azure_ocr_module.py
43 43
- https://westus.dev.cognitive.microsoft.com/docs/services/5adf991815e1060e6355ad44/operations/56f91f2e778daf14a499e1fc
44
- ????? ??????? ????? ???? ????
45
- Orientation, Angle, Text, BoundingBox ?????? ???
46
- Orientation : Up, Down, Left, Right ?? ???? ???????, ??? ???? ?????? ???????? ??? ?????? ????
47
- ???? Line ?????? ?????? ???? / ????? Word ?????? ????
48
- TextInfo ?? ??????? ?????? ??????????, ?????? ?? Azure OCR?? ???? ?????? ????? ???? ?????? ???????? ????
44
- ���޵� �̹����� ���Ե� �ؽ�Ʈ ����
45
- Orientation, Angle, Text, BoundingBox ������ ��ȯ
46
- Orientation : Up, Down, Left, Right �� ���� �־�����, ó�� �νĵ� �ؽ�Ʈ�� �������� �ٸ� �ؽ�Ʈ�� ����
47
- ���� Line ������ �ؽ�Ʈ�� ���� / �ʱ⿡�� Word ������ ����
48
- TextInfo �� �����Ͽ� ������ ����������, ���α׷� �� Azure OCR�� �뵵�� ����Ǹ鼭 ����� �ؽ�Ʈ ������ �������� ����
49 49

  
50 50
6) DTI_PID.py
51
- ???, ????, ???? ???? ???? ??? ???????? ???
52
- ????? ??? ????? ???? ??? / ????, ???? ?????? ??? ??? ????? ????? ?? ?????
53
- ??? ?????? ??????? ??? ????? ???????? ?????? ???? ?? ??? ??? ?? ????? ???? ???? ????? ??????? ????
54
- MainWindow ????? ????? ??? executeRecognition() ?? recognizeLine() ?? ??? (2018.06.28 ????)
55
- executeRecognition() ?? ??? ??? ????? ?????? ???? (2018.06.28 ????)
56

  
57
	[1] ????????? TargetSymbol ????? ????
58
	[2] ???? ???? ????
59
	[3] ???? ????? ???? ????? ???? ?? ????(????, ???) ???? ????
60
	[4] TargetSymbol ??????? ?????? ???? ?? ??? ????
61
		- Template Matching ?? ???? ????
62
		- ?????? Key Point ???? ??? ???? ?????
63
	[5] ????? ??? ?? ?????? ?? ?????(Canvas)?? ???
64
	[6] ????? ????? ??????????? ????
65
	[7] ????? ????? ???? ?????? ???????? ???? ?????? ???
66
	[8] ????? ?????? ??????????? ????
67

  
68
- recognizeLine() ?? ??? ??? ????? ?????? ???? (2018.06.28 ????)
69

  
70
	[1] ????? ????? ???? ?? ???? ????
71
	[2] ????? ????? ??? ???? ??? ?? ?? ????? ???????? ????? ???? ????
72
	[3] ???? ?????? ?????? ????? ????
73
	[4] ????? ????? ????
74
	[5] ????? ?????? ????
75
	[6] ?? ?????? QEngineeringLineItem ???? ???? ?? QtImageViewer ???? ???
76
	[7] ???? ???
51
- �ɺ�, �ؽ�Ʈ, ���� ���� ���� �ڵ尡 ������ִ� ���
52
- �ɺ��� �ش� ��⿡�� ���� ó�� / �ؽ�Ʈ, ���� ������ ��� �ٸ� ����� ȣ���� �� ��ó��
53
- �ʱ⿡ �ۼ��Ǿ� Ŭ������ �ƴ� �Լ��� �������� ������ ���� �� �Լ� ȣ�� �� Ŭ���� ���� ���� ���ǵ� �Ķ���͸� ����
54
- MainWindow �κ��� ����� ��� executeRecognition() �� recognizeLine() �� ȣ�� (2018.06.28 ����)
55
- executeRecognition() �� ��� ũ�� �Ʒ��� ������ ���� (2018.06.28 ����)
56

  
57
	[1] �����Ϸ��� TargetSymbol ����Ʈ �ʱ�ȭ
58
	[2] �ؽ�Ʈ ���� ����
59
	[3] ���⿡ ����� ���� �̹��� �ʱ�ȭ �� �ؽ�Ʈ(����, ��Ʈ) ���� ����
60
	[4] TargetSymbol ����Ʈ�� ��ȸ�Ͽ� ���� �� �ɺ� ����
61
		- Template Matching �� ���� ����
62
		- ��Ī�Ǵ� Key Point ���� �񱳸� ���� ���͸�
63
	[5] ����� �ɺ� �� �ؽ�Ʈ�� �� �̹���(Canvas)�� �׸�
64
	[6] ����� �ɺ��� �������κ��� ����
65
	[7] ����� �ɺ��� ���� ������ �������� �簢�� ������ �׸�
66
	[8] ����� �ؽ�Ʈ�� �������κ��� ����
67

  
68
- recognizeLine() �� ��� ũ�� �Ʒ��� ������ ���� (2018.06.28 ����)
69

  
70
	[1] ����� �׷��� ���� �� ȭ��ǥ ����
71
	[2] ����� �׷��� �ɺ� ���� ȹ�� �� �� �ɺ��� �������� ����� ���� ����
72
	[3] ���� ������ ������ �ϳ��� ����
73
	[4] ���ΰ� �ɺ��� ����
74
	[5] ���ΰ� ������ ����
75
	[6] �� ������ QEngineeringLineItem ���� ���� �� QtImageViewer ���� �߰�
76
	[7] ȭ��ǥ �߰�
77 77

  
78 78
7) MainWindow.py
79
- ??? ??? ????, ???? ??? ??? ?? ????? ?????? ?????? ???? ????, QtImageViewer, ???? ??? ??? ?? ????? ?????? ?????? ???? ???????? ????
80
- ???? ??? ???? ?? ??? ?? ???? ??? ???? ?????? ?????? ???? ??????? ??????? ??? ??????? ???? QActionGroup ???? ???? ????
81
- ?? ???? ????? Commands ???? ???? *Command.py ?? ??????? ??????, QtImageViewer.command ?? ????? ???
82
- ???? ????? ???? ?? openImageDrawing() ??? ??? ?? ????? ???? ???? ?????? ???? ?? ????? ???
83
- ???? ????? ???? ?? ??? ?????? ???????(xml)?? ???? ??? ??? ?????? ??????? ???, ????, ?????? QtImageViewer ?? ???
79
- ��� �޴� ����, ���� ��� Ʈ�� �� ���̺� ������ ������ ���� ����, QtImageViewer, ���� ��� Ʈ�� �� ���̺� ������ ������ ���� �������� ����
80
- ���� �޴� ���� �� �޴� �� �Ϻδ� ��� ���� ������ ǥ���ϱ� ���� üũ�ڽ��� �����Ǿ� �̸� �����ϱ� ���� QActionGroup ���� ���� ����
81
- �� ���� �޴��� Commands ���� ���� *Command.py �� �����Ǿ� ������, QtImageViewer.command �� ġȯ�Ͽ� ���
82
- ���� �̹��� ���� �� openImageDrawing() �Լ� ȣ�� �� ���õ� ���鿡 ���� ������ ���� �� Ʈ���� ǥ��
83
- ���� �̹��� ���� �� �̹� ������ �߰�����(xml)�� ���� ��� �ش� ������ ������� �ɺ�, ����, �ؽ�Ʈ�� QtImageViewer �� ǥ��
84 84

  
85 85
8) Project.py
86
- ??????? ?????? ??????? ??? ?????
87
- ??????? ???? ???????? DB, SVG, TEMP, OUTPUT ???? ???? ?????? getter ??? ????
86
- ������Ʈ ������ �����ϰ� �ִ� Ŭ����
87
- ������Ʈ ��θ� �������� DB, SVG, TEMP, OUTPUT ���� ��θ� ��ȯ�ϴ� getter �Լ� ����
88 88

  
89 89
9) ProjectDialog.py
90
- ????????? ????, ??????? ???? ???????
91
- QDialog.exec_() ?? ???? ????? ?????? ??????? ???? ??????? ??????? ????
90
- ������Ʈ�� ����, �����ϱ� ���� ���̾�α�
91
- QDialog.exec_() �� ���� ��µDZ� ������ ���̾�α� �ܺο� ��Ŀ���� �̵����� ����
92 92

  
93 93
10) ConfigurationDialog.py
94
- ?????? ?????? ????? ???????? ??????? ???? ???????
94
- ���α׷� ������ �ʿ��� �������� �����ϱ� ���� ���̾�α�
95 95

  
96 96
11) QDirTreeWidget.py
97
- MainWindow ???? ???? ????? TreeWidget
98
- ???? ??????? ???? ??? ????? ??????? Tree ???????? ???
99
- ????? ??????? ???? ???? ????? ??? [????, ??????, ????] ?? ?????? Context Menu ???
100
- ????? ??? ??????? Symbol Type ?? ???? Tree ????
101
- ????? ??????? ???? ??? ?? QSymbolEditorDialog ???
102
- ????? ??????? ??? ?? ??? QPropertyTableWidget ?? ??? ???? ???
103
- ??? ????, ??? ?? QtImageViewer ?? ??? ????
97
- MainWindow ���� ��ܿ� ��ġ�� TreeWidget
98
- ���� ������� ��ϵ� �ɺ� �̹��� ����Ʈ�� Tree �������� ǥ��
99
- �ɺ��� ������� ���콺 ���� Ŭ���� ��� [����, ũ�Ժ���, ����] �� ������ Context Menu ǥ��
100
- ��µǴ� �ɺ� �̹����� Symbol Type �� ���� Tree ����
101
- �ɺ��� ������� ���� Ŭ�� �� QSymbolEditorDialog ǥ��
102
- �ɺ��� ������� Ŭ�� �� �ϴ� QPropertyTableWidget �� �ɺ� ���� ���
103
- �ɺ� �巡��, ��� �� QtImageViewer �� �ɺ� ����
104 104

  
105 105
12) QOcrResultDialog.py
106
- MainWindow ???? ??? ?? OCR ??? ?????? QtImageViewer ?? ???? ?????? ????????? ??? ????? ???????
107
- ??? ???? ????? ?? ????? ?????? ??? ??? ????
108
- 90?? ???? ????? ???????, ?????? ?????? ?????????? ?????? ????? ?? Re-Detect ????? ????? ?? ???? ????
109
- ??? ??? ??? ?? ????? ?????? ????, ??? ?????? ?????? TextInfo ???
106
- MainWindow ���� �޴� �� OCR �Ǵ� ����ǿ� QtImageViewer �� ǥ�õ� �ؽ�Ʈ�� ����Ŭ���� ��� ǥ�õǴ� ���̾�α�
107
- ��� ���� �̹��� �� ����� �ؽ�Ʈ�� ȸ�� �ɼ� ����
108
- 90�� ���� ȸ���� �����ϸ�, ������ �ؽ�Ʈ�� ���������� ȸ���Ͽ� ��ġ�� �� Re-Detect ��ư�� Ŭ���� �� �ؽ�Ʈ ����
109
- Ȯ�� ��ư Ŭ�� �� ����� �ؽ�Ʈ�� ����, ȸ�� ������ ������ TextInfo ��ȯ
110 110

  
111 111
13) QPropertyTableWidget.py
112
- QDirTreeWidget ???? ????? ????? ?????? ???
113
- TableWidget???? ???? ?? Database?? ??? ?????? ????? ???????, ??? ??????? ???? ???? ??????
112
- QDirTreeWidget ���� ���õ� �ɺ��� ������ ���
113
- TableWidget���� ���� �� Database�� ��� �ݿ��ϴ� ��ȹ�� �־�����, ��� �����Ƿ� ���� ���� ������
114 114

  
115 115
14) QRecognitionDialog.py
116
- ???, ???? ?? ?????? ??????? ???? ???????
117
- 2???? ?????, ??????, ???? ??? ?????, ??????????? ????
118
- ??? ??? ???? ??? Worker?? procCounter() ?? ?????? ???? ????
119
- startThread() ?????? ???? ????? ???? ?? ?????? ????
116
- �ɺ�, �ؽ�Ʈ �� ������ �����ϱ� ���� ���̾�α�
117
- 2���� üũ�ڽ�, �����ư, ���� ��� ����Ʈ, ���α׷����ٷ� ����
118
- �ش� ��� ���� �ִ� Worker�� procCounter() �� ȣ���Ͽ� ���� ����
119
- startThread() ������ ���⿡ �ʿ��� ���� �� ������ ����
120 120

  
121
15) QResultPropertyTableWidget.py
122
- QResultTreeWidget???? ????? ????? ?????? ???
121
15) ResultPropertyTableWidget.py
122
- QResultTreeWidget���� ���õ� �׸��� ������ ���
123 123

  
124 124
16) QResultTreeWidget.py
125
- ????? ???, ??????, ???(NOTE 1, NOTE 2, ...) ??????? Tree ????? ????
126
- ?????? ?????? ??? ???? ????? ?? ???? ???? ????
127
- ???? ???? ?? ???? ??????? ???? ????
128
- QtImageViewer ?? Scene ???? ???? ?? ????
129
- ????? ?????? ???? ?? ??? ????? QtImageViewer ?? ??? ?? ?? ????, ????????? ??? ???
125
- ����� �ɺ�, ���γѹ�, ��Ʈ(NOTE 1, NOTE 2, ...) ����Ʈ�� Tree ���·� ����
126
- ���γѹ� ������ ��� ���콺 ��Ŭ�� �� ���� ���� ����
127
- ���� ���� �� ���� �����۵鵵 ���� ����
128
- QtImageViewer �� Scene ���� ���� �� ����
129
- ����� ������ ���� �� �ش� ��ġ�� QtImageViewer �� �̵� �� �� �εǸ�, ���̶����� ȿ�� ǥ��
130 130

  
131 131
17) QSymbolDisplayDialog.py
132
- QDirTreeWidget ???? ??? ??????? ???? ??????? ?? ??? ???? ?? ????? ???????
133
- ????? ??? ??????? ???
132
- QDirTreeWidget ���� �ɺ� ������� ���콺 ��Ŭ���� �� �޴� ���� �� ��µǴ� ���̾�α�
133
- �ܼ��� �ɺ� �̹����� ���
134 134

  
135 135
18) QSymbolEditorDialog.py
136
- ???? ????? ????? ???, ??????? ???? ???????
137
- ???? ?????? ???? ??? ??? ?? ???? ????? ????? ??? ??????? ???
138
- Hand, Crop, Pen, Eraser, Area Eraser, Fit Image, Remove Text, Rotation, Flip, Zoom, Show Guideline ????? ????
139
- ?? ??? ???? ?? QtImageViewer.command ?? ?? ????? ??? Command?? ????? ???
140
- ??? ????, ???? ?? ???? ??????? ???? ??? ?????(1) ?? ???? ??? ????
141
- ???? ID ?? ??? 100?? ???????? ??????, ?????? ?????? ?? ???? ?????? ??? ?? (2018.06.28 ????)
136
- ���⿡ ����� �ɺ��� ���, �����ϱ� ���� ���̾�α�
137
- ���� ������ ���� ��ư Ŭ�� �� ���� ��ü�� ����� ä�� ���̾�α� ���
138
- Hand, Crop, Pen, Eraser, Area Eraser, Fit Image, Remove Text, Rotation, Flip, Zoom, Show Guideline �޴��� ����
139
- �� �޴� ���� �� QtImageViewer.command �� �� �޴��� �´� Command�� ġȯ�Ͽ� ���
140
- �ɺ� ����, ���� �� ���� ���ϸ��� ���� ��� ���ϸ�(1) �� ���� �̸� ����
141
- ���� ID �� ��� 100�� �ڸ��̻��� ī�װ�, ������ ī�װ� �� ���� ������ ��� �� (2018.06.28 ����)
142 142

  
143
	??) 100, 101, 201, 202 ?? ??? [[100, 101], [201, 202]] ?? ???? TargetSymbol?? ?????? ?? ?????? ???? ???? ????
143
	��) 100, 101, 201, 202 �� ��� [[100, 101], [201, 202]] �� ���� TargetSymbol�� ����Ǿ� �� ī�װ� ���� ���� ����
144 144

  
145
- ???? ??? ?? ??? ????? ????? ?????? SPPID ???? ????? ???? ?????
146
- ??? ????? ??? ?????? ?????? ??? ????? ?????? ???
147
- Original Point ?? ??? ?? 1??, Connection Point ?? ????? 0?? ??? ??? ????
148
- ???? ?????? ???? ?? ?? ??? ???? ???????? ??? ????? ???????? ????
149
- ??? ???? ???? ?? ?? ??? ????? ??? ????
145
- ���� �ɺ� �� �ΰ� �ɺ��� ��ϵǴ� ������ SPPID ���� ����� ���� �ɺ���
146
- �ΰ� �ɺ��� ��� �޺��ڽ� ������ �߰� ��ư�� ������ ���
147
- Original Point �� �ɺ� �� 1��, Connection Point �� �ɺ��� 0�� �̻� ��� ����
148
- ���� ������ ���� üũ �� �ɺ� ���� �������� �ش� �ɺ��� �������� ����
149
- ��� ���� ���� üũ �� �ش� ��ġ�� �ɺ� ����
150 150

  
151 151
19) QtImageViewer.py
152 152
- https://github.com/marcel-goldschen-ohm/PyQtImageViewer
153
- ??? ?? ????? ???? ????? Qt.KeepAspectRatio ???
153
- Ȯ�� �� �̹��� ���� ��Ģ�� Qt.KeepAspectRatio ���
154 154

  
155 155
20) Symbol.py
156
- SymbolBase ?? ?????? ?????
157
- ???? ???? ???? ??????? ????
156
- SymbolBase �� ��ӹ��� Ŭ����
157
- ���� ���� ���� �����͸� ����
158 158

  
159 159
21) SymbolBase.py
160
- Target Symbol ?????? ???? ?? ????? ???? ??????? ????
161
- ????? ?? ???(SVG, IMAGE)?? ?????? getter ??? ????
160
- Target Symbol ������ ���� �� �ʿ��� ���� �����͸� ����
161
- �ɺ��� �� ���(SVG, IMAGE)�� ��ȯ�ϴ� getter �Լ� ����
162 162

  
163 163
22) tesseract_ocr_module.py
164
- ??? ????? ????? getTextInfo()
165
	[1] ???? ?????? ??????? pytesseract.image_to_string() ?? ???????? ?? Char ???? ?????? ??????? pytesseract.image_to_boxes ?? ???
166
	[2] ????? ???? ?????? ???? ??? ???? ???? ???? ????
167
	[3] ?? Char?? ???? ?? ?????? ?????? Line ?????? ???????? ???? ????? ????? ??? ?? ???? (QRectF.intersects() ???)
168
	[4] ????? ???? ?????? TextInfo ?? ??????? ???
164
- �ַ� ���Ǵ� �Լ��� getTextInfo()
165
	[1] �ؽ�Ʈ ������ �����ϴ� pytesseract.image_to_string() �� �������� �� Char ���� ������ �����ϴ� pytesseract.image_to_boxes �� ���
166
	[2] ����� �ؽ�Ʈ ������ ���� ��� �ؽ�Ʈ ���� ���� ����
167
	[3] �� Char�� ���� �� ������ ������ Line ������ �������� ���� ���ο� �ִ��� �˻� �� ���� (QRectF.intersects() �̿�)
168
	[4] ����� �ؽ�Ʈ ������ TextInfo �� �����Ͽ� ��ȯ
169 169

  
170 170
23) TextInfo.py
171
- ????? ???? ?????? ?????? ?????
171
- ����� �ؽ�Ʈ ������ ������ Ŭ����
172 172

  
173 173
24) TextItemFactory.py
174
- QEngineeringTextItem ???? ???????? ???? ?? ???
175
- QEngineeringTextItem ???? ?? ????? ??????? ???????, ??? ??????? ??? ????? ???????? ???
176
- ???? ?????? ?????? ??? (2018.06.28 ????)
174
- QEngineeringTextItem ���� �������� ���� �� ���
175
- QEngineeringTextItem ���� �� �ʿ��� �����͸� �����Ͽ�, �ش� �����Ϳ� �´� Ÿ���� �������� ��ȯ
176
- ���� ������ ������ ��� (2018.06.28 ����)
177 177

  
178 178
	[1] QEngineeringNoteItem
179 179
	[2] QEngineeringLineNoItem
......
182 182
	[5] QEngineeringTextItem
183 183

  
184 184
25) XmlGenerator.py
185
- ??????? ?? SPPID ????? XML ???? ?????? ???? ???
186
- writeXmlOnScene() : ??? ???? xml ????
187
- generateOutputXml() : SPPID ????? xml ????
185
- �߰����� �� SPPID ��ȯ�� XML ���� ������ ���� ���
186
- writeXmlOnScene() : �߰� ���� xml ����
187
- generateOutputXml() : SPPID ��ȯ�� xml ����
188 188

  
189 189

  
190 190

  
191
2. Commands ???? ?? ???
191
2. Commands ���� �� ���
192 192
1) AreaEraserCommand.py
193
- QtImageViewer ?????? ??????? ?????? ?????? ???(255, 255, 255) ????? ???
193
- QtImageViewer ������ �巡���Ͽ� ������ ������ ���(255, 255, 255) �ȼ��� ��ü
194 194

  
195 195
2) AreaOcrCommand.py
196
- QtImageViewer ?????? ??????? ?????? ?????? ?????? ????
197
- ???? ???? ?? ??? ??? ??? ?? ????? ?????? QtImageViewer?? Scene?? ?????? ???
196
- QtImageViewer ������ �巡���Ͽ� ������ ������ �ؽ�Ʈ�� ����
197
- �ؽ�Ʈ ���� �� Ȯ�� ��ư Ŭ�� �� ����� �ؽ�Ʈ�� QtImageViewer�� Scene�� �ݿ��Ǿ� ǥ��
198 198

  
199 199
3) AreaZoomCommand.py
200
- QtImageViewer ?????? ??????? ?????? ?????? ???
200
- QtImageViewer ������ �巡���Ͽ� ������ ������ Ȯ��
201 201

  
202 202
4) ConnectionPointCommand.py
203
- ??? ????/???? ?? Connection Point?? ??????? ???? Command
204
- ???? ??? ?? Crosshair ???
205
- Connection Point?? ?????? ???? drawCircle() ?? ??? static ???? ????
203
- �ɺ� ����/���� �� Connection Point�� �����ϱ� ���� Command
204
- ���콺 �̵� �� Crosshair ǥ��
205
- Connection Point�� ǥ���ϱ� ���� drawCircle() �� ��� static ���� ����
206 206

  
207 207
5) CreateSymbolCommand.py
208
- QtImageViewer ?????? ??????? ?????? ?????? ???????? QSymbolEditorDialog ?? ??????? ????? ????? ??????? ???? Command
209
- ???? MainWindow ???? ????? ??????? ???, ?????? ?????? ??? ????
208
- QtImageViewer ������ �巡���Ͽ� ������ ������ �������� QSymbolEditorDialog �� ������� ���ο� �ɺ��� �����ϱ� ���� Command
209
- ���� MainWindow ���� �޴��� ������� �ʾ�, ������ ������ �ʰ� ����
210 210

  
211 211
6) CropCommand.py
212
- QtImageViewer ?????? ??????? ?????? ?????? ???? ???? Command
212
- QtImageViewer ������ �巡���Ͽ� ������ ������ �߶󳻱� ���� Command
213 213

  
214 214
7) DefaultCommand.py
215
- MainWindow ???? ?????? QtImageViewer?? ??? ????? ??????? ???? Command
215
- MainWindow ���� ����ϴ� QtImageViewer�� �д� ����� �����ϱ� ���� Command
216 216

  
217 217
8) EraserCommand.py
218
- ?????? ????? ?????? ????? ???(255, 255, 255) ????? ???
219
- ??? ??? ???? ??? SpinBox ?? ?????? ??? ???? ??????? ?????? ?????? ??? ????
218
- ������ �ȼ��� �ش��ϴ� �κ��� ���(255, 255, 255) �ȼ��� ��ü
219
- �ش� ��ư ���� �ִ� SpinBox �� ������ ũ�⿡ ���� ������� ��ü�Ǵ� ������ ũ�Ⱑ ����
220 220

  
221 221
9) FitImageCommand.py
222
- ???? ???? ??? ???? ?? ???? ????? ??? ??????(0, 0, 0) ????? ??????? ???? ???? Command
222
- ���� ���� �ɺ� ���� �� ���� �ܰ��� �ִ� ������(0, 0, 0) �ȼ��� ������ŭ �߶󳻱� ���� Command
223 223

  
224 224
10) FlipImageCommand.py
225
- ???????? ???? ??????? ???? ??? ????? ????????? ???? Command
225
- �������� ���� �̹����� ���� �Ǵ� ���η� ������Ű�� ���� Command
226 226

  
227 227
11) HandCommand.py
228
- QtImageViewer ???? ??? ????? ??????? ???? Command
228
- QtImageViewer ���� �д� ����� �����ϱ� ���� Command
229 229

  
230 230
12) OriginalPointCommand.py
231
- ??? ????/???? ?? Original Point?? ??????? ???? Command
232
- ????, ??? ?? Crosshair ???
233
- Original Point?? ?????? ???? drawCircle() ?? ??????? ???? removeCircle() ?? ??? static ???? ????
234
- Original Point?? 1???? ???? ????
231
- �ɺ� ����/���� �� Original Point�� �����ϱ� ���� Command
232
- ���콺, �̵� �� Crosshair ǥ��
233
- Original Point�� ǥ���ϱ� ���� drawCircle() �� �����ϱ� ���� removeCircle() �� ��� static ���� ����
234
- Original Point�� 1���� ���� ����
235 235

  
236 236
13) PenCommand.py
237
- ?????? ????? ?????? ????? ??????(0, 0, 0) ????? ???
238
- ??? ??? ???? ??? SpinBox ?? ?????? ??? ???? ?????????? ?????? ?????? ??? ????
237
- ������ �ȼ��� �ش��ϴ� �κ��� ������(0, 0, 0) �ȼ��� ��ü
238
- �ش� ��ư ���� �ִ� SpinBox �� ������ ũ�⿡ ���� ���������� ��ü�Ǵ� ������ ũ�Ⱑ ����
239 239

  
240 240
14) RemoveTextCommand.py
241
- ??? ????/???? ?? ????? ?? ??? Command
242
- ????? ???? ?????? ???(255, 255, 255) ????? ???
241
- �ɺ� ����/���� �� ����� �� �ִ� Command
242
- ����� �ؽ�Ʈ ������ ���(255, 255, 255) �ȼ��� ��ü
243 243

  
244 244
15) RotateImageCommand.py
245
- ???????? ???? ??????? ??? ??? ???? ???????? ???????? ???? Command
245
- �������� ���� �̹����� �ð� �Ǵ� �ݽð� �������� ȸ����Ű�� ���� Command
246 246

  
247 247
16) ZoomCommand.py
248
- QtImageViewer ???? ?????? ????? ???????? ???? ??????? ??? ??? ?????? ???? Command
248
- QtImageViewer ���� ������ �κ��� �������� ���� ������ŭ Ȯ�� �Ǵ� ����ϱ� ���� Command
DTI_PID/DTI_PID/ResultPropertyTableWidget.py
1
# coding: utf-8
2

  
3
try:
4
    from PyQt5.QtCore import *
5
    from PyQt5.QtGui import *
6
    from PyQt5.QtWidgets import *
7
except ImportError:
8
    try:
9
        from PyQt4.QtCore import *
10
        from PyQt4.QtGui import *
11
    except ImportError:
12
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
13

  
14
import os
15
import sys
16
import math
17
from SymbolSvgItem import SymbolSvgItem
18
from QEngineeringLineNoTextItem import QEngineeringLineNoTextItem
19
from QEngineeringLineItem import QEngineeringLineItem
20
from QEngineeringNoteItem import QEngineeringNoteItem
21
from AppDocData import AppDocData
22
from Drawing import Drawing
23
from enum import Enum
24

  
25
'''
26
    @brief      ItemType
27
    @author     Jeongwoo
28
    @date       2018.04.27
29
    @history    2018.05.10  Jeongwoo    Add LINE_NO
30
'''
31
class ItemType(Enum):
32
    SYMBOL = 1
33
    NOTE = 2
34
    LINE_NO = 3
35

  
36
class QResultPropertyTableWidget(QTableWidget):
37
    def __init__(self):
38
        QTableWidget.__init__(self)
39
        self.symData = None
40
        self.initResultPropertyTableWidget()
41

  
42
    '''
43
        @brief  show item's property
44
        @author humkyung
45
        @date   2018.07.03
46
    '''
47
    def showItemProperty(self, item):
48
        if type(item) is QEngineeringLineItem:
49
            self.initTitleCell(item)
50
            self.setItem(0, 1, QTableWidgetItem(item.lineType))
51

  
52
            pt = item.startPoint()
53
            self.setItem(1, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
54
            pt = item.endPoint()
55
            self.setItem(2, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
56

  
57
            self.setItem(3, 1, QTableWidgetItem('{}'.format('None' if item.conns[0] is None else item.conns[0])))
58
            self.setItem(4, 1, QTableWidgetItem('{}'.format('None' if item.conns[1] is None else item.conns[1])))
59
        elif issubclass(type(item), SymbolSvgItem):
60
            self.onSymbolClicked(item)
61
        elif type(item) is QEngineeringLineNoTextItem:
62
            self.onLineNoClicked(item)
63
        elif type(item) is QEngineeringNoteItem:
64
            self.onNoteClicked(item)
65

  
66
    '''
67
        @brief      Initialize TableWidget
68
        @author     Jeongwoo
69
        @date       18.04.13
70
        @history    humkyung 2018.07.08 show column header
71
    '''
72
    def initResultPropertyTableWidget(self):
73
        self.setColumnCount(2)
74
        self.setHorizontalHeaderLabels(['Name', 'Value'])
75
        self.horizontalHeaderItem(0).setSizeHint(QSize(30, 30))
76
        self.setRowCount(13)
77
        self.verticalHeader().hide()
78
        self.horizontalHeader().setStretchLastSection(True)
79
        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
80
        
81
    '''
82
        @brief      Slot to accept item click event
83
        @author     Jeongwoo
84
        @date       18.04.13
85
        @history    humkyung 2018.04.17 check if given symbol type is SymbolSvgItem
86
    '''
87
    @pyqtSlot(SymbolSvgItem)
88
    def onSymbolClicked(self, symbol):
89
        if issubclass(type(symbol), SymbolSvgItem):
90
            self.symData = symbol
91
            self.symbolChanged(symbol)
92

  
93
    '''
94
        @brief      show drawing' attributes
95
        @author     humkyung 
96
        @date       2018.07.07
97
    '''
98
    @pyqtSlot(Drawing)
99
    def onDrawingClicked(self, drawing):
100
        self.setRowCount(len(drawing.attrs))
101

  
102
        row = 0
103
        for attr in drawing.attrs:
104
            name = attr[0]
105
            item = QTableWidgetItem(name)
106
            item.setFlags(Qt.ItemIsEnabled)
107
            item.setBackground(QColor(220, 220, 220))
108
            self.setItem(row, 0, item)
109

  
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff