diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /sp/src/public/vgui_controls/ComboBox.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/public/vgui_controls/ComboBox.h')
| -rw-r--r-- | sp/src/public/vgui_controls/ComboBox.h | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/sp/src/public/vgui_controls/ComboBox.h b/sp/src/public/vgui_controls/ComboBox.h new file mode 100644 index 00000000..4beb9714 --- /dev/null +++ b/sp/src/public/vgui_controls/ComboBox.h @@ -0,0 +1,186 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef COMBOBOX_H
+#define COMBOBOX_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/TextEntry.h>
+#include <vgui_controls/Menu.h>
+#include <vgui_controls/Button.h>
+
+namespace vgui
+{
+//-----------------------------------------------------------------------------
+// Purpose: Scroll bar button
+//-----------------------------------------------------------------------------
+class ComboBoxButton : public vgui::Button
+{
+public:
+ ComboBoxButton(ComboBox *parent, const char *panelName, const char *text);
+ virtual void ApplySchemeSettings(IScheme *pScheme);
+ virtual IBorder *GetBorder(bool depressed, bool armed, bool selected, bool keyfocus);
+ virtual void OnCursorExited();
+
+ virtual Color GetButtonBgColor()
+ {
+ if (IsEnabled())
+ return Button::GetButtonBgColor();
+
+ return m_DisabledBgColor;
+ }
+
+private:
+ Color m_DisabledBgColor;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Text entry with drop down options list
+//-----------------------------------------------------------------------------
+class ComboBox : public TextEntry
+{
+ DECLARE_CLASS_SIMPLE( ComboBox, TextEntry );
+
+public:
+ ComboBox(Panel *parent, const char *panelName, int numLines, bool allowEdit);
+ ~ComboBox();
+
+ // functions designed to be overriden
+ virtual void OnShowMenu(Menu *menu) {}
+ virtual void OnHideMenu(Menu *menu) {}
+
+ // Set the number of items in the drop down menu.
+ virtual void SetNumberOfEditLines( int numLines );
+
+ // Add an item to the drop down
+ virtual int AddItem(const char *itemText, const KeyValues *userData);
+ virtual int AddItem(const wchar_t *itemText, const KeyValues *userData);
+
+ virtual int GetItemCount();
+ int GetItemIDFromRow( int row );
+
+ // update the item
+ virtual bool UpdateItem(int itemID, const char *itemText,const KeyValues *userData);
+ virtual bool UpdateItem(int itemID, const wchar_t *itemText, const KeyValues *userData);
+ virtual bool IsItemIDValid(int itemID);
+
+ // set the enabled state of an item
+ virtual void SetItemEnabled(const char *itemText, bool state);
+ virtual void SetItemEnabled(int itemID, bool state);
+
+ // Removes a single item
+ void DeleteItem( int itemID );
+
+ // Remove all items from the drop down menu
+ void RemoveAll();
+ // deprecated, use above
+ void DeleteAllItems() { RemoveAll(); }
+
+ // Sorts the items in the list - FIXME does nothing
+ virtual void SortItems();
+
+ // Set the visiblity of the drop down menu button.
+ virtual void SetDropdownButtonVisible(bool state);
+
+ // Return true if the combobox current has the dropdown menu open
+ virtual bool IsDropdownVisible();
+
+ // Activate the item in the menu list,as if that
+ // menu item had been selected by the user
+ MESSAGE_FUNC_INT( ActivateItem, "ActivateItem", itemID );
+ void ActivateItemByRow(int row);
+
+ void SilentActivateItem(int itemID); // Sets the menu to the appropriate row without sending a TextChanged message
+ void SilentActivateItemByRow(int row); // Sets the menu to the appropriate row without sending a TextChanged message
+
+ int GetActiveItem();
+ KeyValues *GetActiveItemUserData();
+ KeyValues *GetItemUserData(int itemID);
+ void GetItemText( int itemID, OUT_Z_BYTECAP(bufLenInBytes) wchar_t *text, int bufLenInBytes );
+ void GetItemText( int itemID, OUT_Z_BYTECAP(bufLenInBytes) char *text, int bufLenInBytes );
+
+ // sets a custom menu to use for the dropdown
+ virtual void SetMenu( Menu *menu );
+ virtual Menu *GetMenu() { return m_pDropDown; }
+
+ // Layout the format of the combo box for drawing on screen
+ virtual void PerformLayout();
+
+ /* action signals
+ "TextChanged" - signals that the text has changed in the combo box
+
+ */
+
+ virtual void ShowMenu();
+ virtual void HideMenu();
+ virtual void OnKillFocus();
+ MESSAGE_FUNC( OnMenuClose, "MenuClose" );
+ virtual void DoClick();
+ virtual void OnSizeChanged(int wide, int tall);
+
+ virtual void SetOpenDirection(Menu::MenuDirection_e direction);
+
+ virtual void SetFont( HFont font );
+
+ virtual void SetUseFallbackFont( bool bState, HFont hFallback );
+
+ ComboBoxButton *GetComboButton( void ) { return m_pButton; }
+
+protected:
+ // overrides
+ virtual void OnMousePressed(MouseCode code);
+ virtual void OnMouseDoublePressed(MouseCode code);
+ MESSAGE_FUNC( OnMenuItemSelected, "MenuItemSelected" );
+ virtual void OnCommand( const char *command );
+ virtual void ApplySchemeSettings(IScheme *pScheme);
+ virtual void ApplySettings( KeyValues *pInResourceData );
+ virtual void OnCursorEntered();
+ virtual void OnCursorExited();
+
+ // custom message handlers
+ MESSAGE_FUNC_WCHARPTR( OnSetText, "SetText", text );
+ virtual void OnSetFocus(); // called after the panel receives the keyboard focus
+#ifdef _X360
+ virtual void OnKeyCodePressed(KeyCode code);
+#endif
+ virtual void OnKeyCodeTyped(KeyCode code);
+ virtual void OnKeyTyped(wchar_t unichar);
+
+ void SelectMenuItem(int itemToSelect);
+ void MoveAlongMenuItemList(int direction);
+ void MoveToFirstMenuItem();
+ void MoveToLastMenuItem();
+private:
+ void DoMenuLayout();
+
+ Menu *m_pDropDown;
+ ComboBoxButton *m_pButton;
+ bool m_bPreventTextChangeMessage;
+
+//=============================================================================
+// HPE_BEGIN:
+// [pfreese] This member variable is never initialized and not used correctly
+//=============================================================================
+
+// bool m_bAllowEdit;
+
+//=============================================================================
+// HPE_END
+//=============================================================================
+ bool m_bHighlight;
+ Menu::MenuDirection_e m_iDirection;
+ int m_iOpenOffsetY;
+
+ char m_szBorderOverride[64];
+};
+
+} // namespace vgui
+
+#endif // COMBOBOX_H
|