Browse Source

Add high level functions for setting the variant, material and quality
using the name, id and quality_type respectively.

Diego Prado Gesto 7 years ago
parent
commit
51e7a18d1c
1 changed files with 23 additions and 0 deletions
  1. 23 0
      cura/Settings/MachineManager.py

+ 23 - 0
cura/Settings/MachineManager.py

@@ -1218,6 +1218,16 @@ class MachineManager(QObject):
             self._updateMaterialWithVariant(None)  # Update all materials
             self._updateQualityWithMaterial()
 
+    @pyqtSlot(str, str)
+    def setMaterialById(self, position, root_material_id):
+        machine_definition_id = self._global_container_stack.definition.id
+        position = str(position)
+        extruder_stack = self._global_container_stack.extruders[position]
+        variant_name = extruder_stack.variant.getName()
+        material_diameter = extruder_stack.approximateMaterialDiameter
+        material_node = self._material_manager.getMaterialNode(machine_definition_id, variant_name, material_diameter, root_material_id)
+        self.setMaterial(position, material_node)
+
     @pyqtSlot(str, "QVariant")
     def setMaterial(self, position, container_node):
         position = str(position)
@@ -1226,6 +1236,12 @@ class MachineManager(QObject):
             self._setMaterial(position, container_node)
             self._updateQualityWithMaterial()
 
+    @pyqtSlot(str, str)
+    def setVariantByName(self, position, variant_name):
+        machine_definition_id = self._global_container_stack.definition.id
+        variant_node = self._variant_manager.getVariantNode(machine_definition_id, variant_name)
+        self.setVariant(position, variant_node)
+
     @pyqtSlot(str, "QVariant")
     def setVariant(self, position, container_node):
         position = str(position)
@@ -1235,6 +1251,13 @@ class MachineManager(QObject):
             self._updateMaterialWithVariant(position)
             self._updateQualityWithMaterial()
 
+    @pyqtSlot(str)
+    def setQualityGroupByQualityType(self, quality_type):
+        # Get all the quality groups for this global stack and filter out by quality_type
+        quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack)
+        quality_group = quality_group_dict[quality_type]
+        self.setQualityGroup(quality_group)
+
     @pyqtSlot(QObject)
     def setQualityGroup(self, quality_group, no_dialog = False):
         self.blurSettings.emit()