Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > b4e87ef960dda3327363c9af81d2ed32 > files > 23

gnome-cups-manager-0.31-4mdv2008.0.src.rpm

--- gnome-cups-add/add-printer.c.orig	2006-04-26 22:35:03.882002880 +0200
+++ gnome-cups-add/add-printer.c	2006-04-26 22:39:46.267073824 +0200
@@ -244,12 +244,83 @@
 	gtk_main_quit ();
 }
 
-int
-main (int argc, char *argv[])
+GtkWindow *progress_window = NULL;
+static GtkWindow*
+create_progress_window ()
+{
+       GtkWindow *window;
+       GtkWidget *vbox, *label;
+       //GtkProgressBar *progress;
+       guint sid;
+
+       window = GTK_WINDOW (gtk_window_new (GTK_WINDOW_TOPLEVEL));
+       //gtk_window_set_title (GTK_WINDOW (window), _("Add a Printer"));
+       gtk_window_set_decorated(window, gtk_false);
+       gtk_container_set_border_width (GTK_CONTAINER (window), 6);
+       gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER_ALWAYS);
+       g_signal_connect(window, "delete_event", G_CALLBACK(gtk_true), NULL);
+
+       vbox = gtk_vbox_new (FALSE, 6);
+       gtk_container_add (GTK_CONTAINER (window), vbox);
+
+       label = gtk_label_new (g_strdup_printf (_("<b>Reading printer database ...</b>")));
+       gtk_label_set_use_markup (GTK_LABEL(label), TRUE);
+       gtk_misc_set_alignment (GTK_MISC(label), 0, 0.5);
+       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+       //progress = GTK_PROGRESS_BAR( gtk_progress_bar_new());
+       //gtk_widget_show ( GTK_WIDGET (progress));
+       //gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), " ");
+       //gtk_progress_bar_set_pulse_step (progress, 0.2);
+       //gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (progress), FALSE, FALSE, 6);
+
+       //sid = g_timeout_add (200, (GtkFunction) progress_timer, progress);
+       //g_object_set_data(G_OBJECT(window), "pgb_id", GINT_TO_POINTER(sid));
+
+       gtk_widget_show_all ( GTK_WIDGET (window));
+
+       gdk_window_set_cursor(GTK_WIDGET(window)->window, gdk_cursor_new(GDK_WATCH));
+       gtk_widget_grab_focus ( GTK_WIDGET (window));
+
+       return window;
+}
+
+static gpointer
+add_printer_main(gpointer data)
 {
 	GladeXML  *xml;
 	GtkWidget *window;
 
+	g_idle_remove_by_data(data);
+
+	xml = glade_xml_new (GNOME_CUPS_MANAGER_DATADIR "/gnome-cups-add.glade",
+			     "add_printer_window",
+			     GETTEXT_PACKAGE);
+
+	window = glade_xml_get_widget (xml, "add_printer_window");
+	set_window_icon (window, "gnome-dev-printer-new");
+	g_signal_connect (window,
+		"delete_event",
+		G_CALLBACK (delete_event_cb), NULL);
+	g_signal_connect (glade_xml_get_widget (xml, "add_printer_druid"),
+		"cancel",
+		G_CALLBACK (cancel_cb), NULL);
+
+	druid_pages_setup (xml, pages);
+	if (progress_window) {
+		gdk_window_set_cursor(GTK_WIDGET(progress_window)->window, gdk_cursor_new(GDK_LAST_CURSOR));
+		//g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(progress_window), "pgb_id")));
+		gtk_widget_destroy (GTK_WIDGET(progress_window));
+	}
+
+	gtk_widget_show (window);
+
+	return NULL; 
+}
+
+int
+main (int argc, char *argv[])
+{
 	gnome_program_init ("gnome-cups-add",
 			    VERSION,
 			    LIBGNOMEUI_MODULE, argc, argv,
@@ -271,21 +340,8 @@
 			exit (1);
 	}
 
-	xml = glade_xml_new (GNOME_CUPS_MANAGER_DATADIR "/gnome-cups-add.glade",
-			     "add_printer_window",
-			     GETTEXT_PACKAGE);
-
-	window = glade_xml_get_widget (xml, "add_printer_window");
-	set_window_icon (window, "gnome-dev-printer-new");
-	g_signal_connect (window,
-		"delete_event",
-		G_CALLBACK (delete_event_cb), NULL);
-	g_signal_connect (glade_xml_get_widget (xml, "add_printer_druid"),
-		"cancel",
-		G_CALLBACK (cancel_cb), NULL);
-
-	druid_pages_setup (xml, pages);
-	gtk_widget_show (window);
+	progress_window = create_progress_window();
+	g_timeout_add(300, add_printer_main, progress_window);
 
 	gtk_main ();