rendered paste body#include <gtk/gtk.h>#include <string.h>//Prototipos de funcionesvoid mensaje(GtkWidget *button, GtkWidget *texto);void text2label(GtkWidget *button, GtkWidget *etiqueta);//Funciones para terminar el programastatic gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data);static void destroy(GtkWidget *widget, gpointer data);struct data { GtkWidget *window; GtkWidget *button, *boton, *buton; GtkWidget *mainbox, *box; GtkWidget *label; GtkWidget *entrybox;} *widgets;//Programa principalint main(int argc, char *argv[]){ /* Se inicia GTK */ gtk_init(&argc, &argv); /* Se crean los widgets */ widgets->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); widgets->mainbox = gtk_vbox_new(FALSE, 0); widgets->box = gtk_hbox_new(FALSE, 0); widgets->button = gtk_button_new_with_label("Imprimir"); widgets->buton = gtk_button_new_with_label("Terminal"); widgets->boton = gtk_button_new_with_label("Salir"); widgets->label = gtk_label_new("Escribe algo:"); widgets->entrybox = gtk_entry_new(); /* Se crean las funciones para finalizar el programa */ g_signal_connect(widgets->window, "delete_event", G_CALLBACK(delete_event), NULL); g_signal_connect(widgets->window, "destroy", G_CALLBACK(destroy), NULL); g_signal_connect(widgets->boton, "clicked", GTK_SIGNAL_FUNC(destroy), GTK_OBJECT(widgets->window)); /* Funciones para el boton "Imprimir" */ g_signal_connect(widgets->buton, "clicked", GTK_SIGNAL_FUNC(mensaje), GTK_ENTRY(widgets->entrybox)); //g_signal_connect(widgets->button, "clicked", GTK_SIGNAL_FUNC(text2label), label); /* Agregamos la etiqueta, la caja de texto y los botones */ gtk_box_pack_start(GTK_BOX(widgets->mainbox), widgets->label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widgets->mainbox), widgets->entrybox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widgets->mainbox), widgets->box, TRUE, TRUE, 0); /* Agregamos los botones a la caja */ gtk_box_pack_start(GTK_BOX(widgets->box), widgets->button, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widgets->box), widgets->buton, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(widgets->box), widgets->boton, TRUE, TRUE, 0); /* Se agrega la caja a la ventana */ gtk_container_add(GTK_CONTAINER(widgets->window), widgets->mainbox); /* Se muestran los widgets */ gtk_widget_show(widgets->button); gtk_widget_show(widgets->buton); gtk_widget_show(widgets->boton); gtk_widget_show(widgets->label); gtk_widget_show(widgets->entrybox); gtk_widget_show(widgets->box); gtk_widget_show(widgets->mainbox); gtk_widget_show(widgets->window); /* Se ejecuta la aplicacion */ gtk_main(); return 0;}//Definicion de funcionesvoid mensaje(GtkWidget *button, GtkWidget *texto){ gchar buffer[50]; strcpy(buffer, gtk_entry_get_text(GTK_ENTRY(texto))); g_print("%s\n", buffer);}void text2label(GtkWidget *button, GtkWidget *etiqueta){ gtk_label_set_text(GTK_LABEL(etiqueta), "Boton aplastado");}//Funciones para terminar el Programastatic 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;}