svn merge ^/trunk/blender -r40720:40872
[blender.git] / source / blender / makesrna / intern / rna_animation_api.c
index b3d2c02d0e4c0a5c9f4d55044a68ca9a22deab49..714a74ec424aee821b1e87793360f21c8b169fc8 100644 (file)
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 
+
 #ifdef RNA_RUNTIME
 
-#include "BKE_animsys.h"
+#include "BKE_context.h"
+#include "BKE_report.h"
+
+#include "ED_keyframing.h"
+
+static void rna_KeyingSet_context_refresh(KeyingSet *ks, bContext *C, ReportList *reports)
+{
+       // TODO: enable access to providing a list of overrides (dsources)?
+       int success = ANIM_validate_keyingset(C, NULL, ks);
+       
+       if (success != 0) {
+               switch (success) {
+                       case MODIFYKEY_INVALID_CONTEXT:
+                               BKE_report(reports, RPT_ERROR, "Invalid context for Keying Set");
+                               break;
+                               
+                       case MODIFYKEY_MISSING_TYPEINFO:
+                               BKE_report(reports, RPT_ERROR, "Incomplete built-in Keying Set. Appears to be missing type info");
+                               break;
+               }
+       }
+}
 
 #else
 
 void RNA_api_keyingset(StructRNA *srna)
 {
-//     FunctionRNA *func;
-//     PropertyRNA *parm;
+       FunctionRNA *func;
+       //PropertyRNA *parm;
+       
+       /* validate relative Keying Set (used to ensure paths are ok for context) */
+       func= RNA_def_function(srna, "refresh", "rna_KeyingSet_context_refresh");
+       RNA_def_function_ui_description(func, "Refresh Keying Set to ensure that it is valid for the current context. Call before each use of one");
+       RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
 }
 
 #endif