프로젝트

일반

사용자정보

개정판 5a4d5665

ID5a4d5665f006363b39a7f8e233538c6980261243
상위 6e19ae2f
하위 2cb06620, 399940fe

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

issue #567: Line No를 Freeze시킬 수 있다

Change-Id: I0cc1f6cfd751a48d3d0b884df445acbc2c2bedde

차이점 보기:

DTI_PID/DTI_PID/Commands/DefaultCommand.py
214 214
            # string to ElementTree
215 215
            et = fromstring(xmlStr)
216 216
            item = SymbolSvgItem.fromXml(et)
217
            self.symbol = item[0]
217
            self.symbol = item
218 218
            for connector in self.symbol.connectors:
219 219
                connector.connectedItem = None
220 220
            # uid 새로 할당
DTI_PID/DTI_PID/ItemPropertyTableWidget.py
69 69
            if type(item) is QEngineeringLineItem:
70 70
                self.initTitleCell(item)
71 71
                self.setItem(0, 1, QTableWidgetItem(str(item.uid)))
72
                owner_item = QTableWidgetItem('{}'.format('None' if item.owner is None else item.owner.uid))
72
                owner_item = QTableWidgetItem('{}'.format('None' if item.owner is None else str(item.owner)))
73 73
                icon = QtGui.QIcon()
74 74
                icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
75 75
                owner_item.setIcon(icon)
......
333 333
                else:
334 334
                    if prop.AttributeType == 'Boolean':
335 335
                        self.freeze_state_cell = QCheckBox()
336
                        self.freeze_state_cell.setChecked(True if value and value == True else False)
336
                        self.freeze_state_cell.setChecked(True if value and str(value) == 'True' else False)
337 337
                        self.freeze_state_cell.stateChanged.connect(self.freeze_state_changed)
338 338
                        self.setCellWidget(row, 1, self.freeze_state_cell)
339 339
                    else:
......
424 424
            attr.AttrAt = count
425 425
            connector_item.setData(Qt.UserRole, attr)
426 426

  
427
            connector_item = QTableWidgetItem('{}'.format('None' if connector.connectedItem is None else str(connector.connectedItem.uid)))
427
            connector_item = QTableWidgetItem('{}'.format('None' if connector.connectedItem is None else str(connector.connectedItem)))
428 428
            icon = QtGui.QIcon()
429 429
            icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
430 430
            connector_item.setIcon(icon)
......
455 455
                self.setItem(2, 1, QTableWidgetItem(self._item.type))
456 456
                self.setItem(3, 1, QTableWidgetItem(str(round(math.degrees(self._item.angle)))))
457 457
                self.setItem(4, 1, QTableWidgetItem(str(self._item.origin)))
458
                owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else self._item.owner.uid))
458
                owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else str(self._item.owner)))
459 459
                icon = QtGui.QIcon()
460 460
                icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
461 461
                owner_item.setIcon(icon)
......
709 709
            if cell:
710 710
                data = cell.data(Qt.UserRole)
711 711
                if data is not None:
712
                    if self._item: self._item.properties[data] = self.freeze_state_cell.isChecked()
712
                    if self._item: self._item.set_property(data.Attribute, self.freeze_state_cell.isChecked())
713 713

  
714 714
    '''
715 715
        @brief      int cell check
......
722 722
            if cell is not None:
723 723
                data = cell.data(Qt.UserRole)
724 724
                if data is not None and not data.is_selectable:
725
                    if self._item: self._item.properties[data] = self.item(row, column).text()
725
                    if self._item: self._item.set_property(data.Attribute, self.item(row, column).text())
726 726
        except Exception as ex:
727 727
            from App import App
728 728
            from AppDocData import MessageType
DTI_PID/DTI_PID/ItemTreeWidget.py
147 147
                    pickColorAction.triggered.connect(lambda : self.pickColorClickEvent(item))
148 148
                    menu.addAction(pickColorAction)
149 149
                    explode_action = QAction(self.tr("Explode"))
150
                    freeze = data.get_property('Freeze')
151
                    explode_action.setEnabled(not freeze)
150 152
                    explode_action.triggered.connect(lambda : self.explode_line_no(item))
151 153
                    menu.addAction(explode_action)
152 154
                    reverse_flow_action = QAction(self.tr("Reverse Flow"))
......
159 161
                    lineTypeAction = QAction(self.tr("Select Line Type"))
160 162
                    lineTypeAction.triggered.connect(lambda : self.lineTypeClickEvent(item))
161 163
                    menu.addAction(lineTypeAction)
164
                    line_no = item.parent().data(0, self.TREE_DATA_ROLE)
165
                    freeze = line_no.get_property('Freeze')
166
                    explode_action.setEnabled(not freeze)
162 167
                    explode_action = QAction(self.tr("Explode"))
163 168
                    explode_action.triggered.connect(lambda : self.explode_line_run(item))
164 169
                    menu.addAction(explode_action)
......
205 210

  
206 211
    def explode_all_line_nos(self, tree_widget_item):
207 212
        """ explode all line nos """
213
        from EngineeringLineNoTextItem import QEngineeringLineNoTextItem
208 214

  
209 215
        try:
210 216
            for i in reversed(range(self.LineNoTreeItem.childCount())):
211 217
                self.explode_line_no(self.LineNoTreeItem.child(i))
212 218
        finally:
213
            for item in [item for item in self.scene.items() if hasattr(item, '_owner')]:
214
                item.owner = None
219
            for item in [item for item in self.scene.items() if hasattr(item, '_owner') and item.owner is not None]:
220
                if type(item.owner) is QEngineeringLineNoTextItem and 'False' == str(item.owner.get_property('Freeze')):
221
                    item.owner = None
215 222

  
216 223
    def reverse_line_flow(self, lineNoTreeWidgetItem):
217 224
        """ reverse line flow """
......
388 395
                    item.setFont(0, item.font(0))
389 396
                    child.treeItem = item
390 397
                    self.LineNoTreeItem.addChild(item)
398
                    self.LineNoTreeItem.sortChildren(0, Qt.AscendingOrder)  # sort line nos
391 399
                elif type(child) is QEngineeringTrimLineNoTextItem:
392 400
                    item = CustomTreeWidgetItem(['Unknown Line'])
393 401
                    item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
DTI_PID/DTI_PID/LineNoTracer.py
274 274
                maxValue = len(self._lineNos) + 1   ## line no's count + secondary line
275 275

  
276 276
                # find primary lines
277
                # sort line no with from,to value
278
                self._lineNos.sort(key=lambda line_no:(1 if line_no.get_property('From') else 0)+(1 if line_no.get_property('To') else 0),reverse=True)
277 279
                for lineno in self._lineNos:
278 280
                    if displayMessage: displayMessage.emit('{} {}'.format(lineno.text(), 'Topology Construction'))
279 281
                    self.find_primary_lines(lineno)
DTI_PID/DTI_PID/MainWindow.py
1641 1641
                            self.itemTreeWidget.addTreeItem(item, connectedItem)
1642 1642
                # up to here
1643 1643

  
1644
                self.graphicsView.scene.update(self.graphicsView.sceneRect())
1644
                self.graphicsView.invalidateScene()
1645 1645
        except Exception as ex:
1646 1646
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
1647 1647
            self.addMessage.emit(MessageType.Error, message)
......
1710 1710
                    conn.transfer.onPosChanged.connect(line.onConnectorPosChaned)
1711 1711

  
1712 1712
            for unknown in appDocData.unknowns + appDocData.lineIndicators:
1713
                self.addUnknownItemToScene(unknown)
1713
                self.graphicsView.scene.addItem(unknown)
1714 1714
        finally:
1715 1715
            # update scene
1716 1716
            self.graphicsView.scene.update(self.graphicsView.sceneRect())
......
2304 2304
            """ parsing all symbols """
2305 2305
            for symbol in root.find('SYMBOLS').iter('SYMBOL'):
2306 2306
                item = SymbolSvgItem.fromXml(symbol)
2307
                if item[0] is not None:
2308
                    item[0].transfer.onRemoved.connect(self.itemRemoved)
2307
                if item is not None:
2308
                    item.transfer.onRemoved.connect(self.itemRemoved)
2309 2309
                    symbols.append(item)                    
2310 2310
                else:
2311 2311
                    pt = [float(x) for x in symbol.find('LOCATION').text.split(',')]
......
2321 2321
                
2322 2322
            QApplication.processEvents()
2323 2323

  
2324
            # set symbol's owner
2325
            # childItems = [item for item in symbols if item[1] is not None]
2326
            # for item in childItems:
2327
            #     matches = [param for param in symbols if str(param[0].uid) == str(item[1])]
2328
            #     if len(matches) == 1:
2329
            #         item[0].owner = matches[0][0]
2330
            # up to here
2331
           
2332
            """ add item to scene and tree widget """
2333
            for item in symbols:
2334
                self.addSvgItemToScene(item[0])
2335
                docData.symbols.append(item[0])
2336
                self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, item[0])
2337

  
2338 2324
            # parse texts
2339 2325
            for text in root.find('TEXTINFOS').iter('ATTRIBUTE'):
2340 2326
                item = QEngineeringTextItem.fromXml(text)
......
2388 2374
                item.transfer.onRemoved.connect(self.itemRemoved)
2389 2375
                if item is not None:
2390 2376
                    item.transfer.onRemoved.connect(self.itemRemoved)
2391
                    self.addUnknownItemToScene(item)
2377
                    self.graphicsView.scene.addItem(item)
2392 2378

  
2393 2379
                self.progress.setValue(self.progress.value() + 1)
2394 2380
                
2395 2381
            QApplication.processEvents()
2396 2382

  
2383
            """ add symbol to scene and tree widget """
2384
            for item in symbols:
2385
                self.addSvgItemToScene(item)
2386
                docData.symbols.append(item)
2387
                self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, item)
2388

  
2397 2389
            for line_no_node in root.find('LINENOS').iter('LINE_NO'):
2398 2390
                line_no = QEngineeringLineNoTextItem.fromXml(line_no_node)
2399
                if line_no is not None:
2400
                    line_no.transfer.onRemoved.connect(self.itemRemoved)
2401
                    self.addTextItemToScene(line_no)
2402
                    treeItem = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, line_no)
2403

  
2404
                """
2405
                connLine = line_no.find('CONNLINE')
2406
                if connLine is not None:
2407
                    lineUID = connLine.text
2408
                    connLine = self.graphicsView.findItemByUid(lineUID)
2409
                    if connLine is not None:
2410
                        item.conns.append(connLine)
2411
                """
2391
                if line_no is None: continue
2392

  
2393
                line_no.transfer.onRemoved.connect(self.itemRemoved)
2394
                self.addTextItemToScene(line_no)
2395
                line_no_tree_item = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, line_no)
2412 2396

  
2413 2397
                runs_node = line_no_node.findall('RUN')
2414
                if runs_node is not None:
2415
                    for run_node in runs_node:
2416
                        line_run = QEngineeringRunItem()
2417
                        for child_node in run_node:
2418
                            uidElement = child_node.find('UID')
2419
                            if uidElement is not None:
2420
                                uid = uidElement.text
2421
                                run_item = self.graphicsView.findItemByUid(uid)
2422
                                if run_item is not None:
2423
                                    run_item._owner = line_no
2424
                                    line_run.items.append(run_item)
2425
                        line_run.owner = line_no
2426
                        line_no.runs.append(line_run)
2427

  
2428
                        for connectedItem in line_run.items:
2429
                            if issubclass(type(connectedItem), SymbolSvgItem): self.itemTreeWidget.addTreeItem(treeItem, connectedItem)
2430

  
2431
                    docData.tracerLineNos.append(item)
2398
                if runs_node is None: continue
2399

  
2400
                for run_node in runs_node:
2401
                    line_run = QEngineeringRunItem()
2402
                    for child_node in run_node:
2403
                        uidElement = child_node.find('UID')
2404
                        if uidElement is not None:
2405
                            uid = uidElement.text
2406
                            run_item = self.graphicsView.findItemByUid(uid)
2407
                            if run_item is not None:
2408
                                #run_item._owner = line_no
2409
                                line_run.items.append(run_item)
2410
                    line_run.owner = line_no
2411
                    line_no.runs.append(line_run)
2412

  
2413
                    for run_item in line_run.items:
2414
                        if issubclass(type(run_item), SymbolSvgItem): self.itemTreeWidget.addTreeItem(line_no_tree_item, run_item)
2415

  
2416
                docData.tracerLineNos.append(line_no)
2432 2417

  
2433 2418
                self.progress.setValue(self.progress.value() + 1)
2434 2419
            QApplication.processEvents()
2435 2420

  
2436 2421
            for trimLineNo in root.iter('TRIM_LINE_NO'):
2437
                item = QEngineeringTrimLineNoTextItem()
2438
                item.uid = trimLineNo.find('UID')
2422
                line_no = QEngineeringTrimLineNoTextItem()
2423
                line_no.uid = trimLineNo.find('UID')
2439 2424

  
2440 2425
                run = trimLineNo.find('RUN')
2441 2426
                if run is not None:
2442
                    lineRunItem = QEngineeringRunItem()
2427
                    line_run = QEngineeringRunItem()
2443 2428
                    for child in run:
2444 2429
                        uidElement = child.find('UID')
2445 2430
                        if uidElement is not None:
2446 2431
                            uid = uidElement.text
2447
                            runItem = self.graphicsView.findItemByUid(uid)
2448
                            if runItem is not None:
2449
                                runItem.owner = item
2450
                                lineRunItem.items.append(runItem)
2432
                            run_item = self.graphicsView.findItemByUid(uid)
2433
                            if run_item is not None:
2434
                                #runItem.owner = item
2435
                                line_run.items.append(run_item)
2451 2436

  
2452
                    item.runs.append(lineRunItem)
2453
                    treeItem = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, item)
2454
                    for connectedItem in lineRunItem.items:
2455
                        if issubclass(type(connectedItem), SymbolSvgItem): self.itemTreeWidget.addTreeItem(treeItem, connectedItem)
2456
                    docData.tracerLineNos.append(item)
2437
                    line_no.runs.append(line_run)
2438
                    line_no_tree_item = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, line_no)
2439
                    for run_item in line_run.items:
2440
                        if issubclass(type(run_item), SymbolSvgItem): self.itemTreeWidget.addTreeItem(line_no_tree_item, run_item)
2441
                    docData.tracerLineNos.append(line_no)
2457 2442

  
2458 2443
                self.progress.setValue(self.progress.value() + 1)
2459 2444

  
......
2506 2491
        self.graphicsView.scene.addItem(lineItem)
2507 2492

  
2508 2493
    '''
2509
        @brief      Remove added item on same place and Add Unknown Item
2510
        @author     Jeongwoo
2511
        @date       2018.06.14
2512
        @history    2018.06.18  Jeongwoo    Set Z-index
2513
    '''
2514
    def addUnknownItemToScene(self, unknownItem):
2515
        try:
2516
            unknownItem.addUnknownItemToScene(self.graphicsView.scene)
2517
        except Exception as ex:
2518
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
2519
            self.addMessage.emit(MessageType.Error, message)
2520

  
2521
    '''
2522 2494
        @brief      generate output xml file
2523 2495
        @author     humkyung
2524 2496
        @date       2018.04.23
......
2679 2651
    except Exception as ex:
2680 2652
        print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
2681 2653
    finally:
2682
        pass
2654
        pass
DTI_PID/DTI_PID/QtImageViewer.py
63 63
        self.command = None
64 64
        self.scene = QGraphicsScene(self)
65 65
        self.setScene(self.scene)
66
        self.scene.setBackgroundBrush(Qt.gray)
66
        self.scene.setBackgroundBrush(Qt.white)
67 67

  
68 68
        self.scaleFactor = 1.0
69 69
        self.numScheduledScalings = 0
DTI_PID/DTI_PID/Shapes/EngineeringAbstractItem.py
59 59
        @date   2018.05.11
60 60
    '''
61 61
    def getColor(self):
62
        return QEngineeringAbstractItem.HOVER_COLOR if self.hover else (self._owner._color if (self._owner and hasattr(self._owner, '_color')) else self._color)
62
        return QEngineeringAbstractItem.HOVER_COLOR if self.hover else (self.owner._color if (self.owner and hasattr(self.owner, '_color')) else self._color)
63 63

  
64 64
    '''
65 65
        @brief  getter of owner
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py
84 84
        except Exception as ex:
85 85
            print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
86 86

  
87
    def __str__(self):
88
        """ return string represent uuid """
89
        return str(self.uid)
90

  
87 91
    '''
88 92
        @breif  getter owner
89 93
        @author humkyung
DTI_PID/DTI_PID/Shapes/EngineeringLineNoTextItem.py
34 34

  
35 35
        QEngineeringTextItem.__init__(self, uid, parent)
36 36

  
37
        self._properties = {SymbolProp(None, 'From', 'Comp Item'):None, SymbolProp(None, 'To', 'Comp Item'):None, SymbolProp(None, 'Freeze', 'Boolean'):None}
37
        self._properties = {SymbolProp(None, 'From', 'Comp Item'):None, SymbolProp(None, 'To', 'Comp Item'):None, SymbolProp(None, 'Freeze', 'Boolean'):False}
38 38
        self._runs = []
39 39

  
40 40
    @property
......
445 445

  
446 446
    def explode(self):
447 447
        """ explode line no """
448
        try:
449
            for index in reversed(range(len(self.runs))):
450
                self.runs[index].explode()
451
        finally:
452
            self.runs.clear()
453
            self.set_property('From', None)
454
            self.set_property('To', None)
448

  
449
        if False == self.get_property('Freeze'):
450
            try:
451
                for index in reversed(range(len(self.runs))):
452
                    self.runs[index].explode()
453
            finally:
454
                self.runs.clear()
455
                self.set_property('From', None)
456
                self.set_property('To', None)
455 457

  
456 458
    '''
457 459
        @brief      save Line Data
DTI_PID/DTI_PID/Shapes/EngineeringRunItem.py
62 62

  
63 63
    def explode(self):
64 64
        """ explode run and subtract it from line no """
65

  
65 66
        try:
66 67
            for item in self.items:
67 68
                item.owner = None
......
167 168
            App.mainWnd().addMessage.emit(MessageType.Error, message)
168 169
            return None
169 170

  
170
        return node
171
        return node
DTI_PID/DTI_PID/Shapes/EngineeringTextItem.py
53 53
        self.transfer = Transfer()
54 54
        self.setZValue(QEngineeringTextItem.ZVALUE)
55 55

  
56
    def __str__(self):
57
        """ return string represent uuid """
58
        return str(self.uid)
59

  
56 60
    '''
57 61
        @brief      Get owner
58 62
        @author     Jeongwoo
......
566 570
            # write owner
567 571
            if self.owner is not None:
568 572
                ownerNode = Element('OWNER')
569
                ownerNode.text = str(self.owner.uid)
573
                ownerNode.text = str(self.owner)
570 574
                node.append(ownerNode)
571 575
            # up to here
572 576
        except Exception as ex:
DTI_PID/DTI_PID/Shapes/EngineeringUnknownItem.py
23 23
from EngineeringAbstractItem import QEngineeringAbstractItem
24 24

  
25 25
class QEngineeringUnknownItem(QEngineeringPolylineItem, QEngineeringAbstractItem):
26
    """
27
    This is unknown item class
28
    """
26
    """ This is unknown item class """
29 27

  
30 28
    HIGHLIGHT = '#BC4438'
31 29
    ZVALUE = 60
......
279 277
        return node 
280 278

  
281 279
    '''
282
        @brief      Add to Scene
283
        @author     Jeongwoo
284
        @date       2018.06.14
285
    '''
286
    def addUnknownItemToScene(self, scene):
287
        self.setZValue(QEngineeringUnknownItem.ZVALUE)
288
        scene.addItem(self)
289

  
290
    '''
291 280
        @brief      Delete from Scene
292 281
        @author     Jeongwoo
293 282
        @date       2018.06.14
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
84 84
        configs = app_doc_data.getConfigs('Symbol Style', 'Opacity')
85 85
        self.setOpacity(float(configs[0].value)/100 if configs else 0.5)
86 86

  
87
    def __str__(self):
88
        """ return string represent uuid """
89
        return str(self.uid)
90

  
87 91
    '''
88 92
        @breif  getter owner
89 93
        @author humkyung
......
575 579
            return False
576 580

  
577 581
    '''
578
        @brief      Remove Attr
579
        @author     kyouho
580
        @date       18.07.17
581
    '''
582
    def removeAttr(self, item):
583
        scene = self.scene()
584
        for symbol in scene.items():
585
            if issubclass(type(symbol), SymbolSvgItem):
586
                for attr in symbol.attrs:
587
                    if attr == item:
588
                        symbol.attrs.remove(item)
589

  
590
    '''
591 582
        @brief  remove item when user press delete key
592 583
        @author humkyung
593 584
        @date   2018.04.23
......
731 722
                    humkyung 2018.09.06 write area to xml
732 723
    '''
733 724
    def toXml(self):
725
        import uuid
734 726
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree
735 727
        from EngineeringAbstractItem import QEngineeringAbstractItem
736 728
        from EngineeringTextItem import QEngineeringTextItem
......
762 754
            # write owner's uid to xml
763 755
            if self.owner is not None:
764 756
                ownerNode = Element('OWNER')
765
                ownerNode.text = str(self.owner.uid)
757
                ownerNode.text = str(self.owner)
766 758
                node.append(ownerNode)
767 759
            # up to here
768 760

  
......
868 860
        from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
869 861
        from EngineeringEndBreakItem import QEngineeringEndBreakItem
870 862
        from SymbolAttr import SymbolAttr
871
        item = [None, None]
863
        item = None
872 864

  
873 865
        try:
874 866
            uidNode = node.find('UID')
......
906 898
            project = appDocData.getCurrentProject()
907 899
            svgFilePath = os.path.join(project.getSvgFilePath(), _type, name + '.svg')
908 900
            if os.path.isfile(svgFilePath):
909
                item[0] = SymbolSvgItem.createItem(_type, svgFilePath, uid, owner=owner, flip=flipLabel)
910
                item[0].setVisible(False)
911
                item[0].buildItem(name, _type, angle, pt, size, origin, connPts, baseSymbol, childSymbol, hasInstrumentLabel)
901
                item = SymbolSvgItem.createItem(_type, svgFilePath, uid, owner=owner, flip=flipLabel)
902
                item.setVisible(False)
903
                item.buildItem(name, _type, angle, pt, size, origin, connPts, baseSymbol, childSymbol, hasInstrumentLabel)
912 904

  
913 905
                for prop_node in node.iter('PROPERTY'):
914
                    matches = [prop for prop in item[0]._properties.keys() if prop.Attribute == prop_node.attrib['Attribute']]
906
                    matches = [prop for prop in item._properties.keys() if prop.Attribute == prop_node.attrib['Attribute']]
915 907
                    if matches:
916 908
                        matches[0].parse_xml(prop_node)
917
                        item[0]._properties[matches[0]] = uuid.UUID(prop_node.text) if prop_node.text and matches[0].is_selectable else prop_node.text if prop_node.text else ''
909
                        item._properties[matches[0]] = uuid.UUID(prop_node.text) if prop_node.text and matches[0].is_selectable else prop_node.text if prop_node.text else ''
918 910

  
919 911
                ## assign area
920 912
                areaNode = node.find('AREA')
921 913
                if areaNode is None:
922 914
                    for area in appDocData.getAreaList():
923 915
                        if area.contains(pt):
924
                            item[0].area = area.name
916
                            item.area = area.name
925 917
                            break
926 918
                else:
927
                    item[0].area = areaNode.text
919
                    item.area = areaNode.text
928 920
                ## up to here
929 921
                
930 922
                connectors = node.find('CONNECTORS')
931 923
                if connectors is not None:
932 924
                    iterIndex = 0
933 925
                    for connector in connectors.iter('CONNECTOR'):
934
                        item[0].connectors[iterIndex].parse_xml(connector)
926
                        item.connectors[iterIndex].parse_xml(connector)
935 927
                        iterIndex += 1
936 928
                
937 929
                # get associations 
......
939 931
                if attributeValue is not None:
940 932
                    for assoc in attributeValue.iter('ASSOCIATION'):
941 933
                        _type = assoc.attrib['TYPE']
942
                        if not _type in item[0]._associations:
943
                            item[0]._associations[_type] = []
944
                        item[0]._associations[_type].append(uuid.UUID(assoc.text))
934
                        if not _type in item._associations:
935
                            item._associations[_type] = []
936
                        item._associations[_type].append(uuid.UUID(assoc.text))
945 937
                # up to here
946 938

  
947 939
                attributes = node.find('SYMBOLATTRIBUTES')
948 940
                if attributes is not None:
949 941
                    for attr in attributes.iter('ATTRIBUTE'):
950 942
                        _attr = SymbolAttr.fromXml(attr)
951
                        if type(item[0]) is not QEngineeringSpecBreakItem and type(item[0]) is not QEngineeringEndBreakItem:
952
                            item[0].attrs[_attr] = attr.text
943
                        if type(item) is not QEngineeringSpecBreakItem and type(item) is not QEngineeringEndBreakItem:
944
                            item.attrs[_attr] = attr.text
953 945
                        else:
954 946
                            if _attr.AttributeType == 'Spec':
955
                                item[0].attrs[_attr] = [attr.text.split(',')[0], attr.text.split(',')[1]]
947
                                item.attrs[_attr] = [attr.text.split(',')[0], attr.text.split(',')[1]]
956 948
                            elif _attr.Attribute == 'UpStream':
957
                                for initKey in item[0].attrs.keys():
949
                                for initKey in item.attrs.keys():
958 950
                                    if initKey.Attribute == 'UpStream':
959
                                        item[0].attrs[initKey] = attr.text
951
                                        item.attrs[initKey] = attr.text
960 952
                            elif _attr.Attribute == 'DownStream':
961
                                for initKey in item[0].attrs.keys():
953
                                for initKey in item.attrs.keys():
962 954
                                    if initKey.Attribute == 'DownStream':
963
                                        item[0].attrs[initKey] = attr.text
955
                                        item.attrs[initKey] = attr.text
964 956
                            elif _attr.Attribute == 'Connected Line':
965
                                for initKey in item[0].attrs.keys():
957
                                for initKey in item.attrs.keys():
966 958
                                    if initKey.Attribute == 'Connected Line':
967
                                        item[0].attrs[initKey] = attr.text
959
                                        item.attrs[initKey] = attr.text
960
                    """
968 961
                    for attr in attributes.iter('USERINPUTATTRIBUTE'):
969 962
                        typeUID = attr.find('TYPEUID').text
970 963
                        typeValue = attr.find('TYPEVALUE').text
971
                        item[0].attrs.append(UserInputAttribute(typeUID, typeValue))
972

  
964
                        item.attrs.append(UserInputAttribute(typeUID, typeValue))
965
                    """
973 966
                currentPointModeIndex = node.find('CURRENTPOINTMODEINDEX')
974 967
                if currentPointModeIndex is not None:
975
                    item[0].currentPointModeIndex = int(currentPointModeIndex.text)
968
                    item.currentPointModeIndex = int(currentPointModeIndex.text)
976 969

  
977
                if type(item[0]) is QEngineeringSpecBreakItem:
978
                    item[0].connectors[0].setPos((item[0].connectors[0].connectPoint[0], item[0].connectors[0].connectPoint[1]))
979

  
980
                item[1] = owner
970
                if type(item) is QEngineeringSpecBreakItem:
971
                    item.connectors[0].setPos((item.connectors[0].connectPoint[0], item.connectors[0].connectPoint[1]))
981 972
        except Exception as ex:
982 973
            from App import App 
983 974
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
......
1048 1039
        self.update()
1049 1040

  
1050 1041
    def getColor(self):
1051
        """
1052
        return hover color if mouse is over otherwise reutrn owner's color if owner exist else this color
1053
        """
1054
        return SymbolSvgItem.HOVER_COLOR if self.hover else (self.owner._color if self._owner and hasattr(self._owner, '_color') else self._color)
1042
        """ return hover color if mouse is over otherwise reutrn owner's color if owner exist else this color """
1043
        return SymbolSvgItem.HOVER_COLOR if self.hover else (self.owner._color if self.owner and hasattr(self.owner, '_color') else self._color)
1055 1044

  
1056 1045
    '''
1057 1046
        @brief  get attributes from svg file
DTI_PID/DTI_PID/TextItemFactory.py
73 73
            if result[0]:
74 74
                item = QEngineeringLineNoTextItem()
75 75
                text = ''.join(result[1])
76
                item.setToolTip('LINE NO={}'.format(text))
76
                item.setToolTip('<b>{}</b><br>LINE NO={}'.format(str(item.uid), text))
77 77
                item.setPlainText(text)
78 78

  
79 79
                # get color option

내보내기 Unified diff

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