Este tutorial está cubierto por FDL. Los programas listados aquí estan cubiertos por LGPL.
@Freedesktop@, también conocido como fdo, es un proyecto software libre iniciado por de uno de los desarrolladores de @GNOME@, Havoc Pennington, para la estandarización, integración e interoperabilidad de los distintos escritorios.
Freedesktop surgió principalmente como un proyecto entorno al sistema X para la estandarización de los escritorios de Linux con el fin de conseguir que tecnologías existentes estén más integradas, de forma que no haya una total diversidad y separación entre proyectos.
Para ello Freedesktop lo que pretende conseguir es una base de software común para todos los escritorios, englobando tecnologías como las de Mozilla, distintas herramientas gŕaficas como Qt y gtk+, VCL, wine, @GNOME@, KDE y X Window System.
De este concepto de estandarización nace @Cairo@
@Cairo@, intoducida al mundo del Software Libre por Keith Packard, es una biblioteca de gráficos vectoriales en 2D, diseñada para proporcionar imagenes con alta calidad incluídos en el sistema X, OpenGL, buffers de imagen en la memoria y archivos de imagen.
@Cairo@ se diseñó para producir una salida idéntica en todos los dispositivos de salida, mientras que aprovecha la aceleración del hardware cuando este disponible disponible.
Lo que pretende es ofrecer un renderizado independiente de la plataforma, rápido y flexible.
Antes que nada debemos de saber cómo se va a crear la interface gráfica, y está la realizaremos con el diseñador de interfaces de @Gnome@ @Glade@. Primero lanzamos nuestro diseñador de interfaces
[eric@localhost]glade-2
Lo primero que veremos es la ventana principal de @Glade@, en ella crearemos un nuevo proyecto ya sea @GTK@ o @Gnome@.
@include_screenshot(../tutorial/images/glade.png)Posteriormente empezaremos a diseñar la interface, @glade@ nos mostrará diferentes barras, entre ellas la paleta de widgets que es la siguiente.
@include_screenshot(../tutorial/images/palette.png)Esta paleta nos muestra los diferentes widgets y diálogos de Gtk y Gnome. Seleccionaremos el widget de ventana para empezar a crear nuestra interface, este elemento nos crea un nueva ventana en la cuál podremos seguir insertando widgets.
@include_screenshot(../tutorial/images/window1.png) Ahora, para continuar insertando elementos de una manera ordenada y limpia seleccionaremos el widget de tabla y la insertaremos, le asignaremos 2 filas. @include_screenshot(../tutorial/images/table.png)En la primera fila insertaremos un drawingarea, está sera nuestra area para dibujar, y en la siguiente fila un botón, le podemos asignar un ícono y nombre en la caja de propiedades que veremos más adelante.
@include_screenshot(../tutorial/images/window2.png)Hasta este momento tenemos creada la interface, pero a cada widgets que insertamos le vamos a añadir señales, estas señales nos servirán para poder manejar nuestros gidgets directamente con python. Podemos seleccionar los widgets desde el árbol de widgets.
@include_screenshot(../tutorial/images/tree.png)Proseguiremos a añadir las señales, tenemos una caja que nos miestra las propiedades de los widgets, en ésta podemos modificar sus atributos, así como tamaño, nombre, señales entre otras, nosotros nos enfocaremos en señales.
@include_screenshot(../tutorial/images/properties.png)Primero seleccionamos en nuestro árbol de widgets la ventana, a la cuál le agregaremos una señal de 'destroy' y en el manejador seleccionaremos 'gtk_main_quit', y presionaremos añadir, esto servirá para que cuando cerremos nuestra ventana esta se destruya. Después seleccionamos el widget de drawingarea y seleccionaremos la señal de 'expose_event' y en el manejador podemos escribir 'on_expose' y lo añadimos, por último resta el button, seleccionaremos la señal de 'clicked' y el manejador añadiremos 'gtk_main_quit' esto para que al presionarlo la venta se cierre. Después de esto ya tendremos creada nuestra interface base para todos nuestros programas.
@include_screenshot(../tutorial/images/signals.png)En este ejemplo veremos la potencia de @Cairo@ para dibujar curvas y líneas con @python@.
@include_screenshot(../tutorial/Cairo7GladeApp/Cairo7GladeApp.png) @include_glade(../tutorial/Cairo7GladeApp/Cairo7GladeApp.glade) @include_source(../tutorial/Cairo7GladeApp/Cairo7GladeApp.py)Para correr utilizar las bibliotecas de @cairo@ en @python@ debes instalar el paquete de python-cairo. Ahora le daremos permisos de ejecución al archivo .py de @python@
[crac@localhost Cairo7GladeApp]$chmod u+x Cairo7GladeApp.py
[crac@localhost Cairo7GladeApp]./Cairo7GladeApp.py
Ahora veremos como realizar un polígono con un texto animado.
@include_screenshot(../tutorial/Cairo6GladeApp/CairoGladeApp.png) @include_glade(../tutorial/Cairo6GladeApp/CairoGladeApp.glade) @include_source(../tutorial/Cairo6GladeApp/CairoGladeApp.py)Este ejemplo nos muestra como utilizar los segmentos de línea formnado un cubo, así como utilizar translucencias.
@include_screenshot(../tutorial/CairoCubeGladeApp/Cairo4GladeApp.png) @include_glade(../tutorial/CairoCubeGladeApp/cairo4gladeapp.glade) @include_source(../tutorial/CairoCubeGladeApp/Cairo4GladeApp.py)