]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMMainFrame.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / wxCDMMainFrame.cpp
index 7c2bf5aab6e418596b447b2172133b183ecd6f44..7f5fc3afe4b8fda83ee96f92411e9c138b4aa96a 100755 (executable)
@@ -82,6 +82,8 @@ EVT_BUTTON(ID_BUTTON_NEWPROJECT, wxCDMMainFrame::OnMenuNewProject)
 EVT_BUTTON(ID_BUTTON_OPENPROJECT, wxCDMMainFrame::OnMenuOpenProject)
 EVT_TREE_SEL_CHANGING(ID_TREE_PROJECTS, wxCDMMainFrame::OnTreeSelectionChanged)
 EVT_COMMAND(wxID_ANY, wxEVT_DISPLAY_CHANGED, wxCDMMainFrame::OnCreationComplete)
+EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxCDMMainFrame::OnElementSelected)
+EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxCDMMainFrame::OnElementDeselected)
 END_EVENT_TABLE()
 
 wxCDMMainFrame::wxCDMMainFrame(
@@ -222,7 +224,7 @@ void wxCDMMainFrame::CreateControls()
 
 
   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));
+  auiManager.AddPane(tree_Projects, wxAuiPaneInfo().Right().MinSize(300,300).BestSize(300,400).CloseButton(false).Name(wxT("tree_Projects")).Caption(wxT("Project Tree")).CloseButton(false));
 
   wxString pers = auiManager.SavePerspective();
 
@@ -532,7 +534,12 @@ void wxCDMMainFrame::OnMenuRefreshProject(wxCommandEvent& event)
       wxMessageBox( crea::std2wx(result->c_str()), wxT("Refresh Project - Error"), wxICON_ERROR);
     }
   this->tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
+
   this->auiManager.Update();
+
+  this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), false);
+  this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), true);
+
   //TODO: Show possible problems in CMakeLists files
   event.Skip();
 }
@@ -577,21 +584,31 @@ void wxCDMMainFrame::OnMenuBBTKGraphicalEditor(wxCommandEvent& event)
 {
   std::cerr << "Event OnMenuBBTKGraphicalEditor not implemented" << std::endl;
   event.Skip();
+  if(CDMUtilities::openBBEditor())
+    {
+      wxMessageBox( wxT("Can't open the BB Graphical Editor. Please check your Crea Tools installation."), wxT("Refresh Project - Error"), wxICON_ERROR);
+    }
 }
 void wxCDMMainFrame::OnMenuMiniTools(wxCommandEvent& event)
 {
-  std::cerr << "Event OnMenuMiniTools not implemented" << std::endl;
-  event.Skip();
+  if(CDMUtilities::openCreaToolsTools())
+    {
+      wxMessageBox( wxT("Can't open the Minitools. Please check your Crea Tools installation."), wxT("Refresh Project - Error"), wxICON_ERROR);
+    }
 }
 void wxCDMMainFrame::OnMenuCodeEditor(wxCommandEvent& event)
 {
-  std::cerr << "Event OnMenuCodeEditor not implemented" << std::endl;
-  event.Skip();
+  if(CDMUtilities::openTextEditor())
+    {
+      wxMessageBox( wxT("Can't open the Text Editor. Please check the default text editor command in the Crea Development Manager settings (Edit -> Settings)."), wxT("Refresh Project - Error"), wxICON_ERROR);
+    }
 }
 void wxCDMMainFrame::OnMenuCommandLine(wxCommandEvent& event)
 {
-  std::cerr << "Event OnMenuCommandLine not implemented" << std::endl;
-  event.Skip();
+  if(CDMUtilities::openTerminal())
+    {
+      wxMessageBox( wxT("Can't open Terminal. Please check the default terminal command in the Crea Development Manager settings (Edit -> Settings)."), wxT("Refresh Project - Error"), wxICON_ERROR);
+    }
 }
 
 //Help Menu
@@ -850,12 +867,14 @@ void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
   case 0:
     //select out old one to generate selection event
     this->tree_Projects->SelectItem(event.GetInt(), true);
+    this->tree_Projects->Expand(event.GetInt());
     break;
   case 1:
     wxPanel* description = NULL;
     if(event.GetString() == wxT("manage_packages"))
       {
         this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), false);
+        this->tree_Projects->Expand(this->model->GetProject()->GetId());
         description = new wxCDMPackageManagerPanel(
             this,
             this->model->GetProject(),
@@ -869,13 +888,29 @@ void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
     else if(event.GetString() == wxT("manage_libraries"))
       {
         this->tree_Projects->SelectItem(this->model->GetProject()->GetLib()->GetId(), true);
+        this->tree_Projects->Expand(this->model->GetProject()->GetLib()->GetId());
         break;
       }
     else if(event.GetString() == wxT("manage_applications"))
       {
         this->tree_Projects->SelectItem(this->model->GetProject()->GetAppli()->GetId(), true);
+        this->tree_Projects->Expand(this->model->GetProject()->GetAppli()->GetId());
         break;
       }
+    else if(event.GetString() == wxT("blackbox"))
+      {
+        this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), false);
+        modelCDMBlackBox* bb = (modelCDMBlackBox*)event.GetClientData();
+        description = new wxCDMBlackBoxDescriptionPanel(
+            this,
+            bb,
+            ID_WINDOW_PROPERTIES,
+            wxT("Description Panel"),
+            wxDefaultPosition,
+            wxSize(600, 400),
+            0
+        );
+      }
 
     if(this->panel_Properties!= NULL)
       this->panel_Properties->Hide();
@@ -898,3 +933,21 @@ void wxCDMMainFrame::OnCreationComplete(wxCommandEvent& event)
   }
   event.Skip();
 }
+
+void wxCDMMainFrame::OnElementSelected(wxCommandEvent& event)
+{
+  //std::cout << "element " << event.GetInt() << std::endl;
+  this->tree_Projects->EnsureVisible(event.GetInt());
+  this->tree_Projects->SetItemBold(event.GetInt(), true);
+  this->tree_Projects->SetItemTextColour(event.GetInt(), wxColour(0,0,255));
+  this->tree_Projects->UpdateWindowUI(wxUPDATE_UI_RECURSE);
+  auiManager.Update();
+}
+
+void wxCDMMainFrame::OnElementDeselected(wxCommandEvent& event)
+{
+  this->tree_Projects->SetItemBold(event.GetInt(), false);
+  this->tree_Projects->SetItemTextColour(event.GetInt(), wxColour(0,0,0));
+  this->tree_Projects->UpdateWindowUI(wxUPDATE_UI_RECURSE);
+  auiManager.Update();
+}