Browse Source

Refactor skip reset setting

CURA-4760
Lipu Fei 7 years ago
parent
commit
30870c5ef2

+ 6 - 4
plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py

@@ -22,7 +22,9 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
         self._selected_object_id = None
         self._selected_object_id = None
         self._node = None
         self._node = None
         self._stack = None
         self._stack = None
-        self._skip_setting = None
+
+        # this is a set of settings that will be skipped if the user chooses to reset.
+        self._skip_reset_setting_set = set()
 
 
     def setSelectedObjectId(self, id):
     def setSelectedObjectId(self, id):
         if id != self._selected_object_id:
         if id != self._selected_object_id:
@@ -39,8 +41,8 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
         return self._selected_object_id
         return self._selected_object_id
 
 
     @pyqtSlot(str)
     @pyqtSlot(str)
-    def setSkipSetting(self, setting_name):
-        self._skip_setting = setting_name
+    def addSkipResetSetting(self, setting_name):
+        self._skip_reset_setting_set.add(setting_name)
 
 
     def setVisible(self, visible):
     def setVisible(self, visible):
         if not self._node:
         if not self._node:
@@ -57,7 +59,7 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
         # Remove all instances that are not in visibility list
         # Remove all instances that are not in visibility list
         for instance in all_instances:
         for instance in all_instances:
             # exceptionally skip setting
             # exceptionally skip setting
-            if self._skip_setting is not None and self._skip_setting == instance.definition.key:
+            if instance.definition.key in self._skip_reset_setting_set:
                 continue
                 continue
             if instance.definition.key not in visible:
             if instance.definition.key not in visible:
                 settings.removeInstance(instance.definition.key)
                 settings.removeInstance(instance.definition.key)

+ 2 - 2
plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml

@@ -324,8 +324,8 @@ Item {
             // force updating the model to sync it with addedSettingsModel
             // force updating the model to sync it with addedSettingsModel
             if(visible)
             if(visible)
             {
             {
-                // Set skip setting, it will prevent from restting selected mesh_type
-                contents.model.visibilityHandler.setSkipSetting(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type)
+                // Set skip setting, it will prevent from resetting selected mesh_type
+                contents.model.visibilityHandler.addSkipResetSetting(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type)
                 listview.model.forceUpdate()
                 listview.model.forceUpdate()
             }
             }
         }
         }