+#include "creaSystem.h"
#include "bbtkUtilities.h"
#include "bbtkMessageManager.h"
+//EED 2018-07-16
+#if defined(_WIN32)
+ #include <shlwapi.h>
+#endif
+
#if defined(MACOSX) // assume this is OSX
# include <sys/param.h>
# include <mach-o/dyld.h> // _NSGetExecutablePath : must add -framework CoreFoundation to link line
libname += pkgname;
#if defined(MACOSX)
libname += ".dylib";
-#else
- libname += ".so";
+#elif defined(WIN32) // mingw
+ libname += ".dll";
+#else // Linux
+ libname += ".so";
#endif
#elif defined(_WIN32)
/// 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;
}
/// 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;
}
//=========================================================================
+
+
+
+//=====================================================================================
+/* 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: */
#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... */
free (given_path);
return status;
#endif /* MACOSX */
+
return -1; /* Path Lookup Failed */
}
{
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
{
}
+void NodeTreeC::deleteTree()
+{
+ data = "";
+ std::cout<<"NodeTreeC::deleteTree 1"<<std::endl;
+ childs.erase(childs.begin(),childs.begin()+childs.size());
+ std::cout<<"NodeTreeC::deleteTree 2"<<std::endl;
+}
void NodeTreeC::insertChild(std::string _data)
{
NodeTreeC temp = NodeTreeC(_data);
childs.push_back(temp);
+ //std::cout<<"NodeTreeC::insertChild"<<std::endl;
}
-void NodeTreeC::treeTour()
+void NodeTreeC::treeTour(int lvl)
{
- std::cout <<"data "<< data << std::endl;
- std::cout <<"size "<< childs.size() << std::endl;
+ std::string space = "";
+ for (int j=0; j<lvl ; j++){
+ space += " ";
+ }
+ lvl++;
+ std::cout <<space<<"data: "<< data << " size: "<< childs.size() << std::endl;
for(int i = 0 ; i < childs.size(); i++)
{
- childs[i].treeTour();
+ childs[i].treeTour(lvl);
}
}
void NodeTreeC::setData(std::string _data)
{
data = _data;
+ //std::cout<<"NodeTreeC::setData"<<std::endl;
}
-
-//---------Tree------------
-/*
-TreeC::TreeC()
-{
-
-}
-
-TreeC::TreeC(std::string _data)
-{
- root = NodeTreeC(_data);
-}
-
-TreeC::~TreeC()
-{
-
-}
-
-void TreeC::insertRoot(std::string _data)
-{
- NodeTreeC temp = NodeTreeC(_data);
- root = temp;
-}
-
-void TreeC::treeTour()
-{
- root.treeTour();
-}
-
-void TreeC::insertData(std::string _data)
-{
-
-}
-
-TreeC* TreeC::getSubTree()
-{
- TreeC temp;
- temp.root = root.childs[0];
- return ;
-}
-*/
-
}