123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- //Copyright (c) 2022 Ultimaker B.V.
- //Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.1
- import QtQuick.Controls 2.15
- import UM 1.6 as UM
- import Cura 1.6 as Cura
- UM.Dialog
- {
- id: base
- title: catalog.i18nc("@title:window", "Discard or Keep changes")
- enum ButtonsType { DiscardOrKeep, SaveFromBuiltIn, SaveFromCustom}
- property int buttonState: DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep
- onAccepted: buttonState == DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep ?
- CuraApplication.discardOrKeepProfileChangesClosed("discard") : Cura.Actions.addProfile.trigger()
- onRejected: buttonState == DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep ?
- CuraApplication.discardOrKeepProfileChangesClosed("keep") : Cura.Actions.updateProfile.trigger()
- minimumWidth: UM.Theme.getSize("popup_dialog").width
- minimumHeight: UM.Theme.getSize("popup_dialog").height
- width: minimumWidth
- height: minimumHeight
- backgroundColor: UM.Theme.getColor("background_1")
- margin: UM.Theme.getSize("thick_margin").width
- property var changesModel: Cura.UserChangesModel { id: userChangesModel }
- // Hack to make sure that when the data of our model changes the tablemodel is also updated
- // If we directly set the rows (So without the clear being called) it doesn't seem to
- // get updated correctly.
- property var modelRows: userChangesModel.items
- onModelRowsChanged:
- {
- tableModel.clear()
- tableModel.rows = modelRows
- }
- onVisibilityChanged:
- {
- if(visible)
- {
- changesModel.forceUpdate()
- discardOrKeepProfileChangesDropDownButton.currentIndex = 0;
- for (var i = 0; i < discardOrKeepProfileChangesDropDownButton.model.count; ++i)
- {
- var code = discardOrKeepProfileChangesDropDownButton.model.get(i).code;
- if (code == UM.Preferences.getValue("cura/choice_on_profile_override"))
- {
- discardOrKeepProfileChangesDropDownButton.currentIndex = i;
- break;
- }
- }
- }
- }
- UM.Label
- {
- id: infoText
- text: catalog.i18nc("@text:window, %1 is a profile name", "You have customized some profile settings. Would you like to Keep these changed settings after switching profiles? Alternatively, you can discard the changes to load the defaults from '%1'.").arg(Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - "))
- anchors.left: parent.left
- anchors.right: parent.right
- wrapMode: Text.WordWrap
- UM.I18nCatalog
- {
- id: catalog
- name: "cura"
- }
- }
- Item
- {
- anchors.topMargin: UM.Theme.getSize("default_margin").height
- anchors.top: infoText.bottom
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- Cura.TableView
- {
- id: tableView
- anchors.fill: parent
- columnHeaders: [
- catalog.i18nc("@title:column", "Profile settings"),
- Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - "),
- catalog.i18nc("@title:column", "Current changes")
- ]
- model: UM.TableModel
- {
- id: tableModel
- headers: ["label", "original_value", "user_value"]
- rows: modelRows
- }
- sectionRole: "category"
- }
- }
- buttonSpacing: UM.Theme.getSize("thin_margin").width
- leftButtons:
- [
- Cura.ComboBox
- {
- visible: buttonState === DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep
- implicitHeight: UM.Theme.getSize("combobox").height
- implicitWidth: UM.Theme.getSize("combobox").width
- id: discardOrKeepProfileChangesDropDownButton
- textRole: "text"
- model: ListModel
- {
- id: discardOrKeepProfileListModel
- Component.onCompleted: {
- append({ text: catalog.i18nc("@option:discardOrKeep", "Always ask me this"), code: "always_ask" })
- append({ text: catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), code: "always_discard" })
- append({ text: catalog.i18nc("@option:discardOrKeep", "Keep and never ask again"), code: "always_keep" })
- }
- }
- onActivated:
- {
- const code = model.get(index).code;
- UM.Preferences.setValue("cura/choice_on_profile_override", code);
- switch (code) {
- case "always_keep":
- keepButton.enabled = true;
- discardButton.enabled = false;
- break;
- case "always_discard":
- keepButton.enabled = false;
- discardButton.enabled = true;
- break;
- default:
- keepButton.enabled = true;
- discardButton.enabled = true;
- break;
- }
- }
- }
- ]
- rightButtons:
- [
- Cura.PrimaryButton
- {
- id: discardButton
- text: catalog.i18nc("@action:button", "Discard changes")
- onClicked: base.accept()
- visible: buttonState == DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep
- },
- Cura.SecondaryButton
- {
- id: keepButton
- text: catalog.i18nc("@action:button", "Keep changes")
- onClicked: base.reject()
- visible: buttonState == DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep
- },
- Cura.SecondaryButton
- {
- id: overwriteButton
- text: catalog.i18nc("@action:button", "Save as new custom profile")
- visible: buttonState != DiscardOrKeepProfileChangesDialog.ButtonsType.DiscardOrKeep
- onClicked: base.accept()
- },
- Cura.PrimaryButton
- {
- id: saveButton
- text: catalog.i18nc("@action:button", "Save changes")
- visible: buttonState == DiscardOrKeepProfileChangesDialog.ButtonsType.SaveFromCustom
- onClicked: base.reject()
- }
- ]
- }
|