diff options
author | Maximiliano Curia <maxy@debian.org> | 2012-01-04 00:00:53 +0100 |
---|---|---|
committer | Maximiliano Curia <maxy@debian.org> | 2012-01-04 00:00:53 +0100 |
commit | 825fd5668026f70071c7a5eef277b0bf5c8f02d2 (patch) | |
tree | 4d3a9112d9887ea16ab5dda07a7a791f15d3278f /src/splash.c |
Import oregano_0.70.orig.tar.gz
[dgit import orig oregano_0.70.orig.tar.gz]
Diffstat (limited to 'src/splash.c')
-rw-r--r-- | src/splash.c | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/splash.c b/src/splash.c new file mode 100644 index 0000000..65094f2 --- /dev/null +++ b/src/splash.c @@ -0,0 +1,118 @@ +/* + * splash.c + * + * + * Author: + * Ricardo Markiewicz <rmarkie@fi.uba.ar> + * + * Copyright (C) 2003-2008 Ricardo Markiewicz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include <unistd.h> +#include <glade/glade.h> +#include "splash.h" +#include "splash.xpm" +#include "dialogs.h" + + +/* TODO : If we support this, we need to know how to stop the g_timeout :-/ */ +static void +oregano_splash_destroy (GtkWidget *w, GdkEvent *event, Splash *sp) +{ + if ((event->type == GDK_BUTTON_PRESS) && (event->button.button == 1)) { + if (sp->can_destroy) + gtk_widget_destroy (GTK_WIDGET (sp->win)); + } +} + +Splash * +oregano_splash_new () +{ + GladeXML *gui; + Splash *sp; + GtkImage *img; + GtkEventBox *event; + GdkPixbuf *logo; + gchar *msg; + + if (!g_file_test (OREGANO_GLADEDIR "/splash.glade", G_FILE_TEST_EXISTS) || + !g_file_test (OREGANO_GLADEDIR "/splash.xpm", G_FILE_TEST_EXISTS)) { + msg = g_strdup_printf ( + _("The files %s or %s could not be found. You might need to reinstall Oregano to fix this."), + OREGANO_GLADEDIR "/splash.glade", OREGANO_GLADEDIR "/splash.xpm"); + oregano_error_with_title (_("Could not create textbox properties dialog"), msg); + g_free (msg); + return; + } + gui = glade_xml_new (OREGANO_GLADEDIR "/splash.glade", NULL, NULL); + if (!gui) { + oregano_error (_("Could not create textbox properties dialog")); + return; + } + + sp = g_new0 (Splash, 1); + sp->can_destroy = FALSE; + + sp->win = GTK_WINDOW (glade_xml_get_widget (gui, "splash")); + sp->lbl = GTK_LABEL (glade_xml_get_widget (gui, "label")); + sp->progress = glade_xml_get_widget (gui, "pbar"); + + event = GTK_EVENT_BOX (glade_xml_get_widget (gui, "event")); + sp->event = GTK_WIDGET (event); + + // Replaced with TimeOut! + //g_signal_connect (G_OBJECT (event), "button_press_event", G_CALLBACK (oregano_splash_destroy), sp); + + gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (sp->progress), 0.07); + gtk_widget_show_all (GTK_WIDGET (sp->win)); + + while (gtk_events_pending ()) + gtk_main_iteration (); + return sp; +} + +gboolean +oregano_splash_free (Splash *sp) +{ + /* Need to disconnect the EventBox Widget! */ + g_signal_handlers_disconnect_by_func (sp->event, oregano_splash_destroy, sp); + gtk_widget_destroy (GTK_WIDGET (sp->win)); + g_free (sp); + return FALSE; +} + +void +oregano_splash_step (Splash *sp, char *s) +{ + int i; + gtk_label_set_text (sp->lbl, s); + gtk_progress_bar_pulse (GTK_PROGRESS_BAR (sp->progress)); + while (gtk_events_pending ()) + gtk_main_iteration (); +} + + +void +oregano_splash_done (Splash *sp, char *s) +{ + gtk_label_set_text (sp->lbl, s); + sp->can_destroy = TRUE; + g_timeout_add (2000, (GSourceFunc)(oregano_splash_free), sp); +} + |