#include "wxCDMMainFrame.h"
#include "wxCDMNewPackageDialog.h"
+#include "wxCDMProjectConfigurationDialog.h"
+
+#include "wxCDMProjectHelpDialog.h"
#include "creaDevManagerIds.h"
#include "images/PrIcon64.xpm"
EVT_BUTTON(ID_BUTTON_GOTO_PACKAGE_MANAGER, wxCDMProjectDescriptionPanel::OnBtnManagePackages)
EVT_BUTTON(ID_BUTTON_GOTO_LIB_MANAGER, wxCDMProjectDescriptionPanel::OnBtnManageLibraries)
EVT_BUTTON(ID_BUTTON_GOTO_APPLI_MANAGER, wxCDMProjectDescriptionPanel::OnBtnManageApplications)
+EVT_BUTTON(ID_BUTTON_CHOOSE, wxCDMProjectDescriptionPanel::OnBtnConfigProject)
EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMProjectDescriptionPanel::OnBtnEditCMakeLists)
EVT_BUTTON(ID_BUTTON_SET_BUILD_PATH, wxCDMProjectDescriptionPanel::OnBtnSetBuildPath)
+EVT_BUTTON(ID_BUTTON_OPEN_BUILD_PATH, wxCDMProjectDescriptionPanel::OnBtnOpenBuild)
EVT_BUTTON(ID_BUTTON_OPEN_FOLDER, wxCDMProjectDescriptionPanel::OnBtnOpenFolder)
EVT_BUTTON(ID_BUTTON_SET_VERSION, wxCDMProjectDescriptionPanel::OnBtnSetVersion)
END_EVENT_TABLE()
wxPanel::Create(parent, id, pos, size, style);
this->project = project;
CreateControls();
+ // this part makes the scrollbars show up
+ this->FitInside(); // ask the sizer about the needed size
+ this->SetScrollRate(5, 5);
return TRUE;
}
{
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
- //Welcome
- sizer->Add(new wxStaticText(this, -1, _("Project")),0, wxALIGN_CENTER, 0);
+ //Header
+ wxBoxSizer* headerSizer = new wxBoxSizer(wxHORIZONTAL);
+ {
+ //Image
+ headerSizer->Add(new wxStaticBitmap(this, -1, wxBitmap(PrIcon64)),0, wxALIGN_CENTER, 0);
+ wxBoxSizer* textSizer = new wxBoxSizer(wxVERTICAL);
+ //Title
+ textSizer->Add(new wxStaticText(this, -1, _("Project")),0, wxALIGN_LEFT, 0);
+ //Project Name
+ textSizer->Add(new wxStaticText(this, -1, crea::std2wx(this->project->GetName())),0, wxALIGN_LEFT, 0);
+ headerSizer->Add(textSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
+ }
+ sizer->Add(headerSizer, 0, wxALIGN_CENTER);
+
- //Image
- sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(PrIcon64)),0, wxALIGN_CENTER, 0);
- //Project Name
- sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->project->GetName())),0, wxALIGN_CENTER, 0);
//----------------------------------Project Properties-----------------------------------
//properties StaticBoxSizer
// sourceLocation
wxBoxSizer* pSourceLocationsz = new wxBoxSizer(wxHORIZONTAL);
wxStaticText* pSourceLocationtc = new wxStaticText(propertiesPanel, -1, crea::std2wx(this->project->GetPath()));
- //pSourceLocationtc->SetMaxSize(wxSize(350,-1));
+ pSourceLocationtc->SetMaxSize(wxSize(200,-1));
wxButton* pSourceLocationbt = new wxButton(propertiesPanel, ID_BUTTON_OPEN_FOLDER, wxT("Open"));
pSourceLocationbt->SetToolTip(wxT("Open the source folder in the file explorer."));
pSourceLocationsz->Add(pSourceLocationtc, 1, wxALIGN_CENTER, 1);
// buildLocation
wxBoxSizer* pBuildLocationsz = new wxBoxSizer(wxHORIZONTAL);
this->buildPathtc = new wxStaticText(propertiesPanel, -1, crea::std2wx(this->project->GetBuildPath()));
- //this->buildPathtc->SetMaxSize(wxSize(350,-1));
- wxButton* pBuildLocationbt = new wxButton(propertiesPanel, ID_BUTTON_SET_BUILD_PATH, wxT("Choose"));
+ this->buildPathtc->SetMaxSize(wxSize(200,-1));
+
+ wxButton* pBuildLocationbt = new wxButton(propertiesPanel, ID_BUTTON_SET_BUILD_PATH, wxT("Choose..."));
pBuildLocationbt->SetToolTip(wxT("Select a new location for compiling the project."));
+
+ wxButton* pBuildOpenbt = new wxButton(propertiesPanel, ID_BUTTON_OPEN_BUILD_PATH, wxT("Open"));
+ pBuildOpenbt->SetToolTip(wxT("Open the binaries folder in the file explorer."));
+
pBuildLocationsz->Add(this->buildPathtc, 1, wxALIGN_CENTER, 1);
pBuildLocationsz->Add(pBuildLocationbt, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
+ pBuildLocationsz->Add(pBuildOpenbt, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
propertiesGridSizer->Add(pVersion, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
propertiesGridSizer->Add(pVersionsz, 1, wxEXPAND);
propertiesPanel->SetSizer(propertiesPanelSizer);
propertiesPanelSizer->Fit(propertiesPanel);
propertiesBox->Add(propertiesPanel, 1, wxEXPAND);
- sizer->Add(propertiesBox, 0, wxEXPAND | wxALL, 10);
+ sizer->Add(propertiesBox, 0, wxEXPAND | wxLEFT | wxRIGHT, 10);
//----------------------------------Project Actions--------------------------------------
//actions StaticBoxSizer
wxPanel* actionsPanel = new wxPanel(this);
//actions Sizer
wxBoxSizer* actionsPanelSizer = new wxBoxSizer(wxHORIZONTAL);
+
+ //actionsGrid Sizer
+ wxFlexGridSizer* actionsGridSizer = new wxFlexGridSizer(3, 2, 9, 15);
//buttons
- // package manager
- wxButton* packageMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_PACKAGE_MANAGER, _T("Package Manager"));
- packageMgrbt->SetToolTip(wxT("Find the current available packages into this project. You can also create new Packages in this section."));
- actionsPanelSizer->Add(packageMgrbt, 1, wxALL, 5);
// lib manager
- // show only if there is a lib folder
+ // show only if there is a lib folder
if(this->project->GetLib() != NULL)
{
- wxButton* libMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_LIB_MANAGER, _T("Library Manager"));
+ wxButton* libMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_LIB_MANAGER, _T("A. Library Manager"));
libMgrbt->SetToolTip(wxT("Find the current available libraries into this project. You can also create new Libraries in this section as well as edit the lib folder's CMakeLists.txt file."));
libMgrbt->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnLibMouseEnter,NULL,this);
libMgrbt->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnLibMouseExit,NULL,this);
- actionsPanelSizer->Add(libMgrbt, 1, wxALL, 5);
+ actionsGridSizer->Add(libMgrbt, 1, wxALL | wxEXPAND, 5);
}
+ // package manager
+ wxButton* packageMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_PACKAGE_MANAGER, _T("B. Package Manager"));
+ packageMgrbt->SetToolTip(wxT("Find the current available packages into this project. You can also create new Packages in this section."));
+ actionsGridSizer->Add(packageMgrbt, 1, wxALL | wxEXPAND, 5);
+
// appli manager
- // show only if there is a appli folder
+ // show only if there is a appli folder
if(this->project->GetAppli() != NULL)
{
- wxButton* appliMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_APPLI_MANAGER, _T("Application Manager"));
+ wxButton* appliMgrbt = new wxButton(actionsPanel, ID_BUTTON_GOTO_APPLI_MANAGER, _T("C. Application Manager"));
appliMgrbt->SetToolTip(wxT("Find the current available applications into this project. You can also create new Applications in this section as well as edit the appli folder's CMakeLists.txt file."));
appliMgrbt->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnAppliMouseEnter,NULL,this);
appliMgrbt->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnAppliMouseExit,NULL,this);
- actionsPanelSizer->Add(appliMgrbt, 1, wxALL, 5);
+ actionsGridSizer->Add(appliMgrbt, 1, wxALL | wxEXPAND, 5);
}
+ // edit 3rd Party libraries
+ wxButton* configPrjbt = new wxButton(actionsPanel, ID_BUTTON_CHOOSE, _T("D. 3rd Party Libraries Manager"));
+ configPrjbt->SetToolTip(wxT("Select which third party libraries will be used in this project."));
+ actionsGridSizer->Add(configPrjbt, 1, wxALL | wxEXPAND, 5);
+
// edit CMakeLists file
wxButton* editCMakebt = new wxButton(actionsPanel, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Edit CMakeLists File"));
editCMakebt->SetToolTip(wxT("Edit the CMakeLists.txt file of this project."));
editCMakebt->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnCMakeMouseEnter,NULL,this);
editCMakebt->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMProjectDescriptionPanel::OnCMakeMouseExit,NULL,this);
- actionsPanelSizer->Add(editCMakebt, 1, wxALL, 5);
+ actionsGridSizer->Add(editCMakebt, 1, wxALL | wxEXPAND, 5);
+ actionsGridSizer->AddGrowableCol(0,1);
+ actionsGridSizer->AddGrowableCol(1,1);
+
+ actionsPanelSizer->Add(actionsGridSizer, 1, wxEXPAND, 0);
//SetPanel sizer and box
actionsPanel->SetSizer(actionsPanelSizer);
actionsPanelSizer->Fit(actionsPanel);
//Assign sizer
this->SetSizer(sizer);
sizer->SetSizeHints(this);
+
+ if(((wxCDMMainFrame*)this->GetParent())->isHelp())
+ {
+ wxCDMProjectHelpDialog* helpDialog = new wxCDMProjectHelpDialog(this->GetParent(), this->project, wxID_ANY);
+ helpDialog->Show(true);
+ }
+}
+
+modelCDMProject* wxCDMProjectDescriptionPanel::GetProject() const
+{
+ return this->project;
}
void wxCDMProjectDescriptionPanel::OnBtnManagePackages(wxCommandEvent& event)
wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED);
newEvent->SetId(1);
newEvent->SetString(wxT("manage_packages"));
- newEvent->SetInt(this->project->GetId());
+ newEvent->SetClientData(this->project);
wxPostEvent(this->GetParent(), *newEvent);
event.Skip();
}
newEvent->SetString(wxT("manage_libraries"));
wxPostEvent(this->GetParent(), *newEvent);
- wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
if(this->project->GetLib() != NULL)
{
- int CMId = this->project->GetLib()->GetId();
- newEvent1->SetInt(CMId);
+ newEvent1->SetClientData(this->project->GetLib());
newEvent1->SetId(0);
wxPostEvent(this->GetParent(), *newEvent1);
}
newEvent->SetString(wxT("manage_applications"));
wxPostEvent(this->GetParent(), *newEvent);
- wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
- if(this->project->GetAppli() != NULL)
- {
- int CMId = this->project->GetAppli()->GetId();
- newEvent1->SetInt(CMId);
- newEvent1->SetId(0);
- wxPostEvent(this->GetParent(), *newEvent1);
- }
+ if(this->project->GetAppli() != NULL)
+ {
+ newEvent1->SetClientData(this->project->GetAppli());
+ newEvent1->SetId(0);
+ wxPostEvent(this->GetParent(), *newEvent1);
+ }
event.Skip();
}
+void wxCDMProjectDescriptionPanel::OnBtnConfigProject(wxCommandEvent& event)
+{
+ wxCDMProjectConfigurationDialog* dialog = new wxCDMProjectConfigurationDialog(this,this->project);
+ long userResponse;
+ userResponse = dialog->ShowModal();
+}
+
void wxCDMProjectDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event)
{
std::string* result;
if(!this->project->OpenCMakeListsFile(result))
wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
if(this->project->GetCMakeLists() != NULL)
{
- int CMId = this->project->GetCMakeLists()->GetId();
- newEvent->SetInt(CMId);
+ newEvent->SetClientData(this->project->GetCMakeLists());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
}
-void
-wxCDMProjectDescriptionPanel::OnBtnSetBuildPath(wxCommandEvent& event)
+void wxCDMProjectDescriptionPanel::OnBtnSetBuildPath(wxCommandEvent& event)
{
wxDirDialog* dialog = new wxDirDialog(this, wxT("Choose the new build location for the project"));
if(dialog->ShowModal())
this->buildPathtc->SetLabel(crea::std2wx(this->project->GetBuildPath()));
}
-void
-wxCDMProjectDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event)
+void wxCDMProjectDescriptionPanel::OnBtnOpenBuild(wxCommandEvent& event)
+{
+ if(CDMUtilities::openFileExplorer(this->project->GetBuildPath()))
+ wxMessageBox(crea::std2wx("The folder doesn't exist or hasn't yet been created."),_T("Open Folder - Error!"),wxOK | wxICON_ERROR);
+}
+
+void wxCDMProjectDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event)
{
std::string* result;
if(!this->project->OpenInFileExplorer(result))
void wxCDMProjectDescriptionPanel::OnCMakeMouseEnter(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
if(this->project->GetCMakeLists() != NULL)
{
- int CMId = this->project->GetCMakeLists()->GetId();
- newEvent->SetInt(CMId);
+ newEvent->SetClientData(this->project->GetCMakeLists());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
void wxCDMProjectDescriptionPanel::OnCMakeMouseExit(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
if(this->project->GetCMakeLists() != NULL)
{
- int CMId = this->project->GetCMakeLists()->GetId();
- newEvent->SetInt(CMId);
+ newEvent->SetClientData(this->project->GetCMakeLists());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
void wxCDMProjectDescriptionPanel::OnAppliMouseEnter(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
std::cout << "entra appli " << this->project->GetAppli()->GetCMakeLists();
if(this->project->GetAppli() != NULL)
{
- int AppId = this->project->GetAppli()->GetId();
- newEvent->SetInt(AppId);
+ newEvent->SetClientData(this->project->GetAppli());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
void wxCDMProjectDescriptionPanel::OnAppliMouseExit(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
if(this->project->GetAppli() != NULL)
{
- int AppId = this->project->GetAppli()->GetId();
- newEvent->SetInt(AppId);
+ newEvent->SetClientData(this->project->GetAppli());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
void wxCDMProjectDescriptionPanel::OnLibMouseEnter(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
if(this->project->GetLib() != NULL)
{
- int LbId = this->project->GetLib()->GetId();
- newEvent->SetInt(LbId);
+ newEvent->SetClientData(this->project->GetLib());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}
void wxCDMProjectDescriptionPanel::OnLibMouseExit(wxMouseEvent& event)
{
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
if(this->project->GetLib() != NULL)
{
- int LbId = this->project->GetLib()->GetId();
- newEvent->SetInt(LbId);
+ newEvent->SetClientData(this->project->GetLib());
newEvent->SetId(0);
wxPostEvent(this->GetParent(), *newEvent);
}