Revision: 37376 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37376 Author: blendix Date: 2011-06-10 18:17:34 +0000 (Fri, 10 Jun 2011) Log Message: ----------- Cycles: button to switch to texture tab from e.g. modifiers and field, with the relevant texture selected, and some cosmetic tweaks to the menu.
Modified Paths: -------------- branches/cycles/release/scripts/startup/bl_ui/properties_data_modifier.py branches/cycles/release/scripts/startup/bl_ui/properties_physics_field.py branches/cycles/source/blender/editors/include/UI_interface.h branches/cycles/source/blender/editors/interface/interface_templates.c branches/cycles/source/blender/editors/space_buttons/buttons_texture.c Modified: branches/cycles/release/scripts/startup/bl_ui/properties_data_modifier.py =================================================================== --- branches/cycles/release/scripts/startup/bl_ui/properties_data_modifier.py 2011-06-10 17:17:25 UTC (rev 37375) +++ branches/cycles/release/scripts/startup/bl_ui/properties_data_modifier.py 2011-06-10 18:17:34 UTC (rev 37376) @@ -666,7 +666,7 @@ split = layout.split() col = split.column() col.label(text="Texture:") - col.prop(md, "texture", text="") + col.template_ID(md, "texture", new="texture.new") col = split.column() col.label(text="Texture Coordinates:") Modified: branches/cycles/release/scripts/startup/bl_ui/properties_physics_field.py =================================================================== --- branches/cycles/release/scripts/startup/bl_ui/properties_physics_field.py 2011-06-10 17:17:25 UTC (rev 37375) +++ branches/cycles/release/scripts/startup/bl_ui/properties_physics_field.py 2011-06-10 18:17:34 UTC (rev 37376) @@ -61,6 +61,10 @@ split = layout.split(percentage=0.2) split.label(text="Shape:") split.prop(field, "shape", text="") + elif field.type == 'TEXTURE': + split = layout.split(percentage=0.2) + split.label(text="Texture:") + split.row().template_ID(field, "texture", new="texture.new") split = layout.split() @@ -103,7 +107,6 @@ elif field.type == 'TEXTURE': col = split.column() col.prop(field, "strength") - col.prop(field, "texture", text="") col.prop(field, "texture_mode", text="") col.prop(field, "texture_nabla") Modified: branches/cycles/source/blender/editors/include/UI_interface.h =================================================================== --- branches/cycles/source/blender/editors/include/UI_interface.h 2011-06-10 17:17:25 UTC (rev 37375) +++ branches/cycles/source/blender/editors/include/UI_interface.h 2011-06-10 18:17:34 UTC (rev 37376) @@ -730,6 +730,7 @@ void uiTemplateNodeLink(uiLayout *layout, struct ID *id, struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *input); void uiTemplateNodeView(uiLayout *layout, struct bContext *C, struct ID *id, struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *input); void uiTemplateTextureUser(uiLayout *layout, struct bContext *C); +void uiTemplateTextureShow(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop); /* items */ void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname); Modified: branches/cycles/source/blender/editors/interface/interface_templates.c =================================================================== --- branches/cycles/source/blender/editors/interface/interface_templates.c 2011-06-10 17:17:25 UTC (rev 37375) +++ branches/cycles/source/blender/editors/interface/interface_templates.c 2011-06-10 18:17:34 UTC (rev 37376) @@ -325,7 +325,7 @@ return "Browse ID data to be linked"; } -static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, const char *newop, const char *openop, const char *unlinkop) +static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, short idcode, int flag, const char *newop, const char *openop, const char *unlinkop) { uiBut *but; uiBlock *block; @@ -470,6 +470,9 @@ if((idfrom && idfrom->lib) || !editable) uiButSetFlag(but, UI_BUT_DISABLED); } + + if(idcode == ID_TE) + uiTemplateTextureShow(layout, C, &template->ptr, template->prop); uiBlockEndAlign(block); } @@ -479,6 +482,7 @@ TemplateID *template; PropertyRNA *prop; StructRNA *type; + short idcode; prop= RNA_struct_find_property(ptr, propname); @@ -499,14 +503,15 @@ flag |= UI_ID_OPEN; type= RNA_property_pointer_type(ptr, prop); - template->idlb= which_libbase(CTX_data_main(C), RNA_type_to_ID_code(type)); + idcode= RNA_type_to_ID_code(type); + template->idlb= which_libbase(CTX_data_main(C), idcode); /* create UI elements for this template * - template_ID makes a copy of the template data and assigns it to the relevant buttons */ if(template->idlb) { uiLayoutRow(layout, 1); - template_ID(C, layout, template, type, flag, newop, openop, unlinkop); + template_ID(C, layout, template, type, idcode, flag, newop, openop, unlinkop); } MEM_freeN(template); Modified: branches/cycles/source/blender/editors/space_buttons/buttons_texture.c =================================================================== --- branches/cycles/source/blender/editors/space_buttons/buttons_texture.c 2011-06-10 17:17:25 UTC (rev 37375) +++ branches/cycles/source/blender/editors/space_buttons/buttons_texture.c 2011-06-10 18:17:34 UTC (rev 37376) @@ -45,6 +45,7 @@ #include "DNA_material_types.h" #include "DNA_node_types.h" #include "DNA_object_types.h" +#include "DNA_object_force.h" #include "DNA_particle_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -56,12 +57,15 @@ #include "BKE_modifier.h" #include "BKE_node.h" #include "BKE_paint.h" +#include "BKE_particle.h" #include "RNA_access.h" #include "UI_interface.h" #include "UI_resources.h" +#include "ED_screen.h" + #include "../interface/interface_intern.h" #include "buttons_intern.h" // own include @@ -99,7 +103,8 @@ RNA_pointer_create(&ntree->id, &RNA_Node, node, &ptr); prop = RNA_struct_find_property(&ptr, "texture"); - buttons_texture_user_add(users, id, ptr, prop, category, ICON_NODE, node->name); + buttons_texture_user_add(users, id, ptr, prop, + category, RNA_struct_ui_icon(ptr.type), node->name); } else if(node->type == NODE_GROUP && node->id) { buttons_texture_users_find_nodetree(users, id, (bNodeTree*)node->id, category); @@ -117,7 +122,8 @@ RNA_pointer_create(&ob->id, &RNA_Modifier, md, &ptr); prop = RNA_struct_find_property(&ptr, propname); - buttons_texture_user_add(users, &ob->id, ptr, prop, "Modifiers", ICON_MODIFIER, md->name); + buttons_texture_user_add(users, &ob->id, ptr, prop, + "Modifiers", RNA_struct_ui_icon(ptr.type), md->name); } static void buttons_texture_users_from_context(ListBase *users, const bContext *C, SpaceButs *sbuts) @@ -171,7 +177,7 @@ buttons_texture_users_find_nodetree(users, &wrld->id, wrld->nodetree, "World"); if(ob) { - ParticleSystem *psys; + ParticleSystem *psys= psys_get_current(ob); MTex *mtex; int a; @@ -179,8 +185,8 @@ modifiers_foreachTexLink(ob, buttons_texture_modifier_foreach, users); /* particle systems */ - /* todo: these slots are not in the UI */ - for(psys=ob->particlesystem.first; psys; psys=psys->next) { + if(psys) { + /* todo: these slots are not in the UI */ for(a=0; a<MAX_MTEX; a++) { mtex = psys->part->mtex[a]; @@ -191,10 +197,23 @@ RNA_pointer_create(&psys->part->id, &RNA_ParticleSettingsTextureSlot, mtex, &ptr); prop = RNA_struct_find_property(&ptr, "texture"); - buttons_texture_user_add(users, &psys->part->id, ptr, prop, "Particles", ICON_PARTICLES, psys->name); + buttons_texture_user_add(users, &psys->part->id, ptr, prop, + "Particles", RNA_struct_ui_icon(&RNA_ParticleSettings), psys->name); } } } + + /* field */ + if(ob->pd && ob->pd->forcefield == PFIELD_TEXTURE) { + PointerRNA ptr; + PropertyRNA *prop; + + RNA_pointer_create(&ob->id, &RNA_FieldSettings, ob->pd, &ptr); + prop = RNA_struct_find_property(&ptr, "texture"); + + buttons_texture_user_add(users, &ob->id, ptr, prop, + "Fields", ICON_FORCE_TEXTURE, "Texture Field"); + } } /* brush */ @@ -203,9 +222,10 @@ PropertyRNA *prop; RNA_pointer_create(&brush->id, &RNA_BrushTextureSlot, &brush->mtex, &ptr); - prop = RNA_struct_find_property(&ptr, "texture"); + prop= RNA_struct_find_property(&ptr, "texture"); - buttons_texture_user_add(users, &brush->id, ptr, prop, "Brush", ICON_BRUSH_DATA, brush->id.name+2); + buttons_texture_user_add(users, &brush->id, ptr, prop, + "Brush", ICON_BRUSH_DATA, brush->id.name+2); } } @@ -335,3 +355,59 @@ but->flag &= ~UI_ICON_SUBMENU; } +/************************* Texture Show **************************/ + +static void template_texture_show(bContext *C, void *data_p, void *prop_p) +{ + SpaceButs *sbuts = CTX_wm_space_buts(C); + ButsContextTexture *ct= (sbuts)? sbuts->texuser: NULL; + ButsTextureUser *user; + + if(!ct) + return; + + for(user=ct->users.first; user; user=user->next) + if(user->ptr.data == data_p && user->prop == prop_p) + break; + + if(user) { + /* select texture */ + template_texture_select(C, user, NULL); + + /* change context */ + sbuts->mainb= BCONTEXT_TEXTURE; + sbuts->mainbuser= sbuts->mainb; + sbuts->preview= 1; + + /* redraw editor */ + ED_area_tag_redraw(CTX_wm_area(C)); + } +} + +void uiTemplateTextureShow(uiLayout *layout, bContext *C, PointerRNA *ptr, PropertyRNA *prop) +{ + /* button to quickly show texture in texture tab */ + SpaceButs *sbuts = CTX_wm_space_buts(C); + ButsContextTexture *ct= (sbuts)? sbuts->texuser: NULL; + ButsTextureUser *user; + + /* only show button in other tabs in properties editor */ + if(!ct || sbuts->mainb == BCONTEXT_TEXTURE) + return; + + /* find corresponding texture user */ + for(user=ct->users.first; user; user=user->next) + if(user->ptr.data == ptr->data && user->prop == prop) + break; + + /* draw button */ + if(user) { + uiBlock *block = uiLayoutGetBlock(layout); + uiBut *but; + + but= uiDefIconBut(block, BUT, 0, ICON_BUTS, 0, 0, UI_UNIT_X, UI_UNIT_Y, + NULL, 0.0, 0.0, 0.0, 0.0, "Show texture in texture tab"); + uiButSetFunc(but, template_texture_show, user->ptr.data, user->prop); + } +} + _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs