Callback used by file dialog functions.
Defined in <SDL3/SDL_dialog.h>
userdata | An app-provided pointer, for the callback's use. |
filelist | The file(s) chosen by the user. |
filter | Index of the selected filter. |
The specific usage is described in each function.
If filelist
is:
NULL
, the user chose one or more files. The argument is a null-terminated list of pointers to C strings, each containing a path.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.
This datatype is available since SDL 3.0.0.
#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.");
}
}