Index: sj-main.c
===================================================================
RCS file: /cvs/gnome/sound-juicer/src/sj-main.c,v
retrieving revision 1.64
diff -u -p -r1.64 sj-main.c
--- sj-main.c	20 Nov 2004 12:54:26 -0000	1.64
+++ sj-main.c	1 Feb 2005 16:34:25 -0000
@@ -251,7 +251,8 @@ static void update_ui_for_album (AlbumDe
                           COLUMN_NUMBER, track->number,
                           COLUMN_TITLE, track->title,
                           COLUMN_ARTIST, track->artist,
-                          COLUMN_DURATION, track->duration,
+                          COLUMN_PROGRESS, 0,
+						  COLUMN_DURATION, track->duration,
                           COLUMN_DETAILS, track,
                           -1);
     }
@@ -972,11 +973,11 @@ int main (int argc, char **argv)
     gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(genre_combo), renderer, "text", 1);
   }
 
-  track_store = gtk_list_store_new (COLUMN_TOTAL, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);
+  track_store = gtk_list_store_new (COLUMN_TOTAL, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_POINTER);
   gtk_tree_view_set_model (GTK_TREE_VIEW (track_listview), GTK_TREE_MODEL (track_store));
   {
     GtkTreeViewColumn *column;
-    GtkCellRenderer *text_renderer, *toggle_renderer;
+    GtkCellRenderer *text_renderer, *toggle_renderer, *progress_renderer;
     
     toggle_renderer = gtk_cell_renderer_toggle_new ();
     g_signal_connect (toggle_renderer, "toggled", G_CALLBACK (on_extract_toggled), NULL);
@@ -1025,6 +1026,15 @@ int main (int argc, char **argv)
     gtk_tree_view_column_set_resizable (column, TRUE);
     gtk_tree_view_column_set_cell_data_func (column, text_renderer, duration_cell_data_cb, NULL, NULL);
     gtk_tree_view_append_column (GTK_TREE_VIEW (track_listview), column);
+
+	progress_renderer = gtk_cell_renderer_progress_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("Progress"),
+	                                                   progress_renderer,
+													   "value", COLUMN_PROGRESS,
+	                                                   NULL);
+	gtk_tree_view_column_set_resizable (column, TRUE);
+    g_object_set (G_OBJECT (progress_renderer), "value", 0, NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (track_listview), column);
   }
 
   update_ui_for_album (NULL);
Index: sound-juicer.h
===================================================================
RCS file: /cvs/gnome/sound-juicer/src/sound-juicer.h,v
retrieving revision 1.12
diff -u -p -r1.12 sound-juicer.h
--- sound-juicer.h	20 Nov 2004 12:54:26 -0000	1.12
+++ sound-juicer.h	1 Feb 2005 16:35:20 -0000
@@ -68,6 +68,7 @@ typedef enum {
   COLUMN_TITLE,
   COLUMN_ARTIST,
   COLUMN_DURATION,
+  COLUMN_PROGRESS,
   COLUMN_DETAILS,
   COLUMN_TOTAL
 } ViewColumn;
Index: sj-extracting.c
===================================================================
RCS file: /cvs/gnome/sound-juicer/src/sj-extracting.c,v
retrieving revision 1.48
diff -u -p -r1.48 sj-extracting.c
--- sj-extracting.c	5 Jan 2005 10:23:29 -0000	1.48
+++ sj-extracting.c	1 Feb 2005 16:36:05 -0000
@@ -28,12 +28,14 @@
 #include <unistd.h> 
 #include <errno.h>
 #include <stdlib.h>
+#include <string.h>
 
+#include <gtk/gtk.h>
 #include <glib/glist.h>
 #include <gtk/gtklabel.h>
+#include <gtk/gtkimage.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkmessagedialog.h>
-#include <gtk/gtkprogressbar.h>
 #include <gtk/gtkstock.h>
 #include <gtk/gtktreemodel.h>
 
@@ -50,20 +52,17 @@ typedef struct {
 /** If this module has been initialised yet. */
 static gboolean initialised = FALSE;
 
-/** The progress dialog. */
-static GtkWidget *progress_dialog;
+/** Tha Extract label */
+static GtkLabel *extract_label;
 
-/** The track and album progress bars. */
-static GtkWidget *track_progress, *album_progress;
-
-/** The progress label. */
-static GtkWidget *progress_label;
+/** Tha Extract image */
+static GtkImage *extract_image;
 
 /** The widgets in the main UI */
-static GtkWidget *extract_button, *reread_button, *title_entry, *artist_entry, *genre_combo, *track_listview;
+static GtkWidget *reread_button, *title_entry, *artist_entry, *genre_combo, *track_listview;
 
 /** The menuitem in the main menu */
-static GtkWidget *extract_menuitem, *reread_menuitem, *select_all_menuitem, *deselect_all_menuitem;
+static GtkWidget *extract_menuitem, *reread_menuitem, *select_all_menuitem, *deselect_all_menuitem, *eta_label;
 
 /** The current TrackDetails being extracted. */
 static TrackDetails *track;
@@ -80,6 +79,12 @@ static GList *pending;
  */
 static GList *paths = NULL;
 
+/* A list of Iters strings to update the cellprogress */
+static GList *iter_string_list;
+
+/* Current Iter string */
+static GtkTreeIter current_iter;
+
 /**
  * The total number of tracks we are extracting.
  */
@@ -153,7 +158,15 @@ cleanup (void)
   g_list_free (pending);
   pending = NULL;
   track = NULL;
-  gtk_widget_set_sensitive (extract_button, TRUE);
+  g_list_free (iter_string_list);
+  iter_string_list = NULL;
+  /* Change back the label and image to Extract */
+  gtk_label_set_text_with_mnemonic (extract_label,"E_xtract");
+  gtk_image_set_from_stock (extract_image, "gtk-cdrom",
+				  GTK_ICON_SIZE_BUTTON);
+  /* Clear the eta_label */
+  gtk_label_set_label (GTK_LABEL (eta_label), ""); 
+  
   gtk_widget_set_sensitive (reread_button, TRUE);
   gtk_widget_set_sensitive (track_listview, TRUE);
   gtk_widget_set_sensitive (title_entry, TRUE);
@@ -238,6 +251,7 @@ static void on_completion_cb (SjExtracto
 static void
 pop_and_extract (void)
 {
+  gchar *current_iter_string;
   if (pending == NULL) {
     g_assert_not_reached ();
   } else {
@@ -247,14 +261,22 @@ pop_and_extract (void)
     
     /* Pop the next track to extract */
     track = pending->data;
-    pending = g_list_remove (pending, track);
-    /* Build the filename for this track */
+	pending = g_list_remove (pending, track);
+    /* Pop the next iter string for cell progress */
+	current_iter_string = iter_string_list->data;
+	iter_string_list = g_list_remove (iter_string_list, current_iter_string);	
+	/* Get the next iter from the iter string for cell progress*/
+	if (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (track_store), 
+							&current_iter, current_iter_string)) {
+	 	/* Invalid Tree Iter*/
+	}
+    
+	/* Build the filename for this track */
     file_path = build_filename (track);
     /* And create the directory it lives in */
     directory = create_directory_for (file_path, &error);
     if (error) {
       GtkWidget *dialog;
-      gtk_widget_hide (progress_dialog);
       text = g_strdup_printf (_("Sound Juicer could not extract this CD.\nReason: %s"), error->message);
 
       dialog = gtk_message_dialog_new (GTK_WINDOW (main_window), 0,
@@ -277,21 +299,13 @@ pop_and_extract (void)
       return;
     }
 
-    /* Update the progress bars */
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (track_progress), 0);
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (album_progress),
-                                   CLAMP (1.0 - ((g_list_length (pending) + 1)  / (float)total_extracting), 0.0, 1.0));
-
-    text = g_strdup_printf (_("Extracting '%s'"), track->title);
-    gtk_label_set_text (GTK_LABEL (progress_label), text);
-    g_free (text);
-
-    /* Now actually do the extraction */
+	/* Update the cell progress */
+	gtk_list_store_set (track_store, &current_iter, COLUMN_PROGRESS, 0, -1);
+    
+	/* Now actually do the extraction */
     sj_extractor_extract_track (extractor, track, file_path, &error);
     if (error) {
       GtkWidget *dialog;
-      gtk_widget_hide (progress_dialog);
-
       text = g_strdup_printf (_("Sound Juicer could not extract this CD.\nReason: %s"), error->message);
 
       dialog = gtk_message_dialog_new (GTK_WINDOW (main_window), 0,
@@ -312,14 +326,13 @@ pop_and_extract (void)
 
 /**
  * Foreach callback to populate pending with the list of TrackDetails to
- * extract.
+ * extract. Also get the corresponding GtkTreeIter string to update cell progress
  */
 static gboolean
 extract_track_foreach_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
 {
   gboolean extract;
   TrackDetails *track;
-
   gtk_tree_model_get (model, iter,
                       COLUMN_EXTRACT, &extract,
                       COLUMN_DETAILS, &track,
@@ -328,25 +341,26 @@ extract_track_foreach_cb (GtkTreeModel *
     pending = g_list_append (pending, track);
     ++total_extracting;
     total_duration += track->duration;
+	/* Store the corresponding Iter string in a list */
+	iter_string_list = g_list_append (iter_string_list, 
+		  gtk_tree_model_get_string_from_iter (GTK_TREE_MODEL (track_store), iter));
   }
+  
   return FALSE;
 }
 
 /**
  * Update the ETA and Speed labels
  */
+
 static void
 update_speed_progress (SjExtractor *extractor, float speed, int eta)
 {
-  GtkWidget *eta_label;
   char *eta_str;
-
-  eta_label = glade_xml_get_widget (glade, "eta_label");
-
   if (eta >= 0) {
-    eta_str = g_strdup_printf (_("%d:%02d (at %0.1fx)"), eta / 60, eta % 60, speed);
+    eta_str = g_strdup_printf (_("Estimated time left:%d:%02d (at %0.1fx)"), eta / 60, eta % 60, speed);
   } else {
-    eta_str = g_strdup (_("Unknown (at 0.0x)"));
+    eta_str = g_strdup (_("Estimated time left:Unknown (at 0.0x)"));
   }
 
   gtk_label_set_label (GTK_LABEL (eta_label), eta_str);
@@ -361,19 +375,13 @@ on_progress_cb (SjExtractor *extractor, 
 {
   /* Track progress */
   if (track->duration != 0) {
-    float percent;
-    percent = CLAMP ((float)seconds / (float)track->duration, 0, 1);
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (track_progress), percent);
-  } else {
-    gtk_progress_bar_pulse (GTK_PROGRESS_BAR (track_progress));
-  }
+	gint value;
+    value = (seconds * 100) / track->duration;
+	gtk_list_store_set (track_store, &current_iter, COLUMN_PROGRESS, value, -1);
+  } 
 
   /* Album progress */
   if (total_duration != 0) {
-    float percent;
-    percent = CLAMP ((float)(current_duration + seconds) / (float)total_duration, 0, 1);
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (album_progress), percent);
-
     if (before.seconds == -1) {
       before.seconds = current_duration + seconds;
       gettimeofday(&before.time, NULL);
@@ -485,7 +493,6 @@ on_completion_cb (SjExtractor *extractor
 {
   /* TODO: uncheck the relevant check box */
   if (pending == NULL) {
-    gtk_widget_hide (progress_dialog);
     show_finished_dialog ();
     if (autostart) {
       gtk_main_quit ();
@@ -507,7 +514,6 @@ on_error_cb (SjExtractor *extractor, GEr
   GtkWidget *dialog;
   char *text;
   /* We've come to a screeching halt... */
-  gtk_widget_hide (progress_dialog);
   /* Display a nice dialog */
   text = g_strdup_printf (_("Sound Juicer could not extract this CD.\nReason: %s"), error->message);
 
@@ -533,7 +539,6 @@ on_progress_cancel_clicked (GtkWidget *b
 {
   sj_extractor_cancel_extract (extractor);
   cleanup ();
-  gtk_widget_hide (progress_dialog);
   extracting = FALSE;
 }
 
@@ -544,11 +549,27 @@ void
 on_extract_activate (GtkWidget *button, gpointer user_data)
 {
   /* Populate the pending list */
+  GtkWidget *tmp;
+  const gchar *label;
+  /* Get the Extract label and image */
+  tmp = glade_xml_get_widget (glade, "extract_label");
+  extract_label = GTK_LABEL (tmp);
+  tmp = glade_xml_get_widget (glade, "extract_image");
+  extract_image = GTK_IMAGE (tmp);
+  label = gtk_label_get_text (extract_label);
+  /* If Cancel label found, then cancel the extract */
+  if (!(strcmp (label, "Cancel"))) {
+  	on_progress_cancel_clicked (GTK_WIDGET (tmp), NULL);
+	return;
+  }
+  
   pending = NULL;
+  iter_string_list = NULL; 
   total_extracting = 0;
   current_duration = total_duration = 0;
   before.seconds = -1;
   gtk_tree_model_foreach (GTK_TREE_MODEL (track_store), extract_track_foreach_cb, NULL);
+  
   /* If the pending list is still empty, return */
   if (pending == NULL) {
     /* Should never reach here */
@@ -563,39 +584,31 @@ on_extract_activate (GtkWidget *button, 
     g_signal_connect (extractor, "completion", G_CALLBACK (on_completion_cb), NULL);
     g_signal_connect (extractor, "error", G_CALLBACK (on_error_cb), NULL);
 
-    /* Get the progress dialog */
-    progress_dialog = glade_xml_get_widget (glade, "progress_dialog");
-    g_assert (progress_dialog != NULL);
-    gtk_window_set_transient_for (GTK_WINDOW (progress_dialog), GTK_WINDOW (main_window));
-    track_progress = glade_xml_get_widget (glade, "track_progress");
-    album_progress = glade_xml_get_widget (glade, "album_progress");
-    progress_label = glade_xml_get_widget (glade, "progress_label");
-    extract_button = glade_xml_get_widget (glade, "extract_button");
     reread_button = glade_xml_get_widget (glade, "reread_button");
     title_entry = glade_xml_get_widget (glade, "title_entry");
     artist_entry = glade_xml_get_widget (glade, "artist_entry");
     genre_combo = glade_xml_get_widget (glade, "genre_combo");
     track_listview = glade_xml_get_widget (glade, "track_listview");
+	eta_label = glade_xml_get_widget (glade, "eta_label");
     
 	extract_menuitem = glade_xml_get_widget (glade, "extract_menuitem");
 	reread_menuitem = glade_xml_get_widget (glade, "re-read");
 	select_all_menuitem = glade_xml_get_widget (glade, "select_all");
 	deselect_all_menuitem = glade_xml_get_widget (glade, "deselect_all");
 	
+	
 	/* TODO : this callback should be in the glade file */
-    g_signal_connect (progress_dialog, "delete-event", G_CALLBACK (on_progress_cancel_clicked), NULL);
-
     initialised = TRUE;
   }
 
-  /* Reset the progress dialog */
-  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (track_progress), 0);
-  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (album_progress), 0);
   update_speed_progress (NULL, 0.0, -1);
-  gtk_widget_show_all (progress_dialog);
-
+  
+  /* Change the label and image to Cancel while extracting*/
+  gtk_label_set_text_with_mnemonic (extract_label, "_Cancel");
+  gtk_image_set_from_stock (extract_image, "gtk-cancel",
+				  GTK_ICON_SIZE_BUTTON);
+  
   /* Disable the widgets in the main UI*/
-  gtk_widget_set_sensitive (extract_button, FALSE);
   gtk_widget_set_sensitive (reread_button, FALSE);
   gtk_widget_set_sensitive (title_entry, FALSE);
   gtk_widget_set_sensitive (artist_entry, FALSE);
Index: sound-juicer.glade
===================================================================
RCS file: /cvs/gnome/sound-juicer/data/sound-juicer.glade,v
retrieving revision 1.33
diff -u -p -r1.33 sound-juicer.glade
--- sound-juicer.glade	20 Nov 2004 12:54:26 -0000	1.33
+++ sound-juicer.glade	1 Feb 2005 16:37:20 -0000
@@ -50,7 +50,7 @@
 		      <accelerator key="Return" modifiers="GDK_CONTROL_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image66">
+			<widget class="GtkImage" id="extract_menuitem_image">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-cdrom</property>
 			  <property name="icon_size">1</property>
@@ -436,152 +436,200 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkHButtonBox" id="hbuttonbox1">
+	    <widget class="GtkHBox" id="hbox6">
 	      <property name="visible">True</property>
-	      <property name="layout_style">GTK_BUTTONBOX_END</property>
-	      <property name="spacing">8</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
 
-	      <child>
-		<widget class="GtkButton" id="reread_button">
+	    
+		<child>
+		<widget class="GtkHBox" id="hbox6">
 		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_reread_activate" last_modification_time="Thu, 27 Mar 2003 09:28:44 GMT"/>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment4">
+		    <widget class="GtkLabel" id="eta_label">
 		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
 		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
-		      <property name="xscale">0</property>
-		      <property name="yscale">0</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">0</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox6">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">2</property>
-
-			  <child>
-			    <widget class="GtkImage" id="image52">
-			      <property name="visible">True</property>
-			      <property name="stock">gtk-refresh</property>
-			      <property name="icon_size">4</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkLabel" id="label22">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Re-read</property>
-			      <property name="use_underline">True</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
 		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
 		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="extract_button">
-		  <property name="visible">True</property>
-		  <property name="sensitive">False</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_extract_activate" last_modification_time="Tue, 25 Mar 2003 19:54:03 GMT"/>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment1">
+		    <widget class="GtkHButtonBox" id="hbuttonbox1">
 		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">0</property>
-		      <property name="yscale">0</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">0</property>
-		      <property name="right_padding">0</property>
+		      <property name="layout_style">GTK_BUTTONBOX_END</property>
+		      <property name="spacing">8</property>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox1">
+			<widget class="GtkButton" id="reread_button">
 			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">2</property>
+			  <property name="can_default">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="on_reread_activate" last_modification_time="Thu, 27 Mar 2003 09:28:44 GMT"/>
 
 			  <child>
-			    <widget class="GtkImage" id="image4">
+			    <widget class="GtkAlignment" id="alignment4">
 			      <property name="visible">True</property>
-			      <property name="stock">gtk-cdrom</property>
-			      <property name="icon_size">4</property>
 			      <property name="xalign">0.5</property>
 			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">0</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox6">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image52">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-refresh</property>
+				      <property name="icon_size">4</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label22">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">_Re-read</property>
+				      <property name="use_underline">True</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+			      </child>
 			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
 			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="extract_button">
+			  <property name="visible">True</property>
+			  <property name="sensitive">False</property>
+			  <property name="can_default">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="on_extract_activate" last_modification_time="Tue, 25 Mar 2003 19:54:03 GMT"/>
 
 			  <child>
-			    <widget class="GtkLabel" id="label6">
+			    <widget class="GtkAlignment" id="alignment1">
 			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">E_xtract</property>
-			      <property name="use_underline">True</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
 			      <property name="xalign">0.5</property>
 			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">0</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox1">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="extract_image">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-cdrom</property>
+				      <property name="icon_size">4</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="extract_label">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">E_xtract</property>
+				      <property name="use_underline">True</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+			      </child>
 			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
 			  </child>
 			</widget>
 		      </child>
 		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
 		  </child>
 		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
 	      </child>
 	    </widget>
 	    <packing>
@@ -776,260 +824,6 @@
 	<packing>
 	  <property name="padding">0</property>
 	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkDialog" id="progress_dialog">
-  <property name="width_request">300</property>
-  <property name="title" translatable="yes">Progress</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="has_separator">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox3">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="dialog-action_area3">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="progress_cancel_button">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-6</property>
-	      <signal name="clicked" handler="on_progress_cancel_clicked" last_modification_time="Tue, 01 Apr 2003 15:51:16 GMT"/>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkVBox" id="vbox7">
-	  <property name="border_width">8</property>
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">8</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="progress_label">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Unknown</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkFrame" id="frame4">
-	      <property name="visible">True</property>
-	      <property name="label_xalign">0</property>
-	      <property name="label_yalign">0.5</property>
-	      <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox8">
-		  <property name="border_width">8</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">8</property>
-
-		  <child>
-		    <widget class="GtkProgressBar" id="track_progress">
-		      <property name="visible">True</property>
-		      <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
-		      <property name="fraction">0</property>
-		      <property name="pulse_step">0.1</property>
-		      <property name="text" translatable="yes"></property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label13">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;b&gt;Track Progress&lt;/b&gt;</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">True</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">label_item</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkFrame" id="frame5">
-	      <property name="visible">True</property>
-	      <property name="label_xalign">0</property>
-	      <property name="label_yalign">0.5</property>
-	      <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox9">
-		  <property name="border_width">8</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">8</property>
-
-		  <child>
-		    <widget class="GtkHBox" id="hbox8">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">2</property>
-
-		      <child>
-			<widget class="GtkLabel" id="label30">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Estimated time left:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="eta_label">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Unknown</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkProgressBar" id="album_progress">
-		      <property name="visible">True</property>
-		      <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
-		      <property name="fraction">0</property>
-		      <property name="pulse_step">0.1</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label14">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;b&gt;Album Progress&lt;/b&gt;</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">True</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">label_item</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
 	  <property name="fill">True</property>
 	</packing>
       </child>
