diff --git a/resources/qml/Menus/ExportMenu.qml b/resources/qml/Menus/ExportMenu.qml new file mode 100644 index 0000000000..70560f0772 --- /dev/null +++ b/resources/qml/Menus/ExportMenu.qml @@ -0,0 +1,44 @@ +// Copyright (c) 2024 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.1 + +import UM 1.5 as UM +import Cura 1.1 as Cura + +import "../Dialogs" + +Cura.Menu +{ + id: exportMenu + property alias model: meshWriters.model + property bool selectionOnly: false + + Instantiator + { + id: meshWriters + Cura.MenuItem + { + text: model.description + onTriggered: + { + var localDeviceId = "local_file" + var file_name = PrintInformation.jobName + var args = { "filter_by_machine": false, "limit_mimetypes": model.mime_type} + if(exportMenu.selectionOnly) + { + UM.OutputDeviceManager.requestWriteSelectionToDevice(localDeviceId, file_name, args) + } + else + { + UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, file_name, args) + } + } + shortcut: model.shortcut + enabled: exportMenu.shouldBeVisible + } + onObjectAdded: function(index, object) { exportMenu.insertItem(index, object)} + onObjectRemoved: function(index, object) { exportMenu.removeItem(object)} + } +} diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 0884053ef3..254c0d5468 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -4,7 +4,7 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import UM 1.6 as UM +import UM 1.7 as UM import Cura 1.0 as Cura Cura.Menu @@ -72,24 +72,24 @@ Cura.Menu Cura.MenuSeparator { } - Cura.MenuItem + UM.MeshWritersModel { id: meshWritersModel } + + ExportMenu { - id: saveAsMenu - text: catalog.i18nc("@title:menu menubar:file", "&Export...") - onTriggered: - { - var localDeviceId = "local_file" - UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) - } + id: exportMenu + title: catalog.i18nc("@title:menu menubar:file", "&Export...") + model: meshWritersModel + shouldBeVisible: model.count > 0 } - Cura.MenuItem + ExportMenu { id: exportSelectionMenu - text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") + title: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") + model: meshWritersModel + shouldBeVisible: model.count > 0 enabled: UM.Selection.hasSelection - icon.name: "document-save-as" - onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + selectionOnly: true } Cura.MenuSeparator { }