/** * @file button_menu.h * GUI: ButtonMenu view module API */ #pragma once #include #include #ifdef __cplusplus extern "C" { #endif /** ButtonMenu anonymous structure */ typedef struct ButtonMenu ButtonMenu; /** ButtonMenuItem anonymous structure */ typedef struct ButtonMenuItem ButtonMenuItem; /** Callback for any button menu actions */ typedef void (*ButtonMenuItemCallback)(void* context, int32_t index, InputType type); /** Type of button. Difference in drawing buttons. */ typedef enum { ButtonMenuItemTypeCommon, ButtonMenuItemTypeControl, } ButtonMenuItemType; /** Get button menu view * * @param button_menu ButtonMenu instance * * @return View instance that can be used for embedding */ View* button_menu_get_view(ButtonMenu* button_menu); /** Clean button menu * * @param button_menu ButtonMenu instance */ void button_menu_clean(ButtonMenu* button_menu); /** Add item to button menu instance * * @param button_menu ButtonMenu instance * @param label text inside new button * @param index value to distinct between buttons inside * ButtonMenuItemCallback * @param callback The callback * @param type type of button to create. Differ by button * drawing. Control buttons have no frames, and * have more squared borders. * @param callback_context The callback context * * @return pointer to just-created item */ ButtonMenuItem* button_menu_add_item( ButtonMenu* button_menu, const char* label, int32_t index, ButtonMenuItemCallback callback, ButtonMenuItemType type, void* callback_context); /** Allocate and initialize new instance of ButtonMenu model * * @return just-created ButtonMenu model */ ButtonMenu* button_menu_alloc(void); /** Free ButtonMenu element * * @param button_menu ButtonMenu instance */ void button_menu_free(ButtonMenu* button_menu); /** Set ButtonMenu header on top of canvas * * @param button_menu ButtonMenu instance * @param header header on the top of button menu */ void button_menu_set_header(ButtonMenu* button_menu, const char* header); /** Set selected item * * @param button_menu ButtonMenu instance * @param index index of ButtonMenu to be selected */ void button_menu_set_selected_item(ButtonMenu* button_menu, uint32_t index); #ifdef __cplusplus } #endif