VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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/DtKeyEvent.h>
18 
19 namespace makVrv
20 {
21  class DtKeyMap;
22  class DtDe;
23  class DtKeyFunctionNameList;
24  class DtSettingsBackup;
25 
31  {
32  public:
33 
35  {
45  UserDefined = 100
46  };
47 
48  typedef std::map<FunctionCategory, DtUnicode> FunctionCategories;
49  typedef std::map<std::string, DtKeyMap*> KeyMapCatalog;
50 
51  typedef boost::function< void ()> KeyFunction;
52  typedef std::map<std::string, KeyFunction> KeyFunctionMap;
53  typedef std::map<std::string, std::string> BinaryFunctionNameMap;
54  typedef std::map<std::string, DtSettingsBackup*> BackupMap;
55 
57  typedef std::list<std::string> CategoryList;
58 
61  typedef std::map<FunctionCategory, CategoryList*> CategoryMap;
62 
64  static DtKeyMapManager& instance( DtDe& de );
65 
67  virtual ~DtKeyMapManager();
68 
70  virtual DtKeyMap* createKeyMap( const std::string& mapName, bool silent = false );
71 
73  virtual DtKeyMap* cloneKeyMap( const std::string& mapName,
74  const std::string& newMapName, bool silent = false );
75 
77  virtual void destroyKeyMap( const std::string& mapName, bool silent = false );
78 
80  virtual DtKeyMap* findKeyMap( const std::string& mapName );
81 
83  bool saveKeyMap(const DtKeyMap& keyMap) const;
84 
86  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
87 
89  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
90 
93  virtual void setFromRecord(const std::string& keyMap, const makArchives::DtKeyMapRecord& rec);
94 
96  virtual DtSettingsBackup* settingsBackup(const std::string& keyMap) const;
97 
105  virtual void categorizeKeyFunction( const std::string& functionName,
106  FunctionCategory functionCategory );
107 
108  virtual void categorizeBinaryKeyFunction( const std::string& functionName,
109  FunctionCategory functionCategory );
110 
111 
114  virtual void addKeyFunction( const std::string& functionName,
115  const KeyFunction& function, FunctionCategory functionCategory,
116  bool categorize = true );
117 
119  KeyFunction findKeyFunction( const std::string& functionName ) const;
120 
122  void removeKeyFunction( const std::string& functionName );
123 
125  virtual const KeyMapCatalog& keyMapCatalog() const;
126 
127  virtual const CategoryMap& categoryMap() const;
128  virtual const CategoryMap& binaryCategoryMap() const;
129 
131  const BinaryFunctionNameMap& binaryDownMap() const;
132 
134  const BinaryFunctionNameMap& binaryUpMap() const;
135 
137  //
140  virtual void addBinaryKeyFunction( const std::string& binaryName,
141  const std::string& keyDownFunctionName, const KeyFunction& downFunction,
142  const std::string& keyUpFuntionName, const KeyFunction& upFunction,
143  FunctionCategory functionCategory );
144 
147  virtual std::string lookupBinaryKeyFunctionName(
148  DtKeyEvent::KeyEventType eventType, const std::string& binaryName )
149  const;
150 
153  virtual bool processKeyEvent( const std::string& mapName,
154  const DtKeyEvent& keyEvent );
155 
157  virtual void activateMap( const std::string& mapName );
158 
160  virtual void deactivateMap( const std::string& mapName );
161 
162  virtual void setCurrentMap( const std::string& mapName );
163 
164  virtual const std::string& currentMap() const;
165 
167  void virtual clear();
168 
173  virtual void addFunctionCategory(FunctionCategory, DtUnicode functionCategoryName);
174 
176  virtual DtUnicode functionCategoryName(FunctionCategory) const;
177 
179  virtual const FunctionCategories& functionCategories() const;
180 
183  DtDe& de();
184 
185  protected:
186 
188  DtKeyMapManager( DtDe& de );
189 
190  void invokeKeyFunctions( const DtKeyFunctionNameList& funcsToUse );
191 
194  virtual void createBackupFor(const std::string&, const std::string& factoryFile = "");
195 
196  protected:
197 
199  std::string myCurrentMap;
208  };
209 
213  {
214  public:
216  DtKeyMapSettingsBackup(DtKeyMapManager& man, const std::string& keyMap);
217 
219  virtual ~DtKeyMapSettingsBackup();
220 
222  virtual void restore(const DtSettingsBackup* from);
223 
225  virtual std::string backupClassType() const
226  {
227  return myKeyMap;
228  }
229 
231  virtual std::string backupName() const
232  {
233  return backupClassType();
234  }
235 
237  virtual DtSettingsBackup* create() const;
238 
240  virtual void write(boost::archive::xml_oarchive& ar);
241 
243  virtual void read(boost::archive::xml_iarchive& ar);
244 
246  const makArchives::DtKeyMapRecord& restoredRecord() const
247  {
248  return myRestoredRecord;
249  }
250 
251  protected:
252  std::string myKeyMap;
255  };
256 }
257 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)