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 }()));