Make link_name(), link_local_name, and get_link_index_from_name non pure virtual...
[synfig.git] / synfig-core / src / synfig / valuenode.cpp
index d1e3256..a47394e 100644 (file)
 
 /* === H E A D E R S ======================================================= */
 
-#define SYNFIG_NO_ANGLE
-
-//#define HAS_HASH_MAP 1
-
 #ifdef USING_PCH
 #      include "pch.h"
 #else
@@ -38,7 +34,6 @@
 #include "valuenode.h"
 #include "general.h"
 #include "canvas.h"
-#include "paramdesc.h"
 #include "releases.h"
 
 #include "valuenode_const.h"
@@ -185,12 +180,12 @@ ValueNode::subsys_init()
        ADD_VALUENODE(ValueNode_IntString,                "intstring",            _("Int String"),               RELEASE_VERSION_0_61_09); // SVN r2010
        ADD_VALUENODE(ValueNode_Logarithm,                "logarithm",            _("Logarithm"),                RELEASE_VERSION_0_61_09); // SVN r2034
 
-       ADD_VALUENODE(ValueNode_Greyed,                   "greyed",                       _("Greyed"),                   RELEASE_VERSION_0_61_10); // SVN r2305
-       ADD_VALUENODE(ValueNode_Pow,                  "power",                _("Power"),                    RELEASE_VERSION_0_61_10); // SVN r2362
-       ADD_VALUENODE(ValueNode_Compare,                  "compare",              _("Compare"),                  RELEASE_VERSION_0_61_10); // SVN r2364
-       ADD_VALUENODE(ValueNode_Not,                  "not",                      _("Not"),                              RELEASE_VERSION_0_61_10); // SVN r2364
-       ADD_VALUENODE(ValueNode_And,                  "and",                      _("And"),                              RELEASE_VERSION_0_61_10); // SVN r2364
-       ADD_VALUENODE(ValueNode_Or,                       "or",                   _("Or"),                                       RELEASE_VERSION_0_61_10); // SVN r2364
+       ADD_VALUENODE(ValueNode_Greyed,                   "greyed",                       _("Greyed"),                   RELEASE_VERSION_0_62_00); // SVN r2305
+       ADD_VALUENODE(ValueNode_Pow,                  "power",                _("Power"),                    RELEASE_VERSION_0_62_00); // SVN r2362
+       ADD_VALUENODE(ValueNode_Compare,                  "compare",              _("Compare"),                  RELEASE_VERSION_0_62_00); // SVN r2364
+       ADD_VALUENODE(ValueNode_Not,                  "not",                      _("Not"),                              RELEASE_VERSION_0_62_00); // SVN r2364
+       ADD_VALUENODE(ValueNode_And,                  "and",                      _("And"),                              RELEASE_VERSION_0_62_00); // SVN r2364
+       ADD_VALUENODE(ValueNode_Or,                       "or",                   _("Or"),                                       RELEASE_VERSION_0_62_00); // SVN r2364
 
 #undef ADD_VALUENODE
 #undef ADD_VALUENODE2
@@ -202,35 +197,6 @@ bool
 ValueNode::subsys_stop()
 {
        delete book_;
-/*     if(global_value_node_map.size() || value_node_count)
-       {
-               if(value_node_count)
-                       synfig::error("%d ValueNodes haven't been destroyed yet!",value_node_count);
-
-               if(global_value_node_map.size()!=value_node_count)
-                       synfig::error("value node count mismatch! map.size()!=value_node_count (%d!=%d)",global_value_node_map.size(),value_node_count);
-
-               GlobalValueNodeMap::iterator iter;
-               for(iter=global_value_node_map.begin();iter!=global_value_node_map.end();++iter)
-               {
-                       if(!iter->second->is_exported())
-                               synfig::info(_("%s: count:%d name:%s type:%s"),
-                                       iter->first.get_string().c_str(),
-                                       iter->second->count(),
-                                       iter->second->get_name().c_str(),
-                                       ValueBase::type_local_name(iter->second->get_type()).c_str()
-                               );
-                       else
-                               synfig::info(_("%s: id:%s count:%d name:%s type:%s"),
-                                       iter->first.get_string().c_str(),
-                                       iter->second->get_id().c_str(),
-                                       iter->second->count(),
-                                       iter->second->get_name().c_str(),
-                                       ValueBase::type_local_name(iter->second->get_type()).c_str()
-                               );
-               }
-       }
-*/
        return true;
 }
 
@@ -702,3 +668,34 @@ LinkableValueNode::get_description(int index, bool show_exported_name)const
 
        return description;
 }
+
+String
+LinkableValueNode::link_name(int i)const
+{
+       Vocab vocab(get_param_vocab());
+       Vocab::iterator iter(vocab.begin());
+       int j=0;
+       for(; iter!=vocab.end(), j<i; iter++, j++);
+       return iter!=vocab.end()?iter->get_name():String();
+}
+
+String
+LinkableValueNode::link_local_name(int i)const
+{
+       Vocab vocab(get_param_vocab());
+       Vocab::iterator iter(vocab.begin());
+       int j=0;
+       for(; iter!=vocab.end(), j<i; iter++, j++);
+       return iter!=vocab.end()?iter->get_local_name():String();
+}
+
+int
+LinkableValueNode::get_link_index_from_name(const String &name)const
+{
+       Vocab vocab(get_param_vocab());
+       Vocab::iterator iter(vocab.begin());
+       int j=0;
+       for(; iter!=vocab.end(); iter++, j++)
+               if(iter->get_name()==name) return j;
+       throw Exception::BadLinkName(name);
+}