VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 /******************************************************************************
6 ** $RCSfile: DtKeyMap.h,v $ $Revision: 1.10 $ $State: Exp $
7 ******************************************************************************/
8 
12 
13 #ifndef DtKeyMap_H_
14 #define DtKeyMap_H_
15 
16 #include <vrvCore/vrvCore.h>
17 #include <boost/function.hpp>
18 #include <boost/serialization/version.hpp>
19 
20 #include <vrvCore/DtKeyEvent.h>
21 #include <vrvCore/DtKeyState.h>
23 
24 #include <map>
25 #include <list>
26 
27 namespace makArchives
28 {
29  class DtKeyMapRecord;
30 }
31 
32 namespace makVrv
33 {
34 
41  {
42  public:
43  typedef std::list<std::string> KeyFunctionNameList;
44 
47 
50 
53 
55  DtKeyFunctionNameList& operator=( const DtKeyFunctionNameList& orig );
56 
59 
61  void addKeyFunctionName( const std::string& functionName );
62 
64  void clearFunctionNameList();
65 
67  const KeyFunctionNameList& functionNameList() const;
68  KeyFunctionNameList& functionNameList();
69 
76 
77  protected:
78 
79  template<class Archive>
80  void _serialize(Archive & ar, const unsigned int version)
81  {
82  ar & DT_SERIALIZE_MEMBER(myKeyFunctionNameList);
83  }
84 
86  };
87 
92  {
93  public:
96 
99 
101  DtKeyFunctionSet& operator=( const DtKeyFunctionSet& orig );
102 
104  DtKeyFunctionSet( const DtKeyFunctionSet& orig );
105 
107  void setUnmodifiedFunction( const DtKeyFunctionNameList& func );
108 
110  DtKeyFunctionNameList& unmodifiedFunction();
111  const DtKeyFunctionNameList& unmodifiedFunction() const;
112 
114  void setShiftModifiedFunction( const DtKeyFunctionNameList& func );
115 
117  DtKeyFunctionNameList& shiftModifiedFunction();
118  const DtKeyFunctionNameList& shiftModifiedFunction() const;
119 
121  void setCtrlModifiedFunction( const DtKeyFunctionNameList& func );
122 
124  DtKeyFunctionNameList& ctrlModifiedFunction();
125  const DtKeyFunctionNameList& ctrlModifiedFunction() const;
126 
128  void setAltModifiedFunction( const DtKeyFunctionNameList& func );
129 
131  DtKeyFunctionNameList& altModifiedFunction();
132  const DtKeyFunctionNameList& altModifiedFunction() const;
133 
135  void setShiftCtrlModifiedFunction( const DtKeyFunctionNameList& func );
136 
138  DtKeyFunctionNameList& shiftCtrlModifiedFunction();
139  const DtKeyFunctionNameList& shiftCtrlModifiedFunction() const;
140 
142  void setShiftAltModifiedFunction( const DtKeyFunctionNameList& func );
143 
145  DtKeyFunctionNameList& shiftAltModifiedFunction();
146  const DtKeyFunctionNameList& shiftAltModifiedFunction() const;
147 
149  void setCtrlAltModifiedFunction( const DtKeyFunctionNameList& func );
150 
152  DtKeyFunctionNameList& ctrlAltModifiedFunction();
153  const DtKeyFunctionNameList& ctrlAltModifiedFunction() const;
154 
156  void setShiftCtrlAltModifiedFunction( const DtKeyFunctionNameList& func );
157 
159  DtKeyFunctionNameList& shiftCtrlAltModifiedFunction();
160  const DtKeyFunctionNameList& shiftCtrlAltModifiedFunction() const;
161 
168 
169  protected:
170 
171  template<class Archive>
172  void _serialize(Archive & ar, const unsigned int version)
173  {
174  ar & DT_SERIALIZE_MEMBER(myUnmodified);
175  ar & DT_SERIALIZE_MEMBER(myShiftModified);
176  ar & DT_SERIALIZE_MEMBER(myCtrlModified);
177  ar & DT_SERIALIZE_MEMBER(myAltModified);
178  ar & DT_SERIALIZE_MEMBER(myShiftCtrlModified);
179  ar & DT_SERIALIZE_MEMBER(myShiftAltModified);
180  ar & DT_SERIALIZE_MEMBER(myCtrlAltModified);
181  ar & DT_SERIALIZE_MEMBER(myShiftCtrlAltModified);
182  }
183 
192  };
193 
198  {
199  public:
202 
205 
208 
210  DtKeyFunctionMapEntry& operator=( const DtKeyFunctionMapEntry& orig );
211 
213  void setDownFunctions( const DtKeyFunctionSet& downFunctions );
214 
216  DtKeyFunctionSet& downFunctions();
217  const DtKeyFunctionSet& downFunctions() const;
218 
220  void setUpFunctions( const DtKeyFunctionSet& upFunctions );
221 
223  DtKeyFunctionSet& upFunctions();
224  const DtKeyFunctionSet& upFunctions() const;
225 
226 
233 
234  protected:
235 
236  template<class Archive>
237  void _serialize(Archive & ar, const unsigned int version)
238  {
239  ar & DT_SERIALIZE_MEMBER(myDownFunctions);
240  ar & DT_SERIALIZE_MEMBER(myUpFunctions);
241  }
242 
245  };
246 
250  {
251  public:
252  DtKeyMapping();
253 
254  DtKeyMapping( const DtKeyEvent& keyEvent );
255 
256  DtKeyMapping( const DtKeyMapping& orig );
257  DtKeyMapping& operator=( const DtKeyMapping& orig );
258 
259  std::string parentFunctionName() const;
260  void setParentFunctionName( const std::string& parentFunctionName );
261 
262  protected:
264  std::string myParentFunctionName;
265  };
266 
272  {
273  public:
274  typedef std::list<DtKeyMapping*> MappedKeyList;
275 
277  typedef std::map<std::string, MappedKeyList*> ReverseKeyMap;
279  DtReverseKeyMap();
280 
282  virtual ~DtReverseKeyMap();
283 
285  DtReverseKeyMap( const DtReverseKeyMap& orig );
286 
288  DtReverseKeyMap& operator=( const DtReverseKeyMap& orig );
289 
290  ReverseKeyMap& map();
291  const ReverseKeyMap& map() const;
292 
293  void addKeyBinding( std::string functionName, DtKeyState::KeyType key,
294  DtKeyState::KeyModifier modifiers, DtKeyEvent::KeyEventType eventType );
295 
296  void removeKeyBinding( std::string functionName, DtKeyState::KeyType key,
297  DtKeyState::KeyModifier modifiers, DtKeyEvent::KeyEventType eventType );
298 
299  void clearMap();
300 
301  protected:
302 
303  void copyMap( const ReverseKeyMap& orig );
304 
305  protected:
307  };
308 
309  class DtKeyMapManager;
310 
316  {
317  public:
318  typedef std::map<DtKeyState::KeyType, DtKeyFunctionMapEntry*> KeyMap;
319  typedef std::list<DtKeyMapping*> MappedKeyList;
320 
321  private:
323  DtKeyMap();
324 
325  public:
327  DtKeyMap( const std::string& name, DtKeyMapManager& keyMapManager );
328 
330  virtual ~DtKeyMap();
331 
333  DtKeyMap( const DtKeyMap& orig );
334 
336  DtKeyMap& operator=( const DtKeyMap& orig );
337 
339  DtKeyMap* clone( const std::string& newName );
340 
342  const std::string& name() const { return myName; };
343 
348  void addKeyBinding( DtKeyState::KeyType key, std::string functionName,
350  bool replace=false,
352 
353  virtual void removeKeyBinding( DtKeyState::KeyType key, std::string functionName,
356 
357  void addBinaryKeyBinding( DtKeyState::KeyType key, std::string binaryName,
359  bool replace = false );
360 
361  virtual void removeBinaryKeyBinding( DtKeyState::KeyType key, std::string functionName,
363 
365  DtKeyFunctionNameList getKeyFunctionNameList( const DtKeyEvent& keyEvent );
366 
368  DtKeyFunctionMapEntry* findKeyFunctions( DtKeyState::KeyType key );
369 
372  virtual MappedKeyList findKeyMappings( const std::string& functionName );
373 
376  virtual MappedKeyList findBinaryKeyMappings( const std::string& functionName );
377 
379  void getRecord(makArchives::DtKeyMapRecord& record) const;
380 
382  void setFromRecord(const makArchives::DtKeyMapRecord& record);
383 
384  protected:
385 
386  void buildReverseKeyMap();
387 
390  void determineParentFunctions();
391 
392  void processKeyFunctionSet( const DtKeyFunctionSet& functionSet,
393  DtKeyState::KeyType keyType, DtKeyEvent::KeyEventType eventType );
394 
395  void processKeyFunctionNameList( const DtKeyFunctionNameList& functionNames,
397  DtKeyState::KeyModifier modifiers );
398 
403  void processAddKeyBind( DtKeyFunctionNameList& functionList, std::string functionName,
405  DtKeyState::KeyModifier modifiers, bool replace );
406 
407  void processRemoveKeyBind( DtKeyFunctionNameList& functionList, std::string functionName,
409  DtKeyState::KeyModifier modifiers );
410 
411  void processClearKeyBind( DtKeyFunctionNameList& functionList,
413  DtKeyState::KeyModifier modifiers );
414 
415  void copyMap( const KeyMap& orig );
416 
417  void clearMap();
418 
419  protected:
420 
421  std::string myName;
425  };
426 }
427 
428 #endif
429 

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)