Exemple #1
0
static void filelist_read_library(struct FileList* filelist)
{
	if (!filelist) return;
	BLI_cleanup_dir(G.main->name, filelist->dir);
	filelist_from_library(filelist);
	if (!filelist->libfiledata) {
		int num;
		struct direntry *file;

		BLI_make_exist(filelist->dir);
		filelist_read_dir(filelist);
		file = filelist->filelist;
		for (num=0; num<filelist->numfiles; num++, file++) {
			if (BLO_has_bfile_extension(file->relname)) {
				char name[FILE_MAX];

				BLI_join_dirfile(name, sizeof(name), filelist->dir, file->relname);

				/* prevent current file being used as acceptable dir */
				if (BLI_path_cmp(G.main->name, name) != 0) {
					file->type &= ~S_IFMT;
					file->type |= S_IFDIR;
				}
			}
		}
	}
}
Exemple #2
0
static int file_extension_type(char *relname)
{
	if(BLO_has_bfile_extension(relname)) {
		return BLENDERFILE;
	} else if(file_is_blend_backup(relname)) {
		return BLENDERFILE_BACKUP;
	} else if(BLI_testextensie(relname, ".py")) {
		return PYSCRIPTFILE;
	} else if(BLI_testextensie(relname, ".txt")
			  || BLI_testextensie(relname, ".glsl")
			  || BLI_testextensie(relname, ".data")) {
		return TEXTFILE;
	} else if( BLI_testextensie(relname, ".ttf")
			  || BLI_testextensie(relname, ".ttc")
			  || BLI_testextensie(relname, ".pfb")
			  || BLI_testextensie(relname, ".otf")
			  || BLI_testextensie(relname, ".otc")) {
		return FTFONTFILE;			
	} else if(BLI_testextensie(relname, ".btx")) {
		return BTXFILE;
	} else if(BLI_testextensie(relname, ".dae")) {
		return COLLADAFILE;
	} else if(BLI_testextensie_array(relname, imb_ext_image)
			  || (G.have_quicktime && BLI_testextensie_array(relname, imb_ext_image_qt))) {
		return IMAGEFILE;			
	} else if(BLI_testextensie_array(relname, imb_ext_movie)) {
		return MOVIEFILE;			
	} else if(BLI_testextensie_array(relname, imb_ext_audio)) {
		return SOUNDFILE;
	} 
	return 0;
}
Exemple #3
0
void WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports)
{
	Library *li;
	int len;
	char di[FILE_MAX];
	
	len = strlen(target);
	
	if (len == 0) return;
	if (len >= FILE_MAX) {
		BKE_report(reports, RPT_ERROR, "Path too long, cannot save");
		return;
	}
 
	/* send the OnSave event */
	for (li= G.main->library.first; li; li= li->id.next) {
		if (BLI_streq(li->name, target)) {
			BKE_report(reports, RPT_ERROR, "Cannot overwrite used library");
			return;
		}
	}
	
	if (!BLO_has_bfile_extension(target) && (len+6 < FILE_MAX)) {
		sprintf(di, "%s.blend", target);
	} else {
		strcpy(di, target);
	}

//	if (BLI_exists(di)) {
// XXX		if(!saveover(di))
// XXX			return; 
//	}
	
	if (G.fileflags & G_AUTOPACK) {
		packAll(G.main, reports);
	}
	
	ED_object_exit_editmode(C, EM_DO_UNDO);

	do_history(di, reports);
	
	if (BLO_write_file(CTX_data_main(C), di, fileflags, reports)) {
		strcpy(G.sce, di);
		G.relbase_valid = 1;
		strcpy(G.main->name, di);	/* is guaranteed current file */

		G.save_over = 1; /* disable untitled.blend convention */

		if(fileflags & G_FILE_COMPRESS) G.fileflags |= G_FILE_COMPRESS;
		else G.fileflags &= ~G_FILE_COMPRESS;
		
		writeBlog();
	}

// XXX	waitcursor(0);
}
Exemple #4
0
static int path_extension_type(const char *path)
{
	if (BLO_has_bfile_extension(path)) {
		return FILE_TYPE_BLENDER;
	}
	else if (file_is_blend_backup(path)) {
		return FILE_TYPE_BLENDER_BACKUP;
	}
	else if (BLI_testextensie(path, ".app")) {
		return FILE_TYPE_APPLICATIONBUNDLE;
	}
	else if (BLI_testextensie(path, ".py")) {
		return FILE_TYPE_PYSCRIPT;
	}
	else if (BLI_testextensie_n(path, ".txt", ".glsl", ".osl", ".data", NULL)) {
		return FILE_TYPE_TEXT;
	}
	else if (BLI_testextensie_n(path, ".ttf", ".ttc", ".pfb", ".otf", ".otc", NULL)) {
		return FILE_TYPE_FTFONT;
	}
	else if (BLI_testextensie(path, ".btx")) {
		return FILE_TYPE_BTX;
	}
	else if (BLI_testextensie(path, ".dae")) {
		return FILE_TYPE_COLLADA;
	}
	else if (BLI_testextensie_array(path, imb_ext_image) ||
	         (G.have_quicktime && BLI_testextensie_array(path, imb_ext_image_qt)))
	{
		return FILE_TYPE_IMAGE;
	}
	else if (BLI_testextensie(path, ".ogg")) {
		if (IMB_isanim(path)) {
			return FILE_TYPE_MOVIE;
		}
		else {
			return FILE_TYPE_SOUND;
		}
	}
	else if (BLI_testextensie_array(path, imb_ext_movie)) {
		return FILE_TYPE_MOVIE;
	}
	else if (BLI_testextensie_array(path, imb_ext_audio)) {
		return FILE_TYPE_SOUND;
	}
	return 0;
}