bullet3/btgui/Gwen/Controls/RadioButtonController.cpp
2013-03-12 23:52:31 -07:00

74 lines
1.8 KiB
C++

/*
GWEN
Copyright (c) 2010 Facepunch Studios
See license in Gwen.h
*/
#include "Gwen/Controls/RadioButtonController.h"
#include "Gwen/Controls/RadioButton.h"
#include "Gwen/Utility.h"
using namespace Gwen;
using namespace Gwen::Controls;
GWEN_CONTROL_CONSTRUCTOR( RadioButtonController )
{
m_Selected = NULL;
SetTabable( false );
SetKeyboardInputEnabled( false );
}
void RadioButtonController::OnRadioClicked( Gwen::Controls::Base* pFromPanel )
{
RadioButton* pCheckedRadioButton = pFromPanel->DynamicCastRadioButton();
//Iterate through all other buttons and set them to false;
for (Base::List::iterator iter = Children.begin(); iter != Children.end(); ++iter)
{
Base* pChild = *iter;
LabeledRadioButton* pLRB = pChild->DynamicCastLabeledRadioButton();
if ( pLRB )
{
RadioButton* pChildRadioButton = pLRB->GetRadioButton();
if ( pChildRadioButton == pCheckedRadioButton )
{
m_Selected = pLRB;
}
else
{
pLRB->GetRadioButton()->SetChecked( false );
}
}
}
OnChange();
}
void RadioButtonController::OnChange()
{
onSelectionChange.Call( this );
}
LabeledRadioButton* RadioButtonController::AddOption( const Gwen::String& strText, const Gwen::String& strOptionName )
{
return AddOption( Gwen::Utility::StringToUnicode( strText ), strOptionName );
}
LabeledRadioButton* RadioButtonController::AddOption( const Gwen::UnicodeString& strText, const Gwen::String& strOptionName )
{
LabeledRadioButton* lrb = new LabeledRadioButton( this );
lrb->SetName( strOptionName );
lrb->GetLabel()->SetText( strText );
lrb->GetRadioButton()->onChecked.Add( this, &RadioButtonController::OnRadioClicked );
lrb->Dock( Pos::Top );
lrb->SetMargin( Margin( 0, 1, 0, 1 ) );
lrb->SetKeyboardInputEnabled( false );
lrb->SetTabable( false );
Invalidate();
return lrb;
}