Base class for objects that include member variables with automatic IO. More...
#include <Valuable/Node.hpp>
Public Types | |
| typedef container::const_iterator | const_iterator |
|
typedef Radiant::ArrayMap < QByteArray, Attribute * > | container |
| Container for attributes, key is the attribute name. | |
| typedef container::iterator | iterator |
| Iterator for the container. | |
| typedef std::function< void(Radiant::BinaryData &)> | ListenerFuncBd |
| Listener function type that takes a BinaryData reference as a parameter, similar to eventProcess. | |
| typedef std::function< void()> | ListenerFuncVoid |
| Default listener function type. | |
| enum | ListenerType { DIRECT =1, AFTER_UPDATE =2, AFTER_UPDATE_ONCE =4 } |
| Types of event listeners. More... | |
| typedef int64_t | Uuid |
| Unique identifier type. | |
Public Types inherited from Valuable::Attribute | |
| enum | Layer { DEFAULT = 0, STYLE, USER, STYLE_IMPORTANT, LAYER_COUNT, LAYER_CURRENT } |
| Attribute has multiple independent attribute values on LAYER_COUNT different layers. More... | |
| typedef std::function< void()> | ListenerFunc |
| Callback function type in the listener API. | |
| enum | ListenerRole { DELETE_ROLE = 1 << 0, CHANGE_ROLE = 1 << 1, ALL_ROLES = (CHANGE_ROLE << 1) -1 } |
| Different listener roles, used when adding a new listener. | |
| enum | ValueUnit { VU_UNKNOWN, VU_PXS, VU_PERCENTAGE, VU_EMS, VU_EXS } |
| Units of a value. More... | |
Valuable Attributes | |
| Node::Uuid | id = generateId() |
| Returns the unique id. More... | |
Public Member Functions | |
| bool | acceptsEvent (const QByteArray &messageId) const |
| Returns true if this object accepts event 'id' in eventProcess. | |
| bool | addAttribute (Attribute *const attribute) |
| Adds a new Attribute to the list of attribute objects. More... | |
| bool | addAttribute (const QByteArray &name, Attribute *const attribute) |
| Adds a new Attribute to the list of attribute objects. | |
| template<typename Widget > | |
| bool | addAttribute (const QByteArray &name, const Radiant::IntrusivePtr< Widget > &attribute) |
| Adds a new Attribute to the list of attribute objects. More... | |
| long | addListener (const QByteArray &attribute, v8::Persistent< v8::Function > func, int role=Attribute::CHANGE_ROLE) |
| Add a JavaScript attribute listener to attribute belonging this Node. More... | |
| virtual Attribute * | attribute (const QByteArray &name) const |
| Gets an Attribute with the given name. More... | |
| template<typename T > | |
| AttributeT< T > * | attribute (const QByteArray &name) const |
| Gets an Attribute with the given name. More... | |
| const container & | attributes () const |
| void | clearValues (Layer layer) |
| Clears all Attribute values of the given layer. More... | |
| void | debugDump () |
| Prints the contents of this Attribute to the terminal. | |
| virtual bool | deserialize (const ArchiveElement &element) |
| De-serializes this object (and its children) from a DOM node. | |
| void | eventAddDeprecated (const QByteArray &deprecatedId, const QByteArray &newId) |
| Register a deprecated event that is automatically converted to new event id and a warning is issued when it is used. More... | |
| void | eventAddIn (const QByteArray &messageId) |
| Registers a new event that this class handles in eventProcess. | |
| template<typename Widget > | |
| long | eventAddListener (const QByteArray &eventId, const QByteArray &messageId, Radiant::IntrusivePtr< Widget > &listener, ListenerType listenerType=DIRECT, const Radiant::BinaryData *defaultData=0) |
| Add an event listener to this object. More... | |
| long | eventAddListener (const QByteArray &eventId, const QByteArray &messageId, Valuable::Node *listener, ListenerType listenerType=DIRECT, const Radiant::BinaryData *defaultData=0) |
| Add an event listener to this object. More... | |
| long | eventAddListener (const QByteArray &eventId, ListenerFuncVoid func, ListenerType listenerType=DIRECT) |
| Add an event listener to this object. More... | |
| long | eventAddListener (const QByteArray &eventId, Node *dstNode, ListenerFuncVoid func, ListenerType listenerType=DIRECT) |
| long | eventAddListenerBd (const QByteArray &eventId, Node *dstNode, ListenerFuncBd func, ListenerType listenerType=DIRECT) |
| long | eventAddListenerBd (const QByteArray &eventId, ListenerFuncBd func, ListenerType listenerType=DIRECT) |
| Add an event listener to this object. More... | |
| void | eventAddOut (const QByteArray &eventId) |
| Registers a new event this class can send with eventSend. | |
| const QSet< QByteArray > & | eventInNames () const |
| Returns set of all registered IN events. | |
| unsigned | eventListenerCount () const |
| Returns the number of event listeners. | |
| const QSet< QByteArray > & | eventOutNames () const |
| Returns set of all registered OUT events. | |
| void | eventPassingEnable (bool enable) |
| Control whether events are passed. | |
| template<typename Widget > | |
| int | eventRemoveListener (Radiant::IntrusivePtr< Widget > &listener) |
| Removes all events from this object to given listener. More... | |
| template<typename Widget > | |
| int | eventRemoveListener (const QByteArray &eventId=QByteArray(), const QByteArray &messageId=QByteArray(), Radiant::IntrusivePtr< Widget > &listener=Radiant::IntrusivePtr< Widget >()) |
| Removes events from this object that match the parameters. More... | |
| int | eventRemoveListener (const QByteArray &eventId=QByteArray(), const QByteArray &messageId=QByteArray(), Valuable::Node *listener=0) |
| Removes event listeners from this object. More... | |
| int | eventRemoveListener (Valuable::Node *listener) |
| Removes all events from this object to given listener. More... | |
| bool | eventRemoveListener (long listenerId) |
| Removes event listener with given id. More... | |
| void | eventSend (const QByteArray &eventId, Radiant::BinaryData &bd) |
| Sends an event and bd to all listeners on this eventId. | |
| void | eventSend (const QByteArray &eventId) |
| Sends an event to all listeners on this eventId. | |
| template<typename P1 > | |
| void | eventSend (const QByteArray &eventId, const P1 &p1) |
| Sends an event to all listeners on this eventId. More... | |
| template<typename P1 , typename P2 > | |
| void | eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2) |
| Sends an event to all listeners on this eventId. More... | |
| template<typename P1 , typename P2 , typename P3 > | |
| void | eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3) |
| Sends an event to all listeners on this eventId. More... | |
| template<typename P1 , typename P2 , typename P3 , typename P4 > | |
| void | eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4) |
| Sends an event to all listeners on this eventId. More... | |
| template<typename P1 , typename P2 , typename P3 , typename P4 , typename P5 > | |
| void | eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5) |
| Sends an event to all listeners on this eventId. More... | |
| unsigned | eventSourceCount () const |
| Returns the number of event sources. | |
| Uuid | id () const |
| Returns the unique id. | |
| bool | isBeingDestroyed () const |
| Returns true if we are about to delete this object. More... | |
| bool | loadFromFileXML (const QString &filename) |
| Reads this object (and its children) from an XML file. | |
| bool | loadFromMemoryXML (const QByteArray &buffer) |
| Reads this object (and its children) from a memory buffer. | |
| Node (Node *host, const QByteArray &name="", bool transit=false) | |
| Constructs a new Node and adds it under the given host. More... | |
| Node (Node &&node) | |
| Moves a node, including all its attributes, events etc. More... | |
| Node & | operator= (Node &&node) |
| Moves a node, replacing this. More... | |
| virtual bool | readElement (const ArchiveElement &element) |
| Handles a serialization element that lacks automatic handlers. More... | |
| void | removeAttribute (Attribute *const attribute) |
| Removes an Attribute from the list of attribute objects. | |
| bool | saveToFileXML (const QString &filename, unsigned int opts=SerializationOptions::DEFAULTS) const |
| Saves this object (and its children) to an XML file. | |
| bool | saveToMemoryXML (QByteArray &buffer, unsigned int opts=SerializationOptions::DEFAULTS) const |
| Saves this object (and its children) to binary data buffer. | |
| virtual ArchiveElement | serialize (Archive &doc) const |
| Serializes this object (and its children) to a DOM node. | |
| virtual void | setAsDefaults () |
| Sets the current USER attribute value as the default value and clears the USER value. More... | |
| void | setId (Uuid newId) |
| Sets the unique id. More... | |
| template<class T > | |
| bool | setValue (const QByteArray &name, const T &v) |
| Uses a query string to find a Attribute, and sets a new value to that if found. More... | |
| bool | setValue (const QByteArray &name, v8::Handle< v8::Value > v) |
| Set attribute value from JavaScript. More... | |
Public Member Functions inherited from Valuable::Attribute | |
| long | addListener (ListenerFunc func, int role=CHANGE_ROLE) |
| Adds a listener that is invoked whenever the value is changed. More... | |
| long | addListener (Node *listener, ListenerFunc func, int role=CHANGE_ROLE) |
| Adds a listener that is invoked whenever the value is changed. More... | |
| long | addListener (v8::Persistent< v8::Function > func, int role=CHANGE_ROLE) |
| Adds a JavaScript listener that is invoked whenever the value is changed. More... | |
| virtual float | asFloat (bool *const ok=0, Layer layer=LAYER_CURRENT) const |
| Converts the value object in a floating point number. More... | |
| virtual int | asInt (bool *const ok=0, Layer layer=LAYER_CURRENT) const |
| Converts the value object in an integer. More... | |
| virtual QString | asString (bool *const ok=0, Layer layer=LAYER_CURRENT) const |
| Converts the value object to a string. More... | |
| Attribute (const Attribute &o) | |
| Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More... | |
| Attribute (Node *host, const QByteArray &name, bool transit=false) | |
| Constructs a new value object and attaches it to its host. More... | |
| virtual void | clearValue (Layer layer) |
| Unsets the value from a specific layer. More... | |
| virtual void | emitChange () |
| Invokes the change valueChanged function of all listeners. | |
| virtual void | eventProcess (const QByteArray &id, Radiant::BinaryData &data) |
| Process a message. More... | |
| void | eventProcessFloat (const char *id, float v) |
| Utility function for sending a float message to the object. | |
| void | eventProcessInt (const char *id, int v) |
| Utility function for sending an int message to the object. | |
| void | eventProcessString (const char *id, const QString &str) |
| Utility function for sending string message to the object. | |
| void | eventProcessString (const char *id, const char *str) |
| Utility function for sending string message to the object. | |
| void | eventProcessVector2 (const char *id, Nimble::Vector2) |
| Utility function for sending a Nimble::Vector2f message to the object. | |
| void | eventProcessVector3 (const char *id, Nimble::Vector3) |
| Utility function for sending a Vector3 message to the object. | |
| void | eventProcessVector4 (const char *id, Nimble::Vector4) |
| Utility function for sending a Vector4 message to the object. | |
| virtual bool | handleShorthand (const Valuable::StyleValue &value, Radiant::ArrayMap< Valuable::Attribute *, Valuable::StyleValue > &expanded) |
| If attribute supports shorthand properties, this should be used to parse those. More... | |
| Node * | host () const |
| The host object of the value object (is any). More... | |
| virtual bool | isChanged () const |
| virtual bool | isValueDefinedOnLayer (Layer layer) const |
| Check if the given layer defines a value. More... | |
| bool | layerForSerialization (SerializationOptions flags, Layer &layer) const |
| const QByteArray & | name () const |
| Returns the name of the object. | |
| const Attribute & | operator= (const Attribute &) |
| Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More... | |
| Attribute * | ownerShorthand () const |
| QByteArray | path () const |
| Returns the path (separated by '/'s) from the root. | |
| void | removeHost () |
| Sets the host pointer to zero and removes this object from the host. More... | |
| bool | removeListener (Node *listener, int role=ALL_ROLES) |
| Removes a listener from the listener list. More... | |
| bool | removeListener (long id) |
| Removes a listener from the listener list. More... | |
| void | removeListeners (int role=ALL_ROLES) |
| Removes listeners from the listener list. | |
| virtual bool | set (float v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN) |
| Sets the value of the object. | |
| virtual bool | set (int v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN) |
| Sets the value of the object. | |
| virtual bool | set (const QString &v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN) |
| Sets the value of the object. | |
| virtual bool | set (const Nimble::Vector2f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >()) |
| Sets the value of the object. | |
| virtual bool | set (const Nimble::Vector3f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >()) |
| Sets the value of the object. | |
| virtual bool | set (const Nimble::Vector4f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >()) |
| Sets the value of the object. | |
| virtual bool | set (const StyleValue &value, Layer layer=USER) |
| Sets the value of the object. | |
| void | setName (const QByteArray &s) |
| Sets the name of the object. | |
| void | setOwnerShorthand (Attribute *owner) |
| virtual QByteArray | type () const |
| Get the type id of the attribute. More... | |
Public Member Functions inherited from Valuable::Serializable | |
| virtual bool | deserializeXML (const DOMElement &element) |
| Deserializes (reads) this object from an XML element. More... | |
| bool | isSerializable () const |
| void | setSerializable (bool v) |
Static Public Member Functions | |
| static bool | copyValues (const Node &from, Node &to) |
| Copies attribute values from one node to another. More... | |
| static void | disableQueue () |
| Disables all AFTER_UPDATE event processing, no new events will be accepted and the current queue will be cleared. More... | |
| static Uuid | generateId () |
| Generates a unique identifier. More... | |
| static void | invokeAfterUpdate (ListenerFuncVoid function) |
| Queue function to be called in the main thread after the next update() More... | |
| static int | processQueue () |
| Triggers any pending AFTER_UPDATE-events. More... | |
| static void | reEnableQueue () |
| Enables queue after calling disableQueue. More... | |
| static void | setFatalOnEventMismatch (bool haltApplication) |
| Controls what to do when an event mismatch is detected The default behavior is to output a warning to the terminal (haltApplication = false). More... | |
Protected Member Functions | |
| virtual void | attributeAdded (Attribute *attribute) |
| This is called when new attribute is added to Node. More... | |
| virtual void | attributeRemoved (Attribute *attribute) |
| This is called when attribute is removed from Node. More... | |
| Node * | sender () |
| Get the sender of the event, only valid in DIRECT events. More... | |
| void | setBeingDestroyed () |
| Sets 'isBeginDestroyed' flag to true and removes all event listeners to this object. More... | |
Protected Member Functions inherited from Valuable::Attribute | |
| virtual void | emitDelete () |
| Invokes the change valueDeleted function of all listeners. | |
Friends | |
| class | Attribute |
Base class for objects that include member variables with automatic IO.
This base class has a list of Valuable::Attribute child objects (aka member variables) that are named with unique string.
Deleting the child objects is the responsibility of the inherited classes, Node simply maintains a list of children.
| enum Valuable::Node::ListenerType |
Types of event listeners.
| Valuable::Node::Node | ( | Node * | host, |
| const QByteArray & | name = "", |
||
| bool | transit = false |
||
| ) |
Constructs a new Node and adds it under the given host.
| host | Host of this node. Parent in node-hierarchy |
| name | Name of this object. |
| transit | Should the object changes be transmitted. |
| Valuable::Node::Node | ( | Node && | node | ) |
Moves a node, including all its attributes, events etc.
| node | node to move |
| bool Valuable::Node::addAttribute | ( | Attribute *const | attribute | ) |
Adds a new Attribute to the list of attribute objects.
Copies the name of the attribute from the given object. After successful adding of attribute to node, the node handle memory management of attribute.
| attribute | Attribute to be added |
|
inline |
Adds a new Attribute to the list of attribute objects.
Copies the name of the attribute from the given object. After successful adding of attribute to node, the node handle memory management of attribute.
| attribute | Attribute to be added |
| long Valuable::Node::addListener | ( | const QByteArray & | attribute, |
| v8::Persistent< v8::Function > | func, | ||
| int | role = Attribute::CHANGE_ROLE |
||
| ) |
Add a JavaScript attribute listener to attribute belonging this Node.
| attribute | Attribute name |
| func | JavaScript function to call whenever attribute is changed/deleted |
| role | when should the listener function be called |
|
virtual |
Gets an Attribute with the given name.
| name | Attribute name to search for |
Reimplemented from Valuable::Attribute.
|
inlinevirtual |
Gets an Attribute with the given name.
| name | Attribute name to search for |
Reimplemented from Valuable::Attribute.
|
protectedvirtual |
This is called when new attribute is added to Node.
| attribute | added attribute |
|
protectedvirtual |
This is called when attribute is removed from Node.
| attribute | removed attribute |
|
inline |
| void Valuable::Node::clearValues | ( | Layer | layer | ) |
Clears all Attribute values of the given layer.
| layer | layer to clear |
Copies attribute values from one node to another.
| from | source node |
| to | target node |
|
static |
Disables all AFTER_UPDATE event processing, no new events will be accepted and the current queue will be cleared.
| void Valuable::Node::eventAddDeprecated | ( | const QByteArray & | deprecatedId, |
| const QByteArray & | newId | ||
| ) |
Register a deprecated event that is automatically converted to new event id and a warning is issued when it is used.
| deprecatedId | deprecated event id |
| newId | replacing event id |
|
inline |
Add an event listener to this object.
This function is part of the event passing framework. After calling this, listener will get the messages with id messageId whenever this object has events with eventId. This function can fail if the Node is being destroyed while calling this function.
| eventId | the event id to match when in the eventSend. Corresponds to the first parameter in eventSend |
| messageId | the event id to use when delivering the event to listener. This is the first parameter in eventProcess |
| listener | the listening widget. Receives events and handles them in eventProcess -function |
| listenerType | defines when to send events to listener |
| defaultData | the default binary data to be used when delivering the message, used only if eventSend doesn't include BinaryData |
| long Valuable::Node::eventAddListener | ( | const QByteArray & | eventId, |
| const QByteArray & | messageId, | ||
| Valuable::Node * | listener, | ||
| ListenerType | listenerType = DIRECT, |
||
| const Radiant::BinaryData * | defaultData = 0 |
||
| ) |
Add an event listener to this object.
This function is part of the event passing framework. After calling this, listener will get the messages with id messageId whenever this object has events with eventId. This function can fail if the Node is being destroyed while calling this function.
| eventId | the event id to match when in the eventSend. Corresponds to the first parameter in eventSend |
| messageId | the event id to use when delivering the event to listener. This is the first parameter in eventProcess |
| listener | the listening object. Receives events and handles them in eventProcess -function |
| listenerType | defines when to send events to listener |
| defaultData | the default binary data to be used when delivering the message, used only if eventSend doesn't include BinaryData |
| long Valuable::Node::eventAddListener | ( | const QByteArray & | eventId, |
| ListenerFuncVoid | func, | ||
| ListenerType | listenerType = DIRECT |
||
| ) |
Add an event listener to this object.
This function is part of the event passing framework. After calling this, func will be called whenever this object has events with eventId. This function can fail if the Node is being destroyed while calling this function.
| eventId | the event id to match when in the eventSend. Corresponds to the first parameter in eventSend |
| func | the listener callback |
| listenerType | defines when to call the callback |
| long Valuable::Node::eventAddListenerBd | ( | const QByteArray & | eventId, |
| ListenerFuncBd | func, | ||
| ListenerType | listenerType = DIRECT |
||
| ) |
Add an event listener to this object.
This function is part of the event passing framework. After calling this, func will be called whenever this object has events with eventId. This function can fail if the Node is being destroyed while calling this function.
| eventId | the event id to match when in the eventSend. Corresponds to the first parameter in eventSend |
| func | the listener callback that will get event BinaryData as a parameter |
| listenerType | defines when to call the callback |
|
inline |
Removes all events from this object to given listener.
| listener | event listener |
|
inline |
Removes events from this object that match the parameters.
| eventId | event id or null QByteArray to match all event ids |
| messageId | message id or null QByteArray to match all message ids |
| listener | event listener or nullptr to match all listeners |
| int Valuable::Node::eventRemoveListener | ( | const QByteArray & | eventId = QByteArray(), |
| const QByteArray & | messageId = QByteArray(), |
||
| Valuable::Node * | listener = 0 |
||
| ) |
Removes event listeners from this object.
| eventId | The name of the originating event that should be cleared. If this parameter is null (QByteArray()), then all originating events are matched. |
| messageId | The name of of the destination event that should be cleared. If this parameter is null (QByteArray()), then all destination events are matched. |
| listener | The target object for which the events should be cleared. If this parameter is null, then all objects are matched. |
|
inline |
Removes all events from this object to given listener.
| listener | event listener |
| bool Valuable::Node::eventRemoveListener | ( | long | listenerId | ) |
Removes event listener with given id.
|
inline |
Sends an event to all listeners on this eventId.
Builds Radiant::BinaryData automatically based on the function parameters
| eventId | event id |
| p1 | event parameter |
|
inline |
Sends an event to all listeners on this eventId.
Builds Radiant::BinaryData automatically based on the function parameters
| eventId | event id |
| p1,p2 | event parameters |
|
inline |
Sends an event to all listeners on this eventId.
Builds Radiant::BinaryData automatically based on the function parameters
| eventId | event id |
| p1,p2,p3 | event parameters |
|
inline |
Sends an event to all listeners on this eventId.
Builds Radiant::BinaryData automatically based on the function parameters
| eventId | event id |
| p1,p2,p3,p4 | event parameters |
|
inline |
Sends an event to all listeners on this eventId.
Builds Radiant::BinaryData automatically based on the function parameters
| eventId | event id |
| p1,p2,p3,p4,p5 | event parameters |
|
static |
Generates a unique identifier.
|
static |
Queue function to be called in the main thread after the next update()
| function | function to be called |
|
inline |
Returns true if we are about to delete this object.
This flag needs to be set manually using setBeginDestroyed, not all classes inheriting from this might set it. If Node is being destroyed, it won't receive any events. You also can't set any new event listeners to it.
Moves a node, replacing this.
| node | node to move |
|
static |
Triggers any pending AFTER_UPDATE-events.
This is called automatically from MultiWidgets::Application every frame. If you don't have running application instance, or if you want to block main thread for a longer period of time, this should be called periodically manually to make sure all events are dispatched.
|
virtual |
Handles a serialization element that lacks automatic handlers.
| element | The element to be deserialized |
Reimplemented in Luminous::MultiHead::Area.
|
static |
Enables queue after calling disableQueue.
Does nothing if the queue is already enabled.
|
inlineprotected |
Get the sender of the event, only valid in DIRECT events.
|
virtual |
Sets the current USER attribute value as the default value and clears the USER value.
Reimplemented from Valuable::Attribute.
|
protected |
Sets 'isBeginDestroyed' flag to true and removes all event listeners to this object.
This is set at least in Widget::preDestroy and Operator::~Operator.
|
static |
Controls what to do when an event mismatch is detected The default behavior is to output a warning to the terminal (haltApplication = false).
The application can also be stopped by calling Radiant::fatal (haltApplication = true).
| void Node::setId | ( | Uuid | newId | ) |
|
inline |
Uses a query string to find a Attribute, and sets a new value to that if found.
| name | The path to the Attribute. This is a '/'-separated list of Attribute names, forming a path inside a Attribute tree. ".." can be used to refer to host element. For example setValue("../foo/bar", 4.0f) sets 4.0f to Attribute named "bar" under Attribute "foo" that is sibling of this object. |
| v | The new value |
| bool Valuable::Node::setValue | ( | const QByteArray & | name, |
| v8::Handle< v8::Value > | v | ||
| ) |
Set attribute value from JavaScript.
| name | attribute name |
| v | attribute value. Supported types: boolean, number, string, list of two, three or four numbers |