aboutsummaryrefslogtreecommitdiff
path: root/core/src/Utils/Dialog/Dialog.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Utils/Dialog/Dialog.hpp')
-rw-r--r--core/src/Utils/Dialog/Dialog.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/core/src/Utils/Dialog/Dialog.hpp b/core/src/Utils/Dialog/Dialog.hpp
new file mode 100644
index 0000000..e8989e3
--- /dev/null
+++ b/core/src/Utils/Dialog/Dialog.hpp
@@ -0,0 +1,52 @@
+// Adapted from https://github.com/aaronmjacobs/Boxer/blob/master/include/boxer/boxer.h
+#pragma once
+
+namespace Dialog {
+
+/// Options for styles to apply to a message box.
+enum class Style {
+ Info,
+ Warning,
+ Error,
+ Question,
+};
+
+/// Options for buttons to provide on a message box.
+enum class Buttons {
+ OK,
+ OKCancel,
+ YesNo,
+ Quit,
+};
+
+/// Possible responses from a message box. 'None' signifies that no option was chosen, and 'Error' signifies that an
+/// error was encountered while creating the message box.
+enum class Selection {
+ OK,
+ Cancel,
+ Yes,
+ No,
+ Quit,
+ None,
+ Error,
+};
+
+/// The default style to apply to a message box.
+constexpr Style kDefaultStyle = Style::Info;
+
+/// The default buttons to provide on a message box.
+constexpr Buttons kDefaultButtons = Buttons::OK;
+
+/// Blocking call to create a modal message box with the given message, title, style, and buttons.
+Selection Show(const char* message, const char* title, Style style, Buttons buttons);
+
+/// Convenience function to call show() with the default buttons.
+Selection Show(const char* message, const char* title, Style style);
+
+/// Convenience function to call show() with the default style.
+Selection Show(const char* message, const char* title, Buttons buttons);
+
+/// Convenience function to call show() with the default style and buttons.
+Selection Show(const char* message, const char* title);
+
+} // namespace Dialog