Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / synfigapp / actions / activepointset.cpp
index e9492ef..a89cc01 100644 (file)
@@ -2,19 +2,21 @@
 /*!    \file activepointset.cpp
 **     \brief Template File
 **
-**     $Id: activepointset.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+**     $Id$
 **
 **     \legal
-**     Copyright (c) 2002 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**  Copyright (c) 2008 Chris Moore
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+**     General Public License for more details.
 **     \endlegal
 */
 /* ========================================================================= */
@@ -31,6 +33,8 @@
 #include "activepointset.h"
 #include <synfigapp/canvasinterface.h>
 
+#include <synfigapp/general.h>
+
 #endif
 
 using namespace std;
@@ -42,13 +46,13 @@ using namespace Action;
 /* === M A C R O S ========================================================= */
 
 ACTION_INIT(Action::ActivepointSet);
-ACTION_SET_NAME(Action::ActivepointSet,"activepoint_set");
-ACTION_SET_LOCAL_NAME(Action::ActivepointSet,"Set Activepoint");
+ACTION_SET_NAME(Action::ActivepointSet,"ActivepointSet");
+ACTION_SET_LOCAL_NAME(Action::ActivepointSet,N_("Set Activepoint"));
 ACTION_SET_TASK(Action::ActivepointSet,"set");
 ACTION_SET_CATEGORY(Action::ActivepointSet,Action::CATEGORY_ACTIVEPOINT);
 ACTION_SET_PRIORITY(Action::ActivepointSet,0);
 ACTION_SET_VERSION(Action::ActivepointSet,"0.0");
-ACTION_SET_CVS_ID(Action::ActivepointSet,"$Id: activepointset.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $");
+ACTION_SET_CVS_ID(Action::ActivepointSet,"$Id$");
 
 /* === G L O B A L S ======================================================= */
 
@@ -65,7 +69,7 @@ Action::ParamVocab
 Action::ActivepointSet::get_param_vocab()
 {
        ParamVocab ret(Action::CanvasSpecific::get_param_vocab());
-       
+
        ret.push_back(ParamDesc("value_desc",Param::TYPE_VALUEDESC)
                .set_local_name(_("ValueDesc"))
        );
@@ -80,17 +84,16 @@ Action::ActivepointSet::get_param_vocab()
 }
 
 bool
-Action::ActivepointSet::is_canidate(const ParamList &x)
+Action::ActivepointSet::is_candidate(const ParamList &x)
 {
-       if(canidate_check(get_param_vocab(),x))
-       {
-               ValueDesc value_desc(x.find("value_desc")->second.get_value_desc());
-               if(!value_desc.parent_is_value_node() || !ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()))
-                       return false;
+       if (!candidate_check(get_param_vocab(),x))
+               return false;
 
-               return true;
-       }
-       return false;
+       ValueDesc value_desc(x.find("value_desc")->second.get_value_desc());
+
+       return (value_desc.parent_is_value_node() &&
+                       // We need a dynamic list.
+                       ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node()));
 }
 
 bool
@@ -99,24 +102,24 @@ Action::ActivepointSet::set_param(const synfig::String& name, const Action::Para
        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)
                        return false;
-               
+
                index=value_desc.get_index();
-               
+
                return true;
        }
        if(name=="activepoint" && param.get_type()==Param::TYPE_ACTIVEPOINT)
        {
                //NOTE: there is no duplication checking at the moment
                activepoints.push_back(param.get_activepoint());
-               
+
                return true;
        }
 
@@ -133,14 +136,14 @@ Action::ActivepointSet::is_ready()const
 
 void
 Action::ActivepointSet::perform()
-{      
+{
        typedef ValueNode_DynamicList::ListEntry::ActivepointList AList;
        AList::iterator iter;
 
-#if 1  
+#if 1
        vector<AList::iterator> iters;
-       vector<Activepoint>::iterator i = activepoints.begin(), end = activepoints.end();       
-       
+       vector<Activepoint>::iterator i = activepoints.begin(), end = activepoints.end();
+
        for(; i != end; ++i)
        {
                try { iters.push_back(value_node->list[index].find(*i)); }
@@ -149,16 +152,16 @@ Action::ActivepointSet::perform()
                        throw Error(_("Unable to find activepoint"));
                }
        }
-       
+
        //check to see which valuenodes are going to override because of the time...
        ValueNode_DynamicList::ListEntry::findresult timeiter;
-       
+
        for(i = activepoints.begin(); i != end; ++i)
        {
                timeiter = value_node->list[index].find_time(i->get_time());
-               
+
                bool candelete = timeiter.second;
-       
+
                //we only want to track overwrites (not activepoints that are also being modified)
                if(candelete)
                {
@@ -171,7 +174,7 @@ Action::ActivepointSet::perform()
                                }
                        }
                }
-               
+
                //if we can still delete it after checking, record it, and then remove them all later
                if(candelete)
                {
@@ -179,7 +182,7 @@ Action::ActivepointSet::perform()
                        overwritten_activepoints.push_back(a);
                }
        }
-       
+
        //overwrite all the valuenodes we're supposed to set
        {
                i = activepoints.begin();
@@ -189,8 +192,8 @@ Action::ActivepointSet::perform()
                        **ii = *i; //set the point to the corresponding point in the normal waypoint list
                }
        }
-       
-       //remove all the points we're supposed to be overwritting
+
+       //remove all the points we're supposed to be overwriting
        {
                vector<Activepoint>::iterator   oi = overwritten_activepoints.begin(),
                                                                                oend = overwritten_activepoints.end();
@@ -200,39 +203,39 @@ Action::ActivepointSet::perform()
                }
        }
 
-#else  
+#else
        try { iter=value_node->list[index].find(activepoint); }
        catch(synfig::Exception::NotFound)
        {
                throw Error(_("Unable to find activepoint"));
-       }       
+       }
 
        //find the value at the old time before we replace it
        ValueNode_DynamicList::ListEntry::findresult timeiter;
        timeiter = value_node->list[index].find_time(activepoint.get_time());
-       
+
        //we only want to track overwrites (not inplace modifications)
        if(timeiter.second && activepoint.get_uid() == timeiter.first->get_uid())
        {
                timeiter.second = false;
        }
-               
+
        old_activepoint=*iter;
        *iter=activepoint;
-       
+
        if(timeiter.second)
        {
                synfig::info("Erasing the found activepoint");
                time_overwrite = true;
                overwritten_ap = *timeiter.first;
-               
+
                value_node->list[index].erase(overwritten_ap);
        }
-       
+
 #endif
-       
+
        value_node->list[index].timing_info.sort();
-       
+
        // Signal that a valuenode has been changed
        value_node->changed();
 }
@@ -242,9 +245,9 @@ Action::ActivepointSet::undo()
 {
        ValueNode_DynamicList::ListEntry::ActivepointList::iterator iter;
 
-#if 1  
-       vector<Activepoint>::iterator i = old_activepoints.begin(), end = old_activepoints.end();       
-       
+#if 1
+       vector<Activepoint>::iterator i = old_activepoints.begin(), end = old_activepoints.end();
+
        for(; i != end; ++i)
        {
                try { iter = value_node->list[index].find(*i); }
@@ -252,11 +255,11 @@ Action::ActivepointSet::undo()
                {
                        throw Error(_("Unable to find activepoint"));
                }
-               
+
                //overwrite with old one
                *iter = *i;
        }
-               
+
        //add back in all the points that we removed before...
        {
                vector<Activepoint>::iterator   oi = overwritten_activepoints.begin(),
@@ -267,23 +270,23 @@ Action::ActivepointSet::undo()
                }
        }
 
-#else  
+#else
        try { iter=value_node->list[index].find(activepoint); }
        catch(synfig::Exception::NotFound)
        {
                throw Error(_("Unable to find activepoint"));
-       }       
+       }
 
        *iter=old_activepoint;
-               
+
        if(time_overwrite)
        {
                value_node->list[index].add(overwritten_ap);
        }
 #endif
-       
+
        value_node->list[index].timing_info.sort();
-       
+
        // Signal that a valuenode has been changed
        value_node->changed();
 }