const std = @import("std"); pub const c = @import("c.zig").c; const video_api = @import("video.zig"); const properties_api = @import("properties.zig"); pub const Window = video_api.Window; pub const PropertiesID = properties_api.PropertiesID; pub const DialogFileFilter = extern struct { name: [*c]const u8, pattern: [*c]const u8, }; pub const DialogFileCallback = c.SDL_DialogFileCallback; pub inline fn showOpenFileDialog(callback: DialogFileCallback, userdata: ?*anyopaque, window: ?*Window, filters: ?*const DialogFileFilter, nfilters: c_int, default_location: [*c]const u8, allow_many: bool) void { return c.SDL_ShowOpenFileDialog(callback, userdata, @ptrCast(window), @ptrCast(filters), nfilters, default_location, @bitCast(allow_many)); } pub inline fn showSaveFileDialog(callback: DialogFileCallback, userdata: ?*anyopaque, window: ?*Window, filters: ?*const DialogFileFilter, nfilters: c_int, default_location: [*c]const u8) void { return c.SDL_ShowSaveFileDialog(callback, userdata, @ptrCast(window), @ptrCast(filters), nfilters, default_location); } pub inline fn showOpenFolderDialog(callback: DialogFileCallback, userdata: ?*anyopaque, window: ?*Window, default_location: [*c]const u8, allow_many: bool) void { return c.SDL_ShowOpenFolderDialog(callback, userdata, @ptrCast(window), default_location, @bitCast(allow_many)); } pub const FileDialogType = enum(c_int) { filedialogOpenfile, filedialogSavefile, filedialogOpenfolder, }; pub inline fn showFileDialogWithProperties(_type: FileDialogType, callback: DialogFileCallback, userdata: ?*anyopaque, props: PropertiesID) void { return c.SDL_ShowFileDialogWithProperties(@intFromEnum(_type), callback, userdata, props); }