## IAnjutaDocumentManager IAnjutaDocumentManager — Interface for plugin that manages all the editors |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_TYPE_DOCUMENT_MANAGER_ERROR
    enum                IAnjutaDocumentManagerError;
    #define             IANJUTA_DOCUMENT_MANAGER_ERROR
                        IAnjutaDocumentManager;
                        IAnjutaDocumentManagerIface;
    GQuark              ianjuta_document_manager_error_quark
                                                            (void);
    GType               ianjuta_document_manager_get_type   (void);
    IAnjutaEditor*      ianjuta_document_manager_add_buffer (IAnjutaDocumentManager *obj,
                                                             const gchar *name,
                                                             const gchar *content,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_find_editor_with_path
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file_path,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_get_current_editor
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);
    GList*              ianjuta_document_manager_get_editors
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);
    const gchar*        ianjuta_document_manager_get_full_filename
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_goto_file_line
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             gint lineno,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_goto_file_line_mark
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             gint lineno,
                                                             gboolean mark,
                                                             GError **err);
    gboolean            ianjuta_document_manager_remove_buffer
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaEditor *editor,
                                                             gboolean save_before,
                                                             GError **err);
    void                ianjuta_document_manager_set_current_editor
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaEditor *editor,
                                                             GError **err);

## Object Hierarchy

      GInterface
       +----IAnjutaDocumentManager

## Prerequisites

IAnjutaDocumentManager requires GObject.

## Description

## Details

### IANJUTA_TYPE_DOCUMENT_MANAGER_ERROR

    #define IANJUTA_TYPE_DOCUMENT_MANAGER_ERROR (ianjuta_document_manager_error_get_type())

### enum IAnjutaDocumentManagerError

    typedef enum {
    	IANJUTA_DOCUMENT_MANAGER_DOESNT_EXIST
    } IAnjutaDocumentManagerError;

### IANJUTA_DOCUMENT_MANAGER_ERROR

    #define IANJUTA_DOCUMENT_MANAGER_ERROR ianjuta_document_manager_error_quark()

### IAnjutaDocumentManager

    typedef struct _IAnjutaDocumentManager IAnjutaDocumentManager;

### IAnjutaDocumentManagerIface

    typedef struct {
    	GTypeInterface g_iface;

    	IAnjutaEditor* (*add_buffer) (IAnjutaDocumentManager *obj, const gchar *name,  const gchar* content, GError **err);
    	IAnjutaEditor* (*find_editor_with_path) (IAnjutaDocumentManager *obj, const gchar *file_path, GError **err);
    	IAnjutaEditor* (*get_current_editor) (IAnjutaDocumentManager *obj, GError **err);
    	GList* (*get_editors) (IAnjutaDocumentManager *obj, GError **err);
    	const gchar* (*get_full_filename) (IAnjutaDocumentManager *obj, const gchar *file, GError **err);
    	IAnjutaEditor* (*goto_file_line) (IAnjutaDocumentManager *obj, const gchar *file,  gint lineno, GError **err);
    	IAnjutaEditor* (*goto_file_line_mark) (IAnjutaDocumentManager *obj, const gchar *file,  gint lineno,  gboolean mark, GError **err);
    	gboolean (*remove_buffer) (IAnjutaDocumentManager *obj, IAnjutaEditor *editor,  gboolean save_before, GError **err);
    	void (*set_current_editor) (IAnjutaDocumentManager *obj, IAnjutaEditor *editor, GError **err);
    } IAnjutaDocumentManagerIface;

### ianjuta_document_manager_error_quark ()

    GQuark              ianjuta_document_manager_error_quark
                                                            (void);

Returns : |

### ianjuta_document_manager_get_type ()

    GType               ianjuta_document_manager_get_type   (void);

Returns : |

### ianjuta_document_manager_add_buffer ()

    IAnjutaEditor*      ianjuta_document_manager_add_buffer (IAnjutaDocumentManager *obj,
                                                             const gchar *name,
                                                             const gchar *content,
                                                             GError **err);

Creates a new editor buffer of the given name and sets the given content as its initial content.

`obj` : | Self
`name` : | Name of the editor buffer.
`content` : | Initial content of the buffer.
`err` : | Error propagation and reporting.
Returns : | the IAnjutaEditor instance that has been added.

### ianjuta_document_manager_find_editor_with_path ()

    IAnjutaEditor*      ianjuta_document_manager_find_editor_with_path
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file_path,
                                                             GError **err);

Finds the editor that has the file with path `file_path` loaded. Only the editor that matches the file path will be searched.

`obj` : | Self
`file_path` : | the file path.
`err` : | Error propagation and reporting.
Returns : | the editor that corresponds to given file path. NULL if there is no editor loaded with this file path.

### ianjuta_document_manager_get_current_editor ()

    IAnjutaEditor*      ianjuta_document_manager_get_current_editor
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);

Gets the current editor.

`obj` : | Self
`err` : | Error propagation and reporting.
Returns : | the currently active editor. NULL if none is there.

### ianjuta_document_manager_get_editors ()

    GList*              ianjuta_document_manager_get_editors
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);

Gets the current list of editors.

`obj` : | Self
`err` : | Error propagation and reporting.
Returns : | the list of current available editors. The returned list must be freed after use (not the editor objects in the list).

### ianjuta_document_manager_get_full_filename ()

    const gchar*        ianjuta_document_manager_get_full_filename
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             GError **err);

Given the short filename, finds the full path of the file, if the editor that has it loaded is found. If there is no editor that has this file opened, returns NULL.

`obj` : | Self
`file` : | short filename
`err` : | Error propagation and reporting.
Returns : | the full path of the file, if an editor is found for it.

### ianjuta_document_manager_goto_file_line ()

    IAnjutaEditor*      ianjuta_document_manager_goto_file_line
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             gint lineno,
                                                             GError **err);

Loads the given file if not loaded yet, set its editor as current editor and moves cursor to the given line in the editor.

`obj` : | Self
`file` : | the file to go to.
`lineno` : | the line number in the file to go to.
`err` : | Error propagation and reporting.
Returns : | the editor where the mark has been put. NULL if none.

### ianjuta_document_manager_goto_file_line_mark ()

    IAnjutaEditor*      ianjuta_document_manager_goto_file_line_mark
                                                            (IAnjutaDocumentManager *obj,
                                                             const gchar *file,
                                                             gint lineno,
                                                             gboolean mark,
                                                             GError **err);

Loads the given file if not loaded yet, set its editor as current editor and moves cursor to the given line in the editor. Optionally also marks the line with line marker if `mark` is given TRUE.

`obj` : | Self
`file` : | the file to go to.
`lineno` : | the line number in the file to go to.
`mark` : | TRUE if the line should be marked with a marker.
`err` : | Error propagation and reporting
Returns : | the editor where the mark has been put. NULL if none.

### ianjuta_document_manager_remove_buffer ()

    gboolean            ianjuta_document_manager_remove_buffer
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaEditor *editor,
                                                             gboolean save_before,
                                                             GError **err);

Closes and removes the given editor buffer. If `save_before` is TRUE, also saves the editor before closing.

`obj` : | Self
`editor` : | Editor buffer to close.
`save_before` : | If true, saves the editor before closing.
`err` : | Error propagation and reporting.
Returns : | TRUE if the editor was removed, else FALSE.

### ianjuta_document_manager_set_current_editor ()

    void                ianjuta_document_manager_set_current_editor
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaEditor *editor,
                                                             GError **err);

Sets the given editor as current editor.

`obj` : | Self
`editor` : | the editor to set as current.
`err` : | Error propagation and reporting.