The GNOME Application Framework

As someone who wants to develop an application for GNOME, you'll be most interested in the application framework. Let's look at the parts of the GNOME application framework that are most important to a database application developer. The assumption in this chapter is that a database application developer wants to develop a user interface, create application objects, and have those objects interact with a database. While there are a variety of other ways you can deal with the database, if you are interested in GNOME, you are interested in developing a desktop application.

User Interface Services

GNOME relies on a number of libraries to support the user interface. Let's look at some of these libraries.

GTK+

GTK+ (Gimp Toolkit) is a graphical user interface kit that was originally designed for GIMP, the GNU Image Manipulation Program. GTK+ is also the cornerstone of the GNOME user interface.

On the surface, GTK+ appears to be a collection of widgets (such as windows and user interface controls). On further inspection, you will see that it is a generalized object-oriented framework for GUI development in C and other languages. GTK+ also provides support for object-oriented features (such as polymorphism and inheritance) in C. Finally, you don't have to use C to program with GTK+. There are bindings for many other languages, including C++, Python, and Perl.

More information on GTK+ can be found at www.gtk.org.

libgnomeui

The core GNOME libraries (a package called gnome-libs) include a library called gnomeui. This library includes a number of GNOME-specific widgets (such as GnomeCalculator, GnomeCanvas, and GnomeEntry), utility functions for working with those widgets, and a top-level application container called GnomeApp.

libglade

This library works with the Glade user interface builder to separate the presentation of the user interface from the core application logic that backs it. libglade loads the user interface definitions at run-time, using an XML-based format to represent user interface elements. You can either edit these files by hand or use Glade to design the user interface. Since libglade loads the user interface definition at run-time, you can customize the user interface without recompiling your application.

Distributed Object Services

GNOME also has a number of CORBA-based features you can use to develop distributed objects or access objects that others have written.

ORBit

ORBit is the CORBA 2.2-compliant ORB that was developed for GNOME. A more complete description of ORBit (and CORBA in general) can be found in Chapter 15, "Introduction to CORBA."

GNORBA

This library is responsible for making CORBA easy to use from GNOME. It takes care of locating and activating the service that acts as a CORBA object directory (GOAD), integrating ORBit with the GTK+ event loop, and initializing GNOME applications that use CORBA.

GOAD

GOAD is the GNOME Object Activation Directory, a CORBA server that manages a master list of all CORBA services on your computer, and activates them on demand. With GOAD, you can get a list of services, activate a service by name, or register a newly created service with the GOAD server.

Data Access Services

GNOME-DB is a database application framework for GNOME. It takes care of managing connections to databases and offers a collection of widgets that are data-aware (you can, for instance, create a pop-up menu that gets its options from a database query). We'll look at GNOME-DB in detail later in this chapter.