1 /+ 2 + Copyright 2022 – 2023 Aya Partridge 3 + Copyright 2018 - 2022 Michael D. Parker 4 + Distributed under the Boost Software License, Version 1.0. 5 + (See accompanying file LICENSE_1_0.txt or copy at 6 + http://www.boost.org/LICENSE_1_0.txt) 7 +/ 8 module sdl.messagebox; 9 10 import bindbc.sdl.config; 11 import bindbc.sdl.codegen; 12 13 import sdl.video: SDL_Window; 14 15 alias SDL_MessageBoxFlags = uint; 16 enum: SDL_MessageBoxFlags{ 17 SDL_MESSAGEBOX_ERROR = 0x0000_0010, 18 SDL_MESSAGEBOX_WARNING = 0x0000_0020, 19 SDL_MESSAGEBOX_INFORMATION = 0x0000_0040, 20 } 21 static if(sdlSupport >= SDLSupport.v2_0_12) 22 enum: SDL_MessageBoxFlags{ 23 SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x0000_0080, 24 SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x0000_0100, 25 } 26 27 alias SDL_MessageBoxButtonFlags = uint; 28 enum: SDL_MessageBoxButtonFlags{ 29 SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x000_00001, 30 SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x000_00002, 31 } 32 33 struct SDL_MessageBoxButtonData{ 34 uint flags; 35 int buttonid; 36 const(char)* text; 37 } 38 39 struct SDL_MessageBoxColor{ 40 ubyte r, g, b; 41 } 42 alias SDL_MessageBoxColour = SDL_MessageBoxColor; 43 44 alias SDL_MessageBoxColorType = uint; 45 enum: SDL_MessageBoxColorType{ 46 SDL_MESSAGEBOX_COLOR_BACKGROUND = 0, 47 SDL_MESSAGEBOX_COLOR_TEXT = 1, 48 SDL_MESSAGEBOX_COLOR_BUTTON_BORDER = 2, 49 SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND = 3, 50 SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED = 4, 51 SDL_MESSAGEBOX_COLOR_MAX = 5, 52 53 SDL_MESSAGEBOX_COLOUR_BACKGROUND = SDL_MESSAGEBOX_COLOR_BACKGROUND, 54 SDL_MESSAGEBOX_COLOUR_TEXT = SDL_MESSAGEBOX_COLOR_TEXT, 55 SDL_MESSAGEBOX_COLOUR_BUTTON_BORDER = SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, 56 SDL_MESSAGEBOX_COLOUR_BUTTON_BACKGROUND = SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, 57 SDL_MESSAGEBOX_COLOUR_BUTTON_SELECTED = SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, 58 SDL_MESSAGEBOX_COLOUR_MAX = SDL_MESSAGEBOX_COLOR_MAX, 59 } 60 alias SDL_MessageBoxColourType = SDL_MessageBoxColorType; 61 62 struct SDL_MessageBoxColorScheme{ 63 SDL_MessageBoxColor[SDL_MESSAGEBOX_COLOR_MAX] colors; 64 alias colours = colors; 65 } 66 67 struct SDL_MessageBoxData{ 68 SDL_MessageBoxFlags flags; 69 SDL_Window* window; 70 const(char)* title; 71 const(char)* message; 72 73 int numbuttons; 74 const(SDL_MessageBoxButtonData)* buttons; 75 76 const(SDL_MessageBoxColorScheme)* colorScheme; 77 alias colourScheme = colorScheme; 78 } 79 80 mixin(joinFnBinds((){ 81 string[][] ret; 82 ret ~= makeFnBinds([ 83 [q{int}, q{SDL_ShowMessageBox}, q{const(SDL_MessageBoxData)* messageboxdata, int* buttonid}], 84 [q{int}, q{SDL_ShowSimpleMessageBox}, q{SDL_MessageBoxFlags flags, const(char)* title, const(char)* messsage, SDL_Window* window}], 85 ]); 86 return ret; 87 }()));