mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 09:18:59 +08:00
Fix profile management page
This commit is contained in:
parent
dec7ad25e2
commit
f487c5b084
@ -89,7 +89,11 @@ class QualitySettingsModel(ListModel):
|
|||||||
else:
|
else:
|
||||||
quality_changes_node = quality_changes_group.nodes_for_extruders.get(self._extruder_position)
|
quality_changes_node = quality_changes_group.nodes_for_extruders.get(self._extruder_position)
|
||||||
if quality_changes_node is not None: # it can be None if number of extruders are changed during runtime
|
if quality_changes_node is not None: # it can be None if number of extruders are changed during runtime
|
||||||
|
try:
|
||||||
quality_containers.insert(0, quality_changes_node.getContainer())
|
quality_containers.insert(0, quality_changes_node.getContainer())
|
||||||
|
except:
|
||||||
|
# FIXME: This is to prevent incomplete update of QualityManager
|
||||||
|
return
|
||||||
settings_keys.update(quality_changes_group.getAllKeys())
|
settings_keys.update(quality_changes_group.getAllKeys())
|
||||||
|
|
||||||
current_category = ""
|
current_category = ""
|
||||||
|
@ -404,24 +404,17 @@ class ContainerManager(QObject):
|
|||||||
for node in quality_changes_group.getAllNodes():
|
for node in quality_changes_group.getAllNodes():
|
||||||
self._container_registry.removeContainer(node.metadata["id"])
|
self._container_registry.removeContainer(node.metadata["id"])
|
||||||
|
|
||||||
## Rename a set of quality changes containers.
|
|
||||||
#
|
#
|
||||||
# This will search for quality_changes containers matching the supplied name and rename them.
|
# Rename a set of quality changes containers. Returns the new name.
|
||||||
# Note that if the machine specifies that qualities should be filtered by machine and/or material
|
|
||||||
# only the containers related to the active machine/material are renamed.
|
|
||||||
#
|
#
|
||||||
# \param quality_name The name of the quality changes containers to rename.
|
@pyqtSlot(QObject, str, result = str)
|
||||||
# \param new_name The new name of the quality changes.
|
def renameQualityChangesGroup(self, quality_changes_group, new_name) -> str:
|
||||||
#
|
|
||||||
# \return True if successful, False if not.
|
|
||||||
@pyqtSlot(QObject, str)
|
|
||||||
def renameQualityChangesGroup(self, quality_changes_group, new_name):
|
|
||||||
Logger.log("i", "Renaming QualityChangesGroup[%s] to [%s]", quality_changes_group.name, new_name)
|
Logger.log("i", "Renaming QualityChangesGroup[%s] to [%s]", quality_changes_group.name, new_name)
|
||||||
self._machine_manager.blurSettings.emit()
|
self._machine_manager.blurSettings.emit()
|
||||||
|
|
||||||
if new_name == quality_changes_group.name:
|
if new_name == quality_changes_group.name:
|
||||||
Logger.log("i", "QualityChangesGroup name [%s] unchanged.", quality_changes_group.name)
|
Logger.log("i", "QualityChangesGroup name [%s] unchanged.", quality_changes_group.name)
|
||||||
return
|
return new_name
|
||||||
|
|
||||||
new_name = self._container_registry.uniqueName(new_name)
|
new_name = self._container_registry.uniqueName(new_name)
|
||||||
for node in quality_changes_group.getAllNodes():
|
for node in quality_changes_group.getAllNodes():
|
||||||
@ -430,6 +423,8 @@ class ContainerManager(QObject):
|
|||||||
self._machine_manager.activeQualityChanged.emit()
|
self._machine_manager.activeQualityChanged.emit()
|
||||||
self._machine_manager.activeQualityGroupChanged.emit()
|
self._machine_manager.activeQualityGroupChanged.emit()
|
||||||
|
|
||||||
|
return new_name
|
||||||
|
|
||||||
@pyqtSlot(str, "QVariantMap")
|
@pyqtSlot(str, "QVariantMap")
|
||||||
def duplicateQualityChanges(self, quality_changes_name, quality_model_item):
|
def duplicateQualityChanges(self, quality_changes_name, quality_model_item):
|
||||||
global_stack = Application.getInstance().getGlobalContainerStack()
|
global_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
|
@ -171,32 +171,46 @@ Item
|
|||||||
object: "<new name>"
|
object: "<new name>"
|
||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
base.newQualityChangesNameToSwitchTo = newName; // We want to switch to the new profile once it's created
|
base.newQualityNameToSelect = newName; // We want to switch to the new profile once it's created
|
||||||
|
base.toActivateNewQuality = true;
|
||||||
Cura.ContainerManager.createQualityChanges(newName);
|
Cura.ContainerManager.createQualityChanges(newName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
property string newQualityChangesNameToSwitchTo: ""
|
property string newQualityNameToSelect: ""
|
||||||
|
property bool toActivateNewQuality: false
|
||||||
|
|
||||||
// This connection makes sure that we will switch to the new
|
// This connection makes sure that we will switch to the correct quality after the model gets updated
|
||||||
Connections
|
Connections
|
||||||
{
|
{
|
||||||
target: qualitiesModel
|
target: qualitiesModel
|
||||||
onItemsChanged: {
|
onItemsChanged: {
|
||||||
var currentItemName = base.currentItem == null ? "" : base.currentItem.name;
|
var toSelectItemName = base.currentItem == null ? "" : base.currentItem.name;
|
||||||
|
if (newQualityNameToSelect != "") {
|
||||||
|
toSelectItemName = newQualityNameToSelect;
|
||||||
|
}
|
||||||
|
|
||||||
if (base.newQualityChangesNameToSwitchTo != "") {
|
var newIdx = -1; // Default to nothing if nothing can be found
|
||||||
|
if (toSelectItemName != "") {
|
||||||
|
// Select the required quality name if given
|
||||||
for (var idx = 0; idx < qualitiesModel.rowCount(); ++idx) {
|
for (var idx = 0; idx < qualitiesModel.rowCount(); ++idx) {
|
||||||
var item = qualitiesModel.getItem(idx);
|
var item = qualitiesModel.getItem(idx);
|
||||||
if (item.name == base.newQualityChangesNameToSwitchTo) {
|
if (item.name == toSelectItemName) {
|
||||||
// Switch to the newly created profile if needed
|
// Switch to the newly created profile if needed
|
||||||
qualityListView.currentIndex = idx;
|
newIdx = idx;
|
||||||
|
if (base.toActivateNewQuality) {
|
||||||
|
// Activate this custom quality if required
|
||||||
Cura.MachineManager.setQualityChangesGroup(item.quality_changes_group);
|
Cura.MachineManager.setQualityChangesGroup(item.quality_changes_group);
|
||||||
base.newQualityChangesNameToSwitchTo = "";
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
qualityListView.currentIndex = newIdx;
|
||||||
|
|
||||||
|
// Reset states
|
||||||
|
base.newQualityNameToSelect = "";
|
||||||
|
base.toActivateNewQuality = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +223,6 @@ Item
|
|||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
Cura.ContainerManager.duplicateQualityChanges(newName, base.currentItem);
|
Cura.ContainerManager.duplicateQualityChanges(newName, base.currentItem);
|
||||||
qualityListView.currentIndex = -1; // TODO: Reset selection.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,8 +253,8 @@ Item
|
|||||||
object: "<new name>"
|
object: "<new name>"
|
||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
Cura.ContainerManager.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName);
|
var actualNewName = Cura.ContainerManager.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName);
|
||||||
qualityListView.currentIndex = -1; // TODO: Reset selection.
|
base.newQualityNameToSelect = actualNewName; // Select the new name after the model gets updated
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user