프로젝트

일반

사용자정보

개정판 b4415fb6

IDb4415fb6496af70cca2cf21044f9a9ddd793ab03
상위 5c058438
하위 da56ea3b

백흠경이(가) 약 5년 전에 추가함

issue #663: 인식후 심볼 좌표 오류 수정

Change-Id: I3dfcd7decd0ea70cc5b8ff706b5c2795dad80ff4

차이점 보기:

DTI_PID/DTI_PID/ItemPropertyTableWidget.py
39 39
    @date       2018.04.27
40 40
    @history    2018.05.10  Jeongwoo    Add LINE_NO
41 41
'''
42

  
43

  
42 44
class ItemType(Enum):
43 45
    SYMBOL = 1
44 46
    NOTE = 2
45 47
    LINE_NO = 3
46 48

  
49

  
47 50
class QCustomCheckBox(QCheckBox):
48 51
    def __init__(self, table, row, col):
49 52
        QCheckBox.__init__(self)
......
78 81

  
79 82
            item = self.table.item(self.row, 3)
80 83
            if item:
81
                item.setFlags(Qt.ItemIsEnabled) if state else item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsEditable|Qt.ItemIsSelectable)
82
                #item.setBackground(Qt.lightGray) if state else item.setBackground(Qt.white)
84
                item.setFlags(Qt.ItemIsEnabled) if state else item.setFlags(
85
                    Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsSelectable)
86
                # item.setBackground(Qt.lightGray) if state else item.setBackground(Qt.white)
83 87
        elif self.col == 3:
84 88
            cell = self.table.item(self.row, 1)
85 89
            if cell:
......
87 91
                if data is not None:
88 92
                    if self.table._item: self.table._item.set_property(data.Attribute, self.isChecked())
89 93

  
94

  
90 95
class QItemPropertyTableWidget(QTableWidget):
91 96
    def __init__(self, mainWindow):
92 97
        QTableWidget.__init__(self)
......
103 108
        @date   2018.07.03
104 109
        @history    euisung  2019.01.15     add icon image to line item
105 110
    '''
111

  
106 112
    def show_item_property(self, item):
107 113
        try:
108 114
            from PyQt5 import QtGui
......
132 138
        except Exception as ex:
133 139
            from App import App
134 140

  
135
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
141
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
142
                                                           sys.exc_info()[-1].tb_lineno)
136 143
            App.mainWnd().addMessage.emit(MessageType.Error, message)
137 144
        finally:
138 145
            self.blockSignals(False)
......
143 150
        @date       18.04.13
144 151
        @history    humkyung 2018.07.08 show column header
145 152
    '''
153

  
146 154
    def initResultPropertyTableWidget(self):
147 155
        self.setColumnCount(4)
148 156
        self.setHorizontalHeaderLabels(['', self.tr('Name'), '', self.tr('Value')])
......
159 167
        @date       18.04.13
160 168
        @history    humkyung 2018.04.17 check if given symbol type is SymbolSvgItem
161 169
    '''
170

  
162 171
    @pyqtSlot(SymbolSvgItem)
163 172
    def onSymbolClicked(self, symbol):
164 173
        try:
......
176 185
        @author     humkyung 
177 186
        @date       2018.07.07
178 187
    '''
188

  
179 189
    @pyqtSlot(Drawing)
180 190
    def onDrawingClicked(self, drawing):
181 191
        try:
......
187 197
                name = attr[0]
188 198
                item = QTableWidgetItem(name)
189 199
                item.setFlags(Qt.ItemIsEnabled)
190
                #item.setBackground(Qt.lightGray)
200
                # item.setBackground(Qt.lightGray)
191 201
                self.setItem(row, 0, item)
192 202

  
193 203
                value = attr[1]
......
223 233
            self.setItem(0, 3, QTableWidgetItem(str(self._item.uid)))
224 234

  
225 235
            owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else str(self._item.owner)))
226
            owner_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
236
            owner_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
227 237
            self.setItem(1, 3, owner_item)
228 238

  
229 239
            """ show icon item """
......
244 254
        @date       18.04.27
245 255
        @history    humkyung 2018.07.08 change method name to onNoteClicked
246 256
    '''
257

  
247 258
    @pyqtSlot(str, dict)
248 259
    def onNoteClicked(self, noteNoStr, noteContentsList):
249 260
        try:
......
258 269
        @date       18.05.10
259 270
        @hisotry    humkyung 2018.07.08 change method name to onLineNoClicked
260 271
    '''
272

  
261 273
    @pyqtSlot(QEngineeringAbstractItem)
262 274
    def onLineNoClicked(self, item):
263 275
        try:
......
266 278
        finally:
267 279
            self.blockSignals(False)
268 280

  
269
    '''
270
        @brief      Reset table with new SymbolSvgItem
271
        @author     Jeongwoo
272
        @date       18.04.13
273
        @history    .
274
    '''
275 281
    def symbolChanged(self, item):
282
        """fill symbol properties"""
276 283
        self.initTitleCell(item)
277 284
        self.initContentsCell()
278 285

  
......
281 288
        @author     Jeongwoo
282 289
        @date       18.04.27
283 290
    '''
291

  
284 292
    def noteChanged(self, noteNoStr, noteContentsList):
285 293
        self.initNoteCell(noteNoStr, noteContentsList)
286 294

  
......
289 297
        @author     Jeongwoo
290 298
        @date       18.05.10
291 299
    '''
300

  
292 301
    def lineNoChanged(self, item):
293 302
        from EngineeringRunItem import QEngineeringRunItem
294 303

  
......
312 321
                    Jeongwoo 2018.05.10 Add if-statement LINE_NO ItemType
313 322
                    humkyung 2018.08.15 add combobox for line type
314 323
    '''
324

  
315 325
    def initTitleCell(self, item):
316 326
        from LineTypeConditions import LineTypeConditions
317 327

  
......
403 413
                item = self.item(index, 1)
404 414
                if item is not None:
405 415
                    item.setFlags(Qt.ItemIsEnabled)
406
                    #item.setBackground(Qt.lightGray)
416
                    # item.setBackground(Qt.lightGray)
407 417
        except Exception as ex:
408 418
            from App import App
409 419

  
410
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
420
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
421
                                                           sys.exc_info()[-1].tb_lineno)
411 422
            App.mainWnd().addMessage.emit(MessageType.Error, message)
412 423

  
413 424
    '''
......
415 426
        @author humkyung
416 427
        @date   2018.08.15
417 428
    '''
429

  
418 430
    def onLineTypeChanged(self, param):
419 431
        lineType = self._lineTypeComboBox.itemText(param)
420 432
        data = self._lineTypeComboBox.tag.data(Qt.UserRole)
......
440 452
    def changeConnectedLineType(self, line, lineType):
441 453
        line.lineType = lineType
442 454
        if type(line.connectors[0].connectedItem) is QEngineeringLineItem and \
443
                (line.connectors[0].connectedItem.connectors[0].connectedItem is line or line.connectors[0].connectedItem.connectors[1].connectedItem is line) and \
455
                (line.connectors[0].connectedItem.connectors[0].connectedItem is line or
456
                 line.connectors[0].connectedItem.connectors[1].connectedItem is line) and \
444 457
                line.connectors[0].connectedItem.lineType is not lineType:
445 458
            self.changeConnectedLineType(line.connectors[0].connectedItem, lineType)
446 459
        if type(line.connectors[1].connectedItem) is QEngineeringLineItem and \
447
                (line.connectors[1].connectedItem.connectors[0].connectedItem is line or line.connectors[1].connectedItem.connectors[1].connectedItem is line) and \
460
                (line.connectors[1].connectedItem.connectors[0].connectedItem is line or
461
                 line.connectors[1].connectedItem.connectors[1].connectedItem is line) and \
448 462
                line.connectors[1].connectedItem.lineType is not lineType:
449 463
            self.changeConnectedLineType(line.connectors[1].connectedItem, lineType)
450 464

  
......
478 492
        if hasattr(item, '_properties'):
479 493
            self.setRowCount(row + len(item.properties))
480 494

  
481
            for prop,value in item.properties.items():
495
            for prop, value in item.properties.items():
482 496
                try:
483 497
                    """ show freeze state """
484 498
                    checkbox = QCustomCheckBox(self, row, 0)
......
489 503
                    """ show property name """
490 504
                    key_item = QTableWidgetItem(prop.DisplayAttribute if prop.DisplayAttribute else prop.Attribute)
491 505
                    key_item.setFlags(Qt.ItemIsEnabled)
492
                    #key_item.setBackground(Qt.lightGray)
506
                    # key_item.setBackground(Qt.lightGray)
493 507
                    key_item.setData(Qt.UserRole, prop)
494 508
                    self.setItem(row, 1, key_item)
495 509

  
......
499 513
                    """ show property value """
500 514
                    if prop.is_selectable:
501 515
                        value_item = QTableWidgetItem(str(value.uid) if hasattr(value, 'uid') else value)
502
                        value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
516
                        value_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
503 517
                        self.setItem(row, 3, value_item)
504 518
                    else:
505 519
                        if prop.AttributeType == 'Boolean':
506 520
                            self.checkbox_cell = QCustomCheckBox(self, row, 3)
507 521
                            self.checkbox_cell.setChecked(True if value and str(value) == 'True' else False)
508 522
                            self.checkbox_cell.stateChanged.connect(self.checkbox_cell.state_changed)
509
                            #if prop.Attribute == 'Freeze': self.checkbox_cell.stateChanged.connect(item.freeze_item.update_freeze)
523
                            # if prop.Attribute == 'Freeze': self.checkbox_cell.stateChanged.connect(item.freeze_item.update_freeze)
510 524
                            self.setCellWidget(row, 3, self.checkbox_cell)
511 525
                        else:
512 526
                            value_item = QTableWidgetItem(value if value else '')
513
                            value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable)
527
                            value_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable)
514 528
                            self.setItem(row, 3, value_item)
515 529

  
516 530
                    checkbox.state_changed(checkbox.isChecked())
......
519 533
                except Exception as ex:
520 534
                    from App import App
521 535

  
522
                    message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
536
                    message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
537
                                                                   sys.exc_info()[-1].tb_lineno)
523 538
                    App.mainWnd().addMessage.emit(MessageType.Error, message)
524 539

  
525 540
    def show_item_attributes(self, item):
......
533 548
        if attrs is not None:
534 549
            self.setRowCount(row + len(attrs))
535 550

  
536
            for key,value in attrs.items():
551
            for key, value in attrs.items():
537 552
                try:
538 553
                    """ show freeze state """
539 554
                    checkbox = QCustomCheckBox(self, row, 0)
......
543 558

  
544 559
                    """ show property name """
545 560
                    key_item = QTableWidgetItem(key.DisplayAttribute if key.DisplayAttribute else key.Attribute)
546
                    #key_item.setBackground(Qt.lightGray)
561
                    # key_item.setBackground(Qt.lightGray)
547 562
                    key_item.setData(Qt.UserRole, key)
548 563
                    self.setItem(row, 1, key_item)
549 564

  
......
551 566
                    self.show_icon_item(row, 2, key)
552 567

  
553 568
                    value_item = QTableWidgetItem(str(value))
554
                    value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable)
569
                    value_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable)
555 570

  
556 571
                    if type(item) is QEngineeringSpecBreakItem:
557 572
                        if key.Attribute == 'UpStream' or key.Attribute == 'DownStream':
558 573
                            UpDownItem = QTableWidgetItem('{}'.format('None' if value is None else value))
559 574
                            self.setItem(row, 3, UpDownItem)
560
                        else: # elif key.AttributeType == 'Spec':
575
                        else:  # elif key.AttributeType == 'Spec':
561 576
                            self.setItem(row, 3, QTableWidgetItem(str(value)[1:-1]))
562 577
                    else:
563 578
                        self.setItem(row, 3, value_item)
......
566 581

  
567 582
                    row = row + 1
568 583
                except Exception as ex:
569
                        from App import App
584
                    from App import App
570 585

  
571
                        message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
572
                        App.mainWnd().addMessage.emit(MessageType.Error, message)
586
                    message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
587
                                                                   sys.exc_info()[-1].tb_lineno)
588
                    App.mainWnd().addMessage.emit(MessageType.Error, message)
573 589

  
574 590
    def show_item_connectors(self, item):
575 591
        """ show items' connectors on grid """
......
583 599
        for connector in item.connectors:
584 600
            connector_item = QTableWidgetItem('CONN{}'.format(count))
585 601
            connector_item.setFlags(Qt.ItemIsEnabled)
586
            #connector_item.setBackground(Qt.lightGray)
602
            # connector_item.setBackground(Qt.lightGray)
587 603
            self.setItem(row, 1, connector_item)
588 604

  
589 605
            attr = SymbolAttr()
......
594 610
            """ show icon item """
595 611
            self.show_icon_item(row, 2, attr)
596 612

  
597
            connector_item = QTableWidgetItem('{}'.format('None' if connector.connectedItem is None else str(connector.connectedItem)))
598
            connector_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
613
            connector_item = QTableWidgetItem(
614
                '{}'.format('None' if connector.connectedItem is None else str(connector.connectedItem)))
615
            connector_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
599 616
            self.setItem(row, 3, connector_item)
600 617

  
601 618
            row = row + 1
......
609 626
                    humkyung 2018.07.05 display connectivity
610 627
                    euisung  2019.01.15 edit specbreak
611 628
    '''
629

  
612 630
    def initContentsCell(self):
613 631
        from PyQt5 import QtGui
614 632
        from SymbolAttr import SymbolAttr
......
620 638
                self.setItem(0, 3, QTableWidgetItem(str(self._item.uid)))
621 639
                self.setItem(1, 3, QTableWidgetItem(self._item.name))
622 640
                self.setItem(2, 3, QTableWidgetItem(self._item.type))
623
                self.setItem(3, 3, QTableWidgetItem(str(round(math.degrees(self._item.angle)))))
641
                self.setItem(3, 3, QTableWidgetItem(str(round(self._item.rotation()))))
624 642
                self.setItem(4, 3, QTableWidgetItem(str(self._item.origin)))
625
                owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else str(self._item.owner)))
643
                owner_item = QTableWidgetItem(
644
                    '{}'.format('None' if self._item.owner is None else str(self._item.owner)))
626 645
                self.setItem(5, 3, owner_item)
627 646

  
628 647
                for index in range(self.rowCount()):
629 648
                    item = self.item(index, 3)
630 649
                    if item is not None:
631
                        item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
650
                        item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
632 651

  
633 652
                """ show icon item """
634 653
                attr = SymbolAttr()
......
676 695
                self.show_icon_item(1, 2, attr)
677 696
                self.item(1, 1).setData(Qt.UserRole, attr)
678 697

  
679
                owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else str(self._item.owner)))
698
                owner_item = QTableWidgetItem(
699
                    '{}'.format('None' if self._item.owner is None else str(self._item.owner)))
680 700
                self.setItem(1, 3, owner_item)
681 701

  
682 702
                self.show_item_properties(self._item)
......
702 722
        except Exception as ex:
703 723
            from App import App
704 724

  
705
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
725
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
726
                                                           sys.exc_info()[-1].tb_lineno)
706 727
            App.mainWnd().addMessage.emit(MessageType.Error, message)
707 728

  
708 729
    '''
......
710 731
        @author     kyouho
711 732
        @date       2018.08.28
712 733
    '''
734

  
713 735
    def upStreamChanged(self, text):
714 736
        if self._item is not None:
715 737
            find = False
......
727 749
        @author     kyouho
728 750
        @date       2018.08.28
729 751
    '''
752

  
730 753
    def downStreamChanged(self, text):
731 754
        if self._item is not None:
732 755
            find = False
......
744 767
        @author     Jeongwoo
745 768
        @date       18.04.27
746 769
    '''
770

  
747 771
    def initNoteCell(self, noteNoStr, noteContentsList):
748 772
        self.setRowCount(0)
749 773

  
......
761 785
            item = self.item(index, 1)
762 786
            if item is not None:
763 787
                item.setFlags(Qt.ItemIsEnabled)
764
                #item.setBackground(Qt.lightGray)
788
                # item.setBackground(Qt.lightGray)
765 789

  
766 790
    '''
767 791
        @brief      Initialize Line No Contents Cell
......
769 793
        @date       18.05.10
770 794
        @history    humkyung 2018.07.20 display combobox when key is 'Stream No'
771 795
    '''
796

  
772 797
    def initLineNoCell(self, lineNoItem):
773 798
        appDocData = AppDocData.instance()
774 799
        configs = appDocData.getConfigs('Line No', 'Configuration')
775 800
        configs = configs[0].value.split('"-"')
776 801

  
777 802
        item = QTableWidgetItem(str(lineNoItem.uid))
778
        item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
803
        item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
779 804
        self.setItem(0, 3, item)
780 805

  
781 806
        self.show_item_properties(lineNoItem)
......
787 812
            for key in attrs.keys():
788 813
                item = QTableWidgetItem(key.DisplayAttribute if key.DisplayAttribute else key.Attribute)
789 814
                item.setFlags(Qt.ItemIsEnabled)
790
                #item.setBackground(Qt.lightGray)
815
                # item.setBackground(Qt.lightGray)
791 816
                item.setData(Qt.UserRole, key)
792 817
                self.setItem(row, 1, item)
793 818

  
......
811 836
                    # editable value cell
812 837
                    if keyStr[0].AttributeType == 'String':
813 838
                        pass
814
                        #self.attrValueList.append((valueCell, key.Attribute))
815
                        #self.stringCell.append(valueCell)
839
                        # self.attrValueList.append((valueCell, key.Attribute))
840
                        # self.stringCell.append(valueCell)
816 841
                    if keyStr[0].UID in configs: valueCell.setFlags(Qt.ItemIsEnabled)
817 842
                else:
818
                    valueCell.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
843
                    valueCell.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
819 844

  
820 845
                if key.Attribute.upper() == 'STREAM_NO':
821 846
                    self.streamNoComboBox = QComboBox()
......
837 862
        @author humkyung
838 863
        @date   2018.07.20
839 864
    '''
865

  
840 866
    def onStreamNoChanged(self, param):
841 867
        items = self.mainWindow.graphicsView.scene().selectedItems()
842 868
        if items is not None and len(items) == 1:
......
850 876
        @author     humkyung 
851 877
        @date       2018.05.27
852 878
    '''
879

  
853 880
    def initLineRunCell(self, item):
854 881
        self.setRowCount(1)
855 882

  
856 883
        lineTypeItem = QTableWidgetItem(self.tr("Line Type"))
857
        #lineTypeItem.setBackground(Qt.lightGray)
884
        # lineTypeItem.setBackground(Qt.lightGray)
858 885
        lineTypeItem.setFlags(Qt.ItemIsEnabled)
859 886
        self.setItem(0, 1, lineTypeItem)
860 887

  
......
863 890
        @author     kyouho
864 891
        @date       2018.07.19
865 892
    '''
893

  
866 894
    def keyPressEvent(self, event):
867 895
        from SymbolAttr import SymbolAttr
868 896

  
869 897
        if event.key() == Qt.Key_Delete:
870 898
            items = self.mainWindow.graphicsView.scene().selectedItems()
871 899
            selectedIndexes = self.selectedIndexes()
872
            if selectedIndexes and selectedIndexes[0].column() == 3 and self.item(selectedIndexes[0].row(), 1).text() == 'OWNER':
900
            if selectedIndexes and selectedIndexes[0].column() == 3 and self.item(selectedIndexes[0].row(),
901
                                                                                  1).text() == 'OWNER':
873 902
                items[0].owner = None
874 903
                self.show_item_property(items[0])
875
            elif len(items) == 1 and len(selectedIndexes) == 1 and (type(items[0]) is QEngineeringLineItem or issubclass(type(items[0]), SymbolSvgItem) or \
876
                        type(items[0]) is QEngineeringLineNoTextItem or type(items[0]) is QEngineeringVendorItem):
904
            elif len(items) == 1 and len(selectedIndexes) == 1 and (
905
                    type(items[0]) is QEngineeringLineItem or issubclass(type(items[0]), SymbolSvgItem) or \
906
                    type(items[0]) is QEngineeringLineNoTextItem or type(items[0]) is QEngineeringVendorItem):
877 907
                key_cell = self.item(selectedIndexes[0].row(), 1)
878 908
                data = key_cell.data(Qt.UserRole)
879 909
                if selectedIndexes[0].column() == 3 and key_cell.text().find('CONN') is 0:
......
883 913
                    self.show_item_property(items[0])
884 914

  
885 915
                    for sceneItem in self.mainWindow.graphicsView.scene().items():
886
                        if hasattr(sceneItem, 'uid') and str(sceneItem.uid) == selectedUID and hasattr(sceneItem, 'connectors'):
916
                        if hasattr(sceneItem, 'uid') and str(sceneItem.uid) == selectedUID and hasattr(sceneItem,
917
                                                                                                       'connectors'):
887 918
                            for sceneConnector in sceneItem.connectors:
888
                                if sceneConnector.connectedItem is not None and items[0].uid == sceneConnector.connectedItem.uid:
919
                                if sceneConnector.connectedItem is not None and items[
920
                                    0].uid == sceneConnector.connectedItem.uid:
889 921
                                    sceneConnector.connectedItem = None
890 922
                elif selectedIndexes[0].column() == 3 and data and type(data) is SymbolAttr:
891 923
                    assocItem = None
892
                    for _attr,_value in items[0].attrs.items():
924
                    for _attr, _value in items[0].attrs.items():
893 925
                        if str(_attr.UID) == str(data.UID):
894 926
                            assocItem = _attr.AssocItem
895 927
                            items[0].remove_assoc_item(_attr.AssocItem)
......
898 930
                            _attr.AssocItem = None
899 931
                            items[0].attrs[_attr] = ''
900 932
                            break
901
                    for _attr,_value in items[0].attrs.items():
933
                    for _attr, _value in items[0].attrs.items():
902 934
                        if _attr.AssocItem is assocItem:
903 935
                            _attr.AssocItem = None
904 936
                            items[0].attrs[_attr] = ''
905 937
                    self.show_item_property(items[0])
906 938
            elif len(items) == 1 and len(selectedIndexes) == 1 and type(items[0]) is QEngineeringSpecBreakItem:
907 939
                keyCell = self.item(selectedIndexes[0].row(), 1)
908
                if selectedIndexes[0].column() == 3 and (keyCell.text() == 'UpStream' or keyCell.text() == 'DownStream'):
940
                if selectedIndexes[0].column() == 3 and (
941
                        keyCell.text() == 'UpStream' or keyCell.text() == 'DownStream'):
909 942
                    for attr in items[0].attrs.keys():
910 943
                        if attr.Attribute == keyCell.text():
911 944
                            items[0].attrs[attr] = None
......
929 962
        @author     kyouho
930 963
        @date       2018.08.20
931 964
    '''
965

  
932 966
    def cellChangedEvent(self, row, column):
933 967
        from SymbolAttr import SymbolProp
934 968
        from SymbolAttr import SymbolAttr
......
953 987
            from App import App
954 988
            from AppDocData import MessageType
955 989

  
956
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
990
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
991
                                                           sys.exc_info()[-1].tb_lineno)
957 992
            App.mainWnd().addMessage.emit(MessageType.Error, message)
958 993

  
959 994
    '''
......
962 997
        @date       2018.07.19
963 998
        @history    euisung  2019.01.15  edit specbreak
964 999
    '''
1000

  
965 1001
    def cellDoubleClickedEvent(self, row, column):
966 1002
        from SymbolAttr import SymbolProp
967 1003

  
......
985 1021
                cmd = SelectAttributeCommand.SelectAttributeCommand(items[0], attr, self.mainWindow.graphicsView)
986 1022
                cmd.onSuccess.connect(self.onSuccessSelectAttribute)
987 1023
                self.mainWindow.graphicsView.command = cmd
988
            elif keyCell.text() == 'OWNER' and ((type(items[0]) is QEngineeringLineItem) or (issubclass(type(items[0]), SymbolSvgItem)) or (issubclass(type(items[0]), QEngineeringTextItem))):
1024
            elif keyCell.text() == 'OWNER' and (
1025
                    (type(items[0]) is QEngineeringLineItem) or (issubclass(type(items[0]), SymbolSvgItem)) or (
1026
            issubclass(type(items[0]), QEngineeringTextItem))):
989 1027
                attr = keyCell.data(Qt.UserRole)
990 1028
                cmd = SelectAttributeCommand.SelectAttributeCommand(items[0], attr, self.mainWindow.graphicsView)
991 1029
                cmd.onSuccess.connect(self.onSuccessSelectAttribute)
......
1005 1043
                        dialog.exec_()
1006 1044
                        self.show_item_property(items[0])
1007 1045
                    except Exception as ex:
1008
                        print('error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
1046
                        print('error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
1047
                                                                   sys.exc_info()[-1].tb_lineno))
1009 1048
            elif issubclass(type(attr), SymbolProp):
1010 1049
                attr = keyCell.data(Qt.UserRole)
1011 1050
                cmd = SelectAttributeCommand.SelectAttributeCommand(items[0], attr, self.mainWindow.graphicsView)
......
1017 1056
        @author     kyouho
1018 1057
        @date       2018.10.23
1019 1058
    '''
1020
    def onSuccessSelectAttribute(self, connItem = None):
1059

  
1060
    def onSuccessSelectAttribute(self, connItem=None):
1021 1061
        """ update item's properties after selecting """
1022
        self.show_item_property(self._item)
1062
        self.show_item_property(self._item)
DTI_PID/DTI_PID/MainWindow.py
706 706
        self.itemTreeWidget.sceneChanged(self.graphicsView.scene().items())
707 707

  
708 708
    def dbUpdate(self):
709
        '''
710
            @brief      db update when save or recognition
711
            @author     euisung
712
            @date       2018.11.12
713
            @history    2018.11.02      euisung     remove scene dependency
714
        '''
709
        """db update when save or recognition"""
710

  
715 711
        try:
716 712
            appDocData = AppDocData.instance()
717 713
            items = appDocData.allItems
......
2268 2264
            self.addMessage.emit(MessageType.Error, message)
2269 2265

  
2270 2266
    def drawDetectedItemsToScene(self):
2271
        '''
2272
            @brief  add detected items to scene
2273
            @author euisung
2274
            @date   2018.11.26
2275
        '''
2276
        appDocData = AppDocData.instance()
2267
        """add detected items to scene"""
2268
        from SaveWorkCommand import SaveWorkCommand
2269

  
2270
        app_doc_data = AppDocData.instance()
2277 2271

  
2278 2272
        try:
2279
            for symbol in appDocData.symbols:
2273
            for symbol in app_doc_data.symbols:
2280 2274
                if issubclass(type(symbol), SymbolSvgItem):
2281
                    self.addSvgItemToScene(symbol)
2275
                    symbol.addSvgItemToScene(self.graphicsView.scene())
2282 2276
                else:
2283 2277
                    self.graphicsView.scene().addItem(symbol)
2284 2278

  
2285
            for text in appDocData.texts:
2279
            for text in app_doc_data.texts:
2286 2280
                self.addTextItemToScene(text)
2287 2281

  
2288
            for lineNo in appDocData.tracerLineNos:
2282
            for lineNo in app_doc_data.tracerLineNos:
2289 2283
                self.addTextItemToScene(lineNo)
2290 2284

  
2291
            for line in appDocData.lines:
2285
            for line in app_doc_data.lines:
2292 2286
                self.graphicsView.scene().addItem(line)
2293 2287
                line.transfer.onRemoved.connect(self.itemRemoved)
2294 2288
                for conn in line.connectors:
2295 2289
                    conn.transfer.onPosChanged.connect(line.onConnectorPosChaned)
2296 2290

  
2297
            for unknown in appDocData.unknowns + appDocData.lineIndicators:
2291
            for unknown in app_doc_data.unknowns + app_doc_data.lineIndicators:
2298 2292
                self.graphicsView.scene().addItem(unknown)
2293

  
2294
            self.dbUpdate()
2295
            SaveWorkCommand.save_to_xml()
2299 2296
        finally:
2300 2297
            # update scene
2301 2298
            self.graphicsView.scene().update(self.graphicsView.sceneRect())
......
2584 2581
        from QEngineeringFlowArrowItem import QEngineeringFlowArrowItem
2585 2582
        from EngineeringLineItem import QEngineeringLineItem
2586 2583
        from EngineeringUnknownItem import QEngineeringUnknownItem
2587
        from SaveWorkCommand import SaveWorkCommand
2588 2584

  
2589 2585
        try:
2590 2586
            docData = AppDocData.instance()
......
2668 2664
            else:
2669 2665
                message = 'can\'t found {}'.format(diffFilePath)
2670 2666
                self.addMessage.emit(MessageType.Normal, message)
2671

  
2672
            self.dbUpdate()
2673
            SaveWorkCommand.save_to_xml()
2674 2667
        except Exception as ex:
2675 2668
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
2676 2669
                                                           sys.exc_info()[-1].tb_lineno)
......
2892 2885
                    item.transfer.onRemoved.connect(self.itemRemoved)
2893 2886
                    symbols.append(item)
2894 2887
                    app_doc_data.symbols.append(item)
2895
                    self.addSvgItemToScene(item)
2888
                    item.addSvgItemToScene(self.graphicsView.scene())
2896 2889
                else:
2897 2890
                    pt = [float(symbol['X']), float(symbol['Y'])]
2898 2891
                    size = [float(symbol['Width']), float(symbol['Height'])]
......
3399 3392
        @author     Jeongwoo
3400 3393
        @date       2018.05.25
3401 3394
        @history    2018.05.29  Jeongwoo    Moved from QRecognitionDialog
3402
                    2018.06.18  Jeongwoo    Set Z-index
3403
    '''
3404

  
3405
    def addSvgItemToScene(self, svgItem):
3406
        svgItem.addSvgItemToScene(self.graphicsView.scene())
3407

  
3408
    '''
3409
        @brief      Remove added item on same place and Add GraphicsItem
3410
        @author     Jeongwoo
3411
        @date       2018.05.25
3412
        @history    2018.05.29  Jeongwoo    Moved from QRecognitionDialog
3413 3395
                    2018.06.05  Jeongwoo    Remove Size condition
3414 3396
                    2018.06.18  Jeongwoo    Set Z-index
3415 3397
    '''
DTI_PID/DTI_PID/RecognitionDialog.py
667 667
                    # up to here
668 668

  
669 669
                    # remove line has not connected item
670
                    """
670 671
                    try:
671 672
                        count = 1
672 673
                        while count > 0:
......
680 681
                                        for conn in item.connectors:
681 682
                                            if conn.connectedItem is line:
682 683
                                                conn.connectedItem = None
683

  
684 684
                    except Exception as ex:
685 685
                        message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[
686 686
                            -1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
687 687
                        worker.displayLog.emit(MessageType.Error, message)
688 688
                    # up to here
689
                    """
689 690

  
690 691
                createUnknownItems(mainRes)
691 692

  
......
955 956
                    roiw = (roiItemEp[0] - roiItemSp[0])
956 957
                    roih = (roiItemEp[1] - roiItemSp[1])
957 958

  
958
                    # Case : Bigger Symbol than Split ROI
959
                    # Case : symbol is bigger than roi
959 960
                    if roiw < sw or roih < sh:
960
                        symGray = cv2.rotate(symGray, cv2.ROTATE_90_COUNTERCLOCKWISE)
961
                        symbolRotatedAngle = symbolRotatedAngle + 90
961
                        symGray = cv2.rotate(symGray, cv2.ROTATE_90_CLOCKWISE)
962
                        symbolRotatedAngle = (symbolRotatedAngle + 90) % 360
962 963

  
963 964
                        if baseSymbol is not None and additionalSymbol is not None:
964 965
                            additionalSymbol = Worker.getRotatedChildInfo(additionalSymbol)
......
1140 1141
                                                             hasInstrumentLabel=hasInstrumentLabel, text_area=text_area)
1141 1142
                                    threadLock.release()
1142 1143

  
1143
                    # Rotate Symbol
1144
                    symGray = cv2.rotate(symGray, cv2.ROTATE_90_COUNTERCLOCKWISE)
1145
                    symbolRotatedAngle = symbolRotatedAngle + 90
1144
                    # rotate symbol
1145
                    symGray = cv2.rotate(symGray, cv2.ROTATE_90_CLOCKWISE)
1146
                    symbolRotatedAngle = (symbolRotatedAngle + 90) % 360
1146 1147

  
1147 1148
                    if additionalSymbol is not None:
1148 1149
                        additionalSymbol = Worker.getRotatedChildInfo(additionalSymbol)
......
1549 1550
            transform.translate(originImageHeight * 0.5, originImageWidth * 0.5)
1550 1551
        elif angle == 0 or angle == 180:
1551 1552
            transform.translate(originImageWidth * 0.5, originImageHeight * 0.5)
1552
        transform.rotate(-abs(angle))
1553
        transform.rotate(abs(angle))
1553 1554
        transform.translate(-originImageWidth * 0.5, -originImageHeight * 0.5)
1554 1555
        point = QPoint(connPt[1], connPt[2])
1555 1556
        point = transform.map(point)
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
645 645
            self._class = symbolInfo.baseSymbol
646 646
            originalPoint = symbolInfo.getOriginalPoint().split(',')
647 647
            self.symbolOrigin = [float(originalPoint[0]), float(originalPoint[1])]
648
            self.setTransformOriginPoint(QPointF(self.symbolOrigin[0], self.symbolOrigin[1]))
649 648

  
650 649
            # setting connectors
651 650
            connectionPoints = symbolInfo.getConnectionPoint().split('/')
......
1041 1040
            self.changeConnPoint()
1042 1041
        elif event.key() == Qt.Key_Return:
1043 1042
            # disable
1044
            dialog = QRotateSymbolDialog(None, self.angle, self.origin, self.zValue())
1043
            dialog = QRotateSymbolDialog(None, math.radians(self.rotation()), self.origin, self.zValue())
1045 1044
            (isAccept, angle, x, y, z) = dialog.showDialog()
1046 1045

  
1047 1046
            if isAccept:
1048
                self.rotate(math.radians(angle))
1049
                self.scene().undo_stack.push(RotateCommand(self.scene(), [self, ], self.angle))
1047
                _angle = self.rotation()
1048
                self.rotate(angle)
1049
                self.scene().undo_stack.push(RotateCommand(self.scene(), [self, ], _angle))
1050 1050
                self.angle = angle
1051 1051
                """
1052 1052
                self.loc = [x - self.symbolOrigin[0], y - self.symbolOrigin[1]]
......
1235 1235
            # up to here
1236 1236

  
1237 1237
            originNode = Element('ORIGINALPOINT')
1238
            originNode.text = '{},{}'.format(self.origin[0], self.origin[1])
1238
            origin = self.mapToScene(self.transformOriginPoint())
1239
            originNode.text = f"{origin.x()},{origin.y()}"
1239 1240
            node.append(originNode)
1240 1241

  
1241 1242
            connectorsNode = Element('CONNECTORS')
......
1554 1555
                    if matches:
1555 1556
                        item._properties[matches[0]] = matches[0].parse_value(prop_node.text) if prop_node.text else ''
1556 1557

  
1557
                ## assign area
1558
                # assign area
1558 1559
                areaNode = node.find('AREA')
1559 1560
                if areaNode is None:
1560 1561
                    for area in appDocData.getAreaList():
......
1563 1564
                            break
1564 1565
                else:
1565 1566
                    item.area = areaNode.text
1566
                ## up to here
1567
                # up to here
1567 1568

  
1568 1569
                connectors = node.find('CONNECTORS')
1569 1570
                if connectors is not None:
......
1896 1897

  
1897 1898
    def addSvgItemToScene(self, scene, undoable: bool = False) -> None:
1898 1899
        """Add Svg Item into ImageViewer's Scene"""
1899
        self.setTransformOriginPoint(QPointF(self.symbolOrigin[0], self.symbolOrigin[1]))
1900

  
1901 1900
        if self.flip:
1902 1901
            self.flip_symbol()
1903 1902

  
1903
        self.setTransformOriginPoint(QPointF(self.symbolOrigin[0], self.symbolOrigin[1]))
1904

  
1904 1905
        self.moveBy(-self.symbolOrigin[0], -self.symbolOrigin[1])
1905
        self.setRotation(math.degrees(-self.angle))
1906
        self.moveBy(self.loc[0] + self.symbolOrigin[0], self.loc[1] + self.symbolOrigin[1])
1906
        self.setRotation(math.degrees(self.angle))
1907
        self.moveBy(self.origin[0], self.origin[1])
1907 1908

  
1908 1909
        scene.addItem(self)
1909 1910
        self.size[0], self.size[1] = round(self.sceneBoundingRect().width()), round(self.sceneBoundingRect().height())

내보내기 Unified diff

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