123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- GWEN
- Copyright (c) 2010 Facepunch Studios
- See license in Gwen.h
- */
- #pragma once
- #ifndef GWEN_CONTROLS_RADIOBUTTON_H
- #define GWEN_CONTROLS_RADIOBUTTON_H
- #include "Gwen/Controls/Base.h"
- #include "Gwen/Controls/Label.h"
- #include "Gwen/Controls/Button.h"
- #include "Gwen/Gwen.h"
- #include "Gwen/Skin.h"
- #include "Gwen/Controls/CheckBox.h"
- #include "Gwen/Controls/LabelClickable.h"
- namespace Gwen
- {
- namespace Controls
- {
- class GWEN_EXPORT RadioButton : public CheckBox
- {
- GWEN_CONTROL( RadioButton, CheckBox );
- virtual void Render( Skin::Base* skin );
- private:
- // From CheckBox
- virtual bool AllowUncheck(){ return false; }
- };
- class GWEN_EXPORT LabeledRadioButton : public Base
- {
- public:
- GWEN_CONTROL_INLINE( LabeledRadioButton, Base )
- {
- SetSize( 200, 19 );
- m_RadioButton = new RadioButton( this );
- m_RadioButton->Dock( Pos::Left );
- m_RadioButton->SetMargin( Margin( 0, 4, 2, 4 ) );
- m_RadioButton->SetTabable( false );
- m_RadioButton->SetKeyboardInputEnabled( false );
- m_Label = new LabelClickable( this );
- m_Label->SetAlignment( Pos::CenterV | Pos::Left );
- m_Label->SetText( "Radio Button" );
- m_Label->Dock( Pos::Fill );
- m_Label->onPress.Add( m_RadioButton, &CheckBox::ReceiveEventPress );
- m_Label->SetTabable( false );
- m_Label->SetKeyboardInputEnabled( false );
- }
- void RenderFocus( Gwen::Skin::Base* skin )
- {
- if ( Gwen::KeyboardFocus != this ) return;
- if ( !IsTabable() ) return;
- skin->DrawKeyboardHighlight( this, GetRenderBounds(), 0 );
- }
- virtual RadioButton* GetRadioButton() { return m_RadioButton; }
- virtual LabelClickable* GetLabel(){ return m_Label; }
- virtual bool OnKeySpace(bool bDown) { if ( bDown ) m_RadioButton->SetChecked( !m_RadioButton->IsChecked() ); return true; }
- virtual void Select(){ m_RadioButton->SetChecked( true ); }
- private:
- RadioButton* m_RadioButton;
- LabelClickable* m_Label;
- };
- }
- }
- #endif
|