VR-Forces 4.1.1 Class Documentation
DtKeyMapManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <map>
12 #include <list>
13 #include <boost/function.hpp>
14 #include <vrvCore/vrvCore.h>
15 #include <vrvCore/DtKeyEvent.h>
19 
20 namespace makVrv
21 {
22  class DtKeyMap;
23  class DtDe;
24  class DtKeyFunctionNameList;
25  class DtSettingsBackup;
26 
32  {
33  public:
34 
36  {
46  UserDefined = 100
47  };
48 
49  typedef std::map<FunctionCategory, DtUnicode> FunctionCategories;
50  typedef std::map<std::string, DtKeyMap*> KeyMapCatalog;
51 
52  typedef boost::function< void ()> KeyFunction;
53  typedef std::map<std::string, KeyFunction> KeyFunctionMap;
54  typedef std::map<std::string, std::string> BinaryFunctionNameMap;
55  typedef std::map<std::string, DtSettingsBackup*> BackupMap;
56 
58  typedef std::list<std::string> CategoryList;
59 
62  typedef std::map<FunctionCategory, CategoryList*> CategoryMap;
63 
65  static DtKeyMapManager& instance( DtDe& de );
66 
68  virtual ~DtKeyMapManager();
69 
71  virtual DtKeyMap* createKeyMap( const std::string& mapName, bool silent = false );
72 
74  virtual DtKeyMap* cloneKeyMap( const std::string& mapName,
75  const std::string& newMapName, bool silent = false );
76 
78  virtual void destroyKeyMap( const std::string& mapName, bool silent = false );
79 
81  virtual DtKeyMap* findKeyMap( const std::string& mapName );
82 
84  bool saveKeyMap(const DtKeyMap& keyMap) const;
85 
87  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
88 
90  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
91 
94  virtual void setFromRecord(const std::string& keyMap, const makArchives::DtKeyMapRecord& rec);
95 
97  virtual DtSettingsBackup* settingsBackup(const std::string& keyMap) const;
98 
106  virtual void categorizeKeyFunction( const std::string& functionName,
107  FunctionCategory functionCategory );
108 
109  virtual void categorizeBinaryKeyFunction( const std::string& functionName,
110  FunctionCategory functionCategory );
111 
112 
115  virtual void addKeyFunction( const std::string& functionName,
116  const KeyFunction& function, FunctionCategory functionCategory,
117  bool categorize = true );
118 
120  KeyFunction findKeyFunction( const std::string& functionName ) const;
121 
123  void removeKeyFunction( const std::string& functionName );
124 
126  virtual const KeyMapCatalog& keyMapCatalog() const;
127 
128  virtual const CategoryMap& categoryMap() const;
129  virtual const CategoryMap& binaryCategoryMap() const;
130 
132  const BinaryFunctionNameMap& binaryDownMap() const;
133 
135  const BinaryFunctionNameMap& binaryUpMap() const;
136 
138  //
141  virtual void addBinaryKeyFunction( const std::string& binaryName,
142  const std::string& keyDownFunctionName, const KeyFunction& downFunction,
143  const std::string& keyUpFuntionName, const KeyFunction& upFunction,
144  FunctionCategory functionCategory );
145 
148  virtual std::string lookupBinaryKeyFunctionName(
149  DtKeyEvent::KeyEventType eventType, const std::string& binaryName )
150  const;
151 
154  virtual bool processKeyEvent( const std::string& mapName,
155  const DtKeyEvent& keyEvent );
156 
158  virtual void activateMap( const std::string& mapName );
159 
161  virtual void deactivateMap( const std::string& mapName );
162 
163  virtual void setCurrentMap( const std::string& mapName );
164 
165  virtual const std::string& currentMap() const;
166 
168  void virtual clear();
169 
174  virtual void addFunctionCategory(FunctionCategory, DtUnicode functionCategoryName);
175 
177  virtual DtUnicode functionCategoryName(FunctionCategory) const;
178 
180  virtual const FunctionCategories& functionCategories() const;
181 
184  DtDe& de();
185 
186  protected:
187 
189  DtKeyMapManager( DtDe& de );
190 
191  void invokeKeyFunctions( const DtKeyFunctionNameList& funcsToUse );
192 
195  virtual void createBackupFor(const std::string&, const std::string& factoryFile = "");
196 
197  protected:
198 
200  std::string myCurrentMap;
209  };
210 
214  {
215  public:
217  DtKeyMapSettingsBackup(DtKeyMapManager& man, const std::string& keyMap);
218 
220  virtual ~DtKeyMapSettingsBackup();
221 
223  virtual void restore(const DtSettingsBackup* from);
224 
226  virtual std::string backupClassType() const
227  {
228  return myKeyMap;
229  }
230 
232  virtual std::string backupName() const
233  {
234  return backupClassType();
235  }
236 
238  virtual DtSettingsBackup* create() const;
239 
241  virtual void write(boost::archive::xml_oarchive& ar);
242 
244  virtual void read(boost::archive::xml_iarchive& ar);
245 
247  const makArchives::DtKeyMapRecord& restoredRecord() const
248  {
249  return myRestoredRecord;
250  }
251 
252  protected:
253  std::string myKeyMap;
256  };
257 }
258 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)