#include #include "button.h" Button *button_simple_create(PangoAlignment align, Color color, Color line_color) { Button *btn = g_malloc0(sizeof(ButtonSimple)); btn->simple = true; btn->align = align; btn->color = color; btn->line_color = line_color; return btn; } void button_simple_set_text(Button *btn, const char *text, Color text_color) { g_assert(btn->simple); ButtonSimple *sbtn = CAST(btn, ButtonSimple); if (sbtn->text != NULL) g_free(sbtn->text); sbtn->text = g_strdup(text); sbtn->text_color = text_color; } const char *button_simple_get_text(Button *btn) { g_assert(btn->simple); return CAST(btn, ButtonSimple)->text; } void button_simple_set_action(Button *btn, ButtonAction action, gpointer data) { g_assert(btn->simple); CAST(btn, ButtonSimple)->action = action; CAST(btn, ButtonSimple)->action_data = data; } ButtonAction button_simple_get_action(Button *btn) { g_assert(btn->simple); return CAST(btn, ButtonSimple)->action; } Button *button_group_create(PangoAlignment align, Color color, Color line_color) { Button *btn = g_malloc0(sizeof(ButtonGroup)); btn->simple = false; btn->align = align; btn->color = color; btn->line_color = line_color; return btn; } void button_group_append(Button *btn, Button *child) { g_assert(!btn->simple); CAST(btn, ButtonGroup)->children = g_list_append(CAST(btn, ButtonGroup)->children, child); } void button_destroy(Button *btn) { if (btn->simple) g_free(CAST(btn, ButtonSimple)->text); g_free(btn); }