Added Panel support in Sequence window, and converted old Nkey menu for it.

This commit is contained in:
2004-06-16 20:25:56 +00:00
parent ed86852f7e
commit b106d1b8b6
8 changed files with 142 additions and 4 deletions

View File

@@ -58,5 +58,8 @@ void touch_seq_files(void);
void transform_seq(int mode); void transform_seq(int mode);
void un_meta(void); void un_meta(void);
/* drawseq.c */
void do_seqbuttons(short);
#endif #endif

View File

@@ -67,6 +67,9 @@ struct BWinEvent;
/* nla handler codes */ /* nla handler codes */
#define NLA_HANDLER_PROPERTIES 50 #define NLA_HANDLER_PROPERTIES 50
/* sequence handler codes */
#define SEQ_HANDLER_PROPERTIES 60
void scrarea_do_windraw (struct ScrArea *sa); void scrarea_do_windraw (struct ScrArea *sa);
void scrarea_do_winchange (struct ScrArea *sa); void scrarea_do_winchange (struct ScrArea *sa);

View File

@@ -58,6 +58,7 @@
#include "BKE_utildefines.h" #include "BKE_utildefines.h"
#include "BKE_global.h" #include "BKE_global.h"
#include "BKE_plugin_types.h"
#include "BIF_gl.h" #include "BIF_gl.h"
#include "BIF_mywindow.h" #include "BIF_mywindow.h"
@@ -66,12 +67,20 @@
#include "BIF_editseq.h" #include "BIF_editseq.h"
#include "BIF_drawimage.h" #include "BIF_drawimage.h"
#include "BIF_resources.h" #include "BIF_resources.h"
#include "BIF_space.h"
#include "BIF_interface.h"
#include "BSE_view.h" #include "BSE_view.h"
#include "BSE_drawipo.h" #include "BSE_drawipo.h"
#include "BSE_sequence.h" #include "BSE_sequence.h"
#include "BSE_seqaudio.h" #include "BSE_seqaudio.h"
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
#include "blendef.h" /* CFRA */
#include "mydevice.h" /* REDRAWSEQ */
int no_rightbox=0, no_leftbox= 0; int no_rightbox=0, no_leftbox= 0;
static void EmbossBoxf(float x1, float y1, float x2, float y2, int sel, unsigned int dark, unsigned int light) static void EmbossBoxf(float x1, float y1, float x2, float y2, int sel, unsigned int dark, unsigned int light)
@@ -579,6 +588,109 @@ static void draw_extra_seqinfo(void)
} }
} }
#define SEQ_BUT_PLUGIN 1
#define SEQ_BUT_MOVIE 2
void do_seqbuttons(short val)
{
extern Sequence *last_seq;
StripElem *se;
switch(val) {
case SEQ_BUT_PLUGIN:
new_stripdata(last_seq);
free_imbuf_effect_spec(CFRA);
break;
case SEQ_BUT_MOVIE:
se= last_seq->curelem;
if(se && se->ibuf ) {
IMB_freeImBuf(se->ibuf);
se->ibuf= 0;
}
break;
}
allqueue(REDRAWSEQ, 0);
}
static void seq_panel_properties(short cntrl) // SEQ_HANDLER_PROPERTIES
{
extern Sequence *last_seq;
uiBlock *block;
block= uiNewBlock(&curarea->uiblocks, "seq_panel_properties", UI_EMBOSS, UI_HELV, curarea->win);
uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc
if(uiNewPanel(curarea, block, "Transform Properties", "Seq", 10, 230, 318, 204)==0) return;
if(last_seq==NULL) return;
if(last_seq->type==SEQ_PLUGIN) {
PluginSeq *pis;
VarStruct *varstr;
int a, xco, yco;
pis= last_seq->plugin;
if(pis->vars==0) return;
varstr= pis->varstr;
if(varstr) {
for(a=0; a<pis->vars; a++, varstr++) {
xco= 150*(a/6)+10;
yco= 125 - 20*(a % 6)+1;
uiDefBut(block, varstr->type, SEQ_BUT_PLUGIN, varstr->name, xco,yco,150,19, &(pis->data[a]), varstr->min, varstr->max, 100, 0, varstr->tip);
}
}
}
else if(last_seq->type==SEQ_MOVIE) {
if(last_seq->mul==0.0) last_seq->mul= 1.0;
uiDefBut(block, TEX, 0, "Name ", 10,140,150,19, last_seq->name+2, 0.0, 21.0, 100, 0, "");
uiDefButS(block, TOG|BIT|4, SEQ_BUT_MOVIE, "FilterY ", 10,120,150,19, &last_seq->flag, 0.0, 21.0, 100, 0, "");
uiDefButF(block, NUM, SEQ_BUT_MOVIE, "Mul:", 10,100,150,19, &last_seq->mul, 0.001, 5.0, 100, 0, "");
}
else if(last_seq->type==SEQ_SOUND) {
uiDefBut(block, TEX, 0, "Name ", 10,140,150,19, last_seq->name+2, 0.0, 21.0, 100, 0, "");
uiDefButS(block, TOG|BIT|5, 0, "Mute", 10,120,150,19, &last_seq->flag, 0.0, 21.0, 100, 0, "");
uiDefButF(block, NUM, SEQ_BUT_MOVIE, "Gain (dB):", 10,100,150,19, &last_seq->level, -96.0, 6.0, 100, 0, "");
uiDefButF(block, NUM, SEQ_BUT_MOVIE, "Pan:", 10,80,150,19, &last_seq->pan, -1.0, 1.0, 100, 0, "");
}
else if(last_seq->type==SEQ_META) {
uiDefBut(block, TEX, 0, "Name ", 10,140,150,19, last_seq->name+2, 0.0, 21.0, 100, 0, "");
}
}
static void seq_blockhandlers(ScrArea *sa)
{
SpaceSeq *sseq= sa->spacedata.first;
short a;
/* warning; blocks need to be freed each time, handlers dont remove (for ipo moved to drawipospace) */
uiFreeBlocksWin(&sa->uiblocks, sa->win);
for(a=0; a<SPACE_MAXHANDLER; a+=2) {
switch(sseq->blockhandler[a]) {
case SEQ_HANDLER_PROPERTIES:
seq_panel_properties(sseq->blockhandler[a+1]);
break;
}
/* clear action value for event */
sseq->blockhandler[a+1]= 0;
}
uiDrawBlocksPanels(sa, 0);
}
void drawseqspace(ScrArea *sa, void *spacedata) void drawseqspace(ScrArea *sa, void *spacedata)
{ {
SpaceSeq *sseq; SpaceSeq *sseq;
@@ -595,6 +707,9 @@ void drawseqspace(ScrArea *sa, void *spacedata)
return; return;
} }
bwin_clear_viewmat(sa->win); /* clear buttons view */
glLoadIdentity();
BIF_GetThemeColor3fv(TH_BACK, col); BIF_GetThemeColor3fv(TH_BACK, col);
if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-1.0, 0.0); if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-1.0, 0.0);
else glClearColor(col[0], col[1], col[2], 0.0); else glClearColor(col[0], col[1], col[2], 0.0);
@@ -657,6 +772,12 @@ void drawseqspace(ScrArea *sa, void *spacedata)
draw_area_emboss(sa); draw_area_emboss(sa);
if(sseq->mainb==0) {
/* it is important to end a view in a transform compatible with buttons */
bwin_scalematrix(sa->win, sseq->blockscale, sseq->blockscale, sseq->blockscale);
seq_blockhandlers(sa);
}
curarea->win_swap= WIN_BACK_OK; curarea->win_swap= WIN_BACK_OK;
} }

View File

@@ -1628,6 +1628,7 @@ static void view3d_blockhandlers(ScrArea *sa)
View3D *v3d= sa->spacedata.first; View3D *v3d= sa->spacedata.first;
short a; short a;
/* warning; blocks need to be freed each time, handlers dont remove */
uiFreeBlocksWin(&sa->uiblocks, sa->win); uiFreeBlocksWin(&sa->uiblocks, sa->win);
for(a=0; a<SPACE_MAXHANDLER; a+=2) { for(a=0; a<SPACE_MAXHANDLER; a+=2) {

View File

@@ -301,8 +301,8 @@ static void do_seq_editmenu(void *arg, int event)
case 3: /* Separate Meta Strip */ case 3: /* Separate Meta Strip */
un_meta(); un_meta();
break; break;
case 4: /* Meta Properties... */ case 4: /* Properties... */
clever_numbuts_seq(); add_blockhandler(curarea, SEQ_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
break; break;
case 5: /* Duplicate */ case 5: /* Duplicate */
add_duplicate_seq(); add_duplicate_seq();

View File

@@ -2864,6 +2864,9 @@ void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0; if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
switch(event) { switch(event) {
case UI_BUT_EVENT:
do_seqbuttons(val);
break;
case LEFTMOUSE: case LEFTMOUSE:
if(sseq->mainb || view2dmove(event)==0) { if(sseq->mainb || view2dmove(event)==0) {
@@ -3012,6 +3015,12 @@ void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
make_meta(); make_meta();
} }
break; break;
case NKEY:
if(G.qual==0) {
add_blockhandler(curarea, SEQ_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
scrarea_queue_winredraw(curarea);
}
break;
case SKEY: case SKEY:
if((G.qual==LR_SHIFTKEY)) if((G.qual==LR_SHIFTKEY))
seq_snap_menu(); seq_snap_menu();

View File

@@ -814,6 +814,7 @@ int blenderqread(unsigned short event, short val)
else if(curarea->spacetype==SPACE_IMAGE); // is new panel, in ipo queue else if(curarea->spacetype==SPACE_IMAGE); // is new panel, in ipo queue
else if(curarea->spacetype==SPACE_ACTION); // is own queue else if(curarea->spacetype==SPACE_ACTION); // is own queue
else if(curarea->spacetype==SPACE_NLA); // is new panel else if(curarea->spacetype==SPACE_NLA); // is new panel
else if(curarea->spacetype==SPACE_SEQ); // is new panel
else { else {
clever_numbuts(); clever_numbuts();
return 0; return 0;

View File

@@ -1418,7 +1418,7 @@ void clever_numbuts(void)
// panel now // panel now
} }
else if(curarea->spacetype==SPACE_SEQ) { else if(curarea->spacetype==SPACE_SEQ) {
clever_numbuts_seq(); // panel now
} }
else if(curarea->spacetype==SPACE_IMAGE) { else if(curarea->spacetype==SPACE_IMAGE) {
// panel now // panel now