VR-Forces 4.0.4 Class Documentation
include/vrvCoreQt/DtKeyMappingEditorWidget.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Copyright (c) 2012 MAK Technologies, Inc.
00003  * All rights reserved.
00004  *****************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrvCoreQt/vrvCoreQt.h>
00013 
00014 #include <QtGui/QDialog>
00015 #include <QtGui/QLabel>
00016 #include <vrvCoreQt/DtKeyMappingEditorWidgetInterface.h>
00017 #include <vrvCore/DtKeyMap.h>
00018 
00019 class QAbstractButton;
00020 class QActionGroup;
00021 class QButtonGroup;
00022 class QHBoxLayout;
00023 class QLineEdit;
00024 class QMenu;
00025 class QPushButton;
00026 class QRadioButton;
00027 class QSplitter;
00028 class QTreeWidget;
00029 class QTreeWidgetItem;
00030 class QVBoxLayout;
00031 class QWidget;
00032 class QListWidget;
00033 class QFocusEvent;
00034 
00035 namespace makVrv
00036 {
00037 
00038    class DtRequestKeyMapKeyDialog;
00039    class DtRequestKeyValidationDialog;
00040 
00043    class DT_DLL_VRVCOREQT DtKeyMappingEditorWidget : public QWidget,
00044       public DtKeyMappingEditorWidgetInterface
00045    {
00046 
00047       Q_OBJECT
00048 
00049    public:
00050 
00052       DtKeyMappingEditorWidget( DtDe& de, QWidget* parent = 0,
00053          Qt::WindowFlags flags = 0 );
00054 
00056       virtual ~DtKeyMappingEditorWidget();
00057 
00059       virtual void addKeyFunction(const std::string& name, const std::string& keyString);
00060 
00062       virtual void updateKeyFunction(const std::string& name, const std::string& keyString);
00063 
00064       virtual void addChildKeyFunction(const std::string& name, const std::string& parentName,
00065          const std::string& keyString);
00066 
00068       virtual void deleteKeyFunction(const std::string& name);
00069 
00071       virtual void clearKeyFunctions();
00072 
00074       virtual void selectKeyFunction(const std::string& name);
00075       
00077       virtual void selectKeyMapping( const DtKeyMapping& keyMapping, bool isBinary );
00078 
00082       virtual void setEnableFilterEditor(bool filters);
00083 
00085       virtual void setFilters(const std::vector<std::pair<int,bool> >& filters);
00086       
00088       virtual void sortKeyFunctions();
00089      
00091       virtual void addKeyMapping( const DtKeyMapping& keyMapping, 
00092          bool suppressUpDown );
00093       
00095       virtual void removeKeyMapping( const DtKeyMapping& keyMapping );
00096       
00098       virtual void clearKeyMappings();
00099       
00101       virtual void setEnableAddMappingButton( bool enabled );
00102       
00104       virtual void setEnableRemoveMappingButton( bool enabled );
00105       
00107       virtual void setEnableEditMappingButton( bool enabled );
00108       
00110       virtual void requestInput( const std::string functionName, 
00111         const DtKeyMapping& keyMapping, bool isBinary );
00112       
00114       virtual void requestInput( const std::string functionName, bool isBinary );
00115       
00117       virtual void closeEditor();
00118       
00121       virtual std::string unmappedString();
00122        
00126       virtual void requestKeyValidation( const DtKeyMapping& keyMapping, 
00127          const std::string functionName, const DtKeyFunctionNameList& fnList, bool isEdit );               
00128             
00130       virtual void disableEditor();
00131       
00133       virtual void enableEditor();
00134 
00136       virtual QWidget* widget();
00137      
00138    protected slots:
00139       
00141       virtual void onFunctionItemSelectionChanged();
00142       
00144       virtual void onEditItemSelectionChanged();
00145       
00147       virtual void onFilterGroupTriggered(QAction* action);
00148       
00150       virtual void onAddMappingClicked();
00151       
00153       virtual void onRemoveMappingClicked();
00154       
00156       virtual void onEditMappingClicked();
00157       
00158    protected:
00159 
00161       void slot_requestInputAccepted(const DtKeyMapping&, bool);
00162       void slot_requestInputCanceled();
00163 
00165       void slot_requestKeyValidationAccepted( const DtKeyMapping& keyMapping,
00166          const DtKeyFunctionNameList& fnList, bool isEdit, bool replace);
00167 
00168       QString selectedKeyFunctionName() const;
00169       void functionCategoryToCategoryName( int category, QString& categoryName );
00170       void setupGui();
00171       QTreeWidgetItem* findItem( const std::string& key );
00172       QTreeWidgetItem* findKeyMapping( const DtKeyMapping& mapping, bool isBinary );
00173 
00174    protected:
00175 
00176       DtDe& myDe;
00177       std::string myKeyMapName;
00178 
00179       QPushButton* myFilterButton;
00180       QLabel* myFilterLabel;
00181       QActionGroup* myFilterGroup;
00182       QMenu* myFilterMenu;
00183       QWidget* myFunctionWidget;
00184       QWidget* myEditWidget;
00185       QTreeWidget* myFunctionTreeWidget;
00186       QTreeWidget* myEditTreeWidget;
00187 
00188       QSplitter* myTreeWidgetSplitter;
00189       QVBoxLayout* myFunctionLayout;
00190       QVBoxLayout* myMappingEditorLayout;
00191       QHBoxLayout* myMappingEditorButtonLayout;
00192       QHBoxLayout* myButtonLayout;
00193       QPushButton* myEditMappingButton;
00194       QPushButton* myAddMappingButton;
00195       QPushButton* myRemoveMappingButton;
00196       DtRequestKeyMapKeyDialog* myRequestDialog;
00197       DtRequestKeyValidationDialog* myRequestKeyValidationDialog;
00198 
00199       bool mySaveFilterEnabledState;
00200       bool mySaveFunctionListEnabledState;
00201       bool mySaveMappingListEnabledState;
00202       bool mySaveEditMappingButtonEnabledState;
00203       bool mySaveAddMappingButtonEnabledState;
00204       bool mySaveRemoveMappingButtonEnabledState;
00205       bool myEditorDisabled;
00206       bool myIsClosing;
00207 
00208    };
00209 
00210 
00214    class DT_DLL_VRVCOREQT DtRequestKeyMapKeyDialog : public QDialog
00215    {  Q_OBJECT;
00216    public:
00217 
00219       DtRequestKeyMapKeyDialog( QWidget* parent = 0, Qt::WindowFlags flags = Qt::Tool | Qt::SubWindow );
00220 
00222       virtual ~DtRequestKeyMapKeyDialog();
00223 
00225       virtual void keyPressEvent( QKeyEvent * event );
00226 
00228       virtual void closeEvent(QCloseEvent *event);     
00229 
00231       void show( std::string functionName, bool isBinary  );
00232 
00234       void show( std::string functionName, const DtKeyMapping& keyMapping,
00235          bool isBinary  );
00236 
00237    protected slots:
00238 
00240       void onOkClicked();
00241 
00243       void onCancelClicked();
00244 
00246       void onUpRadioButtonClicked();
00247 
00249       void onDownRadioButtonClicked();
00250 
00251    public:
00252 
00253       boost::signal<void ()> signal_requestInputCanceled;
00254       boost::signal<void (const DtKeyMapping&, bool)> signal_requestInputAccepted;
00255       boost::signal<void (const DtKeyMapping&,
00256          const DtKeyFunctionNameList&, bool, bool)> signal_requestKeyValidationAccepted;
00257 
00258    protected:
00259 
00260       void setupGui();
00261       QString keyMappingToQString( const DtKeyMapping& keyMapping );
00262 
00263    protected:
00264 
00265       QLabel* myFunctionNameLabel;
00266       QLineEdit* myKeyTextLineEdit;
00267       QButtonGroup* myUpDownButtonGroup;
00268       QRadioButton* myUpRadioButton;
00269       QRadioButton* myDownRadioButton;
00270       QVBoxLayout* myUpDownLayout;
00271       QHBoxLayout* myEntryLayout;
00272       QPushButton* myOkButton;
00273       QPushButton* myCancelButton;
00274       QHBoxLayout* myBottomButtonLayout;
00275       QVBoxLayout* myDialogLayout;
00276 
00277       DtKeyMapping myKeyMapping;
00278       DtKeyMapping myInitialEditKeyMapping;
00279       bool myUserTyped;
00280 
00281       bool myIsBinary;
00282       bool myIsClosing;
00283       bool myIsEdit;
00284 
00285    };
00286 
00287 
00291    class DT_DLL_VRVCOREQT DtRequestKeyValidationDialog : public QDialog
00292    {  Q_OBJECT;
00293    public:
00294 
00296       DtRequestKeyValidationDialog( QWidget* parent = 0, Qt::WindowFlags flags = Qt::Tool | Qt::SubWindow );
00297 
00299       virtual ~DtRequestKeyValidationDialog();
00300 
00302       virtual void closeEvent( QCloseEvent *event );
00303 
00305       void show( const DtKeyMapping& keyMapping, const std::string functionName,
00306          const DtKeyFunctionNameList& fnList, bool isEdit );
00307 
00308    protected slots:
00309 
00311       void onAddClicked();
00312 
00315       void onReplaceClicked();
00316 
00318       void onCancelClicked();
00319 
00320    public:
00321 
00322       boost::signal<void ()> signal_requestInputCanceled;
00323       boost::signal<void (const DtKeyMapping&, bool)> signal_requestInputAccepted;
00324       boost::signal<void (const DtKeyMapping&,
00325          const DtKeyFunctionNameList&, bool, bool)> signal_requestKeyValidationAccepted;
00326 
00327    protected:
00328 
00329       void setupGui();
00330 
00332       QString keyMappingToQString( const DtKeyMapping& keyMapping );
00333 
00334    protected:
00335 
00336       QLabel* myFunctionNamePrefixLabel;
00337       QLabel* myFunctionNameSuffixLabel;
00338       QListWidget* myFunctionNameList;
00339       QPushButton* myAddButton;
00340       QPushButton* myReplaceButton;
00341       QPushButton* myCancelButton;
00342       QHBoxLayout* myBottomButtonLayout;
00343       QVBoxLayout* myMainLayout;
00344 
00345       DtKeyMapping myKeyMapping;
00346       DtKeyFunctionNameList myFnList;
00347       bool myIsClosing;
00348       bool myIsEdit;
00349 
00350    };
00351 
00352 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)