Allow switching back to the "Custom" set

This commit is contained in:
fieldOfView 2018-03-09 16:30:37 +01:00
parent 4c66c935af
commit 711d60e8c7
3 changed files with 30 additions and 4 deletions

View file

@ -29,10 +29,12 @@ class SettingVisibilityPresetsModel(ListModel):
self._populate() self._populate()
preferences = Preferences.getInstance() self._preferences = Preferences.getInstance()
preferences.addPreference("cura/active_setting_visibility_preset", "custom") self._preferences.addPreference("cura/active_setting_visibility_preset", "custom") # Preference to store which preset is currently selected
self._preferences.addPreference("cura/custom_visible_settings", "") # Preference that stores the "custom" set so it can always be restored (even after a restart)
self._preferences.preferenceChanged.connect(self._onPreferencesChanged)
self._active_preset = Preferences.getInstance().getValue("cura/active_setting_visibility_preset") self._active_preset = self._preferences.getValue("cura/active_setting_visibility_preset")
if self.find("id", self._active_preset) < 0: if self.find("id", self._active_preset) < 0:
self._active_preset = "custom" self._active_preset = "custom"
@ -90,7 +92,12 @@ class SettingVisibilityPresetsModel(ListModel):
Logger.log("w", "Tried to set active preset to unknown id %s", preset_id) Logger.log("w", "Tried to set active preset to unknown id %s", preset_id)
return return
Preferences.getInstance().setValue("cura/active_setting_visibility_preset", preset_id); if preset_id == "custom" and self._active_preset == "custom":
# Copy current visibility set to custom visibility set preference so it can be restored later
visibility_string = self._preferences.getValue("general/visible_settings")
self._preferences.setValue("cura/custom_visible_settings", visibility_string)
self._preferences.setValue("cura/active_setting_visibility_preset", preset_id)
self._active_preset = preset_id self._active_preset = preset_id
self.activePresetChanged.emit() self.activePresetChanged.emit()
@ -101,6 +108,18 @@ class SettingVisibilityPresetsModel(ListModel):
def activePreset(self): def activePreset(self):
return self._active_preset return self._active_preset
def _onPreferencesChanged(self, name):
if name != "general/visible_settings":
return
if self._active_preset != "custom":
return
# Copy current visibility set to custom visibility set preference so it can be restored later
visibility_string = self._preferences.getValue("general/visible_settings")
self._preferences.setValue("cura/custom_visible_settings", visibility_string)
# Factory function, used by QML # Factory function, used by QML
@staticmethod @staticmethod
def createSettingVisibilityPresetsModel(engine, js_engine): def createSettingVisibilityPresetsModel(engine, js_engine):

View file

@ -27,6 +27,8 @@ Menu
onTriggered: onTriggered:
{ {
Cura.SettingVisibilityPresetsModel.setActivePreset("custom"); Cura.SettingVisibilityPresetsModel.setActivePreset("custom");
// Restore custom set from preference
UM.Preferences.setValue("general/visible_settings", UM.Preferences.getValue("cura/custom_visible_settings"));
showSettingVisibilityProfile(); showSettingVisibilityProfile();
} }
} }

View file

@ -164,6 +164,11 @@ UM.PreferencesPage
UM.Preferences.setValue("general/visible_settings", Cura.SettingVisibilityPresetsModel.getItem(index - 1).settings.join(";")); UM.Preferences.setValue("general/visible_settings", Cura.SettingVisibilityPresetsModel.getItem(index - 1).settings.join(";"));
// "Custom selection" entry is added in front, so index is off by 1 // "Custom selection" entry is added in front, so index is off by 1
} }
else
{
// Restore custom set from preference
UM.Preferences.setValue("general/visible_settings", UM.Preferences.getValue("cura/custom_visible_settings"));
}
base.inhibitSwitchToCustom = false; base.inhibitSwitchToCustom = false;
} }
} }