*** sound-juicer.bak/data/sound-juicer.ui	2010-04-17 20:00:38.000000000 +0200
--- sound-juicer/data/sound-juicer.ui	2010-04-18 18:48:10.000000000 +0200
***************
*** 33,46 ****
                        </object>
                      </child>
                      <child>
!                       <object class="GtkImageMenuItem" id="next_track_menuitem">
!                         <property name="label">_Next Track</property>
                          <property name="visible">True</property>
-                         <property name="tooltip_text" translatable="yes">Skip to the next track</property>
-                         <property name="use_underline">True</property>
-                         <property name="use_stock">True</property>
-                         <accelerator key="N" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                         <signal name="activate" handler="on_next_track_activate"/>
                        </object>
                      </child>
                      <child>
--- 33,40 ----
                        </object>
                      </child>
                      <child>
!                       <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
                          <property name="visible">True</property>
                        </object>
                      </child>
                      <child>
***************
*** 49,66 ****
                          <property name="visible">True</property>
                          <property name="tooltip_text" translatable="yes">Skip to the previous track</property>
                          <property name="use_underline">True</property>
!                         <property name="use_stock">True</property>
                          <accelerator key="B" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                          <signal name="activate" handler="on_previous_track_activate"/>
                        </object>
                      </child>
                      <child>
!                       <object class="GtkMenuItem" id="eject">
                          <property name="visible">True</property>
!                         <property name="label" translatable="yes">E_ject</property>
                          <property name="use_underline">True</property>
!                         <accelerator key="J" signal="activate" modifiers="GDK_CONTROL_MASK"/>
!                         <signal name="activate" handler="on_eject_activate"/>
                        </object>
                      </child>
                      <child>
--- 43,69 ----
                          <property name="visible">True</property>
                          <property name="tooltip_text" translatable="yes">Skip to the previous track</property>
                          <property name="use_underline">True</property>
!                         <property name="image">image1</property>
!                         <property name="use_stock">False</property>
                          <accelerator key="B" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                          <signal name="activate" handler="on_previous_track_activate"/>
                        </object>
                      </child>
                      <child>
!                       <object class="GtkImageMenuItem" id="next_track_menuitem">
!                         <property name="label">_Next Track</property>
                          <property name="visible">True</property>
!                         <property name="tooltip_text" translatable="yes">Skip to the next track</property>
                          <property name="use_underline">True</property>
!                         <property name="image">image2</property>
!                         <property name="use_stock">False</property>
!                         <accelerator key="N" signal="activate" modifiers="GDK_CONTROL_MASK"/>
!                         <signal name="activate" handler="on_next_track_activate"/>
!                       </object>
!                     </child>
!                     <child>
!                       <object class="GtkSeparatorMenuItem" id="separatormenuitem4">
!                         <property name="visible">True</property>
                        </object>
                      </child>
                      <child>
***************
*** 74,98 ****
                        </object>
                      </child>
                      <child>
!                       <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
                          <property name="visible">True</property>
                        </object>
                      </child>
                      <child>
                        <object class="GtkImageMenuItem" id="extract_menuitem">
!                         <property name="label">sj-stock-extract</property>
                          <property name="visible">True</property>
                          <property name="use_underline">True</property>
!                         <property name="use_stock">True</property>
                          <signal name="activate" handler="on_extract_activate"/>
                        </object>
                      </child>
                      <child>
!                       <object class="GtkImageMenuItem" id="re-read">
!                         <property name="label">_Re-read Disc</property>
                          <property name="visible">True</property>
                          <property name="use_underline">True</property>
-                         <property name="use_stock">True</property>
                          <accelerator key="R" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                          <signal name="activate" handler="on_reread_activate"/>
                        </object>
--- 77,110 ----
                        </object>
                      </child>
                      <child>
!                       <object class="GtkSeparatorMenuItem" id="separatormenuitem5">
                          <property name="visible">True</property>
                        </object>
                      </child>
                      <child>
+                       <object class="GtkMenuItem" id="eject">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">E_ject</property>
+                         <property name="use_underline">True</property>
+                         <accelerator key="J" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                         <signal name="activate" handler="on_eject_activate"/>
+                       </object>
+                     </child>
+                     <child>
                        <object class="GtkImageMenuItem" id="extract_menuitem">
!                         <property name="label">E_xtract</property>
                          <property name="visible">True</property>
                          <property name="use_underline">True</property>
!                         <property name="image">image3</property>
!                         <property name="use_stock">False</property>
                          <signal name="activate" handler="on_extract_activate"/>
                        </object>
                      </child>
                      <child>
!                       <object class="GtkMenuItem" id="re-read">
                          <property name="visible">True</property>
+                         <property name="label" translatable="yes">_Re-read Disc</property>
                          <property name="use_underline">True</property>
                          <accelerator key="R" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                          <signal name="activate" handler="on_reread_activate"/>
                        </object>
***************
*** 108,114 ****
                        </object>
                      </child>
                      <child>
!                       <object class="GtkSeparatorMenuItem" id="separator2">
                          <property name="visible">True</property>
                        </object>
                      </child>
--- 120,126 ----
                        </object>
                      </child>
                      <child>
!                       <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
                          <property name="visible">True</property>
                        </object>
                      </child>
***************
*** 479,529 ****
                  <property name="visible">True</property>
                  <property name="spacing">6</property>
                  <child>
!                   <object class="GtkHButtonBox" id="hbuttonbox1">
                      <property name="visible">True</property>
!                     <property name="spacing">6</property>
!                     <property name="layout_style">end</property>
!                     <child>
!                       <object class="GtkButton" id="play_button">
!                         <property name="label">gtk-media-play</property>
!                         <property name="visible">True</property>
!                         <property name="can_focus">True</property>
!                         <property name="can_default">True</property>
!                         <property name="receives_default">False</property>
!                         <property name="use_stock">True</property>
!                         <signal name="clicked" handler="on_play_activate"/>
!                       </object>
!                       <packing>
!                         <property name="expand">False</property>
!                         <property name="fill">False</property>
!                         <property name="position">0</property>
!                       </packing>
!                     </child>
!                     <child>
!                       <object class="GtkButton" id="extract_button">
!                         <property name="label">sj-stock-extract</property>
!                         <property name="visible">True</property>
!                         <property name="can_focus">True</property>
!                         <property name="can_default">True</property>
!                         <property name="receives_default">False</property>
!                         <property name="use_stock">True</property>
!                         <signal name="clicked" handler="on_extract_activate"/>
!                       </object>
!                       <packing>
!                         <property name="expand">False</property>
!                         <property name="fill">False</property>
!                         <property name="position">1</property>
!                       </packing>
!                     </child>
                    </object>
                    <packing>
                      <property name="expand">False</property>
!                     <property name="position">1</property>
                    </packing>
                  </child>
                  <child>
                    <object class="GtkHScale" id="seek_scale">
                      <property name="can_focus">True</property>
                      <property name="digits">0</property>
                      <property name="draw_value">False</property>
                      <child internal-child="accessible">
--- 491,560 ----
                  <property name="visible">True</property>
                  <property name="spacing">6</property>
                  <child>
!                   <object class="GtkButton" id="extract_button">
                      <property name="visible">True</property>
!                     <property name="can_focus">True</property>
!                     <property name="receives_default">True</property>
!                     <property name="image">extract_image</property>
!                     <property name="relief">none</property>
!                     <signal name="clicked" handler="on_extract_activate"/>
                    </object>
                    <packing>
                      <property name="expand">False</property>
!                     <property name="fill">False</property>
!                     <property name="position">0</property>
!                   </packing>
!                 </child>
!                 <child>
!                   <object class="GtkButton" id="previous_button">
!                     <property name="visible">True</property>
!                     <property name="can_focus">True</property>
!                     <property name="receives_default">True</property>
!                     <property name="image">previous_image</property>
!                     <property name="relief">none</property>
!                     <signal name="clicked" handler="on_previous_track_activate"/>
!                   </object>
!                   <packing>
!                     <property name="expand">False</property>
!                     <property name="fill">False</property>
!                     <property name="position">2</property>
!                   </packing>
!                 </child>
!                 <child>
!                   <object class="GtkButton" id="play_pause_button">
!                     <property name="visible">True</property>
!                     <property name="can_focus">True</property>
!                     <property name="receives_default">True</property>
!                     <property name="image">play_image</property>
!                     <property name="relief">none</property>
!                     <signal name="clicked" handler="on_play_activate"/>
!                   </object>
!                   <packing>
!                     <property name="expand">False</property>
!                     <property name="fill">False</property>
!                     <property name="position">3</property>
!                   </packing>
!                 </child>
!                 <child>
!                   <object class="GtkButton" id="next_button">
!                     <property name="visible">True</property>
!                     <property name="can_focus">True</property>
!                     <property name="receives_default">True</property>
!                     <property name="image">next_image</property>
!                     <property name="relief">none</property>
!                     <signal name="clicked" handler="on_next_track_activate"/>
!                   </object>
!                   <packing>
!                     <property name="expand">False</property>
!                     <property name="fill">False</property>
!                     <property name="position">4</property>
                    </packing>
                  </child>
                  <child>
                    <object class="GtkHScale" id="seek_scale">
+                     <property name="visible">True</property>
                      <property name="can_focus">True</property>
+                     <property name="adjustment">seek_adjustment</property>
                      <property name="digits">0</property>
                      <property name="draw_value">False</property>
                      <child internal-child="accessible">
***************
*** 536,542 ****
                      <signal name="button_release_event" handler="on_seek_release"/>
                    </object>
                    <packing>
!                     <property name="position">2</property>
                    </packing>
                  </child>
                  <child>
--- 567,573 ----
                      <signal name="button_release_event" handler="on_seek_release"/>
                    </object>
                    <packing>
!                     <property name="position">5</property>
                    </packing>
                  </child>
                  <child>
***************
*** 556,562 ****
                    </object>
                    <packing>
                      <property name="expand">False</property>
!                     <property name="position">2</property>
                    </packing>
                  </child>
                </object>
--- 587,594 ----
                    </object>
                    <packing>
                      <property name="expand">False</property>
!                     <property name="pack_type">end</property>
!                     <property name="position">1</property>
                    </packing>
                  </child>
                </object>
***************
*** 792,809 ****
                            </packing>
                          </child>
                          <child>
-                           <object class="BraseroDriveSelection" id="cd_option">
-                             <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-                           </object>
-                           <packing>
-                             <property name="left_attach">1</property>
-                             <property name="right_attach">2</property>
-                             <property name="x_options">GTK_FILL</property>
-                             <property name="y_options"></property>
-                           </packing>
-                         </child>
-                         <child>
                            <object class="GtkCheckButton" id="check_eject">
                              <property name="label" translatable="yes">_Eject after extracting tracks</property>
                              <property name="visible">True</property>
--- 824,829 ----
***************
*** 1244,1247 ****
--- 1264,1311 ----
        <action-widget response="-7">prefs_close</action-widget>
      </action-widgets>
    </object>
+   <object class="GtkImage" id="pause_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-pause</property>
+   </object>
+   <object class="GtkImage" id="stop_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-stop</property>
+   </object>
+   <object class="GtkImage" id="image1">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-previous</property>
+     <property name="icon-size">1</property>
+   </object>
+   <object class="GtkImage" id="image2">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-next</property>
+     <property name="icon-size">1</property>
+   </object>
+   <object class="GtkImage" id="next_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-next</property>
+   </object>
+   <object class="GtkImage" id="play_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-play</property>
+   </object>
+   <object class="GtkImage" id="previous_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-media-previous</property>
+   </object>
+   <object class="GtkImage" id="extract_image">
+     <property name="visible">True</property>
+     <property name="stock">gtk-cdrom</property>
+   </object>
+   <object class="GtkImage" id="image3">
+     <property name="visible">True</property>
+     <property name="stock">gtk-cdrom</property>
+     <property name="icon-size">1</property>
+   </object>
+   <object class="GtkAdjustment" id="seek_adjustment">
+     <property name="upper">1</property>
+     <property name="step_increment">0.01</property>
+     <property name="page_increment">0.10000000000000001</property>
+   </object>
  </interface>
diff -c sound-juicer.bak/src/sj-extracting.c sound-juicer/src/sj-extracting.c
*** sound-juicer.bak/src/sj-extracting.c	2010-04-17 20:00:38.000000000 +0200
--- sound-juicer/src/sj-extracting.c	2010-04-18 18:52:36.000000000 +0200
***************
*** 80,86 ****
  static GtkWidget *progress_bar, *status_bar;
  
  /** The widgets in the main UI */
! static GtkWidget *extract_button, *play_button, *title_entry, *artist_entry, *genre_entry, *year_entry, *disc_number_entry, *track_listview;
  
  /** The menuitem in the main menu */
  static GtkWidget *extract_menuitem, *play_menuitem, *reread_menuitem, *select_all_menuitem, *deselect_all_menuitem;
--- 80,90 ----
  static GtkWidget *progress_bar, *status_bar;
  
  /** The widgets in the main UI */
! static GtkWidget *extract_button, *prev_button, *play_button, *next_button;
! static GtkWidget *title_entry, *artist_entry, *genre_entry, *year_entry, *disc_number_entry, *track_listview;
! 
! /** The images in the main UI */
! static GtkWidget *extract_image, *stop_image;
  
  /** The menuitem in the main menu */
  static GtkWidget *extract_menuitem, *play_menuitem, *reread_menuitem, *select_all_menuitem, *deselect_all_menuitem;
***************
*** 223,231 ****
    }
    /* Forcibly invalidate the iterator */
    current.stamp = 0;
!   /* TODO: find out why GTK+ needs this to work (see #364371) */
!   gtk_button_set_label (GTK_BUTTON (extract_button), _("Extract"));
!   gtk_button_set_label (GTK_BUTTON (extract_button), SJ_STOCK_EXTRACT);
    
    /* Clear the Status bar */
    gtk_statusbar_push (GTK_STATUSBAR (status_bar), 0, "");
--- 227,234 ----
    }
    /* Forcibly invalidate the iterator */
    current.stamp = 0;
! 
!   gtk_button_set_image (GTK_BUTTON (extract_button), extract_image);
    
    /* Clear the Status bar */
    gtk_statusbar_push (GTK_STATUSBAR (status_bar), 0, "");
***************
*** 766,772 ****
      g_signal_connect (extractor, "error", G_CALLBACK (on_error_cb), NULL);
  
      extract_button    = GET_WIDGET ("extract_button");
!     play_button       = GET_WIDGET ("play_button");
      title_entry       = GET_WIDGET ("title_entry");
      artist_entry      = GET_WIDGET ("artist_entry");
      genre_entry       = GET_WIDGET ("genre_entry");
--- 769,777 ----
      g_signal_connect (extractor, "error", G_CALLBACK (on_error_cb), NULL);
  
      extract_button    = GET_WIDGET ("extract_button");
!     prev_button       = GET_WIDGET ("previous_button");
!     play_button       = GET_WIDGET ("play_pause_button");
!     next_button       = GET_WIDGET ("next_button");
      title_entry       = GET_WIDGET ("title_entry");
      artist_entry      = GET_WIDGET ("artist_entry");
      genre_entry       = GET_WIDGET ("genre_entry");
***************
*** 781,794 ****
      reread_menuitem       = GET_WIDGET ("re-read");
      select_all_menuitem   = GET_WIDGET ("select_all");
      deselect_all_menuitem = GET_WIDGET ("deselect_all");
!     
      initialised = TRUE;
    }
    
!   /* Change the label to Stop while extracting*/
!   /* TODO: find out why GTK+ needs this to work (see #364371) */
!   gtk_button_set_label (GTK_BUTTON (extract_button), _("Stop"));
!   gtk_button_set_label (GTK_BUTTON (extract_button), GTK_STOCK_STOP);
    gtk_widget_show (progress_bar);
    
    /* Reset the progress dialog */
--- 786,800 ----
      reread_menuitem       = GET_WIDGET ("re-read");
      select_all_menuitem   = GET_WIDGET ("select_all");
      deselect_all_menuitem = GET_WIDGET ("deselect_all");
! 
!     extract_image = GET_WIDGET ("extract_image");
!     stop_image    = GET_WIDGET ("stop_image");
! 
      initialised = TRUE;
    }
    
!   /* Change the image to Stop while extracting*/
!   gtk_button_set_image (GTK_BUTTON (extract_button), stop_image);
    gtk_widget_show (progress_bar);
    
    /* Reset the progress dialog */
***************
*** 796,802 ****
--- 802,810 ----
    update_speed_progress (NULL, 0.0, -1);
  
    /* Disable the widgets in the main UI*/
+   gtk_widget_set_sensitive (prev_button, FALSE);
    gtk_widget_set_sensitive (play_button, FALSE);
+   gtk_widget_set_sensitive (next_button, FALSE);
    gtk_widget_set_sensitive (title_entry, FALSE);
    gtk_widget_set_sensitive (artist_entry, FALSE);
    gtk_widget_set_sensitive (genre_entry, FALSE);
diff -c sound-juicer.bak/src/sj-main.c sound-juicer/src/sj-main.c
*** sound-juicer.bak/src/sj-main.c	2010-04-17 20:00:38.000000000 +0200
--- sound-juicer/src/sj-main.c	2010-04-18 15:15:07.000000000 +0200
***************
*** 72,78 ****
  GtkWidget *main_window;
  static GtkWidget *message_area_eventbox;
  static GtkWidget *title_entry, *artist_entry, *duration_label, *genre_entry, *year_entry, *disc_number_entry;
! static GtkWidget *track_listview, *extract_button, *play_button;
  static GtkWidget *status_bar;
  static GtkWidget *extract_menuitem, *play_menuitem, *next_menuitem, *prev_menuitem, *select_all_menuitem, *deselect_all_menuitem;
  static GtkWidget *submit_menuitem;
--- 72,78 ----
  GtkWidget *main_window;
  static GtkWidget *message_area_eventbox;
  static GtkWidget *title_entry, *artist_entry, *duration_label, *genre_entry, *year_entry, *disc_number_entry;
! static GtkWidget *track_listview, *extract_button, *prev_button, *play_button, *next_button, *seek_scale, *vol_button;
  static GtkWidget *status_bar;
  static GtkWidget *extract_menuitem, *play_menuitem, *next_menuitem, *prev_menuitem, *select_all_menuitem, *deselect_all_menuitem;
  static GtkWidget *submit_menuitem;
***************
*** 475,484 ****
--- 475,487 ----
      gtk_widget_set_sensitive (play_button, FALSE);
      gtk_widget_set_sensitive (play_menuitem, FALSE);
      gtk_widget_set_sensitive (extract_button, FALSE);
+     gtk_widget_set_sensitive (seek_scale, FALSE);
      gtk_widget_set_sensitive (extract_menuitem, FALSE);
      gtk_widget_set_sensitive (select_all_menuitem, FALSE);
      gtk_widget_set_sensitive (deselect_all_menuitem, FALSE);
+ 		gtk_widget_set_sensitive (prev_button, FALSE);
      gtk_widget_set_sensitive (prev_menuitem, FALSE);
+ 		gtk_widget_set_sensitive (next_button, FALSE);
      gtk_widget_set_sensitive (next_menuitem, FALSE);
      set_duplication (FALSE);
  
***************
*** 513,522 ****
--- 516,528 ----
      gtk_widget_set_sensitive (play_button, TRUE);
      gtk_widget_set_sensitive (play_menuitem, TRUE);
      gtk_widget_set_sensitive (extract_button, TRUE);
+     gtk_widget_set_sensitive (seek_scale, TRUE);
      gtk_widget_set_sensitive (extract_menuitem, TRUE);
      gtk_widget_set_sensitive (select_all_menuitem, FALSE);
      gtk_widget_set_sensitive (deselect_all_menuitem, TRUE);
+ 		gtk_widget_set_sensitive (prev_button, FALSE);
      gtk_widget_set_sensitive (prev_menuitem, FALSE);
+ 		gtk_widget_set_sensitive (next_button, FALSE);
      gtk_widget_set_sensitive (next_menuitem, FALSE);
      set_duplication (TRUE);
  
***************
*** 783,793 ****
  {
    g_assert (strcmp (entry->key, GCONF_AUDIO_VOLUME) == 0);
  
-   GtkWidget *volb = GET_WIDGET ("volume_button");
    if (entry->value == NULL) {
!     gtk_scale_button_set_value (GTK_SCALE_BUTTON (volb), 1.0);
    } else {
!     gtk_scale_button_set_value (GTK_SCALE_BUTTON (volb), gconf_value_get_float (entry->value));
    }
  }
  
--- 789,798 ----
  {
    g_assert (strcmp (entry->key, GCONF_AUDIO_VOLUME) == 0);
  
    if (entry->value == NULL) {
!     gtk_scale_button_set_value (GTK_SCALE_BUTTON (vol_button), 1.0);
    } else {
!     gtk_scale_button_set_value (GTK_SCALE_BUTTON (vol_button), gconf_value_get_float (entry->value));
    }
  }
  
***************
*** 1730,1764 ****
    track_listview        = GET_WIDGET ("track_listview");
    extract_button        = GET_WIDGET ("extract_button");
    extract_menuitem      = GET_WIDGET ("extract_menuitem");
!   play_button           = GET_WIDGET ("play_button");
    play_menuitem         = GET_WIDGET ("play_menuitem");
    next_menuitem         = GET_WIDGET ("next_track_menuitem");
    prev_menuitem         = GET_WIDGET ("previous_track_menuitem");
    status_bar            = GET_WIDGET ("status_bar");
    duplicate             = GET_WIDGET ("duplicate_menuitem");
    eject                 = GET_WIDGET ("eject");
  
-   { /* ensure that the play/pause button's size is constant */
-     GtkWidget *fake_button1, *fake_button2;
-     GtkSizeGroup *size_group;
- 
-     size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- 
-     fake_button1 = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
-     gtk_size_group_add_widget (size_group, fake_button1);
-     g_signal_connect_swapped (play_button, "destroy",
-                               G_CALLBACK (gtk_widget_destroy),
-                               fake_button1);
- 
-     fake_button2 = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PAUSE);
-     gtk_size_group_add_widget (size_group, fake_button2);
-     g_signal_connect_swapped (play_button, "destroy",
-                               G_CALLBACK (gtk_widget_destroy),
-                               fake_button2);
- 
-     gtk_size_group_add_widget (size_group, play_button);
-   }
- 
    setup_genre_entry (genre_entry);
  
    track_store = gtk_list_store_new (COLUMN_TOTAL, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);
--- 1735,1752 ----
    track_listview        = GET_WIDGET ("track_listview");
    extract_button        = GET_WIDGET ("extract_button");
    extract_menuitem      = GET_WIDGET ("extract_menuitem");
!   play_button           = GET_WIDGET ("play_pause_button");
    play_menuitem         = GET_WIDGET ("play_menuitem");
+ 	next_button           = GET_WIDGET ("next_button");
    next_menuitem         = GET_WIDGET ("next_track_menuitem");
+ 	prev_button           = GET_WIDGET ("previous_button");
    prev_menuitem         = GET_WIDGET ("previous_track_menuitem");
+ 	seek_scale            = GET_WIDGET ("seek_scale");
+ 	vol_button            = GET_WIDGET ("volume_button");
    status_bar            = GET_WIDGET ("status_bar");
    duplicate             = GET_WIDGET ("duplicate_menuitem");
    eject                 = GET_WIDGET ("eject");
  
    setup_genre_entry (genre_entry);
  
    track_store = gtk_list_store_new (COLUMN_TOTAL, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);
diff -c sound-juicer.bak/src/sj-play.c sound-juicer/src/sj-play.c
*** sound-juicer.bak/src/sj-play.c	2010-04-17 20:00:38.000000000 +0200
--- sound-juicer/src/sj-play.c	2010-04-18 15:28:11.000000000 +0200
***************
*** 31,37 ****
  #include "sj-play.h"
  
  static GstElement *pipeline = NULL;
! static guint id = 0, button_change_id = 0;
  static gint seek_to_track = -1, current_track = -1;
  static gboolean seeking = FALSE, internal_update = FALSE;
  static guint64 slen = GST_CLOCK_TIME_NONE;
--- 31,37 ----
  #include "sj-play.h"
  
  static GstElement *pipeline = NULL;
! static guint id = 0;
  static gint seek_to_track = -1, current_track = -1;
  static gboolean seeking = FALSE, internal_update = FALSE;
  static guint64 slen = GST_CLOCK_TIME_NONE;
***************
*** 40,46 ****
  
  static GtkTreeIter current_iter;
  
! static GtkWidget *play_button, *next_menuitem, *prev_menuitem, *reread_menuitem, *seek_scale, *volume_button, *statusbar,  *track_listview;
  
  /**
   * Select track number.
--- 40,48 ----
  
  static GtkTreeIter current_iter;
  
! static GtkWidget *play_button, *prev_button, *next_button, *seek_scale, *volume_button, *statusbar,  *track_listview;
! static GtkWidget *next_menuitem, *prev_menuitem, *reread_menuitem;
! static GtkWidget *play_image, *pause_image;
  
  /**
   * Select track number.
***************
*** 87,95 ****
  play (void)
  {
    gst_element_set_state (pipeline, GST_STATE_PLAYING);
!   
!   gtk_widget_set_sensitive (next_menuitem, TRUE);
    gtk_widget_set_sensitive (prev_menuitem, TRUE);
  }
  
  /**
--- 89,99 ----
  play (void)
  {
    gst_element_set_state (pipeline, GST_STATE_PLAYING);
!  
!   gtk_widget_set_sensitive (prev_button, TRUE);
    gtk_widget_set_sensitive (prev_menuitem, TRUE);
+   gtk_widget_set_sensitive (next_button, TRUE);
+   gtk_widget_set_sensitive (next_menuitem, TRUE);
  }
  
  /**
***************
*** 111,124 ****
      gst_element_set_state (pipeline, GST_STATE_NULL);
  
    /* TODO: this should be centralised into the state change logic really */
!   gtk_widget_set_sensitive (next_menuitem, FALSE);
    gtk_widget_set_sensitive (prev_menuitem, FALSE);
    gtk_widget_set_sensitive (reread_menuitem, TRUE);
-   gtk_widget_hide (seek_scale);
-   gtk_widget_hide (volume_button);
    sj_main_set_title (NULL);
    gtk_statusbar_push (GTK_STATUSBAR (statusbar), 0, "");
!   gtk_button_set_label (GTK_BUTTON (play_button), GTK_STOCK_MEDIA_PLAY);
    slen = GST_CLOCK_TIME_NONE;
  
    if (current_track != -1 &&
--- 115,128 ----
      gst_element_set_state (pipeline, GST_STATE_NULL);
  
    /* TODO: this should be centralised into the state change logic really */
!   gtk_widget_set_sensitive (prev_button, FALSE);
    gtk_widget_set_sensitive (prev_menuitem, FALSE);
+   gtk_widget_set_sensitive (next_button, FALSE);
+   gtk_widget_set_sensitive (next_menuitem, FALSE);
    gtk_widget_set_sensitive (reread_menuitem, TRUE);
    sj_main_set_title (NULL);
    gtk_statusbar_push (GTK_STATUSBAR (statusbar), 0, "");
!   gtk_button_set_image (GTK_BUTTON (play_button), play_image);
    slen = GST_CLOCK_TIME_NONE;
  
    if (current_track != -1 &&
***************
*** 255,273 ****
    return TRUE;
  }
  
- static gboolean
- cb_change_button (gpointer data)
- {
-   button_change_id = 0;
- 
-   /* TODO: find out why GTK+ needs this to work (see #364371) */
-   gtk_button_set_label (GTK_BUTTON (data), _("Play"));
-   gtk_button_set_label (GTK_BUTTON (data), GTK_STOCK_MEDIA_PLAY);
- 
-   /* once */
-   return FALSE;
- }
- 
  static void
  cb_state (GstBus *bus, GstMessage *message, gpointer user_data)
  {
--- 259,264 ----
***************
*** 285,292 ****
  
    if (transition == GST_STATE_CHANGE_READY_TO_PAUSED) {
      char *title;
-     gtk_widget_show (seek_scale);
-     gtk_widget_show (volume_button);
      gtk_list_store_set (track_store, &current_iter,
          COLUMN_STATE, STATE_PLAYING, -1);
      gtk_tree_model_get (GTK_TREE_MODEL (track_store),
--- 276,281 ----
***************
*** 294,301 ****
      sj_main_set_title (title);
      g_free (title);
    } else if (transition == GST_STATE_CHANGE_PAUSED_TO_READY) {
-     gtk_widget_hide (seek_scale);
-     gtk_widget_hide (volume_button);
      gtk_statusbar_pop (GTK_STATUSBAR (statusbar), 0);
      slen = GST_CLOCK_TIME_NONE;
      gtk_list_store_set (track_store, &current_iter,
--- 283,288 ----
***************
*** 305,329 ****
      current_track = -1;
    } else if (transition == GST_STATE_CHANGE_PAUSED_TO_PLAYING) {
      /* TODO: find out why GTK+ needs this to work (see #364371) */
!     gtk_button_set_label (GTK_BUTTON (play_button), _("Pause"));
!     gtk_button_set_label (GTK_BUTTON (play_button), GTK_STOCK_MEDIA_PAUSE);
      if (id)
        g_source_remove (id);
      id = g_timeout_add (100, (GSourceFunc) cb_set_time, NULL);
-     if (button_change_id) {
-       g_source_remove (button_change_id);
-       button_change_id = 0;
-     }
    } else if (transition == GST_STATE_CHANGE_PLAYING_TO_PAUSED) {
      if (id) {
        g_source_remove (id);
        id = 0;
      }
-     /* otherwise button flickers on track-switch */
-     if (button_change_id)
-       g_source_remove (button_change_id);
-     button_change_id =
-         g_timeout_add (500, (GSourceFunc) cb_change_button, play_button);
    }
  }
  
--- 292,307 ----
      current_track = -1;
    } else if (transition == GST_STATE_CHANGE_PAUSED_TO_PLAYING) {
      /* TODO: find out why GTK+ needs this to work (see #364371) */
!     gtk_button_set_image (GTK_BUTTON (play_button), pause_image);
      if (id)
        g_source_remove (id);
      id = g_timeout_add (100, (GSourceFunc) cb_set_time, NULL);
    } else if (transition == GST_STATE_CHANGE_PLAYING_TO_PAUSED) {
+ 		gtk_button_set_image (GTK_BUTTON (play_button), play_image);
      if (id) {
        g_source_remove (id);
        id = 0;
      }
    }
  }
  
***************
*** 639,647 ****
  void
  stop_ui_hack (void)
  {
!   gtk_button_set_label (GTK_BUTTON (play_button), GTK_STOCK_MEDIA_PLAY);
!   gtk_widget_hide (seek_scale);
!   gtk_widget_hide (volume_button);
    gtk_statusbar_pop (GTK_STATUSBAR (statusbar), 0);
    slen = GST_CLOCK_TIME_NONE;
    if (gtk_list_store_iter_is_valid (track_store, &current_iter))
--- 617,623 ----
  void
  stop_ui_hack (void)
  {
!   gtk_button_set_image (GTK_BUTTON (play_button), play_image);
    gtk_statusbar_pop (GTK_STATUSBAR (statusbar), 0);
    slen = GST_CLOCK_TIME_NONE;
    if (gtk_list_store_iter_is_valid (track_store, &current_iter))
***************
*** 657,668 ****
  void
  sj_play_init (void)
  {
!   play_button     = GET_WIDGET ("play_button");
!   next_menuitem   = GET_WIDGET ("next_track_menuitem");
    prev_menuitem   = GET_WIDGET ("previous_track_menuitem");
    reread_menuitem = GET_WIDGET ("re-read");
    seek_scale      = GET_WIDGET ("seek_scale");
    volume_button   = GET_WIDGET ("volume_button");
    statusbar       = GET_WIDGET ("status_bar");
    track_listview  = GET_WIDGET ("track_listview");
  }
--- 633,648 ----
  void
  sj_play_init (void)
  {
!   play_button     = GET_WIDGET ("play_pause_button");
!   prev_button     = GET_WIDGET ("previous_button");
    prev_menuitem   = GET_WIDGET ("previous_track_menuitem");
+   next_button     = GET_WIDGET ("next_button");
+   next_menuitem   = GET_WIDGET ("next_track_menuitem");
    reread_menuitem = GET_WIDGET ("re-read");
    seek_scale      = GET_WIDGET ("seek_scale");
    volume_button   = GET_WIDGET ("volume_button");
    statusbar       = GET_WIDGET ("status_bar");
    track_listview  = GET_WIDGET ("track_listview");
+ 	play_image      = GET_WIDGET ("play_image");
+ 	pause_image     = GET_WIDGET ("pause_image");
  }
