From 670a10695777f5d6db1369666a67e5232cace6ee Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 28 Feb 2020 17:03:38 +0100 Subject: [PATCH] Be a bit more gracefull when adding a machine failed This seems to happen for people that manually add machines to cura but mess something up when copying the files. CURA-3X --- cura/Settings/CuraStackBuilder.py | 5 ++++- cura/Settings/MachineManager.py | 8 +++++--- .../qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml | 7 ++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 61a04e1be6..c8287696ae 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -58,7 +58,10 @@ class CuraStackBuilder: # Create ExtruderStacks extruder_dict = machine_definition.getMetaDataEntry("machine_extruder_trains") for position in extruder_dict: - cls.createExtruderStackWithDefaultSetup(new_global_stack, position) + try: + cls.createExtruderStackWithDefaultSetup(new_global_stack, position) + except IndexError: + return None for new_extruder in new_global_stack.extruders.values(): # Only register the extruders if we're sure that all of them are correct. registry.addContainer(new_extruder) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index b70cdfd1ec..6b1460b17b 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -347,9 +347,9 @@ class MachineManager(QObject): return cast(GlobalStack, machine) return None - @pyqtSlot(str) - @pyqtSlot(str, str) - def addMachine(self, definition_id: str, name: Optional[str] = None) -> None: + @pyqtSlot(str, result=bool) + @pyqtSlot(str, str, result = bool) + def addMachine(self, definition_id: str, name: Optional[str] = None) -> bool: Logger.log("i", "Trying to add a machine with the definition id [%s]", definition_id) if name is None: definitions = CuraContainerRegistry.getInstance().findDefinitionContainers(id = definition_id) @@ -364,6 +364,8 @@ class MachineManager(QObject): self.setActiveMachine(new_stack.getId()) else: Logger.log("w", "Failed creating a new machine!") + return False + return True def _checkStacksHaveErrors(self) -> bool: time_start = time.time() diff --git a/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml index 81dd345f3f..e3018a6825 100644 --- a/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml +++ b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml @@ -151,9 +151,10 @@ Item // Create a local printer const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem const printerName = addLocalPrinterDropDown.contentItem.printerName - Cura.MachineManager.addMachine(localPrinterItem.id, printerName) - - base.showNextPage() + if(Cura.MachineManager.addMachine(localPrinterItem.id, printerName)) + { + base.showNextPage() + } } } }