OpenWalnut
1.3.1
|
This is the base class and interface for property groups. More...
#include <WPropertyGroupBase.h>
Classes | |
struct | PropertyCreatorAndGroupAdder |
Comfortable template to create a property instance and add it to the group. More... | |
struct | PropertyCreatorAndGroupAdder< WPropertyStructHelper::NOTYPE > |
Specialization which does nothing for the NOTYPE default template parameters of WPropertyStruct. More... |
Public Types | |
typedef std::vector < boost::shared_ptr < WPropertyBase > > | PropertyContainerType |
For shortening: a type defining a shared vector of WSubject pointers. | |
typedef WSharedSequenceContainer < PropertyContainerType > | PropertySharedContainerType |
The alias for a shared container. | |
typedef PropertyContainerType::const_iterator | PropertyConstIterator |
The const iterator type of the container. | |
typedef PropertyContainerType::iterator | PropertyIterator |
The iterator type of the container. | |
typedef boost::shared_ptr < WPropertyGroupBase > | SPtr |
Convenience typedef for a boost::shared_ptr< WPropertyGroupBase >. | |
typedef boost::shared_ptr < const WPropertyGroupBase > | ConstSPtr |
Convenience typedef for a boost::shared_ptr< const WPropertyGroupBase >. | |
![]() | |
typedef boost::shared_ptr < WPropertyBase > | SPtr |
Convenience typedef for a boost::shared_ptr< WPropertyBase > | |
typedef boost::shared_ptr < const WPropertyBase > | ConstSPtr |
Convenience typedef for a boost::shared_ptr< const WPropertyBase > | |
typedef boost::function< void(boost::shared_ptr < WPropertyBase >)> | PropertyChangeNotifierType |
Signal signature emitted during set operations. |
Public Member Functions | |
WPropertyGroupBase (std::string name, std::string description) | |
Constructor. | |
WPropertyGroupBase (const WPropertyGroupBase &from) | |
Copy constructor. | |
virtual | ~WPropertyGroupBase () |
Destructor. | |
virtual bool | existsProperty (std::string name) |
Helper function that finds a property by its name. | |
virtual boost::shared_ptr < WPropertyBase > | getProperty (std::string name) |
Function searches the property. | |
virtual PropertySharedContainerType::ReadTicket | getProperties () const |
Returns a read ticket for read-access to the list of properties. | |
virtual PropertySharedContainerType::ReadTicket | getReadTicket () const |
Returns an read ticket for the properties. | |
virtual boost::shared_ptr < WPropertyBase > | findProperty (std::string name) const |
Searches the property with a given name. | |
![]() | |
WPropertyBase (std::string name, std::string description) | |
Create an empty named property. | |
WPropertyBase (const WPropertyBase &from) | |
Copy constructor. | |
virtual | ~WPropertyBase () |
Destructor. | |
virtual boost::shared_ptr < WPropertyBase > | clone ()=0 |
This method clones a property and returns the clone. | |
std::string | getName () const |
Gets the name of the class. | |
std::string | getDescription () const |
Gets the description of the property. | |
bool | isHidden () const |
Determines whether the property is hidden or not. | |
void | setHidden (bool hidden=true) |
Sets the property hidden. | |
virtual PROPERTY_TYPE | getType () const |
Gets the real WPropertyVariable type of this instance. | |
virtual PROPERTY_PURPOSE | getPurpose () const |
Gets the purpose of a property. | |
virtual void | setPurpose (PROPERTY_PURPOSE purpose) |
Sets the purpose of the property. | |
virtual bool | setAsString (std::string value)=0 |
This methods allows properties to be set by a string value. | |
virtual std::string | getAsString ()=0 |
Returns the current value as a string. | |
virtual boost::shared_ptr < WCondition > | getUpdateCondition () const |
This method returns a condition which gets fired whenever the property changes somehow. | |
virtual bool | set (boost::shared_ptr< WPropertyBase > value, bool recommendedOnly=false)=0 |
Sets the value from the specified property to this one. | |
WPropInt | toPropInt () |
Helper converts this instance to its native type. | |
WPropDouble | toPropDouble () |
Helper converts this instance to its native type. | |
WPropBool | toPropBool () |
Helper converts this instance to its native type. | |
WPropString | toPropString () |
Helper converts this instance to its native type. | |
WPropFilename | toPropFilename () |
Helper converts this instance to its native type. | |
WPropSelection | toPropSelection () |
Helper converts this instance to its native type. | |
WPropColor | toPropColor () |
Helper converts this instance to its native type. | |
WPropPosition | toPropPosition () |
Helper converts this instance to its native type. | |
WPropTrigger | toPropTrigger () |
Helper converts this instance to its native type. | |
WPropMatrix4X4 | toPropMatrix4X4 () |
Helper converts this instance to its native type. | |
WPropTransferFunction | toPropTransferFunction () |
Helper converts this instance to its native type. | |
WPropGroup | toPropGroup () |
Helper converts this instance to its native type. | |
boost::shared_ptr < WPropertyGroupBase > | toPropGroupBase () |
Convert the property to a WPropertyGroupBase. | |
template<typename T > | |
boost::shared_ptr < WPropertyVariable< T > > | toPropertyVariable () |
Helper converts this instance to an arbitrary type. |
Protected Member Functions | |
virtual boost::shared_ptr < WPropertyBase > | findProperty (const WPropertyGroupBase *const props, std::string name) const |
Helping function to find a property inside a specific group. | |
bool | propNamePredicate (boost::shared_ptr< WPropertyBase > prop1, boost::shared_ptr< WPropertyBase > prop2) const |
Compares the names of two properties and returns true if they are equal. | |
void | addArbitraryProperty (WPropertyBase::SPtr prop) |
Insert the specified property into the list. | |
![]() | |
virtual void | updateType () |
Calculates the type of the property. |
Protected Attributes | |
PropertySharedContainerType | m_properties |
The set of proerties. | |
![]() | |
std::string | m_name |
Name of the property. | |
std::string | m_description |
Description of the property. | |
bool | m_hidden |
Flag denoting whether the property is hidden or not. | |
PROPERTY_TYPE | m_type |
Type of the PropertyVariable instance. | |
PROPERTY_PURPOSE | m_purpose |
The purpose of this property. | |
PropertyChangeSignalType | signal_PropertyChange |
Signal getting fired whenever the property changes. | |
boost::shared_ptr< WConditionSet > | m_updateCondition |
Condition notified whenever something changes. |
Additional Inherited Members | |
![]() | |
typedef boost::signals2::signal< void(boost::shared_ptr < WPropertyBase >)> | PropertyChangeSignalType |
Signal used for firing change signals. |
This is the base class and interface for property groups.
This class itself is abstract and derived from WPropertyBase. So if you create a group of properties, this ensures that your group is a property itself. This interface defines no way to add, remove or edit the property list itself. This allows the deriving class to prohibit modifications and to provide a custom interface, or even model-controller like implementations.
Another advantage is, that the GUI implementations which support WPropertyGroupBase can display your custom properties directly.
Definition at line 53 of file WPropertyGroupBase.h.
typedef boost::shared_ptr< const WPropertyGroupBase > WPropertyGroupBase::ConstSPtr |
Convenience typedef for a boost::shared_ptr< const WPropertyGroupBase >.
Definition at line 84 of file WPropertyGroupBase.h.
typedef PropertyContainerType::const_iterator WPropertyGroupBase::PropertyConstIterator |
The const iterator type of the container.
Definition at line 69 of file WPropertyGroupBase.h.
typedef std::vector< boost::shared_ptr< WPropertyBase > > WPropertyGroupBase::PropertyContainerType |
For shortening: a type defining a shared vector of WSubject pointers.
Definition at line 59 of file WPropertyGroupBase.h.
typedef PropertyContainerType::iterator WPropertyGroupBase::PropertyIterator |
The iterator type of the container.
Definition at line 74 of file WPropertyGroupBase.h.
typedef WSharedSequenceContainer< PropertyContainerType > WPropertyGroupBase::PropertySharedContainerType |
The alias for a shared container.
Definition at line 64 of file WPropertyGroupBase.h.
typedef boost::shared_ptr< WPropertyGroupBase > WPropertyGroupBase::SPtr |
Convenience typedef for a boost::shared_ptr< WPropertyGroupBase >.
Definition at line 79 of file WPropertyGroupBase.h.
WPropertyGroupBase::WPropertyGroupBase | ( | std::string | name, |
std::string | description | ||
) |
Constructor.
Creates an empty list of properties.
name | the name of the property group. The GUI is using this name for naming the tabs/group boxes |
description | the description of the group. |
Definition at line 42 of file WPropertyGroupBase.cpp.
References WSharedObject< T >::getChangeCondition(), m_properties, and WPropertyBase::m_updateCondition.
|
explicit |
Copy constructor.
Creates a deep copy of this property. As boost::signals2 and condition variables are non-copyable, new instances get created. The subscriptions to a signal are LOST as well as all listeners to a condition. The conditions you can grab using getValueChangeConditon and getCondition are not the same as in the original! This is because the class corresponds to the observer/observable pattern. You won't expect a clone to fire a condition if a original flag is changed (which after cloning is completely decoupled from the clone).
from | the instance to copy. |
Definition at line 54 of file WPropertyGroupBase.cpp.
References addArbitraryProperty(), WSharedObject< T >::getChangeCondition(), WSharedObject< T >::getReadTicket(), m_properties, and WPropertyBase::m_updateCondition.
|
virtual |
Destructor.
Definition at line 50 of file WPropertyGroupBase.cpp.
|
protected |
Insert the specified property into the list.
This method is protected. It is a convenience method for deriving classes to add properties without the need to update several conditions and similar.
prop | the property to add |
Definition at line 156 of file WPropertyGroupBase.cpp.
References WPropertyBase::getName(), WPropertyBase::getPurpose(), WSharedObject< T >::getWriteTicket(), m_properties, WPropertyBase::m_updateCondition, and propNamePredicate().
Referenced by WPropertyGroup::addProperty(), WPropertyGroupBase::PropertyCreatorAndGroupAdder< PropertyType >::createAndAdd(), and WPropertyGroupBase().
|
virtual |
Helper function that finds a property by its name.
Use this method to find out whether the property exists or not, since findProperty throws an exception.
name | name of searched property. |
Definition at line 140 of file WPropertyGroupBase.cpp.
References findProperty().
|
virtual |
Searches the property with a given name.
It does not throw any exception. It simply returns NULL if it can't be found.
name | the name of the property to search |
Definition at line 103 of file WPropertyGroupBase.cpp.
References WPVBaseTypes::isPropertyGroup(), WPropertyBase::toPropGroupBase(), and string_utils::toString().
Referenced by existsProperty(), getProperty(), and WPropertyGroup::set().
|
protectedvirtual |
Helping function to find a property inside a specific group.
It does not recursively find properties nested inside other property groups.
props | the group to search in. This is not a shared pointer since it is not needed. It simply can't happen that it is freed during findProperty as it is contained in this or a nested properties instance. |
name | the name of the property inside THIS group. |
Definition at line 82 of file WPropertyGroupBase.cpp.
References WSharedObject< T >::getReadTicket(), and m_properties.
|
virtual |
Returns a read ticket for read-access to the list of properties.
Definition at line 194 of file WPropertyGroupBase.cpp.
References WSharedObject< T >::getReadTicket(), and m_properties.
|
virtual |
Function searches the property.
If it does not exists, it throws an exception.
name | the name of the property |
Definition at line 145 of file WPropertyGroupBase.cpp.
References findProperty().
|
virtual |
Returns an read ticket for the properties.
This, and only this, has to be used for external iteration of properties.
Definition at line 199 of file WPropertyGroupBase.cpp.
References WSharedObject< T >::getReadTicket(), and m_properties.
Referenced by WPropertyGroup::set().
|
protected |
Compares the names of two properties and returns true if they are equal.
prop1 | the first prop. |
prop2 | the second prop. |
Definition at line 77 of file WPropertyGroupBase.cpp.
Referenced by addArbitraryProperty().
|
protected |
The set of proerties.
This uses the operators ==,<,> WProperty to determine equalness.
Definition at line 178 of file WPropertyGroupBase.h.
Referenced by addArbitraryProperty(), WPropertyGroup::clear(), findProperty(), WPropertyList< T >::getAsString(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getAsString(), getProperties(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty(), getReadTicket(), WPropertyGroup::removeProperty(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::set(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::setAsString(), and WPropertyGroupBase().