diff options
| author | John Schoenick <[email protected]> | 2015-09-09 18:35:41 -0700 |
|---|---|---|
| committer | John Schoenick <[email protected]> | 2015-09-09 18:35:41 -0700 |
| commit | 0d8dceea4310fde5706b3ce1c70609d72a38efdf (patch) | |
| tree | c831ef32c2c801a5c5a80401736b52c7b5a528ec /mp/src/vgui2/vgui_controls/Menu.cpp | |
| parent | Updated the SDK with the latest code from the TF and HL2 branches. (diff) | |
| download | source-sdk-2013-0d8dceea4310fde5706b3ce1c70609d72a38efdf.tar.xz source-sdk-2013-0d8dceea4310fde5706b3ce1c70609d72a38efdf.zip | |
Diffstat (limited to 'mp/src/vgui2/vgui_controls/Menu.cpp')
| -rw-r--r-- | mp/src/vgui2/vgui_controls/Menu.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/mp/src/vgui2/vgui_controls/Menu.cpp b/mp/src/vgui2/vgui_controls/Menu.cpp index 695d3523..9978824e 100644 --- a/mp/src/vgui2/vgui_controls/Menu.cpp +++ b/mp/src/vgui2/vgui_controls/Menu.cpp @@ -2107,7 +2107,7 @@ void Menu::ActivateItemByRow(int row) //----------------------------------------------------------------------------- // Purpose: Return the number of items currently in the menu list //----------------------------------------------------------------------------- -int Menu::GetItemCount() +int Menu::GetItemCount() const { return m_MenuItems.Count(); } @@ -2701,3 +2701,33 @@ void Menu::Validate( CValidator &validator, char *pchName ) validator.Pop(); } #endif // DBGFLAG_VALIDATE + + +MenuBuilder::MenuBuilder( Menu *pMenu, Panel *pActionTarget ) + : m_pMenu( pMenu ) + , m_pActionTarget( pActionTarget ) + , m_pszLastCategory( NULL ) +{} + +MenuItem* MenuBuilder::AddMenuItem( const char *pszButtonText, const char *pszCommand, const char *pszCategoryName ) +{ + AddSepratorIfNeeded( pszCategoryName ); + return m_pMenu->GetMenuItem( m_pMenu->AddMenuItem( pszButtonText, new KeyValues( pszCommand ), m_pActionTarget ) ); +} + +MenuItem* MenuBuilder::AddCascadingMenuItem( const char *pszButtonText, Menu *pSubMenu, const char *pszCategoryName ) +{ + AddSepratorIfNeeded( pszCategoryName ); + return m_pMenu->GetMenuItem( m_pMenu->AddCascadingMenuItem( pszButtonText, m_pActionTarget, pSubMenu ) ); +} + +void MenuBuilder::AddSepratorIfNeeded( const char *pszCategoryName ) +{ + // Add a separator if the categories are different + if ( m_pszLastCategory && V_stricmp( pszCategoryName, m_pszLastCategory ) != 0 ) + { + m_pMenu->AddSeparator(); + } + + m_pszLastCategory = pszCategoryName; +} |