|
@@ -73,38 +73,40 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand
|
|
|
|
|
|
# Add all instances that are not added, but are in visibility list
|
|
|
for item in visible:
|
|
|
- if settings.getInstance(item) is None: # Setting was not added already.
|
|
|
- definition = self._stack.getSettingDefinition(item)
|
|
|
- if definition:
|
|
|
- new_instance = SettingInstance(definition, settings)
|
|
|
+ if settings.getInstance(item) is not None: # Setting was added already.
|
|
|
+ continue
|
|
|
+ definition = self._stack.getSettingDefinition(item)
|
|
|
+ if not definition:
|
|
|
+ Logger.log("w", f"Unable to add instance ({item}) to per-object visibility because we couldn't find the matching definition.")
|
|
|
+ continue
|
|
|
+
|
|
|
+ new_instance = SettingInstance(definition, settings)
|
|
|
+ stack_nr = -1
|
|
|
+ stack = None
|
|
|
+ # Check from what stack we should copy the raw property of the setting from.
|
|
|
+ if self._stack.getProperty("machine_extruder_count", "value") > 1:
|
|
|
+ if definition.limit_to_extruder != "-1":
|
|
|
+ # A limit to extruder function was set and it's a multi extrusion machine. Check what stack we do need to use.
|
|
|
+ stack_nr = str(int(round(float(self._stack.getProperty(item, "limit_to_extruder")))))
|
|
|
+
|
|
|
+ # Check if the found stack_number is in the extruder list of extruders.
|
|
|
+ if stack_nr not in ExtruderManager.getInstance().extruderIds and self._stack.getProperty("extruder_nr", "value") is not None:
|
|
|
stack_nr = -1
|
|
|
- stack = None
|
|
|
- # Check from what stack we should copy the raw property of the setting from.
|
|
|
- if self._stack.getProperty("machine_extruder_count", "value") > 1:
|
|
|
- if definition.limit_to_extruder != "-1":
|
|
|
- # A limit to extruder function was set and it's a multi extrusion machine. Check what stack we do need to use.
|
|
|
- stack_nr = str(int(round(float(self._stack.getProperty(item, "limit_to_extruder")))))
|
|
|
-
|
|
|
- # Check if the found stack_number is in the extruder list of extruders.
|
|
|
- if stack_nr not in ExtruderManager.getInstance().extruderIds and self._stack.getProperty("extruder_nr", "value") is not None:
|
|
|
- stack_nr = -1
|
|
|
-
|
|
|
- # Use the found stack number to get the right stack to copy the value from.
|
|
|
- if stack_nr in ExtruderManager.getInstance().extruderIds:
|
|
|
- stack = ContainerRegistry.getInstance().findContainerStacks(id = ExtruderManager.getInstance().extruderIds[stack_nr])[0]
|
|
|
- else:
|
|
|
- stack = self._stack
|
|
|
-
|
|
|
- # Use the raw property to set the value (so the inheritance doesn't break)
|
|
|
- if stack is not None:
|
|
|
- new_instance.setProperty("value", stack.getRawProperty(item, "value"))
|
|
|
- else:
|
|
|
- new_instance.setProperty("value", None)
|
|
|
- new_instance.resetState() # Ensure that the state is not seen as a user state.
|
|
|
- settings.addInstance(new_instance)
|
|
|
- visibility_changed = True
|
|
|
- else:
|
|
|
- Logger.log("w", "Unable to add instance (%s) to per-object visibility because we couldn't find the matching definition", item)
|
|
|
+
|
|
|
+ # Use the found stack number to get the right stack to copy the value from.
|
|
|
+ if stack_nr in ExtruderManager.getInstance().extruderIds:
|
|
|
+ stack = ContainerRegistry.getInstance().findContainerStacks(id = ExtruderManager.getInstance().extruderIds[stack_nr])[0]
|
|
|
+ else:
|
|
|
+ stack = self._stack
|
|
|
+
|
|
|
+ # Use the raw property to set the value (so the inheritance doesn't break)
|
|
|
+ if stack is not None:
|
|
|
+ new_instance.setProperty("value", stack.getRawProperty(item, "value"))
|
|
|
+ else:
|
|
|
+ new_instance.setProperty("value", None)
|
|
|
+ new_instance.resetState() # Ensure that the state is not seen as a user state.
|
|
|
+ settings.addInstance(new_instance)
|
|
|
+ visibility_changed = True
|
|
|
|
|
|
if visibility_changed:
|
|
|
self.visibilityChanged.emit()
|