Programar Gtk+ en Ubuntu

+1
0
-1

Si queremos programar en Ubuntu 10.10 Maverick en Gtk+ tan sólo debemos de instalar los siguientes paquetes:
gcc
libc6-dev
pkg-config
libglib2.0-dev
libgtk2.0-dev
Geany

El último paquete es un pequeño y ligero entorno de desarrollo.

Para instalarlos nos dirigiremos al menú “Aplicaciones”, submenú “Centro de Software de Ubuntu” e iremos buscando los paquetes indicados para luego instalarlos.

Como siguiente paso, y una vez arrancado el entorno Geany, iremos al menú “Proyecto”, submenú “Nuevo” e indicaremos el nombre y la ruta del proyecto. Hecho ésto escribiremos nuestro primer programa Gtk+

/*
* Programa de ejemplo en Gtk+, autor Ubaloie, Ubaloie AR gmail PU com Se permite la copia, distribución y modificación de éste ejemplo
*/

#include &ltgtk/gtk.h>

/* Prototipo de funciones */
void funMensaje (GtkWidget *ventanaPadre, const gchar *cadena);
static void funBotonMostrarMensaje (GtkWidget *widget, gpointer data);

/* Función de tratamiento de eventos, en este caso cuando se haga click en el botón mostrar mensaje se viene aquí */
static void funBotonMostrarMensaje (GtkWidget *widget, gpointer data){

	funMensaje (widget, "Hola, ¿qué tal?");

}
                   
/* Función que saca el mensaje que se le pasa en los parámetros, es un poco redundantes pero a la larga efectiva */
void funMensaje (GtkWidget *ventanaPadre, const gchar *cadena){

	/* Definimos widgets */
	GtkWidget *dialogo;

	dialogo = gtk_message_dialog_new (GTK_WINDOW (ventanaPadre),
				GTK_DIALOG_DESTROY_WITH_PARENT,
				GTK_MESSAGE_INFO,
				GTK_BUTTONS_CLOSE,
				"%s",
				cadena);

	gtk_dialog_run (GTK_DIALOG (dialogo));
	gtk_widget_destroy (dialogo);

}

int main (int argc, char *argv[]){
	
	/* Definimos los widgets que vamos a usar */
    GtkWidget *ventanaPrincipal;
    GtkWidget *botonMostrarMensaje;
    GtkWidget *botonCerrar;
    GtkWidget *contenedorHorizontalBotones;
    
    /* Línea obligatoria, lee argumentos de la línea de comandos, si los hay, e inicia parámetros biblioteca gráfica */
    gtk_init (&argc, &argv);
    
    /* Creamos nueva ventana principal de la aplicación */
    ventanaPrincipal = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    /* Título de la ventana */
    gtk_window_set_title (GTK_WINDOW (ventanaPrincipal), "Ejemplo programación Gtk+");
    /* Icono de la ventana que aparecerá en en la barra de tareas del escritorio */
    gtk_window_set_icon_from_file (GTK_WINDOW (ventanaPrincipal), "html.gif", NULL);
    /* Tamaño de la ventana por defecto */
    gtk_window_set_default_size (GTK_WINDOW (ventanaPrincipal), 400, 100);
    /* Posición de la ventana, en este caso centrada en el escritorio */
    gtk_window_set_position (GTK_WINDOW (ventanaPrincipal), GTK_WIN_POS_CENTER);
    
	/* Creamos botones */
    botonMostrarMensaje = gtk_button_new_with_label ("Mostrar mensaje");
    botonCerrar = gtk_button_new_with_label ("Cerrar ventana");
    /* Ponemos el tamaño mínimo de los botones: Ancho y alto */
    gtk_widget_set_size_request (botonMostrarMensaje, 170, 35);
 gtk_widget_set_size_request (botonCerrar, 170, 35);
    
	/* Creamos un contenedor horizontal de botones */
	contenedorHorizontalBotones = gtk_hbutton_box_new ();
	/* Añadimos a la ventana principal el contenedor horizontal de botones */
	gtk_container_add (GTK_CONTAINER (ventanaPrincipal), contenedorHorizontalBotones);	
	/* Ponemos el modo en que deseamos mostrar los botones */
	gtk_button_box_set_layout (GTK_BUTTON_BOX (contenedorHorizontalBotones), GTK_BUTTONBOX_CENTER);
	/* Ponemos el espacio entre los widgets dentro del contenedor */
	gtk_box_set_spacing (GTK_BOX (contenedorHorizontalBotones), 30);	
	/* Ponemos los botones dentro del contenedor horizontal de botones */
	gtk_box_pack_start (GTK_BOX (contenedorHorizontalBotones), botonMostrarMensaje, TRUE, TRUE, 5);
	gtk_box_pack_end (GTK_BOX (contenedorHorizontalBotones), botonCerrar, TRUE, TRUE, 5);

	/* Conectamos las señales a los widgets */
	/* Conectamos la ventana principal al evento destruir ventana, si ocurre se termina el programa directamente llamando a la función Gtk+
	 * gtk_main_quit la cual finaliza el bucle de eventos, cierra las ventanas abiertas y restaura el entorno gráfico */
	g_signal_connect (ventanaPrincipal, "destroy", G_CALLBACK (gtk_main_quit), NULL);
	/* Conectamos el botón "mostrar mensaje" al evento clickar en botón, si ocurre se va a la función creada por nosotros para tratar
	 * el evento generado */
    g_signal_connect_swapped (botonMostrarMensaje, "clicked", G_CALLBACK (funBotonMostrarMensaje), ventanaPrincipal);
	/* Conectamos el botón "cerrar" al evento clickar en botón, si ocurre se  llama a la función Gtk+ que destruye la ventana pasada como último
	 * argumento en la conexión de la señal */
    g_signal_connect_swapped (botonCerrar, "clicked", G_CALLBACK (gtk_widget_destroy), ventanaPrincipal);
   
	/* Hacemos visibles los widgets */
	gtk_widget_show (botonMostrarMensaje);
	gtk_widget_show (botonCerrar);
    gtk_widget_show (contenedorHorizontalBotones);
	gtk_widget_show (ventanaPrincipal);
    
    /* Línea obligatoria, la aplicación cede el control hasta que ocurra un evento */
    gtk_main ();
    
    return 0;
}

Pero si queremos construir y compilar el programa veremos que no vamos a poder hacerlo. Para poder construir y compilar nuestros proyectos Gtk+ en Geany debemos de especificar manualmente las opciones.

Vamos al menú “Construir”, submenú “Establecer comandos de construcción” y en la pantalla que nos aparecerá haremos click en la pestaña “Construir”. Dentro de ella situaremos el puntero del ratón en el botón de comando sin título, en la etiqueta “Comandos de archivo de fuente C”, debajo de los botones “Compilar” y “Construir”, y al hacer click en él nos mostrará una nueva ventana en la que escribiremos el nombre del botón, en este caso: “Construir proyecto Gtk+”. Una vez hecho y en el apartado “Comando” de su derecha escribiremos::

gcc -o "%e" "%f" `pkg-config --cflags --libs gtk+-2.0`

Salimos aceptando y ahora, para construir nuestros proyectos Gtk+, nos aparecerá una nueva entrada en el menú “Construir” de Geany, la que acabamos de crear, llamada “Construir proyecto Gtk+”, que hace eso exactamente.

Saludos.

Comentarios

Imagen de anelisth

Buenas, soy nuevo también en ubuntu y de tanto instalar repositorios y meterle mano al notebook, me termino saliendo este mensaje al iniciar el sistema:

El controlador de disco para 0x2629ea94 no esta listo o presente
Presione S para omitir o M para arreglarlo manualmente.

Ademas, cuando hago "sudo mount -a" me acusa que el punto de montaje 0x2629ea94 no existe... Como arreglo esto sin formatear? Gracias!