SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp_dialog.h
1#ifndef SDL3PP_DIALOG_H_
2#define SDL3PP_DIALOG_H_
3
4#include <SDL3/SDL_dialog.h>
5#include "SDL3pp_properties.h"
6#include "SDL3pp_stdinc.h"
7#include "SDL3pp_video.h"
8
9namespace SDL {
10
45using DialogFileFilter = SDL_DialogFileFilter;
46
84using DialogFileCallback = SDL_DialogFileCallback;
85
123using DialogFileCB = std::function<void(const char* const*, int)>;
124
175 void* userdata,
176 WindowParam window,
177 std::span<const DialogFileFilter> filters = {},
178 StringParam default_location = {},
179 bool allow_many = false)
180{
181 SDL_ShowOpenFileDialog(callback,
182 userdata,
183 window,
184 filters.data(),
185 filters.size(),
186 default_location,
187 allow_many);
188}
189
237inline void ShowOpenFileDialog(DialogFileCB callback,
238 WindowParam window,
239 std::span<const DialogFileFilter> filters = {},
240 StringParam default_location = {},
241 bool allow_many = false)
242{
243 using Wrapper = CallbackWrapper<DialogFileCB>;
244 ShowOpenFileDialog(&Wrapper::CallOnce,
245 Wrapper::Wrap(std::move(callback)),
246 window,
247 filters,
248 std::move(default_location),
249 allow_many);
250}
251
300 void* userdata,
301 WindowParam window = {},
302 std::span<const DialogFileFilter> filters = {},
303 StringParam default_location = {})
304{
305 SDL_ShowSaveFileDialog(callback,
306 userdata,
307 window,
308 filters.data(),
309 filters.size(),
310 default_location);
311}
312
358inline void ShowSaveFileDialog(DialogFileCB callback,
359 WindowParam window = {},
360 std::span<const DialogFileFilter> filters = {},
361 StringParam default_location = {})
362{
363 using Wrapper = CallbackWrapper<DialogFileCB>;
364 ShowSaveFileDialog(&Wrapper::CallOnce,
365 Wrapper::Wrap(std::move(callback)),
366 window,
367 filters,
368 std::move(default_location));
369}
370
416 void* userdata,
417 WindowParam window = {},
418 StringParam default_location = {},
419 bool allow_many = false)
420{
421 SDL_ShowOpenFolderDialog(
422 callback, userdata, window, default_location, allow_many);
423}
424
468 WindowParam window = {},
469 StringParam default_location = {},
470 bool allow_many = false)
471{
472 using Wrapper = CallbackWrapper<DialogFileCB>;
473 ShowOpenFolderDialog(&Wrapper::CallOnce,
474 Wrapper::Wrap(std::move(callback)),
475 std::move(window),
476 std::move(default_location),
477 allow_many);
478}
479
490using FileDialogType = SDL_FileDialogType;
491
493 SDL_FILEDIALOG_OPENFILE;
494
496 SDL_FILEDIALOG_SAVEFILE;
497
499 SDL_FILEDIALOG_OPENFOLDER;
500
549 DialogFileCallback callback,
550 void* userdata,
551 PropertiesParam props)
552{
553 SDL_ShowFileDialogWithProperties(type, callback, userdata, props);
554}
555
602 DialogFileCB callback,
603 PropertiesID props)
604{
605 using Wrapper = CallbackWrapper<DialogFileCB>;
607 type, &Wrapper::CallOnce, Wrapper::Wrap(std::move(callback)), props);
608}
609
610namespace prop::FileDialog {
611
612constexpr auto FILTERS_POINTER = SDL_PROP_FILE_DIALOG_FILTERS_POINTER;
613
614constexpr auto NFILTERS_NUMBER = SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER;
615
616constexpr auto WINDOW_POINTER = SDL_PROP_FILE_DIALOG_WINDOW_POINTER;
617
618constexpr auto LOCATION_STRING = SDL_PROP_FILE_DIALOG_LOCATION_STRING;
619
620constexpr auto MANY_BOOLEAN = SDL_PROP_FILE_DIALOG_MANY_BOOLEAN;
621
622constexpr auto TITLE_STRING = SDL_PROP_FILE_DIALOG_TITLE_STRING;
623
624constexpr auto ACCEPT_STRING = SDL_PROP_FILE_DIALOG_ACCEPT_STRING;
625
626constexpr auto CANCEL_STRING = SDL_PROP_FILE_DIALOG_CANCEL_STRING;
627
628} // namespace prop::FileDialog
629
631
632} // namespace SDL
633
634#endif /* SDL3PP_DIALOG_H_ */
void ShowFileDialogWithProperties(FileDialogType type, DialogFileCallback callback, void *userdata, PropertiesParam props)
Create and launch a file dialog with the specified properties.
Definition: SDL3pp_dialog.h:548
void ShowOpenFileDialog(DialogFileCallback callback, void *userdata, WindowParam window, std::span< const DialogFileFilter > filters={}, StringParam default_location={}, bool allow_many=false)
Displays a dialog that lets the user select a file on their filesystem.
Definition: SDL3pp_dialog.h:174
SDL_FileDialogType FileDialogType
Various types of file dialogs.
Definition: SDL3pp_dialog.h:490
SDL_DialogFileCallback DialogFileCallback
Callback used by file dialog functions.
Definition: SDL3pp_dialog.h:84
std::function< void(const char *const *, int)> DialogFileCB
Callback used by file dialog functions.
Definition: SDL3pp_dialog.h:123
constexpr FileDialogType FILEDIALOG_OPENFOLDER
OPENFOLDER.
Definition: SDL3pp_dialog.h:498
void ShowSaveFileDialog(DialogFileCallback callback, void *userdata, WindowParam window={}, std::span< const DialogFileFilter > filters={}, StringParam default_location={})
Displays a dialog that lets the user choose a new or existing file on their filesystem.
Definition: SDL3pp_dialog.h:299
constexpr FileDialogType FILEDIALOG_OPENFILE
OPENFILE.
Definition: SDL3pp_dialog.h:492
constexpr FileDialogType FILEDIALOG_SAVEFILE
SAVEFILE.
Definition: SDL3pp_dialog.h:495
SDL_DialogFileFilter DialogFileFilter
An entry for filters for file dialogs.
Definition: SDL3pp_dialog.h:45
void ShowOpenFolderDialog(DialogFileCallback callback, void *userdata, WindowParam window={}, StringParam default_location={}, bool allow_many=false)
Displays a dialog that lets the user select a folder on their filesystem.
Definition: SDL3pp_dialog.h:415
SDL_PropertiesID PropertiesID
Alias to raw representation for Properties.
Definition: SDL3pp_properties.h:45
Main include header for the SDL3pp library.
Definition: SDL3pp_callbackWrapper.h:66
Safely wrap Properties for non owning parameters.
Definition: SDL3pp_properties.h:52
Safely wrap Window for non owning parameters.
Definition: SDL3pp_video.h:57