VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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  class DtKeyMapBackupAsync;
26  class DtKeyMapSettingsBackup;
27 
33  {
34  public:
35  friend class DtKeyMapBackupAsync;
36 
38  {
48  UserDefined = 100
49  };
50 
51  typedef std::map<FunctionCategory, DtUnicode> FunctionCategories;
52  typedef std::map<std::string, DtKeyMap*> KeyMapCatalog;
53 
54  typedef boost::function< void ()> KeyFunction;
55  typedef std::map<std::string, KeyFunction> KeyFunctionMap;
56  typedef std::map<std::string, std::string> BinaryFunctionNameMap;
57  typedef std::map<std::string, DtSettingsBackup*> BackupMap;
58 
60  typedef std::list<std::string> CategoryList;
61 
64  typedef std::map<FunctionCategory, CategoryList*> CategoryMap;
65 
67  static DtKeyMapManager& instance( DtDe& de );
68 
70  virtual ~DtKeyMapManager();
71 
73  virtual DtKeyMap* createKeyMap( const std::string& mapName, bool silent = false );
74 
76  virtual DtKeyMap* cloneKeyMap( const std::string& mapName,
77  const std::string& newMapName, bool silent = false );
78 
80  virtual void destroyKeyMap( const std::string& mapName, bool silent = false );
81 
83  virtual DtKeyMap* findKeyMap( const std::string& mapName );
84 
86  bool saveKeyMap(const DtKeyMap& keyMap) const;
87 
89  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
90 
92  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
93 
96  virtual void setFromRecord(const std::string& keyMap, const makArchives::DtKeyMapRecord& rec);
97 
99  virtual DtSettingsBackup* settingsBackup(const std::string& keyMap) const;
100 
108  virtual void categorizeKeyFunction( const std::string& functionName,
109  FunctionCategory functionCategory );
110 
111  virtual void categorizeBinaryKeyFunction( const std::string& functionName,
112  FunctionCategory functionCategory );
113 
114 
117  virtual void addKeyFunction( const std::string& functionName,
118  const KeyFunction& function, FunctionCategory functionCategory,
119  bool categorize = true );
120 
122  KeyFunction findKeyFunction( const std::string& functionName ) const;
123 
125  void removeKeyFunction( const std::string& functionName );
126 
128  virtual const KeyMapCatalog& keyMapCatalog() const;
129 
130  virtual const CategoryMap& categoryMap() const;
131  virtual const CategoryMap& binaryCategoryMap() const;
132 
134  const BinaryFunctionNameMap& binaryDownMap() const;
135 
137  const BinaryFunctionNameMap& binaryUpMap() const;
138 
140  //
143  virtual void addBinaryKeyFunction( const std::string& binaryName,
144  const std::string& keyDownFunctionName, const KeyFunction& downFunction,
145  const std::string& keyUpFuntionName, const KeyFunction& upFunction,
146  FunctionCategory functionCategory );
147 
150  virtual std::string lookupBinaryKeyFunctionName(
151  DtKeyEvent::KeyEventType eventType, const std::string& binaryName )
152  const;
153 
156  virtual bool processKeyEvent( const std::string& mapName,
157  const DtKeyEvent& keyEvent );
158 
160  virtual void activateMap( const std::string& mapName );
161 
163  virtual void deactivateMap( const std::string& mapName );
164 
165  virtual void setCurrentMap( const std::string& mapName );
166 
167  virtual const std::string& currentMap() const;
168 
170  void virtual clear();
171 
176  virtual void addFunctionCategory(FunctionCategory, const DtUnicode& functionCategoryName);
177 
179  virtual DtUnicode functionCategoryName(FunctionCategory) const;
180 
182  virtual const FunctionCategories& functionCategories() const;
183 
186  DtDe& de();
187 
188  protected:
189 
191  DtKeyMapManager( DtDe& de );
192 
193  void invokeKeyFunctions( const DtKeyFunctionNameList& funcsToUse );
194 
197  virtual DtKeyMapSettingsBackup * createBackupFor(const std::string&, const std::string& factoryFile = "");
198 
199  protected:
200 
202  std::string myCurrentMap;
211  };
212 
216  {
217  public:
219  DtKeyMapSettingsBackup(DtKeyMapManager& man, const std::string& keyMap);
220 
222  virtual ~DtKeyMapSettingsBackup();
223 
225  virtual void restore(const DtSettingsBackup* from);
226 
228  virtual std::string backupClassType() const
229  {
230  return myKeyMap;
231  }
232 
234  virtual std::string backupName() const
235  {
236  return backupClassType();
237  }
238 
240  virtual DtSettingsBackup* create() const;
241 
243  virtual void write(boost::archive::xml_oarchive& ar);
244 
246  virtual void read(boost::archive::xml_iarchive& ar);
247 
250  {
251  return myRestoredRecord;
252  }
253 
254  protected:
255  std::string myKeyMap;
258  };
259 }
260 
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
virtual std::string backupName() const
Returns the key map name.
Definition: DtKeyMapManager.h:234
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
Definition: DtKeyMapManager.h:44
BinaryFunctionNameMap myBinaryKeyFunctionDownMap
Definition: DtKeyMapManager.h:206
const makArchives::DtKeyMapRecord & restoredRecord() const
Return the backup&#39;s restored record.
Definition: DtKeyMapManager.h:249
Definition: DtKeyMapManager.h:47
A record saving the keyboard mapping.
Definition: DtKeyMapRecord.h:19
Definition: DtKeyMapManager.h:39
Definition: DtKeyMapManager.h:43
std::map< std::string, DtKeyMap * > KeyMapCatalog
Definition: DtKeyMapManager.h:52
std::map< std::string, std::string > BinaryFunctionNameMap
Definition: DtKeyMapManager.h:56
FunctionCategory
Definition: DtKeyMapManager.h:37
A serializable list of function names. There is such a list associated with each key/modifier combo f...
Definition: DtKeyMap.h:37
CategoryMap myBinaryCategoryMap
Definition: DtKeyMapManager.h:208
Backup for Keymap Settings.
Definition: DtKeyMapManager.h:215
Definition: DtKeyMapManager.h:46
DtDe & myDe
Definition: DtKeyMapManager.h:201
a Key Map contains a map of keys to FunctionMapEntrys, as well as a list of functions to execute when...
Definition: DtKeyMap.h:312
std::map< FunctionCategory, CategoryList * > CategoryMap
A list of category lists. The key is the first item in the Category list.
Definition: DtKeyMapManager.h:64
FunctionCategories myFunctionCategories
Definition: DtKeyMapManager.h:210
The manager for owning key maps.
Definition: DtKeyMapManager.h:32
Definition: DtKeyMapManager.h:40
std::map< FunctionCategory, DtUnicode > FunctionCategories
Definition: DtKeyMapManager.h:51
Contains makVrv::DtVirtualBaseClass class.
std::map< std::string, DtSettingsBackup * > BackupMap
Definition: DtKeyMapManager.h:57
makArchives::DtKeyMapRecord myRestoredRecord
Definition: DtKeyMapManager.h:256
BinaryFunctionNameMap myBinaryKeyFunctionUpMap
Definition: DtKeyMapManager.h:205
DtKeyMapManager & myKeyMapManager
Definition: DtKeyMapManager.h:257
KeyFunctionMap myKeyFunctionMap
Definition: DtKeyMapManager.h:204
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtKeyMapManager.h:41
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:23
boost::function< void()> KeyFunction
Definition: DtKeyMapManager.h:54
virtual std::string backupClassType() const
Returns the key map name.
Definition: DtKeyMapManager.h:228
KeyMapCatalog myKeyMapCatalog
Definition: DtKeyMapManager.h:203
std::map< std::string, KeyFunction > KeyFunctionMap
Definition: DtKeyMapManager.h:55
CategoryMap myCategoryMap
Definition: DtKeyMapManager.h:207
This file contains the declaration for the class DtKeyEvent.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
std::list< std::string > CategoryList
A list of all the functions in a given category.
Definition: DtKeyMapManager.h:60
std::string myCurrentMap
Definition: DtKeyMapManager.h:202
KeyEventType
Enumerate the types of key events supported.
Definition: DtKeyEvent.h:20
Definition: DtKeyMapManager.h:45
Definition: DtKeyMapManager.h:42
The makVrv::DtSettingsBackup is a lightweight class that must be subclassed from if an object wants t...
std::string myKeyMap
Definition: DtKeyMapManager.h:255
Contains makArchives::DtKeyMapRecord class.
BackupMap myBackupObjects
Definition: DtKeyMapManager.h:209

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)