Cleanup: use BLI_libblock prefix for id functions
authorCampbell Barton <ideasman42@gmail.com>
Mon, 28 Dec 2015 06:17:25 +0000 (17:17 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 28 Dec 2015 06:21:29 +0000 (17:21 +1100)
- 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
source/blender/blenkernel/intern/library.c
source/blender/blenloader/intern/versioning_defaults.c
source/blender/collada/DocumentImporter.cpp
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/space_outliner/outliner_draw.c
source/blender/makesrna/intern/rna_ID.c

index 336928575afe4027e0c261d7696785aa3fa1dd4d..7af126faa6aa94cb846ed62aa88e402fe12d7613 100644 (file)
@@ -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 *);
index 39feb4065eb9aa99b6baa6482a673301b25642cf..bfee7c104008cb45c6cb2800efe98c44db12d7e5 100644 (file)
@@ -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' : ' ');
index 1dc3128319f50354e32e5a8c68309a4737426333..e57a2156c8d111301fe1f5eaacea07b26d2f6e31 100644 (file)
@@ -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");
                }
        }
 }
index 45b8a4fe5d46d1971c0ad73bcbcb334a099a2b01..45dcf4364736bfc4a66652c45bddbb3d9e8ffd69 100644 (file)
@@ -654,7 +654,7 @@ std::vector<Object *> *DocumentImporter::write_node(COLLADAFW::Node *node, COLLA
                for (std::vector<Object *>::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<COLLADAFW::UniqueId, Object *>(node->getUniqueId(), ob));
                        node_map[node->getUniqueId()] = node;
 
index 4d0c4ad863c94688899165a1f249fcb76e9e3727..0b53232c29be53148b3400f0b775706bba0fe891 100644 (file)
@@ -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
index b53fa270898e7ce6f07e25edc13fcf62178e8809..bda84fe6c0317a7579c2e263ba9f3448f361497b 100644 (file)
@@ -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);
 
index 09c9f88c55ffcdc31fd3f3809100179962f332d0..cc86aa8877e040632f36ba7af9a11ccc78f454ae 100644 (file)
@@ -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:
                                {
index 609e9d2f8dbef2f0c2f6ae293110d2160af1d00d..3a1633002641c3e9d57c10ac987d4858fe59db29 100644 (file)
@@ -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)