Show the correct list of qualities and quality change profiles.

Contributes to CURA-2248 Duplicated profile not shown in the profile manager list
This commit is contained in:
Simon Edwards 2016-09-29 12:34:46 +02:00
parent 4a85ee85c1
commit 2742a4ef65
4 changed files with 38 additions and 31 deletions

View file

@ -503,6 +503,7 @@ class CuraApplication(QtApplication):
qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel")
qmlRegisterType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel") 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.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler")
qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel")

View file

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

View file

@ -13,3 +13,4 @@ from .SettingOverrideDecorator import SettingOverrideDecorator
from .QualitySettingsModel import QualitySettingsModel from .QualitySettingsModel import QualitySettingsModel
from .SettingInheritanceManager import SettingInheritanceManager from .SettingInheritanceManager import SettingInheritanceManager
from .ProfilesModel import ProfilesModel from .ProfilesModel import ProfilesModel
from .ProfilesPageModel import ProfilesPageModel

View file

@ -15,37 +15,7 @@ UM.ManagementPage
title: catalog.i18nc("@title:tab", "Profiles"); title: catalog.i18nc("@title:tab", "Profiles");
property var extrudersModel: Cura.ExtrudersModel{} property var extrudersModel: Cura.ExtrudersModel{}
model: UM.InstanceContainersModel model: Cura.ProfilesPageModel { }
{
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];
}
}
section.property: "readOnly" section.property: "readOnly"
section.delegate: Rectangle section.delegate: Rectangle