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

Ton Roosendaal ton at blender.org
Sun Dec 28 19:10:24 CET 2008


Revision: 18125
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18125
Author:   ton
Date:     2008-12-28 19:10:24 +0100 (Sun, 28 Dec 2008)

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

Recode of 'select all objects by type' to show
how to use itterators.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2008-12-28 18:10:24 UTC (rev 18125)
@@ -137,6 +137,9 @@
 int CTX_data_selected_objects(const bContext *C, ListBase *list);
 int CTX_data_selected_bases(const bContext *C, ListBase *list);
 
+int CTX_data_visible_objects(const bContext *C, ListBase *list);
+int CTX_data_visible_bases(const bContext *C, ListBase *list);
+
 struct Object *CTX_data_active_object(const bContext *C);
 struct Base *CTX_data_active_base(const bContext *C);
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2008-12-28 18:10:24 UTC (rev 18125)
@@ -365,6 +365,16 @@
 	return ctx_data_collection_get(C, CTX_data_selected_bases, list);
 }
 
+int CTX_data_visible_objects(const bContext *C, ListBase *list)
+{
+	return ctx_data_collection_get(C, CTX_data_visible_objects, list);
+}
+
+int CTX_data_visible_bases(const bContext *C, ListBase *list)
+{
+	return ctx_data_collection_get(C, CTX_data_visible_bases, list);
+}
+
 struct Object *CTX_data_active_object(const bContext *C)
 {
 	return ctx_data_pointer_get(C, CTX_data_active_object);

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c	2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c	2008-12-28 18:10:24 UTC (rev 18125)
@@ -266,6 +266,20 @@
 
 		return 1;
 	}
+	else if(ELEM(member, CTX_data_visible_objects, CTX_data_visible_bases)) {
+		for(base=scene->base.first; base; base=base->next) {
+			if(base->lay & v3d->lay) {
+				if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
+					if(member == CTX_data_selected_objects)
+						CTX_data_list_add(result, base->object);
+					else
+						CTX_data_list_add(result, base);
+				}
+			}
+		}
+		
+		return 1;
+	}
 	else if(member == CTX_data_active_base) {
 		if(scene->basact && (scene->basact->lay & v3d->lay))
 			if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c	2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c	2008-12-28 18:10:24 UTC (rev 18125)
@@ -194,6 +194,7 @@
 		else if (mode==BA_DESELECT) {
 			base->flag &= ~SELECT;
 		}
+		base->object->flag= base->flag;
 	}
 }
 
@@ -762,25 +763,6 @@
 	BIF_undo_push("Select Random");
 }
 
-/* selects all objects of a particular type, on currently visible layers */
-void selectall_type(Scene *scene, View3D *v3d, short obtype) 
-{
-	Base *base;
-	
-	base= FIRSTBASE;
-	while(base) {
-		if((base->lay & v3d->lay) &&
-		  (base->object->type == obtype) &&
-		  (base->object->restrictflag & OB_RESTRICT_VIEW)==0
-		) {
-			select_base_v3d(base, BA_SELECT);
-			base->object->flag= base->flag;
-		}
-		base= base->next;
-	}
-
-	BIF_undo_push("Select all per type");
-}
 /* selects all objects on a particular layer */
 void selectall_layer(Scene *scene, unsigned int layernum) 
 {
@@ -792,7 +774,6 @@
 		  (base->object->restrictflag & OB_RESTRICT_VIEW)==0
 		) {
 			select_base_v3d(base, BA_SELECT);
-			base->object->flag= base->flag;
 		}
 		base= base->next;
 	}
@@ -903,7 +884,6 @@
 		if (base->flag & SELECT) {
 			if(b!=base) {
 				select_base_v3d(base, BA_DESELECT);
-				base->object->flag= base->flag;
 			}
 		}
 	}
@@ -1207,9 +1187,6 @@
 				else select_base_v3d(basact, BA_SELECT);
 			}
 
-			/* copy */
-			basact->object->flag= basact->flag;
-			
 			if(oldbasact != basact) {
 				set_active_base(scene, basact);
 			}
@@ -1565,8 +1542,6 @@
 								select_base_v3d(base, BA_SELECT);
 							else
 								select_base_v3d(base, BA_DESELECT);
-
-							base->object->flag= base->flag;
 						}
 
 						col+=4;	/* next color */
@@ -1660,16 +1635,19 @@
 
 static int view3d_select_by_type_exec(bContext *C, wmOperator *op)
 {
-	ScrArea *sa= CTX_wm_area(C);
 	ARegion *ar= CTX_wm_region(C);
-	View3D *v3d= sa->spacedata.first;
-	Scene *scene= CTX_data_scene(C);
 	short obtype;
 	
 	obtype = RNA_enum_get(op->ptr, "type");
 		
-	selectall_type(scene, v3d, obtype);
+	CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+		if(base->object->type==obtype) {
+			select_base_v3d(base, BA_SELECT);
+		}
+	}
+	CTX_DATA_END;
 	
+	/* undo? */
 	ED_region_tag_redraw(ar);
 	
 	return OPERATOR_FINISHED;
@@ -1980,9 +1958,7 @@
 				int dx= base->sx-x;
 				int dy= base->sy-y;
 				if( dx*dx + dy*dy < radius*radius)
-				
 					select_base_v3d(base, BA_SELECT);
-				base->object->flag= base->flag;
 			}
 		}
 	}





More information about the Bf-blender-cvs mailing list