Revision: 41494
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41494
Author:   nazgul
Date:     2011-11-03 12:28:32 +0000 (Thu, 03 Nov 2011)
Log Message:
-----------
Fix #29122: Curve Radius keyable from Outliner Datablock view but not Transform 
Radius field in 3D Viewport

If there's only one control point selected, show radius property for this 
point, not for medium value.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
    trunk/blender/source/blender/makesrna/RNA_access.h

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c  
2011-11-03 12:24:29 UTC (rev 41493)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c  
2011-11-03 12:28:32 UTC (rev 41494)
@@ -139,6 +139,7 @@
        float median[7], ve_median[7];
        int tot, totw, totweight, totedge, totradius;
        char defstr[320];
+       PointerRNA radius_ptr;
 
        median[0]= median[1]= median[2]= median[3]= median[4]= median[5]= 
median[6]= 0.0;
        tot= totw= totweight= totedge= totradius= 0;
@@ -210,6 +211,8 @@
                BezTriple *bezt;
                int a;
                ListBase *nurbs= curve_editnurbs(cu);
+               StructRNA *seltype= NULL;
+               void *selp= NULL;
 
                nu= nurbs->first;
                while(nu) {
@@ -224,6 +227,8 @@
                                                totweight++;
                                                median[5]+= bezt->radius;
                                                totradius++;
+                                               selp= bezt;
+                                               seltype= &RNA_BezierSplinePoint;
                                        }
                                        else {
                                                if(bezt->f1 & SELECT) {
@@ -251,12 +256,17 @@
                                                totweight++;
                                                median[5]+= bp->radius;
                                                totradius++;
+                                               selp= bp;
+                                               seltype= &RNA_SplinePoint;
                                        }
                                        bp++;
                                }
                        }
                        nu= nu->next;
                }
+
+               if(totradius==1)
+                       RNA_pointer_create(&cu->id, seltype, selp, &radius_ptr);
        }
        else if(ob->type==OB_LATTICE) {
                Lattice *lt= ob->data;
@@ -319,9 +329,11 @@
                                uiBlockEndAlign(block);
                                if(totweight)
                                        uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Weight:",   0, 20, 200, 20, &(tfp->ve_median[4]), 0.0, 
1.0, 1, 3, "");
-                               if(totradius)
-                                       uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Radius:",   0, 20, 200, 20, &(tfp->ve_median[5]), 0.0, 
100.0, 1, 3, "Radius of curve CPs");
+                               if(totradius) {
+                                       if(totradius==1) uiDefButR(block, NUM, 
0, "Radius", 0, 20, 200, 20, &radius_ptr, "radius", 0, 0.0, 100.0, 10, 3, NULL);
+                                       else uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Radius:",      0, 20, 200, 20, &(tfp->ve_median[5]), 0.0, 
100.0, 1, 3, "Radius of curve CPs");
                                }
+                       }
                        else {
                                uiBlockBeginAlign(block);
                                uiDefButBitS(block, TOG, V3D_GLOBAL_STATS, 
B_REDR, "Global",            0, 65, 100, 20, &v3d->flag, 0, 0, 0, 0, "Displays 
global values");
@@ -329,8 +341,10 @@
                                uiBlockEndAlign(block);
                                if(totweight)
                                        uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Weight:",   0, 40, 200, 20, &(tfp->ve_median[4]), 0.0, 
1.0, 10, 3, "");
-                               if(totradius)
-                                       uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Radius:",   0, 40, 200, 20, &(tfp->ve_median[5]), 0.0, 
100.0, 10, 3, "Radius of curve CPs");
+                               if(totradius) {
+                                       if(totradius==1) uiDefButR(block, NUM, 
0, "Radius", 0, 40, 200, 20, &radius_ptr, "radius", 0, 0.0, 100.0, 10, 3, NULL);
+                                       else uiDefButF(block, NUM, 
B_OBJECTPANELMEDIAN, "Radius:",      0, 40, 200, 20, &(tfp->ve_median[5]), 0.0, 
100.0, 10, 3, "Radius of curve CPs");
+                               }
                        }
                }
                else {

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h  2011-11-03 12:24:29 UTC 
(rev 41493)
+++ trunk/blender/source/blender/makesrna/RNA_access.h  2011-11-03 12:28:32 UTC 
(rev 41494)
@@ -70,6 +70,7 @@
 extern StructRNA RNA_ArrayModifier;
 extern StructRNA RNA_BackgroundImage;
 extern StructRNA RNA_BevelModifier;
+extern StructRNA RNA_SplinePoint;
 extern StructRNA RNA_BezierSplinePoint;
 extern StructRNA RNA_BlendData;
 extern StructRNA RNA_BlendTexture;

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

Reply via email to