Ищем некоторые подробности об использовании Gtk Progress Bar.
У меня есть функция, которую я запускаю по нажатию кнопки. Желаемый результат будет состоять в том, что индикатор выполнения обновляется с помощью функции progress.
int update_progress(gpointer userdata) {
GtkWidget *progress_bar = userdata;
gdouble fraction;
fraction = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(progress_bar));
fraction += 0.1;
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress_bar), fraction);
if (fraction > 1.0)
return 0;
return 1;
}
{...}
void on_id_copy_button_clicked(GtkButton *button, AppWidgets *aw) {
{...}
init_copy_job(©_job);
//Scan source directory and create folders at destinations
scan_src(©_job);
//TODO: update progress bar here
g_timeout_add(300, update_progress, aw->id_progress_bar);
}
Я реализовал обратный вызов update_progress
. Индикатор выполнения обновляется, но он не отображается на функцию. Я не уверен, как это сделать?
Нужно ли выставить счетчик в моей структуре copy_job? Это кажется противоречащим интуитивному пониманию того, что, если вы хотите отслеживать прогресс функции, в которой у вас нет доступа к этим переменным?