Использование GTK Progress Bar - PullRequest
       11

Использование GTK Progress Bar

0 голосов
/ 22 апреля 2020

Ищем некоторые подробности об использовании 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(&copy_job);
  //Scan source directory and create folders at destinations
  scan_src(&copy_job);
  //TODO: update progress bar here
  g_timeout_add(300, update_progress, aw->id_progress_bar);

}

Я реализовал обратный вызов update_progress. Индикатор выполнения обновляется, но он не отображается на функцию. Я не уверен, как это сделать?

Нужно ли выставить счетчик в моей структуре copy_job? Это кажется противоречащим интуитивному пониманию того, что, если вы хотите отслеживать прогресс функции, в которой у вас нет доступа к этим переменным?

...