]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkConfigurationFile.h
Feature #1774
[bbtk.git] / kernel / src / bbtkConfigurationFile.h
index 94992f8098882dfc3c09fcef6f2512f1653cd9fa..67c96e0b8c9c606031ad43c9d2c9b97dcb91b3c5 100644 (file)
@@ -1,20 +1,40 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
 /*=========================================================================
-                                                                                
   Program:   bbtk
   Module:    $RCSfile: bbtkConfigurationFile.h,v $
   Language:  C++
-  Date:      $Date: 2008/09/10 07:25:23 $
-  Version:   $Revision: 1.8 $
-                                                                                
-  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
-  l'Image). All rights reserved. See doc/license.txt or
-  http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+  Date:      $Date: 2012/11/16 08:49:01 $
+  Version:   $Revision: 1.13 $
+=========================================================================*/
 
-     This software is distributed WITHOUT ANY WARRANTY; without even
-     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-     PURPOSE.  See the above copyright notices for more information.
+                                                                       
 
-=========================================================================*/
 /**
  *\file
  *\brief Class bbtk::ConfigurationFile
@@ -33,7 +53,9 @@
 
 
 #ifdef WIN32
-#define _CRT_SECURE_NO_DEPRECATE
+  #if __VISUALC__ < 1400
+       #define _CRT_SECURE_NO_DEPRECATE
+  #endif
 #endif
 
 #include <stdio.h>
@@ -61,7 +83,7 @@ namespace bbtk
   {
   public:
     
-    static ConfigurationFile const &GetInstance()
+    static ConfigurationFileGetInstance()
     {
       static ConfigurationFile f;
       return f;
@@ -69,31 +91,28 @@ namespace bbtk
     
     ~ConfigurationFile();
     
-  private:
-    ConfigurationFile();
-    void InstallPath ();
-    
-  public:
     void GetHelp(int level) const;
 
+    /// Returns true iff the directory .bbtk has been created on construction
+    inline bool DotBbtkIsNew() { return mDot_bbtk_is_new; }
+
     inline const std::string& Get_description() const
     { return mDescription;}
-    //    inline const std::string& Get_url() const
-    //    { return mUrl;}
+
     inline const std::string& Get_data_path() const
     { return mData_path;}  
     inline const std::string& Get_file_separator() const
        { return mFile_separator;}
     
+    inline const std::string& Get_dot_bbtk_path() const
+    { return mDot_bbtk_path;}
     inline const std::string& Get_bin_path() const
     { return mBin_path;}
     inline const std::string& Get_install_path() const
     { return mInstall_path;}
     inline const std::string& Get_doc_path() const
     { return mDoc_path;}
-    inline const std::string& Get_rsc_path() const
-    { return mRsc_path;}
-    
+      
     inline const std::string& Get_root_bbs_path() const
     { return mBbs_path;}
     inline const std::vector<std::string>& Get_bbs_paths() const
@@ -103,13 +122,16 @@ namespace bbtk
     inline const std::string& Get_config_xml_full_path() const
     { return mConfig_xml_full_path;}
     inline const std::string& Get_default_temp_dir() const
-    { return mDefault_temp_dir;}
+    { return mTemp_path;}
+
+    bool AddPackagePathsAndWrite( const std::string& package_root_path );
     
   private:
+    ConfigurationFile();
+    void InstallPath ();
     void Read(const std::string& fileName);
-     std::string GetExecutablePath();
-     void CreateConfigXML( char *rootDirectory );
-    
+    void CreateConfigXML( char *rootDirectory );
+    void InitializeDotBbtkStructure();
     // Attributes :
   private :
     std::string mDescription; 
@@ -119,20 +141,18 @@ namespace bbtk
     /// Set automatically :
     /// The path to the executable (usually bbi)
     std::string mBin_path;
+    /// The path to the .bbtk user's dir (e.g. /home/username/.bbtk)
+    std::string mDot_bbtk_path;
     /// The path to the install prefix (=mBinPath+"/..")
     std::string mInstall_path;
-    /// The relative path to the doc folder (=BBTK_DOC_REL_PATH)
-    std::string mDoc_rel_path;
-    /// The path to the doc folder (=mInstall_path+"/"+mDoc_rel_path)
+    /// The path to the doc folder (=mDot_bbtk_path+"/doc")
     std::string mDoc_path;
+    /// Temp directory for generated data (=mDot_bbtk_path+"/tmp")
+    std::string mTemp_path;      
     /// The relative path to the doc folder (=BBTK_BBS_REL_PATH)
     std::string mBbs_rel_path;
     /// The path to the bbs folder (=mInstall_path+"/"+mBbs_rel_path)
     std::string mBbs_path;
-    /// The relative path to the rsc folder (=BBTK_RSC_REL_PATH)
-    std::string mRsc_rel_path;
-    /// The path to the rsc folder (=mInstall_path+"/"+mRsc_rel_path)
-    std::string mRsc_path;
     /// The path to the bbtk data folder 
     /// Initialized to mInstall_path+"/"+BBTK_DATA_REL_PATH
     /// But can be overriden by value read from bbtk_config.xml
@@ -150,9 +170,12 @@ namespace bbtk
     std::vector<std::string> mPackage_paths;
     /// If Packages link against extern dlls
     std::vector<std::string> mExt_dll_paths;
-    /// Temp directory for generated data
-    std::string mDefault_temp_dir;       
-  };
+
+
+    /// Set to true by InitializeDotBbtkStructure() if .bbtk has been newly
+    /// created
+    bool mDot_bbtk_is_new;
+   };
   
   
 }// namespace bbtk