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 un_meta(void);
/* drawseq.c */
void do_seqbuttons(short);
#endif

View File

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

View File

@@ -58,6 +58,7 @@
#include "BKE_utildefines.h"
#include "BKE_global.h"
#include "BKE_plugin_types.h"
#include "BIF_gl.h"
#include "BIF_mywindow.h"
@@ -66,12 +67,20 @@
#include "BIF_editseq.h"
#include "BIF_drawimage.h"
#include "BIF_resources.h"
#include "BIF_space.h"
#include "BIF_interface.h"
#include "BSE_view.h"
#include "BSE_drawipo.h"
#include "BSE_sequence.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;
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)
{
SpaceSeq *sseq;
@@ -595,6 +707,9 @@ void drawseqspace(ScrArea *sa, void *spacedata)
return;
}
bwin_clear_viewmat(sa->win); /* clear buttons view */
glLoadIdentity();
BIF_GetThemeColor3fv(TH_BACK, col);
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);
@@ -657,6 +772,12 @@ void drawseqspace(ScrArea *sa, void *spacedata)
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;
}

View File

@@ -1628,6 +1628,7 @@ static void view3d_blockhandlers(ScrArea *sa)
View3D *v3d= sa->spacedata.first;
short a;
/* warning; blocks need to be freed each time, handlers dont remove */
uiFreeBlocksWin(&sa->uiblocks, sa->win);
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 */
un_meta();
break;
case 4: /* Meta Properties... */
clever_numbuts_seq();
case 4: /* Properties... */
add_blockhandler(curarea, SEQ_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
break;
case 5: /* Duplicate */
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;
switch(event) {
case UI_BUT_EVENT:
do_seqbuttons(val);
break;
case LEFTMOUSE:
if(sseq->mainb || view2dmove(event)==0) {
@@ -3012,6 +3015,12 @@ void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
make_meta();
}
break;
case NKEY:
if(G.qual==0) {
add_blockhandler(curarea, SEQ_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
scrarea_queue_winredraw(curarea);
}
break;
case SKEY:
if((G.qual==LR_SHIFTKEY))
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_ACTION); // is own queue
else if(curarea->spacetype==SPACE_NLA); // is new panel
else if(curarea->spacetype==SPACE_SEQ); // is new panel
else {
clever_numbuts();
return 0;

View File

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