Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
3.7 KiB

//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. =======
//
// Purpose: Declaration of the CScriptEditorPanel class and associated helper
// classes. The ScriptEditorPanel class represents a vgui panel which contains
// a text editing panel which may be used to edit a script and text panel which
// displays output from the script.
//
//=============================================================================
#ifndef SCRIPTEDITORPANEL_H
#define SCRIPTEDITORPANEL_H
#ifdef _WIN32
#pragma once
#endif
#include "vgui_controls/editablepanel.h"
//-----------------------------------------------------------------------------
// CLineNumberPanel -- A simple panel which is used to display line numbers
// next to the TextEntry control in the script editor. This is done a separate
// panel in order to allow easy manipulation of the positioning.
//-----------------------------------------------------------------------------
class CLineNumberPanel : public vgui::Panel
{
DECLARE_CLASS_SIMPLE( CLineNumberPanel, vgui::Panel );
public:
CLineNumberPanel( vgui::Panel *pParent, vgui::TextEntry *pTextEntry, const char *pchName );
// Paint the background of the panel, including the line numbers
virtual void PaintBackground();
// Apply the settings from the provided scheme, and save the font to display line numbers.
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
private:
vgui::TextEntry *m_pTextEntry; // Pointer to the text entry panel for which line numbers are to be displayed
vgui::HFont m_hFont; // Handle to the font in which the line numbers are to be displayed
Color m_Color; // Color in which the line numbers are to be displayed
};
//-----------------------------------------------------------------------------
// CScriptEditorPanel -- A vgui panel class which is used to edit a script. It
// consists of a RichText panel which displays the output of the script and
// a TextEntry panel which may be used to edit the script. In addition the
// panel has functionality for running, loading, and saving the script. The
// virtual RunScript() function is expected to be overridden by a derived class
// to actually execute the script, but the CScriptEditorPanel may be used
// directly if only editing is required.
//-----------------------------------------------------------------------------
class CScriptEditorPanel : public vgui::EditablePanel, public IConsoleDisplayFunc
{
DECLARE_CLASS_SIMPLE( CScriptEditorPanel, vgui::EditablePanel );
public:
CScriptEditorPanel( Panel *parent, const char *pchName );
~CScriptEditorPanel();
// Inherited from IConsoleDisplayFunc
virtual void ColorPrint( const Color& clr, const char *pMessage );
virtual void Print( const char *pMessage );
virtual void DPrint( const char *pMessage );
virtual void GetConsoleText( char *pchText, size_t bufSize ) const;
// Clear the output console
void Clear();
// Run the specified script
virtual void RunScript( const CUtlBuffer& scriptBuffer );
bool TextEntryHasFocus() const;
void TextEntryRequestFocus();
private:
MESSAGE_FUNC_PTR( OnTextChanged, "TextChanged", panel );
// vgui overrides
virtual void PerformLayout();
virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
virtual void OnCommand(const char *command);
vgui::RichText *m_pOutput; // Panel which displays the script output
vgui::TextEntry *m_pScriptEntry; // Panel used to input and edit the script
CLineNumberPanel *m_pLineNumberPanel; // Panel used to display line numbers
vgui::Button *m_pSubmit; // Button which issues the submit command
Color m_PrintColor; // Output primary text color
Color m_DPrintColor; // Output developer text color
};
#endif // SCRIPTEDITORPANEL_H