GFC-UI: Gtk+ Foundation classes (User Interface Library)
Copyright (C) 2002-2004, The GFC Development Team.

This is the unstable development release version 2.3.1 that will 
eventually become the stable release series 2.4.x. Although only
a beta release you should find GFC 2.3.1 quite stable.

1. The History of GFC.
======================
GFC has a third generation source code base so it has been around
for a while and is both mature and stable. Initially it was called
GCode: GTK+ C++ Object Development Environment but this name had to
be changed because its short name, GCode, clashed with another program.
The previous name Inti: Integrated Foundation Classes was inherited
from the defunct project of the same name on which the source code was
originally based. 

The new name GFC: GTK+ Foundation Classes was chosen because it better 
reflects the library's purpose as a C++ language binding for GTK+. To
use the name GTK+ Foundation Classes Inti had to merge with two small
projects, one that never got off the ground (GFC: GNU/GTK Foundation
Classes) and the other which had produced a significant amount of source
code but was abandoned (GFCLIB: GNU/GTK Foundation Classes). 

What was to have been known as Inti 2.0 is now being called GFC 2.0. 
Most of the source code inherited from the original Inti project has
been rewritten. The biggest change is to the GFC signal system which
has been optimized for size and execution speed. GFC implements two
signal systems. The first uses the powerful libsigc2 library to
implement a typesafe system of C++ signals and slots. The second is a
heirachy of signal interface classes that can be multiplely inherited
to add virtual GTK+ signal handlers to any class. 
  

2. What is GFC?
===============
GFC, the GTK+ Foundation Classes, is a set of integrated C++ 
foundation classes for developing GTK+ applications on UNIX-like
systems such as Linux.

GFC combines the power of GTK+ and the power of C++ into a 
state-of-the-art GUI toolkit that makes developing GTK+ applications
easy, intuitive and efficient. There are more than 420 classes that
wrap most of the C objects found in the GLib and GTK+ libraires. It
uses the libsigc2 library to implement a typesafe system of signals
and slots that makes using native GTK signals or creating your own
signals easy. There is a standard string compatible UTF-8 string 
class, a full set of example programs, a GNU Autotools test project,
a C++ version of the GTK+ widget demonstration program, extensive
reference documentation and a tutorial.

GFC is divided into two main libraries, GFC-Core and GFC-UI.
There are other add-on libraries such as GFC-GConf which is
a C++ binding for the GNOME Configuration System.


3. What is GFC-UI?
==================
GFC-UI is a collection of C++ modules that together form the GFC user
interface library. It is this library that you will primarly use to
build your GTK+ applications. GFC-UI is built on the GFC-Core library
so you don't need to include this library in your application. GFC-UI
will do that for you. The GFC-UI modules include C++ wrappers for 
the ATK, GDK, GTK, GdkPixbuf and Pango libraries.


4. What is GFC-Core?
====================
GFC-Core is a collection of C++ modules that together form the
GFC core library. It is this core library that the other GFC
libraries such as GFC-UI and GFC-GConf are built on. GFC-Core
modules include a C++ wrapper for GLib, a UTF8 string class,
automatic memory management, several convenient base classes,
a typesafe system C++ signal and slots, automatic access to
the powerful libsigc2 library and its new adaptors and lambdas.


5. GFC version numbers.
=======================
GFC major and minor version numbers will be kept in sync with the
corresponding GTK+ major and minor version numbers. The GFC micro
version number will reflect the current GFC release. This means 
that for GTK+ 2.4.x GFC's version number will also be 2.4.x. The
difference will be in the 'x' value. This value will reflect the
current GFC release and therefore will usually be out of sync with
the GTK+ 'x' value.


6. Minimum Requirements for GFC-UI 2.3.0.
=========================================
 
 - gcc-3.2.0 C++ compiler
 - gfccore-2.3.1 
 - atk-1.6.0
 - gtk+-2.4.0
 - pango-1.4.0
 - pkg-config-0.14
 
 GFC requires the GCC compiler version 3.2 or greater because
 libsigc2 and GFC use C++ language features not supported by
 the earlier compilers. 

 
7. Installation.
================

First, if you downloaded the CVS version of GFC-UI:
 
run:	./autogen.sh

If you have GTK+-2.4.0 or pkg-config-0.14 installed in a
non-standard directory you will have to edit autogen.sh
first and add your local aclocal directory as an include 
option after aclocal (e.g. aclocal -I $HOME/share/aclocal).

Next, if you downloaded the tarball version of GFC-UI, or have
already run "./autogen.sh" then,

run:	./configure
	make

Don't forget to specify "--prefix=directory" with configure
if you want to install GFC in some directory other than
/usr/local.

If you want to install the GFC library complete with debugging
and compiler symbols, so you can debug your applications properly
then,

run:	make install

If you want to install the GFC library with all debugging symbols
stripped out then instead,

run:	make install-strip

This will install a much smaller and faster library but you wont
be able to debug your programs properly.


8. Documentation.
=================
If you downloaded the CVS version of GFC-UI you will have to compile
the reference documentation yourself with the doxygen program. See the 
README file in the <docs> subdirectory.

If you downloaded a tarball version of GFC-UI you will find the 
reference documentation pre-compiled in the <docs/reference/html>
subdirectory.

The tutorial documentation is yet to be completed. When it is 
finished it will be added to the <docs/tutorial> subdirectory.
A FAQ sheet will be added to the <docs/faq> subdirectory when
its completed.


9. Example Programs.
====================
The examples subdirectory contains all the example applications 
that the GFC tutorial discusses and works through step by step.
They can be compiled individually, or all at once by running 
the Makefile in the examples subdirectory. The examples are not
compiled by default. You must compile them yourself.


10. The Test Project.
====================
Programmers new to GNU/Linux often need help getting started with
a GNU project. Look no further! GFC comes with a GNU Autotools
test project ready to build, in the <tests/project> subdirectory.
The GFC tutorial takes you step-by-step through the process of
building the project, and then shows you how to add international
support.


11. Contact.
===========
If you take the time to compile GFC and try it out you will find
it provides an easy and exciting new way the program GTK+ applications
in C++. If you find any bugs, or need any help programming with GFC
let us know at <gfc-list@lists.sourceforge.net>. The list is a 
members only mailing list so you must subscribe.


Empowering the GTK+ programmer,
The GFC Development Team.
