]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMMainFrame.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / wxCDMMainFrame.cpp
index 5538fa7052148011c283fce66a2d3924c78f86d2..355b284191e268e7ea45438b5e878e6d9f016c58 100755 (executable)
@@ -32,6 +32,7 @@
 
 #include <creaWx.h>
 #include "wx/treectrl.h"
+#include "wx/treebase.h"
 #include "CDMUtilities.h"
 
 #include "creaDevManagerIds.h"
@@ -43,6 +44,9 @@
 #include "wxCDMLibraryDescriptionPanel.h"
 #include "wxCDMPackageDescriptionPanel.h"
 #include "wxCDMBlackBoxDescriptionPanel.h"
+#include "wxCDMCMakeListsDescriptionPanel.h"
+#include "wxCDMFolderDescriptionPanel.h"
+#include "wxCDMFileDescriptionPanel.h"
 
 #include "wxCDMProjectActionsPanel.h"
 #include "wxCDMNewProjectDialog.h"
@@ -75,6 +79,7 @@ EVT_MENU(ID_MENU_ABOUT_CREATIS, wxCDMMainFrame::OnMenuAboutCreatis)
 EVT_BUTTON(ID_BUTTON_NEWPROJECT, wxCDMMainFrame::OnMenuNewProject)
 EVT_BUTTON(ID_BUTTON_OPENPROJECT, wxCDMMainFrame::OnMenuOpenProject)
 EVT_TREE_SEL_CHANGED(ID_TREE_PROJECTS, wxCDMMainFrame::OnTreeSelectionChanged)
+EVT_COMMAND(wxID_ANY, wxEVT_DISPLAY_CHANGED, wxCDMMainFrame::OnCreationComplete)
 END_EVENT_TABLE()
 
 wxCDMMainFrame::wxCDMMainFrame(
@@ -110,6 +115,15 @@ bool wxCDMMainFrame::Create(
   return TRUE;
 }
 
+void wxCDMMainFrame::RefreshProject()
+{
+  std::string* result;
+  std::cout << "refreshing project" << std::endl;
+  this->model->RefreshProject(result);
+  std::cout << "rebuilding project tree" << std::endl;
+  this->tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
+}
+
 void wxCDMMainFrame::CreateMenus()
 {
   wxMenuBar* menuBar = new wxMenuBar;
@@ -384,12 +398,14 @@ void wxCDMMainFrame::OnMenuOpenRecent(wxCommandEvent& event)
 }
 void wxCDMMainFrame::OnMenuCloseProject(wxCommandEvent& event)
 {
+  std::cout << "closing project" << std::endl;
   std::string* result;
   if(!this->model->CloseProject(result))
     {
       std::cout << "error closing project: " << *result << std::endl;
       wxMessageBox( crea::std2wx(result->c_str()), wxT("Close Project - Error"), wxICON_ERROR);
     }
+
   tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
 
   if(this->panel_Properties != NULL)
@@ -726,11 +742,11 @@ void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
       //delete old view
       if(this->panel_Properties!= NULL)
         {
+          auiManager.DetachPane(this->panel_Properties);
           this->panel_Properties->Hide();
           this->panel_Properties->Destroy();
-          auiManager.DetachPane(this->panel_Properties);
-
         }
+
       //set new view
       this->panel_Properties = description;
       auiManager.AddPane(panel_Properties, wxCENTER, wxT("Properties"));
@@ -796,10 +812,95 @@ void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
       event.Skip();
       return;
     }
-  //TODO: CMakeLists
-  //TODO: folder
+  //CMakeLists
+  modelCDMCMakeListsFile* elementCMakeLists = dynamic_cast<modelCDMCMakeListsFile*>(element);
+  if(elementCMakeLists != NULL)
+    {
+      //create element description
+      wxCDMCMakeListsDescriptionPanel* description = new wxCDMCMakeListsDescriptionPanel(
+          this,
+          elementCMakeLists,
+          ID_WINDOW_PROPERTIES,
+          wxT("Description Panel"),
+          wxDefaultPosition,
+          wxSize(300, 400),
+          0
+      );
+      //delete old view
+      if(this->panel_Properties!= NULL)
+        {
+          this->panel_Properties->Hide();
+          this->panel_Properties->Destroy();
+          auiManager.DetachPane(this->panel_Properties);
+
+        }
+      //set new view
+      this->panel_Properties = description;
+      auiManager.AddPane(panel_Properties, wxCENTER, wxT("Properties"));
+      auiManager.Update();
+      event.Skip();
+      return;
+    }
+  //folder
+  modelCDMFolder* elementFolder = dynamic_cast<modelCDMFolder*>(element);
+  if(elementFolder != NULL)
+    {
+      //create element description
+      wxCDMFolderDescriptionPanel* description = new wxCDMFolderDescriptionPanel(
+          this,
+          elementFolder,
+          ID_WINDOW_PROPERTIES,
+          wxT("Description Panel"),
+          wxDefaultPosition,
+          wxSize(300, 400),
+          0
+      );
+      //delete old view
+      if(this->panel_Properties!= NULL)
+        {
+          this->panel_Properties->Hide();
+          this->panel_Properties->Destroy();
+          auiManager.DetachPane(this->panel_Properties);
+
+        }
+      //set new view
+      this->panel_Properties = description;
+      auiManager.AddPane(panel_Properties, wxCENTER, wxT("Properties"));
+      auiManager.Update();
+      event.Skip();
+      return;
+    }
   //TODO: file
-  //TODO: main
+  modelCDMFile* elementFile = dynamic_cast<modelCDMFile*>(element);
+  if(elementFile != NULL)
+    {
+      //create element description
+      wxCDMFileDescriptionPanel* description = new wxCDMFileDescriptionPanel(
+          this,
+          elementFile,
+          ID_WINDOW_PROPERTIES,
+          wxT("Description Panel"),
+          wxDefaultPosition,
+          wxSize(300, 400),
+          0
+      );
+      //delete old view
+      if(this->panel_Properties!= NULL)
+        {
+          this->panel_Properties->Hide();
+          this->panel_Properties->Destroy();
+          auiManager.DetachPane(this->panel_Properties);
+
+        }
+      //set new view
+      this->panel_Properties = description;
+      auiManager.AddPane(panel_Properties, wxCENTER, wxT("Properties"));
+      auiManager.Update();
+      event.Skip();
+      return;
+    }
+
+  //main if not any
   //create element description
   wxCDMMainDescriptionPanel* description = new wxCDMMainDescriptionPanel(
       this,
@@ -825,3 +926,10 @@ void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
   return;
 
 }
+
+void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
+{
+  std::cout << "inMainFrame " << event.GetInt() << std::endl;
+  this->tree_Projects->SelectItem(event.GetInt());
+  event.Skip();
+}