Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2009-12-29 13:25:14 +0300
committerJoshua Leung <aligorith@gmail.com>2009-12-29 13:25:14 +0300
commit8db1349c2cf860dd46303505c7dae78855157c99 (patch)
tree7ce13c8cdff5ffb8b7ff0b146666e54f4b606f8e /source/blender/editors/interface/interface_templates.c
parenteaa653b7595c3e2b16837e50542d4b2fd25308ae (diff)
Modifier Drawing Tweaks:
* Reorganised the (template) drawing code for modifiers, removing some old/commented out code, and grouping related sets of info to draw * Separated the render/realtime/editmode toggles into a separate row below the modifier name so that the layout is less compressed with narrow properties windows (i.e. on the default setup).
Diffstat (limited to 'source/blender/editors/interface/interface_templates.c')
-rw-r--r--source/blender/editors/interface/interface_templates.c163
1 files changed, 81 insertions, 82 deletions
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index b009581703f..7bad3ee0ecd 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -610,9 +610,9 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
PointerRNA ptr;
uiBut *but;
uiBlock *block;
- uiLayout *column, *row, *result= NULL;
- int isVirtual = md->mode & eModifierMode_Virtual;
- // XXX short color = md->error?TH_REDALERT:TH_BUT_NEUTRAL;
+ uiLayout *box, *column, *row;
+ uiLayout *result= NULL;
+ int isVirtual = (md->mode & eModifierMode_Virtual);
char str[128];
/* create RNA pointer */
@@ -621,101 +621,100 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
column= uiLayoutColumn(layout, 1);
uiLayoutSetContextPointer(column, "modifier", &ptr);
- /* rounded header */
- /* XXX uiBlockSetCol(block, color); */
- /* roundbox 4 free variables: corner-rounding, nop, roundbox type, shade */
-
- row= uiLayoutRow(uiLayoutBox(column), 0);
+ /* rounded header ------------------------------------------------------------------- */
+ box= uiLayoutBox(column);
+
+ row= uiLayoutRow(box, 0);
uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND);
-
block= uiLayoutGetBlock(row);
-
- //uiDefBut(block, ROUNDBOX, 0, "", x-10, y-4, width, 25, NULL, 7.0, 0.0,
- // (!isVirtual && (md->mode & eModifierMode_Expanded))?3:15, 20, "");
- /* XXX uiBlockSetCol(block, TH_AUTO); */
-
- /* open/close icon */
- if(!isVirtual) {
- uiBlockSetEmboss(block, UI_EMBOSSN);
- uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, 0, ICON_TRIA_RIGHT, 0, 0, UI_UNIT_X, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
- }
-
- /* modifier-type icon */
- uiItemL(row, "", RNA_struct_ui_icon(ptr.type));
-
- uiBlockSetEmboss(block, UI_EMBOSS);
- if(isVirtual) {
- /* virtual modifier */
+ if (isVirtual) {
+ /* VIRTUAL MODIFIER */
+ // XXX this is not used now, since these cannot be accessed via RNA
sprintf(str, "%s parent deform", md->name);
uiDefBut(block, LABEL, 0, str, 0, 0, 185, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Modifier name");
-
+
but = uiDefBut(block, BUT, 0, "Make Real", 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Convert virtual modifier to a real modifier");
uiButSetFunc(but, modifiers_convertToReal, ob, md);
}
else {
- /* real modifier */
- uiBlockBeginAlign(block);
- uiItemR(row, "", 0, &ptr, "name", 0);
-
- /* Softbody not allowed in this situation, enforce! */
- if(((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && (md->type!=eModifierType_Surface)) {
- uiItemR(row, "", ICON_SCENE, &ptr, "render", 0);
- uiItemR(row, "", ICON_RESTRICT_VIEW_OFF, &ptr, "realtime", 0);
-
- if(mti->flags & eModifierTypeFlag_SupportsEditmode)
- uiItemR(row, "", ICON_EDITMODE_HLT, &ptr, "editmode", 0);
- }
+ /* REAL MODIFIER */
+ uiLayout *subrow, *col2;
-
- /* XXX uiBlockSetEmboss(block, UI_EMBOSSR); */
-
- if(ob->type==OB_MESH && modifier_couldBeCage(md) && index<=lastCageIndex) {
- /* XXX uiBlockSetCol(block, color); */
- but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, 16, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
- if(index < cageIndex)
- uiButSetFlag(but, UI_BUT_DISABLED);
- uiButSetFunc(but, modifiers_setOnCage, ob, md);
- uiBlockEndAlign(block);
- /* XXX uiBlockSetCol(block, TH_AUTO); */
- }
- }
-
- /* up/down/delete */
- if(!isVirtual) {
- /* XXX uiBlockSetCol(block, TH_BUT_ACTION); */
+ /* Open/Close ................................. */
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+ uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, 0, ICON_TRIA_RIGHT, 0, 0, UI_UNIT_X, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
+
+ /* modifier-type icon */
+ uiItemL(row, "", RNA_struct_ui_icon(ptr.type));
+ uiBlockSetEmboss(block, UI_EMBOSS);
+
+ /* 'Middle Column' ............................
+ * - first row is the name of the modifier
+ * - second row is the visibility settings, since the layouts were not wide enough to show all
+ */
+ col2= uiLayoutColumn(row, 0);
+ /* First Row */
+ subrow= uiLayoutRow(col2, 0);
+ /* modifier name */
+ uiItemR(subrow, "", 0, &ptr, "name", 0);
+
+ /* Second Row */
+ subrow= uiLayoutRow(col2, 1);
+ uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_EXPAND);
+ block= uiLayoutGetBlock(subrow);
+ /* Softbody not allowed in this situation, enforce! */
+ if ( ((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect))
+ && (md->type!=eModifierType_Surface) )
+ {
+ uiItemR(subrow, "", ICON_SCENE, &ptr, "render", 0);
+ uiItemR(subrow, "", ICON_RESTRICT_VIEW_OFF, &ptr, "realtime", 0);
+
+ if (mti->flags & eModifierTypeFlag_SupportsEditmode)
+ uiItemR(subrow, "", ICON_EDITMODE_HLT, &ptr, "editmode", 0);
+ }
+
+ if ((ob->type==OB_MESH) && modifier_couldBeCage(md) && (index <= lastCageIndex))
+ {
+ but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, 16, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
+ if (index < cageIndex)
+ uiButSetFlag(but, UI_BUT_DISABLED);
+ uiButSetFunc(but, modifiers_setOnCage, ob, md);
+ }
+
+ /* Up/Down + Delete ........................... */
+ block= uiLayoutGetBlock(row);
uiBlockBeginAlign(block);
- uiItemO(row, "", ICON_TRIA_UP, "OBJECT_OT_modifier_move_up");
- uiItemO(row, "", ICON_TRIA_DOWN, "OBJECT_OT_modifier_move_down");
+ uiItemO(row, "", ICON_TRIA_UP, "OBJECT_OT_modifier_move_up");
+ uiItemO(row, "", ICON_TRIA_DOWN, "OBJECT_OT_modifier_move_down");
uiBlockEndAlign(block);
uiBlockSetEmboss(block, UI_EMBOSSN);
-
- if(modifier_can_delete(md))
+
+ if (modifier_can_delete(md))
uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove");
-
- /* XXX uiBlockSetCol(block, TH_AUTO); */
+
+ uiBlockSetEmboss(block, UI_EMBOSS);
}
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- if(!isVirtual && (md->mode & eModifierMode_Expanded)) {
+
+ /* modifier settings (under the header) --------------------------------------------------- */
+ if (!isVirtual && (md->mode & eModifierMode_Expanded)) {
/* apply/convert/copy */
- uiLayout *box;
-
box= uiLayoutBox(column);
row= uiLayoutRow(box, 0);
-
- if(!isVirtual && (md->type!=eModifierType_Collision) && (md->type!=eModifierType_Surface)) {
+
+ if (!ELEM(md->type, eModifierType_Collision, eModifierType_Surface)) {
/* only here obdata, the rest of modifiers is ob level */
uiBlockSetButLock(block, object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE);
-
- if(md->type==eModifierType_ParticleSystem) {
+
+ if (md->type==eModifierType_ParticleSystem) {
ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys;
-
- if(!(ob->mode & OB_MODE_PARTICLE_EDIT))
+
+ if (!(ob->mode & OB_MODE_PARTICLE_EDIT)) {
if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert");
+ }
}
else {
uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA);
@@ -726,23 +725,23 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
uiBlockClearButLock(block);
uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
-
- if(!ELEM4(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth))
+
+ if (!ELEM4(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth))
uiItemO(row, "Copy", 0, "OBJECT_OT_modifier_copy");
}
-
+
+ /* result is the layout block inside the box, that we return so that modifier settings can be drawn */
result= uiLayoutColumn(box, 0);
block= uiLayoutAbsoluteBlock(box);
}
-
+
+ /* error messages */
if(md->error) {
- row = uiLayoutRow(uiLayoutBox(column), 0);
-
- /* XXX uiBlockSetCol(block, color); */
+ box = uiLayoutBox(column);
+ row = uiLayoutRow(box, 0);
uiItemL(row, md->error, ICON_ERROR);
- /* XXX uiBlockSetCol(block, TH_AUTO); */
}
-
+
return result;
}