[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31001] trunk/blender/source/blender: pointer poll functions for object's, mainly for modifiers, constraints.
Campbell Barton
ideasman42 at gmail.com
Tue Aug 3 08:51:37 CEST 2010
Revision: 31001
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31001
Author: campbellbarton
Date: 2010-08-03 08:51:36 +0200 (Tue, 03 Aug 2010)
Log Message:
-----------
pointer poll functions for object's, mainly for modifiers, constraints.
Lattice modifier only shows lattices types, Shrink wrap only meshes etc.
Modified Paths:
--------------
trunk/blender/source/blender/editors/interface/interface_layout.c
trunk/blender/source/blender/editors/interface/interface_templates.c
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/intern/rna_access.c
trunk/blender/source/blender/makesrna/intern/rna_constraint.c
trunk/blender/source/blender/makesrna/intern/rna_curve.c
trunk/blender/source/blender/makesrna/intern/rna_internal.h
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
trunk/blender/source/blender/makesrna/intern/rna_object.c
trunk/blender/source/blender/makesrna/intern/rna_scene.c
trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -1111,6 +1111,12 @@
if(itemptr.data == but->rnapoin.id.data)
continue;
+ /* use filter */
+ if(RNA_property_type(but->rnaprop)==PROP_POINTER) {
+ if(RNA_property_pointer_poll(&but->rnapoin, but->rnaprop, &itemptr)==0)
+ continue;
+ }
+
if(itemptr.type && RNA_struct_is_ID(itemptr.type)) {
ID *id= itemptr.data;
char name_ui[32];
Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -178,8 +178,16 @@
filter_yes= 0;
/* use filter */
- if (template->filterop[0] != 0) {
+ if(RNA_property_type(template->prop)==PROP_POINTER) {
PointerRNA ptr;
+ RNA_id_pointer_create(id, &ptr);
+ if(RNA_property_pointer_poll(&template->ptr, template->prop, &ptr)==0)
+ filter_yes= 1;
+ }
+
+ if (filter_yes==0 && template->filterop[0] != 0) {
+ /* XXX, remove this, use pointer filtering */
+ PointerRNA ptr;
ReportList reports;
FunctionRNA *func;
ParameterList parms;
Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/RNA_access.h 2010-08-03 06:51:36 UTC (rev 31001)
@@ -670,6 +670,7 @@
int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop);
+int RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value);
int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index);
Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -786,6 +786,7 @@
return -1;
}
+
void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax)
{
IntPropertyRNA *iprop= (IntPropertyRNA*)rna_ensure_property(prop);
@@ -990,6 +991,22 @@
return &RNA_UnknownType;
}
+int RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value)
+{
+ prop= rna_ensure_property(prop);
+
+ if(prop->type == PROP_POINTER) {
+ PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop;
+ if(pprop->poll)
+ return pprop->poll(ptr, *value);
+
+ return 1;
+ }
+
+ printf("RNA_property_pointer_poll %s: is not a pointer property.\n", prop->identifier);
+ return 0;
+}
+
/* Reuse for dynamic types */
EnumPropertyItem DummyRNA_NULL_items[] = {
{0, NULL, 0, NULL, NULL}
Modified: trunk/blender/source/blender/makesrna/intern/rna_constraint.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_constraint.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/intern/rna_constraint.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -1067,6 +1067,7 @@
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "tar");
+ RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Curve_object_poll");
RNA_def_property_ui_text(prop, "Target", "Target Object");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -1273,7 +1274,8 @@
RNA_def_struct_sdna_from(srna, "bClampToConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "tar"); // TODO: curve only!
+ RNA_def_property_pointer_sdna(prop, NULL, "tar"); // TODO: curve only for set function!
+ RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Curve_object_poll");
RNA_def_property_ui_text(prop, "Target", "Target Object");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -1707,7 +1709,8 @@
RNA_def_struct_sdna_from(srna, "bShrinkwrapConstraint", "data");
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "target");
+ RNA_def_property_pointer_sdna(prop, NULL, "target"); /* TODO, mesh type */
+ RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Mesh_object_poll");
RNA_def_property_ui_text(prop, "Target", "Target Object");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
Modified: trunk/blender/source/blender/makesrna/intern/rna_curve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_curve.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/intern/rna_curve.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -285,6 +285,20 @@
}
}
+static int rna_Curve_otherObject_poll(PointerRNA *ptr, PointerRNA value)
+{
+ Curve *cu= (Curve*)ptr->id.data;
+ Object *ob= (Object*)value.data;
+
+ if (ob) {
+ if (ob->type == OB_CURVE && ob->data != cu) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
static PointerRNA rna_Curve_taperObject_get(PointerRNA *ptr)
{
Curve *cu= (Curve*)ptr->id.data;
@@ -819,6 +833,7 @@
/* pointers */
prop= RNA_def_property(srna, "text_on_curve", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "textoncurve");
+ RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Curve_otherObject_poll");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Text on Curve", "Curve deforming text object");
RNA_def_property_update(prop, 0, "rna_Curve_update_deps");
@@ -1144,7 +1159,7 @@
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Bevel Object", "Curve object name that defines the bevel shape");
RNA_def_property_update(prop, 0, "rna_Curve_update_deps");
- RNA_def_property_pointer_funcs(prop, "rna_Curve_bevelObject_get", "rna_Curve_bevelObject_set", NULL, NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Curve_bevelObject_get", "rna_Curve_bevelObject_set", NULL, "rna_Curve_otherObject_poll");
prop= RNA_def_property(srna, "taper_object", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "Object");
@@ -1152,7 +1167,7 @@
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Taper Object", "Curve object name that defines the taper (width)");
RNA_def_property_update(prop, 0, "rna_Curve_update_deps");
- RNA_def_property_pointer_funcs(prop, "rna_Curve_taperObject_get", "rna_Curve_taperObject_set", NULL, NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_Curve_taperObject_get", "rna_Curve_taperObject_set", NULL, "rna_Curve_otherObject_poll");
/* Flags */
Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h 2010-08-03 06:51:36 UTC (rev 31001)
@@ -206,11 +206,18 @@
int rna_object_shapekey_index_set(struct ID *id, PointerRNA value, int current);
/* named internal so as not to conflict with obj.update() rna func */
-void rna_Object_internal_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
void rna_Object_internal_update_data(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
void rna_Mesh_update_draw(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
void rna_TextureSlot_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
+/* basic poll functions for object types */
+int rna_Armature_object_poll(struct PointerRNA *ptr, struct PointerRNA value);
+int rna_Camera_object_poll(struct PointerRNA *ptr, struct PointerRNA value);
+int rna_Curve_object_poll(struct PointerRNA *ptr, struct PointerRNA value);
+int rna_Lattice_object_poll(struct PointerRNA *ptr, struct PointerRNA value);
+int rna_Mesh_object_poll(struct PointerRNA *ptr, struct PointerRNA value);
+
+
char *rna_TextureSlot_path(struct PointerRNA *ptr);
/* API functions */
Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2010-08-03 06:36:07 UTC (rev 31000)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2010-08-03 06:51:36 UTC (rev 31001)
@@ -659,7 +659,7 @@
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with");
- RNA_def_property_pointer_funcs(prop, NULL, "rna_LatticeModifier_object_set", NULL, NULL);
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_LatticeModifier_object_set", NULL, "rna_Lattice_object_poll");
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
@@ -691,7 +691,7 @@
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Object", "Curve object to deform with");
- RNA_def_property_pointer_funcs(prop, NULL, "rna_CurveModifier_object_set", NULL, NULL);
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_CurveModifier_object_set", NULL, "rna_Curve_object_poll");
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list