bool Action::ValueDescBLineLink::set_param(const synfig::String& name, const Action::Param ¶m) { if (name == "time" && param.get_type() == Param::TYPE_TIME) { time = param.get_time(); return true; } if (name == "value_desc" && param.get_type() == Param::TYPE_VALUEDESC) { value_desc = param.get_value_desc(); index = value_desc.get_index(); return true; } if (name == "selected_value_desc" && param.get_type() == Param::TYPE_VALUEDESC) { ValueDesc value_desc(param.get_value_desc()); value_desc_list.push_back(value_desc); return true; } if (name == "origin" && param.get_type() == Param::TYPE_REAL) { origin = param.get_real(); return true; } return Action::CanvasSpecific::set_param(name,param); }
bool Action::ValueNodeDynamicListRemoveSmart::set_param(const synfig::String& name, const Action::Param ¶m) { if(name=="value_desc" && param.get_type()==Param::TYPE_VALUEDESC) { ValueDesc value_desc(param.get_value_desc()); if(!value_desc.parent_is_value_node()) return false; value_node=ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()); if(!value_node) { ValueNode::Handle compo(ValueNode_Composite::Handle::cast_dynamic(value_desc.get_parent_value_node())); if(compo) { ValueNode_DynamicList::Handle parent_list=NULL; std::set<Node*>::iterator iter; // now check if the composite's parent is a dynamic list type for(iter=compo->parent_set.begin();iter!=compo->parent_set.end();++iter) { parent_list=ValueNode_DynamicList::Handle::cast_dynamic(*iter); if(parent_list) { value_node=parent_list; // Now we need to find the index of this composite item // on the dynamic list int i; for(i=0;i<value_node->link_count();i++) if(compo->get_guid()==value_node->get_link(i)->get_guid()) break; if(i<value_node->link_count()) value_desc=synfigapp::ValueDesc(value_node, i); else return false; break; } } if(!value_node) return false; } else return false; if(!value_node) return false; } index=value_desc.get_index(); return true; } if(name=="time" && param.get_type()==Param::TYPE_TIME) { time=param.get_time(); return true; } if(name=="origin" && param.get_type()==Param::TYPE_REAL) { origin=param.get_real(); return true; } return Action::CanvasSpecific::set_param(name,param); }
// called from two places - both set 'canvas' and 'canvasinterface', and then: // // ValueNodeStaticListRotateOrder::prepare() sets "value_desc", "item" // action->set_param("item",child); <- sets item=list_entry=child // action->set_param("value_desc",ValueDesc(value_node,0)); <- sets value_node=value_node, index=0, list_entry=item // // ValueNodeStaticListInsertSmart::prepare() sets "time", "origin", "value_desc" // action->set_param("time",time); // action->set_param("origin",origin); // action->set_param("value_desc",ValueDesc(value_node,index)); <- sets value_node=value_node, index=index, list_entry=create_list_entry(...) // // all the perform() does is value_node->add(list_entry,index); // bool Action::ValueNodeStaticListInsert::set_param(const synfig::String& name, const Action::Param ¶m) { if(name=="value_desc" && param.get_type()==Param::TYPE_VALUEDESC) { ValueDesc value_desc(param.get_value_desc()); if(!value_desc.parent_is_value_node()) return false; value_node=ValueNode_StaticList::Handle::cast_dynamic(value_desc.get_parent_value_node()); if(!value_node) return false; index=value_desc.get_index(); if(item) list_entry=item; else list_entry=value_node->create_list_entry(index,time,origin); return true; } if(name=="time" && param.get_type()==Param::TYPE_TIME) { time=param.get_time(); return true; } if(name=="item" && param.get_type()==Param::TYPE_VALUENODE) { item=param.get_value_node(); if(item) list_entry=item; return true; } if(name=="origin" && param.get_type()==Param::TYPE_REAL) { origin=param.get_real(); return true; } return Action::CanvasSpecific::set_param(name,param); }
bool Action::ValueDescRemoveSmart::set_param(const synfig::String& name, const Action::Param ¶m) { ValueNode_DynamicList::Handle value_node; if(name=="value_desc" && param.get_type()==Param::TYPE_VALUEDESC) { ValueDesc value_desc(param.get_value_desc()); if(!value_desc.parent_is_value_node()) return false; value_node=ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()); if(!value_node) { ValueNode::Handle compo(ValueNode_Composite::Handle::cast_dynamic(value_desc.get_parent_value_node())); if(compo) { ValueNode_DynamicList::Handle parent_list=NULL; std::set<Node*>::iterator iter; // now check if the composite's parent is a dynamic list type for(iter=compo->parent_set.begin();iter!=compo->parent_set.end();++iter) { parent_list=ValueNode_DynamicList::Handle::cast_dynamic(*iter); if(parent_list) { value_node=parent_list; // Now we need to find the index of this composite item // on the dynamic list int i; for(i=0;i<value_node->link_count();i++) if(compo->get_guid()==value_node->get_link(i)->get_guid()) break; if(i<value_node->link_count()) value_desc=synfigapp::ValueDesc(value_node, i); else return false; break; } } if(!value_node) return false; } else return false; if(!value_node) return false; } ValueNodes::iterator it; // Try to find the current parent value node in our map it=value_nodes.find(value_node); if(it==value_nodes.end()) { // Not found, then create a new one value_nodes[value_node].push_back(value_desc.get_index()); } else { // found, then insert the index of the value desc. // Maybe the index is already inserted. // Later is ignored if that happen it->second.push_back(value_desc.get_index()); } return true; } if(name=="time" && param.get_type()==Param::TYPE_TIME) { time=param.get_time(); return true; } if(name=="origin" && param.get_type()==Param::TYPE_REAL) { origin=param.get_real(); return true; } return Action::CanvasSpecific::set_param(name,param); }