프로젝트

일반

사용자정보

개정판 90edbe1a

ID90edbe1a65957a72b1e71e9d2e2cb194d50e3980
상위 489e87d1
하위 78e767b9, 9168f672

함의성이(가) 약 5년 전에 추가함

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

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