mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-13 12:19:13 +00:00
1
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
//=========== Copyright Valve Corporation, All rights reserved. ===============//
|
||||
//
|
||||
// Purpose:
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef PANORAMA_TEXTINPUT_H
|
||||
#define PANORAMA_TEXTINPUT_H
|
||||
|
||||
#include "panorama/controls/panel2d.h"
|
||||
#include "panorama/input/iuiinput.h"
|
||||
|
||||
namespace panorama
|
||||
{
|
||||
|
||||
class ITextInputControl;
|
||||
class CTextInputHandlerSettings;
|
||||
|
||||
// When text input finished, bool = true for Done, = false for Cancel; char const * = string that user typed
|
||||
// Dispatched to ITextInputControl::GetAssociatedPanel()
|
||||
DECLARE_PANEL_EVENT2( TextInputFinished, bool, char const * );
|
||||
|
||||
// When the handler is up and sees gamepad right-stick input, it passes it through to the containing
|
||||
// control, so the control can do something with it. Dispatched to ITextInputControl::GetAssociatedPanel()
|
||||
DECLARE_PANEL_EVENT1( TextInputAnalogStickPassthrough, GamePadData_t );
|
||||
|
||||
panorama::ETextInputHandlerType_t ETextInputHandlerType_tFromName( const char *pchName );
|
||||
const char *PchNameFromETextInputHandlerType_t( int eType );
|
||||
|
||||
//
|
||||
// Input submodes for text input handlers, used also by textentry
|
||||
//
|
||||
enum ETextInputMode_t
|
||||
{
|
||||
k_ETextInputModeNormal,
|
||||
k_ETextInputModeNormalLower,
|
||||
k_ETextInputModePassword,
|
||||
k_ETextInputModeEmail,
|
||||
k_ETextInputModeNumeric,
|
||||
k_ETextInputModeNumericPassword,
|
||||
k_ETextInputModeURL,
|
||||
k_ETextInputModeSteamCode,
|
||||
k_ETextInputModePhoneNumber,
|
||||
};
|
||||
|
||||
ETextInputMode_t ETextInputMode_tFromName( const char *pchName );
|
||||
const char *PchNameFromETextInputMode_t( int eMode );
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: an interface that the text input uses to feed and be fed text
|
||||
//-----------------------------------------------------------------------------
|
||||
class ITextInputControl
|
||||
{
|
||||
public:
|
||||
virtual ~ITextInputControl() {}
|
||||
|
||||
virtual bool OnKeyDown( const KeyData_t &code ) = 0;
|
||||
virtual bool OnKeyUp( const KeyData_t & code ) = 0;
|
||||
virtual bool OnKeyTyped( const KeyData_t &unichar ) = 0;
|
||||
|
||||
// return true if you own the backing store of the text and can return it immediately on request,
|
||||
// false otherwise (html returns false here)
|
||||
virtual bool BSupportsImmediateTextReturn() = 0;
|
||||
|
||||
virtual int32 GetCursorOffset() const = 0;
|
||||
virtual uint GetCharCount() const = 0;
|
||||
|
||||
virtual const char *PchGetText() const = 0;
|
||||
virtual const wchar_t *PwchGetText() const = 0;
|
||||
|
||||
virtual void InsertCharacterAtCursor( const wchar_t &unichar ) = 0;
|
||||
virtual void InsertCharactersAtCursor( const wchar_t *pwch, size_t cwch ) = 0;
|
||||
|
||||
virtual CPanel2D *GetAssociatedPanel() = 0;
|
||||
|
||||
// request string the control now contains
|
||||
virtual void RequestControlString() = 0;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The interface over a text input handler. Derives from CPanel2D
|
||||
// for convenience.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CTextInputHandler : public panorama::CPanel2D
|
||||
{
|
||||
public:
|
||||
CTextInputHandler( panorama::IUIWindow *pParent, const char *pchID );
|
||||
CTextInputHandler( panorama::CPanel2D *pParent, const char *pchID );
|
||||
virtual ~CTextInputHandler();
|
||||
|
||||
virtual void OpenHandler() = 0;
|
||||
void CloseHandler( bool bCommitText );
|
||||
virtual ETextInputHandlerType_t GetType() = 0;
|
||||
virtual ITextInputControl *GetControlInterface() = 0;
|
||||
virtual void SuggestWord( const wchar_t *pwch, int ich ) = 0;
|
||||
virtual void SetYButtonAction( const char *pchLabel, IUIEvent *pEvent ) = 0;
|
||||
|
||||
protected:
|
||||
virtual void CloseHandlerImpl( bool bCommitText ) = 0;
|
||||
};
|
||||
|
||||
// Factory methods
|
||||
CTextInputHandler *CreateTextInputHandler( panorama::IUIWindow *pParent, const CTextInputHandlerSettings &settings, ITextInputControl *pControl );
|
||||
CTextInputHandler *CreateTextInputHandler( panorama::CPanel2D *pParent, const CTextInputHandlerSettings &settings, ITextInputControl *pControl );
|
||||
|
||||
} // namespace panorama
|
||||
|
||||
#endif // PANORAMA_TEXTINPUT_H
|
||||
|
||||
Reference in New Issue
Block a user