## IAnjutaDocument IAnjutaDocument — Interface for all kind of editable resources that will be managed by IAnjutaDocumentManager |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #include <libanjuta/interfaces/ianjuta-document.h>

    #define             IANJUTA_DOCUMENT_ERROR
                        IAnjutaDocument;
                        IAnjutaDocumentIface;
    GQuark              ianjuta_document_error_quark        (void);
    void                ianjuta_document_begin_undo_action  (IAnjutaDocument *obj,
                                                             GError **err);
    gboolean            ianjuta_document_can_redo           (IAnjutaDocument *obj,
                                                             GError **err);
    gboolean            ianjuta_document_can_undo           (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_clear              (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_copy               (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_cut                (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_end_undo_action    (IAnjutaDocument *obj,
                                                             GError **err);
    const gchar*        ianjuta_document_get_filename       (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_grab_focus         (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_paste              (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_redo               (IAnjutaDocument *obj,
                                                             GError **err);
    void                ianjuta_document_undo               (IAnjutaDocument *obj,
                                                             GError **err);

## Object Hierarchy

      GInterface
       +----IAnjutaDocument

## Prerequisites

IAnjutaDocument requires GObject.

## Signals

      "update-ui"                                      : Run Last

## Description

## Details

### IANJUTA_DOCUMENT_ERROR

    #define IANJUTA_DOCUMENT_ERROR ianjuta_document_error_quark()

### IAnjutaDocument

    typedef struct _IAnjutaDocument IAnjutaDocument;

### IAnjutaDocumentIface

    typedef struct {
    	GTypeInterface g_iface;

    	/* Signal */
    	void (*update_ui) (IAnjutaDocument *obj);

    	void (*begin_undo_action) (IAnjutaDocument *obj, GError **err);
    	gboolean (*can_redo) (IAnjutaDocument *obj, GError **err);
    	gboolean (*can_undo) (IAnjutaDocument *obj, GError **err);
    	void (*clear) (IAnjutaDocument *obj, GError **err);
    	void (*copy) (IAnjutaDocument *obj, GError **err);
    	void (*cut) (IAnjutaDocument *obj, GError **err);
    	void (*end_undo_action) (IAnjutaDocument *obj, GError **err);
    	const gchar* (*get_filename) (IAnjutaDocument *obj, GError **err);
    	void (*grab_focus) (IAnjutaDocument *obj, GError **err);
    	void (*paste) (IAnjutaDocument *obj, GError **err);
    	void (*redo) (IAnjutaDocument *obj, GError **err);
    	void (*undo) (IAnjutaDocument *obj, GError **err);
    } IAnjutaDocumentIface;

### ianjuta_document_error_quark ()

    GQuark              ianjuta_document_error_quark        (void);

Returns : |

### ianjuta_document_begin_undo_action ()

    void                ianjuta_document_begin_undo_action  (IAnjutaDocument *obj,
                                                             GError **err);

Begins the mark of undoable action. Calls to this are stacked and each must be ended with `ianjuta_document_end_action()`.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_can_redo ()

    gboolean            ianjuta_document_can_redo           (IAnjutaDocument *obj,
                                                             GError **err);

Can the editor redo the last operation?

`obj` : | Self
`err` : | Error propagation and reporting
Returns : | TRUE if editor can redo, else FALSE

### ianjuta_document_can_undo ()

    gboolean            ianjuta_document_can_undo           (IAnjutaDocument *obj,
                                                             GError **err);

Can the editor undo the last operation?

`obj` : | Self
`err` : | Error propagation and reporting
Returns : | TRUE if editor can undo, else FALSE

### ianjuta_document_clear ()

    void                ianjuta_document_clear              (IAnjutaDocument *obj,
                                                             GError **err);

Clear selection

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_copy ()

    void                ianjuta_document_copy               (IAnjutaDocument *obj,
                                                             GError **err);

Copy selection to clipboard.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_cut ()

    void                ianjuta_document_cut                (IAnjutaDocument *obj,
                                                             GError **err);

Cut selection to clipboard.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_end_undo_action ()

    void                ianjuta_document_end_undo_action    (IAnjutaDocument *obj,
                                                             GError **err);

Ends the mark of undoable action.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_get_filename ()

    const gchar*        ianjuta_document_get_filename       (IAnjutaDocument *obj,
                                                             GError **err);

Allows obtaining of the filename the editor was loaded from.

`obj` : | Self
`err` : | Error propagation and reporting
Returns : | The name of the file. Not to be freed by caller.

### ianjuta_document_grab_focus ()

    void                ianjuta_document_grab_focus         (IAnjutaDocument *obj,
                                                             GError **err);

Grabs the focus.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_paste ()

    void                ianjuta_document_paste              (IAnjutaDocument *obj,
                                                             GError **err);

Paste clipboard at current position.

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_redo ()

    void                ianjuta_document_redo               (IAnjutaDocument *obj,
                                                             GError **err);

Redo last undo operation

`obj` : | Self
`err` : | Error propagation and reporting

### ianjuta_document_undo ()

    void                ianjuta_document_undo               (IAnjutaDocument *obj,
                                                             GError **err);

Undo last operation

`obj` : | Self
`err` : | Error propagation and reporting

## Signal Details

### The `"update-ui"` signal

    void                user_function                      (IAnjutaDocument *obj,
                                                            gpointer         user_data)      : Run Last

This signal is emitted when the document assumes the UI must be updated because some internal state of the document has changed. For example, if current line position is changed, it needs to be reflected to the UI.

`obj` : | Self
`user_data` : | user data set when the signal handler was connected.