X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fstd%2Fsrc%2FbbstdFilesFromDirectory.cxx;h=4caeae3c6cc4a96500ade9515abaeade4250e929;hb=ebd959d24db8fadb99999dbdecf69693d88e0629;hp=e444b9ba1a84291479c94335389004a9c255b16d;hpb=427d8c0ac838ab789a57b28f62a7f9ff243e7b60;p=bbtk.git diff --git a/packages/std/src/bbstdFilesFromDirectory.cxx b/packages/std/src/bbstdFilesFromDirectory.cxx index e444b9b..4caeae3 100644 --- a/packages/std/src/bbstdFilesFromDirectory.cxx +++ b/packages/std/src/bbstdFilesFromDirectory.cxx @@ -49,19 +49,27 @@ void FilesFromDirectory::Process() { Filenames.clear(); SimpleFilenames.clear(); - DirName = bbGetInputIn(); - bool rec = bbGetInputRecursive(); - /*int nbFiles = */ Explore(DirName, rec); - CleanFilenames( DirName ); + + if (bbGetInputActive()==true) + { + if (bbGetInputIn()!="") + { + DirName = bbGetInputIn(); + /*int nbFiles = */ Explore(DirName, bbGetInputRecursive(), bbGetInputRecursiveLevel() ); + CleanFilenames( DirName ); + } // if In + } // Active bbSetOutputOut(Filenames); bbSetOutputOutSimple(SimpleFilenames); } void FilesFromDirectory::bbUserSetDefaultValues() { + bbSetInputActive(true); bbSetInputIn("."); bbSetInputRecursive(false); bbSetInputType(0); + bbSetInputRecursiveLevel(999); } void FilesFromDirectory::bbUserInitializeProcessing() @@ -103,11 +111,14 @@ std::string FilesFromDirectory::NormalizePath(std::string const &pathname) -int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) +int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive, int recursiveLevel) { - int numberOfFiles = 0; - std::string dirName = NormalizePath(dirpath); - int tmpNumberOfFiles; + int numberOfFiles = 0; + +if (recursiveLevel>=0){ + + std::string dirName = NormalizePath(dirpath); + int tmpNumberOfFiles; std::string fileName; #ifdef _MSC_VER WIN32_FIND_DATA fileData; @@ -130,7 +141,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) numberOfFiles++; } // Type ALL_directories - tmpNumberOfFiles = Explore(dirName+fileName, recursive); + tmpNumberOfFiles = Explore(dirName+fileName, recursive,recursiveLevel-1); if ((bbGetInputType()==2)&&tmpNumberOfFiles==0) { std::string temp = dirName+fileName; @@ -249,7 +260,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) numberOfFiles++; } // Type All_directories - tmpNumberOfFiles = Explore( fileName, recursive); + tmpNumberOfFiles = Explore( fileName, recursive, recursiveLevel-1); if ((bbGetInputType()==2)&&tmpNumberOfFiles==0) { Filenames.push_back(fileName); @@ -277,6 +288,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) }// closedir #endif +} // if recursiveLevel return numberOfFiles; } @@ -286,24 +298,27 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) void FilesFromDirectory::CleanFilenames( std::string basePath ) { std::string tmpString; - int i,ii,sizeFilenames = Filenames.size(); - int j,sizeFileEnd = bbGetInputFileEnd().size(); - + int i,ii,sizeFilenames = Filenames.size(); + int j,sizeFileEnd = bbGetInputFileEnd().size(); int okEraseElement; - + int posStr; //Selecting just the files in the FileEnd List if (bbGetInputFileEnd().size()!=0) { for (i=sizeFilenames-1; i>=0; i--) { - okEraseElement=0; + okEraseElement = 0; for (j=0; j=0) { - okEraseElement++; - } // if FileEnd + std::string tmp=Filenames[i].substr( posStr ) ; + if (bbGetInputFileEnd()[j].compare( tmp )==0 ) + { + okEraseElement++; + } // if FileEnd + }// if posStr } // for j if (okEraseElement==0) @@ -312,14 +327,11 @@ void FilesFromDirectory::CleanFilenames( std::string basePath ) } } // for i } // if FileEnd !=0 - sizeFilenames = Filenames.size(); - // Cleanning paths with spaces for (i=0; i