mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
137 lines
3.8 KiB
C++
137 lines
3.8 KiB
C++
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "DemoPage.h"
|
||
|
|
||
|
#include <VGUI/IVGui.h>
|
||
|
#include "vgui_controls/Controls.h"
|
||
|
|
||
|
#include "tier1/KeyValues.h"
|
||
|
#include <vgui_controls/Button.h>
|
||
|
#include <vgui_controls/ComboBox.h>
|
||
|
|
||
|
|
||
|
using namespace vgui;
|
||
|
|
||
|
// Combo boxes are boxes that display text and have a menu attached.
|
||
|
// Selecting an item from the menu changes the displayed text in the box.
|
||
|
|
||
|
class ComboBox2Demo: public DemoPage
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( ComboBox2Demo, DemoPage );
|
||
|
public:
|
||
|
ComboBox2Demo(Panel *parent, const char *name);
|
||
|
~ComboBox2Demo();
|
||
|
|
||
|
void OnButtonClicked();
|
||
|
void AddItemToComboBoxMenu();
|
||
|
|
||
|
private:
|
||
|
Button *m_pButton;
|
||
|
ComboBox *m_pComboBox;
|
||
|
|
||
|
DECLARE_PANELMAP();
|
||
|
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Constructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
ComboBox2Demo::ComboBox2Demo(Panel *parent, const char *name) : DemoPage(parent, name)
|
||
|
{
|
||
|
// Create a new combo box.
|
||
|
// The first arg is the parent, the second the name
|
||
|
// The third arg is the number of items that will be in the menu
|
||
|
// In settin this arg to 4, if we add more than 4 items to the menu
|
||
|
// a scroll bar will be enabled.
|
||
|
// The fourth arg is if the box is editable or not, this time we set it to true.
|
||
|
m_pComboBox = new ComboBox(this, "Directions", 6, true);
|
||
|
|
||
|
// Position the box.
|
||
|
m_pComboBox->SetPos(100, 100);
|
||
|
|
||
|
// Set the width of the Combo box so any element selected will display nicely.
|
||
|
m_pComboBox->SetWide(150);
|
||
|
|
||
|
// Add some text selections to the menu list
|
||
|
m_pComboBox->AddItem("Right", NULL );
|
||
|
m_pComboBox->AddItem("Left", NULL );
|
||
|
m_pComboBox->AddItem("Up", NULL );
|
||
|
m_pComboBox->AddItem("Down", NULL );
|
||
|
m_pComboBox->AddItem("Forward", NULL );
|
||
|
m_pComboBox->AddItem("Backward", NULL );
|
||
|
m_pComboBox->AddItem("Backward and really long", NULL );
|
||
|
|
||
|
|
||
|
// Create a button. Clicking this button will send a command back to us.
|
||
|
// In response to this command we will get the contents of the combo box
|
||
|
// and add it to the list of items in the list.
|
||
|
m_pButton = new Button (this, "AButton", "Click to add an item name to the menu");
|
||
|
|
||
|
m_pButton->SizeToContents();
|
||
|
m_pButton->SetPos(270, 100);
|
||
|
|
||
|
// Install a command that will be executed when the button is pressed
|
||
|
m_pButton->SetCommand(new KeyValues ("ButtonClicked"));
|
||
|
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Destructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
ComboBox2Demo::~ComboBox2Demo()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Respond to a message based action signal
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void ComboBox2Demo::OnButtonClicked()
|
||
|
{
|
||
|
ivgui()->DPrintf("Button was clicked.\n");
|
||
|
|
||
|
// Lets check out what's in the combo box and add it to the menu.
|
||
|
AddItemToComboBoxMenu();
|
||
|
}
|
||
|
|
||
|
void ComboBox2Demo::AddItemToComboBoxMenu()
|
||
|
{
|
||
|
char boxText[128];
|
||
|
|
||
|
// Get the text from the combo box
|
||
|
m_pComboBox->GetText(boxText, sizeof( boxText ) );
|
||
|
|
||
|
// We won't add empty text strings to the menu.
|
||
|
if (!strcmp(boxText, ""))
|
||
|
return;
|
||
|
|
||
|
// Add this item to the combo box menu
|
||
|
// If you wanted to check for uniqueness you would have to keep a
|
||
|
// list of the items in the menu and check it.
|
||
|
m_pComboBox->AddItem(boxText, NULL);
|
||
|
|
||
|
// Reset the combo box to empty
|
||
|
m_pComboBox->SetText("");
|
||
|
}
|
||
|
|
||
|
MessageMapItem_t ComboBox2Demo::m_MessageMap[] =
|
||
|
{
|
||
|
MAP_MESSAGE( ComboBox2Demo, "ButtonClicked", OnButtonClicked ),
|
||
|
};
|
||
|
|
||
|
IMPLEMENT_PANELMAP(ComboBox2Demo, BaseClass);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Panel* ComboBox2Demo_Create(Panel *parent)
|
||
|
{
|
||
|
return new ComboBox2Demo(parent, "ComboBox2Demo");
|
||
|
}
|
||
|
|
||
|
|