#include <sigc++/signal.h>
#include "guid.h"
#include <ETL/angle>
+#include "paramdesc.h"
#include "node.h"
class Canvas;
class LinkableValueNode;
class Layer;
+class ParamVocab;
/*! \class ValueNode
** \brief Base class for all Value Nodes
*/
typedef std::map<String,BookEntry> Book;
+ //! The vocabulary of the children
+ /*! \see synfig::Paramdesc
+ */
+ typedef ParamVocab Vocab;
+
static Book& book();
//! Creates a Linkable Value Node based on the name and the returned
virtual int link_count()const=0;
//! Returns the local name of the 'i' linked Value Node
- virtual String link_local_name(int i)const=0;
+ virtual String link_local_name(int i)const;
//! Returns the name of the 'i' linked Value Node
- virtual String link_name(int i)const=0;
+ virtual String link_name(int i)const;
//! Returns the child index Value Node based on the name
- virtual int get_link_index_from_name(const String &name)const=0;
+ virtual int get_link_index_from_name(const String &name)const;
//! Clones a Value Node
virtual ValueNode* clone(const GUID& deriv_guid=GUID())const;
//! Return a full description of the linked ValueNode given by the index
String get_description(int index = -1, bool show_exported_name = true)const;
+ //! Gets the parameter vocabulary for linkable value nodes
+ virtual Vocab get_param_vocab()const=0;
+
protected:
//! Sets the type of the ValueNode
void set_type(ValueBase::Type t) { ValueNode::set_type(t); }