menu.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * @file menu.h
  3. * GUI: Menu view module API
  4. */
  5. #pragma once
  6. #include <gui/view.h>
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. /** Menu anonymous structure */
  11. typedef struct Menu Menu;
  12. /** Menu Item Callback */
  13. typedef void (*MenuItemCallback)(void* context, uint32_t index);
  14. /** Menu allocation and initialization
  15. *
  16. * @return Menu instance
  17. */
  18. Menu* menu_alloc();
  19. /** Free menu
  20. *
  21. * @param menu Menu instance
  22. */
  23. void menu_free(Menu* menu);
  24. /** Get Menu view
  25. *
  26. * @param menu Menu instance
  27. *
  28. * @return View instance
  29. */
  30. View* menu_get_view(Menu* menu);
  31. /** Add item to menu
  32. *
  33. * @param menu Menu instance
  34. * @param label menu item string label
  35. * @param icon IconAnimation instance
  36. * @param index menu item index
  37. * @param callback MenuItemCallback instance
  38. * @param context pointer to context
  39. */
  40. void menu_add_item(
  41. Menu* menu,
  42. const char* label,
  43. const Icon* icon,
  44. uint32_t index,
  45. MenuItemCallback callback,
  46. void* context);
  47. /** Clean menu
  48. * @note this function does not free menu instance
  49. *
  50. * @param menu Menu instance
  51. */
  52. void menu_reset(Menu* menu);
  53. /** Set current menu item
  54. *
  55. * @param menu Menu instance
  56. * @param index The index
  57. */
  58. void menu_set_selected_item(Menu* menu, uint32_t index);
  59. #ifdef __cplusplus
  60. }
  61. #endif