From: Leandro Lucarella Date: Sat, 23 Aug 2008 00:58:27 +0000 (-0300) Subject: Agregar material del curso de GTK+ nunca dado X-Git-Url: https://git.llucax.com/personal/documentos.git/commitdiff_plain/f3d3907a6fe0c5dd15a74d9e9766a0f9dd26b00c Agregar material del curso de GTK+ nunca dado --- diff --git a/curso_gtk/clase2/Makefile b/curso_gtk/clase2/Makefile new file mode 100644 index 0000000..dfb1e03 --- /dev/null +++ b/curso_gtk/clase2/Makefile @@ -0,0 +1,32 @@ +# Makefile de ejemplo para C++ +# +# Creado: jue abr 15 15:34:19 ART 2004 +# +# Copyleft 2004 - Leandro Lucarella, Bajo licencia GPL [http://www.gnu.org/] +# + +# CONFIGURACION +################ + +# Nombre del ejecutable. +target = ejemplo + +# CONFIGURACION "AVANZADA" +########################### + +# Opciones para el compilador C. +CFLAGS = -Wall -ggdb -ansi -pedantic -DDEBUG + +CFLAGS += $(shell pkg-config --cflags gtk+-2.0 libglade-2.0) +LDFLAGS += $(shell pkg-config --libs gtk+-2.0 libglade-2.0) + +# REGLAS +######### + +.PHONY: all clean + +all: $(target) + +clean: + @$(RM) -fv *.o $(target) + diff --git a/curso_gtk/clase2/ejemplo.c b/curso_gtk/clase2/ejemplo.c new file mode 100644 index 0000000..5b78996 --- /dev/null +++ b/curso_gtk/clase2/ejemplo.c @@ -0,0 +1,56 @@ +#include +#include +#include + +/* tengo una estructura global para tener referencias a los elementos que usa + * la aplicación comunmente */ +struct +{ + GtkWindow* ventana; /* ventana principal */ + GtkEntry* entrada; /* entrada de texto */ +} +app; + +/* callback para cerrar la aplicación con la X */ +void +on_ventana_destroy(GtkWidget *widget, gpointer user_data) +{ + /* sale del programa, corta el loop de eventos */ + gtk_main_quit(); +} + +/* callback a usar cuando se pulsa el botón */ +void +on_boton_clicked(GtkWidget *widget, gpointer user_data) +{ + const gchar* texto; + + /* obtengo texto de la entrada de texto */ + texto = gtk_entry_get_text(app.entrada); + /* pongo el texto como título */ + gtk_window_set_title(app.ventana, texto); +} + +/* programa principal */ +int +main(int argc, char *argv[]) +{ + GladeXML *xml; + + /* inicializo gtk y glade */ + gtk_init(&argc, &argv); + glade_init(); + /* cargo interfaz del archivo XML de glade */ + xml = glade_xml_new("ejemplo.glade", "ventana", NULL); + /* cargo datos de la aplicación */ + app.ventana = GTK_WINDOW(glade_xml_get_widget(xml, "ventana")); + app.entrada = GTK_ENTRY(glade_xml_get_widget(xml, "entrada")); + /* conecta todas las señales automáticamente */ + glade_xml_signal_autoconnect(xml); + /* comienza el loop de eventos */ + gtk_main(); + + /* salimos, después de que alguien llamó gtk_main_quit(), sin error */ + return 0; +} + diff --git a/curso_gtk/clase2/ejemplo.glade b/curso_gtk/clase2/ejemplo.glade new file mode 100644 index 0000000..4b0256f --- /dev/null +++ b/curso_gtk/clase2/ejemplo.glade @@ -0,0 +1,69 @@ + + + + + + + True + Ejemplo de Glade + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + 5 + True + False + 5 + + + + True + True + True + True + 0 + + True + * + False + + + 0 + True + True + + + + + + True + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + + diff --git a/curso_gtk/cronograma.txt b/curso_gtk/cronograma.txt new file mode 100644 index 0000000..e97c30e --- /dev/null +++ b/curso_gtk/cronograma.txt @@ -0,0 +1,49 @@ + ++===========================++ + || Curso a distancia de GTK+ || + ++===========================++ + +. _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . + +Clase 1: +======== + +Programa: +--------- + * Inicialización de GTK+ + * Creación de una ventana + * Conectar callbacks a señales + * Compilación de programas GTK+ + +Lectura: + * http://www.gtk.org/tutorial/index.html + Capítulos 2, 3, 4, 5.1 y 6 + + * http://www.linuxlots.com/~barreiro/spanish/gtk/tutorial/gtk_tut.es.html + Versión en castellano, recomiendo _NO_ leerla porque es de + GTK+ 1.2, por lo que tiene muchas cosas obsoletas + +. _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . + +Clase 2: +======== + +Programa: +--------- + * Diseñar una interfaz grafica con glade simple + * Levantar el XML con libglade + * Conectar callbacks automáticamente + * Compilación de programas con libglade + +Lectura: +-------- + * http://developer.gnome.org/doc/API/libglade/libglade-notes.html + Sólo "Libglade Programming Basics", "Embedding Libglade + Interfaces" y "Internationalisation with Libglade", si te + interesa hacer aplicaciones internacionalizables + + * http://developer.gnome.org/doc/API/libglade/libglade-lib.html + Recomendado darle una ojeada para conocer mejor las + capacidades de glade, en especial mirar GladeXML + +. _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . _ . +