====== Creare un browser web con WebKitGTK+ ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//21/10/2011//** \\ \\
[[http://webkitgtk.org/|WebKitGTK+]] e' il porting sulle Gtk+ del famoso motore di rendering [[http://www.webkit.org/|Webkit]]e grazie ad esso vedremo come realizzare velocemente un semplice Browser per web. \\
**Ecco il risultato:**
{{programmazione:gtk:microbrowser.png|}}
===== Il codice commentato =====
Il codice sottostante altro non fa che visualizzare una finestra contenenteo una pagina web grazie a webkit. La finestra viene realizzata grazie alle librerie Gtk+ .
**microb.c**
#include
#include
int main (int argc, gchar* argv[])
{
//Gli oggetti della nostra gui
GtkWidget* window;
GtkWidget* vbox;
GtkWidget* scrolled;
//L'area che usera' webkit per il rendering
GtkWidget* web_view;
//Inizializzo i thread di gtk
if (!g_thread_supported ())
g_thread_init (NULL);
gtk_init_check (&argc, &argv);
//Creo la finestra, gli assegno un titolo, dimenzioni e associo la
//chiusura della finestra con la callback per l'uscita dal programma
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Micro Browser");
gtk_window_set_default_size (GTK_WINDOW (window), 1000, 800);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
//Aggiungo un contenitore alla finestra
vbox = gtk_vbox_new (FALSE, 4);
gtk_container_add (GTK_CONTAINER (window), vbox);
//Aggiungo il widget "gtk_scrolled_window_new" che permette di aggiungere
//le scrollbar alla finestra principale se il contenuto lo richiede
scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0);
//Inizializzo webkit creando l'area che fara il rendering delle pagine
web_view = webkit_web_view_new ();
//Fisso webkit al nostro "gtk_scrolled_window_new"
gtk_container_add (GTK_CONTAINER (scrolled), web_view);
//Instanzio un puntatore per la richiesta di rete con l'uri
WebKitNetworkRequest *myNetworkRequest= webkit_network_request_new ("http://www.freemedialab.org");
//Lancio la richiesta di rete a webkit
webkit_web_view_load_request(WEBKIT_WEB_VIEW (web_view), myNetworkRequest );
//Mostro tutto avviando il ciclo principale delle Gtk
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
===== Compilare il progetto =====
Per compilare il progetto basta dare il seguente comando **__(assicurandosi di avere installato i runtime e i pacchetti di sviluppo delle librerie Gtk+ e WebKitGTK+)__** :
gcc microb.c -o microb `pkg-config --cflags --libs webkitgtk-3.0` -Wall -O1 -g
Oppure servirsi di questo **Makefile**
CPP = gcc
OPTS = `pkg-config --cflags --libs webkitgtk-3.0` -Wall -O1 -g
all:
$(CPP) microb.c -o microb $(OPTS)
clean:
rm microb