diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 832e247d19..3672066678 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -112,7 +112,13 @@ class MachineSettingsAction(MachineAction): if not self._global_container_stack: return 0 - return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains")) + # If there is a printer that originally is multi-extruder, it's not allowed to change the number of extruders + # It's just allowed in case of Custom FDM printers + definition_container = self._global_container_stack.getBottom() + if definition_container.getId() == "custom": + return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains")) + return 0 + @pyqtSlot(int) def setMachineExtruderCount(self, extruder_count): diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3a104e81a1..ffc34ca302 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -309,7 +309,7 @@ Item text: catalog.i18nc("@label", "Slower") font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") + color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignLeft } @@ -320,7 +320,7 @@ Item text: catalog.i18nc("@label", "Faster") font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") + color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignRight } } @@ -354,8 +354,6 @@ Item } } - - Item { id: infillCellRight @@ -395,7 +393,7 @@ Item minimumValue: 0 maximumValue: 100 - stepSize: 10 + stepSize: (parseInt(infillDensity.properties.value) % 10 == 0) ? 10 : 1 tickmarksEnabled: true // disable slider when gradual support is enabled @@ -405,12 +403,12 @@ Item value: parseInt(infillDensity.properties.value) onValueChanged: { - infillDensity.setPropertyValue("value", infillSlider.value) + // Explicitly cast to string to make sure the value passed to Python is an integer. + infillDensity.setPropertyValue("value", String(parseInt(infillSlider.value))) } style: SliderStyle { - groove: Rectangle { id: groove implicitWidth: 200 * screenScaleFactor @@ -433,6 +431,15 @@ Item tickmarks: Repeater { id: repeater model: control.maximumValue / control.stepSize + 1 + + // check if a tick should be shown based on it's index and wether the infill density is a multiple of 10 (slider step size) + function shouldShowTick (index) { + if ((parseInt(infillDensity.properties.value) % 10 == 0) || (index % 10 == 0)) { + return true + } + return false + } + Rectangle { anchors.verticalCenter: parent.verticalCenter color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") @@ -440,6 +447,7 @@ Item height: 6 * screenScaleFactor y: 0 x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) + visible: shouldShowTick(index) } } } @@ -485,7 +493,7 @@ Item visible: infillIconList.activeIndex == index border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("quality_slider_available") + border.color: UM.Theme.getColor("quality_slider_unavailable") UM.RecolorImage { anchors.fill: parent @@ -505,7 +513,7 @@ Item property alias _hovered: enableGradualInfillMouseArea.containsMouse anchors.top: infillSlider.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 // closer to slider since it belongs to the same category anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox @@ -725,15 +733,19 @@ Item { id: adhesionHelperLabel visible: adhesionCheckBox.visible - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: infillCellLeft.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.verticalCenter: adhesionCheckBox.verticalCenter - text: catalog.i18nc("@label", "Build Plate Adhesion"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + + text: catalog.i18nc("@label", "Build Plate Adhesion") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") elide: Text.ElideRight + + anchors { + left: parent.left + leftMargin: UM.Theme.getSize("sidebar_margin").width + right: infillCellLeft.right + rightMargin: UM.Theme.getSize("sidebar_margin").width + verticalCenter: adhesionCheckBox.verticalCenter + } } CheckBox @@ -828,7 +840,6 @@ Item UM.SettingPropertyProvider { id: infillExtruderNumber - containerStackId: Cura.MachineManager.activeStackId key: "infill_extruder_nr" watchedProperties: [ "value" ]