Cleanup: de-duplicate ID renaming utility for versioning
This commit is contained in:
parent
71dc134f89
commit
5950b3ab73
|
@ -111,40 +111,13 @@
|
|||
#include "BLO_readfile.h"
|
||||
#include "readfile.h"
|
||||
|
||||
#include "versioning_common.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
/* Make preferences read-only, use versioning_userdef.c. */
|
||||
#define U (*((const UserDef *)&U))
|
||||
|
||||
/**
|
||||
* Rename if the ID doesn't exist.
|
||||
*/
|
||||
static ID *rename_id_for_versioning(Main *bmain,
|
||||
const short id_type,
|
||||
const char *name_src,
|
||||
const char *name_dst)
|
||||
{
|
||||
/* We can ignore libraries */
|
||||
ListBase *lb = which_libbase(bmain, id_type);
|
||||
ID *id = NULL;
|
||||
LISTBASE_FOREACH (ID *, idtest, lb) {
|
||||
if (idtest->lib == NULL) {
|
||||
if (STREQ(idtest->name + 2, name_src)) {
|
||||
id = idtest;
|
||||
}
|
||||
if (STREQ(idtest->name + 2, name_dst)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (id != NULL) {
|
||||
BLI_strncpy(id->name + 2, name_dst, sizeof(id->name) - 2);
|
||||
/* We know it's unique, this just sorts. */
|
||||
BLI_libblock_ensure_unique_name(bmain, id->name);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
static bScreen *screen_parent_find(const bScreen *screen)
|
||||
{
|
||||
/* Can avoid lookup if screen state isn't maximized/full
|
||||
|
@ -1679,32 +1652,32 @@ void do_versions_after_linking_280(Main *bmain, ReportList *UNUSED(reports))
|
|||
Brush *brush;
|
||||
Material *ma;
|
||||
/* Pen Soft brush. */
|
||||
brush = (Brush *)rename_id_for_versioning(bmain, ID_BR, "Draw Soft", "Pencil Soft");
|
||||
brush = (Brush *)do_versions_rename_id(bmain, ID_BR, "Draw Soft", "Pencil Soft");
|
||||
if (brush) {
|
||||
brush->gpencil_settings->icon_id = GP_BRUSH_ICON_PEN;
|
||||
}
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Pencil", "Pencil");
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Pen", "Pen");
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Ink", "Ink Pen");
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Noise", "Ink Pen Rough");
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Marker", "Marker Bold");
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Block", "Marker Chisel");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Pencil", "Pencil");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Pen", "Pen");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Ink", "Ink Pen");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Noise", "Ink Pen Rough");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Marker", "Marker Bold");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Block", "Marker Chisel");
|
||||
|
||||
ma = BLI_findstring(&bmain->materials, "Black", offsetof(ID, name) + 2);
|
||||
if (ma && ma->gp_style) {
|
||||
rename_id_for_versioning(bmain, ID_MA, "Black", "Solid Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Black", "Solid Stroke");
|
||||
}
|
||||
ma = BLI_findstring(&bmain->materials, "Red", offsetof(ID, name) + 2);
|
||||
if (ma && ma->gp_style) {
|
||||
rename_id_for_versioning(bmain, ID_MA, "Red", "Squares Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Red", "Squares Stroke");
|
||||
}
|
||||
ma = BLI_findstring(&bmain->materials, "Grey", offsetof(ID, name) + 2);
|
||||
if (ma && ma->gp_style) {
|
||||
rename_id_for_versioning(bmain, ID_MA, "Grey", "Solid Fill");
|
||||
do_versions_rename_id(bmain, ID_MA, "Grey", "Solid Fill");
|
||||
}
|
||||
ma = BLI_findstring(&bmain->materials, "Black Dots", offsetof(ID, name) + 2);
|
||||
if (ma && ma->gp_style) {
|
||||
rename_id_for_versioning(bmain, ID_MA, "Black Dots", "Dots Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Black Dots", "Dots Stroke");
|
||||
}
|
||||
|
||||
brush = BLI_findstring(&bmain->brushes, "Pencil", offsetof(ID, name) + 2);
|
||||
|
|
|
@ -20,9 +20,15 @@
|
|||
/* allow readfile to use deprecated functionality */
|
||||
#define DNA_DEPRECATED_ALLOW
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "DNA_screen_types.h"
|
||||
|
||||
#include "BLI_listbase.h"
|
||||
#include "BLI_string.h"
|
||||
|
||||
#include "BKE_lib_id.h"
|
||||
#include "BKE_main.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
|
@ -48,3 +54,34 @@ ARegion *do_versions_add_region_if_not_found(ListBase *regionbase,
|
|||
BLI_insertlinkafter(regionbase, link_after_region, new_region);
|
||||
return new_region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename if the ID doesn't exist.
|
||||
*
|
||||
* \return the ID (if found).
|
||||
*/
|
||||
ID *do_versions_rename_id(Main *bmain,
|
||||
const short id_type,
|
||||
const char *name_src,
|
||||
const char *name_dst)
|
||||
{
|
||||
/* We can ignore libraries */
|
||||
ListBase *lb = which_libbase(bmain, id_type);
|
||||
ID *id = nullptr;
|
||||
LISTBASE_FOREACH (ID *, idtest, lb) {
|
||||
if (idtest->lib == nullptr) {
|
||||
if (STREQ(idtest->name + 2, name_src)) {
|
||||
id = idtest;
|
||||
}
|
||||
if (STREQ(idtest->name + 2, name_dst)) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (id != nullptr) {
|
||||
BLI_strncpy(id->name + 2, name_dst, sizeof(id->name) - 2);
|
||||
/* We know it's unique, this just sorts. */
|
||||
BLI_libblock_ensure_unique_name(bmain, id->name);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
struct ARegion;
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -32,6 +33,11 @@ struct ARegion *do_versions_add_region_if_not_found(struct ListBase *regionbase,
|
|||
const char *name,
|
||||
int link_after_region_type);
|
||||
|
||||
ID *do_versions_rename_id(Main *bmain,
|
||||
const short id_type,
|
||||
const char *name_src,
|
||||
const char *name_dst);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -65,38 +65,11 @@
|
|||
|
||||
#include "BLO_readfile.h"
|
||||
|
||||
#include "versioning_common.h"
|
||||
|
||||
/* Make preferences read-only, use versioning_userdef.c. */
|
||||
#define U (*((const UserDef *)&U))
|
||||
|
||||
/**
|
||||
* Rename if the ID doesn't exist.
|
||||
*/
|
||||
static ID *rename_id_for_versioning(Main *bmain,
|
||||
const short id_type,
|
||||
const char *name_src,
|
||||
const char *name_dst)
|
||||
{
|
||||
/* We can ignore libraries */
|
||||
ListBase *lb = which_libbase(bmain, id_type);
|
||||
ID *id = NULL;
|
||||
LISTBASE_FOREACH (ID *, idtest, lb) {
|
||||
if (idtest->lib == NULL) {
|
||||
if (STREQ(idtest->name + 2, name_src)) {
|
||||
id = idtest;
|
||||
}
|
||||
if (STREQ(idtest->name + 2, name_dst)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (id != NULL) {
|
||||
BLI_strncpy(id->name + 2, name_dst, sizeof(id->name) - 2);
|
||||
/* We know it's unique, this just sorts. */
|
||||
BLI_libblock_ensure_unique_name(bmain, id->name);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
static bool blo_is_builtin_template(const char *app_template)
|
||||
{
|
||||
/* For all builtin templates shipped with Blender. */
|
||||
|
@ -406,28 +379,28 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
|
|||
Brush *brush;
|
||||
|
||||
/* Pencil brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Pencil", "Pencil");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Pencil", "Pencil");
|
||||
|
||||
/* Pen brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Pen", "Pen");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Pen", "Pen");
|
||||
|
||||
/* Pen Soft brush. */
|
||||
brush = (Brush *)rename_id_for_versioning(bmain, ID_BR, "Draw Soft", "Pencil Soft");
|
||||
brush = (Brush *)do_versions_rename_id(bmain, ID_BR, "Draw Soft", "Pencil Soft");
|
||||
if (brush) {
|
||||
brush->gpencil_settings->icon_id = GP_BRUSH_ICON_PEN;
|
||||
}
|
||||
|
||||
/* Ink Pen brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Ink", "Ink Pen");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Ink", "Ink Pen");
|
||||
|
||||
/* Ink Pen Rough brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Noise", "Ink Pen Rough");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Noise", "Ink Pen Rough");
|
||||
|
||||
/* Marker Bold brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Marker", "Marker Bold");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Marker", "Marker Bold");
|
||||
|
||||
/* Marker Chisel brush. */
|
||||
rename_id_for_versioning(bmain, ID_BR, "Draw Block", "Marker Chisel");
|
||||
do_versions_rename_id(bmain, ID_BR, "Draw Block", "Marker Chisel");
|
||||
|
||||
/* Remove useless Fill Area.001 brush. */
|
||||
brush = BLI_findstring(&bmain->brushes, "Fill Area.001", offsetof(ID, name) + 2);
|
||||
|
@ -438,10 +411,10 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
|
|||
/* Rename and fix materials and enable default object lights on. */
|
||||
if (app_template && STREQ(app_template, "2D_Animation")) {
|
||||
Material *ma = NULL;
|
||||
rename_id_for_versioning(bmain, ID_MA, "Black", "Solid Stroke");
|
||||
rename_id_for_versioning(bmain, ID_MA, "Red", "Squares Stroke");
|
||||
rename_id_for_versioning(bmain, ID_MA, "Grey", "Solid Fill");
|
||||
rename_id_for_versioning(bmain, ID_MA, "Black Dots", "Dots Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Black", "Solid Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Red", "Squares Stroke");
|
||||
do_versions_rename_id(bmain, ID_MA, "Grey", "Solid Fill");
|
||||
do_versions_rename_id(bmain, ID_MA, "Black Dots", "Dots Stroke");
|
||||
|
||||
/* Dots Stroke. */
|
||||
ma = BLI_findstring(&bmain->materials, "Dots Stroke", offsetof(ID, name) + 2);
|
||||
|
@ -553,8 +526,8 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
|
|||
}
|
||||
|
||||
/* Objects */
|
||||
rename_id_for_versioning(bmain, ID_OB, "Lamp", "Light");
|
||||
rename_id_for_versioning(bmain, ID_LA, "Lamp", "Light");
|
||||
do_versions_rename_id(bmain, ID_OB, "Lamp", "Light");
|
||||
do_versions_rename_id(bmain, ID_LA, "Lamp", "Light");
|
||||
|
||||
if (app_template && STREQ(app_template, "2D_Animation")) {
|
||||
for (Object *object = bmain->objects.first; object; object = object->id.next) {
|
||||
|
|
Loading…
Reference in New Issue