Gered
c5cdddbeaa
current versions of all of my basic framework sources, build configurations/scripts, and supporting assets
82 lines
1.7 KiB
C++
82 lines
1.7 KiB
C++
/*
|
|
GWEN
|
|
Copyright (c) 2010 Facepunch Studios
|
|
See license in Gwen.h
|
|
*/
|
|
|
|
#pragma once
|
|
#ifndef GWEN_CONTROLS_CHECKBOX_H
|
|
#define GWEN_CONTROLS_CHECKBOX_H
|
|
|
|
#include "gwen_base.h"
|
|
#include "gwen_button.h"
|
|
#include "../gwen.h"
|
|
#include "../gwen_skin.h"
|
|
#include "gwen_labelclickable.h"
|
|
|
|
namespace Gwen
|
|
{
|
|
namespace Controls
|
|
{
|
|
|
|
class GWEN_EXPORT CheckBox : public Button
|
|
{
|
|
public:
|
|
|
|
GWEN_CONTROL( CheckBox, Button );
|
|
|
|
virtual void Render( Skin::Base* skin );
|
|
virtual void OnPress();
|
|
|
|
virtual void SetChecked( bool Checked );
|
|
virtual void Toggle() { SetChecked( !IsChecked() ); }
|
|
virtual bool IsChecked() { return m_bChecked; }
|
|
|
|
Gwen::Event::Caller onChecked;
|
|
Gwen::Event::Caller onUnChecked;
|
|
Gwen::Event::Caller onCheckChanged;
|
|
|
|
private:
|
|
|
|
// For derived controls
|
|
virtual bool AllowUncheck(){ return true; }
|
|
|
|
void OnCheckStatusChanged();
|
|
|
|
bool m_bChecked;
|
|
};
|
|
|
|
class GWEN_EXPORT CheckBoxWithLabel : public Base
|
|
{
|
|
public:
|
|
|
|
GWEN_CONTROL_INLINE( CheckBoxWithLabel, Base )
|
|
{
|
|
SetSize( 200, 19 );
|
|
|
|
m_Checkbox = new CheckBox( this );
|
|
m_Checkbox->Dock( Pos::Left );
|
|
m_Checkbox->SetMargin( Margin( 0, 2, 2, 2 ) );
|
|
m_Checkbox->SetTabable( false );
|
|
|
|
m_Label = new LabelClickable( this );
|
|
m_Label->Dock( Pos::Fill );
|
|
m_Label->onPress.Add( m_Checkbox, &CheckBox::OnPress );
|
|
m_Label->SetTabable( false );
|
|
|
|
SetTabable( false );
|
|
}
|
|
|
|
virtual CheckBox* Checkbox() { return m_Checkbox; }
|
|
virtual LabelClickable* Label() { return m_Label; }
|
|
virtual bool OnKeySpace( bool bDown ) { if ( !bDown ) m_Checkbox->SetChecked( !m_Checkbox->IsChecked() ); return true; }
|
|
|
|
private:
|
|
|
|
CheckBox* m_Checkbox;
|
|
LabelClickable* m_Label;
|
|
};
|
|
}
|
|
}
|
|
#endif
|