[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23689] trunk/blender/source/blender/ editors/object: 'Add Group' back in the add object menu
Campbell Barton
ideasman42 at gmail.com
Wed Oct 7 16:40:28 CEST 2009
Revision: 23689
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23689
Author: campbellbarton
Date: 2009-10-07 16:40:27 +0200 (Wed, 07 Oct 2009)
Log Message:
-----------
'Add Group' back in the add object menu
Modified Paths:
--------------
trunk/blender/source/blender/editors/object/object_add.c
trunk/blender/source/blender/editors/object/object_intern.h
trunk/blender/source/blender/editors/object/object_ops.c
Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c 2009-10-07 13:22:56 UTC (rev 23688)
+++ trunk/blender/source/blender/editors/object/object_add.c 2009-10-07 14:40:27 UTC (rev 23689)
@@ -26,6 +26,7 @@
*/
#include <stdlib.h>
+#include <string.h>
#include "MEM_guardedalloc.h"
@@ -704,6 +705,8 @@
uiItemMenuEnumO(layout, "Lamp", ICON_OUTLINER_OB_LAMP, "OBJECT_OT_lamp_add", "type");
uiItemS(layout);
uiItemMenuEnumO(layout, "Force Field", ICON_OUTLINER_OB_EMPTY, "OBJECT_OT_effector_add", "type");
+ uiItemS(layout);
+ uiItemMenuEnumO(layout, "Group Instance", ICON_OUTLINER_OB_EMPTY, "OBJECT_OT_group_instance_add", "type");
uiPupMenuEnd(C, pup);
@@ -728,6 +731,81 @@
ot->flag= 0;
}
+/* add dupligroup */
+static EnumPropertyItem *add_dupligroup_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+ EnumPropertyItem *item= NULL, item_tmp;
+ int totitem= 0;
+ int i= 0;
+ Group *group;
+
+ if(C==NULL)
+ return NULL;
+
+ memset(&item_tmp, 0, sizeof(item_tmp));
+
+ for(group= CTX_data_main(C)->group.first; group; group= group->id.next) {
+ item_tmp.identifier= item_tmp.name= group->id.name+2;
+ item_tmp.value= i++;
+ RNA_enum_item_add(&item, &totitem, &item_tmp);
+ }
+
+ if(i>0) {
+ *free= 1;
+ return item;
+ }
+ else {
+ return NULL;
+ }
+}
+
+static int group_instance_add_exec(bContext *C, wmOperator *op)
+{
+ /* XXX, using an enum for library lookups is a bit dodgy */
+ Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type"));
+
+ if(group) {
+ Object *ob= object_add_type(C, OB_EMPTY);
+ rename_id(&ob->id, group->id.name+2);
+ ob->dup_group= group;
+ ob->transflag |= OB_DUPLIGROUP;
+ id_us_plus(&group->id);
+
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+/* only used as menu */
+void OBJECT_OT_group_instance_add(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+ static EnumPropertyItem prop_group_dummy_types[] = {
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ /* identifiers */
+ ot->name= "Add Group Instance";
+ ot->description = "Add a dupligroup instance.";
+ ot->idname= "OBJECT_OT_group_instance_add";
+
+ /* api callbacks */
+ ot->exec= group_instance_add_exec;
+
+ ot->poll= ED_operator_scene_editable;
+
+ /* flags */
+ ot->flag= 0;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "type", prop_group_dummy_types, 0, "Type", "");
+ RNA_def_enum_funcs(prop, add_dupligroup_itemf);
+}
+
/**************************** Delete Object *************************/
/* remove base from a specific scene */
Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h 2009-10-07 13:22:56 UTC (rev 23688)
+++ trunk/blender/source/blender/editors/object/object_intern.h 2009-10-07 14:40:27 UTC (rev 23689)
@@ -92,6 +92,7 @@
void OBJECT_OT_lamp_add(struct wmOperatorType *ot);
void OBJECT_OT_primitive_add(struct wmOperatorType *ot); /* only used as menu */
void OBJECT_OT_effector_add(struct wmOperatorType *ot);
+void OBJECT_OT_group_instance_add(struct wmOperatorType *ot);
void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot);
void OBJECT_OT_duplicate(struct wmOperatorType *ot);
Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c 2009-10-07 13:22:56 UTC (rev 23688)
+++ trunk/blender/source/blender/editors/object/object_ops.c 2009-10-07 14:40:27 UTC (rev 23689)
@@ -118,6 +118,7 @@
WM_operatortype_append(OBJECT_OT_lamp_add);
WM_operatortype_append(OBJECT_OT_add);
WM_operatortype_append(OBJECT_OT_effector_add);
+ WM_operatortype_append(OBJECT_OT_group_instance_add);
WM_operatortype_append(OBJECT_OT_primitive_add);
WM_operatortype_append(OBJECT_OT_mesh_add);
WM_operatortype_append(OBJECT_OT_metaball_add);
More information about the Bf-blender-cvs
mailing list