[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28593] trunk/blender: - split objet group add/link into 2 operators

Campbell Barton ideasman42 at gmail.com
Wed May 5 17:41:38 CEST 2010


Revision: 28593
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28593
Author:   campbellbarton
Date:     2010-05-05 17:41:38 +0200 (Wed, 05 May 2010)

Log Message:
-----------
- split objet group add/link into 2 operators
- link now brings up a search box so when there are 100's of groups its less annoying.
- utility functions for id-enums so only local objects can be displayed in a search list (used for group_link)
- renamed operator properties from typle to scene, group, action etc.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_object.py
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    trunk/blender/source/blender/editors/animation/anim_markers.c
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/editors/object/object_group.c
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/object/object_relations.c
    trunk/blender/source/blender/editors/space_nla/nla_edit.c
    trunk/blender/source/blender/makesrna/RNA_enum_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/release/scripts/ui/properties_object.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_object.py	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/release/scripts/ui/properties_object.py	2010-05-05 15:41:38 UTC (rev 28593)
@@ -155,13 +155,11 @@
         ob = context.object
         wide_ui = context.region.width > narrowui
 
-        if wide_ui:
-            split = layout.split()
-            split.operator_menu_enum("object.group_add", "group")
-            split.label()
-        else:
-            layout.operator_menu_enum("object.group_add", "group")
+        split = layout.split(percentage=0.8, align=True)
+        split.operator("object.group_link", text="Link to Group")
+        split.operator("object.group_add", text="", icon='ZOOMIN')
 
+        # XXX, this is bad practice, yes, I wrote it :( - campbell
         index = 0
         value = str(tuple(context.scene.cursor_location))
         for group in bpy.data.groups:

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -844,6 +844,7 @@
 		for(x = 1; x < edgeSize - 1; x++, i++) {
 			vd= ccgSubSurf_getEdgeData(ss, e, x);
 			copy_v3_v3(mvert[i].co, vd->co);
+			/* XXX, This gives errors with -fpe, the normals dont seem to be unit length - campbell */
 			normal_float_to_short_v3(mvert[i].no, vd->no);
 		}
 	}

Modified: trunk/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_markers.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/animation/anim_markers.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -1069,7 +1069,7 @@
 static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op)
 {
 	ListBase *markers= context_get_markers(C);
-	Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type"));
+	Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene"));
 	TimeMarker *marker, *marker_new;
 
 	if(scene_to==NULL) {
@@ -1110,7 +1110,7 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", "");
+	prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", "");
 	RNA_def_enum_funcs(prop, RNA_scene_itemf);
 
 }

Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/object/object_add.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -850,7 +850,7 @@
 
 static int group_instance_add_exec(bContext *C, wmOperator *op)
 {
-	Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type"));
+	Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group"));
 
 	int enter_editmode;
 	unsigned int layer;
@@ -895,7 +895,7 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", "");
+	prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", "");
 	RNA_def_enum_funcs(prop, RNA_group_itemf);
 	ot->prop= prop;
 	ED_object_add_generic_props(ot, FALSE);

Modified: trunk/blender/source/blender/editors/object/object_group.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_group.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/object/object_group.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -52,6 +52,7 @@
 
 #include "RNA_access.h"
 #include "RNA_define.h"
+#include "RNA_enum_types.h"
 
 #include "object_intern.h"
 
@@ -224,84 +225,71 @@
 
 static int group_add_exec(bContext *C, wmOperator *op)
 {
-	Main *bmain= CTX_data_main(C);
 	Scene *scene= CTX_data_scene(C);
 	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
-	Base *base;
 	Group *group;
-	int value= RNA_enum_get(op->ptr, "group");
 
-	if(!ob)
+	if(ob == NULL)
 		return OPERATOR_CANCELLED;
-	
-	base= object_in_scene(ob, scene);
-	if(!base)
-		return OPERATOR_CANCELLED;
-	
-	if(value == -1)
-		group= add_group( "Group" );
-	else
-		group= BLI_findlink(&bmain->group, value);
 
-	if(group) {
-		add_to_group(group, ob, scene, NULL); /* base will be used if found */
-	}
+    group= add_group("Group");
+    add_to_group(group, ob, scene, NULL);
 
 	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
-	
+
 	return OPERATOR_FINISHED;
 }
 
-static EnumPropertyItem group_items[]= {
-	{-1, "ADD_NEW", 0, "Add New Group", ""},
-	{0, NULL, 0, NULL, NULL}};
-
-static EnumPropertyItem *group_itemf(bContext *C, PointerRNA *ptr, int *free)
-{	
-	Main *bmain= CTX_data_main(C);
-	Group *group;
-	EnumPropertyItem tmp = {0, "", 0, "", ""};
-	EnumPropertyItem *item= NULL;
-	int a, totitem= 0;
+void OBJECT_OT_group_add(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Add to Group";
+	ot->idname= "OBJECT_OT_group_add";
+	ot->description = "Add an object to a new group";
 	
-	RNA_enum_items_add_value(&item, &totitem, group_items, -1);
+	/* api callbacks */
+	ot->exec= group_add_exec;
 
-	if (bmain) {
-		if(bmain->group.first)
-			RNA_enum_item_add_separator(&item, &totitem);
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
 
-		for(a=0, group=bmain->group.first; group; group=group->id.next, a++) {
-			tmp.value= a;
-			tmp.identifier= group->id.name+2;
-			tmp.name= group->id.name+2;
-			RNA_enum_item_add(&item, &totitem, &tmp);
-		}
-	}
+static int group_link_exec(bContext *C, wmOperator *op)
+{
+	Scene *scene= CTX_data_scene(C);
+	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+    Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group"));
 
-	RNA_enum_item_end(&item, &totitem);
-	*free= 1;
+	if(ELEM(NULL, ob, group))
+		return OPERATOR_CANCELLED;
 
-	return item;
+    add_to_group(group, ob, scene, NULL);
+
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+
+	return OPERATOR_FINISHED;
 }
 
-void OBJECT_OT_group_add(wmOperatorType *ot)
+void OBJECT_OT_group_link(wmOperatorType *ot)
 {
 	PropertyRNA *prop;
 
 	/* identifiers */
-	ot->name= "Add to Group";
-	ot->idname= "OBJECT_OT_group_add";
-	ot->description = "Add an object to an existing group, or create new";
+	ot->name= "Link to Group";
+	ot->idname= "OBJECT_OT_group_link";
+	ot->description = "Add an object to an existing group";
 	
 	/* api callbacks */
-	ot->exec= group_add_exec;
+	ot->exec= group_link_exec;
+	ot->invoke= WM_enum_search_invoke;
 
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "group", group_items, -1, "Group", "Group to add object to.");
-	RNA_def_enum_funcs(prop, group_itemf);
+	prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", "");
+	RNA_def_enum_funcs(prop, RNA_group_local_itemf);
+	ot->prop= prop;
 }
 
 static int group_remove_exec(bContext *C, wmOperator *op)

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/object/object_intern.h	2010-05-05 15:41:38 UTC (rev 28593)
@@ -212,6 +212,7 @@
 
 /* object_group.c */
 void OBJECT_OT_group_add(struct wmOperatorType *ot);
+void OBJECT_OT_group_link(struct wmOperatorType *ot);
 void OBJECT_OT_group_remove(struct wmOperatorType *ot);
 
 /* object_bake.c */

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/object/object_ops.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -193,6 +193,7 @@
 	WM_operatortype_append(LATTICE_OT_make_regular);
 
 	WM_operatortype_append(OBJECT_OT_group_add);
+	WM_operatortype_append(OBJECT_OT_group_link);
 	WM_operatortype_append(OBJECT_OT_group_remove);
 
 	WM_operatortype_append(OBJECT_OT_hook_add_selobj);

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -1146,7 +1146,7 @@
 
 static int make_links_scene_exec(bContext *C, wmOperator *op)
 {
-	Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type"));
+	Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene"));
 
 	if(scene_to==NULL) {
 		BKE_report(op->reports, RPT_ERROR, "Scene not found");
@@ -1264,8 +1264,8 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
 	/* properties */
-	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", "");
-	RNA_def_enum_funcs(prop, RNA_scene_itemf);
+	prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", "");
+	RNA_def_enum_funcs(prop, RNA_scene_local_itemf);
 }
 
 void OBJECT_OT_make_links_data(wmOperatorType *ot)

Modified: trunk/blender/source/blender/editors/space_nla/nla_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_nla/nla_edit.c	2010-05-05 14:59:22 UTC (rev 28592)
+++ trunk/blender/source/blender/editors/space_nla/nla_edit.c	2010-05-05 15:41:38 UTC (rev 28593)
@@ -260,7 +260,7 @@
 	cfra= (float)CFRA;
 		
 	/* get action to use */
-	act= BLI_findlink(&CTX_data_main(C)->action, RNA_enum_get(op->ptr, "type"));
+	act= BLI_findlink(&CTX_data_main(C)->action, RNA_enum_get(op->ptr, "action"));
 	
 	if (act == NULL) {
 		BKE_report(op->reports, RPT_ERROR, "No valid Action to add.");
@@ -336,7 +336,7 @@
 	
 	/* props */
 		// TODO: this would be nicer as an ID-pointer...
-	prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", "");

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list