From ca1b199c7e4d57e4ef071b64add53ad2d895be3d Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Tue, 7 Jun 2016 13:17:35 +0200 Subject: [PATCH 1/5] Fix PerObjectSettings to use the right objects when instantiating setting items Contributes to CURA-1592 --- .../PerObjectSettingsPanel.qml | 62 ++++++++++++++++--- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 8ab05e90c1..c89485517e 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -64,24 +64,26 @@ Item { settingLoader.item.doDepthIdentation = false } - source: + sourceComponent: { - switch(model.type) // TODO: This needs to be fixed properly. Got frustrated with it not working, so this is the patch job! + switch(model.type) { case "int": - return "../../resources/qml/Settings/SettingTextField.qml" + return settingTextField case "float": - return "../../resources/qml/Settings/SettingTextField.qml" + return settingTextField case "enum": - return "../../resources/qml/Settings/SettingComboBox.qml" + return settingComboBox + case "extruder": + return settingExtruder case "bool": - return "../../resources/qml/Settings/SettingCheckBox.qml" + return settingCheckBox case "str": - return "../../resources/qml/Settings/SettingTextField.qml" + return settingTextField case "category": - return "../../resources/qml/Settings/SettingCategory.qml" + return settingCategory default: - return "../../resources/qml/Settings/SettingUnknown.qml" + return settingUnknown } } } @@ -257,4 +259,46 @@ Item { } SystemPalette { id: palette; } + + Component + { + id: settingTextField; + + Cura.SettingTextField { } + } + + Component + { + id: settingComboBox; + + Cura.SettingComboBox { } + } + + Component + { + id: settingExtruder; + + Cura.SettingExtruder { } + } + + Component + { + id: settingCheckBox; + + Cura.SettingCheckBox { } + } + + Component + { + id: settingCategory; + + Cura.SettingCategory { } + } + + Component + { + id: settingUnknown; + + Cura.SettingUnknown { } + } } From 227c0f9f8c9d71d264f1959c18b2fdf550f05a5b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 7 Jun 2016 12:01:12 +0200 Subject: [PATCH 2/5] Move _uniqueName to ContainerRegistry It's not specific to any type of container and we might re-use this anyway. Contributes to issues CURA-1278 and CURA-340. --- cura/ExtruderManager.py | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index f8bcd75151..31943be747 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -26,8 +26,6 @@ class ExtruderManager(QObject): self._next_item = 0 #For when you use this class as iterator. self._active_extruder_index = 0 - self._repopulate() - ## Creates an iterator over the extruders in this manager. # # \return An iterator over the extruders in this manager. @@ -82,7 +80,7 @@ class ExtruderManager(QObject): else: Logger.log("w", "Machine %s references an extruder with ID %s, which doesn't exist.", machine_definition.getName(), extruder_definition_id) continue - name = self._uniqueName(extruder_definition_id) #Make a name based on the ID of the definition. + name = container_registry.uniqueName(extruder_definition_id) #Make a name based on the ID of the definition. if not container_registry.findContainerStacks(id = name): #Doesn't exist yet. self.createExtruderTrain(extruder_definition, machine_definition, name, position) @@ -175,28 +173,3 @@ class ExtruderManager(QObject): container_stack.setNextStack(UM.Application.getInstance().getGlobalContainerStack()) container_registry.addContainer(container_stack) - - ## Creates a new unique name for a container that doesn't exist yet. - # - # It tries if the original name you provide exists, and if it doesn't - # it'll add a " #1" or " #2" after the name to make it unique. - # - # \param original The original name that may not be unique. - # \return A unique name that looks a lot like the original but may have - # a number behind it to make it unique. - def _uniqueName(self, original): - container_registry = UM.Settings.ContainerRegistry.getInstance() - - name = original.strip() - num_check = re.compile("(.*?)\s*#\d$").match(name) - if num_check: # There is a number in the name. - name = num_check.group(1) # Filter out the number. - if name == "": # Wait, that deleted everything! - name = "Extruder" - unique_name = name - - i = 1 - while container_registry.findContainers(id = unique_name) or container_registry.findContainers(name = unique_name): # A container already has this name. - i += 1 # Try next numbering. - unique_name = "%s #%d" % (name, i) # Fill name like this: "Extruder #2". - return unique_name From c5b07debdcf5583de189c13beeb6bcf333eae252 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 7 Jun 2016 13:22:47 +0200 Subject: [PATCH 3/5] Remove iterability from ExtruderManager This is no longer used. Contributes to issues CURA-1278 and CURA-340. --- cura/ExtruderManager.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index 31943be747..a1f901ce54 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -23,15 +23,8 @@ class ExtruderManager(QObject): def __init__(self, parent = None): super().__init__(parent) self._extruder_trains = { } #Extruders for the current machine. - self._next_item = 0 #For when you use this class as iterator. self._active_extruder_index = 0 - ## Creates an iterator over the extruders in this manager. - # - # \return An iterator over the extruders in this manager. - def __iter__(self): - return iter(self._extruders) - ## Gets the unique identifier of the currently active extruder stack. # # The currently active extruder stack is the stack that is currently being From 253061cfa492adeb628e9f7fa4929c43df0fafd6 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 7 Jun 2016 13:24:03 +0200 Subject: [PATCH 4/5] Remove unused import The _uniqueName function was using this but it was moved to ContainerRegistry. Contributes to issues CURA-340 and CURA-1278. --- cura/ExtruderManager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index a1f901ce54..d157cbb08e 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -6,7 +6,6 @@ from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject #For commun import UM.Application #To get the global container stack to find the current machine. import UM.Logger import UM.Settings.ContainerRegistry #Finding containers by ID. -import re ## Manages all existing extruder stacks. From b991743053edf2778a2395dc9ede7007b99386eb Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 7 Jun 2016 13:30:13 +0200 Subject: [PATCH 5/5] Fix ExtruderManager.py --- cura/ExtruderManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index d157cbb08e..b2c3b47e8e 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -4,7 +4,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject #For communicating data and events to Qt. import UM.Application #To get the global container stack to find the current machine. -import UM.Logger +from UM.Logger import Logger import UM.Settings.ContainerRegistry #Finding containers by ID. @@ -57,7 +57,7 @@ class ExtruderManager(QObject): # \param machine_definition The machine to add the extruders for. def addMachineExtruders(self, machine_definition): machine_id = machine_definition.getId() - if not self._extruder_trains[machine_id]: + if machine_id not in self._extruder_trains: self._extruder_trains[machine_id] = { } container_registry = UM.Settings.ContainerRegistry.getInstance()