X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/b17287deb56775a49030d738d8c8c0e9cd15f9fe..69c350c69e70bddb040dfc5d90b0368376a6389e:/examples/my-person.gob diff --git a/examples/my-person.gob b/examples/my-person.gob index f09b151..7f4e9b3 100644 --- a/examples/my-person.gob +++ b/examples/my-person.gob @@ -1,4 +1,8 @@ -require 0.92.1 +/* + * 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 @@ -6,62 +10,74 @@ require 0.92.1 #include "my-person-private.h" %} -class My:Person from Gtk:Object { - public char *name; - public long dob; /* date of birth as a time_t */ - public long dod; /* date of death as a time_t */ +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); - private int rounds_in_shotgun; /* number of rounds in our shotgun */ + /* 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); + }; - argument POINTER (type char *) name - get { - if(self->name) - ARG = g_strdup(self->name); - else - ARG = NULL; - } - set { - g_free(self->name); - if(ARG) - self->name = g_strdup(ARG); - else - self->name = NULL; - }; + /* 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); - argument LONG dob get { ARG = self->dob; } set { self->dob = ARG; }; - argument LONG dod get { ARG = self->dod; } set { self->dod = ARG; }; - - init(self) - { - self->name = g_strdup("Nobody"); - self->dob = 0; - self->dod = 0; - - /* initially we have no rounds in the shotgun */ - self->_priv->rounds_in_shotgun = 0; - } + /* 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) + birth (self, long dob) { - self->dob = 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) + death (self, long dod) { - self->dod = dod; + g_object_set (G_OBJECT (self), + "dod", dod); } public void - load_shotgun(self) + load_shotgun (self) { /* add a round to our shotgun */ self->_priv->rounds_in_shotgun++; @@ -69,10 +85,10 @@ class My:Person from Gtk:Object { public void - shoot_oneself_in_the_head(self) + shoot_oneself_in_the_head (self) { - if(self->_priv->rounds_in_shotgun==0) { - g_warning("No rounds in the shotgun!"); + if (self->_priv->rounds_in_shotgun == 0) { + g_warning (_("No rounds in the shotgun!")); return; } @@ -80,6 +96,12 @@ class My:Person from Gtk:Object { self->_priv->rounds_in_shotgun--; /* death is imminent if we shoot oneself in the head */ - death(self,(long)time(NULL)); + death (self, (long)time (NULL)); + } + + public GObject * + new (void) + { + return (GObject *)GET_NEW; } }