//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef INPUTDIALOG_H #define INPUTDIALOG_H #ifdef _WIN32 #pragma once #endif #include #include namespace vgui { class Label; class Button; class TextEntry; //----------------------------------------------------------------------------- // Purpose: Utility dialog base class - just has context kv and ok/cancel // buttons //----------------------------------------------------------------------------- class BaseInputDialog : public Frame { DECLARE_CLASS_SIMPLE(BaseInputDialog, Frame); public: BaseInputDialog(vgui::Panel *parent, const char *title); ~BaseInputDialog(); void DoModal(KeyValues *pContextKeyValues = NULL); protected: virtual void PerformLayout(); virtual void PerformLayout(int x, int y, int w, int h) {} // command buttons virtual void OnCommand(const char *command); void CleanUpContextKeyValues(); KeyValues *m_pContextKeyValues; private: vgui::Button *m_pCancelButton; vgui::Button *m_pOKButton; }; //----------------------------------------------------------------------------- // Purpose: Utility dialog, used to ask yes/no questions of the user //----------------------------------------------------------------------------- class InputMessageBox : public BaseInputDialog { DECLARE_CLASS_SIMPLE(InputMessageBox, BaseInputDialog); public: InputMessageBox(vgui::Panel *parent, const char *title, char const *prompt); ~InputMessageBox(); protected: virtual void PerformLayout(int x, int y, int w, int h); private: vgui::Label *m_pPrompt; }; //----------------------------------------------------------------------------- // Purpose: Utility dialog, used to let user type in some text //----------------------------------------------------------------------------- class InputDialog : public BaseInputDialog { DECLARE_CLASS_SIMPLE(InputDialog, BaseInputDialog); public: InputDialog(vgui::Panel *parent, const char *title, char const *prompt, char const *defaultValue = ""); ~InputDialog(); void SetMultiline(bool state); /* action signals "InputCompleted" "text" - the text entered "InputCanceled" */ void AllowNumericInputOnly(bool bOnlyNumeric); protected: virtual void PerformLayout(int x, int y, int w, int h); // command buttons virtual void OnCommand(const char *command); private: vgui::Label *m_pPrompt; vgui::TextEntry *m_pInput; }; } // namespace vgui #endif // INPUTDIALOG_H