[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53280] trunk/blender/source/blender/ editors: Outliner:

Ton Roosendaal ton at blender.org
Sat Dec 22 19:34:17 CET 2012


Revision: 53280
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53280
Author:   ton
Date:     2012-12-22 18:34:17 +0000 (Sat, 22 Dec 2012)
Log Message:
-----------
Outliner:

Added drag-drop support for Groups. On drop in 3d window it creates an instance.

Todo: it adds this on 3d cursor position still. The existing drop-object-duplicate operator
is a Macro - with warning. For adding on mouse-cursor position we need a better
way (new function call, just use operator option).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c

Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c	2012-12-22 18:31:05 UTC (rev 53279)
+++ trunk/blender/source/blender/editors/object/object_add.c	2012-12-22 18:34:17 UTC (rev 53280)
@@ -802,11 +802,19 @@
 
 static int group_instance_add_exec(bContext *C, wmOperator *op)
 {
-	Group *group = BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group"));
-
+	Group *group;
 	unsigned int layer;
 	float loc[3], rot[3];
+	
+	if (RNA_struct_property_is_set(op->ptr, "name")) {
+		char name[MAX_ID_NAME - 2];
 
+		RNA_string_get(op->ptr, "name", name);
+		group = (Group *)BKE_libblock_find_name(ID_GR, name);
+	}
+	else
+		group = BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group"));
+
 	if (!ED_object_add_generic_get_opts(C, op, loc, rot, NULL, &layer, NULL))
 		return OPERATOR_CANCELLED;
 
@@ -847,6 +855,7 @@
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
 	/* properties */
+	RNA_def_string(ot->srna, "name", "Group", MAX_ID_NAME - 2, "Name", "Group name to add");
 	ot->prop = RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", "");
 	RNA_def_enum_funcs(ot->prop, RNA_group_itemf);
 	ED_object_add_generic_props(ot, FALSE);

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2012-12-22 18:31:05 UTC (rev 53279)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2012-12-22 18:34:17 UTC (rev 53280)
@@ -466,6 +466,16 @@
 	return 0;
 }
 
+static int view3d_group_drop_poll(bContext *UNUSED(C), wmDrag *drag, wmEvent *UNUSED(event))
+{
+	if (drag->type == WM_DRAG_ID) {
+		ID *id = (ID *)drag->poin;
+		if (GS(id->name) == ID_GR)
+			return 1;
+	}
+	return 0;
+}
+
 static int view3d_mat_drop_poll(bContext *UNUSED(C), wmDrag *drag, wmEvent *UNUSED(event))
 {
 	if (drag->type == WM_DRAG_ID) {
@@ -520,6 +530,14 @@
 		RNA_string_set(drop->ptr, "name", id->name + 2);
 }
 
+static void view3d_group_drop_copy(wmDrag *drag, wmDropBox *drop)
+{
+	ID *id = (ID *)drag->poin;
+	
+	drop->opcontext = WM_OP_EXEC_DEFAULT;
+	RNA_string_set(drop->ptr, "name", id->name + 2);
+}
+
 static void view3d_id_drop_copy(wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
@@ -547,6 +565,7 @@
 	WM_dropbox_add(lb, "OBJECT_OT_drop_named_material", view3d_mat_drop_poll, view3d_id_drop_copy);
 	WM_dropbox_add(lb, "MESH_OT_drop_named_image", view3d_ima_ob_drop_poll, view3d_id_path_drop_copy);
 	WM_dropbox_add(lb, "VIEW3D_OT_background_image_add", view3d_ima_bg_drop_poll, view3d_id_path_drop_copy);
+	WM_dropbox_add(lb, "OBJECT_OT_group_instance_add", view3d_group_drop_poll, view3d_group_drop_copy);
 }
 
 




More information about the Bf-blender-cvs mailing list