| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /**
- * @file button_menu.h
- * GUI: ButtonMenu view module API
- */
- #pragma once
- #include <stdint.h>
- #include <gui/view.h>
- #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
|