creaImageIOTreeHandlerImageAdder.h

Go to the documentation of this file.
00001 #ifndef __creaImageIOTreeHandlerImageAdder_h_INCLUDED__
00002 #define __creaImageIOTreeHandlerImageAdder_h_INCLUDED__
00003 
00004 #include <creaImageIOTreeHandler.h>
00005 #include <creaImageIOTimestampDatabaseHandler.h>
00006 #include <creaImageIOSynchron.h>
00007 #include <creaImageIOImageReader.h>
00008 #include <wx/wx.h>
00009 #include <wx/progdlg.h>
00010 #include <creaWx.h>
00011 // Signal/slot mechanism for progress events
00012 #include <boost/signal.hpp>
00013 #include <boost/bind.hpp>
00014 
00015 
00016 namespace creaImageIO
00017 {
00022   //=======================================================================
00024 
00025   class TreeHandlerImageAdder
00026   {
00027           
00028   public:
00029     //====================================================================
00031     TreeHandlerImageAdder(TreeHandler* tree);
00033     ~TreeHandlerImageAdder();
00035     void SetTreeHandler(TreeHandler* tree) { mTreeHandler = tree;}
00037     void SetTimestampHandler(TimestampDatabaseHandler* tdh) { mTimestampHandler = tdh;}
00039         void SetSynchronizer(Synchronizer* s){mSynchronizer=s;}
00041         void SetCurrentDatabase(std::string cur){mCurrentDB=cur;}
00042     //====================================================================
00043 
00044     //====================================================================
00047     class Progress
00048     {
00049     public:
00050       Progress() { Reset(); }
00051       ~Progress() {}
00052       
00053       void Reset() 
00054       {
00055         mStop = false;
00056         mNumberScannedFiles = 0;
00057         mNumberScannedDirs = 0;
00058         mNumberHandledFiles = 0;
00059         mNumberAddedFiles = 0;
00060       }
00061 
00062       int GetNumberScannedFiles() const { return mNumberScannedFiles; }
00063       int GetNumberScannedDirs() const { return mNumberScannedDirs; }
00064       int GetNumberHandledFiles() const { return mNumberHandledFiles; }
00065       int GetNumberAddedFiles() const { return mNumberAddedFiles; }
00066 
00067       void IncNumberScannedFiles() { mNumberScannedFiles++; }
00068       void IncNumberScannedDirs() { mNumberScannedDirs++; }
00069       void IncNumberHandledFiles() { mNumberHandledFiles++; }
00070       void IncNumberAddedFiles() { mNumberAddedFiles++; }
00071 
00072       void SetStop() { mStop = true; }
00073       bool GetStop() const { return mStop; }
00074 
00075     private:
00076       bool mStop;
00077       int mNumberScannedFiles;
00078       int mNumberScannedDirs;
00079       int mNumberHandledFiles;
00080       int mNumberAddedFiles;
00081     };
00082     //=============================================
00083 
00084     //=============================================
00085     const Progress& GetProgress() const { return mProgress; }
00086     //=============================================
00087 
00088     //=============================================
00089     typedef boost::signal<void (Progress&)>  ProgressSignalType;
00090     typedef ProgressSignalType::slot_function_type ProgressCallbackType;
00091     //=============================================
00092 
00093    //==================================================================
00101     void ConnectProgressObserver(ProgressCallbackType callback);
00102    //==================================================================
00103 
00104     //====================================================================
00106     bool IsHandledFile( const std::string& filename);
00108     void AddFiles( const std::vector<std::string>& filename );
00110     void AddDirectory( const std::string& directory, 
00111                        bool recurse);
00113         void RemoveFile(tree::Node* node);
00115         void RemoveFiles(const std::vector<tree::Node*>& nodes);
00117         std::string Synchronize(bool repair, bool checkAttributes);
00119         void CheckSyncDirectory(const std::string &dirpath, 
00120                                                         bool recursive, 
00121                                                         bool repair,
00122                                                         bool checkAttributes,
00123                                                         std::vector<std::string> &i_ignorefiles,
00124                                                         std::vector<std::string> & attsModified,
00125                                                         std::vector<std::string> & newfiles);
00127         void CopyFiles(const std::vector<std::string>& filenames, const std::string directory  );
00129         void FindNode(tree::Node* parent, int level, 
00130                 const std::string& searchParam, 
00131                 const std::string& searchVal, 
00132                 tree::Node*& node);
00133 
00135         void FindNodePartial(tree::Node* parent, int level, const std::string& searchParam, const std::string& searchVal, tree::Node*& node);
00136  
00138         void CheckAttributes(bool repair, std::string& file, std::vector<std::string>& attsModified);
00140         void DeleteDriveFromMainDB(const std::string& drive);
00142         void DeleteDriveFromOtherDB(const std::string& drive);
00144         void EditField(tree::Node* node, const std::string& name, const std::string& key, const std::string& val);
00146         void GetAttributes(const std::vector<std::string>& params, 
00147           const std::string& filename, 
00148           std::vector<std::string>& results);
00149   
00150   
00151   
00152  
00153     //====================================================================
00154 
00155   private:
00156 
00160     void AddFile( const std::string& filename );
00161 
00163     void AddDirectoryRecursor( const std::string& directory, 
00164                                bool recurse,
00165                            const std::string &addKey);
00166 
00167     TreeHandler* mTreeHandler;
00168         TimestampDatabaseHandler* mTimestampHandler;
00169         Synchronizer* mSynchronizer;
00170     ImageReader mReader;
00171         std::string mCurrentDB;
00172     
00173     Progress mProgress;
00174     ProgressSignalType mProgressSignal;
00175 
00176 
00177   };
00178   // EO class TreeHandlerImageAdder
00179   //=======================================================================
00180 
00181 
00182  
00183 
00184 
00185 } // EO namespace creaImageIO
00186 
00187 #include <iostream>
00188 inline std::ostream& operator << ( std::ostream& o, 
00189                             const creaImageIO::TreeHandlerImageAdder::Progress& p)
00190 {
00191   o << p.GetNumberScannedFiles() << " files - "
00192     << p.GetNumberScannedDirs() << " dirs - "
00193     << p.GetNumberHandledFiles() << " handled -"
00194     << p.GetNumberAddedFiles() << " added";
00195   return o;
00196 }
00197 
00198 // EOF
00199 #endif  
00200 

Generated on Mon Jun 22 10:49:30 2009 for CreaImageIO by  doxygen 1.5.3