[progress] Factor out function to control pulsate

This commit is contained in:
Lucas Rocha 2009-08-08 19:16:49 +01:00
parent 54b171ff82
commit fa0349545d

View File

@ -36,6 +36,7 @@ static GtkBuilder *builder;
static ZenityData *zen_data; static ZenityData *zen_data;
static GIOChannel *channel; static GIOChannel *channel;
static gint pulsate_timeout = -1;
static gboolean autokill; static gboolean autokill;
gint zenity_progress_timeout (gpointer data); gint zenity_progress_timeout (gpointer data);
@ -50,6 +51,25 @@ zenity_progress_pulsate_progress_bar (gpointer user_data)
return TRUE; return TRUE;
} }
static void
zenity_progress_pulsate_stop ()
{
if (pulsate_timeout > 0) {
g_source_remove (pulsate_timeout);
pulsate_timeout = -1;
}
}
static void
zenity_progress_pulsate_start (GObject *progress_bar)
{
if (pulsate_timeout == -1) {
pulsate_timeout = g_timeout_add (100,
zenity_progress_pulsate_progress_bar,
progress_bar);
}
}
static gboolean static gboolean
zenity_progress_handle_stdin (GIOChannel *channel, zenity_progress_handle_stdin (GIOChannel *channel,
GIOCondition condition, GIOCondition condition,
@ -58,7 +78,6 @@ zenity_progress_handle_stdin (GIOChannel *channel,
static ZenityProgressData *progress_data; static ZenityProgressData *progress_data;
static GObject *progress_bar; static GObject *progress_bar;
static GObject *progress_label; static GObject *progress_label;
static gint pulsate_timeout = -1;
float percentage = 0.0; float percentage = 0.0;
progress_data = (ZenityProgressData *) data; progress_data = (ZenityProgressData *) data;
@ -72,8 +91,7 @@ zenity_progress_handle_stdin (GIOChannel *channel,
string = g_string_new (NULL); string = g_string_new (NULL);
if (progress_data->pulsate) { if (progress_data->pulsate) {
if (pulsate_timeout == -1) zenity_progress_pulsate_start (progress_bar);
pulsate_timeout = g_timeout_add (100, zenity_progress_pulsate_progress_bar, progress_bar);
} }
while (channel->is_readable != TRUE) while (channel->is_readable != TRUE)
@ -146,10 +164,7 @@ zenity_progress_handle_stdin (GIOChannel *channel,
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), 1.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), 1.0);
if (progress_data->pulsate) { zenity_progress_pulsate_stop ();
g_source_remove (pulsate_timeout);
pulsate_timeout = -1;
}
g_object_unref (builder); g_object_unref (builder);