/*! * @file buttonContainerSettings.cxx * @brief Implements the ButtonContainerSettings class. * @author Diego CACERES (diego.caceres[AT]creatis.insa-lyon.fr) * @date 2011-05-24 */ #include "buttonContainerSettings.h" namespace creaPanelButtonContainer { // ---------------------------------------------------------------------------------- ButtonContainerSettings::ButtonContainerSettings( ) { } // ---------------------------------------------------------------------------------- ButtonContainerSettings::~ButtonContainerSettings( ) { } // ---------------------------------------------------------------------------------- ButtonContainerSettings::ButtonGroupMap ButtonContainerSettings::GetButtonGroupContainer( ) { return m_ButtonGroupContainer; } // ---------------------------------------------------------------------------------- ButtonContainerSettings::KeyMapList ButtonContainerSettings::GetGroupNameList( ) { return m_GroupNameList; } // ---------------------------------------------------------------------------------- //GetButtonPanel returns the panel associated to the buttonAction ButtonContainerSettings::PanelButton ButtonContainerSettings::GetPanelButton( const std::string &buttonName ) { try { for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it != this->m_GroupNameList.end( ); ++it ) { ButtonList list = this->m_ButtonGroupContainer[ ( *it ) ]; for( ButtonList::iterator it1 = list.begin( ); it1 != list.end( ); ++it1 ) { if ( ( *it1 )->first->first.compare( buttonName ) == 0 ) { return ( ( *it1 )->second->second ); }//fi }//rof }//rof }//yrt catch ( std::exception& e ) { std::cerr << "ButtonContainerSettings::GetPanelButton( const std::string &buttonName ) " << "exception: " << e.what( ) << std::endl; }//hctac return ( NULL ); } // ---------------------------------------------------------------------------------- ButtonContainerSettings::ButtonGroupSettings* ButtonContainerSettings::GetButtonGroupSettings( TFunctor* functor ) { try { ButtonGroupSettings* settings = new ButtonGroupSettings( ); for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it != this->m_GroupNameList.end( ); ++it ) { ButtonList list = this->m_ButtonGroupContainer[ ( *it ) ]; for( ButtonList::iterator it1 = list.begin( ); it1 != list.end( ); ++it1 ) { settings->AddButton( ( *it ), ( *it1 )->first->first, ( *it1 )->first->second, ( *it1 )->second->first, functor ); }//rof }//rof return ( settings ); }//yrt catch ( std::exception& e ) { std::cerr << "ButtonContainerSettings::GetPanelButton( const std::string &buttonName ) " << "exception: " << e.what( ) << std::endl; }//hctac } // ---------------------------------------------------------------------------------- void ButtonContainerSettings::SetButtonGroupContainer( ButtonGroupMap m_ButtonGroupContainer ) { this->m_ButtonGroupContainer = m_ButtonGroupContainer; } // ---------------------------------------------------------------------------------- void ButtonContainerSettings::SetGroupNameList( KeyMapList m_GroupNameList ) { this->m_GroupNameList = m_GroupNameList; } // ---------------------------------------------------------------------------------- void ButtonContainerSettings::AddButton( const std::string & groupName, const std::string &buttonName, const std::string &iconpath, const std::string &buttonDescription, PanelButton panel ) { 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 ), new ActionButton( buttonDescription, panel ) ); for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it != this->m_GroupNameList.end( ); ++it ) { if ( ( *it ).compare( groupName ) == 0 ) { this->m_ButtonGroupContainer[ groupName ].push_back( pair ); return; }//fi }//rof this->m_GroupNameList.push_back( groupName ); this->m_ButtonGroupContainer[ groupName ].push_back( pair ); }//yrt catch ( const std::exception& e ) { std::cerr << "ButtonContainerSettings::AddButton( const std::string & groupName," << "const std::string &buttonName, const std::string &iconpath," << "const std::string &buttonDescription, PanelButton panel ) " << "exception: " << e.what( ) << std::endl; }//hctac } // ---------------------------------------------------------------------------------- void ButtonContainerSettings::AddButton( BCPSettingsStruct* info ) { 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 ), new ActionButton( info->buttonDescription, info->panel ) ); for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it != this->m_GroupNameList.end( ); ++it ) { if ( ( *it ).compare( info->groupName ) == 0 ) { this->m_ButtonGroupContainer[ info->groupName ].push_back( pair ); return; }//fi }//rof this->m_GroupNameList.push_back( info->groupName ); this->m_ButtonGroupContainer[ info->groupName ].push_back( pair ); }//yrt catch ( const std::exception& e ) { std::cerr << "ButtonContainerSettings::AddButton( BCPSettingsStruct* info )" << "exception: " << e.what( ) << std::endl; exit( 1 ); }//hctac } // ---------------------------------------------------------------------------------- void ButtonContainerSettings::AddButtons( BCStructVectorType infoList ) { try { for( BCStructVectorType::iterator it = infoList.begin( ); it != infoList.end( ); ++it ) { this->AddButton( *it ); }//rof }//yrt catch ( std::exception& e ) { std::cerr << "ButtonContainerSettings::AddButtons( BCStructVectorType infoList )" << "exception: " << e.what( ) << std::endl; }//hctac } // ---------------------------------------------------------------------------------- }//ecapseman