|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "DemoPage.h"
#include <VGUI/IVGui.h>
#include <Keyvalues.h>
#include <vgui_controls/MenuBar.h>
#include <vgui_controls/MenuButton.h>
#include <vgui_controls/Menu.h>
#include "vgui/ISurface.h"
using namespace vgui;
//-----------------------------------------------------------------------------
// A MenuBar
//-----------------------------------------------------------------------------
class MenuBarDemo: public DemoPage { public: MenuBarDemo(Panel *parent, const char *name); ~MenuBarDemo(); private: MenuBar *m_pMenuBar; };
//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
MenuBarDemo::MenuBarDemo(Panel *parent, const char *name) : DemoPage(parent, name) { m_pMenuBar = new MenuBar(this, "AMenuBar"); m_pMenuBar->SetPos(0, 20);
// Make a couple menus and attach them in.
// A menu
MenuButton *pMenuButton = new MenuButton(this, "FileMenuButton", "&File"); Menu *pMenu = new Menu(pMenuButton, "AMenu"); pMenu->AddMenuItem("&New", new KeyValues ("NewFile"), this); pMenu->AddMenuItem("&Open", new KeyValues ("OpenFile"), this); pMenu->AddMenuItem("&Save", new KeyValues ("SaveFile"), this); pMenuButton->SetMenu(pMenu);
m_pMenuBar->AddButton(pMenuButton);
// A menu
pMenuButton = new MenuButton(this, "EditMenuButton", "&Edit"); pMenu = new Menu(pMenuButton, "AMenu"); pMenu->AddMenuItem("&Undo", new KeyValues ("Undo"), this); pMenu->AddMenuItem("&Find", new KeyValues ("Find"), this); pMenu->AddMenuItem("Select&All", new KeyValues ("SelectAll"), this); pMenuButton->SetMenu(pMenu);
m_pMenuBar->AddButton(pMenuButton);
// A menu
pMenuButton = new MenuButton(this, "ViewMenuButton", "&View"); pMenu = new Menu(pMenuButton, "AMenu"); pMenu->AddMenuItem("&FullScreen", new KeyValues ("FullScreen"), this); pMenu->AddMenuItem("&SplitScreen", new KeyValues ("SplitScreen"), this); pMenu->AddMenuItem("&Properties", new KeyValues ("Properties"), this); pMenu->AddMenuItem("&Output", new KeyValues ("Output"), this); pMenuButton->SetMenu(pMenu);
m_pMenuBar->AddButton(pMenuButton);
// A menu
pMenuButton = new MenuButton(this, "Big", "&HugeMenu"); pMenu = new Menu(pMenuButton, "HugeMenu"); int items = 150; for ( int i = 0 ; i < items; ++i ) { char sz[ 32 ]; Q_snprintf( sz, sizeof( sz ), "Item %03d", i + 1 );
int idx = pMenu->AddMenuItem( sz, new KeyValues ( sz ), this);
if ( !(i % 4 ) ) { char binding[ 256 ]; Q_snprintf( binding, sizeof( binding ), "Ctrl+%c", 'A' + ( rand() % 26 ) ); pMenu->SetCurrentKeyBinding( idx, binding ); }
if ( !(i % 7 ) ) { pMenu->AddSeparator(); } } pMenuButton->SetMenu(pMenu);
m_pMenuBar->AddButton(pMenuButton);
pMenuButton = new MenuButton(this, "Big", "&HalfHuge"); pMenu = new Menu(pMenuButton, "HalfHuge"); int htotal = 0; int itemHeight = pMenu->GetMenuItemHeight();
int workX, workY, workWide, workTall; surface()->GetWorkspaceBounds(workX, workY, workWide, workTall);
int i = 0; while ( htotal < ( workTall / 2 ) ) { char sz[ 32 ]; Q_snprintf( sz, sizeof( sz ), "Item %03d", i + 1 );
int idx = pMenu->AddMenuItem( sz, new KeyValues ( sz ), this);
if ( !(i % 4 ) ) { char binding[ 256 ]; Q_snprintf( binding, sizeof( binding ), "Ctrl+%c", 'A' + ( rand() % 26 ) ); pMenu->SetCurrentKeyBinding( idx, binding ); }
if ( !(i % 7 ) ) { pMenu->AddSeparator(); htotal += 3; } ++i; htotal += itemHeight; } pMenuButton->SetMenu(pMenu);
m_pMenuBar->AddButton(pMenuButton);
int bwide, btall; pMenuButton->GetSize( bwide, btall); int wide, tall; GetParent()->GetSize(wide, tall); m_pMenuBar->SetSize(wide - 2, btall + 8); }
//-----------------------------------------------------------------------------
// Purpose: Destructor
//-----------------------------------------------------------------------------
MenuBarDemo::~MenuBarDemo() { }
Panel* MenuBarDemo_Create(Panel *parent) { return new MenuBarDemo(parent, "MenuBarDemo"); }
|