VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtKeyMap.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2008 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef DtKeyMap_H_
11 #define DtKeyMap_H_
12 
13 #include <vrvCore/vrvCore.h>
14 #include <boost/function.hpp>
15 #include <boost/serialization/version.hpp>
16 
17 #include <vrvCore/DtKeyEvent.h>
18 #include <vrvCore/DtKeyState.h>
20 
21 #include <map>
22 #include <list>
23 
24 namespace makArchives
25 {
26  class DtKeyMapRecord;
27 }
28 
29 namespace makVrv
30 {
31 
38  {
39  public:
40  typedef std::list<std::string> KeyFunctionNameList;
41 
44 
47 
50 
52  DtKeyFunctionNameList& operator=( const DtKeyFunctionNameList& orig );
53 
56 
58  void addKeyFunctionName( const std::string& functionName );
59 
61  void clearFunctionNameList();
62 
64  const KeyFunctionNameList& functionNameList() const;
65  KeyFunctionNameList& functionNameList();
66 
73 
74  protected:
75 
76  template<class Archive>
77  void _serialize(Archive & ar, const unsigned int version)
78  {
79  ar & DT_SERIALIZE_MEMBER(myKeyFunctionNameList);
80  }
81 
83  };
84 
89  {
90  public:
93 
96 
98  DtKeyFunctionSet& operator=( const DtKeyFunctionSet& orig );
99 
101  DtKeyFunctionSet( const DtKeyFunctionSet& orig );
102 
104  void setUnmodifiedFunction( const DtKeyFunctionNameList& func );
105 
107  DtKeyFunctionNameList& unmodifiedFunction();
108  const DtKeyFunctionNameList& unmodifiedFunction() const;
109 
111  void setShiftModifiedFunction( const DtKeyFunctionNameList& func );
112 
114  DtKeyFunctionNameList& shiftModifiedFunction();
115  const DtKeyFunctionNameList& shiftModifiedFunction() const;
116 
118  void setCtrlModifiedFunction( const DtKeyFunctionNameList& func );
119 
121  DtKeyFunctionNameList& ctrlModifiedFunction();
122  const DtKeyFunctionNameList& ctrlModifiedFunction() const;
123 
125  void setAltModifiedFunction( const DtKeyFunctionNameList& func );
126 
128  DtKeyFunctionNameList& altModifiedFunction();
129  const DtKeyFunctionNameList& altModifiedFunction() const;
130 
132  void setShiftCtrlModifiedFunction( const DtKeyFunctionNameList& func );
133 
135  DtKeyFunctionNameList& shiftCtrlModifiedFunction();
136  const DtKeyFunctionNameList& shiftCtrlModifiedFunction() const;
137 
139  void setShiftAltModifiedFunction( const DtKeyFunctionNameList& func );
140 
142  DtKeyFunctionNameList& shiftAltModifiedFunction();
143  const DtKeyFunctionNameList& shiftAltModifiedFunction() const;
144 
146  void setCtrlAltModifiedFunction( const DtKeyFunctionNameList& func );
147 
149  DtKeyFunctionNameList& ctrlAltModifiedFunction();
150  const DtKeyFunctionNameList& ctrlAltModifiedFunction() const;
151 
153  void setShiftCtrlAltModifiedFunction( const DtKeyFunctionNameList& func );
154 
156  DtKeyFunctionNameList& shiftCtrlAltModifiedFunction();
157  const DtKeyFunctionNameList& shiftCtrlAltModifiedFunction() const;
158 
165 
166  protected:
167 
168  template<class Archive>
169  void _serialize(Archive & ar, const unsigned int version)
170  {
171  ar & DT_SERIALIZE_MEMBER(myUnmodified);
172  ar & DT_SERIALIZE_MEMBER(myShiftModified);
173  ar & DT_SERIALIZE_MEMBER(myCtrlModified);
174  ar & DT_SERIALIZE_MEMBER(myAltModified);
175  ar & DT_SERIALIZE_MEMBER(myShiftCtrlModified);
176  ar & DT_SERIALIZE_MEMBER(myShiftAltModified);
177  ar & DT_SERIALIZE_MEMBER(myCtrlAltModified);
178  ar & DT_SERIALIZE_MEMBER(myShiftCtrlAltModified);
179  }
180 
189  };
190 
195  {
196  public:
199 
202 
205 
207  DtKeyFunctionMapEntry& operator=( const DtKeyFunctionMapEntry& orig );
208 
210  void setDownFunctions( const DtKeyFunctionSet& downFunctions );
211 
213  DtKeyFunctionSet& downFunctions();
214  const DtKeyFunctionSet& downFunctions() const;
215 
217  void setUpFunctions( const DtKeyFunctionSet& upFunctions );
218 
220  DtKeyFunctionSet& upFunctions();
221  const DtKeyFunctionSet& upFunctions() const;
222 
223 
230 
231  protected:
232 
233  template<class Archive>
234  void _serialize(Archive & ar, const unsigned int version)
235  {
236  ar & DT_SERIALIZE_MEMBER(myDownFunctions);
237  ar & DT_SERIALIZE_MEMBER(myUpFunctions);
238  }
239 
242  };
243 
247  {
248  public:
249  DtKeyMapping();
250 
251  DtKeyMapping( const DtKeyEvent& keyEvent );
252 
253  DtKeyMapping( const DtKeyMapping& orig );
254  DtKeyMapping& operator=( const DtKeyMapping& orig );
255 
256  std::string parentFunctionName() const;
257  void setParentFunctionName( const std::string& parentFunctionName );
258 
259  protected:
261  std::string myParentFunctionName;
262  };
263 
269  {
270  public:
271  typedef std::list<DtKeyMapping*> MappedKeyList;
272 
274  typedef std::map<std::string, MappedKeyList*> ReverseKeyMap;
276  DtReverseKeyMap();
277 
279  virtual ~DtReverseKeyMap();
280 
282  DtReverseKeyMap( const DtReverseKeyMap& orig );
283 
285  DtReverseKeyMap& operator=( const DtReverseKeyMap& orig );
286 
287  ReverseKeyMap& map();
288  const ReverseKeyMap& map() const;
289 
290  void addKeyBinding( std::string functionName, DtKeyState::KeyType key,
291  DtKeyState::KeyModifier modifiers, DtKeyEvent::KeyEventType eventType );
292 
293  void removeKeyBinding( const std::string& functionName, DtKeyState::KeyType key,
294  DtKeyState::KeyModifier modifiers, DtKeyEvent::KeyEventType eventType );
295 
296  void clearMap();
297 
298  protected:
299 
300  void copyMap( const ReverseKeyMap& orig );
301 
302  protected:
304  };
305 
306  class DtKeyMapManager;
307 
313  {
314  public:
315  typedef std::map<DtKeyState::KeyType, DtKeyFunctionMapEntry*> KeyMap;
316  typedef std::list<DtKeyMapping*> MappedKeyList;
317 
318  private:
320  DtKeyMap();
321 
322  public:
324  DtKeyMap( const std::string& name, DtKeyMapManager& keyMapManager );
325 
327  virtual ~DtKeyMap();
328 
330  DtKeyMap( const DtKeyMap& orig );
331 
333  DtKeyMap& operator=( const DtKeyMap& orig );
334 
336  DtKeyMap* clone( const std::string& newName );
337 
339  const std::string& name() const { return myName; };
340 
345  void addKeyBinding( DtKeyState::KeyType key, const std::string& functionName,
347  bool replace=false,
349 
350  virtual void removeKeyBinding( DtKeyState::KeyType key, const std::string& functionName,
353 
354  void addBinaryKeyBinding( DtKeyState::KeyType key, const std::string& binaryName,
356  bool replace = false );
357 
358  virtual void removeBinaryKeyBinding( DtKeyState::KeyType key, const std::string& functionName,
360 
362  DtKeyFunctionNameList getKeyFunctionNameList( const DtKeyEvent& keyEvent );
363 
365  DtKeyFunctionMapEntry* findKeyFunctions( DtKeyState::KeyType key );
366 
369  virtual MappedKeyList findKeyMappings( const std::string& functionName );
370 
373  virtual MappedKeyList findBinaryKeyMappings( const std::string& functionName );
374 
376  void getRecord(makArchives::DtKeyMapRecord& record) const;
377 
379  void setFromRecord(const makArchives::DtKeyMapRecord& record);
380 
381  protected:
382 
383  void buildReverseKeyMap();
384 
387  void determineParentFunctions();
388 
389  void processKeyFunctionSet( const DtKeyFunctionSet& functionSet,
390  DtKeyState::KeyType keyType, DtKeyEvent::KeyEventType eventType );
391 
392  void processKeyFunctionNameList( const DtKeyFunctionNameList& functionNames,
394  DtKeyState::KeyModifier modifiers );
395 
400  void processAddKeyBind( DtKeyFunctionNameList& functionList, std::string functionName,
402  DtKeyState::KeyModifier modifiers, bool replace );
403 
404  void processRemoveKeyBind( DtKeyFunctionNameList& functionList, std::string functionName,
406  DtKeyState::KeyModifier modifiers );
407 
408  void processClearKeyBind( DtKeyFunctionNameList& functionList,
410  DtKeyState::KeyModifier modifiers );
411 
412  void copyMap( const KeyMap& orig );
413 
414  void clearMap();
415 
416  protected:
417 
418  std::string myName;
422  };
423 }
424 
425 #endif
426 
a Reverse Key Map allows us to easily look up all the key bindings associated with a given function i...
Definition: DtKeyMap.h:268
DtKeyFunctionNameList myShiftAltModified
Definition: DtKeyMap.h:186
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
DtKeyFunctionNameList myShiftCtrlModified
Definition: DtKeyMap.h:185
std::map< DtKeyState::KeyType, DtKeyFunctionMapEntry * > KeyMap
Definition: DtKeyMap.h:315
std::list< DtKeyMapping * > MappedKeyList
Definition: DtKeyMap.h:316
The reverse key map is a list of these for each function name.
Definition: DtKeyMap.h:246
A record saving the keyboard mapping.
Definition: DtKeyMapRecord.h:19
DtKeyFunctionSet myUpFunctions
Definition: DtKeyMap.h:241
KeyMap myKeyMap
Definition: DtKeyMap.h:419
A serializable list of function names.
Definition: DtKeyMap.h:37
DtKeyFunctionNameList myCtrlAltModified
Definition: DtKeyMap.h:187
This file contains the declaration for the class DtKeyState.
DtKeyFunctionNameList myAltModified
Definition: DtKeyMap.h:184
a Key Map contains a map of keys to FunctionMapEntrys, as well as a list of functions to execute when...
Definition: DtKeyMap.h:312
KeyModifier
Describe which modifier(s) are pressed.
Definition: DtKeyState.h:136
Definition: DtKeyEvent.h:22
The manager for owning key maps.
Definition: DtKeyMapManager.h:32
DtKeyFunctionNameList myCtrlModified
Definition: DtKeyMap.h:183
DtKeyFunctionSet myDownFunctions
Definition: DtKeyMap.h:240
The function sets for key-up and key-down events for one key used as an entry in a DtKeyMap...
Definition: DtKeyMap.h:194
#define DT_DECLARE_serialize_FUNCTIONS
Declare all the serialize functions to use.
Definition: DtSerialize.h:120
std::map< std::string, MappedKeyList * > ReverseKeyMap
Used for reverse key map; maps function name to all the key events mapped to it.
Definition: DtKeyMap.h:274
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
std::list< DtKeyMapping * > MappedKeyList
Definition: DtKeyMap.h:271
void _serialize(Archive &ar, const unsigned int version)
Declare serialize functions Call via serialize(Archive ar, unsigned int version); Where Archive can b...
Definition: DtKeyMap.h:77
ReverseKeyMap myReverseKeyMap
Definition: DtKeyMap.h:303
DtKeyFunctionNameList myShiftCtrlAltModified
Definition: DtKeyMap.h:188
A serializable set of function lists, one for each modifier combination.
Definition: DtKeyMap.h:88
std::string myParentFunctionName
&quot;&quot; if not inherited from a binary mapping
Definition: DtKeyMap.h:261
const std::string & name() const
the name of the map (required parameter to constructor)
Definition: DtKeyMap.h:339
DtKeyFunctionNameList myUnmodified
Definition: DtKeyMap.h:181
This file contains the declaration for the class DtKeyEvent.
Definition: DtKeyState.h:137
DtReverseKeyMap myReverseKeyMap
Definition: DtKeyMap.h:420
void _serialize(Archive &ar, const unsigned int version)
Declare serialize functions Call via serialize(Archive ar, unsigned int version); Where Archive can b...
Definition: DtKeyMap.h:169
void _serialize(Archive &ar, const unsigned int version)
Declare serialize functions Call via serialize(Archive ar, unsigned int version); Where Archive can b...
Definition: DtKeyMap.h:234
std::list< std::string > KeyFunctionNameList
Definition: DtKeyMap.h:40
#define DT_SERIALIZE_MEMBER(NAME)
Serialize a Member whose name starts with &#39;my&#39; If your member does not have that name, use Dt_SERIALIZE.
Definition: DtSerialize.h:158
DtKeyFunctionNameList myShiftModified
Definition: DtKeyMap.h:182
DtKeyMapManager & myKeyMapManager
Definition: DtKeyMap.h:421
KeyType
Enumerate the key types. These are based on Virtual Key Codes.
Definition: DtKeyState.h:25
KeyEventType
Enumerate the types of key events supported.
Definition: DtKeyEvent.h:20
std::string myName
Definition: DtKeyMap.h:418
KeyFunctionNameList myKeyFunctionNameList
Definition: DtKeyMap.h:82
Contains DLL export macros.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)