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
48using DialogFileFilter = SDL_DialogFileFilter;
49
88using DialogFileCallback = SDL_DialogFileCallback;
89
127using DialogFileCB = std::function<void(const char* const*, int)>;
128
179 void* userdata,
180 OptionalWindow window = {},
181 std::span<const DialogFileFilter> filters = {},
182 StringParam default_location = {},
183 bool allow_many = false)
184{
185 SDL_ShowOpenFileDialog(callback,
186 userdata,
187 window.get(),
188 filters.data(),
189 filters.size(),
190 default_location,
191 allow_many);
192}
193
241inline void ShowOpenFileDialog(DialogFileCB callback,
242 OptionalWindow window = {},
243 std::span<const DialogFileFilter> filters = {},
244 StringParam default_location = {},
245 bool allow_many = false)
246{
247 using Wrapper = CallbackWrapper<DialogFileCB>;
248 ShowOpenFileDialog(&Wrapper::CallOnce,
249 Wrapper::Wrap(std::move(callback)),
250 std::move(window),
251 filters,
252 std::move(default_location),
253 allow_many);
254}
255
304 void* userdata,
305 OptionalWindow window = {},
306 std::span<const DialogFileFilter> filters = {},
307 StringParam default_location = {})
308{
309 SDL_ShowSaveFileDialog(callback,
310 userdata,
311 window.get(),
312 filters.data(),
313 filters.size(),
314 default_location);
315}
316
362inline void ShowSaveFileDialog(DialogFileCB callback,
363 OptionalWindow window = {},
364 std::span<const DialogFileFilter> filters = {},
365 StringParam default_location = {})
366{
367 using Wrapper = CallbackWrapper<DialogFileCB>;
368 ShowSaveFileDialog(&Wrapper::CallOnce,
369 Wrapper::Wrap(std::move(callback)),
370 std::move(window),
371 filters,
372 std::move(default_location));
373}
374
420 void* userdata,
421 OptionalWindow window = {},
422 StringParam default_location = {},
423 bool allow_many = false)
424{
425 SDL_ShowOpenFolderDialog(
426 callback, userdata, window.get(), default_location, allow_many);
427}
428
472 OptionalWindow window = {},
473 StringParam default_location = {},
474 bool allow_many = false)
475{
476 using Wrapper = CallbackWrapper<DialogFileCB>;
477 ShowOpenFolderDialog(&Wrapper::CallOnce,
478 Wrapper::Wrap(std::move(callback)),
479 std::move(window),
480 std::move(default_location),
481 allow_many);
482}
483
494using FileDialogType = SDL_FileDialogType;
495
497 SDL_FILEDIALOG_OPENFILE;
498
500 SDL_FILEDIALOG_SAVEFILE;
501
503 SDL_FILEDIALOG_OPENFOLDER;
504
553 DialogFileCallback callback,
554 void* userdata,
555 PropertiesBase& props)
556{
557 SDL_ShowFileDialogWithProperties(type, callback, userdata, props.get());
558}
559
606 DialogFileCB callback,
607 PropertiesRef props)
608{
609
610 using Wrapper = CallbackWrapper<DialogFileCB>;
612 type, &Wrapper::CallOnce, Wrapper::Wrap(std::move(callback)), props);
613}
614
615namespace prop::FileDialog {
616
617constexpr auto FILTERS_POINTER = SDL_PROP_FILE_DIALOG_FILTERS_POINTER;
618
619constexpr auto NFILTERS_NUMBER = SDL_PROP_FILE_DIALOG_NFILTERS_NUMBER;
620
621constexpr auto WINDOW_POINTER = SDL_PROP_FILE_DIALOG_WINDOW_POINTER;
622
623constexpr auto LOCATION_STRING = SDL_PROP_FILE_DIALOG_LOCATION_STRING;
624
625constexpr auto MANY_BOOLEAN = SDL_PROP_FILE_DIALOG_MANY_BOOLEAN;
626
627constexpr auto TITLE_STRING = SDL_PROP_FILE_DIALOG_TITLE_STRING;
628
629constexpr auto ACCEPT_STRING = SDL_PROP_FILE_DIALOG_ACCEPT_STRING;
630
631constexpr auto CANCEL_STRING = SDL_PROP_FILE_DIALOG_CANCEL_STRING;
632
633} // namespace prop::FileDialog
634
636} // namespace SDL
637
638#endif /* SDL3PP_DIALOG_H_ */
A optional reference to resource.
Definition SDL3pp_resource.h:88
constexpr T get() const
Return contained resource;.
Definition SDL3pp_resource.h:57
SDL_FileDialogType FileDialogType
Various types of file dialogs.
Definition SDL3pp_dialog.h:494
SDL_DialogFileCallback DialogFileCallback
Callback used by file dialog functions.
Definition SDL3pp_dialog.h:88
std::function< void(const char *const *, int)> DialogFileCB
Callback used by file dialog functions.
Definition SDL3pp_dialog.h:127
constexpr FileDialogType FILEDIALOG_OPENFOLDER
OPENFOLDER.
Definition SDL3pp_dialog.h:502
void ShowSaveFileDialog(DialogFileCallback callback, void *userdata, OptionalWindow 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:303
void ShowFileDialogWithProperties(FileDialogType type, DialogFileCallback callback, void *userdata, PropertiesBase &props)
Create and launch a file dialog with the specified properties.
Definition SDL3pp_dialog.h:552
constexpr FileDialogType FILEDIALOG_OPENFILE
OPENFILE.
Definition SDL3pp_dialog.h:496
void ShowOpenFolderDialog(DialogFileCallback callback, void *userdata, OptionalWindow 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:419
constexpr FileDialogType FILEDIALOG_SAVEFILE
SAVEFILE.
Definition SDL3pp_dialog.h:499
SDL_DialogFileFilter DialogFileFilter
An entry for filters for file dialogs.
Definition SDL3pp_dialog.h:48
void ShowOpenFileDialog(DialogFileCallback callback, void *userdata, OptionalWindow 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:178
the main namespace where all SDL3pp public functions and types live
Definition SDL3pp_assert.h:7
Definition SDL3pp_callbackWrapper.h:66
Wrap properties id.
Definition SDL3pp_properties.h:203
Handle to a non owned properties.
Definition SDL3pp_properties.h:693