Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / synfigapp / actions / activepointsetoff.cpp
index f2c5a3a..845b68f 100644 (file)
@@ -2,19 +2,21 @@
 /*!    \file activepointsetoff.cpp
 **     \brief Template File
 **
-**     $Id: activepointsetoff.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
 */
 /* ========================================================================= */
@@ -39,6 +41,8 @@
 #include "valuedescconnect.h"
 #include <synfigapp/canvasinterface.h>
 
+#include <synfigapp/general.h>
+
 #endif
 
 using namespace std;
@@ -50,13 +54,13 @@ using namespace Action;
 /* === M A C R O S ========================================================= */
 
 ACTION_INIT(Action::ActivepointSetOff);
-ACTION_SET_NAME(Action::ActivepointSetOff,"activepoint_set_off");
-ACTION_SET_LOCAL_NAME(Action::ActivepointSetOff,_("Mark Activepoint as \"Off\""));
+ACTION_SET_NAME(Action::ActivepointSetOff,"ActivepointSetOff");
+ACTION_SET_LOCAL_NAME(Action::ActivepointSetOff,N_("Mark Activepoint as \"Off\""));
 ACTION_SET_TASK(Action::ActivepointSetOff,"set_off");
 ACTION_SET_CATEGORY(Action::ActivepointSetOff,Action::CATEGORY_ACTIVEPOINT|Action::CATEGORY_VALUEDESC);
 ACTION_SET_PRIORITY(Action::ActivepointSetOff,-9);
 ACTION_SET_VERSION(Action::ActivepointSetOff,"0.0");
-ACTION_SET_CVS_ID(Action::ActivepointSetOff,"$Id: activepointsetoff.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $");
+ACTION_SET_CVS_ID(Action::ActivepointSetOff,"$Id$");
 
 /* === G L O B A L S ======================================================= */
 
@@ -75,7 +79,7 @@ Action::ParamVocab
 Action::ActivepointSetOff::get_param_vocab()
 {
        ParamVocab ret(Action::CanvasSpecific::get_param_vocab());
-       
+
        ret.push_back(ParamDesc("value_desc",Param::TYPE_VALUEDESC)
                .set_local_name(_("ValueDesc"))
        );
@@ -89,29 +93,29 @@ Action::ActivepointSetOff::get_param_vocab()
                .set_local_name(_("Time"))
                .set_optional()
        );
-       
+
        return ret;
 }
 
 bool
-Action::ActivepointSetOff::is_canidate(const ParamList &x)
+Action::ActivepointSetOff::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;
-               
-               // We are only a canidate if this canvas is animated.
-               Canvas::Handle canvas(x.find("canvas")->second.get_canvas());
-               if(canvas->rend_desc().get_time_start()==canvas->rend_desc().get_time_end())
-                       return false;
-               
-               // We need either a activepoint or a time.
-               if(x.count("activepoint") || x.count("time"))
-                       return true;
-       }
-       return false;
+       if (!candidate_check(get_param_vocab(),x))
+               return false;
+
+       ValueDesc value_desc(x.find("value_desc")->second.get_value_desc());
+
+       if (!(value_desc.parent_is_value_node() &&
+                 // We need a dynamic list.
+                 ValueNode_DynamicList::Handle::cast_dynamic(value_desc.get_parent_value_node())))
+               return false;
+
+       Canvas::Handle canvas(x.find("canvas")->second.get_canvas());
+
+       // We are only a candidate if this canvas is animated.
+       return (canvas->rend_desc().get_time_start() != canvas->rend_desc().get_time_end() &&
+                       // We need either an activepoint or a time.
+                       (x.count("activepoint") || x.count("time")));
 }
 
 bool
@@ -120,26 +124,26 @@ Action::ActivepointSetOff::set_param(const synfig::String& name, const Action::P
        if(name=="value_desc" && param.get_type()==Param::TYPE_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();
-               
+
                if(time_set)
                        calc_activepoint();
-               
+
                return true;
        }
        if(name=="activepoint" && param.get_type()==Param::TYPE_ACTIVEPOINT && !time_set)
        {
                activepoint=param.get_activepoint();
-               
+
                return true;
        }
        if(name=="time" && param.get_type()==Param::TYPE_TIME && activepoint.get_time()==Time::begin()-1)
@@ -149,7 +153,7 @@ Action::ActivepointSetOff::set_param(const synfig::String& name, const Action::P
 
                if(value_node)
                        calc_activepoint();
-               
+
                return true;
        }
 
@@ -164,20 +168,20 @@ Action::ActivepointSetOff::is_ready()const
 
        if(activepoint.get_time()==(Time::begin()-1))
                synfig::error("Missing activepoint");
-       
+
        if(!value_node || activepoint.get_time()==(Time::begin()-1))
                return false;
        return Action::CanvasSpecific::is_ready();
 }
 
-// This function is called if a time is specified, but not 
+// This function is called if a time is specified, but not
 // a activepoint. In this case, we need to calculate the value
 // of the activepoint
 void
 Action::ActivepointSetOff::calc_activepoint()
-{      
+{
        const Time time(activepoint.get_time());
-       
+
        try { activepoint=*value_node->list[index].find(time); }
        catch(...)
        {
@@ -196,7 +200,7 @@ Action::ActivepointSetOff::prepare()
        activepoint.set_state(false);
 
        Action::Handle action(ActivepointSetSmart::create());
-       
+
        action->set_param("edit_mode",get_edit_mode());
        action->set_param("canvas",get_canvas());
        action->set_param("canvas_interface",get_canvas_interface());
@@ -208,5 +212,5 @@ Action::ActivepointSetOff::prepare()
                throw Error(Error::TYPE_NOTREADY);
 
        add_action_front(action);
-       
+
 }