## 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
    #define             IANJUTA_DOCUMENT_MANAGER_ERROR
    #define             IANJUTA_DOCUMENT_MANAGER_CURRENT_DOCUMENT
                        IAnjutaDocumentManager;
                        IAnjutaDocumentManagerIface;
    enum                IAnjutaDocumentManagerError;
    GQuark              ianjuta_document_manager_error_quark
                                                            (void);
    GType               ianjuta_document_manager_get_type   (void);
    void                ianjuta_document_manager_add_bookmark
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             gint line,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_add_buffer (IAnjutaDocumentManager *obj,
                                                             const gchar *name,
                                                             const gchar *content,
                                                             GError **err);
    void                ianjuta_document_manager_add_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             GError **err);
    IAnjutaDocument*    ianjuta_document_manager_find_document_with_file
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             GError **err);
    IAnjutaDocument*    ianjuta_document_manager_get_current_document
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);
    GList*              ianjuta_document_manager_get_doc_widgets
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);
    GFile*              ianjuta_document_manager_get_file   (IAnjutaDocumentManager *obj,
                                                             const gchar *filename,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_goto_file_line
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             gint lineno,
                                                             GError **err);
    IAnjutaEditor*      ianjuta_document_manager_goto_file_line_mark
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             gint lineno,
                                                             gboolean mark,
                                                             GError **err);
    gboolean            ianjuta_document_manager_remove_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             gboolean save_before,
                                                             GError **err);
    void                ianjuta_document_manager_set_current_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             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())

### IANJUTA_DOCUMENT_MANAGER_ERROR

    #define IANJUTA_DOCUMENT_MANAGER_ERROR ianjuta_document_manager_error_quark()

### IANJUTA_DOCUMENT_MANAGER_CURRENT_DOCUMENT

    #define IANJUTA_DOCUMENT_MANAGER_CURRENT_DOCUMENT "document_manager_current_document"

Anjuta shell value set by document manager to the current document

### IAnjutaDocumentManager

    typedef struct _IAnjutaDocumentManager IAnjutaDocumentManager;

### IAnjutaDocumentManagerIface

    typedef struct {
    	GTypeInterface g_iface;

    	void (*add_bookmark) (IAnjutaDocumentManager *obj, GFile* file,  gint line, GError **err);
    	IAnjutaEditor* (*add_buffer) (IAnjutaDocumentManager *obj, const gchar *name,  const gchar* content, GError **err);
    	void (*add_document) (IAnjutaDocumentManager *obj, IAnjutaDocument* document, GError **err);
    	IAnjutaDocument* (*find_document_with_file) (IAnjutaDocumentManager *obj, GFile* file, GError **err);
    	IAnjutaDocument* (*get_current_document) (IAnjutaDocumentManager *obj, GError **err);
    	GList* (*get_doc_widgets) (IAnjutaDocumentManager *obj, GError **err);
    	GFile* (*get_file) (IAnjutaDocumentManager *obj, const gchar *filename, GError **err);
    	IAnjutaEditor* (*goto_file_line) (IAnjutaDocumentManager *obj, GFile* file,  gint lineno, GError **err);
    	IAnjutaEditor* (*goto_file_line_mark) (IAnjutaDocumentManager *obj, GFile* file,  gint lineno,  gboolean mark, GError **err);
    	gboolean (*remove_document) (IAnjutaDocumentManager *obj, IAnjutaDocument *document,  gboolean save_before, GError **err);
    	void (*set_current_document) (IAnjutaDocumentManager *obj, IAnjutaDocument *document, GError **err);
    } IAnjutaDocumentManagerIface;

### enum IAnjutaDocumentManagerError

    typedef enum {
    	IANJUTA_DOCUMENT_MANAGER_DOESNT_EXIST
    } IAnjutaDocumentManagerError;

### 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_bookmark ()

    void                ianjuta_document_manager_add_bookmark
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             gint line,
                                                             GError **err);

`obj` : |
`file` : |
`line` : |
`err` : |

### 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_add_document ()

    void                ianjuta_document_manager_add_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             GError **err);

Adds a document to the document manager. This will open a new Notebook tab and show the document there

`obj` : | Self
`document` : | the document to add
`err` : | Error propagation and reporting.

### ianjuta_document_manager_find_document_with_file ()

    IAnjutaDocument*    ianjuta_document_manager_find_document_with_file
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *file,
                                                             GError **err);

Finds the document that has the file loaded. Only the editor that matches the file will be searched.

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

### ianjuta_document_manager_get_current_document ()

    IAnjutaDocument*    ianjuta_document_manager_get_current_document
                                                            (IAnjutaDocumentManager *obj,
                                                             GError **err);

Gets the current document.

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

### ianjuta_document_manager_get_doc_widgets ()

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

Gets a list of widgets for open documents. Each widget is a GTK_WIDGET(IAnjutaDocument*)

`obj` : | Self
`err` : | Error propagation and reporting.
Returns : | a list of widgets for all open documents. The returned list (but not the data in the list) must be freed after use. [element-type GtkWidget][transfer container GtkWidget]

### ianjuta_document_manager_get_file ()

    GFile*              ianjuta_document_manager_get_file   (IAnjutaDocumentManager *obj,
                                                             const gchar *filename,
                                                             GError **err);

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

`obj` : | Self
`filename` : | short filename
`err` : | Error propagation and reporting.
Returns : | the GFile for the given short filename

### ianjuta_document_manager_goto_file_line ()

    IAnjutaEditor*      ianjuta_document_manager_goto_file_line
                                                            (IAnjutaDocumentManager *obj,
                                                             GFile *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` : | 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,
                                                             GFile *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` : | 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_document ()

    gboolean            ianjuta_document_manager_remove_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             gboolean save_before,
                                                             GError **err);

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

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

### ianjuta_document_manager_set_current_document ()

    void                ianjuta_document_manager_set_current_document
                                                            (IAnjutaDocumentManager *obj,
                                                             IAnjutaDocument *document,
                                                             GError **err);

Sets the given document as current document.

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