--- 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 (_("Reading printer database ..."))); + 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 ();