/*! \file action.cpp
** \brief Template File
**
-** $Id: action.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include "actions/valuedescconnect.h"
#include "actions/valuedescdisconnect.h"
#include "actions/valuedesclink.h"
+#include "actions/valuedescblinelink.h"
#include "actions/waypointadd.h"
#include "actions/waypointset.h"
#include "actions/waypointsetsmart.h"
#include "actions/waypointremove.h"
+#include "actions/waypointconnect.h"
+#include "actions/waypointdisconnect.h"
+// #include "actions/waypointsimpleadd.h"
#include "actions/activepointadd.h"
#include "actions/activepointset.h"
#include "actions/activepointsetoff.h"
#include "actions/activepointseton.h"
#include "actions/activepointremove.h"
+// #include "actions/activepointsimpleadd.h"
#include "actions/keyframeadd.h"
#include "actions/keyframeset.h"
#include "actions/timepointscopy.h"
#include "actions/timepointsdelete.h"
+#include "actions/canvasdescriptionset.h"
+#include "actions/canvasidset.h"
+#include "actions/canvasnameset.h"
#include "actions/canvasrenddescset.h"
#include "actions/canvasadd.h"
#include "actions/canvasremove.h"
#include "canvasinterface.h"
+#include "general.h"
+
#endif
using namespace std;
#define ADD_ACTION(x) { BookEntry &be(book()[x::name__]); \
be.name=x::name__; \
- be.local_name=x::local_name__; \
+ be.local_name=dgettext("synfigstudio",x::local_name__); \
be.version=x::version__; \
be.task=x::task__; \
be.priority=x::priority__; \
be.get_param_vocab=x::get_param_vocab; \
be.is_candidate=x::is_candidate; \
}
-
+
Action::Main::Main()
{
book_=new synfigapp::Action::Book();
-
+
ADD_ACTION(Action::LayerRemove);
ADD_ACTION(Action::LayerMove);
ADD_ACTION(Action::LayerRaise);
ADD_ACTION(Action::LayerEncapsulate);
ADD_ACTION(Action::LayerDuplicate);
ADD_ACTION(Action::LayerSetDesc);
-
- ADD_ACTION(Action::ValueNodeConstSet);
- ADD_ACTION(Action::ValueNodeAdd);
- ADD_ACTION(Action::ValueNodeReplace);
+
+ ADD_ACTION(Action::ValueNodeConstSet);
+ ADD_ACTION(Action::ValueNodeAdd);
+ ADD_ACTION(Action::ValueNodeReplace);
ADD_ACTION(Action::ValueNodeLinkConnect);
ADD_ACTION(Action::ValueNodeLinkDisconnect);
ADD_ACTION(Action::ValueNodeDynamicListInsert);
ADD_ACTION(Action::ValueNodeDynamicListRotateOrder);
ADD_ACTION(Action::ValueNodeRename);
ADD_ACTION(Action::ValueNodeRemove);
-
+
ADD_ACTION(Action::ValueDescSet);
ADD_ACTION(Action::ValueDescExport);
ADD_ACTION(Action::ValueDescConvert);
ADD_ACTION(Action::ValueDescConnect);
ADD_ACTION(Action::ValueDescDisconnect);
ADD_ACTION(Action::ValueDescLink);
+ ADD_ACTION(Action::ValueDescBLineLink);
ADD_ACTION(Action::WaypointAdd);
ADD_ACTION(Action::WaypointSet);
ADD_ACTION(Action::WaypointSetSmart);
ADD_ACTION(Action::WaypointRemove);
+ ADD_ACTION(Action::WaypointConnect);
+ ADD_ACTION(Action::WaypointDisconnect);
+// ADD_ACTION(Action::WaypointSimpleAdd);
ADD_ACTION(Action::ActivepointAdd);
ADD_ACTION(Action::ActivepointSet);
ADD_ACTION(Action::ActivepointSetOn);
ADD_ACTION(Action::ActivepointSetOff);
ADD_ACTION(Action::ActivepointRemove);
+// ADD_ACTION(Action::ActivepointSimpleAdd);
ADD_ACTION(Action::KeyframeAdd);
ADD_ACTION(Action::KeyframeSet);
ADD_ACTION(Action::KeyframeWaypointSet);
ADD_ACTION(Action::KeyframeSetDelta);
+ ADD_ACTION(Action::CanvasDescriptionSet);
+ ADD_ACTION(Action::CanvasIdSet);
+ ADD_ACTION(Action::CanvasNameSet);
ADD_ACTION(Action::CanvasRendDescSet);
ADD_ACTION(Action::CanvasAdd);
ADD_ACTION(Action::CanvasRemove);
ADD_ACTION(Action::GradientSet);
ADD_ACTION(Action::ColorSet);
-
+
ADD_ACTION(Action::TimepointsMove);
ADD_ACTION(Action::TimepointsCopy);
ADD_ACTION(Action::TimepointsDelete);
Action::Main::~Main()
{
delete book_;
-
+
}
Action::Handle
-Action::create(const String &name)
+Action::create(const synfig::String &name)
{
if(!book().count(name))
return 0; //! \todo perhaps we should throw something instead?
- return book()[name].factory();
+ return book()[name].factory();
}
Action::compile_candidate_list(const ParamList& param_list, Category category)
{
Action::CandidateList ret;
-
+
Book::const_iterator iter;
//synfig::info("param_list.size()=%d",param_list.size());
if((iter->second.category&category))
{
if(iter->second.is_candidate(param_list))
+ {
+ //synfig::info("Action \"%s\" is in",iter->second.name.c_str());
ret.push_back(iter->second);
+ }
else
{
//synfig::info("Action \"%s\" is not a candidate",iter->second.name.c_str());
}
}
+ else
+ {
+ //synfig::info("Action \"%s\" has unsuitable category",iter->second.name.c_str());
+ }
}
-
+
return ret;
}
Action::CandidateList::iterator
-Action::CandidateList::find(const String& x)
+Action::CandidateList::find(const synfig::String& x)
{
iterator iter;
for(iter=begin();iter!=end();++iter)
Action::Base::set_param_list(const ParamList ¶m_list)
{
ParamList::const_iterator iter;
-
+
for(iter=param_list.begin();iter!=param_list.end();++iter)
set_param(iter->first,iter->second);
}
+synfig::String
+Action::Base::get_layer_descriptions(const std::list<synfig::Layer::Handle> layers, synfig::String singular_prefix, synfig::String plural_prefix)
+{
+ String ret;
+ bool first = true;
+
+ if (plural_prefix.empty())
+ plural_prefix = singular_prefix;
+
+ if (layers.empty())
+ return plural_prefix;
+
+ if (layers.size() == 1)
+ ret = singular_prefix;
+ else
+ ret = plural_prefix;
+
+ if (!ret.empty())
+ ret.push_back(' ');
+
+ for(std::list<synfig::Layer::Handle>::const_iterator iter=layers.begin(); iter!=layers.end(); ++iter)
+ {
+ if (first)
+ first = false;
+ else
+ ret += ", ";
+
+ ret += strprintf("'%s'", (*iter)->get_non_empty_description().c_str());
+ }
+
+ return ret;
+}
+
+synfig::String
+Action::Base::get_layer_descriptions(const std::list<std::pair<synfig::Layer::Handle,int> > layers, synfig::String singular_prefix, synfig::String plural_prefix)
+{
+ String ret;
+ bool first = true;
+
+ if (plural_prefix.empty())
+ plural_prefix = singular_prefix;
+
+ if (layers.empty())
+ return plural_prefix;
+
+ if (layers.size() == 1)
+ ret = singular_prefix;
+ else
+ ret = plural_prefix;
+
+ if (!ret.empty())
+ ret.push_back(' ');
+
+ for(std::list<std::pair<synfig::Layer::Handle,int> >::const_iterator iter=layers.begin(); iter!=layers.end(); ++iter)
+ {
+ if (first)
+ first = false;
+ else
+ ret += ", ";
+
+ ret += strprintf("'%s'", iter->first->get_non_empty_description().c_str());
+ }
+
+ return ret;
+}
+
void
Super::perform()
{
set_dirty(false);
-
+
prepare();
ActionList::const_iterator iter;
+ //synfig::info("%s:%d actions...", __FILE__, __LINE__);
for(iter=action_list_.begin();iter!=action_list_.end();++iter)
{
+ //synfig::info("%s:%d action: '%s'", __FILE__, __LINE__, (*iter)->get_name().c_str());
try
{
try
}
catch(Error x)
{
+ //synfig::info("%s:%d caught exception", __FILE__, __LINE__);
throw Error(x.get_type(),((*iter)->get_name()+": "+x.get_desc()).c_str());
}
+ //synfig::info("%s:%d finished action: '%s'", __FILE__, __LINE__, (*iter)->get_name().c_str());
}
}
}
-Group::Group(const std::string &str):
+Group::Group(const synfig::String &str):
name_(str),
ready_(true)
{
Action::CanvasSpecific::get_param_vocab()
{
ParamVocab ret;
-
+
ret.push_back(ParamDesc("canvas",Param::TYPE_CANVAS)
.set_local_name(_("Canvas"))
.set_desc(_("Selected Canvas"))
.set_desc(_("Canvas Interface"))
.set_optional(true)
);
-
+
return ret;
}
if(!param.get_canvas())
return false;
set_canvas(param.get_canvas());
-
+
return true;
}
if(name=="canvas_interface" && param.get_type()==Param::TYPE_CANVASINTERFACE)
set_canvas_interface(param.get_canvas_interface());
if(!get_canvas())
set_canvas(get_canvas_interface()->get_canvas());
-
+
return true;
}
if(name=="edit_mode" && param.get_type()==Param::TYPE_EDITMODE)
{
set_edit_mode(param.get_edit_mode());
-
+
return true;
}
{
if(mode_!=MODE_UNDEFINED)
return mode_;
-
+
if(get_canvas_interface())
return get_canvas_interface()->get_mode();
-
+
return MODE_NORMAL;
}