]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp
Feature #1711 CreaDevManager application implementation
[crea.git] / lib / creaDevManagerLib / wxCDMProjectActionsPanel.cpp
index 2d89a2df0f05e76a7fa4dbccbcbc89033138cf1e..514d247faf7c32e3728ec5b640a5a4b5f8662232 100755 (executable)
 
 #include "creaDevManagerIds.h"
 
+#include <map>
+#include "wxCDMProjectStructureReportDialog.h"
+
 BEGIN_EVENT_TABLE(wxCDMProjectActionsPanel, wxPanel)
+EVT_BUTTON(ID_BUTTON_CHECK_PROJECT, wxCDMProjectActionsPanel::OnBtnCheckProjectStructure)
 EVT_BUTTON(ID_BUTTON_BUILD_PROJECT, wxCDMProjectActionsPanel::OnBtnBuildProject)
 EVT_BUTTON(ID_BUTTON_CONFIGURE_BUILD, wxCDMProjectActionsPanel::OnBtnConfigureBuild)
 EVT_BUTTON(ID_BUTTON_CONNECT_PROJECT, wxCDMProjectActionsPanel::OnBtnConnectProject)
@@ -73,25 +77,40 @@ bool wxCDMProjectActionsPanel::Create(
   wxPanel::Create(parent,id,pos,size,style);
   wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
   this->SetSizer(sizer);
-
   CreateControls();
+  // this part makes the scrollbars show up
+  this->FitInside(); // ask the sizer about the needed size
+  this->SetScrollRate(5, 5);
 
   return TRUE;
 }
 
 void wxCDMProjectActionsPanel::CreateControls()
 {
-  wxButton* configurebt = new wxButton(this, ID_BUTTON_CONFIGURE_BUILD, _T("1. Configure Project (CMake)"));
-  configurebt->SetToolTip(wxT("This is the first step in order to execute the project. Make sure you have selected the desired Build location."));
-  wxButton* compilebt = new wxButton(this, ID_BUTTON_BUILD_PROJECT, _T("2. Compile Project"));
+  wxButton* checkStructbt = new wxButton(this, ID_BUTTON_CHECK_PROJECT, _T("1. Check Project Structure"));
+  checkStructbt->SetToolTip(wxT("This step checks the project structure and tells what is going to be compiled."));
+  wxButton* configurebt = new wxButton(this, ID_BUTTON_CONFIGURE_BUILD, _T("2. Configure Project (CMake)"));
+  configurebt->SetToolTip(wxT("This is the second step in order to execute the project. Make sure you have selected the desired Build location."));
+  wxButton* compilebt = new wxButton(this, ID_BUTTON_BUILD_PROJECT, _T("3. Compile Project"));
   compilebt->SetToolTip(wxT("This step should be done after configuring the project. This will create the executables."));
-  wxButton* plugbt = new wxButton(this, ID_BUTTON_CONNECT_PROJECT, _T("3. Plug Packages (BBTK)"));
+  wxButton* plugbt = new wxButton(this, ID_BUTTON_CONNECT_PROJECT, _T("4. Plug Packages (BBTK)"));
   plugbt->SetToolTip(wxT("This step should be done after compiling the project. This will allow to use the boxes in this project to be available in the bbEditor."));
+  this->GetSizer()->Add(checkStructbt, 0, wxALL, 5);
   this->GetSizer()->Add(configurebt, 0, wxALL, 5);
   this->GetSizer()->Add(compilebt, 0, wxALL, 5);
   this->GetSizer()->Add(plugbt, 0, wxALL, 5);
 }
 
+//check project structure
+void wxCDMProjectActionsPanel::OnBtnCheckProjectStructure(wxCommandEvent& event)
+{
+  std::map<std::string, bool> prjStruct;
+  this->project->CheckStructure(prjStruct);
+  std::cout << prjStruct.size() << std::endl;
+  wxCDMProjectStructureReportDialog* structure = new wxCDMProjectStructureReportDialog(this->GetParent(), prjStruct, wxID_ANY);
+  structure->Show(true);
+}
+
 //configure project
 void wxCDMProjectActionsPanel::OnBtnConfigureBuild(wxCommandEvent& event)
 {
@@ -107,43 +126,87 @@ void wxCDMProjectActionsPanel::OnBtnConfigureBuild(wxCommandEvent& event)
 //compile project
 void wxCDMProjectActionsPanel::OnBtnBuildProject(wxCommandEvent& event)
 {
-  //get author from user
-  wxTextEntryDialog* buildDlg = new wxTextEntryDialog(
-      this,
-      wxT("Enter the compilation instruction:"),
-      wxT("Project Compilation- creaDevManager"),
-      crea::std2wx(this->project->GetBuildInstruction()),
-      wxTE_MULTILINE | wxOK | wxCANCEL
-  );
-
-  if (buildDlg->ShowModal() == wxID_OK)
+#ifdef _WIN32
+  std::string* result;
+  if(!this->project->Build(result, ""))
     {
-      std::string buildDlgStr = crea::wx2std(buildDlg->GetValue());
-      //check name
-      if (buildDlgStr != "")
+      wxMessageBox(crea::std2wx(result->c_str()), wxT("Project Compilation - Error!"));
+      return;
+    }
+#else
+
+  std::string* result;
+  int isDir = wxMessageBox(crea::std2wx("Is this the path of the project compilation?:\n"+this->project->GetBuildPath()), wxT("Project Compilation - CreaDevManager"), wxYES_NO|wxCANCEL);
+  if(isDir != wxCANCEL)
+    {
+      wxString file = crea::std2wx(this->project->GetBuildPath());
+      if(isDir == wxNO)
         {
-          std::string* result;
-          //wxProgressDialog* loadBar = new wxProgressDialog(wxT("Compiling"), wxT("Please wait while the compilation is executing..."), 100, this);
-          //loadBar->Pulse();
-          if(!this->project->Build(result, buildDlgStr))
+          file = wxDirSelector(
+              wxT("Please select the folder where your project is to be built."),
+              crea::std2wx(this->project->GetBuildPath())
+          );
+        }
+
+      if(!file.IsEmpty())
+        {
+          this->project->SetBuildPath(crea::wx2std(file), result);
+
+          wxTextEntryDialog* buildDlg = new wxTextEntryDialog(
+                this,
+                wxT("Check the compilation instruction:"),
+                wxT("Project Compilation - CreaDevManager"),
+                crea::std2wx(this->project->GetBuildInstruction()),
+                wxTE_MULTILINE | wxOK | wxCANCEL
+            );
+
+          if (buildDlg->ShowModal() == wxID_OK)
             {
-              //loadBar->Destroy();
-              wxMessageBox(crea::std2wx(result->c_str()), wxT("Project Compilation - Error!"));
-              return;
+              std::string buildDlgStr = crea::wx2std(buildDlg->GetValue());
+              //check line
+              if (buildDlgStr != "")
+                {
+                  std::string* result;
+                  if(!this->project->Build(result, buildDlgStr))
+                    {
+                      wxMessageBox(crea::std2wx(result->c_str()), wxT("Project Compilation - Error!"));
+                      return;
+                    }
+                }
             }
-          //loadBar->Destroy();
-          //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))
+  int isDir = wxMessageBox(crea::std2wx("Is this the path of the project compilation to plug?:\n"+this->project->GetBuildPath()), wxT("Plug BBTK Packages"), wxYES_NO|wxCANCEL);
+  if(isDir != wxCANCEL)
     {
-      wxMessageBox(crea::std2wx(result->c_str()), wxT("Plug Packages - Error!"));
-      return;
+      wxString file = crea::std2wx(this->project->GetBuildPath());
+      if(isDir == wxNO)
+        {
+          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())
+        {
+          if(!this->project->Connect(result, crea::wx2std(file)))
+            {
+              wxMessageBox(crea::std2wx(result->c_str()), wxT("Plug BBTK Packages - Error!"), wxICON_ERROR);
+              return;
+            }
+          else
+            {
+              wxMessageBox(crea::std2wx("The connection was executed successfully. Please check the console to see the compilation result.\n Also, don't forget to restart the BBTK Graphical Editor (if already opened) to see the plugged packages."), wxT("Plug Package"));
+            }
+
+        }
+
     }
-  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"));
 }