[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32574] trunk/blender/source/blender/ editors/screen/screen_context.c: patch by Elia Sarti, adding selectable_objects and selectable_bases to the screen context, allowing some operators to run from the console which previously only worked in the 3D view .

Campbell Barton ideasman42 at gmail.com
Tue Oct 19 03:24:10 CEST 2010


Revision: 32574
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32574
Author:   campbellbarton
Date:     2010-10-19 03:24:09 +0200 (Tue, 19 Oct 2010)

Log Message:
-----------
patch by Elia Sarti, adding selectable_objects and selectable_bases to the screen context, allowing some operators to run from the console which previously only worked in the 3D view.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_context.c

Modified: trunk/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_context.c	2010-10-19 01:21:22 UTC (rev 32573)
+++ trunk/blender/source/blender/editors/screen/screen_context.c	2010-10-19 01:24:09 UTC (rev 32574)
@@ -48,6 +48,7 @@
 	bScreen *sc= CTX_wm_screen(C);
 	Scene *scene= sc->scene;
 	Base *base;
+	unsigned int lay = scene->lay;
 
 #if 0	/* Using the context breaks adding objects in the UI. Need to find out why - campbell */
 	Object *obact= CTX_data_active_object(C);
@@ -61,7 +62,8 @@
 
 	if(CTX_data_dir(member)) {
 		static const char *dir[] = {
-			"scene", "visible_objects", "visible_bases", "selected_objects", "selected_bases",
+			"scene", "visible_objects", "visible_bases", "selectable_objects", "selectable_bases",
+			"selected_objects", "selected_bases",
 			"selected_editable_objects", "selected_editable_bases",
 			"visible_bones", "editable_bones", "selected_bones", "selected_editable_bones",
 			"visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone",
@@ -92,6 +94,22 @@
 		CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
 		return 1;
 	}
+	else if(CTX_data_equals(member, "selectable_objects") || CTX_data_equals(member, "selectable_bases")) {
+		int selectable_objects= CTX_data_equals(member, "selectable_objects");
+
+		for(base=scene->base.first; base; base=base->next) {
+			if(base->lay & lay) {
+				if((base->object->restrictflag & OB_RESTRICT_VIEW)==0 && (base->object->restrictflag & OB_RESTRICT_SELECT)==0) {
+					if(selectable_objects)
+						CTX_data_id_list_add(result, &base->object->id);
+					else
+						CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
+				}
+			}
+		}
+		CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
+		return 1;
+	}
 	else if(CTX_data_equals(member, "selected_objects") || CTX_data_equals(member, "selected_bases")) {
 		int selected_objects= CTX_data_equals(member, "selected_objects");
 





More information about the Bf-blender-cvs mailing list