개정판 e16fab8a
issue #538: 7(end break) on going and save bug also
Change-Id: Ic30afbcf7bbee1467a983507ac06175de31d5122
DTI_PID/DTI_PID/ItemPropertyTableWidget.py | ||
---|---|---|
457 | 457 |
owner_item.setData(Qt.UserRole, attr) |
458 | 458 |
self.setItem(5, 1, owner_item) |
459 | 459 |
|
460 |
if type(self._item) is not QEngineeringSpecBreakItem and type(self._item) is not QEngineeringErrorItem:
|
|
460 |
if type(self._item) is not QEngineeringSpecBreakItem and type(self._item) is not QEngineeringErrorItem: |
|
461 | 461 |
self.show_item_properties(self._item) |
462 | 462 |
|
463 | 463 |
if type(self._item) is QEngineeringSpecBreakItem: |
DTI_PID/DTI_PID/ItemTreeWidget.py | ||
---|---|---|
26 | 26 |
from QEngineeringTrimLineNoTextItem import QEngineeringTrimLineNoTextItem |
27 | 27 |
from EngineeringUnknownItem import QEngineeringUnknownItem |
28 | 28 |
from EngineeringErrorItem import QEngineeringErrorItem |
29 |
from EngineeringEndBreakItem import QEngineeringEndBreakItem |
|
29 | 30 |
from AppDocData import AppDocData |
30 | 31 |
from Drawing import Drawing |
31 | 32 |
|
... | ... | |
484 | 485 |
lastSceneItems = None |
485 | 486 |
def sceneChanged(self, sceneItems): |
486 | 487 |
try: |
487 |
changedSceneItems = [item for item in sceneItems if ((issubclass(type(item), SymbolSvgItem) and type(item) is not QEngineeringErrorItem) or (type(item) is QEngineeringNoteItem) or (type(item) is QEngineeringLineNoTextItem) |
|
488 |
changedSceneItems = [item for item in sceneItems if ((issubclass(type(item), SymbolSvgItem) and type(item) is not QEngineeringErrorItem and type(item) is not QEngineeringEndBreakItem) or (type(item) is QEngineeringNoteItem) or (type(item) is QEngineeringLineNoTextItem)
|
|
488 | 489 |
or (type(item) is QEngineeringUnknownItem)) and (not hasattr(item, 'treeItem') or item.treeItem is None)] # Sublist includes SymbolSvgItem |
489 | 490 |
first = [item for item in changedSceneItems if item.owner is None] |
490 | 491 |
second = [item for item in changedSceneItems if item.owner is not None] |
DTI_PID/DTI_PID/LineNoTracer.py | ||
---|---|---|
463 | 463 |
and type(symbol) is not QEngineeringOPCItem and type(symbol) is not QEngineeringSpecBreakItem] |
464 | 464 |
for valve in valves: |
465 | 465 |
valve.connectAttribute(labels, clear=False) |
466 |
|
|
467 |
"""make line end break""" |
|
468 |
end_breaks = [] |
|
469 |
for lineNo in lineNos: |
|
470 |
for end_break in lineNo.end_break(): |
|
471 |
end_breaks.append(end_break) |
|
472 |
if end_breaks: |
|
473 |
dupl = set() |
|
474 |
for i in range(len(end_breaks)): |
|
475 |
for j in range(len(end_breaks)): |
|
476 |
if i == j: |
|
477 |
continue |
|
478 |
else: |
|
479 |
setI = set(end_breaks[i].connected_lines) |
|
480 |
setJ = set(end_breaks[j].connected_lines) |
|
481 |
if not (setI - setJ): |
|
482 |
index = [i, j] |
|
483 |
index.sort() |
|
484 |
index = tuple(index) |
|
485 |
dupl.add(index) |
|
486 |
|
|
487 |
dupl = [indexSet[1] for indexSet in list(dupl)] |
|
488 |
dupl.sort(reverse=True) |
|
489 |
for index in dupl: |
|
490 |
end_breaks.pop(index) |
|
491 |
|
|
492 |
for end_break in end_breaks: |
|
493 |
worker.graphicsView.scene.addItem(end_break) |
|
494 |
|
|
466 | 495 |
except Exception as ex: |
467 | 496 |
from App import App |
468 | 497 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
DTI_PID/DTI_PID/Shapes/EngineeringEndBreakItem.py | ||
---|---|---|
1 |
# coding: utf-8 |
|
2 |
""" |
|
3 |
This is Engineering Error Item module |
|
4 |
""" |
|
5 |
|
|
6 |
import sys |
|
7 |
import os |
|
8 |
import math |
|
9 |
from PyQt5.QtGui import * |
|
10 |
from PyQt5.QtCore import * |
|
11 |
from PyQt5.QtSvg import * |
|
12 |
from PyQt5.QtWidgets import * |
|
13 |
|
|
14 |
from SymbolSvgItem import SymbolSvgItem |
|
15 |
from EngineeringLineItem import QEngineeringLineItem |
|
16 |
from EngineeringConnectorItem import QEngineeringConnectorItem |
|
17 |
from EngineeringTextItem import QEngineeringTextItem |
|
18 |
from UserInputAttribute import UserInputAttribute |
|
19 |
|
|
20 |
class QEngineeringEndBreakItem(SymbolSvgItem): |
|
21 |
""" |
|
22 |
This is Engineering Error Item class |
|
23 |
""" |
|
24 |
clicked = pyqtSignal(QGraphicsSvgItem) |
|
25 |
|
|
26 |
''' |
|
27 |
''' |
|
28 |
ZVALUE = 20 |
|
29 |
def __init__(self, path, uid=None, flip=0): |
|
30 |
SymbolSvgItem.__init__(self, path, uid, flip=flip) |
|
31 |
self.setZValue(QEngineeringEndBreakItem.ZVALUE) |
|
32 |
self.connected_lines = [] |
|
33 |
|
|
34 |
def setPosition(self, loc, origin): |
|
35 |
transform = QTransform() |
|
36 |
transform.translate(loc[0] - origin[0], loc[1] - origin[1]) |
|
37 |
self.origin = origin |
|
38 |
self.loc = loc |
|
39 |
self.setTransform(transform) |
|
40 |
|
|
41 |
def keyPressEvent(self, event): |
|
42 |
if self.isSelected() and event.key() == Qt.Key_Delete: |
|
43 |
self.scene().removeItem(self) |
|
44 |
|
|
45 |
def toXml(self): |
|
46 |
# on going |
|
47 |
return None |
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py | ||
---|---|---|
884 | 884 |
@author euisung |
885 | 885 |
@date 2019.04.01 |
886 | 886 |
''' |
887 |
from EngineeringErrorItem import QEngineeringErrorItem |
|
888 | 887 |
from SymbolSvgItem import SymbolSvgItem |
889 | 888 |
from AppDocData import AppDocData |
890 | 889 |
errors = [] |
DTI_PID/DTI_PID/Shapes/EngineeringLineNoTextItem.py | ||
---|---|---|
340 | 340 |
|
341 | 341 |
return node |
342 | 342 |
|
343 |
def end_break(self): |
|
344 |
''' |
|
345 |
@brief end break check |
|
346 |
@author euisung |
|
347 |
@date 2019.05.07 |
|
348 |
''' |
|
349 |
from EngineeringLineItem import QEngineeringLineItem |
|
350 |
from SymbolSvgItem import SymbolSvgItem |
|
351 |
from AppDocData import AppDocData |
|
352 |
end_breaks = [] |
|
353 |
|
|
354 |
try: |
|
355 |
docdata = AppDocData.instance() |
|
356 |
dataPath = docdata.getErrorItemSvgPath() |
|
357 |
origin = [int(pt) for pt in docdata.getAppConfigs('app', 'error origin point')[0].value.split(',')] |
|
358 |
|
|
359 |
line_from = self.get_property('From') |
|
360 |
line_to = self.get_property('To') |
|
361 |
|
|
362 |
if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem: |
|
363 |
end_break = SymbolSvgItem.createItem('End Break', dataPath) |
|
364 |
end_break.setPosition(line_from.connectors[0].center(), origin) |
|
365 |
end_break.parent = self |
|
366 |
end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid] |
|
367 |
end_break.setToolTip(str(end_break.connected_lines)) |
|
368 |
end_break.area = 'Drawing' |
|
369 |
end_break.name = 'End Break' |
|
370 |
end_breaks.append(end_break) |
|
371 |
|
|
372 |
if type(line_to) is QEngineeringLineItem and line_to.connectors[1].connectedItem is not None and type(line_to.connectors[1].connectedItem) is QEngineeringLineItem: |
|
373 |
end_break = SymbolSvgItem.createItem('End Break', dataPath) |
|
374 |
end_break.setPosition(line_to.connectors[1].center(), origin) |
|
375 |
end_break.parent = self |
|
376 |
end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid] |
|
377 |
end_break.setToolTip(str(end_break.connected_lines)) |
|
378 |
end_break.area = 'Drawing' |
|
379 |
end_break.name = 'End Break' |
|
380 |
end_breaks.append(end_break) |
|
381 |
|
|
382 |
except Exception as ex: |
|
383 |
from App import App |
|
384 |
from AppDocData import MessageType |
|
385 |
|
|
386 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
|
387 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
|
388 |
|
|
389 |
return end_breaks |
|
390 |
|
|
343 | 391 |
''' |
344 | 392 |
@Override (QEngineeringTextItem) |
345 | 393 |
@brief get connected items |
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py | ||
---|---|---|
989 | 989 |
from EngineeringSpecBreakItem import QEngineeringSpecBreakItem |
990 | 990 |
from EngineeringReducerItem import QEngineeringReducerItem |
991 | 991 |
from EngineeringErrorItem import QEngineeringErrorItem |
992 |
from EngineeringEndBreakItem import QEngineeringEndBreakItem |
|
992 | 993 |
from AppDocData import AppDocData |
993 | 994 |
|
994 | 995 |
docData = AppDocData.instance() |
... | ... | |
1009 | 1010 |
item = QEngineeringReducerItem(path, uid, flip=flip) |
1010 | 1011 |
elif type == 'Error': |
1011 | 1012 |
item = QEngineeringErrorItem(path, uid, flip=flip) |
1013 |
elif type == 'End Break': |
|
1014 |
item = QEngineeringEndBreakItem(path, uid, flip=flip) |
|
1012 | 1015 |
else: |
1013 | 1016 |
item = SymbolSvgItem(path, uid, flip=flip) |
1014 | 1017 |
|
DTI_PID/DTI_PID/XmlGenerator.py | ||
---|---|---|
408 | 408 |
resultDic[key] = [0, []] |
409 | 409 |
|
410 | 410 |
node = None |
411 |
if type(item) is QEngineeringNoteItem: |
|
412 |
node = item.toXml(name = 'NOTE') |
|
413 |
elif type(item) is QEngineeringSizeTextItem: |
|
414 |
node = item.toXml(name='SIZE') |
|
415 |
elif type(item) is QEngineeringValveOperCodeTextItem: |
|
416 |
node = item.toXml(name='VALVE OPER CODE') |
|
417 |
elif issubclass(type(item), QEngineeringAbstractItem) and type(item) is not QGraphicsBoundingBoxItem: |
|
418 |
node = item.toXml() |
|
419 |
else: |
|
411 |
try: |
|
412 |
if type(item) is QEngineeringNoteItem: |
|
413 |
node = item.toXml(name = 'NOTE') |
|
414 |
elif type(item) is QEngineeringSizeTextItem: |
|
415 |
node = item.toXml(name='SIZE') |
|
416 |
elif type(item) is QEngineeringValveOperCodeTextItem: |
|
417 |
node = item.toXml(name='VALVE OPER CODE') |
|
418 |
elif issubclass(type(item), QEngineeringAbstractItem) and type(item) is not QGraphicsBoundingBoxItem: |
|
419 |
node = item.toXml() |
|
420 |
else: |
|
421 |
continue |
|
422 |
except Exception as ex: |
|
423 |
from App import App |
|
424 |
from AppDocData import MessageType |
|
425 |
|
|
426 |
message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
|
427 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
|
428 |
finally: |
|
420 | 429 |
continue |
421 | 430 |
|
422 | 431 |
if node: |
내보내기 Unified diff