//========= 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/PropertyPage.h" #include "vgui_controls/PropertySheet.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::ButtonCode_t 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 &maps); int GetMappingCount(Panel *panel); void BindKey(vgui::ButtonCode_t 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 current; CUtlVector original; }; CUtlVector 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; }; } // namespace vgui #endif // KEYBOARDEDITORDIALOG_H