프로젝트

일반

사용자정보

개정판 e724edb2

IDe724edb2ee34a0bde10bb5f90a3e2cfa482592c3
상위 847103bb
하위 6bf3272f

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

issue #000: add freeze function to end break item

Change-Id: I2768cd8c5f0e1716f305a6ef9e58d29b09a59b19

차이점 보기:

DTI_PID/DTI_PID/Commands/SelectAttributeCommand.py
86 86

  
87 87
                        self._item.owner = item
88 88
                        self.onSuccess.emit()
89
                    elif item is not None and (type(self._item) is QEngineeringEndBreakItem or issubclass(type(self._item), QEngineeringTextItem)) and (type(item) is QEngineeringLineItem) and self._attr.AttributeType == 'OWNER':
89
                    elif item is not None and (type(self._item) is QEngineeringEndBreakItem or issubclass(type(self._item), QEngineeringTextItem)) and (type(item) is QEngineeringLineItem or issubclass(type(item), SymbolSvgItem)) and self._attr.AttributeType == 'OWNER':
90 90
                        self._item.owner = item
91 91
                        self.onSuccess.emit()
92 92
                    #elif item is not None and (type(self._item) is QEngineeringEndBreakItem) and (type(item) is QEngineeringLineItem) and self._attr.Attribute == 'Connected Line':
DTI_PID/DTI_PID/LineNoTracer.py
26 26
    '''
27 27
        @history    2018.04.26 Jeongwoo Variable name changed (texts → lineNos)
28 28
    '''
29
    def __init__(self, symbols, lines, lineNos, specBreak, lineIndicator, vendor):
29
    def __init__(self, symbols, lines, lineNos, specBreaks, lineIndicators, vendors, end_breaks):
30 30
        try:
31 31
            self._symbols = symbols
32 32
            self._lines = lines
33 33
            self._lineNos = lineNos
34
            self._spec_breaks = specBreak
35
            self._lineIndicator = lineIndicator
34
            self._spec_breaks = specBreaks
35
            self._lineIndicator = lineIndicators
36
            self._end_breaks = end_breaks
36 37
            
37 38
            """
38 39
            for spec in self._specBreak:
......
351 352
            while len(pool) > 0:
352 353
                sign, obj = pool.pop()
353 354
                
354
                """ check obj is upstream or downstream of spec break """
355
                matches = [spec_break for spec_break in self._spec_breaks if spec_break.is_connected(obj)]
356
                if matches or issubclass(type(obj), QEngineeringEquipmentItem):
355
                #""" check obj is upstream or downstream of spec break """
356
                #matches = [spec_break for spec_break in self._spec_breaks if spec_break.is_connected(obj)]
357
                #if matches or issubclass(type(obj), QEngineeringEquipmentItem):
358
                #    visited.pop(visited.index(obj))
359
                #    continue
360
                #print('obj={} pool={}'.format(obj, pool))
361

  
362
                match = False
363
                for end_break in self._end_breaks: 
364
                    if obj is end_break.owner or obj is end_break.prop('Connected Item'):
365
                        match = True
366
                        break
367

  
368
                if issubclass(type(obj), QEngineeringEquipmentItem):
357 369
                    visited.pop(visited.index(obj))
370
                    continue    
371
                elif match:
358 372
                    continue
359
                #print('obj={} pool={}'.format(obj, pool))
373

  
360 374
                """ end loop if obj is to """
361 375
                if to is not None and str(obj.uid) == str(to.uid): break
362 376

  
......
450 464
        specBreak = []
451 465
        lineIndicator = []
452 466
        vendor_packages = [item for item in worker.graphicsView.scene.items() if type(item) is QEngineeringVendorItem]
453
        end_breaks = [item for item in worker.graphicsView.scene.items() if type(item) is QEngineeringEndBreakItem]
454
        for end_break in end_breaks:
455
            worker.graphicsView.scene.removeItem(end_break)
467
        end_breaks = []
468
        for end_break in [item for item in worker.graphicsView.scene.items() if type(item) is QEngineeringEndBreakItem]:
469
            #worker.graphicsView.scene.removeItem(end_break)
470
            if not end_break.prop('Freeze'):
471
                end_break.transfer.onRemoved.emit(end_break)
472
            else:
473
                end_breaks.append(end_break)
456 474

  
457 475
        configs = docdata.getConfigs('Supplied by Tag Rule', 'by Vendor')
458 476
        vendorTag = configs[0].value if configs else 'By Vendor'
......
491 509
                    pass
492 510

  
493 511
        # trace line no
494
        tracer = LineNoTracer(symbols, lines, lineNos, specBreak, lineIndicator, vendor_packages)
512
        tracer = LineNoTracer(symbols, lines, lineNos, specBreak, lineIndicator, vendor_packages, end_breaks)
495 513
        tracer.execute(worker.displayMessage, worker.updateProgress)
496 514
        # up to here
497 515

  
DTI_PID/DTI_PID/Shapes/EngineeringEndBreakItem.py
22 22

  
23 23
    '''
24 24
    '''
25
    ZVALUE = 20
25
    ZVALUE = 8
26 26
    def __init__(self, path, uid=None, flip=0):
27 27
        from SymbolAttr import SymbolProp
28
        from EngineeringFreezeItem import QEngineeringFreezeItem
28 29

  
29 30
        SymbolSvgItem.__init__(self, path, uid, flip=flip)
30 31
        self.setZValue(QEngineeringEndBreakItem.ZVALUE)
......
36 37

  
37 38
        self._properties = \
38 39
            {\
39
                SymbolProp(None, 'Connected Item', 'Comp Item'):None
40
                SymbolProp(None, 'Connected Item', 'Comp Item'):None, SymbolProp(None, 'Freeze', 'Boolean'):False
40 41
            }
41 42

  
43
        """ create freeze control """
44
        self.freeze_item = QEngineeringFreezeItem(-QEngineeringFreezeItem.FREEZE_SIZE*0.5, -QEngineeringFreezeItem.FREEZE_SIZE*0.5, QEngineeringFreezeItem.FREEZE_SIZE, QEngineeringFreezeItem.FREEZE_SIZE)
45
        self.freeze_item.setParentItem(self)
46
        self.freeze_item.setZValue(self.zValue() + 1)
47
        self.freeze_item.setPen(Qt.black)
48

  
49

  
42 50
    '''
43 51
    def setPosition(self, loc, origin):
44 52
        transform = QTransform()
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
1099 1099
                if currentPointModeIndex is not None:
1100 1100
                    item.currentPointModeIndex = int(currentPointModeIndex.text)
1101 1101

  
1102
                if type(item) is QEngineeringEndBreakItem:
1103
                    item.freeze_item.update_freeze(item.prop('Freeze'))
1102 1104
                #if type(item) is QEngineeringSpecBreakItem:
1103 1105
                #    item.connectors[0].setPos((item.connectors[0].connectPoint[0], item.connectors[0].connectPoint[1]))
1104 1106
        except Exception as ex:

내보내기 Unified diff

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