## IAnjutaMarkable IAnjutaMarkable — Implemented by editors (or views) with markers support |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_TYPE_MARKABLE_ERROR
    #define             IANJUTA_TYPE_MARKABLE_MARKER
    #define             IANJUTA_MARKABLE_ERROR
                        IAnjutaMarkable;
                        IAnjutaMarkableIface;
    enum                IAnjutaMarkableError;
    enum                IAnjutaMarkableMarker;
    GType               ianjuta_markable_marker_get_type    (void);
    GQuark              ianjuta_markable_error_quark        (void);
    GType               ianjuta_markable_get_type           (void);
    void                ianjuta_markable_delete_all_markers (IAnjutaMarkable *obj,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);
    gboolean            ianjuta_markable_is_marker_set      (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);
    gint                ianjuta_markable_location_from_handle
                                                            (IAnjutaMarkable *obj,
                                                             gint handle,
                                                             GError **err);
    gint                ianjuta_markable_mark               (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);
    void                ianjuta_markable_unmark             (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);

## Object Hierarchy

      GInterface
       +----IAnjutaMarkable

## Prerequisites

IAnjutaMarkable requires GObject.

## Signals

      "marker-clicked"                                 : Run Last

## Description

## Details

### IANJUTA_TYPE_MARKABLE_ERROR

    #define IANJUTA_TYPE_MARKABLE_ERROR (ianjuta_markable_error_get_type())

### IANJUTA_TYPE_MARKABLE_MARKER

    #define IANJUTA_TYPE_MARKABLE_MARKER (ianjuta_markable_marker_get_type())

### IANJUTA_MARKABLE_ERROR

    #define IANJUTA_MARKABLE_ERROR ianjuta_markable_error_quark()

### IAnjutaMarkable

    typedef struct _IAnjutaMarkable IAnjutaMarkable;

### IAnjutaMarkableIface

    typedef struct {
    	GTypeInterface g_iface;

    	/* Signal */
    	void (*marker_clicked) (IAnjutaMarkable *obj, gboolean double_click,  gint location);

    	void (*delete_all_markers) (IAnjutaMarkable *obj, IAnjutaMarkableMarker marker, GError **err);
    	gboolean (*is_marker_set) (IAnjutaMarkable *obj, gint location,  IAnjutaMarkableMarker marker, GError **err);
    	gint (*location_from_handle) (IAnjutaMarkable *obj, gint handle, GError **err);
    	gint (*mark) (IAnjutaMarkable *obj, gint location,  IAnjutaMarkableMarker marker, GError **err);
    	void (*unmark) (IAnjutaMarkable *obj, gint location,  IAnjutaMarkableMarker marker, GError **err);
    } IAnjutaMarkableIface;

### enum IAnjutaMarkableError

    typedef enum {
    	IANJUTA_MARKABLE_INVALID_LOCATION
    } IAnjutaMarkableError;

### enum IAnjutaMarkableMarker

    typedef enum {
    	IANJUTA_MARKABLE_LINEMARKER,
    	IANJUTA_MARKABLE_BOOKMARK,
    	IANJUTA_MARKABLE_BREAKPOINT_DISABLED,
    	IANJUTA_MARKABLE_BREAKPOINT_ENABLED,
    	IANJUTA_MARKABLE_PROGRAM_COUNTER
    } IAnjutaMarkableMarker;

This enumeration is used to specify the pixmap used for the marker

`IANJUTA_MARKABLE_LINEMARKER` | Mark a particular line
`IANJUTA_MARKABLE_BOOKMARK` | A bookmark
`IANJUTA_MARKABLE_BREAKPOINT_DISABLED` | a disabled breakpoint
`IANJUTA_MARKABLE_BREAKPOINT_ENABLED` | a enabled breakpoint
`IANJUTA_MARKABLE_PROGRAM_COUNTER` | Marks the program counter position

### ianjuta_markable_marker_get_type ()

    GType               ianjuta_markable_marker_get_type    (void);

Returns : |

### ianjuta_markable_error_quark ()

    GQuark              ianjuta_markable_error_quark        (void);

Returns : |

### ianjuta_markable_get_type ()

    GType               ianjuta_markable_get_type           (void);

Returns : |

### ianjuta_markable_delete_all_markers ()

    void                ianjuta_markable_delete_all_markers (IAnjutaMarkable *obj,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);

Delete the `marker` from all locations.

`obj` : | Self
`marker` : | Marker to delete.
`err` : | Error propagation and reporting

### ianjuta_markable_is_marker_set ()

    gboolean            ianjuta_markable_is_marker_set      (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);

Check if the `marker` is set at the given `location`.

`obj` : | Self
`location` : | Location to check.
`marker` : | Marker to check.
`err` : | Error propagation and reporting
Returns : | TRUE if the marker is set at the location, other false.

### ianjuta_markable_location_from_handle ()

    gint                ianjuta_markable_location_from_handle
                                                            (IAnjutaMarkable *obj,
                                                             gint handle,
                                                             GError **err);

Location where a marker is set could have moved by some operation in the implementation. To retrieve the correct location where the marker has moved, pass the handle retured by `ianjuta_markable_mark()` to this method.

`obj` : | Self
`handle` : | Handle of location.
`err` : | Error propagation and reporting
Returns : | Current location where the marker was set.

### ianjuta_markable_mark ()

    gint                ianjuta_markable_mark               (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);

Marks the specified location with the given marker type. Location is implementation depenedent. For example, for an editor location means lines where markers are set.

`obj` : | Self
`location` : | Location at which the marker to set.
`marker` : | Type of marker to be used
`err` : | Error propagation and reporting
Returns : | Handle of the location marked. Can be used later to obtain new location, if it has been moved due to addetions/deletions in the implementor object.

### ianjuta_markable_unmark ()

    void                ianjuta_markable_unmark             (IAnjutaMarkable *obj,
                                                             gint location,
                                                             IAnjutaMarkableMarker marker,
                                                             GError **err);

Clears the `marker` at given `location`.

`obj` : | Self
`location` : | Location where the marker is set.
`marker` : | The marker to unset.
`err` : | Error propagation and reporting

## Signal Details

### The `"marker-clicked"` signal

    void                user_function                      (IAnjutaMarkable *obj,
                                                            gboolean         double_click,
                                                            gint             location,
                                                            gpointer         user_data)         : Run Last

The signal is emitted when the user clicks on a marker

`obj` : | Self
`double_click` : | whether the marker was double clicked
`location` : | location of the clicked marker
`user_data` : | user data set when the signal handler was connected.