/* * This file is a basic example of how a .gob file would be constructed, * how to add data members, properties and methods */ requires 2.0.0 %{ #include <time.h> #include "my-person.h" #include "my-person-private.h" %} class My:Person from G:Object { /* the name of the person */ private char *name = {g_strdup(_("Nobody"))} destroywith g_free; property STRING name (nick = _("Name"), blurb = _("Name of the person"), default_value = _("Nobody"), /* Export get/set functions for this property */ export, /* link to the data memeber 'name' */ link); /* date of birth as a time_t */ private long dob = 0; property LONG dob (nick = _("Date of birth"), blurb = _("Date of birth of the person"), minimum = 0, maximum = LONG_MAX, default_value = 0, export) /* We could use 'link' as above, but the code below * shows how to do this without linking */ set { self->_priv->dob = g_value_get_long (VAL); } get { g_value_set_long (VAL, self->_priv->dob); }; /* date of death as a time_t */ private long dod = 0; property LONG dod (nick = _("Date of death"), blurb = _("Date of death of the person"), minimum = 0, maximum = LONG_MAX, default_value = 0, export, link); /* number of rounds in our shotgun */ private int rounds_in_shotgun = 0; /* when the person gets born, sends out a signal, the caller of the signal should provide the date of birth */ signal last NONE (LONG) void birth (self, long dob) { g_object_set (G_OBJECT (self), "dob", dob); } /* when the person dies, sends out a signal, the caller of the signal should provide the date of death */ signal last NONE (LONG) void death (self, long dod) { g_object_set (G_OBJECT (self), "dod", dod); } public void load_shotgun (self) { /* add a round to our shotgun */ self->_priv->rounds_in_shotgun++; } public void shoot_oneself_in_the_head (self) { if (self->_priv->rounds_in_shotgun == 0) { g_warning (_("No rounds in the shotgun!")); return; } /* one round was fired */ self->_priv->rounds_in_shotgun--; /* death is imminent if we shoot oneself in the head */ death (self, (long)time (NULL)); } public GObject * new (void) { return (GObject *)GET_NEW; } }