mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-13 01:37:51 -06:00
CURA-4606 ensure that setting a new machine ends with correct quality (changes) group
This commit is contained in:
parent
b9e7ee18a6
commit
9e9d981acd
1 changed files with 32 additions and 6 deletions
|
@ -47,6 +47,10 @@ class MachineManager(QObject):
|
||||||
self._active_container_stack = None # type: CuraContainerStack
|
self._active_container_stack = None # type: CuraContainerStack
|
||||||
self._global_container_stack = None # type: GlobalStack
|
self._global_container_stack = None # type: GlobalStack
|
||||||
|
|
||||||
|
self._current_root_material_id = {}
|
||||||
|
self._current_quality_group = None
|
||||||
|
self._current_quality_changes_group = None
|
||||||
|
|
||||||
self.machine_extruder_material_update_dict = collections.defaultdict(list)
|
self.machine_extruder_material_update_dict = collections.defaultdict(list)
|
||||||
|
|
||||||
# Used to store the new containers until after confirming the dialog
|
# Used to store the new containers until after confirming the dialog
|
||||||
|
@ -65,8 +69,9 @@ class MachineManager(QObject):
|
||||||
self._instance_container_timer.setSingleShot(True)
|
self._instance_container_timer.setSingleShot(True)
|
||||||
self._instance_container_timer.timeout.connect(self.__emitChangedSignals)
|
self._instance_container_timer.timeout.connect(self.__emitChangedSignals)
|
||||||
|
|
||||||
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
self._application = Application.getInstance()
|
||||||
Application.getInstance().getContainerRegistry().containerLoadComplete.connect(self._onInstanceContainersChanged)
|
self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
||||||
|
self._application.getContainerRegistry().containerLoadComplete.connect(self._onInstanceContainersChanged)
|
||||||
|
|
||||||
## When the global container is changed, active material probably needs to be updated.
|
## When the global container is changed, active material probably needs to be updated.
|
||||||
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
||||||
|
@ -123,10 +128,6 @@ class MachineManager(QObject):
|
||||||
if containers:
|
if containers:
|
||||||
containers[0].nameChanged.connect(self._onMaterialNameChanged)
|
containers[0].nameChanged.connect(self._onMaterialNameChanged)
|
||||||
|
|
||||||
### NEW
|
|
||||||
self._current_root_material_id = {}
|
|
||||||
self._current_quality_group = None
|
|
||||||
self._current_quality_changes_group = None
|
|
||||||
|
|
||||||
### NEW
|
### NEW
|
||||||
activeQualityGroupChanged = pyqtSignal()
|
activeQualityGroupChanged = pyqtSignal()
|
||||||
|
@ -273,6 +274,30 @@ class MachineManager(QObject):
|
||||||
elif property_name == "validationState":
|
elif property_name == "validationState":
|
||||||
self._error_check_timer.start()
|
self._error_check_timer.start()
|
||||||
|
|
||||||
|
## Given a global_stack, make sure that it's all valid by searching for this quality group and applying it again
|
||||||
|
def _initMachineState(self, global_stack):
|
||||||
|
material_dict = {}
|
||||||
|
for position, extruder in global_stack.extruders.items():
|
||||||
|
material_dict[position] = extruder.material.getMetaDataEntry("base_file")
|
||||||
|
self._current_root_material_id = material_dict
|
||||||
|
global_quality = global_stack.quality
|
||||||
|
global_quality_changes = global_stack.qualityChanges
|
||||||
|
|
||||||
|
quality_groups = self._application._quality_manager.getQualityGroups(global_stack)
|
||||||
|
quality_type = global_quality.getMetaDataEntry("quality_type")
|
||||||
|
if quality_type in quality_groups:
|
||||||
|
new_quality_group = quality_groups[quality_type]
|
||||||
|
else:
|
||||||
|
new_quality_group = quality_groups.values()[0]
|
||||||
|
Logger.log("e", "Quality type [%s] not found in available qualities [%s]", quality_type, str(quality_groups.values()))
|
||||||
|
self._setQualityGroup(new_quality_group)
|
||||||
|
|
||||||
|
if global_quality_changes.getId() != "empty_quality_changes":
|
||||||
|
quality_changes_groups = self._application._quality_manager.getQualityChangesGroups(global_stack)
|
||||||
|
if quality_type in quality_changes_groups:
|
||||||
|
new_quality_changes_group = quality_changes_groups[quality_type]
|
||||||
|
self._setQualityChangesGroup(new_quality_changes_group)
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setActiveMachine(self, stack_id: str) -> None:
|
def setActiveMachine(self, stack_id: str) -> None:
|
||||||
self.blurSettings.emit() # Ensure no-one has focus.
|
self.blurSettings.emit() # Ensure no-one has focus.
|
||||||
|
@ -284,6 +309,7 @@ class MachineManager(QObject):
|
||||||
if containers:
|
if containers:
|
||||||
Application.getInstance().setGlobalContainerStack(containers[0])
|
Application.getInstance().setGlobalContainerStack(containers[0])
|
||||||
ExtruderManager.getInstance()._globalContainerStackChanged()
|
ExtruderManager.getInstance()._globalContainerStackChanged()
|
||||||
|
self._initMachineState(containers[0])
|
||||||
|
|
||||||
self.__emitChangedSignals()
|
self.__emitChangedSignals()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue