Sync currently selected preset between visibility-page and -menu

This commit is contained in:
fieldOfView 2018-02-09 17:04:08 +01:00
parent 4c1002bf47
commit 74fe281e1d
7 changed files with 82 additions and 61 deletions

View file

@ -9,7 +9,7 @@ from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal, pyqtSlot, QUrl
from UM.Logger import Logger
from UM.Qt.ListModel import ListModel
from UM.Preferences import Preferences
from UM.Resources import Resources
from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError
@ -27,11 +27,18 @@ class SettingVisibilityPresetsModel(ListModel):
self.addRoleName(self.NameRole, "name")
self.addRoleName(self.SettingsRole, "settings")
self._container_ids = []
self._containers = []
self._populate()
preferences = Preferences.getInstance()
preferences.addPreference("cura/active_setting_visibility_preset", "custom")
self._active_preset = Preferences.getInstance().getValue("cura/active_setting_visibility_preset")
if self.find("id", self._active_preset) < 0:
self._active_preset = "custom"
self.activePresetChanged.emit()
def _populate(self):
items = []
for item in Resources.getAllResourcesOfType(cura.CuraApplication.CuraApplication.ResourceTypes.SettingVisibilityPreset):
@ -77,6 +84,23 @@ class SettingVisibilityPresetsModel(ListModel):
items.sort(key = lambda k: (k["weight"], k["id"]))
self.setItems(items)
@pyqtSlot(str)
def setActivePreset(self, preset_id):
if preset_id != "custom" and self.find("id", preset_id) == -1:
Logger.log("w", "Tried to set active preset to unknown id %s", preset_id)
return
Preferences.getInstance().setValue("cura/active_setting_visibility_preset", preset_id);
self._active_preset = preset_id
self.activePresetChanged.emit()
activePresetChanged = pyqtSignal()
@pyqtProperty(str, notify = activePresetChanged)
def activePreset(self):
return self._active_preset
# Factory function, used by QML
@staticmethod
def createSettingVisibilityPresetsModel(engine, js_engine):