add initial examples, replacing the 'Demos/Demos3'. Will make it work cross-platform, OpenGL3/OpenGL2 and add more examples to it.
This commit is contained in:
98
examples/ThirdPartyLibs/Gwen/Controls/TabButton.cpp
Normal file
98
examples/ThirdPartyLibs/Gwen/Controls/TabButton.cpp
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
GWEN
|
||||
Copyright (c) 2010 Facepunch Studios
|
||||
See license in Gwen.h
|
||||
*/
|
||||
|
||||
|
||||
#include "Gwen/Gwen.h"
|
||||
#include "Gwen/Skin.h"
|
||||
#include "Gwen/Controls/TabButton.h"
|
||||
#include "Gwen/Controls/TabControl.h"
|
||||
#include "Gwen/Controls/Highlight.h"
|
||||
#include "Gwen/DragAndDrop.h"
|
||||
|
||||
using namespace Gwen;
|
||||
using namespace Gwen::Controls;
|
||||
|
||||
|
||||
GWEN_CONTROL_CONSTRUCTOR( TabButton )
|
||||
{
|
||||
m_Page = NULL;
|
||||
m_Control = NULL;
|
||||
|
||||
SetPadding( Padding( 2, 2, 2, 2 ) );
|
||||
|
||||
DragAndDrop_SetPackage( true, "TabButtonMove" );
|
||||
SetAlignment( Pos::Top | Pos::Left );
|
||||
SetTextPadding( Padding( 5, 3, 3, 3 ) );
|
||||
}
|
||||
|
||||
|
||||
void TabButton::Render( Skin::Base* skin )
|
||||
{
|
||||
skin->DrawTabButton( this, m_Page && m_Page->Visible() );
|
||||
}
|
||||
|
||||
|
||||
void TabButton::SetTabControl( TabControl* ctrl )
|
||||
{
|
||||
if ( m_Control == ctrl ) return;
|
||||
|
||||
if ( m_Control )
|
||||
{
|
||||
m_Control->OnLoseTab( this );
|
||||
}
|
||||
|
||||
m_Control = ctrl;
|
||||
}
|
||||
|
||||
bool TabButton::DragAndDrop_ShouldStartDrag()
|
||||
{
|
||||
return m_Control->DoesAllowDrag();
|
||||
}
|
||||
|
||||
|
||||
bool TabButton::OnKeyUp( bool bDown )
|
||||
{
|
||||
OnKeyLeft( bDown );
|
||||
return true;
|
||||
}
|
||||
bool TabButton::OnKeyDown( bool bDown )
|
||||
{
|
||||
OnKeyRight( bDown );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TabButton::OnKeyLeft( bool bDown )
|
||||
{
|
||||
if ( bDown )
|
||||
{
|
||||
Base::List::reverse_iterator it = std::find( m_Parent->Children.rbegin(), m_Parent->Children.rend(), this );
|
||||
if ( it != m_Parent->Children.rend() && (++it != m_Parent->Children.rend()) )
|
||||
{
|
||||
Base* pNextTab = *it;
|
||||
GetTabControl()->OnTabPressed( pNextTab );
|
||||
Gwen::KeyboardFocus = pNextTab;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool TabButton::OnKeyRight( bool bDown )
|
||||
{
|
||||
if ( bDown )
|
||||
{
|
||||
Base::List::iterator it = std::find( m_Parent->Children.begin(), m_Parent->Children.end(), this );
|
||||
if ( it != m_Parent->Children.end() && (++it != m_Parent->Children.end()) )
|
||||
{
|
||||
Base* pNextTab = *it;
|
||||
GetTabControl()->OnTabPressed( pNextTab );
|
||||
Gwen::KeyboardFocus = pNextTab;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user