From 641d4e2b7fc4fd563c3c2dd880c8c412dd35ce9a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Dec 2015 17:17:25 +1100 Subject: Cleanup: use BLI_libblock prefix for id functions - test_idbutton -> BLI_libblock_ensure_unique_name (not only used from UI) - BKE_rename_id -> BKE_libblock_rename (always pass valid main) also rename: - name_uiprefix_id -> BKE_id_uiprefix --- source/blender/blenkernel/BKE_library.h | 24 ++++++++++---------- source/blender/blenkernel/intern/library.c | 26 +++++++++------------- .../blenloader/intern/versioning_defaults.c | 5 ++--- source/blender/collada/DocumentImporter.cpp | 2 +- .../blender/editors/interface/interface_layout.c | 2 +- .../editors/interface/interface_templates.c | 4 ++-- .../blender/editors/space_outliner/outliner_draw.c | 4 ++-- source/blender/makesrna/intern/rna_ID.c | 3 ++- 8 files changed, 33 insertions(+), 37 deletions(-) diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index 336928575af..7af126faa6a 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -57,6 +57,16 @@ void *BKE_libblock_copy_nolib(struct ID *id, const bool do_action) ATTR_NONNULL( void *BKE_libblock_copy(struct ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); void BKE_libblock_copy_data(struct ID *id, const struct ID *id_from, const bool do_action); void BKE_libblock_relink(struct ID *id); +void BKE_libblock_rename(struct Main *bmain, struct ID *id, const char *name) ATTR_NONNULL(); +void BLI_libblock_ensure_unique_name(struct Main *bmain, const char *name) ATTR_NONNULL(); + +void BKE_libblock_free(struct Main *bmain, void *idv) ATTR_NONNULL(); +void BKE_libblock_free_ex(struct Main *bmain, void *idv, bool do_id_user) ATTR_NONNULL(); +void BKE_libblock_free_us(struct Main *bmain, void *idv) ATTR_NONNULL(); +void BKE_libblock_free_data(struct Main *bmain, struct ID *id) ATTR_NONNULL(); + +struct ID *BKE_libblock_find_name_ex(struct Main *bmain, const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); +struct ID *BKE_libblock_find_name(const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); void BKE_id_lib_local_paths(struct Main *bmain, struct Library *lib, struct ID *id); void id_lib_extern(struct ID *id); @@ -81,12 +91,6 @@ struct ListBase *which_libbase(struct Main *mainlib, short type); #define MAX_LIBARRAY 34 int set_listbasepointers(struct Main *main, struct ListBase *lb[MAX_LIBARRAY]); -void BKE_libblock_free(struct Main *bmain, void *idv); -void BKE_libblock_free_ex(struct Main *bmain, void *idv, bool do_id_user); -void BKE_libblock_free_us(struct Main *bmain, void *idv); -void BKE_libblock_free_data(struct Main *bmain, struct ID *id); - - /* Main API */ struct Main *BKE_main_new(void); void BKE_main_free(struct Main *mainvar); @@ -109,15 +113,11 @@ void BKE_main_id_clear_newpoins(struct Main *bmain); void BKE_main_lib_objects_recalc_all(struct Main *bmain); -void BKE_rename_id(struct Main *bmain, struct ID *id, const char *name); -void name_uiprefix_id(char *name, const struct ID *id); -void test_idbutton(char *name); +/* (MAX_ID_NAME - 2) + 3 */ +void BKE_id_ui_prefix(char name[66 + 1], const struct ID *id); void BKE_library_make_local(struct Main *bmain, struct Library *lib, bool untagged_only); -struct ID *BKE_libblock_find_name_ex(struct Main *bmain, const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); -struct ID *BKE_libblock_find_name(const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); - typedef void (*BKE_library_free_window_manager_cb)(struct bContext *, struct wmWindowManager *); typedef void (*BKE_library_free_notifier_reference_cb)(const void *); typedef void (*BKE_library_free_editor_id_reference_cb)(const struct ID *); diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 39feb4065eb..bfee7c10400 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -1809,21 +1809,23 @@ void BKE_library_make_local(Main *bmain, Library *lib, bool untagged_only) } } - -void test_idbutton(char *name) +/** + * Use after setting the ID's name + * When name exists: call 'new_id' + */ +void BLI_libblock_ensure_unique_name(Main *bmain, const char *name) { - /* called from buttons: when name already exists: call new_id */ ListBase *lb; ID *idtest; - - lb = which_libbase(G.main, GS(name)); + + lb = which_libbase(bmain, GS(name)); if (lb == NULL) return; /* search for id */ idtest = BLI_findstring(lb, name + 2, offsetof(ID, name) + 2); - if (idtest && !new_id(lb, idtest, name + 2)) { + if (idtest && !new_id(lb, idtest, idtest->name + 2)) { id_sort_by_name(lb, idtest); } } @@ -1831,15 +1833,9 @@ void test_idbutton(char *name) /** * Sets the name of a block to name, suitably adjusted for uniqueness. */ -void BKE_rename_id(Main *bmain, ID *id, const char *name) +void BKE_libblock_rename(Main *bmain, ID *id, const char *name) { - ListBase *lb; - - if (!bmain) - bmain = G.main; - - lb = which_libbase(bmain, GS(id->name)); - + ListBase *lb = which_libbase(bmain, GS(id->name)); new_id(lb, id, name); } @@ -1847,7 +1843,7 @@ void BKE_rename_id(Main *bmain, ID *id, const char *name) * Returns in name the name of the block, with a 3-character prefix prepended * indicating whether it comes from a library, has a fake user, or no users. */ -void name_uiprefix_id(char *name, const ID *id) +void BKE_id_ui_prefix(char name[MAX_ID_NAME + 1], const ID *id) { name[0] = id->lib ? (ID_MISSING(id) ? 'M' : 'L') : ' '; name[1] = (id->flag & LIB_FAKEUSER) ? 'F' : ((id->us == 0) ? '0' : ' '); diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 1dc3128319f..e57a2156c8d 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -232,9 +232,8 @@ void BLO_update_defaults_startup_blend(Main *bmain) /* rename twist brush to rotate brush to match rotate tool */ br = (Brush *)BKE_libblock_find_name_ex(bmain, ID_BR, "Twist"); - if (br) - { - BKE_rename_id(bmain, &br->id, "Rotate"); + if (br) { + BKE_libblock_rename(bmain, &br->id, "Rotate"); } } } diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 45b8a4fe5d4..45dcf436473 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -654,7 +654,7 @@ std::vector *DocumentImporter::write_node(COLLADAFW::Node *node, COLLA for (std::vector::iterator it = objects_done->begin(); it != objects_done->end(); ++it) { ob = *it; std::string nodename = node->getName().size() ? node->getName() : node->getOriginalId(); - BKE_rename_id(NULL, &ob->id, (char *)nodename.c_str()); + BKE_libblock_rename(G.main, &ob->id, (char *)nodename.c_str()); object_map.insert(std::pair(node->getUniqueId(), ob)); node_map[node->getUniqueId()] = node; diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 4d0c4ad863c..0b53232c29b 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1524,7 +1524,7 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, const char *s #if 0 /* this name is used for a string comparison and can't be modified, TODO */ /* if ever enabled, make name_ui be MAX_ID_NAME+1 */ - name_uiprefix_id(name_ui, id); + BKE_id_ui_prefix(name_ui, id); #else BLI_strncpy(name_ui, id->name + 2, sizeof(name_ui)); #endif diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index b53fa270898..bda84fe6c03 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -148,11 +148,11 @@ static void id_search_cb(const bContext *C, void *arg_template, const char *str, continue; if (*str == '\0' || BLI_strcasestr(id->name + 2, str)) { - /* +1 is needed because name_uiprefix_id used 3 letter prefix + /* +1 is needed because BKE_id_ui_prefix used 3 letter prefix * followed by ID_NAME-2 characters from id->name */ char name_ui[MAX_ID_NAME + 1]; - name_uiprefix_id(name_ui, id); + BKE_id_ui_prefix(name_ui, id); iconid = ui_id_icon_get(C, id, template->preview); diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 09c9f88c55f..cc86aa8877e 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -474,7 +474,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) TreeElement *te = outliner_find_tree_element(&soops->tree, tselem); if (tselem->type == 0) { - test_idbutton(tselem->id->name); // library.c, unique name and alpha sort + BLI_libblock_ensure_unique_name(G.main, tselem->id->name); switch (GS(tselem->id->name)) { case ID_MA: @@ -509,7 +509,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) defgroup_unique_name(te->directdata, (Object *)tselem->id); // id = object break; case TSE_NLA_ACTION: - test_idbutton(tselem->id->name); + BLI_libblock_ensure_unique_name(G.main, tselem->id->name); break; case TSE_EBONE: { diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 609e9d2f8db..3a163300264 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -93,6 +93,7 @@ EnumPropertyItem rna_enum_id_type_items[] = { #include "BKE_animsys.h" #include "BKE_material.h" #include "BKE_depsgraph.h" +#include "BKE_global.h" /* XXX, remove me */ #include "WM_api.h" @@ -113,7 +114,7 @@ void rna_ID_name_set(PointerRNA *ptr, const char *value) { ID *id = (ID *)ptr->data; BLI_strncpy_utf8(id->name + 2, value, sizeof(id->name) - 2); - test_idbutton(id->name); + BLI_libblock_ensure_unique_name(G.main, id->name); } static int rna_ID_name_editable(PointerRNA *ptr) -- cgit v1.2.3