/*! \file action_system.h
** \brief Template Header
**
-** $Id: action_system.h,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
**
-** 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
*/
/* ========================================================================= */
namespace synfigapp {
class CanvasInterface;
-
+
namespace Action {
-
-
-
+
+
+
class System;
//! Passive action grouping class
void set_name(const synfig::String &x) { name_=x; }
etl::loose_handle<System> get_instance() { return instance_; }
-
+
void request_redraw(etl::handle<CanvasInterface>);
-
+
void cancel();
-
+
void inc_depth() { depth_++; }
void dec_depth() { depth_--; }
}; // END of class Action::PassiveGrouper
typedef std::list< etl::handle<Action::Undoable> > Stack;
-
+
class System : public etl::shared_object, public sigc::trackable
{
friend class PassiveGrouper;
-
+
/*
-- ** -- P U B L I C T Y P E S ---------------------------------------------
*/
*/
public:
-
+
/*
-- ** -- P R I V A T E D A T A ---------------------------------------------
*/
sigc::signal<void> signal_undo_;
sigc::signal<void> signal_redo_;
sigc::signal<void,etl::handle<Action::Undoable> > signal_action_status_changed_;
-
+
mutable sigc::signal<void,bool> signal_unsaved_status_changed_;
//! If this is non-zero, then the changes have not yet been saved.
etl::handle<UIInterface> ui_interface_;
bool clear_redo_stack_on_new_action_;
-
+
/*
-- ** -- P R I V A T E M E T H O D S ---------------------------------------
*/
const etl::handle<Action::Base>& get_most_recent_action() { return most_recent_action_; }
bool get_clear_redo_stack_on_new_action()const { return clear_redo_stack_on_new_action_; }
-
+
void set_clear_redo_stack_on_new_action(bool x) { clear_redo_stack_on_new_action_=x; }
bool perform_action(etl::handle<Action::Base> action);
//! Redoes the last undone action
bool redo();
-
- //! Clears the undo stack.
+
+ //! Clears the undo stack.
void clear_undo_stack();
-
- //! Clears the redo stack.
+
+ //! Clears the redo stack.
void clear_redo_stack();
-
+
//! Increments the action counter
/*! \note You should not have to call this under normal circumstances.
** \see dec_action_count(), reset_action_count(), get_action_count() */
void set_ui_interface(const etl::handle<UIInterface> &uim) { assert(uim); ui_interface_=uim; }
void unset_ui_interface() { ui_interface_=new DefaultUIInterface(); }
- const etl::handle<UIInterface> &get_ui_interface() { return ui_interface_; }
+ const etl::handle<UIInterface> &get_ui_interface() { return ui_interface_; }
/*
-- ** -- S I G N A L I N T E R F A C E S -----------------------------------