|
@@ -10,6 +10,8 @@ import UM.Settings
|
|
|
from UM.Settings.Validator import ValidatorState
|
|
|
from UM.Settings.InstanceContainer import InstanceContainer
|
|
|
from . import ExtruderManager
|
|
|
+from UM.i18n import i18nCatalog
|
|
|
+catalog = i18nCatalog("cura")
|
|
|
|
|
|
class MachineManagerModel(QObject):
|
|
|
def __init__(self, parent = None):
|
|
@@ -107,7 +109,7 @@ class MachineManagerModel(QObject):
|
|
|
definitions = UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id=definition_id)
|
|
|
if definitions:
|
|
|
definition = definitions[0]
|
|
|
- name = self._createUniqueStackName(name, definition.getName())
|
|
|
+ name = self._createUniqueName("machine", name, definition.getName())
|
|
|
|
|
|
new_global_stack = UM.Settings.ContainerStack(name)
|
|
|
new_global_stack.addMetaDataEntry("type", "machine")
|
|
@@ -145,7 +147,7 @@ class MachineManagerModel(QObject):
|
|
|
Application.getInstance().setGlobalContainerStack(new_global_stack)
|
|
|
|
|
|
# Create a name that is not empty and unique
|
|
|
- def _createUniqueStackName(self, name, fallback_name):
|
|
|
+ def _createUniqueName(self, object_type, name, fallback_name):
|
|
|
name = name.strip()
|
|
|
num_check = re.compile("(.*?)\s*#\d$").match(name)
|
|
|
if(num_check):
|
|
@@ -156,10 +158,16 @@ class MachineManagerModel(QObject):
|
|
|
i = 1
|
|
|
|
|
|
# Check both the id and the name, because they may not be the same and it is better if they are both unique
|
|
|
- while UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = unique_name, type = "machine") or \
|
|
|
- UM.Settings.ContainerRegistry.getInstance().findContainerStacks(name = unique_name, type = "machine"):
|
|
|
- i += 1
|
|
|
- unique_name = "%s #%d" % (name, i)
|
|
|
+ if object_type == "machine":
|
|
|
+ while UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = unique_name, type = "machine") or \
|
|
|
+ UM.Settings.ContainerRegistry.getInstance().findContainerStacks(name = unique_name, type = "machine"):
|
|
|
+ i += 1
|
|
|
+ unique_name = "%s #%d" % (name, i)
|
|
|
+ else:
|
|
|
+ while UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = unique_name, type = object_type) or \
|
|
|
+ UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(name = unique_name, type = object_type):
|
|
|
+ i += 1
|
|
|
+ unique_name = "%s #%d" % (name, i)
|
|
|
|
|
|
return unique_name
|
|
|
|
|
@@ -259,7 +267,7 @@ class MachineManagerModel(QObject):
|
|
|
if not self._global_container_stack:
|
|
|
return
|
|
|
|
|
|
- name = self._createUniqueStackName("Custom profile", "")
|
|
|
+ name = self._createUniqueName("quality", self.activeQualityName, catalog.i18nc("@label", "Custom profile"))
|
|
|
user_settings = self._global_container_stack.getTop()
|
|
|
new_quality_container = InstanceContainer("")
|
|
|
|
|
@@ -273,12 +281,13 @@ class MachineManagerModel(QObject):
|
|
|
new_quality_container.setDefinition(UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0])
|
|
|
|
|
|
## Change type / id / name
|
|
|
- new_quality_container.setMetaDataEntry("type","quality")
|
|
|
+ new_quality_container.setMetaDataEntry("type", "quality")
|
|
|
+ new_quality_container.setMetaDataEntry("read_only", False)
|
|
|
new_quality_container.setName(name)
|
|
|
new_quality_container._id = name
|
|
|
|
|
|
UM.Settings.ContainerRegistry.getInstance().addContainer(new_quality_container)
|
|
|
- self.clearUserSettings() # As all users settings are noq a quality, remove them.
|
|
|
+ self.clearUserSettings() # As all users settings are now transfered to the new quality profile, remove them.
|
|
|
self.setActiveQuality(name)
|
|
|
return name
|
|
|
|
|
@@ -288,7 +297,7 @@ class MachineManagerModel(QObject):
|
|
|
return
|
|
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id=container_id)
|
|
|
if containers:
|
|
|
- new_name = self._createUniqueStackName(containers[0].getName(), "")
|
|
|
+ new_name = self._createUniqueName("quality", containers[0].getName(), catalog.i18nc("@label", "Custom profile"))
|
|
|
|
|
|
new_container = InstanceContainer("")
|
|
|
|
|
@@ -302,6 +311,26 @@ class MachineManagerModel(QObject):
|
|
|
|
|
|
return ""
|
|
|
|
|
|
+
|
|
|
+ @pyqtSlot(str)
|
|
|
+ def removeQualityContainer(self, container_id):
|
|
|
+ containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = container_id)
|
|
|
+ if not containers or not self._global_container_stack:
|
|
|
+ return
|
|
|
+
|
|
|
+ # If the container that is being removed is the currently active container, set another machine as the active container
|
|
|
+ activate_new_container = container_id == self.activeQualityId
|
|
|
+
|
|
|
+ UM.Settings.ContainerRegistry.getInstance().removeContainer(container_id)
|
|
|
+
|
|
|
+ if activate_new_container:
|
|
|
+ old_container = self._global_container_stack.findInstanceContainers({"type": "quality"})
|
|
|
+ containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(type = container_type)
|
|
|
+ if containers and old_container:
|
|
|
+ container_index = self._global_container_stack.getContainerIndex(old_container)
|
|
|
+ self._global_container_stack.replaceContainer(container_index, containers[0])
|
|
|
+
|
|
|
+
|
|
|
@pyqtSlot()
|
|
|
def updateUserContainerToQuality(self):
|
|
|
if not self._global_container_stack:
|
|
@@ -381,7 +410,7 @@ class MachineManagerModel(QObject):
|
|
|
def renameMachine(self, machine_id, new_name):
|
|
|
containers = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = machine_id)
|
|
|
if containers:
|
|
|
- new_name = self._createUniqueStackName(new_name, containers[0].getBottom().getName())
|
|
|
+ new_name = self._createUniqueName("machine", new_name, containers[0].getBottom().getName())
|
|
|
containers[0].setName(new_name)
|
|
|
self.globalContainerChanged.emit()
|
|
|
|