Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesrna / intern / rna_vfont.c
index 41387e806b9e7af60e732372ba7d8134bc8a5cec..78d46d35246eaf18c8f9f28eadbaef617d2e8fa9 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * $Id$
- *
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file blender/makesrna/intern/rna_vfont.c
+ *  \ingroup RNA
+ */
+
 #include <stdlib.h>
 
 #include "RNA_define.h"
 
 #include "DNA_vfont_types.h"
 
+#include "WM_types.h"
+
+
 #ifdef RNA_RUNTIME
 
+#include "BKE_font.h"
+#include "DNA_object_types.h"
+
+#include "DEG_depsgraph.h"
+
+#include "WM_api.h"
+
+/* matching fnction in rna_ID.c */
+static int rna_VectorFont_filepath_editable(PointerRNA *ptr, const char **UNUSED(r_info))
+{
+       VFont *vfont = ptr->id.data;
+       if (BKE_vfont_is_builtin(vfont)) {
+               return 0;
+       }
+       return PROP_EDITABLE;
+}
+
+static void rna_VectorFont_reload_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+       VFont *vf = ptr->id.data;
+       BKE_vfont_free_data(vf);
+
+       /* update */
+       WM_main_add_notifier(NC_GEOM | ND_DATA, NULL);
+       DEG_id_tag_update(&vf->id, OB_RECALC_OB | OB_RECALC_DATA);
+}
+
 #else
 
 void RNA_def_vfont(BlenderRNA *brna)
@@ -39,20 +71,22 @@ void RNA_def_vfont(BlenderRNA *brna)
        StructRNA *srna;
        PropertyRNA *prop;
        
-       srna= RNA_def_struct(brna, "VectorFont", "ID");
+       srna = RNA_def_struct(brna, "VectorFont", "ID");
        RNA_def_struct_ui_text(srna, "Vector Font", "Vector font for Text objects");
        RNA_def_struct_sdna(srna, "VFont");
        RNA_def_struct_ui_icon(srna, ICON_FILE_FONT);
 
-       prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
-       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       prop = RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
        RNA_def_property_string_sdna(prop, NULL, "name");
+       RNA_def_property_editable_func(prop, "rna_VectorFont_filepath_editable");
        RNA_def_property_ui_text(prop, "File Path", "");
+       RNA_def_property_update(prop, NC_GEOM | ND_DATA, "rna_VectorFont_reload_update");
 
-       prop= RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
+       prop = RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "packedfile");
        RNA_def_property_ui_text(prop, "Packed File", "");
+
+       RNA_api_vfont(srna);
 }
 
 #endif
-