개정판 d60b3b6e
- 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