2
0
mirror of https://github.com/FWGS/hlsdk-xash3d synced 2024-11-24 18:59:26 +01:00
hlsdk-xash3d/cl_dll/vgui_ConsolePanel.cpp
Roman Chistokhodov ba2cab60df
Get VGUI back (optionally) (#194)
* Get VGUI back (optionally)

* Add some missing VGUI invocations

* Update CMakeLists.txt to build with vgui for Windows

* Move windows.h inclusions only to those places where it's really needed

* Try fix mingw build

* Update hud_spectator

* Merge nekonomicon's vgui branch

* Don't include vgui panel and app in cdll_int.cpp if vgui is real

* Deduplicate scoreboard global variables

* Add options to prefer non-vgui motd and scoreboard when vgui is enabled

* Add vgui-dev as a submodule. Add building vith vgui to CI

* Fix artifact uploading

* Don't use global variable when not necessary

* char* to const char* in CMenuHandler_StringCommand constructor

* Fix 'format string is not a literal string' warnings

* Fix 'always evaluate to true' warnings

* Team Fortress classes to const char*

* CreateCommandMenu accepts const char*

* Fix printf formats. Turn some unsigned longs into unsigned ints since they use only 32 bits anyway

* Explicit assignment result as condition

* Prevent memory leak on menu reading

* Localize button text

* Create FileInputStream on stack avoiding the leak

* Remove Servers Browser code

* Arrow file names to const char*

* Fix assignment to the wrong variable
2021-10-27 01:35:11 +00:00

98 lines
1.8 KiB
C++

//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#include "vgui_ConsolePanel.h"
#include "hud.h"
#include <VGUI_ActionSignal.h>
#include <VGUI_TextGrid.h>
#include <VGUI_TextEntry.h>
#include <VGUI_EtchedBorder.h>
#include <VGUI_LoweredBorder.h>
using namespace vgui;
namespace
{
class Handler : public ActionSignal
{
private:
ConsolePanel *_consolePanel;
public:
Handler( ConsolePanel *consolePanel )
{
_consolePanel = consolePanel;
}
public:
virtual void actionPerformed( Panel *panel )
{
_consolePanel->doExecCommand();
}
};
}
ConsolePanel::ConsolePanel( int x, int y, int wide, int tall ) : Panel( x, y, wide, tall )
{
setBorder( new EtchedBorder() );
_textGrid = new TextGrid( 80, 21, 5, 5, 200, 100 );
_textGrid->setBorder( new LoweredBorder() );
_textGrid->setParent( this );
_textEntry=new TextEntry( "", 5, 5, 200, 20 );
_textEntry->setParent( this );
_textEntry->addActionSignal( new Handler( this ) );
}
int ConsolePanel::print( const char *text )
{
return _textGrid->printf( "%s", text );
}
int ConsolePanel::vprintf( const char *format, va_list argList )
{
return _textGrid->vprintf( format, argList );
}
int ConsolePanel::printf( const char* format, ... )
{
va_list argList;
va_start( argList, format );
int ret = vprintf( format, argList );
va_end( argList );
return ret;
}
void ConsolePanel::doExecCommand()
{
char buf[2048];
_textEntry->getText( 0, buf, sizeof buf );
_textEntry->setText( null, 0 );
gEngfuncs.pfnClientCmd( buf );
}
void ConsolePanel::setSize( int wide, int tall )
{
Panel::setSize( wide, tall );
getPaintSize( wide, tall );
_textGrid->setBounds( 5, 5, wide - 10, tall - 35 );
_textEntry->setBounds( 5, tall - 25, wide - 10, 20 );
}