forked from bartvdbraak/blender
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
This commit is contained in:
parent
12874c703c
commit
641d4e2b7f
@ -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 *);
|
||||
|
@ -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' : ' ');
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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:
|
||||
{
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user