Revision: 21704
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21704
Author:   nicholasbishop
Date:     2009-07-19 19:44:44 +0200 (Sun, 19 Jul 2009)

Log Message:
-----------
Sculpt+Paint/2.5:

* Moved brush NKEY panel from C to Python. Could use some UI review :)
* Added a NULL check in bpy_internal_import.c, was crashing here on Python 
errors
* Added RNA for vpaint brush and for weight paint
* Added context for vpaint/wpaint similar to edit_object and sculpt_object

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/space_view3d.py
    branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_vpaint.c
    
branches/blender2.5/blender/source/blender/python/generic/bpy_internal_import.c

Modified: branches/blender2.5/blender/release/ui/space_view3d.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d.py      2009-07-19 
17:42:01 UTC (rev 21703)
+++ branches/blender2.5/blender/release/ui/space_view3d.py      2009-07-19 
17:44:44 UTC (rev 21704)
@@ -197,10 +197,59 @@
                row.itemR(sculpt, "lock_y", text="Y", toggle=True)
                row.itemR(sculpt, "lock_z", text="Z", toggle=True)
 
+class VIEW3D_PT_brush(bpy.types.Panel):
+       __space_type__ = "VIEW_3D"
+       __region_type__ = "UI"
+       __label__ = "Brush"
+
+       def brush_src(self, context):
+               ts = context.scene.tool_settings
+               if context.sculpt_object:
+                       return ts.sculpt
+               elif context.vpaint_object:
+                       return ts.vpaint
+               elif context.wpaint_object:
+                       return ts.wpaint
+               return False
+
+       def poll(self, context):
+               return self.brush_src(context)
+
+       def draw(self, context):
+               src = self.brush_src(context)
+               brush = src.brush
+               layout = self.layout
+
+               layout.split().row().template_ID(src, "brush")
+
+               split = layout.split()
+               col = split.column(align=True)
+               col.itemR(brush, "size", slider=True)
+               if context.wpaint_object:
+                       col.itemR(context.scene.tool_settings, 
"vertex_group_weight", text="Weight", slider=True)
+               col.itemR(brush, "strength", slider=True)
+
+               if context.sculpt_object:
+                       layout.split().row().itemR(brush, "sculpt_tool")
+
+               split = layout.split()
+               col = split.column()
+               col.itemR(brush, "airbrush")
+               col.itemR(brush, "anchored")
+               col.itemR(brush, "rake")
+               col = split.column()
+               col.itemR(brush, "space")
+               col.itemR(brush, "spacing")
+
+               split = layout.split()
+               split.template_curve_mapping(brush.curve)
+
 bpy.types.register(VIEW3D_MT_view_navigation)
 bpy.types.register(VIEW3D_MT_view)
 bpy.types.register(VIEW3D_HT_header)
+bpy.types.register(VIEW3D_PT_sculpt)
+bpy.types.register(VIEW3D_PT_brush)
 bpy.types.register(VIEW3D_PT_3dview_properties)
 bpy.types.register(VIEW3D_PT_3dview_display)
 bpy.types.register(VIEW3D_PT_background_image)
-bpy.types.register(VIEW3D_PT_sculpt)
+

Modified: 
branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_context.c  
2009-07-19 17:42:01 UTC (rev 21703)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_context.c  
2009-07-19 17:44:44 UTC (rev 21704)
@@ -37,6 +37,8 @@
 
 #include "RNA_access.h"
 
+#include "ED_object.h"
+
 int ed_screen_context(const bContext *C, const char *member, 
bContextDataResult *result)
 {
        bScreen *sc= CTX_wm_screen(C);
@@ -47,8 +49,8 @@
                static const char *dir[] = {
                        "scene", "selected_objects", "selected_bases",
                        "selected_editable_objects", "selected_editable_bases"
-                       "active_base",
-                       "active_object", "edit_object", "sculpt_object", NULL};
+                       "active_base", "active_object", "edit_object",
+                       "sculpt_object", "vpaint_object", "wpaint_object", 
NULL};
 
                CTX_data_dir_set(result, dir);
                return 1;
@@ -114,6 +116,18 @@
 
                return 1;
        }
+       else if(CTX_data_equals(member, "vpaint_object")) {
+               if(G.f & G_VERTEXPAINT && scene->basact)
+                       CTX_data_id_pointer_set(result, 
&scene->basact->object->id);
+
+               return 1;
+       }
+       else if(CTX_data_equals(member, "wpaint_object")) {
+               if(G.f & G_WEIGHTPAINT && scene->basact)
+                       CTX_data_id_pointer_set(result, 
&scene->basact->object->id);
+
+               return 1;
+       }
        
        return 0;
 }

Modified: 
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    2009-07-19 17:42:01 UTC (rev 21703)
+++ 
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    2009-07-19 17:44:44 UTC (rev 21704)
@@ -1101,81 +1101,6 @@
        }
 }
 
-static int view3d_panel_brush_poll(const bContext *C, PanelType *pt)
-{
-       Brush **brp = current_brush_source(CTX_data_scene(C));
-
-       return ((G.f & 
(G_SCULPTMODE|G_TEXTUREPAINT|G_VERTEXPAINT|G_WEIGHTPAINT)) && brp);
-}
-
-static void view3d_panel_brush(const bContext *C, Panel *pa)
-{
-       uiBlock *block;
-       ToolSettings *ts= CTX_data_tool_settings(C);
-       Brush **brp = current_brush_source(CTX_data_scene(C)), *br;
-       short w = 268, h = 400, cx = 10, cy = h;
-       rctf rect;
-
-       br = *brp;
-
-       block= uiLayoutFreeBlock(pa->layout);
-       uiBlockSetHandleFunc(block, do_view3d_region_buttons, NULL);
-
-       uiBlockBeginAlign(block);
-       uiDefIDPoinButs(block, CTX_data_main(C), NULL, &br->id, ID_BR, NULL, 
cx, cy,
-                       brush_idpoin_handle, 
UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_OPEN|UI_ID_DELETE|UI_ID_ALONE);
-       cy-= 25;
-       uiBlockEndAlign(block);
-
-       if(!br)
-               return;
-
-       if(G.f & G_SCULPTMODE) {
-               uiBlockBeginAlign(block);       
-               
uiDefButC(block,ROW,B_REDR,"Draw",cx,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_DRAW,0,0,"Draw
 lines on the model");
-               
uiDefButC(block,ROW,B_REDR,"Smooth",cx+67,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_SMOOTH,0,0,"Interactively
 smooth areas of the model");
-               
uiDefButC(block,ROW,B_REDR,"Pinch",cx+134,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_PINCH,0,0,"Interactively
 pinch areas of the model");
-               
uiDefButC(block,ROW,B_REDR,"Inflate",cx+201,cy,67,19,&br->sculpt_tool,14,SCULPT_TOOL_INFLATE,0,0,"Push
 vertices along the direction of their normals");
-               cy-= 20;
-               uiDefButC(block,ROW,B_REDR,"Grab", 
cx,cy,67,19,&br->sculpt_tool,14,SCULPT_TOOL_GRAB,0,0,"Grabs a group of vertices 
and moves them with the mouse");
-               uiDefButC(block,ROW,B_REDR,"Layer", 
cx+67,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_LAYER,0,0,"Adds a layer of 
depth");
-               uiDefButC(block,ROW,B_REDR,"Flatten", 
cx+134,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_FLATTEN,0,0,"Interactively 
flatten areas of the model");
-               uiDefButC(block,ROW,B_REDR,"Clay", 
cx+201,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_CLAY,0,0,"Build up depth 
quickly");
-               cy-= 25;
-               uiBlockEndAlign(block);
-       }
-
-       uiBlockBeginAlign(block);
-       uiDefButI(block,NUMSLI,B_NOP,"Size: 
",cx,cy,w,19,&br->size,1.0,200.0,0,0,"Set brush radius in pixels");
-       cy-= 20;
-       if(G.f & G_WEIGHTPAINT) {
-               uiDefButF(block,NUMSLI,B_NOP,"Weight: 
",cx,cy,w,19,&ts->vgroup_weight,0,1.0,0,0,"Set vertex weight");
-               cy-= 20;
-       }
-       uiDefButF(block,NUMSLI,B_NOP,"Strength: 
",cx,cy,w,19,&br->alpha,0,1.0,0,0,"Set brush strength");
-       cy-= 25;
-       uiBlockEndAlign(block);
-
-       uiBlockBeginAlign(block);
-
-       uiDefButBitS(block, TOG, BRUSH_AIRBRUSH, B_NOP, "Airbrush", 
cx,cy,w/3,19, &br->flag,0,0,0,0, "Brush makes changes without waiting for the 
mouse to move");
-       uiDefButBitS(block, TOG, BRUSH_RAKE, B_NOP, "Rake", cx+w/3,cy,w/3,19, 
&br->flag,0,0,0,0, "");
-       uiDefButBitS(block, TOG, BRUSH_ANCHORED, B_NOP, "Anchored", 
cx+w*2.0/3,cy,w/3,19, &br->flag,0,0,0,0, "");
-       cy-= 20;
-       uiDefButBitS(block, TOG, BRUSH_SPACE, B_NOP, "Space", cx,cy,w/3,19, 
&br->flag,0,0,0,0, "");
-       uiDefButF(block,NUMSLI,B_NOP,"Spacing: 
",cx+w/3,cy,w*2.0/3,19,&br->spacing,1.0,500,0,0,"");
-       cy-= 20;
-       uiBlockEndAlign(block);
-
-       if(br->curve) {
-               rect.xmin= cx; rect.xmax= cx + w;
-               rect.ymin= cy - 200; rect.ymax= cy;
-               uiBlockBeginAlign(block);
-               curvemap_buttons(block, br->curve, (char)0, B_NOP, 0, &rect);
-               uiBlockEndAlign(block);
-       }
-}
-
 static void view3d_panel_object(const bContext *C, Panel *pa)
 {
        uiBlock *block;
@@ -1715,14 +1640,7 @@
        strcpy(pt->label, "Background Image");
        pt->draw= view3d_panel_background;
        BLI_addtail(&art->paneltypes, pt);
-*/
-       pt= MEM_callocN(sizeof(PanelType), "spacetype view3d panel brush");
-       strcpy(pt->idname, "VIEW3D_PT_brush");
-       strcpy(pt->label, "Brush");
-       pt->draw= view3d_panel_brush;
-       pt->poll= view3d_panel_brush_poll;
-       BLI_addtail(&art->paneltypes, pt);
-/*
+
        pt= MEM_callocN(sizeof(PanelType), "spacetype view3d panel transform 
spaces");
        strcpy(pt->idname, "VIEW3D_PT_transform spaces");
        strcpy(pt->label, "Transform Orientations");

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c      
2009-07-19 17:42:01 UTC (rev 21703)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c      
2009-07-19 17:44:44 UTC (rev 21704)
@@ -294,6 +294,10 @@
        RNA_def_property_struct_type(prop, "VPaint");
        RNA_def_property_ui_text(prop, "Vertex Paint", "");
 
+       prop= RNA_def_property(srna, "wpaint", PROP_POINTER, PROP_NONE);
+       RNA_def_property_struct_type(prop, "VPaint");
+       RNA_def_property_ui_text(prop, "Weight Paint", "");
+
        /* Transform */
        prop= RNA_def_property(srna, "proportional_editing", PROP_BOOLEAN, 
PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "proportional", 0);

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_vpaint.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_vpaint.c     
2009-07-19 17:42:01 UTC (rev 21703)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_vpaint.c     
2009-07-19 17:44:44 UTC (rev 21704)
@@ -51,6 +51,10 @@
        
        srna= RNA_def_struct(brna, "VPaint", NULL);
        RNA_def_struct_ui_text(srna, "Vertex Paint", "Properties of the Vpaint 
tool.");
+    
+       prop= RNA_def_property(srna, "brush", PROP_POINTER, PROP_NONE);
+       RNA_def_property_struct_type(prop, "Brush");
+       RNA_def_property_ui_text(prop, "Brush", "");
 
        prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_items(prop, prop_mode_items);

Modified: 
branches/blender2.5/blender/source/blender/python/generic/bpy_internal_import.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/python/generic/bpy_internal_import.c 
    2009-07-19 17:42:01 UTC (rev 21703)
+++ 
branches/blender2.5/blender/source/blender/python/generic/bpy_internal_import.c 
    2009-07-19 17:44:44 UTC (rev 21704)
@@ -65,6 +65,8 @@
        Main *maggie= bpy_import_main;
        
        *found= 0;
+
+       if(!maggie) return NULL;
        
        if (namelen>21-3) return NULL; /* we know this cant be importable, the 
name is too long for blender! */
        


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to