]> Creatis software - crea.git/commitdiff
Feature #1711
authorDaniel Felipe Gonzalez <daniel.gonzalez@creatis.insa-lyon.fr>
Thu, 31 Jan 2013 13:55:11 +0000 (14:55 +0100)
committerDaniel Felipe Gonzalez <daniel.gonzalez@creatis.insa-lyon.fr>
Thu, 31 Jan 2013 13:55:11 +0000 (14:55 +0100)
CreaDevManager application implementation

- Changes for windows compatibility. Model ready and build ready. Some minor presentation bugs still present for windows

14 files changed:
lib/creaDevManagerLib/CDMUtilities.cpp
lib/creaDevManagerLib/CDMUtilities.h
lib/creaDevManagerLib/modelCDMAppli.cpp
lib/creaDevManagerLib/modelCDMApplication.cpp
lib/creaDevManagerLib/modelCDMBlackBox.cpp
lib/creaDevManagerLib/modelCDMLib.cpp
lib/creaDevManagerLib/modelCDMLibrary.cpp
lib/creaDevManagerLib/modelCDMMain.cpp
lib/creaDevManagerLib/modelCDMPackage.cpp
lib/creaDevManagerLib/modelCDMPackageSrc.cpp
lib/creaDevManagerLib/modelCDMProject.cpp
lib/creaDevManagerLib/modelCDMProject.h
lib/creaDevManagerLib/wxCDMApplicationDescriptionPanel.cpp
lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp

index 29ed9c0371ffafc1c8dc9c973566fc8ca256d402..09e25f31c06d8a64f1ea9896d214a145f94e1a4d 100644 (file)
@@ -112,7 +112,8 @@ namespace CDMUtilities
     std::string command = TEXT_EDITOR;
 
     if(file != "")
-      command += " \"" + file + "\" &";
+      command += " \"" + file + "\"";
+    command += " &";
 
     return system(command.c_str());
   }
@@ -122,7 +123,8 @@ namespace CDMUtilities
     std::string command = FILE_EXPLORER;
 
     if(file != "")
-      command += " \"" + file + "\" &";
+      command += " \"" + file + "\"";
+    command += " &";
 
     return system(command.c_str());
   }
@@ -131,7 +133,8 @@ namespace CDMUtilities
   {
     std::string comm = command;
     if(file != "")
-      comm += " \"" + file + "\" &";
+      comm += " \"" + file + "\"";
+    comm += " &";
 
     return system(comm.c_str());
   }
@@ -144,7 +147,12 @@ namespace CDMUtilities
 
   int openCreaToolsTools()
   {
+#ifdef _WIN32
+    std::string comm = "creaTools &";
+#else
     std::string comm = "creaTools.sh &";
+#endif
+    
     return system(comm.c_str());
   }
 
@@ -305,4 +313,18 @@ namespace CDMUtilities
     return true;
   }
 
+  std::string stringify(const std::string& line)
+  {
+       std::string res;
+       for (int i = 0; i < line.size(); i++)
+       {
+         if(line[i] == '\\')
+           res.push_back('\\');
+         if(line[i] == '\"')
+           res.push_back('\\');
+         res.push_back(line[i]);
+       }
+       return res;
+  }
+
 }
index 4236eb5faab832b8d8d97f6cebec59dbe7de344a..02c3b8285d7d852d76d9139fe21a068e9c3c0ee2 100644 (file)
@@ -170,6 +170,12 @@ namespace CDMUtilities
    * @return True if the class was successfully created.
    */
   bool createEmptyClass(const std::string& name, const std::string& path);
+  /**
+   * Creates a string replacing each \ by \\.
+   * @param line String to stringify.
+   * @return line stringified.
+   */
+  std::string stringify(const std::string& line);
 };
 
 #endif /* CDMUTILITIES_H_ */
index 4f61e13de3c84c765474ec4d709b798e46a5a265..be0852a35a7ea5a13ee43e360cc85dcec9aa28e5 100644 (file)
@@ -121,12 +121,29 @@ const std::vector<modelCDMApplication*>& modelCDMAppli::GetApplications() const
 }
 
 modelCDMApplication* modelCDMAppli::CreateApplication(
-    const std::string& name,
+    const std::string& namein,
     std::string*& result
 )
 {
+  std::vector<std::string> words;
+  CDMUtilities::splitter::split(words,namein," '/\\*\"%",CDMUtilities::splitter::no_empties);
+  std::string name;
+  for (int i = 0; i < (int)(words.size()); i++)
+    {
+         name += words[i];
+    }
+  if (name == "")
+    {
+      result = new std::string("The given name is not valid:  '/\\*\"% are forbidden.");
+         return NULL;
+    }
   //copy template application folder with new name
+#ifdef _WIN32
+  std::string copyCommand = "xcopy \"" + this->path + CDMUtilities::SLASH + "template_appli\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "\" /Y";
+#else
   std::string copyCommand = "cp -r \"" + this->path + CDMUtilities::SLASH + "template_appli\" \"" + this->path + CDMUtilities::SLASH + name + "\"";
+#endif
+
   if(system(copyCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + copyCommand + "'.");
@@ -150,7 +167,12 @@ modelCDMApplication* modelCDMAppli::CreateApplication(
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#else
   std::string renameCommand = "mv \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#endif
+
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
index 40fb8105b12dbb270f7e2704eb9cd5e7f95a7622..c77f3be7f9471511b915aafb9aebc6a0b6f5251e 100644 (file)
@@ -206,7 +206,12 @@ bool modelCDMApplication::SetExecutableName(const std::string& fileName, std::st
   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 + "'.");
index 295a4333b2a5eb537ded5e3c8a43a27f11d38935..73220cc924cc93d7bc416bf848e25384c0670073 100644 (file)
@@ -172,7 +172,12 @@ bool modelCDMBlackBox::SetAuthors(const std::string& authors, std::string*& resu
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
   std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
+  
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
@@ -232,7 +237,12 @@ bool modelCDMBlackBox::SetCategories(
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
   std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
+  
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
@@ -291,7 +301,11 @@ bool modelCDMBlackBox::SetDescription(
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#else
   std::string renameCommand = "mv \"" + pathHeader + ".tmp\" \"" + pathHeader + "\"";
+#endif
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
index 57411ec64f340fc70288a41e9d364eb33904831c..e3c29023fffc04797962496f86d7f948d1fb2a00 100644 (file)
@@ -121,12 +121,28 @@ const std::vector<modelCDMLibrary*>& modelCDMLib::GetLibraries() const
 }
 
 modelCDMLibrary* modelCDMLib::CreateLibrary(
-    const std::string& name,
+    const std::string& namein,
     std::string*& result
 )
 {
+  std::vector<std::string> words;
+  CDMUtilities::splitter::split(words,namein," '/\\*\"%",CDMUtilities::splitter::no_empties);
+  std::string name;
+  for (int i = 0; i < (int)(words.size()); i++)
+    {
+         name += words[i];
+    }
+  if (name == "")
+    {
+      result = new std::string("The given name is not valid:  '/\\*\"% are forbidden.");
+         return NULL;
+    }
   //copy template library folder with new name
+#ifdef _WIN32
+       std::string copyCommand = "xcopy \"" + this->path + CDMUtilities::SLASH + "template_lib\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "\" /Y";
+#else
   std::string copyCommand = "cp -r \"" + this->path + CDMUtilities::SLASH + "template_lib\" \"" + this->path + CDMUtilities::SLASH + name + "\"";
+#endif
   if(system(copyCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + copyCommand + "'.");
@@ -150,7 +166,11 @@ modelCDMLibrary* modelCDMLib::CreateLibrary(
   in.close();
   out.close();
   //delete old file and rename new file
+#ifdef _WIN32
+  std::string renameCommand = "move /Y \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#else
   std::string renameCommand = "mv \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\"";
+#endif
   if(system(renameCommand.c_str()))
     {
       result = new std::string("An error occurred while running '" + renameCommand + "'.");
index 58cc8929b669dea3741d889e30b937d297f34fae..7b99318b58333425375949bdd6d8b689dd4d5fe8 100644 (file)
@@ -181,7 +181,11 @@ bool modelCDMLibrary::SetNameLibrary(const std::string& fileName, std::string*&
   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 + "'.");
index 71f60f6b84513eabe5ad63dce70c3ec48441242c..8d69741da2b3d46229e93248e4ae5943355ad256 100644 (file)
@@ -38,6 +38,7 @@
 #include <cstdlib>
 #include <iostream>
 #include <string>
+#include <vector>
 #include <cstdio>
 #include <fstream>
 
@@ -175,11 +176,13 @@ bool modelCDMMain::OpenProject(
   std::string pathBuild = "";
 
   //check if Makefile file exists
-  std::string pathMakefile = pathFixed + CDMUtilities::SLASH + "Makefile";
-  FILE* pFile;
 #ifdef _WIN32
+  std::string pathMakefile = pathFixed + CDMUtilities::SLASH + "CMakeCache.txt";
+  FILE* pFile;
   errno_t errorOpen = fopen_s(&pFile, pathMakefile.c_str(), "r");
 #else
+  std::string pathMakefile = pathFixed + CDMUtilities::SLASH + "Makefile";
+  FILE* pFile;
   pFile = fopen(pathMakefile.c_str(), "r");
   bool errorOpen = (pFile == NULL);
 #endif
@@ -191,9 +194,29 @@ bool modelCDMMain::OpenProject(
       readFile.open(pathMakefile.c_str());
       std::string word;
 
+      
+#ifdef _WIN32
+         while(!isBinary && !readFile.eof())
+        {
+            getline(readFile, word, '\n');
+                       std::vector<std::string> words;
+                       CDMUtilities::splitter::split(words,word,"=",CDMUtilities::splitter::no_empties);
+                       if(words.size() && words[0] == "CMAKE_HOME_DIRECTORY:INTERNAL")
+            {
+                         pathBuild = pathFixed;
+              pathFixed = CDMUtilities::fixPath(words[1]);
+                         for (int i = 0; i < (int)(pathFixed.size()); i++)
+                {
+                  if (pathFixed[i]=='/')
+                                         pathFixed[i]='\\';
+                }
+              isBinary = true;
+            }
+        }
+#else
       while(!isBinary && readFile >> word)
         {
-          if(word == "CMAKE_SOURCE_DIR")
+            if(word == "CMAKE_SOURCE_DIR")
             {
               readFile >> word;
               readFile.ignore();
@@ -202,7 +225,8 @@ bool modelCDMMain::OpenProject(
               pathFixed = CDMUtilities::fixPath(word);
               isBinary = true;
             }
-        }
+           }
+#endif
       readFile.close();
     }
 
@@ -267,7 +291,7 @@ bool modelCDMMain::OpenProject(
     }
   else
     {
-      result = new std::string("No source folder found. Please make sure to select either the project's build or source folder.");
+      result = new std::string("No source folder found. Please make sure to select either the project's build or source folder. " + pathBuild + pathFixed);
       return false;
     }
 
index 78b6adf6ffdeb85c5c92e8d31094861e516021ad..66c5e22fdac803ba73e4cc655fe2a3e87cae16ec 100644 (file)
@@ -244,7 +244,12 @@ bool modelCDMPackage::SetAuthors(const std::string& authors, 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 + "'.");
@@ -296,7 +301,12 @@ bool modelCDMPackage::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 + "'.");
@@ -342,7 +352,12 @@ bool modelCDMPackage::SetDescription(const std::string& description, std::string
   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 + "'.");
index 17c37a254c47790c2e1bcbd6333a5be65e9a6833..5c10bba10b32c7c84b77d4fe44758204ec974536 100644 (file)
@@ -209,10 +209,17 @@ modelCDMBlackBox* modelCDMPackageSrc::CreateBlackBox(
   //create command
   std::string command = "bbCreateBlackBox";
   command += " \"" + this->path + "\"";
+#ifdef _WIN32
+  command += " " + package;
+  command += " " + bbName;
+  command += " " + type;
+  command += " " + format;
+#else
   command += " \"" + package + "\"";
   command += " \"" + bbName + "\"";
   command += " \"" + type + "\"";
   command += " \"" + format + "\"";
+#endif
   command += " \"" + bbAuthors + "\"";
   command += " \"" + bbDescription + "\"";
   command += " \"" + bbCategories + "\"";
index 2996910dc4711d9f2b40a215b04ac443e561c895..8b93e189a2f3decab2cad2de0d9906fe3332d5bb 100644 (file)
@@ -301,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 + "'.");
@@ -373,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;
@@ -684,6 +692,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
@@ -723,6 +738,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
@@ -768,22 +794,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
@@ -793,7 +838,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
index 942bc9c53b165326d3b68a8b39ba52ef6a366fdf..60a5ad59dc98c7eb13276b41b8d4d1f7ae7b5b98 100644 (file)
@@ -241,7 +241,7 @@ public:
    * @param result Result message for connecting the project.
    * @return if the command cannot be executed it return false.
    */
-  bool Connect(std::string*& result);
+  bool Connect(std::string*& result, const std::string& folder);
 
   /**
    * Checks the CMakeLists files to see what's going to be compiled and what's not.
index 682236c9a7ceeb5ccab78483df88f945e035a48f..7cfbf062c4409c8eb82d18bc7ed593c13fcb53f1 100644 (file)
@@ -160,7 +160,7 @@ void wxCDMApplicationDescriptionPanel::CreateControls()
   createClassbt->SetToolTip(wxT("Create a new Class (.h and .cxx files)."));
   wxButton* createFolderbt = new wxButton(actionsPanel, ID_BUTTON_CREATE_FOLDER, _T("Create Folder (Optional)"));
   createFolderbt->SetToolTip(wxT("Create a new Folder inside the application folder."));
-  wxButton* openMainbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_CXX, _T("A. Open Main File (Optional)"));
+  wxButton* openMainbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_CXX, _T("A. Open Main File"));
   openMainbt->SetToolTip(wxT("Open the main file in the application folder with the default code editor."));
   openMainbt->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMApplicationDescriptionPanel::OnMainMouseEnter,NULL,this);
   openMainbt->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMApplicationDescriptionPanel::OnMainMouseExit,NULL,this);
index 30326590cdc0a764d84c1e217ccce019a927b6f7..ddfe262e867ed7271cd971e5045e3903be2843e8 100755 (executable)
@@ -124,6 +124,14 @@ void wxCDMProjectActionsPanel::OnBtnConfigureBuild(wxCommandEvent& event)
 //compile project
 void wxCDMProjectActionsPanel::OnBtnBuildProject(wxCommandEvent& event)
 {
+#ifdef _WIN32
+       std::string* result;
+       if(!this->project->Build(result, ""))
+       {
+         wxMessageBox(crea::std2wx(result->c_str()), wxT("Project Compilation - Error!"));
+         return;
+       }
+#else
   //get author from user
   wxTextEntryDialog* buildDlg = new wxTextEntryDialog(
       this,
@@ -152,15 +160,26 @@ void wxCDMProjectActionsPanel::OnBtnBuildProject(wxCommandEvent& event)
           //wxMessageBox(crea::std2wx("The compilation was executed successfully. Please check the \"building.log\" file located in the build folder to check the compilation result."), wxT("Project Compilation"));
         }
     }
+#endif
 }
 //plug packages
 void wxCDMProjectActionsPanel::OnBtnConnectProject(wxCommandEvent& event)
 {
   std::string* result;
-  if(!this->project->Connect(result))
+  wxString file = wxDirSelector(
+    wxT("Please select the folder containing the bbtkPackage file you want to use. Usually it is where you built your project."),
+    crea::std2wx(this->project->GetBuildPath())
+  );
+
+  if(file.IsEmpty() || !this->project->Connect(result, crea::wx2std(file)))
     {
       wxMessageBox(crea::std2wx(result->c_str()), wxT("Plug Packages - Error!"));
       return;
     }
-  wxMessageBox(crea::std2wx("The connection was executed successfully. Please check the \"plugging.log\" file located in the build folder to check the compilation result."), wxT("Plug Package"));
+#ifdef _WIN32
+  wxMessageBox(crea::std2wx("The connection was executed successfully. Please check the console to see the compilation result."), wxT("Plug Package"));
+#else
+  wxMessageBox(crea::std2wx("The connection was executed successfully. Please check the \"plugging.log\" file located in the build folder to see the compilation result."), wxT("Plug Package"));
+#endif
+  
 }