ProgramacionGTKenC/CapituloV

De Wiki GNOME Chile
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Widget de Progreso)
(Barra de Progreso)
Línea 119: Línea 119:
 
ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
progreso = gtk_progress_bar_new();
 
progreso = gtk_progress_bar_new();
 
// para el dibujado del progreso, vamos a usar un timeout
 
  
 
gtk_container_add((GtkContainer *) ventana, progreso);
 
gtk_container_add((GtkContainer *) ventana, progreso);
  
 +
// para el dibujado del progreso, vamos a usar un timeout
 
g_timeout_add(100, funcion_progreso, progreso);
 
g_timeout_add(100, funcion_progreso, progreso);
 
 

Revisión de 17:42 8 ago 2006

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();
}
Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas