Merge branch 'feature_quality_changes' into cura-2008

This commit is contained in:
Jack Ha 2016-08-04 18:26:14 +02:00
commit 30898f9642
2 changed files with 26 additions and 8 deletions

View File

@ -362,7 +362,7 @@ class ContainerManager(QObject):
UM.Logger.log("e", "Could not update quality of a nonexistant or read only quality profile")
return False
cura.Settings.MachineManager.getInstance().blurSettings.emit()
UM.Application.getInstance().getMachineManager().blurSettings.emit()
containers_to_merge.append((global_quality_changes, global_stack.getTop()))
@ -377,11 +377,15 @@ class ContainerManager(QObject):
for merge_into, merge in containers_to_merge:
self._performMerge(merge_into, merge)
UM.Application.getInstance().getMachineManager().activeQualityChanged.emit()
return True
@pyqtSlot()
def clearUserContainers(self):
global_stack = UM.Application.getInstance().getGlobalContainerStack()
cura.Settings.MachineManager.getInstance().blurSettings.emit()
UM.Application.getInstance().getMachineManager().blurSettings.emit()
for extruder in cura.Settings.ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()):
extruder.getTop().clear()
@ -399,7 +403,7 @@ class ContainerManager(QObject):
UM.Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId())
return False
cura.Settings.MachineManager.getInstance().blurSettings.emit()
UM.Application.getInstance().getMachineManager().blurSettings.emit()
unique_name = UM.Settings.ContainerRegistry.getInstance().uniqueName(quality_container.getName())
unique_id = unique_name.lower()
@ -432,6 +436,7 @@ class ContainerManager(QObject):
stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_quality_changes)
stack.getTop().clear()
UM.Application.getInstance().getMachineManager().activeQualityChanged.emit()
return True
# Factory function, used by QML

View File

@ -211,6 +211,7 @@ class MachineManager(QObject):
if self._global_container_stack:
self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged)
self._global_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged)
self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
material = self._global_container_stack.findContainer({"type": "material"})
material.nameChanged.disconnect(self._onMaterialNameChanged)
@ -227,6 +228,7 @@ class MachineManager(QObject):
Preferences.getInstance().setValue("cura/active_machine", self._global_container_stack.getId())
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
material = self._global_container_stack.findContainer({"type": "material"})
material.nameChanged.connect(self._onMaterialNameChanged)
@ -237,9 +239,11 @@ class MachineManager(QObject):
self.blurSettings.emit() # Ensure no-one has focus.
if self._active_container_stack and self._active_container_stack != self._global_container_stack:
self._active_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged)
self._active_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
if self._active_container_stack:
self._active_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
self._active_container_stack.propertyChanged.connect(self._onPropertyChanged)
else:
self._active_container_stack = self._global_container_stack
self._active_stack_valid = not self._checkStackForErrors(self._active_container_stack)
@ -248,8 +252,6 @@ class MachineManager(QObject):
def _onInstanceContainersChanged(self, container):
container_type = container.getMetaDataEntry("type")
if container_type == "material":
self.activeMaterialChanged.emit()
elif container_type == "variant":
@ -257,6 +259,9 @@ class MachineManager(QObject):
elif container_type == "quality":
self.activeQualityChanged.emit()
def _onPropertyChanged(self, key, property_name):
self.activeStackChanged.emit()
@pyqtSlot(str)
def setActiveMachine(self, stack_id):
containers = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = stack_id)
@ -333,11 +338,17 @@ class MachineManager(QObject):
## Check if the global_container has instances in the user container
@pyqtProperty(bool, notify = activeStackChanged)
def hasUserSettings(self):
if not self._active_container_stack:
if not self._global_container_stack:
return False
user_settings = self._active_container_stack.getTop().findInstances(**{})
return len(user_settings) != 0
if self._global_container_stack.getTop().findInstances():
return True
for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()):
if stack.getTop().findInstances():
return True
return False
## Check if the global profile does not contain error states
# Note that the _active_stack_valid is cached due to performance issues
@ -605,6 +616,8 @@ class MachineManager(QObject):
catalog.i18nc("@label", "If you transfer your settings they will override settings in the profile."), details,
buttons = QMessageBox.Yes + QMessageBox.No, icon = QMessageBox.Question, callback = self._keepUserSettingsDialogCallback)
self.activeQualityChanged.emit()
def _keepUserSettingsDialogCallback(self, button):
if button == QMessageBox.Yes:
# Yes, keep the settings in the user profile with this profile