====== Scaricare un file dal web con Gtk e Glib (in Vala) ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//16/12/2015 - 16:41//** \\ \\ {{:programmazione:vala:2015-12-16_163542.png?150|}} In questo post vedremo come scaricare un file dal web tramite una comoda interfaccia Gtk. ===== Il codice ===== **downloadFileGtk.vala** public class Win : Gtk.Window { static Gtk.ProgressBar bar; public Win () { // Preparo la finestra Gtk: this.title = "Prova download di un file"; this.window_position = Gtk.WindowPosition.CENTER; this.destroy.connect (Gtk.main_quit); // The ProgressBar: bar = new Gtk.ProgressBar (); this.add (bar); // Display text: bar.set_text ("Scarico..."); //bar.set_show_text (true); // gtk+-3 myCopy(); } void myCopy() { //GIO per scaricare il file File file1 = File.new_for_uri ("http://gapil.truelite.it/gapil.pdf"); File file2 = File.new_for_path ("gapil.pdf"); try { //Uso la versione asincrona della funzione cosi' interagisce correttamente con //il ciclo principale delle gtk. file1.copy_async.begin (file2, FileCopyFlags.OVERWRITE, Priority.DEFAULT, null, ProgressCallback,EndDownload); } catch (Error e) { stdout.printf ("Error: %s\n", e.message); } } void ProgressCallback (int64 current_num_bytes, int64 total_num_bytes) { //Fa avanzare la progressbar double progress; progress= (double)current_num_bytes/(double)total_num_bytes; bar.set_fraction(progress); } void EndDownload() { //Scaricamento terminato bar.set_text ("Scaricamento terminato."); } } public static int main (string[] args) { Gtk.init (ref args); Win myWin = new Win (); myWin.show_all (); Gtk.main (); return 0; } Compilare con : valac --pkg gtk+-2.0 downloadFileGtk.vala