### Frequently Asked Questions

# Integrated Foundation Classes

the power of gtk+ . the power of c++

1. Who is Inti?
Inti is the Inca sun-god, as well as their state-god and ancestor. He is a son of the supreme creator-god Viracocha, and with his wife the moon goddess Mama Quilla, he is the father of the legendary first Inca Manco Capac I and of Mama Ocllo the Inca mother goddess. The ruling Inca was considered to be the representative of Inti on earth. He is portrayed as a golden disc with a human face.
Inti and his wife were regarded as benevolent deities. According to an ancient Inca myth, Inti taught his son Manco Capac and his daughter Mama Ocllo the arts of civilization and sent them to the Earth to instruct mankind in what they had learned. Inti is celebrated even today in Peru during the Festival of Inti Raimi in Cuzco where an Inca drama related to the Sun god is re-enacted.
2. What is GTK+?
GTK+ is a powerful graphical user interface library originally designed for the Linux platform. Written completely in C, it comprises a collection of graphical objects, such as buttons, menus, dialogs and the function calls needed to implement them. The graphical objects are known as widgets and the collection of widgets is known as the GIMP toolkit or the GTK+ widget set.
3. What is Inti?
Inti is a C++ language binding (wrapper) for GTK+. There are several other C++ language bindings available for GTK+, such as:

- the gtkmm package, which is a high level C++ encapsulation that includes the use of exceptions, STL-like widget interfaces, template classes and offers both automatic memory management and normal C++ memory management techniques.
- the VDK/VDKBuilder package, which is a Borland-like builder for rapid application development. VDK is a C++ wrapper for GTK+. VDKBuilder is a general purpose integrated development environment for constructing GUI applications using VDK. VDK was built as the base library for VDKBuilder and therefore implements an object hierarchy and API more suited to rapid application development.
- the wxWindows/GTK package, which is a free C++ library for cross-platform GUI development. Currently it supports MS Windows, Unix with GTK+, Unix with Motif, and Mac OS.

There are other language bindings for GTK+, including C#, Java, Objective-C, Guile, Perl and PyGtk. You can find more information on these and others in the bindings page on the GTK+ web site.
4. What are the goals of the Inti project?
The main goal for the Inti project is to implement a simple, fast and easy to use C++ interface that exposes the GTK+ programming paradigm so programmers can continue use the concepts they're already familiar with, without compromising on any essential C++ features.
Some other goals of the project are:

- Stable interfaces, with an easy upgrade path between releases.
- Use of the standard C++ library features.
- Automatic memory management to help prevent memory leaks.
- Consistency; to make Inti easier to learn, the interfaces religiously follow strict conventions.
- Ease of use; Inti gives you a single integrated package, with all the interfaces you need.
- Documentation; stable releases of Inti will have excellent documentation.
- Maturity; Inti will not be maintained as a "bleeding edge" library; it will support features as they become mature.

5. What is the relationship between Inti and GTK+?
GTK+ is a C toolkit that comprises several component libraries. These include:

- the ATK Accessibility Toolkit
- the GDK Drawing Kit
- the GDK-PIXBUF Image Library
- the GLib utility library
- the GTK GUI Toolkit
- the Pango internationalized text handling library

Inti wraps these libraries in a consistent and easy to use C++ interface. Inti should be immediately familiar because it uses the same widget hierarchy, and the same API names and identifiers.
6. Why use Inti instead of GTK+?
Over the years application programming has become more complex. Today, C++ is a better way the manage that complexity because it provides you with a variety of designs, both object-oriented and conventional, that let you develop high-quality applications. Properly used, C++ code is easily maintainable, is extensible and can be performance and memory efficient.
S o why use Inti? Because Inti combines the power of GTK+ and the power of C++ into a state-of-the-art application development platform that's intuitive and easy to use. Inti does this by exposing the GTK+ programming paradigm so programmers can continue to use concepts they're already familiar with, and by implementing only the C++ features it actually needs. The result is a small library that's fast, stable and a joy to use.
7. What does Inti include?
Inti includes C++ wrappers for most of the features implemented in the GTK+ package. These include:

- A GUI toolkit
- An Accessibility Toolkit for writing programs for the disabled.
- Internationalized text handling.
- Main loop support
- A signal system.
- A UTF-8 string class.

There is also Inti-GConf, an Inti binding for the GNOME Configuration System that provides access to the GConf database.
8. How does Inti improve on plain GTK+?
Inti adds a number of C++ features:

- Namespace support
- Type safety, no need for type casting.
- Use of C++ native types such as string and vector.
- Automatic memory management.
- Derivation of new widgets using standard C++ mechanisms.
- Deprecated and legacy interfaces that have built up over the years in GTK+ are not included in Inti.
- Typesafe C++ signal system.
- Full wrapper for all C types, including enumerations and GDK types.

9. Who is behind Inti?
Inti is being developed by The Inti Development Team. Currently the primary maintainer is Jeff Franks.
10. How is Inti licensed?
Inti is licensed under the GNU Library or Lesser General Public License, similar to most libraries on the Linux operating system. In general terms, this means that it's OK to develop proprietary software with Inti; however you should read the license yourself (or have your lawyers read it), in order to get all the details about your rights and responsibilities.
11. Why write yet another C++ binding for GTK+?
I wrote Inti because when I needed to learn GTK+ programming several years ago, I couldn't find a usable C++ binding that I liked. There were several available, including Gtk--, QT, V, VDK and wxWindows but I found problems with these. Forced to give up, I bought a good GTK+ programming book and set about learning GTK+ C programming. As I worked my way through the examples in the book, as an exercise, I ported them to C++. Before too long I had written an small C++ interface for GTK+ that worked. When GTK+ development version 1.3.1 was released I decided to try and develop this small interface into a serious C++ language binding for GTK+-2.0. The original binding was called GCode. I worked on it in my spare time and as soon as I had a workable framework in place I uploaded its source code base to SourceForge and began public development, on May 30th, 2002.
The original Inti library was first released by Havoc Pennington in 2001 but its development was later abandoned. When I discovered there was a CAD program called GCode I went looking for a new name. I approached Havoc and he kindly let me use the name Inti. Thanks Havoc!
12. Are there any similarities to the original Inti library?
Yes. Inti is loosely based on the source code from the original Inti library released by Havoc Pennington. The original release only reached an early stage of development and was never finished. Unfortunately, Havoc was committed to the ongoing development of GTK+-2.0 and didn't have enough time.
Inti has several similarities to the original Inti release:

- Its signal system is very similar.
- It uses STL vectors as method parameters rather than C arrays.
- It wraps all C structures passed as parameters.
- It doesn't enforce the use of C++ references.
- It uses automatic C++ memory management that prohibits the use of <EM>delete</EM>.

Unlike the original Inti release, this Inti uses a memory model that allows a widget instance to be either allocated dynamically or on the stack.
13. What Inti documentation is there?
There is three kinds of documentation - this FAQ sheet, the reference manual and a tutorial.
The Inti reference manual is written with Doxygen, so if you look at the header files you will find them filled with doxygen comments. In beta releases you will need Doxygen to compile the reference manual. In stable releases the reference manual comes precompiled.
The Inti tutorial is very extensive and follows the same format as the GTK+ tutorial. It covers all the widget classes and works through all the examples in the examples directory.
14. Where will Inti go from here?
Inti will continue to be developed so that it parallels the ongoing GTK+ development, and it will continue to be made available free under the LGPL. At this stage only GTK+ and GConf bindings are implemented, but it is possible more bindings will be added in the future.
The Inti Development Team.