diff options
author | Matt Ebb <matt@mke3.net> | 2006-06-16 08:32:39 +0400 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2006-06-16 08:32:39 +0400 |
commit | cf9e420ad3d2da3ff9488873243dcf6bab4984e2 (patch) | |
tree | edb09ed89618758df24c4efe4e662ba4647397d1 /source | |
parent | 8008783e2770b60070b0f34b639d02a6a8b777e7 (diff) |
* Added header pulldown menus for the Node Editor. Also tweaked colours and some
of the menu organisation, consolidating the redundant 'Generators' with 'Input'.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/node_composite.c | 6 | ||||
-rw-r--r-- | source/blender/include/BSE_headerbuttons.h | 3 | ||||
-rw-r--r-- | source/blender/include/BSE_node.h | 13 | ||||
-rw-r--r-- | source/blender/src/editnode.c | 59 | ||||
-rw-r--r-- | source/blender/src/header_node.c | 431 | ||||
-rw-r--r-- | source/blender/src/resources.c | 6 | ||||
-rw-r--r-- | source/blender/src/toolbox.c | 61 | ||||
-rw-r--r-- | source/blender/src/usiblender.c | 6 |
8 files changed, 509 insertions, 76 deletions
diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c index 3ef77d2ada1..2d6ed137bf4 100644 --- a/source/blender/blenkernel/intern/node_composite.c +++ b/source/blender/blenkernel/intern/node_composite.c @@ -1183,7 +1183,7 @@ static bNodeType cmp_node_time= { /* type code */ CMP_NODE_TIME, /* name */ "Time", /* width+range */ 140, 100, 320, - /* class+opts */ NODE_CLASS_GENERATOR, NODE_OPTIONS, + /* class+opts */ NODE_CLASS_INPUT, NODE_OPTIONS, /* input sock */ NULL, /* output sock */ cmp_node_time_out, /* storage */ "CurveMapping", @@ -1313,7 +1313,7 @@ static bNodeType cmp_node_value= { /* type code */ CMP_NODE_VALUE, /* name */ "Value", /* width+range */ 80, 40, 120, - /* class+opts */ NODE_CLASS_GENERATOR, NODE_OPTIONS, + /* class+opts */ NODE_CLASS_INPUT, NODE_OPTIONS, /* input sock */ NULL, /* output sock */ cmp_node_value_out, /* storage */ "", @@ -1338,7 +1338,7 @@ static bNodeType cmp_node_rgb= { /* type code */ CMP_NODE_RGB, /* name */ "RGB", /* width+range */ 100, 60, 140, - /* class+opts */ NODE_CLASS_GENERATOR, NODE_OPTIONS, + /* class+opts */ NODE_CLASS_INPUT, NODE_OPTIONS, /* input sock */ NULL, /* output sock */ cmp_node_rgb_out, /* storage */ "", diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h index d405e2683a6..a5ded324105 100644 --- a/source/blender/include/BSE_headerbuttons.h +++ b/source/blender/include/BSE_headerbuttons.h @@ -131,6 +131,9 @@ void do_info_add_metamenu(void *arg, int event); void do_info_add_lampmenu(void *arg, int event); void do_info_addmenu(void *arg, int event); +/* header_node.c */ +void do_node_addmenu(void *arg, int event); + /* header_view3d.c */ void do_view3d_select_objectmenu(void *arg, int event); void do_view3d_select_object_groupedmenu(void *arg, int event); diff --git a/source/blender/include/BSE_node.h b/source/blender/include/BSE_node.h index 05593983fe9..981cec9e830 100644 --- a/source/blender/include/BSE_node.h +++ b/source/blender/include/BSE_node.h @@ -56,7 +56,20 @@ void snode_tag_dirty(struct SpaceNode *snode); void snode_set_context(struct SpaceNode *snode); +void snode_home(struct ScrArea *sa, struct SpaceNode *snode); +void snode_zoom_in(struct ScrArea *sa); +void snode_zoom_out(struct ScrArea *sa); + void node_deselectall(struct SpaceNode *snode, int swap); +void node_border_select(struct SpaceNode *snode); + +void node_delete(struct SpaceNode *snode); +void node_make_group(struct SpaceNode *snode); +void node_ungroup(struct SpaceNode *snode); +void snode_make_group_editable(struct SpaceNode *snode, struct bNode *gnode); +void node_hide(struct SpaceNode *snode); +void node_read_renderresults(struct SpaceNode *snode); + void node_transform_ext(int mode, int unused); void node_shader_default(struct Material *ma); void node_composit_default(struct Scene *scene); diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c index d265fcd7e40..2cc0efd5d02 100644 --- a/source/blender/src/editnode.c +++ b/source/blender/src/editnode.c @@ -470,7 +470,7 @@ static void node_set_active(SpaceNode *snode, bNode *node) } } -static void snode_make_group_editable(SpaceNode *snode, bNode *gnode) +void snode_make_group_editable(SpaceNode *snode, bNode *gnode) { bNode *node; @@ -515,7 +515,7 @@ static void snode_make_group_editable(SpaceNode *snode, bNode *gnode) allqueue(REDRAWNODE, 0); } -static void node_ungroup(SpaceNode *snode) +void node_ungroup(SpaceNode *snode) { bNode *gnode; @@ -682,7 +682,7 @@ static bNode *visible_node(SpaceNode *snode, rctf *rct) return tnode; } -static void snode_home(ScrArea *sa, SpaceNode *snode) +void snode_home(ScrArea *sa, SpaceNode *snode) { bNode *node; int first= 1; @@ -705,6 +705,32 @@ static void snode_home(ScrArea *sa, SpaceNode *snode) } +void snode_zoom_out(ScrArea *sa) +{ + float dx; + + dx= (float)(0.15*(G.v2d->cur.xmax-G.v2d->cur.xmin)); + G.v2d->cur.xmin-= dx; + G.v2d->cur.xmax+= dx; + dx= (float)(0.15*(G.v2d->cur.ymax-G.v2d->cur.ymin)); + G.v2d->cur.ymin-= dx; + G.v2d->cur.ymax+= dx; + test_view2d(G.v2d, sa->winx, sa->winy); +} + +void snode_zoom_in(ScrArea *sa) +{ + float dx; + + dx= (float)(0.1154*(G.v2d->cur.xmax-G.v2d->cur.xmin)); + G.v2d->cur.xmin+= dx; + G.v2d->cur.xmax-= dx; + dx= (float)(0.1154*(G.v2d->cur.ymax-G.v2d->cur.ymin)); + G.v2d->cur.ymin+= dx; + G.v2d->cur.ymax-= dx; + test_view2d(G.v2d, sa->winx, sa->winy); +} + /* checks mouse position, and returns found node/socket */ /* type is SOCK_IN and/or SOCK_OUT */ static int find_indicated_socket(SpaceNode *snode, bNode **nodep, bNodeSocket **sockp, int in_out) @@ -854,7 +880,7 @@ void node_transform_ext(int mode, int unused) { SpaceNode *snode= curarea->spacedata.first; - transform_nodes(snode->edittree, 'g', "Translate node"); + transform_nodes(snode->edittree, 'g', "Move Node"); } @@ -1542,7 +1568,7 @@ static int node_add_link(SpaceNode *snode) return 0; } -static void node_delete(SpaceNode *snode) +void node_delete(SpaceNode *snode) { bNode *node, *next; @@ -1558,7 +1584,7 @@ static void node_delete(SpaceNode *snode) allqueue(REDRAWNODE, 1); } -static void node_hide(SpaceNode *snode) +void node_hide(SpaceNode *snode) { bNode *node; int nothidden=0, ishidden=0; @@ -1660,7 +1686,7 @@ static void node_border_link_delete(SpaceNode *snode) } /* goes over all scenes, reads render results */ -static void node_read_renderresults(SpaceNode *snode) +void node_read_renderresults(SpaceNode *snode) { Scene *scene; bNode *node; @@ -1684,6 +1710,7 @@ static void node_read_renderresults(SpaceNode *snode) snode_handle_recalc(snode); } + /* ********************** */ void node_make_group(SpaceNode *snode) @@ -1825,23 +1852,11 @@ void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt) break; case PADPLUSKEY: - dx= (float)(0.1154*(G.v2d->cur.xmax-G.v2d->cur.xmin)); - G.v2d->cur.xmin+= dx; - G.v2d->cur.xmax-= dx; - dx= (float)(0.1154*(G.v2d->cur.ymax-G.v2d->cur.ymin)); - G.v2d->cur.ymin+= dx; - G.v2d->cur.ymax-= dx; - test_view2d(G.v2d, sa->winx, sa->winy); + snode_zoom_in(sa); doredraw= 1; break; case PADMINUS: - dx= (float)(0.15*(G.v2d->cur.xmax-G.v2d->cur.xmin)); - G.v2d->cur.xmin-= dx; - G.v2d->cur.xmax+= dx; - dx= (float)(0.15*(G.v2d->cur.ymax-G.v2d->cur.ymin)); - G.v2d->cur.ymin-= dx; - G.v2d->cur.ymax+= dx; - test_view2d(G.v2d, sa->winx, sa->winy); + snode_zoom_out(sa); doredraw= 1; break; case HOMEKEY: @@ -1892,7 +1907,7 @@ void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt) node_addgroup(snode); } else - transform_nodes(snode->edittree, 'g', "Translate Node"); + transform_nodes(snode->edittree, 'g', "Move Node"); } break; case HKEY: diff --git a/source/blender/src/header_node.c b/source/blender/src/header_node.c index 06a69d62230..bf81878cfb8 100644 --- a/source/blender/src/header_node.c +++ b/source/blender/src/header_node.c @@ -54,7 +54,9 @@ #include "BKE_global.h" #include "BKE_main.h" #include "BKE_material.h" +#include "BKE_node.h" +#include "BSE_drawipo.h" #include "BSE_headerbuttons.h" #include "BSE_node.h" @@ -93,12 +95,416 @@ void do_node_buttons(ScrArea *sa, unsigned short event) } } +static void do_node_viewmenu(void *arg, int event) +{ + SpaceNode *snode= curarea->spacedata.first; + + switch(event) { + case 1: /* Zoom in */ + snode_zoom_in(curarea); + break; + case 2: /* View all */ + snode_zoom_out(curarea); + break; + case 3: /* View all */ + snode_home(curarea, snode); + break; + } + allqueue(REDRAWNODE, 0); +} + +static uiBlock *node_viewmenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "node_viewmenu", + UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_node_viewmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Zoom In|NumPad +", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Zoom Out|NumPad -", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "View All|Home", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + + if (!curarea->full) + uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + else + uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} + +static void do_node_selectmenu(void *arg, int event) +{ + SpaceNode *snode= curarea->spacedata.first; + + switch(event) { + case 1: /* border select */ + node_border_select(snode); + break; + case 2: /* select/deselect all */ + node_deselectall(snode, 1); + break; + } + allqueue(REDRAWNODE, 0); +} + +static uiBlock *node_selectmenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "node_selectmenu", + UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_node_selectmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} + +void do_node_addmenu(void *arg, int event) +{ + SpaceNode *snode= curarea->spacedata.first; + float locx, locy; + short mval[2]; + + getmouseco_areawin(mval); + areamouseco_to_ipoco(G.v2d, mval, &locx, &locy); + node_add_node(snode, event, locx, locy); + + addqueue(curarea->win, B_NODE_TREE_EXEC, 1); + + BIF_undo_push("Add Node"); + +} + +static void node_make_addmenu(SpaceNode *snode, int nodeclass, uiBlock *block) +{ + bNodeTree *ntree; + bNodeType **typedefs; + int tot= 0, a; + short yco= 0, menuwidth=120; + + ntree = snode->nodetree; + if(ntree) { + /* mostly taken from toolbox.c, node_add_sublevel() */ + if(ntree) { + if(nodeclass==NODE_CLASS_GROUP) { + bNodeTree *ngroup= G.main->nodetree.first; + for(; ngroup; ngroup= ngroup->id.next) + if(ngroup->type==ntree->type) + tot++; + } + else { + for(typedefs= ntree->alltypes; *typedefs; typedefs++) + if( (*typedefs)->nclass == nodeclass ) + tot++; + } + } + + if(tot==0) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + return; + } + + if(nodeclass==NODE_CLASS_GROUP) { + bNodeTree *ngroup= G.main->nodetree.first; + for(tot=0, a=0; ngroup; ngroup= ngroup->id.next, tot++) { + if(ngroup->type==ntree->type) { + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, (ngroup->id.name+2), 0, + yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, NODE_GROUP_MENU+tot, ""); + a++; + } + } + } + else { + for(a=0, typedefs= ntree->alltypes; *typedefs; typedefs++) { + if( (*typedefs)->nclass == nodeclass ) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, (*typedefs)->name, 0, + yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, (*typedefs)->type, ""); + a++; + } + } + } + } else { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + return; + } +} + +static uiBlock *node_add_inputmenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_inputmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_INPUT, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_outputmenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_outputmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_OUTPUT, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_colormenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_colormenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_OP_COLOR, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_vectormenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_vectormenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_OP_VECTOR, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_filtermenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_filtermenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_OP_FILTER, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_convertermenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_convertermenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_CONVERTOR, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} +static uiBlock *node_add_groupmenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + + block= uiNewBlock(&curarea->uiblocks, "node_add_groupmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + node_make_addmenu(snode, NODE_CLASS_GROUP, block); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} + +static uiBlock *node_addmenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "node_addmenu", + UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_node_addmenu, NULL); + + if(snode->treetype==NTREE_SHADER) { + uiDefIconTextBlockBut(block, node_add_inputmenu, NULL, ICON_RIGHTARROW_THIN, "Input", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_outputmenu, NULL, ICON_RIGHTARROW_THIN, "Output", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_colormenu, NULL, ICON_RIGHTARROW_THIN, "Color", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_vectormenu, NULL, ICON_RIGHTARROW_THIN, "Vector", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_convertermenu, NULL, ICON_RIGHTARROW_THIN, "Convertor", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_groupmenu, NULL, ICON_RIGHTARROW_THIN, "Group", 0, yco-=20, 120, 19, ""); + } + else if(snode->treetype==NTREE_COMPOSIT) { + uiDefIconTextBlockBut(block, node_add_inputmenu, NULL, ICON_RIGHTARROW_THIN, "Input", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_outputmenu, NULL, ICON_RIGHTARROW_THIN, "Output", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_colormenu, NULL, ICON_RIGHTARROW_THIN, "Color", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_vectormenu, NULL, ICON_RIGHTARROW_THIN, "Vector", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_filtermenu, NULL, ICON_RIGHTARROW_THIN, "Filter", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_convertermenu, NULL, ICON_RIGHTARROW_THIN, "Convertor", 0, yco-=20, 120, 19, ""); + uiDefIconTextBlockBut(block, node_add_groupmenu, NULL, ICON_RIGHTARROW_THIN, "Group", 0, yco-=20, 120, 19, ""); + } else + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} + +static void do_node_nodemenu(void *arg, int event) +{ + SpaceNode *snode= curarea->spacedata.first; + int fromlib=0; + + if(snode->nodetree==NULL) return; + fromlib= (snode->id && snode->id->lib); + + switch(event) { + case 1: /* grab/move */ + node_transform_ext(0,0); + break; + case 2: /* duplicate */ + if(fromlib) fromlib= -1; + else node_adduplicate(snode); + break; + case 3: /* delete */ + if(fromlib) fromlib= -1; + else node_delete(snode); + break; + case 4: /* make group */ + node_make_group(snode); + break; + case 5: /* ungroup */ + node_ungroup(snode); + break; + case 6: /* edit group */ + if(fromlib) fromlib= -1; + else snode_make_group_editable(snode, NULL); + break; + case 7: /* hide/unhide */ + node_hide(snode); + break; + case 8: /* read saved render results */ + node_read_renderresults(snode); + break; + case 9: /* show cyclic */ + ntreeSolveOrder(snode->edittree); + break; + } + + if(fromlib==-1) error("Can't edit Library Data"); + allqueue(REDRAWNODE, 0); +} + +static uiBlock *node_nodemenu(void *arg_unused) +{ + SpaceNode *snode= curarea->spacedata.first; + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "node_nodemenu", + UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_node_nodemenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate|Shift D", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Group|Ctrl G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Ungroup|Alt G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Edit Group|Tab", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide/Unhide|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + if(snode->treetype==NTREE_COMPOSIT) + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Read Saved Render Results|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Cyclic Dependencies|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} void node_buttons(ScrArea *sa) { SpaceNode *snode= sa->spacedata.first; uiBlock *block; - short xco; + short xco, xmax; char name[256]; sprintf(name, "header %d", sa->headwin); @@ -135,10 +541,25 @@ void node_buttons(ScrArea *sa) /* pull down menus */ uiBlockSetEmboss(block, UI_EMBOSSP); -// xmax= GetButStringLength("View"); -// uiDefPulldownBut(block, time_viewmenu, NULL, -// "View", xco, -2, xmax-3, 24, ""); -// xco+= xmax; + xmax= GetButStringLength("View"); + uiDefPulldownBut(block, node_viewmenu, NULL, + "View", xco, -2, xmax-3, 24, ""); + xco+= xmax; + + xmax= GetButStringLength("Select"); + uiDefPulldownBut(block, node_selectmenu, NULL, + "Select", xco, -2, xmax-3, 24, ""); + xco+= xmax; + + xmax= GetButStringLength("Add"); + uiDefPulldownBut(block, node_addmenu, NULL, + "Add", xco, -2, xmax-3, 24, ""); + xco+= xmax; + + xmax= GetButStringLength("Node"); + uiDefPulldownBut(block, node_nodemenu, NULL, + "Node", xco, -2, xmax-3, 24, ""); + xco+= xmax; } uiBlockSetEmboss(block, UI_EMBOSS); diff --git a/source/blender/src/resources.c b/source/blender/src/resources.c index 6fc2f28f76b..ee3f36d21c3 100644 --- a/source/blender/src/resources.c +++ b/source/blender/src/resources.c @@ -514,9 +514,9 @@ void BIF_InitTheme(void) btheme->tnode= btheme->tv3d; SETCOL(btheme->tnode.edge_select, 255, 255, 255, 255); SETCOL(btheme->tnode.syntaxl, 150, 150, 150, 255); /* TH_NODE, backdrop */ - SETCOL(btheme->tnode.syntaxn, 95, 110, 145, 255); /* in/output */ - SETCOL(btheme->tnode.syntaxb, 135, 125, 120, 255); /* operator */ - SETCOL(btheme->tnode.syntaxv, 120, 120, 120, 255); /* generator */ + SETCOL(btheme->tnode.syntaxn, 129, 131, 144, 255); /* in/output */ + SETCOL(btheme->tnode.syntaxb, 127,127,127, 255); /* operator */ + SETCOL(btheme->tnode.syntaxv, 142, 138, 145, 255); /* generator */ SETCOL(btheme->tnode.syntaxc, 120, 145, 120, 255); /* group */ } diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c index fb7b7ed030a..9a3036f866b 100644 --- a/source/blender/src/toolbox.c +++ b/source/blender/src/toolbox.c @@ -1466,17 +1466,15 @@ static TBitem tb_render[]= { #define TB_SH_OP_COLOR 2 #define TB_SH_OP_VECTOR 3 #define TB_SH_CONVERTORS 4 -#define TB_SH_GENERATORS 5 -#define TB_SH_GROUPS 6 +#define TB_SH_GROUPS 5 static TBitem tb_node_addsh[]= { - { 0, "Inputs", 1, NULL}, - { 0, "Outputs", 2, NULL}, - { 0, "Color Ops", 3, NULL}, - { 0, "Vector Ops", 4, NULL}, + { 0, "Input", 1, NULL}, + { 0, "Output", 2, NULL}, + { 0, "Color", 3, NULL}, + { 0, "Vector", 4, NULL}, { 0, "Convertors", 5, NULL}, - { 0, "Generators", 6, NULL}, - { 0, "Groups", 7, NULL}, + { 0, "Groups", 6, NULL}, { -1, "", 0, NULL}}; @@ -1486,35 +1484,19 @@ static TBitem tb_node_addsh[]= { #define TB_CMP_OP_VECTOR 3 #define TB_CMP_OP_FILTER 4 #define TB_CMP_CONVERTORS 5 -#define TB_CMP_GENERATORS 6 -#define TB_CMP_GROUPS 7 +#define TB_CMP_GROUPS 6 static TBitem tb_node_addcomp[]= { - { 0, "Inputs", 1, NULL}, - { 0, "Outputs", 2, NULL}, - { 0, "Color Ops", 3, NULL}, - { 0, "Vector Ops", 4, NULL}, + { 0, "Input", 1, NULL}, + { 0, "Output", 2, NULL}, + { 0, "Color", 3, NULL}, + { 0, "Vector", 4, NULL}, { 0, "Filters", 5, NULL}, { 0, "Convertors", 6, NULL}, - { 0, "Generators", 7, NULL}, - { 0, "Groups", 8, NULL}, + { 0, "Groups", 7, NULL}, { -1, "", 0, NULL}}; -static void do_node_addmenu(void *arg, int event) -{ - SpaceNode *snode= curarea->spacedata.first; - float locx, locy; - short mval[2]; - - getmouseco_areawin(mval); - areamouseco_to_ipoco(G.v2d, mval, &locx, &locy); - node_add_node(snode, event, locx, locy); - - addqueue(curarea->win, B_NODE_TREE_EXEC, 1); - - BIF_undo_push("Add Node"); - -} +/* do_node_addmenu() in header_node.c, prototype in BSE_headerbuttons.h */ /* dynamic toolbox sublevel */ static TBitem *node_add_sublevel(void **poin, bNodeTree *ntree, int nodeclass) @@ -1575,17 +1557,18 @@ static TBitem *node_add_sublevel(void **poin, bNodeTree *ntree, int nodeclass) } -static TBitem tb_node_edit[]= { +static TBitem tb_node_node[]= { { 0, "Duplicate|Shift D", TB_SHIFT|'d', NULL}, { 0, "Delete|X", 'x', NULL}, { 0, "SEPR", 0, NULL}, { 0, "Make Group|Ctrl G", TB_CTRL|'g', NULL}, { 0, "Ungroup|Alt G", TB_ALT|'g', NULL}, - { 0, "Edit Group", TB_TAB, NULL}, + { 0, "Edit Group|Tab", TB_TAB, NULL}, { 0, "SEPR", 0, NULL}, { 0, "Hide/Unhide|H", 'h', NULL}, { 0, "SEPR", 0, NULL}, - { 0, "Show Cyclic Dependencies", 'c', NULL}, + { 0, "Read Saved Render Results|R", 'r', NULL}, + { 0, "Show Cyclic Dependencies|C", 'c', NULL}, { -1, "", 0, tb_do_hotkey}}; static TBitem tb_node_select[]= { @@ -1598,9 +1581,9 @@ static TBitem tb_node_transform[]= { { -1, "", 0, tb_do_hotkey}}; static TBitem tb_node_view[]= { - { 0, "Zoom in|NumPad +", TB_PAD|'+', NULL}, - { 0, "Zoom out|NumPad -", TB_PAD|'-', NULL}, - { 0, "View all|Home", TB_PAD|'h', NULL}, + { 0, "Zoom In|NumPad +", TB_PAD|'+', NULL}, + { 0, "Zoom Out|NumPad -", TB_PAD|'-', NULL}, + { 0, "View All|Home", TB_PAD|'h', NULL}, { -1, "", 0, tb_do_hotkey}}; @@ -1872,7 +1855,7 @@ void toolbox_n(void) else menu1= tb_node_addsh; str1= "Add"; - menu2= tb_node_edit; str2= "Edit"; + menu2= tb_node_node; str2= "Node"; menu3= tb_node_select; str3= "Select"; menu4= tb_node_transform; str4= "Transform"; menu5= tb_node_view; str5= "View"; @@ -1883,7 +1866,6 @@ void toolbox_n(void) node_add_op_col= node_add_sublevel(&menu1[TB_SH_OP_COLOR].poin, snode->nodetree, NODE_CLASS_OP_COLOR); node_add_op_vec= node_add_sublevel(&menu1[TB_SH_OP_VECTOR].poin, snode->nodetree, NODE_CLASS_OP_VECTOR); node_add_con= node_add_sublevel(&menu1[TB_SH_CONVERTORS].poin, snode->nodetree, NODE_CLASS_CONVERTOR); - node_add_gen= node_add_sublevel(&menu1[TB_SH_GENERATORS].poin, snode->nodetree, NODE_CLASS_GENERATOR); node_add_group= node_add_sublevel(&menu1[TB_SH_GROUPS].poin, snode->nodetree, NODE_CLASS_GROUP); } else if(snode->treetype==NTREE_COMPOSIT) { @@ -1893,7 +1875,6 @@ void toolbox_n(void) node_add_op_filt= node_add_sublevel(&menu1[TB_CMP_OP_FILTER].poin, snode->nodetree, NODE_CLASS_OP_FILTER); node_add_op_vec= node_add_sublevel(&menu1[TB_CMP_OP_VECTOR].poin, snode->nodetree, NODE_CLASS_OP_VECTOR); node_add_con= node_add_sublevel(&menu1[TB_CMP_CONVERTORS].poin, snode->nodetree, NODE_CLASS_CONVERTOR); - node_add_gen= node_add_sublevel(&menu1[TB_CMP_GENERATORS].poin, snode->nodetree, NODE_CLASS_GENERATOR); node_add_group= node_add_sublevel(&menu1[TB_CMP_GROUPS].poin, snode->nodetree, NODE_CLASS_GROUP); } diff --git a/source/blender/src/usiblender.c b/source/blender/src/usiblender.c index a638d003b63..5c244177e9f 100644 --- a/source/blender/src/usiblender.c +++ b/source/blender/src/usiblender.c @@ -286,9 +286,9 @@ static void init_userdef_file(void) btheme->tnode= btheme->tv3d; SETCOL(btheme->tnode.edge_select, 255, 255, 255, 255); SETCOL(btheme->tnode.syntaxl, 150, 150, 150, 255); /* TH_NODE, backdrop */ - SETCOL(btheme->tnode.syntaxn, 95, 110, 145, 255); /* in/output */ - SETCOL(btheme->tnode.syntaxb, 135, 125, 120, 255); /* operator */ - SETCOL(btheme->tnode.syntaxv, 120, 120, 120, 255); /* generator */ + SETCOL(btheme->tnode.syntaxn, 129, 131, 144, 255); /* in/output */ + SETCOL(btheme->tnode.syntaxb, 127,127,127, 255); /* operator */ + SETCOL(btheme->tnode.syntaxv, 142, 138, 145, 255); /* generator */ SETCOL(btheme->tnode.syntaxc, 120, 145, 120, 255); /* group */ } if(btheme->tv3d.group[3]==0) { |