From 2742a4ef65c28df22ceeb8c949f229f7558c3b85 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Thu, 29 Sep 2016 12:34:46 +0200 Subject: [PATCH] Show the correct list of qualities and quality change profiles. Contributes to CURA-2248 Duplicated profile not shown in the profile manager list --- cura/CuraApplication.py | 1 + cura/Settings/ProfilesPageModel.py | 35 ++++++++++++++++++++++ cura/Settings/__init__.py | 1 + resources/qml/Preferences/ProfilesPage.qml | 32 +------------------- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1c767ffda5..77bc3bbc49 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -503,6 +503,7 @@ class CuraApplication(QtApplication): qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") qmlRegisterType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel") + qmlRegisterType(cura.Settings.ProfilesPageModel, "Cura", 1, 0, "ProfilesPageModel") qmlRegisterType(cura.Settings.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") diff --git a/cura/Settings/ProfilesPageModel.py b/cura/Settings/ProfilesPageModel.py index e69de29bb2..77ed9b3bd3 100644 --- a/cura/Settings/ProfilesPageModel.py +++ b/cura/Settings/ProfilesPageModel.py @@ -0,0 +1,35 @@ +# Copyright (c) 2016 Ultimaker B.V. +# Uranium is released under the terms of the AGPLv3 or higher. +from UM.Application import Application +from UM.Settings.ContainerRegistry import ContainerRegistry + +from cura.QualityManager import QualityManager +from cura.Settings.ProfilesModel import ProfilesModel + +## QML Model for listing the current list of valid quality and quality changes profiles. +# +class ProfilesPageModel(ProfilesModel): + def __init__(self, parent = None): + super().__init__(parent) + + ## Fetch the list of containers to display. + # + # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). + def _fetchInstanceContainers(self): + # Fetch the list of qualities + quality_list = super()._fetchInstanceContainers() + + # Fetch the list of quality changes. + quality_manager = QualityManager.getInstance() + application = Application.getInstance() + + machine_definition = quality_manager.getParentMachineDefinition(application.getGlobalContainerStack().getBottom()) + if machine_definition.getMetaDataEntry("has_machine_quality"): + definition_id = machine_definition.getId() + else: + definition_id = "fdmprinter" + + filter_dict = { "type": "quality_changes", "extruder": None, "definition": definition_id } + quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict) + + return quality_list + quality_changes_list diff --git a/cura/Settings/__init__.py b/cura/Settings/__init__.py index b5773d560a..6957e5031c 100644 --- a/cura/Settings/__init__.py +++ b/cura/Settings/__init__.py @@ -13,3 +13,4 @@ from .SettingOverrideDecorator import SettingOverrideDecorator from .QualitySettingsModel import QualitySettingsModel from .SettingInheritanceManager import SettingInheritanceManager from .ProfilesModel import ProfilesModel +from .ProfilesPageModel import ProfilesPageModel diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index d6eb82246d..244e33f3f5 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -15,37 +15,7 @@ UM.ManagementPage title: catalog.i18nc("@title:tab", "Profiles"); property var extrudersModel: Cura.ExtrudersModel{} - model: UM.InstanceContainersModel - { - filterList: - { - var qualityFilter = { "type": "quality", "extruder": null }; - if(Cura.MachineManager.filterQualityByMachine) - { - qualityFilter.definition = Cura.MachineManager.activeQualityDefinitionId; - if(Cura.MachineManager.hasMaterials) - { - qualityFilter.material = Cura.MachineManager.allActiveMaterialIds[Cura.MachineManager.activeMachineId]; - } - } - else - { - qualityFilter.definition = "fdmprinter"; - } - - var qualityChangeFilter = { "type": "quality_changes", "extruder": null }; - if(Cura.MachineManager.filterQualityByMachine) - { - qualityChangeFilter.definition = Cura.MachineManager.activeQualityDefinitionId; - } - else - { - qualityChangeFilter.definition = "fdmprinter"; - } - - return [qualityFilter, qualityChangeFilter]; - } - } + model: Cura.ProfilesPageModel { } section.property: "readOnly" section.delegate: Rectangle