ChrisTerBeke 6 лет назад
Родитель
Сommit
5b5a8f77b7
2 измененных файлов с 51 добавлено и 0 удалено
  1. 32 0
      cura/API/Backups.py
  2. 19 0
      cura/API/__init__.py

+ 32 - 0
cura/API/Backups.py

@@ -0,0 +1,32 @@
+# Copyright (c) 2018 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+from cura.Backups.BackupsManager import BackupsManager
+
+
+class Backups:
+    """
+    The backups API provides a version-proof bridge between Cura's BackupManager and plugins that hook into it.
+
+    Usage:
+        from cura.API import CuraAPI
+        api = CuraAPI()
+        api.backups.createBackup()
+        api.backups.restoreBackup(my_zip_file, {"cura_release": "3.1"})
+    """
+
+    manager = BackupsManager()  # Re-used instance of the backups manager.
+
+    def createBackup(self) -> (bytes, dict):
+        """
+        Create a new backup using the BackupsManager.
+        :return: Tuple containing a ZIP file with the backup data and a dict with meta data about the backup.
+        """
+        return self.manager.createBackup()
+
+    def restoreBackup(self, zip_file: bytes, meta_data: dict) -> None:
+        """
+        Restore a backup using the BackupManager.
+        :param zip_file: A ZIP file containing the actual backup data.
+        :param meta_data: Some meta data needed for restoring a backup, like the Cura version number.
+        """
+        return self.manager.restoreBackup(zip_file, meta_data)

+ 19 - 0
cura/API/__init__.py

@@ -0,0 +1,19 @@
+# Copyright (c) 2018 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+from UM.PluginRegistry import PluginRegistry
+from cura.API.Backups import Backups
+
+
+class CuraAPI:
+    """
+    The official Cura API that plugins can use to interact with Cura.
+    Python does not technically prevent talking to other classes as well,
+    but this API provides a version-safe interface with proper deprecation warnings etc.
+    Usage of any other methods than the ones provided in this API can cause plugins to be unstable.
+    """
+
+    # For now we use the same API version to be consistent.
+    VERSION = PluginRegistry.APIVersion
+
+    # Backups API.
+    backups = Backups()