#include #include #include "boost/filesystem.hpp" namespace fs = boost::filesystem; //using namespace crea; namespace creaImageIO { //==================================================================== // Ctor TreeHandlerImageAdder::TreeHandlerImageAdder(TreeHandler* tree) : mTreeHandler(tree) { } // Dtor TreeHandlerImageAdder::~TreeHandlerImageAdder() { } //==================================================================== //==================================================================== void TreeHandlerImageAdder::ConnectProgressObserver(ProgressCallbackType callback) { mProgressSignal.connect(callback); } //==================================================================== //===================================================================== bool TreeHandlerImageAdder::IsHandledFile( const std::string& filename) { return (mReader.CanRead(filename)); } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddFiles( const std::vector& filenames) { mProgress.Reset(); unsigned int nbf = filenames.size(); std::vector::const_iterator i; for (i=filenames.begin();i!=filenames.end();++i) { mProgress.IncNumberScannedFiles(); if (IsHandledFile(*i)) { mProgress.IncNumberHandledFiles(); AddFile(*i); } mProgressSignal(mProgress); if (mProgress.GetStop()) break; } } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddDirectory( const std::string& directory, bool recurse) { mProgress.Reset(); AddDirectoryRecursor( directory, recurse ); GimmickDebugMessage(3,mProgress< attr; mTreeHandler->GetTree().GetDescriptor().BuildAttributeMap(attr); mReader.ReadAttributes(filename,attr); int lev = mTreeHandler->AddBranch(attr); // update the progress according to lev if (levGetTree().GetNumberOfLevels()) mProgress.IncNumberAddedFiles(); } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddDirectoryRecursor(const std::string &dirpath, bool recursive) { GimmickDebugMessage(4,"Scanning '"<status()) ) { if (recursive) AddDirectoryRecursor( itr->string(), recursive); } else { mProgress.IncNumberScannedFiles(); if (IsHandledFile(itr->string())) { mProgress.IncNumberHandledFiles(); AddFile( itr->string() ); } mProgressSignal(mProgress); if (mProgress.GetStop()) { itr = end_itr // break; } } } } //======================================================================= }