2.5:
authorJoshua Leung <aligorith@gmail.com>
Thu, 16 Apr 2009 13:10:08 +0000 (13:10 +0000)
committerJoshua Leung <aligorith@gmail.com>
Thu, 16 Apr 2009 13:10:08 +0000 (13:10 +0000)
* Added extra parameter to generic unique name finding function BLI_uniquename() for specifying the delimeter between non-unique parts of the name and digits.

* Driver target variables now get unique names by default.

13 files changed:
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/fcurve.c
source/blender/blenkernel/intern/ipo.c
source/blender/blenlib/BLI_util.h
source/blender/blenlib/intern/util.c
source/blender/editors/animation/keyframing.c
source/blender/editors/armature/poselib.c
source/blender/editors/armature/poseobject.c
source/blender/editors/gpencil/drawgpencil.c
source/blender/editors/gpencil/gpencil.c
source/blender/editors/space_graph/graph_buttons.c
source/blender/editors/space_outliner/outliner.c

index c8b2ff716126d9c0fd51505cce2ad66e1ed284ae..1d819b7de8b9c368438550f9f42452bffb80dd8c 100644 (file)
@@ -240,7 +240,7 @@ KeyingSet *BKE_keyingset_add (ListBase *list, const char name[], short flag, sho
        BLI_addtail(list, ks);
        
        /* make sure KeyingSet has a unique name (this helps with identification) */
-       BLI_uniquename(list, ks, "Keying Set", offsetof(KeyingSet, name), 64);
+       BLI_uniquename(list, ks, "Keying Set", ' ', offsetof(KeyingSet, name), 64);
        
        /* return new KeyingSet for further editing */
        return ks;
index 9fc907a3931e9700d91e1891af2fb425026997d6..dd8fd88f76c62a85dfb137454d71512fc01a8092 100644 (file)
@@ -93,7 +93,7 @@
 /* Find the first available, non-duplicate name for a given constraint */
 void unique_constraint_name (bConstraint *con, ListBase *list)
 {
-       BLI_uniquename(list, con, "Const", offsetof(bConstraint, name), 32);
+       BLI_uniquename(list, con, "Const", '.', offsetof(bConstraint, name), 32);
 }
 
 /* ----------------- Evaluation Loop Preparation --------------- */
index 5d475767369df36c367dcc8c656c6e2975ab1aca..d7b1bdaeff3c2fc29af4a2d54cd32f319dcca9c5 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <math.h>
 #include <stdio.h>
+#include <stddef.h>
 #include <string.h>
 #include <float.h>
 
@@ -589,8 +590,9 @@ DriverTarget *driver_add_new_target (ChannelDriver *driver)
        dtar= MEM_callocN(sizeof(DriverTarget), "DriverTarget");
        BLI_addtail(&driver->targets, dtar);
        
-       /* give the target a name */
-       strcpy(dtar->name, "a"); // XXX fimxe... this needs more work to get unique names without dots...
+       /* give the target a 'unique' name */
+       strcpy(dtar->name, "var");
+       BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64);
        
        /* return the target */
        return dtar;
index 48ffdca3a83b422b927f5a33b6e6aaaff5c9b6d2..43791e32b3805693ed49edbf563d69afd018d04f 100644 (file)
@@ -1082,7 +1082,7 @@ static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, c
                                BLI_snprintf(agrp->name, 64, grpname);
                                
                                BLI_addtail(&tmp_act.groups, agrp);
-                               BLI_uniquename(&tmp_act.groups, agrp, "Group", offsetof(bActionGroup, name), 64);
+                               BLI_uniquename(&tmp_act.groups, agrp, "Group", '.', offsetof(bActionGroup, name), 64);
                        }
                }
                
index 9f0c3504ef80b2ad0b3023413a655be7acb4324c..30c9fc353b3c47c4dedb287f946180385b280945 100644 (file)
@@ -51,7 +51,7 @@ void BLI_split_dirfile(char *string, char *dir, char *file);
 void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
 void BLI_join_dirfile(char *string, const char *dir, const char *file);
 int BLI_testextensie(const char *str, const char *ext);
-void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], short name_offs, short len);
+void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
 void BLI_newname(char * name, int add);
 int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen);
 void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic);
index 040b2d4027c48a21a65edd7113b06686a804cf15..88f5038e19f0ca9f547d1704eb1183fb879496e2 100644 (file)
@@ -224,8 +224,9 @@ void BLI_newname(char *name, int add)
  *     name_offs: should be calculated using offsetof(structname, membername) macro from stddef.h
  *     len: maximum length of string (to prevent overflows, etc.)
  *     defname: the name that should be used by default if none is specified already
+ *     delim: the character which acts as a delimeter between parts of the name
  */
-void BLI_uniquename(ListBase *list, void *vlink, char defname[], short name_offs, short len)
+void BLI_uniquename(ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len)
 {
        Link *link;
        char tempname[128];
@@ -261,12 +262,12 @@ void BLI_uniquename(ListBase *list, void *vlink, char defname[], short name_offs
                return;
 
        /* Strip off the suffix */
-       dot = strchr(GIVE_STRADDR(vlink, name_offs), '.');
+       dot = strchr(GIVE_STRADDR(vlink, name_offs), delim);
        if (dot)
                *dot=0;
        
        for (number = 1; number <= 999; number++) {
-               BLI_snprintf(tempname, 128, "%s.%03d", GIVE_STRADDR(vlink, name_offs), number);
+               BLI_snprintf(tempname, 128, "%s%c%03d", GIVE_STRADDR(vlink, name_offs), delim, number);
                
                exists = 0;
                for (link= list->first; link; link= link->next) {
index c09ac20f91b1cc9d682fa74bb9e3915279c5f78b..0a911f2281a24d497f2aafbf8b75af76c7f8fb03 100644 (file)
@@ -127,7 +127,7 @@ FCurve *verify_fcurve (bAction *act, const char group[], const char rna_path[],
                                BLI_snprintf(grp->name, 64, group);
                                
                                BLI_addtail(&act->groups, grp);
-                               BLI_uniquename(&act->groups, grp, "Group", offsetof(bActionGroup, name), 64);
+                               BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64);
                        }
                        
                        /* add F-Curve to group */
index f4391ca95c8dbc5ad0a9ede96f66980f7cc8abb1..fc5b98b16904b81cd99f8ba7c03064ddcae69037 100644 (file)
@@ -388,7 +388,7 @@ static int poselib_add_exec (bContext *C, wmOperator *op)
        }
        
        /* validate name */
-       BLI_uniquename(&act->markers, marker, "Pose", offsetof(TimeMarker, name), 64);
+       BLI_uniquename(&act->markers, marker, "Pose", '.', offsetof(TimeMarker, name), 64);
        
        /* make sure we've got KeyingSets to use */
        poselib_get_builtin_keyingsets();
@@ -562,7 +562,7 @@ static int poselib_rename_exec (bContext *C, wmOperator *op)
        
        /* copy name and validate it */
        BLI_strncpy(marker->name, newname, sizeof(marker->name));
-       BLI_uniquename(&act->markers, marker, "Pose", offsetof(TimeMarker, name), 64);
+       BLI_uniquename(&act->markers, marker, "Pose", '.', offsetof(TimeMarker, name), 64);
        
        /* done */
        return OPERATOR_FINISHED;
index ae82c063435feddbadf914824b6217f5858ec893..09edc5549c19bfb8d5bbbb5768c525dfa5e44ea3 100644 (file)
@@ -970,7 +970,7 @@ void pose_add_posegroup (Scene *scene)
        grp= MEM_callocN(sizeof(bActionGroup), "PoseGroup");
        strcpy(grp->name, "Group");
        BLI_addtail(&pose->agroups, grp);
-       BLI_uniquename(&pose->agroups, grp, "Group", offsetof(bActionGroup, name), 32);
+       BLI_uniquename(&pose->agroups, grp, "Group", '.', offsetof(bActionGroup, name), 32);
        
        pose->active_group= BLI_countlist(&pose->agroups);
        
index b467450673d68750e46615ed3a431f9052411c41..9c24cd8b1e84003dd98be8c383e02742e8ba5540 100644 (file)
@@ -102,7 +102,7 @@ void gp_ui_renamelayer_cb (void *gpd_arg, void *gpl_arg)
        bGPdata *gpd= (bGPdata *)gpd_arg;
        bGPDlayer *gpl= (bGPDlayer *)gpl_arg;
        
-       BLI_uniquename(&gpd->layers, gpl, "GP_Layer", offsetof(bGPDlayer, info[0]), 128);
+       BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info[0]), 128);
        gpencil_layer_setactive(gpd, gpl);
        
        scrarea_queue_winredraw(curarea);
index 7a251f2c2524f4fdbdc3d30502482281bbcad1d3..f842cde72d9f220a062b36558ecc3796c07d7ac2 100644 (file)
@@ -226,7 +226,7 @@ bGPDlayer *gpencil_layer_addnew (bGPdata *gpd)
        
        /* auto-name */
        sprintf(gpl->info, "GP_Layer");
-       BLI_uniquename(&gpd->layers, gpl, "GP_Layer", offsetof(bGPDlayer, info[0]), 128);
+       BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info[0]), 128);
        
        /* make this one the active one */
        gpencil_layer_setactive(gpd, gpl);
index 4bdc12f33c918c85d2bfc24bec6c21d33fc6361d..cfb5d61f90b08d8b685d1ec4133c569619040ab7 100644 (file)
@@ -275,7 +275,7 @@ static void graph_panel_drivers(const bContext *C, ARegion *ar, short cntrl, bAn
                short height = 60;
                
                /* variable name */
-               uiDefButC(block, TEX, B_REDR, "Name: ", 10,yco,280,20, dtar->name, 0, 63, 0, 0, "Name of target variable.");
+               uiDefButC(block, TEX, B_REDR, "Name: ", 10,yco,280,20, dtar->name, 0, 63, 0, 0, "Name of target variable (No spaces or dots are allowed. Also, must not start with a symbol or digit).");
                
                /* remove button */
                but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 290, yco, 20, 20, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable.");
index 6bd1e915b2b550d26603470513b22f78f30286c4..46f8bc7714917934c91abb217382e5a2a436da51 100644 (file)
@@ -4060,7 +4060,7 @@ static void namebutton_cb(bContext *C, void *tep, void *oldnamep)
                                        Object *ob= (Object *)tselem->id; // id = object
                                        bActionGroup *grp= te->directdata;
                                        
-                                       BLI_uniquename(&ob->pose->agroups, grp, "Group", offsetof(bActionGroup, name), 32);
+                                       BLI_uniquename(&ob->pose->agroups, grp, "Group", '.', offsetof(bActionGroup, name), 32);
                                }
                                break;
                        case TSE_R_LAYER: