]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMProjectDescriptionPanel.cpp
Feature #1711 CreaDevManager application implementation
[crea.git] / lib / creaDevManagerLib / wxCDMProjectDescriptionPanel.cpp
index 4f60890fbb3c092baab61176e531fdbb52f8ca9b..844d8cb1bf70dbec010dc2ec10f307a4b37e508b 100644 (file)
@@ -37,6 +37,8 @@
 #include "wxCDMMainFrame.h"
 #include "wxCDMNewPackageDialog.h"
 
+#include "wxCDMProjectHelpDialog.h"
+
 #include "creaDevManagerIds.h"
 #include "images/PrIcon64.xpm"
 #include "CDMUtilities.h"
@@ -81,6 +83,9 @@ bool wxCDMProjectDescriptionPanel::Create(
   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;
 }
 
@@ -88,14 +93,22 @@ void wxCDMProjectDescriptionPanel::CreateControls()
 {
   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
@@ -118,25 +131,25 @@ void wxCDMProjectDescriptionPanel::CreateControls()
   this->versiontc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(this->project->GetVersion()));
   wxButton* pVersionbt = new wxButton(propertiesPanel, ID_BUTTON_SET_VERSION, wxT("Set"));
   pVersionbt->SetToolTip(wxT("Update the version of the project."));
-  pVersionsz->Add(this->versiontc, 0, wxALIGN_CENTER_VERTICAL, 0);
-  pVersionsz->Add(pVersionbt, 0, wxALIGN_CENTER | wxLEFT, 10);
+  pVersionsz->Add(this->versiontc, 1, wxALIGN_CENTER, 1);
+  pVersionsz->Add(pVersionbt, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
   // versionDate
   this->versionDatetc = new wxStaticText(propertiesPanel, -1, crea::std2wx(this->project->GetVersionDate()));
   // 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, 0, wxALIGN_CENTER, 0);
+  pSourceLocationsz->Add(pSourceLocationtc, 1, wxALIGN_CENTER, 1);
   pSourceLocationsz->Add(pSourceLocationbt, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
   // buildLocation
   wxBoxSizer* pBuildLocationsz = new wxBoxSizer(wxHORIZONTAL);
   this->buildPathtc = new wxStaticText(propertiesPanel, -1, crea::std2wx(this->project->GetBuildPath()));
-  this->buildPathtc->SetMaxSize(wxSize(350,-1));
+  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."));
-  pBuildLocationsz->Add(this->buildPathtc, 0, wxALIGN_CENTER, 0);
+  pBuildLocationsz->Add(this->buildPathtc, 1, wxALIGN_CENTER, 1);
   pBuildLocationsz->Add(pBuildLocationbt, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
 
   propertiesGridSizer->Add(pVersion, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
@@ -150,13 +163,13 @@ void wxCDMProjectDescriptionPanel::CreateControls()
 
   propertiesGridSizer->AddGrowableCol(1,1);
 
-  propertiesPanelSizer-> Add(propertiesGridSizer, 0, wxALL | wxEXPAND, 5);
+  propertiesPanelSizer-> Add(propertiesGridSizer, 1, wxALL | wxEXPAND, 5);
 
   //SetPanel sizer and box
   propertiesPanel->SetSizer(propertiesPanelSizer);
   propertiesPanelSizer->Fit(propertiesPanel);
-  propertiesBox->Add(propertiesPanel, 0, wxEXPAND);
-  sizer->Add(propertiesBox, 0, wxEXPAND | wxALL, 10);
+  propertiesBox->Add(propertiesPanel, 1, wxEXPAND);
+  sizer->Add(propertiesBox, 0, wxEXPAND | wxLEFT | wxRIGHT, 10);
 
   //----------------------------------Project Actions--------------------------------------
   //actions StaticBoxSizer
@@ -166,48 +179,67 @@ void wxCDMProjectDescriptionPanel::CreateControls()
   wxPanel* actionsPanel = new wxPanel(this);
   //actions Sizer
   wxBoxSizer* actionsPanelSizer = new wxBoxSizer(wxHORIZONTAL);
+
+  //actionsGrid Sizer
+  wxFlexGridSizer* actionsGridSizer = new wxFlexGridSizer(2, 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, 0, 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, 0, 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, 0, wxALL, 5);
+      actionsGridSizer->Add(appliMgrbt, 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, 0, 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);
-  actionsBox->Add(actionsPanel, 0, wxALL, 5);
+  actionsBox->Add(actionsPanel, 1, wxALL | wxEXPAND, 5);
   sizer->Add(actionsBox, 0, wxEXPAND | wxALL, 10);
 
 
   //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)
@@ -215,7 +247,7 @@ 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();
 }
@@ -227,12 +259,11 @@ void wxCDMProjectDescriptionPanel::OnBtnManageLibraries(wxCommandEvent& event)
   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);
     }
@@ -247,15 +278,14 @@ void wxCDMProjectDescriptionPanel::OnBtnManageApplications(wxCommandEvent& event
   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();
 }
@@ -266,12 +296,11 @@ void wxCDMProjectDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event)
   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);
     }
@@ -300,14 +329,10 @@ wxCDMProjectDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event)
 
 void wxCDMProjectDescriptionPanel::OnBtnSetVersion(wxCommandEvent& event)
 {
-  //TODO: implement method
-  std::cerr << "Event OnBtnSetVersion not implemented" << std::endl;
-  event.Skip();
-
-  //get name
+  //get version
   wxString libraryName = wxGetTextFromUser(
       wxT("Enter the new version name"),
-      wxT("New Library - creaDevManager"),
+      wxT("Change Project Version - creaDevManager"),
       crea::std2wx(this->project->GetVersion())
   );
   //check name
@@ -330,12 +355,11 @@ void wxCDMProjectDescriptionPanel::OnBtnSetVersion(wxCommandEvent& event)
 
 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);
     }
@@ -344,12 +368,11 @@ void wxCDMProjectDescriptionPanel::OnCMakeMouseEnter(wxMouseEvent& event)
 
 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);
     }
@@ -358,12 +381,11 @@ void wxCDMProjectDescriptionPanel::OnCMakeMouseExit(wxMouseEvent& event)
 
 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);
     }
@@ -372,12 +394,11 @@ void wxCDMProjectDescriptionPanel::OnAppliMouseEnter(wxMouseEvent& event)
 
 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);
     }
@@ -386,12 +407,11 @@ void wxCDMProjectDescriptionPanel::OnAppliMouseExit(wxMouseEvent& event)
 
 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);
     }
@@ -400,12 +420,11 @@ void wxCDMProjectDescriptionPanel::OnLibMouseEnter(wxMouseEvent& event)
 
 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);
     }