Просмотр исходного кода

CURA-4870 Reuse the filter in findContainerStacks to find specific
printers.
Allow to show configurations with empty material or variant.

Diego Prado Gesto 7 лет назад
Родитель
Сommit
180139090a
2 измененных файлов с 11 добавлено и 15 удалено
  1. 9 4
      cura/PrinterOutput/ExtruderConfigurationModel.py
  2. 2 11
      cura/Settings/MachineManager.py

+ 9 - 4
cura/PrinterOutput/ExtruderConfigurationModel.py

@@ -37,13 +37,18 @@ class ExtruderConfigurationModel(QObject):
 
     ##  This method is intended to indicate whether the configuration is valid or not.
     #   The method checks if the mandatory fields are or not set
+    #   At this moment is always valid since we allow to have empty material and variants.
     def isValid(self):
-        return self._material is not None and self._hotend_id is not None and self.material.guid is not None
+        return True
 
     def __str__(self):
-        if not self.isValid():
-            return "No information"
-        return "Position: " + str(self._position) + " - Material: " + self._material.type + " - HotendID: " + self._hotend_id
+        message_chunks = []
+        message_chunks.append("Position: " + str(self._position))
+        message_chunks.append("-")
+        message_chunks.append("Material: " + self.material.type if self.material else "empty")
+        message_chunks.append("-")
+        message_chunks.append("HotendID: " + self.hotendID if self.hotendID else "empty")
+        return " ".join(message_chunks)
 
     def __eq__(self, other):
         return hash(self) == hash(other)

+ 2 - 11
cura/Settings/MachineManager.py

@@ -361,19 +361,10 @@ class MachineManager(QObject):
     #   \param metadata_filter \type{dict} list of metadata keys and values used for filtering
     @staticmethod
     def getMachine(definition_id: str, metadata_filter: Dict[str, str] = None) -> Optional["GlobalStack"]:
-        machines = ContainerRegistry.getInstance().findContainerStacks(type = "machine")
+        machines = ContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter)
         for machine in machines:
             if machine.definition.getId() == definition_id:
-                if metadata_filter:
-                    pass_all_filters = True
-                    for key in metadata_filter:
-                        if machine.getMetaDataEntry(key) != metadata_filter[key]:
-                            pass_all_filters = False
-                            break
-                    if pass_all_filters:
-                        return machine
-                else:
-                    return machine
+                return machine
         return None
 
     @pyqtSlot(str, str)