## ESourceSelector ESourceSelector |

## Synopsis

    struct              ESourceSelector;
    GtkWidget *         e_source_selector_new               (ESourceRegistry *registry,
                                                             const gchar *extension_name);
    ESourceRegistry *   e_source_selector_get_registry      (ESourceSelector *selector);
    const gchar *       e_source_selector_get_extension_name
                                                            (ESourceSelector *selector);
    gboolean            e_source_selector_get_show_colors   (ESourceSelector *selector);
    void                e_source_selector_set_show_colors   (ESourceSelector *selector,
                                                             gboolean show_colors);
    gboolean            e_source_selector_get_show_icons    (ESourceSelector *selector);
    void                e_source_selector_set_show_icons    (ESourceSelector *selector,
                                                             gboolean show_icons);
    gboolean            e_source_selector_get_show_toggles  (ESourceSelector *selector);
    void                e_source_selector_set_show_toggles  (ESourceSelector *selector,
                                                             gboolean show_toggles);
    void                e_source_selector_select_source     (ESourceSelector *selector,
                                                             ESource *source);
    void                e_source_selector_unselect_source   (ESourceSelector *selector,
                                                             ESource *source);
    void                e_source_selector_select_exclusive  (ESourceSelector *selector,
                                                             ESource *source);
    gboolean            e_source_selector_source_is_selected
                                                            (ESourceSelector *selector,
                                                             ESource *source);
    GList *             e_source_selector_get_selection     (ESourceSelector *selector);
    void                e_source_selector_edit_primary_selection
                                                            (ESourceSelector *selector);
    ESource *           e_source_selector_ref_primary_selection
                                                            (ESourceSelector *selector);
    void                e_source_selector_set_primary_selection
                                                            (ESourceSelector *selector,
                                                             ESource *source);
    ESource *           e_source_selector_ref_source_by_iter
                                                            (ESourceSelector *selector,
                                                             GtkTreeIter *iter);
    ESource *           e_source_selector_ref_source_by_path
                                                            (ESourceSelector *selector,
                                                             GtkTreePath *path);
    void                e_source_selector_queue_write       (ESourceSelector *selector,
                                                             ESource *source);
    void                e_source_selector_update_row        (ESourceSelector *selector,
                                                             ESource *source);
    void                e_source_selector_update_all_rows   (ESourceSelector *selector);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkWidget
                   +----GtkContainer
                         +----GtkTreeView
                               +----ESourceSelector
                                     +----EAlarmSelector
                                     +----EAutocompleteSelector
                                     +----EClientSelector
                                     +----EProxyLinkSelector

## Implemented Interfaces

ESourceSelector implements AtkImplementorIface, GtkBuildable and GtkScrollable.

## Properties

      "extension-name"           gchar*                : Read / Write / Construct Only
      "primary-selection"        ESource*              : Read / Write
      "registry"                 ESourceRegistry*      : Read / Write / Construct Only
      "show-colors"              gboolean              : Read / Write
      "show-icons"               gboolean              : Read / Write
      "show-toggles"             gboolean              : Read / Write

## Signals

      "data-dropped"                                   : Run Last
      "popup-event"                                    : Run Last
      "primary-selection-changed"                      : Run Last
      "selection-changed"                              : Run Last

## Description

## Details

### struct ESourceSelector

    struct ESourceSelector;

### e_source_selector_new ()

    GtkWidget *         e_source_selector_new               (ESourceRegistry *registry,
                                                             const gchar *extension_name);

Displays a list of sources from `registry` having an extension named `extension_name`. The sources are grouped by backend or groupware account, which are described by the parent source.

`registry` : | an ESourceRegistry
`extension_name` : | the name of an ESource extension
Returns : | a new ESourceSelector

### e_source_selector_get_registry ()

    ESourceRegistry *   e_source_selector_get_registry      (ESourceSelector *selector);

Returns the ESourceRegistry that `selector` is getting sources from.

`selector` : | an ESourceSelector
Returns : | an ESourceRegistry

Since 3.6

### e_source_selector_get_extension_name ()

    const gchar *       e_source_selector_get_extension_name
                                                            (ESourceSelector *selector);

Returns the extension name used to filter which sources are displayed.

`selector` : | an ESourceSelector
Returns : | the ESource extension name

Since 3.6

### e_source_selector_get_show_colors ()

    gboolean            e_source_selector_get_show_colors   (ESourceSelector *selector);

Returns whether colors are shown next to data sources.

`selector` : | an ESourceSelector
Returns : | `TRUE` if colors are being shown

Since 3.6

### e_source_selector_set_show_colors ()

    void                e_source_selector_set_show_colors   (ESourceSelector *selector,
                                                             gboolean show_colors);

Sets whether to show colors next to data sources.

`selector` : | an ESourceSelector
`show_colors` : | whether to show colors

Since 3.6

### e_source_selector_get_show_icons ()

    gboolean            e_source_selector_get_show_icons    (ESourceSelector *selector);

Returns whether icons are shown next to data sources.

Generally the icon shown will be based on the presence of a backend-based extension, such as ESourceAddressBook or ESourceCalendar. For ESource instances with no such extension, no icon is shown.

`selector` : | an ESourceSelector
Returns : | `TRUE` if icons are being shown

Since 3.12

### e_source_selector_set_show_icons ()

    void                e_source_selector_set_show_icons    (ESourceSelector *selector,
                                                             gboolean show_icons);

Sets whether to show icons next to data sources.

Generally the icon shown will be based on the presence of a backend-based extension, such as ESourceAddressBook or ESourceCalendar. For ESource instances with no such extension, no icon is shown.

`selector` : | an ESourceSelector
`show_icons` : | whether to show icons

Since 3.12

### e_source_selector_get_show_toggles ()

    gboolean            e_source_selector_get_show_toggles  (ESourceSelector *selector);

Returns whether toggles are shown next to data sources.

`selector` : | an ESourceSelector
Returns : | `TRUE` if toggles are being shown

Since 3.6

### e_source_selector_set_show_toggles ()

    void                e_source_selector_set_show_toggles  (ESourceSelector *selector,
                                                             gboolean show_toggles);

Sets whether to show toggles next to data sources.

`selector` : | an ESourceSelector
`show_toggles` : | whether to show toggles

Since 3.6

### e_source_selector_select_source ()

    void                e_source_selector_select_source     (ESourceSelector *selector,
                                                             ESource *source);

Select `source` in `selector`.

`selector` : | An ESourceSelector widget
`source` : | An ESource.

### e_source_selector_unselect_source ()

    void                e_source_selector_unselect_source   (ESourceSelector *selector,
                                                             ESource *source);

Unselect `source` in `selector`.

`selector` : | An ESourceSelector widget
`source` : | An ESource.

### e_source_selector_select_exclusive ()

    void                e_source_selector_select_exclusive  (ESourceSelector *selector,
                                                             ESource *source);

Select `source` in `selector` and unselect all others.

`selector` : | An ESourceSelector widget
`source` : | An ESource.

Since 2.30

### e_source_selector_source_is_selected ()

    gboolean            e_source_selector_source_is_selected
                                                            (ESourceSelector *selector,
                                                             ESource *source);

Check whether `source` is selected in `selector`.

`selector` : | An ESourceSelector widget
`source` : | An ESource.
Returns : | `TRUE` if `source` is currently selected, `FALSE` otherwise.

### e_source_selector_get_selection ()

    GList *             e_source_selector_get_selection     (ESourceSelector *selector);

Returns a list of selected sources, i.e. those that were enabled through the corresponding checkboxes in the tree. The sources are ordered as they appear in `selector`.

The sources returned in the list are referenced for thread-safety. They must each be unreferenced with `g_object_unref()` when finished with them. Free the returned list itself with `g_list_free()`.

An easy way to free the list properly in one step is as follows:

    1
    g_list_free_full (list, g_object_unref);

`selector` : | an ESourceSelector
Returns : | a ordered list of selected sources

### e_source_selector_edit_primary_selection ()

    void                e_source_selector_edit_primary_selection
                                                            (ESourceSelector *selector);

Allows the user to rename the primary selected source by opening an entry box directly in `selector`.

`selector` : | An ESourceSelector widget

Since 2.26

### e_source_selector_ref_primary_selection ()

    ESource *           e_source_selector_ref_primary_selection
                                                            (ESourceSelector *selector);

Get the primary selected source. The primary selection is the one that is highlighted through the normal GtkTreeView selection mechanism (as opposed to the "normal" selection, which is the set of source whose checkboxes are checked).

The returned ESource is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`selector` : | An ESourceSelector widget
Returns : | The selected source.

Since 3.6

### e_source_selector_set_primary_selection ()

    void                e_source_selector_set_primary_selection
                                                            (ESourceSelector *selector,
                                                             ESource *source);

Highlights `source` in `selector`. The highlighted ESource is called the primary selection.

Do not confuse this function with `e_source_selector_select_source()`, which activates the check box next to an ESource's display name in `selector`. This function does not alter the check box.

`selector` : | an ESourceSelector widget
`source` : | an ESource to select

### e_source_selector_ref_source_by_iter ()

    ESource *           e_source_selector_ref_source_by_iter
                                                            (ESourceSelector *selector,
                                                             GtkTreeIter *iter);

Returns the ESource object at `iter`.

The returned ESource is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`selector` : | an ESourceSelector
`iter` : | a GtkTreeIter
Returns : | the ESource object at `iter`, or `NULL`

Since 3.8

### e_source_selector_ref_source_by_path ()

    ESource *           e_source_selector_ref_source_by_path
                                                            (ESourceSelector *selector,
                                                             GtkTreePath *path);

Returns the ESource object at `path`, or `NULL` if `path` is invalid.

The returned ESource is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`selector` : | an ESourceSelector
`path` : | a GtkTreePath
Returns : | the ESource object at `path`, or `NULL`

Since 3.6

### e_source_selector_queue_write ()

    void                e_source_selector_queue_write       (ESourceSelector *selector,
                                                             ESource *source);

Queues a main loop idle callback to write changes to `source` back to the D-Bus registry service.

`selector` : | an ESourceSelector
`source` : | an ESource with changes to be written

Since 3.6

### e_source_selector_update_row ()

    void                e_source_selector_update_row        (ESourceSelector *selector,
                                                             ESource *source);

Updates the corresponding GtkTreeModel row for `source`.

This function is public so it can be called from subclasses like EClientSelector.

`selector` : | an ESourceSelector
`source` : | an ESource

Since 3.8

### e_source_selector_update_all_rows ()

    void                e_source_selector_update_all_rows   (ESourceSelector *selector);

Calls `e_source_selector_update_row()` for each ESource being shown by `selector`, according to the "extension_name" property.

`selector` : | an ESourceSelector

Since 3.10

## Property Details

### The `"extension-name"` property

      "extension-name"           gchar*                : Read / Write / Construct Only

Default value: NULL

### The `"primary-selection"` property

      "primary-selection"        ESource*              : Read / Write

### The `"registry"` property

      "registry"                 ESourceRegistry*      : Read / Write / Construct Only

### The `"show-colors"` property

      "show-colors"              gboolean              : Read / Write

Default value: TRUE

### The `"show-icons"` property

      "show-icons"               gboolean              : Read / Write

Default value: TRUE

### The `"show-toggles"` property

      "show-toggles"             gboolean              : Read / Write

Default value: TRUE

## Signal Details

### The `"data-dropped"` signal

    gboolean            user_function                      (ESourceSelector  *esourceselector,
                                                            GtkSelectionData *arg1,
                                                            ESource          *arg2,
                                                            GdkDragAction     arg3,
                                                            guint             arg4,
                                                            gpointer          user_data)            : Run Last

### The `"popup-event"` signal

    gboolean            user_function                      (ESourceSelector *esourceselector,
                                                            GObject         *arg1,
                                                            GdkEvent        *arg2,
                                                            gpointer         user_data)            : Run Last

### The `"primary-selection-changed"` signal

    void                user_function                      (ESourceSelector *esourceselector,
                                                            gpointer         user_data)            : Run Last

### The `"selection-changed"` signal

    void                user_function                      (ESourceSelector *esourceselector,
                                                            gpointer         user_data)            : Run Last