[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16646] trunk/blender/source/blender: Added select grouped property ( objects with shared property names will be selected)

Campbell Barton ideasman42 at gmail.com
Sun Sep 21 12:12:33 CEST 2008


Revision: 16646
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16646
Author:   campbellbarton
Date:     2008-09-21 12:12:33 +0200 (Sun, 21 Sep 2008)

Log Message:
-----------
Added select grouped property (objects with shared property names will be selected)
(updated select group toolbox and header menu)

Added 2 copy property options - Replace All and Merge All, since there was no way to remove all properties, or set all objects game properties to be the same as the active objects.
Added set_ob_property(ob, prop) to property api.

bugfix in python api, copyAllPropertiesTo, it didnt check for duplicates or that it wasnt copying from/to the same object.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_property.h
    trunk/blender/source/blender/blenkernel/intern/property.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/src/drawmesh.c
    trunk/blender/source/blender/src/drawobject.c
    trunk/blender/source/blender/src/editobject.c
    trunk/blender/source/blender/src/header_view3d.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/toolbox.c

Modified: trunk/blender/source/blender/blenkernel/BKE_property.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_property.h	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/blenkernel/BKE_property.h	2008-09-21 10:12:33 UTC (rev 16646)
@@ -41,7 +41,8 @@
 void copy_properties(struct ListBase *lbn, struct ListBase *lbo);
 void init_property(struct bProperty *prop);
 struct bProperty *new_property(int type);
-struct bProperty *get_property(struct Object *ob, char *name);
+struct bProperty *get_ob_property(struct Object *ob, char *name);
+void set_ob_property(struct Object *ob, struct bProperty *propc);
 int compare_property(struct bProperty *prop, char *str);
 void set_property(struct bProperty *prop, char *str);
 void add_property(struct bProperty *prop, char *str);

Modified: trunk/blender/source/blender/blenkernel/intern/property.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/property.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/blenkernel/intern/property.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -83,8 +83,7 @@
 void copy_properties(ListBase *lbn, ListBase *lbo)
 {
 	bProperty *prop, *propn;
-	
-	lbn->first= lbn->last= 0;
+	free_properties( lbn ); /* incase we are copying to an object with props */
 	prop= lbo->first;
 	while(prop) {
 		propn= copy_property(prop);
@@ -139,7 +138,7 @@
 	return prop;
 }
 
-bProperty *get_property(Object *ob, char *name)
+bProperty *get_ob_property(Object *ob, char *name)
 {
 	bProperty *prop;
 	
@@ -151,6 +150,17 @@
 	return NULL;
 }
 
+void set_ob_property(Object *ob, bProperty *propc)
+{
+	bProperty *prop;
+	prop= get_ob_property(ob, propc->name);
+	if(prop) {
+		free_property(prop);
+		BLI_remlink(&ob->prop, prop);
+	}
+	BLI_addtail(&ob->prop, copy_property(propc));
+}
+
 /* negative: prop is smaller
  * positive: prop is larger
  */

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -136,7 +136,7 @@
 #include "BKE_object.h"
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
-#include "BKE_property.h" // for get_property
+#include "BKE_property.h" // for get_ob_property
 #include "BKE_sca.h" // for init_actuator
 #include "BKE_scene.h"
 #include "BKE_softbody.h"	// sbNew()
@@ -5325,7 +5325,7 @@
 			while (act) {
 				if(act->type==ACT_IPO) {
 					ia= act->data;
-					prop= get_property(ob, ia->name);
+					prop= get_ob_property(ob, ia->name);
 					if(prop) {
 						ia->type= ACT_IPO_FROM_PROP;
 					}

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/python/api2_2x/Object.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -3002,7 +3002,7 @@
 		return EXPP_ReturnPyObjError( PyExc_TypeError,
 				"expected a string" );
 
-	prop = get_property( self->object, prop_name );
+	prop = get_ob_property( self->object, prop_name );
 	if( prop )
 		return Property_CreatePyObject( prop );
 
@@ -3018,7 +3018,7 @@
 	char *prop_type = NULL;
 	short type = -1;
 	BPy_Property *py_prop = NULL;
-	int argslen = PyObject_Length( args );
+	int argslen = PyTuple_Size( args );
 
 	if( argslen == 3 || argslen == 2 ) {
 		if( !PyArg_ParseTuple( args, "sO|s", &prop_name, &prop_data,
@@ -3129,7 +3129,7 @@
 			py_prop->property = NULL;
 		}
 	} else {
-		prop = get_property( self->object, prop_name );
+		prop = get_ob_property( self->object, prop_name );
 		if( prop ) {
 			BLI_remlink( &self->object->prop, prop );
 			free_property( prop );
@@ -3148,18 +3148,23 @@
 					     PyObject * args )
 {
 	PyObject *dest;
+	Object *dest_ob;
 	bProperty *prop = NULL;
 	bProperty *propn = NULL;
 
 	if( !PyArg_ParseTuple( args, "O!", &Object_Type, &dest ) )
 		return EXPP_ReturnPyObjError( PyExc_TypeError,
 				"expected an Object" );
-
+	
+	if (dest == (PyObject *)self) {
+		Py_RETURN_NONE;
+	}
+	dest_ob = ( ( BPy_Object * ) dest )->object;
+	
 	/*make a copy of all its properties*/
 	prop = self->object->prop.first;
 	while( prop ) {
-		propn = copy_property( prop );
-		BLI_addtail( &( ( BPy_Object * ) dest )->object->prop, propn );
+		set_ob_property( dest_ob, prop );
 		prop = prop->next;
 	}
 

Modified: trunk/blender/source/blender/src/drawmesh.c
===================================================================
--- trunk/blender/source/blender/src/drawmesh.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/src/drawmesh.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -467,7 +467,7 @@
 	MFace *mf, *mface= me->mface;
 	MTFace *tface= me->mtface;
 	MCol *mcol= me->mcol;	/* why does mcol exist? */
-	bProperty *prop = get_property(ob, "Text");
+	bProperty *prop = get_ob_property(ob, "Text");
 	GPUVertexAttribs gattribs;
 	int a, totface= me->totface;
 
@@ -568,7 +568,7 @@
 		dm->drawFacesTex(dm, draw_tface__set_draw);
 
 	/* draw game engine text hack */
-	if(get_property(ob, "Text")) 
+	if(get_ob_property(ob, "Text")) 
 		draw_mesh_text(ob, 0);
 
 	draw_textured_end();

Modified: trunk/blender/source/blender/src/drawobject.c
===================================================================
--- trunk/blender/source/blender/src/drawobject.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/src/drawobject.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -2281,7 +2281,7 @@
 			glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
 
 			dm->drawFacesGLSL(dm, GPU_enable_material);
-			if(get_property(ob, "Text"))
+			if(get_ob_property(ob, "Text"))
 				draw_mesh_text(ob, 1);
 			GPU_disable_material();
 

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/src/editobject.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -3192,7 +3192,7 @@
  
 static void copymenu_properties(Object *ob)
 {	
-	bProperty *prop, *propn, *propc;
+	bProperty *prop;
 	Base *base;
 	int nr, tot=0;
 	char *str;
@@ -3208,45 +3208,43 @@
 		return;
 	}
 	
-	str= MEM_callocN(24+32*tot, "copymenu prop");
+	str= MEM_callocN(50 + 33*tot, "copymenu prop");
 	
-	strcpy(str, "Copy Property %t");
+	strcpy(str, "Copy Property %t|Replace All|Merge All|%l");
 	
 	tot= 0;	
 	prop= ob->prop.first;
 	while(prop) {
 		tot++;
-		strcat(str, " |");
+		strcat(str, "|");
 		strcat(str, prop->name);
 		prop= prop->next;
 	}
 
 	nr= pupmenu(str);
-	if(nr>0) {
-		tot= 0;
-		prop= ob->prop.first;
-		while(prop) {
-			tot++;
-			if(tot==nr) break;
-			prop= prop->next;
+	
+	if ( nr==1 || nr==2 ) {
+		base= FIRSTBASE;
+		while(base) {
+			if((base != BASACT) && TESTBASELIB(base)) {
+				if (nr==1) { /* replace */
+					copy_properties( &base->object->prop, &ob->prop );
+				} else {
+					for(prop = ob->prop.first; prop; prop= prop->next ) {
+						set_ob_property(base->object, prop);
+					}
+				}
+			}
+			base= base->next;
 		}
+	} else if(nr>0) {
+		prop = BLI_findlink(&ob->prop, nr-4); /* account for first 3 menu items & menu index starting at 1*/
+		
 		if(prop) {
-			propc= prop;
-			
-			base= FIRSTBASE;
-			while(base) {
-				if(base != BASACT) {
-					if(TESTBASELIB(base)) {
-						prop= get_property(base->object, propc->name);
-						if(prop) {
-							free_property(prop);
-							BLI_remlink(&base->object->prop, prop);
-						}
-						propn= copy_property(propc);
-						BLI_addtail(&base->object->prop, propn);
-					}
+			for(base= FIRSTBASE; base; base= base->next) {
+				if((base != BASACT) && TESTBASELIB(base)) {
+					set_ob_property(base->object, prop);
 				}
-				base= base->next;
 			}
 		}
 	}

Modified: trunk/blender/source/blender/src/header_view3d.c
===================================================================
--- trunk/blender/source/blender/src/header_view3d.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/src/header_view3d.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -885,6 +885,8 @@
 	case 7: /* Objects in Same Group */
 	case 8: /* Object Hooks*/
 	case 9: /* Object PassIndex*/
+	case 10: /* Object Color*/
+	case 11: /* Game Properties*/
 		select_object_grouped((short)event);
 		break;
 	}
@@ -907,7 +909,9 @@
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects on Shared Layers|Shift G, 6",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects in Same Group|Shift G, 7",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Hooks|Shift G, 8",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object PassIndex|Shift G, 9",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");	
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object PassIndex|Shift G, 9",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Color|Shift G, 0",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");	
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Game Properties|Shift G, Alt+1",		0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");	
 
 	uiBlockSetDirection(block, UI_RIGHT);
 	uiTextBoundsBlock(block, 60);

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c	2008-09-21 05:38:28 UTC (rev 16645)
+++ trunk/blender/source/blender/src/space.c	2008-09-21 10:12:33 UTC (rev 16646)
@@ -64,6 +64,7 @@
 #include "DNA_modifier_types.h" /* used for select grouped hooks */
 #include "DNA_object_types.h"
 #include "DNA_particle_types.h"
+#include "DNA_property_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_sequence_types.h"
@@ -93,7 +94,6 @@
 #include "BKE_utildefines.h"
 #include "BKE_image.h" /* for IMA_TYPE_COMPOSITE and IMA_TYPE_R_RESULT */
 #include "BKE_particle.h"
-
 #include "BIF_spacetypes.h"  /* first, nasty dependency with typedef */
 
 #include "BIF_butspace.h"
@@ -710,7 +710,7 @@
 	short changed = 0;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list