Uranium
Application Framework
UM.Settings.ContainerRegistry.ContainerRegistry Class Reference

Central class to manage all setting providers. More...

Inheritance diagram for UM.Settings.ContainerRegistry.ContainerRegistry:
UM.Settings.Interfaces.ContainerRegistryInterface

Public Member Functions

None __init__ (self, "QtApplication" application)
 
None addResourceType (self, int resource_type, str container_type)
 
Dict[str, int] getResourceTypes (self)
 Returns all resource types. More...
 
"ContainerProvider" getDefaultSaveProvider (self)
 
None addWrongContainerId (self, str wrong_container_id)
 This method adds the current id to the list of wrong containers that are skipped when looking for a container.
 
None addProvider (self, ContainerProvider provider)
 Adds a container provider to search through containers in. More...
 
List[DefinitionContainerInterface] findDefinitionContainers (self, **Any kwargs)
 Find all DefinitionContainer objects matching certain criteria. More...
 
List[Dict[str, Any]] findDefinitionContainersMetadata (self, **Any kwargs)
 Get the metadata of all definition containers matching certain criteria. More...
 
List[InstanceContainerfindInstanceContainers (self, **Any kwargs)
 Find all InstanceContainer objects matching certain criteria. More...
 
List[Dict[str, Any]] findInstanceContainersMetadata (self, **Any kwargs)
 Find the metadata of all instance containers matching certain criteria. More...
 
List[ContainerStackfindContainerStacks (self, **Any kwargs)
 Find all ContainerStack objects matching certain criteria. More...
 
List[Dict[str, Any]] findContainerStacksMetadata (self, **Any kwargs)
 Find the metadata of all container stacks matching certain criteria. More...
 
List[ContainerInterfacefindContainers (self, *bool ignore_case=False, **Any kwargs)
 Find all container objects matching certain criteria. More...
 
List[Dict[str, Any]] findContainersMetadata (self, *bool ignore_case=False, **Any kwargs)
 Find the metadata of all container objects matching certain criteria. More...
 
List[ContainerInterfacefindDirtyContainers (self, *bool ignore_case=False, **Any kwargs)
 Specialized find function to find only the modified container objects that also match certain criteria. More...
 
InstanceContainer getEmptyInstanceContainer (self)
 This is a small convenience to make it easier to support complex structures in ContainerStacks. More...
 
bool isReadOnly (self, str container_id)
 Returns whether a profile is read-only or not. More...
 
Optional[str] getContainerFilePathById (self, str container_id)
 
bool isLoaded (self, str container_id)
 Returns whether a container is completely loaded or not. More...
 
None loadAllMetadata (self)
 Load the metadata of all available definition containers, instance containers and container stacks. More...
 
None load (self)
 Load all available definition containers, instance containers and container stacks. More...
 
None addContainer (self, ContainerInterface container)
 
None removeContainer (self, str container_id)
 
None renameContainer (self, str container_id, str new_name, Optional[str] new_id=None)
 
str uniqueName (self, str original)
 Creates a new unique name for a container that doesn't exist yet. More...
 
None addContainerType (cls, "PluginObject" container)
 Add a container type that will be used to serialize/deserialize containers. More...
 
None addContainerTypeByName (cls, type container_type, str type_name, str mime_type)
 Used to associate mime types with object to be created. More...
 
Optional[MimeTypegetMimeTypeForContainer (cls, type container_type)
 Retrieve the mime type corresponding to a certain container type. More...
 
def getContainerForMimeType (cls, mime_type)
 Get the container type corresponding to a certain mime type. More...
 
def getContainerTypes (cls)
 Get all the registered container types. More...
 
None saveContainer (self, "ContainerInterface" container, Optional["ContainerProvider"] provider=None)
 Save single dirty container.
 
None saveDirtyContainers (self)
 Save all the dirty containers by calling the appropriate container providers.
 
str getLockFilename (self)
 Get the lock filename including full path Dependent on when you call this function, Resources.getConfigStoragePath may return different paths.
 
str getCacheLockFilename (self)
 Get the cache lock filename including full path. More...
 
LockFile lockFile (self)
 Contextmanager to create a lock file and remove it afterwards. More...
 
LockFile lockCache (self)
 Context manager to create a lock file for the cache directory and remove it afterwards. More...
 
"ContainerRegistry" getInstance (cls, *args, **kwargs)
 
- Public Member Functions inherited from UM.Settings.Interfaces.ContainerRegistryInterface
"Application" getApplication (cls)
 

Public Attributes

 metadata
 
 source_provider
 

Static Public Attributes

 containerAdded = Signal()
 
 containerRemoved = Signal()
 
 containerMetaDataChanged = Signal()
 
 containerLoadComplete = Signal()
 
 allMetadataLoaded = Signal()
 
dictionary mime_type_map
 

Detailed Description

Central class to manage all setting providers.

This class aggregates all data from all container providers. If only the metadata is used, it requests the metadata lazily from the providers. If more than that is needed, the entire container is requested from the appropriate providers.

Member Function Documentation

◆ addContainerType()

None UM.Settings.ContainerRegistry.ContainerRegistry.addContainerType (   cls,
"PluginObject"  container 
)

Add a container type that will be used to serialize/deserialize containers.

Parameters
containerAn instance of the container type to add.

◆ addContainerTypeByName()

None UM.Settings.ContainerRegistry.ContainerRegistry.addContainerTypeByName (   cls,
type  container_type,
str  type_name,
str  mime_type 
)

Used to associate mime types with object to be created.

Parameters
container_typeContainerStack or derivative
type_name
mime_type

◆ addProvider()

None UM.Settings.ContainerRegistry.ContainerRegistry.addProvider (   self,
ContainerProvider  provider 
)

Adds a container provider to search through containers in.

◆ findContainers()

List[ContainerInterface] UM.Settings.ContainerRegistry.ContainerRegistry.findContainers (   self,
*bool   ignore_case = False,
**Any  kwargs 
)

Find all container objects matching certain criteria.

Parameters
container_typeIf provided, return only objects that are instances or subclasses of container_type.
kwargsdict A dictionary of keyword arguments containing keys and values that need to match the metadata of the container. An asterisk can be used to denote a wildcard.
Returns
A list of containers matching the search criteria, or an empty list if nothing was found.

Reimplemented from UM.Settings.Interfaces.ContainerRegistryInterface.

◆ findContainersMetadata()

List[Dict[str, Any]] UM.Settings.ContainerRegistry.ContainerRegistry.findContainersMetadata (   self,
*bool   ignore_case = False,
**Any  kwargs 
)

Find the metadata of all container objects matching certain criteria.

Parameters
container_typeIf provided, return only objects that are instances or subclasses of container_type.
kwargsA dictionary of keyword arguments containing keys and values that need to match the metadata. An asterisk can be used to denote a wildcard.
Returns
A list of metadata dictionaries matching the search criteria, or an empty list if nothing was found.

◆ findContainerStacks()

List[ContainerStack] UM.Settings.ContainerRegistry.ContainerRegistry.findContainerStacks (   self,
**Any  kwargs 
)

Find all ContainerStack objects matching certain criteria.

Parameters
kwargsdict A dictionary of keyword arguments containing keys and values that need to match the metadata of the ContainerStack. An asterisk in the values can be used to denote a wildcard.

◆ findContainerStacksMetadata()

List[Dict[str, Any]] UM.Settings.ContainerRegistry.ContainerRegistry.findContainerStacksMetadata (   self,
**Any  kwargs 
)

Find the metadata of all container stacks matching certain criteria.

Parameters
kwargsA dictionary of keyword arguments containing keys and values that need to match the metadata. An asterisk in the values can be used to denote a wildcard.
Returns
A list of metadata dictionaries matching the search criteria, or an empty list if nothing was found.

◆ findDefinitionContainers()

List[DefinitionContainerInterface] UM.Settings.ContainerRegistry.ContainerRegistry.findDefinitionContainers (   self,
**Any  kwargs 
)

Find all DefinitionContainer objects matching certain criteria.

Parameters
kwargsdict A dictionary of keyword arguments containing keys and values that need to match the metadata of the DefinitionContainer. An asterisk in the values can be used to denote a wildcard.

Reimplemented from UM.Settings.Interfaces.ContainerRegistryInterface.

◆ findDefinitionContainersMetadata()

List[Dict[str, Any]] UM.Settings.ContainerRegistry.ContainerRegistry.findDefinitionContainersMetadata (   self,
**Any  kwargs 
)

Get the metadata of all definition containers matching certain criteria.

Parameters
kwargsA dictionary of keyword arguments containing keys and values that need to match the metadata. An asterisk in the values can be used to denote a wildcard.
Returns
A list of metadata dictionaries matching the search criteria, or an empty list if nothing was found.

◆ findDirtyContainers()

List[ContainerInterface] UM.Settings.ContainerRegistry.ContainerRegistry.findDirtyContainers (   self,
*bool   ignore_case = False,
**Any  kwargs 
)

Specialized find function to find only the modified container objects that also match certain criteria.

This is faster than the normal find methods since it won't ever load all containers, but only the modified ones. Since containers must be fully loaded before they are modified, you are guaranteed that any operations on the resulting containers will not trigger additional containers to load lazily.

Parameters
kwargsdict A dictionary of keyword arguments containing keys and values that need to match the metadata of the container. An asterisk can be used to denote a wildcard.
ignore_caseWhether casing should be ignored when matching string values of metadata.
Returns
A list of containers matching the search criteria, or an empty list if nothing was found.

◆ findInstanceContainers()

List[InstanceContainer] UM.Settings.ContainerRegistry.ContainerRegistry.findInstanceContainers (   self,
**Any  kwargs 
)

Find all InstanceContainer objects matching certain criteria.

Parameters
kwargsdict A dictionary of keyword arguments containing keys and values that need to match the metadata of the InstanceContainer. An asterisk in the values can be used to denote a wildcard.

◆ findInstanceContainersMetadata()

List[Dict[str, Any]] UM.Settings.ContainerRegistry.ContainerRegistry.findInstanceContainersMetadata (   self,
**Any  kwargs 
)

Find the metadata of all instance containers matching certain criteria.

Parameters
kwargsA dictionary of keyword arguments containing keys and values that need to match the metadata. An asterisk in the values can be used to denote a wildcard.
Returns
A list of metadata dictionaries matching the search criteria, or an empty list if nothing was found.

◆ getCacheLockFilename()

str UM.Settings.ContainerRegistry.ContainerRegistry.getCacheLockFilename (   self)

Get the cache lock filename including full path.

◆ getContainerForMimeType()

def UM.Settings.ContainerRegistry.ContainerRegistry.getContainerForMimeType (   cls,
  mime_type 
)

Get the container type corresponding to a certain mime type.

Parameters
mime_typeThe mime type to get the container type for.
Returns
A class object of a container type that corresponds to the specified mime type or None if not found.

◆ getContainerTypes()

def UM.Settings.ContainerRegistry.ContainerRegistry.getContainerTypes (   cls)

Get all the registered container types.

Returns
A dictionary view object that provides access to the container types. The key is the plugin ID, the value the container type.

◆ getEmptyInstanceContainer()

InstanceContainer UM.Settings.ContainerRegistry.ContainerRegistry.getEmptyInstanceContainer (   self)

This is a small convenience to make it easier to support complex structures in ContainerStacks.

Reimplemented from UM.Settings.Interfaces.ContainerRegistryInterface.

◆ getMimeTypeForContainer()

Optional[MimeType] UM.Settings.ContainerRegistry.ContainerRegistry.getMimeTypeForContainer (   cls,
type  container_type 
)

Retrieve the mime type corresponding to a certain container type.

Parameters
container_typeThe type of container to get the mime type for.
Returns
A MimeType object that matches the mime type of the container or None if not found.

◆ getResourceTypes()

Dict[str, int] UM.Settings.ContainerRegistry.ContainerRegistry.getResourceTypes (   self)

Returns all resource types.

◆ isLoaded()

bool UM.Settings.ContainerRegistry.ContainerRegistry.isLoaded (   self,
str  container_id 
)

Returns whether a container is completely loaded or not.

If only its metadata is known, it is not yet completely loaded.

Returns
True if all data about this container is known, False if only metadata is known or the container is completely unknown.

◆ isReadOnly()

bool UM.Settings.ContainerRegistry.ContainerRegistry.isReadOnly (   self,
str  container_id 
)

Returns whether a profile is read-only or not.

Whether it is read-only depends on the source where the container is obtained from.

Returns
True if the container is read-only, or False if it can be modified.

Reimplemented from UM.Settings.Interfaces.ContainerRegistryInterface.

◆ load()

None UM.Settings.ContainerRegistry.ContainerRegistry.load (   self)

Load all available definition containers, instance containers and container stacks.

Note
This method does not clear the internal list of containers. This means that any containers that were already added when the first call to this method happened will not be re-added.

◆ loadAllMetadata()

None UM.Settings.ContainerRegistry.ContainerRegistry.loadAllMetadata (   self)

Load the metadata of all available definition containers, instance containers and container stacks.

◆ lockCache()

LockFile UM.Settings.ContainerRegistry.ContainerRegistry.lockCache (   self)

Context manager to create a lock file for the cache directory and remove it afterwards.

◆ lockFile()

LockFile UM.Settings.ContainerRegistry.ContainerRegistry.lockFile (   self)

Contextmanager to create a lock file and remove it afterwards.

◆ uniqueName()

str UM.Settings.ContainerRegistry.ContainerRegistry.uniqueName (   self,
str  original 
)

Creates a new unique name for a container that doesn't exist yet.

It tries if the original name you provide exists, and if it doesn't it'll add a " #1" or " #2" after the name to make it unique.

Parameters
originalThe original name that may not be unique.
Returns
A unique name that looks a lot like the original but may have a number behind it to make it unique.

Member Data Documentation

◆ mime_type_map

dictionary UM.Settings.ContainerRegistry.ContainerRegistry.mime_type_map
static
Initial value:
= {
"application/x-uranium-definitioncontainer": DefinitionContainer,
"application/x-uranium-instancecontainer": InstanceContainer,
"application/x-uranium-containerstack": ContainerStack,
"application/x-uranium-extruderstack": ContainerStack
}

The documentation for this class was generated from the following file: