mirror of
https://github.com/FWGS/hlsdk-xash3d
synced 2024-11-25 19:29:13 +01:00
ba2cab60df
* 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
217 lines
5.5 KiB
C++
217 lines
5.5 KiB
C++
//========= Copyright (c) 1996-2002, Valve LLC, All rights reserved. ============
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================
|
|
|
|
#include <stdio.h>
|
|
#include "vgui_ControlConfigPanel.h"
|
|
#include <VGUI_HeaderPanel.h>
|
|
#include <VGUI_TablePanel.h>
|
|
#include <VGUI_Label.h>
|
|
#include <VGUI_ScrollPanel.h>
|
|
#include <VGUI_Scheme.h>
|
|
#include <VGUI_DataInputStream.h>
|
|
#include <VGUI.h>
|
|
#include <VGUI_TextEntry.h>
|
|
|
|
using namespace vgui;
|
|
|
|
namespace
|
|
{
|
|
class FooTablePanel : public TablePanel
|
|
{
|
|
private:
|
|
Label *_label;
|
|
TextEntry *_textEntry;
|
|
ControlConfigPanel *_controlConfigPanel;
|
|
public:
|
|
FooTablePanel( ControlConfigPanel *controlConfigPanel, int x, int y, int wide, int tall, int columnCount ) : TablePanel( x, y, wide, tall, columnCount )
|
|
{
|
|
_controlConfigPanel = controlConfigPanel;
|
|
_label = new Label( "You are a dumb monkey", 0, 0, 100, 20 );
|
|
_label->setBgColor( Scheme::sc_primary3 );
|
|
_label->setFgColor( Scheme::sc_primary1 );
|
|
_label->setFont( Scheme::sf_primary3 );
|
|
|
|
_textEntry=new TextEntry( "", 0, 0, 100, 20 );
|
|
// _textEntry->setFont( Scheme::sf_primary3 );
|
|
}
|
|
public:
|
|
virtual int getRowCount()
|
|
{
|
|
return _controlConfigPanel->GetCVarCount();
|
|
}
|
|
|
|
virtual int getCellTall( int row )
|
|
{
|
|
return 12;
|
|
}
|
|
|
|
virtual Panel *getCellRenderer( int column, int row,bool columnSelected, bool rowSelected, bool cellSelected )
|
|
{
|
|
char cvar[128], desc[128], bind[128], bindAlt[128];
|
|
_controlConfigPanel->GetCVar( row, cvar, 128, desc, 128 );
|
|
|
|
if( cellSelected )
|
|
{
|
|
_label->setBgColor( Scheme::sc_primary1 );
|
|
_label->setFgColor( Scheme::sc_primary3 );
|
|
}
|
|
else if( rowSelected )
|
|
{
|
|
_label->setBgColor( Scheme::sc_primary2 );
|
|
_label->setFgColor( Scheme::sc_primary1 );
|
|
}
|
|
else
|
|
{
|
|
_label->setBgColor( Scheme::sc_primary3 );
|
|
_label->setFgColor( Scheme::sc_primary1 );
|
|
}
|
|
|
|
switch( column )
|
|
{
|
|
case 0:
|
|
{
|
|
_label->setText( desc );
|
|
_label->setContentAlignment( Label::a_west );
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
_controlConfigPanel->GetCVarBind( cvar, bind, 128, bindAlt, 128 );
|
|
_label->setText( bind );
|
|
_label->setContentAlignment( Label::a_center );
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
_controlConfigPanel->GetCVarBind( cvar, bind, 128, bindAlt, 128 );
|
|
_label->setText( bindAlt );
|
|
_label->setContentAlignment( Label::a_center );
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
_label->setText( "" );
|
|
break;
|
|
}
|
|
}
|
|
|
|
return _label;
|
|
}
|
|
virtual Panel *startCellEditing( int column, int row )
|
|
{
|
|
_textEntry->setText( "Goat", strlen( "Goat" ) );
|
|
_textEntry->requestFocus();
|
|
return _textEntry;
|
|
}
|
|
};
|
|
}
|
|
|
|
ControlConfigPanel::ControlConfigPanel( int x, int y, int wide, int tall ) : Panel( x, y, wide, tall )
|
|
{
|
|
setPaintBorderEnabled( false );
|
|
setPaintBackgroundEnabled( false );
|
|
setPaintEnabled( false );
|
|
|
|
_actionLabel = new Label( "Action" );
|
|
_actionLabel->setBgColor( Scheme::sc_primary3 );
|
|
_actionLabel->setFgColor( Scheme::sc_primary3 );
|
|
|
|
_keyButtonLabel = new Label( "Key / Button" );
|
|
_keyButtonLabel->setBgColor( Scheme::sc_primary3 );
|
|
_keyButtonLabel->setFgColor( Scheme::sc_primary3 );
|
|
|
|
_alternateLabel = new Label( "Alternate" );
|
|
_alternateLabel->setBgColor( Scheme::sc_primary3 );
|
|
_alternateLabel->setFgColor( Scheme::sc_primary3 );
|
|
|
|
_headerPanel=new HeaderPanel( 0, 0, wide, 20 );
|
|
_headerPanel->setParent( this );
|
|
|
|
_headerPanel->addSectionPanel( _actionLabel );
|
|
_headerPanel->addSectionPanel( _keyButtonLabel );
|
|
_headerPanel->addSectionPanel( _alternateLabel );
|
|
|
|
_headerPanel->setSliderPos( 0, wide / 2 );
|
|
_headerPanel->setSliderPos( 1, ( wide / 2 ) + ( wide / 4 ) );
|
|
_headerPanel->setSliderPos( 2, wide );
|
|
|
|
_scrollPanel=new ScrollPanel( 0, 20, wide, tall - 20 );
|
|
_scrollPanel->setParent( this );
|
|
_scrollPanel->setPaintBorderEnabled( false );
|
|
_scrollPanel->setPaintBackgroundEnabled( false );
|
|
_scrollPanel->setPaintEnabled( false );
|
|
_scrollPanel->getClient()->setPaintBorderEnabled( false );
|
|
_scrollPanel->getClient()->setPaintBackgroundEnabled( false );
|
|
_scrollPanel->getClient()->setPaintEnabled( false );
|
|
_scrollPanel->setScrollBarVisible( false, true );
|
|
|
|
_tablePanel = new FooTablePanel( this, 0, 0, _scrollPanel->getClient()->getWide(), 800, 3 );
|
|
_tablePanel->setParent( _scrollPanel->getClient() );
|
|
_tablePanel->setHeaderPanel( _headerPanel );
|
|
_tablePanel->setBgColor( Color( 200, 0, 0, 255 ) );
|
|
_tablePanel->setFgColor( Color( Scheme::sc_primary2 ) );
|
|
_tablePanel->setGridVisible( true, true );
|
|
_tablePanel->setGridSize( 1, 1 );
|
|
}
|
|
|
|
void ControlConfigPanel::AddCVar( const char *cvar, const char *desc )
|
|
{
|
|
_cvarDar.addElement( vgui_strdup( cvar ) );
|
|
_descDar.addElement( vgui_strdup( desc ) );
|
|
}
|
|
|
|
int ControlConfigPanel::GetCVarCount()
|
|
{
|
|
return _cvarDar.getCount();
|
|
}
|
|
|
|
void ControlConfigPanel::GetCVar( int index, char *cvar, int cvarLen, char *desc, int descLen )
|
|
{
|
|
vgui_strcpy( cvar, cvarLen, _cvarDar[index] );
|
|
vgui_strcpy( desc, descLen, _descDar[index] );
|
|
}
|
|
|
|
void ControlConfigPanel::AddCVarFromInputStream( InputStream *is )
|
|
{
|
|
if( is == null )
|
|
{
|
|
return;
|
|
}
|
|
|
|
DataInputStream dis( is );
|
|
|
|
bool success;
|
|
|
|
while( 1 )
|
|
{
|
|
char buf[256], cvar[128], desc[128];
|
|
|
|
dis.readLine( buf, 256, success );
|
|
|
|
if( !success )
|
|
{
|
|
break;
|
|
}
|
|
|
|
if( sscanf( buf, "\"%[^\"]\" \"%[^\"]\"", cvar, desc ) == 2 )
|
|
{
|
|
AddCVar( cvar, desc );
|
|
}
|
|
}
|
|
}
|
|
|
|
void ControlConfigPanel::GetCVarBind( const char *cvar, char *bind, int bindLen, char *bindAlt, int bindAltLen )
|
|
{
|
|
sprintf( bind,"%s : Bind", cvar );
|
|
sprintf( bindAlt,"%s : BindAlt", cvar );
|
|
}
|
|
|
|
void ControlConfigPanel::SetCVarBind( const char *cvar, const char *bind, const char *bindAlt )
|
|
{
|
|
}
|
|
|