개정판 90edbe1a
issue #663: add to scene moved
Change-Id: I7b1cb8a8745e4320d080e668cbe44b1913fde55c
DTI_PID/DTI_PID/RecognitionDialog.py | ||
---|---|---|
78 | 78 |
updateProgress = pyqtSignal(int, str) |
79 | 79 |
updateBatchProgress = pyqtSignal(int, int) |
80 | 80 |
displayLog = pyqtSignal(MessageType, str) |
81 |
add_detected_items_to_scene = pyqtSignal(QGraphicsScene) |
|
81 | 82 |
|
82 | 83 |
def __init__(self): |
83 | 84 |
super(Worker, self).__init__() |
... | ... | |
200 | 201 |
sys.exc_info()[-1].tb_lineno) |
201 | 202 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
202 | 203 |
|
203 |
def add_detected_items_to_scene(self, scene) -> None: |
|
204 |
"""add detected items to scene""" |
|
205 |
from SaveWorkCommand import SaveWorkCommand |
|
206 |
|
|
207 |
app_doc_data = AppDocData.instance() |
|
208 |
|
|
209 |
try: |
|
210 |
for symbol in app_doc_data.symbols: |
|
211 |
if issubclass(type(symbol), SymbolSvgItem): |
|
212 |
symbol.addSvgItemToScene(scene) |
|
213 |
else: |
|
214 |
scene.addItem(symbol) |
|
215 |
|
|
216 |
for text in app_doc_data.texts: |
|
217 |
text.addTextItemToScene(scene) |
|
218 |
|
|
219 |
for lineNo in app_doc_data.tracerLineNos: |
|
220 |
lineNo.addTextItemToScene(scene) |
|
221 |
|
|
222 |
# remove lines which is located inside symbol |
|
223 |
for symbol in app_doc_data.symbols: |
|
224 |
rect = symbol.sceneBoundingRect() |
|
225 |
rect.adjust(-10, -10, 10, 10) |
|
226 |
matches = [line for line in app_doc_data.lines if rect.contains(line.line().p1()) and |
|
227 |
rect.contains(line.line().p2()) and |
|
228 |
not line.has_connection] |
|
229 |
app_doc_data.lines = [line for line in app_doc_data.lines if line not in matches] |
|
230 |
# up to here |
|
231 |
|
|
232 |
for line in app_doc_data.lines: |
|
233 |
scene.addItem(line) |
|
234 |
# line.transfer.onRemoved.connect(self.itemRemoved) |
|
235 |
for conn in line.connectors: |
|
236 |
conn.transfer.onPosChanged.connect(line.onConnectorPosChaned) |
|
237 |
|
|
238 |
for unknown in app_doc_data.unknowns + app_doc_data.lineIndicators: |
|
239 |
scene.addItem(unknown) |
|
240 |
|
|
241 |
# save scene |
|
242 |
SaveWorkCommand.save_to_database() |
|
243 |
SaveWorkCommand.save_to_xml() |
|
244 |
except Exception as ex: |
|
245 |
message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, |
|
246 |
sys.exc_info()[-1].tb_lineno) |
|
247 |
self.displayLog.emit(MessageType.Error, message) |
|
248 |
|
|
249 | 204 |
def create_detected_items(self, symbolList, textInfoList, otherTextInfoList, titleBlockTextInfoList): |
250 | 205 |
try: |
251 | 206 |
QApplication.processEvents() |
... | ... | |
1190 | 1145 |
# up to here |
1191 | 1146 |
|
1192 | 1147 |
# remove line has not connected item |
1193 |
""" |
|
1194 | 1148 |
try: |
1195 | 1149 |
count = 1 |
1196 | 1150 |
while count > 0: |
... | ... | |
1209 | 1163 |
-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
1210 | 1164 |
worker.displayLog.emit(MessageType.Error, message) |
1211 | 1165 |
# up to here |
1212 |
""" |
|
1213 | 1166 |
|
1214 | 1167 |
worker.create_unknown_items(mainRes) |
1215 |
worker.add_detected_items_to_scene(worker.scene) |
|
1168 |
worker.add_detected_items_to_scene.emit(worker.scene) |
|
1169 |
while not worker.scene._end: |
|
1170 |
pass |
|
1216 | 1171 |
|
1172 |
worker.scene._end = False |
|
1217 | 1173 |
# clear drawing |
1218 | 1174 |
app_doc_data.activeDrawing.image = None |
1219 | 1175 |
|
... | ... | |
2413 | 2369 |
self.obj.path = self.path |
2414 | 2370 |
self.obj.listWidget = self.ui.listWidget |
2415 | 2371 |
self.obj.scene = self._scene |
2372 |
self.obj.scene._end = False # for waiting each drawing finished |
|
2416 | 2373 |
self.obj.isSymbolChecked = self.ui.checkBoxSymbol.isChecked() |
2417 | 2374 |
self.obj.isTextChecked = self.ui.checkBoxText.isChecked() |
2418 | 2375 |
self.obj.isLineChecked = self.ui.lineCheckBox.isChecked() |
... | ... | |
2432 | 2389 |
self.obj.updateBatchProgress.connect(self.updateBatchProgress) |
2433 | 2390 |
self.obj.displayLog.connect(App.mainWnd().addMessage) |
2434 | 2391 |
self.obj.displayTitle.connect(self.displayTitle) |
2392 |
self.obj.add_detected_items_to_scene.connect(self.add_detected_items_to_scene) |
|
2435 | 2393 |
|
2436 | 2394 |
# 4 - Connect Thread started signal to Worker operational slot method |
2437 | 2395 |
self.thread.started.connect(self.obj.procCounter) |
... | ... | |
2510 | 2468 |
self.parent.drawUnknownItems(path) |
2511 | 2469 |
finally: |
2512 | 2470 |
loop.quit() |
2471 |
|
|
2472 |
def add_detected_items_to_scene(self, scene) -> None: |
|
2473 |
"""add detected items to scene""" |
|
2474 |
from SaveWorkCommand import SaveWorkCommand |
|
2475 |
|
|
2476 |
app_doc_data = AppDocData.instance() |
|
2477 |
|
|
2478 |
try: |
|
2479 |
for symbol in app_doc_data.symbols: |
|
2480 |
if issubclass(type(symbol), SymbolSvgItem): |
|
2481 |
symbol.addSvgItemToScene(scene) |
|
2482 |
else: |
|
2483 |
scene.addItem(symbol) |
|
2484 |
|
|
2485 |
for text in app_doc_data.texts: |
|
2486 |
text.addTextItemToScene(scene) |
|
2487 |
|
|
2488 |
for lineNo in app_doc_data.tracerLineNos: |
|
2489 |
lineNo.addTextItemToScene(scene) |
|
2490 |
|
|
2491 |
# remove lines which is located inside symbol |
|
2492 |
for symbol in app_doc_data.symbols: |
|
2493 |
rect = symbol.sceneBoundingRect() |
|
2494 |
rect.adjust(-10, -10, 10, 10) |
|
2495 |
matches = [line for line in app_doc_data.lines if rect.contains(line.line().p1()) and |
|
2496 |
rect.contains(line.line().p2()) and |
|
2497 |
not line.has_connection] |
|
2498 |
app_doc_data.lines = [line for line in app_doc_data.lines if line not in matches] |
|
2499 |
# up to here |
|
2500 |
|
|
2501 |
for line in app_doc_data.lines: |
|
2502 |
scene.addItem(line) |
|
2503 |
# line.transfer.onRemoved.connect(self.itemRemoved) |
|
2504 |
for conn in line.connectors: |
|
2505 |
conn.transfer.onPosChanged.connect(line.onConnectorPosChaned) |
|
2506 |
|
|
2507 |
for unknown in app_doc_data.unknowns + app_doc_data.lineIndicators: |
|
2508 |
scene.addItem(unknown) |
|
2509 |
|
|
2510 |
# save scene |
|
2511 |
SaveWorkCommand.save_to_database() |
|
2512 |
SaveWorkCommand.save_to_xml() |
|
2513 |
except Exception as ex: |
|
2514 |
message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, |
|
2515 |
sys.exc_info()[-1].tb_lineno) |
|
2516 |
self.displayLog.emit(MessageType.Error, message) |
|
2517 |
finally: |
|
2518 |
scene._end = True |
내보내기 Unified diff