ProgramacionGTKenC/CapituloV
Contenido |
Widgets Misceláneos
Ahora veremos algunos widgets bastante interesantes.
Tooltip
Un tooltip es una indicación de texto cuando se desplaza el mouse sobre algun control, o alguna zona de pantalla.
El funcionamiento es muy simple. En vez de crear una variable GtkWidget, se crea una variable de tipo GtkTooltips
. Luego, se puede asociar algun texto con respecto a un control en particular.
Veamos el ejemplo.
#include <gtk/gtk.h> int main (int argc, char * argv[]) { GtkWidget *ventana; GtkWidget *boton; GtkTooltips *tooltip; gtk_init (&argc, &argv); ventana = gtk_window_new (GTK_WINDOW_TOPLEVEL); boton = gtk_button_new_with_label ("Click me!"); tooltip = gtk_tooltips_new (); gtk_tooltips_set_tip (tooltip, boton, "Por favor, haz click!", NULL); gtk_container_add ((GtkContainer *) ventana, boton); gtk_widget_show_all (ventana); gtk_main(); }
Al desplazar el mouse sobre el boton, se vera algo así:
Una de las cosas interesantes del control de tooltip es que es reciclable. Es decir, se puede usar el mismo tooltip para distintos controles.
#include <gtk/gtk.h> int main (int argc, char * argv[]) { GtkWidget *ventana; GtkWidget *caja; GtkWidget *boton1; GtkWidget *boton2; GtkTooltips *tooltip; gtk_init(&argc, &argv); ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL); boton1 = gtk_button_new_with_label("Click me first!"); boton2 = gtk_button_new_with_label("Click me next!"); caja = gtk_hbox_new(TRUE, 3); tooltip = gtk_tooltips_new(); gtk_box_pack_start ((GtkBox *) caja, boton1, TRUE, TRUE, 2); gtk_box_pack_start ((GtkBox *) caja, boton2, TRUE, TRUE, 2); gtk_tooltips_set_tip (tooltip, boton1, "Por favor, haz click!", NULL); gtk_tooltips_set_tip (tooltip, boton2, "Y despuez, click aca!", NULL); gtk_container_add((GtkContainer *) ventana, caja); gtk_widget_show_all(ventana); gtk_main(); }
Barra de Progreso
Las barras de progreso se usan para mostrar el estado de una operacion (sobre todo en operaciones lentas).
#include <gtk/gtk.h> static gboolean funcion_progreso (gpointer data) { gdouble fraccion; fraccion = gtk_progress_bar_get_fraction((GtkProgressBar *) data); fraccion+= 0.01; if (fraccion > 1.0) fraccion = 0.0; gtk_progress_bar_set_fraction((GtkProgressBar*) data, fraccion); } int main (int argc, char * argv[]) { GtkWidget * ventana; GtkWidget * progreso; gtk_init(&argc, &argv); ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL); progreso = gtk_progress_bar_new(); gtk_container_add((GtkContainer *) ventana, progreso); // para el dibujado del progreso, vamos a usar un timeout g_timeout_add(100, funcion_progreso, progreso); gtk_widget_show_all(ventana); gtk_main(); }
Cuadros de dialogo
Estos sirven para mostrar una informacion rapida para el usuario, o bien para pedir confirmacion para una accion.
La solucion tipica seria crear una ventana para mostrar estos datos, pero usar un cuadro de dialogo es una solucion mucho mas elegante.