VR-Forces 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) 2024 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 DtKeyMapSettingsBackup;
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, const 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 DtKeyMapSettingsBackup * 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 
248  {
249  return myRestoredRecord;
250  }
251 
252  protected:
253  std::string myKeyMap;
256  };
257 }
258 
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:232
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
Definition: DtKeyMapManager.h:42
BinaryFunctionNameMap myBinaryKeyFunctionDownMap
Definition: DtKeyMapManager.h:204
const makArchives::DtKeyMapRecord & restoredRecord() const
Return the backup&#39;s restored record.
Definition: DtKeyMapManager.h:247
Definition: DtKeyMapManager.h:45
A record saving the keyboard mapping.
Definition: DtKeyMapRecord.h:19
Definition: DtKeyMapManager.h:37
Definition: DtKeyMapManager.h:41
std::map< std::string, DtKeyMap * > KeyMapCatalog
Definition: DtKeyMapManager.h:50
std::map< std::string, std::string > BinaryFunctionNameMap
Definition: DtKeyMapManager.h:54
FunctionCategory
Definition: DtKeyMapManager.h:35
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:206
Backup for Keymap Settings.
Definition: DtKeyMapManager.h:213
Definition: DtKeyMapManager.h:44
DtDe & myDe
Definition: DtKeyMapManager.h:199
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:62
FunctionCategories myFunctionCategories
Definition: DtKeyMapManager.h:208
The manager for owning key maps.
Definition: DtKeyMapManager.h:31
Definition: DtKeyMapManager.h:38
std::map< FunctionCategory, DtUnicode > FunctionCategories
Definition: DtKeyMapManager.h:49
Contains makVrv::DtVirtualBaseClass class.
std::map< std::string, DtSettingsBackup * > BackupMap
Definition: DtKeyMapManager.h:55
makArchives::DtKeyMapRecord myRestoredRecord
Definition: DtKeyMapManager.h:254
BinaryFunctionNameMap myBinaryKeyFunctionUpMap
Definition: DtKeyMapManager.h:203
DtKeyMapManager & myKeyMapManager
Definition: DtKeyMapManager.h:255
KeyFunctionMap myKeyFunctionMap
Definition: DtKeyMapManager.h:202
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtKeyMapManager.h:39
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:23
boost::function< void()> KeyFunction
Definition: DtKeyMapManager.h:52
virtual std::string backupClassType() const
Returns the key map name.
Definition: DtKeyMapManager.h:226
KeyMapCatalog myKeyMapCatalog
Definition: DtKeyMapManager.h:201
std::map< std::string, KeyFunction > KeyFunctionMap
Definition: DtKeyMapManager.h:53
CategoryMap myCategoryMap
Definition: DtKeyMapManager.h:205
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:76
std::list< std::string > CategoryList
A list of all the functions in a given category.
Definition: DtKeyMapManager.h:58
std::string myCurrentMap
Definition: DtKeyMapManager.h:200
KeyEventType
Enumerate the types of key events supported.
Definition: DtKeyEvent.h:20
Definition: DtKeyMapManager.h:43
Definition: DtKeyMapManager.h:40
The makVrv::DtSettingsBackup is a lightweight class that must be subclassed from if an object wants t...
std::string myKeyMap
Definition: DtKeyMapManager.h:253
Contains makArchives::DtKeyMapRecord class.
BackupMap myBackupObjects
Definition: DtKeyMapManager.h:207

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)