Revision: 23285
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23285
Author:   blendix
Date:     2009-09-16 20:47:42 +0200 (Wed, 16 Sep 2009)

Log Message:
-----------
UI
* Fix problem with curve mapping / color ramps not updating
  things like previews propertly. Now it uses the RNA update
  of the pointer from the material/texture/.. so each of those
  can define their own update, but still share the RNA struct.
* Code for these templates is now in interface_templates.c
* Fix exception for "axis" property, now it always shows normal
  widget with the PROP_DIRECTION subtype.
* Remove context from uiBlockLayoutResolve, no longer needed.

Modified Paths:
--------------
    trunk/blender/release/ui/buttons_data_lamp.py
    trunk/blender/release/ui/buttons_material.py
    trunk/blender/release/ui/buttons_scene.py
    trunk/blender/release/ui/buttons_texture.py
    trunk/blender/release/ui/space_userpref.py
    trunk/blender/release/ui/space_view3d_toolbar.py
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/interface/interface_regions.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/space_action/action_header.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: trunk/blender/release/ui/buttons_data_lamp.py
===================================================================
--- trunk/blender/release/ui/buttons_data_lamp.py       2009-09-16 18:32:10 UTC 
(rev 23284)
+++ trunk/blender/release/ui/buttons_data_lamp.py       2009-09-16 18:47:42 UTC 
(rev 23285)
@@ -301,7 +301,7 @@
        def draw(self, context):
                lamp = context.lamp
 
-               self.layout.template_curve_mapping(lamp.falloff_curve)
+               self.layout.template_curve_mapping(lamp, "falloff_curve")
 
 bpy.types.register(DATA_PT_context_lamp)
 bpy.types.register(DATA_PT_preview)

Modified: trunk/blender/release/ui/buttons_material.py
===================================================================
--- trunk/blender/release/ui/buttons_material.py        2009-09-16 18:32:10 UTC 
(rev 23284)
+++ trunk/blender/release/ui/buttons_material.py        2009-09-16 18:47:42 UTC 
(rev 23285)
@@ -28,7 +28,7 @@
                # this manages materials for all engine types
                
                engine = context.scene.render_data.engine
-               return (context.object) and (engine in self.COMPAT_ENGINES)
+               return (context.material or context.object) and (engine in 
self.COMPAT_ENGINES)
 
        def draw(self, context):
                layout = self.layout
@@ -282,7 +282,7 @@
                        
                if mat.use_diffuse_ramp:
                        layout.itemS()
-                       layout.template_color_ramp(mat.diffuse_ramp, 
expand=True)
+                       layout.template_color_ramp(mat, "diffuse_ramp", 
expand=True)
                        layout.itemS()
                        row = layout.row()
                        split = row.split(percentage=0.3)
@@ -334,7 +334,7 @@
                
                if mat.use_specular_ramp:
                        layout.itemS()
-                       layout.template_color_ramp(mat.specular_ramp, 
expand=True)
+                       layout.template_color_ramp(mat, "specular_ramp", 
expand=True)
                        layout.itemS()
                        row = layout.row()
                        split = row.split(percentage=0.3)

Modified: trunk/blender/release/ui/buttons_scene.py
===================================================================
--- trunk/blender/release/ui/buttons_scene.py   2009-09-16 18:32:10 UTC (rev 
23284)
+++ trunk/blender/release/ui/buttons_scene.py   2009-09-16 18:47:42 UTC (rev 
23285)
@@ -240,7 +240,8 @@
                        split = layout.split()
                        
                        col = split.column()
-                       col.itemR(rd, "exr_codec")
+                       col.itemL(text="Codec:")
+                       col.itemR(rd, "exr_codec", text="")
 
                        subsplit = split.split()
                        col = subsplit.column()

Modified: trunk/blender/release/ui/buttons_texture.py
===================================================================
--- trunk/blender/release/ui/buttons_texture.py 2009-09-16 18:32:10 UTC (rev 
23284)
+++ trunk/blender/release/ui/buttons_texture.py 2009-09-16 18:47:42 UTC (rev 
23285)
@@ -96,7 +96,7 @@
 
                layout.itemR(tex, "use_color_ramp", text="Ramp")
                if tex.use_color_ramp:
-                       layout.template_color_ramp(tex.color_ramp, expand=True)
+                       layout.template_color_ramp(tex, "color_ramp", 
expand=True)
 
                split = layout.split()
                
@@ -410,10 +410,10 @@
        
        def draw(self, context):
                layout = self.layout
-               
+
                tex = context.texture
 
-               layout.template_texture_image(tex)
+               layout.template_image(tex, "image", tex.image_user)
 
 class TEXTURE_PT_image_sampling(TextureTypePanel):
        __label__ = "Image Sampling"
@@ -689,7 +689,7 @@
                if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'):
                        col.itemR(pd, "speed_scale")
                if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'):
-                       layout.template_color_ramp(pd.color_ramp, expand=True)
+                       layout.template_color_ramp(pd, "color_ramp", 
expand=True)
 
                col = split.column()
                col.itemL()

Modified: trunk/blender/release/ui/space_userpref.py
===================================================================
--- trunk/blender/release/ui/space_userpref.py  2009-09-16 18:32:10 UTC (rev 
23284)
+++ trunk/blender/release/ui/space_userpref.py  2009-09-16 18:47:42 UTC (rev 
23285)
@@ -264,7 +264,7 @@
                
                sub2 = sub1.column()
                sub2.active = system.use_weight_color_range
-               sub2.template_color_ramp(system.weight_color_range, expand=True)
+               sub2.template_color_ramp(system, "weight_color_range", 
expand=True)
                sub1.itemS()
                sub1.itemS()
                

Modified: trunk/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/ui/space_view3d_toolbar.py    2009-09-16 18:32:10 UTC 
(rev 23284)
+++ trunk/blender/release/ui/space_view3d_toolbar.py    2009-09-16 18:47:42 UTC 
(rev 23285)
@@ -422,7 +422,7 @@
                        row.itemR(brush, "strength", slider=True)
                        row.itemR(brush, "strength_pressure", toggle=True, 
text="")
                        
-                       col.itemR(brush, "blend")
+                       col.itemR(brush, "blend", text="Blend")
                
                # Weight Paint Mode #
        
@@ -508,7 +508,7 @@
                settings = self.paint_settings(context)
                brush = settings.brush
 
-               layout.template_curve_mapping(brush.curve)
+               layout.template_curve_mapping(brush, "curve")
                layout.item_menu_enumO("brush.curve_preset", property="shape")
                
 class VIEW3D_PT_sculpt_options(PaintPanel):

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h 2009-09-16 
18:32:10 UTC (rev 23284)
+++ trunk/blender/source/blender/editors/include/UI_interface.h 2009-09-16 
18:47:42 UTC (rev 23285)
@@ -487,6 +487,7 @@
 void   uiBlockSetHandleFunc(uiBlock *block,    uiBlockHandleFunc func, void 
*arg);
 void   uiBlockSetButmFunc      (uiBlock *block,        uiMenuHandleFunc func, 
void *arg);
 void   uiBlockSetFunc          (uiBlock *block,        uiButHandleFunc func, 
void *arg1, void *arg2);
+void   uiBlockSetNFunc         (uiBlock *block,        uiButHandleFunc func, 
void *argN, void *arg2);
 
 void   uiButSetRenameFunc      (uiBut *but,            uiButHandleRenameFunc 
func, void *arg1);
 void   uiButSetFunc            (uiBut *but,            uiButHandleFunc func, 
void *arg1, void *arg2);
@@ -596,7 +597,7 @@
 
 uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int 
size, int em, struct uiStyle *style);
 void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout);
-void uiBlockLayoutResolve(const struct bContext *C, uiBlock *block, int *x, 
int *y);
+void uiBlockLayoutResolve(uiBlock *block, int *x, int *y);
 
 uiBlock *uiLayoutGetBlock(uiLayout *layout);
 
@@ -641,10 +642,11 @@
 uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
 uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
 void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, 
struct MTex *slot);
-void uiTemplateColorRamp(uiLayout *layout, struct ColorBand *coba, int expand);
-void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int 
type, int compact);
+void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char 
*propname, int expand);
+void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char 
*propname, int type, int levels);
 void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char 
*propname);
 void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char 
*propname);
+void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA 
*ptr, char *propname, struct PointerRNA *userptr, int compact);
 void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image 
*ima, struct ImageUser *iuser);
 void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C);
 void uiTemplateOperatorSearch(uiLayout *layout);

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c  2009-09-16 
18:32:10 UTC (rev 23284)
+++ trunk/blender/source/blender/editors/interface/interface.c  2009-09-16 
18:47:42 UTC (rev 23285)
@@ -622,7 +622,7 @@
        }
 
        /* handle pending stuff */
-       if(block->layouts.first) uiBlockLayoutResolve(C, block, NULL, NULL);
+       if(block->layouts.first) uiBlockLayoutResolve(block, NULL, NULL);
        ui_block_do_align(block);
        if(block->flag & UI_BLOCK_LOOP) ui_menu_block_set_keymaps(C, block);
        
@@ -1684,6 +1684,9 @@
                ui_free_but(C, but);
        }
 
+       if(block->func_argN)
+               MEM_freeN(block->func_argN);
+
        CTX_store_free_list(&block->contexts);
 
        BLI_freelistN(&block->saferct);
@@ -2232,6 +2235,10 @@
        but->func= block->func;
        but->func_arg1= block->func_arg1;
        but->func_arg2= block->func_arg2;
+
+       but->funcN= block->funcN;
+       if(block->func_argN)
+               but->func_argN= MEM_dupallocN(block->func_argN);
        
        but->pos= -1;   /* cursor invisible */
 
@@ -2945,6 +2952,16 @@
        block->func_arg2= arg2;
 }
 
+void uiBlockSetNFunc(uiBlock *block, uiButHandleFunc func, void *argN, void 
*arg2)
+{
+       if(block->func_argN)
+               MEM_freeN(block->func_argN);
+
+       block->funcN= func;
+       block->func_argN= argN;
+       block->func_arg2= arg2;
+}
+
 void uiButSetRenameFunc(uiBut *but, uiButHandleRenameFunc func, void *arg1)
 {
        but->rename_func= func;
@@ -2967,6 +2984,9 @@
 
 void uiButSetNFunc(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2)
 {
+       if(but->func_argN)
+               MEM_freeN(but->func_argN);
+
        but->funcN= funcN;
        but->func_argN= argN;
        but->func_arg2= arg2;
@@ -3003,6 +3023,8 @@
 {
        uiBut *but= ui_def_but(block, BLOCK, 0, str, x1, y1, x2, y2, NULL, 0.0, 
0.0, 0.0, 0.0, tip);
        but->block_create_func= func;
+       if(but->func_argN)
+               MEM_freeN(but->func_argN);
        but->func_argN= argN;
        ui_check_but(but);
        return but;

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2009-09-16 18:32:10 UTC (rev 23284)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2009-09-16 18:47:42 UTC (rev 23285)
@@ -246,7 +246,13 @@
        if(but->func || but->funcN || block->handle_func || but->rename_func || 
(but->type == BUTM && block->butm_func) || but->optype || but->rnaprop) {
                after= MEM_callocN(sizeof(uiAfterFunc), "uiAfterFunc");
 
-               after->func= but->func;
+               if(ELEM(but, but->func_arg1, but->func_arg2)) {
+                       /* exception, this will crash due to removed button 
otherwise */
+                       but->func(C, but->func_arg1, but->func_arg2);
+               }
+               else
+                       after->func= but->func;
+
                after->func_arg1= but->func_arg1;
                after->func_arg2= but->func_arg2;
                after->func_arg3= but->func_arg3;

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h   
2009-09-16 18:32:10 UTC (rev 23284)

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to