개정판 e724edb2
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