[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