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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to