Added copyright lines for files I've edited this year.
[synfig.git] / synfig-studio / trunk / src / synfigapp / action.h
index 8ea4302..0bd843b 100644 (file)
@@ -2,10 +2,11 @@
 /*!    \file action.h
 **     \brief Template File
 **
-**     $Id: action.h,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
 
 #define ACTION_SET_CVS_ID(class,x) const char class::cvs_id__[]=x
 
-#define ACTION_INIT(class) \
-       Action::Base* class::create() { return new class(); }   \
-       synfig::String class::get_name()const { return name__; }        \
-       synfig::String class::get_local_name()const { return local_name__; }    \
+//! don't define get_local_name() - allow the action code to define its own
+#define ACTION_INIT_NO_GET_LOCAL_NAME(class)                     \
+       Action::Base* class::create() { return new class(); } \
+       synfig::String class::get_name()const { return name__; }
+
+#define ACTION_INIT(class)                              \
+       ACTION_INIT_NO_GET_LOCAL_NAME(class) \
+       synfig::String class::get_local_name()const { return dgettext("synfigstudio",local_name__); }
 
 /* === T Y P E D E F S ===================================================== */
 
@@ -92,11 +97,11 @@ namespace synfigapp {
 
 class Instance;
 class Main;
-       
-namespace Action {     
+
+namespace Action {
 
 class System;
-       
+
 
 //! Exception class, thrown when redoing or undoing an action
 class Error
@@ -119,7 +124,7 @@ private:
        synfig::String desc_;
 
 public:
-       
+
        Error(Type type, const char *format, ...):
                type_(type)
        {
@@ -140,10 +145,10 @@ public:
                type_(type)
        {
        }
-       
+
        Type get_type()const { return type_; }
        synfig::String get_desc()const { return desc_; }
-       
+
 }; // END of class Action::Error
 
 class Param;
@@ -167,7 +172,7 @@ enum Category
        CATEGORY_OTHER                  =(1<<12),
 
        CATEGORY_DRAG                   =(1<<24),
-       
+
        CATEGORY_HIDDEN                 =(1<<31),
        CATEGORY_ALL                    =(~0)-(1<<31)           //!< All categories (EXCEPT HIDDEN)
 }; // END of enum Category
@@ -179,7 +184,7 @@ inline Category operator|(Category lhs, Category rhs)
 
 //! Action Base Class
 /*!    An action should implement the following functions:
-**     static bool is_canidate(const ParamList &x);
+**     static bool is_candidate(const ParamList &x);
 **             -       Checks the ParamList to see if this action could be performed.
 **     static ParamVocab get_param_vocab();
 **             -       Yields the ParamVocab object which describes what
@@ -188,29 +193,31 @@ inline Category operator|(Category lhs, Category rhs)
 **             -       Factory for creating this action from a ParamList
 **
 */
-class Base : public etl::shared_object 
+class Base : public etl::shared_object
 {
 protected:
        Base() { }
-       
+
 public:
        virtual ~Base() { };
 
        //! This function will throw an Action::Error() on failure
        virtual void perform()=0;
-       
-       virtual bool set_param(const synfig::String& name, const Param &) { return false; }
+
+       virtual bool set_param(const synfig::String& /*name*/, const Param &) { return false; }
        virtual bool is_ready()const=0;
-       
+
        virtual synfig::String get_name()const =0;
        virtual synfig::String get_local_name()const { return get_name(); }
 
        void set_param_list(const ParamList &);
-       
+
+       static synfig::String get_layer_descriptions(const std::list<synfig::Layer::Handle> layers, synfig::String singular_prefix = "", synfig::String plural_prefix = "");
+       static synfig::String get_layer_descriptions(const std::list<std::pair<synfig::Layer::Handle,int> > layers, synfig::String singular_prefix = "", synfig::String plural_prefix = "");
 }; // END of class Action::Base
 
 typedef Action::Base* (*Factory)();
-typedef bool (*CanidateChecker)(const ParamList &x);
+typedef bool (*CandidateChecker)(const ParamList &x);
 typedef ParamVocab (*GetParamVocab)();
 
 typedef etl::handle<Base> Handle;
@@ -237,7 +244,7 @@ public:
 }; // END of class Action::Undoable
 
 //! Action base class for canvas-specific actions
-class CanvasSpecific 
+class CanvasSpecific
 {
 private:
        bool is_dirty_;
@@ -251,8 +258,8 @@ protected:
        CanvasSpecific():is_dirty_(true), mode_(MODE_UNDEFINED) { }
 
        virtual ~CanvasSpecific() { };
-       
-       
+
+
 public:
 
        void set_canvas(synfig::Canvas::Handle x) { canvas_=x; }
@@ -268,10 +275,10 @@ public:
        EditMode get_edit_mode()const;
 
        void set_edit_mode(EditMode x) { mode_=x; }
-       
+
        bool is_dirty()const { return is_dirty_; }
        void set_dirty(bool x=true) { is_dirty_=x; }
-       
+
 }; // END of class Action::Undoable
 
 typedef std::list< etl::handle<Action::Undoable> > ActionList;
@@ -294,9 +301,9 @@ public:
        virtual void prepare()=0;
 
        void clear() { action_list().clear(); }
-       
+
        bool first_time()const { return action_list_.empty(); }
-       
+
        void add_action(etl::handle<Undoable> action);
 
        void add_action_front(etl::handle<Undoable> action);
@@ -322,7 +329,7 @@ public:
 
        virtual void prepare() { };
 
-       virtual bool set_param(const synfig::String& name, const Param &)const { return false; }
+       virtual bool set_param(const synfig::String& /*name*/, const Param &)const { return false; }
        virtual bool is_ready()const { return ready_; }
 
        void set_name(std::string&x) { name_=x; }
@@ -341,27 +348,27 @@ struct BookEntry
        int                     priority;
        Category                category;
        Factory                 factory;
-       CanidateChecker is_canidate;
-       GetParamVocab   get_param_vocab;        
-       
+       CandidateChecker        is_candidate;
+       GetParamVocab   get_param_vocab;
+
        bool operator<(const BookEntry &rhs)const { return priority<rhs.priority; }
 }; // END of struct BookEntry
 
 typedef std::map<synfig::String,BookEntry> Book;
 
-class CanidateList : public std::list<BookEntry>
+class CandidateList : public std::list<BookEntry>
 {
 public:
        iterator find(const synfig::String& x);
-       const_iterator find(const synfig::String& x)const { return const_cast<CanidateList*>(this)->find(x); }
+       const_iterator find(const synfig::String& x)const { return const_cast<CandidateList*>(this)->find(x); }
 };
 
 Book& book();
 
 Handle create(const synfig::String &name);
 
-//! Compiles a list of potential canidate actions with the given \a param_list and \a category
-CanidateList compile_canidate_list(const ParamList& param_list, Category category=CATEGORY_ALL);
+//! Compiles a list of potential candidate actions with the given \a param_list and \a category
+CandidateList compile_candidate_list(const ParamList& param_list, Category category=CATEGORY_ALL);
 
 /*!    \class synfigapp::Action::Main
 **     \brief \writeme