diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index fc75026475..63831a4bb8 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -73,10 +73,7 @@ class LayerView(View): Preferences.getInstance().addPreference("view/force_layer_view_compatibility_mode", False) Preferences.getInstance().addPreference("layerview/layer_view_type", 0) - Preferences.getInstance().addPreference("layerview/extruder0_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder1_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder2_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder3_opacity", 1.0) + Preferences.getInstance().addPreference("layerview/extruder_opacities", "") Preferences.getInstance().addPreference("layerview/show_travel_moves", False) Preferences.getInstance().addPreference("layerview/show_support", True) @@ -392,10 +389,13 @@ class LayerView(View): self.setLayerViewType(int(float(Preferences.getInstance().getValue("layerview/layer_view_type")))); - self.setExtruderOpacity(0, float(Preferences.getInstance().getValue("layerview/extruder0_opacity"))) - self.setExtruderOpacity(1, float(Preferences.getInstance().getValue("layerview/extruder1_opacity"))) - self.setExtruderOpacity(2, float(Preferences.getInstance().getValue("layerview/extruder2_opacity"))) - self.setExtruderOpacity(3, float(Preferences.getInstance().getValue("layerview/extruder3_opacity"))) + extruder_nr = 0 + for extruder_opacity in Preferences.getInstance().getValue("layerview/extruder_opacities").split(","): + try: + opacity = float(extruder_opacity) + except ValueError: + opacity = 1.0 + self.setExtruderOpacity(extruder_nr, opacity) self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) self.setShowSupport(bool(Preferences.getInstance().getValue("layerview/show_support"))) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index e2581a568c..f9143a89ad 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -214,10 +214,7 @@ Item onPreferenceChanged: { layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); - view_settings.extruder0_checked = UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5; - view_settings.extruder1_checked = UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5; - view_settings.extruder2_checked = UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5; - view_settings.extruder3_checked = UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5; + view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split(","); view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); view_settings.show_support = UM.Preferences.getValue("layerview/show_support"); view_settings.show_adhesion = UM.Preferences.getValue("layerview/show_adhesion"); @@ -231,10 +228,7 @@ Item ColumnLayout { id: view_settings - property bool extruder0_checked: UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5 - property bool extruder1_checked: UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5 - property bool extruder2_checked: UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5 - property bool extruder3_checked: UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5 + property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split(",") property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") property bool show_support: UM.Preferences.getValue("layerview/show_support") property bool show_adhesion: UM.Preferences.getValue("layerview/show_adhesion") @@ -248,42 +242,19 @@ Item anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - CheckBox { - checked: view_settings.extruder0_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder0_opacity", checked ? 1.0 : 0.0); + Repeater { + model: UM.LayerView.extruderCount + CheckBox { + checked: [undefined, ""].indexOf(view_settings.extruder_opacities[index]) >= 0 || view_settings.extruder_opacities[index] > 0.5 + onClicked: { + view_settings.extruder_opacities[index] = checked ? 1.0 : 0.0 + UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.toString()); + } + text: catalog.i18nc("@label", "Extruder %1").arg(index + 1) + visible: !UM.LayerView.compatibilityMode } - text: "Extruder 1" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 1) - } - CheckBox { - checked: view_settings.extruder1_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder1_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 2" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 2) - } - CheckBox { - checked: view_settings.extruder2_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder2_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 3" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.etruderCount >= 3) - } - CheckBox { - checked: view_settings.extruder3_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder3_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 4" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 4) - } - Label { - text: "Other extruders always visible" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 5) } + CheckBox { checked: view_settings.show_travel_moves onClicked: {