CURA-4606 fixed Create profile

This commit is contained in:
Jack Ha 2018-02-19 16:15:35 +01:00
parent 8efe13a55a
commit 7a78f9821f
6 changed files with 42 additions and 17 deletions

View file

@ -27,7 +27,7 @@ class QualityManagementModel(ListModel):
self._quality_manager = CuraApplication.getInstance()._quality_manager self._quality_manager = CuraApplication.getInstance()._quality_manager
self._machine_manager.globalContainerChanged.connect(self._update) self._machine_manager.globalContainerChanged.connect(self._update)
#self._quality_manager.materialsUpdated.connect(self._update) # TODO self._quality_manager.qualitiesUpdated.connect(self._update)
self._update() self._update()

View file

@ -37,6 +37,7 @@ class QualityProfilesModel(ListModel):
Application.getInstance().getMachineManager().activeQualityGroupChanged.connect(self._update) Application.getInstance().getMachineManager().activeQualityGroupChanged.connect(self._update)
self._quality_manager = Application.getInstance()._quality_manager self._quality_manager = Application.getInstance()._quality_manager
self._quality_manager.qualitiesUpdated.connect(self._update)
self._layer_height_unit = "" # This is cached self._layer_height_unit = "" # This is cached

View file

@ -26,6 +26,7 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
self._container_registry = ContainerRegistry.getInstance() self._container_registry = ContainerRegistry.getInstance()
self._application = Application.getInstance() self._application = Application.getInstance()
self._quality_manager = self._application._quality_manager
self._extruder_position = "" self._extruder_position = ""
self._quality = None self._quality = None
@ -42,6 +43,7 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
self._empty_quality = self._container_registry.findInstanceContainers(id = "empty_quality")[0] self._empty_quality = self._container_registry.findInstanceContainers(id = "empty_quality")[0]
self._update() self._update()
self._quality_manager.qualitiesUpdated.connect(self._update)
def setExtruderPosition(self, extruder_position): def setExtruderPosition(self, extruder_position):
if extruder_position != self._extruder_position: if extruder_position != self._extruder_position:

View file

@ -1,5 +1,6 @@
from typing import Optional from typing import Optional
from PyQt5.Qt import pyqtSignal
from PyQt5.QtCore import QObject, QTimer from PyQt5.QtCore import QObject, QTimer
from UM.Application import Application from UM.Application import Application
@ -111,6 +112,8 @@ class QualityNode(ContainerNode):
class QualityManager(QObject): class QualityManager(QObject):
qualitiesUpdated = pyqtSignal()
def __init__(self, container_registry, parent = None): def __init__(self, container_registry, parent = None):
super().__init__(parent) super().__init__(parent)
self._application = Application.getInstance() self._application = Application.getInstance()
@ -213,6 +216,9 @@ class QualityManager(QObject):
machine_node = self._machine_quality_type_to_quality_changes_dict[machine_definition_id] machine_node = self._machine_quality_type_to_quality_changes_dict[machine_definition_id]
machine_node.addQualityChangesMetadata(quality_type, metadata) machine_node.addQualityChangesMetadata(quality_type, metadata)
Logger.log("d", "Lookup tables updated.")
self.qualitiesUpdated.emit()
def _updateMaps(self): def _updateMaps(self):
self.initialize() self.initialize()

View file

@ -398,16 +398,16 @@ class ContainerManager(QObject):
# stack and clear the user settings. # stack and clear the user settings.
# #
# \return \type{bool} True if the operation was successfully, False if not. # \return \type{bool} True if the operation was successfully, False if not.
@pyqtSlot(str, result = bool) @pyqtSlot(str)
def createQualityChanges(self, base_name): def createQualityChanges(self, base_name):
global_stack = Application.getInstance().getGlobalContainerStack() global_stack = Application.getInstance().getGlobalContainerStack()
if not global_stack: if not global_stack:
return False return
active_quality_name = self._machine_manager.activeQualityName active_quality_name = self._machine_manager.activeQualityName
if active_quality_name == "": if active_quality_name == "":
Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId())
return False return
self._machine_manager.blurSettings.emit() self._machine_manager.blurSettings.emit()
if base_name is None or base_name == "": if base_name is None or base_name == "":
@ -416,7 +416,7 @@ class ContainerManager(QObject):
# Go through the active stacks and create quality_changes containers from the user containers. # Go through the active stacks and create quality_changes containers from the user containers.
for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
user_container = stack.getTop() user_container = stack.userChanges
quality_container = stack.quality quality_container = stack.quality
quality_changes_container = stack.qualityChanges quality_changes_container = stack.qualityChanges
if not quality_container or not quality_changes_container: if not quality_container or not quality_changes_container:
@ -431,10 +431,12 @@ class ContainerManager(QObject):
self._performMerge(new_changes, user_container) self._performMerge(new_changes, user_container)
self._container_registry.addContainer(new_changes) self._container_registry.addContainer(new_changes)
stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_changes) #stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_changes)
self._machine_manager.activeQualityChanged.emit() #self._machine_manager.activeQualityChanged.emit()
return True
#self._machine_manager.activeQualityGroupChanged.emit()
#self._machine_manager.activeQualityChangesGroupChanged.emit()
## Remove all quality changes containers matching a specified name. ## Remove all quality changes containers matching a specified name.
# #

View file

@ -50,6 +50,10 @@ Item
return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName;
} }
property var canCreateProfile: {
return isCurrentItemActivated && Cura.MachineManager.hasUserSettings;
}
Row // Button Row Row // Button Row
{ {
id: buttonRow id: buttonRow
@ -80,13 +84,13 @@ Item
{ {
text: catalog.i18nc("@label", "Create") text: catalog.i18nc("@label", "Create")
iconName: "list-add" iconName: "list-add"
//enabled: base.canCreateProfile() && !Cura.MachineManager.stacksHaveErrors enabled: base.canCreateProfile && !Cura.MachineManager.stacksHaveErrors
enabled: true // TODO visible: base.canCreateProfile
//visible: base.canCreateProfile()
visible: true // TODO
onClicked: { onClicked: {
// TODO newNameDialog.object = base.currentItem != null ? Cura.ContainerManager.makeUniqueName(Cura.MachineManager.activeQualityOrQualityChangesName) : "";
newNameDialog.open();
newNameDialog.selectText();
} }
} }
@ -95,10 +99,8 @@ Item
{ {
text: catalog.i18nc("@label", "Duplicate") text: catalog.i18nc("@label", "Duplicate")
iconName: "list-add" iconName: "list-add"
//enabled: ! base.canCreateProfile() enabled: !base.canCreateProfile
enabled: true // TODO visible: !base.canCreateProfile
//visible: ! base.canCreateProfile()
visible: true // TODO
onClicked: { onClicked: {
// TODO // TODO
@ -153,6 +155,18 @@ Item
} }
// Dialog to request a name when creating a new profile
UM.RenameDialog
{
title: catalog.i18nc("@title:window", "Create Profile")
id: newNameDialog;
object: "<new name>";
onAccepted:
{
var selectedContainer = Cura.ContainerManager.createQualityChanges(newName);
objectList.currentIndex = -1 //Reset selection.
}
}
Item { Item {
id: contentsItem id: contentsItem