diff options
Diffstat (limited to 'utils/vgui_panel_zoo/ComboBox2.cpp')
| -rw-r--r-- | utils/vgui_panel_zoo/ComboBox2.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/utils/vgui_panel_zoo/ComboBox2.cpp b/utils/vgui_panel_zoo/ComboBox2.cpp new file mode 100644 index 0000000..12916a2 --- /dev/null +++ b/utils/vgui_panel_zoo/ComboBox2.cpp @@ -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"); +} + + |