Rodrigo Moya
Álvaro del Castillo
Roberto Majadas
Gregorio Robles
Yolanda Moreno
Germán Poo-Caamaño
Alejandro Sánchez Acosta
Roberto Pérez Cubero
Carlos Garnacho
Juanan Pereira
Antonio Santiago
Alejandro Valdés
Claudio Saavedra V.

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, versión 1.1 o cualquier versión posterior publicada por la Free Software Foundation. No hay Secciones Invariantes ni Textos de Portada o Contraportada. Puedes consultar una copia de la licencia en http://www.gnu.org/copyleft/fdl.html.


Tabla de contenidos

Introducción
El proyecto GNOME
Historia de GNOME.
Organización de GNOME: La Fundación GNOME.
Herramientas y servicios de comunicación en el desarrollo.
GNOME Hispano.
Preparación del entorno
Introducción
Estructura de un proyecto GNU
Las herramientas a través de un ejemplo
Internacionalización
Internacionalización de aplicaciones
GLib
Tipos de datos de GLib
Mensajes de salida.
Trabajar con cadenas.
Jugando con el tiempo.
Miscelánea de funciones.
Bucles de ejecución.
Tratamiento de ficheros y canales de entrada/salida.
Manejo de memoria dinámica.
Estructuras de datos: listas enlazadas, pilas y colas.
Estructuras de datos avanzadas.
GLib™ avanzado.
Sistema de objetos de GLib.
Gestión dinámica de tipos.
Señales
GObject, la clase base.
Parámetros y valores.
Pango
Caminando hacia Pango
Pango, a modo de introducción
Arquitectura
El API de Pango e Implementación
Pango en GTK+2.0
El futuro de Pango
Referencias
GTK+
Qué es un widget
Bucle de ejecución y eventos
Ejemplo básico
Contenedores
Ventanas
Visualización y Entrada de información
Botones
Menús y barras de herramientas
Ventanas de selección
Widgets de desplazamiento
GtkTreeView: Árboles y listas en GTK+
Ejemplos básicos
Modelos de datos estándares
Modelos de datos a medida
GtkTreeView: Visualización
Cortar y pegar en GtkTreeView
Editor de texto multilínea
Manipulación de texto
Mini editor de texto
GTK+ avanzado
El portapapeles GTK
Drag and Drop
Imágenes, botones, menús de stock
Ficheros de recursos
Selecciones
Otros widgets
Accesibilidad en GNOME
Interfaces de usuario con Glade y libglade
Introducción
Diseño de interfaces de usuario con Glade
La biblioteca libglade
Ejemplos más avanzados
El canvas de GNOME
Bases
Objetos por defecto
Ejemplo sobre los objetos
Trabajar con los objetos
Crear objetos propios
Un objeto propio
CORBA
Introducción a CORBA
La Historia de CORBA en el proyecto GNOME
El lenguaje IDL
ORBit, la implementación de CORBA de GNOME
Activación de componentes
libgnorba
Instalación de componentes en el sistema
Activación de Componentes
Bonobo
¿Qué es Bonobo?
CORBA y Bonobo
Implementación de interfaces CORBA con Bonobo
Factorías de componentes
Controles Bonobo
Documentos compuestos
Contenedores (BonoboWindow)
Monikers
XML en GNOME
libxml (o GNOME-XML)
GConf, el sistema de configuración
Almacenes de datos
Clientes GConf
Notificaciones
Gestión de errores
gnome-vfs
URIs (Uniform Resource Identifier)
Operaciones básicas
E/S Asíncrona
Módulos para GNOME-VFS
Acceso a BBDD
libgda
libgnomedb
Documentación con DocBook
Por qué usar SGML?
El DTD DocBook
Elementos
A. Cómo migrar a Gnome 2.0
Introducción
¿Qué significa migración?
Las bibliotecas de la plataforma
Preparación del ambiente
Cambios al entorno de compilación

Lista de figuras

1. Estructura básica de un proyecto
1. Esquema de un nodo y una lista enlazada.
1. Cinco estilos diferentes de colocación
2. Diferencias entre padding y spacing
3. Diferentes layout settings de las cajas de botones
4. Tabla con 3 botones
5. GtkNotebook en acción
6. Ejemplo de Paned Window
7. Ejemplo de GtkFixed
8. GtkAspectFrame: al redimensionar la ventana, el ratio se mantiene
9. Todos los ajustes de un botón spin al descubierto
10. Resultado de ejecutar el programa GtkImage.c
11. Barra de progreso, actualizada mediante el uso de timeouts.
12. Ejemplo de utilización del widget statusbar
13. Ventana de selección de archivo
14. GtkFileChooser en acción
15. Ejemplo de GtkColorSelectionDialog en ejecución
16. Ejemplo de GtkFontSelectionDialog en ejecución
17. Ejemplo de GtkScrolledWindow, extraído de la sección de ejemplos de la documentación de GTK+
1. Lista de la compra
2. Países y algunas de sus ciudades
3. UML de interfaces para modelos de datos
4. Grupos en MrProject
5. Vista Gantt con tareas anidadas
1. Mini editor de texto
1. Vista general de una sesión de trabajo con Glade
2. Ventana principal
3. Paleta de herramientas
4. Ventana de propiedades
5. Ventana de trabajo
6. Ventana resultante para el ejericicio
7. Construcción paso a paso con cajas
8. Construcción paso a paso con tabla
1. Modo RGB
2. Modo GDK
3. Objetos en el canvas
1. El selector de componentes de Bonobo
1. GnomeDbBrowser en Glade
2. GnomeDbBrowser en el front-end de GNOME-DB
3. Componente de edición GtkHTML
4. El control calculadora en la ventana contenedora
5. Gnumeric con Guppi empotrado
6. Comunicación contenedor y empotrable
7. GUI del contenedor Bonobo
8. Selección de componente Bonobo empotrable
9. Varias vistas de un mismo empotrado
10. Barra de menús sin componente empotrado activo
11. Barra de menús con componente empotrado activo
12. Barra de menús con componente empotrado activo
13. Impresión del contenedor Bonobo
1. logo

Lista de tablas

1. Tipos de GLib™ que se corresponden con los del estándar C.
2. Tipos de GLib™ que facilitan el uso de tipos del estándar C.
3. Tipos de GLib™ que aseguran el tamaño del dato entre plataformas.
4. Tipos de GLib™ nuevos que no están en el estándar de C.
5. Funciones de verificación de caracteres.
6. Operadores de inserción en listas enlazadas.
7. Operadores de eliminación en listas enlazadas.
8. Operadores de búsqueda en listas enlazadas.
9. Operador para vaciar la lista.
10. Operadores de inserción en listas doblemente enlazadas.
11. Operadores de eliminación en listas doblemente enlazadas.
12. Operadores de búsqueda en listas doblemente enlazadas.
13. Operador para vaciar la lista
14. Operadores asociados al TDA Cola.
15. Operadores asociados al TDA Pila.
1. Acciones que se pueden tomar
2. Posibles valores para flags
3. Acciones cuando se suelta
1. Principales widgets
1. Parámetros de GnomeCanvasRect y GnomeCanvasEllipse
2. Parámetros de GnomeCanvasPolygon
3. Parámetros GnomeCanvasText
4. Parámetros de GnomeCanvasLine
5. Parámetros GnomeCanvasPixbuf
6. Parámetros de GnomeCanvasWidget
1. Tabla de ejemplo
A.1. Módulos de bibliotecas de plataforma GNOME 2
A.2. Paquetes requeridos para compilar la plataforma GNOME 2
A.3. Paquetes extra requeridos para ejecutar GNOME 2

Lista de ejemplos

1. configure.in básico (sin funcionalidad)
2. Método antiguo
3. Método nuevo
4. configure.in básico
5.
6.
7. Makefile.am del proyecto 'hola mundo'
8. src/Makefile.am del proyecto 'hola mundo'
9. Programa hola-mundo.c
10.
11.
1. configure.in con soporte i18n
2. Makefile.am con soporte i18n
3. Makefile.am con soporte i18n
4. hola-mundo-i18n.h
5. hola-mundo-i18n.c con soporte i18n
6.
7.
8.
1. Mensajes de salida.
2. Personalización de mensajes de salida.
3. Depuración de programas con g_assert.
4. Depuración de programas con g_return_if_fail y g_return_val_if_fail.
5. Uso de mensajes de registro.
6. Crear una cadena con GString.
7. Añadir cadena a un GString.
8. Insertar una cadena a un GString.
9. Borrar una cadena a un GString.
10. Crear texto preformateado con GString.
11. Añadir texto preformateado con GString.
12. Añadir e insertar caracteres a un GString.
13. Ejemplo de uso de GTimer
14. Insertar un nuevo dato en una posición determinada.
15. Parámetro GCompareFunc para insertar en orden creciente.
16. Insertar elementos en orden creciente.
17. Elimina un elemento de la lista.
18. Función que imprime una lista.
19. Insertar un nuevo dato en una posición determinada.
20. Insertar elementos en orden creciente.
21. Eliminar un elemento de la lista.
22. Busca un valor dado en la lista.
23. Creando una nueva cola.
24. Función que comprueba si una cola está vacía.
25. Función que consulta el frente de la cola.
26. Función que consulta el final de la cola.
27. Introducir un nuevo elemento en la cola.
28. Saca un elemento de la cola.
29. Vacía la cola.
30. Creando una nueva pila.
31. Función que comprueba si una pila está vacía.
32. Función que consulta la cima de la pila.
33. Introducir un nuevo elemento en la pila.
34. Saca un elemento de la pila.
35. Vacía la pila
36. Ejemplo de Makefile para usar GModule
37. Cabecera del Módulo
38. Código del Módulo
39. Ejemplo de plugin
1. Primer ejemplo con GTK
2. Un ejemplo más elaborado con GTK
1. Canvas Básico
2. Cambiar el zoom
3. GnomeCanvas y GtkScrolledWindow
4. Uso de GnomeCanvasPoints
5. Objetos en el canvas
6. Capturando eventos
7. Objeto propio
8. Crear un evento point
9. realize y unrealize
10. Verificar is_buf y is_bg
11. Cabecera para usar GnomeCanvasShape
12. Funciones para usar GnomeCanvasShape
13. MyItem
1. Uso de Etiquetas
2. Elemento raiz de un documento
3. Encabezado de un archivo XML
4. Ejemplo de un Articulo
5. Ejemplo de un Libro
6. Un libro creado con varios archivos
A.1. Fichero autogen.sh de ejemplo
A.2. fichero de ejemplo gobject.pc.in