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 = void(SDLCALL*)(void* userdata,
85 const char* const* filelist,
86 int filter);
87
126 std::function<void(const char* const* filelist, int filter)>;
127
177 void* userdata,
178 WindowParam window,
179 std::span<const DialogFileFilter> filters = {},
180 StringParam default_location = {},
181 bool allow_many = false)
182{
183 SDL_ShowOpenFileDialog(callback,
184 userdata,
185 window,
186 filters.data(),
187 filters.size(),
188 default_location,
189 allow_many);
190}
191
238inline void ShowOpenFileDialog(DialogFileCB callback,
239 WindowParam window,
240 std::span<const DialogFileFilter> filters = {},
241 StringParam default_location = {},
242 bool allow_many = false)
243{
244 using Wrapper = CallbackWrapper<DialogFileCB>;
245 ShowOpenFileDialog(&Wrapper::CallOnce,
246 Wrapper::Wrap(std::move(callback)),
247 window,
248 filters,
249 std::move(default_location),
250 allow_many);
251}
252
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
357inline void ShowSaveFileDialog(DialogFileCB callback,
358 WindowParam window = {},
359 std::span<const DialogFileFilter> filters = {},
360 StringParam default_location = {})
361{
362 using Wrapper = CallbackWrapper<DialogFileCB>;
363 ShowSaveFileDialog(&Wrapper::CallOnce,
364 Wrapper::Wrap(std::move(callback)),
365 window,
366 filters,
367 std::move(default_location));
368}
369
414 void* userdata,
415 WindowParam window = {},
416 StringParam default_location = {},
417 bool allow_many = false)
418{
419 SDL_ShowOpenFolderDialog(
420 callback, userdata, window, default_location, allow_many);
421}
422
465 WindowParam window = {},
466 StringParam default_location = {},
467 bool allow_many = false)
468{
469 using Wrapper = CallbackWrapper<DialogFileCB>;
470 ShowOpenFolderDialog(&Wrapper::CallOnce,
471 Wrapper::Wrap(std::move(callback)),
472 std::move(window),
473 std::move(default_location),
474 allow_many);
475}
476
487using FileDialogType = SDL_FileDialogType;
488
490 SDL_FILEDIALOG_OPENFILE;
491
493 SDL_FILEDIALOG_SAVEFILE;
494
496 SDL_FILEDIALOG_OPENFOLDER;
497
544 DialogFileCallback callback,
545 void* userdata,
546 PropertiesParam props)
547{
548 SDL_ShowFileDialogWithProperties(type, callback, userdata, props);
549}
550
595 DialogFileCB callback,
596 PropertiesID props)
597{
598 using Wrapper = CallbackWrapper<DialogFileCB>;
600 type, &Wrapper::CallOnce, Wrapper::Wrap(std::move(callback)), props);
601}
602
603namespace prop::FileDialog {
604
605constexpr auto FILTERS_POINTER = SDL_PROP_FILE_DIALOG_FILTERS_POINTER;
606
607constexpr auto NFILTERS_NUMBER = SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER;
608
609constexpr auto WINDOW_POINTER = SDL_PROP_FILE_DIALOG_WINDOW_POINTER;
610
611constexpr auto LOCATION_STRING = SDL_PROP_FILE_DIALOG_LOCATION_STRING;
612
613constexpr auto MANY_BOOLEAN = SDL_PROP_FILE_DIALOG_MANY_BOOLEAN;
614
615constexpr auto TITLE_STRING = SDL_PROP_FILE_DIALOG_TITLE_STRING;
616
617constexpr auto ACCEPT_STRING = SDL_PROP_FILE_DIALOG_ACCEPT_STRING;
618
619constexpr auto CANCEL_STRING = SDL_PROP_FILE_DIALOG_CANCEL_STRING;
620
621} // namespace prop::FileDialog
622
624
625} // namespace SDL
626
627#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:543
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:176
SDL_FileDialogType FileDialogType
Various types of file dialogs.
Definition: SDL3pp_dialog.h:487
std::function< void(const char *const *filelist, int filter)> DialogFileCB
Callback used by file dialog functions.
Definition: SDL3pp_dialog.h:126
constexpr FileDialogType FILEDIALOG_OPENFOLDER
OPENFOLDER.
Definition: SDL3pp_dialog.h:495
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:489
void(SDLCALL *)(void *userdata, const char *const *filelist, int filter) DialogFileCallback
Callback used by file dialog functions.
Definition: SDL3pp_dialog.h:86
constexpr FileDialogType FILEDIALOG_SAVEFILE
SAVEFILE.
Definition: SDL3pp_dialog.h:492
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:413
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:20
Safely wrap Properties for non owning parameters.
Definition: SDL3pp_properties.h:52
Safely wrap Window for non owning parameters.
Definition: SDL3pp_video.h:54