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:
117
examples/ThirdPartyLibs/Gwen/Controls/NumericUpDown.cpp
Normal file
117
examples/ThirdPartyLibs/Gwen/Controls/NumericUpDown.cpp
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
GWEN
|
||||
Copyright (c) 2010 Facepunch Studios
|
||||
See license in Gwen.h
|
||||
*/
|
||||
|
||||
|
||||
#include "Gwen/Gwen.h"
|
||||
#include "Gwen/Utility.h"
|
||||
#include "Gwen/Skin.h"
|
||||
#include "Gwen/Controls/NumericUpDown.h"
|
||||
#include "Gwen/Controls/Layout/Splitter.h"
|
||||
|
||||
using namespace Gwen;
|
||||
using namespace Gwen::Controls;
|
||||
|
||||
|
||||
|
||||
GWEN_CONTROL_CONSTRUCTOR( NumericUpDown )
|
||||
{
|
||||
SetSize( 100, 20 );
|
||||
|
||||
Layout::Splitter* pSplitter = new Layout::Splitter( this );
|
||||
pSplitter->Dock( Pos::Right );
|
||||
pSplitter->SetSize( 13, 13 );
|
||||
|
||||
NumericUpDownButton_Up* pButtonUp = new NumericUpDownButton_Up( pSplitter );
|
||||
pButtonUp->onPress.Add( this, &NumericUpDown::OnButtonUp );
|
||||
pButtonUp->SetTabable( false );
|
||||
|
||||
pSplitter->SetPanel( 0, pButtonUp );
|
||||
|
||||
|
||||
NumericUpDownButton_Down* pButtonDown = new NumericUpDownButton_Down( pSplitter );
|
||||
pButtonDown->onPress.Add( this, &NumericUpDown::OnButtonDown );
|
||||
pButtonDown->SetTabable( false );
|
||||
pButtonUp->SetPadding( Padding( 0, 1, 1, 0 ) );
|
||||
|
||||
pSplitter->SetPanel( 1, pButtonDown );
|
||||
|
||||
m_iMax = 100;
|
||||
m_iMin = 0;
|
||||
m_iNumber = 0;
|
||||
SetText( "0" );
|
||||
}
|
||||
|
||||
void NumericUpDown::OnButtonUp( Base* /*control*/ )
|
||||
{
|
||||
SyncNumberFromText();
|
||||
SetValue( m_iNumber + 1 );
|
||||
}
|
||||
|
||||
void NumericUpDown::OnButtonDown( Base* /*control*/ )
|
||||
{
|
||||
SyncNumberFromText();
|
||||
SetValue( m_iNumber - 1 );
|
||||
}
|
||||
|
||||
|
||||
void NumericUpDown::SyncTextFromNumber()
|
||||
{
|
||||
SetText( Utility::ToString( m_iNumber ) );
|
||||
}
|
||||
|
||||
void NumericUpDown::SyncNumberFromText()
|
||||
{
|
||||
SetValue( (int) GetFloatFromText() );
|
||||
}
|
||||
|
||||
void NumericUpDown::SetMin( int i )
|
||||
{
|
||||
m_iMin = i;
|
||||
}
|
||||
|
||||
void NumericUpDown::SetMax( int i )
|
||||
{
|
||||
m_iMax = i;
|
||||
}
|
||||
|
||||
void NumericUpDown::SetValue( int i )
|
||||
{
|
||||
if ( i > m_iMax ) i = m_iMax;
|
||||
if ( i < m_iMin ) i = m_iMin;
|
||||
|
||||
if ( m_iNumber == i )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_iNumber = i;
|
||||
|
||||
// Don't update the text if we're typing in it..
|
||||
if ( !HasFocus() )
|
||||
{
|
||||
SyncTextFromNumber();
|
||||
}
|
||||
|
||||
OnChange();
|
||||
}
|
||||
|
||||
void NumericUpDown::OnChange()
|
||||
{
|
||||
onChanged.Call( this );
|
||||
}
|
||||
|
||||
void NumericUpDown::OnTextChanged()
|
||||
{
|
||||
BaseClass::OnTextChanged();
|
||||
|
||||
SyncNumberFromText();
|
||||
}
|
||||
|
||||
void NumericUpDown::OnEnter()
|
||||
{
|
||||
SyncNumberFromText();
|
||||
SyncTextFromNumber();
|
||||
}
|
||||
Reference in New Issue
Block a user