Seminario de Programación GNOME
(page 1)
Objetivos
	
	- Conocer las herramientas que se utilizan para desarrollar
	
	- Conocer las librerías que se utilizan para desarrollar
	
	- Conocer los programas que se utilizan para desarrollar
	
 
(page 2)
Herramientas - CVS
	
	- Usada para obtener el código fuente de las aplicaciones
	
	- Autenticación
		
		- cvs -z3 -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome login
		
 
	- Obtener módulos
		
		- cvs checkout modulo1 modulo2 ...
		
 
 
(page 3)
Herramientas - autoconf/automake I
	
	- Usadas para la compilación en distintos sabores de UNIX
		
		- Para aplicaciones GNOME, su uso es OBLIGATORIO
		
 
	- Directorio macros/
		
		- Incluido en todas las aplicaciones de cvs.gnome.org
		
- Contiene macros para la gestión de opciones de compilación
		
 
	- Ficheros
		
		- configure.in, Makefile.am
		
- README, AUTHORS, MAINTAINERS, HACKING, ChangeLog
		
 
 
(page 4)
Herramientas - autoconf/automake II
	
	- configure.in
		
		- contiene chequeos para buscar librerías/programas, etc
		
- lista de Makefiles a generar
		
 
	- Makefile.am
		
		- tiene que haber uno por directorio
		
- contiene órdenes de compilación de programas
		
- tambien se usa para generación de documentación
		
 
	- HACKING, README, MAINTAINERS
		
		- ¡léelos! y pregunta antes de hacer cambios
		
- contienen instrucciones para "hackers"
		
 
 
(page 5)
Herramientas - Compilación/Instalación
	
	- autogen.sh
		
		- genera el fichero configure y lo ejecuta
		
- --help muestra la lista de parámetros que acepta configure
		
- --prefix indica el directorio de instalación
		
 
	- make
		
		- ejecuta todos los Makefiles generados por configure
		
 
	- make install
		
		- instala los programas/librerías/documentación
		
 
 
(page 6)
Herramientas - gettext/xml-i18n-tools
	
	- Se usan para la localización/internacionalización
		
	
	- _("cadena") y N_("cadena")
		
		- se usan para marcar las cadenas a traducir
		
- en ficheros .c, .glade, .desktop, .oaf, ...
		
 
	- gettext
		
		- extrae las cadenas de los ficheros .c al directorio po/
		
 
	- xml-i18n-tools
		
		- extrae las cadenas de los demás ficheros al directorio po
		
 
	- Directorio po/
		
		- contiene un fichero .po por cada idioma
		
- POTFILES.in indica los ficheros que contienen cadenas a extraer
		
 
 
(page 7)
Herramientas - gtk-doc
	
	- Genera documentación para las APIs
		
		- la documentación se incluye directamente en el código
		
- genera ficheros en formato Docbook
		
 
 
(page 8)
Librerías - glib
	
	- Tipos de datos "portables"
		
		- gchar, gint, gdouble, gboolean, etc
		
 
	- Gestión de memoria
		
		- g_malloc, g_free, g_realloc
		
 
	- Macros para comprobaciones
		
		- g_return_val_if_fail/g_return_if_fail
		
- g_assert
		
 
	- Estructuras dinámicas de datos
		
		- GList, GArray, GPtrArray, GHashTable, GAllocator, etc
		
 
	- E/S Asíncrona
		
		- GIOChannel, g_io_add_watch, GMainLoop
		
 
 
(page 9)
Librerías - gtk+ I
	
	
	- Orientación a objetos
		
		- soporta la herencia de objetos
		
- eventos comunicados a través de señales
		
 
	- Widgets básicos
		
		- GtkWindow, GtkContainer, GtkButton, GtkLabel
		
 
	- Widgets de alto nivel
		
		- GtkFileSelector, GtkColorSelection
		
 
 
(page 10)
Librerías - gtk+ II
	
	- GtkSelection
		
		- para intercambio de datos a través del "portapapeles"
		
 
	- Widgets propios
		
		- el sistema de objetos permite definirnos nuestros propios widgets
		
- para añadir funcionalidad extra
		
 
 
(page 11)
Libreróas - gnome-libs I
	
	- Inicialización de las aplicaciones
		
		- gnome_init/gnome_init_with_popt_table
		
 
	- Ficheros de configuración (obsoleto)
		
	
	- Otros
		
		- ejecución asíncrona (gnome_exec)
		
- en 2.0: Bonobo, gnome-vfs, GConf, etc
		
 
 
(page 12)
Librerías - gnome-libs II
	
	- GnomeApp
		
		- ventana con barras de menús, herramientas y estado
		
- GnomeUIInfo mi_menu[] = ...
		
 
	- GnomeCanvas
		
		- widget para la generación de gráficos
		
- usado para crear widgets de alto nivel (Gnumeric)
		
 
 
(page 13)
Programas
	
	- Glade
		
		- para generar pantallas y código fuente
		
- muy útil junto con libglade
		
 
	- Memprof
		
		- ayuda a la detección de agujeros de memoria
		
 
	- Bug-buddy
		
		- para enviar informes de error
		
 
 
(page 14)
Librerús - orbit
	
	- 1º Escribir IDL
		
		- definimos nuestros interfaces en el fichero.idl
		
 
	- 2º Generar plantilla de la implementación
		
		- orbit-idl --skeleton-impl fichero.idl
		
 
	- 3º Generar cabos y esqueletos
		
	
 
(page 15)
Librerías - oaf
	
	- Sistema de activación de objetos CORBA
		
		- sustituto de libgnorba (¡NO USAR libgnorba!)
		
 
	- Funcionalidades
		
		- lenguaje de consulta
		
- activación de objetos remotos
		
 
 
(page 16)
Librerías - bonobo
(page 17)
Librerías - gnome-vfs
(page 18)