diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 678bf85c97..77efc45fe8 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -702,32 +702,23 @@ UM.MainWindow if (hasProjectFile) { var projectFile = projectFileUrlList[0] - var is_ucp = CuraApplication.isProjectUcp(projectFile); - if (is_ucp) + // check preference + var choice = UM.Preferences.getValue("cura/choice_on_open_project"); + if (choice == "open_as_project") { - askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = projectFile; - askOpenAsProjectOrUcpOrImportModelsDialog.addToRecent = true; - askOpenAsProjectOrUcpOrImportModelsDialog.show(); + openFilesIncludingProjectsDialog.loadProjectFile(projectFile); } - else + else if (choice == "open_as_model") { - // check preference - var choice = UM.Preferences.getValue("cura/choice_on_open_project"); - if (choice == "open_as_project") - { - openFilesIncludingProjectsDialog.loadProjectFile(projectFile); - } - else if (choice == "open_as_model") - { - openFilesIncludingProjectsDialog.loadModelFiles([projectFile].slice()); - } - else // always ask - { - // ask whether to open as project or as models - askOpenAsProjectOrModelsDialog.fileUrl = projectFile; - askOpenAsProjectOrModelsDialog.addToRecent = true; - askOpenAsProjectOrModelsDialog.show(); - } + openFilesIncludingProjectsDialog.loadModelFiles([projectFile].slice()); + } + else // always ask + { + // ask whether to open as project or as models + askOpenAsProjectOrModelsDialog.is_ucp = CuraApplication.isProjectUcp(projectFile); + askOpenAsProjectOrModelsDialog.fileUrl = projectFile; + askOpenAsProjectOrModelsDialog.addToRecent = true; + askOpenAsProjectOrModelsDialog.show(); } } else @@ -778,30 +769,15 @@ UM.MainWindow id: askOpenAsProjectOrModelsDialog } - AskOpenAsProjectOrUcpOrImportModel - { - id: askOpenAsProjectOrUcpOrImportModelsDialog - } - Connections { target: CuraApplication function onOpenProjectFile(project_file, add_to_recent_files) { - var is_ucp = CuraApplication.isProjectUcp(project_file); - if (is_ucp) - { - - askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = project_file; - askOpenAsProjectOrUcpOrImportModelsDialog.addToRecent = add_to_recent_files; - askOpenAsProjectOrUcpOrImportModelsDialog.show(); - } - else - { - askOpenAsProjectOrModelsDialog.fileUrl = project_file; - askOpenAsProjectOrModelsDialog.addToRecent = add_to_recent_files; - askOpenAsProjectOrModelsDialog.show(); - } + askOpenAsProjectOrModelsDialog.is_ucp = CuraApplication.isProjectUcp(project_file); + askOpenAsProjectOrModelsDialog.fileUrl = project_file; + askOpenAsProjectOrModelsDialog.addToRecent = add_to_recent_files; + askOpenAsProjectOrModelsDialog.show(); } } diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml index cac23d34c1..28784f5f82 100644 --- a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml @@ -14,7 +14,9 @@ UM.Dialog // This dialog asks the user whether he/she wants to open a project file as a project or import models. id: base - title: catalog.i18nc("@title:window", "Open project file") + title: base.is_ucp + ? catalog.i18nc("@title:window Don't translate 'Universal Cura Project'", "Open Universal Cura Project (UCP) file") + : catalog.i18nc("@title:window", "Open project file") width: UM.Theme.getSize("small_popup_dialog").width height: UM.Theme.getSize("small_popup_dialog").height backgroundColor: UM.Theme.getColor("main_background") @@ -28,6 +30,7 @@ UM.Dialog property var fileUrl property var addToRecent: true //Whether to add this file to the recent files list after reading it. + property bool is_ucp: false // load the entire project function loadProjectFile() { @@ -81,7 +84,9 @@ UM.Dialog { id: questionText width: parent.width - text: catalog.i18nc("@text:window", "This is a Cura project file. Would you like to open it as a project or import the models from it?") + text: base.is_ucp + ? catalog.i18nc("@text:window", "This is a Cura Universal project file. Would you like to open it as a Cura project or Cura Universal Project or import the models from it?") + : catalog.i18nc("@text:window", "This is a Cura project file. Would you like to open it as a project or import the models from it?") wrapMode: Text.WordWrap } @@ -100,10 +105,18 @@ UM.Dialog rightButtons: [ + Cura.PrimaryButton + { + text: catalog.i18nc("@action:button", "Open as UCP") + iconSource: UM.Theme.getIcon("CuraShareIcon") + onClicked: loadProjectFile() + visible: base.is_ucp + }, Cura.PrimaryButton { text: catalog.i18nc("@action:button", "Open as project") onClicked: loadProjectFile() + visible: !base.is_ucp }, Cura.SecondaryButton { diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml b/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml deleted file mode 100644 index 70e8e5740d..0000000000 --- a/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2022 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 2.1 -import QtQuick.Layouts 1.1 - -import UM 1.5 as UM -import Cura 1.0 as Cura - - -UM.Dialog -{ - // This dialog asks the user whether he/she wants to open a project file as a project or import models. - id: base - - title: catalog.i18nc("@title:window Don't translate 'Universal Cura Project'", "Open Universal Cura Project (UCP) file") - width: UM.Theme.getSize("small_popup_dialog").width - height: UM.Theme.getSize("small_popup_dialog").height - backgroundColor: UM.Theme.getColor("main_background") - - maximumHeight: height - maximumWidth: width - minimumHeight: maximumHeight - minimumWidth: maximumWidth - - modality: Qt.WindowModal - - property var fileUrl - property var addToRecent: true //Whether to add this file to the recent files list after reading it. - - - // load the project file as separated models - function loadModelFiles() { - CuraApplication.readLocalFile(base.fileUrl, "open_as_model", base.addToRecent) - - base.hide() - } - - // load the project file as Universal cura project - function loadUcpFiles() { - CuraApplication.readLocalUcpFile(base.fileUrl, base.addToRecent) - - base.hide() - } - - // override UM.Dialog accept - function accept () { - - // when hitting 'enter', we always open as project unless open_as_model was explicitly stored as preference - if (openAsPreference == "open_as_model") { - loadModelFiles() - } else{ - loadUcpFiles() - } - } - - Column - { - anchors.fill: parent - spacing: UM.Theme.getSize("default_margin").height - - UM.Label - { - id: questionText - width: parent.width - text: catalog.i18nc("@text:window", "This is a Cura Universal project file. Would you like to open it as a Cura project or Cura Universal Project or import the models from it?") - wrapMode: Text.WordWrap - } - } - - onAccepted: loadUcpFile() - onRejected: loadModelFiles() - - buttonSpacing: UM.Theme.getSize("thin_margin").width - - rightButtons: - [ - Cura.PrimaryButton - { - text: catalog.i18nc("@action:button", "Open as UCP") - iconSource: UM.Theme.getIcon("CuraShareIcon") - onClicked: loadUcpFiles() - }, - Cura.SecondaryButton - { - text: catalog.i18nc("@action:button", "Import models") - onClicked: loadModelFiles() - } - ] -}