(This is the documentation for SDL3, which is under heavy development and the API is changing! SDL2 is the current stable version!)

SDL_DialogFileCallback

Callback used by file dialog functions.

Header File

Defined in <SDL3/SDL_dialog.h>

Syntax

typedef void(SDLCALL *SDL_DialogFileCallback)(void *userdata, const char * const *filelist, int filter);

Function Parameters

userdata An app-provided pointer, for the callback's use.
filelist The file(s) chosen by the user.
filter Index of the selected filter.

Remarks

The specific usage is described in each function.

If filelist is:

The filelist argument does not need to be freed; it will automatically be freed when the callback returns.

The filter argument is the index of the filter that was selected, or one more than the size of the list (therefore the index of the terminating NULL entry) if no filter was selected, or -1 if the platform or method doesn't support fetching the selected filter.

Version

This datatype is available since SDL 3.0.0.

Code Examples

#include <SDL3/SDL.h>

static const SDL_DialogFileFilter filters[] = {
    { "PNG images",  "png" },
    { "JPEG images", "jpg;jpeg" },
    { "All images",  "png;jpg;jpeg" },
    { "All files",   "*" },
    { NULL, NULL }
};

static void SDLCALL callback(void* userdata, const char* const* filelist, int filter)
{
    if (!filelist) {
        SDL_Log("An error occured: %s", SDL_GetError());
        return;
    } else if (!*filelist) {
        SDL_Log("The user did not select any file.");
        SDL_Log("Most likely, the dialog was canceled.");
        return;
    }

    while (*filelist) {
        SDL_Log("Full path to selected file: '%s'", *filelist);
        filelist++;
    }

    if (filter == -1) {
        SDL_Log("The current platform does not support fetching "
                "the selected filter.");
    } else if (filter < SDL_arraysize(filters)) {
        SDL_Log("The filter selected by the user is '%s' (%s).",
                filters[filter].pattern, filters[filter].name);
    } else {
        SDL_Log("The user did not select any filter.");
    }
}

See Also


CategoryAPI, CategoryAPIDatatype, CategoryDialog