submenu.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <gui/view.h>
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /* Submenu anonymous structure */
  7. typedef struct Submenu Submenu;
  8. typedef struct SubmenuItem SubmenuItem;
  9. typedef void (*SubmenuItemCallback)(void* context, uint32_t index);
  10. /* Allocate and initialize submenu
  11. * This submenu is used to select one option
  12. */
  13. Submenu* submenu_alloc();
  14. /* Deinitialize and free submenu
  15. * @param submenu - Submenu instance
  16. */
  17. void submenu_free(Submenu* submenu);
  18. /* Get submenu view
  19. * @param submenu - Submenu instance
  20. * @return View instance that can be used for embedding
  21. */
  22. View* submenu_get_view(Submenu* submenu);
  23. /* Add item to submenu
  24. * @param submenu - Submenu instance
  25. * @param label - menu item label
  26. * @param index - menu item index, used for callback, may be the same with other items
  27. * @param callback - menu item callback
  28. * @param callback_context - menu item callback context
  29. * @return SubmenuItem instance that can be used to modify or delete that item
  30. */
  31. SubmenuItem* submenu_add_item(
  32. Submenu* submenu,
  33. const char* label,
  34. uint32_t index,
  35. SubmenuItemCallback callback,
  36. void* callback_context);
  37. /* Remove all items from submenu
  38. * @param submenu - Submenu instance
  39. */
  40. void submenu_clean(Submenu* submenu);
  41. #ifdef __cplusplus
  42. }
  43. #endif