Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2009-07-07 21:30:39 +0400
committerTon Roosendaal <ton@blender.org>2009-07-07 21:30:39 +0400
commitd896ed98fef159e2f67364dcceab7011791618e6 (patch)
tree85a825fe4bcfb4d99989004d0da9043adf0acf48 /source/blender/editors/space_node
parentcfd5046c9e4a6617a20cfc7e59519a84d3c18b9d (diff)
2.5
- Scrollers now only disappear for regions with a fixed total view, like lists, buttons, channels. More or less infinite views keep scrollers to indicate that you can still pan or zoom further. - Nodes: put back SHIFT+D "Add duplicate" (Also fixed duplicate objects menu name... it should be a bit more descriptive)
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r--source/blender/editors/space_node/node_edit.c43
-rw-r--r--source/blender/editors/space_node/node_intern.h1
-rw-r--r--source/blender/editors/space_node/node_ops.c4
3 files changed, 45 insertions, 3 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index f7f637670b5..0d6fc20c248 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -63,6 +63,7 @@
#include "ED_previewrender.h"
#include "BIF_gl.h"
+#include "BIF_transform.h"
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
@@ -1686,18 +1687,54 @@ void node_mute(SpaceNode *snode)
}
-void node_adduplicate(SpaceNode *snode)
+#endif
+
+int node_duplicate_add_exec(bContext *C, wmOperator *op)
{
+ SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
ntreeCopyTree(snode->edittree, 1); /* 1 == internally selected nodes */
ntreeSolveOrder(snode->edittree);
snode_verify_groups(snode);
- // XXX snode_handle_recalc(snode);
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
+
+static int node_duplicate_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ node_duplicate_add_exec(C, op);
+
+ RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
+ WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+
+ return OPERATOR_FINISHED;
+}
-// XXX transform_nodes(snode->edittree, 'g', "Duplicate");
+void NODE_OT_duplicate_add(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Duplicate Nodes";
+ ot->description = "Duplicate the nodes.";
+ ot->idname= "NODE_OT_duplicate_add";
+
+ /* api callbacks */
+ ot->invoke= node_duplicate_add_invoke;
+ ot->exec= node_duplicate_add_exec;
+
+ ot->poll= ED_operator_node_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* to give to transform */
+ RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
}
+#if 0
+
static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
{
bNode *newnode= NULL;
diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h
index b73f57f935f..b16971dab9e 100644
--- a/source/blender/editors/space_node/node_intern.h
+++ b/source/blender/editors/space_node/node_intern.h
@@ -82,6 +82,7 @@ void snode_composite_job(const struct bContext *C, ScrArea *sa);
bNode *snode_get_editgroup(SpaceNode *snode);
void snode_autoconnect(SpaceNode *snode, bNode *node_to, int flag);
+void NODE_OT_duplicate_add(struct wmOperatorType *ot);
void NODE_OT_link(struct wmOperatorType *ot);
void NODE_OT_delete(struct wmOperatorType *ot);
void NODE_OT_resize(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index 7a1cc24fa58..732b45f1f30 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -59,6 +59,8 @@ void node_operatortypes(void)
WM_operatortype_append(NODE_OT_link);
WM_operatortype_append(NODE_OT_resize);
WM_operatortype_append(NODE_OT_links_cut);
+ WM_operatortype_append(NODE_OT_duplicate_add);
+
}
void node_keymap(struct wmWindowManager *wm)
@@ -71,6 +73,8 @@ void node_keymap(struct wmWindowManager *wm)
RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
+ WM_keymap_add_item(keymap, "NODE_OT_duplicate_add", DKEY, KM_PRESS, KM_SHIFT, 0);
+
WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0);