rendered paste body#include <gtk/gtk.h>static void hola();static void destroy(GtkWidget *widget, gpointer data);static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data);struct datos { GtkWidget *entrada; GtkWidget *etiqueta;};typedef struct datos STRUC;static void print_to_label(STRUC *some_data);int main(int argc, char *argv[]){ /* Se definene los widgets */ GtkWidget *window; GtkWidget *button, *boton; GtkWidget *mainbox, *box; GtkWidget *label; GtkWidget *entrybox; /* Se define la estructura para pasarla al callback */ STRUC *info; /* Se inicia GTK */ gtk_init(&argc, &argv); /* Se crean los widgets */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); mainbox = gtk_vbox_new(FALSE, 0); box = gtk_hbox_new(FALSE, 0); button = gtk_button_new_with_label("Imprimir"); boton = gtk_button_new_with_label("Salir"); label = gtk_label_new("Escribe algo:"); entrybox = gtk_entry_new(); /* Se asignan los datos a la estructura */ info->entrada = entrybox; info->etiqueta = label; /* Se crean las funciones para finalizar el programa */ g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL); /* Se asignan las funciones para los botones */ gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(hola), NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(print_to_label), info); gtk_signal_connect(GTK_OBJECT(boton), "clicked", GTK_SIGNAL_FUNC(destroy), GTK_OBJECT(window)); /* Agregamos la etiqueta, la caja de texto y los botones */ gtk_box_pack_start(GTK_BOX(mainbox), label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(mainbox), entrybox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(mainbox), box, TRUE, TRUE, 0); /* Agregamos los botones a la caja */ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(box), boton, TRUE, TRUE, 0); /* Se agrega la caja a la ventana */ gtk_container_add(GTK_CONTAINER(window), mainbox); /* Se muestran los widgets */ gtk_widget_show(button); gtk_widget_show(boton); gtk_widget_show(label); gtk_widget_show(entrybox); gtk_widget_show(box); gtk_widget_show(mainbox); gtk_widget_show(window); /* Se ejecuta la aplicacion */ gtk_main(); return 0;}static void hola(){ g_print("Este mensaje va a la consola\n");}static void print_to_label(STRUC *some_data){ /* Iniciamos algunas variables que ayudan */ gchar buffer[50]; GtkWidget *entry; GtkWidget *label; /* Obtenemos los datos y los usamos */ buffer = gtk_entry_get_text(GTK_ENTRY(some_data->entrada)); gtk_label_set_text(GTK_LABEL(some_data->etiqueta), buffer);}static void destroy(GtkWidget *widget, gpointer data){ gtk_main_quit ();}static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data){ g_print ("delete event occurred\n"); return FALSE;}