added "fake user" button (basically a shortcut for pressing Shift+F4 and F)

This commit is contained in:
Stefan Gartner 2003-01-30 13:19:26 +00:00
parent eca167fbca
commit 2df139c572
2 changed files with 51 additions and 21 deletions

@ -184,6 +184,8 @@
#define B_CURVEALONE 49
/* EVENT < 50: alone's en locals */
#define B_KEEPDATA 60
#define B_SHOWSPLASH 70
#define B_RESETAUTOSAVE 71
#define B_SOUNDTOGGLE 72

@ -205,7 +205,7 @@ static int std_libbuttons(uiBlock *block,
int xco, int pin, short *pinpoin,
int browse, ID *id, ID *parid,
short *menupoin, int users,
int lib, int del, int autobut);
int lib, int del, int autobut, int keepbut);
extern char versionstr[]; /* from blender.c */
@ -274,7 +274,7 @@ void write_dxf_fs()
/* ********************** GLOBAL ****************************** */
static int std_libbuttons(uiBlock *block, int xco, int pin, short *pinpoin, int browse, ID *id, ID *parid, short *menupoin, int users, int lib, int del, int autobut)
static int std_libbuttons(uiBlock *block, int xco, int pin, short *pinpoin, int browse, ID *id, ID *parid, short *menupoin, int users, int lib, int del, int autobut, int keepbut)
{
ListBase *lb;
Object *ob;
@ -482,6 +482,10 @@ static int std_libbuttons(uiBlock *block, int xco, int pin, short *pinpoin, int
}
if(keepbut) {
uiDefBut(block, BUT, keepbut, "F", (short)xco,0,XIC,YIC, 0, 0, 0, 0, 0, "Keep Datablock");
xco+= XIC;
}
}
else xco+=XIC;
@ -546,11 +550,13 @@ void do_global_buttons(unsigned short event)
bAction *act;
ID *id, *idtest, *from;
int nr= 1;
ob= OBACT;
id= 0; /* id op nul voor texbrowse */
switch(event) {
case B_NEWFRAME:
@ -1322,6 +1328,28 @@ void do_global_buttons(unsigned short event)
allqueue(REDRAWHEADERS, 0);
break;
case B_KEEPDATA:
/* keep datablock. similar to pressing FKEY in a fileselect window
* maybe we can move that stuff to a seperate function? -- sg
*/
if (curarea->spacetype==SPACE_BUTS) {
id= (ID *)G.buts->lockpoin;
} else if(curarea->spacetype==SPACE_IPO) {
id = (ID *)G.sipo->ipo;
} /* similar for other spacetypes ? */
if (id) {
if( id->flag & LIB_FAKEUSER) {
id->flag -= LIB_FAKEUSER;
id->us--;
} else {
id->flag |= LIB_FAKEUSER;
id->us++;
}
}
allqueue(REDRAWHEADERS, 0);
break;
}
}
@ -3182,11 +3210,11 @@ void info_buttons(void)
/* STD SCREEN BUTTONS */
xco+= XIC;
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCR, (ID *)G.curscreen, 0, &G.curscreen->screennr, 1, 1, B_INFODELSCR, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCR, (ID *)G.curscreen, 0, &G.curscreen->screennr, 1, 1, B_INFODELSCR, 0, 0);
/* STD SCENE BUTTONS */
xco+= 5;
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCE, (ID *)G.scene, 0, &G.curscreen->scenenr, 1, 1, B_INFODELSCE, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCE, (ID *)G.scene, 0, &G.curscreen->scenenr, 1, 1, B_INFODELSCE, 0, 0);
}
else xco= 430;
@ -3651,7 +3679,7 @@ void action_buttons(void)
ob=OBACT;
from = (ID*) ob;
xco= std_libbuttons(block, xco+1.5*XIC, B_ACTPIN, &G.saction->pin, B_ACTIONBROWSE, (ID*)G.saction->action, from, &(G.saction->actnr), B_ACTALONE, B_ACTLOCAL, B_ACTIONDELETE, 0);
xco= std_libbuttons(block, xco+1.5*XIC, B_ACTPIN, &G.saction->pin, B_ACTIONBROWSE, (ID*)G.saction->action, from, &(G.saction->actnr), B_ACTALONE, B_ACTLOCAL, B_ACTIONDELETE, 0, 0);
#ifdef __NLA_BAKE
/* Draw action baker */
@ -4021,7 +4049,7 @@ void ipo_buttons(void)
/* NAME ETC */
id= (ID *)get_ipo_to_edit(&from);
xco= std_libbuttons(block, (short)(xco+1.5*XIC), B_IPOPIN, &G.sipo->pin, B_IPOBROWSE, (ID*)G.sipo->ipo, from, &(G.sipo->menunr), B_IPOALONE, B_IPOLOCAL, B_IPODELETE, 0);
xco= std_libbuttons(block, (short)(xco+1.5*XIC), B_IPOPIN, &G.sipo->pin, B_IPOBROWSE, (ID*)G.sipo->ipo, from, &(G.sipo->menunr), B_IPOALONE, B_IPOLOCAL, B_IPODELETE, 0, B_KEEPDATA);
uiSetButLock(id && id->lib, "Can't edit library data");
@ -4366,12 +4394,12 @@ void buts_buttons(void)
if(G.buts->mainb==BUTS_LAMP) {
if(id) {
xco= std_libbuttons(block, xco, 0, NULL, B_LAMPBROWSE, id, (ID *)ob, &(G.buts->menunr), B_LAMPALONE, B_LAMPLOCAL, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_LAMPBROWSE, id, (ID *)ob, &(G.buts->menunr), B_LAMPALONE, B_LAMPLOCAL, 0, 0, 0);
}
}
else if(G.buts->mainb==BUTS_MAT) {
if(ob && (ob->type<OB_LAMP) && ob->type) {
xco= std_libbuttons(block, xco, 0, NULL, B_MATBROWSE, id, idfrom, &(G.buts->menunr), B_MATALONE, B_MATLOCAL, B_MATDELETE, B_AUTOMATNAME);
xco= std_libbuttons(block, xco, 0, NULL, B_MATBROWSE, id, idfrom, &(G.buts->menunr), B_MATALONE, B_MATLOCAL, B_MATDELETE, B_AUTOMATNAME, B_KEEPDATA);
}
/* COPY PASTE */
@ -4391,23 +4419,23 @@ void buts_buttons(void)
else if(G.buts->mainb==BUTS_TEX) {
if(G.buts->texfrom==0) {
if(idfrom) {
xco= std_libbuttons(block, xco, 0, NULL, B_TEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME);
xco= std_libbuttons(block, xco, 0, NULL, B_TEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME, B_KEEPDATA);
}
}
else if(G.buts->texfrom==1) {
if(idfrom) {
xco= std_libbuttons(block, xco, 0, NULL, B_WTEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME);
xco= std_libbuttons(block, xco, 0, NULL, B_WTEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME, B_KEEPDATA);
}
}
else if(G.buts->texfrom==2) {
if(idfrom) {
xco= std_libbuttons(block, xco, 0, NULL, B_LTEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME);
xco= std_libbuttons(block, xco, 0, NULL, B_LTEXBROWSE, id, idfrom, &(G.buts->texnr), B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME, B_KEEPDATA);
}
}
}
else if(G.buts->mainb==BUTS_ANIM) {
if(id) {
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0, 0);
if(G.scene->group) {
Group *group= G.scene->group;
@ -4419,18 +4447,18 @@ void buts_buttons(void)
}
else if(G.buts->mainb==BUTS_GAME) {
if(id) {
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0, 0);
}
}
else if(G.buts->mainb==BUTS_WORLD) {
xco= std_libbuttons(block, xco, 0, NULL, B_WORLDBROWSE, id, idfrom, &(G.buts->menunr), B_WORLDALONE, B_WORLDLOCAL, B_WORLDDELETE, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_WORLDBROWSE, id, idfrom, &(G.buts->menunr), B_WORLDALONE, B_WORLDLOCAL, B_WORLDDELETE, 0, B_KEEPDATA);
}
else if (G.buts->mainb==BUTS_SOUND) {
xco= std_libbuttons(block, xco, 0, NULL, B_SOUNDBROWSE2, id, idfrom, &(G.buts->texnr), 1, 0, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_SOUNDBROWSE2, id, idfrom, &(G.buts->texnr), 1, 0, 0, 0, 0);
}
else if(G.buts->mainb==BUTS_RENDER) {
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCE, (ID *)G.scene, 0, &(G.curscreen->scenenr), 1, 1, B_INFODELSCE, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_INFOSCE, (ID *)G.scene, 0, &(G.curscreen->scenenr), 1, 1, B_INFODELSCE, 0, B_KEEPDATA);
}
else if(G.buts->mainb==BUTS_EDIT) {
if(id) {
@ -4471,7 +4499,7 @@ void buts_buttons(void)
local= B_LATTLOCAL;
}
xco= std_libbuttons(block, xco, 0, NULL, browse, id, idfrom, &(G.buts->menunr), alone, local, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, browse, id, idfrom, &(G.buts->menunr), alone, local, 0, 0, B_KEEPDATA);
xco+= XIC;
}
@ -4485,7 +4513,7 @@ void buts_buttons(void)
if(id) {
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0);
xco= std_libbuttons(block, xco, 0, NULL, 0, id, idfrom, &(G.buts->menunr), B_OBALONE, B_OBLOCAL, 0, 0, 0);
get_constraint_client(NULL, &type, &data);
if (data && type==TARGET_BONE){
@ -4854,7 +4882,7 @@ void text_buttons(void)
/* STD TEXT BUTTONS */
if (!BPY_spacetext_is_pywin(st)) {
xco+= 2*XIC;
xco= std_libbuttons(block, xco, 0, NULL, B_TEXTBROWSE, (ID*)st->text, 0, &(st->menunr), 0, 0, B_TEXTDELETE, 0);
xco= std_libbuttons(block, xco, 0, NULL, B_TEXTBROWSE, (ID*)st->text, 0, &(st->menunr), 0, 0, B_TEXTDELETE, 0, 0);
/*
if (st->text) {
@ -5102,7 +5130,7 @@ void sound_buttons(void)
else uiDefIconBut(block, BUT,B_FULL, ICON_FULLSCREEN, xco+=XIC,0,XIC,YIC, 0, 0, 0, 0, 0, "Make fullscreen window (CTRL+Down arrow)");
uiDefIconBut(block, BUT, B_SOUNDHOME, ICON_HOME, xco+=XIC,0,XIC,YIC, 0, 0, 0, 0, 0, "Home (HOMEKEY)");
xco= std_libbuttons(block, xco+40, 0, NULL, B_SOUNDBROWSE, (ID *)G.ssound->sound, 0, &(G.ssound->sndnr), 1, 0, 0, 0);
xco= std_libbuttons(block, xco+40, 0, NULL, B_SOUNDBROWSE, (ID *)G.ssound->sound, 0, &(G.ssound->sndnr), 1, 0, 0, 0, 0);
if(G.ssound->sound) {
bSound *sound= G.ssound->sound;
@ -5428,7 +5456,7 @@ void image_buttons(void)
uiDefIconButS(block, TOG|BIT|0, B_BE_SQUARE, ICON_KEEPRECT, xco+=XIC,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Keep UV polygons square while editing");
uiDefIconButS(block, ICONTOG|BIT|2, B_CLIP_UV, ICON_CLIPUV_DEHLT,xco+=XIC,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Clip UV with image size");
xco= std_libbuttons(block, xco+40, 0, NULL, B_SIMABROWSE, (ID *)G.sima->image, 0, &(G.sima->imanr), 0, 0, B_IMAGEDELETE, 0);
xco= std_libbuttons(block, xco+40, 0, NULL, B_SIMABROWSE, (ID *)G.sima->image, 0, &(G.sima->imanr), 0, 0, B_IMAGEDELETE, 0, 0);
if (G.sima->image) {
if (G.sima->image->packedfile) {