diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 41f5fbc4b2..b66bdcb6a8 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -754,6 +754,8 @@ class CuraApplication(QtApplication): self._quality_manager = QualityManager(container_registry) self._quality_manager.initialize() + self.getMachineManager() # ensure creation of machine manager + # Check if we should run as single instance or not self._setUpSingleInstanceServer() diff --git a/cura/Machines/Models/QualityProfilesModel.py b/cura/Machines/Models/QualityProfilesModel.py index 28edf9c888..034852a101 100644 --- a/cura/Machines/Models/QualityProfilesModel.py +++ b/cura/Machines/Models/QualityProfilesModel.py @@ -43,6 +43,8 @@ class QualityProfilesModel(ListModel): self._layer_height_unit = "" # This is cached + self._update() + def _update(self): Logger.log("d", "Updating quality profile model ...") diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index c35c8dc004..3844879081 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -107,18 +107,12 @@ class MachineManager(QObject): self._global_event_keys = set() - active_machine_id = Preferences.getInstance().getValue("cura/active_machine") - self._printer_output_devices = [] Application.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) # There might already be some output devices by the time the signal is connected self._onOutputDevicesChanged() - if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacksMetadata(id = active_machine_id): - # An active machine was saved, so restore it. - self.setActiveMachine(active_machine_id) - # Make sure _active_container_stack is properly initiated - ExtruderManager.getInstance().setActiveExtruderIndex(0) + self._application.callLater(self.setInitialActiveMachine) self._material_incompatible_message = Message(catalog.i18nc("@info:status", "The selected material is incompatible with the selected machine or configuration."), @@ -150,6 +144,14 @@ class MachineManager(QObject): rootMaterialChanged = pyqtSignal() + def setInitialActiveMachine(self): + active_machine_id = Preferences.getInstance().getValue("cura/active_machine") + if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacksMetadata(id = active_machine_id): + # An active machine was saved, so restore it. + self.setActiveMachine(active_machine_id) + # Make sure _active_container_stack is properly initiated + ExtruderManager.getInstance().setActiveExtruderIndex(0) + def _onOutputDevicesChanged(self) -> None: self._printer_output_devices = [] for printer_output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices(): @@ -285,11 +287,10 @@ class MachineManager(QObject): 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())) + if not quality_type in quality_groups: + Logger.log("w", "Quality type [%s] not found in available qualities [%s]", quality_type, str(quality_groups.values())) + return + new_quality_group = quality_groups[quality_type] self._setQualityGroup(new_quality_group) if global_quality_changes.getId() != "empty_quality_changes":