- rna/python api object.create_render_mesh(...) support for getting a mesh from metab...
[blender.git] / source / blender / editors / object / object_select.c
index cfd65ad18ec8e4118a5718ef479f6bcf392cf74b..432aaf2d2cb92c02cf35e6173291fbb65ed033fa 100644 (file)
@@ -53,6 +53,7 @@
 #include "BKE_property.h"
 #include "BKE_report.h"
 #include "BKE_scene.h"
+#include "BKE_utildefines.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -117,22 +118,16 @@ void ED_base_object_activate(bContext *C, Base *base)
 
 /********************** Selection Operators **********************/
 
-static EnumPropertyItem prop_select_types[] = {
-       {0, "EXCLUSIVE", 0, "Exclusive", ""},
-       {1, "EXTEND", 0, "Extend", ""},
-       {0, NULL, 0, NULL, NULL}
-};
-
 /************************ Select by Type *************************/
 
 static int object_select_by_type_exec(bContext *C, wmOperator *op)
 {
-       short obtype, seltype;
+       short obtype, extend;
        
        obtype = RNA_enum_get(op->ptr, "type");
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
                
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -166,9 +161,9 @@ void OBJECT_OT_select_by_type(wmOperatorType *ot)
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 0, "Selection", "Extend selection or clear selection then select");
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", object_type_items, 1, "Type", "");
-
 }
 
 /*********************** Selection by Links *********************/
@@ -192,7 +187,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op)
        Tex *tex=0;
        int a, b;
        int nr = RNA_enum_get(op->ptr, "type");
-       short changed = 0, seltype;
+       short changed = 0, extend;
        /* events (nr):
         * Object Ipo: 1
         * ObData: 2
@@ -202,9 +197,9 @@ static int object_select_linked_exec(bContext *C, wmOperator *op)
         * PSys: 6
         */
 
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -327,9 +322,9 @@ void OBJECT_OT_select_linked(wmOperatorType *ot)
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", prop_select_linked_types, 0, "Type", "");
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
-
 }
 
 /*********************** Selected Grouped ********************/
@@ -575,11 +570,11 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op)
        Scene *scene= CTX_data_scene(C);
        Object *ob;
        int nr = RNA_enum_get(op->ptr, "type");
-       short changed = 0, seltype;
+       short changed = 0, extend;
 
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -628,8 +623,8 @@ void OBJECT_OT_select_grouped(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
        /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
        RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", "");
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
 }
 
 /************************* Select by Layer **********************/
@@ -637,12 +632,12 @@ void OBJECT_OT_select_grouped(wmOperatorType *ot)
 static int object_select_by_layer_exec(bContext *C, wmOperator *op)
 {
        unsigned int layernum;
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        layernum = RNA_int_get(op->ptr, "layer");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -676,8 +671,9 @@ void OBJECT_OT_select_by_layer(wmOperatorType *ot)
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
        RNA_def_int(ot->srna, "layer", 1, 1, 20, "Layer", "", 1, 20);
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
 }
 
 /************************** Select Inverse *************************/
@@ -878,9 +874,9 @@ void object_flip_name (char *name)
 static int object_select_mirror_exec(bContext *C, wmOperator *op)
 {
        char tmpname[32];
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
        CTX_DATA_BEGIN(C, Base*, primbase, selected_bases) {
 
@@ -894,7 +890,7 @@ static int object_select_mirror_exec(bContext *C, wmOperator *op)
                }
                CTX_DATA_END;
                
-               if (seltype == 0) ED_base_object_select(primbase, BA_DESELECT);
+               if (extend == 0) ED_base_object_select(primbase, BA_DESELECT);
                
        }
        CTX_DATA_END;
@@ -920,7 +916,7 @@ void OBJECT_OT_select_mirror(wmOperatorType *ot)
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
+       RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first.");
 }
 
 
@@ -981,11 +977,11 @@ void OBJECT_OT_select_name(wmOperatorType *ot)
 static int object_select_random_exec(bContext *C, wmOperator *op)
 {      
        float percent;
-       short seltype;
+       short extend;
        
-       seltype = RNA_enum_get(op->ptr, "seltype");
+       extend= RNA_boolean_get(op->ptr, "extend");
        
-       if (seltype == 0) {
+       if (extend == 0) {
                CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
                        ED_base_object_select(base, BA_DESELECT);
                }
@@ -1020,8 +1016,9 @@ void OBJECT_OT_select_random(wmOperatorType *ot)
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
+       /* properties */
+       RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
        RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "percentage of objects to randomly select", 0.0001f, 1.0f);
-       RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
 }