From e5cc7efdf2562e0bf9830e00d517694af237b213 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 16 Feb 2018 14:17:10 +0100 Subject: [PATCH] WIP: Cleanup ContainerManager --- cura/Settings/ContainerManager.py | 144 ------------------------------ 1 file changed, 144 deletions(-) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 240b7dfa4d..0df7f4ba05 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -48,150 +48,6 @@ class ContainerManager(QObject): self._material_manager = self._application._material_manager self._container_name_filters = {} - ## Create a duplicate of the specified container - # - # This will create and add a duplicate of the container corresponding - # to the container ID. - # - # \param container_id \type{str} The ID of the container to duplicate. - # - # \return The ID of the new container, or an empty string if duplication failed. - @pyqtSlot(str, result = str) - def duplicateContainer(self, container_id): - #TODO: It should be able to duplicate a container of which only the metadata is known. - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could duplicate container %s because it was not found.", container_id) - return "" - - container = containers[0] - new_container = self.duplicateContainerInstance(container) - return new_container.getId() - - ## Create a duplicate of the given container instance - # - # This will create and add a duplicate of the container that was passed. - # - # \param container \type{ContainerInterface} The container to duplicate. - # - # \return The duplicated container, or None if duplication failed. - def duplicateContainerInstance(self, container): - new_container = None - new_name = self._container_registry.uniqueName(container.getName()) - # Only InstanceContainer has a duplicate method at the moment. - # So fall back to serialize/deserialize when no duplicate method exists. - if hasattr(container, "duplicate"): - new_container = container.duplicate(new_name) - else: - new_container = container.__class__(new_name) - new_container.deserialize(container.serialize()) - new_container.setName(new_name) - - # TODO: we probably don't want to add it to the registry here! - if new_container: - self._container_registry.addContainer(new_container) - - return new_container - - ## Change the name of a specified container to a new name. - # - # \param container_id \type{str} The ID of the container to change the name of. - # \param new_id \type{str} The new ID of the container. - # \param new_name \type{str} The new name of the specified container. - # - # \return True if successful, False if not. - @pyqtSlot(str, str, str, result = bool) - def renameContainer(self, container_id, new_id, new_name): - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could rename container %s because it was not found.", container_id) - return False - - container = containers[0] - # First, remove the container from the registry. This will clean up any files related to the container. - self._container_registry.removeContainer(container_id) - - # Ensure we have a unique name for the container - new_name = self._container_registry.uniqueName(new_name) - - # Then, update the name and ID of the container - container.setName(new_name) - container._id = new_id # TODO: Find a nicer way to set a new, unique ID - - # Finally, re-add the container so it will be properly serialized again. - self._container_registry.addContainer(container) - - return True - - ## Remove the specified container. - # - # \param container_id \type{str} The ID of the container to remove. - # - # \return True if the container was successfully removed, False if not. - @pyqtSlot(str, result = bool) - def removeContainer(self, container_id): - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could not remove container %s because it was not found.", container_id) - return False - - self._container_registry.removeContainer(containers[0].getId()) - - return True - - ## Merge a container with another. - # - # This will try to merge one container into the other, by going through the container - # and setting the right properties on the other container. - # - # \param merge_into_id \type{str} The ID of the container to merge into. - # \param merge_id \type{str} The ID of the container to merge. - # - # \return True if successfully merged, False if not. - @pyqtSlot(str, result = bool) - def mergeContainers(self, merge_into_id, merge_id): - containers = self._container_registry.findContainers(id = merge_into_id) - if not containers: - Logger.log("w", "Could merge into container %s because it was not found.", merge_into_id) - return False - - merge_into = containers[0] - - containers = self._container_registry.findContainers(id = merge_id) - if not containers: - Logger.log("w", "Could not merge container %s because it was not found", merge_id) - return False - - merge = containers[0] - - if not isinstance(merge, type(merge_into)): - Logger.log("w", "Cannot merge two containers of different types") - return False - - self._performMerge(merge_into, merge) - - return True - - ## Clear the contents of a container. - # - # \param container_id \type{str} The ID of the container to clear. - # - # \return True if successful, False if not. - @pyqtSlot(str, result = bool) - def clearContainer(self, container_id): - if self._container_registry.isReadOnly(container_id): - Logger.log("w", "Cannot clear read-only container %s", container_id) - return False - - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could clear container %s because it was not found.", container_id) - return False - - containers[0].clear() - - return True - @pyqtSlot(str, str, result=str) def getContainerMetaDataEntry(self, container_id, entry_name): metadatas = self._container_registry.findContainersMetadata(id = container_id)