X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkUtilities.cxx;h=c7cce8103712581dc28b29f8e712352fd1266dac;hb=ce4491d66577c9daf930cb8744e738e4b7220fe7;hp=7c02a604027393f9c4075cde07bd0f05c530a2ec;hpb=f5d5e297c656fb1304cccd72e9ac347c0bddbd09;p=bbtk.git diff --git a/kernel/src/bbtkUtilities.cxx b/kernel/src/bbtkUtilities.cxx index 7c02a60..c7cce81 100644 --- a/kernel/src/bbtkUtilities.cxx +++ b/kernel/src/bbtkUtilities.cxx @@ -1,37 +1,50 @@ -/*========================================================================= +/* + # --------------------------------------------------------------------- + # + # 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: bbtkUtilities.cxx,v $ Language: C++ - Date: $Date: 2009/10/05 22:44:48 $ - Version: $Revision: 1.14 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.15 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) -* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux -* -* 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. -* ------------------------------------------------------------------------ */ + +#include "creaSystem.h" #include "bbtkUtilities.h" #include "bbtkMessageManager.h" +//EED 2018-07-16 +#if defined(_WIN32) + #include +#endif + #if defined(MACOSX) // assume this is OSX # include # include // _NSGetExecutablePath : must add -framework CoreFoundation to link line @@ -275,8 +288,10 @@ namespace bbtk libname += pkgname; #if defined(MACOSX) libname += ".dylib"; -#else - libname += ".so"; +#elif defined(WIN32) // mingw + libname += ".dll"; +#else // Linux + libname += ".so"; #endif #elif defined(_WIN32) @@ -325,12 +340,8 @@ namespace bbtk /// Returns the user settings dir, e.g. /home/username/.bbtk std::string Utilities::GetUserSettingsDir() { -#if defined(__GNUC__) - std::string str_home(getenv("HOME")); -#elif defined(_WIN32) - std::string str_home(getenv("USERPROFILE")); -#endif - std::string fullname = str_home + "/.bbtk"; + std::string str_Home=Utilities::GetEnvHome(); + std::string fullname = str_Home + "/.bbtk"; MakeValidFileName(fullname); return fullname; } @@ -341,11 +352,7 @@ namespace bbtk /// in user settings dir, e.g. /home/username/.bbtk/ std::string Utilities::MakeUserSettingsFullFileName(const std::string& name) { -#if defined(__GNUC__) - std::string str_home(getenv("HOME")); -#elif defined(_WIN32) - std::string str_home(getenv("USERPROFILE")); -#endif + std::string str_home=Utilities::GetEnvHome(); std::string fullname = str_home + "/.bbtk/" + name; MakeValidFileName(fullname); return fullname; @@ -612,11 +619,39 @@ namespace bbtk } //========================================================================= + + + +//===================================================================================== +/* http://forums.codeguru.com/showthread.php?336106-WCHAR*-to-CHAR* +|| ::DESCRIPTION:: +|| This function will convert a WCHAR string to a CHAR string. +|| +|| Param 1 :: Pointer to a buffer that will contain the converted string. Ensure this +|| buffer is large enough; if not, buffer overrun errors will occur. +|| Param 2 :: Constant pointer to a source WCHAR string to be converted to CHAR +*/ +/* +void wtoc(const WCHAR* Source,CHAR* Dest) +{ + int i = 0; + while(Source[i] != '\0') + { + Dest[i] = (CHAR)Source[i]; + ++i; + } // while +} +*/ + + + + //========================================================================= // From http://www.fltk.org/newsgroups.php?gfltk.general+v:22083 // int get_app_path (char *pname, size_t pathsize) { + #ifdef LINUX /* Oddly, the readlink(2) man page says no NULL is appended. */ /* So you have to do it yourself, based on the return value: */ @@ -634,7 +669,12 @@ namespace bbtk #endif /* LINUX */ #ifdef WIN32 - long result = GetModuleFileName(NULL, pname, pathsize); + +//2018-07-06 mingw64 + wchar_t pname2[512]; + long result = GetModuleFileName(NULL, pname2, pathsize); + crea::System::wtoc(pname2,pname); +// long result = GetModuleFileName(NULL, pname, pathsize); if (result > 0) { /* fix up the dir slashes... */ @@ -732,6 +772,7 @@ namespace bbtk free (given_path); return status; #endif /* MACOSX */ + return -1; /* Path Lookup Failed */ } @@ -744,22 +785,102 @@ namespace bbtk { char name[PATH_MAX]; int err = get_app_path(name, PATH_MAX); + if (err) - { - bbtkGlobalError("Could not determine current executable path ?"); - } - + { + try + { + bbtkGlobalError("Could not determine current executable path ?"); + } + catch (bbtk::Exception e) + { + std::cerr << e.GetErrorMessage() << std::endl; + } + } + // remove the exe name char *slash; slash = strrchr(name, VALID_FILE_SEPARATOR_CHAR); if (slash) - { - *slash = 0; - } + { + *slash = 0; + } return name; } //========================================================================= +std::string Utilities::GetEnvHome() +{ +#if defined(_WIN32) + std::string strHome( getenv("USERPROFILE") ); +#elif defined(__GNUC__) + std::string strHome; + char *envHome=getenv("HOME"); + if (envHome!=NULL) + { + strHome=envHome; + } else { + strHome = "/var/www/testwtdbg/docroot"; + } // if +#endif + return strHome; +} + + + +//TAD Arbol CFT + + +//---------NodeTree--------------- + +NodeTreeC::NodeTreeC() +{ + +} + +NodeTreeC::NodeTreeC(std::string _data) +{ + data = _data; +} + +NodeTreeC::~NodeTreeC() +{ + +} +void NodeTreeC::deleteTree() +{ + data = ""; + std::cout<<"NodeTreeC::deleteTree 1"<