[Bf-blender-cvs] [e524370158b] asset-engine: Add way to remove Amber repo, and initial step fro previews.
Bastien Montagne
noreply at git.blender.org
Mon Oct 23 17:55:25 CEST 2017
Commit: e524370158ba15c2d7726960c9201bb3371a4e4a
Author: Bastien Montagne
Date: Mon Oct 23 17:54:58 2017 +0200
Branches: asset-engine
https://developer.blender.org/rBe524370158ba15c2d7726960c9201bb3371a4e4a
Add way to remove Amber repo, and initial step fro previews.
===================================================================
M release/scripts/startup/bl_operators/amber/operators.py
M release/scripts/startup/bl_operators/amber/repository.py
M release/scripts/startup/bl_operators/amber/ui.py
M release/scripts/startup/bl_operators/amber/utils.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/amber/operators.py b/release/scripts/startup/bl_operators/amber/operators.py
index 6ad86140f2d..2bb5d788dcb 100644
--- a/release/scripts/startup/bl_operators/amber/operators.py
+++ b/release/scripts/startup/bl_operators/amber/operators.py
@@ -101,6 +101,55 @@ class AmberOpsRepositoryAdd(Operator, AmberOpsEditing):
return {'FINISHED'}
+class AmberOpsRepositoryRemove(Operator, AmberOpsEditing):
+ """Remove an Amber repository from this listing, and delete its db and preview files (*not* the data itself) """
+ """(WARNING! No undo!)"""
+ bl_idname = "amber.repository_remove"
+ bl_label = "Remove Repository"
+ bl_options = set()
+
+ def execute(self, context):
+ ae = context.space_data.asset_engine
+ repo_pg = ae.repositories_pg.repositories[ae.repositories_pg.repository_index_active]
+ repo_path = repo_pg.path
+ repo_uuid = repo_pg.uuid[:]
+ db_path = os.path.join(repo_path, utils.AMBER_DB_NAME)
+ preview_path = os.path.join(repo_path, utils.AMBER_PREVIEW_STORAGE)
+ data_path = os.path.join(repo_path, utils.AMBER_LOCAL_STORAGE)
+
+ if not os.path.exists(db_path):
+ self.report({'INFO'}, "No Amber repository found at '%s'" % repo_path)
+ return {'CANCELLED'}
+
+ repo = AmberDataRepository.ls_repo(db_path)
+
+ if os.path.isdir(preview_path):
+ for asset in repo.assets.items:
+ if asset.preview_path:
+ asset_preview_path = os.abspath(os.path.join(repo_path, asset.preview_path))
+ if os.path.isfile(asset_preview_path) and os.path.commonpath((preview_path, asset_preview_path)) == preview_path:
+ os.remove(asset_preview_path)
+ # TODO allow also removing of asset .blend files? would rather not, dangerous option imho...
+
+ if not os.listdir(preview_path):
+ os.rmdir(preview_path)
+
+ if os.path.isdir(data_path):
+ if not os.listdir(data_path):
+ os.rmdir(data_path)
+
+ ae.repositories_pg.repositories.remove(ae.repositories_pg.repository_index_active)
+
+ os.remove(db_path)
+
+ bpy.ops.file.refresh()
+
+ return {'FINISHED'}
+
+ def invoke(self, context, event):
+ return context.window_manager.invoke_confirm(self, event)
+
+
class AmberOpsAssetAdd(Operator, AmberOpsEditing):
"""Add an Amber asset to the repository (WARNING! No undo!)"""
bl_idname = "amber.asset_add"
@@ -315,6 +364,7 @@ class AmberOpsTagDelete(Operator, AmberOpsEditing):
classes = (
AmberOpsRepositoryAdd,
+ AmberOpsRepositoryRemove,
AmberOpsAssetAdd,
AmberOpsAssetDelete,
AmberOpsAssetTagAdd,
diff --git a/release/scripts/startup/bl_operators/amber/repository.py b/release/scripts/startup/bl_operators/amber/repository.py
index 6d8ae00a412..90896b5fc8a 100644
--- a/release/scripts/startup/bl_operators/amber/repository.py
+++ b/release/scripts/startup/bl_operators/amber/repository.py
@@ -464,6 +464,7 @@ class AmberDataAsset():
self.uuid = (0, 0, 0, 0)
self.file_type = ''
self.blender_type = ''
+ self.preview_path = ""
self.tags = {}
self.variants = {}
self.variant_default = None
@@ -485,6 +486,7 @@ class AmberDataAsset():
asset.file_type = ent["file_type"]
asset.blender_type = ent["blen_type"]
+ asset.preview_path = ent["preview_path"]
asset.tags = set(ent["tags"])
AmberDataAssetVariant.from_dict(asset.variants, ent["variants"])
@@ -498,6 +500,7 @@ class AmberDataAsset():
"description": asset.description,
"file_type": asset.file_type,
"blen_type": asset.blender_type,
+ "preview_path": asset.preview_path,
"tags": list(asset.tags),
"variants": AmberDataAssetVariant.to_dict(asset.variants),
"variant_default": utils.uuid_pack(asset.variant_default.uuid),
@@ -522,6 +525,7 @@ class AmberDataAsset():
asset.file_type = asset_pg.file_type
asset.blender_type = asset_pg.blender_type
+ asset.preview_path = asset_pg.preview_path
asset.tags = set(t.name for t in asset_pg.tags)
AmberDataAssetVariant.from_pg(asset.variants, asset_pg.variants)
@@ -544,6 +548,7 @@ class AmberDataAsset():
asset_pg.file_type = asset.file_type
asset_pg.blender_type = asset.blender_type
+ asset_pg.preview_path = asset.preview_path
AmberDataTagPG.to_pg(asset_pg.tags, tags, subset=asset.tags, do_clear=False)
AmberDataAssetVariant.to_pg(asset_pg.variants, asset.variants)
@@ -626,7 +631,7 @@ class AmberDataRepository:
@staticmethod
def update_from_asset_engine(ae):
- """Generic helper wrapping repository JSON file update when editing withing Blender."""
+ """Generic helper wrapping repository JSON file update when editing within Blender."""
repository = getattr(ae, "repository", None)
if repository is None:
repository = ae.repository = AmberDataRepository()
@@ -766,7 +771,7 @@ class AmberDataRepositoryList:
def to_pg(self, pg):
for idx, (uuid, (name, path)) in enumerate(self.repositories.items()):
- print(name, path)
+ print("to_pg", name, path)
if idx == len(pg.repositories):
pg.repositories.add()
repo_pg = pg.repositories[idx]
@@ -778,7 +783,7 @@ class AmberDataRepositoryList:
pg.repositories.remove(idx - 1)
def from_pg(self, pg):
- print([(pg_item.name, pg_item.path) for pg_item in pg.repositories])
+ print("from_pg", [(pg_item.name, pg_item.path) for pg_item in pg.repositories])
self.repositories = {pg_item.uuid[:]: (pg_item.name, pg_item.path) for pg_item in pg.repositories}
diff --git a/release/scripts/startup/bl_operators/amber/ui.py b/release/scripts/startup/bl_operators/amber/ui.py
index 93d6aea34ba..7d9b1567566 100644
--- a/release/scripts/startup/bl_operators/amber/ui.py
+++ b/release/scripts/startup/bl_operators/amber/ui.py
@@ -69,6 +69,11 @@ class AMBER_PT_repositories(Panel, AmberPanel):
col = row.column()
col.operator("AMBER_OT_repository_add", text="", icon='ZOOMIN')
+ col.operator("AMBER_OT_repository_remove", text="", icon='ZOOMOUT')
+
+ repo = ae.repositories_pg.repositories[ae.repositories_pg.repository_index_active]
+ row = self.layout.row()
+ row.prop(repo, "path", text="")
class AMBER_UL_tags_filter(UIList):
diff --git a/release/scripts/startup/bl_operators/amber/utils.py b/release/scripts/startup/bl_operators/amber/utils.py
index a2dbd612fc2..adc2b2de11f 100644
--- a/release/scripts/startup/bl_operators/amber/utils.py
+++ b/release/scripts/startup/bl_operators/amber/utils.py
@@ -36,6 +36,7 @@ AMBER_DBK_VERSION = "version"
AMBER_LIST_FILENAME = "amber_repos.json"
AMBER_LOCAL_STORAGE = "LOCAL_STORAGE"
+AMBER_PREVIEW_STORAGE = "PREVIEWS"
BLENDER_TYPES_TO_PATH = {
More information about the Bf-blender-cvs
mailing list