VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfMenuKeyMapManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #if !defined(Q_MOC_RUN)
16 
17 #include <vrvCore/DtMenuPath.h>
21 #include <vrvCore/DtKeyState.h>
24 #endif
25 
26 #include <QObject>
27 
28 class QEvent;
29 class QAction;
30 class QCheckBox;
31 class QTranslator;
32 class QKeyEvent;
33 
34 namespace makVrv
35 {
36  class DtKeyMap;
37  class DtDe;
38  class DtMenuManager;
39 }
40 
41 namespace makVrf
42 {
43  class DtAssembledMenu;
44 
50  {
51  Q_OBJECT
52 
53  public:
55  virtual ~DtVrfMenuKeyMapManager() override;
56 
58  static DtVrfMenuKeyMapManager& instance(makVrv::DtDe& de);
59  static void registerInstance(makVrv::DtDe&, DtVrfMenuKeyMapManager*);
60 
63  virtual void setup();
64 
67  virtual void addNonFocusKeyMapFunction(const std::string&);
68  virtual void removeNonFocusKeyMapFunction(const std::string&);
69 
71  virtual void addKeyboardMenuMapping(const makVrv::DtMenuPath& path, const makVrv::DtMenuManager* localMenuManager = nullptr, QAction* act = nullptr);
72 
74  virtual void removeKeyboardMenuMapping(const makVrv::DtMenuPath& path, const makVrv::DtMenuManager* localMenuManager = nullptr, QAction* act = nullptr);
75 
77  virtual void setApplyChangesToAllKeymaps(bool);
78  virtual bool applyChangesToAllKeymaps() const;
79 
81  virtual bool isMenuFunction(const std::string& func) const;
82 
84  virtual QString reverseTranslate(const QString&) const;
85 
87  virtual void copyKeyFunction(const makVrv::DtMenuPath& from, const makVrv::DtMenuPath& to);
88 
90  virtual bool setSaveManagersOnChange(bool);
91  virtual bool saveManagersOnChange() const;
92 
93  virtual bool hasActionToProcessNonFocusKey(const QKeySequence&);
94  virtual QString keyStateToKeySequence(const makVrv::DtKeyState&) const;
95  virtual QString actionTypeToKeySequence(int) const;
96 
97  virtual makVrv::DtKeyEvent vrvKeyEventFromQtKeyEvent(const QKeyEvent& e) const;
98  virtual makVrv::DtKeyState::KeyType qtKeyEventToVrvKey(const QKeyEvent&) const;
99 
100  protected slots:
101  virtual void actionDestroyed();
102 
103  protected:
105  virtual bool eventFilter(QObject*, QEvent*) override;
106 
109  virtual std::string menuPathToFunctionName(const makVrv::DtMenuPath&, const makVrv::DtMenuManager* localMenuManager = nullptr) const;
110 
112  virtual void slot_triggerShortcut(makVrv::DtMenuPath, const makVrv::DtMenuManager* localMenuManager = nullptr);
113 
116  virtual void setKeyMap(makVrv::DtKeyMapManager*, std::string currentMap);
117 
121  virtual void manageChangeableMenu(const std::string& menuId);
122 
125  virtual void setupChangeableMenus();
126 
128  virtual void preAssembleConfigurableMenu(DtAssembledMenu*);
129 
131  virtual void postAssembleConfigurableMenu(DtAssembledMenu*);
132 
135  virtual int mapPathToKeymapFunctionCategory(const std::string& path);
136 
139  virtual void keyMappingRemoved(makVrv::DtKeyMap*, std::string, makVrv::DtKeyState::KeyType,
141 
144  virtual void keyMappingModified(makVrv::DtKeyMap*, std::string, makVrv::DtKeyState::KeyType,
146 
148  virtual bool setupKeyMappingFor(const std::string& path, QAction* action, makVrv::DtKeyMap* map);
149 
152  virtual void resetShortcut(makVrv::DtKeyMap*, std::string);
153 
154  void parseTSFile(const QString& file);
155 
156  virtual void zoomToExtents();
157 
158  protected:
161 
162  std::map<QKeySequence, std::set<QAction*>> myShortcuts;
163  std::map<QKeySequence, std::string> myNonFocusShortcutsByKeySequence;
164  std::set<std::string> myNonFocusShortcuts;
165 
166  typedef std::map<std::string, std::map<std::string, QAction*>> FunctionToPathMap;
168 
169  typedef std::map<std::string, std::string> PathToFunctionMap;
171 
172  typedef std::map<std::string, int> FunctionCategoryMap;
174 
175  typedef std::map<int, std::pair<std::string, QAction*>> ActionTypeToPathMap;
177 
179  std::map<QString, QString> myReverseMap;
180 
182  std::string myCurrentKeyMap;
184  };
185 
188  {
189  public:
191  DtVrfKeyMappingEditorPage(makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags f);
192 
194  virtual ~DtVrfKeyMappingEditorPage() override;
195  };
196 
199 
202  {
203  Q_OBJECT
204 
205  public:
207  DtVrfKeyMappingEditorWidget( makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags flags = 0);
208 
210  virtual ~DtVrfKeyMappingEditorWidget() override;
211 
212  protected:
214  virtual void closeEvent(QCloseEvent*) override;
215 
217  virtual void hideEvent(QHideEvent*) override;
218 
219  virtual void addKeyFunction(const std::string& name, const std::string& keyString) override;
220 
221  protected slots:
222  virtual void on_applyChangesToAllKeymapsChanged();
223 
228  virtual void requestInput(
229  const std::string& functionName, const makVrv::DtKeyMapping& keyMapping, bool isBinary) override;
230  virtual void requestInput(const std::string& functionName, bool isBinary) override;
231 
232  protected:
235  };
236 
238  {
239  public:
240 
242  DtVrfRequestKeyMapKeyDialog( QWidget* parent = 0, Qt::WindowFlags flags = Qt::Tool );
243 
245  virtual ~DtVrfRequestKeyMapKeyDialog() override;
246 
248  void show( std::string functionName, bool isBinary );
249 
251  void show( std::string functionName, const makVrv::DtKeyMapping& keyMapping,
252  bool isBinary );
253  };
254 }
bool myApplyChangesToAllKeymaps
Definition: vrfMenuKeyMapManager.h:178
std::map< QKeySequence, std::set< QAction * > > myShortcuts
Definition: vrfMenuKeyMapManager.h:162
makVrv::DtDe & myDe
Definition: vrfMenuKeyMapManager.h:159
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
std::string myCurrentKeyMap
Definition: vrfMenuKeyMapManager.h:182
Contains makVrv::DtKeyMapManagerSignaler class.
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
std::map< std::string, std::string > PathToFunctionMap
Definition: vrfMenuKeyMapManager.h:169
makVrv::DtRequestKeyMapKeyDialog * myMenuItemKeyMapDialog
Definition: vrfMenuKeyMapManager.h:234
std::set< std::string > myNonFocusShortcuts
Definition: vrfMenuKeyMapManager.h:164
The reverse key map is a list of these for each function name.
Definition: DtKeyMap.h:246
ActionTypeToPathMap myActionTypeToPathMap
Definition: vrfMenuKeyMapManager.h:176
Contains makVrv::DtKeyMappingEditorPage class.
makVrv::DtPageCreatorTemplate< DtVrfKeyMappingEditorPage > DtVrfKeyMappingEditorPageCreator
Definition: vrfMenuKeyMapManager.h:198
This file contains the declaration for the class DtKeyState.
Definition: DtPage.h:181
std::map< QKeySequence, std::string > myNonFocusShortcutsByKeySequence
Definition: vrfMenuKeyMapManager.h:163
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
Contains makVrv::DtMenuPath class.
The manager for owning key maps.
Definition: DtKeyMapManager.h:31
Override these classes to be able to add check box to apply menu item changes to all key maps...
Definition: vrfMenuKeyMapManager.h:187
Contains makVrv::DtVirtualBaseClass class.
This class will traverse the created actions in the menu system and add a potential key mapping for t...
Definition: vrfMenuKeyMapManager.h:48
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfMenuKeyMapManager.h:160
QCheckBox * myApplyChangesToAllKeymaps
Definition: vrfMenuKeyMapManager.h:233
This class encapsulates the state associated with a key event.
Definition: DtKeyState.h:21
The menu manager can be used to lookup registered QMenu and QAction objects based on their menu paths...
Definition: DtMenuManager.h:38
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::map< int, std::pair< std::string, QAction * > > ActionTypeToPathMap
Definition: vrfMenuKeyMapManager.h:175
Contains makVrv::DtKeyMapManager class.
FunctionToPathMap myFunctionToPathMap
Definition: vrfMenuKeyMapManager.h:167
Base class for menus that are assembled on an as needed basis.
Definition: selectionEnabledMenu.h:29
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:20
A dialog page controlling file caching.
Definition: DtKeyMappingEditorPage.h:24
A widget class for editing key functions.
Definition: DtKeyMappingEditorWidget.h:44
bool mySetupChanged
Definition: vrfMenuKeyMapManager.h:183
Widget to add check box for applying menu changes only to all menu items.
Definition: vrfMenuKeyMapManager.h:201
Base class to provide boost signal/slot management.
std::map< std::string, int > FunctionCategoryMap
Definition: vrfMenuKeyMapManager.h:172
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
Contains the DtKeyMappingEditorWidget class declaration.
PathToFunctionMap myPathToFunctionMap
Definition: vrfMenuKeyMapManager.h:170
bool mySaveManagersOnChange
Definition: vrfMenuKeyMapManager.h:181
std::map< std::string, std::map< std::string, QAction * > > FunctionToPathMap
Definition: vrfMenuKeyMapManager.h:166
Definition: vrfMenuKeyMapManager.h:237
KeyType
Enumerate the key types. These are based on Virtual Key Codes.
Definition: DtKeyState.h:25
This is the dialog the user types key sequences to be mapped. It shares a logic object with DtKeyMapE...
Definition: DtKeyMappingEditorWidget.h:223
KeyEventType
Enumerate the types of key events supported.
Definition: DtKeyEvent.h:20
std::map< QString, QString > myReverseMap
Definition: vrfMenuKeyMapManager.h:179
FunctionCategoryMap myFunctionCategories
Definition: vrfMenuKeyMapManager.h:173

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)