From f3f98131ffd23351c3cd872a0b04aecdc97b7c92 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Tue, 25 Jun 2013 13:43:27 +0200 Subject: [PATCH] Feature #1711 CreaDevManager application implementation Feature: Now when compiling the build folder is checked and the context is kept after compilation is done. The default build command line can now be changed in the settings menu. --- lib/creaDevManagerLib/CDMUtilities.h | 7 +++ lib/creaDevManagerLib/modelCDMProject.cpp | 7 ++- .../wxCDMProjectActionsPanel.cpp | 58 ++++++++++++------- lib/creaDevManagerLib/wxCDMSettingsDialog.cpp | 23 ++++++-- lib/creaDevManagerLib/wxCDMSettingsDialog.h | 9 ++- 5 files changed, 74 insertions(+), 30 deletions(-) diff --git a/lib/creaDevManagerLib/CDMUtilities.h b/lib/creaDevManagerLib/CDMUtilities.h index 8ec6967..935ce94 100644 --- a/lib/creaDevManagerLib/CDMUtilities.h +++ b/lib/creaDevManagerLib/CDMUtilities.h @@ -93,6 +93,13 @@ namespace CDMUtilities static std::string TERMINAL = "gnome-terminal"; #endif +#ifndef _WIN32 + /** + * Build Command + */ + static std::string BUILD_COMMAND = "make"; +#endif + /** * Structure that handles the split method for c++ * It calls the split method to split a string given certain delimiters. diff --git a/lib/creaDevManagerLib/modelCDMProject.cpp b/lib/creaDevManagerLib/modelCDMProject.cpp index 7d0b454..dae81a1 100644 --- a/lib/creaDevManagerLib/modelCDMProject.cpp +++ b/lib/creaDevManagerLib/modelCDMProject.cpp @@ -45,6 +45,7 @@ #include "CDMUtilities.h" #include "creaWx.h" #include "wx/dir.h" +#include modelCDMProject::modelCDMProject() { @@ -265,7 +266,11 @@ modelCDMLib* modelCDMProject::GetLib() const std::string modelCDMProject::GetBuildInstruction() const { - std::string makeComm = "make -C \"" + this->buildPath + "\""; /*> \"" + this->buildPath + CDMUtilities::SLASH + "building.log\" 2>&1";*/ + wxConfigBase* pConfig = wxConfigBase::Get(); + std::string commandline = crea::wx2std(pConfig->Read(wxT("BUILD_COMMAND"), crea::std2wx(CDMUtilities::BUILD_COMMAND))); + + + std::string makeComm = "cd \"" + this->buildPath + "\";" + commandline;// -C \"" + this->buildPath + "\""; /*> \"" + this->buildPath + CDMUtilities::SLASH + "building.log\" 2>&1";*/ return makeComm; } diff --git a/lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp b/lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp index 35a98be..514d247 100755 --- a/lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMProjectActionsPanel.cpp @@ -134,32 +134,46 @@ void wxCDMProjectActionsPanel::OnBtnBuildProject(wxCommandEvent& event) return; } #else - //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) + + 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) { - std::string buildDlgStr = crea::wx2std(buildDlg->GetValue()); - //check name - if (buildDlgStr != "") + 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 diff --git a/lib/creaDevManagerLib/wxCDMSettingsDialog.cpp b/lib/creaDevManagerLib/wxCDMSettingsDialog.cpp index 50dc185..5af4e79 100644 --- a/lib/creaDevManagerLib/wxCDMSettingsDialog.cpp +++ b/lib/creaDevManagerLib/wxCDMSettingsDialog.cpp @@ -100,13 +100,15 @@ void wxCDMSettingsDialog::CreateControls() wxStaticText* instruction = new wxStaticText(this, wxID_ANY, wxT("Change the values to modify the default behavior of the program."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); v_sizer1->Add(instruction, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL | wxEXPAND, 5); - wxFlexGridSizer* formItems = new wxFlexGridSizer(4,2,9,15); + wxFlexGridSizer* formItems = new wxFlexGridSizer(5,2,9,15); wxStaticText *stxtTextEditor = new wxStaticText(this, -1, wxT("Text Editor Command")); wxStaticText *stxtFileExplorer = new wxStaticText(this, -1, wxT("File Explorer Command")); wxStaticText *stxtTerminal = new wxStaticText(this, -1, wxT("Terminal Command")); wxStaticText *stxtHelpEnabled = new wxStaticText(this, -1, wxT("Help Enabled")); - +#ifndef _WIN32 + wxStaticText* stxtBuildCommand = new wxStaticText(this, -1, wxT("Build Command")); +#endif wxConfigBase* pConfig = wxConfigBase::Get(); this->textEditor = new wxTextCtrl(this, -1, pConfig->Read(wxT("TEXT_EDITOR"), crea::std2wx(CDMUtilities::TEXT_EDITOR))); @@ -114,7 +116,9 @@ void wxCDMSettingsDialog::CreateControls() this->terminal = new wxTextCtrl(this, -1, pConfig->Read(wxT("TERMINAL"), crea::std2wx(CDMUtilities::TERMINAL))); this->helpEnabled = new wxCheckBox(this, -1, wxT("")); this->helpEnabled->SetValue(pConfig->Read(wxT("HELP"), true) != 0); - +#ifndef _WIN32 + this->buildCommand = new wxTextCtrl(this, -1, pConfig->Read(wxT("BUILD_COMMAND"), crea::std2wx(CDMUtilities::BUILD_COMMAND))); +#endif formItems->Add(stxtTextEditor, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(this->textEditor, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); @@ -122,10 +126,13 @@ void wxCDMSettingsDialog::CreateControls() formItems->Add(this->fileExplorer, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); formItems->Add(stxtTerminal, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(this->terminal, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); +#ifndef _WIN32 + formItems->Add(stxtBuildCommand, 0, wxALIGN_CENTER_VERTICAL); + formItems->Add(this->buildCommand, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); +#endif formItems->Add(stxtHelpEnabled, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(this->helpEnabled, 1, wxEXPAND); - formItems->AddGrowableCol(1,1); v_sizer1->Add(formItems, 1, wxEXPAND | wxALL, 15); @@ -149,6 +156,11 @@ void wxCDMSettingsDialog::OnFinish(wxCommandEvent& event) pConfig->Write(wxT("TERMINAL"), this->terminal->GetValue()); pConfig->Write(wxT("FILE_EXPLORER"), this->fileExplorer->GetValue()); pConfig->Write(wxT("HELP"), this->helpEnabled->GetValue()); +#ifndef _WIN32 + pConfig->Write(wxT("BUILD_COMMAND"), this->buildCommand->GetValue()); +#endif + + pConfig->Flush(); this->EndModal(wxID_OK); } @@ -163,5 +175,8 @@ void wxCDMSettingsDialog::OnDefaults(wxCommandEvent& event) this->textEditor->SetValue(crea::std2wx(CDMUtilities::TEXT_EDITOR)); this->terminal->SetValue(crea::std2wx(CDMUtilities::TERMINAL)); this->fileExplorer->SetValue(crea::std2wx(CDMUtilities::FILE_EXPLORER)); +#ifndef _WIN32 + this->buildCommand->SetValue(crea::std2wx(CDMUtilities::BUILD_COMMAND)); +#endif this->helpEnabled->SetValue(true); } diff --git a/lib/creaDevManagerLib/wxCDMSettingsDialog.h b/lib/creaDevManagerLib/wxCDMSettingsDialog.h index 5f70b60..2e06ae3 100644 --- a/lib/creaDevManagerLib/wxCDMSettingsDialog.h +++ b/lib/creaDevManagerLib/wxCDMSettingsDialog.h @@ -61,7 +61,7 @@ public: wxWindowID id = wxID_ANY, const wxString& caption = wxT("Settings - CreaDevManager CREATIS"), const wxPoint& position = wxDefaultPosition, - const wxSize& size = wxSize(350,320), + const wxSize& size = wxSize(350,370), long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ); /** @@ -83,7 +83,7 @@ public: wxWindowID id = wxID_ANY, const wxString& caption = wxT("Settings - CreaDevManager CREATIS"), const wxPoint& position = wxDefaultPosition, - const wxSize& size = wxSize(350,320), + const wxSize& size = wxSize(350,370), long style = wxDEFAULT_DIALOG_STYLE ); @@ -123,7 +123,10 @@ private: * Help Enabled. */ wxCheckBox* helpEnabled; - + /** + * Build Command. + */ + wxTextCtrl* buildCommand; //handlers protected: -- 2.45.0