diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e259b27e63..de2511d283 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -241,7 +241,6 @@ class CuraApplication(QtApplication): Preferences.getInstance().addPreference("mesh/scale_tiny_meshes", True) Preferences.getInstance().addPreference("cura/dialog_on_project_save", True) Preferences.getInstance().addPreference("cura/asked_dialog_on_project_save", False) - Preferences.getInstance().addPreference("view/force_layer_view_compatibility_mode", False) Preferences.getInstance().addPreference("cura/currency", "€") Preferences.getInstance().addPreference("cura/material_settings", "{}") diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 77c17a0aea..e95c63c159 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -70,8 +70,22 @@ class LayerView(View): Preferences.getInstance().addPreference("view/top_layer_count", 5) Preferences.getInstance().addPreference("view/only_show_top_layers", False) + 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/show_travel_moves", False) + Preferences.getInstance().addPreference("layerview/show_support", True) + Preferences.getInstance().addPreference("layerview/show_adhesion", True) + Preferences.getInstance().addPreference("layerview/show_skin", True) + Preferences.getInstance().addPreference("layerview/show_infill", True) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) + self._updateWithPreferences() self._solid_layers = int(Preferences.getInstance().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) @@ -370,18 +384,48 @@ class LayerView(View): self._top_layers_job = None - def _onPreferencesChanged(self, preference): - if preference not in {"view/top_layer_count", "view/only_show_top_layers", "view/force_layer_view_compatibility_mode"}: - return - + def _updateWithPreferences(self): self._solid_layers = int(Preferences.getInstance().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) self._compatibility_mode = OpenGLContext.isLegacyOpenGL() or bool( Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) + 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"))) + + self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) + self.setShowSupport(bool(Preferences.getInstance().getValue("layerview/show_support"))) + self.setShowAdhesion(bool(Preferences.getInstance().getValue("layerview/show_adhesion"))) + self.setShowSkin(bool(Preferences.getInstance().getValue("layerview/show_skin"))) + self.setShowInfill(bool(Preferences.getInstance().getValue("layerview/show_infill"))) + self._startUpdateTopLayers() self.preferencesChanged.emit() + def _onPreferencesChanged(self, preference): + if preference not in { + "view/top_layer_count", + "view/only_show_top_layers", + "view/force_layer_view_compatibility_mode", + "layerview/layer_view_type", + "layerview/extruder0_opacity", + "layerview/extruder1_opacity", + "layerview/extruder2_opacity", + "layerview/extruder3_opacity", + "layerview/show_travel_moves", + "layerview/show_support", + "layerview/show_adhesion", + "layerview/show_skin", + "layerview/show_infill", + }: + return + + self._updateWithPreferences() + def _getLegendItems(self): if self._legend_items is None: theme = Application.getInstance().getTheme() diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 7713b796a9..a2d86144fe 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -177,19 +177,27 @@ Item anchors.left: parent.left model: layerViewTypes visible: !UM.LayerView.compatibilityMode + property int layer_view_type: UM.Preferences.getValue("layerview/layer_view_type") + currentIndex: layer_view_type // index matches type_id onActivated: { + // Combobox selection var type_id = layerViewTypes.get(index).type_id; - UM.LayerView.setLayerViewType(type_id); - if (type_id == 1) { + UM.Preferences.setValue("layerview/layer_view_type", type_id); + updateLegend(); + } + onModelChanged: { + updateLegend(); + } + // Update visibility of legend. + function updateLegend() { + var type_id = layerViewTypes.get(currentIndex).type_id; + if (UM.LayerView.compatibilityMode || (type_id == 1)) { // Line type UM.LayerView.enableLegend(); } else { UM.LayerView.disableLegend(); } } - onModelChanged: { - currentIndex = UM.LayerView.getLayerViewType(); - } } Label @@ -201,41 +209,69 @@ Item visible: UM.LayerView.compatibilityMode } + Connections { + target: UM.Preferences + 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.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"); + view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); + view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); + } + } + 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 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") + property bool show_skin: UM.Preferences.getValue("layerview/show_skin") + property bool show_infill: UM.Preferences.getValue("layerview/show_infill") + anchors.top: UM.LayerView.compatibilityMode ? compatibilityModeLabel.bottom : layerTypeCombobox.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width CheckBox { - checked: true + checked: view_settings.extruder0_checked onClicked: { - UM.LayerView.setExtruderOpacity(0, checked ? 1.0 : 0.0); + UM.Preferences.setValue("layerview/extruder0_opacity", checked ? 1.0 : 0.0); } text: "Extruder 1" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.getExtruderCount >= 1) } CheckBox { - checked: true + checked: view_settings.extruder1_checked onClicked: { - UM.LayerView.setExtruderOpacity(1, checked ? 1.0 : 0.0); + UM.Preferences.setValue("layerview/extruder1_opacity", checked ? 1.0 : 0.0); } text: "Extruder 2" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.getExtruderCount >= 2) } CheckBox { - checked: true + checked: view_settings.extruder2_checked onClicked: { - UM.LayerView.setExtruderOpacity(2, checked ? 1.0 : 0.0); + UM.Preferences.setValue("layerview/extruder2_opacity", checked ? 1.0 : 0.0); } text: "Extruder 3" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.getExtruderCount >= 3) } CheckBox { - checked: true + checked: view_settings.extruder3_checked onClicked: { - UM.LayerView.setExtruderOpacity(3, checked ? 1.0 : 0.0); + UM.Preferences.setValue("layerview/extruder3_opacity", checked ? 1.0 : 0.0); } text: "Extruder 4" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.getExtruderCount >= 4) @@ -245,36 +281,37 @@ Item visible: !UM.LayerView.compatibilityMode && (UM.LayerView.getExtruderCount >= 5) } CheckBox { + checked: view_settings.show_travel_moves onClicked: { - UM.LayerView.setShowTravelMoves(checked ? 1 : 0); + UM.Preferences.setValue("layerview/show_travel_moves", checked); } text: "Show travel moves" } CheckBox { - checked: true + checked: view_settings.show_support onClicked: { - UM.LayerView.setShowSupport(checked ? 1 : 0); + UM.Preferences.setValue("layerview/show_support", checked); } text: "Show support" } CheckBox { - checked: true + checked: view_settings.show_adhesion onClicked: { - UM.LayerView.setShowAdhesion(checked ? 1 : 0); + UM.Preferences.setValue("layerview/show_adhesion", checked); } text: "Show adhesion" } CheckBox { - checked: true + checked: view_settings.show_skin onClicked: { - UM.LayerView.setShowSkin(checked ? 1 : 0); + UM.Preferences.setValue("layerview/show_skin", checked); } text: "Show skin" } CheckBox { - checked: true + checked: view_settings.show_infill onClicked: { - UM.LayerView.setShowInfill(checked ? 1 : 0); + UM.Preferences.setValue("layerview/show_infill", checked); } text: "Show infill" }