Browse Source

CURA-4400 prevent disabling last enabled extruder

Jack Ha 7 years ago
parent
commit
8af82cc3f4
3 changed files with 10 additions and 1 deletions
  1. 8 1
      cura/Settings/MachineManager.py
  2. 1 0
      resources/qml/Cura.qml
  3. 1 0
      resources/qml/SidebarHeader.qml

+ 8 - 1
cura/Settings/MachineManager.py

@@ -145,6 +145,7 @@ class MachineManager(QObject):
     activeStackValueChanged = pyqtSignal()  # Emitted whenever a value inside the active stack is changed.
     activeStackValidationChanged = pyqtSignal()  # Emitted whenever a validation inside active container is changed
     stacksValidationChanged = pyqtSignal()  # Emitted whenever a validation is changed
+    numberExtrudersEnabledChanged = pyqtSignal()  # Emitted when the number of extruders that are enabled changed
 
     blurSettings = pyqtSignal()  # Emitted to force fields in the advanced sidebar to un-focus, so they update properly
 
@@ -880,7 +881,13 @@ class MachineManager(QObject):
         for position, extruder in self._global_container_stack.extruders.items():
             if extruder.isEnabled:
                 extruder_count += 1
-        definition_changes_container.setProperty("extruders_enabled_count", "value", extruder_count)
+        if self.numberExtrudersEnabled != extruder_count:
+            definition_changes_container.setProperty("extruders_enabled_count", "value", extruder_count)
+            self.numberExtrudersEnabledChanged.emit()
+
+    @pyqtProperty(int, notify = numberExtrudersEnabledChanged)
+    def numberExtrudersEnabled(self):
+        return self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value")
 
     @pyqtProperty(str, notify = extruderChanged)
     def defaultExtruderPosition(self):

+ 1 - 0
resources/qml/Cura.qml

@@ -217,6 +217,7 @@ UM.MainWindow
                             text: catalog.i18nc("@action:inmenu", "Disable Extruder")
                             onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false)
                             visible: Cura.MachineManager.getExtruder(model.index).isEnabled
+                            enabled: Cura.MachineManager.numberExtrudersEnabled > 1
                         }
 
                     }

+ 1 - 0
resources/qml/SidebarHeader.qml

@@ -178,6 +178,7 @@ Column
                         text: catalog.i18nc("@action:inmenu", "Disable Extruder")
                         onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false)
                         visible: extruder_enabled
+                        enabled: Cura.MachineManager.numberExtrudersEnabled > 1
                     }
                 }