This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
MyGameFramework/lib/gwen/controls/gwen_menuitem.h
Gered c5cdddbeaa initial commit
current versions of all of my basic framework sources, build configurations/scripts, and supporting assets
2013-01-31 12:53:05 -05:00

82 lines
1.6 KiB
C++

/*
GWEN
Copyright (c) 2010 Facepunch Studios
See license in Gwen.h
*/
#pragma once
#ifndef GWEN_CONTROLS_MENUITEM_H
#define GWEN_CONTROLS_MENUITEM_H
#include "../gwen_baserender.h"
#include "gwen_base.h"
#include "gwen_button.h"
#include "gwen_menu.h"
namespace Gwen
{
namespace Controls
{
class Menu;
class GWEN_EXPORT MenuItem : public Button
{
public:
GWEN_CONTROL( MenuItem, Button );
virtual ~MenuItem();
virtual void Render( Skin::Base* skin );
virtual void Layout( Skin::Base* skin );
virtual void SizeToContents();
virtual void OnPress();
Menu* GetMenu();
bool IsMenuOpen();
void OpenMenu();
void CloseMenu();
void ToggleMenu();
void SetOnStrip( bool b ){ m_bOnStrip = b;}
bool OnStrip(){ return m_bOnStrip; }
virtual void SetCheckable( bool bCheck ) { m_bCheckable = bCheck; }
virtual void SetChecked( bool bCheck );
virtual bool GetChecked() { return m_bChecked; }
template <typename T>
MenuItem* SetAction( Gwen::Event::Handler* pHandler, T fn )
{
if ( m_Accelerator ) AddAccelerator( m_Accelerator->GetText(), fn, pHandler );
onMenuItemSelected.Add( pHandler, fn );
return this;
}
void SetAccelerator( const TextObject& strAccelerator );
Gwen::Event::Caller onMenuItemSelected;
Gwen::Event::Caller onChecked;
Gwen::Event::Caller onUnChecked;
Gwen::Event::Caller onCheckChange;
private:
Menu* m_Menu;
bool m_bOnStrip;
bool m_bCheckable;
bool m_bChecked;
Label* m_Accelerator;
Controls::Base * m_SubmenuArrow;
};
}
}
#endif