summaryrefslogtreecommitdiff
path: root/utils/vgui_panel_zoo/ComboBox2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/vgui_panel_zoo/ComboBox2.cpp')
-rw-r--r--utils/vgui_panel_zoo/ComboBox2.cpp136
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");
+}
+
+