[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18161] branches/blender2.5/blender/source /blender/editors: 2.5

Michael Fox mfoxdogg at gmail.com
Tue Dec 30 04:38:19 CET 2008


Revision: 18161
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18161
Author:   mfoxdogg
Date:     2008-12-30 04:38:18 +0100 (Tue, 30 Dec 2008)

Log Message:
-----------
  2.5
*******

Small commit, moved selection Operators to Object editor (object_edit.c) as per kaito's request

- normal selection and border/circle select are still in view3d as they depend too much on view3d

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2008-12-30 03:28:01 UTC (rev 18160)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2008-12-30 03:38:18 UTC (rev 18161)
@@ -1026,7 +1026,213 @@
 }
 
 /* ***************************** */
+/* ****** Select by Type ****** */
+static EnumPropertyItem prop_select_object_types[] = {
+	{OB_EMPTY, "EMPTY", "Empty", ""},
+	{OB_MESH, "MESH", "Mesh", ""},
+	{OB_CURVE, "CURVE", "Curve", ""},
+	{OB_SURF, "SURFACE", "Surface", ""},
+	{OB_FONT, "TEXT", "Text", ""},
+	{OB_MBALL, "META", "Meta", ""},
+	{OB_LAMP, "LAMP", "Lamp", ""},
+	{OB_CAMERA, "CAMERA", "Camera", ""},
+	{OB_LATTICE, "LATTICE", "Lattice", ""},
+	{0, NULL, NULL, NULL}
+};
 
+static int object_select_by_type_exec(bContext *C, wmOperator *op)
+{
+	short obtype;
+	
+	obtype = RNA_enum_get(op->ptr, "type");
+		
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if(base->object->type==obtype) {
+			ED_base_object_select(base, BA_SELECT);
+		}
+	}
+	CTX_DATA_END;
+	
+	/* undo? */
+	WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+	
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_select_by_type(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+	
+	/* identifiers */
+	ot->name= "Select By Type";
+	ot->idname= "OBJECT_OT_select_by_type";
+	
+	/* api callbacks */
+	ot->invoke= WM_menu_invoke;
+	ot->exec= object_select_by_type_exec;
+	ot->poll= ED_operator_view3d_active;
+	
+	prop = RNA_def_property(ot->srna, "type", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, prop_select_object_types);
+
+}
+
+/* ****** selection by layer *******/
+
+static int object_select_by_layer_exec(bContext *C, wmOperator *op)
+{
+	unsigned int layernum;
+	
+	layernum = RNA_int_get(op->ptr, "layer");
+		
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if(base->lay == (1<< (layernum -1)))
+			ED_base_object_select(base, BA_SELECT);
+	}
+	CTX_DATA_END;
+	
+	/* undo? */
+	WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+	
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_select_by_layer(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+	
+	/* identifiers */
+	ot->name= "Selection by layer";
+	ot->idname= "OBJECT_OT_select_by_layer";
+	
+	/* api callbacks */
+	/*ot->invoke = XXX - need a int grid popup*/
+	ot->exec= object_select_by_layer_exec;
+	ot->poll= ED_operator_view3d_active;
+	
+	prop = RNA_def_property(ot->srna, "layer", PROP_INT, PROP_UNSIGNED);
+	RNA_def_property_ui_range(prop, 1, 20,1, 1);
+	RNA_def_property_ui_text(prop, "layer", "The layer to select objects in");
+	RNA_def_property_int_default(prop, 2);
+
+}
+
+/* ****** invert selection *******/
+static int object_select_invert_exec(bContext *C, wmOperator *op)
+{
+	ScrArea *sa= CTX_wm_area(C);
+	View3D *v3d= sa->spacedata.first;
+		
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if (base->flag & SELECT)
+			ED_base_object_select(base, BA_DESELECT);
+		else
+			ED_base_object_select(base, BA_SELECT);
+	}
+	CTX_DATA_END;
+	
+	/* undo? */
+	WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+	
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_select_invert(wmOperatorType *ot)
+{
+	
+	/* identifiers */
+	ot->name= "Invert selection";
+	ot->idname= "OBJECT_OT_select_invert";
+	
+	/* api callbacks */
+	ot->exec= object_select_invert_exec;
+	ot->poll= ED_operator_view3d_active;
+
+}
+/* ****** (de)select All *******/
+
+static int object_de_select_all_exec(bContext *C, wmOperator *op)
+{
+	ScrArea *sa= CTX_wm_area(C);
+	View3D *v3d= sa->spacedata.first;
+	int a=0, ok=0; 
+	
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if (base->flag & SELECT) {
+			ok= a= 1;
+			break;
+		}
+		else ok=1;
+	}
+	CTX_DATA_END;
+	
+	if (!ok) return OPERATOR_PASS_THROUGH;
+	
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if (a) ED_base_object_select(base, BA_DESELECT);
+		else ED_base_object_select(base, BA_SELECT);
+	}
+	CTX_DATA_END;
+	
+	/* undo? */
+	WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+	
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_de_select_all(wmOperatorType *ot)
+{
+	
+	/* identifiers */
+	ot->name= "deselect all";
+	ot->idname= "OBJECT_OT_de_select_all";
+	
+	/* api callbacks */
+	ot->exec= object_de_select_all_exec;
+	ot->poll= ED_operator_view3d_active;
+
+}
+/* ****** random selection *******/
+
+static int object_select_random_exec(bContext *C, wmOperator *op)
+{	
+	ScrArea *sa= CTX_wm_area(C);
+	View3D *v3d= sa->spacedata.first;
+	int percent;
+	
+	percent = RNA_int_get(op->ptr, "percent");
+		
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if ((!base->flag & SELECT && (BLI_frand() * 100) < percent)) {
+				ED_base_object_select(base, BA_SELECT);
+		}
+	}
+	CTX_DATA_END;
+	
+	/* undo? */
+	WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+	
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_select_random(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+	
+	/* identifiers */
+	ot->name= "Random selection";
+	ot->idname= "OBJECT_OT_select_random";
+	
+	/* api callbacks */
+	/*ot->invoke= object_select_random_invoke XXX - need a number popup ;*/
+	ot->exec = object_select_random_exec;
+	ot->poll= ED_operator_view3d_active;
+	
+	prop = RNA_def_property(ot->srna, "percent", PROP_INT, PROP_NONE);
+	RNA_def_property_ui_range(prop, 1, 100,1, 1);
+	RNA_def_property_ui_text(prop, "Percent", "Max persentage that will be selected");
+	RNA_def_property_int_default(prop, 50);
+}
 void clear_track(Scene *scene, View3D *v3d)
 {
 	Base *base;

Modified: branches/blender2.5/blender/source/blender/editors/object/object_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_intern.h	2008-12-30 03:28:01 UTC (rev 18160)
+++ branches/blender2.5/blender/source/blender/editors/object/object_intern.h	2008-12-30 03:38:18 UTC (rev 18161)
@@ -34,6 +34,13 @@
 /* object_edit.c */
 void OBJECT_OT_make_parent(wmOperatorType *ot);
 void OBJECT_OT_clear_parent(wmOperatorType *ot);
+void OBJECT_OT_de_select_all(struct wmOperatorType *ot);
+void OBJECT_OT_select_invert(struct wmOperatorType *ot);
+void OBJECT_OT_select_random(struct wmOperatorType *ot);
+void OBJECT_OT_select_by_type(struct wmOperatorType *ot);
+void OBJECT_OT_select_by_layer(struct wmOperatorType *ot);
 
+
+
 #endif /* ED_OBJECT_INTERN_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/object/object_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_ops.c	2008-12-30 03:28:01 UTC (rev 18160)
+++ branches/blender2.5/blender/source/blender/editors/object/object_ops.c	2008-12-30 03:38:18 UTC (rev 18161)
@@ -64,6 +64,11 @@
 {
 	WM_operatortype_append(OBJECT_OT_make_parent);
 	WM_operatortype_append(OBJECT_OT_clear_parent);
+	WM_operatortype_append(OBJECT_OT_select_invert);
+	WM_operatortype_append(OBJECT_OT_select_random);
+	WM_operatortype_append(OBJECT_OT_de_select_all);
+	WM_operatortype_append(OBJECT_OT_select_by_type);
+	WM_operatortype_append(OBJECT_OT_select_by_layer);
 	
 }
 
@@ -72,6 +77,11 @@
 {
 	ListBase *keymap= WM_keymap_listbase(wm, "View3D Object", SPACE_VIEW3D, 0);
 	
+	WM_keymap_add_item(keymap, "OBJECT_OT_de_select_all",AKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "OBJECT_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "OBJECT_OT_select_random",PADASTERKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "OBJECT_OT_select_by_type",PADASTERKEY, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "OBJECT_OT_select_by_layer",PADASTERKEY, KM_PRESS, KM_ALT, 0);
 	WM_keymap_verify_item(keymap, "OBJECT_OT_make_parent", PKEY, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_verify_item(keymap, "OBJECT_OT_clear_parent", PKEY, KM_PRESS, KM_ALT, 0);
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2008-12-30 03:28:01 UTC (rev 18160)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2008-12-30 03:38:18 UTC (rev 18161)
@@ -118,13 +118,9 @@
 
 /* view3d_select.c */
 void VIEW3D_OT_select(struct wmOperatorType *ot);
-void VIEW3D_OT_de_select_all(struct wmOperatorType *ot);
-void VIEW3D_OT_select_invert(struct wmOperatorType *ot);
-void VIEW3D_OT_select_random(struct wmOperatorType *ot);
-void VIEW3D_OT_select_by_type(struct wmOperatorType *ot);
-void VIEW3D_OT_select_by_layer(struct wmOperatorType *ot);
-void VIEW3D_OT_borderselect(struct wmOperatorType *ot);
+void VIEW3D_OT_select_extend(struct wmOperatorType *ot);
 void VIEW3D_OT_circle_select(struct wmOperatorType *ot);
+void VIEW3D_OT_borderselect(struct wmOperatorType *ot);
 
 /* view3d_view.c */
 void VIEW3D_OT_smoothview(struct wmOperatorType *ot);

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c	2008-12-30 03:28:01 UTC (rev 18160)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c	2008-12-30 03:38:18 UTC (rev 18161)
@@ -70,11 +70,7 @@
 	WM_operatortype_append(VIEW3D_OT_viewnumpad);
 	WM_operatortype_append(VIEW3D_OT_viewcenter);
 	WM_operatortype_append(VIEW3D_OT_select);
-	WM_operatortype_append(VIEW3D_OT_select_invert);
-	WM_operatortype_append(VIEW3D_OT_select_random);
-	WM_operatortype_append(VIEW3D_OT_de_select_all);
-	WM_operatortype_append(VIEW3D_OT_select_by_type);
-	WM_operatortype_append(VIEW3D_OT_select_by_layer);
+	WM_operatortype_append(VIEW3D_OT_select_extend);
 	WM_operatortype_append(VIEW3D_OT_borderselect);
 	WM_operatortype_append(VIEW3D_OT_clipping);
 	WM_operatortype_append(VIEW3D_OT_circle_select);
@@ -126,14 +122,14 @@
 
 	/* selection*/
 	WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "VIEW3D_OT_de_select_all",AKEY, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "VIEW3D_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
-	WM_keymap_add_item(keymap, "VIEW3D_OT_select_random",PADASTERKEY, KM_PRESS, 0, 0);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list