개정판 e65b0bf8
fixed some bugs
DTI_PID/DTI_PID/AppDocData.py | ||
---|---|---|
190 | 190 |
|
191 | 191 |
from App import App |
192 | 192 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
193 |
App.mainWnd().addMessage(MessageType.Error, message) |
|
193 |
App.mainWnd().addMessage.emit(MessageType.Error, message)
|
|
194 | 194 |
finally: |
195 | 195 |
conn.close() |
196 | 196 |
|
DTI_PID/DTI_PID/ItemPropertyTableWidget.py | ||
---|---|---|
67 | 67 |
from App import App |
68 | 68 |
|
69 | 69 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
70 |
App.mainWnd().addMessage(MessageType.Error, message) |
|
70 |
App.mainWnd().addMessage.emit(MessageType.Error, message)
|
|
71 | 71 |
|
72 | 72 |
''' |
73 | 73 |
@brief Initialize TableWidget |
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
44 | 44 |
from TextItemFactory import TextItemFactory |
45 | 45 |
|
46 | 46 |
class MainWindow(QMainWindow, MainWindow_UI.Ui_MainWindow, SingletonInstane): |
47 |
addMessage = pyqtSignal(Enum, str) |
|
48 |
|
|
47 | 49 |
''' |
48 | 50 |
@brief initialize |
49 | 51 |
@author |
... | ... | |
157 | 159 |
self.actionInitialize.triggered.connect(self.initializeScene) |
158 | 160 |
self.resultPropertyTableWidget.cellDoubleClicked.connect(self.cellDoubleClickedEvent) |
159 | 161 |
self.actionSave.triggered.connect(self.saveToXml) |
162 |
self.addMessage.connect(self.onAddMessage) |
|
160 | 163 |
|
161 | 164 |
''' |
162 | 165 |
@brief save items to xml |
... | ... | |
232 | 235 |
@author humkyung |
233 | 236 |
@date 2018.07.31 |
234 | 237 |
''' |
235 |
def addMessage(self, messageType, message):
|
|
238 |
def onAddMessage(self, messageType, message):
|
|
236 | 239 |
from AppDocData import MessageType |
237 | 240 |
|
238 | 241 |
try: |
... | ... | |
414 | 417 |
width = textInfo.getW() |
415 | 418 |
height = textInfo.getH() |
416 | 419 |
item = TextItemFactory.instance().createTextItem(text, delimiter, lineNoconfigs) |
417 |
item.loc = (x, y) |
|
418 |
item.size = (width, height) |
|
419 |
item.angle = angle |
|
420 |
item.setPlainText(text) |
|
421 |
item.setDefaultTextColor(Qt.blue) |
|
422 |
item.addTextItemToScene(self.imageViewer.scene) |
|
420 |
if item is not None: |
|
421 |
item.loc = (x, y) |
|
422 |
item.size = (width, height) |
|
423 |
item.angle = angle |
|
424 |
item.setPlainText(text) |
|
425 |
item.setDefaultTextColor(Qt.blue) |
|
426 |
item.addTextItemToScene(self.graphicsView.scene) |
|
427 |
else: |
|
428 |
message = 'error occured({}) in {}:{}'.format('텍스트 생성에 실패했습니다.', sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
|
429 |
self.addMessage.emit(MessageType.Normal, message) |
|
423 | 430 |
else: |
424 | 431 |
QMessageBox.about(self.graphicsView, "알림", "텍스트 검출 실패") |
425 | 432 |
except Exception as ex: |
426 | 433 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
427 |
self.addMessage(MessageType.Error, message) |
|
434 |
self.addMessage.emit(MessageType.Error, message)
|
|
428 | 435 |
|
429 | 436 |
''' |
430 | 437 |
@brief area configuration |
... | ... | |
553 | 560 |
if os.path.isfile(path): self.loadRecognitionResultFromXml(path) |
554 | 561 |
except Exception as ex: |
555 | 562 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
556 |
self.addMessage(MessageType.Error, message) |
|
563 |
self.addMessage.emit(MessageType.Error, message)
|
|
557 | 564 |
|
558 | 565 |
return self.path |
559 | 566 |
|
... | ... | |
754 | 761 |
'''DO NOTHING''' |
755 | 762 |
except Exception as ex: |
756 | 763 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
757 |
self.addMessage(MessageType.Error, message) |
|
764 |
self.addMessage.emit(MessageType.Error, message)
|
|
758 | 765 |
|
759 | 766 |
''' |
760 | 767 |
@brief |
... | ... | |
801 | 808 |
# up to here |
802 | 809 |
except Exception as ex: |
803 | 810 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
804 |
self.addMessage(MessageType.Error, message) |
|
811 |
self.addMessage.emit(MessageType.Error, message)
|
|
805 | 812 |
|
806 | 813 |
''' |
807 | 814 |
@history 2018.05.25 Jeongwoo Moved from MainWindow |
... | ... | |
875 | 882 |
# up to here |
876 | 883 |
except Exception as ex: |
877 | 884 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
878 |
self.addMessage(MessageType.Error, message) |
|
885 |
self.addMessage.emit(MessageType.Error, message)
|
|
879 | 886 |
|
880 | 887 |
''' |
881 | 888 |
@history 2018.06.08 Jeongwoo Add parameter on round method |
... | ... | |
918 | 925 |
self.addTextItemToScene(item) |
919 | 926 |
except Exception as ex: |
920 | 927 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
921 |
self.addMessage(MessageType.Error, message) |
|
928 |
self.addMessage.emit(MessageType.Error, message)
|
|
922 | 929 |
|
923 | 930 |
def drawDetectedNoteItem(self, noteTextInfoList): |
924 | 931 |
from TextItemFactory import TextItemFactory |
... | ... | |
940 | 947 |
self.addTextItemToScene(item) |
941 | 948 |
except Exception as ex: |
942 | 949 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
943 |
self.addMessage(MessageType.Error, message) |
|
950 |
self.addMessage.emit(MessageType.Error, message)
|
|
944 | 951 |
|
945 | 952 |
''' |
946 | 953 |
@brief draw unknown items |
... | ... | |
994 | 1001 |
cv2.imwrite(notFilePath, imgNot) |
995 | 1002 |
else: |
996 | 1003 |
message = 'can\'t found {}'.format(diffFilePath) |
997 |
self.addMessage(MessageType.Normal, message) |
|
1004 |
self.addMessage.emit(MessageType.Normal, message)
|
|
998 | 1005 |
except Exception as ex: |
999 | 1006 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
1000 |
self.addMessage(MessageType.Error, message) |
|
1007 |
self.addMessage.emit(MessageType.Error, message)
|
|
1001 | 1008 |
|
1002 | 1009 |
''' |
1003 | 1010 |
@brief load recognition result |
... | ... | |
1155 | 1162 |
self.graphicsView.scene.update(self.graphicsView.sceneRect()) |
1156 | 1163 |
except Exception as ex: |
1157 | 1164 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
1158 |
self.addMessage(MessageType.Error, message) |
|
1165 |
self.addMessage.emit(MessageType.Error, message)
|
|
1159 | 1166 |
|
1160 | 1167 |
''' |
1161 | 1168 |
@brief Remove added item on same place and Add GraphicsItem |
... | ... | |
1238 | 1245 |
unknownItem.addUnknownItemToScene(self.graphicsView.scene) |
1239 | 1246 |
except Exception as ex: |
1240 | 1247 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
1241 |
self.addMessage(MessageType.Error, message) |
|
1248 |
self.addMessage.emit(MessageType.Error, message)
|
|
1242 | 1249 |
|
1243 | 1250 |
''' |
1244 | 1251 |
@brief generate output xml file |
... | ... | |
1274 | 1281 |
cv2.imwrite(os.path.join(project.getTempPath() , 'OUTPUT.png') , docData.imgOutput) |
1275 | 1282 |
except Exception as ex: |
1276 | 1283 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
1277 |
self.addMessage(MessageType.Error, message) |
|
1284 |
self.addMessage.emit(MessageType.Error, message)
|
|
1278 | 1285 |
|
1279 | 1286 |
if __name__ == '__main__': |
1280 | 1287 |
''' |
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py | ||
---|---|---|
486 | 486 |
from App import App |
487 | 487 |
|
488 | 488 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
489 |
App.mainWnd().addMessage(MessageType.Error, message) |
|
489 |
App.mainWnd().addMessage.emit(MessageType.Error, message)
|
|
490 | 490 |
|
491 | 491 |
return res |
492 | 492 |
|
DTI_PID/DTI_PID/Shapes/EngineeringUnknownItem.py | ||
---|---|---|
114 | 114 |
App.mainWnd().onAreaSelected(round(rect.left()), round(rect.top()), round(rect.width()), round(rect.height())) |
115 | 115 |
except Exception as ex: |
116 | 116 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
117 |
App.mainWnd().addMessage(MessageType.Error, message) |
|
117 |
App.mainWnd().addMessage.emit(MessageType.Error, message)
|
|
118 | 118 |
|
119 | 119 |
''' |
120 | 120 |
@brief show text recognition dialog |
... | ... | |
133 | 133 |
App.mainWnd().onRecognizeText(round(rect.left()), round(rect.top()), round(rect.width()), round(rect.height())) |
134 | 134 |
except Exception as ex: |
135 | 135 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
136 |
App.mainWnd().addMessage(MessageType.Error, message) |
|
136 |
App.mainWnd().addMessage.emit(MessageType.Error, message)
|
|
137 | 137 |
|
138 | 138 |
''' |
139 | 139 |
@brief parse xml for item |
DTI_PID/DTI_PID/TextItemFactory.py | ||
---|---|---|
28 | 28 |
humkyung 2018.05.02 create engineering size text item if condition matches |
29 | 29 |
humkyung 2018.06.19 set line no's color |
30 | 30 |
kyouho 2018.07.04 edit for isLineNo method (add parameter) |
31 |
humkyung 2018.08.08 fill linePropertyData and tagSeqNoPattern if given data is None |
|
31 | 32 |
''' |
32 | 33 |
def createTextItem(self, text, delimiter = '', lineNoConfig = '', linePropertyData = None, tagSeqNoPattern = None): |
33 | 34 |
import random |
... | ... | |
39 | 40 |
configs = docData.getConfigs('Size', 'Delimiter') |
40 | 41 |
sizeDelimiter = configs[0].value.upper() if 1 == len(configs) else None |
41 | 42 |
|
43 |
if linePropertyData is None: |
|
44 |
linePropertyData = {} |
|
45 |
linePropertyData['NominalDiameter'] = docData.getNomialPipeSizeData(True) |
|
46 |
linePropertyData['FluidCode'] = docData.getCodeTable('FluidCode', True) |
|
47 |
linePropertyData['UnitNumber'] = docData.getCodeTable('UnitNumber', True) |
|
48 |
linePropertyData['PnIDNumber'] = docData.getCodeTable('PnIDNumber', True) |
|
49 |
linePropertyData['PipingMaterialsClass'] = docData.getCodeTable('PipingMaterialsClass', True) |
|
50 |
linePropertyData['InsulationPurpose'] = docData.getCodeTable('InsulationPurpose', True) |
|
51 |
|
|
52 |
if tagSeqNoPattern is None: |
|
53 |
configs = docData.getConfigs('Line No Tag Rule', 'Tag Seq No') |
|
54 |
tagSeqNoPattern = configs[0].value if 1 == len(configs) else None |
|
55 |
|
|
42 | 56 |
result = (False,) |
43 | 57 |
if (delimiter != '' and lineNoConfig != ''): |
44 | 58 |
result = self.isLineNo(text, delimiter, lineNoConfig, linePropertyData, tagSeqNoPattern) |
... | ... | |
99 | 113 |
item = QEngineeringTextItem() |
100 | 114 |
item.setToolTip(text) |
101 | 115 |
except Exception as ex: |
102 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
|
116 |
from App import App |
|
117 |
|
|
118 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
|
119 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
|
103 | 120 |
|
104 | 121 |
return item |
105 | 122 |
|
... | ... | |
138 | 155 |
else: |
139 | 156 |
loopList = linePropertyData[propertyName.replace(' ','').replace('&','n')] |
140 | 157 |
|
141 |
|
|
142 | 158 |
if isTable: |
143 | 159 |
find = False |
144 | 160 |
for loop in loopList: |
내보내기 Unified diff