VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtKeyMappingEditorWidget.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2020 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCoreQt/vrvCoreQt.h>
13 
14 #include <QtWidgets/QWidget>
15 #include <QtWidgets/QDialog>
16 #include <QtWidgets/QLabel>
18 #include <vrvCore/DtKeyMap.h>
19 
20 class QAbstractButton;
21 class QActionGroup;
22 class QButtonGroup;
23 class QHBoxLayout;
24 class QLineEdit;
25 class QMenu;
26 class QPushButton;
27 class QRadioButton;
28 class QSplitter;
29 class QTreeWidget;
30 class QTreeWidgetItem;
31 class QVBoxLayout;
32 class QWidget;
33 class QListWidget;
34 class QFocusEvent;
35 
36 namespace makVrv
37 {
38 
39  class DtRequestKeyMapKeyDialog;
40  class DtRequestKeyValidationDialog;
41 
46  {
47 
48  Q_OBJECT
49 
50  public:
51 
53  DtKeyMappingEditorWidget( DtDe& de, QWidget* parent = 0,
54  Qt::WindowFlags flags = 0 );
55 
57  virtual ~DtKeyMappingEditorWidget();
58 
60  virtual void addKeyFunction(const std::string& name, const std::string& keyString);
61 
63  virtual void updateKeyFunction(const std::string& name, const std::string& keyString);
64 
65  virtual void addChildKeyFunction(const std::string& name, const std::string& parentName,
66  const std::string& keyString);
67 
69  virtual void deleteKeyFunction(const std::string& name);
70 
72  virtual void clearKeyFunctions();
73 
75  virtual void selectKeyFunction(const std::string& name);
76 
78  virtual void selectKeyMapping( const DtKeyMapping& keyMapping, bool isBinary );
79 
83  virtual void setEnableFilterEditor(bool filters);
84 
86  virtual void setFilters(const std::vector<std::pair<int,bool> >& filters);
87 
89  virtual void sortKeyFunctions();
90 
92  virtual void addKeyMapping( const DtKeyMapping& keyMapping,
93  bool suppressUpDown );
94 
96  virtual void removeKeyMapping( const DtKeyMapping& keyMapping );
97 
99  virtual void clearKeyMappings();
100 
102  virtual void setEnableAddMappingButton( bool enabled );
103 
105  virtual void setEnableRemoveMappingButton( bool enabled );
106 
108  virtual void setEnableEditMappingButton( bool enabled );
109 
111  virtual void requestInput( const std::string& functionName,
112  const DtKeyMapping& keyMapping, bool isBinary );
113 
115  virtual void requestInput( const std::string& functionName, bool isBinary );
116 
118  virtual void closeEditor();
119 
122  virtual std::string unmappedString();
123 
127  virtual void requestKeyValidation( const DtKeyMapping& keyMapping,
128  const std::string& functionName, const DtKeyFunctionNameList& fnList, bool isEdit );
129 
131  virtual void disableEditor();
132 
134  virtual void enableEditor();
135 
137  virtual QWidget* widget();
138 
140  virtual void resizeColumnToContents();
141 
142  protected slots:
143 
145  virtual void onFunctionItemSelectionChanged();
146 
148  virtual void onEditItemSelectionChanged();
149 
151  virtual void onFilterGroupTriggered(QAction* action);
152 
154  virtual void onAddMappingClicked();
155 
157  virtual void onRemoveMappingClicked();
158 
160  virtual void onEditMappingClicked();
161 
162  protected:
164  virtual void closeEvent(QCloseEvent*);
165 
167  virtual void hideEvent(QHideEvent*);
168 
170  void slot_requestInputAccepted(const DtKeyMapping&, bool);
171  void slot_requestInputCanceled();
172 
174  void slot_requestKeyValidationAccepted( const DtKeyMapping& keyMapping,
175  const DtKeyFunctionNameList& fnList, bool isEdit, bool replace);
176 
177  QString selectedKeyFunctionName() const;
178  void functionCategoryToCategoryName( int category, QString& categoryName );
179  void setupGui();
180  QTreeWidgetItem* findItem( const std::string& key );
181  QTreeWidgetItem* findKeyMapping( const DtKeyMapping& mapping, bool isBinary );
182 
183  protected:
184 
186  std::string myKeyMapName;
187 
190  QActionGroup* myFilterGroup;
193  QWidget* myEditWidget;
196 
198  QVBoxLayout* myFunctionLayout;
199  QVBoxLayout* myMappingEditorLayout;
201  QHBoxLayout* myButtonLayout;
207 
216 
217  };
218 
219 
224  { Q_OBJECT;
225  public:
226 
228  DtRequestKeyMapKeyDialog( QWidget* parent = 0, Qt::WindowFlags flags = Qt::Tool );
229 
231  virtual ~DtRequestKeyMapKeyDialog();
232 
234  virtual void keyPressEvent( QKeyEvent * event );
235 
237  virtual void closeEvent(QCloseEvent *event);
238 
240  void show( const std::string& functionName, bool isBinary );
241 
243  void show( const std::string& functionName, const DtKeyMapping& keyMapping,
244  bool isBinary );
245 
246  protected slots:
247 
249  void onOkClicked();
250 
252  void onCancelClicked();
253 
255  void onUpRadioButtonClicked();
256 
258  void onDownRadioButtonClicked();
259 
260  public:
261 
262  boost::signalslib::signal<void ()> signal_requestInputCanceled;
263  boost::signalslib::signal<void (const DtKeyMapping&, bool)> signal_requestInputAccepted;
264  boost::signalslib::signal<void (const DtKeyMapping&,
266 
267  protected:
268 
269  void setupGui();
270  QString keyMappingToQString( const DtKeyMapping& keyMapping );
271 
272  protected:
273 
276  QButtonGroup* myUpDownButtonGroup;
277  QRadioButton* myUpRadioButton;
278  QRadioButton* myDownRadioButton;
279  QVBoxLayout* myUpDownLayout;
280  QHBoxLayout* myEntryLayout;
283  QHBoxLayout* myBottomButtonLayout;
284  QVBoxLayout* myDialogLayout;
285 
289 
292  bool myIsEdit;
293 
294  };
295 
296 
301  { Q_OBJECT;
302  public:
303 
305  DtRequestKeyValidationDialog( QWidget* parent = 0, Qt::WindowFlags flags = Qt::Tool | Qt::WindowTitleHint );
306 
308  virtual ~DtRequestKeyValidationDialog();
309 
311  virtual void closeEvent( QCloseEvent *event );
312 
314  void show( const DtKeyMapping& keyMapping, const std::string& functionName,
315  const DtKeyFunctionNameList& fnList, bool isEdit );
316 
317  protected slots:
318 
320  void onAddClicked();
321 
324  void onReplaceClicked();
325 
327  void onCancelClicked();
328 
329  public:
330 
331  boost::signalslib::signal<void ()> signal_requestInputCanceled;
332  boost::signalslib::signal<void (const DtKeyMapping&, bool)> signal_requestInputAccepted;
333  boost::signalslib::signal<void (const DtKeyMapping&,
335 
336  protected:
337 
338  void setupGui();
339 
341  QString keyMappingToQString( const DtKeyMapping& keyMapping );
342 
343  protected:
344 
347  QListWidget* myFunctionNameList;
351  QHBoxLayout* myBottomButtonLayout;
352  QVBoxLayout* myMainLayout;
353 
357  bool myIsEdit;
358 
359  };
360 
361 }
QListWidget * myFunctionNameList
Definition: DtKeyMappingEditorWidget.h:347
QLabel * myFilterLabel
Definition: DtKeyMappingEditorWidget.h:189
DtKeyMapping myKeyMapping
Definition: DtKeyMappingEditorWidget.h:354
QPushButton * myAddMappingButton
Definition: DtKeyMappingEditorWidget.h:203
QHBoxLayout * myBottomButtonLayout
Definition: DtKeyMappingEditorWidget.h:283
QWidget * myEditWidget
Definition: DtKeyMappingEditorWidget.h:193
QRadioButton * myUpRadioButton
Definition: DtKeyMappingEditorWidget.h:277
QSplitter * myTreeWidgetSplitter
Definition: DtKeyMappingEditorWidget.h:197
QPushButton * myCancelButton
Definition: DtKeyMappingEditorWidget.h:350
QVBoxLayout * myMainLayout
Definition: DtKeyMappingEditorWidget.h:352
bool myIsClosing
Definition: DtKeyMappingEditorWidget.h:356
boost::signalslib::signal< void(const DtKeyMapping &, bool)> signal_requestInputAccepted
Definition: DtKeyMappingEditorWidget.h:263
boost::signalslib::signal< void(const DtKeyMapping &, bool)> signal_requestInputAccepted
Definition: DtKeyMappingEditorWidget.h:332
boost::signalslib::signal< void()> signal_requestInputCanceled
Definition: DtKeyMappingEditorWidget.h:331
QPushButton * myEditMappingButton
Definition: DtKeyMappingEditorWidget.h:202
DtRequestKeyValidationDialog * myRequestKeyValidationDialog
Definition: DtKeyMappingEditorWidget.h:206
QTreeWidget * myEditTreeWidget
Definition: DtKeyMappingEditorWidget.h:195
The reverse key map is a list of these for each function name.
Definition: DtKeyMap.h:246
bool myIsClosing
Definition: DtKeyMappingEditorWidget.h:291
QHBoxLayout * myEntryLayout
Definition: DtKeyMappingEditorWidget.h:280
QLineEdit * myKeyTextLineEdit
Definition: DtKeyMappingEditorWidget.h:275
QPushButton * myReplaceButton
Definition: DtKeyMappingEditorWidget.h:349
boost::signalslib::signal< void(const DtKeyMapping &, const DtKeyFunctionNameList &, bool, bool)> signal_requestKeyValidationAccepted
Definition: DtKeyMappingEditorWidget.h:265
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
QWidget * myFunctionWidget
Definition: DtKeyMappingEditorWidget.h:192
DtRequestKeyMapKeyDialog * myRequestDialog
Definition: DtKeyMappingEditorWidget.h:205
Contains DLL export macros.
QLabel * myFunctionNamePrefixLabel
Definition: DtKeyMappingEditorWidget.h:345
A serializable list of function names. There is such a list associated with each key/modifier combo f...
Definition: DtKeyMap.h:37
QPushButton * myOkButton
Definition: DtKeyMappingEditorWidget.h:281
std::string myKeyMapName
Definition: DtKeyMappingEditorWidget.h:186
QPushButton * myRemoveMappingButton
Definition: DtKeyMappingEditorWidget.h:204
QMenu * myFilterMenu
Definition: DtKeyMappingEditorWidget.h:191
QLabel * myFunctionNameLabel
Definition: DtKeyMappingEditorWidget.h:274
QVBoxLayout * myFunctionLayout
Definition: DtKeyMappingEditorWidget.h:198
QLabel * myFunctionNameSuffixLabel
Definition: DtKeyMappingEditorWidget.h:346
QRadioButton * myDownRadioButton
Definition: DtKeyMappingEditorWidget.h:278
QPushButton * myAddButton
Definition: DtKeyMappingEditorWidget.h:348
bool myIsEdit
Definition: DtKeyMappingEditorWidget.h:292
boost::signalslib::signal< void()> signal_requestInputCanceled
Definition: DtKeyMappingEditorWidget.h:262
QVBoxLayout * myMappingEditorLayout
Definition: DtKeyMappingEditorWidget.h:199
DtDe & myDe
Definition: DtKeyMappingEditorWidget.h:185
DtKeyFunctionNameList myFnList
Definition: DtKeyMappingEditorWidget.h:355
QHBoxLayout * myButtonLayout
Definition: DtKeyMappingEditorWidget.h:201
bool mySaveEditMappingButtonEnabledState
Definition: DtKeyMappingEditorWidget.h:211
bool myIsEdit
Definition: DtKeyMappingEditorWidget.h:357
bool myIsClosing
Definition: DtKeyMappingEditorWidget.h:215
QHBoxLayout * myBottomButtonLayout
Definition: DtKeyMappingEditorWidget.h:351
bool mySaveMappingListEnabledState
Definition: DtKeyMappingEditorWidget.h:210
QButtonGroup * myUpDownButtonGroup
Definition: DtKeyMappingEditorWidget.h:276
DtKeyMapping myKeyMapping
Definition: DtKeyMappingEditorWidget.h:286
A widget class for editing key functions.
Definition: DtKeyMappingEditorWidget.h:44
bool myIsBinary
Definition: DtKeyMappingEditorWidget.h:290
QHBoxLayout * myMappingEditorButtonLayout
Definition: DtKeyMappingEditorWidget.h:200
Abstract interface for instance editor widgets.
Definition: DtKeyMappingEditorWidgetInterface.h:26
QVBoxLayout * myUpDownLayout
Definition: DtKeyMappingEditorWidget.h:279
QActionGroup * myFilterGroup
Definition: DtKeyMappingEditorWidget.h:190
bool mySaveFilterEnabledState
Definition: DtKeyMappingEditorWidget.h:208
DtKeyMapping myInitialEditKeyMapping
Definition: DtKeyMappingEditorWidget.h:287
QPushButton * myFilterButton
Definition: DtKeyMappingEditorWidget.h:188
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
bool myUserTyped
Definition: DtKeyMappingEditorWidget.h:288
boost::signalslib::signal< void(const DtKeyMapping &, const DtKeyFunctionNameList &, bool, bool)> signal_requestKeyValidationAccepted
Definition: DtKeyMappingEditorWidget.h:334
QPushButton * myCancelButton
Definition: DtKeyMappingEditorWidget.h:282
bool mySaveFunctionListEnabledState
Definition: DtKeyMappingEditorWidget.h:209
Contains makVrv::DtKeyMap and related classes.
bool mySaveAddMappingButtonEnabledState
Definition: DtKeyMappingEditorWidget.h:212
QVBoxLayout * myDialogLayout
Definition: DtKeyMappingEditorWidget.h:284
QTreeWidget * myFunctionTreeWidget
Definition: DtKeyMappingEditorWidget.h:194
This is the dialog the user types key sequences to be mapped. It shares a logic object with DtKeyMapE...
Definition: DtKeyMappingEditorWidget.h:223
bool myEditorDisabled
Definition: DtKeyMappingEditorWidget.h:214
This is the dialog used to ask the user what to do when a single key has been mapped to multiple func...
Definition: DtKeyMappingEditorWidget.h:300
bool mySaveRemoveMappingButtonEnabledState
Definition: DtKeyMappingEditorWidget.h:213
Contains makVrv::DtKeyMappingEditorWidgetInterface class.

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)