]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx
Feature #1606 Add a new entry to ColorLayerImageView to select the fitting mode betwe...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / creaPanelButtonContainer / creaPanelButtonContainer.cxx
index 8bac02d5c6e42132977c8d5aea021fb79a3c0cfc..9e77d001a742315363c8e8edff3ba9ba11e8ade1 100644 (file)
@@ -1,74 +1,83 @@
-/***************************************************************
- * Name:      CartoPanel.cxx
- * Purpose:   Code for Application Frame
- * Author:    Diego CACERES (diego.caceres[AT]creatis.insa-lyon.fr)
- * Modified:  2011-05-09
- * Copyright: Diego CACERES (http://www.creatis.insa-lyon.fr/~caceres/)
- * License:
- **************************************************************/
+/*!
+ * @file creaPanelButtonContainer.h
+ * @brief implements PanelButtonContainer class
+ * @author Diego CACERES (diego.caceres[AT]creatis.insa-lyon.fr)
+ * @date  2011-06-02
+ */
 
 #include "creaPanelButtonContainer.h"
 
 namespace creaPanelButtonContainer
 {
-       //--------------------------------------------------------------------------------
-       typedef creaButtonContainer::model::TConcreteFunctor< PanelButtonContainer >
-           TConcreteFunctor;
-
-       PanelButtonContainer::PanelButtonContainer( wxWindow* parent,
-                       ButtonContainerSettings* bcSettings ) :
-                   wxPanel( parent, -1, wxDefaultPosition, wxSize( 300, 700 ),
-                       wxDEFAULT_FRAME_STYLE, _T("creaPanelButtonContainer") )
+       BEGIN_EVENT_TABLE(PanelButtonContainer,wxPanel)
+       //(*EventTable(ButtonContainerPanel)
+       //*)
+       END_EVENT_TABLE()
+       // ----------------------------------------------------------------------------------
+       typedef creaButtonContainer::model::TConcreteFunctor< PanelButtonContainer >   TConcreteFunctor;
+       // ----------------------------------------------------------------------------------
+       PanelButtonContainer::PanelButtonContainer( wxWindow* parent,  ButtonContainerSettings* bcSettings ) 
+               : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("creaPanelButtonContainer") )
        {
                this->m_ButtonContainerSettings = bcSettings;
                this->m_ButtonPanel = new wxPanel( this );
-               //Class that manages the cartobutton event!!!
-               TConcreteFunctor* functor = new TConcreteFunctor( this,
-                   &PanelButtonContainer::GenericButtonEvent );
+
+               //Class that manages the event!!!
+       //EED 20/01/2012
+               TConcreteFunctor* functor = new TConcreteFunctor( this, &PanelButtonContainer::GenericButtonEvent );
+//             TConcreteFunctor* functor = new TConcreteFunctor( this->m_ButtonPanel, &PanelButtonContainer::GenericButtonEvent );
                //end of the event definition
-               this->m_ButtonContainerPanel = new ButtonContainerPanel( this,
-                   this->m_ButtonContainerSettings->GetButtonGroupSettings( functor ) );
+
+               this->m_ButtonContainerPanel = new ButtonContainerPanel( this, this->m_ButtonContainerSettings->GetButtonGroupSettings( functor ) );
+
                //Using AuiManager to Manage the Panels
                this->m_AuiManager = new wxAuiManager( this, wxAUI_MGR_DEFAULT );
-               // CartoSettingsPanel Management
-               this->m_AuiManager->AddPane(
-                   this->m_ButtonPanel,
-                   wxAuiPaneInfo( ).Name( _T("ButtonPanel") ).Caption(
-                       _("Panel") ). CaptionVisible( ).CloseButton( false ).Left( ).MinSize(wxSize(300,300)) );
+
+               this->m_AuiManager->AddPane(this->m_ButtonPanel, wxAuiPaneInfo( ).Name( _T("ButtonPanel") ).Caption( _("Panel") ). CaptionVisible(true ).CloseButton( false ).Bottom( ).Resizable( true ) );
                //CartoButtonPanel Management
-               this->m_AuiManager->AddPane(
-                   this->m_ButtonContainerPanel,
-                   wxAuiPaneInfo( ).Name( _T("creaButtonContainer") ).Caption(
-                       _("creaButtonContainer") ). CaptionVisible( ).CloseButton( false ).Left( ) .MinSize(wxSize(300,300) ) );
+               this->m_AuiManager->AddPane( this->m_ButtonContainerPanel,wxAuiPaneInfo( ).Name( _T("creaButtonContainer") ).Caption(_("creaButtonContainer") ). CaptionVisible( false ).CloseButton(false ).Center( ).Resizable( true ) );
                this->m_AuiManager->Update( );
-               //this->createGimmick();
        }
-
+       // ----------------------------------------------------------------------------------
        PanelButtonContainer::~PanelButtonContainer( )
        {
        }
-
+       // ----------------------------------------------------------------------------------
        void
        PanelButtonContainer::UpdatePanel( const std::string &buttonName )
        {
-               //Hiding the last CartoSettingsPanel
-               this->m_ButtonPanel->Show( false );
-               //Finding the CartoSettingsPanel of the ButtonClicket
-               this->m_ButtonPanel = this->m_ButtonContainerSettings->GetPanelButton(
-                   buttonName );
-               //CartoSettingsPanel Management
-               this->m_AuiManager->GetPane( _T("ButtonPanel") ).window
-                   = this->m_ButtonPanel;
-               //Updating the manager
-               this->m_AuiManager->Update( );
+               try
+               {
+                       //Hiding the last CartoSettingsPanel
+                       this->m_ButtonPanel->Show( false );
+                       //Finding the CartoSettingsPanel of the ButtonClicket
+                       this->m_ButtonPanel = this->m_ButtonContainerSettings->GetPanelButton(buttonName );
+                       //changing the parent of the panel!
+                       if ( this->m_ButtonPanel->GetParent( ) != this )
+                       {
+                               this->m_ButtonPanel->Reparent( this );
+                       }//fi
+                       //CartoSettingsPanel Management
+                       this->m_AuiManager->GetPane( _T("ButtonPanel") ).window = this->m_ButtonPanel;
+                       //Updating the manager
+                       this->m_AuiManager->Update( );
+               }//yrt
+               catch ( const std::exception& e )
+               {
+                       std::cerr
+                           << "PanelButtonContainer::UpdatePanel( const std::string &buttonName )"
+                           << "exception: " << e.what( ) << std::endl;
+                       std::cout << "Maybe the panel of the button is NULL" << std::endl;
+                       exit( 1 );
+               }//hctac
        }
-
+       // ----------------------------------------------------------------------------------
        void
        PanelButtonContainer::GenericButtonEvent( const std::string &buttonName )
        {
                this->UpdatePanel( buttonName );
        }
-
+// ----------------------------------------------------------------------------------
 }//ecapseman