====== 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