Re: Progress bars and syscalls



On Monday 18 April 2005 11:51, Aristidas Vilkaitis wrote:

  Since i'm quite new to both C and Gtk, i met a problem which i am not
able to solve. The     base  of the problem is that i have a task, which
should fetch several files from the internet. When a button is pressed,
a new window with a progress bar opens and indicates the progress of the
task. Basicly, since i thought C is a linear language, i just added
several system() calls and added gtk_progress_bar_set_fraction between
them like so:

...
  system("wget file.a");
  gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pb1), 0.3);
  system("wget file.b");
  gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pb1), 0.6);  ...

and so on.

The result was that the program first executed the system calls, and
only afterwards did it paint something or tampered with the progress bar.

Why? How to go around this? What to read?

Check out g_spawn_async() in connection with GIOChannel and g_io_add_watch().

You can find an example (which uses wget, even) here:

  http://scentric.net/tmp/spawn-async-with-pipes-gtk.c

(Don't use threads for this kind of stuff, it's completely unnecessary and 
will cause you more problems than it solves).

Cheers
 -Tim





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]