123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 |
- // Copyright (c) 2020 Ultimaker B.V.
- // Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.10
- import QtQuick.Controls 2.3
- import QtQuick.Layouts 1.3
- import QtQuick.Window 2.2
- import UM 1.1 as UM
- import Cura 1.1 as Cura
- 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: Math.max(dialogSummaryItem.height + 2 * buttonsItem.height, minimumHeight) // 2 * button height to also have some extra space around the button relative to the button size
- property int comboboxHeight: 15 * screenScaleFactor
- property int spacerHeight: 10 * screenScaleFactor
- property int doubleSpacerHeight: 20 * screenScaleFactor
- onClosing: manager.notifyClosed()
- onVisibleChanged:
- {
- if (visible)
- {
- machineResolveComboBox.currentIndex = 0
- qualityChangesResolveComboBox.currentIndex = 0
- materialResolveComboBox.currentIndex = 0
- }
- }
- Item
- {
- id: dialogSummaryItem
- width: parent.width
- height: childrenRect.height
- anchors.margins: 10 * 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
- {
- width: parent.width
- height: childrenRect.height
- 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: doubleSpacerHeight
- 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: base.visible && machineResolveComboBox.model.count > 1
- text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?")
- Cura.ComboBox
- {
- id: machineResolveComboBox
- model: manager.updatableMachinesModel
- visible: machineResolveStrategyTooltip.visible
- textRole: "displayName"
- width: parent.width
- height: UM.Theme.getSize("button").height
- onCurrentIndexChanged:
- {
- if (model.getItem(currentIndex).id == "new"
- && model.getItem(currentIndex).type == "default_option")
- {
- manager.setResolveStrategy("machine", "new")
- }
- else
- {
- manager.setResolveStrategy("machine", "override")
- manager.setMachineToOverride(model.getItem(currentIndex).id)
- }
- }
- onVisibleChanged:
- {
- if (!visible) {return}
- currentIndex = 0
- // If the project printer exists in Cura, set it as the default dropdown menu option.
- // No need to check object 0, which is the "Create new" option
- for (var i = 1; i < model.count; i++)
- {
- if (model.getItem(i).name == manager.machineName)
- {
- currentIndex = i
- break
- }
- }
- // The project printer does not exist in Cura. If there is at least one printer of the same
- // type, select the first one, else set the index to "Create new"
- if (currentIndex == 0 && model.count > 1)
- {
- currentIndex = 1
- }
- }
- }
- }
- }
- 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
- wrapMode: Text.WordWrap
- }
- }
- Item // Spacer
- {
- height: doubleSpacerHeight
- 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?")
- Cura.ComboBox
- {
- model: resolveStrategiesModel
- textRole: "label"
- id: qualityChangesResolveComboBox
- width: parent.width
- height: UM.Theme.getSize("button").height
- 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
- wrapMode: Text.WordWrap
- }
- }
- 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
- wrapMode: Text.WordWrap
- }
- }
- 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
- wrapMode: Text.WordWrap
- }
- visible: manager.numSettingsOverridenByQualityChanges != 0
- }
- Item // Spacer
- {
- height: doubleSpacerHeight
- 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?")
- Cura.ComboBox
- {
- model: resolveStrategiesModel
- textRole: "label"
- id: materialResolveComboBox
- width: parent.width
- height: UM.Theme.getSize("button").height
- 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
- wrapMode: Text.WordWrap
- }
- }
- }
- Item // Spacer
- {
- height: doubleSpacerHeight
- 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("Information")
- 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
- }
- }
- }
- }
- Item
- {
- id: buttonsItem
- width: parent.width
- height: childrenRect.height
- anchors.bottom: parent.bottom
- anchors.right: parent.right
- 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
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- text: catalog.i18nc("@action:button","Open");
- onClicked: { manager.closeBackend(); manager.onOkButtonClicked() }
- }
- }
- function accept() {
- manager.closeBackend();
- manager.onOkButtonClicked();
- base.visible = false;
- base.accept();
- }
- function reject() {
- manager.onCancelButtonClicked();
- base.visible = false;
- base.rejected();
- }
- }
|