Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesrna/intern/rna_asset.c')
-rw-r--r--source/blender/makesrna/intern/rna_asset.c67
1 files changed, 63 insertions, 4 deletions
diff --git a/source/blender/makesrna/intern/rna_asset.c b/source/blender/makesrna/intern/rna_asset.c
index 80824df1bc8..e79cbc838d4 100644
--- a/source/blender/makesrna/intern/rna_asset.c
+++ b/source/blender/makesrna/intern/rna_asset.c
@@ -139,6 +139,40 @@ static IDProperty **rna_AssetMetaData_idprops(PointerRNA *ptr)
return &asset_data->properties;
}
+static void rna_AssetMetaData_author_get(PointerRNA *ptr, char *value)
+{
+ AssetMetaData *asset_data = ptr->data;
+
+ if (asset_data->author) {
+ strcpy(value, asset_data->author);
+ }
+ else {
+ value[0] = '\0';
+ }
+}
+
+static int rna_AssetMetaData_author_length(PointerRNA *ptr)
+{
+ AssetMetaData *asset_data = ptr->data;
+ return asset_data->author ? strlen(asset_data->author) : 0;
+}
+
+static void rna_AssetMetaData_author_set(PointerRNA *ptr, const char *value)
+{
+ AssetMetaData *asset_data = ptr->data;
+
+ if (asset_data->author) {
+ MEM_freeN(asset_data->author);
+ }
+
+ if (value[0]) {
+ asset_data->author = BLI_strdup(value);
+ }
+ else {
+ asset_data->author = NULL;
+ }
+}
+
static void rna_AssetMetaData_description_get(PointerRNA *ptr, char *value)
{
AssetMetaData *asset_data = ptr->data;
@@ -215,6 +249,25 @@ static void rna_AssetMetaData_catalog_id_set(PointerRNA *ptr, const char *value)
BKE_asset_metadata_catalog_id_set(asset_data, new_uuid, "");
}
+void rna_AssetMetaData_catalog_id_update(struct bContext *C, struct PointerRNA *ptr)
+{
+ SpaceFile *sfile = CTX_wm_space_file(C);
+ if (sfile == NULL) {
+ /* Until there is a proper Asset Service available, it's only possible to get the asset library
+ * from within the asset browser context. */
+ return;
+ }
+
+ AssetLibrary *asset_library = ED_fileselect_active_asset_library_get(sfile);
+ if (asset_library == NULL) {
+ /* The SpaceFile may not be an asset browser but a regular file browser. */
+ return;
+ }
+
+ AssetMetaData *asset_data = ptr->data;
+ BKE_asset_library_refresh_catalog_simplename(asset_library, asset_data);
+}
+
static PointerRNA rna_AssetHandle_file_data_get(PointerRNA *ptr)
{
AssetHandle *asset_handle = ptr->data;
@@ -254,7 +307,7 @@ const EnumPropertyItem *rna_asset_library_reference_itemf(bContext *UNUSED(C),
PropertyRNA *UNUSED(prop),
bool *r_free)
{
- const EnumPropertyItem *items = ED_asset_library_reference_to_rna_enum_itemf();
+ const EnumPropertyItem *items = ED_asset_library_reference_to_rna_enum_itemf(true);
if (!items) {
*r_free = false;
}
@@ -328,6 +381,14 @@ static void rna_def_asset_data(BlenderRNA *brna)
RNA_def_struct_idprops_func(srna, "rna_AssetMetaData_idprops");
RNA_def_struct_flag(srna, STRUCT_NO_DATABLOCK_IDPROPERTIES); /* Mandatory! */
+ prop = RNA_def_property(srna, "author", PROP_STRING, PROP_NONE);
+ RNA_def_property_editable_func(prop, "rna_AssetMetaData_editable");
+ RNA_def_property_string_funcs(prop,
+ "rna_AssetMetaData_author_get",
+ "rna_AssetMetaData_author_length",
+ "rna_AssetMetaData_author_set");
+ RNA_def_property_ui_text(prop, "Author", "Name of the creator of the asset");
+
prop = RNA_def_property(srna, "description", PROP_STRING, PROP_NONE);
RNA_def_property_editable_func(prop, "rna_AssetMetaData_editable");
RNA_def_property_string_funcs(prop,
@@ -356,6 +417,7 @@ static void rna_def_asset_data(BlenderRNA *brna)
"rna_AssetMetaData_catalog_id_length",
"rna_AssetMetaData_catalog_id_set");
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
+ RNA_def_property_update(prop, 0, "rna_AssetMetaData_catalog_id_update");
RNA_def_property_ui_text(prop,
"Catalog UUID",
"Identifier for the asset's catalog, used by Blender to look up the "
@@ -431,9 +493,6 @@ static void rna_def_asset_library_reference(BlenderRNA *brna)
srna, "Asset Library Reference", "Identifier to refer to the asset library");
}
-/**
- * \note the UI text and updating has to be set by the caller.
- */
PropertyRNA *rna_def_asset_library_reference_common(struct StructRNA *srna,
const char *get,
const char *set)