HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
gui_event_type.hpp
Go to the documentation of this file.
1// Copyright Take Vos 2022.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
9#pragma once
10
11#include "../utility/utility.hpp"
12#include "../macros.hpp"
13#include <string>
14#include <string_view>
15#include <ostream>
16
17hi_export_module(hikogui.GUI : gui_event_type);
18
19hi_export namespace hi { inline namespace v1 {
20
24enum class gui_event_type {
25 none,
26
27 // raw-keyboard-events
28 keyboard_down,
29 keyboard_up,
30 keyboard_grapheme,
31 keyboard_partial_grapheme,
32 keyboard_enter,
33 keyboard_exit,
34
35 // raw-mouse-events
36 mouse_move,
37 mouse_drag,
38 mouse_down,
39 mouse_up,
40 mouse_wheel,
41 mouse_enter,
42 mouse_exit,
43 mouse_exit_window,
44
45 // window-events
59
60 // commands
61 text_cursor_left_char,
62 text_cursor_right_char,
63 text_cursor_down_char,
64 text_cursor_up_char,
65 text_cursor_left_word,
66 text_cursor_right_word,
67 text_cursor_begin_line,
68 text_cursor_end_line,
69 text_cursor_begin_sentence,
70 text_cursor_end_sentence,
71 text_cursor_begin_document,
72 text_cursor_end_document,
73 text_select_left_char,
74 text_select_right_char,
75 text_select_down_char,
76 text_select_up_char,
77 text_select_word,
78 text_select_left_word,
79 text_select_right_word,
80 text_select_begin_line,
81 text_select_end_line,
82 text_select_begin_sentence,
83 text_select_end_sentence,
84 text_select_document,
85 text_select_begin_document,
86 text_select_end_document,
87 text_delete_char_prev,
88 text_delete_char_next,
89 text_delete_word_prev,
90 text_delete_word_next,
91 text_swap_chars,
92 text_edit_paste,
93 text_edit_copy,
94 text_edit_cut,
95 text_undo,
96 text_redo,
97 text_insert_line,
98 text_insert_line_up,
99 text_insert_line_down,
100 text_mode_insert,
101
102 // GUI navigation.
103 gui_widget_next,
104 gui_widget_prev,
105 gui_menu_next,
106 gui_menu_prev,
107 gui_toolbar_open,
108 gui_toolbar_next,
109 gui_toolbar_prev,
110 gui_activate,
111 gui_activate_stay,
112 gui_activate_next,
113 gui_cancel,
114};
115
116// clang-format off
117constexpr auto gui_event_type_metadata = enum_metadata{
118 gui_event_type::none, "none",
119 gui_event_type::keyboard_down, "keyboard_down",
120 gui_event_type::keyboard_grapheme, "keyboard_grapheme",
121 gui_event_type::keyboard_partial_grapheme, "keyboard_partial_grapheme",
122 gui_event_type::keyboard_enter, "keyboard_enter",
123 gui_event_type::keyboard_exit, "keyboard_exit",
124 gui_event_type::mouse_move, "mouse_move",
125 gui_event_type::mouse_drag, "mouse_drag",
126 gui_event_type::mouse_down, "mouse_down",
127 gui_event_type::mouse_up, "mouse_up",
128 gui_event_type::mouse_wheel, "mouse_wheel",
129 gui_event_type::mouse_enter, "mouse_enter",
130 gui_event_type::mouse_exit, "mouse_exit",
131 gui_event_type::mouse_exit_window, "mouse_exit_window",
132 gui_event_type::window_redraw, "window_redraw",
133 gui_event_type::window_relayout, "window_relayout",
134 gui_event_type::window_reconstrain, "window_reconstrain",
135 gui_event_type::window_resize, "window_resize",
136 gui_event_type::window_minimize, "window_minimize",
137 gui_event_type::window_maximize, "window_maximize",
138 gui_event_type::window_normalize, "window_normalize",
139 gui_event_type::window_open_sysmenu, "window_open_sysmenu",
140 gui_event_type::window_close, "window_close",
141 gui_event_type::window_set_keyboard_target, "window_set_keyboard_target",
142 gui_event_type::window_set_clipboard, "window_set_clipboard",
143 gui_event_type::window_activate, "window_activate",
144 gui_event_type::window_deactivate, "window_deactivate",
145 gui_event_type::text_cursor_left_char, "text_cursor_left_char",
146 gui_event_type::text_cursor_right_char, "text_cursor_right_char",
147 gui_event_type::text_cursor_down_char, "text_cursor_down_char",
148 gui_event_type::text_cursor_up_char, "text_cursor_up_char",
149 gui_event_type::text_cursor_left_word, "text_cursor_left_word",
150 gui_event_type::text_cursor_right_word, "text_cursor_right_word",
151 gui_event_type::text_cursor_begin_line, "text_cursor_begin_line",
152 gui_event_type::text_cursor_end_line, "text_cursor_end_line",
153 gui_event_type::text_cursor_begin_sentence, "text_cursor_begin_sentence",
154 gui_event_type::text_cursor_end_sentence, "text_cursor_end_sentence",
155 gui_event_type::text_cursor_begin_document, "text_cursor_begin_document",
156 gui_event_type::text_cursor_end_document, "text_cursor_end_document",
157 gui_event_type::text_select_left_char, "text_select_left_char",
158 gui_event_type::text_select_right_char, "text_select_right_char",
159 gui_event_type::text_select_down_char, "text_select_down_char",
160 gui_event_type::text_select_up_char, "text_select_up_char",
161 gui_event_type::text_select_word, "text_select_word",
162 gui_event_type::text_select_left_word, "text_select_left_word",
163 gui_event_type::text_select_right_word, "text_select_right_word",
164 gui_event_type::text_select_begin_line, "text_select_begin_line",
165 gui_event_type::text_select_end_line, "text_select_end_line",
166 gui_event_type::text_select_begin_sentence, "text_select_begin_sentence",
167 gui_event_type::text_select_end_sentence, "text_select_end_sentence",
168 gui_event_type::text_select_begin_document, "text_select_begin_document",
169 gui_event_type::text_select_end_document, "text_select_end_document",
170 gui_event_type::text_select_document, "text_select_document",
171 gui_event_type::text_delete_char_prev, "text_delete_char_prev",
172 gui_event_type::text_delete_char_next, "text_delete_char_next",
173 gui_event_type::text_delete_word_prev, "text_delete_word_prev",
174 gui_event_type::text_delete_word_next, "text_delete_word_next",
175 gui_event_type::text_insert_line, "text_insert_line",
176 gui_event_type::text_insert_line_up, "text_insert_line_up",
177 gui_event_type::text_insert_line_down, "text_insert_line_down",
178 gui_event_type::text_swap_chars, "text_swap_chars",
179 gui_event_type::text_edit_paste, "text_edit_paste",
180 gui_event_type::text_edit_copy, "text_edit_copy",
181 gui_event_type::text_edit_cut, "text_edit_cut",
182 gui_event_type::text_undo, "text_undo",
183 gui_event_type::text_redo, "text_redo",
184 gui_event_type::text_mode_insert, "text_mode_insert",
185 gui_event_type::gui_widget_next, "gui_widget_next",
186 gui_event_type::gui_widget_prev, "gui_widget_prev",
187 gui_event_type::gui_menu_next, "gui_menu_next",
188 gui_event_type::gui_menu_prev, "gui_menu_prev",
189 gui_event_type::gui_toolbar_open, "gui_toolbar_open",
190 gui_event_type::gui_toolbar_next, "gui_toolbar_next",
191 gui_event_type::gui_toolbar_prev, "gui_toolbar_prev",
192 gui_event_type::gui_activate, "gui_activate",
193 gui_event_type::gui_activate_stay, "gui_activate_stay",
194 gui_event_type::gui_activate_next, "gui_activate_next",
195 gui_event_type::gui_cancel, "gui_cancel"
196};
197// clang-format on
198
201inline std::string_view to_string(gui_event_type rhs) noexcept
202{
203 return gui_event_type_metadata[rhs];
204}
205
208constexpr gui_event_type to_gui_event_type(std::string_view name) noexcept
209{
210 return gui_event_type_metadata.at(name, gui_event_type::none);
211}
212
213}} // namespace hi::inline v1
214
gui_event_type
GUI event type.
Definition gui_event_type.hpp:24
@ window_redraw
Request that part of the window gets redrawn on the next frame.
@ window_normalize
Request the window to be restored to the original size after a minimize and maximize commands.
@ window_open_sysmenu
Open the operating system provided menu for the window.
@ window_minimize
Request the window to minimize.
@ window_deactivate
The window is not longer the top-window.
@ window_close
Request the window to be closed.
@ window_activate
The window becomes the top-window.
@ window_set_keyboard_target
Change the keyboard target widget for this window.
@ window_maximize
Request the window to maximize.
@ window_relayout
Request that widgets get laid out on the next frame.
@ window_reconstrain
Request that widget get constraint on the next frame.
@ window_set_clipboard
Place data on the clipboard.
@ window_resize
Request that the window resizes to desired constraints on the next frame.
The HikoGUI namespace.
Definition array_generic.hpp:20
constexpr gui_event_type to_gui_event_type(std::string_view name) noexcept
Convert a name to a GUI event type.
Definition gui_event_type.hpp:208
DOXYGEN BUG.
Definition algorithm_misc.hpp:20