Asset Preferences: disallow single file as asset library
Asset libraries should be directories on disk. By manually entering a file path it was possible to have a single blend file as asset library, but that was not a designed-for situation, and it doesn't play well with the asset catalog system.
This commit is contained in:
parent
33c5e7bcd5
commit
06ead314b6
|
@ -42,6 +42,9 @@ void BKE_preferences_asset_library_name_set(struct UserDef *userdef,
|
|||
struct bUserAssetLibrary *library,
|
||||
const char *name) ATTR_NONNULL();
|
||||
|
||||
void BKE_preferences_asset_library_path_set(struct bUserAssetLibrary *library, const char *path)
|
||||
ATTR_NONNULL();
|
||||
|
||||
struct bUserAssetLibrary *BKE_preferences_asset_library_find_from_index(
|
||||
const struct UserDef *userdef, int index) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
|
||||
struct bUserAssetLibrary *BKE_preferences_asset_library_find_from_name(
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_fileops.h"
|
||||
#include "BLI_listbase.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_string.h"
|
||||
|
@ -83,6 +84,18 @@ void BKE_preferences_asset_library_name_set(UserDef *userdef,
|
|||
sizeof(library->name));
|
||||
}
|
||||
|
||||
/* Set the library path, ensuring it is pointing to a directory.
|
||||
* Single blend files can only act as "Current File" library; libraries on disk
|
||||
* should always be directories. If the path does not exist, that's fine; it can
|
||||
* created as directory if necessary later. */
|
||||
void BKE_preferences_asset_library_path_set(bUserAssetLibrary *library, const char *path)
|
||||
{
|
||||
BLI_strncpy_utf8(library->path, path, sizeof(library->path));
|
||||
if (BLI_is_file(library->path)) {
|
||||
BLI_path_parent_dir(library->path);
|
||||
}
|
||||
}
|
||||
|
||||
bUserAssetLibrary *BKE_preferences_asset_library_find_from_index(const UserDef *userdef, int index)
|
||||
{
|
||||
return BLI_findlink(&userdef->asset_libraries, index);
|
||||
|
|
|
@ -344,6 +344,12 @@ static void rna_userdef_asset_library_name_set(PointerRNA *ptr, const char *valu
|
|||
BKE_preferences_asset_library_name_set(&U, library, value);
|
||||
}
|
||||
|
||||
static void rna_userdef_asset_library_path_set(PointerRNA *ptr, const char *value)
|
||||
{
|
||||
bUserAssetLibrary *library = (bUserAssetLibrary *)ptr->data;
|
||||
BKE_preferences_asset_library_path_set(library, value);
|
||||
}
|
||||
|
||||
static void rna_userdef_script_autoexec_update(Main *UNUSED(bmain),
|
||||
Scene *UNUSED(scene),
|
||||
PointerRNA *ptr)
|
||||
|
@ -6092,6 +6098,7 @@ static void rna_def_userdef_filepaths_asset_library(BlenderRNA *brna)
|
|||
prop = RNA_def_property(srna, "path", PROP_STRING, PROP_DIRPATH);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Path", "Path to a directory with .blend files to use as an asset library");
|
||||
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_userdef_asset_library_path_set");
|
||||
RNA_def_property_update(prop, 0, "rna_userdef_update");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue