rename RNA_property_is_set() --> RNA_struct_property_is_set() in preperation to add...
[blender.git] / source / blender / editors / mesh / mesh_data.c
index baa997241e0395535bfad112659f2378c3ac901c..e40c806fd173a79e21d477ecc54aa37b5225d125 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -239,7 +237,6 @@ int ED_mesh_uv_texture_remove(bContext *C, Object *ob, Mesh *me)
 int ED_mesh_color_add(bContext *C, Scene *UNUSED(scene), Object *UNUSED(ob), Mesh *me, const char *name, int active_set)
 {
        EditMesh *em;
-       MCol *mcol;
        int layernum;
 
        if(me->edit_mesh) {
@@ -262,8 +259,6 @@ int ED_mesh_color_add(bContext *C, Scene *UNUSED(scene), Object *UNUSED(ob), Mes
                if(layernum >= MAX_MCOL)
                        return 0;
 
-               mcol= me->mcol;
-
                if(me->mcol)
                        CustomData_add_layer_named(&me->fdata, CD_MCOL, CD_DUPLICATE, me->mcol, me->totface, name);
                else
@@ -287,7 +282,26 @@ int ED_mesh_color_remove(bContext *C, Object *ob, Mesh *me)
        CustomDataLayer *cdl;
        int index;
 
-        index= CustomData_get_active_layer_index(data, CD_MCOL);
+       index= CustomData_get_active_layer_index(data, CD_MCOL);
+       cdl= (index == -1)? NULL: &data->layers[index];
+
+       if(!cdl)
+               return 0;
+
+       delete_customdata_layer(C, ob, cdl);
+       DAG_id_tag_update(&me->id, 0);
+       WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
+
+       return 1;
+}
+
+int ED_mesh_color_remove_named(bContext *C, Object *ob, Mesh *me, const char *name)
+{
+       CustomData *data= (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata;
+       CustomDataLayer *cdl;
+       int index;
+
+       index= CustomData_get_named_layer_index(data, CD_MCOL, name);
        cdl= (index == -1)? NULL: &data->layers[index];
 
        if(!cdl)
@@ -304,14 +318,14 @@ int ED_mesh_color_remove(bContext *C, Object *ob, Mesh *me)
 
 static int layers_poll(bContext *C)
 {
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        ID *data= (ob)? ob->data: NULL;
        return (ob && !ob->id.lib && ob->type==OB_MESH && data && !data->lib);
 }
 
 static int uv_texture_add_exec(bContext *C, wmOperator *UNUSED(op))
 {
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        if(!ED_mesh_uv_texture_add(C, me, NULL, TRUE))
@@ -323,8 +337,8 @@ static int uv_texture_add_exec(bContext *C, wmOperator *UNUSED(op))
 void MESH_OT_uv_texture_add(wmOperatorType *ot)
 {
        /* identifiers */
-       ot->name= "Add UV Texture";
-       ot->description= "Add UV texture layer";
+       ot->name= "Add UV Map";
+       ot->description= "Add UV Map";
        ot->idname= "MESH_OT_uv_texture_add";
        
        /* api callbacks */
@@ -345,7 +359,7 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
        Mesh *me;
        Object *obedit;
        int exitmode= 0;
-       char name[32];
+       char name[MAX_ID_NAME-2];
        
        /* Check context */
        if(base==NULL || base->object->type!=OB_MESH) {
@@ -354,7 +368,7 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
        }
        
        /* check input variables */
-       if(RNA_property_is_set(op->ptr, "filepath")) {
+       if(RNA_struct_property_is_set(op->ptr, "filepath")) {
                char path[FILE_MAX];
                
                RNA_string_get(op->ptr, "filepath", path);
@@ -366,7 +380,7 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
        }
        
        if(!ima) {
-               BKE_report(op->reports, RPT_ERROR, "Not an Image.");
+               BKE_report(op->reports, RPT_ERROR, "Not an Image");
                return OPERATOR_CANCELLED;
        }
        
@@ -403,8 +417,8 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
 void MESH_OT_drop_named_image(wmOperatorType *ot)
 {
        /* identifiers */
-       ot->name= "Assign Image to UV Texture";
-       ot->description= "Assigns Image to active UV layer, or creates a UV layer";
+       ot->name= "Assign Image to UV Map";
+       ot->description= "Assign Image to active UV Map, or create an UV Map";
        ot->idname= "MESH_OT_drop_named_image";
        
        /* api callbacks */
@@ -415,13 +429,13 @@ void MESH_OT_drop_named_image(wmOperatorType *ot)
        ot->flag= OPTYPE_UNDO;
        
        /* properties */
-       RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Image name to assign.");
+       RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME-2, "Name", "Image name to assign");
        RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file");
 }
 
 static int uv_texture_remove_exec(bContext *C, wmOperator *UNUSED(op))
 {
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        if(!ED_mesh_uv_texture_remove(C, ob, me))
@@ -433,8 +447,8 @@ static int uv_texture_remove_exec(bContext *C, wmOperator *UNUSED(op))
 void MESH_OT_uv_texture_remove(wmOperatorType *ot)
 {
        /* identifiers */
-       ot->name= "Remove UV Texture";
-       ot->description= "Remove UV texture layer";
+       ot->name= "Remove UV Map";
+       ot->description= "Remove UV Map";
        ot->idname= "MESH_OT_uv_texture_remove";
        
        /* api callbacks */
@@ -450,7 +464,7 @@ void MESH_OT_uv_texture_remove(wmOperatorType *ot)
 static int vertex_color_add_exec(bContext *C, wmOperator *UNUSED(op))
 {
        Scene *scene= CTX_data_scene(C);
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        if(!ED_mesh_color_add(C, scene, ob, me, NULL, TRUE))
@@ -476,7 +490,7 @@ void MESH_OT_vertex_color_add(wmOperatorType *ot)
 
 static int vertex_color_remove_exec(bContext *C, wmOperator *UNUSED(op))
 {
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        if(!ED_mesh_color_remove(C, ob, me))
@@ -506,7 +520,7 @@ static int sticky_add_exec(bContext *C, wmOperator *UNUSED(op))
 {
        Scene *scene= CTX_data_scene(C);
        View3D *v3d= CTX_wm_view3d(C);
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        /*if(me->msticky)
@@ -537,7 +551,7 @@ void MESH_OT_sticky_add(wmOperatorType *ot)
 
 static int sticky_remove_exec(bContext *C, wmOperator *UNUSED(op))
 {
-       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+       Object *ob= ED_object_context(C);
        Mesh *me= ob->data;
 
        if(!me->msticky)
@@ -685,7 +699,7 @@ static void mesh_add_faces(Mesh *mesh, int len)
 void ED_mesh_geometry_add(Mesh *mesh, ReportList *reports, int verts, int edges, int faces)
 {
        if(mesh->edit_mesh) {
-               BKE_report(reports, RPT_ERROR, "Can't add geometry in edit mode.");
+               BKE_report(reports, RPT_ERROR, "Can't add geometry in edit mode");
                return;
        }
 
@@ -701,7 +715,7 @@ void ED_mesh_geometry_add(Mesh *mesh, ReportList *reports, int verts, int edges,
 void ED_mesh_faces_add(Mesh *mesh, ReportList *reports, int count)
 {
        if(mesh->edit_mesh) {
-               BKE_report(reports, RPT_ERROR, "Can't add faces in edit mode.");
+               BKE_report(reports, RPT_ERROR, "Can't add faces in edit mode");
                return;
        }
 
@@ -711,7 +725,7 @@ void ED_mesh_faces_add(Mesh *mesh, ReportList *reports, int count)
 void ED_mesh_edges_add(Mesh *mesh, ReportList *reports, int count)
 {
        if(mesh->edit_mesh) {
-               BKE_report(reports, RPT_ERROR, "Can't add edges in edit mode.");
+               BKE_report(reports, RPT_ERROR, "Can't add edges in edit mode");
                return;
        }
 
@@ -721,7 +735,7 @@ void ED_mesh_edges_add(Mesh *mesh, ReportList *reports, int count)
 void ED_mesh_vertices_add(Mesh *mesh, ReportList *reports, int count)
 {
        if(mesh->edit_mesh) {
-               BKE_report(reports, RPT_ERROR, "Can't add vertices in edit mode.");
+               BKE_report(reports, RPT_ERROR, "Can't add vertices in edit mode");
                return;
        }