diff --git a/gns3/graphics_view.py b/gns3/graphics_view.py index 6481a6c6e..64c858bee 100644 --- a/gns3/graphics_view.py +++ b/gns3/graphics_view.py @@ -96,7 +96,7 @@ def __init__(self, parent): self._topology = Topology.instance() self._background_warning_msgbox = QtWidgets.QErrorMessage(self) self._background_warning_msgbox.setWindowTitle("Layer position") - + self._isctrlpressed = False # set the scene scene = QtWidgets.QGraphicsScene(parent=self) width = self._settings["scene_width"] @@ -612,9 +612,26 @@ def keyPressEvent(self, event): if (isinstance(item, LabelItem) or isinstance(item, TextItem)) and item.hasFocus(): super().keyPressEvent(event) return - self.deleteActionSlot() + self.deleteActionSlot() + elif event.key() == QtCore.Qt.Key_C and event.modifiers() == QtCore.Qt.ControlModifier: + # Copy selected items to clipboard + self.copySelectedItems(self,event); super().keyPressEvent(event) + def copySelectedItems(self,event): + self._isctrlcpressed = True + if event.key() == QtCore.Qt.Key_V and event.modifiers() == QtCore.Qt.ControlModifier: + self.pasteItemsFromClipboard(self) + else: + return + + def pasteItemsFromClipboard(self): + self.duplicateActionSlot(self) + + if isinstance(item, LinkItem): + for item in self.scene().selectedItems(): + self.addLinkSlot(self.link.id()) + def mouseMoveEvent(self, event): """ Handles all mouse move events (mouse tracking has been enabled).