]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/ControlCreaDevManagerProject.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / ControlCreaDevManagerProject.cpp
diff --git a/lib/creaDevManagerLib/ControlCreaDevManagerProject.cpp b/lib/creaDevManagerLib/ControlCreaDevManagerProject.cpp
new file mode 100644 (file)
index 0000000..9660328
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * ControlCreaDevManagerProject.cpp
+ *
+ *  Created on: 5/11/2012
+ *      Author: daniel
+ */
+
+#include "ControlCreaDevManagerProject.h"
+
+#include <creaWx.h>
+#include <wx/dirdlg.h>
+#include <stdlib.h> // for getenv
+
+ControlCreaDevManagerProject::ControlCreaDevManagerProject()
+{
+  // TODO Auto-generated constructor stub
+
+}
+
+ControlCreaDevManagerProject::~ControlCreaDevManagerProject()
+{
+  // TODO Auto-generated destructor stub
+}
+
+bool ControlCreaDevManagerProject::CreateProject(const std::string& name, const std::string& dir, const std::string& author, const std::string& description)
+{
+
+#if(_WIN32)
+
+  std::string command("creaNewProject.bat ");
+  std::string command1("creaSed.exe ");
+  std::string command2("del ");
+
+  command  += "\"" + dir + "\" \"" + name + "\"";
+  command1 += "\"" + dir+"\\"+name+"\\CMakeLists.txt.in\" " + "NameOfTheProject " + name + "> \"" + dir + "\\" + name + "\\CMakeLists.txt\"";
+  command2 += "\"" + dir+"\\"+name+"\\CMakeLists.txt.in\"";
+  if ( ! system ( command.c_str() ) )
+  {
+    system ( command1.c_str() );
+    system ( command2.c_str() );
+
+  // Create a Package at the same time.   JPR
+    char *author = author.c_str();
+    std::string nomDirectory = dir + "\\" + name;
+    std::string nomPackageDirectory = nomDirectory + "\\" + "bbtk_" + name + "_PKG";
+    std::string bbCreatePackage("bbCreatePackage ");
+    bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+    system (bbCreatePackage.c_str());
+    std::string add;
+    add = "echo ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG) >> " + nomDirectory + "/CMakeLists.txt";
+    system(add.c_str());
+
+    wxMessageBox(_T("New Project created !"),_T("creaNewProject"), wxOK | wxICON_INFORMATION);
+  }
+  else
+  {
+    wxString err(_T("An error occured while running '"));
+    err +=  crea::std2wx(command) + _T("'");
+    wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
+    return false;
+  }
+
+// ------ LINUX / MacOS
+
+#else
+  std::string command("creaNewProject.sh ");
+  command += "\"" + dir + "\"" +" " + name;
+  std::cout << "executing " << command << std::endl;
+  if ( ! system ( command.c_str() ) )
+  {
+    //wxMessageBox(_T("New Project created !"),_T("creaNewProject"), wxOK | wxICON_INFORMATION);
+
+    std::string nomDirectory = dir + "/" + name;
+    std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + name + "_PKG";
+
+    std::string bbCreatePackage("bbCreatePackage ");
+    bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+    std::cout << "executing " << bbCreatePackage << std::endl;
+    system (bbCreatePackage.c_str());
+
+    std::string add;
+    add = "echo 'ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG)' >> " + nomDirectory + "/CMakeLists.txt";
+    //std::cout << add << std::endl;
+    std::cout << "executing " << add << std::endl;
+    system(add.c_str());
+
+  }
+  else
+  {
+    wxString err(_T("An error occured while running '"));
+    err +=  crea::std2wx(command) + _T("'");
+    wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
+    return false;
+  }
+
+#endif
+
+   return true;
+}