[sound-juicer] Migrate from libglade to GtkBuilder.



commit ccfb82908eb6d09b7dd9abbf9d4cdd2b0372e382
Author: Tadej Borovšak <tadeboro gmail com>
Date:   Fri Jan 29 14:03:18 2010 +0100

    Migrate from libglade to GtkBuilder.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=578046

 README                                       |    2 +-
 configure.in                                 |    4 +-
 data/Makefile.am                             |    2 +-
 data/sound-juicer.gladep                     |    8 -
 data/{sound-juicer.glade => sound-juicer.ui} |  743 ++++++++++++++------------
 po/POTFILES.in                               |    2 +-
 src/sj-about.c                               |    2 +-
 src/sj-about.h                               |    2 +-
 src/sj-extracting.c                          |   32 +-
 src/sj-main.c                                |  114 ++--
 src/sj-main.h                                |   24 +-
 src/sj-play.c                                |   34 +-
 src/sj-play.h                                |   22 +-
 src/sj-prefs.c                               |   49 ++-
 src/sj-prefs.h                               |    6 +-
 src/sound-juicer.h                           |    6 +-
 16 files changed, 548 insertions(+), 504 deletions(-)
---
diff --git a/README b/README
index 88bfa7a..eea13ff 100644
--- a/README
+++ b/README
@@ -7,7 +7,7 @@ Licensed under the GPL, version 2 or greater.
 This is Sound Juicer, a CD ripping tool using GTK+ and GStreamer.
 
 Requirements:
-* GNOME 2.14 Platform (libgnomeui, gconf, libglade, libnautilus-burn)
+* GNOME 2.26 Platform (gconf, libbrasero-media, gnome-media-profiles)
 * GStreamer 0.10 and above
 
 Do the usual configure/make/make install malarky, and run "sound-juicer" in
diff --git a/configure.in b/configure.in
index 7067037..f1d3b90 100644
--- a/configure.in
+++ b/configure.in
@@ -45,7 +45,7 @@ AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
 # Find libbrasero-media
-PKG_CHECK_MODULES(BURN, libbrasero-media >= 0.9.1)
+PKG_CHECK_MODULES(BURN, libbrasero-media >= 2.26)
 AC_SUBST(BURN_CFLAGS)
 AC_SUBST(BURN_LIBS)
 
@@ -56,7 +56,7 @@ LIBS="$LIBS $BURN_LIBS"
 # LIBS="$oldlibs"
 
 # Find the UI libraries
-PKG_CHECK_MODULES(UI, gtk+-2.0 >= 2.14  libglade-2.0  gconf-2.0 gio-2.0 gmodule-export-2.0 dbus-glib-1 libcanberra-gtk)
+PKG_CHECK_MODULES(UI, gtk+-2.0 >= 2.16 gconf-2.0 gio-2.0 gmodule-export-2.0 dbus-glib-1 libcanberra-gtk)
 AC_SUBST(UI_CFLAGS)
 AC_SUBST(UI_LIBS)
 
diff --git a/data/Makefile.am b/data/Makefile.am
index 6866809..9eca25c 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,5 +1,5 @@
 privatedatadir = $(pkgdatadir)
-dist_privatedata_DATA = sound-juicer.glade
+dist_privatedata_DATA = sound-juicer.ui
 
 desktopdir = $(datadir)/applications
 desktop_in_files = sound-juicer.desktop.in.in
diff --git a/data/sound-juicer.glade b/data/sound-juicer.ui
similarity index 70%
rename from data/sound-juicer.glade
rename to data/sound-juicer.ui
index c549c5b..fa42bc0 100644
--- a/data/sound-juicer.glade
+++ b/data/sound-juicer.ui
@@ -1,276 +1,252 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <widget class="GtkWindow" id="main_window">
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="main_window">
     <property name="width_request">500</property>
     <property name="height_request">420</property>
     <property name="title" translatable="yes">Sound Juicer</property>
     <signal name="destroy" handler="on_destroy_signal"/>
     <signal name="delete_event" handler="on_delete_event"/>
     <child>
-      <widget class="GtkVBox" id="vbox1">
+      <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <child>
-          <widget class="GtkMenuBar" id="menubar1">
+          <object class="GtkMenuBar" id="menubar1">
             <property name="visible">True</property>
             <child>
-              <widget class="GtkMenuItem" id="menuitem1">
+              <object class="GtkMenuItem" id="menuitem1">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_Disc</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="menuitem1_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="menuitem1_menu">
                     <child>
-                      <widget class="GtkImageMenuItem" id="play_menuitem">
+                      <object class="GtkImageMenuItem" id="play_menuitem">
+                        <property name="label">_Play / Pause</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Play / Pause</property>
                         <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="on_play_activate"/>
-                        <accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image105">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-media-play</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="next_track_menuitem">
+                      <object class="GtkImageMenuItem" id="next_track_menuitem">
+                        <property name="label">_Next Track</property>
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Skip to the next track</property>
-                        <property name="label" translatable="yes">_Next Track</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"/>
-                        <accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image107">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-media-next</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="previous_track_menuitem">
+                      <object class="GtkImageMenuItem" id="previous_track_menuitem">
+                        <property name="label">Pre_vious Track</property>
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Skip to the previous track</property>
-                        <property name="label" translatable="yes">Pre_vious Track</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"/>
-                        <accelerator key="B" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image106">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-media-previous</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="eject">
+                      <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"/>
-                        <accelerator key="J" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="submit">
+                      <object class="GtkMenuItem" id="submit">
                         <property name="visible">True</property>
                         <property name="sensitive">False</property>
                         <property name="label" translatable="yes">_Submit Track Names...</property>
                         <property name="use_underline">True</property>
+                        <accelerator key="S" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="on_submit_activate"/>
-                        <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+                      <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
                         <property name="visible">True</property>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="extract_menuitem">
-                        <property name="visible">True</property>
+                      <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"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="re-read">
+                      <object class="GtkImageMenuItem" id="re-read">
+                        <property name="label">_Re-read Disc</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Re-read Disc</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"/>
-                        <accelerator key="R" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image108">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-refresh</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="duplicate_menuitem">
+                      <object class="GtkMenuItem" id="duplicate_menuitem">
                         <property name="visible">True</property>
                         <property name="sensitive">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="label" translatable="yes">_Duplicate Disc</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="on_duplicate_activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator2">
+                      <object class="GtkSeparatorMenuItem" id="separator2">
                         <property name="visible">True</property>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="quit">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="quit">
                         <property name="label">gtk-quit</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_quit_activate"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkMenuItem" id="menuitem2">
+              <object class="GtkMenuItem" id="menuitem2">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_Edit</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="menuitem2_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="menuitem2_menu">
                     <child>
-                      <widget class="GtkMenuItem" id="select_all">
+                      <object class="GtkMenuItem" id="select_all">
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">_Select All</property>
                         <property name="use_underline">True</property>
+                        <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="on_select_all_activate"/>
-                        <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="deselect_all">
+                      <object class="GtkMenuItem" id="deselect_all">
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">_Deselect All</property>
                         <property name="use_underline">True</property>
+                        <accelerator key="A" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="on_deselect_all_activate"/>
-                        <accelerator key="A" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator1">
+                      <object class="GtkSeparatorMenuItem" id="separator1">
                         <property name="visible">True</property>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="edit_preferences">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="edit_preferences">
                         <property name="label">gtk-preferences</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_edit_preferences_cb"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkMenuItem" id="menuitem4">
+              <object class="GtkMenuItem" id="menuitem4">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_Help</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="menuitem4_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="menuitem4_menu">
                     <child>
-                      <widget class="GtkImageMenuItem" id="contents">
+                      <object class="GtkImageMenuItem" id="contents">
+                        <property name="label">_Contents</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Contents</property>
                         <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="F1" signal="activate"/>
                         <signal name="activate" handler="on_contents_activate"/>
-                        <accelerator key="F1" modifiers="" signal="activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image109">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-help</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="about">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="about">
                         <property name="label">gtk-about</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_about_activate"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
+            <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkEventBox" id="message_area_eventbox">
+          <object class="GtkEventBox" id="message_area_eventbox">
             <property name="visible">True</property>
             <child>
               <placeholder/>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkVBox" id="vbox2">
+          <object class="GtkVBox" id="vbox2">
             <property name="visible">True</property>
             <property name="border_width">8</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">8</property>
             <child>
-              <widget class="GtkTable" id="table1">
+              <object class="GtkTable" id="table1">
                 <property name="visible">True</property>
                 <property name="n_rows">4</property>
                 <property name="n_columns">2</property>
                 <property name="column_spacing">12</property>
                 <property name="row_spacing">6</property>
                 <child>
-                  <widget class="GtkHBox" id="hbox1">
+                  <object class="GtkHBox" id="hbox1">
                     <property name="visible">True</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="spacing">12</property>
                     <child>
-                      <widget class="GtkEntry" id="genre_entry">
+                      <object class="GtkEntry" id="genre_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <signal name="changed" handler="on_genre_edit_changed"/>
-                      </widget>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label4">
+                      <object class="GtkLabel" id="label4">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="xalign">0</property>
@@ -279,32 +255,32 @@
                         <property name="use_underline">True</property>
                         <property name="mnemonic_widget">year_entry</property>
                         <accessibility>
-                          <atkrelation target="year_entry" type="label-for"/>
+                          <relation type="label-for" target="year_entry"/>
                         </accessibility>
-                      </widget>
+                      </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkEntry" id="year_entry">
+                      <object class="GtkEntry" id="year_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="max_length">4</property>
                         <property name="width_chars">4</property>
                         <accessibility>
-                          <atkrelation target="label4" type="labelled-by"/>
+                          <relation type="labelled-by" target="label4"/>
                         </accessibility>
                         <signal name="changed" handler="on_year_edit_changed"/>
-                      </widget>
+                      </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label6">
+                      <object class="GtkLabel" id="label6">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="xalign">0</property>
@@ -313,30 +289,30 @@
                         <property name="use_underline">True</property>
                         <property name="mnemonic_widget">year_entry</property>
                         <accessibility>
-                          <atkrelation target="disc_number_entry" type="label-for"/>
+                          <relation type="label-for" target="disc_number_entry"/>
                         </accessibility>
-                      </widget>
+                      </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="position">3</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkEntry" id="disc_number_entry">
+                      <object class="GtkEntry" id="disc_number_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="width_chars">2</property>
                         <accessibility>
-                          <atkrelation target="label6" type="labelled-by"/>
+                          <relation type="labelled-by" target="label6"/>
                         </accessibility>
                         <signal name="changed" handler="on_disc_number_edit_changed"/>
-                      </widget>
+                      </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="position">4</property>
                       </packing>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
@@ -345,25 +321,25 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label1">
+                  <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;_Title:&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                     <property name="use_underline">True</property>
                     <property name="mnemonic_widget">title_entry</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="x_options">GTK_FILL</property>
                     <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="title_entry">
+                  <object class="GtkEntry" id="title_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <signal name="changed" handler="on_title_edit_changed" after="yes"/>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
@@ -371,14 +347,14 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label2">
+                  <object class="GtkLabel" id="label2">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;_Artist:&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                     <property name="use_underline">True</property>
                     <property name="mnemonic_widget">artist_entry</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
@@ -387,11 +363,11 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="artist_entry">
+                  <object class="GtkEntry" id="artist_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <signal name="changed" handler="on_artist_edit_changed" after="yes"/>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
@@ -401,14 +377,14 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label31">
+                  <object class="GtkLabel" id="label31">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;_Genre:&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                     <property name="use_underline">True</property>
                     <property name="mnemonic_widget">genre_entry</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="top_attach">2</property>
                     <property name="bottom_attach">3</property>
@@ -417,15 +393,15 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label3">
+                  <object class="GtkLabel" id="label3">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Duration:&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                     <accessibility>
-                      <atkrelation target="duration_label" type="label-for"/>
+                      <relation type="label-for" target="duration_label"/>
                     </accessibility>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="top_attach">3</property>
                     <property name="bottom_attach">4</property>
@@ -434,16 +410,16 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="duration_label">
+                  <object class="GtkLabel" id="duration_label">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="xalign">0</property>
                     <property name="ypad">3</property>
                     <property name="selectable">True</property>
                     <accessibility>
-                      <atkrelation target="label3" type="labelled-by"/>
+                      <relation type="labelled-by" target="label3"/>
                     </accessibility>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
@@ -453,346 +429,375 @@
                     <property name="y_options"></property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow1">
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
                 <child>
-                  <widget class="GtkTreeView" id="track_listview">
+                  <object class="GtkTreeView" id="track_listview">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="has_focus">True</property>
                     <property name="rules_hint">True</property>
-                    <accessibility>
-                      <atkproperty name="AtkObject::accessible_name" translatable="yes">Tracks</atkproperty>
-                    </accessibility>
-                    <signal name="row_activated" handler="on_tracklist_row_activate"/>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="track_listview-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Tracks</property>
+                      </object>
+                    </child>
                     <signal name="cursor_changed" handler="on_tracklist_row_selected"/>
-                  </widget>
+                    <signal name="row_activated" handler="on_tracklist_row_activate"/>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkHBox" id="hbox10">
+              <object class="GtkHBox" id="hbox10">
                 <property name="visible">True</property>
                 <property name="spacing">6</property>
                 <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox1">
+                  <object class="GtkHButtonBox" id="hbuttonbox1">
                     <property name="visible">True</property>
                     <property name="spacing">6</property>
-                    <property name="layout_style">GTK_BUTTONBOX_END</property>
+                    <property name="layout_style">end</property>
                     <child>
-                      <widget class="GtkButton" id="play_button">
+                      <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="label">gtk-media-play</property>
+                        <property name="receives_default">False</property>
                         <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
                         <signal name="clicked" handler="on_play_activate"/>
-                      </widget>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
                     <child>
-                      <widget class="GtkButton" id="extract_button">
+                      <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="label">sj-stock-extract</property>
+                        <property name="receives_default">False</property>
                         <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
                         <signal name="clicked" handler="on_extract_activate"/>
-                      </widget>
+                      </object>
                       <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkHScale" id="seek_scale">
+                  <object class="GtkHScale" id="seek_scale">
                     <property name="can_focus">True</property>
-                    <property name="adjustment">0 0 1 0.0099999997764800008 0.10000000149 0</property>
                     <property name="digits">0</property>
                     <property name="draw_value">False</property>
-                    <accessibility>
-                      <atkproperty name="AtkObject::accessible_name" translatable="yes">Track Progress</atkproperty>
-                    </accessibility>
-                    <signal name="value_changed" handler="on_seek_moved"/>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="seek_scale-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Track Progress</property>
+                      </object>
+                    </child>
                     <signal name="button_press_event" handler="on_seek_press"/>
+                    <signal name="value_changed" handler="on_seek_moved"/>
                     <signal name="button_release_event" handler="on_seek_release"/>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="Custom" id="volume_button">
+                  <object class="GtkVolumeButton" id="volume_button">
                     <property name="visible">True</property>
-                    <property name="creation_function">gtk_volume_button_new</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="relief">none</property>
+                    <property name="focus_on_click">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="icons">audio-volume-muted
+audio-volume-high
+audio-volume-low
+audio-volume-medium</property>
                     <signal name="value_changed" handler="on_volume_changed"/>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="pack_type">GTK_PACK_END</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="pack_type">GTK_PACK_END</property>
+                <property name="pack_type">end</property>
                 <property name="position">2</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="position">2</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkHBox" id="hbox13">
+          <object class="GtkHBox" id="hbox13">
             <property name="height_request">22</property>
             <property name="visible">True</property>
             <child>
-              <widget class="GtkAlignment" id="alignment1">
+              <object class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
                 <property name="top_padding">2</property>
                 <property name="bottom_padding">2</property>
                 <child>
-                  <widget class="GtkProgressBar" id="progress_bar">
+                  <object class="GtkProgressBar" id="progress_bar">
                     <property name="pulse_step">0.10000000149</property>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkStatusbar" id="status_bar">
+              <object class="GtkStatusbar" id="status_bar">
                 <property name="visible">True</property>
-              </widget>
+              </object>
               <packing>
                 <property name="position">1</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
             <property name="position">3</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-  <widget class="GtkDialog" id="multiple_dialog">
+  </object>
+  <object class="GtkDialog" id="multiple_dialog">
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Multiple Albums Found</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="type_hint">dialog</property>
     <property name="has_separator">False</property>
     <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox2">
+      <object class="GtkVBox" id="dialog-vbox2">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child>
-          <widget class="GtkVBox" id="vbox4">
+          <object class="GtkVBox" id="vbox4">
             <property name="visible">True</property>
             <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">6</property>
             <child>
-              <widget class="GtkLabel" id="label10">
+              <object class="GtkLabel" id="label10">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">This CD could be more than one album. Please select which album it is below and press &lt;i&gt;Continue&lt;/i&gt;.</property>
                 <property name="use_markup">True</property>
                 <property name="wrap">True</property>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow2">
+              <object class="GtkScrolledWindow" id="scrolledwindow2">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
                 <child>
-                  <widget class="GtkTreeView" id="albums_listview">
+                  <object class="GtkTreeView" id="albums_listview">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="position">1</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="position">1</property>
           </packing>
         </child>
         <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area2">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
-              <widget class="GtkButton" id="ok_button">
+              <object class="GtkButton" id="ok_button">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="has_default">True</property>
-                <property name="response_id">-5</property>
+                <property name="receives_default">False</property>
                 <child>
-                  <widget class="GtkAlignment" id="alignment2">
+                  <object class="GtkAlignment" id="alignment2">
                     <property name="visible">True</property>
                     <property name="xscale">0</property>
                     <property name="yscale">0</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox2">
+                      <object class="GtkHBox" id="hbox2">
                         <property name="visible">True</property>
                         <property name="spacing">2</property>
                         <child>
-                          <widget class="GtkImage" id="image16">
+                          <object class="GtkImage" id="image16">
                             <property name="visible">True</property>
                             <property name="stock">gtk-go-forward</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label11">
+                          <object class="GtkLabel" id="label11">
                             <property name="visible">True</property>
                             <property name="label" translatable="yes">_Continue</property>
                             <property name="use_underline">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-  <widget class="GtkDialog" id="prefs_dialog">
+    <action-widgets>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="prefs_dialog">
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Preferences</property>
     <property name="resizable">False</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="type_hint">dialog</property>
     <property name="has_separator">False</property>
     <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox4">
+      <object class="GtkVBox" id="dialog-vbox4">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child>
-          <widget class="GtkVBox" id="vbox11">
+          <object class="GtkVBox" id="vbox11">
             <property name="visible">True</property>
             <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">18</property>
             <child>
-              <widget class="GtkVBox" id="frame_device">
+              <object class="GtkVBox" id="frame_device">
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <widget class="GtkLabel" id="label32">
+                  <object class="GtkLabel" id="label32">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Device&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkAlignment" id="alignment5">
+                  <object class="GtkAlignment" id="alignment5">
                     <property name="visible">True</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkTable" id="table7">
+                      <object class="GtkTable" id="table7">
                         <property name="visible">True</property>
                         <property name="n_rows">3</property>
                         <property name="n_columns">2</property>
                         <property name="column_spacing">12</property>
                         <property name="row_spacing">6</property>
                         <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="cd_label">
+                          <object class="GtkLabel" id="cd_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">CD _drive:</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">cd_option</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"></property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="Custom" id="cd_option">
+                          <object class="BraseroDriveSelection" id="cd_option">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="creation_function">brasero_drive_selection_new</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="y_options">GTK_FILL</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="check_eject">
+                          <object class="GtkCheckButton" id="check_eject">
+                            <property name="label" translatable="yes">_Eject after extracting tracks</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">_Eject after extracting tracks</property>
+                            <property name="receives_default">False</property>
                             <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
                             <property name="draw_indicator">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -803,14 +808,14 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="check_open">
+                          <object class="GtkCheckButton" id="check_open">
+                            <property name="label" translatable="yes">_Open music folder when finished</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">_Open music folder when finished</property>
+                            <property name="receives_default">False</property>
                             <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
                             <property name="draw_indicator">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -820,134 +825,143 @@
                             <property name="y_options"></property>
                           </packing>
                         </child>
-                      </widget>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVBox" id="frame_folder">
+              <object class="GtkVBox" id="frame_folder">
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <widget class="GtkLabel" id="label33">
+                  <object class="GtkLabel" id="label33">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Music Folder&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkAlignment" id="alignment10">
+                  <object class="GtkAlignment" id="alignment10">
                     <property name="visible">True</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox9">
+                      <object class="GtkHBox" id="hbox9">
                         <property name="visible">True</property>
                         <property name="spacing">12</property>
                         <child>
-                          <widget class="GtkLabel" id="path_label">
+                          <object class="GtkLabel" id="path_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">_Folder:</property>
                             <property name="use_underline">True</property>
                             <property name="wrap">True</property>
                             <property name="mnemonic_widget">path_chooser</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkFileChooserButton" id="path_chooser">
+                          <object class="GtkFileChooserButton" id="path_chooser">
                             <property name="visible">True</property>
                             <property name="local_only">False</property>
-                            <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
+                            <property name="action">select-folder</property>
                             <property name="title" translatable="yes">Select A Folder</property>
                             <signal name="current_folder_changed" handler="prefs_base_folder_changed"/>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVBox" id="frame_names">
+              <object class="GtkVBox" id="frame_names">
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <widget class="GtkLabel" id="label34">
+                  <object class="GtkLabel" id="label34">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Track Names&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkAlignment" id="alignment11">
+                  <object class="GtkAlignment" id="alignment11">
                     <property name="visible">True</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkTable" id="table6">
+                      <object class="GtkTable" id="table6">
                         <property name="visible">True</property>
                         <property name="n_rows">4</property>
                         <property name="n_columns">2</property>
                         <property name="column_spacing">12</property>
                         <property name="row_spacing">6</property>
                         <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="folder_label">
+                          <object class="GtkLabel" id="folder_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">Folder hie_rarchy:</property>
                             <property name="use_underline">True</property>
                             <property name="mnemonic_widget">path_option</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"></property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="file_label">
+                          <object class="GtkLabel" id="file_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">File _name:</property>
                             <property name="use_underline">True</property>
                             <property name="mnemonic_widget">file_option</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="top_attach">1</property>
                             <property name="bottom_attach">2</property>
@@ -956,10 +970,15 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkComboBox" id="path_option">
+                          <object class="GtkComboBox" id="path_option">
                             <property name="visible">True</property>
-                            <property name="items" translatable="yes"></property>
-                          </widget>
+                            <child>
+                              <object class="GtkCellRendererText" id="cellrenderertext2"/>
+                              <attributes>
+                                <attribute name="text">0</attribute>
+                              </attributes>
+                            </child>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -967,10 +986,15 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkComboBox" id="file_option">
+                          <object class="GtkComboBox" id="file_option">
                             <property name="visible">True</property>
-                            <property name="items" translatable="yes"></property>
-                          </widget>
+                            <child>
+                              <object class="GtkCellRendererText" id="cellrenderertext1"/>
+                              <attributes>
+                                <attribute name="text">0</attribute>
+                              </attributes>
+                            </child>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -980,13 +1004,13 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="path_example_label">
+                          <object class="GtkLabel" id="path_example_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="use_markup">True</property>
-                            <property name="ellipsize">PANGO_ELLIPSIZE_END</property>
+                            <property name="ellipsize">end</property>
                             <property name="single_line_mode">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -997,14 +1021,14 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="check_strip">
+                          <object class="GtkCheckButton" id="check_strip">
+                            <property name="label" translatable="yes">_Strip special characters</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">_Strip special characters</property>
+                            <property name="receives_default">False</property>
                             <property name="use_underline">True</property>
-                            <property name="response_id">0</property>
                             <property name="draw_indicator">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
@@ -1014,173 +1038,190 @@
                             <property name="y_options"></property>
                           </packing>
                         </child>
-                      </widget>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="position">2</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVBox" id="frame_format">
+              <object class="GtkVBox" id="frame_format">
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <widget class="GtkLabel" id="label35">
+                  <object class="GtkLabel" id="label35">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Format&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkAlignment" id="alignment8">
+                  <object class="GtkAlignment" id="alignment8">
                     <property name="visible">True</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox8">
+                      <object class="GtkHBox" id="hbox8">
                         <property name="visible">True</property>
                         <property name="spacing">12</property>
                         <child>
-                          <widget class="GtkLabel" id="profile_label">
+                          <object class="GtkLabel" id="profile_label">
                             <property name="visible">True</property>
                             <property name="xalign">0</property>
                             <property name="label" translatable="yes">O_utput Format:</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">audio_profile</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox14">
+                          <object class="GtkHBox" id="hack_hbox">
                             <property name="visible">True</property>
                             <property name="spacing">6</property>
                             <child>
-                              <widget class="Custom" id="audio_profile">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="creation_function">gm_audio_profile_choose_new</property>
-                                <signal name="changed" handler="prefs_profile_changed"/>
-                              </widget>
+                              <placeholder/>
                             </child>
                             <child>
-                              <widget class="GtkButton" id="prefs_edit_profile">
+                              <object class="GtkButton" id="prefs_edit_profile">
                                 <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
+                                <property name="receives_default">False</property>
                                 <signal name="clicked" handler="prefs_edit_profile_clicked"/>
                                 <child>
-                                  <widget class="GtkAlignment" id="alignment9">
+                                  <object class="GtkAlignment" id="alignment9">
                                     <property name="visible">True</property>
                                     <property name="xscale">0</property>
                                     <property name="yscale">0</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox11">
+                                      <object class="GtkHBox" id="hbox11">
                                         <property name="visible">True</property>
                                         <property name="spacing">2</property>
                                         <child>
-                                          <widget class="GtkImage" id="image71">
+                                          <object class="GtkImage" id="image71">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-edit</property>
-                                          </widget>
+                                          </object>
                                           <packing>
                                             <property name="expand">False</property>
                                             <property name="fill">False</property>
+                                            <property name="position">0</property>
                                           </packing>
                                         </child>
                                         <child>
-                                          <widget class="GtkLabel" id="label38">
+                                          <object class="GtkLabel" id="label38">
                                             <property name="visible">True</property>
                                             <property name="label" translatable="yes">Edit _Profiles...</property>
                                             <property name="use_underline">True</property>
-                                          </widget>
+                                          </object>
                                           <packing>
                                             <property name="expand">False</property>
                                             <property name="fill">False</property>
                                             <property name="position">1</property>
                                           </packing>
                                         </child>
-                                      </widget>
+                                      </object>
                                     </child>
-                                  </widget>
+                                  </object>
                                 </child>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
+                                <property name="pack_type">end</property>
                                 <property name="position">1</property>
                               </packing>
                             </child>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="position">3</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area4">
+          <object class="GtkHButtonBox" id="dialog-action_area4">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
-              <widget class="GtkButton" id="prefs_help">
+              <object class="GtkButton" id="prefs_help">
+                <property name="label">gtk-help</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-11</property>
-              </widget>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
-              <widget class="GtkButton" id="prefs_close">
+              <object class="GtkButton" id="prefs_close">
+                <property name="label">gtk-close</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-close</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-7</property>
-              </widget>
+              </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">1</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-</glade-interface>
+    <action-widgets>
+      <action-widget response="-11">prefs_help</action-widget>
+      <action-widget response="-7">prefs_close</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 151d544..04ff616 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,7 +2,7 @@
 # Please keep this file sorted alphabetically.
 [encoding: UTF-8]
 data/sound-juicer.desktop.in.in
-data/sound-juicer.glade
+[type: gettext/glade]data/sound-juicer.ui
 data/sound-juicer.schemas.in
 libjuicer/sj-error.c
 libjuicer/sj-extractor.c
diff --git a/src/sj-about.c b/src/sj-about.c
index 8936423..7cf4f5e 100644
--- a/src/sj-about.c
+++ b/src/sj-about.c
@@ -26,7 +26,7 @@
 #include <string.h>
 #include "sj-about.h"
 
-void on_about_activate (void)
+G_MODULE_EXPORT void on_about_activate (void)
 {
   char *license_trans;
     
diff --git a/src/sj-about.h b/src/sj-about.h
index 88638f5..67ff1e0 100644
--- a/src/sj-about.h
+++ b/src/sj-about.h
@@ -25,6 +25,6 @@
 
 #include <gtk/gtk.h>
 
-void on_about_activate (void);
+G_MODULE_EXPORT void on_about_activate (void);
 
 #endif /* SJ_ABOUT_H */
diff --git a/src/sj-extracting.c b/src/sj-extracting.c
index b7118b1..7cf09dd 100644
--- a/src/sj-extracting.c
+++ b/src/sj-extracting.c
@@ -730,7 +730,7 @@ on_progress_cancel_clicked (GtkWidget *button, gpointer user_data)
 /**
  * Entry point from the interface.
  */
-void
+G_MODULE_EXPORT void
 on_extract_activate (GtkWidget *button, gpointer user_data)
 {
   char *reason;
@@ -765,22 +765,22 @@ on_extract_activate (GtkWidget *button, gpointer user_data)
     g_signal_connect (extractor, "completion", G_CALLBACK (on_completion_cb), (gpointer)&overwrite_mode);
     g_signal_connect (extractor, "error", G_CALLBACK (on_error_cb), NULL);
 
-    extract_button = glade_xml_get_widget (glade, "extract_button");
-    play_button = glade_xml_get_widget (glade, "play_button");
-    title_entry = glade_xml_get_widget (glade, "title_entry");
-    artist_entry = glade_xml_get_widget (glade, "artist_entry");
-    genre_entry = glade_xml_get_widget (glade, "genre_entry");
-    year_entry = glade_xml_get_widget (glade, "year_entry");
-    disc_number_entry = glade_xml_get_widget (glade, "disc_number_entry");
-    track_listview = glade_xml_get_widget (glade, "track_listview");
-    progress_bar = glade_xml_get_widget (glade, "progress_bar");
-    status_bar = glade_xml_get_widget (glade, "status_bar");
+    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");
+    year_entry        = GET_WIDGET ("year_entry");
+    disc_number_entry = GET_WIDGET ("disc_number_entry");
+    track_listview    = GET_WIDGET ("track_listview");
+    progress_bar      = GET_WIDGET ("progress_bar");
+    status_bar        = GET_WIDGET ("status_bar");
   
-    play_menuitem = glade_xml_get_widget (glade, "play_menuitem");
-    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");
+    play_menuitem         = GET_WIDGET ("play_menuitem");
+    extract_menuitem      = GET_WIDGET ("extract_menuitem");
+    reread_menuitem       = GET_WIDGET ("re-read");
+    select_all_menuitem   = GET_WIDGET ("select_all");
+    deselect_all_menuitem = GET_WIDGET ("deselect_all");
     
     initialised = TRUE;
   }
diff --git a/src/sj-main.c b/src/sj-main.c
index d739fc4..2bf83ff 100644
--- a/src/sj-main.c
+++ b/src/sj-main.c
@@ -30,7 +30,6 @@
 #include <gdk/gdkkeysyms.h>
 #include <gio/gio.h>
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <gconf/gconf-client.h>
 #include <brasero-medium-selection.h>
 #include <brasero-volume.h>
@@ -58,12 +57,12 @@ static void update_ui_for_album (AlbumDetails *album);
 static void set_duplication (gboolean enable);
 
 /* Prototypes for the signal blocking/unblocking in update_ui_for_album */
-void on_title_edit_changed(GtkEditable *widget, gpointer user_data);
-void on_artist_edit_changed(GtkEditable *widget, gpointer user_data);
-void on_year_edit_changed(GtkEditable *widget, gpointer user_data);
-void on_disc_number_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_title_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_artist_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_year_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_disc_number_edit_changed(GtkEditable *widget, gpointer user_data);
 
-GladeXML *glade;
+GtkBuilder *builder;
 
 SjMetadataGetter *metadata;
 SjExtractor *extractor;
@@ -104,8 +103,8 @@ static guint debug_flags = 0;
 
 #define DEFAULT_PARANOIA 4
 #define RAISE_WINDOW "raise-window"
-#define SOURCE_GLADE "../data/sound-juicer.glade"
-#define INSTALLED_GLADE DATADIR"/sound-juicer/sound-juicer.glade"
+#define SOURCE_BUILDER "../data/sound-juicer.ui"
+#define INSTALLED_BUILDER DATADIR"/sound-juicer/sound-juicer.ui"
 
 void
 sj_stock_init (void)
@@ -192,7 +191,7 @@ static void error_on_start (GError *error)
 /**
  * Clicked Quit
  */
-void on_quit_activate (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_quit_activate (GtkMenuItem *item, gpointer user_data)
 {
   if (on_delete_event (NULL, NULL, NULL) == FALSE) {
     gtk_main_quit ();
@@ -202,7 +201,7 @@ void on_quit_activate (GtkMenuItem *item, gpointer user_data)
 /**
  * Destroy signal Callback
  */
-void on_destroy_signal (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_destroy_signal (GtkMenuItem *item, gpointer user_data)
 {
    gtk_main_quit ();
 }
@@ -210,7 +209,7 @@ void on_destroy_signal (GtkMenuItem *item, gpointer user_data)
 /**
  * Clicked Eject
  */
-void on_eject_activate (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_eject_activate (GtkMenuItem *item, gpointer user_data)
 {
   /* first make sure we're not playing */
   stop_playback ();
@@ -218,7 +217,7 @@ void on_eject_activate (GtkMenuItem *item, gpointer user_data)
   brasero_drive_eject (drive, FALSE, NULL);
 }
 
-gboolean on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
+G_MODULE_EXPORT gboolean on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
   if (extracting) {
     GtkWidget *dialog;
@@ -251,7 +250,7 @@ static gboolean select_all_foreach_cb (GtkTreeModel *model,
   return FALSE;
 }
 
-void on_select_all_activate (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_select_all_activate (GtkMenuItem *item, gpointer user_data)
 {
   gtk_tree_model_foreach (GTK_TREE_MODEL (track_store), select_all_foreach_cb, GINT_TO_POINTER (TRUE));
   gtk_widget_set_sensitive (extract_button, TRUE);
@@ -261,7 +260,7 @@ void on_select_all_activate (GtkMenuItem *item, gpointer user_data)
   no_of_tracks_selected = total_no_of_tracks;
 }
 
-void on_deselect_all_activate (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_deselect_all_activate (GtkMenuItem *item, gpointer user_data)
 {
   gtk_tree_model_foreach (GTK_TREE_MODEL (track_store), select_all_foreach_cb, GINT_TO_POINTER (FALSE));
   gtk_widget_set_sensitive (extract_button, FALSE);
@@ -614,11 +613,11 @@ AlbumDetails* multiple_album_dialog(GList *albums)
     GtkTreeViewColumn *column;
     GtkCellRenderer *text_renderer = gtk_cell_renderer_text_new ();
 
-    dialog = glade_xml_get_widget (glade, "multiple_dialog");
+    dialog = GET_WIDGET ("multiple_dialog");
     g_assert (dialog != NULL);
     gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (main_window));
-    albums_listview = glade_xml_get_widget (glade, "albums_listview");
-    ok_button = glade_xml_get_widget (glade, "ok_button");
+    albums_listview = GET_WIDGET ("albums_listview");
+    ok_button       = GET_WIDGET ("ok_button");
 
     g_signal_connect (albums_listview, "row-activated", G_CALLBACK (album_row_activated), dialog);
 
@@ -784,7 +783,7 @@ static void audio_volume_changed_cb (GConfClient *client, guint cnxn_id, GConfEn
 {
   g_assert (strcmp (entry->key, GCONF_AUDIO_VOLUME) == 0);
 
-  GtkWidget *volb = glade_xml_get_widget (glade, "volume_button");
+  GtkWidget *volb = GET_WIDGET ("volume_button");
   if (entry->value == NULL) {
     gtk_scale_button_set_value (GTK_SCALE_BUTTON (volb), 1.0);
   } else {
@@ -1218,7 +1217,7 @@ static void http_proxy_port_changed_cb (GConfClient *client, guint cnxn_id, GCon
 /**
  * Clicked on Reread in the UI (button/menu)
  */
-void on_reread_activate (GtkWidget *button, gpointer user_data)
+G_MODULE_EXPORT void on_reread_activate (GtkWidget *button, gpointer user_data)
 {
   reread_cd (FALSE);
 }
@@ -1226,7 +1225,7 @@ void on_reread_activate (GtkWidget *button, gpointer user_data)
 /**
  * Clicked the Submit menu item in the UI
  */
-void on_submit_activate (GtkWidget *menuitem, gpointer user_data)
+G_MODULE_EXPORT void on_submit_activate (GtkWidget *menuitem, gpointer user_data)
 {
   GError *error = NULL;
 
@@ -1386,7 +1385,7 @@ remove_musicbrainz_ids (AlbumDetails *album)
 #undef UNSET
 }
 
-void on_title_edit_changed(GtkEditable *widget, gpointer user_data) {
+G_MODULE_EXPORT void on_title_edit_changed(GtkEditable *widget, gpointer user_data) {
   g_return_if_fail (current_album != NULL);
 
   remove_musicbrainz_ids (current_album);
@@ -1397,7 +1396,7 @@ void on_title_edit_changed(GtkEditable *widget, gpointer user_data) {
   current_album->title = gtk_editable_get_chars (widget, 0, -1); /* get all the characters */
 }
 
-void on_artist_edit_changed(GtkEditable *widget, gpointer user_data) {
+G_MODULE_EXPORT void on_artist_edit_changed(GtkEditable *widget, gpointer user_data) {
   GtkTreeIter iter;
   TrackDetails *track;
   gchar *current_track_artist, *former_album_artist = NULL;
@@ -1444,7 +1443,7 @@ void on_artist_edit_changed(GtkEditable *widget, gpointer user_data) {
   g_free (former_album_artist);
 }
 
-void on_genre_edit_changed(GtkEditable *widget, gpointer user_data) {
+G_MODULE_EXPORT void on_genre_edit_changed(GtkEditable *widget, gpointer user_data) {
   g_return_if_fail (current_album != NULL);
   if (current_album->genre) {
     g_free (current_album->genre);
@@ -1452,7 +1451,7 @@ void on_genre_edit_changed(GtkEditable *widget, gpointer user_data) {
   current_album->genre = gtk_editable_get_chars (widget, 0, -1); /* get all the characters */
 }
 
-void on_year_edit_changed(GtkEditable *widget, gpointer user_data) {
+G_MODULE_EXPORT void on_year_edit_changed(GtkEditable *widget, gpointer user_data) {
   const gchar* yearstr;
   int year;
 
@@ -1469,7 +1468,7 @@ void on_year_edit_changed(GtkEditable *widget, gpointer user_data) {
   }
 }
 
-void on_disc_number_edit_changed(GtkEditable *widget, gpointer user_data) {
+G_MODULE_EXPORT void on_disc_number_edit_changed(GtkEditable *widget, gpointer user_data) {
     const gchar* discstr;
     int disc_number;
 
@@ -1479,7 +1478,7 @@ void on_disc_number_edit_changed(GtkEditable *widget, gpointer user_data) {
     current_album->disc_number = disc_number;
 }
 
-void on_contents_activate(GtkWidget *button, gpointer user_data) {
+G_MODULE_EXPORT void on_contents_activate(GtkWidget *button, gpointer user_data) {
   GError *error = NULL;
 
   gtk_show_uri (NULL, "ghelp:sound-juicer", GDK_CURRENT_TIME, &error);
@@ -1581,7 +1580,7 @@ is_cd_duplication_available()
 /**
  * Clicked on duplicate in the UI (button/menu)
  */
-void on_duplicate_activate (GtkWidget *button, gpointer user_data)
+G_MODULE_EXPORT void on_duplicate_activate (GtkWidget *button, gpointer user_data)
 {
   GError *error = NULL;
   const gchar* device;
@@ -1702,43 +1701,42 @@ int main (int argc, char **argv)
   /* init gnome-media-profiles */
   gnome_media_profiles_init (gconf_client);
 
-  glade_init ();
-  if (g_file_test (SOURCE_GLADE, G_FILE_TEST_EXISTS) != FALSE) {
-    glade = glade_xml_new (SOURCE_GLADE, NULL, NULL);
+  builder = gtk_builder_new ();
+  if (g_file_test (SOURCE_BUILDER, G_FILE_TEST_EXISTS) != FALSE) {
+    gtk_builder_add_from_file (builder, SOURCE_BUILDER, &error);
   } else {
-    glade = glade_xml_new (INSTALLED_GLADE, NULL, NULL);
+    gtk_builder_add_from_file (builder, INSTALLED_BUILDER, &error);
   }
-  if (glade == NULL) {
-    error = g_error_new (g_quark_from_static_string ("sound-juicer"),
-                         1, /* this is made up */
-                         _("The interface file for Sound Juicer could not be read."));
+
+  if (error != NULL) {
     error_on_start (error);
     g_error_free (error);
     exit (1);
   }
-  glade_xml_signal_autoconnect (glade);
-
-  main_window = glade_xml_get_widget (glade, "main_window");
-  message_area_eventbox = glade_xml_get_widget (glade, "message_area_eventbox");
-  select_all_menuitem = glade_xml_get_widget (glade, "select_all");
-  deselect_all_menuitem = glade_xml_get_widget (glade, "deselect_all");
-  submit_menuitem = glade_xml_get_widget (glade, "submit");
-  title_entry = glade_xml_get_widget (glade, "title_entry");
-  artist_entry = glade_xml_get_widget (glade, "artist_entry");
-  duration_label = glade_xml_get_widget (glade, "duration_label");
-  genre_entry = glade_xml_get_widget (glade, "genre_entry");
-  year_entry = glade_xml_get_widget (glade, "year_entry");
-  disc_number_entry = glade_xml_get_widget (glade, "disc_number_entry");
-  track_listview = glade_xml_get_widget (glade, "track_listview");
-  extract_button = glade_xml_get_widget (glade, "extract_button");
-  extract_menuitem = glade_xml_get_widget (glade, "extract_menuitem");
-  play_button = glade_xml_get_widget (glade, "play_button");
-  play_menuitem = glade_xml_get_widget (glade, "play_menuitem");
-  next_menuitem = glade_xml_get_widget (glade, "next_track_menuitem");
-  prev_menuitem = glade_xml_get_widget (glade, "previous_track_menuitem");
-  status_bar = glade_xml_get_widget (glade, "status_bar");
-  duplicate = glade_xml_get_widget (glade, "duplicate_menuitem");
-  eject = glade_xml_get_widget (glade, "eject");
+
+  gtk_builder_connect_signals (builder, NULL);
+
+  main_window           = GET_WIDGET ("main_window");
+  message_area_eventbox = GET_WIDGET ("message_area_eventbox");
+  select_all_menuitem   = GET_WIDGET ("select_all");
+  deselect_all_menuitem = GET_WIDGET ("deselect_all");
+  submit_menuitem       = GET_WIDGET ("submit");
+  title_entry           = GET_WIDGET ("title_entry");
+  artist_entry          = GET_WIDGET ("artist_entry");
+  duration_label        = GET_WIDGET ("duration_label");
+  genre_entry           = GET_WIDGET ("genre_entry");
+  year_entry            = GET_WIDGET ("year_entry");
+  disc_number_entry     = GET_WIDGET ("disc_number_entry");
+  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;
diff --git a/src/sj-main.h b/src/sj-main.h
index 70a95dd..9f3e971 100644
--- a/src/sj-main.h
+++ b/src/sj-main.h
@@ -26,23 +26,23 @@
 
 void sj_stock_init (void);
 
-void on_quit_activate (GtkMenuItem *item, gpointer user_data);
-void on_destroy_activate (GtkMenuItem *item, gpointer user_data);
-void on_eject_activate (GtkMenuItem *item, gpointer user_data);
-void on_select_all_activate (GtkMenuItem *item, gpointer user_data);
-void on_deselect_all_activate (GtkMenuItem *item, gpointer user_data);
-void on_destroy_signal (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_quit_activate (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_destroy_activate (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_eject_activate (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_select_all_activate (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_deselect_all_activate (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void on_destroy_signal (GtkMenuItem *item, gpointer user_data);
 
 AlbumDetails* multiple_album_dialog (GList* albums);
 
 const char* prefs_get_default_device (void);
 
-void on_reread_activate (GtkWidget *button, gpointer user_data);
-void on_submit_activate (GtkWidget *menuitem, gpointer user_data);
-void on_genre_edit_changed(GtkEditable *widget, gpointer user_data);
-void on_year_edit_changed(GtkEditable *widget, gpointer user_data);
-void on_contents_activate(GtkWidget *button, gpointer user_data);
-void on_duplicate_activate (GtkWidget *button, gpointer user_data);
+G_MODULE_EXPORT void on_reread_activate (GtkWidget *button, gpointer user_data);
+G_MODULE_EXPORT void on_submit_activate (GtkWidget *menuitem, gpointer user_data);
+G_MODULE_EXPORT void on_genre_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_year_edit_changed(GtkEditable *widget, gpointer user_data);
+G_MODULE_EXPORT void on_contents_activate(GtkWidget *button, gpointer user_data);
+G_MODULE_EXPORT void on_duplicate_activate (GtkWidget *button, gpointer user_data);
 
 GtkWidget* sj_make_volume_button (void);
 
diff --git a/src/sj-play.c b/src/sj-play.c
index 9be9af5..25aeba0 100644
--- a/src/sj-play.c
+++ b/src/sj-play.c
@@ -434,7 +434,7 @@ stop_playback (void)
  * Interface entry point.
  */
 
-void
+G_MODULE_EXPORT void
 on_play_activate (GtkWidget *button, gpointer user_data)
 {
   GError *err = NULL;
@@ -470,7 +470,7 @@ on_play_activate (GtkWidget *button, gpointer user_data)
   }
 }
 
-void
+G_MODULE_EXPORT void
 on_tracklist_row_activate (GtkTreeView * treeview, GtkTreePath * path,
     GtkTreeViewColumn * col, gpointer user_data)
 {
@@ -499,13 +499,13 @@ on_tracklist_row_activate (GtkTreeView * treeview, GtkTreePath * path,
   }
 }
 
-void
+G_MODULE_EXPORT void
 on_next_track_activate(GtkWidget *button, gpointer data)
 {
   cb_hop_track (NULL, NULL, NULL);
 }
 
-void
+G_MODULE_EXPORT void
 on_previous_track_activate(GtkWidget *button, gpointer data)
 {
   GtkTreeModel *model;
@@ -557,7 +557,7 @@ set_gst_ui_and_play (void)
   }
 }
 
-void
+G_MODULE_EXPORT void
 on_tracklist_row_selected (GtkTreeView *treeview,
                gpointer user_data)
 {
@@ -578,7 +578,7 @@ on_tracklist_row_selected (GtkTreeView *treeview,
  * Volume.
  */
 
-void
+G_MODULE_EXPORT void
 on_volume_changed (GtkWidget * volb, gdouble value, gpointer data)
 {
   vol = value;
@@ -595,7 +595,7 @@ on_volume_changed (GtkWidget * volb, gdouble value, gpointer data)
  * Seeking.
  */
 
-gboolean
+G_MODULE_EXPORT gboolean
 on_seek_press (GtkWidget * scale, GdkEventButton * event, gpointer user_data)
 {
   seeking = TRUE;
@@ -603,7 +603,7 @@ on_seek_press (GtkWidget * scale, GdkEventButton * event, gpointer user_data)
   return FALSE;
 }
 
-void
+G_MODULE_EXPORT void
 on_seek_moved (GtkWidget * scale, gpointer user_data)
 {
   gdouble val = gtk_range_get_value (GTK_RANGE (scale));
@@ -619,7 +619,7 @@ on_seek_moved (GtkWidget * scale, gpointer user_data)
   g_free (m);
 }
 
-gboolean
+G_MODULE_EXPORT gboolean
 on_seek_release (GtkWidget * scale, GdkEventButton * event, gpointer user_data)
 {
   gdouble val = gtk_range_get_value (GTK_RANGE (scale));
@@ -657,12 +657,12 @@ stop_ui_hack (void)
 void
 sj_play_init (void)
 {
-  play_button = glade_xml_get_widget (glade, "play_button");
-  next_menuitem = glade_xml_get_widget (glade, "next_track_menuitem");
-  prev_menuitem = glade_xml_get_widget (glade, "previous_track_menuitem");
-  reread_menuitem = glade_xml_get_widget (glade, "re-read");
-  seek_scale = glade_xml_get_widget (glade, "seek_scale");
-  volume_button = glade_xml_get_widget (glade, "volume_button");
-  statusbar = glade_xml_get_widget (glade, "status_bar");
-  track_listview = glade_xml_get_widget (glade, "track_listview");
+  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");
 }
diff --git a/src/sj-play.h b/src/sj-play.h
index 28a8059..ce3ddd0 100644
--- a/src/sj-play.h
+++ b/src/sj-play.h
@@ -30,31 +30,31 @@ void sj_play_init (void);
 
 void stop_playback	(void);
 
-void on_tracklist_row_activate (GtkTreeView *treeview, GtkTreePath *path,
+G_MODULE_EXPORT void on_tracklist_row_activate (GtkTreeView *treeview, GtkTreePath *path,
                                 GtkTreeViewColumn *col, gpointer user_data);
 
 void stop_ui_hack (void);
 
-void on_play_activate (GtkWidget *button, gpointer user_data);
+G_MODULE_EXPORT void on_play_activate (GtkWidget *button, gpointer user_data);
 
-void on_next_track_activate(GtkWidget *button, gpointer data);
+G_MODULE_EXPORT void on_next_track_activate(GtkWidget *button, gpointer data);
 
-void on_previous_track_activate(GtkWidget *button, gpointer data);
+G_MODULE_EXPORT void on_previous_track_activate(GtkWidget *button, gpointer data);
 
 
-void on_tracklist_row_selected (GtkTreeView *treeview,
+G_MODULE_EXPORT void on_tracklist_row_selected (GtkTreeView *treeview,
 		                gpointer user_data);
 
-void on_volume_changed (GtkWidget* volb, gdouble value, gpointer data);
+G_MODULE_EXPORT void on_volume_changed (GtkWidget* volb, gdouble value, gpointer data);
 
-gboolean on_seek_press (GtkWidget * scale, 
-			GdkEventButton * event, 
+G_MODULE_EXPORT gboolean on_seek_press (GtkWidget * scale,
+			GdkEventButton * event,
 			gpointer user_data);
 
-void on_seek_moved (GtkWidget * scale, gpointer user_data);
+G_MODULE_EXPORT void on_seek_moved (GtkWidget * scale, gpointer user_data);
 
-gboolean on_seek_release (GtkWidget * scale, 
-			  GdkEventButton * event, 
+G_MODULE_EXPORT gboolean on_seek_release (GtkWidget * scale,
+			  GdkEventButton * event,
 			  gpointer user_data);
 
 #endif /* SJ_PLAY_H_H */
diff --git a/src/sj-prefs.c b/src/sj-prefs.c
index 610ffde..698b4aa 100644
--- a/src/sj-prefs.c
+++ b/src/sj-prefs.c
@@ -24,7 +24,6 @@
 
 #include <string.h>
 #include <gtk/gtk.h>
-#include <glade/glade-xml.h>
 #include <gconf/gconf-client.h>
 #include <profiles/gnome-media-profiles.h>
 #include <brasero-drive-selection.h>
@@ -34,7 +33,7 @@
 #include "sj-extracting.h"
 #include "sj-prefs.h"
 
-extern GladeXML *glade;
+extern GtkBuilder *builder;
 extern GtkWidget *main_window;
 
 static GtkWidget *audio_profile;
@@ -114,7 +113,7 @@ void show_help (GtkWindow *parent)
 /**
  * Changed folder in the Prefs dialog
  */
-void prefs_base_folder_changed (GtkWidget *chooser, gpointer user_data)
+G_MODULE_EXPORT void prefs_base_folder_changed (GtkWidget *chooser, gpointer user_data)
 {
   char *new_uri, *current_uri;
   
@@ -143,7 +142,7 @@ void prefs_path_option_changed (GtkComboBox *combo, gpointer user_data)
   }
 }
 
-void prefs_file_option_changed (GtkComboBox *combo, gpointer user_data)
+G_MODULE_EXPORT void prefs_file_option_changed (GtkComboBox *combo, gpointer user_data)
 {
   gint active;
   const char* pattern;
@@ -160,7 +159,7 @@ void prefs_file_option_changed (GtkComboBox *combo, gpointer user_data)
 /**
  * The Edit Profiles button was pressed.
  */
-void prefs_edit_profile_clicked (GtkButton *button, gpointer user_data)
+G_MODULE_EXPORT void prefs_edit_profile_clicked (GtkButton *button, gpointer user_data)
 {
   GtkWidget *dialog;
   dialog = gm_audio_profiles_edit_new (gconf_client, GTK_WINDOW (main_window));
@@ -403,7 +402,7 @@ on_response (GtkDialog *dialog, gint response, gpointer user_data)
 /**
  * Clicked on Preferences in the UI
  */
-void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data)
+G_MODULE_EXPORT void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data)
 {
   static GtkWidget *prefs_dialog = NULL;
 
@@ -413,9 +412,11 @@ void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data)
     const char *labels[] = { "cd_label", "path_label", "folder_label", "file_label", "profile_label" };
     guint i;
     GtkSizeGroup *group;
+    GtkWidget    *box;
     GConfBridge *bridge = gconf_bridge_get ();
 
-    prefs_dialog = glade_xml_get_widget (glade, "prefs_dialog");
+    prefs_dialog = GET_WIDGET ("prefs_dialog");
+    box          = GET_WIDGET ("hack_hbox");
     g_assert (prefs_dialog != NULL);
     g_object_add_weak_pointer (G_OBJECT (prefs_dialog), (gpointer)&prefs_dialog);
 
@@ -424,7 +425,7 @@ void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data)
     group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
     for (i = 0; i < G_N_ELEMENTS (labels); i++) {
       GtkWidget *widget;
-      widget = glade_xml_get_widget (glade, labels[i]);
+      widget = GET_WIDGET (labels[i]);
       if (widget) {
         gtk_size_group_add_widget (group, widget);
       } else {
@@ -433,17 +434,29 @@ void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data)
     }
     g_object_unref (group);
 
-    cd_option = glade_xml_get_widget (glade, "cd_option");
-    basepath_fcb = glade_xml_get_widget (glade, "path_chooser");
-    sj_add_default_dirs (GTK_FILE_CHOOSER (basepath_fcb));
-    path_option = glade_xml_get_widget (glade, "path_option");
-    file_option = glade_xml_get_widget (glade, "file_option");
-    audio_profile = glade_xml_get_widget (glade, "audio_profile");
-    check_strip = glade_xml_get_widget (glade, "check_strip");
-    check_eject = glade_xml_get_widget (glade, "check_eject");
-    check_open = glade_xml_get_widget (glade, "check_open");
-    path_example_label = glade_xml_get_widget (glade, "path_example_label");
+    cd_option          = GET_WIDGET ("cd_option");
+    basepath_fcb       = GET_WIDGET ("path_chooser");
+    path_option        = GET_WIDGET ("path_option");
+    file_option        = GET_WIDGET ("file_option");
+#if 0
+    /* FIXME: This cannot be currently used, because aufio profile selector
+     * 	      from gnome-media-profiles package is not fully qualified widget.
+     * 	      Once gnome-media package is updated, this widget can be created
+     * 	      using GtkBuilder. */
+    audio_profile      = GET_WIDGET ("audio_profile");
+#else
+    audio_profile = gm_audio_profile_choose_new();
+    g_signal_connect (G_OBJECT (audio_profile), "changed",
+                      G_CALLBACK (prefs_profile_changed), NULL);
+	gtk_box_pack_start (GTK_BOX (box), audio_profile, TRUE, TRUE, 0);
+	gtk_widget_show (audio_profile);
+#endif
+    check_strip        = GET_WIDGET ("check_strip");
+    check_eject        = GET_WIDGET ("check_eject");
+    check_open         = GET_WIDGET ("check_open");
+    path_example_label = GET_WIDGET ("path_example_label");
 
+    sj_add_default_dirs (GTK_FILE_CHOOSER (basepath_fcb));
     populate_pattern_combo (GTK_COMBO_BOX (path_option), path_patterns);
     g_signal_connect (path_option, "changed", G_CALLBACK (prefs_path_option_changed), NULL);
     populate_pattern_combo (GTK_COMBO_BOX (file_option), file_patterns);
diff --git a/src/sj-prefs.h b/src/sj-prefs.h
index 2bfa071..434e6f9 100644
--- a/src/sj-prefs.h
+++ b/src/sj-prefs.h
@@ -29,10 +29,10 @@ gboolean cd_drive_exists (const char *device);
 void show_help (GtkWindow *parent);
 
 void prefs_profile_changed (GtkWidget *widget, gpointer user_data);
-void prefs_base_folder_changed (GtkWidget *chooser, gpointer user_data);
+G_MODULE_EXPORT void prefs_base_folder_changed (GtkWidget *chooser, gpointer user_data);
 void prefs_path_option_changed (GtkComboBox *combo, gpointer user_data);
 void prefs_file_option_changed (GtkComboBox *combo, gpointer user_data);
-void prefs_edit_profile_clicked (GtkButton *button, gpointer user_data);
-void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data);
+G_MODULE_EXPORT void prefs_edit_profile_clicked (GtkButton *button, gpointer user_data);
+G_MODULE_EXPORT void on_edit_preferences_cb (GtkMenuItem *item, gpointer user_data);
 
 #endif /* SJ_PREFS_H */
diff --git a/src/sound-juicer.h b/src/sound-juicer.h
index b45774c..16d2c94 100644
--- a/src/sound-juicer.h
+++ b/src/sound-juicer.h
@@ -30,7 +30,6 @@
 #include <glib/gi18n.h>
 #include <brasero-medium-selection.h>
 #include <gconf/gconf-client.h>
-#include <glade/glade-xml.h>
 #include <gio/gio.h>
 #include <gtk/gtk.h>
 #include "sj-extractor.h"
@@ -46,9 +45,10 @@ extern GConfClient *gconf_client;
 extern GtkWidget *main_window;
 
 /**
- * The Glade UI file
+ * The GtkBuilder UI file
  */
-extern GladeXML *glade;
+extern GtkBuilder *builder;
+#define GET_WIDGET(name) GTK_WIDGET(gtk_builder_get_object(builder, (name)))
 
 /**
  * The extractor GObject being used



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]