From c393d915d7e85e7437846475d416ead9c3455c0d Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 8 Aug 2023 12:17:08 +0200 Subject: [PATCH] Disable copy paste when either 3mf reader or writer is disabled CURA-7913 --- cura/CuraActions.py | 8 +++++++- resources/qml/Actions.qml | 13 +++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 338c18a6b9..2f62944caa 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -193,6 +193,9 @@ class CuraActions(QObject): @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 @@ class CuraActions(QObject): @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 9cd72026b2..3b75c7699e 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 }