CURA-4606 ensure startup order for machine manager before build volume to prevent errors there

This commit is contained in:
Jack Ha 2018-02-20 16:04:41 +01:00
parent c56b3bc7bd
commit b96d49c010
3 changed files with 17 additions and 12 deletions

View file

@ -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":