]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx
Diego Caceres: creaButtonContainer & creaPanelButtonContainer changes
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / creaPanelButtonContainer / buttonContainerSettings.cxx
1 /***************************************************************
2  * Name:      buttonContainerSettings.cxx
3  * Purpose:   It is the ButtonGroupSettings
4  * Author:    Diego CACERES (diego.caceres[AT]creatis.insa-lyon.fr)
5  * Modified:  2011-05-09
6  * Copyright: Diego CACERES (http://www.creatis.insa-lyon.fr/~caceres/)
7  * License:
8  **************************************************************/
9 #include "buttonContainerSettings.h"
10 #include <iostream>
11
12 namespace creaPanelButtonContainer
13 {
14
15         ButtonContainerSettings::ButtonContainerSettings( )
16         {
17         }
18         ButtonContainerSettings::~ButtonContainerSettings( )
19         {
20         }
21         ButtonGroupMap
22         ButtonContainerSettings::GetButtonGroupContainer( )
23         {
24                 return m_ButtonGroupContainer;
25         }
26
27         KeyMapList
28         ButtonContainerSettings::GetGroupNameList( )
29         {
30                 return m_GroupNameList;
31         }
32
33         //GetButtonPanel returns the panel asociated to de buttonAction
34         PanelButton
35         ButtonContainerSettings::GetPanelButton( const std::string &buttonName )
36         {
37                 for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it
38                     != this->m_GroupNameList.end( ); ++it )
39                 {
40                         ButtonList list = this->m_ButtonGroupContainer[ ( *it ) ];
41                         for( ButtonList::iterator it1 = list.begin( ); it1 != list.end( ); ++it1 )
42                         {
43                                 if ( ( *it1 )->first->first.compare( buttonName ) == 0 )
44                                 {
45                                         return ( ( *it1 )->second->second );
46                                 }//fi
47                         }//rof
48                 }//rof
49                 return ( NULL );
50         }
51         ButtonGroupSettings*
52         ButtonContainerSettings::GetButtonGroupSettings( TFunctor* functor )
53         {
54                 ButtonGroupSettings* settings = new ButtonGroupSettings( );
55                 for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it
56                     != this->m_GroupNameList.end( ); ++it )
57                 {
58                         ButtonList list = this->m_ButtonGroupContainer[ ( *it ) ];
59                         for( ButtonList::iterator it1 = list.begin( ); it1 != list.end( ); ++it1 )
60                         {
61                                 settings->AddButton( ( *it ), ( *it1 )->first->first,
62                                     ( *it1 )->first->second, ( *it1 )->second->first, functor );
63                         }//rof
64                 }//rof
65                 return ( settings );
66         }
67         void
68         ButtonContainerSettings::SetButtonGroupContainer(
69             ButtonGroupMap m_ButtonGroupContainer )
70         {
71                 this->m_ButtonGroupContainer = m_ButtonGroupContainer;
72         }
73
74         void
75         ButtonContainerSettings::SetGroupNameList( KeyMapList m_GroupNameList )
76         {
77                 this->m_GroupNameList = m_GroupNameList;
78         }
79
80         void
81         ButtonContainerSettings::AddButton( const std::string & groupName,
82             const std::string &buttonName, const std::string &iconpath,
83             const std::string &buttonDescription, PanelButton panel )
84         {
85                 //builds the button information
86                 panel->Show( false );
87                 ButtonPair* pair = new ButtonPair( new ButtonInfo( buttonName, iconpath ),
88                     new ActionButton( buttonDescription, panel ) );
89                 for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it
90                     != this->m_GroupNameList.end( ); ++it )
91                 {
92                         if ( ( *it ).compare( groupName ) == 0 )
93                         {
94                                 this->m_ButtonGroupContainer[ groupName ].push_back( pair );
95                                 return;
96                         }//fi
97                 }//rof
98                 this->m_GroupNameList.push_back( groupName );
99                 this->m_ButtonGroupContainer[ groupName ].push_back( pair );
100         }
101
102         void
103         ButtonContainerSettings::AddButton( const BCSettingsStruct &info )
104         {
105                 //builds the button information
106                 info.panel->Show( false );
107                 ButtonPair* pair = new ButtonPair(
108                     new ButtonInfo( info.buttonName, info.iconpath ),
109                     new ActionButton( info.buttonDescription, info.panel ) );
110                 for( KeyMapList::iterator it = this->m_GroupNameList.begin( ); it
111                     != this->m_GroupNameList.end( ); ++it )
112                 {
113                         if ( ( *it ).compare( info.groupName ) == 0 )
114                         {
115                                 this->m_ButtonGroupContainer[ info.groupName ].push_back( pair );
116                                 return;
117                         }//fi
118                 }//rof
119                 this->m_GroupNameList.push_back( info.groupName );
120                 this->m_ButtonGroupContainer[ info.groupName ].push_back( pair );
121         }
122
123 }//ecapseman
124