2016-02-18 08:34:28 -05:00
|
|
|
/*
|
|
|
|
* Copyright 2016 (c) Anna Schumaker.
|
|
|
|
*/
|
2016-08-20 09:01:29 -04:00
|
|
|
#include <gui/idle.h>
|
2016-02-18 08:34:28 -05:00
|
|
|
|
2016-02-26 10:43:07 -05:00
|
|
|
static guint idle_id = 0;
|
|
|
|
|
2016-02-18 08:34:28 -05:00
|
|
|
static gboolean __on_idle(gpointer data)
|
|
|
|
{
|
2016-08-20 09:01:29 -04:00
|
|
|
bool more = idle_run_task();
|
|
|
|
gchar *text = g_strdup_printf("%f%%", idle_progress() * 100);
|
2016-02-18 08:34:28 -05:00
|
|
|
|
2016-08-20 09:01:29 -04:00
|
|
|
gtk_widget_set_visible(GTK_WIDGET(gui_progress_bar()), more);
|
|
|
|
gtk_progress_bar_set_fraction(gui_progress_bar(), idle_progress());
|
|
|
|
gtk_widget_set_tooltip_text(GTK_WIDGET(gui_progress_bar()), text);
|
|
|
|
g_free(text);
|
2016-07-04 20:06:11 -04:00
|
|
|
|
2016-08-20 09:01:29 -04:00
|
|
|
idle_id = more ? idle_id : 0;
|
|
|
|
return more ? G_SOURCE_CONTINUE : G_SOURCE_REMOVE;
|
2016-02-18 08:34:28 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
void gui_idle_enable()
|
|
|
|
{
|
2016-08-20 09:01:29 -04:00
|
|
|
idle_id = g_idle_add(__on_idle, NULL);
|
2016-02-26 10:43:07 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
void gui_idle_disable()
|
|
|
|
{
|
|
|
|
if (idle_id)
|
|
|
|
g_source_remove(idle_id);
|
2016-02-18 08:34:28 -05:00
|
|
|
}
|