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);
                    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))

obj :

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.

undo_manager :

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.

undo_manager :

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.

undo_manager :

dia_undo_manager_undo_transaction ()

void                dia_undo_manager_undo_transaction   (DiaUndoManager *undo_manager);

Undo the actions in the last commited transaction.

undo_manager :

dia_undo_manager_redo_transaction ()

void                dia_undo_manager_redo_transaction   (DiaUndoManager *undo_manager);

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.

undo_manager :
Returns :

dia_undo_manager_can_undo ()

gboolean            dia_undo_manager_can_undo           (DiaUndoManager *undo_manager);

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);

undo_manager :
Returns : TRUE if there are transactions that can be redone.

DiaUndoAction

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


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
Returns :

dia_undo_action_undo ()

void                dia_undo_action_undo                (DiaUndoAction *action);

action :

dia_undo_action_redo ()

void                dia_undo_action_redo                (DiaUndoAction *action);

action :

dia_undo_action_destroy ()

void                dia_undo_action_destroy             (DiaUndoAction *action);

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.
arg1 :
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