Browse Source

CURA-4400 make extruder combobox disabled items grey

Jack Ha 7 years ago
parent
commit
2538c689f1

+ 4 - 0
cura/Settings/ExtrudersModel.py

@@ -24,6 +24,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
 
     ##  Human-readable name of the extruder.
     NameRole = Qt.UserRole + 2
+    ##  Is the extruder enabled?
+    EnabledRole = Qt.UserRole + 9
 
     ##  Colour of the material loaded in the extruder.
     ColorRole = Qt.UserRole + 3
@@ -58,6 +60,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
 
         self.addRoleName(self.IdRole, "id")
         self.addRoleName(self.NameRole, "name")
+        self.addRoleName(self.EnabledRole, "enabled")
         self.addRoleName(self.ColorRole, "color")
         self.addRoleName(self.IndexRole, "index")
         self.addRoleName(self.DefinitionRole, "definition")
@@ -185,6 +188,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
                 item = {
                     "id": extruder.getId(),
                     "name": extruder.getName(),
+                    "enabled": extruder.isEnabled,
                     "color": color,
                     "index": position,
                     "definition": extruder.getBottom().getId(),

+ 3 - 1
cura/Settings/MachineManager.py

@@ -811,10 +811,12 @@ class MachineManager(QObject):
     def setExtruderEnabled(self, position: int, enabled) -> None:
         extruder = self.getExtruder(position)
         extruder.setEnabled(enabled)
+        self.updateDefaultExtruder()
         if enabled == False:
-            self.updateDefaultExtruder()
             self.correctExtruderSettings()
         self.extruderChanged.emit()
+        # HACK to update items in SettingExtruder
+        ExtruderManager.getInstance().extrudersChanged.emit(self._global_container_stack.getId())
 
     def _onMachineNameChanged(self):
         self.globalContainerChanged.emit()

+ 18 - 4
resources/qml/Settings/SettingExtruder.qml

@@ -17,14 +17,22 @@ SettingItem
         id: control
         anchors.fill: parent
 
-        model: Cura.ExtrudersModel { onModelChanged: control.color = getItem(control.currentIndex).color }
+        model: Cura.ExtrudersModel {
+            onModelChanged: {
+                control.color = getItem(control.currentIndex).color;
+            }
+        }
 
         textRole: "name"
 
         onActivated:
         {
-            forceActiveFocus();
-            propertyProvider.setPropertyValue("value", model.getItem(index).index);
+            if (model.getItem(index).enabled) {
+                forceActiveFocus();
+                propertyProvider.setPropertyValue("value", model.getItem(index).index);
+            } else {
+                currentIndex = propertyProvider.properties.value;  // keep the old value
+            }
         }
 
         onActiveFocusChanged:
@@ -173,7 +181,13 @@ SettingItem
             {
                 text: model.name
                 renderType: Text.NativeRendering
-                color: UM.Theme.getColor("setting_control_text")
+                color: {
+                    if (model.enabled) {
+                        UM.Theme.getColor("setting_control_text")
+                    } else {
+                        UM.Theme.getColor("action_button_disabled_text");
+                    }
+                }
                 font: UM.Theme.getFont("default")
                 elide: Text.ElideRight
                 verticalAlignment: Text.AlignVCenter