From 978a6b69b838cd857d997d53e1392573853ae702 Mon Sep 17 00:00:00 2001
From: Diego Caceres <Diego.Caceres@creatis.insa-lyon.fr>
Date: Tue, 24 May 2011 19:17:35 +0000
Subject: [PATCH] creaButtonContainer & creaPanelButtonContainer: Deep errors
 have been solved!! ready to work in the cartos (late but entusiast :) )

---
 .../controller/buttonContainerController.cxx  | 10 ++---
 .../model/buttonGroupFactory.cxx              | 16 ++++----
 .../model/containerSettings.cxx               |  6 +--
 .../model/containerSettings.h                 |  1 +
 .../creaButtonContainer/model/functor.h       |  1 +
 .../creaButtonContainer/model/functor.txx     |  4 +-
 .../creaButtonContainer/model/system.h        |  1 +
 .../creaButtonContainer/view/button.cxx       |  2 +-
 .../widgets/creaButtonContainer/view/button.h |  2 +
 .../view/buttonContainerPanel.cxx             |  2 +-
 .../view/buttonContainerPanel.h               |  2 +
 .../creaButtonContainer/view/buttonGroup.h    |  1 +
 .../view/buttonManager.cxx                    |  4 +-
 .../creaButtonContainer/view/buttonManager.h  |  1 +
 .../creaButtonContainer/view/groupManager.h   |  1 +
 .../buttonContainerSettings.cxx               | 29 +++++++++++----
 .../buttonContainerSettings.h                 |  1 +
 .../creaPanelButtonContainer.cxx              | 37 +++++++++++++------
 18 files changed, 79 insertions(+), 42 deletions(-)

diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/controller/buttonContainerController.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/controller/buttonContainerController.cxx
index bb28d53..3af5eaf 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/controller/buttonContainerController.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/controller/buttonContainerController.cxx
@@ -19,7 +19,6 @@ namespace creaButtonContainer
 		// ----------------------------------------------------------------------------------
 		ButtonContainerController::~ButtonContainerController( )
 		{
-			delete this->m_BCPanel;
 		}
 		// ----------------------------------------------------------------------------------
 		void
@@ -51,7 +50,7 @@ namespace creaButtonContainer
 					}//rof
 				}//rof
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr << "ButtonContainerController::AddEvents( ) exception: "
 				    << e.what( ) << std::endl;
@@ -81,7 +80,7 @@ namespace creaButtonContainer
 				}//fi esle
 				this->m_BCPanel->FitSizer( );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ButtonContainerController::ButtonExpEvent( wxCommandEvent& event ) exception: "
@@ -98,10 +97,11 @@ namespace creaButtonContainer
 				    this->m_BCPanel->m_ButtonGroupList.begin( ); it
 				    != this->m_BCPanel->m_ButtonGroupList.end( ); ++it )
 				{
-					( *it )->GetButton( event.GetId( ) )->Execute( );
+					if ( ( *it )->GetButton( event.GetId( ) ) != NULL )
+						( *it )->GetButton( event.GetId( ) )->Execute( );
 				}//rof
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ButtonContainerController::ButtonEvent( wxCommandEvent& event ) exception: "
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/buttonGroupFactory.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/buttonGroupFactory.cxx
index 167bade..395f12d 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/buttonGroupFactory.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/buttonGroupFactory.cxx
@@ -24,31 +24,28 @@ namespace creaButtonContainer
 		ButtonGroupFactory::CreateButtonGroupContainer( wxWindow* parent,
 		    ButtonGroupModel* settings )
 		{
-			ButtonGroupContainer groupView;
 			try
 			{
+				ButtonGroupContainer groupView;
 				ButtonGroupMap map = settings->GetButtonGroupContainer( );
 				for( ButtonGroupMap::iterator it = map.begin( ); it != map.end( ); ++it )
 				{
-					//using wxWidgets.
 					wxString groupNameAux( ( *it ).first.c_str( ), wxConvUTF8 );
 					wxStaticText* wxGroupName = new wxStaticText( parent, -1,
 					    groupNameAux, wxDefaultPosition, wxDefaultSize, 0,
-					    _T( "GroupText" ) );
-					//creating a wxButtonGroup.
+					    _T("GroupText") );
 					ButtonGroup* group = new ButtonGroup( wxGroupName,
 					    this->GetButtons( parent, ( *it ).second ) );
-					//adding the group to the container.
 					groupView.push_back( group );
-				}//rof
+				}
+				return ( groupView );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ButtonGroupFactory::CreateButtonGroupContainer( wxWindow* parent,   ButtonGroupModel* settings )"
 				    << " exception: " << e.what( ) << std::endl;
 			}//chtac
-			return ( groupView );
 		}
 		// ----------------------------------------------------------------------------------
 		ButtonGroupFactory::ButtonContainer
@@ -57,6 +54,7 @@ namespace creaButtonContainer
 			ButtonContainer buttonList;
 			try
 			{
+				ButtonContainer buttonList;
 				for( ButtonList::iterator it = buttonModel.begin( ); it
 				    != buttonModel.end( ); ++it )
 				{
@@ -65,7 +63,7 @@ namespace creaButtonContainer
 				}
 				return ( buttonList );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ButtonGroupFactory::GetButtons( wxWindow* parent, ButtonList buttonModel )"
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.cxx
index 10e387a..a4e18f9 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.cxx
@@ -66,7 +66,7 @@ namespace creaButtonContainer
 				this->m_GroupNameList.push_back( groupName );
 				this->m_ButtonGroupContainer[ groupName ].push_back( pair );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ContainerSettings::AddButton( const std::string & groupName,"
@@ -96,7 +96,7 @@ namespace creaButtonContainer
 				this->m_GroupNameList.push_back( info->groupName );
 				this->m_ButtonGroupContainer[ info->groupName ].push_back( pair );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "void ContainerSettings::AddButton( BCSettingsStruct* info ) "
@@ -115,7 +115,7 @@ namespace creaButtonContainer
 					this->AddButton( *it );
 				}//rof
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ContainerSettings::AddButtons( BCStructVectorType infoList ) "
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h
index 7a84073..e180dc1 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h
@@ -12,6 +12,7 @@
 #include <map>
 #include <vector>
 #include <iostream>
+#include <exception>
 #include "structBCSettings.h"
 #include "system.h"
 #include "functor.h"
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.h
index f895a82..9cee15d 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.h
@@ -9,6 +9,7 @@
 #define TFUNCTOR_H_
 
 #include <string>
+#include <exception>
 
 /*!	@namespace <creaButtonContainer>
  *	@brief Contains the creaButtonContainer library included in creaMaracasVisu.
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.txx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.txx
index 2c76135..e37abe5 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.txx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/functor.txx
@@ -29,7 +29,7 @@ namespace creaButtonContainer
 	    {
 		  ( *pt2Object.*fpt )( buttonName );
 	    }//yrt
-	    catch ( std::exception& e )
+	    catch ( const std::exception& e )
 	    {
 		  std::cerr<< "TConcreteFunctor< TClass >::operator()( const ButtonIDType &buttonName )"
 				  <<" exception: " << e.what( ) << std::endl;
@@ -45,7 +45,7 @@ namespace creaButtonContainer
 	    {
 		  ( *pt2Object.*fpt )( buttonName );
 	    }//yrt
-	    catch ( std::exception& e )
+	    catch ( const std::exception& e )
 	    {
 		  std::cerr<< "TConcreteFunctor< TClass >::Call( const ButtonIDType &buttonName )"
 				  <<" exception: " << e.what( ) << std::endl;
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/system.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/system.h
index e0601fc..51db3bd 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/system.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/system.h
@@ -11,6 +11,7 @@
 #include <list>
 #include <map>
 #include <iostream>
+#include <exception>
 #include "functor.h"
 
 /*!	@namespace <creaButtonContainer>
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.cxx
index d45f9c2..40b1697 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.cxx
@@ -62,7 +62,7 @@ namespace creaButtonContainer
 				{ this->m_ButtonPair->second->second };
 				vTable[ 0 ]->Call( this->m_ButtonPair->first->first );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr << "Button::Execute( ) exception: " << e.what( ) << std::endl;
 			}//hctac
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.h
index 71662a2..45aeb4f 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/button.h
@@ -13,9 +13,11 @@
 #include <wx/string.h>
 #include <string>
 #include <iostream>
+#include <exception>
 #include "functor.h"
 #include "system.h"
 
+
 /*!	@namespace <creaButtonContainer>
  *	@brief Contains the creaButtonContainer library included in creaMaracasVisu.
  */
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.cxx
index 7aad096..3265447 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.cxx
@@ -59,7 +59,7 @@ namespace creaButtonContainer
 				this->SetSizer( this->m_Sizer );
 				this->FitSizer( );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr << "ButtonContainerPanel::PanelInit( ) " << "exception: "
 				    << e.what( ) << std::endl;
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.h
index 063b9d5..579ac83 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonContainerPanel.h
@@ -13,6 +13,7 @@
 #include <wx/sizer.h>
 #include <list>
 #include <map>
+#include <exception>
 
 #include "buttonGroup.h"
 #include "groupManager.h"
@@ -49,6 +50,7 @@ namespace creaButtonContainer
 		/*! @class ButtonContainerPanel buttonContainerPanel.h "buttonContainerPanel.h"
 		 *  @brief This class is the container of the creaButtonContainer.
 		 *  @details This class derives from wxScrolledWindow and manages the view of the buttonContainer.
+		 *  @bug The scrolled it doesn't work! (to be changed soon)
 		 *  @see <a href="http://docs.wxwidgets.org/stable/wx_wxscrolledwindow.html">wxScrolledWindow</a>
 		 */
 		class ButtonContainerPanel : public wxScrolledWindow
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonGroup.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonGroup.h
index ce06428..b328569 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonGroup.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonGroup.h
@@ -12,6 +12,7 @@
 #include <map>
 #include <list>
 #include <wx/stattext.h>
+#include <exception>
 
 #include "button.h"
 
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.cxx
index d855969..38a4c6b 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.cxx
@@ -25,7 +25,7 @@ namespace creaButtonContainer
 				this->SetGroupName( buttonGroup->GetGroupName( ) );
 				this->SetButtonManager( buttonGroup->GetButtonContainer( ) );
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr << "Button::Execute( ) exception: " << e.what( ) << std::endl;
 			}//hctac
@@ -57,7 +57,7 @@ namespace creaButtonContainer
 					this->Add( m_GridSizer, -1, wxALL | wxALIGN_LEFT | wxALIGN_TOP, 5 );
 				}
 			}//yrt
-			catch ( std::exception& e )
+			catch ( const std::exception& e )
 			{
 				std::cerr
 				    << "ButtonManager::SetButtonManager( ButtonContainer buttonContainer )"
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.h
index d08cbdc..15127e9 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/buttonManager.h
@@ -13,6 +13,7 @@
 #include <wx/stattext.h>
 #include <wx/string.h>
 #include <map>
+#include <exception>
 #include "button.h"
 #include "buttonGroup.h"
 
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/groupManager.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/groupManager.h
index c7d2ca5..969b7a4 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/groupManager.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/view/groupManager.h
@@ -14,6 +14,7 @@
 #include <wx/event.h>
 #include <list>
 #include <iostream>
+#include <exception>
 #include "buttonManager.h"
 #include "buttonGroup.h"
 #include <wx/event.h>
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx
index 7dcd9a4..8ca88d0 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx
@@ -6,7 +6,6 @@
  */
 
 #include "buttonContainerSettings.h"
-#include <iostream>
 
 namespace creaPanelButtonContainer
 {
@@ -55,16 +54,16 @@ namespace creaPanelButtonContainer
 			std::cerr
 			    << "ButtonContainerSettings::GetPanelButton( const std::string &buttonName ) "
 			    << "exception: " << e.what( ) << std::endl;
-			return ( NULL );
 		}//hctac
+		return ( NULL );
 	}
 	// ----------------------------------------------------------------------------------
 	ButtonContainerSettings::ButtonGroupSettings*
 	ButtonContainerSettings::GetButtonGroupSettings( TFunctor* functor )
 	{
-		ButtonGroupSettings* settings = new ButtonGroupSettings( );
 		try
 		{
+			ButtonGroupSettings* settings = new ButtonGroupSettings( );
 			for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it
 			    != this->m_GroupNameList.end( ); ++it )
 			{
@@ -82,7 +81,6 @@ namespace creaPanelButtonContainer
 			std::cerr
 			    << "ButtonContainerSettings::GetPanelButton( const std::string &buttonName ) "
 			    << "exception: " << e.what( ) << std::endl;
-			return ( NULL );
 		}//hctac
 	}
 	// ----------------------------------------------------------------------------------
@@ -107,6 +105,13 @@ namespace creaPanelButtonContainer
 		try
 		{
 			//builds the button information
+			//I don't know the try catch doesn't work!!
+			if ( panel == NULL )
+			{
+				std::cerr << "ButtonContainerSettings::AddButton"
+				    << "exception: NULL Pointer in panel " << std::endl;
+				exit( 1 );
+			}
 			panel->Show( false );
 			ButtonPair* pair = new ButtonPair(
 			    new ButtonInfo( buttonName, iconpath ),
@@ -123,7 +128,7 @@ namespace creaPanelButtonContainer
 			this->m_GroupNameList.push_back( groupName );
 			this->m_ButtonGroupContainer[ groupName ].push_back( pair );
 		}//yrt
-		catch ( std::exception& e )
+		catch ( const std::exception& e )
 		{
 			std::cerr
 			    << "ButtonContainerSettings::AddButton( const std::string & groupName,"
@@ -139,6 +144,13 @@ namespace creaPanelButtonContainer
 		try
 		{
 			//builds the button information
+			//I don't know the try catch doesn't work!!
+			if ( info->panel == NULL )
+			{
+				std::cerr << "ButtonContainerSettings::AddButton"
+				    << "exception: NULL Pointer in panel " << std::endl;
+				exit( 1 );
+			}
 			info->panel->Show( false );
 			ButtonPair* pair = new ButtonPair(
 			    new ButtonInfo( info->buttonName, info->iconpath ),
@@ -154,12 +166,13 @@ namespace creaPanelButtonContainer
 			}//rof
 			this->m_GroupNameList.push_back( info->groupName );
 			this->m_ButtonGroupContainer[ info->groupName ].push_back( pair );
-		}
-		catch ( std::exception& e )
+		}//yrt
+		catch ( const std::exception& e )
 		{
 			std::cerr
 			    << "ButtonContainerSettings::AddButton( BCPSettingsStruct* info )"
 			    << "exception: " << e.what( ) << std::endl;
+			exit( 1 );
 		}//hctac
 	}
 	// ----------------------------------------------------------------------------------
@@ -173,7 +186,7 @@ namespace creaPanelButtonContainer
 			{
 				this->AddButton( *it );
 			}//rof
-		}
+		}//yrt
 		catch ( std::exception& e )
 		{
 			std::cerr
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h
index ff61b63..fa94fd1 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.h
@@ -12,6 +12,7 @@
 #include <map>
 #include <wx/panel.h>
 #include <vector>
+#include <iostream>
 
 #include "structBCPSettings.h"
 #include "containerSettings.h"
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx
index 133a214..a9318da 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx
@@ -20,19 +20,24 @@ namespace creaPanelButtonContainer
 	{
 		this->m_ButtonContainerSettings = bcSettings;
 		this->m_ButtonPanel = new wxPanel( this );
+
 		//Class that manages the cartobutton event!!!
 		TConcreteFunctor* functor = new TConcreteFunctor( this,
 		    &PanelButtonContainer::GenericButtonEvent );
 		//end of the event definition
+
 		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 ) ) );
+
 		//CartoButtonPanel Management
 		this->m_AuiManager->AddPane(
 		    this->m_ButtonContainerPanel,
@@ -40,7 +45,6 @@ namespace creaPanelButtonContainer
 		        _("creaButtonContainer") ). CaptionVisible( ).CloseButton( false ).Left( ) .MinSize(
 		        wxSize( 300, 300 ) ) );
 		this->m_AuiManager->Update( );
-		//this->createGimmick();
 	}
 	// ----------------------------------------------------------------------------------
 	PanelButtonContainer::~PanelButtonContainer( )
@@ -50,16 +54,27 @@ namespace creaPanelButtonContainer
 	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 );
+			//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
-- 
2.49.0