X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FwxCDMPackageHelpDialog.cpp;h=07d653a839be08496ee58ae4bd61fe1f49ac42ad;hb=5ff0bb2664c3cd508c1dd438666a71b8a96459c3;hp=0a30fa55f8bccd6eaf3f08564b88f30bae83841a;hpb=4e0312091408bc9bd77f3f70ade44d207365cdbe;p=crea.git diff --git a/lib/creaDevManagerLib/wxCDMPackageHelpDialog.cpp b/lib/creaDevManagerLib/wxCDMPackageHelpDialog.cpp index 0a30fa5..07d653a 100644 --- a/lib/creaDevManagerLib/wxCDMPackageHelpDialog.cpp +++ b/lib/creaDevManagerLib/wxCDMPackageHelpDialog.cpp @@ -37,7 +37,11 @@ #include "creaDevManagerIds.h" +#include "modelCDMProject.h" + BEGIN_EVENT_TABLE(wxCDMPackageHelpDialog, wxDialog) +EVT_BUTTON(ID_BUTTON_OPENPROJECT, wxCDMPackageHelpDialog::OnCMakeLists) +EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMPackageHelpDialog::OnCMakeLists) EVT_BUTTON(ID_BUTTON_CANCEL, wxCDMPackageHelpDialog::OnFinish) EVT_CHECKBOX(ID_CHECKBOX_DISABLE_HELP, wxCDMPackageHelpDialog::OnDisableHelp) END_EVENT_TABLE() @@ -105,11 +109,15 @@ void wxCDMPackageHelpDialog::CreateControls() ); v_sizer1->Add(instruction, 0,wxEXPAND | wxALL, 5); - wxButton* editCMakePKGBtn = new wxButton(this, ID_BUTTON_EDIT_CMAKELISTSFILE, wxT("Open Package's directory CMakeLists file")); - wxButton* editCMakePRJBtn= new wxButton(this, ID_BUTTON_OPENPROJECT, wxT("Open Project's directory CMakeLists file")); + wxButton* editCMakePkgBtn = new wxButton(this, ID_BUTTON_EDIT_CMAKELISTSFILE, wxT("Open Package's directory CMakeLists file")); + editCMakePkgBtn->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageHelpDialog::OnCMakeListsEnter,NULL,this); + editCMakePkgBtn->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageHelpDialog::OnCMakeListsExit,NULL,this); + wxButton* editCMakePrjBtn= new wxButton(this, ID_BUTTON_OPENPROJECT, wxT("Open Project's directory CMakeLists file")); + editCMakePrjBtn->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageHelpDialog::OnCMakeListsEnter,NULL,this); + editCMakePrjBtn->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMPackageHelpDialog::OnCMakeListsExit,NULL,this); - v_sizer1->Add(editCMakePKGBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15); - v_sizer1->Add(editCMakePRJBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15); + v_sizer1->Add(editCMakePkgBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15); + v_sizer1->Add(editCMakePrjBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15); v_sizer1->Add(new wxCheckBox(this, ID_CHECKBOX_DISABLE_HELP, wxT("&Disable help")), 0, wxALIGN_RIGHT | wxRIGHT, 10); @@ -119,6 +127,123 @@ void wxCDMPackageHelpDialog::CreateControls() //v_sizer1->RecalcSizes(); } +void wxCDMPackageHelpDialog::OnCMakeLists(wxCommandEvent& event) +{ + std::string* result; + + if((int)((wxButton*)event.GetEventObject())->GetId() == (int)ID_BUTTON_EDIT_CMAKELISTSFILE) + { + + if(!this->package->OpenCMakeListsFile(result)) + wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR); + + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); + + if(this->package->GetCMakeLists() != NULL) + { + newEvent->SetClientData(this->package->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT) + { + modelCDMIProjectTreeNode* node = this->package; + while (node != NULL && dynamic_cast(node) == NULL) + { + node = node->GetParent(); + } + if (node != NULL) + { + if(!((modelCDMProject*)node)->OpenCMakeListsFile(result)) + wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR); + + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); + + if(((modelCDMProject*)node)->GetCMakeLists() != NULL) + { + newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + else + { + wxMessageBox(crea::std2wx("No project CMakeLists file was found."),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR); + } + } +} + +void wxCDMPackageHelpDialog::OnCMakeListsEnter(wxMouseEvent& event) +{ + if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE) + { + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED); + + if(this->package->GetCMakeLists() != NULL) + { + newEvent->SetClientData(this->package->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT) + { + modelCDMIProjectTreeNode* node = this->package; + while (node != NULL && dynamic_cast(node) == NULL) + { + node = node->GetParent(); + } + if (node != NULL) + { + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED); + + if(((modelCDMProject*)node)->GetCMakeLists() != NULL) + { + newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + } + event.Skip(); +} + +void wxCDMPackageHelpDialog::OnCMakeListsExit(wxMouseEvent& event) +{ + if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE) + { + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); + + if(this->package->GetCMakeLists() != NULL) + { + newEvent->SetClientData(this->package->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT) + { + modelCDMIProjectTreeNode* node = this->package; + while (node != NULL && dynamic_cast(node) == NULL) + { + node = node->GetParent(); + } + if (node != NULL) + { + wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED); + + if(((modelCDMProject*)node)->GetCMakeLists() != NULL) + { + newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists()); + newEvent->SetId(0); + wxPostEvent(this->GetParent(), *newEvent); + } + } + } + event.Skip(); +} + void wxCDMPackageHelpDialog::OnFinish(wxCommandEvent& event) { this->EndDialog(wxID_CANCEL);