Merge branch 'genete_static_values'
[synfig.git] / synfig-studio / src / synfigapp / actions / valuedescset.cpp
index 7bb44f4..35f6d26 100644 (file)
@@ -156,7 +156,8 @@ Action::ValueDescSet::prepare()
        // tangent.
        if(     value_desc.parent_is_value_node() &&
                value_desc.get_parent_value_node()->get_type()==ValueBase::TYPE_BLINEPOINT &&
-               (value_desc.get_index()==4 || value_desc.get_index()==5) &&
+               (value_desc.get_name()=="t1" || value_desc.get_name()=="t2") &&
+               //(value_desc.get_index()==4 || value_desc.get_index()==5) &&
                (*value_desc.get_parent_value_node())(time).get(BLinePoint()).get_split_tangent_flag()==false)
        {
                {
@@ -168,7 +169,8 @@ Action::ValueDescSet::prepare()
                        Vector t2((*parent_value_node->get_link("t2"))(time));
                }
 
-               if (value_desc.get_index()==4) {
+               //if (value_desc.get_index()==4) {
+               if (value_desc.get_name()=="t1") {
                        ValueNode_Composite::Handle parent_value_node;
                        parent_value_node=parent_value_node.cast_dynamic(value_desc.get_parent_value_node());
 
@@ -183,7 +185,7 @@ Action::ValueDescSet::prepare()
                        action->set_param("canvas_interface",get_canvas_interface());
                        action->set_param("time",time);
                        action->set_param("new_value",value);
-                       action->set_param("value_desc",ValueDesc(parent_value_node,5));
+                       action->set_param("value_desc",ValueDesc(parent_value_node, parent_value_node->get_link_index_from_name("t2")));
 
                        if(!action->is_ready())
                                throw Error(Error::TYPE_NOTREADY);
@@ -300,7 +302,7 @@ Action::ValueDescSet::prepare()
                case ValueBase::TYPE_VECTOR:
                {
                        Angle old_angle = (*(ValueNode_RadialComposite::Handle::cast_dynamic(
-                                                                        value_desc.get_value_node())->get_link(1)))(time).get(Angle());
+                                                                        value_desc.get_value_node())->get_link("theta")))(time).get(Angle());
                        Vector vect(value.get(Vector()));
                        components[0]=vect.mag();
                        Angle change = Angle(Angle::tan(vect[1],vect[0])) - old_angle;
@@ -371,7 +373,7 @@ Action::ValueDescSet::prepare()
                        action->set_param("canvas_interface",get_canvas_interface());
                        action->set_param("time",time);
                        action->set_param("new_value",(*parent_value_node->get_link("t1"))(time));
-                       action->set_param("value_desc",ValueDesc(parent_value_node,5));
+                       action->set_param("value_desc",ValueDesc(parent_value_node,parent_value_node->get_link_index_from_name("t2")));
 
                        if(!action->is_ready())
                                throw Error(Error::TYPE_NOTREADY);
@@ -396,7 +398,7 @@ Action::ValueDescSet::prepare()
                                action->set_param("canvas_interface",get_canvas_interface());
                                action->set_param("time",time);
                                action->set_param("new_value",average);
-                               action->set_param("value_desc",ValueDesc(parent_value_node,4));
+                               action->set_param("value_desc",ValueDesc(parent_value_node,parent_value_node->get_link_index_from_name("t1")));
 
                                if(!action->is_ready())
                                        throw Error(Error::TYPE_NOTREADY);
@@ -414,7 +416,7 @@ Action::ValueDescSet::prepare()
                                action->set_param("canvas_interface",get_canvas_interface());
                                action->set_param("time",time);
                                action->set_param("new_value",average);
-                               action->set_param("value_desc",ValueDesc(parent_value_node,5));
+                               action->set_param("value_desc",ValueDesc(parent_value_node,parent_value_node->get_link_index_from_name("t2")));
 
                                if(!action->is_ready())
                                        throw Error(Error::TYPE_NOTREADY);
@@ -444,9 +446,17 @@ Action::ValueDescSet::prepare()
        }
 */
 
-
+       ValueBase local_value;
+       local_value.set_static(false);
+               if(!value_desc.is_value_node() || ValueNode_Const::Handle::cast_dynamic(value_desc.get_value_node()))
+               {
+                       if(value_desc.is_value_node())
+                               local_value=ValueNode_Const::Handle::cast_dynamic(value_desc.get_value_node())->get_value();
+                       else
+                               local_value=value_desc.get_value();
+               }
        // If we are in animate editing mode
-       if(get_edit_mode()&MODE_ANIMATE)
+       if(get_edit_mode()&MODE_ANIMATE && !local_value.get_static())
        {
 
                ValueNode_Animated::Handle& value_node(value_node_animated);
@@ -525,7 +535,8 @@ Action::ValueDescSet::prepare()
                        if(ValueNode_Const::Handle::cast_dynamic(value_desc.get_value_node()))
                        {
                                Action::Handle action(ValueNodeConstSet::create());
-
+                               synfig::ValueNode_Const::Handle localvaluenode(ValueNode_Const::Handle::cast_dynamic(value_desc.get_value_node()));
+                               value.set_static(localvaluenode->get_static());
                                action->set_param("canvas",get_canvas());
                                action->set_param("canvas_interface",get_canvas_interface());
                                action->set_param("value_node",value_desc.get_value_node());
@@ -547,7 +558,8 @@ Action::ValueDescSet::prepare()
                if(value_desc.parent_is_layer_param() && !value_desc.is_value_node())
                {
                        Action::Handle layer_param_set(LayerParamSet::create());
-
+                       synfig::ValueBase localvalue(value_desc.get_value());
+                       value.set_static(local_value.get_static());
                        layer_param_set->set_param("canvas",get_canvas());
                        layer_param_set->set_param("canvas_interface",get_canvas_interface());
                        layer_param_set->set_param("layer",value_desc.get_layer());