Graphics/UMLGraphicsView.py

changeset 2039
fa41ccd7f7bc
parent 2038
72557ef75de1
child 2194
0fce40af66b8
equal deleted inserted replaced
2038:72557ef75de1 2039:fa41ccd7f7bc
119 self.setSizeAct = \ 119 self.setSizeAct = \
120 QAction(UI.PixmapCache.getIcon("sceneSize.png"), 120 QAction(UI.PixmapCache.getIcon("sceneSize.png"),
121 self.trUtf8("Set size"), self) 121 self.trUtf8("Set size"), self)
122 self.setSizeAct.triggered[()].connect(self.__setSize) 122 self.setSizeAct.triggered[()].connect(self.__setSize)
123 123
124 self.rescanAct = \
125 QAction(UI.PixmapCache.getIcon("rescan.png"),
126 self.trUtf8("Re-Scan"), self)
127 self.rescanAct.triggered[()].connect(self.__rescan)
128
124 self.relayoutAct = \ 129 self.relayoutAct = \
125 QAction(UI.PixmapCache.getIcon("reload.png"), 130 QAction(UI.PixmapCache.getIcon("relayout.png"),
126 self.trUtf8("Re-Layout"), self) 131 self.trUtf8("Re-Layout"), self)
127 self.relayoutAct.triggered[()].connect(self.__relayout) 132 self.relayoutAct.triggered[()].connect(self.__relayout)
128 133
129 self.alignLeftAct = \ 134 self.alignLeftAct = \
130 QAction(UI.PixmapCache.getIcon("shapesAlignLeft.png"), 135 QAction(UI.PixmapCache.getIcon("shapesAlignLeft.png"),
228 toolBar.addAction(self.incHeightAct) 233 toolBar.addAction(self.incHeightAct)
229 toolBar.addAction(self.decWidthAct) 234 toolBar.addAction(self.decWidthAct)
230 toolBar.addAction(self.decHeightAct) 235 toolBar.addAction(self.decHeightAct)
231 toolBar.addAction(self.setSizeAct) 236 toolBar.addAction(self.setSizeAct)
232 toolBar.addSeparator() 237 toolBar.addSeparator()
238 toolBar.addAction(self.rescanAct)
233 toolBar.addAction(self.relayoutAct) 239 toolBar.addAction(self.relayoutAct)
234 240
235 return toolBar 241 return toolBar
236 242
237 def filteredItems(self, items, itemType=UMLItem): 243 def filteredItems(self, items, itemType=UMLItem):
363 self.trUtf8("""<p>The file <b>{0}</b> could not be saved.</p>""") 369 self.trUtf8("""<p>The file <b>{0}</b> could not be saved.</p>""")
364 .format(fname)) 370 .format(fname))
365 371
366 def __relayout(self): 372 def __relayout(self):
367 """ 373 """
368 Private method to handle the re-layout context menu entry. 374 Private slot to handle the re-layout context menu entry.
369 """ 375 """
370 self.__itemId = -1 376 self.__itemId = -1
371 self.scene().clear() 377 self.scene().clear()
372 self.relayout.emit() 378 self.relayout.emit()
379
380 def __rescan(self):
381 """
382 Private slot to handle the re-scan context menu entry.
383 """
384 # 1. save positions of all items and names of selected items
385 itemPositions = {}
386 selectedItems = []
387 for item in self.filteredItems(self.scene().items(), UMLItem):
388 name = item.getName()
389 if name:
390 itemPositions[name] = (item.x(), item.y())
391 if item.isSelected():
392 selectedItems.append(name)
393
394 # 2. save
395
396 # 2. re-layout the diagram
397 self.__relayout()
398
399 # 3. move known items to the saved positions
400 for item in self.filteredItems(self.scene().items(), UMLItem):
401 name = item.getName()
402 if name in itemPositions:
403 item.setPos(*itemPositions[name])
404 if name in selectedItems:
405 item.setSelected(True)
373 406
374 def printDiagram(self): 407 def printDiagram(self):
375 """ 408 """
376 Public slot called to print the diagram. 409 Public slot called to print the diagram.
377 """ 410 """
629 @param id of the item to search for (integer) 662 @param id of the item to search for (integer)
630 @return item found (UMLItem) or None 663 @return item found (UMLItem) or None
631 """ 664 """
632 for item in self.scene().items(): 665 for item in self.scene().items():
633 try: 666 try:
634 itemID = item.getId() 667 if item.getId() == id:
668 return item
635 except AttributeError: 669 except AttributeError:
636 continue 670 continue
637 671
638 if itemID == id: 672 return None
639 return item 673
674 def findItemByName(self, name):
675 """
676 Public method to find an UML item based on it's name.
677
678 @param name name to look for (string)
679 @return item found (UMLItem) or None
680 """
681 for item in self.scene().items():
682 try:
683 if item.getName() == name:
684 return item
685 except AttributeError:
686 continue
640 687
641 return None 688 return None
642 689
643 def getPersistenceData(self): 690 def getPersistenceData(self):
644 """ 691 """

eric ide

mercurial