mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-22 22:23:57 -06:00

A ComboBox was added under the "Update existing" combobox which will display all the available printers that are of the same type with the printer in the project file. With this feature, the user will be able to select any same-type preexisting printer in Cura to be updated, instead of always create a new one when the project file's printer is not in Cura. CURA-7609
462 lines
16 KiB
QML
462 lines
16 KiB
QML
// Copyright (c) 2016 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.1 as UM
|
|
|
|
UM.Dialog
|
|
{
|
|
id: base
|
|
title: catalog.i18nc("@title:window", "Open Project")
|
|
|
|
minimumWidth: UM.Theme.getSize("popup_dialog").width
|
|
minimumHeight: UM.Theme.getSize("popup_dialog").height
|
|
width: minimumWidth
|
|
height: minimumHeight
|
|
|
|
property int comboboxHeight: 15 * screenScaleFactor
|
|
property int spacerHeight: 10 * screenScaleFactor
|
|
property string machineResolveStrategyCurrentKey: "override"
|
|
|
|
onClosing: manager.notifyClosed()
|
|
onVisibleChanged:
|
|
{
|
|
if (visible)
|
|
{
|
|
machineResolveComboBox.currentIndex = 0
|
|
qualityChangesResolveComboBox.currentIndex = 0
|
|
materialResolveComboBox.currentIndex = 0
|
|
}
|
|
}
|
|
|
|
Item
|
|
{
|
|
anchors.fill: parent
|
|
anchors.margins: 20 * screenScaleFactor
|
|
|
|
UM.I18nCatalog
|
|
{
|
|
id: catalog
|
|
name: "cura"
|
|
}
|
|
SystemPalette
|
|
{
|
|
id: palette
|
|
}
|
|
|
|
ListModel
|
|
{
|
|
id: resolveStrategiesModel
|
|
// Instead of directly adding the list elements, we add them afterwards.
|
|
// This is because it's impossible to use setting function results to be bound to listElement properties directly.
|
|
// See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties
|
|
Component.onCompleted:
|
|
{
|
|
append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")});
|
|
append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")});
|
|
}
|
|
}
|
|
|
|
Column
|
|
{
|
|
anchors.fill: parent
|
|
spacing: 2 * screenScaleFactor
|
|
Label
|
|
{
|
|
id: titleLabel
|
|
text: catalog.i18nc("@action:title", "Summary - Cura Project")
|
|
font.pointSize: 18
|
|
}
|
|
Rectangle
|
|
{
|
|
id: separator
|
|
color: palette.text
|
|
width: parent.width
|
|
height: 1
|
|
}
|
|
Item // Spacer
|
|
{
|
|
height: spacerHeight
|
|
width: height
|
|
}
|
|
|
|
Row
|
|
{
|
|
height: childrenRect.height
|
|
width: parent.width
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Printer settings")
|
|
font.bold: true
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Item
|
|
{
|
|
// spacer
|
|
height: spacerHeight
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
UM.TooltipArea
|
|
{
|
|
id: machineResolveStrategyTooltip
|
|
width: (parent.width / 3) | 0
|
|
height: visible ? comboboxHeight : 0
|
|
visible: manager.availableMachinesCount != 0
|
|
text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?")
|
|
ComboBox
|
|
{
|
|
id: machineResolveComboBox
|
|
model: ListModel
|
|
{
|
|
Component.onCompleted:
|
|
{
|
|
append({"key": "override", "label": catalog.i18nc("@action:ComboBox option", "Update existing printer")});
|
|
append({"key": "new", "label": catalog.i18nc("@action:ComboBox option", "Create new printer")});
|
|
}
|
|
}
|
|
textRole: "label"
|
|
width: parent.width
|
|
onActivated:
|
|
{
|
|
machineResolveStrategyCurrentKey = resolveStrategiesModel.get(index).key
|
|
manager.setResolveStrategy("machine", resolveStrategiesModel.get(index).key)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Type")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: manager.machineType
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: manager.machineName
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
UM.TooltipArea
|
|
{
|
|
id: machineResolveTooltip
|
|
width: (parent.width / 3) | 0
|
|
height: visible ? comboboxHeight : 0
|
|
visible: base.visible && manager.availableMachinesCount != 0 && machineResolveStrategyCurrentKey == "override"
|
|
text: catalog.i18nc("@info:tooltip", "Which machine of the same type should be overriden?")
|
|
ComboBox
|
|
{
|
|
id: selectMachineComboBox
|
|
model: manager.availableMachines
|
|
width: parent.width
|
|
onCurrentIndexChanged:
|
|
{
|
|
manager.setMachineToOverride(model[currentIndex])
|
|
}
|
|
onVisibleChanged:
|
|
{
|
|
if (visible)
|
|
{
|
|
currentIndex = 0
|
|
for (var i = 0; i < count; i++)
|
|
{
|
|
if (model[i] == manager.machineName)
|
|
{
|
|
currentIndex = i
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Item // Spacer
|
|
{
|
|
height: spacerHeight
|
|
width: height
|
|
}
|
|
Row
|
|
{
|
|
height: childrenRect.height
|
|
width: parent.width
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Profile settings")
|
|
font.bold: true
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Item
|
|
{
|
|
// spacer
|
|
height: spacerHeight
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
UM.TooltipArea
|
|
{
|
|
id: qualityChangesResolveTooltip
|
|
width: (parent.width / 3) | 0
|
|
height: visible ? comboboxHeight : 0
|
|
visible: manager.qualityChangesConflict
|
|
text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?")
|
|
ComboBox
|
|
{
|
|
model: resolveStrategiesModel
|
|
textRole: "label"
|
|
id: qualityChangesResolveComboBox
|
|
width: parent.width
|
|
onActivated:
|
|
{
|
|
manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Name")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: manager.qualityName
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Intent")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: manager.intentName
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: manager.numUserSettings != 0 ? childrenRect.height : 0
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Not in profile")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings)
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
visible: manager.numUserSettings != 0
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: manager.numSettingsOverridenByQualityChanges != 0 ? childrenRect.height : 0
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Derivative from")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges)
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
visible: manager.numSettingsOverridenByQualityChanges != 0
|
|
}
|
|
Item // Spacer
|
|
{
|
|
height: spacerHeight
|
|
width: height
|
|
}
|
|
Row
|
|
{
|
|
height: childrenRect.height
|
|
width: parent.width
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Material settings")
|
|
font.bold: true
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Item
|
|
{
|
|
// spacer
|
|
height: spacerHeight
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
UM.TooltipArea
|
|
{
|
|
id: materialResolveTooltip
|
|
width: (parent.width / 3) | 0
|
|
height: visible ? comboboxHeight : 0
|
|
visible: manager.materialConflict
|
|
text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?")
|
|
ComboBox
|
|
{
|
|
model: resolveStrategiesModel
|
|
textRole: "label"
|
|
id: materialResolveComboBox
|
|
width: parent.width
|
|
onActivated:
|
|
{
|
|
manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Repeater
|
|
{
|
|
model: manager.materialLabels
|
|
delegate: Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Name")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: modelData
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
}
|
|
|
|
Item // Spacer
|
|
{
|
|
height: spacerHeight
|
|
width: height
|
|
}
|
|
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Setting visibility")
|
|
font.bold: true
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Mode")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: manager.activeMode
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
visible: manager.hasVisibleSettingsField
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "Visible settings:")
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
Label
|
|
{
|
|
text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings)
|
|
width: (parent.width / 3) | 0
|
|
}
|
|
}
|
|
Item // Spacer
|
|
{
|
|
height: spacerHeight
|
|
width: height
|
|
}
|
|
Row
|
|
{
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
visible: manager.hasObjectsOnPlate
|
|
UM.RecolorImage
|
|
{
|
|
width: warningLabel.height
|
|
height: width
|
|
|
|
source: UM.Theme.getIcon("notice")
|
|
color: palette.text
|
|
|
|
}
|
|
Label
|
|
{
|
|
id: warningLabel
|
|
text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.")
|
|
wrapMode: Text.Wrap
|
|
}
|
|
}
|
|
}
|
|
Button
|
|
{
|
|
id: cancel_button
|
|
text: catalog.i18nc("@action:button","Cancel");
|
|
onClicked: { manager.onCancelButtonClicked() }
|
|
enabled: true
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: ok_button.left
|
|
anchors.rightMargin: 2 * screenScaleFactor
|
|
}
|
|
Button
|
|
{
|
|
id: ok_button
|
|
text: catalog.i18nc("@action:button","Open");
|
|
onClicked: { manager.closeBackend(); manager.onOkButtonClicked() }
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: parent.right
|
|
}
|
|
}
|
|
|
|
function accept() {
|
|
manager.closeBackend();
|
|
manager.onOkButtonClicked();
|
|
base.visible = false;
|
|
base.accept();
|
|
}
|
|
|
|
function reject() {
|
|
manager.onCancelButtonClicked();
|
|
base.visible = false;
|
|
base.rejected();
|
|
}
|
|
}
|