Revision: 29906 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29906 Author: campbellbarton Date: 2010-07-03 19:47:06 +0200 (Sat, 03 Jul 2010)
Log Message: ----------- better reporting for file i/o failier, use system error message in more places: Permission Denied, No space left, File not found etc. - blend load/save uses os message. - image load gives os message. (remove check for slash at end of line, just let the os report an error) - python api load image/font/text raise errors with message (was just retuning None for image and font) - minor edits to py api errors. Modified Paths: -------------- trunk/blender/source/blender/blenkernel/intern/image.c trunk/blender/source/blender/blenkernel/intern/object.c trunk/blender/source/blender/blenloader/intern/readfile.c trunk/blender/source/blender/blenloader/intern/writefile.c trunk/blender/source/blender/editors/space_image/image_ops.c trunk/blender/source/blender/editors/space_node/node_edit.c trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c trunk/blender/source/blender/makesrna/intern/rna_main_api.c trunk/blender/source/blender/python/generic/bgl.c trunk/blender/source/blender/python/generic/blf_api.c trunk/blender/source/blender/python/generic/bpy_internal_import.c trunk/blender/source/blender/windowmanager/intern/wm_files.c Modified: trunk/blender/source/blender/blenkernel/intern/image.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/image.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/blenkernel/intern/image.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -328,13 +328,6 @@ const char *libname; char str[FILE_MAX], strtest[FILE_MAX]; - /* escape when name is directory */ - len= strlen(name); - if(len) { - if(name[len-1]=='/' || name[len-1]=='\\') - return NULL; - } - BLI_strncpy(str, name, sizeof(str)); BLI_path_abs(str, G.sce); Modified: trunk/blender/source/blender/blenkernel/intern/object.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/object.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/blenkernel/intern/object.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -1724,10 +1724,8 @@ object_to_mat3(ob, tmat); copy_m4_m3(mat, tmat); - - mat[3][0]= ob->loc[0] + ob->dloc[0]; - mat[3][1]= ob->loc[1] + ob->dloc[1]; - mat[3][2]= ob->loc[2] + ob->dloc[2]; + + add_v3_v3v3(mat[3], ob->loc, ob->dloc); } int enable_cu_speed= 1; Modified: trunk/blender/source/blender/blenloader/intern/readfile.c =================================================================== --- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -962,7 +962,7 @@ gzfile= gzopen(name, "rb"); - if (NULL == gzfile) { + if (gzfile == Z_NULL) { BKE_report(reports, RPT_ERROR, "Unable to open"); return NULL; } else { Modified: trunk/blender/source/blender/blenloader/intern/writefile.c =================================================================== --- trunk/blender/source/blender/blenloader/intern/writefile.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/blenloader/intern/writefile.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -2481,7 +2481,7 @@ file = open(tempname,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666); if(file == -1) { - BKE_report(reports, RPT_ERROR, "Unable to open file for writing."); + BKE_reportf(reports, RPT_ERROR, "Can't open file for writing: %s.", strerror(errno)); return 0; } Modified: trunk/blender/source/blender/editors/space_image/image_ops.c =================================================================== --- trunk/blender/source/blender/editors/space_image/image_ops.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/editors/space_image/image_ops.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -28,6 +28,7 @@ #include <stddef.h> #include <string.h> #include <stdlib.h> +#include <errno.h> #include "MEM_guardedalloc.h" @@ -688,10 +689,14 @@ RNA_string_get(op->ptr, "filepath", str); /* default to frame 1 if there's no scene in context */ + + errno= 0; + ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1); if(!ima) { if(op->customdata) MEM_freeN(op->customdata); + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", str, errno ? strerror(errno) : "Unsupported image format"); return OPERATOR_CANCELLED; } Modified: trunk/blender/source/blender/editors/space_node/node_edit.c =================================================================== --- trunk/blender/source/blender/editors/space_node/node_edit.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/editors/space_node/node_edit.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -31,6 +31,7 @@ #include <stdlib.h> #include <math.h> #include <string.h> +#include <errno.h> #include "MEM_guardedalloc.h" @@ -2248,21 +2249,28 @@ { char path[FILE_MAX]; RNA_string_get(op->ptr, "filepath", path); + + errno= 0; + ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", path, errno ? strerror(errno) : "Unsupported image format"); + return OPERATOR_CANCELLED; + } } else if(RNA_property_is_set(op->ptr, "name")) { char name[32]; RNA_string_get(op->ptr, "name", name); ima= (Image *)find_id("IM", name); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Image named \"%s\", not found.", name); + return OPERATOR_CANCELLED; + } } - if(!ima) { - BKE_report(op->reports, RPT_ERROR, "Not an Image."); - return OPERATOR_CANCELLED; - } - - node_deselectall(snode); if (snode->nodetree->type==NTREE_COMPOSIT) Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c =================================================================== --- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -761,7 +761,8 @@ BLI_remlink(lb, seq); if(seq==last_seq) seq_active_set(scene, NULL); if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve */ seq_free_sequence(scene, seq); } seq= seqn; @@ -1700,18 +1701,16 @@ int start_ofs, cfra, frame_end; int step= RNA_int_get(op->ptr, "length"); - if(ed==NULL) - return OPERATOR_CANCELLED; + seq= ed->seqbasep->first; /* poll checks this is valid */ - seq= ed->seqbasep->first; - while (seq) { if((seq->flag & SELECT) && (seq->type == SEQ_IMAGE) && (seq->len > 1)) { /* remove seq so overlap tests dont conflict, see seq_free_sequence below for the real free'ing */ seq_next = seq->next; BLI_remlink(ed->seqbasep, seq); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve and assign to split image strips */ start_ofs = cfra = seq_tx_get_final_left(seq, 0); frame_end = seq_tx_get_final_right(seq, 0); @@ -1735,11 +1734,16 @@ strip_new->stripdata= se_new= MEM_callocN(sizeof(StripElem)*1, "stripelem"); strncpy(se_new->name, se->name, FILE_MAXFILE-1); calc_sequence(scene, seq_new); - seq_new->flag &= ~SEQ_OVERLAP; - if (seq_test_overlap(ed->seqbasep, seq_new)) { - shuffle_seq(ed->seqbasep, seq_new, scene); + + if(step > 1) { + seq_new->flag &= ~SEQ_OVERLAP; + if (seq_test_overlap(ed->seqbasep, seq_new)) { + shuffle_seq(ed->seqbasep, seq_new, scene); + } } + /* XXX, COPY FCURVES */ + strncpy(seq_new->name+2, seq->name+2, sizeof(seq->name)-2); seqbase_unique_name_recursive(&scene->ed->seqbase, seq_new); cfra++; Modified: trunk/blender/source/blender/makesrna/intern/rna_main_api.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_main_api.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/makesrna/intern/rna_main_api.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -28,6 +28,7 @@ #include <stdlib.h> #include <stdio.h> +#include <errno.h> #include "RNA_define.h" #include "RNA_access.h" @@ -260,9 +261,17 @@ image->id.us--; return image; } -Image *rna_Main_images_load(Main *bmain, char *filepath) +Image *rna_Main_images_load(Main *bmain, ReportList *reports, char *filepath) { - return BKE_add_image_file(filepath, 0); + Image *ima; + + errno= 0; + ima= BKE_add_image_file(filepath, 0); + + if(!ima) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported image format"); + + return ima; } void rna_Main_images_remove(Main *bmain, ReportList *reports, Image *image) { @@ -316,9 +325,18 @@ BKE_reportf(reports, RPT_ERROR, "MetaBall \"%s\" must have zero users to be removed, found %d.", mb->id.name+2, ID_REAL_USERS(mb)); } -VFont *rna_Main_fonts_load(Main *bmain, char *filepath) +VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, char *filepath) { - return load_vfont(filepath); + VFont *font; + + errno= 0; + font= load_vfont(filepath); + + if(!font) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported font format"); + + return font; + } void rna_Main_fonts_remove(Main *bmain, ReportList *reports, VFont *vfont) { @@ -394,12 +412,17 @@ free_libblock(&bmain->text, text); /* XXX python now has invalid pointer? */ } -Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* path) + +Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* filepath) { - Text *txt= add_text(path, bmain->name); - if(txt==NULL) - BKE_reportf(reports, RPT_ERROR, "Couldn't load text from path \"%s\".", path); + Text *txt; + errno= 0; + txt= add_text(filepath, bmain->name); + + if(!txt) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unable to load text"); + return txt; } @@ -692,6 +715,7 @@ RNA_def_function_return(func, parm); func= RNA_def_function(srna, "load", "rna_Main_images_load"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Load a new image into the main database"); parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the file to load."); RNA_def_property_flag(parm, PROP_REQUIRED); @@ -791,6 +815,7 @@ RNA_def_struct_ui_text(srna, "Main Fonts", "Collection of fonts"); func= RNA_def_function(srna, "load", "rna_Main_fonts_load"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Load a new font into the main database"); parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the font to load."); RNA_def_property_flag(parm, PROP_REQUIRED); Modified: trunk/blender/source/blender/python/generic/bgl.c =================================================================== --- trunk/blender/source/blender/python/generic/bgl.c 2010-07-03 17:39:29 UTC (rev 29905) +++ trunk/blender/source/blender/python/generic/bgl.c 2010-07-03 17:47:06 UTC (rev 29906) @@ -322,20 +322,20 @@ } if (buf->type==GL_BYTE) { - if (!PyArg_Parse(v, "b;Coordinates must be ints", &buf->buf.asbyte[i])) + if (!PyArg_Parse(v, "b:Coordinates must be ints", &buf->buf.asbyte[i])) return -1; } else if (buf->type==GL_SHORT) { - if (!PyArg_Parse(v, "h;Coordinates must be ints", &buf->buf.asshort[i])) + if (!PyArg_Parse(v, "h:Coordinates must be ints", &buf->buf.asshort[i])) return -1; @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs