[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12544] trunk/blender/source/blender: == imagebrowser ==

Andrea Weikert elubie at gmx.net
Sat Nov 10 10:11:42 CET 2007


Revision: 12544
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12544
Author:   elubie
Date:     2007-11-10 10:11:42 +0100 (Sat, 10 Nov 2007)

Log Message:
-----------
== imagebrowser ==
* bugfix: calling imagebrowser with relative path results in non-existing dir
* cleanup: removed unneeded BIF_filelist_appenddir function
* added check for valid relative base when activating imagebrowser (like in filebrowser)

Modified Paths:
--------------
    trunk/blender/source/blender/include/BIF_filelist.h
    trunk/blender/source/blender/src/editimasel.c
    trunk/blender/source/blender/src/filelist.c

Modified: trunk/blender/source/blender/include/BIF_filelist.h
===================================================================
--- trunk/blender/source/blender/include/BIF_filelist.h	2007-11-10 02:53:19 UTC (rev 12543)
+++ trunk/blender/source/blender/include/BIF_filelist.h	2007-11-10 09:11:42 UTC (rev 12544)
@@ -52,7 +52,6 @@
 int					BIF_filelist_numfiles(struct FileList* filelist);
 const char *		BIF_filelist_dir(struct FileList* filelist);
 void				BIF_filelist_setdir(struct FileList* filelist, const char *dir);
-void				BIF_filelist_appenddir(struct FileList* filelist, const char *relname);
 struct direntry *	BIF_filelist_file(struct FileList* filelist, int index);
 void				BIF_filelist_hidedot(struct FileList* filelist, short hide);
 void				BIF_filelist_setfilter(struct FileList* filelist, unsigned int filter);

Modified: trunk/blender/source/blender/src/editimasel.c
===================================================================
--- trunk/blender/source/blender/src/editimasel.c	2007-11-10 02:53:19 UTC (rev 12543)
+++ trunk/blender/source/blender/src/editimasel.c	2007-11-10 09:11:42 UTC (rev 12544)
@@ -127,6 +127,25 @@
 	#include <fnmatch.h>
 #endif
 
+static void imasel_split_file(SpaceImaSel *simasel, char *s1)
+{
+	char string[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
+
+	BLI_strncpy(string, s1, sizeof(string));
+
+	BLI_split_dirfile(string, dir, file);
+	
+	if(simasel->files) {
+		BIF_filelist_free(simasel->files);
+	}
+	BLI_strncpy(simasel->file, file, sizeof(simasel->file));
+	BLI_strncpy(simasel->dir, dir, sizeof(simasel->dir));
+
+	BIF_filelist_setdir(simasel->files, dir);
+
+	BLI_make_file_string(G.sce, simasel->dir, dir, "");
+}
+
 /**************** IMAGESELECT ******************************/
 
 /* the complete call; pulldown menu, and three callback types */
@@ -174,8 +193,10 @@
 		simasel->files = BIF_filelist_new();
 	}
 
-	if(BLI_convertstringcode(name, G.sce, G.scene->r.cfra)) simasel->flag |= FILE_STRINGCODE;
-	else simasel->flag &= ~FILE_STRINGCODE;
+	if(G.relbase_valid && BLI_convertstringcode(name, G.sce, G.scene->r.cfra))
+		simasel->flag |= FILE_STRINGCODE;
+	else
+		simasel->flag &= ~FILE_STRINGCODE;
 
 	if (U.uiflag & USER_HIDE_DOT)
 		simasel->flag |= FILE_HIDE_DOT;
@@ -200,28 +221,23 @@
 		}
 	}
 	else if(type==FILE_LOADLIB) {
-		BLI_strncpy(simasel->dir, name, sizeof(simasel->dir));
-		BIF_filelist_setdir(simasel->files, simasel->dir);
+		
 		if( BIF_filelist_islibrary(simasel->files, temp, group) ) {
 			/* force a reload of the library-filelist */
 			BIF_filelist_free(simasel->files);
 			BIF_filelist_freelib(simasel->files);
+			BLI_strncpy(simasel->dir, name, sizeof(simasel->dir));
 			BIF_filelist_setdir(simasel->files, simasel->dir);
 			BIF_filelist_settype(simasel->files, type);
 		}
 		else {
-			BLI_split_dirfile(file, temp, name);
-			BLI_strncpy(simasel->dir, temp, sizeof(simasel->dir));
-			BIF_filelist_setdir(simasel->files, simasel->dir);
-			BIF_filelist_free(simasel->files);
+			imasel_split_file(simasel, name);
 			BIF_filelist_freelib(simasel->files);
 			BIF_filelist_settype(simasel->files, type);			
 		}
 	}
 	else {	/* FILE_BLENDER */
-		BLI_split_dirfile(file, temp, name);
-		BIF_filelist_free(simasel->files);
-		BIF_filelist_setdir(simasel->files, temp);
+		imasel_split_file(simasel, name);
 		BIF_filelist_settype(simasel->files, type);
 
 		BLI_cleanup_dir(G.sce, simasel->dir);
@@ -922,18 +938,16 @@
 					file = BIF_filelist_file(simasel->files, simasel->active_file);
 					
 					if(file && S_ISDIR(file->type)) {
-
-						BIF_filelist_appenddir(simasel->files, file->relname);				
-						BLI_strncpy(simasel->dir, BIF_filelist_dir(simasel->files), FILE_MAXDIR);
+						strcat(simasel->dir, file->relname);						
 						strcat(simasel->dir,"/");
 						simasel->file[0] = '\0';
 						BLI_cleanup_dir(G.sce, simasel->dir);
+						BIF_filelist_setdir(simasel->files, simasel->dir);
 						BIF_filelist_free(simasel->files);
 						simasel->active_file = -1;
 						simasel->scrollpos = 0;
 						do_draw = 1;
-						do_headdraw = 1;
-						
+						do_headdraw = 1;						
 					}
 					else if (file)
 					{

Modified: trunk/blender/source/blender/src/filelist.c
===================================================================
--- trunk/blender/source/blender/src/filelist.c	2007-11-10 02:53:19 UTC (rev 12543)
+++ trunk/blender/source/blender/src/filelist.c	2007-11-10 09:11:42 UTC (rev 12544)
@@ -441,12 +441,6 @@
 	BLI_strncpy(filelist->dir, dir, FILE_MAXDIR);
 }
 
-void BIF_filelist_appenddir(struct FileList* filelist, const char *relname)
-{
-	strcat(filelist->dir, relname);	
-	BLI_cleanup_dir(G.sce, filelist->dir);
-}
-
 void BIF_filelist_imgsize(struct FileList* filelist, short w, short h)
 {
 	filelist->prv_w = w;





More information about the Bf-blender-cvs mailing list