// 11 april 2015
#include "uipriv_unix.h"

struct label {
};

static void onDestroy(GtkWidget *widget, gpointer data)
{
	struct label *l = (struct label *) data;

	uiFree(l);
}

uiControl *uiNewLabel(const char *text)
{
	uiControl *c;
	struct label *l;
	GtkWidget *widget;

	c = uiUnixNewControl(GTK_TYPE_LABEL,
		FALSE, FALSE,
		"label", text,
		// TODO TODO TODO TODO TODO
		// the presence of this property leads to a segfault on 32-bit linux builds
		// is it just this property? or is it more than one property at all? and why?
		"xalign", 0,
		// TODO yalign 0?
		NULL);

	widget = GTK_WIDGET(uiControlHandle(c));

	l = uiNew(struct label);
	g_signal_connect(widget, "destroy", G_CALLBACK(onDestroy), l);
	c->data = l;

	return c;
}

char *uiLabelText(uiControl *c)
{
	// TODO change g_strdup() to a wrapper function for export in ui_unix.h
	return g_strdup(gtk_label_get_text(GTK_LABEL(uiControlHandle(c))));
}

void uiLabelSetText(uiControl *c, const char *text)
{
	gtk_label_set_text(GTK_LABEL(uiControlHandle(c)), text);
}