diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index a2dc27f483..152ad05f9a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -240,8 +240,7 @@ class CuraApplication(QtApplication): if kwargs["parsed_command_line"].get("trigger_early_crash", False): assert not "This crash is triggered by the trigger_early_crash command line argument." - # new stuff - self._variant_manager = VariantManager(ContainerRegistry.getInstance()) + self._variant_manager = None self.default_theme = "cura-light" @@ -723,9 +722,6 @@ class CuraApplication(QtApplication): return False return True - def getVariantManager(self): - return self._variant_manager - def preRun(self): # Last check for unknown commandline arguments parser = self.getCommandlineParser() @@ -743,14 +739,15 @@ class CuraApplication(QtApplication): self.preRun() container_registry = ContainerRegistry.getInstance() + self._variant_manager = VariantManager(container_registry) self._variant_manager.initialize() from cura.Machines.MaterialManager import MaterialManager - self._material_manager = MaterialManager(container_registry) + self._material_manager = MaterialManager(container_registry, parent = self) self._material_manager.initialize() from cura.Machines.QualityManager import QualityManager - self._quality_manager = QualityManager(container_registry) + self._quality_manager = QualityManager(container_registry, parent = self) self._quality_manager.initialize() self.getMachineManager() # ensure creation of machine manager @@ -856,6 +853,16 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager.createExtruderManager() return self._extruder_manager + def getVariantManager(self, *args): + return self._variant_manager + + def getMaterialManager(self, *args): + return self._material_manager + + @pyqtSlot(result = QObject) + def getQualityManager(self, *args): + return self._quality_manager + def getObjectsModel(self, *args): if self._object_manager is None: self._object_manager = ObjectsModel.createObjectsModel() diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index ea82af8d7f..10934e7275 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -333,7 +333,7 @@ class ContainerManager(QObject): self._performMerge(quality_changes, stack.getTop()) - self._machine_manager.activeQualityChanged.emit() + self._machine_manager.activeQualityChangesGroupChanged.emit() return True @@ -394,12 +394,6 @@ class ContainerManager(QObject): self._performMerge(new_changes, user_container) self._container_registry.addContainer(new_changes) - #stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_changes) - - #self._machine_manager.activeQualityChanged.emit() - - #self._machine_manager.activeQualityGroupChanged.emit() - #self._machine_manager.activeQualityChangesGroupChanged.emit() # # Remove the given quality changes group diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 6a42034846..cdd87058f0 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -171,8 +171,36 @@ Item object: "" onAccepted: { + base.newQualityChangesNameToSwitchTo = newName; // We want to switch to the new profile once it's created Cura.ContainerManager.createQualityChanges(newName); - qualityListView.currentIndex = -1; // TODO: Reset selection. + } + } + + property string newQualityChangesNameToSwitchTo: "" + + // This connection makes sure that we will switch to the new + Connections + { + target: qualitiesModel + onItemsChanged: { + var currentItemName = base.currentItem == null ? "" : base.currentItem.name; + + for (var idx = 0; idx < qualitiesModel.rowCount(); ++idx) { + var item = qualitiesModel.getItem(idx); + if (base.newQualityChangesNameToSwitchTo != "") { + if (item.name == base.newQualityChangesNameToSwitchTo) { + // Switch to the newly created profile if needed + qualityListView.currentIndex = idx; + if (item.is_read_only) { + Cura.MachineManager.setQualityGroup(item.quality_group); + } else { + Cura.MachineManager.setQualityChangesGroup(item.quality_changes_group); + } + base.newQualityChangesNameToSwitchTo = ""; + } + break; + } + } } }