diff options
author | Ton Roosendaal <ton@blender.org> | 2003-10-29 03:23:16 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2003-10-29 03:23:16 +0300 |
commit | 5ea904facacea7adf654c2548fa127f746ea105b (patch) | |
tree | 6bdc033dbd6c8ebc8069ca4acdbc283a90811207 | |
parent | 29f532588a23e7bb54d4414b0488b62cdf63062d (diff) |
- added another load of items to new toolbox... yeez, what an
ENORMOUS job Matt has done with the menus! :)
- followed as much as possible order and options in pulldowns, but since
toolbox has more categories, it is split up sometimes.
- did some minor changes in pulldowns to make it more consistant
- not yet: armature & text options...
- not yet: toolbox in other window types
(warning; shift+a now is new... eek!)
-rw-r--r-- | source/blender/include/BIF_editmesh.h | 2 | ||||
-rw-r--r-- | source/blender/include/BIF_toolbox.h | 1 | ||||
-rw-r--r-- | source/blender/include/BSE_headerbuttons.h | 10 | ||||
-rw-r--r-- | source/blender/src/buttons_editing.c | 3 | ||||
-rw-r--r-- | source/blender/src/editmesh.c | 8 | ||||
-rw-r--r-- | source/blender/src/header_info.c | 12 | ||||
-rw-r--r-- | source/blender/src/header_view3d.c | 65 | ||||
-rw-r--r-- | source/blender/src/space.c | 3 | ||||
-rw-r--r-- | source/blender/src/toolbox.c | 277 |
9 files changed, 288 insertions, 93 deletions
diff --git a/source/blender/include/BIF_editmesh.h b/source/blender/include/BIF_editmesh.h index 7fa501a7930..4c9c89b9abb 100644 --- a/source/blender/include/BIF_editmesh.h +++ b/source/blender/include/BIF_editmesh.h @@ -105,7 +105,7 @@ void righthandfaces(int select); void mouse_mesh(void); -void selectconnected_mesh(void); +void selectconnected_mesh(int qual); short extrudeflag(short flag,short type); void rotateflag(short flag, float *cent, float rotmat[][3]); void translateflag(short flag, float *vec); diff --git a/source/blender/include/BIF_toolbox.h b/source/blender/include/BIF_toolbox.h index d4e4a76cbcf..e5db9d8ac0f 100644 --- a/source/blender/include/BIF_toolbox.h +++ b/source/blender/include/BIF_toolbox.h @@ -104,6 +104,7 @@ void drawtoolbox (void); void toolbox (void); void toolbox_n(void); +void toolbox_n_add(void); void notice (char *str, ...); void error (char *fmt, ...); diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h index 889ce57fea6..4a4770a1317 100644 --- a/source/blender/include/BSE_headerbuttons.h +++ b/source/blender/include/BSE_headerbuttons.h @@ -112,4 +112,14 @@ void do_info_add_surfacemenu(void *arg, int event); void do_info_add_metamenu(void *arg, int event); void do_info_addmenu(void *arg, int event); +/* header_view3d.c */ +void do_view3d_select_meshmenu(void *arg, int event); +void do_view3d_select_curvemenu(void *arg, int event); +void do_view3d_edit_mesh_normalsmenu(void *arg, int event); +void do_view3d_edit_mesh_verticesmenu(void *arg, int event); +void do_view3d_edit_mesh_edgesmenu(void *arg, int event); +void do_view3d_edit_curve_segmentsmenu(void *arg, int event); + + + #endif /* BSE_HEADERBUTTONS_H */ diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index f9f343f271e..7148921209e 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -1754,8 +1754,9 @@ static void editing_panel_links(Object *ob) alone= B_LATTALONE; local= B_LATTLOCAL; } + uiBlockSetCol(block, TH_BUT_SETTING2); xco= std_libbuttons(block, 143, 180, 0, NULL, browse, id, idfrom, &(G.buts->menunr), alone, local, 0, 0, B_KEEPDATA); - + uiBlockSetCol(block, TH_AUTO); } if(ob) { but = uiDefBut(block, TEX, B_IDNAME, "OB:", xco, 180, 454-xco, YIC, ob->id.name+2, 0.0, 19.0, 0, 0, "Displays Active Object name. Click to change."); diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index 789d6ac9212..0e6e661dddc 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -2719,7 +2719,7 @@ static void selectconnectedAll(void) } -void selectconnected_mesh(void) +void selectconnected_mesh(int qual) { EditVert *eve,*v1,*v2,*act= 0; EditEdge *eed; @@ -2727,14 +2727,14 @@ void selectconnected_mesh(void) if(G.eded.first==0) return; - if(G.qual & LR_CTRLKEY) { + if(qual & LR_CTRLKEY) { selectconnectedAll(); return; } sel= 3; - if(G.qual & LR_SHIFTKEY) sel=2; - + if(qual & LR_SHIFTKEY) sel=2; + act= findnearestvert(sel-2); if(act==0) { error(" Nothing indicated "); diff --git a/source/blender/src/header_info.c b/source/blender/src/header_info.c index 711129a22ff..084e1f4ea9e 100644 --- a/source/blender/src/header_info.c +++ b/source/blender/src/header_info.c @@ -496,10 +496,6 @@ void do_info_buttons(unsigned short event) } break; - case B_FILEMENU: - tbox_setmain(9); - toolbox(); - break; } } @@ -1119,7 +1115,6 @@ static uiBlock *info_add_metamenu(void *arg_unused) void do_info_addmenu(void *arg, int event) { -printf("event %d\n", event); switch(event) { case 0: /* Mesh */ @@ -1746,11 +1741,6 @@ void info_buttons(void) /* always do as last */ curarea->headbutlen= xco+2*XIC; - - if(curarea->headbutlen + 4*XIC < curarea->winx) { - uiDefIconBut(block, BUT, B_FILEMENU, ICON_HELP, - (short)(curarea->winx-XIC-2), 0,XIC,YIC, - 0, 0, 0, 0, 0, "Displays Toolbox menu (SPACE)"); #ifdef _WIN32 // FULLSCREEN if(U.uiflag & FLIPFULLSCREEN) { @@ -1764,7 +1754,5 @@ void info_buttons(void) } #endif - } - uiDrawBlock(block); } diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c index b2a724ee68d..20fec718658 100644 --- a/source/blender/src/header_view3d.c +++ b/source/blender/src/header_view3d.c @@ -559,7 +559,7 @@ static uiBlock *view3d_select_objectmenu(void *arg_unused) return block; } -static void do_view3d_select_meshmenu(void *arg, int event) +void do_view3d_select_meshmenu(void *arg, int event) { // extern void borderselect(void); @@ -575,9 +575,7 @@ static void do_view3d_select_meshmenu(void *arg, int event) selectswap_mesh(); break; case 4: /* select linked vertices */ - G.qual |= LR_CTRLKEY; - selectconnected_mesh(); - G.qual &= ~LR_CTRLKEY; + selectconnected_mesh(LR_CTRLKEY); break; case 5: /* select random */ // selectrandom_mesh(); @@ -608,8 +606,8 @@ static uiBlock *view3d_select_meshmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Faceloop|Shift R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Random Vertices...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Connected Vertices|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); +// uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Random Vertices...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked Vertices|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -623,7 +621,7 @@ static uiBlock *view3d_select_meshmenu(void *arg_unused) return block; } -static void do_view3d_select_curvemenu(void *arg, int event) +void do_view3d_select_curvemenu(void *arg, int event) { // extern void borderselect(void); @@ -687,7 +685,6 @@ static uiBlock *view3d_select_curvemenu(void *arg_unused) static void do_view3d_select_metaballmenu(void *arg, int event) { -//XXX extern void borderselect(void); switch(event) { case 0: /* border select */ @@ -1009,7 +1006,7 @@ static void do_view3d_edit_objectmenu(void *arg, int event) switch(event) { case 0: /* transform properties*/ - blenderqread(NKEY, 1); + mainqenter(NKEY, 1); break; case 1: /* delete */ delete_context_selected(); @@ -1196,7 +1193,7 @@ static uiBlock *view3d_edit_mesh_undohistorymenu(void *arg_unused) return block; } -static void do_view3d_edit_mesh_verticesmenu(void *arg, int event) +void do_view3d_edit_mesh_verticesmenu(void *arg, int event) { extern float doublimit; @@ -1250,7 +1247,7 @@ static uiBlock *view3d_edit_mesh_verticesmenu(void *arg_unused) return block; } -static void do_view3d_edit_mesh_edgesmenu(void *arg, int event) +void do_view3d_edit_mesh_edgesmenu(void *arg, int event) { extern short editbutflag; float fac; @@ -1279,6 +1276,9 @@ static void do_view3d_edit_mesh_edgesmenu(void *arg, int event) case 4: /* Loop subdivide */ loop('c'); break; + case 5: /* Make Edge/Face */ + addedgevlak_mesh(); + break; } allqueue(REDRAWVIEW3D, 0); } @@ -1291,6 +1291,8 @@ static uiBlock *view3d_edit_mesh_edgesmenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_edit_mesh_edgesmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_view3d_edit_mesh_edgesmenu, NULL); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Edge/Face|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Loop Subdivide...|Ctrl R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Knife Subdivide...|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); @@ -1326,7 +1328,10 @@ static void do_view3d_edit_mesh_facesmenu(void *arg, int event) case 4: /* Flip triangle edges */ edge_flip(); break; - } + case 5: /* Make Edge/Face */ + addedgevlak_mesh(); + break; + } allqueue(REDRAWVIEW3D, 0); } @@ -1338,6 +1343,7 @@ static uiBlock *view3d_edit_mesh_facesmenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_edit_mesh_facesmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_view3d_edit_mesh_facesmenu, NULL); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Edge/Face|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Fill|Shift F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Beauty Fill|Alt F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); @@ -1352,7 +1358,7 @@ static uiBlock *view3d_edit_mesh_facesmenu(void *arg_unused) return block; } -static void do_view3d_edit_mesh_normalsmenu(void *arg, int event) +void do_view3d_edit_mesh_normalsmenu(void *arg, int event) { switch(event) { case 0: /* flip */ @@ -1414,9 +1420,9 @@ static uiBlock *view3d_edit_mesh_showhidemenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_edit_mesh_showhidemenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_view3d_edit_mesh_showhidemenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden Vertices", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected Vertices|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Deselected Vertices|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Deselected|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 60); @@ -1447,9 +1453,6 @@ static void do_view3d_edit_meshmenu(void *arg, int event) case 6: /* duplicate */ duplicate_context_selected(); break; - case 7: /* Make Edge/Face */ - addedgevlak_mesh(); - break; case 8: /* delete */ delete_context_selected(); break; @@ -1584,12 +1587,10 @@ static uiBlock *view3d_edit_curve_controlpointsmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Autmatic|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Toggle Free/Aligned|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vector|V", 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, "Smooth|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); } uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Vertex Parent|Ctrl P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); @@ -1598,7 +1599,7 @@ static uiBlock *view3d_edit_curve_controlpointsmenu(void *arg_unused) return block; } -static void do_view3d_edit_curve_segmentsmenu(void *arg, int event) +void do_view3d_edit_curve_segmentsmenu(void *arg, int event) { switch(event) { case 0: /* subdivide */ @@ -1651,8 +1652,8 @@ static uiBlock *view3d_edit_curve_showhidemenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_edit_curve_showhidemenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_view3d_edit_curve_showhidemenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden Control Points|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected Control Points|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); if (OBACT->type == OB_SURF) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Deselected Control Points|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, ""); @@ -1668,7 +1669,7 @@ static void do_view3d_edit_curvemenu(void *arg, int event) remake_editNurb(); break; case 1: /* transformation properties */ - blenderqread(NKEY, 1); + mainqenter(NKEY, 1); break; case 2: /* insert keyframe */ common_insertkey(); @@ -1718,11 +1719,11 @@ static uiBlock *view3d_edit_curvemenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_edit_curvemenu", UI_EMBOSSP, UI_HELV, curarea->headwin); uiBlockSetButmFunc(block, do_view3d_edit_curvemenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Editing|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reload Original|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Snap...|Shift S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); @@ -2041,7 +2042,7 @@ static void do_view3d_edit_armaturemenu(void *arg, int event) remake_editArmature(); break; case 1: /* transformation properties */ - blenderqread(NKEY, 1); + mainqenter(NKEY, 1); break; case 2: /* snap */ snapmenu(); @@ -2077,7 +2078,7 @@ static uiBlock *view3d_edit_armaturemenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Transform Properties|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Snap...|Shift S", 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, ""); @@ -2146,7 +2147,7 @@ static void do_view3d_pose_armaturemenu(void *arg, int event) switch(event) { case 0: /* transform properties */ - blenderqread(NKEY, 1); + mainqenter(NKEY, 1); break; case 1: /* copy current pose */ copy_posebuf(); @@ -2172,7 +2173,7 @@ static uiBlock *view3d_pose_armaturemenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "view3d_pose_armaturemenu", UI_EMBOSSP, UI_HELV, curarea->headwin); uiBlockSetButmFunc(block, do_view3d_pose_armaturemenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Transform Properties|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); uiDefIconTextBlockBut(block, view3d_pose_armature_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 484d5007ab5..c4c8c6bd93e 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -878,8 +878,7 @@ void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) case AKEY: if(G.qual & LR_CTRLKEY) apply_object(); // also with shift! else if((G.qual==LR_SHIFTKEY)) { - tbox_setmain(0); - toolbox(); + toolbox_n_add(); } else { if(G.obedit) { diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c index 240856328ff..9ef61cee5ec 100644 --- a/source/blender/src/toolbox.c +++ b/source/blender/src/toolbox.c @@ -58,6 +58,7 @@ #include "DNA_image_types.h" #include "DNA_object_types.h" +#include "DNA_mesh_types.h" #include "DNA_lamp_types.h" #include "DNA_screen_types.h" #include "DNA_userdef_types.h" @@ -69,6 +70,8 @@ #include "BKE_plugin_types.h" #include "BKE_utildefines.h" +#include "BKE_mesh.h" +#include "BKE_displist.h" #include "BKE_global.h" #include "BKE_main.h" @@ -97,6 +100,7 @@ #include "BSE_editipo.h" #include "BSE_buttons.h" #include "BSE_filesel.h" +#include "BSE_edit.h" #include "BSE_headerbuttons.h" #include "IMB_imbuf.h" @@ -1539,14 +1543,14 @@ static void tb_do_hotkey(void *arg, int event) else if(event & TB_PAD) { event &= ~TB_PAD; switch(event) { - case '0': event= PAD0; break; - case '5': event= PAD5; break; - case '/': event= PADSLASHKEY; break; - case '.': event= PADPERIOD; break; - case '*': event= PADASTERKEY; break; - case 'h': event= HOMEKEY; break; - case 'u': event= PAGEUPKEY; break; - case 'd': event= PAGEDOWNKEY; break; + case '0': key= PAD0; break; + case '5': key= PAD5; break; + case '/': key= PADSLASHKEY; break; + case '.': key= PADPERIOD; break; + case '*': key= PADASTERKEY; break; + case 'h': key= HOMEKEY; break; + case 'u': key= PAGEUPKEY; break; + case 'd': key= PAGEDOWNKEY; break; } } else asciitoraw(event, &key, &qual2); @@ -1571,18 +1575,120 @@ static TBitem tb_object_select[]= { { -1, "", 0, tb_do_hotkey}}; +static TBitem tb_mesh_select[]= { +{ 0, "Border Select|B", 1, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "(De)select All|A", 2, NULL}, +{ 0, "Inverse", 3, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Face Loop|Shift R", 4, NULL}, +{ 0, "Linked Vertices|Ctrl L", 5, NULL}, +{ -1, "", 0, do_view3d_select_meshmenu}}; + + +static TBitem tb_curve_select[]= { +{ 0, "Border Select|B", 0, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "(De)select All|A", 2, NULL}, +{ 0, "Inverse", 3, NULL}, +{ 0, "Row", 5, NULL}, +{ -1, "", 0, do_view3d_select_curvemenu}}; + +static TBitem tb__select[]= { +{ 0, "Border Select|B", 'b', NULL}, +{ 0, "(De)select All|A", 'a', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + + /* *************Edit ********** */ +static TBitem tb_edit[]= { +{ 0, "Exit Editmode|Tab", TB_TAB, NULL}, +{ -1, "", 0, tb_do_hotkey}}; + +static TBitem tb_edit_hide[]= { +{ 0, "Show Hidden|Alt H", TB_ALT|'h', NULL}, +{ 0, "Hide Selected|H", 'h', NULL}, +{ 0, "Hide Deselected|Shift H", 'H', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + +static TBitem tb_curve_edit_seg[]= { +{ 0, "Subdivide", 0, NULL}, +{ 0, "Switch directoin", 1, NULL}, +{ -1, "", 0, do_view3d_edit_curve_segmentsmenu}}; + +static TBitem tb_curve_edit_cv[]= { +{ 0, "Tilt|T", 't', NULL}, +{ 0, "Clear Tilt|Alt T", TB_ALT|'t', NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Automatic|Shift H", 'H', NULL}, +{ 0, "Toggle Free/Aligned|H", 'h', NULL}, +{ 0, "Vector|V", TB_ALT|'t', NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Make Vertex Parent|Ctrl P", TB_CTRL|'p', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + + +static TBitem tb_curve_edit[]= { +{ 0, "Exit Editmode|Tab", TB_TAB, NULL}, +{ 0, "Extrude|E", 'e', NULL}, +{ 0, "Make Segment|F", 'f', NULL}, +{ 0, "Toggle Cyclic|F", 'c', NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Control Points", 0, tb_curve_edit_cv}, +{ 0, "Segments", 0, tb_curve_edit_seg}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Show/Hide", 0, tb_curve_edit_seg}, +{ -1, "", 0, tb_do_hotkey}}; + + +static TBitem tb_mesh_edit_vertex[]= { +{ 0, "Merge...|Alt M", 5, NULL}, +{ 0, "Split|Y", 4, NULL}, +{ 0, "Separate|P", 3, NULL}, +{ 0, "Smooth|Alt M", 2, NULL}, +{ 0, "Remove Doubles|Alt M", 1, NULL}, +{ 0, "Make Vertex Parent|Ctrl P", 0, NULL}, +{ -1, "", 0, do_view3d_edit_mesh_verticesmenu}}; + +static TBitem tb_mesh_edit_edge[]= { +{ 0, "Make Edge/Face|F", 5, NULL}, +{ 0, "Loop SubdivideCtrl R", 4, NULL}, +{ 0, "Knife Subdivide...|Shift K", 3, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Subdivide", 2, NULL}, +{ 0, "Subdivide Fractal", 1, NULL}, +{ 0, "Subdivide Smooth", 0, NULL}, +{ -1, "", 0, do_view3d_edit_mesh_edgesmenu}}; + +static TBitem tb_mesh_edit_face[]= { +{ 0, "Make Edge/Face|F", 'f', NULL}, +{ 0, "Fill|Shift F", 'F', NULL}, +{ 0, "Beaty Fill|Alt F", TB_ALT|'f', NULL}, +{ 0, "Convert to Triangles|Ctrl T", TB_CTRL|'t', NULL}, +{ 0, "Convert to Quads|Alt J", TB_ALT|'j', NULL}, +{ 0, "Flip Triangle Edges|Ctrl F", TB_CTRL|'f', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + + +static TBitem tb_mesh_edit_normal[]= { +{ 0, "Flip", 1, NULL}, +{ 0, "Recalc Inside", 1, NULL}, +{ 0, "Recalc Outside", 1, NULL}, +{ -1, "", 0, do_view3d_edit_mesh_normalsmenu}}; + static TBitem tb_mesh_edit[]= { { 0, "Exit Editmode|Tab", TB_TAB, NULL}, { 0, "Undo|U", 'u', NULL}, { 0, "Redo|Shift U", 'U', NULL}, -{ 0, "Make Edge/Face|F", 'f', NULL}, { 0, "Extrude|E", 'e', NULL}, -{ 0, "Split|Y", 'y', NULL}, -{ 0, "Separate|P", 'p', NULL}, -{ 0, "Tools Menu|W", 'w', NULL}, +{ 0, "Vertices", 0, tb_mesh_edit_vertex}, +{ 0, "Edges", 0, tb_mesh_edit_edge}, +{ 0, "Faces", 0, tb_mesh_edit_face}, +{ 0, "Normals", 0, tb_mesh_edit_normal}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Show/Hide", 0, tb_edit_hide}, { -1, "", 0, tb_do_hotkey}}; @@ -1595,26 +1701,51 @@ static TBitem tb_object_ipo[]= { static TBitem tb_object_edit[]= { { 0, "Enter Editmode|Tab", TB_TAB, NULL}, +{ 0, "SEPR", 0, NULL}, { 0, "Insert Key...|I", 'i', NULL}, { 0, "Object Keys", 0, tb_object_ipo}, +{ 0, "SEPR", 0, NULL}, { 0, "Boolean...|W", 'w', NULL}, { 0, "Join Objects|Ctrl J", TB_CTRL|'j', NULL}, -{ 0, "Convert Object...|Alt C", 'i', NULL}, +{ 0, "Convert Object...|Alt C", TB_ALT|'c', NULL}, { -1, "", 0, tb_do_hotkey}}; -/* *************Mesh ********** */ +/* ************* Type ********** */ + +static void tb_do_mesh(void *arg, int event){ + Mesh *me= get_mesh(OBACT); + switch(event) { + case 1: duplicate_context_selected(); break; + case 2: delete_context_selected(); break; + case 3: G.f ^= G_DRAWEDGES; break; + case 4: G.f ^= G_DRAWFACES; break; + case 5: G.f ^= G_DRAWNORMALS; break; + case 6: me->flag ^= ME_SUBSURF; makeDispList(OBACT); break; + case 7: me->flag ^= ME_OPT_EDGES; makeDispList(OBACT); break; + } + addqueue(curarea->win, REDRAW, 1); +} static TBitem tb_mesh[]= { +{ 0, "Duplicate|Shift D", 1, NULL}, +{ 0, "Delete|X", 2, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Show/Hide Edges", 3, NULL}, +{ 0, "Show/Hide Faces", 4, NULL}, +{ 0, "Show/Hide Normals", 5, NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Subdivision Surface", 6, NULL}, +{ 0, "Subd.Surf. Optimal", 7, NULL}, +{ -1, "", 0, tb_do_mesh}}; + +static TBitem tb_obdata[]= { { 0, "Duplicate|Shift D", 'D', NULL}, { 0, "Delete|X", 'x', NULL}, { -1, "", 0, tb_do_hotkey}}; - -/* *************Object ********** */ - static TBitem tb_object[]= { { 0, "Duplicate|Shift D", 'D', NULL}, { 0, "Duplicate Linked|Alt D", TB_ALT|'D', NULL}, @@ -1626,6 +1757,7 @@ static TBitem tb_object[]= { { 0, "Clear Parent|Alt P", TB_ALT|'p', NULL}, { 0, "Make Track|Ctrl T", TB_CTRL|'t', NULL}, { 0, "Clear Track|Alt T", TB_ALT|'t', NULL}, +{ 0, "SEPR", 0, NULL}, { 0, "Copy Properties...|Ctrl C", TB_CTRL|'c', NULL}, { 0, "Move to Layer...|M", 'm', NULL}, { -1, "", 0, tb_do_hotkey}}; @@ -1662,18 +1794,45 @@ static TBitem tb_view[]= { /* *************TRANSFORM ********** */ static TBitem tb_transform[]= { -{ 0, "Grabber|g", 'g', NULL}, -{ 0, "Rotate|r", 'r', NULL}, -{ 0, "Scale|s", 's', NULL}, -{ 0, "SEPR", 0, NULL}, +{ 0, "Grabber|g", 'g', NULL}, +{ 0, "Rotate|r", 'r', NULL}, +{ 0, "Scale|s", 's', NULL}, +{ 0, "SEPR", 0, NULL}, { ICON_MENU_PANEL, "Properties|n", 'n', NULL}, -{ 0, "Snap...|Shift S", 'S', NULL}, -{ 0, "SEPR", 0, NULL}, -{ 0, "Clear Location", TB_ALT|'g', NULL}, -{ 0, "Clear Rotation", TB_ALT|'r', NULL}, -{ 0, "Clear Size", TB_ALT|'s', NULL}, +{ 0, "Snap...|Shift S", 'S', NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Clear Location", TB_ALT|'g', NULL}, +{ 0, "Clear Rotation", TB_ALT|'r', NULL}, +{ 0, "Clear Size", TB_ALT|'s', NULL}, +{ 0, "Apply Rot/Size|Ctrl A", TB_CTRL|'a', NULL}, +{ 0, "Apply Deform|Shift Ctrl A", TB_CTRL|'A', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + +static TBitem tb_transform_editmode1[]= { +{ 0, "Grabber|g", 'g', NULL}, +{ 0, "Rotate|r", 'r', NULL}, +{ 0, "Scale|s", 's', NULL}, +{ 0, "SEPR", 0, NULL}, +{ 0, "Shrink/Fatten|Alt S", TB_ALT|'s', NULL}, +{ 0, "Shear|Ctrl S", TB_CTRL|'s', NULL}, +{ 0, "Warp|Shift W", 'W', NULL}, +{ 0, "SEPR", 0, NULL}, +{ ICON_MENU_PANEL, "Properties|n", 'n', NULL}, +{ 0, "Snap...|Shift S", 'S', NULL}, +{ 0, "Proportional Edit|O", 'o', NULL}, +{ -1, "", 0, tb_do_hotkey}}; + + +static TBitem tb_transform_editmode2[]= { +{ 0, "Grabber|g", 'g', NULL}, +{ 0, "Rotate|r", 'r', NULL}, +{ 0, "Scale|s", 's', NULL}, +{ 0, "SEPR", 0, NULL}, +{ ICON_MENU_PANEL, "Properties|n", 'n', NULL}, +{ 0, "Snap...|Shift S", 'S', NULL}, { -1, "", 0, tb_do_hotkey}}; + /* *************ADD ********** */ static TBitem addmenu_mesh[]= { @@ -1730,12 +1889,8 @@ static TBitem tb_add[]= { { 0, "Lattice", 9, NULL}, { -1, "", 0, do_info_addmenu}}; -static TBitem tb_test[]= { -{ 0, "test", 0, NULL}, -{ 0, "test", 1, NULL}, -{ 0, "test", 2, NULL}, -{ 0, "test", 3, NULL}, -{ 0, "test", 4, NULL}, +static TBitem tb_empty[]= { +{ 0, "Nothing...", 0, NULL}, { -1, "", 0, NULL}}; @@ -1822,20 +1977,45 @@ void toolbox_n(void) if(G.obedit) { if(G.obedit->type==OB_MESH) { menu1= tb_mesh; str1= "Mesh"; - menu2= addmenu_mesh; str2= "Add"; - menu4= tb_mesh_edit; str4= "Edit"; + menu2= addmenu_mesh; + menu3= tb_mesh_select; + menu4= tb_mesh_edit; + menu5= tb_transform_editmode1; } else if(G.obedit->type==OB_CURVE) { - menu1= tb_test; str1= "Curve"; - menu2= addmenu_curve; str2= "Add"; + menu1= tb_obdata; str1= "Curve"; + menu2= addmenu_curve; + menu3= tb_curve_select; + menu4= tb_curve_edit; + menu5= tb_transform_editmode1; } else if(G.obedit->type==OB_SURF) { - menu1= tb_test; str1= "Surface"; - menu2= addmenu_surf; str2= "Add"; + menu1= tb_obdata; str1= "Surface"; + menu2= addmenu_surf; + menu3= tb_curve_select; + menu4= tb_curve_edit; + menu5= tb_transform_editmode1; } else if(G.obedit->type==OB_MBALL) { - menu1= tb_test; str1= "Meta"; - menu2= addmenu_meta; str2= "Add"; + menu1= tb_obdata; str1= "Meta"; + menu2= addmenu_meta; + menu3= tb__select; + menu4= tb_edit; + menu5= tb_transform_editmode2; + } + else if(G.obedit->type==OB_ARMATURE) { + menu1= tb_obdata;str1= "Armature"; + menu2= tb_empty; + menu3= tb__select; + menu4= tb_edit; + menu5= tb_transform_editmode2; + } + else if(G.obedit->type==OB_LATTICE) { + menu1= tb_empty;str1= "Lattice"; + menu2= tb_empty; + menu3= tb__select; + menu4= tb_edit; + menu5= tb_transform_editmode1; } } @@ -1848,6 +2028,16 @@ void toolbox_n(void) /* create the main buttons menu */ if(tot==6) { + + /* check if it fits */ + if(mval[0]-1.5*dx+tb_mainx < 6) mval[0]= 6 + 1.5*dx -tb_mainx; + else if(mval[0]+1.5*dx+tb_mainx > G.curscreen->sizex-6) + mval[0]= G.curscreen->sizex-6-1.5*dx-tb_mainx; + + if(mval[1]-20+tb_mainy < 6) mval[1]= 6+20 -tb_mainy; + else if(mval[1]+20+tb_mainy > G.curscreen->sizey-6) + mval[1]= G.curscreen->sizey-6-20-tb_mainy; + but=uiDefBlockBut(block, tb_makemenu, menu1, str1, mval[0]-1.5*dx+tb_mainx,mval[1]+tb_mainy, dx, 19, ""); uiButSetFlag(but, UI_MAKE_TOP|UI_MAKE_RIGHT); uiButSetFunc(but, store_main, (void *)dx, (void *)-5); @@ -1879,5 +2069,10 @@ void toolbox_n(void) mywinset(curarea->win); } - +void toolbox_n_add(void) +{ + tb_mainx= 0; + tb_mainy= -5; + toolbox_n(); +} |