]> git.draconx.ca Git - gob-dx.git/blobdiff - doc/gob.1
Release 0.90.2
[gob-dx.git] / doc / gob.1
index 3257c8fb64ef17ab994ff125c177b17a11207734..73c538541ce603dac018767d128ece3c7e7c3a9e 100644 (file)
--- a/doc/gob.1
+++ b/doc/gob.1
@@ -5,7 +5,7 @@
 .\" This manual page is covered by the terms of the GNU General
 .\" Public License.  
 .\"
-.TH GOB 1 "GOB 0.0.2" 
+.TH GOB 1 "GOB 0.90.2" 
 .SH NAME
 GOB \- The GTK+ Object Builder
 .SH SYNOPSIS
@@ -15,7 +15,8 @@ GOB \- The GTK+ Object Builder
 .PP
 GTK+ Object Builder is a simple preprocessor for easily creating
 GTK+ objects.  It does not parse any C code and ignores any C errors.  It
-is in spirit similiar to things like lex or yacc.
+is in spirit similar to things like lex or yacc.
+
 .SH TYPENAMES
 .PP
 Because we need to parse out different parts of the typename, 
@@ -51,6 +52,7 @@ For example:
   %}
 
 .fi
+
 .SH MAKING A NEW CLASS
 .PP
 The class header:
@@ -90,15 +92,15 @@ be somehow solved in some future version.
 The third type is an argument type.  It is a named datamember which
 is one of the features of the GTK+ object system.  You need to define a get
 and a set handler.  They are fragments of C code that will be used to 
-get the value orset the value of the argument.  Inside them you can use the
+get the value or set the value of the argument.  Inside them you can use the
 define ARG to which you assign the data or get the data.  You can also use
-the identifier "this" as pointer to the object instance.  The type is
+the identifier "self" as pointer to the object instance.  The type is
 defined as one of the gtk type enums, but without the GTK_TYPE_ prefix.
 For example:
 .nf
 
   public int height;
-  argument INT height set { this->height = ARG; } get { ARG = this->height; };
+  argument INT height set { self->height = ARG; } get { ARG = self->height; };
 
 .fi
 .PP
@@ -109,7 +111,7 @@ without the GTK_ARG_ prefix.  For example:
 .nf
 
   public int height;
-  argument (CONSTRUCT) INT height get { ARG = this->height; };
+  argument (CONSTRUCT) INT height get { ARG = self->height; };
 
 .fi
 .PP
@@ -126,9 +128,9 @@ to add code to the constructors or you can just leave them out.
 Argument lists:
 .PP
 For all but the init and init_class methods, you use the
-following syntax for arguments.  The first argument can be just "this",
-which gob will translateinto a pointer to the object instance.  The rest
-of the arguments are very similiar to normal C arguments.  If the
+following syntax for arguments.  The first argument can be just "self",
+which gob will translate into a pointer to the object instance.  The rest
+of the arguments are very similar to normal C arguments.  If the
 typename is an object pointer you should use the syntax defined above
 with the words separated by ':'
 .nf
@@ -140,15 +142,15 @@ or
 The checks are glib type preconditions, and can be the following:
 "null", which tests pointers for being NULL, "type" which checks GTK+
 object pointers for being the right type, "<test> <number>" which tests
-numberic arguments for being a certain value.  The test can be a <,>,<=,>=
+numeric arguments for being a certain value.  The test can be a <,>,<=,>=
 != or ==.  Example:
 .nf
   
-  public int foo(this, int h (check > 0 < 11), Gtk:Widget *w (check null type))
+  public int foo(self, int h (check > 0 < 11), Gtk:Widget *w (check null type))
 
 .fi
 .PP
-This will be the prototype of a function which has a this pointer
+This will be the prototype of a function which has a self pointer
 as the first argument, an integer argument which will be checked and has
 to be more then 0 and less then 11, and a pointer to a GtkWidget object
 instance and it is checked for being null and the type will also be
@@ -165,7 +167,7 @@ code enclosed in braces {}.  The braces will not be printed into the
 output, they just delimit the string.  For example
 .nf
 
-  public void * get_something(this, int i (check >= 0)) onerror NULL {
+  public void * get_something(self, int i (check >= 0)) onerror NULL {
          ...
   }
 
@@ -178,8 +180,9 @@ so that one can override the method in derived methods.  They can be empty
 (if you put ';' instead of the C code).  A wrapper will also be defined
 which makes calling the methods he same as public methods.  This type of
 method is just a little bit "slower" then normal functions, but not as
-slow as signals.  You define them by using "virutal" keywrod before the
-prototype.
+slow as signals.  You define them by using "virtual" keyword before the
+prototype. If you put the keyword "private" right after the "virtual"
+keyword, the wrapper will not be a public method, but a private one.
 .PP
 Signals:
 .PP
@@ -191,40 +194,47 @@ you define a signal.  One thing is when the default handler will be run,
 first or last.  You specify that by "first" or "last" right after the
 "signal" keyword.  Then you need to define the gtk enum types (again
 without the GTK_TYPE_ prefix).  For that you define the return types
-and the types of arguments after the "this" pointer (not including the
-"this" pointer).  You put it in the following syntax "<return type> (<list
+and the types of arguments after the "self" pointer (not including the
+"self" pointer).  You put it in the following syntax "<return type> (<list
 of arguments>)".  If the return type is void, the type should be "NONE",
 the same should be for the argument list.  The rest of the prototype is
 the same as for other method types.  The body can also be empty, and
 also there is a public method wrapper which you can use for calling the
-signal jus tlike a public method.  Example:
+signal juslike a public method.  Example:
 .nf
 
   signal first INT(POINTER,INT)
-  int do_something(this, Gtk:Widget *w (check null type), int length)
+  int do_something(self, Gtk:Widget *w (check null type), int length)
   {
          ...
   }
   
 or
 
-  signal last NONE(NONE) void foo(this);
+  signal last NONE(NONE) void foo(self);
 
 .fi
 .PP
+If you don't want the wrapper that emits the signal to be public, you can
+include the keyword "private" after the "signal" keyword. This will make
+the wrapper a normal private method.
+.PP
+If you don't define a "first" or a "last", the default will be taken as
+"last".
+.PP
 Override methods:
 .PP
 If you need to override some method (a signal or a virtual method
 of some class in the parent tree of the new object), you can define and
 override method.  After the "override" keyword, you should put the
 typename of the class you are overriding a method from.  Other then that
-it is the same as for other methods.  The "this" pointer in this case
+it is the same as for other methods.  The "self" pointer in this case
 should be the type of the method you are overriding so that you don't
 get warnings during compilation.  Example:
 .nf
 
   override (Gtk:Container) void
-  add (Gtk:Container *this (check null type), Gtk:Widget *wid (check null type))
+  add (Gtk:Container *self (check null type), Gtk:Widget *wid (check null type))
   {
          ...
   }
@@ -237,22 +247,41 @@ have to type the class name before each call.  Example:
 .nf
 
   private int
-  foo(this)
+  foo(self)
   {
-         return this->len;
+         return self->len;
   }
   
   private int
-  bar(this,int i)
+  bar(self,int i)
   {
-         return foo(this) + i;
+         return foo(self) + i;
+  }
+
+.fi
+.PP
+Making new objects:
+.PP
+You should define a new method which should be a normal public method.  Inside
+this method, you can use the GET_NEW macro that is defined for you and that
+will fetch a new object, so a fairly standard new method would look like:
+.nf
+
+  public GtkWidget *
+  new(void) {
+         GtkObject *ret;
+         ret = GTK_OBJECT (GET_NEW);
+         return ret;
   }
+
 .fi
+
 .SH BUGS
 .PP
 The generated header file is included as the first file in the .c file, no
-matter what. ths means that you willhave to putthings that need to be included
-before that, into an %h{ } section.
+matter what. This means that you will have to put things that need to be
+included before that, into an %h{ } section.
+
 .SH AUTHOR
 .PP
 George Lebl <jirka@5z.com>