button_menu.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @file button_menu.h
  3. * GUI: ButtonMenu view module API
  4. */
  5. #pragma once
  6. #include <stdint.h>
  7. #include <gui/view.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /** ButtonMenu anonymous structure */
  12. typedef struct ButtonMenu ButtonMenu;
  13. /** ButtonMenuItem anonymous structure */
  14. typedef struct ButtonMenuItem ButtonMenuItem;
  15. /** Callback for any button menu actions */
  16. typedef void (*ButtonMenuItemCallback)(void* context, int32_t index, InputType type);
  17. /** Type of button. Difference in drawing buttons. */
  18. typedef enum {
  19. ButtonMenuItemTypeCommon,
  20. ButtonMenuItemTypeControl,
  21. } ButtonMenuItemType;
  22. /** Get button menu view
  23. *
  24. * @param button_menu ButtonMenu instance
  25. *
  26. * @return View instance that can be used for embedding
  27. */
  28. View* button_menu_get_view(ButtonMenu* button_menu);
  29. /** Clean button menu
  30. *
  31. * @param button_menu ButtonMenu instance
  32. */
  33. void button_menu_clean(ButtonMenu* button_menu);
  34. /** Add item to button menu instance
  35. *
  36. * @param button_menu ButtonMenu instance
  37. * @param label text inside new button
  38. * @param index value to distinct between buttons inside
  39. * ButtonMenuItemCallback
  40. * @param callback The callback
  41. * @param type type of button to create. Differ by button
  42. * drawing. Control buttons have no frames, and
  43. * have more squared borders.
  44. * @param callback_context The callback context
  45. *
  46. * @return pointer to just-created item
  47. */
  48. ButtonMenuItem* button_menu_add_item(
  49. ButtonMenu* button_menu,
  50. const char* label,
  51. int32_t index,
  52. ButtonMenuItemCallback callback,
  53. ButtonMenuItemType type,
  54. void* callback_context);
  55. /** Allocate and initialize new instance of ButtonMenu model
  56. *
  57. * @return just-created ButtonMenu model
  58. */
  59. ButtonMenu* button_menu_alloc(void);
  60. /** Free ButtonMenu element
  61. *
  62. * @param button_menu ButtonMenu instance
  63. */
  64. void button_menu_free(ButtonMenu* button_menu);
  65. /** Set ButtonMenu header on top of canvas
  66. *
  67. * @param button_menu ButtonMenu instance
  68. * @param header header on the top of button menu
  69. */
  70. void button_menu_set_header(ButtonMenu* button_menu, const char* header);
  71. /** Set selected item
  72. *
  73. * @param button_menu ButtonMenu instance
  74. * @param index index of ButtonMenu to be selected
  75. */
  76. void button_menu_set_selected_item(ButtonMenu* button_menu, uint32_t index);
  77. #ifdef __cplusplus
  78. }
  79. #endif