]> git.draconx.ca Git - gob-dx.git/blobdiff - examples/gtk-button-count.gob
Release 2.0.0
[gob-dx.git] / examples / gtk-button-count.gob
index 0d039dc602817a7ce7a69c538b8a78d0536a33a2..2eee5f2cf452db052a322247c91fd08dc90f9f51 100644 (file)
@@ -1,41 +1,78 @@
-class Gtk:Button:Count from Gtk:Button {
-       public int count;
+/*
+ * 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
 
-       argument INT count
-       get {
-               ARG = self->count;
-       }
-       set {
-               self->count = ARG;
-       };
+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(button)
+       init (self)
        {
-               button->count = 0;
+               /* 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)
+       new (void)
        {
-               return GTK_WIDGET(GET_NEW);
+               /* 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 button but with a label inside it already, the 'label'
-          argument must not be NULL or we will return NULL */
+       /**
+        * 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
+       new_with_label (char *label (check null)) onerror NULL
        {
-               return GTK_WIDGET(GET_NEW);
+               /* 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))
+       clicked (Gtk:Button *self (check null type))
        {
-               GtkButtonCount *bc = GTK_BUTTON_COUNT(self);
+               GtkButtonCount *bc = GTK_BUTTON_COUNT (self);
+               /* increase count */
                bc->count++;
-               PARENT_HANDLER(self);
+               /* runt he parent class handler for clicked */
+               PARENT_HANDLER (self);
        }
 }