[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