mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-23 14:19:37 +08:00
128 lines
3.9 KiB
QML
128 lines
3.9 KiB
QML
// 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: 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")
|
|
|
|
maximumHeight: height
|
|
maximumWidth: width
|
|
minimumHeight: maximumHeight
|
|
minimumWidth: maximumWidth
|
|
|
|
modality: Qt.ApplicationModal
|
|
|
|
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() {
|
|
// update preference
|
|
if (rememberChoiceCheckBox.checked) {
|
|
UM.Preferences.setValue("cura/choice_on_open_project", "open_as_project")
|
|
}
|
|
|
|
UM.WorkspaceFileHandler.readLocalFile(base.fileUrl, base.addToRecent);
|
|
|
|
base.hide()
|
|
}
|
|
|
|
// load the project file as separated models
|
|
function loadModelFiles() {
|
|
// update preference
|
|
if (rememberChoiceCheckBox.checked) {
|
|
UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model")
|
|
}
|
|
|
|
CuraApplication.readLocalFile(base.fileUrl, "open_as_model", base.addToRecent)
|
|
|
|
base.hide()
|
|
}
|
|
|
|
// override UM.Dialog accept
|
|
function accept () {
|
|
var openAsPreference = UM.Preferences.getValue("cura/choice_on_open_project")
|
|
|
|
// when hitting 'enter', we always open as project unless open_as_model was explicitly stored as preference
|
|
if (openAsPreference == "open_as_model") {
|
|
loadModelFiles()
|
|
} else {
|
|
loadProjectFile()
|
|
}
|
|
}
|
|
|
|
onVisibleChanged: {
|
|
if (visible) {
|
|
var rememberMyChoice = UM.Preferences.getValue("cura/choice_on_open_project") != "always_ask";
|
|
rememberChoiceCheckBox.checked = rememberMyChoice;
|
|
}
|
|
}
|
|
|
|
Column
|
|
{
|
|
anchors.fill: parent
|
|
spacing: UM.Theme.getSize("default_margin").height
|
|
|
|
UM.Label
|
|
{
|
|
id: questionText
|
|
width: parent.width
|
|
text: base.is_ucp
|
|
? catalog.i18nc("@text:window", "This is a Cura Universal project file. Would you like to open it as a 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
|
|
}
|
|
|
|
UM.CheckBox
|
|
{
|
|
id: rememberChoiceCheckBox
|
|
text: catalog.i18nc("@text:window", "Remember my choice")
|
|
checked: UM.Preferences.getValue("cura/choice_on_open_project") != "always_ask"
|
|
}
|
|
}
|
|
|
|
onAccepted: loadProjectFile()
|
|
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: loadProjectFile()
|
|
visible: base.is_ucp
|
|
},
|
|
Cura.PrimaryButton
|
|
{
|
|
text: catalog.i18nc("@action:button", "Open as project")
|
|
onClicked: loadProjectFile()
|
|
visible: !base.is_ucp
|
|
},
|
|
Cura.SecondaryButton
|
|
{
|
|
text: catalog.i18nc("@action:button", "Import models")
|
|
onClicked: loadModelFiles()
|
|
}
|
|
]
|
|
}
|