mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 11:17:49 -06:00
CURA-4606 fixed Create profile
This commit is contained in:
parent
8efe13a55a
commit
7a78f9821f
6 changed files with 42 additions and 17 deletions
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
#
|
#
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue