From 63de854d3d1085c92883328a6fb728d6e5dd2fa4 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Thu, 13 Dec 2012 15:36:44 +0100 Subject: [PATCH] Feature #1711 CreaDevManager application implementation - Fixing up tooltips and flow control with Files and Folders - Fixed bug in Folder, File and CMakeLists Description views for tooltips. --- lib/creaDevManagerLib/modelCDMFolder.cpp | 3 +- .../wxCDMBlackBoxDescriptionPanel.cpp | 4 +- .../wxCDMCMakeListsDescriptionPanel.cpp | 54 ++++++++--- .../wxCDMCMakeListsDescriptionPanel.h | 2 + .../wxCDMFileDescriptionPanel.cpp | 90 ++++++++++++------- .../wxCDMFileDescriptionPanel.h | 3 +- .../wxCDMFolderDescriptionPanel.cpp | 42 +++++++-- .../wxCDMFolderDescriptionPanel.h | 1 + 8 files changed, 143 insertions(+), 56 deletions(-) diff --git a/lib/creaDevManagerLib/modelCDMFolder.cpp b/lib/creaDevManagerLib/modelCDMFolder.cpp index bf9a951..ed71874 100644 --- a/lib/creaDevManagerLib/modelCDMFolder.cpp +++ b/lib/creaDevManagerLib/modelCDMFolder.cpp @@ -139,6 +139,5 @@ const bool modelCDMFolder::Refresh(std::string*& result) bool modelCDMFolder::HasCMakeLists() { - //TODO: implement method - return true; + return this->CMakeLists != NULL; } diff --git a/lib/creaDevManagerLib/wxCDMBlackBoxDescriptionPanel.cpp b/lib/creaDevManagerLib/wxCDMBlackBoxDescriptionPanel.cpp index 1303e95..b53d919 100644 --- a/lib/creaDevManagerLib/wxCDMBlackBoxDescriptionPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMBlackBoxDescriptionPanel.cpp @@ -41,8 +41,8 @@ BEGIN_EVENT_TABLE(wxCDMBlackBoxDescriptionPanel, wxPanel) EVT_BUTTON(ID_BUTTON_PREV, wxCDMBlackBoxDescriptionPanel::OnBtnReturn) -EVT_MENU(ID_BUTTON_OPEN_CXX, wxCDMBlackBoxDescriptionPanel::OnBtnOpenCxx) -EVT_MENU(ID_BUTTON_OPEN_HXX, wxCDMBlackBoxDescriptionPanel::OnBtnOpenHxx) +EVT_BUTTON(ID_BUTTON_OPEN_CXX, wxCDMBlackBoxDescriptionPanel::OnBtnOpenCxx) +EVT_BUTTON(ID_BUTTON_OPEN_HXX, wxCDMBlackBoxDescriptionPanel::OnBtnOpenHxx) EVT_BUTTON(ID_BUTTON_OPEN_FOLDER, wxCDMBlackBoxDescriptionPanel::OnBtnOpenFolder) END_EVENT_TABLE() diff --git a/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.cpp b/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.cpp index 653e0b8..719426a 100644 --- a/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.cpp @@ -34,11 +34,15 @@ #include "wxCDMCMakeListsDescriptionPanel.h" +#include "wxCDMMainFrame.h" + #include "creaDevManagerIds.h" #include "images/CMIcon64.xpm" BEGIN_EVENT_TABLE(wxCDMCMakeListsDescriptionPanel, wxPanel) -EVT_MENU(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMCMakeListsDescriptionPanel::OnBtnOpenInEditor) +EVT_BUTTON(ID_BUTTON_PREV, wxCDMCMakeListsDescriptionPanel::OnBtnReturn) +EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMCMakeListsDescriptionPanel::OnBtnOpenInEditor) +EVT_BUTTON(ID_BUTTON_OPEN_FOLDER, wxCDMCMakeListsDescriptionPanel::OnBtnOpenFolder) END_EVENT_TABLE() wxCDMCMakeListsDescriptionPanel::wxCDMCMakeListsDescriptionPanel( @@ -78,34 +82,60 @@ void wxCDMCMakeListsDescriptionPanel::CreateControls() { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - //Welcome - sizer->Add(new wxStaticText(this, -1, _("File")),0, wxALIGN_CENTER, 0); + //Link to return + wxButton* returnbt = new wxButton(this, ID_BUTTON_PREV, wxT("Return to project")); + returnbt->SetToolTip(wxT("Return to the active project description.")); + sizer->Add(returnbt, 0, wxALIGN_CENTER | wxALL, 5); + + //Title + sizer->Add(new wxStaticText(this, -1, _("CMakeLists.txt File")),0, wxALIGN_CENTER, 0); //Image sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(CMIcon64)),0, wxALIGN_CENTER, 0); //File Name - sizer->Add(new wxStaticText(this, -1, crea::std2wx("CMake Configuration File (CMakeLists.txt)")), 0, wxALIGN_CENTER, 0); + sizer->Add(new wxStaticText(this, -1, crea::std2wx("CMake Configuration File")), 0, wxALIGN_CENTER, 0); //Actions - wxStaticBox* actionsBox = new wxStaticBox(this, -1, _T("&Actions")); - wxStaticBoxSizer* actionsBoxInnerSizer = new wxStaticBoxSizer(actionsBox, wxVERTICAL); - sizer -> Add(actionsBoxInnerSizer, 1, wxEXPAND | wxALL, 20); - - actionsBoxInnerSizer->Add(new wxButton(this, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Edit in file editor")), 0, wxEXPAND | wxRIGHT | wxLEFT, 20); + wxStaticBoxSizer* actionsBox = new wxStaticBoxSizer(wxHORIZONTAL, this, wxT("&Actions")); + wxPanel* actionsPanel = new wxPanel(this); + wxBoxSizer* actionsPanelSizer = new wxBoxSizer(wxHORIZONTAL); + + wxButton* editCMakebt = new wxButton(actionsPanel, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Open File")); + editCMakebt->SetToolTip(wxT("Open the CMakeLists file in the default text editor.")); + actionsPanelSizer->Add(editCMakebt, 0, wxALL, 5); + wxButton* openFolderbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_FOLDER, _T("Open Containing Folder")); + openFolderbt->SetToolTip(wxT("Open the folder where the CMakeLists file is located in the file explorer.")); + actionsPanelSizer->Add(openFolderbt, 0, wxALL, 5); + + actionsPanel->SetSizer(actionsPanelSizer); + actionsPanelSizer->Fit(actionsPanel); + actionsBox->Add(actionsPanel, 0, wxEXPAND); + sizer -> Add(actionsBox, 0, wxEXPAND | wxALL, 10); //Assign sizer - actionsBoxInnerSizer->SetSizeHints(this); - SetSizer(sizer); sizer->SetSizeHints(this); } +void wxCDMCMakeListsDescriptionPanel::OnBtnReturn(wxCommandEvent& event) +{ + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED); + newEvent->SetInt(((wxCDMMainFrame*)this->GetParent())->GetModel()->GetProject()->GetId()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); +} + void wxCDMCMakeListsDescriptionPanel::OnBtnOpenInEditor(wxCommandEvent& event) { //TODO: implement method std::cerr << "Event OnBtnOpenInEditor not implemented" << std::endl; event.Skip(); - event.StopPropagation(); } +void wxCDMCMakeListsDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event) +{ + //TODO: implement method + std::cerr << "Event OnBtnOpenFolder not implemented" << std::endl; + event.Skip(); +} diff --git a/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.h b/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.h index a48874c..b37d338 100644 --- a/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.h +++ b/lib/creaDevManagerLib/wxCDMCMakeListsDescriptionPanel.h @@ -73,7 +73,9 @@ private: //handlers protected: + void OnBtnReturn(wxCommandEvent& event); void OnBtnOpenInEditor(wxCommandEvent& event); + void OnBtnOpenFolder(wxCommandEvent& event); }; #endif /* WXCDMCMAKELISTSDESCRIPTIONPANEL_H_ */ diff --git a/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.cpp b/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.cpp index 75e2d5e..4f48a4f 100644 --- a/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.cpp @@ -36,11 +36,14 @@ #include +#include "wxCDMMainFrame.h" + #include "creaDevManagerIds.h" #include "images/FlIcon64.xpm" BEGIN_EVENT_TABLE(wxCDMFileDescriptionPanel, wxPanel) -EVT_MENU(ID_BUTTON_OPEN_FOLDER, wxCDMFileDescriptionPanel::OnBtnOpenContainingFolder) +EVT_BUTTON(ID_BUTTON_PREV, wxCDMFileDescriptionPanel::OnBtnReturn) +EVT_MENU(ID_BUTTON_OPEN_FOLDER, wxCDMFileDescriptionPanel::OnBtnOpenFolder) EVT_MENU(ID_BUTTON_OPEN_COMMAND, wxCDMFileDescriptionPanel::OnBtnOpenWithCommand) END_EVENT_TABLE() @@ -81,56 +84,83 @@ void wxCDMFileDescriptionPanel::CreateControls() { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - //Welcome + //Link to return + wxButton* returnbt = new wxButton(this, ID_BUTTON_PREV, wxT("Return to project")); + returnbt->SetToolTip(wxT("Return to the active project description.")); + sizer->Add(returnbt, 0, wxALIGN_CENTER | wxALL, 5); + + //Title sizer->Add(new wxStaticText(this, -1, _("File")),0, wxALIGN_CENTER, 0); //Image sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(FlIcon64)),0, wxALIGN_CENTER, 0); - //BlackBox Name + //File Name sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->file->GetName())),0, wxALIGN_CENTER, 0); - //BlackBox Properties - wxStaticBox* propertiesBox = new wxStaticBox(this, -1, _T("&Properties")); - wxStaticBoxSizer* propertiesBoxInnerSizer = new wxStaticBoxSizer(propertiesBox, wxVERTICAL); + //File Properties + wxStaticBoxSizer* propertiesBox = new wxStaticBoxSizer(wxVERTICAL, this, wxT("&Properties")); + wxPanel* propertiesPanel = new wxPanel(this); + wxBoxSizer* propertiesPanelSizer = new wxBoxSizer(wxVERTICAL); + wxFlexGridSizer* propertiesGridSizer = new wxFlexGridSizer(4, 2, 9, 15); - wxFlexGridSizer* flexGridSizer = new wxFlexGridSizer(4, 2, 9, 15); + wxStaticText *pLocation = new wxStaticText(propertiesPanel, -1, wxT("Location")); + wxStaticText *pLength = new wxStaticText(propertiesPanel, -1, wxT("File Size")); - wxStaticText *pLocation = new wxStaticText(this, -1, wxT("Location")); - wxStaticText *pLength = new wxStaticText(this, -1, wxT("File Length")); + wxStaticText* pLocationtc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(this->file->GetPath())); + pLocationtc->SetMaxSize(wxSize(350,-1)); + int lgth = this->file->GetLength(); + std::stringstream ss; + ss << lgth / 1024; + std::string lgths = ss.str() + " KB"; + wxStaticText* pLengthtc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(lgths)); - wxTextCtrl *pLocationtc = new wxTextCtrl(this, -1, crea::std2wx(this->file->GetPath())); - int lgth = this->file->GetLength(); - std::stringstream ss; - ss << lgth; - std::string lgths = ss.str(); - wxTextCtrl *pLengthtc = new wxTextCtrl(this, -1, crea::std2wx(lgths)); + propertiesGridSizer->Add(pLocation, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + propertiesGridSizer->Add(pLocationtc, 1, wxEXPAND); + propertiesGridSizer->Add(pLength, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + propertiesGridSizer->Add(pLengthtc, 1, wxEXPAND); - flexGridSizer->Add(pLocation, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - flexGridSizer->Add(pLocationtc, 1, wxEXPAND); - flexGridSizer->Add(pLength, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - flexGridSizer->Add(pLengthtc, 1, wxEXPAND); + propertiesGridSizer->AddGrowableCol(1,1); - propertiesBoxInnerSizer -> Add(flexGridSizer, 0, wxEXPAND); - sizer -> Add(propertiesBoxInnerSizer, 1, wxEXPAND | wxALL, 20); + propertiesPanelSizer -> Add(propertiesGridSizer, 1, wxEXPAND); + propertiesPanel->SetSizer(propertiesPanelSizer); + propertiesPanelSizer->Fit(propertiesPanel); + propertiesBox->Add(propertiesPanel, 0, wxALL, 5); + sizer->Add(propertiesBox, 0, wxEXPAND | wxALL, 10); - //Actions - wxStaticBox* actionsBox = new wxStaticBox(this, -1, _T("&Actions")); - wxStaticBoxSizer* actionsBoxInnerSizer = new wxStaticBoxSizer(actionsBox, wxVERTICAL); - sizer -> Add(actionsBoxInnerSizer, 1, wxEXPAND | wxALL, 20); - actionsBoxInnerSizer->Add(new wxButton(this, ID_BUTTON_OPEN_FOLDER, _T("Open in File Explorer")), 0, wxEXPAND | wxRIGHT | wxLEFT, 20); - actionsBoxInnerSizer->Add(new wxButton(this, ID_BUTTON_OPEN_COMMAND, _T("Open with a command")), 0, wxEXPAND | wxRIGHT | wxLEFT, 20); + //Actions + wxStaticBoxSizer* actionsBox = new wxStaticBoxSizer(wxHORIZONTAL, this, wxT("&Actions")); + wxPanel* actionsPanel = new wxPanel(this); + wxBoxSizer* actionsPanelSizer = new wxBoxSizer(wxHORIZONTAL); + + wxButton* openCommandbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_COMMAND, _T("Open with Command")); + openCommandbt->SetToolTip(wxT("Open this file executing a command in a terminal/command line.")); + actionsPanelSizer->Add(openCommandbt, 0, wxALL, 5); + wxButton* openFolderbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_FOLDER, _T("Open Containing Folder")); + openFolderbt->SetToolTip(wxT("Open the folder where this file is located in the file explorer.")); + actionsPanelSizer->Add(openFolderbt, 0, wxALL, 5); + + actionsPanel->SetSizer(actionsPanelSizer); + actionsPanelSizer->Fit(actionsPanel); + actionsBox->Add(actionsPanel, 0, wxEXPAND); + sizer -> Add(actionsBox, 0, wxEXPAND | wxALL, 10); //Assign sizer - actionsBoxInnerSizer->SetSizeHints(this); - SetSizer(sizer); sizer->SetSizeHints(this); } -void wxCDMFileDescriptionPanel::OnBtnOpenContainingFolder(wxCommandEvent& event) +void wxCDMFileDescriptionPanel::OnBtnReturn(wxCommandEvent& event) +{ + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED); + newEvent->SetInt(((wxCDMMainFrame*)this->GetParent())->GetModel()->GetProject()->GetId()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); +} + +void wxCDMFileDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event) { //TODO: implement method std::cerr << "Event OnBtnOpenContainingFolder not implemented" << std::endl; diff --git a/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.h b/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.h index 635761d..38f50da 100644 --- a/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.h +++ b/lib/creaDevManagerLib/wxCDMFileDescriptionPanel.h @@ -73,7 +73,8 @@ private: //handlers protected: - void OnBtnOpenContainingFolder(wxCommandEvent& event); + void OnBtnReturn(wxCommandEvent& event); + void OnBtnOpenFolder(wxCommandEvent& event); void OnBtnOpenWithCommand(wxCommandEvent& event); }; diff --git a/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.cpp b/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.cpp index 00e10ed..d27bca0 100644 --- a/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.cpp @@ -34,10 +34,13 @@ #include "wxCDMFolderDescriptionPanel.h" +#include "wxCDMMainFrame.h" + #include "creaDevManagerIds.h" #include "images/FdIcon64.xpm" BEGIN_EVENT_TABLE(wxCDMFolderDescriptionPanel, wxPanel) +EVT_BUTTON(ID_BUTTON_PREV, wxCDMFolderDescriptionPanel::OnBtnReturn) EVT_MENU(ID_BUTTON_OPEN_FOLDER, wxCDMFolderDescriptionPanel::OnBtnOpenInExplorer) EVT_MENU(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMFolderDescriptionPanel::OnBtnEditCMakeLists) END_EVENT_TABLE() @@ -79,33 +82,54 @@ void wxCDMFolderDescriptionPanel::CreateControls() { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - //Welcome + //Link to return + wxButton* returnbt = new wxButton(this, ID_BUTTON_PREV, wxT("Return to project")); + returnbt->SetToolTip(wxT("Return to the active project description.")); + sizer->Add(returnbt, 0, wxALIGN_CENTER | wxALL, 5); + + //Title sizer->Add(new wxStaticText(this, -1, _("Folder")),0, wxALIGN_CENTER, 0); //Image sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(FdIcon64)),0, wxALIGN_CENTER, 0); - //Welcome + //Folder Name sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->folder->GetName())),0, wxALIGN_CENTER, 0); //Actions - wxStaticBox* actionsBox = new wxStaticBox(this, -1, _T("&Actions")); - wxStaticBoxSizer* actionsBoxInnerSizer = new wxStaticBoxSizer(actionsBox, wxVERTICAL); - sizer -> Add(actionsBoxInnerSizer, 1, wxEXPAND | wxALL, 20); + wxStaticBoxSizer* actionsBox = new wxStaticBoxSizer(wxHORIZONTAL, this, wxT("&Actions")); + wxPanel* actionsPanel = new wxPanel(this); + wxBoxSizer* actionsPanelSizer = new wxBoxSizer(wxHORIZONTAL); + + wxButton* openFolderbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_FOLDER, _T("Open in File Explorer")); + openFolderbt->SetToolTip(wxT("Open this folder in the file explorer.")); + actionsPanelSizer->Add(openFolderbt, 0, wxALL, 5); - actionsBoxInnerSizer->Add(new wxButton(this, ID_BUTTON_OPEN_FOLDER, _T("Open in File Explorer")), 0, wxEXPAND | wxRIGHT | wxLEFT, 20); if(this->folder->HasCMakeLists()) { - actionsBoxInnerSizer->Add(new wxButton(this, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Edit CMakeLists File")), 0, wxEXPAND | wxRIGHT | wxLEFT, 20); + wxButton* editCMakebt = new wxButton(actionsPanel, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Edit CMakeLists File")); + editCMakebt->SetToolTip(wxT("Open the CMakeLists.txt file in this folder with the default text editor.")); + actionsPanelSizer->Add(editCMakebt, 0, wxALL, 5); } - //Assign sizer - actionsBoxInnerSizer->SetSizeHints(this); + actionsPanel->SetSizer(actionsPanelSizer); + actionsPanelSizer->Fit(actionsPanel); + actionsBox->Add(actionsPanel, 0, wxEXPAND); + sizer -> Add(actionsBox, 0, wxEXPAND | wxALL, 10); + //Assign sizer SetSizer(sizer); sizer->SetSizeHints(this); } +void wxCDMFolderDescriptionPanel::OnBtnReturn(wxCommandEvent& event) +{ + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED); + newEvent->SetInt(((wxCDMMainFrame*)this->GetParent())->GetModel()->GetProject()->GetId()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); +} + void wxCDMFolderDescriptionPanel::OnBtnOpenInExplorer(wxCommandEvent& event) { //TODO: implement method diff --git a/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.h b/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.h index ddda2eb..d5c5685 100644 --- a/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.h +++ b/lib/creaDevManagerLib/wxCDMFolderDescriptionPanel.h @@ -73,6 +73,7 @@ private: //handlers protected: + void OnBtnReturn(wxCommandEvent& event); void OnBtnEditCMakeLists(wxCommandEvent& event); void OnBtnOpenInExplorer(wxCommandEvent& event); -- 2.45.1