diff options
author | Simon Clitherow <aphex@nildram.co.uk> | 2003-10-21 00:12:01 +0400 |
---|---|---|
committer | Simon Clitherow <aphex@nildram.co.uk> | 2003-10-21 00:12:01 +0400 |
commit | fd3be2e3ef97282908a756bf61d9ef410ba30c9a (patch) | |
tree | da83052c5911ad9cdfbb157190e1a1aef36e107e /source/blender/src/header_seq.c | |
parent | bac66d0a19f5dc0b52b3673c0fc15a90e8f61ace (diff) |
added sequence editor pull-down menus.
TODO: fix "Enter/Exit Meta Strip" to work correctly for nested
meta strips.
Diffstat (limited to 'source/blender/src/header_seq.c')
-rw-r--r-- | source/blender/src/header_seq.c | 348 |
1 files changed, 339 insertions, 9 deletions
diff --git a/source/blender/src/header_seq.c b/source/blender/src/header_seq.c index cdda34bd050..01835f2f950 100644 --- a/source/blender/src/header_seq.c +++ b/source/blender/src/header_seq.c @@ -63,6 +63,7 @@ #include "BIF_resources.h" #include "BIF_screen.h" #include "BIF_space.h" +#include "BIF_editseq.h" #include "BSE_drawipo.h" #include "BSE_headerbuttons.h" #include "BSE_sequence.h" @@ -72,6 +73,318 @@ static int viewmovetemp = 0; +extern Sequence *last_seq; + +static void do_seq_viewmenu(void *arg, int event) +{ + switch(event) + { + case 1: + do_seq_buttons(B_SEQHOME); + break; + case 2: + if(last_seq) { + CFRA= last_seq->startdisp; + G.v2d->cur.xmin= last_seq->startdisp- (last_seq->len/20); + G.v2d->cur.xmax= last_seq->enddisp+ (last_seq->len/20); + update_for_newframe(); + } + break; + } +} + +static uiBlock *seq_viewmenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "seq_viewmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_seq_viewmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Frame All|Home", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Frame Selected|NumPad .", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + 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,0, ""); + else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, 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_seq_selectmenu(void *arg, int event) +{ + switch(event) + { + case 0: + borderselect_seq(); + break; + case 1: + swap_select_seq(); + break; + } +} + +static uiBlock *seq_selectmenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "seq_selectmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_seq_selectmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); + 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, 0, 1, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} + +static void do_seq_addmenu_effectmenu(void *arg, int event) +{ + switch(event) + { + case 0: + add_sequence(SEQ_ADD); + break; + case 1: + add_sequence(SEQ_SUB); + break; + case 2: + add_sequence(SEQ_MUL); + break; + case 3: + add_sequence(SEQ_CROSS); + break; + case 4: + add_sequence(SEQ_GAMCROSS); + break; + case 5: + add_sequence(SEQ_ALPHAOVER); + break; + case 6: + add_sequence(SEQ_ALPHAUNDER); + break; + case 7: + add_sequence(SEQ_OVERDROP); + break; + case 8: + add_sequence(SEQ_PLUGIN); + break; + } +} + +static uiBlock *seq_addmenu_effectmenu(void *arg_unused) +{ + uiBlock *block; + short yco = 20, menuwidth = 120; + + block= uiNewBlock(&curarea->uiblocks, "seq_addmenu_effectmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_seq_addmenu_effectmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Sub", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mul", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Cross", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "GammaCross", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "AlphaOver", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 5, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "AlphaUnder", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "AlphaOverDrop", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Plugin...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, ""); + + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 60); + + return block; +} + + +static void do_seq_addmenu(void *arg, int event) +{ + switch(event) + { + case 0: + add_sequence(SEQ_IMAGE); + break; + case 1: + add_sequence(SEQ_MOVIE); + break; + case 2: + add_sequence(SEQ_SOUND); + break; + case 3: + add_sequence(SEQ_SCENE); + break; + } +} + +static uiBlock *seq_addmenu(void *arg_unused) +{ + uiBlock *block; + short yco = 20, menuwidth = 120; + + block= uiNewBlock(&curarea->uiblocks, "seq_addmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_seq_addmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Images", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Movie", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Audio", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Scene", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, ""); + uiDefIconTextBlockBut(block, seq_addmenu_effectmenu, NULL, ICON_RIGHTARROW_THIN, "Effect", 0, yco-=20, 120, 19, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + } + + uiTextBoundsBlock(block, 50); + + return block; +} + + +static void do_seq_editmenu(void *arg, int event) +{ + SpaceSeq *sseq; + + sseq= curarea->spacedata.first; + + switch(event) + { + case 1: /* Change Strip... */ + change_sequence(); + break; + case 2: /* Make Meta Strip */ + make_meta(); + break; + case 3: /* Separate Meta Strip */ + un_meta(); + break; + case 4: /* Meta Properties... */ + clever_numbuts_seq(); + break; + case 5: /* Duplicate */ + add_duplicate_seq(); + break; + case 6: /* Delete */ + del_seq(); + break; + case 7: /* Snap menu */ + seq_snapmenu(); + break; + case 8: + set_filter_seq(); + break; + case 9: + enter_meta(); + break; + case 10: + exit_meta(); + break; + } +} + +static uiBlock *seq_editmenu(void *arg_unused) +{ + uiBlock *block; + Editing *ed; + short yco= 0, menuwidth=120; + + ed = G.scene->ed; + + block= uiNewBlock(&curarea->uiblocks, "seq_editmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_seq_editmenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Snap...|Shift S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); + + 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, 5, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, ""); + + if (last_seq != NULL && last_seq->type != SEQ_MOVIE) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + if(last_seq->type >= SEQ_EFFECT) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Change Effect...|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + else if(last_seq->type == SEQ_IMAGE) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Change Image...|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + else uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Change Scene...|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); + } + +/* if (last_seq != NULL && last_seq->type == SEQ_MOVIE) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Filter Y|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, ""); + } +*/ + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Meta Strip...|M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Separate Meta Strip...|Alt M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, ""); + if ((ed != NULL) && (ed->metastack.first > 0)){ + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Enter/Exit Meta Strip|Tab", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 10, ""); + } + else { + if (last_seq != NULL && last_seq->type == SEQ_META) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Enter/Exit Meta Strip|Tab", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 9, ""); + } + } + if(last_seq != NULL) { + if(last_seq->type == SEQ_META) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Meta Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + } + else if(last_seq->type == SEQ_PLUGIN) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Plugin Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + } + else if(last_seq->type == SEQ_MOVIE) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Movie Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); + } + else if(last_seq->type == SEQ_SOUND) { + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Sound Properties...|N", 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; +} + + void do_seq_buttons(short event) { Editing *ed; @@ -98,6 +411,7 @@ void seq_buttons() short xco; char naam[20]; uiBlock *block; + short xmax; sseq= curarea->spacedata.first; @@ -114,17 +428,33 @@ void seq_buttons() uiDefIconTextButC(block, ICONTEXTROW,B_NEWSPACE, ICON_VIEW3D, windowtype_pup(), xco,0,XIC+10,YIC, &(curarea->butspacetype), 1.0, SPACEICONMAX, 0, 0, "Displays Current Window Type. Click for menu of available types."); xco+= XIC+22; - - /* FULL WINDOW */ - if(curarea->full) uiDefIconBut(block, BUT,B_FULL, ICON_SPLITSCREEN, xco,0,XIC,YIC, 0, 0, 0, 0, 0, "Returns to multiple views window (CTRL+Up arrow)"); - else uiDefIconBut(block, BUT,B_FULL, ICON_FULLSCREEN, xco,0,XIC,YIC, 0, 0, 0, 0, 0, "Makes current window full screen (CTRL+Down arrow)"); - - /* HOME */ - uiDefIconBut(block, BUT, B_SEQHOME, ICON_HOME, xco+=XIC,0,XIC,YIC, 0, 0, 0, 0, 0, "Zooms window to home view showing all items (HOMEKEY)"); - xco+= XIC; + + /* pull down menus */ + uiBlockSetEmboss(block, UI_EMBOSSP); + + xmax= GetButStringLength("View"); + uiDefBlockBut(block,seq_viewmenu, NULL, "View", xco, 0, xmax, 20, ""); + xco+=xmax; + + xmax= GetButStringLength("Select"); + uiDefBlockBut(block,seq_selectmenu, NULL, "Select", xco, 0, xmax, 20, ""); + xco+=xmax; + + xmax= GetButStringLength("Add"); + uiDefBlockBut(block, seq_addmenu, NULL, "Add", xco, 0, xmax, 20, ""); + xco+= xmax; + + xmax= GetButStringLength("Strip"); + uiDefBlockBut(block, seq_editmenu, NULL, "Strip", xco, 0, xmax, 20, ""); + xco+= xmax; + + /* end of pull down menus */ + uiBlockSetEmboss(block, UI_EMBOSSX); + + xco+= 10; /* IMAGE */ - uiDefIconButS(block, TOG, B_REDR, ICON_IMAGE_COL, xco+=XIC,0,XIC,YIC, &sseq->mainb, 0, 0, 0, 0, "Toggles image display"); + uiDefIconButS(block, TOG, B_REDR, ICON_IMAGE_COL, xco,0,XIC,YIC, &sseq->mainb, 0, 0, 0, 0, "Toggles image display"); /* ZOOM and BORDER */ xco+= XIC; |