submenu.h 989 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <gui/view.h>
  3. /* Submenu anonymous structure */
  4. typedef struct Submenu Submenu;
  5. typedef struct SubmenuItem SubmenuItem;
  6. typedef void (*SubmenuItemCallback)(void* context);
  7. /* Allocate and initialize submenu
  8. * This submenu is used to select one option
  9. */
  10. Submenu* submenu_alloc();
  11. /* Deinitialize and free submenu
  12. * @param submenu - Submenu instance
  13. */
  14. void submenu_free(Submenu* submenu);
  15. /* Get submenu view
  16. * @param submenu - Submenu instance
  17. * @return View instance that can be used for embedding
  18. */
  19. View* submenu_get_view(Submenu* submenu);
  20. /* Add item to submenu
  21. * @param submenu - Submenu instance
  22. * @param label - menu item label
  23. * @param callback - menu item callback
  24. * @param callback_context - menu item callback context
  25. * @return SubmenuItem instance that can be used to modify or delete that item
  26. */
  27. SubmenuItem* submenu_add_item(
  28. Submenu* submenu,
  29. const char* label,
  30. SubmenuItemCallback callback,
  31. void* callback_context);