[Gtk-sharp-list] MonkeyGuide?: Hello World in GNOME# - First Draft

Charles Iliya Krempeaux charles@reptile.ca
06 Feb 2003 10:20:36 -0800


--=-W+/RiI4SoRN0IrKBPBfx
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hello,

OK, since no one else has started the GNOME# documentation in the
MonkeyGuide, as far as I know, I thought I'd just do it.

This is my first draft of it.  So give any comment and criticisms you
have.  (I haven't gone over it for style or anything, so it's probably
still a bit rough.)

------- BEGIN -------


GNOME#

HelloWorld, first try

HelloWorld in Gnome#:

    class Hello
    {
        static void Main(string[] args)
        {
            Gnome.Program program =
            new Gnome.Program("Hello World", "1.0", Gnome.Modules.UI,
args);

            Gnome.App app = new Gnome.App("Hello World", "Hello World");
            app.Show();
 
            program.Run();
        }
    }

compile:

mcs helloworld.cs -r gnome-sharp.dll

It's a bit longer than console hello world and needs some explanation.

In Main() at first you see:

            Gnome.Program program =
            new Gnome.Program("Hello World", "1.0", Gnome.Modules.UI,
args);

This initializes GNOME and is needed in every GNOME Application.  Here
we are creating a variable of type Gnome.Program, called program.  This
variable, program, is used to control the GNOME program, as we'll see
later.

Next we see:

            Gnome.App app = new Gnome.App("Hello World", "Hello World");

This creates our GNOME Application Window.  (That's what you see on the
screen.)

We then see:

           app.Show();

This makes the GNOME Application Window (that you created with the
previous line on code) visible on the screen.  With GNOME, things don't
automatically display themselves unless you explicitly tell them too.

And finally we see:

            program.Run();

This make your GNOME program run.  It makes all the magic happen, that
you don't need to worry about at this moment.  Needless to say though,
you need to do this to make your GNOME Application work.


HelloWorld, second try

While the above program compiles and runs, it's doesn't quit, properly.
You have to exit with CTRL+C.  (Ideally, we want the program to close
when you press the "X" on the title bar.  Which is what this next
example does.)


    class Hello
    {
        static Gnome.Program program;

        static void Main(string[] args)
        {
            program =
            new Gnome.Program("Hello World", "1.0", Gnome.Modules.UI,
args);

            Gnome.App app = new Gnome.App("Hello World", "Hello World");
            app.DeleteEvent += new
GtkSharp.DeleteEventHandler(delete_event);
            app.Show();
 
            program.Run();
        }

        static void delete_event(object obj, GtkSharp.DeleteEventArgs
args)
        {
            program.Quit();
        }
    }

compile:

mcs helloworld.cs -r gnome-sharp.dll -r gtk-sharp.dll

The first change to notice is that the variable program has been moved
out of Main() and made a (static) class variable.  We see this in the
line:

        static Gnome.Program program;

This was done so we could access it from the delete_event function,
which we will talk about later.

The next difference we is in the Main() method, and is:

            app.DeleteEvent += new
GtkSharp.DeleteEventHandler(delete_event);

This makes it so that when the "X" button on the title bar is pressed,
the function delete_event is called.  Technically, when the "X" button
is pressed, the program receives a DeleteEvent, which is what you see in
the code above.

The final difference that you see is:

        static void delete_event(object obj, GtkSharp.DeleteEventArgs
args)
        {
            program.Quit();
        }

This is the function that is called when the application receives a
DeleteEvent.  I.e., when the user clicks the "X" button on the title
bar.  As you can hopefully see, when this function is called, the
program will quit.


HelloWorld, third try

While the above code functioned properly, and did what we wanted, it was
kind of sloppy.  The sloppyness came from having to make the program
variable a (static) class variable.  A much more elegant way of doing
the same thing involves using subclassing (also called inheritance) to
accomplish the same thing.  Which can be seen in the example below.

    class Hello
        : Gnome.Program
    {
        Hello(string[] args)
            : base("Hello World", "1.0", Gnome.Modules.UI, args)
        { 
            // Nothing here.
        }

        static void Main(string[] args)
        {

            Hello hello = new Hello(args);

            hello.run();
        }

        void delete_event(object obj, GtkSharp.DeleteEventArgs args)
        {
            this.Quit();
        }

        void run()
        {
            Gnome.App app = new Gnome.App("Hello World", "Hello World");
            app.DeleteEvent += new
GtkSharp.DeleteEventHandler(delete_event);
            app.Show();
 
            this.Run();
        }
    }

compile:

mcs helloworld.cs -r gnome-sharp.dll -r gtk-sharp.dll

#### I'll add an explanation of this later today.


-------- END --------

For the next section, I'm thinking of showing how to add content to a
Gnome Application window.  And then show how to add menus.


See ya

-- 
     Charles Iliya Krempeaux, BSc
     charles@reptile.ca

________________________________________________________________________
 Reptile Consulting & Services    604-REPTILE    http://www.reptile.ca/

--=-W+/RiI4SoRN0IrKBPBfx
Content-Type: text/html; charset=utf-8

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/1.1.7">
</HEAD>
<BODY>
Hello,<BR>
<BR>
OK, since no one else has started the GNOME# documentation in the MonkeyGuide, as far as I know, I thought I'd just do it.<BR>
<BR>
This is my first draft of it.&nbsp; So give any comment and criticisms you have.&nbsp; (I haven't gone over it for style or anything, so it's probably still a bit rough.)<BR>
<BR>
<TT>------- BEGIN -------</TT><BR>
<BR>
<H1>GNOME#</H1>
<H2>HelloWorld, first try</H2>
HelloWorld in Gnome#:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d5d5d5">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; class Hello<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.Program program =<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; new Gnome.Program(&quot;Hello World&quot;, &quot;1.0&quot;, Gnome.Modules.UI, args);<BR>
<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.App app = new Gnome.App(&quot;Hello World&quot;, &quot;Hello World&quot;);<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; app.Show();<BR>
&nbsp;<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; program.Run();<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; }</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
compile:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#808080">
<FONT COLOR="#ffffff"><TT>mcs helloworld.cs -r gnome-sharp.dll</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
It's a bit longer than console hello world and needs some explanation.<BR>
<BR>
In <TT>Main()</TT> at first you see:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.Program program =<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; new Gnome.Program(&quot;Hello World&quot;, &quot;1.0&quot;, Gnome.Modules.UI, args);</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This initializes GNOME and is needed in every GNOME Application.&nbsp; Here we are creating a variable of type <TT>Gnome.Program</TT>, called <TT>program</TT>.&nbsp; This variable, <TT>program</TT>, is used to control the GNOME program, as we'll see later.<BR>
<BR>
Next we see:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.App app = new Gnome.App(&quot;Hello World&quot;, &quot;Hello World&quot;);</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This creates our GNOME Application Window.&nbsp; (That's what you see on the screen.)<BR>
<BR>
We then see:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; app.Show();</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This makes the GNOME Application Window (that you created with the previous line on code) visible on the screen.&nbsp; With GNOME, things don't automatically display themselves unless you explicitly tell them too.<BR>
<BR>
And finally we see:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; program.Run();</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This make your GNOME program <I>run</I>.&nbsp; It makes all the magic happen, that you don't need to worry about at this moment.&nbsp; Needless to say though, you need to do this to make your GNOME Application work.<BR>
<BR>
<H2>HelloWorld, second try</H2>
While the above program compiles and runs, it's doesn't quit, properly. You have to exit with CTRL+C.&nbsp; (Ideally, we want the program to close when you press the &quot;X&quot; on the title bar.&nbsp; Which is what this next example does.)<BR>
<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d5d5d5">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; class Hello<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static Gnome.Program program;<BR>
<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  program =<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Gnome.Program(&quot;Hello World&quot;, &quot;1.0&quot;, Gnome.Modules.UI, args);<BR>
<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.App app = new Gnome.App(&quot;Hello World&quot;, &quot;Hello World&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app.DeleteEvent += new GtkSharp.DeleteEventHandler(delete_event);<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; app.Show();<BR>
&nbsp;<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; program.Run();<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void delete_event(object obj, GtkSharp.DeleteEventArgs args)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; program.Quit();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; }</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
compile:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#808080">
<FONT COLOR="#ffffff"><TT>mcs helloworld.cs -r gnome-sharp.dll -r gtk-sharp.dll</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
The first change to notice is that the variable <TT>program</TT> has been moved out of Main() and made a (static) class variable.&nbsp; We see this in the line:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static Gnome.Program program;</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This was done so we could access it from the <TT>delete_event</TT> function, which we will talk about later.<BR>
<BR>
The next difference we is in the <TT>Main()</TT> method, and is:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app.DeleteEvent += new GtkSharp.DeleteEventHandler(delete_event);</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<FONT SIZE="3"><TT></TT></FONT><BR>
This makes it so that when the &quot;X&quot; button on the title bar is pressed, the function <TT>delete_event</TT> is called.&nbsp; Technically, when the &quot;X&quot; button is pressed, the program receives a <TT>DeleteEvent</TT>, which is what you see in the code above.<BR>
<BR>
The final difference that you see is:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d4d4d4">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void delete_event(object obj, GtkSharp.DeleteEventArgs args)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; program.Quit();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
This is the function that is called when the application receives a <TT>DeleteEvent</TT>.&nbsp; I.e., when the user clicks the &quot;X&quot; button on the title bar.&nbsp; As you can hopefully see, when this function is called, the program will quit.<BR>
<BR>
<H2>HelloWorld, third try</H2>
While the above code functioned properly, and did what we wanted, it was kind of sloppy.&nbsp; The sloppyness came from having to make the <TT>program</TT> variable a (static) class variable.&nbsp; A much more elegant way of doing the same thing involves using subclassing (also called inheritance) to accomplish the same thing.&nbsp; Which can be seen in the example below.<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#d5d5d5">
<FONT SIZE="3"><TT>&nbsp;&nbsp;&nbsp; class Hello<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Gnome.Program<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hello(string[] args)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : base(&quot;Hello World&quot;, &quot;1.0&quot;, Gnome.Modules.UI, args)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Nothing here.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hello hello = new Hello(args);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hello.run();<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void delete_event(object obj, GtkSharp.DeleteEventArgs args)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Quit();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void run()<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Gnome.App app = new Gnome.App(&quot;Hello World&quot;, &quot;Hello World&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app.DeleteEvent += new GtkSharp.DeleteEventHandler(delete_event);<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; app.Show();<BR>
&nbsp;<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.Run();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; }</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
compile:<BR>
<BR>
<TABLE BGCOLOR="#bfbfbf" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#f2f2f2" CELLSPACING="1" CELLPADDING="3" WIDTH="100%">
<TR>
<TD BGCOLOR="#808080">
<FONT COLOR="#ffffff"><TT>mcs helloworld.cs -r gnome-sharp.dll -r gtk-sharp.dll</TT></FONT>
</TD>
</TR>
</TABLE>

</TD>
</TR>
</TABLE>
<BR>
<BR>
#### I'll add an explanation of this later today.<BR>
<BR>
<BR>
<TT>-------- END --------</TT><BR>
<BR>
For the next section, I'm thinking of showing how to add content to a Gnome Application window.&nbsp; And then show how to add menus.<BR>
<BR>
<BR>
See ya<BR>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>-- 
     Charles Iliya Krempeaux, BSc
     charles@reptile.ca

________________________________________________________________________
 Reptile Consulting &amp; Services    604-REPTILE    http://www.reptile.ca/</PRE>
</TD>
</TR>
</TABLE>

</BODY>
</HTML>

--=-W+/RiI4SoRN0IrKBPBfx--