diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 338c18a6b99..2f62944caae 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -193,6 +193,9 @@ def cut(self) -> None: @pyqtSlot() def copy(self) -> None: mesh_writer = cura.CuraApplication.CuraApplication.getInstance().getMeshFileHandler().getWriter("3MFWriter") + if not mesh_writer: + Logger.log("e", "No 3MF writer found, unable to copy.") + return # Get the selected nodes selected_objects = Selection.getAllSelectedObjects() @@ -204,11 +207,14 @@ def copy(self) -> None: @pyqtSlot() def paste(self) -> None: application = cura.CuraApplication.CuraApplication.getInstance() + mesh_reader = application.getMeshFileHandler().getReaderForFile(".3mf") + if not mesh_reader: + Logger.log("e", "No 3MF reader found, unable to paste.") + return # Parse the scene from the clipboard scene_string = QApplication.clipboard().text() - mesh_reader = application.getMeshFileHandler().getReaderForFile(".3mf") nodes = mesh_reader.stringToSceneNodes(scene_string) # Find all fixed nodes, these are the nodes that should be avoided when arranging diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 9cd72026b23..3b75c7699e9 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -6,7 +6,7 @@ pragma Singleton import QtQuick 2.10 import QtQuick.Controls 2.4 import UM 1.1 as UM -import Cura 1.0 as Cura +import Cura 1.5 as Cura Item { @@ -75,6 +75,11 @@ Item property alias copy: copyAction property alias cut: cutAction + readonly property bool copy_paste_enabled: { + const all_enabled_packages = CuraApplication.getPackageManager().allEnabledPackages; + return all_enabled_packages.includes("3MFReader") && all_enabled_packages.includes("3MFWriter"); + } + UM.I18nCatalog{id: catalog; name: "cura"} @@ -318,7 +323,7 @@ Item id: copyAction text: catalog.i18nc("@action:inmenu menubar:edit", "Copy to clipboard") onTriggered: CuraActions.copy() - enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled shortcut: StandardKey.Copy } @@ -327,7 +332,7 @@ Item id: pasteAction text: catalog.i18nc("@action:inmenu menubar:edit", "Paste from clipboard") onTriggered: CuraActions.paste() - enabled: UM.Controller.toolsEnabled + enabled: UM.Controller.toolsEnabled && copy_paste_enabled shortcut: StandardKey.Paste } @@ -336,7 +341,7 @@ Item id: cutAction text: catalog.i18nc("@action:inmenu menubar:edit", "Cut") onTriggered: CuraActions.cut() - enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled shortcut: StandardKey.Cut }