X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkConfigurationFile.cxx;h=f19f5075f6bc7fc11b7a1bed711ed20a40a7fd5c;hb=cf155931d4fded21cd2aaaeb0f3ead82067d2bef;hp=b1292caca398d61c99a4b385b9805ee129516eb9;hpb=a86e449e78ba07cd05cb267efea47eef2c6ab51a;p=bbtk.git diff --git a/kernel/src/bbtkConfigurationFile.cxx b/kernel/src/bbtkConfigurationFile.cxx index b1292ca..f19f507 100644 --- a/kernel/src/bbtkConfigurationFile.cxx +++ b/kernel/src/bbtkConfigurationFile.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkConfigurationFile.cxx,v $ Language: C++ - Date: $Date: 2008/02/22 17:36:42 $ - Version: $Revision: 1.11 $ + Date: $Date: 2008/10/15 13:02:14 $ + Version: $Revision: 1.16 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -29,6 +29,8 @@ #include // for getcwd #endif + + namespace bbtk { @@ -36,25 +38,23 @@ namespace bbtk /// Constructor ConfigurationFile::ConfigurationFile() { - // file separator -#if defined(_WIN32) - mFile_separator = "\\"; -#else - mFile_separator = "/"; -#endif + + mFile_separator = VALID_FILE_SEPARATOR; // ==> Set system paths mBin_path = GetExecutablePath(); - mInstall_path = mBin_path + mFile_separator + ".."; +//EED mInstall_path = mBin_path + mFile_separator + ".."; + mInstall_path = mBin_path + "/.."; // The relative path to the doc folder (=BBTK_DOC_REL_PATH) mDoc_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH); -//EED mDoc_rel_path = BBTK_STRINGIFY_SYMBOL(doc); // The path to the doc folder (=mInstall_path+"/"+mDoc_rel_path) - mDoc_path = mInstall_path + mFile_separator + mDoc_rel_path; +//EED mDoc_path = mInstall_path + mFile_separator + mDoc_rel_path; + mDoc_path = mInstall_path + "/" + mDoc_rel_path; // The relative path to the doc folder (=BBTK_BBS_REL_PATH) mBbs_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_BBS_REL_PATH); // The path to the bbs folder (=mInstall_path+"/"+mBbs_rel_path) - mBbs_path = mInstall_path + mFile_separator + mBbs_rel_path; +//EED mBbs_path = mInstall_path + mFile_separator + mBbs_rel_path; + mBbs_path = mInstall_path + "/" + mBbs_rel_path; // The relative path to the rsc folder (=BBTK_RSC_REL_PATH) // mRsc_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_RSC_REL_PATH); // The path to the rsc folder (=mInstall_path+"/"+mRsc_rel_path) @@ -62,25 +62,47 @@ namespace bbtk // 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 - mData_path = mInstall_path + mFile_separator + BBTK_STRINGIFY_SYMBOL(BBTK_DATA_REL_PATH); +//EED mData_path = mInstall_path + mFile_separator + BBTK_STRINGIFY_SYMBOL(BBTK_DATA_REL_PATH); + mData_path = mInstall_path + "/" + BBTK_STRINGIFY_SYMBOL(BBTK_DATA_REL_PATH); + + Utilities::replace( mBin_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + Utilities::replace( mInstall_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + Utilities::replace( mDoc_rel_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + Utilities::replace( mDoc_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + Utilities::replace( mBbs_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + Utilities::replace( mData_path , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); bbtkMessage("Config",1," ==> bin : '"< prefix : '"< doc : '"< bbs : '"< rsc : '"< data : '"< First we look for bbtk_config.xml in "." @@ -109,8 +141,11 @@ namespace bbtk // LG : throw an exception } - std::string configXmlFullPathName = currentDir + mFile_separator + "bbtk_config.xml"; - +// std::string configXmlFullPathName = currentDir + mFile_separator + "bbtk_config.xml"; + std::string configXmlFullPathName = currentDir ; + configXmlFullPathName += "/bbtk_config.xml"; + Utilities::replace( configXmlFullPathName , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR); + if ( Utilities::FileExists( configXmlFullPathName )) { bbtkMessage("Config",1, "ConfigurationFile : [" << configXmlFullPathName << @@ -122,12 +157,7 @@ namespace bbtk // ==> Then we look for bbtk_config.xml in ".bbtk" else { -#if defined(__GNUC__) - std::string str_home(getenv("HOME")); -#elif defined(_WIN32) - std::string str_home(getenv("USERPROFILE")); -#endif - configXmlFullPathName = str_home + mFile_separator + ".bbtk/bbtk_config.xml"; + configXmlFullPathName = Utilities::MakeUserSettingsFullFileName("bbtk_config.xml"); if (!Utilities::FileExists( configXmlFullPathName )) { // ==> Nothing found, we create bbtk_config.xml in ".bbtk" @@ -439,6 +469,59 @@ namespace bbtk } //========================================================================= + //========================================================================= + bool ConfigurationFile::AddPackagePathsAndWrite( const std::string& path ) + { + bbtkDebugMessageInc("Config",9, + "ConfigurationFile::AddPackagePathsAndWrite(" + <error != eXMLErrorNone ) + { + std::string mess = GetErrorMessage(res,Get_config_xml_full_path()); + delete res; + bbtkDebugMessage("Config",1,mess<< std::endl); + bbtkError(mess); + } + delete res; + +#ifdef _WIN32 + std::string bbs_path = path + "/bbs"; +#else + std::string bbs_path = path + "/share/bbtk/bbs" ; +#endif + XMLNode BBSPATH = BB.addChild((XMLCSTR)"bbs_path"); + BBSPATH.addText((XMLCSTR)bbs_path.c_str()); + Utilities::replace(bbs_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR); + mBbs_paths.push_back(bbs_path); + +#ifdef _WIN32 + std::string pack_path = path + "/bin"; + std::string pack_path = path + "/lib"; +#else + std::string pack_path = path ; +#endif + XMLNode PACKPATH = BB.addChild((XMLCSTR)"package_path"); + PACKPATH.addText((XMLCSTR)pack_path.c_str()); + Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR); + mPackage_paths.push_back(pack_path); + + XMLError err = BB.writeToFile((XMLCSTR)Get_config_xml_full_path().c_str()); + if ( err != eXMLErrorNone ) + { + std::string mess = GetErrorMessage(res,Get_config_xml_full_path()); + bbtkDebugMessage("Config",1,mess<< std::endl); + bbtkError(mess); + } + + return true; + } + //========================================================================= //========================================================================= void ConfigurationFile::GetHelp(int level) const