Browse Source

LayerView checkboxes are not remembered; added switching Legend on for compatibility mode. CURA-3273

Jack Ha 8 years ago
parent
commit
b229d38a88
3 changed files with 107 additions and 27 deletions
  1. 0 1
      cura/CuraApplication.py
  2. 48 4
      plugins/LayerView/LayerView.py
  3. 59 22
      plugins/LayerView/LayerView.qml

+ 0 - 1
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", "{}")

+ 48 - 4
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()

+ 59 - 22
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"
             }