eric6/Graphics/UMLGraphicsView.py

changeset 7254
f00d825fbdb3
parent 7229
53054eb5b15a
child 7286
7eb04391adf7
child 7360
9190402e4505
equal deleted inserted replaced
7253:50dbe65a1334 7254:f00d825fbdb3
6 """ 6 """
7 Module implementing a subclass of E5GraphicsView for our diagrams. 7 Module implementing a subclass of E5GraphicsView for our diagrams.
8 """ 8 """
9 9
10 10
11 from PyQt5.QtCore import pyqtSignal, Qt, QSignalMapper, QFileInfo, QEvent, \ 11 from PyQt5.QtCore import (
12 QRectF 12 pyqtSignal, Qt, QSignalMapper, QFileInfo, QEvent, QRectF
13 )
13 from PyQt5.QtWidgets import QGraphicsView, QAction, QToolBar, QDialog 14 from PyQt5.QtWidgets import QGraphicsView, QAction, QToolBar, QDialog
14 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog 15 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
15 16
16 from E5Graphics.E5GraphicsView import E5GraphicsView 17 from E5Graphics.E5GraphicsView import E5GraphicsView
17 18
73 Private method to initialize the view actions. 74 Private method to initialize the view actions.
74 """ 75 """
75 self.alignMapper = QSignalMapper(self) 76 self.alignMapper = QSignalMapper(self)
76 self.alignMapper.mapped[int].connect(self.__alignShapes) 77 self.alignMapper.mapped[int].connect(self.__alignShapes)
77 78
78 self.deleteShapeAct = \ 79 self.deleteShapeAct = QAction(
79 QAction(UI.PixmapCache.getIcon("deleteShape.png"), 80 UI.PixmapCache.getIcon("deleteShape.png"),
80 self.tr("Delete shapes"), self) 81 self.tr("Delete shapes"), self)
81 self.deleteShapeAct.triggered.connect(self.__deleteShape) 82 self.deleteShapeAct.triggered.connect(self.__deleteShape)
82 83
83 self.incWidthAct = \ 84 self.incWidthAct = QAction(
84 QAction(UI.PixmapCache.getIcon("sceneWidthInc.png"), 85 UI.PixmapCache.getIcon("sceneWidthInc.png"),
85 self.tr("Increase width by {0} points").format( 86 self.tr("Increase width by {0} points").format(
86 self.deltaSize), 87 self.deltaSize),
87 self) 88 self)
88 self.incWidthAct.triggered.connect(self.__incWidth) 89 self.incWidthAct.triggered.connect(self.__incWidth)
89 90
90 self.incHeightAct = \ 91 self.incHeightAct = QAction(
91 QAction(UI.PixmapCache.getIcon("sceneHeightInc.png"), 92 UI.PixmapCache.getIcon("sceneHeightInc.png"),
92 self.tr("Increase height by {0} points").format( 93 self.tr("Increase height by {0} points").format(
93 self.deltaSize), 94 self.deltaSize),
94 self) 95 self)
95 self.incHeightAct.triggered.connect(self.__incHeight) 96 self.incHeightAct.triggered.connect(self.__incHeight)
96 97
97 self.decWidthAct = \ 98 self.decWidthAct = QAction(
98 QAction(UI.PixmapCache.getIcon("sceneWidthDec.png"), 99 UI.PixmapCache.getIcon("sceneWidthDec.png"),
99 self.tr("Decrease width by {0} points").format( 100 self.tr("Decrease width by {0} points").format(
100 self.deltaSize), 101 self.deltaSize),
101 self) 102 self)
102 self.decWidthAct.triggered.connect(self.__decWidth) 103 self.decWidthAct.triggered.connect(self.__decWidth)
103 104
104 self.decHeightAct = \ 105 self.decHeightAct = QAction(
105 QAction(UI.PixmapCache.getIcon("sceneHeightDec.png"), 106 UI.PixmapCache.getIcon("sceneHeightDec.png"),
106 self.tr("Decrease height by {0} points").format( 107 self.tr("Decrease height by {0} points").format(
107 self.deltaSize), 108 self.deltaSize),
108 self) 109 self)
109 self.decHeightAct.triggered.connect(self.__decHeight) 110 self.decHeightAct.triggered.connect(self.__decHeight)
110 111
111 self.setSizeAct = \ 112 self.setSizeAct = QAction(
112 QAction(UI.PixmapCache.getIcon("sceneSize.png"), 113 UI.PixmapCache.getIcon("sceneSize.png"),
113 self.tr("Set size"), self) 114 self.tr("Set size"), self)
114 self.setSizeAct.triggered.connect(self.__setSize) 115 self.setSizeAct.triggered.connect(self.__setSize)
115 116
116 self.rescanAct = \ 117 self.rescanAct = QAction(
117 QAction(UI.PixmapCache.getIcon("rescan.png"), 118 UI.PixmapCache.getIcon("rescan.png"),
118 self.tr("Re-Scan"), self) 119 self.tr("Re-Scan"), self)
119 self.rescanAct.triggered.connect(self.__rescan) 120 self.rescanAct.triggered.connect(self.__rescan)
120 121
121 self.relayoutAct = \ 122 self.relayoutAct = QAction(
122 QAction(UI.PixmapCache.getIcon("relayout.png"), 123 UI.PixmapCache.getIcon("relayout.png"),
123 self.tr("Re-Layout"), self) 124 self.tr("Re-Layout"), self)
124 self.relayoutAct.triggered.connect(self.__relayout) 125 self.relayoutAct.triggered.connect(self.__relayout)
125 126
126 self.alignLeftAct = \ 127 self.alignLeftAct = QAction(
127 QAction(UI.PixmapCache.getIcon("shapesAlignLeft.png"), 128 UI.PixmapCache.getIcon("shapesAlignLeft.png"),
128 self.tr("Align Left"), self) 129 self.tr("Align Left"), self)
129 self.alignMapper.setMapping(self.alignLeftAct, Qt.AlignLeft) 130 self.alignMapper.setMapping(self.alignLeftAct, Qt.AlignLeft)
130 self.alignLeftAct.triggered.connect(self.alignMapper.map) 131 self.alignLeftAct.triggered.connect(self.alignMapper.map)
131 132
132 self.alignHCenterAct = \ 133 self.alignHCenterAct = QAction(
133 QAction(UI.PixmapCache.getIcon("shapesAlignHCenter.png"), 134 UI.PixmapCache.getIcon("shapesAlignHCenter.png"),
134 self.tr("Align Center Horizontal"), self) 135 self.tr("Align Center Horizontal"), self)
135 self.alignMapper.setMapping(self.alignHCenterAct, Qt.AlignHCenter) 136 self.alignMapper.setMapping(self.alignHCenterAct, Qt.AlignHCenter)
136 self.alignHCenterAct.triggered.connect(self.alignMapper.map) 137 self.alignHCenterAct.triggered.connect(self.alignMapper.map)
137 138
138 self.alignRightAct = \ 139 self.alignRightAct = QAction(
139 QAction(UI.PixmapCache.getIcon("shapesAlignRight.png"), 140 UI.PixmapCache.getIcon("shapesAlignRight.png"),
140 self.tr("Align Right"), self) 141 self.tr("Align Right"), self)
141 self.alignMapper.setMapping(self.alignRightAct, Qt.AlignRight) 142 self.alignMapper.setMapping(self.alignRightAct, Qt.AlignRight)
142 self.alignRightAct.triggered.connect(self.alignMapper.map) 143 self.alignRightAct.triggered.connect(self.alignMapper.map)
143 144
144 self.alignTopAct = \ 145 self.alignTopAct = QAction(
145 QAction(UI.PixmapCache.getIcon("shapesAlignTop.png"), 146 UI.PixmapCache.getIcon("shapesAlignTop.png"),
146 self.tr("Align Top"), self) 147 self.tr("Align Top"), self)
147 self.alignMapper.setMapping(self.alignTopAct, Qt.AlignTop) 148 self.alignMapper.setMapping(self.alignTopAct, Qt.AlignTop)
148 self.alignTopAct.triggered.connect(self.alignMapper.map) 149 self.alignTopAct.triggered.connect(self.alignMapper.map)
149 150
150 self.alignVCenterAct = \ 151 self.alignVCenterAct = QAction(
151 QAction(UI.PixmapCache.getIcon("shapesAlignVCenter.png"), 152 UI.PixmapCache.getIcon("shapesAlignVCenter.png"),
152 self.tr("Align Center Vertical"), self) 153 self.tr("Align Center Vertical"), self)
153 self.alignMapper.setMapping(self.alignVCenterAct, Qt.AlignVCenter) 154 self.alignMapper.setMapping(self.alignVCenterAct, Qt.AlignVCenter)
154 self.alignVCenterAct.triggered.connect(self.alignMapper.map) 155 self.alignVCenterAct.triggered.connect(self.alignMapper.map)
155 156
156 self.alignBottomAct = \ 157 self.alignBottomAct = QAction(
157 QAction(UI.PixmapCache.getIcon("shapesAlignBottom.png"), 158 UI.PixmapCache.getIcon("shapesAlignBottom.png"),
158 self.tr("Align Bottom"), self) 159 self.tr("Align Bottom"), self)
159 self.alignMapper.setMapping(self.alignBottomAct, Qt.AlignBottom) 160 self.alignMapper.setMapping(self.alignBottomAct, Qt.AlignBottom)
160 self.alignBottomAct.triggered.connect(self.alignMapper.map) 161 self.alignBottomAct.triggered.connect(self.alignMapper.map)
161 162
162 def __checkSizeActions(self): 163 def __checkSizeActions(self):
163 """ 164 """
521 itemrect = item.sceneBoundingRect() 522 itemrect = item.sceneBoundingRect()
522 xOffset = yOffset = 0 523 xOffset = yOffset = 0
523 if alignment == Qt.AlignLeft: 524 if alignment == Qt.AlignLeft:
524 xOffset = rect.x() - itemrect.x() 525 xOffset = rect.x() - itemrect.x()
525 elif alignment == Qt.AlignRight: 526 elif alignment == Qt.AlignRight:
526 xOffset = (rect.x() + rect.width()) - \ 527 xOffset = (
527 (itemrect.x() + itemrect.width()) 528 (rect.x() + rect.width()) -
529 (itemrect.x() + itemrect.width())
530 )
528 elif alignment == Qt.AlignHCenter: 531 elif alignment == Qt.AlignHCenter:
529 xOffset = (rect.x() + rect.width() // 2) - \ 532 xOffset = (
530 (itemrect.x() + itemrect.width() // 2) 533 (rect.x() + rect.width() // 2) -
534 (itemrect.x() + itemrect.width() // 2)
535 )
531 elif alignment == Qt.AlignTop: 536 elif alignment == Qt.AlignTop:
532 yOffset = rect.y() - itemrect.y() 537 yOffset = rect.y() - itemrect.y()
533 elif alignment == Qt.AlignBottom: 538 elif alignment == Qt.AlignBottom:
534 yOffset = (rect.y() + rect.height()) - \ 539 yOffset = (
535 (itemrect.y() + itemrect.height()) 540 (rect.y() + rect.height()) -
541 (itemrect.y() + itemrect.height())
542 )
536 elif alignment == Qt.AlignVCenter: 543 elif alignment == Qt.AlignVCenter:
537 yOffset = (rect.y() + rect.height() // 2) - \ 544 yOffset = (
538 (itemrect.y() + itemrect.height() // 2) 545 (rect.y() + rect.height() // 2) -
546 (itemrect.y() + itemrect.height() // 2)
547 )
539 item.moveBy(xOffset, yOffset) 548 item.moveBy(xOffset, yOffset)
540 549
541 self.scene().update() 550 self.scene().update()
542 551
543 def __itemsBoundingRect(self, items): 552 def __itemsBoundingRect(self, items):
745 if not itm.parseItemDataString(version, itemData): 754 if not itm.parseItemDataString(version, itemData):
746 return False, linenum 755 return False, linenum
747 except ValueError: 756 except ValueError:
748 return False, linenum 757 return False, linenum
749 elif key == "association": 758 elif key == "association":
750 srcId, dstId, assocType, topToBottom = \ 759 srcId, dstId, assocType, topToBottom = (
751 AssociationItem.parseAssociationItemDataString( 760 AssociationItem.parseAssociationItemDataString(
752 value.strip()) 761 value.strip())
762 )
753 assoc = AssociationItem(umlItems[srcId], umlItems[dstId], 763 assoc = AssociationItem(umlItems[srcId], umlItems[dstId],
754 assocType, topToBottom) 764 assocType, topToBottom)
755 self.scene().addItem(assoc) 765 self.scene().addItem(assoc)
756 766
757 return True, -1 767 return True, -1

eric ide

mercurial