// 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.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 import QtQuick.Controls 2.3 as NewControls 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 { } } 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 } NewControls.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() } NewControls.Button { id: ok_button anchors.right: parent.right text: catalog.i18nc("@action:button","Save"); enabled: true onClicked: { close() yes() } } } } }