mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-08 13:39:00 +08:00

Gracefully handle the case where the machine manager is requested to delete the last machine in Cura. In this case, instead of deleting everything of this machine and still keep it as an active machine, the machine manager will set the active machine to None. The QML files which depend on the active machine were changed to properly handle themselves when there is no active machine. CURA-7454
315 lines
11 KiB
QML
315 lines
11 KiB
QML
// Copyright (c) 2018 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.10
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Layouts 1.3
|
|
import QtQuick.Window 2.2
|
|
|
|
import UM 1.2 as UM
|
|
import Cura 1.0 as Cura
|
|
|
|
UM.Dialog
|
|
{
|
|
id: base
|
|
title: catalog.i18nc("@title:window", "Save Project")
|
|
|
|
minimumWidth: 500 * screenScaleFactor
|
|
minimumHeight: 400 * screenScaleFactor
|
|
width: minimumWidth
|
|
height: minimumHeight
|
|
|
|
property int spacerHeight: 10 * screenScaleFactor
|
|
|
|
property bool dontShowAgain: true
|
|
|
|
signal yes();
|
|
|
|
function accept() { // pressing enter will call this function
|
|
close();
|
|
yes();
|
|
}
|
|
|
|
onClosing:
|
|
{
|
|
UM.Preferences.setValue("cura/dialog_on_project_save", !dontShowAgainCheckbox.checked)
|
|
}
|
|
|
|
onVisibleChanged:
|
|
{
|
|
if(visible)
|
|
{
|
|
dontShowAgain = !UM.Preferences.getValue("cura/dialog_on_project_save")
|
|
}
|
|
}
|
|
|
|
Item
|
|
{
|
|
anchors.fill: parent
|
|
|
|
UM.SettingDefinitionsModel
|
|
{
|
|
id: definitionsModel
|
|
containerId: base.visible ? Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" : ""
|
|
showAll: true
|
|
exclude: ["command_line_settings"]
|
|
showAncestors: true
|
|
expanded: ["*"]
|
|
visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
|
|
}
|
|
UM.I18nCatalog
|
|
{
|
|
id: catalog
|
|
name: "cura"
|
|
}
|
|
SystemPalette
|
|
{
|
|
id: palette
|
|
}
|
|
Label
|
|
{
|
|
id: mainHeading
|
|
width: parent.width
|
|
text: catalog.i18nc("@action:title", "Summary - Cura Project")
|
|
font.pointSize: 18
|
|
anchors.top: parent.top
|
|
}
|
|
ScrollView
|
|
{
|
|
id: scroll
|
|
width: parent.width
|
|
anchors
|
|
{
|
|
top: mainHeading.bottom
|
|
topMargin: UM.Theme.getSize("default_margin").height
|
|
bottom: controls.top
|
|
bottomMargin: UM.Theme.getSize("default_margin").height
|
|
}
|
|
style: UM.Theme.styles.scrollview
|
|
ColumnLayout
|
|
{
|
|
spacing: UM.Theme.getSize("default_margin").height
|
|
Column
|
|
{
|
|
Label
|
|
{
|
|
id: settingsHeading
|
|
text: catalog.i18nc("@action:label", "Printer settings")
|
|
font.bold: true
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Type")
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: (Cura.MachineManager.activeMachine == null) ? "" : Cura.MachineManager.activeMachine.definition.name
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: Cura.MachineManager.activeMachineNetworkGroupName != "" ? catalog.i18nc("@action:label", "Printer Group") : catalog.i18nc("@action:label", "Name")
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text:
|
|
{
|
|
if(Cura.MachineManager.activeMachineNetworkGroupName != "")
|
|
{
|
|
return Cura.MachineManager.activeMachineNetworkGroupName
|
|
}
|
|
if(Cura.MachineManager.activeMachine)
|
|
{
|
|
return Cura.MachineManager.activeMachine.name
|
|
}
|
|
return ""
|
|
}
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
}
|
|
}
|
|
Repeater
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
model: Cura.MachineManager.activeMachine ? Cura.MachineManager.activeMachine.extruderList : null
|
|
delegate: Column
|
|
{
|
|
height: childrenRect.height
|
|
width: parent.width
|
|
property string variantName:
|
|
{
|
|
var extruder = modelData
|
|
var variant_name = extruder.variant.name
|
|
return (variant_name !== undefined) ? variant_name : ""
|
|
}
|
|
property string materialName:
|
|
{
|
|
var extruder = modelData
|
|
var material_name = extruder.material.name
|
|
return (material_name !== undefined) ? material_name : ""
|
|
}
|
|
Label
|
|
{
|
|
text: {
|
|
var extruder = Number(modelData.position)
|
|
var extruder_id = ""
|
|
if(!isNaN(extruder))
|
|
{
|
|
extruder_id = extruder + 1 // The extruder counter start from One and not Zero
|
|
}
|
|
else
|
|
{
|
|
extruder_id = modelData.position
|
|
}
|
|
|
|
return catalog.i18nc("@action:label", "Extruder %1").arg(extruder_id)
|
|
}
|
|
font.bold: true
|
|
enabled: modelData.isEnabled
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
|
|
Label
|
|
{
|
|
text:
|
|
{
|
|
if(variantName !== "" && materialName !== "")
|
|
{
|
|
return catalog.i18nc("@action:label", "%1 & material").arg(Cura.MachineManager.activeDefinitionVariantsName)
|
|
}
|
|
return catalog.i18nc("@action:label", "Material")
|
|
}
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
enabled: modelData.isEnabled
|
|
}
|
|
Label
|
|
{
|
|
text:
|
|
{
|
|
if(variantName !== "" && materialName !== "")
|
|
{
|
|
return variantName + ", " + materialName
|
|
}
|
|
return materialName
|
|
}
|
|
enabled: modelData.isEnabled
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Column
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Profile settings")
|
|
font.bold: true
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Not in profile")
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", Cura.MachineManager.numUserSettings).arg(Cura.MachineManager.numUserSettings)
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
visible: Cura.MachineManager.numUserSettings
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Name")
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: Cura.MachineManager.activeQualityOrQualityChangesName
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
}
|
|
|
|
// Intent
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Intent")
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: Cura.MachineManager.activeIntentCategory
|
|
width: Math.floor(scroll.width / 3) | 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Item
|
|
{
|
|
id: controls
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
anchors.bottom: parent.bottom
|
|
CheckBox
|
|
{
|
|
id: dontShowAgainCheckbox
|
|
anchors.left: parent.left
|
|
text: catalog.i18nc("@action:label", "Don't show project summary on save again")
|
|
checked: dontShowAgain
|
|
}
|
|
Button
|
|
{
|
|
id: cancel_button
|
|
anchors
|
|
{
|
|
right: ok_button.left
|
|
rightMargin: UM.Theme.getSize("default_margin").width
|
|
}
|
|
text: catalog.i18nc("@action:button","Cancel");
|
|
enabled: true
|
|
onClicked: close()
|
|
}
|
|
Button
|
|
{
|
|
id: ok_button
|
|
anchors.right: parent.right
|
|
text: catalog.i18nc("@action:button","Save");
|
|
enabled: true
|
|
onClicked:
|
|
{
|
|
close()
|
|
yes()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|