WIP: Cleanup

This commit is contained in:
Lipu Fei 2018-02-19 21:11:01 +01:00
parent 7e84e7570f
commit 0c3ac090c9
3 changed files with 8 additions and 40 deletions

View file

@ -28,6 +28,7 @@ from . import GlobalStack
from .ExtruderManager import ExtruderManager
from cura.CuraApplication import CuraApplication
from cura.Machines.MachineTools import getMachineDefinitionIDForQualitySearch
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
@ -296,7 +297,7 @@ class CuraContainerRegistry(ContainerRegistry):
elif profile_index < len(machine_extruders) + 1:
# This is assumed to be an extruder profile
extruder_id = Application.getInstance().getMachineManager().getQualityDefinitionId(machine_extruders[profile_index - 1].getBottom())
extruder_id = machine_extruders[profile_index - 1].definition.getId()
if not profile.getMetaDataEntry("extruder"):
profile.addMetaDataEntry("extruder", extruder_id)
else:
@ -356,7 +357,9 @@ class CuraContainerRegistry(ContainerRegistry):
quality_type_criteria = {"quality_type": quality_type}
if self._machineHasOwnQualities():
profile.setDefinition(self._activeQualityDefinition().getId())
global_container_stack = Application.getInstance().getGlobalContainerStack()
definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack)
profile.setDefinition(definition_id)
if self._machineHasOwnMaterials():
active_material_id = self._activeMaterialId()
if active_material_id and active_material_id != "empty": # only update if there is an active material
@ -407,18 +410,6 @@ class CuraContainerRegistry(ContainerRegistry):
result.append( (plugin_id, meta_data) )
return result
## Get the definition to use to select quality profiles for the active machine
# \return the active quality definition object or None if there is no quality definition
def _activeQualityDefinition(self):
global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack:
definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(global_container_stack.getBottom())
definition = self.findDefinitionContainers(id = definition_id)[0]
if definition:
return definition
return None
## Returns true if the current machine requires its own materials
# \return True if the current machine requires its own materials
def _machineHasOwnMaterials(self):

View file

@ -24,6 +24,7 @@ from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.SettingFunction import SettingFunction
from UM.Signal import postponeSignals, CompressTechnique
from cura.Machines.MachineTools import getMachineDefinitionIDForQualitySearch
from cura.QualityManager import QualityManager
from cura.PrinterOutputDevice import PrinterOutputDevice
@ -698,35 +699,12 @@ class MachineManager(QObject):
## Get the Definition ID to use to select quality profiles for the currently active machine
# \returns DefinitionID (string) if found, empty string otherwise
# \sa getQualityDefinitionId
@pyqtProperty(str, notify = globalContainerChanged)
def activeQualityDefinitionId(self) -> str:
if self._global_container_stack:
return self.getQualityDefinitionId(self._global_container_stack.definition)
return getMachineDefinitionIDForQualitySearch(self._global_container_stack)
return ""
## Get the Definition ID to use to select quality profiles for machines of the specified definition
# This is normally the id of the definition itself, but machines can specify a different definition to inherit qualities from
# \param definition (DefinitionContainer) machine definition
# \returns DefinitionID (string) if found, empty string otherwise
def getQualityDefinitionId(self, definition: "DefinitionContainer") -> str:
return QualityManager.getInstance().getParentMachineDefinition(definition).getId()
## Get the Variant ID to use to select quality profiles for variants of the specified definitions
# This is normally the id of the variant itself, but machines can specify a different definition
# to inherit qualities from, which has consequences for the variant to use as well
# \param definition (DefinitionContainer) machine definition
# \param variant (InstanceContainer) variant definition
# \returns VariantID (string) if found, empty string otherwise
def getQualityVariantId(self, definition: "DefinitionContainer", variant: "InstanceContainer") -> str:
variant_id = variant.getId()
definition_id = definition.getId()
quality_definition_id = self.getQualityDefinitionId(definition)
if definition_id != quality_definition_id:
variant_id = variant_id.replace(definition_id, quality_definition_id, 1)
return variant_id
## Gets how the active definition calls variants
# Caveat: per-definition-variant-title is currently not translated (though the fallback is)
@pyqtProperty(str, notify = globalContainerChanged)

View file

@ -147,8 +147,7 @@ Item
{
text: catalog.i18nc("@action:button", "Export")
iconName: "document-export"
//enabled: currentItem != null && !base.currentItem.readOnly
enabled: true // TODO
enabled: base.hasCurrentItem && !base.currentItem.is_read_only
onClicked: {
// TODO
}