#pragma once #include /// Represents one menu item in a menu. struct MenuItem { char* text; char key; void* (*action)(void* params); void* param; }; /// Represents a border in which a menu is displayed. struct MenuBorder { char line_vertical; char line_horizontal; char corner_upper_left; char corner_upper_right; char corner_lower_left; char corner_lower_right; char title_left; char title_right; }; // Default borders initialized in menu.c const extern struct MenuBorder DEFAULT, MODERN, NO_BORDER, SOLID; /// Represents a page containing menu items inside a menu. struct MenuPage { const struct MenuItem* items; const size_t item_count; char* title; int loopback, pause; const struct MenuBorder* border; }; /// Constructs a CUI menu with a specific amount of pages. /// An array of all pages to display. /// The length of the array pages. /// Always display the first page after a loopback=false item finished executing. void show_menu(const struct MenuPage* pages, const size_t page_count, const int infinite_loop);