diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 6fcd0fbf4f..b6816a38ae 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -245,7 +245,7 @@ class CuraApplication(QtApplication): Preferences.getInstance().addPreference("mesh/scale_tiny_meshes", True) Preferences.getInstance().addPreference("cura/dialog_on_project_save", True) Preferences.getInstance().addPreference("cura/asked_dialog_on_project_save", False) - Preferences.getInstance().addPreference("cura/choice_on_profile_override", 0) + Preferences.getInstance().addPreference("cura/choice_on_profile_override", "always_ask") Preferences.getInstance().addPreference("cura/currency", "€") Preferences.getInstance().addPreference("cura/material_settings", "{}") @@ -338,10 +338,10 @@ class CuraApplication(QtApplication): def discardOrKeepProfileChanges(self): choice = Preferences.getInstance().getValue("cura/choice_on_profile_override") - if choice == 1: + if choice == "always_discard": # don't show dialog and DISCARD the profile self.discardOrKeepProfileChangesClosed("discard") - elif choice == 2: + elif choice == "always_keep": # don't show dialog and KEEP the profile self.discardOrKeepProfileChangesClosed("keep") else: diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 1752995ec5..e2212a8f9f 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -21,9 +21,18 @@ UM.Dialog if(visible) { changesModel.forceUpdate() - } - discardOrKeepProfileChangesDropDownButton.currentIndex = UM.Preferences.getValue("cura/choice_on_profile_override") + 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; + } + } + } } Column @@ -133,32 +142,20 @@ UM.Dialog ComboBox { id: discardOrKeepProfileChangesDropDownButton - model: [ - catalog.i18nc("@option:discardOrKeep", "Always ask me this"), - catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), - catalog.i18nc("@option:discardOrKeep", "Keep and never ask again") - ] width: 300 - currentIndex: UM.Preferences.getValue("cura/choice_on_profile_override") - onCurrentIndexChanged: + + model: ListModel { - UM.Preferences.setValue("cura/choice_on_profile_override", currentIndex) - if (currentIndex == 1) { - // 1 == "Discard and never ask again", so only enable the "Discard" button - discardButton.enabled = true - keepButton.enabled = false - } - else if (currentIndex == 2) { - // 2 == "Keep and never ask again", so only enable the "Keep" button - keepButton.enabled = true - discardButton.enabled = false - } - else { - // 0 == "Always ask me this", so show both - keepButton.enabled = true - discardButton.enabled = true + 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: UM.Preferences.setValue("cura/choice_on_profile_override", model.get(index).code) } } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index d9170ec597..b6694972c5 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -25,6 +25,18 @@ UM.PreferencesPage } } + function setDefaultDiscardOrKeepProfile(code) + { + for (var i = 0; i < choiceOnProfileOverrideDropDownButton.model.count; i++) + { + if (choiceOnProfileOverrideDropDownButton.model.get(i).code == code) + { + choiceOnProfileOverrideDropDownButton.currentIndex = i; + break; + } + } + } + function reset() { UM.Preferences.resetPreference("general/language") @@ -47,8 +59,9 @@ UM.PreferencesPage centerOnSelectCheckbox.checked = boolCheck(UM.Preferences.getValue("view/center_on_select")) UM.Preferences.resetPreference("view/top_layer_count"); topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) + UM.Preferences.resetPreference("cura/choice_on_profile_override") - choiceOnProfileOverrideDropDownButton.currentIndex = UM.Preferences.getValue("cura/choice_on_profile_override") + setDefaultDiscardOrKeepProfile(UM.Preferences.getValue("cura/choice_on_profile_override")) if (plugins.find("id", "SliceInfoPlugin") > -1) { UM.Preferences.resetPreference("info/send_slice_info") @@ -364,15 +377,34 @@ UM.PreferencesPage ComboBox { id: choiceOnProfileOverrideDropDownButton - - model: [ - catalog.i18nc("@option:discardOrKeep", "Always ask me this"), - catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), - catalog.i18nc("@option:discardOrKeep", "Keep and never ask again") - ] width: 300 - currentIndex: UM.Preferences.getValue("cura/choice_on_profile_override") - onCurrentIndexChanged: UM.Preferences.setValue("cura/choice_on_profile_override", currentIndex) + + 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" }) + } + } + + currentIndex: + { + var index = 0; + var code = UM.Preferences.getValue("cura/choice_on_profile_override"); + for (var i = 0; i < model.count; ++i) + { + if (model.get(i).code == code) + { + index = i; + break; + } + } + return index; + } + onActivated: UM.Preferences.setValue("cura/choice_on_profile_override", model.get(index).code) } }