mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 17:59:37 +00:00
1
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
//========= 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");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user