]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMProject.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / modelCDMProject.cpp
index 14422b6286332463bbe1fa7f82e6b9db64d8ed32..520fc0e8d822c92d637a3e1b0e21920ff9df9729 100644 (file)
@@ -263,7 +263,11 @@ bool modelCDMProject::SetVersion(const std::string& version, std::string*& resul
   time_t now = time(0);
 
   tm ltm;
+#ifdef _WIN32
   localtime_s(&ltm, &now);
+#else
+  ltm = *(localtime(&now));
+#endif
 
   std::stringstream date;
   date << ltm.tm_mday << "/" << 1 + ltm.tm_mon << "/" << 1900 + ltm.tm_year;
@@ -297,7 +301,11 @@ bool modelCDMProject::SetVersion(const std::string& version, std::string*& resul
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + this->path + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#else
   std::string renameCommand = "mv \"" + this->path + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#endif
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
@@ -369,7 +377,11 @@ modelCDMIProjectTreeNode* modelCDMProject::CreatePackage(
   //call project to create package : use bbCreatePackage <path> <name> [author] [description]
   std::string creationCommand = "bbCreatePackage \"" + this->path + "\" \"" + nameFixed + "\" \"" + authorFixed + "\" \"" + descriptionFixed + "\"";
   //TODO: bbCreatePackage script always returning 0. It should return 1 or greater if any error
-  if(system(creationCommand.c_str()))
+  bool resultCommand = 0 != system(creationCommand.c_str());
+#ifdef _WIN32
+  resultCommand = false;
+#endif
+  if(resultCommand)
     {
       result = new std::string("An error occurred while running '" + creationCommand + "'.");
       return NULL;
@@ -404,13 +416,14 @@ modelCDMIProjectTreeNode* modelCDMProject::CreateLibrary(
 
 modelCDMIProjectTreeNode* modelCDMProject::CreateApplication(
     const std::string& name,
+    const int& type,
     std::string*& result,
     const std::string& path
 )
 {
   if(this->appli != NULL)
     {
-      return this->appli->CreateApplication(name, result);
+      return this->appli->CreateApplication(name, type, result);
     }
   result = new std::string("there is no appli folder in this project.");
   return NULL;
@@ -680,6 +693,13 @@ bool modelCDMProject::ConfigureBuild(std::string*& result)
   //TODO: adjust for windows and mac
 #ifdef _WIN32
   // ------ Windows
+  if(0 == system("cmake-gui"))
+    return true;
+  else
+    {
+         result = new std::string("There was an error opening cmake-gui. Please make sure it's installed and that cmake's bin folder is in the system path.");
+      return false;
+    }
 #elif __APPLE__
   // ------ Apple
 #else
@@ -719,6 +739,17 @@ bool modelCDMProject::Build(std::string*& result, const std::string& line)
   //TODO: adjust for windows and mac
 #ifdef _WIN32
   // ------ Windows
+       //\\..\\IDE\\VCExpress.exe \"" + this->buildPath + CDMUtilities::SLASH + this->nameProject + ".sln\"
+//     std::string command = "\"" + std::string(getenv("VS90COMNTOOLS")) + "..\\IDE\\VCExpress.exe\" \"" + this->buildPath + CDMUtilities::SLASH + this->nameProject + ".sln\" &";
+       std::string command = "\"\"%VS90COMNTOOLS%..\\IDE\\VCExpress.exe\" \"" + this->buildPath + CDMUtilities::SLASH + this->nameProject + ".sln\" &\"";
+       command = "start cmd.exe /k " + command + " &";
+  if(0 == system(command.c_str()))
+    return true;
+  else
+    {
+      result = new std::string("An error has happened running: \"" + command + "\". Please make sure to have visual c++ express installed and to have the VS90COMNTOOLS environment variable set.");
+         return false;
+    }
 #elif __APPLE__
   // ------ Apple
 #else
@@ -764,22 +795,41 @@ bool modelCDMProject::Build(std::string*& result, const std::string& line)
   return true;
 }
 
-bool modelCDMProject::Connect(std::string*& result)
+bool modelCDMProject::Connect(std::string*& result, const std::string& folder)
 {
-  //TODO: adjust for windows and mac
+  //TODO: adjust for mac
 #ifdef _WIN32
   // ------ Windows
+  //open binary folder
+  wxDir dir(crea::std2wx(folder));
+
+  //if binary folder can't be opened then return false
+  if (!dir.IsOpened())
+    {
+      result = new std::string("The path could not be opened. Make sure the folder exists and contains a bbtkPackage file.");
+      return false;
+    }
+  //create plug command
+  std::string plugComm = "bbPlugPackage \"" + folder + "\"";
+  std::cout << "executing '" << plugComm << "'" << std::endl;
+  //execute plug command
+  if(system(std::string("start cmd.exe /k \"" + plugComm + "\"").c_str()))
+    {
+      //if there was an error then report it
+      result = new std::string("There was an error plugging the packages of the project, please check the console to read more about the problem.");
+      return false;
+    }
 #elif __APPLE__
   // ------ Apple
 #else
   // ------ Linux
   //open binary folder
-  wxDir dir(crea::std2wx((this->buildPath).c_str()));
+  wxDir dir(crea::std2wx(folder));
 
   //if binary folder can't be opened then return false
   if (!dir.IsOpened())
     {
-      result = new std::string("The build path could not be opened. Make sure to configure the project before compiling it");
+      result = new std::string("The path could not be opened. Make sure the folder exists and contains a bbtkPackage file.");
       return false;
     }
   //create plug command
@@ -789,7 +839,7 @@ bool modelCDMProject::Connect(std::string*& result)
   if(system(plugComm.c_str()))
     {
       //if there was an error then report it
-      result = new std::string("There was an error plugging the packages of the project, please check the console to read more about the problem.");
+      result = new std::string("There was an error plugging the packages of the project, please check the plugging.log in the build folder file to read more about the problem.");
       return false;
     }
 #endif