X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FwxCDMPackageDescriptionPanel.cpp;h=c736270ab93550b09ac1733dc8de971da2f5f621;hb=f3f98131ffd23351c3cd872a0b04aecdc97b7c92;hp=12b915276c1a6a7a81c219a799a2525af4188d10;hpb=11150e550ff03ee658e90cda4b475b4c24da0a7f;p=crea.git diff --git a/lib/creaDevManagerLib/wxCDMPackageDescriptionPanel.cpp b/lib/creaDevManagerLib/wxCDMPackageDescriptionPanel.cpp index 12b9152..c736270 100644 --- a/lib/creaDevManagerLib/wxCDMPackageDescriptionPanel.cpp +++ b/lib/creaDevManagerLib/wxCDMPackageDescriptionPanel.cpp @@ -40,6 +40,7 @@ #include "images/PkIcon64.xpm" #include "wxCDMNewBlackBoxDialog.h" +#include "wxCDMPackageConfigurationDialog.h" #include #include "CDMUtilities.h" @@ -57,6 +58,7 @@ EVT_HYPERLINK(ID_LINK_SELECT_BLACKBOX, wxCDMPackageDescriptionPanel::OnLnkBlackB EVT_BUTTON(ID_BUTTON_CREATE_BLACKBOX, wxCDMPackageDescriptionPanel::OnBtnCreateBlackBox) EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMPackageDescriptionPanel::OnBtnEditCMakeLists) EVT_BUTTON(ID_BUTTON_OPEN_FOLDER, wxCDMPackageDescriptionPanel::OnBtnOpenFolder) +EVT_BUTTON(ID_BUTTON_CHOOSE, wxCDMPackageDescriptionPanel::OnBtnConfigurePackage) END_EVENT_TABLE() wxCDMPackageDescriptionPanel::wxCDMPackageDescriptionPanel( @@ -86,9 +88,12 @@ bool wxCDMPackageDescriptionPanel::Create( long style ) { - wxPanel::Create(parent, id, pos, size, style); this->package = package; + wxPanel::Create(parent, id, pos, size, style); CreateControls(); + // this part makes the scrollbars show up + this->FitInside(); // ask the sizer about the needed size + this->SetScrollRate(5, 5); return TRUE; } @@ -99,16 +104,17 @@ void wxCDMPackageDescriptionPanel::CreateControls() //Links to return wxBoxSizer *linksSizer = new wxBoxSizer(wxHORIZONTAL); std::vector parents = this->package->GetParents(); - for (int i = 0; i < parents.size(); i++) + for (int i = 0; i < (int)(parents.size()); i++) { - wxHyperlinkCtrl* returnLnk = new wxHyperlinkCtrl(this, ID_BUTTON_PREV, crea::std2wx(parents[parents.size()-1-i]->GetName()), crea::std2wx(parents[parents.size()-1-i]->GetPath())); - returnLnk->SetToolTip(crea::std2wx("Return to " + parents[parents.size()-1-i]->GetName() + ".")); + wxHyperlinkCtrl* returnLnk = new wxHyperlinkCtrl(this, ID_BUTTON_PREV, crea::std2wx(parents[parents.size()-1-i]->GetName()), crea::std2wx(parents[parents.size()-1-i]->GetPath()), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + returnLnk->SetWindowStyle(wxNO_BORDER); + returnLnk->SetToolTip(crea::std2wx("Return to " + parents[parents.size()-1-i]->GetName() + ".")); linksSizer->Add(returnLnk, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 5); - if (i < parents.size()-1) - { - linksSizer->Add(new wxStaticText(this,wxID_ANY, wxT("/")), 0, wxALIGN_CENTER, 0); - } + linksSizer->Add(new wxStaticText(this,wxID_ANY, wxT("/")), 0, wxALIGN_CENTER, 0); } + + linksSizer->Add(new wxStaticText(this, wxID_ANY, crea::std2wx(this->package->GetName())), 0, wxALIGN_CENTER, 0); + sizer->Add(linksSizer, 0, wxALIGN_CENTER | wxALL, 5); //Header @@ -183,14 +189,14 @@ void wxCDMPackageDescriptionPanel::CreateControls() std::vector blackBoxes = this->package->GetSrc()->GetBlackBoxes(); - for (int i = 0; i < blackBoxes.size(); i++) + for (int i = 0; i < (int)(blackBoxes.size()); i++) { if(blackBoxes[i] != NULL) { - wxHyperlinkCtrl* pBBlk = new wxHyperlinkCtrl(BBPanel,ID_LINK_SELECT_BLACKBOX, crea::std2wx(blackBoxes[i]->GetName().c_str()), crea::std2wx(blackBoxes[i]->GetName().c_str())); - pBBlk->SetWindowStyle(wxALIGN_LEFT); + wxHyperlinkCtrl* pBBlk = new wxHyperlinkCtrl(BBPanel,ID_LINK_SELECT_BLACKBOX, crea::std2wx(blackBoxes[i]->GetName().c_str()), crea::std2wx(blackBoxes[i]->GetName().c_str()), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + pBBlk->SetWindowStyle(wxALIGN_LEFT | wxNO_BORDER); std::string tt = "Author: " + blackBoxes[i]->GetAuthors() + "\nDescription: " + blackBoxes[i]->GetDescription() + "\nCategories: " + blackBoxes[i]->GetCategories(); pBBlk->SetToolTip(crea::std2wx(tt)); pBBlk->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageDescriptionPanel::OnMouseEnter,NULL,this); @@ -214,12 +220,15 @@ void wxCDMPackageDescriptionPanel::CreateControls() wxButton* createBBbt = new wxButton(actionsPanel, ID_BUTTON_CREATE_BLACKBOX, _T("A. Create Black Box")); createBBbt->SetToolTip(wxT("Create a new black box for the active project inside this package.")); actionsGridSizer->Add(createBBbt, 1, wxALL | wxEXPAND, 5); - wxButton* editCMakebt = new wxButton(actionsPanel, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("B. Edit CMakeLists File")); + wxButton* editConfbt = new wxButton(actionsPanel, ID_BUTTON_CHOOSE, _T("B. Configure Package")); + editConfbt->SetToolTip(wxT("Select the libraries your package is going to use. This procedure changes the package's CMakeLists file.")); + actionsGridSizer->Add(editConfbt, 1, wxALL | wxEXPAND, 5); + wxButton* editCMakebt = new wxButton(actionsPanel, ID_BUTTON_EDIT_CMAKELISTSFILE, _T("Edit CMakeLists File")); editCMakebt->SetToolTip(wxT("Open the system default text editor to edit the package's CMakeLists.txt file.")); editCMakebt->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageDescriptionPanel::OnCMakeMouseEnter,NULL,this); editCMakebt->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageDescriptionPanel::OnCMakeMouseExit,NULL,this); actionsGridSizer->Add(editCMakebt, 1, wxALL | wxEXPAND, 5); - wxButton* openFolderbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_FOLDER, _T("C. Open Package Folder")); + wxButton* openFolderbt = new wxButton(actionsPanel, ID_BUTTON_OPEN_FOLDER, _T("Open Package Folder")); openFolderbt->SetToolTip(wxT("Open the package folder in the file explorer.")); actionsGridSizer->Add(openFolderbt, 1, wxALL | wxEXPAND, 5); @@ -248,12 +257,12 @@ void wxCDMPackageDescriptionPanel::OnBtnReturn(wxHyperlinkEvent& event) std::vector parents = this->package->GetParents(); std::string parentURL = crea::wx2std(((wxHyperlinkCtrl*)event.GetEventObject())->GetURL()); //std::cout << parentURL << std::endl; - for (int i = 0; i < parents.size(); i++) + for (int i = 0; i < (int)(parents.size()); i++) { if (parents[i]->GetPath() == parentURL) { wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED); - newEvent->SetInt(parents[i]->GetId()); + newEvent->SetClientData(parents[i]); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); } @@ -339,14 +348,12 @@ void wxCDMPackageDescriptionPanel::OnBtnSetDescription(wxCommandEvent& event) void wxCDMPackageDescriptionPanel::OnLnkBlackBoxSelect(wxHyperlinkEvent& event) { - int bbId = 0; modelCDMBlackBox* bb; std::vector bbs = this->package->GetSrc()->GetBlackBoxes(); - for (int i = 0; i < bbs.size(); i++) + for (int i = 0; i < (int)(bbs.size()); i++) { if(bbs[i]->GetName() == crea::wx2std(event.GetURL())) { - bbId = bbs[i]->GetHeaderFile()->GetId(); bb = bbs[i]; break; } @@ -358,8 +365,8 @@ void wxCDMPackageDescriptionPanel::OnLnkBlackBoxSelect(wxHyperlinkEvent& event) newEvent->SetString(wxT("blackbox")); wxPostEvent(this->GetParent(), *newEvent); - wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED); - newEvent1->SetInt(bbId); + wxCommandEvent* newEvent1 = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); + newEvent1->SetClientData(bb->GetHeaderFile()); newEvent1->SetId(0); wxPostEvent(this->GetParent(), *newEvent1); @@ -401,25 +408,32 @@ void wxCDMPackageDescriptionPanel::OnBtnCreateBlackBox(wxCommandEvent& event) wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED); newEvent->SetId(1); - newEvent->SetInt(blackBox->GetId()); + newEvent->SetClientData(blackBox); newEvent->SetString(wxT("blackbox")); newEvent->SetClientData(blackBox); wxPostEvent(this->GetParent(), *newEvent); } } +void +wxCDMPackageDescriptionPanel::OnBtnConfigurePackage(wxCommandEvent& event) +{ + wxCDMPackageConfigurationDialog* dialog = new wxCDMPackageConfigurationDialog(this,this->package); + long userResponse; + userResponse = dialog->ShowModal(); +} + void wxCDMPackageDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event) { std::string* result; if(!this->package->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->package->GetCMakeLists() != NULL) { - int CMId = this->package->GetCMakeLists()->GetId(); - newEvent->SetInt(CMId); + newEvent->SetClientData(this->package->GetCMakeLists()); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); } @@ -436,20 +450,20 @@ void wxCDMPackageDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event) void wxCDMPackageDescriptionPanel::OnMouseEnter(wxMouseEvent& event) { - wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED); + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED); std::string BBName = crea::wx2std(((wxHyperlinkCtrl*)event.GetEventObject())->GetURL()); - int bbId = 0; + modelCDMFile* bbHeader = NULL; std::vector boxes = this->package->GetSrc()->GetBlackBoxes(); - for (int i = 0; i < boxes.size(); i++) + for (int i = 0; i < (int)(boxes.size()); i++) { if(boxes[i]->GetName() == BBName) { - bbId = boxes[i]->GetHeaderFile()->GetId(); + bbHeader = boxes[i]->GetHeaderFile(); break; } } - newEvent->SetInt(bbId); + newEvent->SetClientData(bbHeader); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); event.Skip(); @@ -457,19 +471,19 @@ void wxCDMPackageDescriptionPanel::OnMouseEnter(wxMouseEvent& event) void wxCDMPackageDescriptionPanel::OnMouseExit(wxMouseEvent& event) { - wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED); + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); std::string BBName = crea::wx2std(((wxHyperlinkCtrl*)event.GetEventObject())->GetURL()); - int bbId = 0; + modelCDMFile* bbHeader = NULL; std::vector boxes = this->package->GetSrc()->GetBlackBoxes(); - for (int i = 0; i < boxes.size(); i++) + for (int i = 0; i < (int)(boxes.size()); i++) { if(boxes[i]->GetName() == BBName) { - bbId = boxes[i]->GetHeaderFile()->GetId(); + bbHeader = boxes[i]->GetHeaderFile(); break; } } - newEvent->SetInt(bbId); + newEvent->SetClientData(bbHeader); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); event.Skip(); @@ -477,12 +491,11 @@ void wxCDMPackageDescriptionPanel::OnMouseExit(wxMouseEvent& event) void wxCDMPackageDescriptionPanel::OnCMakeMouseEnter(wxMouseEvent& event) { - wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED); + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED); if(this->package->GetCMakeLists() != NULL) { - int CMId = this->package->GetCMakeLists()->GetId(); - newEvent->SetInt(CMId); + newEvent->SetClientData(this->package->GetCMakeLists()); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); } @@ -491,12 +504,11 @@ void wxCDMPackageDescriptionPanel::OnCMakeMouseEnter(wxMouseEvent& event) void wxCDMPackageDescriptionPanel::OnCMakeMouseExit(wxMouseEvent& event) { - wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED); + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); if(this->package->GetCMakeLists() != NULL) { - int CMId = this->package->GetCMakeLists()->GetId(); - newEvent->SetInt(CMId); + newEvent->SetClientData(this->package->GetCMakeLists()); newEvent->SetId(0); wxPostEvent(this->GetParent(), *newEvent); }