rename RNA_property_is_set() --> RNA_struct_property_is_set() in preperation to add...
[blender.git] / source / blender / editors / mesh / mesh_data.c
index ef52d9be0c3df19c58bdb861a356ed54a0dc89f2..e40c806fd173a79e21d477ecc54aa37b5225d125 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -53,6 +51,7 @@
 #include "BKE_displist.h"
 #include "BKE_image.h"
 #include "BKE_library.h"
+#include "BKE_main.h"
 #include "BKE_material.h"
 #include "BKE_mesh.h"
 #include "BKE_report.h"
@@ -283,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)
@@ -300,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))
@@ -319,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 */
@@ -333,6 +351,7 @@ void MESH_OT_uv_texture_add(wmOperatorType *ot)
 
 static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
+       Main *bmain= CTX_data_main(C);
        Scene *scene= CTX_data_scene(C);
        View3D *v3d= CTX_wm_view3d(C);
        Base *base= ED_view3d_give_base_under_cursor(C, event->mval);
@@ -340,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) {
@@ -349,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);
@@ -377,7 +396,7 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
        if(me->edit_mesh==NULL)
                return OPERATOR_CANCELLED;
        
-       ED_uvedit_assign_image(scene, obedit, ima, NULL);
+       ED_uvedit_assign_image(bmain, scene, obedit, ima, NULL);
 
        if(exitmode) {
                load_editMesh(scene, obedit);
@@ -398,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 */
@@ -410,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))
@@ -428,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 */
@@ -445,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))
@@ -471,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))
@@ -501,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)
@@ -532,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)