* Added Particle wrapping patch by Roelf de Kock. It's not
  complete yet and I haven't reviewed it, but committing anyway,
  will get to it later.
* Added "Percentage" subtype for floats. Doesn't really do
  much besides making auto rna buttons into sliders rather than
  numeric inputs, but can later display in % rather than 0.0-1.0.
This commit is contained in:
Brecht Van Lommel 2009-02-17 21:07:01 +00:00
parent ec8c8f08ba
commit 94e583b476
14 changed files with 1237 additions and 14 deletions

View File

@ -1077,7 +1077,7 @@ void CURVE_OT_set_weight(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
RNA_def_float(ot->srna, "weight", 1.0f, 0.0f, 1.0f, "Weight", "", 0.0f, 1.0f);
RNA_def_float_percentage(ot->srna, "weight", 1.0f, 0.0f, 1.0f, "Weight", "", 0.0f, 1.0f);
}
/******************* set radius operator ******************/
@ -4195,7 +4195,7 @@ void CURVE_OT_select_random(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
RNA_def_float(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f);
RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f);
}
/********************** select every nth *********************/

View File

@ -249,6 +249,8 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
if(RNA_property_subtype(ptr, prop) == PROP_COLOR)
but= uiDefButR(block, COL, 0, name, x1, y1, x2, y2, ptr, propname, 0, 0, 0, -1, -1, NULL);
}
else if(RNA_property_subtype(ptr, prop) == PROP_PERCENTAGE)
but= uiDefButR(block, NUMSLI, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
else
but= uiDefButR(block, NUM, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
break;

View File

@ -3448,10 +3448,10 @@ void MESH_OT_select_random(wmOperatorType *ot)
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER/*|OPTYPE_UNDO*/;
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* props */
RNA_def_float(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f);
RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f);
}
void editmesh_select_by_material(EditMesh *em, int index)

View File

@ -1770,7 +1770,7 @@ static int object_select_random_exec(bContext *C, wmOperator *op)
{
float percent;
percent = RNA_float_get(op->ptr, "percent") / 100.0f;
percent = RNA_float_get(op->ptr, "percent");
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
if ((!base->flag & SELECT && BLI_frand() < percent)) {
@ -1798,7 +1798,7 @@ void OBJECT_OT_select_random(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
RNA_def_float(ot->srna, "percent", 50.0f, 0.0f, 100.0f, "Percent", "percentage of objects to randomly select", 0.01f, 100.0f);
RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "percentage of objects to randomly select", 0.0001f, 1.0f);
}
/* ******** Clear object Translation *********** */

View File

@ -282,8 +282,6 @@ static void image_main_area_set_view2d(SpaceImage *sima, ARegion *ar, Scene *sce
float x1, y1, w, h;
int width, height, winx, winy;
ED_space_image_size(sima, &width, &height);
#if 0
if(image_preview_active(curarea, &width, &height));
#endif
@ -293,15 +291,19 @@ static void image_main_area_set_view2d(SpaceImage *sima, ARegion *ar, Scene *sce
ED_image_aspect(sima->image, &xuser_asp, &yuser_asp);
if(ibuf) {
width= ibuf->x * xuser_asp;
width= ibuf->y * yuser_asp;
width= ibuf->x*xuser_asp;
height= ibuf->y*yuser_asp;
}
else if( sima->image->type==IMA_TYPE_R_RESULT ) {
else if(sima->image->type==IMA_TYPE_R_RESULT) {
/* not very important, just nice */
width= (scene->r.xsch*scene->r.size)/100;
height= (scene->r.ysch*scene->r.size)/100;
}
else
ED_space_image_size(sima, &width, &height);
}
else
ED_space_image_size(sima, &width, &height);
w= width;
h= height;

View File

@ -390,7 +390,7 @@ void UV_OT_minimize_stretch(wmOperatorType *ot)
/* properties */
RNA_def_boolean(ot->srna, "fill_holes", 1, "Fill Holes", "Virtual fill holes in mesh before unwrapping, to better avoid overlaps and preserve symmetry.");
RNA_def_float(ot->srna, "blend", 0.0f, 0.0f, 1.0f, "Blend", "Blend factor between stretch minimized and original.", 0.0f, 1.0f);
RNA_def_float_percentage(ot->srna, "blend", 0.0f, 0.0f, 1.0f, "Blend", "Blend factor between stretch minimized and original.", 0.0f, 1.0f);
RNA_def_int(ot->srna, "iterations", 0, 0, INT_MAX, "Iterations", "Number of iterations to run, 0 is unlimited when run interactively.", 0, 100);
}

View File

@ -87,6 +87,8 @@ PropertyRNA *RNA_def_float_rotation(StructRNA *srna, const char *identifier, int
float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
PropertyRNA *RNA_def_float_array(StructRNA *srna, const char *identifier, int len, const float *default_value,
float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
PropertyRNA *RNA_def_float_percentage(StructRNA *srna, const char *identifier, float default_value, float hardmin, float hardmax,
const char *ui_name, const char *ui_description, float softmin, float softmax);
PropertyRNA *RNA_def_pointer_runtime(StructRNA *srna, const char *identifier, StructRNA *type,
const char *ui_name, const char *ui_description);

View File

@ -67,7 +67,8 @@ typedef enum PropertySubType {
PROP_VECTOR = 5,
PROP_MATRIX = 6,
PROP_ROTATION = 7,
PROP_NEVER_NULL = 8
PROP_NEVER_NULL = 8,
PROP_PERCENTAGE = 9
} PropertySubType;
typedef enum PropertyFlag {

View File

@ -959,6 +959,7 @@ static const char *rna_property_subtypename(PropertyType type)
case PROP_MATRIX: return "PROP_MATRIX";
case PROP_ROTATION: return "PROP_ROTATION";
case PROP_NEVER_NULL: return "PROP_NEVER_NULL";
case PROP_PERCENTAGE: return "PROP_PERCENTAGE";
default: return "PROP_UNKNOWN";
}
}

View File

@ -75,6 +75,7 @@ StructRNA *rna_ID_refine(PointerRNA *ptr)
case ID_NT: return &RNA_NodeTree;
case ID_ME: return &RNA_Mesh;
case ID_OB: return &RNA_Object;
case ID_PA: return &RNA_ParticleSettings;
case ID_SCE: return &RNA_Scene;
case ID_SCR: return &RNA_Screen;
case ID_SO: return &RNA_Sound;

View File

@ -584,6 +584,10 @@ PropertyRNA *RNA_def_property(StructRNA *srna, const char *identifier, int type,
fprop->softmin= 0.0f;
fprop->softmax= 1.0f;
}
else if(subtype == PROP_PERCENTAGE) {
fprop->softmin= fprop->hardmin= 0.0f;
fprop->softmax= fprop->hardmax= 1.0f;
}
else {
fprop->softmin= (subtype == PROP_UNSIGNED)? 0.0f: -10000.0f; /* rather arbitrary .. */
fprop->softmax= 10000.0f;
@ -1712,6 +1716,20 @@ PropertyRNA *RNA_def_float_array(StructRNA *srna, const char *identifier, int le
return prop;
}
PropertyRNA *RNA_def_float_percentage(StructRNA *srna, const char *identifier, float default_value,
float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
{
PropertyRNA *prop;
prop= RNA_def_property(srna, identifier, PROP_FLOAT, PROP_PERCENTAGE);
RNA_def_property_float_default(prop, default_value);
if(hardmin != hardmax) RNA_def_property_range(prop, hardmin, hardmax);
RNA_def_property_ui_text(prop, ui_name, ui_description);
RNA_def_property_ui_range(prop, softmin, softmax, 1, 3);
return prop;
}
PropertyRNA *RNA_def_pointer_runtime(StructRNA *srna, const char *identifier, StructRNA *type,
const char *ui_name, const char *ui_description)
{

View File

@ -242,7 +242,7 @@ void RNA_def_main(BlenderRNA *brna)
{"sounds", "ID", "rna_Main_sound_begin", "Sounds", "Sound datablocks."},
{"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks."},
{"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks."},
{"particles", "ID", "rna_Main_particle_begin", "Particles", "Particle datablocks."},
{"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks."},
{NULL, NULL, NULL, NULL, NULL}};
int i;

File diff suppressed because it is too large Load Diff

View File

@ -532,6 +532,7 @@ static void rna_def_property(BlenderRNA *brna)
{PROP_MATRIX, "MATRIX", "Matrix", ""},
{PROP_ROTATION, "ROTATION", "Rotation", ""},
{PROP_NEVER_NULL, "NEVER_NULL", "Never Null", ""},
{PROP_PERCENTAGE, "PERCENTAGE", "Percentage", ""},
{0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "Property", NULL);