]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMMainFrame.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / wxCDMMainFrame.cpp
index 98ff113ef689c82150b9145d44fd993bef9ce14f..7c2bf5aab6e418596b447b2172133b183ecd6f44 100755 (executable)
@@ -33,6 +33,7 @@
 #include <creaWx.h>
 #include "wx/treectrl.h"
 #include "wx/treebase.h"
+#include "wx/tooltip.h"
 #include "CDMUtilities.h"
 
 #include "creaDevManagerIds.h"
@@ -220,13 +221,15 @@ void wxCDMMainFrame::CreateControls()
 
 
 
-  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().BestSize(600,400).CenterPane().Name(wxT("panel_Properties")).Caption(wxT("Properties")));
-  auiManager.AddPane(tree_Projects, wxAuiPaneInfo().Left().MinSize(300,300).BestSize(300,400).CloseButton(false).Name(wxT("tree_Projects")).Caption(wxT("Projects Tree")));
+  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().BestSize(600,400).CenterPane().Name(wxT("panel_Properties")).Caption(wxT("")).CloseButton(false));
+  auiManager.AddPane(tree_Projects, wxAuiPaneInfo().Left().MinSize(300,300).BestSize(300,400).CloseButton(false).Name(wxT("tree_Projects")).Caption(wxT("Project Tree")).CloseButton(false));
 
   wxString pers = auiManager.SavePerspective();
 
   auiManager.Update();
   auiManager.LoadPerspective(pers,true);
+  wxToolTip::Enable(true);
+  wxToolTip::SetDelay(0);
 }
 
 //Event Handlers
@@ -276,6 +279,7 @@ void wxCDMMainFrame::OnMenuNewProject(wxCommandEvent& event)
         {
           auiManager.DetachPane(this->panel_Properties);
           this->panel_Properties->Destroy();
+          this->panel_Properties = NULL;
         }
 
       this->panel_Properties = new wxCDMProjectDescriptionPanel(
@@ -291,6 +295,7 @@ void wxCDMMainFrame::OnMenuNewProject(wxCommandEvent& event)
         {
           auiManager.DetachPane(this->panel_Properties);
           this->panel_ProjectActions->Destroy();
+          this->panel_ProjectActions = NULL;
         }
 
       panel_ProjectActions = new wxCDMProjectActionsPanel(
@@ -304,8 +309,8 @@ void wxCDMMainFrame::OnMenuNewProject(wxCommandEvent& event)
       panel_ProjectActions->SetMinSize(wxSize(500, 100));
 
 
-      auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
-      auiManager.AddPane(panel_ProjectActions, wxAuiPaneInfo().Bottom().MinSize(800,50).Name(wxT("panel_ProjectActions")).Caption(wxT("Project Actions")).BestSize(800,70).CloseButton(false));
+      auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400).CloseButton(false));
+      auiManager.AddPane(panel_ProjectActions, wxAuiPaneInfo().Bottom().MinSize(800,50).Name(wxT("panel_ProjectActions")).Caption(wxT("General Project Actions")).BestSize(800,70).CloseButton(false));
 
       auiManager.Update();
 
@@ -363,6 +368,7 @@ void wxCDMMainFrame::OnMenuOpenProject(wxCommandEvent& event)
         {
           auiManager.DetachPane(this->panel_Properties);
           this->panel_Properties->Destroy();
+          this->panel_Properties = NULL;
         }
 
       this->panel_Properties = new wxCDMProjectDescriptionPanel(
@@ -380,6 +386,7 @@ void wxCDMMainFrame::OnMenuOpenProject(wxCommandEvent& event)
         {
           auiManager.DetachPane(this->panel_ProjectActions);
           this->panel_ProjectActions->Destroy();
+          this->panel_ProjectActions = NULL;
         }
       panel_ProjectActions = new wxCDMProjectActionsPanel(
           this,
@@ -392,8 +399,8 @@ void wxCDMMainFrame::OnMenuOpenProject(wxCommandEvent& event)
       panel_ProjectActions->SetMinSize(wxSize(500, 100));
 
 
-      auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
-      auiManager.AddPane(panel_ProjectActions, wxAuiPaneInfo().Bottom().MinSize(800,50).Name(wxT("panel_ProjectActions")).Caption(wxT("Project Actions")).BestSize(800,70).CloseButton(false));
+      auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400).CloseButton(false));
+      auiManager.AddPane(panel_ProjectActions, wxAuiPaneInfo().Bottom().MinSize(800,50).Name(wxT("panel_ProjectActions")).Caption(wxT("General Project Actions")).BestSize(800,70).CloseButton(false));
 
       auiManager.Update();
     }
@@ -421,11 +428,13 @@ void wxCDMMainFrame::OnMenuCloseProject(wxCommandEvent& event)
     {
       auiManager.DetachPane(this->panel_Properties);
       this->panel_Properties->Destroy();
+      this->panel_Properties = NULL;
     }
   if(this->panel_ProjectActions != NULL)
     {
       auiManager.DetachPane(this->panel_ProjectActions);
       this->panel_ProjectActions->Destroy();
+      this->panel_ProjectActions = NULL;
     }
 
   this->panel_Properties = new wxCDMMainDescriptionPanel(
@@ -437,7 +446,7 @@ void wxCDMMainFrame::OnMenuCloseProject(wxCommandEvent& event)
       0
   );
 
-  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
+  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400).CloseButton(false));
 
   auiManager.Update();
   event.Skip();
@@ -457,11 +466,13 @@ void wxCDMMainFrame::OnMenuCloseAllProjects(wxCommandEvent& event)
     {
       auiManager.DetachPane(this->panel_Properties);
       this->panel_Properties->Destroy();
+      this->panel_Properties = NULL;
     }
   if(this->panel_ProjectActions != NULL)
     {
       auiManager.DetachPane(this->panel_ProjectActions);
       this->panel_ProjectActions->Destroy();
+      this->panel_ProjectActions = NULL;
     }
 
   this->panel_Properties = new wxCDMMainDescriptionPanel(
@@ -473,7 +484,7 @@ void wxCDMMainFrame::OnMenuCloseAllProjects(wxCommandEvent& event)
       0
   );
 
-  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
+  auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400));
 
   auiManager.Update();
   event.Skip();
@@ -487,7 +498,7 @@ void wxCDMMainFrame::OnMenuExit(wxCommandEvent& event)
 {
   std::cout << "Closing CreaDevManager..." << std::endl;
   std::string* result;
-  if(!this->model->CloseProject(result))
+  if(this->model->GetProject() != NULL && !this->model->CloseProject(result))
     {
       std::cout << "error closing project: " << *result << std::endl;
       wxMessageBox( crea::std2wx(result->c_str()), wxT("Close Project - Error"), wxICON_ERROR);
@@ -498,21 +509,16 @@ void wxCDMMainFrame::OnMenuExit(wxCommandEvent& event)
     {
       auiManager.DetachPane(this->panel_Properties);
       this->panel_Properties->Destroy();
+      this->panel_Properties = NULL;
     }
+
   if(this->panel_ProjectActions != NULL)
     {
       auiManager.DetachPane(this->panel_ProjectActions);
       this->panel_ProjectActions->Destroy();
+      this->panel_ProjectActions = NULL;
     }
 
-  this->panel_Properties = new wxCDMMainDescriptionPanel(
-      this,
-      ID_WINDOW_PROPERTIES,
-      wxT("Description Panel"),
-      wxDefaultPosition,
-      wxSize(600, 400),
-      0
-  );
   Close();
   event.Skip();
 }
@@ -612,14 +618,6 @@ void wxCDMMainFrame::OnMenuAboutCreatis(wxCommandEvent& event)
 
 void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
 {
-  std::cout << "New Tree Selection" << std::endl;
-
-  if(event.GetId() != 0)
-    {
-      event.Skip();
-    }
-
-
   //get selected element
   wxTreeItemId elementId = event.GetItem();
 
@@ -825,19 +823,20 @@ void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
   if(this->panel_Properties!= NULL)
     this->panel_Properties->Hide();
 
-  auiManager.AddPane(description, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
+  auiManager.AddPane(description, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400).CloseButton(false));
   auiManager.Update();
 
   //delete old view
   if(this->panel_Properties!= NULL)
     {
-      this->panel_Properties->Destroy();
       auiManager.DetachPane(this->panel_Properties);
+      this->panel_Properties->Destroy();
+      this->panel_Properties = NULL;
     }
   //set new view
 
   this->panel_Properties = description;
-  //auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
+  //auiManager.AddPane(panel_Properties, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400).CloseButton(false));
   auiManager.Update();
   event.Skip();
   return;
@@ -846,17 +845,17 @@ void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
 
 void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
 {
-  std::cout << "inMainFrame id: " << event.GetId() << ", tree element: "<< event.GetInt() << std::endl;
   switch(event.GetId() != 0)
   {
   case 0:
-    this->tree_Projects->SelectItem(event.GetInt(), false);
+    //select out old one to generate selection event
     this->tree_Projects->SelectItem(event.GetInt(), true);
     break;
   case 1:
     wxPanel* description = NULL;
     if(event.GetString() == wxT("manage_packages"))
       {
+        this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), false);
         description = new wxCDMPackageManagerPanel(
             this,
             this->model->GetProject(),
@@ -869,40 +868,27 @@ void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
       }
     else if(event.GetString() == wxT("manage_libraries"))
       {
-        description = new wxCDMLibDescriptionPanel(
-            this,
-            this->model->GetProject()->GetLib(),
-            ID_WINDOW_PROPERTIES,
-            wxT("Description Panel"),
-            wxDefaultPosition,
-            wxSize(600, 400),
-            0
-        );
+        this->tree_Projects->SelectItem(this->model->GetProject()->GetLib()->GetId(), true);
+        break;
       }
     else if(event.GetString() == wxT("manage_applications"))
       {
-        description = new wxCDMAppliDescriptionPanel(
-            this,
-            this->model->GetProject()->GetAppli(),
-            ID_WINDOW_PROPERTIES,
-            wxT("Description Panel"),
-            wxDefaultPosition,
-            wxSize(600, 400),
-            0
-        );
+        this->tree_Projects->SelectItem(this->model->GetProject()->GetAppli()->GetId(), true);
+        break;
       }
 
     if(this->panel_Properties!= NULL)
       this->panel_Properties->Hide();
 
-    auiManager.AddPane(description, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("Properties")).BestSize(600,400));
+    auiManager.AddPane(description, wxAuiPaneInfo().Center().Name(wxT("panel_Properties")).Caption(wxT("")).BestSize(600,400).CloseButton(false));
     auiManager.Update();
 
     //delete old view
     if(this->panel_Properties!= NULL)
       {
-        this->panel_Properties->Destroy();
         auiManager.DetachPane(this->panel_Properties);
+        this->panel_Properties->Destroy();
+        this->panel_Properties = NULL;
       }
     //set new view