## EShellBackend

EShellBackend — dynamically loaded capabilities

## Functions

gint | e_shell_backend_compare ()
const gchar * | e_shell_backend_get_config_dir ()
const gchar * | e_shell_backend_get_data_dir ()
struct _EShell * | e_shell_backend_get_shell ()
void | e_shell_backend_add_activity ()
gboolean | e_shell_backend_is_busy ()
void | e_shell_backend_set_prefer_new_item ()
const gchar * | e_shell_backend_get_prefer_new_item ()
void | e_shell_backend_cancel_all ()
void | e_shell_backend_start ()
gboolean | e_shell_backend_is_started ()
gboolean | e_shell_backend_migrate ()

## Properties

gboolean | busy | Read
char * | prefer-new-item | Read / Write

## Signals

void | activity-added | Run Last

## Types and Values

struct | EShellBackend
struct | EShellBackendClass

## Object Hierarchy

        GObject
        ╰── EExtension
            ╰── EShellBackend

## Includes

    #include <shell/e-shell-backend.h>

## Description

## Functions

### e_shell_backend_compare ()

    gint
    e_shell_backend_compare (EShellBackend *shell_backend_a,
                             EShellBackend *shell_backend_b);

Using the `sort_order` field from both backends' EShellBackendClass, compares `shell_backend_a` with `shell_mobule_b` and returns -1, 0 or +1 if `shell_backend_a` is found to be less than, equal to or greater than `shell_backend_b` , respectively.

#### Parameters

shell_backend_a | an EShellBackend |
shell_backend_b | an EShellBackend |

#### Returns

-1, 0 or +1, for a less than, equal to or greater than result

### e_shell_backend_get_config_dir ()

    const gchar *
    e_shell_backend_get_config_dir (EShellBackend *shell_backend);

Returns the absolute path to the configuration directory for `shell_backend` . The string is owned by `shell_backend` and should not be modified or freed.

#### Parameters

shell_backend | an EShellBackend |

#### Returns

the backend's configuration directory

### e_shell_backend_get_data_dir ()

    const gchar *
    e_shell_backend_get_data_dir (EShellBackend *shell_backend);

Returns the absolute path to the data directory for `shell_backend` . The string is owned by `shell_backend` and should not be modified or freed.

#### Parameters

shell_backend | an EShellBackend |

#### Returns

the backend's data directory

### e_shell_backend_get_shell ()

    struct _EShell *
    e_shell_backend_get_shell (EShellBackend *shell_backend);

Returns the EShell singleton.

#### Parameters

shell_backend | an EShellBackend |

#### Returns

the EShell

### e_shell_backend_add_activity ()

    void
    e_shell_backend_add_activity (EShellBackend *shell_backend,
                                  EActivity *activity);

Emits an “activity-added” signal and tracks the `activity` until it is finalized.

#### Parameters

shell_backend | an EShellBackend |
activity | an EActivity |

### e_shell_backend_is_busy ()

    gboolean
    e_shell_backend_is_busy (EShellBackend *shell_backend);

Returns `TRUE` if any activities passed to `e_shell_backend_add_activity()` are still in progress, `FALSE` if the `shell_backend` is currently idle.

#### Parameters

shell_backend | an EShellBackend |

#### Returns

`TRUE` if activities are still in progress

### e_shell_backend_set_prefer_new_item ()

    void
    e_shell_backend_set_prefer_new_item (EShellBackend *shell_backend,
                                         const gchar *prefer_new_item);

Sets name of a preferred item in New toolbar button. Use `NULL` or an empty string for no preference.

#### Parameters

shell_backend | an EShellBackend |
prefer_new_item | name of an item |

Since: 3.4

### e_shell_backend_get_prefer_new_item ()

    const gchar *
    e_shell_backend_get_prefer_new_item (EShellBackend *shell_backend);

#### Parameters

shell_backend | an EShellBackend |

#### Returns

Name of a preferred item in New toolbar button, `NULL` or an empty string for no preference.

Since: 3.4

### e_shell_backend_cancel_all ()

    void
    e_shell_backend_cancel_all (EShellBackend *shell_backend);

Cancels all activities passed to `e_shell_backend_add_activity()` that have not already been finalized. Note that an EActivity can only be cancelled if it was given a GCancellable object.

Also, assuming all activities are cancellable, there may still be a delay before `e_shell_backend_is_busy()` returns `FALSE`, because some activities may not be able to respond to the cancellation request immediately. Connect to the "notify::busy" signal if you need notification of `shell_backend` becoming idle.

#### Parameters

shell_backend | an EShellBackend |

### e_shell_backend_start ()

    void
    e_shell_backend_start (EShellBackend *shell_backend);

Tells the `shell_backend` to begin loading data or running background tasks which may consume significant resources. This gets called in reponse to the user switching to the corresponding EShellView for the first time. The function is idempotent for each `shell_backend` .

#### Parameters

shell_backend | an EShellBackend |

### e_shell_backend_is_started ()

    gboolean
    e_shell_backend_is_started (EShellBackend *shell_backend);

Returns whether `e_shell_backend_start()` was called for `shell_backend` .

#### Parameters

shell_backend | an EShellBackend |

#### Returns

whether `shell_backend` is started

### e_shell_backend_migrate ()

    gboolean
    e_shell_backend_migrate (EShellBackend *shell_backend,
                             gint major,
                             gint minor,
                             gint micro,
                             GError **error);

Attempts to migrate data and settings from version `major`.`minor`.`micro`. Returns `TRUE` if the migration was successful or if no action was necessary. Returns `FALSE` and sets `error` if the migration failed.

#### Parameters

shell_backend | an EShellBackend |
major | major part of version to migrate from |
minor | minor part of version to migrate from |
micro | micro part of version to migrate from |
error | return location for a GError, or `NULL` |

#### Returns

`TRUE` if successful, `FALSE` otherwise

## Types and Values

### struct EShellBackend

    struct EShellBackend;

Contains only private data that should be read and manipulated using the functions below.

### struct EShellBackendClass

    struct EShellBackendClass {
    	EExtensionClass parent_class;

    	GType shell_view_type;

    	const gchar *name;
    	const gchar *aliases;
    	const gchar *schemes;
    	gint sort_order;
    	const gchar *preferences_page;

    	/* Methods */
    	void		(*start)		(EShellBackend *shell_backend);
    	gboolean (*migrate)		(EShellBackend *shell_backend,
    						 gint major,
    						 gint minor,
    						 gint micro,
    						 GError **error);
    	const gchar * (*get_config_dir) (EShellBackend *shell_backend);
    	const gchar * (*get_data_dir)		(EShellBackend *shell_backend);
    };

EShellBackendClass contains a number of important settings for subclasses.

#### Members

GType `shell_view_type`; | GType for the corresponding EShellView subclass. |
const gchar *`name`; | The name of the backend. Also becomes the name of the corresponding EShellView subclass that the backend will register. |
const gchar *`aliases`; | Colon-separated list of aliases that can be used when referring to a backend by name. |
const gchar *`schemes`; | Colon-separated list of URI schemes. The EShell will forward command-line URIs to the appropriate backend based on this list. |
gint `sort_order`; | Used to determine the order of backends listed in the main menu and in the switcher. See `e_shell_backend_compare()`. |
const gchar *`preferences_page`; |  |
`start` () | Method for notifying the backend to begin loading data and running background tasks. This is called just before the first instantiation of the corresponding EShellView subclass. It allows the backend to delay initialization steps that consume significant resources until they are actually needed. |
`migrate` () | Method for notifying the backend to migrate data and settings from the given version. Returns `TRUE` if the migration was successful or if no action was necessary. Returns `FALSE` and sets a GError if the migration failed. |
`get_config_dir` () |  |
`get_data_dir` () |  |

## Property Details

### The `“busy”` property

      “busy”                     gboolean

Whether any activities are still in progress.

Owner: EShellBackend

Flags: Read

Default value: FALSE

### The `“prefer-new-item”` property

      “prefer-new-item”          char *

Name of an item to prefer in New toolbar button; can be NULL

Owner: EShellBackend

Flags: Read / Write

Default value: NULL

## Signal Details

### The `“activity-added”` signal

    void
    user_function (EShellBackend *shell_backend,
                   EActivity     *activity,
                   gpointer       user_data)

Broadcasts a newly added activity.

#### Parameters

shell_backend | the EShellBackend that emitted the signal |
activity | an EActivity |
user_data | user data set when the signal handler was connected. |

Flags: Run Last