75 lines
1.4 KiB
C++
75 lines
1.4 KiB
C++
/*
|
|
GWEN
|
|
Copyright (c) 2010 Facepunch Studios
|
|
See license in Gwen.h
|
|
*/
|
|
|
|
|
|
#include "Gwen/Gwen.h"
|
|
#include "Gwen/Controls/TextBox.h"
|
|
#include "Gwen/Skin.h"
|
|
#include "Gwen/Utility.h"
|
|
#include "Gwen/Platform.h"
|
|
|
|
|
|
using namespace Gwen;
|
|
using namespace Gwen::Controls;
|
|
|
|
GWEN_CONTROL_CONSTRUCTOR( TextBoxNumeric )
|
|
{
|
|
SetText( L"0" );
|
|
}
|
|
|
|
bool TextBoxNumeric::IsTextAllowed( const Gwen::UnicodeString& str, int iPos )
|
|
{
|
|
const UnicodeString& strString = GetText();
|
|
|
|
if ( str.length() == 0 )
|
|
return true;
|
|
|
|
for (size_t i=0; i<str.length(); i++)
|
|
{
|
|
if ( str[i] == L'-' )
|
|
{
|
|
// Has to be at the start
|
|
if ( i != 0 || iPos != 0 )
|
|
return false;
|
|
|
|
// Can only be one
|
|
if ( std::count( strString.begin(), strString.end(), L'-' ) > 0 )
|
|
return false;
|
|
|
|
continue;
|
|
}
|
|
|
|
if ( str[i] == L'0' ) continue;
|
|
if ( str[i] == L'1' ) continue;
|
|
if ( str[i] == L'2' ) continue;
|
|
if ( str[i] == L'3' ) continue;
|
|
if ( str[i] == L'4' ) continue;
|
|
if ( str[i] == L'5' ) continue;
|
|
if ( str[i] == L'6' ) continue;
|
|
if ( str[i] == L'7' ) continue;
|
|
if ( str[i] == L'8' ) continue;
|
|
if ( str[i] == L'9' ) continue;
|
|
|
|
if ( str[i] == L'.' )
|
|
{
|
|
// Already a fullstop
|
|
if ( std::count( strString.begin(), strString.end(), L'.' ) > 0 )
|
|
return false;
|
|
|
|
continue;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
float TextBoxNumeric::GetFloatFromText()
|
|
{
|
|
double temp = GwenUtil_WideStringToFloat( GetText().c_str() );
|
|
return temp;
|
|
} |