Libfm file launchers

## Libfm file launchers Libfm file launchers — File launching utilities with callbacks to GUI. |

## Synopsis

    struct              FmFileLauncher;
    enum                FmFileLauncherExecAction;
    gboolean            (*FmLaunchFolderFunc)               (GAppLaunchContext *ctx,
                                                             GList *folder_infos,
                                                             gpointer user_data,
                                                             GError **err);
    gboolean            fm_launch_desktop_entry             (GAppLaunchContext *ctx,
                                                             const char *file_or_id,
                                                             GList *uris,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);
    gboolean            fm_launch_files                     (GAppLaunchContext *ctx,
                                                             GList *file_infos,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);
    gboolean            fm_launch_paths                     (GAppLaunchContext *ctx,
                                                             GList *paths,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);

## Description

`include`: libfm/fm.h

## Details

### struct FmFileLauncher

    struct FmFileLauncher {
        GAppInfo* (*get_app)(GList* file_infos, FmMimeType* mime_type, gpointer user_data, GError** err);
        /* gboolean (*before_open)(GAppLaunchContext* ctx, GList* folder_infos, gpointer user_data); */
        FmLaunchFolderFunc open_folder;
        FmFileLauncherExecAction (*exec_file)(FmFileInfo* file, gpointer user_data);
        /* returns TRUE to continue, FALSE to retry */
        gboolean (*error)(GAppLaunchContext* ctx, GError* err, FmPath* file, gpointer user_data);
        int (*ask)(const char* msg, char* const* btn_labels, int default_btn, gpointer user_data);
    };

`get_app` () | callback to get new GAppInfo
FmLaunchFolderFunc `open_folder`; | callback to open folders
`exec_file` () | callback to select file execution mode
`error` () | callback to show error message; returns TRUE to continue, FALSE to retry
`ask` () | callback to ask for user interaction; returns choise from btn_labels

### enum FmFileLauncherExecAction

    typedef enum {
        FM_FILE_LAUNCHER_EXEC = 1,
        FM_FILE_LAUNCHER_EXEC_IN_TERMINAL,
        FM_FILE_LAUNCHER_EXEC_OPEN,
        FM_FILE_LAUNCHER_EXEC_CANCEL
    } FmFileLauncherExecAction;

`FM_FILE_LAUNCHER_EXEC` | execute the file
`FM_FILE_LAUNCHER_EXEC_IN_TERMINAL` | execute the file in terminal
`FM_FILE_LAUNCHER_EXEC_OPEN` | open file with some application
`FM_FILE_LAUNCHER_EXEC_CANCEL` | do nothing

### FmLaunchFolderFunc ()

    gboolean            (*FmLaunchFolderFunc)               (GAppLaunchContext *ctx,
                                                             GList *folder_infos,
                                                             gpointer user_data,
                                                             GError **err);

### fm_launch_desktop_entry ()

    gboolean            fm_launch_desktop_entry             (GAppLaunchContext *ctx,
                                                             const char *file_or_id,
                                                             GList *uris,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);

Launches a desktop entry with optional files.

`ctx` : | a launch context. [allow-none]
`file_or_id` : | a desktop entry to launch
`uris` : | files to use in run substitutions. [element-type char *]
`launcher` : | FmFileLauncher with callbacks
`user_data` : | data supplied for callbacks
Returns : | `TRUE` in case of success.

Since 0.1.0

### fm_launch_files ()

    gboolean            fm_launch_files                     (GAppLaunchContext *ctx,
                                                             GList *file_infos,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);

Launches files using callbacks in `launcher`.

`ctx` : | a launch context. [allow-none]
`file_infos` : | files to launch. [element-type FmFileInfo]
`launcher` : | FmFileLauncher with callbacks
`user_data` : | data supplied for callbacks
Returns : | `TRUE` in case of success.

Since 0.1.0

### fm_launch_paths ()

    gboolean            fm_launch_paths                     (GAppLaunchContext *ctx,
                                                             GList *paths,
                                                             FmFileLauncher *launcher,
                                                             gpointer user_data);

Launches files using callbacks in `launcher`.

`ctx` : | a launch context. [allow-none]
`paths` : | files to launch. [element-type FmPath]
`launcher` : | FmFileLauncher with callbacks
`user_data` : | data supplied for callbacks
Returns : | `TRUE` in case of success.

Since 0.1.0