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