85 lines
1.8 KiB
C
85 lines
1.8 KiB
C
|
/*
|
||
|
GWEN
|
||
|
Copyright (c) 2010 Facepunch Studios
|
||
|
See license in Gwen.h
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
#ifndef GWEN_CONTROLS_PROPERTIES_H
|
||
|
#define GWEN_CONTROLS_PROPERTIES_H
|
||
|
|
||
|
#include "gwen_base.h"
|
||
|
#include "gwen_label.h"
|
||
|
#include "property/gwen_baseproperty.h"
|
||
|
#include "property/gwen_text.h"
|
||
|
#include "gwen_splitterbar.h"
|
||
|
#include "../gwen.h"
|
||
|
#include "../gwen_skin.h"
|
||
|
|
||
|
|
||
|
namespace Gwen
|
||
|
{
|
||
|
namespace Controls
|
||
|
{
|
||
|
|
||
|
class PropertyRow;
|
||
|
|
||
|
class GWEN_EXPORT Properties : public Base
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
GWEN_CONTROL( Properties, Base );
|
||
|
|
||
|
virtual void PostLayout( Gwen::Skin::Base* skin );
|
||
|
|
||
|
PropertyRow* Add( const TextObject& text, const TextObject& value = "" );
|
||
|
PropertyRow* Add( const TextObject& text, Property::Base* pProp, const TextObject& value = "" );
|
||
|
PropertyRow* Find( const TextObject& text );
|
||
|
|
||
|
virtual int GetSplitWidth();
|
||
|
|
||
|
virtual void Clear();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
virtual void OnSplitterMoved( Controls::Base * control );
|
||
|
|
||
|
Controls::SplitterBar* m_SplitterBar;
|
||
|
|
||
|
};
|
||
|
|
||
|
class GWEN_EXPORT PropertyRow : public Base
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
GWEN_CONTROL( PropertyRow, Base );
|
||
|
|
||
|
virtual Label* GetLabel(){ return m_Label; }
|
||
|
virtual void SetProperty( Property::Base* prop );
|
||
|
virtual Property::Base* GetProperty(){ return m_Property; }
|
||
|
|
||
|
virtual void Layout( Gwen::Skin::Base* skin );
|
||
|
virtual void Render( Gwen::Skin::Base* skin );
|
||
|
|
||
|
virtual bool IsEditing(){ return m_Property && m_Property->IsEditing(); }
|
||
|
virtual bool IsHovered(){ return BaseClass::IsHovered() || (m_Property && m_Property->IsHovered()); }
|
||
|
virtual void OnEditingChanged();
|
||
|
virtual void OnHoverChanged();
|
||
|
|
||
|
Event::Caller onChange;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
void OnPropertyValueChanged( Gwen::Controls::Base* control );
|
||
|
|
||
|
Label* m_Label;
|
||
|
Property::Base* m_Property;
|
||
|
|
||
|
bool m_bLastEditing;
|
||
|
bool m_bLastHover;
|
||
|
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
#endif
|