139 lines
3.5 KiB
C++
139 lines
3.5 KiB
C++
//====== Copyright © 1996-2005, 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
|