/*
 * This is an example button widget which counts the number of clicks
 *
 * It is also showing how you can use inline gtk-doc like documentation
 * which will be correctly translated and put into the resulting source
 * file
 */
requires 2.0.0

class Gtk:Button:Count from Gtk:Button {
	public int count = 0;
	property INT count
		(nick = _("Count of clicks"),
		 blurb = _("How many times was the button clicked"),
		 minimum = 0,
		 maximum = INT_MAX,
		 /* initially set to 0, even though we have already
		  * set the default above */
		 default_value = 0,
		 /* links the count property to the count data member */
		 link);

	init (self)
	{
		/* Although we have specified the default in two places
		 * already, this is an example of where else you can put
		 * initialization */
		self->count = 0;
	}

	/**
	 * new:
	 *
	 * Makes a new #GtkButtonCount widget
	 *
	 * Returns: a new widget
	 **/
	public
	GtkWidget *
	new (void)
	{
		/* It's ok to use a normal cast here, as we are sure that we
		 * have gotten the right type */
		return (GtkWidget *)GET_NEW;
	}

	/**
	 * new_with_label:
	 * @label: the label text
	 *
	 * Makes a new #GtkButtonCount widget with a label
	 *
	 * Returns: a new widget
	 **/
	public
	GtkWidget *
	new_with_label (char *label (check null)) onerror NULL
	{
		/* It's ok to use a normal cast here, as we are sure that we
		 * have gotten the right type */
		GtkWidget *widget = (GtkWidget *)GET_NEW;
		GtkWidget *label_widget = gtk_label_new (label);
		gtk_container_add (GTK_CONTAINER (widget), label_widget);
		gtk_widget_show (label_widget);
		return widget;
	}

	override (Gtk:Button)
	void
	clicked (Gtk:Button *self (check null type))
	{
		GtkButtonCount *bc = GTK_BUTTON_COUNT (self);
		/* increase count */
		bc->count++;
		/* runt he parent class handler for clicked */
		PARENT_HANDLER (self);
	}
}
