/* * 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); } }