Project:Sandbox

GTK+ es un conjunto de bibliotecas multiplataforma para desarrollar Interfaces graficas de usuario (GUI). Ofreciendo un conjunto completo de elementos, GTK+ es usado desde herramientas específicas y programas pequeños, hasta grandes conjuntos de software.

Origen
GTK+ proviene de su antecesor GTK o también conocido como The GIMP Toolkit. GTK fue creado inicial mente como sustituto de Motif, para el programa GIMP como su propio nombre indica, en 1997 por Spencer Kimball y Peter Mattis miembros del grupo de desarrollo XFC en la universidad de Berkeley, California.Estos no estaban contentos con la forma de trabajar con Motif, por tanto, decidieron hacer su propia biblioteca.

Caracteristicas

 * GTK+ se ha diseñado para permitir programar con [ http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguajes] como C, C++, C#, Java, Ruby, Perl, PHP o Python mediante los llamados bindings o adaptaciones de bibliotecas.

METER MAS COSAS
 * GTK+ es software libre  y esta licenciado bajo los términos de LGPL, 'y es parte del proyecto GNU, su uso es totalmente gratuito y libre.
 * Es multiplataforma. A pesar de estar diseñados principalmente para los Entornos graficos GNOME, XFCE y ROX ,también se puede usar en el escritorio de Windows, Mac OS y otros previa instalación de algún paquete que contenga las librerías necesarias para la ejecución de GTK.
 * Es una de las librerías de herramientas mas populares. Actualmente se usan bastante por muchos otros programas en los sistemas GNU/Linux, y junto a Qt son las bibliotecas de desarrollo mas comunes en sistemas  X Window System, lo cual asegura mantenibilidad y mejoras continuas, además de una gran cantidad de comunidades de usuarios.
 * GTK+ es orientado a objetos
 * GTK es adaptable a cada plataforma. Usa conjuntos de temas que emulan la estética de cada sistema, integrándose asi con el resto de aplicaciones nativas.

Bibliotecas de GTK+


GTK+ se basa en varias bibliotecas desarrolladas por el equipo de GTK+ y de GNOME:


 * GLib. Biblioteca de bajo nivel estructura básica de GTK+ y GNOME. Proporciona manejo de estructura de datos para C, portabilidad, interfaces para funcionalidades de tiempo de ejecución como ciclos, hilos, carga dinámica o un sistema de objetos.


 * GTK. Biblioteca la cual realmente contiene los objetos y funciones para crear la interfaz de usuario. Maneja widgets como ventanas, botones, menús, etiquetas, deslizadores, pestañas, etc.


 * GDK. Biblioteca que actúa como intermediario entre gráficos de bajo nivel y gráficos de alto nivel.


 * ATK. Biblioteca para crear interfaces con características de una gran accesibilidad muy importante para personas discapacitadas o minusválidos. Pueden usarse utilerías como lupas de aumento, lectores de pantalla, o entradas de datos alternativas al clásico teclado o |ratón.


 * Pango. Biblioteca para el diseño y renderizado de texto, hace hincapié especialmente en la internacionalización. Es el núcleo para manejar las fuentes y el texto de GTK+.


 * Cairo. Biblioteca de renderizado avanzado de controles de aplicación.

Aplicaciones que usan GTK+


Entornos que utilizan GTK+


 * GNOME está basado en GTK+, lo que significa que los programas de GNOME usan GTK+
 * Xfce está basado en GTK+
 * LXDE está basado en GTK+, significa "Lightweight X11 Desktop Environment"
 * ROX Desktop] un escritorio ligero, con características de la GUI de RISC OS
 * GPE Palmtop Environment
 * Maemo] (Nokia Internet-tablet framework)
 * Access Linux Platform (sucesor de la plataforma Palm OS PDA)
 * One Laptop Per Child usa GTK+ y PyGTK

Decoradores de ventanas


 * Metacity hasta su version 2.32 y Xfwm4 usan GTK+ 2.
 * Metacity desde la version 2.34 y la versión 3 de GNOME en adelante usan GTK+ 3
 * Otros Decoradores de ventanas como Compiz, Emerald, Cinnamon, Gnome Shell, hacen uso de librerias comunes con GTK tales como GLib y permiten cambiar el tema que usa por defecto GTK

Aplicaciones de usuario

Algunas aplicaciones de usuario que usan GTK+ para desarrollar sus interfaces de usuario incluyen:


 * AbiWord - Procesador de textos.
 * CinePaint (ex FilmGimp) - Editor de gráficos animados en High dynamic range|HDR.
 * Ekiga (ex GnomeMeeting) - Software telefónico VoIP H.323/SIP.
 * Evolution (software)|Evolution - Cliente de correo electrónico.
 * Firefox - Navegador web.
 * GIMP - Editor de gráficos.
 * Gnumeric - Programa de hoja de cálculo.
 * Chromium (navegador)|Chromium - Navegador Web basado en WebKit y desarrollado en gran medida por Google.
 * GRAMPS - Software de genealogía.
 * Inkscape - Editor de gráficos vectoriales SVG.
 * K-3D - Programa de modelado 3D libre.
 * Marionnet - Un simulador de red interactivo.
 * Midori (navegador) - Navegador Web ligero,forma parte del proyecto XFCE.
 * Nero Linux - Un programa para la edición de discos.
 * Pidgin - Cliente de mensajería instantánea.
 * VMware Player - Maquina virtual.
 * Wireshark - Capturador y analizador de paquetes de redes computacionales.

Herramientas de desarrollo
Editor de codigo que contiene todas las herramientas para dessarrollar programas, ademas permite hacerlo en varios tipos de lenguaje: C,Java,Python(PyGTK) y Vala Existen varios editores :
 * Anjuta
 * Glade: Editor de interfaces con soporte de GtkBuilder, un lenguaje de descripción integrado en GTK+
 * Crow Designer: Editor con su propio formato( GuiXml) y una librería propia (GuiLoader).
 * Stetic: Parte de MonoDevelop, y Orientado hacia Gtk#.
 * Gazpacho: Gazpacho es un análogo a Glade, pero bajo el framework de Kiwi. Kiwi es una extensión de PyGTK con la que tener unos widgets mucho más enriquecidos y personalizables.

En este trabajo nos centraremos principalmente en Glade y de forma aparte Gazpacho, el cual es un caso especial por ser una variante de PyGTK.

Glade
Glade (o Glade Interface Designer, que significa ‘Diseñador de interfaces Glade’) es una herramienta de desarrollo visual de interfaces graficas mediante GTK. El primer lanzamiento de Glade, la versión 0.1, se hizo el 18 de abril de 1998. La actual, Glade3 se lanzó el 12 de agosto del 2006. Glade guarda toda la información de los diseños de la interfaz en archivos XML bajo el formato GTKBuilder. Además se encuentra totalmente integrado en el IDE Anjuta 2. Un entorno de desarrollo para varios lenguajes de programación.

GtkBuilder
Es el formato XML que Glade usa para almacenar los elementos de las interfaces diseñadas. Estos archivos pueden ser cargados dinámicamente en nuestra aplicación mientras la aplicación está cargada mediante el objeto GTKBuilder. Esto permite que el código sea más fácil de mantener y modificar e independiza la interfaz del código fuente, y permitiendo hacer modificaciones sin tener que recompilar la aplicación.

Code sketchers
Los “Code sketchers” son aplicaciones que ayudan al usuario a generar el código fuente a partir del  archivo GladeXML. La mayoría de estas aplicaciones generan el código haciendo uso de la librería libglade para crear el código fuente de la interfaz. Uno de los mas usados para PyGTK es Tepache, aplicación que nos generara el código fuente.

Gazpacho
Gazpacho es un analogo a Glade, pero bajo el framework de Kiwi, un derivado de PyGTK. Destaca su usabilidad y simplicidad.

Es software libre, y a la derecha podemos observar imágenes de la aplicación y de las partes que forman el editor de interfaces.

Kiwi
Kiwi es un framework derivado de PyGTK, un conjunto de widgets PyGTK mejorados que están diseñados para hacer aplicaciones con interfaz graficas, siendo fáciles de mantener y desarrollar. Kiwi esta totalmente desarrollado en python 2.4 y es multiplataforma. Un ejemplo de una interfaz hecha con Kiwi de manera enriquecida:

Ejemplos
. Ejemplo en PyGTK+ .

Enlaces externos

 * GTK.org (inglés)
 * Pango.org (inglés).
 * GTK.ALKIA.ORG (inglés).
 * RubyGTK, bindings de GTK para Ruby. (inglés).
 * gtk-fortran, bindings de GTK para Fortran 2003. (inglés).
 * PyGTK, bindings de GTK para Python.
 * GTK#, bindings de GTK para Mono.
 * gtk2-perl, bindings de GTK para perl.
 * PHP-GTK, bindings de GTK para PHP.
 * Java-Gnome, bindings de GTK/Gnome para Java.
 * gtkmm, bindings de GTK para C++.