From f659d01da185380268ff18fd5f0e2bf0dea7307d Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Thu, 13 Oct 2016 10:55:32 +0200 Subject: [PATCH 1/2] Make the labels in the quality menus match those from the selected extruder. CURA-2271 Warn for unsupported material/printcore combinations --- cura/QualityManager.py | 3 ++- cura/Settings/ProfilesModel.py | 11 ++++++++++- cura/Settings/QualityAndUserProfilesModel.py | 12 ++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index c356951156..09e9d283ed 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -131,7 +131,8 @@ class QualityManager: # # \param global_container_stack \type{ContainerStack} the global machine definition # \param extruder_stacks \type{List[ContainerStack]} the list of extruder stacks - # \return \type{List[InstanceContainer]} the list of the matching qualities + # \return \type{List[InstanceContainer]} the list of the matching qualities. The quality profiles + # return come from the first extruder in the given list of extruders. def findAllUsableQualitiesForMachineAndExtruders(self, global_container_stack, extruder_stacks): global_machine_definition = global_container_stack.getBottom() diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 5b82ce9221..8c0cb1a93c 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -28,5 +28,14 @@ class ProfilesModel(InstanceContainersModel): if global_container_stack is None: return [] + # Get the list of extruders and place the selected extruder at the front of the list. + extruder_manager = ExtruderManager.getInstance() + active_extruder = extruder_manager.getActiveExtruderStack() + extruder_stacks = extruder_manager.getActiveExtruderStacks() + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + + # Fetch the list of useable qualities across all extruders. + # The actual list of quality profiles come from the first extruder in the extruder list. return QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, - ExtruderManager.getInstance().getActiveExtruderStacks()) + extruder_stacks) diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index dcb6c698cf..3ca5507c5b 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -25,9 +25,17 @@ class QualityAndUserProfilesModel(ProfilesModel): machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - # Fetch the list of qualities + # Get the list of extruders and place the selected extruder at the front of the list. + extruder_manager = ExtruderManager.getInstance() + active_extruder = extruder_manager.getActiveExtruderStack() + extruder_stacks = extruder_manager.getActiveExtruderStacks() + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + + # Fetch the list of useable qualities across all extruders. + # The actual list of quality profiles come from the first extruder in the extruder list. quality_list = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, - ExtruderManager.getInstance().getActiveExtruderStacks()) + extruder_stacks) # Filter the quality_change by the list of available quality_types quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list]) From f7fe59c7074214f5b57e5fdb14fb5dd37bac6918 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Thu, 13 Oct 2016 11:10:40 +0200 Subject: [PATCH 2/2] A small fix for the case when Cura is starting up and there is no printer. CURA-2271 Warn for unsupported material/printcore combinations --- cura/Settings/ProfilesModel.py | 5 +++-- cura/Settings/QualityAndUserProfilesModel.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 8c0cb1a93c..0f7c8c1ae7 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -32,8 +32,9 @@ class ProfilesModel(InstanceContainersModel): extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks # Fetch the list of useable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list. diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index 3ca5507c5b..db093126cc 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -29,8 +29,9 @@ class QualityAndUserProfilesModel(ProfilesModel): extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks # Fetch the list of useable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list.