anatomist  5.1.2
3D neuroimaging data viewer
controlmanager.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 #ifndef CONTROL_MANAGER_H
36 #define CONTROL_MANAGER_H
37 
38 
39 
40 #include <string>
41 #include <list>
42 #include <set>
43 #include <map>
44 
45 namespace anatomist
46 {
47 
49  {
50  ControlMapEntry(std::string v, std::string o) : view(v), object(o) {}
51  std::string view;
52  std::string object;
53  };
54 
56  {
57  bool operator()( ControlMapEntry entry1, ControlMapEntry entry2 ) const
58  {
59  if ( entry1.view == entry2.view )
60  return entry1.object < entry2.object;
61  return entry1.view < entry2.view;
62  }
63  };
64 
65  typedef std::map< std::string, std::set< std::string > > ViewControls;
66  typedef std::map< std::string, std::set< std::string > > ObjectControls;
67 
69  {
70  public:
72 
74 
75  typedef std::map< ControlMapEntry, std::set<std::string>,
77  typedef std::map< ControlMapEntry, std::set<std::string>,
79 
80  std::set< std::string >
81  availableControlList( const std::string& view,
82  const std::list<std::string>& objects ) const;
83  std::set< std::string >
84  availableControlList( const std::string& view,
85  const std::string& object ) const;
86  std::set< std::string >
87  activableControlList( const std::string& view,
88  const std::list<std::string>& selectedObjects )
89  const;
90 
91  bool insertView( const std::string& view,
92  const ViewControls& viewControls );
93  bool removeView( const std::string& view );
94 
95  bool insertObject( const std::string& object,
96  const ObjectControls& objectControls );
97  bool removeObject( const std::string& object );
98 
99  void addControl( const std::string& view, const std::string& object,
100  const std::set< std::string > & controls );
101  void addControl( const std::string& view, const std::string& object,
102  const std::string& control );
103 
104  bool removeControl( const std::string& view, const std::string& object,
105  const std::string& control );
106 
107  bool removeControlList( const std::string& view,
108  const std::string& object );
109  void print() const ;
110  private:
111  static ControlManager* _instance;
112  std::map< ControlMapEntry, std::set<std::string>,
113  LessControlMap > myControlTable;
114  };
115 }
116 
117 #endif
std::set< std::string > availableControlList(const std::string &view, const std::string &object) const
std::set< std::string > activableControlList(const std::string &view, const std::list< std::string > &selectedObjects) const
std::map< ControlMapEntry, std::set< std::string >, LessControlMap >::const_iterator const_iterator
std::set< std::string > availableControlList(const std::string &view, const std::list< std::string > &objects) const
bool insertObject(const std::string &object, const ObjectControls &objectControls)
bool removeView(const std::string &view)
static ControlManager * instance()
bool insertView(const std::string &view, const ViewControls &viewControls)
bool removeControlList(const std::string &view, const std::string &object)
std::map< ControlMapEntry, std::set< std::string >, LessControlMap >::iterator iterator
void addControl(const std::string &view, const std::string &object, const std::set< std::string > &controls)
void addControl(const std::string &view, const std::string &object, const std::string &control)
bool removeObject(const std::string &object)
bool removeControl(const std::string &view, const std::string &object, const std::string &control)
std::map< std::string, std::set< std::string > > ObjectControls
std::map< std::string, std::set< std::string > > ViewControls
ControlMapEntry(std::string v, std::string o)
bool operator()(ControlMapEntry entry1, ControlMapEntry entry2) const