#pragma once
#include <gui/view.h>

#ifdef __cplusplus
extern "C" {
#endif

/* TextBox anonymous structure */
typedef struct TextBox TextBox;
typedef void (*TextBoxExitCallback)(void* context);

typedef enum {
    TextBoxFontText,
    TextBoxFontHex,
} TextBoxFont;

/** Allocate and initialize text_box
 */
TextBox* text_box_alloc();

/** Deinitialize and free text_box
 * @param text_box text_box instance
 */
void text_box_free(TextBox* text_box);

/** Get text_box view
 * @param text_box TextBox instance
 * @return View instance that can be used for embedding
 */
View* text_box_get_view(TextBox* text_box);

/** Clean text_box
 * @param text_box TextBox instance
 */
void text_box_clean(TextBox* text_box);

/** Set text for text_box
 * @param text_box TextBox instance
 * @param text text to set
 */
void text_box_set_text(TextBox* text_box, const char* text);

/** Set TextBox font
 * @param text_box TextBox instance
 * @param font TextBoxFont instance
 */
void text_box_set_font(TextBox* text_box, TextBoxFont font);

/** Set text_box context
 * @param text_box TextBox instance
 * @param context context pointer
 */
void text_box_set_context(TextBox* text_box, void* context);

/** Set exit callback
 * @param text_box TextBox instance
 * @param callback TextBoxExitCallback callback pointer
 */
void text_box_set_exit_callback(TextBox* text_box, TextBoxExitCallback callback);

#ifdef __cplusplus
}
#endif