//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //============================================================================= #ifndef KEYBOARDEDITORDIALOG_H #define KEYBOARDEDITORDIALOG_H #ifdef _WIN32 #pragma once #endif #include "vgui_controls/Frame.h" #include "vgui_controls/PropertySheet.h" #include "vgui_controls/PropertyPage.h" class VControlsListPanel; namespace vgui { //----------------------------------------------------------------------------- // Purpose: Dialog for use in editing keybindings //----------------------------------------------------------------------------- class CKeyBoardEditorPage : public EditablePanel { DECLARE_CLASS_SIMPLE( CKeyBoardEditorPage, EditablePanel ); public: CKeyBoardEditorPage( Panel *parent, Panel *panelToEdit, KeyBindingContextHandle_t handle ); ~CKeyBoardEditorPage(); void SetKeybindingsSaveFile( char const *filename, char const *pathID = 0 ); virtual void OnKeyCodeTyped(vgui::KeyCode code); virtual void ApplySchemeSettings( IScheme *scheme ); void OnSaveChanges(); void OnRevert(); void OnUseDefaults(); protected: virtual void OnPageHide(); virtual void OnCommand( char const *cmd ); void PopulateList(); void GetMappingList( Panel *panel, CUtlVector< PanelKeyBindingMap * >& maps ); int GetMappingCount( Panel *panel ); void BindKey( vgui::KeyCode code ); // Trap row selection message MESSAGE_FUNC( ItemSelected, "ItemSelected" ); MESSAGE_FUNC_INT( OnClearBinding, "ClearBinding", item ); void SaveMappings(); void UpdateCurrentMappings(); void RestoreMappings(); void ApplyMappings(); protected: void AnsiText( char const *token, char *out, size_t buflen ); Panel *m_pPanel; KeyBindingContextHandle_t m_Handle; VControlsListPanel *m_pList; struct SaveMapping_t { SaveMapping_t(); SaveMapping_t( const SaveMapping_t& src ); PanelKeyBindingMap *map; CUtlVector< BoundKey_t > current; CUtlVector< BoundKey_t > original; }; CUtlVector< SaveMapping_t * > m_Save; }; //----------------------------------------------------------------------------- // Purpose: Dialog for use in editing keybindings //----------------------------------------------------------------------------- class CKeyBoardEditorSheet : public PropertySheet { DECLARE_CLASS_SIMPLE( CKeyBoardEditorSheet, PropertySheet ); public: CKeyBoardEditorSheet( Panel *parent, Panel *panelToEdit, KeyBindingContextHandle_t handle ); void SetKeybindingsSaveFile( char const *filename, char const *pathID = 0 ); void OnSaveChanges(); void OnRevert(); void OnUseDefaults(); protected: vgui::PHandle m_hPanel; KeyBindingContextHandle_t m_Handle; bool m_bSaveToExternalFile; CUtlSymbol m_SaveFileName; CUtlSymbol m_SaveFilePathID; Color m_clrAlteredItem; }; //----------------------------------------------------------------------------- // Purpose: Dialog for use in editing keybindings //----------------------------------------------------------------------------- class CKeyBoardEditorDialog : public Frame { DECLARE_CLASS_SIMPLE( CKeyBoardEditorDialog, Frame ); public: CKeyBoardEditorDialog( Panel *parent, Panel *panelToEdit, KeyBindingContextHandle_t handle ); void SetKeybindingsSaveFile( char const *filename, char const *pathID = 0 ); virtual void OnCommand( char const *cmd ); private: CKeyBoardEditorSheet *m_pKBEditor; Button *m_pSave; Button *m_pCancel; Button *m_pRevert; Button *m_pUseDefaults; }; } #endif // KEYBOARDEDITORDIALOG_H