DiaUndoManager

DiaUndoManager — Interface for undo/redo functionality in DiaCanvas

Synopsis

#define             DIA_UNDO_MANAGER                    (obj)
                    DiaUndoManager;
void                dia_undo_manager_begin_transaction  (DiaUndoManager *undo_manager);
void                dia_undo_manager_commit_transaction (DiaUndoManager *undo_manager);
void                dia_undo_manager_discard_transaction
                                                        (DiaUndoManager *undo_manager);
void                dia_undo_manager_undo_transaction   (DiaUndoManager *undo_manager);
void                dia_undo_manager_redo_transaction   (DiaUndoManager *undo_manager);
gboolean            dia_undo_manager_in_transaction     (DiaUndoManager *undo_manager);
gboolean            dia_undo_manager_can_undo           (DiaUndoManager *undo_manager);
gboolean            dia_undo_manager_can_redo           (DiaUndoManager *undo_manager);
struct              DiaUndoAction;
DiaUndoAction *     dia_undo_action_new                 (gsize sizeof_undo_action,
                                                         DiaUndoFunc undo,
                                                         DiaUndoFunc redo,
                                                         GDestroyNotify destroy);
void                dia_undo_action_undo                (DiaUndoAction *action);
void                dia_undo_action_redo                (DiaUndoAction *action);
void                dia_undo_action_destroy             (DiaUndoAction *action);

Object Hierarchy

  GInterface
   +----DiaUndoManager

Prerequisites

DiaUndoManager requires GObject.

Signals

  "add-undo-action"                                : Run Last
  "begin-transaction"                              : Run Last
  "commit-transaction"                             : Run Last
  "discard-transaction"                            : Run Last
  "redo-transaction"                               : Run Last
  "undo-transaction"                               : Run Last

Description

The DiaUndoManager interface provides an interface to the pluggable undo mechanism in DiaCanvas2.

Details

DIA_UNDO_MANAGER()

#define DIA_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIA_TYPE_UNDO_MANAGER, DiaUndoManager))


DiaUndoManager

typedef struct _DiaUndoManager DiaUndoManager;

This interface provides the functions that are used to gather and act on undo information.


dia_undo_manager_begin_transaction ()

void                dia_undo_manager_begin_transaction  (DiaUndoManager *undo_manager);

Begin a new transaction.


dia_undo_manager_commit_transaction ()

void                dia_undo_manager_commit_transaction (DiaUndoManager *undo_manager);

Store the transaction on the undo stack. If there are no actions to be undone, a specific implementation may consider no storing it.


dia_undo_manager_discard_transaction ()

void                dia_undo_manager_discard_transaction
                                                        (DiaUndoManager *undo_manager);

Discard the current transaction. It is not stored on the undo stack.


dia_undo_manager_undo_transaction ()

void                dia_undo_manager_undo_transaction   (DiaUndoManager *undo_manager);

Undo the actions in the last commited transaction.


dia_undo_manager_redo_transaction ()

void                dia_undo_manager_redo_transaction   (DiaUndoManager *undo_manager);


dia_undo_manager_in_transaction ()

gboolean            dia_undo_manager_in_transaction     (DiaUndoManager *undo_manager);

This function returns TRUE if there is an open transaction.


dia_undo_manager_can_undo ()

gboolean            dia_undo_manager_can_undo           (DiaUndoManager *undo_manager);

Returns :

TRUE if there are transactions that can be undone.

dia_undo_manager_can_redo ()

gboolean            dia_undo_manager_can_redo           (DiaUndoManager *undo_manager);

Returns :

TRUE if there are transactions that can be redone.

struct DiaUndoAction

struct DiaUndoAction {
	DiaUndoFunc undo;
	DiaUndoFunc redo;
	GDestroyNotify destroy;
};


dia_undo_action_new ()

DiaUndoAction *     dia_undo_action_new                 (gsize sizeof_undo_action,
                                                         DiaUndoFunc undo,
                                                         DiaUndoFunc redo,
                                                         GDestroyNotify destroy);

Create a new DiaUndoAction. DiaUndoAction is the object that is passed to the UndoManager. This "class" is normally subclassed, so specific attributes can be stored (this struct is an "abstract class").

sizeof_undo_action :

Size of the real undo entry

undo :

function called on an undo operation

redo :

function called in a redo operation

destroy :

function called to free the resources held by this undo entry

dia_undo_action_undo ()

void                dia_undo_action_undo                (DiaUndoAction *action);


dia_undo_action_redo ()

void                dia_undo_action_redo                (DiaUndoAction *action);


dia_undo_action_destroy ()

void                dia_undo_action_destroy             (DiaUndoAction *action);

Signal Details

The "add-undo-action" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        arg1,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

The "begin-transaction" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

The "commit-transaction" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

The "discard-transaction" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

The "redo-transaction" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

The "undo-transaction" signal

void                user_function                      (DiaUndoManager *diaundomanager,
                                                        gpointer        user_data)           : Run Last

diaundomanager :

the object which received the signal.

user_data :

user data set when the signal handler was connected.

See Also

DiaCanvas