2003-10-10 03:16:32 +00:00
/**
* header_seq . c oct - 2003
*
* Functions to draw the " Video Sequence Editor " window header
* and handle user events sent to it .
2004-06-18 22:53:06 +00:00
*
2003-10-10 03:16:32 +00:00
* $ Id $
*
* * * * * * BEGIN GPL / BL DUAL LICENSE BLOCK * * * * *
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version . The Blender
* Foundation also sells licenses for use in proprietary software under
* the Blender License . See http : //www.blender.org/BL/ for information
* about this .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software Foundation ,
2003-10-11 20:56:26 +00:00
* Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
2003-10-10 03:16:32 +00:00
*
* The Original Code is Copyright ( C ) 2001 - 2002 by NaN Holding BV .
* All rights reserved .
*
* The Original Code is : all of this file .
*
* Contributor ( s ) : none yet .
*
* * * * * * END GPL / BL DUAL LICENSE BLOCK * * * * *
*/
# include <stdlib.h>
# include <string.h>
2004-03-26 01:12:45 +00:00
# include <stdio.h>
2003-10-10 03:16:32 +00:00
# ifdef HAVE_CONFIG_H
# include <config.h>
# endif
# include "BMF_Api.h"
# include "BIF_language.h"
# include "DNA_ID.h"
# include "DNA_scene_types.h"
# include "DNA_screen_types.h"
# include "DNA_sequence_types.h"
# include "DNA_space_types.h"
# include "BKE_global.h"
# include "BKE_main.h"
2006-06-08 19:05:58 +00:00
# include "BIF_drawseq.h"
2003-10-10 03:16:32 +00:00
# include "BIF_interface.h"
# include "BIF_resources.h"
# include "BIF_screen.h"
# include "BIF_space.h"
2003-10-20 20:12:01 +00:00
# include "BIF_editseq.h"
2003-10-10 03:16:32 +00:00
# include "BSE_drawipo.h"
# include "BSE_headerbuttons.h"
# include "BSE_sequence.h"
# include "blendef.h"
# include "mydevice.h"
static int viewmovetemp = 0 ;
2003-10-20 20:12:01 +00:00
static void do_seq_viewmenu ( void * arg , int event )
{
2004-01-17 05:51:06 +00:00
extern int play_anim ( int mode ) ;
2006-03-26 21:36:42 +00:00
Sequence * last_seq = get_last_seq ( ) ;
SpaceSeq * sseq = curarea - > spacedata . first ;
2004-06-18 22:53:06 +00:00
2003-10-20 20:12:01 +00:00
switch ( event )
{
2004-01-17 05:51:06 +00:00
case 1 : /* Play Back Animation */
play_anim ( 0 ) ;
break ;
case 2 : /* Play Back Animation in All */
play_anim ( 1 ) ;
break ;
case 3 :
2003-10-20 20:12:01 +00:00
do_seq_buttons ( B_SEQHOME ) ;
break ;
2004-01-17 05:51:06 +00:00
case 4 :
2003-10-20 20:12:01 +00:00
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 ;
2006-03-26 21:36:42 +00:00
case 5 : /* Lock time */
G . v2d - > flag ^ = V2D_VIEWLOCK ;
if ( G . v2d - > flag & V2D_VIEWLOCK ) {
view2d_do_locks ( curarea , 0 ) ;
}
break ;
case 6 : /* Draw time/frames */
sseq - > flag ^ = SEQ_DRAWFRAMES ;
break ;
2003-10-20 20:12:01 +00:00
}
}
static uiBlock * seq_viewmenu ( void * arg_unused )
{
uiBlock * block ;
short yco = 0 , menuwidth = 120 ;
2006-03-26 21:36:42 +00:00
SpaceSeq * sseq = curarea - > spacedata . first ;
2003-10-20 20:12:01 +00:00
block = uiNewBlock ( & curarea - > uiblocks , " seq_viewmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_seq_viewmenu , NULL ) ;
2004-06-18 22:53:06 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Play Back Animation|Alt A " , 0 , yco - = 20 ,
2004-01-17 05:51:06 +00:00
menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 1 , " " ) ;
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 , 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 , 0 , 3 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " View Selected|NumPad . " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
2003-10-20 20:12:01 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2006-03-26 21:36:42 +00:00
/* Lock Time */
uiDefIconTextBut ( block , BUTM , 1 , ( G . v2d - > flag & V2D_VIEWLOCK ) ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT ,
" Lock Time to Other Windows| " , 0 , yco - = 20 ,
menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 5 , " " ) ;
/* Draw time or frames.*/
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
if ( sseq - > flag & SEQ_DRAWFRAMES )
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Seconds|T " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 6 , " " ) ;
else
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Frames|T " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 6 , " " ) ;
2003-10-20 20:12:01 +00:00
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 ;
2004-06-18 22:53:06 +00:00
case 9 :
2004-08-03 19:36:17 +00:00
add_sequence ( SEQ_WIPE ) ;
2004-06-18 22:53:06 +00:00
break ;
2004-06-23 22:11:57 +00:00
case 10 :
add_sequence ( SEQ_GLOW ) ;
break ;
2003-10-20 20:12:01 +00:00
}
}
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 , " " ) ;
2004-01-10 11:19:05 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Subtract " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 1 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Multiply " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 2 , " " ) ;
2003-10-20 20:12:01 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Cross " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 3 , " " ) ;
2004-01-10 11:19:05 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Gamma Cross " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Alpha Over " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 5 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Alpha Under " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 6 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Alpha Over Drop " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 7 , " " ) ;
2004-08-03 19:36:17 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Wipe " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 9 , " " ) ;
2004-06-23 22:11:57 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Glow " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 10 , " " ) ;
2003-10-20 20:12:01 +00:00
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 ) ;
2004-06-18 22:53:06 +00:00
2003-10-20 20:12:01 +00:00
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 :
2006-02-05 19:30:37 +00:00
add_sequence ( SEQ_RAM_SOUND ) ;
2003-10-20 20:12:01 +00:00
break ;
case 3 :
2006-02-05 19:30:37 +00:00
add_sequence ( SEQ_HD_SOUND ) ;
break ;
case 4 :
2003-10-20 20:12:01 +00:00
add_sequence ( SEQ_SCENE ) ;
break ;
2006-03-26 21:36:42 +00:00
case 5 :
add_sequence ( SEQ_MOVIE_AND_HD_SOUND ) ;
break ;
2003-10-20 20:12:01 +00:00
}
}
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 ) ;
2004-06-18 22:53:06 +00:00
uiDefIconTextBlockBut ( block , seq_addmenu_effectmenu , NULL , ICON_RIGHTARROW_THIN , " Effect " , 0 , yco - = 20 , 120 , 19 , " " ) ;
2003-10-20 20:12:01 +00:00
2004-01-10 11:19:05 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2006-07-07 09:39:37 +00:00
# ifdef WITH_FFMPEG
2006-02-05 19:30:37 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Audio (RAM) " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 2 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Audio (HD) " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 3 , " " ) ;
2006-07-07 09:39:37 +00:00
# else
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Audio (Wav) " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 2 , " " ) ;
# endif
2006-02-05 19:30:37 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Scene " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
2004-01-10 11:19:05 +00:00
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 , " " ) ;
2006-07-07 09:39:37 +00:00
# ifdef WITH_FFMPEG
2006-03-26 21:36:42 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Movie + Audio (HD) " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 5 , " " ) ;
2006-07-07 09:39:37 +00:00
# endif
2003-10-20 20:12:01 +00:00
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 ;
2004-06-16 20:25:56 +00:00
case 4 : /* Properties... */
2004-06-19 12:25:28 +00:00
add_blockhandler ( curarea , SEQ_HANDLER_PROPERTIES , UI_PNL_UNSTOW ) ;
2003-10-20 20:12:01 +00:00
break ;
case 5 : /* Duplicate */
add_duplicate_seq ( ) ;
break ;
case 6 : /* Delete */
del_seq ( ) ;
break ;
case 8 :
set_filter_seq ( ) ;
break ;
case 9 :
enter_meta ( ) ;
break ;
case 10 :
exit_meta ( ) ;
break ;
2004-06-03 14:29:14 +00:00
case 11 : /* grab/move */
2005-04-30 21:19:19 +00:00
transform_seq ( ' g ' , 0 ) ;
2004-06-03 14:29:14 +00:00
break ;
case 12 : /* Snap to Current Frame */
seq_snap ( event ) ;
2005-08-14 10:31:14 +00:00
break ;
case 13 : /* Cut at Current Frame */
seq_cut ( CFRA ) ;
break ;
2003-10-20 20:12:01 +00:00
}
}
static uiBlock * seq_editmenu ( void * arg_unused )
{
uiBlock * block ;
Editing * ed ;
short yco = 0 , menuwidth = 120 ;
2006-03-26 21:36:42 +00:00
Sequence * last_seq = get_last_seq ( ) ;
2003-10-20 20:12:01 +00:00
ed = G . scene - > ed ;
block = uiNewBlock ( & curarea - > uiblocks , " seq_editmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_seq_editmenu , NULL ) ;
2004-07-30 10:53:10 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_MENU_PANEL , " Strip Properties...|N " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
2003-10-20 20:12:01 +00:00
2004-06-03 14:29:14 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Grab/Move|G " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 11 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Snap to Current Frame|Shift S, 1 " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 12 , " " ) ;
2003-10-20 20:12:01 +00:00
2005-08-14 10:31:14 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Cut at Current Frame|K " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 13 , " " ) ;
2003-10-20 20:12:01 +00:00
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 , " " ) ;
}
}
2004-07-30 10:53:10 +00:00
2003-10-20 20:12:01 +00:00
if ( curarea - > headertype = = HEADERTOP ) {
uiBlockSetDirection ( block , UI_DOWN ) ;
}
else {
uiBlockSetDirection ( block , UI_TOP ) ;
uiBlockFlipOrder ( block ) ;
}
uiTextBoundsBlock ( block , 50 ) ;
return block ;
}
2003-10-10 03:16:32 +00:00
void do_seq_buttons ( short event )
{
2003-10-11 20:56:26 +00:00
Editing * ed ;
2006-06-08 19:05:58 +00:00
SpaceSeq * sseq = curarea - > spacedata . first ;
2003-10-11 20:56:26 +00:00
ed = G . scene - > ed ;
if ( ed = = 0 ) return ;
2006-06-08 19:05:58 +00:00
2003-10-11 20:56:26 +00:00
switch ( event ) {
case B_SEQHOME :
2006-06-08 19:05:58 +00:00
if ( sseq - > mainb )
seq_reset_imageofs ( sseq ) ;
else {
G . v2d - > cur = G . v2d - > tot ;
test_view2d ( G . v2d , curarea - > winx , curarea - > winy ) ;
view2d_do_locks ( curarea , V2D_LOCK_COPY ) ;
}
2003-10-11 20:56:26 +00:00
scrarea_queue_winredraw ( curarea ) ;
break ;
case B_SEQCLEAR :
free_imbuf_seq ( ) ;
allqueue ( REDRAWSEQ , 1 ) ;
break ;
}
2003-10-10 03:16:32 +00:00
}
void seq_buttons ( )
{
SpaceSeq * sseq ;
short xco ;
char naam [ 20 ] ;
uiBlock * block ;
2003-10-20 20:12:01 +00:00
short xmax ;
2003-10-11 20:56:26 +00:00
2003-10-10 03:16:32 +00:00
sseq = curarea - > spacedata . first ;
2003-10-11 20:56:26 +00:00
2003-10-10 03:16:32 +00:00
sprintf ( naam , " header %d " , curarea - > headwin ) ;
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
block = uiNewBlock ( & curarea - > uiblocks , naam , UI_EMBOSS , UI_HELV , curarea - > headwin ) ;
if ( area_is_active_area ( curarea ) ) uiBlockSetCol ( block , TH_HEADER ) ;
else uiBlockSetCol ( block , TH_HEADERDESEL ) ;
2003-10-10 03:16:32 +00:00
curarea - > butspacetype = SPACE_SEQ ;
2003-10-15 13:47:15 +00:00
xco = 8 ;
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. " ) ;
2003-10-28 18:43:55 +00:00
xco + = XIC + 14 ;
2003-10-27 13:23:48 +00:00
uiBlockSetEmboss ( block , UI_EMBOSSN ) ;
if ( curarea - > flag & HEADER_NO_PULLDOWN ) {
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , HEADER_NO_PULLDOWN , B_FLIPINFOMENU , ICON_DISCLOSURE_TRI_RIGHT ,
2003-10-27 13:23:48 +00:00
xco , 2 , XIC , YIC - 2 ,
& ( curarea - > flag ) , 0 , 0 , 0 , 0 , " Enables display of pulldown menus " ) ;
} else {
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , HEADER_NO_PULLDOWN , B_FLIPINFOMENU , ICON_DISCLOSURE_TRI_DOWN ,
2003-10-27 13:23:48 +00:00
xco , 2 , XIC , YIC - 2 ,
& ( curarea - > flag ) , 0 , 0 , 0 , 0 , " Hides pulldown menus " ) ;
}
uiBlockSetEmboss ( block , UI_EMBOSS ) ;
xco + = XIC ;
2003-10-10 03:16:32 +00:00
2003-10-20 20:12:01 +00:00
/* pull down menus */
2003-10-27 13:23:48 +00:00
if ( ( curarea - > flag & HEADER_NO_PULLDOWN ) = = 0 ) {
uiBlockSetEmboss ( block , UI_EMBOSSP ) ;
2004-01-10 11:19:05 +00:00
2003-10-27 13:23:48 +00:00
xmax = GetButStringLength ( " View " ) ;
2004-10-03 13:49:54 +00:00
uiDefPulldownBut ( block , seq_viewmenu , NULL , " View " , xco , - 2 , xmax - 3 , 24 , " " ) ;
2003-10-27 13:23:48 +00:00
xco + = xmax ;
2004-06-18 22:53:06 +00:00
2003-10-27 13:23:48 +00:00
xmax = GetButStringLength ( " Select " ) ;
2004-10-03 13:49:54 +00:00
uiDefPulldownBut ( block , seq_selectmenu , NULL , " Select " , xco , - 2 , xmax - 3 , 24 , " " ) ;
2003-10-27 13:23:48 +00:00
xco + = xmax ;
2004-06-18 22:53:06 +00:00
2003-10-27 13:23:48 +00:00
xmax = GetButStringLength ( " Add " ) ;
2004-10-03 13:49:54 +00:00
uiDefPulldownBut ( block , seq_addmenu , NULL , " Add " , xco , - 2 , xmax - 3 , 24 , " " ) ;
2003-10-27 13:23:48 +00:00
xco + = xmax ;
2004-06-18 22:53:06 +00:00
2003-10-27 13:23:48 +00:00
xmax = GetButStringLength ( " Strip " ) ;
2004-10-03 13:49:54 +00:00
uiDefPulldownBut ( block , seq_editmenu , NULL , " Strip " , xco , - 2 , xmax - 3 , 24 , " " ) ;
2003-10-27 13:23:48 +00:00
xco + = xmax ;
2004-06-18 22:53:06 +00:00
2003-10-27 13:23:48 +00:00
/* end of pull down menus */
uiBlockSetEmboss ( block , UI_EMBOSS ) ;
}
2004-06-18 22:53:06 +00:00
2006-02-05 19:30:37 +00:00
/* IMAGE */
uiDefIconTextButS ( block , ICONTEXTROW , B_REDR , ICON_SEQ_SEQUENCER ,
" Image Preview: %t "
" |Sequence %x0 "
" |Image Preview %x1 "
" |Luma Waveform %x2 "
" |Chroma Vectorscope %x3 " ,
xco , 0 , XIC + 10 , YIC , & sseq - > mainb , 0.0 , 3.0 ,
0 , 0 ,
" Shows the sequence output image preview " ) ;
2006-06-08 19:05:58 +00:00
xco + = 8 + XIC + 10 ;
/* CHANNEL shown in 3D preview */
if ( sseq - > mainb ) {
uiDefButS ( block , NUM , B_REDR , " Chan: " ,
xco , 0 , 3.5 * XIC , YIC ,
& sseq - > chanshown , 0 , MAXSEQ , 0 , 0 ,
" The channel number shown in the image preview. 0 is the result of all strips combined. " ) ;
xco + = 8 + XIC * 3.5 ;
}
2006-02-05 19:30:37 +00:00
/* ZOOM and BORDER */
2006-06-08 19:05:58 +00:00
xco + = 8 ;
2006-01-15 13:30:56 +00:00
uiBlockBeginAlign ( block ) ;
2006-06-08 19:05:58 +00:00
uiDefIconButI ( block , TOG , B_VIEW2DZOOM , ICON_VIEWZOOM , xco , 0 , XIC , YIC , & viewmovetemp , 0 , 0 , 0 , 0 , " Zooms view in and out (Ctrl MiddleMouse) " ) ;
2003-10-10 03:16:32 +00:00
uiDefIconBut ( block , BUT , B_IPOBORDER , ICON_BORDERMOVE , xco + = XIC , 0 , XIC , YIC , 0 , 0 , 0 , 0 , 0 , " Zooms view to fit area " ) ;
2006-01-15 13:30:56 +00:00
uiBlockEndAlign ( block ) ;
2003-10-10 03:16:32 +00:00
2006-02-05 19:30:37 +00:00
2003-10-10 03:16:32 +00:00
/* CLEAR MEM */
2004-01-10 11:19:05 +00:00
xco + = 8 ;
uiDefBut ( block , BUT , B_SEQCLEAR , " Refresh " , xco + = XIC , 0 , 3 * XIC , YIC , 0 , 0 , 0 , 0 , 0 , " Clears all buffered images in memory " ) ;
2004-06-18 22:53:06 +00:00
2003-10-10 03:16:32 +00:00
uiDrawBlock ( block ) ;
}