diff options
author | Roland Hess <me@harkyman.com> | 2009-01-15 06:12:21 +0300 |
---|---|---|
committer | Roland Hess <me@harkyman.com> | 2009-01-15 06:12:21 +0300 |
commit | ad50055610298cff793cdde1c01e1bc126398395 (patch) | |
tree | dc155090c293ad8afb28c3bfd55c2d09a11b9dca /source/blender/editors | |
parent | caa9e7b1338a487a2980275be7fb30c034c36354 (diff) |
Action Editor header menu structure ported, but menu items not yet linked up to functionality. Just wanted to get this committed in case I skid off a cliff in the snow tomorrow.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_action/action_header.c | 1170 |
1 files changed, 1125 insertions, 45 deletions
diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c index b6f65dfdcd7..65a2d956e11 100644 --- a/source/blender/editors/space_action/action_header.c +++ b/source/blender/editors/space_action/action_header.c @@ -30,6 +30,7 @@ #include <stdio.h> #include "DNA_action_types.h" +#include "DNA_key_types.h" #include "DNA_space_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -212,11 +213,14 @@ enum { /* test if active action editor is showing any markers */ #if 0 - #define G_SACTION_HASMARKERS \ - ((G.saction->action && G.saction->action->markers.first) \ - || (G.scene->markers.first)) + #define SACTION_HASMARKERS \ + ((saction->action && saction->action->markers.first) \ + || (scene->markers.first)) #endif +/* need to find out how to get scene from context */ +#define SACTION_HASMARKERS (saction->action && saction->action->markers.first) + /* ------------------------------- */ /* *************************************************************** */ @@ -224,9 +228,348 @@ enum { /* Key menu --------------------------- */ -static void do_keymenu(bContext *C, void *arg, int event) +static void do_keymenu_transformmenu(bContext *C, void *arg, int event) +{ + switch (event) + { + case ACTMENU_KEY_TRANSFORM_MOVE: + //transform_action_keys('g', 0); + break; + case ACTMENU_KEY_TRANSFORM_SCALE: + //transform_action_keys('s', 0); + break; + case ACTMENU_KEY_TRANSFORM_SLIDE: + //transform_action_keys('t', 0); + break; + case ACTMENU_KEY_TRANSFORM_EXTEND: + //transform_action_keys('e', 0); + break; + } +} + +static uiBlock *action_keymenu_transformmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_keymenu_transformmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_transformmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_TRANSFORM_MOVE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Grab/Extend from Frame|E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_TRANSFORM_EXTEND, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Scale|S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_TRANSFORM_SCALE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Time Slide|T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_TRANSFORM_SLIDE, ""); + + uiBlockSetDirection(block, UI_RIGHT); + + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_keymenu_snapmenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_KEY_SNAP_NEARFRAME: + case ACTMENU_KEY_SNAP_CURFRAME: + case ACTMENU_KEY_SNAP_NEARMARK: + case ACTMENU_KEY_SNAP_NEARTIME: + //snap_action_keys(event); + break; + + case ACTMENU_KEY_SNAP_CFRA2KEY: + //snap_cfra_action(); + break; + } +} + +static uiBlock *action_keymenu_snapmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + uiBlock *block; + short yco= 0, menuwidth=120; + + + block= uiBeginBlock(C, handle->region, "action_keymenu_snapmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_snapmenu, NULL); + + if (saction->flag & SACTION_DRAWTIME) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Key -> Nearest Second|Shift S, 1", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_NEARTIME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Key -> Current Time|Shift S, 2", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_CURFRAME, ""); + + } + else { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Key -> Nearest Frame|Shift S, 1", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_NEARFRAME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Key -> Current Frame|Shift S, 2", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_CURFRAME, ""); + } + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Key -> Nearest Marker|Shift S, 3", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_NEARMARK, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Current Frame -> Key|Ctrl Shift S", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SNAP_NEARMARK, ""); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_keymenu_mirrormenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_KEY_MIRROR_CURFRAME: + case ACTMENU_KEY_MIRROR_YAXIS: + //mirror_action_keys(event); + break; + } + +} + +static uiBlock *action_keymenu_mirrormenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_keymenu_mirrormenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_mirrormenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Current Frame|Shift M, 1", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_MIRROR_CURFRAME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Vertical Axis|Shift M, 2", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_MIRROR_YAXIS, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Horizontal Axis|Shift M, 3", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_MIRROR_XAXIS, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Selected Marker|Shift M, 4", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_MIRROR_MARKER, ""); + + uiBlockSetDirection(block, UI_RIGHT); + + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_keymenu_handlemenu(bContext *C, void *arg, int event) +{ + switch (event) { + case ACTMENU_KEY_HANDLE_AUTO: + //sethandles_action_keys(HD_AUTO); + break; + + case ACTMENU_KEY_HANDLE_ALIGN: + case ACTMENU_KEY_HANDLE_FREE: + /* OK, this is kinda dumb, need to fix the + * toggle crap in sethandles_ipo_keys() + */ + //sethandles_action_keys(HD_ALIGN); + break; + + case ACTMENU_KEY_HANDLE_VECTOR: + //sethandles_action_keys(HD_VECT); + break; + } +} + +static uiBlock *action_keymenu_handlemenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_keymenu_handlemenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_handlemenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Auto|Shift H", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_HANDLE_AUTO, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Aligned|H", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_HANDLE_ALIGN, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Free|H", 0, yco-=20, menuwidth, + 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_HANDLE_FREE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Vector|V", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_HANDLE_VECTOR, ""); + + uiBlockSetDirection(block, UI_RIGHT); + + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_keymenu_extendmenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_KEY_EXTEND_CONST: + //action_set_ipo_flags(SET_EXTEND_MENU, SET_EXTEND_CONSTANT); + break; + case ACTMENU_KEY_EXTEND_EXTRAPOLATION: + //action_set_ipo_flags(SET_EXTEND_MENU, SET_EXTEND_EXTRAPOLATION); + break; + case ACTMENU_KEY_EXTEND_CYCLIC: + //action_set_ipo_flags(SET_EXTEND_MENU, SET_EXTEND_CYCLIC); + break; + case ACTMENU_KEY_EXTEND_CYCLICEXTRAPOLATION: + //action_set_ipo_flags(SET_EXTEND_MENU, SET_EXTEND_CYCLICEXTRAPOLATION); + break; + } +} + +static uiBlock *action_keymenu_extendmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_keymenu_extendmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_extendmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Constant", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_EXTEND_CONST, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Extrapolation", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_EXTEND_EXTRAPOLATION, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Cyclic", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_EXTEND_CYCLIC, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Cyclic Extrapolation", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_EXTEND_CYCLICEXTRAPOLATION, ""); + + uiBlockSetDirection(block, UI_RIGHT); + + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_keymenu_intpolmenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_KEY_INTERP_CONST: + //action_set_ipo_flags(SET_IPO_MENU, SET_IPO_CONSTANT); + break; + case ACTMENU_KEY_INTERP_LINEAR: + //action_set_ipo_flags(SET_IPO_MENU, SET_IPO_LINEAR); + break; + case ACTMENU_KEY_INTERP_BEZIER: + //action_set_ipo_flags(SET_IPO_MENU, SET_IPO_BEZIER); + break; + } +} + +static uiBlock *action_keymenu_intpolmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_keymenu_intpolmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_keymenu_intpolmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Constant|Shift T, 1", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_INTERP_CONST, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Linear|Shift T, 2", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_INTERP_LINEAR, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Bezier|Shift T, 3", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_INTERP_BEZIER, ""); + + uiBlockSetDirection(block, UI_RIGHT); + + uiTextBoundsBlock(block, 60); + uiEndBlock(C, block); + + return block; +} + +static void do_action_keymenu(bContext *C, void *arg, int event) +{ + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + bAction *act; + //Key *key; + + if (!saction) return; + + act = saction->action; + //key = get_action_mesh_key(); + + switch(event) + { + case ACTMENU_KEY_DUPLICATE: + //duplicate_action_keys(); + break; + case ACTMENU_KEY_DELETE: + //delete_action_keys(); + break; + case ACTMENU_KEY_CLEAN: + //clean_action(); + break; + case ACTMENU_KEY_SAMPLEKEYS: + //sample_action_keys(); + break; + case ACTMENU_KEY_INSERTKEY: + //insertkey_action(); + break; + } } static uiBlock *action_keymenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) @@ -235,11 +578,70 @@ static uiBlock *action_keymenu(bContext *C, uiMenuBlockHandle *handle, void *arg uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_keymenu", UI_EMBOSSP, UI_HELV); - uiBlockSetButmFunc(block, do_keymenu, NULL); + block= uiBeginBlock(C, handle->region, "action_keymenu", UI_EMBOSSP, UI_HELV); + + + uiBlockSetButmFunc(block, do_action_keymenu, NULL); + + uiDefIconTextBlockBut(block, action_keymenu_transformmenu, + NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_keymenu_snapmenu, + NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_keymenu_mirrormenu, + NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, 120, 20, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Insert Key|I", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_INSERTKEY, ""); + + 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, 0, + ACTMENU_KEY_DUPLICATE, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Delete|X", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_DELETE, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Clean Action|O", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_CLEAN, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Sample Keys|Alt O", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_SAMPLEKEYS, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBlockBut(block, action_keymenu_handlemenu, + NULL, ICON_RIGHTARROW_THIN, + "Handle Type", 0, yco-=20, 120, 20, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 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, ""); + + uiDefIconTextBlockBut(block, action_keymenu_extendmenu, + NULL, ICON_RIGHTARROW_THIN, + "Extend Mode", 0, yco-=20, 120, 20, ""); + uiDefIconTextBlockBut(block, action_keymenu_intpolmenu, + NULL, ICON_RIGHTARROW_THIN, + "Interpolation Mode", 0, yco-=20, 120, 20, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -257,22 +659,38 @@ static uiBlock *action_keymenu(bContext *C, uiMenuBlockHandle *handle, void *arg /* Frame menu --------------------------- */ -static void do_framemenu(bContext *C, void *arg, int event) -{ - -} +// framemenu uses functions from keymenu static uiBlock *action_framemenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= CTX_wm_area(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_framemenu", UI_EMBOSSP, UI_HELV); - uiBlockSetButmFunc(block, do_framemenu, NULL); + block= uiBeginBlock(C, handle->region, "action_framemenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_action_keymenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + uiDefIconTextBlockBut(block, action_keymenu_transformmenu, + NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_keymenu_snapmenu, + NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_keymenu_mirrormenu, + NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, 120, 20, ""); + + 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, 0, + ACTMENU_KEY_DUPLICATE, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Delete|X", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_KEY_DELETE, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -292,20 +710,76 @@ static uiBlock *action_framemenu(bContext *C, uiMenuBlockHandle *handle, void *a static void do_markermenu(bContext *C, void *arg, int event) { - + switch(event) + { + case ACTMENU_MARKERS_ADD: + //add_marker(CFRA); + break; + case ACTMENU_MARKERS_DUPLICATE: + //duplicate_marker(); + break; + case ACTMENU_MARKERS_DELETE: + //remove_marker(); + break; + case ACTMENU_MARKERS_NAME: + //rename_marker(); + break; + case ACTMENU_MARKERS_MOVE: + //transform_markers('g', 0); + break; + case ACTMENU_MARKERS_LOCALADD: + //action_add_localmarker(G.saction->action, CFRA); + break; + case ACTMENU_MARKERS_LOCALDELETE: + //action_remove_localmarkers(G.saction->action); + break; + case ACTMENU_MARKERS_LOCALRENAME: + //action_rename_localmarker(G.saction->action); + break; + case ACTMENU_MARKERS_LOCALMOVE: + /*G.saction->flag |= SACTION_POSEMARKERS_MOVE; + transform_markers('g', 0); + G.saction->flag &= ~SACTION_POSEMARKERS_MOVE;*/ + break; + } } static uiBlock *action_markermenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); ScrArea *curarea= CTX_wm_area(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_markermenu", UI_EMBOSSP, UI_HELV); + block= uiBeginBlock(C, handle->region, "action_markermenu", UI_EMBOSSP, UI_HELV); uiBlockSetButmFunc(block, do_markermenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Marker|M", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_ADD, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate Marker|Ctrl Shift D", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DUPLICATE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Marker|Shift X", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DELETE, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "(Re)Name Marker|Ctrl M", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_NAME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Marker|Ctrl G", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_MOVE, ""); + + if (saction->mode == SACTCONT_ACTION) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Pose Marker|Shift L", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALADD, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rename Pose Marker|Ctrl Shift L", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALRENAME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Pose Marker|Alt L", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALDELETE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Pose Marker|Ctrl L", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALMOVE, ""); + } if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -321,24 +795,227 @@ static uiBlock *action_markermenu(bContext *C, uiMenuBlockHandle *handle, void * return block; } -/* Grease Pencil --------------------------- */ -static void do_gplayermenu(bContext *C, void *arg, int event) +/* Channel menu --------------------------- */ + +static void do_channelmenu_posmenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_DOWN: + //rearrange_action_channels(REARRANGE_ACTCHAN_DOWN); + break; + case ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_UP: + //rearrange_action_channels(REARRANGE_ACTCHAN_UP); + break; + case ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_TOP: + //rearrange_action_channels(REARRANGE_ACTCHAN_TOP); + break; + case ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_BOTTOM: + //rearrange_action_channels(REARRANGE_ACTCHAN_BOTTOM); + break; + } +} + +static uiBlock *action_channelmenu_posmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_channelmenu_posmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_channelmenu_posmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Move Up|Shift Page Up", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_UP, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Move Down|Shift Page Down", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_DOWN, ""); + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Move to Top|Ctrl Shift Page Up", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_TOP, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Move to Bottom|Ctrl Shift Page Down", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_CHANPOS_MOVE_CHANNEL_BOTTOM, ""); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; } -static uiBlock *action_gplayermenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +static void do_channelmenu_groupmenu(bContext *C, void *arg, int event) +{ + switch(event) + { + case ACTMENU_CHANNELS_GROUP_ADD_TOACTIVE: + //action_groups_group(0); + break; + case ACTMENU_CHANNELS_GROUP_ADD_TONEW: + //action_groups_group(1); + break; + case ACTMENU_CHANNELS_GROUP_REMOVE: + //action_groups_ungroup(); + break; + case ACTMENU_CHANNELS_GROUP_SYNCPOSE: /* Syncronise Pose-data and Action-data */ + //sync_pchan2achan_grouping(); + break; + } +} + +static uiBlock *action_channelmenu_groupmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_channelmenu_groupmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_channelmenu_groupmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Add to Active Group|Shift G", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_GROUP_ADD_TOACTIVE, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Add to New Group|Ctrl Shift G", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_GROUP_ADD_TONEW, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Remove From Group|Alt G", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_GROUP_REMOVE, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Synchronise with Armature", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_GROUP_SYNCPOSE, ""); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} + +static void do_channelmenu_settingsmenu(bContext *C, void *arg, int event) +{ + //setflag_action_channels(event); +} + +static uiBlock *action_channelmenu_settingsmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_channelmenu_settingsmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_channelmenu_settingsmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Toggle a Setting|Shift W", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_SETTINGS_TOGGLE, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Enable a Setting|Ctrl Shift W", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_SETTINGS_ENABLE, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Disable a Setting|Alt W", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_CHANNELS_SETTINGS_DISABLE, ""); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} + +static void do_channelmenu(bContext *C, void *arg, int event) +{ + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + + if (saction == NULL) return; + + switch(event) + { + case ACTMENU_CHANNELS_OPENLEVELS: /* Unfold selected channels one step */ + //openclose_level_action(1); + break; + case ACTMENU_CHANNELS_CLOSELEVELS: /* Fold selected channels one step */ + //openclose_level_action(-1); + break; + case ACTMENU_CHANNELS_EXPANDALL: /* Expands all channels */ + //expand_all_action(); + break; + case ACTMENU_CHANNELS_SHOWACHANS: /* Unfold groups that are hiding selected achans */ + //expand_obscuregroups_action(); + break; + case ACTMENU_CHANNELS_DELETE: /* Deletes selected channels */ + //delete_action_channels(); + break; + } +} + +static uiBlock *action_channelmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= CTX_wm_area(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_gplayermenu", UI_EMBOSSP, UI_HELV); - uiBlockSetButmFunc(block, do_gplayermenu, NULL); + block= uiBeginBlock(C, handle->region, "action_channelmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_channelmenu, NULL); + + uiDefIconTextBlockBut(block, action_channelmenu_groupmenu, + NULL, ICON_RIGHTARROW_THIN, + "Grouping", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_channelmenu_posmenu, + NULL, ICON_RIGHTARROW_THIN, + "Ordering", 0, yco-=20, 120, 20, ""); + + uiDefIconTextBlockBut(block, action_channelmenu_settingsmenu, + NULL, ICON_RIGHTARROW_THIN, + "Settings", 0, yco-=20, 120, 20, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Delete|X", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_DELETE, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Toggle Show Hierachy|~", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_EXPANDALL, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Show Group-Hidden Channels|Shift ~", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_SHOWACHANS, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Expand One Level|Ctrl NumPad+", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_OPENLEVELS, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Collapse One Level|Ctrl NumPad-", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_CLOSELEVELS, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -354,24 +1031,28 @@ static uiBlock *action_gplayermenu(bContext *C, uiMenuBlockHandle *handle, void return block; } -/* Channel menu --------------------------- */ - -static void do_channelmenu(bContext *C, void *arg, int event) -{ - -} +/* Grease Pencil --------------------------- */ -static uiBlock *action_channelmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +/* Uses channelmenu functions */ +static uiBlock *action_gplayermenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= CTX_wm_area(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_channelmenu", UI_EMBOSSP, UI_HELV); + block= uiBeginBlock(C, handle->region, "action_gplayermenu", UI_EMBOSSP, UI_HELV); uiBlockSetButmFunc(block, do_channelmenu, NULL); + + uiDefIconTextBlockBut(block, action_channelmenu_settingsmenu, + NULL, ICON_RIGHTARROW_THIN, + "Settings", 0, yco-=20, 120, 20, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 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, + "Delete|X", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_CHANNELS_DELETE, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -389,22 +1070,219 @@ static uiBlock *action_channelmenu(bContext *C, uiMenuBlockHandle *handle, void /* Select menu --------------------------- */ +static void do_selectmenu_columnmenu(bContext *C, void *arg, int event) +{ + switch (event) { + case ACTMENU_SEL_COLUMN_MARKERSBETWEEN: + //markers_selectkeys_between(); + break; + case ACTMENU_SEL_COLUMN_KEYS: + //column_select_action_keys(1); + break; + case ACTMENU_SEL_COLUMN_MARKERSCOLUMN: + //column_select_action_keys(2); + break; + case ACTMENU_SEL_COLUMN_CFRA: + //column_select_action_keys(3); + break; + } +} + +static uiBlock *action_selectmenu_columnmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) +{ + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiBeginBlock(C, handle->region, "action_selectmenu_columnmenu", UI_EMBOSSP, UI_HELV); + uiBlockSetButmFunc(block, do_selectmenu_columnmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "On Selected Keys|K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_COLUMN_KEYS, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "On Current Frame|Ctrl K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_COLUMN_CFRA, ""); + + if (SACTION_HASMARKERS) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "On Selected Markers|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_COLUMN_MARKERSCOLUMN, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Between Selected Markers|Alt K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_COLUMN_MARKERSBETWEEN, ""); + } + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} + static void do_selectmenu(bContext *C, void *arg, int event) { + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + //Key *key; + + if (saction == NULL) return; + + //key = get_action_mesh_key(); + switch(event) + { + case ACTMENU_SEL_BORDER: /* Border Select */ + //borderselect_action(); + break; + + case ACTMENU_SEL_BORDERC: /* Border Select */ + //borderselect_actionchannels(); + break; + + case ACTMENU_SEL_BORDERM: /* Border Select */ + //borderselect_markers(); + break; + + case ACTMENU_SEL_ALL_KEYS: /* Select/Deselect All Keys */ + /*deselect_action_keys(1, 1); + BIF_undo_push("(De)Select Keys"); + allqueue(REDRAWACTION, 0); + allqueue(REDRAWNLA, 0); + allqueue(REDRAWIPO, 0);*/ + break; + + case ACTMENU_SEL_ALL_CHAN: /* Select/Deselect All Channels */ + /*deselect_action_channels(1); + BIF_undo_push("(De)Select Action Channels"); + allqueue(REDRAWVIEW3D, 0); + allqueue(REDRAWACTION, 0); + allqueue(REDRAWNLA, 0); + allqueue(REDRAWIPO, 0);*/ + break; + + case ACTMENU_SEL_ALL_MARKERS: /* select/deselect all markers */ + /*deselect_markers(1, 0); + BIF_undo_push("(De)Select Markers"); + allqueue(REDRAWMARKER, 0);*/ + break; + + case ACTMENU_SEL_INVERSE_KEYS: /* invert selection status of keys */ + /*deselect_action_keys(0, 2); + BIF_undo_push("Inverse Keys"); + allqueue(REDRAWACTION, 0); + allqueue(REDRAWNLA, 0); + allqueue(REDRAWIPO, 0);*/ + break; + + case ACTMENU_SEL_INVERSE_CHANNELS: /* invert selection status of channels */ + /*deselect_action_channels(2); + BIF_undo_push("Inverse Action Channels"); + allqueue(REDRAWVIEW3D, 0); + allqueue(REDRAWACTION, 0); + allqueue(REDRAWNLA, 0); + allqueue(REDRAWIPO, 0);*/ + break; + + case ACTMENU_SEL_INVERSE_MARKERS: /* invert selection of markers */ + /*deselect_markers(0, 2); + BIF_undo_push("Inverse Action Channels"); + allqueue(REDRAWMARKER, 0);*/ + break; + + case ACTMENU_SEL_LEFTKEYS: + //selectkeys_leftright(1, SELECT_REPLACE); + break; + + case ACTMENU_SEL_RIGHTKEYS: + //selectkeys_leftright(0, SELECT_REPLACE); + break; + } } static uiBlock *action_selectmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= CTX_wm_area(C); + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_selectmenu", UI_EMBOSSP, UI_HELV); + block= uiBeginBlock(C, handle->region, "action_selectmenu", UI_EMBOSSP, UI_HELV); uiBlockSetButmFunc(block, do_selectmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Border Select Keys|B", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_BORDER, ""); + if (SACTION_HASMARKERS) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Border Select Markers|Ctrl B", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_BORDERM, ""); + } + if (saction->mode != SACTCONT_SHAPEKEY) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Border Select Channels|B", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_BORDERC, ""); + } + + 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 Keys|A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_ALL_KEYS, ""); + if (SACTION_HASMARKERS) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Select/Deselect All Markers|Ctrl A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_ALL_MARKERS, ""); + } + if (saction->mode != SACTCONT_SHAPEKEY) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Select/Deselect All Channels|A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_ALL_CHAN, ""); + } + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Inverse Keys|Ctrl I", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_INVERSE_KEYS, ""); + if (SACTION_HASMARKERS) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Inverse Markers|Ctrl Shift I", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_INVERSE_MARKERS, ""); + } + if (saction->mode != SACTCONT_SHAPEKEY) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Inverse All Channels|Ctrl I", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_INVERSE_CHANNELS, ""); + } + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Back In Time|Alt RMB", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_LEFTKEYS, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Ahead In Time|Alt RMB", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_SEL_RIGHTKEYS, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBlockBut(block, action_selectmenu_columnmenu, + NULL, ICON_RIGHTARROW_THIN, "Column Select Keys", 0, yco-=20, 120, 20, ""); if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -424,20 +1302,222 @@ static uiBlock *action_selectmenu(bContext *C, uiMenuBlockHandle *handle, void * static void do_viewmenu(bContext *C, void *arg, int event) { - + switch(event) { + case ACTMENU_VIEW_CENTERVIEW: /* Center View to Current Frame */ + //center_currframe(); + break; + case ACTMENU_VIEW_AUTOUPDATE: /* Update Automatically */ + /*if (BTST(G.saction->lock, 0)) + G.saction->lock = BCLR(G.saction->lock, 0); + else + G.saction->lock = BSET(G.saction->lock, 0);*/ + break; + case ACTMENU_VIEW_PLAY3D: /* Play Back Animation */ + //play_anim(0); + break; + case ACTMENU_VIEW_PLAYALL: /* Play Back Animation in All */ + //play_anim(1); + break; + case ACTMENU_VIEW_ALL: /* View All */ + //do_action_buttons(B_ACTHOME); + break; + case ACTMENU_VIEW_LOCK: + /*G.v2d->flag ^= V2D_VIEWLOCK; + if (G.v2d->flag & V2D_VIEWLOCK) + view2d_do_locks(curarea, 0);*/ + break; + case ACTMENU_VIEW_SLIDERS: /* Show sliders (when applicable) */ + //G.saction->flag ^= SACTION_SLIDERS; + break; + case ACTMENU_VIEW_MAXIMIZE: /* Maximize Window */ + /* using event B_FULL */ + break; + case ACTMENU_VIEW_NEXTMARKER: /* Jump to next marker */ + //nextprev_marker(1); + break; + case ACTMENU_VIEW_PREVMARKER: /* Jump to previous marker */ + //nextprev_marker(-1); + break; + case ACTMENU_VIEW_TIME: /* switch between frames and seconds display */ + //G.saction->flag ^= SACTION_DRAWTIME; + break; + case ACTMENU_VIEW_NOHIDE: /* Show hidden channels */ + //G.saction->flag ^= SACTION_NOHIDE; + break; + case ACTMENU_VIEW_NEXTKEYFRAME: /* Jump to next keyframe */ + //nextprev_action_keyframe(1); + break; + case ACTMENU_VIEW_PREVKEYFRAME: /* Jump to previous keyframe */ + //nextprev_action_keyframe(-1); + break; + case ACTMENU_VIEW_TRANSDELDUPS: /* Don't delete duplicate/overlapping keyframes after transform */ + //G.saction->flag ^= SACTION_NOTRANSKEYCULL; + break; + case ACTMENU_VIEW_HORIZOPTIMISE: /* Include keyframes not in view (horizontally) when preparing to draw */ + //G.saction->flag ^= SACTION_HORIZOPTIMISEON; + break; + case ACTMENU_VIEW_GCOLORS: /* Draw grouped-action channels using its group's color */ + //G.saction->flag ^= SACTION_NODRAWGCOLORS; + break; + case ACTMENU_VIEW_PREVRANGESET: /* Set preview range */ + //anim_previewrange_set(); + break; + case ACTMENU_VIEW_PREVRANGECLEAR: /* Clear preview range */ + //anim_previewrange_clear(); + break; + case ACTMENU_VIEW_PREVRANGEAUTO: /* Auto preview-range length */ + //action_previewrange_set(G.saction->action); + break; + } } static uiBlock *action_viewmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= CTX_wm_area(C); + SpaceAction *saction= (SpaceAction*)CTX_wm_space_data(C); + View2D *v2d= UI_view2d_fromcontext_rwin(C); uiBlock *block; short yco= 0, menuwidth=120; - block= uiBeginBlock(C, handle->region, "dummy_viewmenu", UI_EMBOSSP, UI_HELV); + block= uiBeginBlock(C, handle->region, "viewmenu", UI_EMBOSSP, UI_HELV); uiBlockSetButmFunc(block, do_viewmenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Center View to Current Frame|C", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_CENTERVIEW, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + if (saction->flag & SACTION_DRAWTIME) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Show Frames|Ctrl T", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_TIME, ""); + } + else { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Show Seconds|Ctrl T", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_TIME, ""); + } + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + if (saction->mode == SACTCONT_GPENCIL) { + // this option may get removed in future + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_HORIZOPTIMISEON)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Cull Out-of-View Keys (Time)|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_HORIZOPTIMISE, ""); + } + else { + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_SLIDERS)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Show Sliders|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_SLIDERS, ""); + + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_NOHIDE)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Show Hidden Channels|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_NOHIDE, ""); + + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_NODRAWGCOLORS)?ICON_CHECKBOX_DEHLT:ICON_CHECKBOX_HLT, + "Use Group Colors|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_GCOLORS, ""); + + // this option may get removed in future + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_HORIZOPTIMISEON)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Cull Out-of-View Keys (Time)|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_HORIZOPTIMISE, ""); + + uiDefIconTextBut(block, BUTM, 1, (saction->flag & SACTION_NOTRANSKEYCULL)?ICON_CHECKBOX_DEHLT:ICON_CHECKBOX_HLT, + "AutoMerge Keyframes|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_TRANSDELDUPS, ""); + } + + + uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Lock Time to Other Windows|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_LOCK, ""); + + /*uiDefIconTextBut(block, BUTM, 1, BTST(saction->lock, 0)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Update Automatically|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_AUTOUPDATE, "");*/ + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Jump To Next Marker|PageUp", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_VIEW_NEXTMARKER, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Jump To Prev Marker|PageDown", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_VIEW_PREVMARKER, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Jump To Next Keyframe|Ctrl PageUp", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_VIEW_NEXTKEYFRAME, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Jump To Prev Keyframe|Ctrl PageDown", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, ACTMENU_VIEW_PREVKEYFRAME, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Play Back Animation|Alt A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_PLAY3D, ""); + //uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + // "Play Back Animation in 3D View|Alt Shift A", 0, yco-=20, + // menuwidth, 19, NULL, 0.0, 0.0, 1, + // ACTMENU_VIEW_PLAYALL, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, + menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Set Preview Range|Ctrl P", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_PREVRANGESET, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Clear Preview Range|Alt P", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_PREVRANGECLEAR, ""); + + if ((saction->mode == SACTCONT_ACTION) && (saction->action)) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Preview Range from Action Length|Ctrl Alt P", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, + ACTMENU_VIEW_PREVRANGEAUTO, ""); + } + + 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, + ACTMENU_VIEW_ALL, ""); + +/* 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, + ACTMENU_VIEW_MAXIMIZE, ""); + else + uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, + "Tile Window|Ctrl DownArrow", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 0, + ACTMENU_VIEW_MAXIMIZE, ""); +*/ if (curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); |