2.5 / Nodes

* XKey for deleting selected nodes.
This commit is contained in:
Nathan Letwory 2009-01-12 00:14:37 +00:00
parent 85c4e8fd2a
commit 6dc63e054f
3 changed files with 49 additions and 6 deletions

@ -100,9 +100,19 @@
#include "winlay.h"
*/
#include "ED_space_api.h"
#include "ED_screen.h"
#include "ED_types.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "WM_api.h"
#include "WM_types.h"
#include "UI_view2d.h"
#include "node_intern.h"
// XXX XXX XXX
static void BIF_undo_push(char *s) {}
@ -1876,7 +1886,6 @@ void node_adduplicate(SpaceNode *snode)
transform_nodes(snode->edittree, 'g', "Duplicate");
}
#if 0
static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
{
bNode *newnode= NULL;
@ -1910,8 +1919,6 @@ static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
}
}
#endif
static void node_remove_extra_links(SpaceNode *snode, bNodeSocket *tsock, bNodeLink *link)
{
bNodeLink *tlink;
@ -2080,6 +2087,8 @@ static int node_add_link(SpaceNode *snode)
return 0;
}
#endif /* 0 */
void node_delete(SpaceNode *snode)
{
bNode *node, *next;
@ -2103,11 +2112,13 @@ void node_delete(SpaceNode *snode)
}
snode_verify_groups(snode);
snode_handle_recalc(snode);
BIF_undo_push("Delete nodes");
// NODE_FIX_ME
// snode_handle_recalc(snode);
// BIF_undo_push("Delete nodes");
// allqueue(REDRAWNODE, 1);
}
void node_hide(SpaceNode *snode)
{
bNode *node;
@ -2129,10 +2140,12 @@ void node_hide(SpaceNode *snode)
node->flag &= ~NODE_HIDDEN;
}
}
BIF_undo_push("Hide nodes");
// BIF_undo_push("Hide nodes");
// allqueue(REDRAWNODE, 1);
}
#if 0
void node_insert_key(SpaceNode *snode)
{
bNode *node= editnode_get_active(snode->edittree);
@ -2737,3 +2750,30 @@ void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
#endif
static int node_delete_selection_exec(bContext *C, wmOperator *op)
{
wmWindow *window= CTX_wm_window(C);
SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
ARegion *ar= CTX_wm_region(C);
node_delete(snode);
ED_region_tag_redraw(ar);
WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */
return OPERATOR_FINISHED;
}
/* operators */
void NODE_OT_delete_selection(wmOperatorType *ot)
{
PropertyRNA *prop;
/* identifiers */
ot->name= "Delete";
ot->idname= "NODE_OT_delete_selection";
/* api callbacks */
ot->exec= node_delete_selection_exec;
ot->poll= ED_operator_node_active;
}

@ -59,6 +59,7 @@ void NODE_OT_extend_select(struct wmOperatorType *ot);
void NODE_OT_toggle_visibility(struct wmOperatorType *ot);
void NODE_OT_fit_all(struct wmOperatorType *ot);
void NODE_OT_border_select(struct wmOperatorType *ot);
void NODE_OT_delete_selection(struct wmOperatorType *ot);
/* drawnode.c */
void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link);

@ -53,6 +53,7 @@ void node_operatortypes(void)
WM_operatortype_append(NODE_OT_toggle_visibility);
WM_operatortype_append(NODE_OT_fit_all);
WM_operatortype_append(NODE_OT_border_select);
WM_operatortype_append(NODE_OT_delete_selection);
}
void node_keymap(struct wmWindowManager *wm)
@ -64,6 +65,7 @@ void node_keymap(struct wmWindowManager *wm)
WM_keymap_add_item(keymap, "NODE_OT_toggle_visibility", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_fit_all", HOMEKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_border_select", BKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_delete_selection", XKEY, KM_PRESS, 0, 0);
transform_keymap_for_space(wm, keymap, SPACE_NODE);
}