From: espinosa Date: Fri, 17 Apr 2015 15:22:57 +0000 (+0200) Subject: #2620 creaMaracasVisu Feature New Normal - creaPanelButtonContainer New wxWidget... X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=creaMaracasVisu.git;a=commitdiff_plain;h=7237c161ca713d5054c9a5cd7dc7188d5ac65ae9 #2620 creaMaracasVisu Feature New Normal - creaPanelButtonContainer New wxWidget ComboBox --- diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.cxx new file mode 100644 index 0000000..aa30564 --- /dev/null +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.cxx @@ -0,0 +1,142 @@ +/*# --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la Sant�) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + +#include "comboBox.h" + +namespace creaButtonContainer +{ + namespace view + { + // ---------------------------------------------------------------------------------- + + ComboBox::ComboBox(wxWindow* parent, wxWindowID id, ItemsVector iVector, + TFunctor* functor) + : wxPanel(parent, id) + { + + this->m_Functor = functor; + + wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); + + this->SetSizer(sizer); + + this->m_ComboBox = new wxComboBox(this, -1); + this->m_FunctorEnabled = true; + + this->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, + wxCommandEventHandler(ComboBox::OnComboBoxEvent)); + + if (!iVector.empty()) + { + for (ItemsVector::iterator it = iVector.begin(); it != iVector.end(); + ++it) + { + std::string key = it->first; + this->m_ComboBox->Append(wxString(key.c_str(), wxConvUTF8)); + } + } + + sizer->Add(this->m_ComboBox, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL); + + } + // ---------------------------------------------------------------------------------- + + ComboBox::ComboBox(wxWindow* parent, wxWindowID id, TFunctor* functor) + : wxPanel(parent, id) + { + this->m_Functor = functor; + + wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); + + this->SetSizer(sizer); + + this->m_ComboBox = new wxComboBox(this, -1); + this->m_FunctorEnabled = true; + + this->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, + wxCommandEventHandler(ComboBox::OnComboBoxEvent)); + + sizer->Add(this->m_ComboBox, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL); + + } + // ---------------------------------------------------------------------------------- + + ComboBox::~ComboBox() + { + + } + + // ---------------------------------------------------------------------------------- + + void ComboBox::OnComboBoxEvent(wxCommandEvent& event) + { + if (!this->IsFunctorEnabled()) + return; + else + { + try + { + std::cout << "MLER | ComboBox::OnComboBoxEvent( wxCommandEvent& event )" + << std::endl; + + int iSelection; + iSelection = this->m_ComboBox->GetSelection(); + + wxString itemNom = this->m_ComboBox->GetString(iSelection); + std::string itemNomC = std::string(itemNom.mb_str()); + + this->m_Functor->Call(itemNomC); + + } //yrt + catch (const std::exception& e) + { + std::cerr + << "ButtonContainerController::OnComboBoxEvent( wxCommandEvent& event ) exception: " + << e.what() << std::endl; + } //hctac + } + } + // ---------------------------------------------------------------------------------- + + void ComboBox::SetFunctorEnabled(const bool& enabled) + { + this->m_FunctorEnabled = enabled; + } + // ---------------------------------------------------------------------------------- + bool ComboBox::IsFunctorEnabled() const + { + return this->m_FunctorEnabled; + } + + // ---------------------------------------------------------------------------------- + wxComboBox* + ComboBox::GetComboBox() const + { + return this->m_ComboBox; + } + + } //ecapseman +} //ecapseman + diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.h new file mode 100644 index 0000000..aa359f4 --- /dev/null +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/comboBox.h @@ -0,0 +1,157 @@ +/*# --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la Sant�) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + +/*! + * @file listWx.h + * @brief This contains the ListWx class. + * @author Monica ESPINOSA (espinosa[AT]creatis.insa-lyon.fr) + * @date 2015-01-02 + */ + +#ifndef COMBOBOX_H +#define COMBOBOX_H + +//#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "functor.h" +#include "system.h" + +/*! @namespace + * @brief Contains the creaButtonContainer library included in creaMaracasVisu. + */ +namespace creaButtonContainer +{ + /*! @namespace + * @brief Contains the implementation of the view in creaButtonContainer library. + * @see MVC Software Architecture + */ + namespace view + { + /*! @class ListWx listWx.h "listWx.h" + * @brief This class contains the list in the panel. + * @details This class contains the information of a list, it derives from wxPanel. + * @see wxPanel + */ + class ComboBox: public wxPanel + { + public: + //typedef definition. + // ---------------------------------------------------------------------------------- + /*! typedef creaButtonContainer::model::TFunctor TFunctor; + * @brief Defines the TFunctor type. + */ + typedef creaButtonContainer::model::TFunctor TFunctor; + // ---------------------------------------------------------------------------------- + /*! @typedef std::pair ListAction; + * @brief Defines the ListAction type. + * First is the button name(item list), Second FunctionEventType + */ + typedef std::pair ListAction; + // ---------------------------------------------------------------------------------- + /*! @typedef std::vector ItemsVector; + * @brief Defines the Items Vector type. + */ + typedef std::vector ItemsVector; + // ---------------------------------------------------------------------------------- + //end of typedef definition. + + public: + // ---------------------------------------------------------------------------------- + /*! @fn ListWx( wxWindow* parent, wxWindowID id, ItemsVector iVector, + TFunctor* functor ); + * @brief This is the parameterized constructor. + * @param parent The wxWindow pointer to parent. + * @param id The wxID of the button. + * @param ItemsVector //The items Vector (name, wxPanel). + * @param TFunctor //The functor of items list. + */ + ComboBox(wxWindow* parent, wxWindowID id, ItemsVector iVector, + TFunctor* functor); + // ---------------------------------------------------------------------------------- + /*! @fn ListWx( wxWindow* parent, wxWindowID id, TFunctor* functor ); + * @brief This is the parameterized constructor. + * @param parent The wxWindow pointer to parent. + * @param id The wxID of the button. + * @param TFunctor //The functor of items list. + */ + ComboBox(wxWindow* parent, wxWindowID id, TFunctor* functor); + // ---------------------------------------------------------------------------------- + /*! @fn virtual ~Button( ); + * @brief This is the destructor. + */ + virtual + ~ComboBox(); + // ---------------------------------------------------------------------------------- + /*! @fn void OnListEvent( wxCommandEvent& event ); + * @brief This method calls the functor when + * an item of list is clicked. + * @param event + */ + void + OnComboBoxEvent(wxCommandEvent& event); + // ---------------------------------------------------------------------------------- + /*! @fn void SetFunctorEnabled( wxCommandEvent& event ); + * @brief This method set the state of Functor (enable or disable) + * @param enabled + */ + void + SetFunctorEnabled(const bool& enabled); + // ---------------------------------------------------------------------------------- + /*! @fn bool OnListEvent( wxCommandEvent& event ); + * @brief This method ask the state of functor. + * @return + */ + bool + IsFunctorEnabled() const; + // ---------------------------------------------------------------------------------- + /*! @fn wxListBox* GetListBox() const; + * @brief This method returns the wxlistBox. + * @exception std::bad_alloc + * @return wxListBox + */ + wxComboBox* + GetComboBox() const; + // ---------------------------------------------------------------------------------- + + private: + + wxComboBox* m_ComboBox; //!< This is the Items List. + TFunctor* m_Functor; //!< This is the functor. + bool m_FunctorEnabled; //!< Disable or Enable Functor. + + }; + } //ecapseman +} //ecapseman + +#endif // COMBOBOX_H diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx index f7ccecc..130b81b 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx @@ -215,9 +215,10 @@ namespace creaPanelButtonContainer { if (type == 0) this->AddButton(*it); - else if (type == 1 || type == 2) + else if (type == 1 || type == 2 || type == 3) this->AddItems(*it); + } //rof } //yrt catch (std::exception& e) diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h index 80528a2..4bd2ce5 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h @@ -35,7 +35,7 @@ #include #include -#include +//#include #include #include diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx index f356d35..8024f4a 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx @@ -157,7 +157,29 @@ namespace creaPanelButtonContainer wxCommandEventHandler(PanelButtonContainer::OnConfigButton)); } + else if (type == 3) + { + //MLER + TConcreteFunctor* lFunctor = new TConcreteFunctor(this, + &PanelButtonContainer::GenericListEvent); + + this->m_EventPanel = new wxPanel(this); + std::cout << "MLER Type 3; new ComboBox" << std::endl; + this->m_ComboBoxPanel = new ComboBox(this, -1, + this->m_ButtonContainerSettings->GetItemsVector(), lFunctor); + + //Bottom Panel + this->m_AuiManager->AddPane(this->m_EventPanel, + wxAuiPaneInfo().Name(_T("EventPanel")).Caption(_("EventPanel")).CaptionVisible( + true).MinimizeButton().MaximizeButton().CloseButton(false).Center().Resizable( + true)); + //Top Panel + this->m_AuiManager->AddPane(this->m_ComboBoxPanel, + wxAuiPaneInfo().Name(_T("ComboBoxContainerPanel")).DefaultPane().Caption( + _("ComboBoxContainerPanel")).PinButton().CaptionVisible(true).CloseButton( + false).Center().Resizable(true)); + } //End MLER this->m_AuiManager->Update(); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.h index 24e7e78..71ec045 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.h @@ -47,6 +47,7 @@ #include "functor.h" #include "listWx.h" #include "Settings.xpm" +#include "comboBox.h" /*! @namespace * @brief Contains the creaPanelButtonContainer library included in creaMaracasVisu. @@ -82,6 +83,9 @@ namespace creaPanelButtonContainer * This class inherits from wxDialog and contains the wxListBox and wxButton. */ typedef creaButtonContainer::view::ListConfigDialog ListConfigDialog; + + typedef creaButtonContainer::view::ComboBox ComboBox; + // ---------------------------------------------------------------------------------- //End MLER //end of typedef definition. @@ -161,6 +165,8 @@ namespace creaPanelButtonContainer ListWx* m_CurrentWxPanel;//!