** $Id: action.h,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
**
** \legal
-** Copyright (c) 2002 Robert B. Quattlebaum Jr.
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
-** 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
*/
/* ========================================================================= */
class Instance;
class Main;
-
-namespace Action {
+
+namespace Action {
class System;
-
+
//! Exception class, thrown when redoing or undoing an action
class Error
synfig::String desc_;
public:
-
+
Error(Type type, const char *format, ...):
type_(type)
{
type_(type)
{
}
-
+
Type get_type()const { return type_; }
synfig::String get_desc()const { return desc_; }
-
+
}; // END of class Action::Error
class Param;
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
//! 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
** - 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 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 &);
-
+
}; // 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;
}; // END of class Action::Undoable
//! Action base class for canvas-specific actions
-class CanvasSpecific
+class CanvasSpecific
{
private:
bool is_dirty_;
protected:
CanvasSpecific(const synfig::Canvas::Handle &canvas):is_dirty_(true),mode_(MODE_UNDEFINED),canvas_(canvas) { }
- CanvasSpecific():mode_(MODE_UNDEFINED) { }
+ CanvasSpecific():is_dirty_(true), mode_(MODE_UNDEFINED) { }
virtual ~CanvasSpecific() { };
-
-
+
+
public:
void set_canvas(synfig::Canvas::Handle x) { canvas_=x; }
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;
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);
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