ProgramacionGTKenC/CapituloV

De Wiki GNOME Chile
Saltar a: navegación, buscar

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.

Error al crear miniatura: No se ha podido guardar la miniatura

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í:

Error al crear miniatura: No se ha podido guardar la miniatura

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();
}

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.

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas