Fix [#22199] Cloth Cache Panel > Disk Cache doesn't work
authorMatt Ebb <matt@mke3.net>
Mon, 3 May 2010 03:02:27 +0000 (03:02 +0000)
committerMatt Ebb <matt@mke3.net>
Mon, 3 May 2010 03:02:27 +0000 (03:02 +0000)
Condition for this to work (.blend file must be saved) was poorly communicated
in the UI (printfs are no good for this - ideally should use reports). Tweaked this a bit.

release/scripts/ui/properties_physics_common.py
source/blender/blenkernel/intern/pointcache.c
source/blender/makesrna/intern/rna_main.c
source/blender/makesrna/intern/rna_object_force.c

index 025a16894a957236043bd0bdb5425438d60a8955..080d576ab9a307de17b361c2b1fb43fde76d646a 100644 (file)
@@ -20,6 +20,7 @@
 
 narrowui = 180
 
+import bpy
 
 def point_cache_ui(self, context, cache, enabled, particles, smoke):
     layout = self.layout
@@ -67,7 +68,10 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
             sub = col.column()
             sub.enabled = enabled
             sub.prop(cache, "quick_cache")
-            col.prop(cache, "disk_cache")
+            
+            sub = col.column()
+            sub.enabled = bpy.data.file_is_saved
+            sub.prop(cache, "disk_cache")
             col.label(text=cache.info)
 
         
index 3d02f1751741cb201e4ea4908da3189868062b1b..25f8dc9bd5605866895e77b2948f3e9f9be1f718 100644 (file)
@@ -2652,7 +2652,8 @@ void BKE_ptcache_mem_to_disk(PTCacheID *pid)
                        ptcache_file_init_pointers(pf);
 
                        if(!ptcache_file_write_header_begin(pf) || !pid->write_header(pf)) {
-                               printf("Error writing to disk cache\n");
+                               if (G.f & G_DEBUG) 
+                                       printf("Error writing to disk cache\n");
                                cache->flag &= ~PTCACHE_DISK_CACHE;
 
                                ptcache_file_close(pf);
@@ -2662,7 +2663,8 @@ void BKE_ptcache_mem_to_disk(PTCacheID *pid)
                        for(i=0; i<pm->totpoint; i++) {
                                ptcache_copy_data(pm->cur, pf->cur);
                                if(!ptcache_file_write_data(pf)) {
-                                       printf("Error writing to disk cache\n");
+                                       if (G.f & G_DEBUG) 
+                                               printf("Error writing to disk cache\n");
                                        cache->flag &= ~PTCACHE_DISK_CACHE;
 
                                        ptcache_file_close(pf);
@@ -2678,7 +2680,8 @@ void BKE_ptcache_mem_to_disk(PTCacheID *pid)
                                BKE_ptcache_write_cache(pid, 0);
                }
                else
-                       printf("Error creating disk cache file\n");
+                       if (G.f & G_DEBUG) 
+                               printf("Error creating disk cache file\n");
        }
 }
 void BKE_ptcache_toggle_disk_cache(PTCacheID *pid)
@@ -2688,7 +2691,8 @@ void BKE_ptcache_toggle_disk_cache(PTCacheID *pid)
 
        if (!G.relbase_valid){
                cache->flag &= ~PTCACHE_DISK_CACHE;
-               printf("File must be saved before using disk cache!\n");
+               if (G.f & G_DEBUG) 
+                       printf("File must be saved before using disk cache!\n");
                return;
        }
 
index 7a680e00c8bcbe8851f93efd24f023a937b5dc6d..7688d92f2e13b783ec64c22ae6082b2f3d3effd0 100644 (file)
@@ -50,6 +50,10 @@ static void rna_Main_debug_set(PointerRNA *ptr, const int value)
                G.f &= ~G_DEBUG;
 }
 
+static int rna_Main_fileissaved_get(PointerRNA *ptr)
+{
+       return G.relbase_valid;
+}
 
 static void rna_Main_filename_get(PointerRNA *ptr, char *value)
 {
@@ -308,6 +312,11 @@ void RNA_def_main(BlenderRNA *brna)
        RNA_def_property_string_funcs(prop, "rna_Main_filename_get", "rna_Main_filename_length", "rna_Main_filename_set");
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Filename", "Path to the .blend file");
+       
+       prop= RNA_def_property(srna, "file_is_saved", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_boolean_funcs(prop, "rna_Main_fileissaved_get", NULL);
+       RNA_def_property_ui_text(prop, "File is Saved", "Has the current session been saved to disk as a .blend file");
 
        prop= RNA_def_property(srna, "debug", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_funcs(prop, "rna_Main_debug_get", "rna_Main_debug_set");
index ee5450551a8497af00cadcc390c487e65aa4a9d1..dcc9934721d1fde3528e6cf50016090837b4d3cc 100644 (file)
@@ -709,7 +709,7 @@ static void rna_def_pointcache(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "disk_cache", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_DISK_CACHE);
-       RNA_def_property_ui_text(prop, "Disk Cache", "Save cache files to disk");
+       RNA_def_property_ui_text(prop, "Disk Cache", "Save cache files to disk (.blend file must be saved first)");
        RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_toggle_disk_cache");
 
        prop= RNA_def_property(srna, "outdated", PROP_BOOLEAN, PROP_NONE);