Traslation to Spanish



Hello, my name is Pedro Gracia and i want to translate to spanish the docs about GTK, GDK & GLIB... is there people doing it? Here there is a sample...
 
My e-mail is pedro@redkbs.com
 

  1. Introducción

GTK (GIMP Toolkit) fue originalmente concebido como herramienta de desarrollo para el GIMP (General Image Manipulation Program, Programa General de Manipulación de Imágenes). GTK está construido sobre GDK (GIMP Drawing Kit) la cual es básicamente un recubrimiento de las funciones Xlib. Es llamada herramienta de desarrollo del GIMP debido a que originalmente fue escrito para desarrollar el GIMP, pero está siendo usado en la actualidad en varios proyectos de software libre. Sus autores son:

GTK es esencialmente una interface para programadores de aplicaciones orientadas a objetos (API). Aunque fue escrita completamente en C, está implementada usando la idea de clases y funciones con devoluciones de llamada (punteros a funciones).

Hay también un tercer componente llamado glib que contiene pocas sustituciones para algunas de las llamadas estándar, a la vez que algunas funciones adicionales para manejar listas lincadas, etc. Las funciones sustituidas son usadas para incrementar la portabilidad del GTK, al no estar disponibles, no ser estándares o no ser únicas como g_strerror(). Algunas también contienen mejoras sobre las versiones de libc, como g_malloc, que tiene mejoradas las utilidades de depuración.

Este tutorial es un intento de documentar tanto como sea posible GTK, y no es por sí mismo definitivo. Este tutorial asume que usted posee un buen conocimiento de C, y cómo se crean programas en C. Le podrá ser de gran ayuda tener cierta experiencia previa en la programación de las X, pero no es imprescindible. Si usted está aprendiendo GTK como su primera experiencia en programación de widgets, por favor, comentenos cómo encontró este tutorial y los problemas que haya tenido con él. Sepa también que existe una API compatible con C++ para GTK (GTK--), así que si usted prefiere usar C++, debería usar esa en su lugar. También hay un recubrimiento (wrapper) para Objective C, y extensiones a Guile disponibles, pero no los tendré en cuenta.

Apreciaría bastante que me hiciera llegar cualquier problema que tenga aprendiendo a usar GTK con esta documentación, así como cualquier sugerencia, crítica o mejora que desee hacer.

2. Comenzando

Lo primero que hay que hacer es, ni más ni menos, bajarse las fuentes GTK e instalarlas. Usted podrá siempre obtener la versión más reciente en ftp.gtk.org en /pub/gtk. También podrá ver otras fuentes de información de GTK en http://www.gtk.org/. GTK usa GNU autoconf para su configuración. Una vez "untar'd", escriba ./configure --help para ver la lista de opciones.

La fuente de distribución de GTK también contiene las fuentes completas de todos los ejemplos usados en este tutotial, incluyendo los Makefiles para ayudar a su compilación.

Para comenzar nuestra introducción a las GTK, comenzaremos con el programa más simple posible. Este programa creará una ventana de 200x200 pixeles y no habrá otra manera de cerrarla que la shell o el Window Manager.

#include <gtk/gtk.h>

int main (int argc, char *argv[])
{
    GtkWidget *window;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);
    
    gtk_main ();
    
    return 0;
}

Todos los programas incluirán, como no, gtk/gtk.h, la cual declara las variables, funciones, estructuras, etc... que serán usadas en nuestra aplicación GTK.

La siguente linea:

gtk_init (&argc, &argv);

 

llama a la función gtk_init(gint *argc, gchar ***argv), la cual será usada en todas las aplicaciones GTK. Esto configura unas cuantas cosas por nosotros, como el aspecto y el mapa de color predefinidos, y entonces procede a llamar a gdk_init(gint *argc, gchar ***argv). Esta función inicializa la librería para su uso, fija el gestor de señales por defecto y chequea los argumentos pasados a su aplicación desde la línea de comando, buscando uno por uno los siguientes:

  • --display
  • --debug-level
  • --no-xshm
  • --sync
  • --show-events
  • --no-show-events
  • --name
  • --class

Los quita de la lista de argumentos dejando solamente los que no reconozca para que su aplicación los evalúe o los ignore. Esto crea un conjunto de argumentos estandar aceptados por todas las aplicaciones GTK.

Las siguientes dos líneas de código crean y muestran una ventana.

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_show (window);

 

El argumento GTK_WINDOW_TOPLEVEL especifica que queremos una ventana que permanezca sobre la decoración del gestor de ventanas. Mejor que crear una ventana de tamaño 0x0, una ventana sin hijos es fijada por defecto a un tamaño de 200x200 para que pueda ser manipulada.

La función gtk_widget_show() le permite saber a GTK los atributos que hemos fijado a ese widget, y que puede mostrarlo.

La última línea entra en el bucle principal de proceso GTK.

gtk_main ();

 

gtk_main() es otra llamada que observará en cada aplicación GTK. Cuando la ejecución de nuestro programa alcance este punto, GTK permanecerá a la espera de eventos X (tales como la pulsación de una tecla o un botón), timeouts o notificaciones de entrada/salida en ficheros. En nuestro básico ejemplo anterior los eventos son ignorados.

 

2.1 Hola Mundo en GTK

Ahora vamos a por un programa con un widget (un botón). Es el ejemplo clásico, pero a la GTK.

/* ejemplo-start helloworld helloworld.c */

#include <gtk/gtk.h>

/* esto es una función callback. Los argumentos son ignorados en este ejemplo...
 * Más callbacks abajo. */
void hello (GtkWidget *widget, gpointer data)
{
    g_print ("Hola Mundo\n");
}

gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
    g_print ("Ocurrido evento Delete\n");
    /* si devuelve FALSE en el "delete_event" del gestor de señales,
     * GTK emitirá la señal "destroy".  Por otro lado, TRUE significa
     * que usted no desea que la ventana sea destruida.
     * Esto es util para que nos aparezca el tipo de diálogo '¿está 
	* usted seguro que quiere salir?'  */

    /* Cambie TRUE a FALSE y la ventana principal será destruída con
	* un "delete_event". */

    return (TRUE);
}

/* Otro callback */
void destroy (GtkWidget *widget, gpointer data)
{
    gtk_main_quit ();
}

int main (int argc, char *argv[])
{
    /* GtkWidget es el tipo de dato para los widgets */
    GtkWidget *window;
    GtkWidget *button;
    
    /* esto es llamado por todas las aplicaciones GTK.  Los argumentos
     * son pasados desde la línea de comandos y son llevados a la 
	* aplicación. */
    gtk_init (&argc, &argv);
    
    /* crea una nueva ventana */

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]