- added copy button to modifier stack UI

- add warning about applying decimation
 - some more UI tweaks (rounding of modifier pane, make toggles only in header,
   add object name to try to convey that modifier stack is tied to OB)
 - bug fix, modifier recalc wasn't done on make link
 - bug fix, uiBlockEndAlign didn't clear align flags with certain themes,
   pretty sure this wasn't intended. (TON: PLEASE CHECK)
This commit is contained in:
2005-08-06 18:51:58 +00:00
parent 66dc186fb6
commit 28a1f55ff6
4 changed files with 69 additions and 36 deletions

View File

@@ -645,6 +645,11 @@ static void modifiers_applyModifier(void *obv, void *mdv)
return;
}
if (md->type==eModifierType_Decimate && (me->tface || me->mcol)) {
if (!okee("Applying decimate modifier will remove mesh UVs and vertex colors, continue?"))
return;
}
if (md!=ob->modifiers.first) {
if (!okee("Modifier is not first, continue with apply?"))
return;
@@ -671,17 +676,28 @@ static void modifiers_applyModifier(void *obv, void *mdv)
modifier_free(md);
}
static void modifiers_copyModifier(void *ob_v, void *md_v)
{
Object *ob = ob_v;
ModifierData *md = md_v;
ModifierData *nmd = modifier_new(md->type);
modifier_copyData(md, nmd);
BLI_insertlink(&ob->modifiers, md, nmd);
}
static void modifiers_setOnCage(void *ob_v, void *md_v)
{
Object *ob = ob_v;
ModifierData *md;
for (md=ob->modifiers.first; md; md=md->next) {
for (md=ob->modifiers.first; md; md=md->next)
if (md!=md_v)
md->mode &= ~eModifierMode_OnCage;
}
md = md_v;
md->mode |= eModifierMode_OnCage;
md->mode ^= eModifierMode_OnCage;
}
@@ -710,18 +726,18 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
short height, width = 295;
uiBlockSetEmboss(block, UI_EMBOSSN);
uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, B_MODIFIER_REDRAW, VICON_DISCLOSURE_TRI_RIGHT, x, y, 20, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, B_MODIFIER_REDRAW, VICON_DISCLOSURE_TRI_RIGHT, x-10, y-2, 20, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
BIF_ThemeColor(color);
uiBlockSetEmboss(block, UI_EMBOSS);
/* rounded header */
BIF_ThemeColorShade(color, -20);
uiSetRoundBox(3);
uiSetRoundBox((md->mode&eModifierMode_Expanded)?3:15);
uiRoundBox(x+4+10, y-18, x+width+10, y+6, 5.0);
BIF_ThemeColor(color);
uiDefBut(block, LABEL, B_NOP, mti->name, x+15, y-1, 100, 19, NULL, 0.0, 0.0, 0.0, 0.0, "");
uiDefBut(block, LABEL, B_NOP, mti->name, x+5, y-1, 100, 19, NULL, 0.0, 0.0, 0.0, 0.0, "");
uiBlockSetEmboss(block, UI_EMBOSSR);
@@ -740,7 +756,7 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
icon = ICON_BLANK1;
}
uiBlockSetCol(block, color);
but = uiDefIconBut(block, BUT, B_MODIFIER_RECALC, icon, x+width-120, y, 18, 18, NULL, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
but = uiDefIconBut(block, BUT, B_MODIFIER_RECALC, icon, x+width-120, y, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
uiButSetFunc(but, modifiers_setOnCage, ob, md);
uiBlockSetCol(block, TH_AUTO);
}
@@ -761,7 +777,7 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
BIF_ThemeColor(color);
uiBlockSetEmboss(block, UI_EMBOSS);
if (!(md->mode&eModifierMode_Expanded)) {
uiBlockBeginAlign(block);
uiDefIconButBitI(block, TOG, eModifierMode_Render, B_MODIFIER_RECALC, ICON_SCENE, x+width-120-90, y, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
uiDefIconButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, VICON_VIEW3D, x+width-120-90+20, y, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
@@ -770,6 +786,7 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
}
uiBlockEndAlign(block);
if (!(md->mode&eModifierMode_Expanded)) {
y -= 18;
} else {
char str[128];
@@ -795,19 +812,23 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
}
BIF_ThemeColor(color);
glRects(x+3+10, y-height, x+width+10, y);
uiSetRoundBox(12);
uiRoundBox(x+4+10, y-height, x+width+10, y, 5.0);
uiBlockBeginAlign(block);
but = uiDefBut(block, BUT, B_MODIFIER_RECALC, "Apply", lx,(cy-=19),60,19, 0, 0, 0, 0, 0, "Apply the currnt modifier and remove from the stack");
but = uiDefBut(block, BUT, B_MODIFIER_RECALC, "Apply", lx,(cy-=19),60,19, 0, 0, 0, 0, 0, "Apply the current modifier and remove from the stack");
uiButSetFunc(but, modifiers_applyModifier, ob, md);
uiDefButBitI(block, TOG, eModifierMode_Render, B_MODIFIER_RECALC, "Render", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
uiDefButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, "3D View", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
if (mti->flags&eModifierTypeFlag_SupportsEditmode) {
uiDefButBitI(block, TOG, eModifierMode_Editmode, B_MODIFIER_RECALC, "Editmode", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode");
}
but = uiDefBut(block, BUT, B_MODIFIER_RECALC, "Copy", lx,(cy-=19),60,19, 0, 0, 0, 0, 0, "Duplicate the current modifier at the same position in the stack");
uiButSetFunc(but, modifiers_copyModifier, ob, md);
uiBlockEndAlign(block);
// uiDefButBitI(block, TOG, eModifierMode_Render, B_MODIFIER_RECALC, "Render", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
// uiDefButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, "3D View", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
// if (mti->flags&eModifierTypeFlag_SupportsEditmode) {
// uiDefButBitI(block, TOG, eModifierMode_Editmode, B_MODIFIER_RECALC, "Editmode", lx,(cy-=19),60,19,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode");
// }
// uiBlockEndAlign(block);
lx = x;
cy = y + 10 - 1;
uiBlockBeginAlign(block);
@@ -874,7 +895,8 @@ static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco
y -= 20;
BIF_ThemeColorShade(color, 40);
glRects(x+3+10, y, x+width+10, y+20);
uiSetRoundBox(15);
uiRoundBox(x+4+10, y, x+width+10, y+20, 5.0);
sprintf(str, "Modifier Error: %s", md->error);
uiDefBut(block, LABEL, B_NOP, str, x+15, y+15, width-35, 19, NULL, 0.0, 0.0, 0.0, 0.0, "");
@@ -890,6 +912,7 @@ static void editing_panel_modifiers(Object *ob)
{
ModifierData *md;
uiBlock *block;
char str[64];
int xco, yco, i, lastCageIndex, cageIndex = modifiers_getCageIndex(&ob->modifiers, &lastCageIndex);
// XXX ofsx should probably be changed in other panels here
@@ -900,6 +923,9 @@ static void editing_panel_modifiers(Object *ob)
uiDefBlockBut(block, modifiers_add_menu, ob, "Add Modifier", 0, 190, 130, 20, "Add a new modifier");
sprintf(str, "To: %s", ob->id.name+2);
uiDefBut(block, LABEL, 1, str, 140, 190, 140, 20, NULL, 0.0, 0.0, 0, 0, "Object whose modifier stack is being edited");
xco = 0;
yco = 160;

View File

@@ -2924,6 +2924,8 @@ void make_links(short event)
/* if amount of material indices changed: */
test_object_materials(obt->data);
obt->recalc |= OB_RECALC_DATA;
}
}
else if(event==4) { /* ob ipo */
@@ -2993,6 +2995,8 @@ void make_links(short event)
allqueue(REDRAWOOPS, 0);
allqueue(REDRAWBUTSHEAD, 0);
DAG_scene_flush_update(G.scene);
BIF_undo_push("Create links");
}

View File

@@ -4337,7 +4337,10 @@ void uiBlockEndAlign(uiBlock *block)
uiBut *prev, *but=NULL, *next;
int flag= 0, cols=0, rows=0;
if ( !((BIF_GetThemeValue(TH_BUT_DRAWTYPE) == 1) || (BIF_GetThemeValue(TH_BUT_DRAWTYPE) == 2))) return;
if ( !((BIF_GetThemeValue(TH_BUT_DRAWTYPE) == 1) || (BIF_GetThemeValue(TH_BUT_DRAWTYPE) == 2))) {
block->flag &= ~UI_BUT_ALIGN; // all 4 flags
return;
}
/* auto align:
- go back to first button of align start (ALIGN_DOWN)

View File

@@ -450,9 +450,9 @@ static void vicon_editmode_hlt_draw(int x, int y, int w, int h, float alpha)
{
int pts[3][2];
viconutil_set_point(pts[0], x+w/2, y+h-3);
viconutil_set_point(pts[1], x+3, y+3);
viconutil_set_point(pts[2], x+w-3, y+3);
viconutil_set_point(pts[0], x+w/2, y+h-2);
viconutil_set_point(pts[1], x+3, y+4);
viconutil_set_point(pts[2], x+w-3, y+4);
glColor4f(0.5, 0.5, 0.5, alpha);
viconutil_draw_tri(pts);
@@ -468,9 +468,9 @@ static void vicon_editmode_dehlt_draw(int x, int y, int w, int h, float alpha)
{
int pts[3][2];
viconutil_set_point(pts[0], x+w/2, y+h-3);
viconutil_set_point(pts[1], x+3, y+3);
viconutil_set_point(pts[2], x+w-3, y+3);
viconutil_set_point(pts[0], x+w/2, y+h-2);
viconutil_set_point(pts[1], x+3, y+4);
viconutil_set_point(pts[2], x+w-3, y+4);
glColor4f(0.0, 0.0, 0.0, 1);
viconutil_draw_lineloop_smooth(pts, 3);