=== removed file 'data/popup.glade'
--- data/popup.glade	2006-08-24 09:43:54 +0000
+++ data/popup.glade	1970-01-01 00:00:00 +0000
@@ -1,173 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkMenu" id="totem_right_click_menu">
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_play">
-      <property name="visible">True</property>
-      <property name="tooltip" translatable="yes">Play or pause the movie</property>
-      <property name="label" translatable="yes">Play / Pa_use</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_play_/_pause1_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image7">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-media-play</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_next_chapter">
-      <property name="visible">True</property>
-      <property name="tooltip" translatable="yes">Next chapter or movie</property>
-      <property name="label" translatable="yes">_Next Chapter/Movie</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_next_chapter1_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image1">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-media-next</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_previous_chapter">
-      <property name="visible">True</property>
-      <property name="tooltip" translatable="yes">Previous chapter or movie</property>
-      <property name="label" translatable="yes">_Previous Chapter/Movie</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_previous_chapter1_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image2">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-media-previous</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_skip_forward">
-      <property name="visible">True</property>
-      <property name="sensitive">False</property>
-      <property name="tooltip" translatable="yes">Skip forward</property>
-      <property name="label" translatable="yes">Skip _Forward</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_skip_forward2_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image3">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-media-forward</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_skip_backwards">
-      <property name="visible">True</property>
-      <property name="sensitive">False</property>
-      <property name="tooltip" translatable="yes">Skip backwards</property>
-      <property name="label" translatable="yes">Skip _Backwards</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_skip_backwards2_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image4">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-media-rewind</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_volume_up">
-      <property name="visible">True</property>
-      <property name="tooltip" translatable="yes">Volume up</property>
-      <property name="label" translatable="yes">Volume Up</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_volume_up2_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image5">
-	  <property name="visible">True</property>
-	  <property name="stock">gnome-stock-volume</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="trcm_volume_down">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Volume Down</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_volume_down2_activate" last_modification_time="Fri, 18 Apr 2003 09:56:36 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image6">
-	  <property name="visible">True</property>
-	  <property name="stock">gnome-stock-volume</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkMenuItem" id="trcm_show_controls">
-      <property name="tooltip" translatable="yes">Show controls</property>
-      <property name="label" translatable="yes">Show _Controls</property>
-      <property name="use_underline">True</property>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>

=== added file 'data/totem-ui.xml'
--- data/totem-ui.xml	1970-01-01 00:00:00 +0000
+++ data/totem-ui.xml	2006-08-29 21:12:13 +0000
@@ -0,0 +1,89 @@
+<ui>
+	<menubar name="tmw-menubar">
+		<menu name="movie" action="movie-menu">
+			<menuitem name="open" action="open"/>
+			<menuitem name="open-location" action="open-location"/>
+			<placeholder name="devices-placeholder"/>
+			<separator name="recent-separator"/>
+			<placeholder name="recent-placeholder"/>
+			<separator/>
+			<menuitem name="eject" action="eject"/>
+			<separator/>
+			<menuitem name="play" action="play"/>
+			<separator/>
+			<menuitem name="quit" action="quit"/>
+		</menu>
+		<menu name="edit" action="edit-menu">
+			<menuitem name="take-screenshot" action="take-screenshot"/>
+			<separator/>
+			<menuitem name="repeat-mode" action="repeat-mode"/>
+			<menuitem name="shuffle-mode" action="shuffle-mode"/>
+			<separator/>
+			<menuitem name="preferences" action="preferences"/>
+		</menu>
+		<menu name="view" action="view-menu">
+			<menuitem name="fullscreen" action="fullscreen"/>
+			<menu name="zoom-window" action="zoom-window-menu">
+				<menuitem name="zoom-1-2" action="zoom-1-2"/>
+				<menuitem name="zoom-1-1" action="zoom-1-1"/>
+				<menuitem name="zoom-2-1" action="zoom-2-1"/>
+			</menu>
+			<menuitem name="zoom-in" action="zoom-in"/>
+			<menuitem name="zoom-reset" action="zoom-reset"/>
+			<menuitem name="zoom-out" action="zoom-out"/>
+			<separator/>
+			<menu name="aspect-ratio" action="aspect-ratio-menu">
+				<menuitem name="aspect-ratio-auto" action="aspect-ratio-auto"/>
+				<menuitem name="aspect-ratio-square" action="aspect-ratio-square"/>
+				<menuitem name="aspect-ratio-fbt" action="aspect-ratio-fbt"/>
+				<menuitem name="aspect-ratio-anamorphic" action="aspect-ratio-anamorphic"/>
+				<menuitem name="aspect-ratio-dvb" action="aspect-ratio-dvb"/>
+			</menu>
+			<menuitem name="deinterlace" action="deinterlace"/>
+			<menuitem name="next-angle" action="next-angle"/>
+			<menuitem name="always-on-top" action="always-on-top"/>
+			<menuitem name="show-controls" action="show-controls"/>
+			<menu name="subtitles" action="subtitles-menu">
+				<placeholder name="placeholder"/>
+			</menu>
+			<separator/>
+			<menuitem name="sidebar" action="sidebar"/>			
+		</menu>
+		<menu name="go" action="go-menu">
+			<menuitem name="dvd-root-menu" action="dvd-root-menu"/>
+			<menuitem name="dvd-title-menu" action="dvd-title-menu"/>
+			<menuitem name="dvd-audio-menu" action="dvd-audio-menu"/>
+			<menuitem name="dvd-angle-menu" action="dvd-angle-menu"/>
+			<menuitem name="dvd-chapter-menu" action="dvd-chapter-menu"/>
+			<separator/>
+			<menuitem name="next-chapter" action="next-chapter"/>
+			<menuitem name="previous-chapter" action="previous-chapter"/>
+			<separator/>
+			<menuitem name="skip-to" action="skip-to"/>
+			<menuitem name="skip-forward" action="skip-forward"/>
+			<menuitem name="skip-backwards" action="skip-backwards"/>
+		</menu>
+		<menu name="sound" action="sound-menu">
+			<menu name="languages" action="languages-menu">
+				<placeholder name="placeholder"/>
+			</menu>
+			<menuitem name="volume-up" action="volume-up"/>
+			<menuitem name="volume-down" action="volume-down"/>
+		</menu>
+		<menu name="help" action="help-menu">
+			<menuitem name="contents" action="contents"/>
+			<menuitem name="about" action="about"/>
+		</menu>
+	</menubar>
+
+	<popup name="totem-main-popup">
+		<menuitem name="play" action="play"/>
+		<menuitem name="next-chapter" action="next-chapter"/>
+		<menuitem name="previous-chapter" action="previous-chapter"/>
+		<menuitem name="skip-forward" action="skip-forward"/>
+		<menuitem name="skip-backwards" action="skip-backwards"/>
+		<menuitem name="volume-up" action="volume-up"/>
+		<menuitem name="volume-down" action="volume-down"/>
+		<menuitem name="show-controls" action="show-controls"/>
+	</popup>
+</ui>

=== modified file 'configure.in'
--- configure.in	2006-08-24 09:43:54 +0000
+++ configure.in	2006-08-29 15:41:33 +0000
@@ -485,6 +485,14 @@
 fi
 AM_CONDITIONAL(HAVE_NAUTILUS, test x$HAVE_NAUTILUS = "xyes")
 
+dnl Check for GtkRecent
+PKG_CHECK_MODULES(GTK_RECENT, gtk+-2.0 >= 2.10.0, 
+		  [HAVE_GTK_RECENT=yes], [HAVE_GTK_RECENT=no])
+if test x$HAVE_GTK_RECENT = xyes; then
+   AC_DEFINE(HAVE_GTK_RECENT, 1, [defined if GtkRecent is available])
+fi
+AM_CONDITIONAL(HAVE_GTK_RECENT, test x$HAVE_GTK_RECENT = "xyes")
+
 dnl ****
 dnl LIRC
 dnl ****

=== modified file 'data/Makefile.am'
--- data/Makefile.am	2006-08-24 09:43:54 +0000
+++ data/Makefile.am	2006-08-29 20:33:21 +0000
@@ -18,11 +18,11 @@
 	totem.glade			\
 	playlist.glade			\
 	mozilla-viewer.glade		\
-	popup.glade			\
 	properties.glade		\
 	skip_to.glade			\
 	uri.glade			\
 	screenshot.glade		\
+	totem-ui.xml			\
 	totem_logo.png			\
 	vanity.glade			\
 	vanity.png

=== modified file 'data/totem.glade'
--- data/totem.glade	2006-08-24 09:43:54 +0000
+++ data/totem.glade	2006-08-28 18:39:28 +0000
@@ -1918,907 +1920,13 @@
       <property name="spacing">0</property>
 
       <child>
-	<widget class="GtkMenuBar" id="tmw_menubar">
+	<widget class="GtkVBox" id="tmw_menubar_box">
 	  <property name="visible">True</property>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_movie">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Movie</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_movie">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_open_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">True</property>
-		      <property name="label" translatable="yes">_Open...</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_open1_activate"/>
-		      <accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image177">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-open</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_open_location_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Open a non-local file</property>
-		      <property name="label" translatable="yes">Open _Location...</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_open_location1_activate" last_modification_time="Wed, 12 Mar 2003 17:37:46 GMT"/>
-		      <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_movie_separator_1">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_eject_menu_item">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Eject</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_eject1_activate" last_modification_time="Wed, 09 Apr 2003 18:33:36 GMT"/>
-		      <accelerator key="E" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_recent_separator">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_play_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Play or pause the movie</property>
-		      <property name="label" translatable="yes">Play / Pa_use</property>
-		      <property name="use_underline">True</property>
-		      <accelerator key="P" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image161">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-media-play</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_movie_separator_3">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_quit_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">True</property>
-		      <property name="label" translatable="yes">_Quit</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_quit1_activate"/>
-		      <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image177">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-quit</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_edit">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Edit</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_edit">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_take_screenshot_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Take a screenshot</property>
-		      <property name="label" translatable="yes">Take _Screenshot...</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_take_screenshot1_activate" last_modification_time="Mon, 06 Jan 2003 19:35:01 GMT"/>
-		      <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="tmw_take_screenshot_menu_item_image">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-convert</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_edit_separator">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_repeat_mode_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Set the repeat mode</property>
-		      <property name="label" translatable="yes">_Repeat Mode</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">False</property>
-		      <signal name="activate" handler="on_repeat_mode1_activate" last_modification_time="Fri, 07 Feb 2003 20:43:43 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_shuffle_mode_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Set the shuffle mode</property>
-		      <property name="label" translatable="yes">Shuff_le Mode</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">False</property>
-		      <signal name="activate" handler="on_tmw_shuffle_mode_menu_item_activate" last_modification_time="Thu, 25 Sep 2003 12:08:18 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_edit_separator">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_preferences_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">True</property>
-		      <property name="label" translatable="yes">Prefere_nces</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_preferences1_activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image177">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-preferences</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_view">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_View</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_view">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_fullscreen_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Switch to fullscreen</property>
-		      <property name="label" translatable="yes">_Fullscreen</property>
-		      <property name="use_underline">True</property>
-		      <accelerator key="F" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image163">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-zoom-fit</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="fit_window_to_movie1">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Fit Window to Movie</property>
-		      <property name="use_underline">True</property>
-
-		      <child>
-			<widget class="GtkMenu" id="fit_window_to_movie1_menu">
-
-			  <child>
-			    <widget class="GtkMenuItem" id="tmw_resize_1_2_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Resize to half the video size</property>
-			      <property name="label" translatable="yes">_Resize 1:2</property>
-			      <property name="use_underline">True</property>
-			      <signal name="activate" handler="on_zoom_1_2_activate" last_modification_time="Sat, 24 Aug 2002 12:55:50 GMT"/>
-			      <accelerator key="0" modifiers="0" signal="activate"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkMenuItem" id="tmw_resize_1_1_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Resize to video size</property>
-			      <property name="label" translatable="yes">Resize _1:1</property>
-			      <property name="use_underline">True</property>
-			      <signal name="activate" handler="on_zoom_1_1_activate" last_modification_time="Sat, 24 Aug 2002 12:49:15 GMT"/>
-			      <accelerator key="1" modifiers="0" signal="activate"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkMenuItem" id="tmw_resize_2_1_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Resize to twice the video size</property>
-			      <property name="label" translatable="yes">Resize _2:1</property>
-			      <property name="use_underline">True</property>
-			      <signal name="activate" handler="on_zoom_2_1_activate" last_modification_time="Sat, 24 Aug 2002 12:49:15 GMT"/>
-			      <accelerator key="2" modifiers="0" signal="activate"/>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_zoom_in_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Zoom in</property>
-		      <property name="label" translatable="yes">Zoom In</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_zoom_in1_activate" last_modification_time="Fri, 03 Dec 2004 19:37:56 GMT"/>
-		      <accelerator key="R" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image164">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-zoom-in</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_zoom_reset_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Zoom reset</property>
-		      <property name="label" translatable="yes">Zoom Reset</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_tmw_zoom_reset_menu_item_activate" last_modification_time="Fri, 03 Dec 2004 20:15:06 GMT"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image165">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-zoom-100</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_zoom_out_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Zoom out</property>
-		      <property name="label" translatable="yes">Zoom Out</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_zoom_out1_activate" last_modification_time="Fri, 03 Dec 2004 19:37:56 GMT"/>
-		      <accelerator key="T" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image166">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-zoom-out</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_view_separator_1">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_aspect_ratio_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Set the aspect ratio</property>
-		      <property name="label" translatable="yes">_Aspect Ratio</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_aspect_ratio1_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-
-		      <child>
-			<widget class="GtkMenu" id="tmw_menu_aspect">
-
-			  <child>
-			    <widget class="GtkRadioMenuItem" id="tmw_aspect_ratio_auto_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Sets automatic aspect ratio</property>
-			      <property name="label" translatable="yes">Auto</property>
-			      <property name="use_underline">True</property>
-			      <property name="active">True</property>
-			      <signal name="activate" handler="on_aspect_ratio_auto_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioMenuItem" id="tmw_aspect_ratio_square_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Sets square aspect ratio</property>
-			      <property name="label" translatable="yes">Square</property>
-			      <property name="use_underline">True</property>
-			      <property name="active">False</property>
-			      <property name="group">tmw_aspect_ratio_auto_menu_item</property>
-			      <signal name="activate" handler="on_aspect_ratio_square_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioMenuItem" id="tmw_aspect_ratio_fbt_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Sets 4:3 (TV) aspect ratio</property>
-			      <property name="label" translatable="yes">4:3 (TV)</property>
-			      <property name="use_underline">True</property>
-			      <property name="active">False</property>
-			      <property name="group">tmw_aspect_ratio_auto_menu_item</property>
-			      <signal name="activate" handler="on_aspect_ratio_fbt_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioMenuItem" id="tmw_aspect_ratio_anamorphic_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Sets 16:9 (Anamorphic) aspect ratio</property>
-			      <property name="label" translatable="yes">16:9 (Widescreen)</property>
-			      <property name="use_underline">True</property>
-			      <property name="active">False</property>
-			      <property name="group">tmw_aspect_ratio_auto_menu_item</property>
-			      <signal name="activate" handler="on_aspect_anamorphic_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-			    </widget>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioMenuItem" id="tmw_aspect_ratio_dvb_menu_item">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Sets 2.11:1 (DVB) aspect ratio</property>
-			      <property name="label" translatable="yes">2.11:1 (DVB)</property>
-			      <property name="use_underline">True</property>
-			      <property name="active">False</property>
-			      <property name="group">tmw_aspect_ratio_auto_menu_item</property>
-			      <signal name="activate" handler="on_aspect_ratio_dvb_activate" last_modification_time="Sun, 07 Mar 2004 22:28:14 GMT"/>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_deinterlace_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Deinterlace</property>
-		      <property name="label" translatable="yes">_Deinterlace</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">False</property>
-		      <signal name="activate" handler="on_deinterlace1_activate" last_modification_time="Wed, 05 Mar 2003 20:46:23 GMT"/>
-		      <accelerator key="I" modifiers="0" signal="activate"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_next_angle_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Switch angles</property>
-		      <property name="label" translatable="yes">Switch An_gles</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_next_angle_activate" last_modification_time="Sat, 24 Aug 2002 12:49:15 GMT"/>
-		      <accelerator key="G" modifiers="0" signal="activate"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_always_on_top_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Always on top</property>
-		      <property name="label" translatable="yes">Always on _Top</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">False</property>
-		      <signal name="activate" handler="on_always_on_top1_activate" last_modification_time="Wed, 05 Mar 2003 20:46:23 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_show_controls_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Show controls</property>
-		      <property name="label" translatable="yes">Show _Controls</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">True</property>
-		      <signal name="activate" handler="on_show_controls1_activate" last_modification_time="Fri, 18 Apr 2003 10:50:36 GMT"/>
-		      <accelerator key="H" modifiers="0" signal="activate"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_subtitles_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Subtitles</property>
-		      <property name="label" translatable="yes">S_ubtitles</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_subtitles1_activate" last_modification_time="Mon, 24 Mar 2003 19:52:36 GMT"/>
-
-		      <child>
-			<widget class="GtkMenu" id="tmw_menu_subtitles">
-
-			  <child>
-			    <widget class="GtkMenuItem" id="tmw_no_subtitles_selection_available">
-			      <property name="visible">True</property>
-			      <property name="sensitive">False</property>
-			      <property name="label" translatable="yes">No subtitles selection available</property>
-			      <property name="use_underline">True</property>
-			      <signal name="activate" handler="on_no_subtitles_selection_available1_activate" last_modification_time="Mon, 24 Mar 2003 19:52:36 GMT"/>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_view_separator_2">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkCheckMenuItem" id="tmw_sidebar_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Show or hide the sidebar</property>
-		      <property name="label" translatable="yes">_Sidebar</property>
-		      <property name="use_underline">True</property>
-		      <property name="active">True</property>
-		      <signal name="activate" handler="on_show_sidebar1_activate" last_modification_time="Fri, 14 Jun 2002 22:36:54 GMT"/>
-		      <accelerator key="F9" modifiers="0" signal="activate"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_dvd">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Go</property>
-	      <property name="use_underline">True</property>
-	      <signal name="activate" handler="on_dvd1_menu_activate" last_modification_time="Sun, 01 Dec 2002 05:35:38 GMT"/>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_dvd">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_dvd_root_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Go to the DVD menu</property>
-		      <property name="label" translatable="yes">_DVD Menu</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_dvd_root_menu1_activate" last_modification_time="Sun, 01 Dec 2002 06:37:16 GMT"/>
-		      <accelerator key="m" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image168">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-index</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_dvd_title_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Go to the title menu</property>
-		      <property name="label" translatable="yes">_Title Menu</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_dvd_title_menu1_activate" last_modification_time="Sun, 01 Dec 2002 06:46:59 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_dvd_audio_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Go to the audio menu</property>
-		      <property name="label" translatable="yes">A_udio Menu</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_dvd_audio_menu1_activate" last_modification_time="Sun, 01 Dec 2002 06:47:23 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_dvd_angle_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Go to the angle menu</property>
-		      <property name="label" translatable="yes">_Angle Menu</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_dvd_angle_menu1_activate" last_modification_time="Mon, 02 Dec 2002 16:46:53 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_dvd_chapter_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Go to the chapter menu</property>
-		      <property name="label" translatable="yes">_Chapter Menu</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_dvd_chapter_menu1_activate" last_modification_time="Sun, 01 Dec 2002 06:48:14 GMT"/>
-		      <accelerator key="c" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image169">
-			  <property name="visible">True</property>
-			  <property name="stock">gnome-stock-text-numbered-list</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_dvd_separator_1">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_next_chapter_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Next chapter or movie</property>
-		      <property name="label" translatable="yes">_Next Chapter/Movie</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_next_chapter1_activate" last_modification_time="Sun, 01 Dec 2002 05:37:38 GMT"/>
-		      <accelerator key="n" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image170">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-media-next</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_previous_chapter_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Previous chapter or movie</property>
-		      <property name="label" translatable="yes">_Previous Chapter/Movie</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_previous_chapter1_activate" last_modification_time="Sun, 01 Dec 2002 05:38:03 GMT"/>
-		      <accelerator key="b" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image171">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-media-previous</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="tmw_menu_dvd_separator_2">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_skip_to_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Skip to a specific time</property>
-		      <property name="label" translatable="yes">_Skip to...</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_skip_to1_activate" last_modification_time="Mon, 20 Jan 2003 13:27:41 GMT"/>
-		      <accelerator key="S" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image172">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-jump-to</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_skip_forward_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Skip forward</property>
-		      <property name="label" translatable="yes">Skip _Forward</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_skip_forward1_activate" last_modification_time="Sun, 09 Jun 2002 02:56:32 GMT"/>
-		      <accelerator key="Right" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image173">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-media-forward</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_skip_backwards_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Skip backwards</property>
-		      <property name="label" translatable="yes">Skip _Backwards</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_skip_backwards1_activate" last_modification_time="Sun, 09 Jun 2002 03:00:00 GMT"/>
-		      <accelerator key="Left" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image174">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-media-rewind</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_sound">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Sound</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_sound">
-
-		  <child>
-		    <widget class="GtkMenuItem" id="tmw_languages_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Languages</property>
-		      <property name="label" translatable="yes">_Languages</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_languages1_activate" last_modification_time="Mon, 24 Mar 2003 19:45:07 GMT"/>
-
-		      <child>
-			<widget class="GtkMenu" id="tmw_menu_languages">
-
-			  <child>
-			    <widget class="GtkMenuItem" id="tmw_no_language_selection_available">
-			      <property name="visible">True</property>
-			      <property name="sensitive">False</property>
-			      <property name="label" translatable="yes">No Language Selection Available</property>
-			      <property name="use_underline">True</property>
-			      <signal name="activate" handler="on_no_langage_selection_available1_activate" last_modification_time="Mon, 24 Mar 2003 19:50:56 GMT"/>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_volume_up_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Volume up</property>
-		      <property name="label" translatable="yes">Volume _Up</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_volume_up1_activate" last_modification_time="Fri, 09 Aug 2002 22:45:55 GMT"/>
-		      <accelerator key="Up" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image175">
-			  <property name="visible">True</property>
-			  <property name="stock">gnome-stock-volume</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_volume_down_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="tooltip" translatable="yes">Volume down</property>
-		      <property name="label" translatable="yes">Volume _Down</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_volume_down1_activate" last_modification_time="Fri, 09 Aug 2002 22:45:55 GMT"/>
-		      <accelerator key="Down" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image176">
-			  <property name="visible">True</property>
-			  <property name="stock">gnome-stock-volume</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="tmw_menu_item_help">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Help</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="tmw_menu_help">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_contents_menu_item">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Help contents</property>
-		      <property name="label" translatable="yes">_Contents</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_contents1_activate" last_modification_time="Sun, 09 Nov 2003 00:49:26 GMT"/>
-		      <accelerator key="F1" modifiers="0" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image177">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-help</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="tmw_about_menu_item">
-		      <property name="visible">True</property>
-		      <property name="sensitive">True</property>
-		      <property name="label" translatable="yes">_About</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_about1_activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image177">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-about</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		</widget>
-	      </child>
-	    </widget>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <placeholder/>
 	  </child>
 	</widget>
 	<packing>

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2006-08-24 09:43:54 +0000
+++ src/Makefile.am	2006-08-29 15:41:33 +0000
@@ -72,7 +72,6 @@
 
 
 totem_SOURCES = 					\
-	$(EGG_RECENT_FILES)				\
 	totem.c totem.h					\
 	totem-remote.c totem-remote.h			\
 	totem-preferences.c totem-preferences.h		\
@@ -98,6 +97,13 @@
 	totem-subtitle-encoding.h	\
 	$(BACON_VOLUME)
 
+if HAVE_GTK_RECENT
+totem_SOURCES +=
+else
+totem_SOURCES +=					\
+	$(EGG_RECENT_FILES)
+endif
+
 totem_LDADD = \
 	plparse/libtotem-plparser.la backend/libbaconvideowidget.la	\
 	libbaconpropertiespage.la libbaconmessageconnection.la		\

=== modified file 'src/totem-menu.c'
--- src/totem-menu.c	2006-08-24 09:43:54 +0000
+++ src/totem-menu.c	2006-08-30 15:35:06 +0000
@@ -31,7 +31,9 @@
 #include "totem.h"
 #include "totem-private.h"
 #include "bacon-video-widget.h"
+#ifndef HAVE_GTK_RECENT
 #include "egg-recent-view.h"
+#endif
 
 /* ISO-639 helpers */
 static GHashTable *lang_table;
@@ -77,14 +79,14 @@
 			/* skip if empty */
 			if (**attr_values)
 			{
-				g_return_if_fail (strlen (*attr_values) == 3);
+				g_return_if_fail (strlen (*attr_values) == 3 || !strcmp (*attr_values, "qaa-qtz"));
 				ccode_longB = *attr_values;
 			}
 		} else if (g_str_equal (*attr_names, "iso_639_2T_code")) {
 			/* skip if empty */
 			if (**attr_values)
 			{
-				g_return_if_fail (strlen (*attr_values) == 3);
+				g_return_if_fail (strlen (*attr_values) == 3 || !strcmp (*attr_values, "qaa-qtz"));
 				ccode_longT = *attr_values;
 			}
 		} else if (g_str_equal (*attr_names, "name")) {
@@ -196,111 +198,90 @@
 }
 
 static void
-on_sub_activate (GtkButton *button, Totem *totem)
+subtitles_changed_callback (GtkRadioAction *action, GtkRadioAction *current,
+		Totem *totem)
 {
 	int rank;
-	gboolean is_set;
-
-	rank = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "rank"));
-	is_set = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (button));
-
-	if (is_set != FALSE)
-		bacon_video_widget_set_subtitle (totem->bvw, rank);
+
+	rank = gtk_radio_action_get_current_value (current);
+
+	bacon_video_widget_set_subtitle (totem->bvw, rank);
 }
 
+
 static void
-on_lang_activate (GtkButton *button, Totem *totem)
+languages_changed_callback (GtkRadioAction *action, GtkRadioAction *current,
+		Totem *totem)
 {
 	int rank;
-	gboolean is_set;
-
-	rank = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "rank"));
-	is_set = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (button));
-
-	if (is_set != FALSE)
-		bacon_video_widget_set_language (totem->bvw, rank);
+
+	rank = gtk_radio_action_get_current_value (current);
+
+	bacon_video_widget_set_language (totem->bvw, rank);
 }
 
-static GSList*
-add_item_to_menu (Totem *totem, GtkWidget *menu, const char *lang,
-		int current_lang, int selection, gboolean is_lang,
-		GSList *group)
+static GtkAction *
+add_lang_action (Totem *totem, GtkActionGroup *action_group, guint ui_id,
+		const char *path, const char *prefix, const char *lang, 
+		int lang_id, GSList **group)
 {
-	GtkWidget *item;
 	const char *full_lang;
+	char *name;
+	GtkAction *action;
 
 	full_lang = totem_lang_get_full (lang);
-	item = gtk_radio_menu_item_new_with_label (group,
-			full_lang ? full_lang : lang);
-
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
-			current_lang == selection ? TRUE : FALSE);
-	gtk_widget_show (item);
-	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-
-	g_object_set_data (G_OBJECT (item), "rank",
-			GINT_TO_POINTER (selection));
-
-	if (is_lang == FALSE)
-		g_signal_connect (G_OBJECT (item), "activate",
-				G_CALLBACK (on_sub_activate), totem);
-	else
-		g_signal_connect (G_OBJECT (item), "activate",
-				G_CALLBACK (on_lang_activate), totem);
-
-	return gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item));
+
+	name = g_strdup_printf ("%s-%d", prefix, lang_id);
+
+	action = g_object_new (GTK_TYPE_RADIO_ACTION,
+			"name", name,
+			"label", full_lang ? full_lang : lang,
+			"value", lang_id,
+			NULL);
+
+	gtk_radio_action_set_group (GTK_RADIO_ACTION (action),
+			*group);
+
+	*group = gtk_radio_action_get_group (GTK_RADIO_ACTION (action));
+
+	gtk_action_group_add_action (action_group, action);
+	g_object_unref (action);
+
+	gtk_ui_manager_add_ui (totem->ui_manager, ui_id,
+			path, name, name, GTK_UI_MANAGER_MENUITEM, FALSE);
+	g_free (name);
+
+	return action;
 }
 
-static GtkWidget*
-create_submenu (Totem *totem, GList *list, int current, gboolean is_lang)
+static GtkAction *
+create_lang_actions (Totem *totem, GtkActionGroup *action_group, guint ui_id,
+		const char *path, const char *prefix, GList *list,
+		gboolean is_lang)
 {
-	GtkWidget *menu = NULL;
+	GtkAction *action = NULL;
 	int i;
 	GList *l;
 	GSList *group = NULL;
 
-	if (list == NULL)
-	{
-		menu = gtk_menu_new ();
-		if (is_lang == FALSE)
-		{
-			group = add_item_to_menu (totem, menu, _("None"),
-					current, -2, is_lang, group);
-		}
-
-		group = add_item_to_menu (totem, menu, _("Auto"),
-				current, -1, is_lang, group);
-
-		gtk_widget_show (menu);
-
-		return menu;
+	if (is_lang == FALSE) {
+		add_lang_action (totem, action_group, ui_id, path, prefix,
+				_("None"), -2, &group);
 	}
 
+	action = add_lang_action (totem, action_group, ui_id, path, prefix,
+			_("Auto"), -1, &group);
+
 	i = 0;
 
 	for (l = list; l != NULL; l = l->next)
 	{
-		if (menu == NULL)
-		{
-			menu = gtk_menu_new ();
-			if (is_lang == FALSE)
-			{
-				group = add_item_to_menu (totem, menu,
-						_("None"), current, -2,
-						is_lang, group);
-			}
-			group = add_item_to_menu (totem, menu, _("Auto"),
-					current, -1, is_lang, group);
-		}
-
-		group = add_item_to_menu (totem, menu, l->data, current,
-				i, is_lang, group);
+		add_lang_action (totem, action_group, ui_id, path, prefix,
+				l->data, i, &group);
 		i++;
 	}
 
-	gtk_widget_show (menu);
-
-	return menu;
+	return action;
 }
 
 static gboolean
@@ -334,34 +315,37 @@
 static void
 totem_languages_update (Totem *totem, GList *list)
 {
-	GtkWidget *item, *submenu, *old_submenu;
-	GtkWidget *lang_menu;
+	GtkAction *action;
 	int current;
 
-	lang_menu = NULL;
+	/* Remove old UI */
+	gtk_ui_manager_remove_ui (totem->ui_manager, totem->languages_ui_id);
+	gtk_ui_manager_ensure_update (totem->ui_manager);
+
+	/* Create new ActionGroup */
+	if (totem->languages_action_group) {
+		gtk_ui_manager_remove_action_group (totem->ui_manager,
+				totem->languages_action_group);
+		g_object_unref (totem->languages_action_group);
+	}
+	totem->languages_action_group = gtk_action_group_new ("languages-action-group");
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+			totem->languages_action_group, -1);
 
 	if (list != NULL)
 	{
+		action = create_lang_actions (totem, totem->languages_action_group,
+				totem->languages_ui_id,
+				"/tmw-menubar/sound/languages/placeholder",
+			       	"languages", list, TRUE);
+		gtk_ui_manager_ensure_update (totem->ui_manager);
+
 		current = bacon_video_widget_get_language (totem->bvw);
-		lang_menu = create_submenu (totem, list, current, TRUE);
-	}
-
-	/* Languages */
-	item = glade_xml_get_widget (totem->xml, "tmw_languages_menu_item");
-
-	old_submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (item));
-	if (old_submenu != NULL)
-		gtk_menu_popdown (GTK_MENU (old_submenu));
-
-	submenu = glade_xml_get_widget (totem->xml, "tmw_menu_languages");
-	if (lang_menu == NULL)
-	{
-		gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
-	} else {
-		gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), lang_menu);
-		totem->languages = lang_menu;
-	}
-	gtk_widget_set_sensitive (item, lang_menu != NULL);
+		gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action),
+				current);
+		g_signal_connect (G_OBJECT (action), "changed",
+				G_CALLBACK (languages_changed_callback), totem);
+	}
 
 	totem_g_list_deep_free (totem->language_list);
 	totem->language_list = list;
@@ -370,34 +354,38 @@
 static void
 totem_subtitles_update (Totem *totem, GList *list)
 {
-	GtkWidget *item, *submenu, *old_submenu;
-	GtkWidget *sub_menu;
+	GtkAction *action;
 	int current;
 
-	sub_menu = NULL;
+	/* Remove old UI */
+	gtk_ui_manager_remove_ui (totem->ui_manager, totem->subtitles_ui_id);
+	gtk_ui_manager_ensure_update (totem->ui_manager);
+
+	/* Create new ActionGroup */
+	if (totem->subtitles_action_group) {
+		gtk_ui_manager_remove_action_group (totem->ui_manager,
+				totem->subtitles_action_group);
+		g_object_unref (totem->subtitles_action_group);
+	}
+	totem->subtitles_action_group = gtk_action_group_new ("subtitles-action-group");
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+			totem->subtitles_action_group, -1);
+
 
 	if (list != NULL)
 	{
+		action = create_lang_actions (totem, totem->subtitles_action_group,
+				totem->subtitles_ui_id,
+				"/tmw-menubar/view/subtitles/placeholder",
+			       	"subtitles", list, FALSE);
+		gtk_ui_manager_ensure_update (totem->ui_manager);
+
 		current = bacon_video_widget_get_subtitle (totem->bvw);
-		sub_menu = create_submenu (totem, list, current, FALSE);
-	}
-
-	/* Subtitles */
-	item = glade_xml_get_widget (totem->xml, "tmw_subtitles_menu_item");
-
-	old_submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (item));
-	if (old_submenu != NULL)
-		gtk_menu_popdown (GTK_MENU (old_submenu));
-
-	submenu = glade_xml_get_widget (totem->xml, "tmw_menu_subtitles");
-	if (sub_menu == NULL)
-	{
-		gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
-	} else {
-		gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), sub_menu);
-		totem->subtitles = sub_menu;
-	}
-	gtk_widget_set_sensitive (item, sub_menu != NULL);
+		gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action),
+				current);
+		g_signal_connect (G_OBJECT (action), "changed",
+				G_CALLBACK (subtitles_changed_callback), totem);
+	}
 
 	totem_g_list_deep_free (totem->subtitles_list);
 	totem->subtitles_list = list;
@@ -431,6 +419,130 @@
 }
 
 /* Recent files */
+#if HAVE_GTK_RECENT
+static void
+on_recent_file_item_activated (GtkAction *action,
+                               Totem *totem)
+{
+	char *uri;
+	gboolean playlist_changed;
+	guint end;
+
+	uri = g_object_get_data (G_OBJECT (action), "recent-uri");
+
+	totem_signal_block_by_data (totem->playlist, totem);
+
+	end = totem_playlist_get_last (totem->playlist);
+	playlist_changed = totem_playlist_add_mrl (totem->playlist, uri, NULL);
+	gtk_recent_manager_add_item (totem->recent_manager, uri);
+
+	totem_signal_unblock_by_data (totem->playlist, totem);
+
+	if (playlist_changed)
+	{
+		char *mrl;
+
+		totem_playlist_set_current (totem->playlist, end + 1);
+		mrl = totem_playlist_get_current_mrl (totem->playlist);
+		totem_action_set_mrl_and_play (totem, mrl);
+		g_free (mrl);
+	}
+}
+
+static gint
+totem_compare_recent_items (GtkRecentInfo *a, GtkRecentInfo *b)
+{
+	gboolean has_totem_a, has_totem_b;
+
+	has_totem_a = gtk_recent_info_has_group (a, "Totem");
+	has_totem_b = gtk_recent_info_has_group (b, "Totem");
+
+	if (has_totem_a && has_totem_b) {
+		time_t time_a, time_b;
+
+		time_a = gtk_recent_info_get_modified (a);
+		time_b = gtk_recent_info_get_modified (b);
+
+		return (time_b - time_a);
+	} else if (has_totem_a) {
+		return -1;
+	} else if (has_totem_b) {
+		return 1;
+	}
+
+	return 0;
+}
+
+static void
+totem_recent_manager_changed_callback (GtkRecentManager *recent_manager, Totem *totem)
+{
+	GList *items, *l;
+	guint n_items = 0;
+	static guint i = 0;
+
+	gtk_ui_manager_remove_ui (totem->ui_manager, totem->recent_ui_id);
+	gtk_ui_manager_ensure_update (totem->ui_manager);
+
+	if (totem->recent_action_group) {
+		gtk_ui_manager_remove_action_group (totem->ui_manager,
+				totem->recent_action_group);
+		g_object_unref (totem->recent_action_group);
+	}
+	totem->recent_action_group = gtk_action_group_new ("recent-action-group");
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+			totem->recent_action_group, -1);
+ 
+	items = gtk_recent_manager_get_items (recent_manager);
+	items = g_list_sort (items, (GCompareFunc) totem_compare_recent_items);
+
+	for (l = items; l && l->data; l = g_list_next (l)) {
+		GtkRecentInfo *info;
+		GtkAction     *action;
+		gchar         *action_name;
+		gchar         *label;
+
+		info = (GtkRecentInfo *) l->data;
+
+		if (!gtk_recent_info_has_group (info, "Totem"))
+			continue;
+
+		action_name = g_strdup_printf ("recent-file%u", i++);
+		label = g_strdup_printf ("_%d.  %s", n_items + 1,
+				gtk_recent_info_get_display_name (info));
+
+		action = g_object_new (GTK_TYPE_ACTION,
+			       "name", action_name,
+			       "label", label,
+			       NULL);
+
+		g_object_set_data_full (G_OBJECT (action), "recent-uri",
+				g_strdup (gtk_recent_info_get_uri (info)),
+				g_free);
+		g_signal_connect (G_OBJECT (action), "activate",
+			  	G_CALLBACK (on_recent_file_item_activated),
+				totem);
+
+		gtk_action_group_add_action (totem->recent_action_group,
+				action);
+		g_object_unref (action);
+
+		gtk_ui_manager_add_ui (totem->ui_manager, totem->recent_ui_id,
+			       "/tmw-menubar/movie/recent-placeholder",
+			       label, action_name, GTK_UI_MANAGER_MENUITEM,
+			       FALSE);
+
+		g_free (action_name);
+		g_free (label);
+
+		if (++n_items == 5)
+			break;
+	}
+	gtk_ui_manager_ensure_update (totem->ui_manager);
+
+	g_list_foreach (items, (GFunc) gtk_recent_info_unref, NULL);
+	g_list_free (items);
+}
+#else
 static void
 on_recent_file_activate (EggRecentViewGtk *view, EggRecentItem *item,
                          Totem *totem)
@@ -487,17 +599,31 @@
 		gnome_vfs_uri_unref (uri);
 	}
 }
+#endif
 
 void
 totem_setup_recent (Totem *totem)
 {
+#ifdef HAVE_GTK_RECENT
+	totem->recent_manager = gtk_recent_manager_get_default ();
+	totem->recent_action_group = NULL;
+	totem->recent_ui_id = gtk_ui_manager_new_merge_id
+			(totem->ui_manager);
+
+	g_signal_connect (G_OBJECT (totem->recent_manager), "changed",
+			G_CALLBACK (totem_recent_manager_changed_callback),
+			totem);
+
+	totem_recent_manager_changed_callback (totem->recent_manager, totem);
+#else
 	GtkWidget *menu_item;
 	GtkWidget *menu;
 
-	menu_item = glade_xml_get_widget (totem->xml, "tmw_menu_item_movie");
+	menu_item = gtk_ui_manager_get_widget (totem->ui_manager,
+			"/tmw-menubar/movie");
 	menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
-	menu_item = glade_xml_get_widget (totem->xml,
-			"tmw_menu_recent_separator");
+	menu_item = gtk_ui_manager_get_widget (totem->ui_manager,
+			"/tmw-menubar/movie/recent-separator");
 
 	/* it would be better if we just filtered by mime-type, but there
 	 * doesn't seem to be an easy way to figure out which mime-types we
@@ -518,29 +644,56 @@
 
 	g_signal_connect (totem->recent_view, "activate",
 			G_CALLBACK (on_recent_file_activate), totem);
+#endif
 }
 
 void
 totem_action_add_recent (Totem *totem, const char *filename)
 {
+#ifdef HAVE_GTK_RECENT
+	GtkRecentData data;
+	char *groups[] = { "Totem", NULL };
+	char *display;
+#else
 	EggRecentItem *item;
+#endif
 
 	if (strstr (filename, "file:///") == NULL)
 		return;
 
+#ifdef HAVE_GTK_RECENT
+	display = g_filename_from_uri (filename, NULL, NULL);
+	if (display) {
+		data.display_name = g_filename_display_basename (display);
+		g_free (display);
+	}
+	data.description = NULL;
+	data.mime_type = gnome_vfs_get_mime_type (filename);
+	data.app_name = g_strdup (g_get_application_name ());
+	data.app_exec = g_strjoin (" ", g_get_prgname (), "%u", NULL);
+	data.groups = groups;
+	gtk_recent_manager_add_full (totem->recent_manager,
+			filename, &data);
+
+	g_free (data.display_name);
+	g_free (data.mime_type);
+	g_free (data.app_name);
+	g_free (data.app_exec);
+#else
 	item = egg_recent_item_new_from_uri (filename);
 	egg_recent_item_add_group (item, "Totem");
 	egg_recent_model_add_full (totem->recent_model, item);
+#endif
 }
 
 /* Play Disc menu items */
 
 static void
-on_play_disc_activate (GtkMenuItem *menu_item, Totem *totem)
+on_play_disc_activate (GtkAction *action, Totem *totem)
 {
 	char *device_path;
 
-	device_path = g_object_get_data (G_OBJECT (menu_item), "device_path");
+	device_path = g_object_get_data (G_OBJECT (action), "device_path");
 	totem_action_play_media_device (totem, device_path);
 }
 
@@ -575,10 +728,10 @@
 }
 
 static void
-add_device_to_menu (GObject *device, GtkMenu *menu, gint position, Totem *totem)
+add_device_to_menu (GObject *device, guint position, Totem *totem)
 {
 	char *name, *icon_name, *device_path, *label, *activation_uri;
-	GtkWidget *menu_item, *icon;
+	GtkAction *action;
 	gboolean disabled = FALSE;
 
 	/* Add devices with blank CDs and audio CDs in them, but disable them */
@@ -604,65 +757,54 @@
 	g_strchomp (name);
 	label = g_strdup_printf (_("Play Disc '%s'"), name);
 	g_free (name);
-	menu_item = gtk_image_menu_item_new_with_label (label);
+
+	name = g_strdup_printf (_("device%d"), position);
+	action = gtk_action_new (name, label, NULL, NULL);
+	g_object_set (G_OBJECT (action), "icon-name", icon_name,
+		"sensitive", !disabled, NULL);
+	gtk_action_group_add_action (totem->devices_action_group, action);
+	g_object_unref (action);
+	gtk_ui_manager_add_ui (totem->ui_manager, totem->devices_ui_id,
+		"/tmw-menubar/movie/devices-placeholder", name, name,
+		GTK_UI_MANAGER_MENUITEM, FALSE);
+	g_free (name);
 	g_free (label);
-
-	icon = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
 	g_free (icon_name);
-	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
 
-	g_object_set_data_full (G_OBJECT (menu_item), "device_path",
+	g_object_set_data_full (G_OBJECT (action), "device_path",
 			device_path, (GDestroyNotify) g_free);
 	if (GNOME_IS_VFS_VOLUME (device)) {
-		g_object_set_data_full (G_OBJECT (menu_item), "activation_uri",
+		g_object_set_data_full (G_OBJECT (action), "activation_uri",
 				gnome_vfs_volume_get_activation_uri (GNOME_VFS_VOLUME (device)),
 				(GDestroyNotify) g_free);
 	}
 
-	g_signal_connect (G_OBJECT (menu_item), "activate",
+	g_signal_connect (G_OBJECT (action), "activate",
 			G_CALLBACK (on_play_disc_activate), totem);
-
-	gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menu_item, position);
-	if (disabled != FALSE) {
-		gtk_widget_set_sensitive (menu_item, FALSE);
-	}
-	gtk_widget_show (menu_item);
 }
 
 static void
 on_movie_menu_select (GtkMenuItem *movie_menuitem, Totem *totem)
 {
-	GtkMenu *menu;
-	GtkMenuItem *openloc_item;
-	GtkSeparatorMenuItem *sep_item;
-
-	GList *menuitems;
-	gint position;
-
 	GList *devices, *volumes, *drives, *i;
+	guint position;
 
 	if (totem->drives_changed == FALSE)
 		return;
 
-	menu = GTK_MENU (glade_xml_get_widget (totem->xml, "tmw_menu_movie"));
-	g_assert (menu != NULL);
-
-	openloc_item = GTK_MENU_ITEM (glade_xml_get_widget (totem->xml,
-				"tmw_open_location_menu_item"));
-	sep_item = GTK_SEPARATOR_MENU_ITEM (glade_xml_get_widget (totem->xml,
-				"tmw_menu_movie_separator_1"));
-
-	/* remove existing menu entries */
-	menuitems = gtk_container_get_children (GTK_CONTAINER (menu));
-
-	i = g_list_find (menuitems, openloc_item)->next;
-	while (i != g_list_find (menuitems, sep_item))
-	{
-		gtk_container_remove (GTK_CONTAINER (menu), i->data);
-		gtk_widget_destroy (i->data);
-
-		i = i->next;
+	/* Remove old UI */
+	gtk_ui_manager_remove_ui (totem->ui_manager, totem->devices_ui_id);
+	gtk_ui_manager_ensure_update (totem->ui_manager);
+
+	/* Create new ActionGroup */
+	if (totem->devices_action_group) {
+		gtk_ui_manager_remove_action_group (totem->ui_manager,
+				totem->devices_action_group);
+		g_object_unref (totem->devices_action_group);
 	}
+	totem->devices_action_group = gtk_action_group_new ("devices-action-group");
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+			totem->devices_action_group, -1);
 
 	/* Create a list of suitable devices */
 	devices = NULL;
@@ -691,14 +833,14 @@
 	gnome_vfs_drive_volume_list_free (drives);
 
 	/* Add the devices to the menu */
-	position = g_list_index (menuitems, openloc_item);
-	g_list_free (menuitems);
+	position = 0;
 
 	for (i = devices; i != NULL; i = i->next)
 	{
 		position++;
-		add_device_to_menu (i->data, GTK_MENU (menu), position, totem);
+		add_device_to_menu (i->data, position, totem);
 	}
+	gtk_ui_manager_ensure_update (totem->ui_manager);
 
 	g_list_foreach (devices, (GFunc) g_object_unref, NULL);
 	g_list_free (devices);
@@ -717,7 +859,7 @@
 {
 	GtkWidget *item;
 
-	item = glade_xml_get_widget (totem->xml, "tmw_menu_item_movie");
+	item = gtk_ui_manager_get_widget (totem->ui_manager, "/tmw-menubar/movie");
 	g_signal_connect (G_OBJECT (item), "select",
 			G_CALLBACK (on_movie_menu_select), totem);
 

=== modified file 'src/totem-preferences.c'
--- src/totem-preferences.c	2006-08-24 09:43:54 +0000
+++ src/totem-preferences.c	2006-08-29 09:33:55 +0000
@@ -185,32 +185,23 @@
 }
 
 static void
-on_deinterlace1_activate (GtkCheckMenuItem *checkmenuitem, Totem *totem)
-{
-	gboolean value;
-
-	value = gtk_check_menu_item_get_active (checkmenuitem);
-	bacon_video_widget_set_deinterlacing (totem->bvw, value);
-	gconf_client_set_bool (totem->gc, GCONF_PREFIX"/deinterlace",
-			value, NULL);
-}
-
-static void
 deinterlace_changed_cb (GConfClient *client, guint cnxn_id,
 		GConfEntry *entry, Totem *totem)
 {
-	GtkWidget *item;
-
-	item = glade_xml_get_widget (totem->xml, "tmw_deinterlace_menu_item");
-	g_signal_handlers_disconnect_by_func (G_OBJECT (item),
-			on_deinterlace1_activate, totem);
-
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+	GtkAction *action;
+
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"deinterlace");
+
+	g_signal_handlers_block_matched (G_OBJECT (action),
+			G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, totem);
+
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
 			gconf_client_get_bool (totem->gc,
 				GCONF_PREFIX"/deinterlace", NULL));
 
-	g_signal_connect (G_OBJECT (item),  "activate",
-			G_CALLBACK (on_deinterlace1_activate), totem);
+	g_signal_handlers_unblock_matched (G_OBJECT (action),
+			G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, totem);
 }
 
 static void
@@ -436,6 +427,7 @@
 totem_setup_preferences (Totem *totem)
 {
 	GtkWidget *item, *menu;
+	GtkAction *action;
 	gboolean show_visuals, auto_resize, is_local, deinterlace;
 	int connection_speed, i;
 	char *visual, *font, *encoding;
@@ -600,28 +592,28 @@
 
 	/* This one is for the deinterlacing menu, not really our dialog
 	 * but we do it anyway */
-	item = glade_xml_get_widget (totem->xml, "tmw_deinterlace_menu_item");
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"deinterlace");
 	deinterlace = gconf_client_get_bool (totem->gc,
 			GCONF_PREFIX"/deinterlace", NULL);
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
-				deinterlace);
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+			deinterlace);
 	bacon_video_widget_set_deinterlacing (totem->bvw, deinterlace);
 	gconf_client_notify_add (totem->gc, GCONF_PREFIX"/deinterlace",
 			(GConfClientNotifyFunc) deinterlace_changed_cb,
 			totem, NULL, NULL);
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_deinterlace1_activate), totem);
 
 	/* Always On Top */
-	item = glade_xml_get_widget (totem->xml, "tmw_always_on_top_menu_item");
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"always-on-top");
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
 			gconf_client_get_bool (totem->gc,
 				GCONF_PREFIX"/window_on_top", NULL));
 
 	/* Save to disk Lockdown */
-	item = glade_xml_get_widget
-		(totem->xml, "tmw_take_screenshot_menu_item");
-	gtk_widget_set_sensitive (item,
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"take-screenshot");
+	gtk_action_set_sensitive (action,
 			!gconf_client_get_bool (totem->gc,
 				"/desktop/gnome/lockdown/disable_save_to_disk",
 				NULL));

=== modified file 'src/totem-private.h'
--- src/totem-private.h	2006-08-24 09:43:54 +0000
+++ src/totem-private.h	2006-08-29 21:26:10 +0000
@@ -51,7 +51,13 @@
 		gtk_widget_set_sensitive (widget, state);	\
 	}
 #define totem_main_set_sensitivity(name, state) totem_set_sensitivity (totem->xml, name, state)
-#define totem_popup_set_sensitivity(name, state) totem_set_sensitivity (totem->xml_popup, name, state)
+
+#define totem_action_set_sensitivity(name, state)					\
+	{										\
+		GtkAction *action;							\
+		action = gtk_action_group_get_action (totem->main_action_group, name);	\
+		gtk_action_set_sensitive (action, state);				\
+	}
 
 typedef enum {
 	TOTEM_CONTROLS_VISIBLE,
@@ -68,12 +74,25 @@
 struct Totem {
 	/* Control window */
 	GladeXML *xml;
-	GladeXML *xml_popup;
 	GtkWidget *win;
 	BaconVideoWidget *bvw;
 	GtkWidget *prefs;
 	GtkWidget *statusbar;
 
+	/* UI manager */
+	GtkActionGroup *main_action_group;
+	GtkActionGroup *zoom_action_group;
+	GtkUIManager *ui_manager;
+
+	GtkActionGroup *devices_action_group;
+	guint devices_ui_id;
+
+	GtkActionGroup *languages_action_group;
+	guint languages_ui_id;
+
+	GtkActionGroup *subtitles_action_group;
+	guint subtitles_ui_id;
+
 	/* Sidebar */
 	GtkWidget *sidebar;
 	gboolean sidebar_shown;
@@ -132,8 +151,14 @@
 	TotemScrsaver *scr;
 
 	/* recent file stuff */
+#ifdef HAVE_GTK_RECENT
+	GtkRecentManager *recent_manager;
+	GtkActionGroup *recent_action_group;
+	guint recent_ui_id;
+#else
 	EggRecentModel *recent_model;
 	EggRecentViewGtk *recent_view;
+#endif
 
 	/* Monitor for playlist unmounts and drives/volumes monitoring */
 	GnomeVFSVolumeMonitor *monitor;

=== modified file 'src/totem-sidebar.c'
--- src/totem-sidebar.c	2006-08-24 09:43:54 +0000
+++ src/totem-sidebar.c	2006-08-29 20:37:04 +0000
@@ -69,7 +69,7 @@
 static void
 on_sidebar_button_toggled (GtkToggleButton *button, Totem *totem)
 {
-	GtkWidget *item;
+	GtkAction *action;
 	gboolean state;
 
 	state = gtk_toggle_button_get_active (button);
@@ -78,10 +78,10 @@
 	else
 		gtk_widget_hide (GTK_WIDGET (totem->sidebar));
 
-	item = glade_xml_get_widget (totem->xml, "tmw_sidebar_menu_item");
-	totem_signal_block_by_data (G_OBJECT (item), totem);
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), state);
-	totem_signal_unblock_by_data (G_OBJECT (item), totem);
+	action = gtk_action_group_get_action (totem->main_action_group, "sidebar");
+	totem_signal_block_by_data (G_OBJECT (action), totem);
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), state);
+	totem_signal_unblock_by_data (G_OBJECT (action), totem);
 
 	gconf_client_set_bool (totem->gc,
 				GCONF_PREFIX"/sidebar_shown",
@@ -109,7 +109,8 @@
 void
 totem_sidebar_setup (Totem *totem, gboolean visible, const char *page_id)
 {
-	GtkWidget *item, *item2;
+	GtkWidget *item;
+	GtkAction *action;
 
 	item = glade_xml_get_widget (totem->xml, "tmw_main_pane");
 	totem->sidebar = ev_sidebar_new ();
@@ -132,18 +133,17 @@
 	totem->sidebar_shown = visible;
 
 	item = glade_xml_get_widget (totem->xml, "tmw_sidebar_button");
-	item2 = glade_xml_get_widget (totem->xml, "tmw_sidebar_menu_item");
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"sidebar");
 
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), visible);
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item2), visible);
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
 
 	/* Signals */
 	g_signal_connect (G_OBJECT (item), "clicked",
 			G_CALLBACK (on_sidebar_button_toggled), totem);
 	g_signal_connect (G_OBJECT (totem->sidebar), "closed",
 			G_CALLBACK (toggle_sidebar_from_sidebar), totem);
-	g_signal_connect_swapped (G_OBJECT (item2), "activate",
-			G_CALLBACK (totem_sidebar_toggle), totem);
 
 	gtk_widget_show_all (totem->sidebar);
 	gtk_widget_realize (totem->sidebar);

=== modified file 'src/totem-stock-icons.c'
--- src/totem-stock-icons.c	2006-08-24 09:43:54 +0000
+++ src/totem-stock-icons.c	2006-08-29 00:03:47 +0000
@@ -98,12 +98,14 @@
 totem_set_default_icons (Totem *totem)
 {
 	GtkWidget *item;
+	GtkAction *action;
 
 	/* Screenshot button */
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_take_screenshot_menu_item_image");
-	gtk_image_set_from_pixbuf (GTK_IMAGE (item),
-			PIXBUF_FOR_ID("panel-screenshot"));
+	action = gtk_action_group_get_action (totem->main_action_group,
+			"take-screenshot");
+	/* FIXME */
+/*	gtk_image_set_from_pixbuf (GTK_IMAGE (item),
+			PIXBUF_FOR_ID("panel-screenshot"));*/
 
 	/* Leave fullscreen button */
 	item = glade_xml_get_widget (totem->xml,

=== modified file 'src/totem.c'
--- src/totem.c	2006-08-24 09:43:54 +0000
+++ src/totem.c	2006-08-29 21:26:47 +0000
@@ -102,6 +102,112 @@
 	{ "text/uri-list", 0, 0 },
 };
 
+static void open_action_callback (GtkAction *action, Totem *totem);
+static void open_location_action_callback (GtkAction *action, Totem *totem);
+static void eject_action_callback (GtkAction *action, Totem *totem);
+static void play_action_callback (GtkAction *action, Totem *totem);
+static void quit_action_callback (GtkAction *action, Totem *totem);
+static void take_screenshot_action_callback (GtkAction *action, Totem *totem);
+static void preferences_action_callback (GtkAction *action, Totem *totem);
+static void fullscreen_action_callback (GtkAction *action, Totem *totem);
+static void zoom_1_2_action_callback (GtkAction *action, Totem *totem);
+static void zoom_1_1_action_callback (GtkAction *action, Totem *totem);
+static void zoom_2_1_action_callback (GtkAction *action, Totem *totem);
+static void zoom_in_action_callback (GtkAction *action, Totem *totem);
+static void zoom_reset_action_callback (GtkAction *action, Totem *totem);
+static void zoom_out_action_callback (GtkAction *action, Totem *totem);
+static void next_angle_action_callback (GtkAction *action, Totem *totem);
+static void dvd_root_menu_action_callback (GtkAction *action, Totem *totem);
+static void dvd_title_menu_action_callback (GtkAction *action, Totem *totem);
+static void dvd_audio_menu_action_callback (GtkAction *action, Totem *totem);
+static void dvd_angle_menu_action_callback (GtkAction *action, Totem *totem);
+static void dvd_chapter_menu_action_callback (GtkAction *action, Totem *totem);
+static void next_chapter_action_callback (GtkAction *action, Totem *totem);
+static void previous_chapter_action_callback (GtkAction *action, Totem *totem);
+static void skip_to_action_callback (GtkAction *action, Totem *totem);
+static void skip_forward_action_callback (GtkAction *action, Totem *totem);
+static void skip_backwards_action_callback (GtkAction *action, Totem *totem);
+static void volume_up_action_callback (GtkAction *action, Totem *totem);
+static void volume_down_action_callback (GtkAction *action, Totem *totem);
+static void contents_action_callback (GtkAction *action, Totem *totem);
+static void about_action_callback (GtkAction *action, Totem *totem);
+
+static const GtkActionEntry entries[] = {
+	{ "movie-menu", NULL, "_Movie" },
+	{ "open", GTK_STOCK_OPEN, "_Open...", "<control>O", "Open a file", G_CALLBACK (open_action_callback) },
+	{ "open-location", NULL, "Open _Location...", "<control>L", "Open a non-local file", G_CALLBACK (open_location_action_callback) },
+	{ "eject", NULL, "_Eject", "<control>E", NULL, G_CALLBACK (eject_action_callback) },
+	{ "play", GTK_STOCK_MEDIA_PLAY, "Play / Pa_use", "P", "Play or pause the movie", G_CALLBACK (play_action_callback) },
+	{ "quit", GTK_STOCK_QUIT, "_Quit", "<control>Q", "Quit the program", G_CALLBACK (quit_action_callback) },
+
+	{ "edit-menu", NULL, "_Edit" },
+	{ "take-screenshot", GTK_STOCK_CONVERT, "Take _Screenshot...", "<control>S", "Take a screenshot", G_CALLBACK (take_screenshot_action_callback) },
+	{ "preferences", GTK_STOCK_PREFERENCES, "Prefere_nces", NULL, NULL, G_CALLBACK (preferences_action_callback) },
+
+	{ "view-menu", NULL, "_View" },
+	{ "fullscreen", GTK_STOCK_ZOOM_FIT, "_Fullscreen", "F", "Switch to fullscreen", G_CALLBACK (fullscreen_action_callback) },
+	{ "zoom-window-menu", NULL, "Fit Window to Movie" },
+	{ "zoom-1-2", NULL, "_Resize 1:2", "0", "Resize to half the video size", G_CALLBACK (zoom_1_2_action_callback) },
+	{ "zoom-1-1", NULL, "Resize _1:1", "1", "Resize to video size", G_CALLBACK (zoom_1_1_action_callback) },
+	{ "zoom-2-1", NULL, "Resize _2:1", "2", "Resize to twice the video size", G_CALLBACK (zoom_2_1_action_callback) },
+	{ "aspect-ratio-menu", NULL, "_Aspect Ratio" },
+	{ "next-angle", NULL, "Switch An_gles", "G", "Switch angles", G_CALLBACK (next_angle_action_callback) },
+/*	{ "subtitles-menu", NULL, "S_ubtitles" },*/
+
+	{ "go-menu", NULL, "_Go" },
+	{ "dvd-root-menu", GTK_STOCK_INDEX, "_DVD Menu", "m", "Go to the DVD menu", G_CALLBACK (dvd_root_menu_action_callback) },
+	{ "dvd-title-menu", NULL, "_Title Menu", NULL, "Go to the title menu", G_CALLBACK (dvd_title_menu_action_callback) },
+	{ "dvd-audio-menu", NULL, "A_udio Menu", NULL, "Go to the audio menu", G_CALLBACK (dvd_audio_menu_action_callback) },
+	{ "dvd-angle-menu", NULL, "_Angle Menu", NULL, "Go to the angle menu", G_CALLBACK (dvd_angle_menu_action_callback) },
+	{ "dvd-chapter-menu", GTK_STOCK_INDEX, "_Chapter Menu", "c", "Go to the chapter menu", G_CALLBACK (dvd_chapter_menu_action_callback) },
+	{ "next-chapter", GTK_STOCK_MEDIA_NEXT, "_Next Chapter/Movie", "n", "Next chapter or movie", G_CALLBACK (next_chapter_action_callback) },
+	{ "previous-chapter", GTK_STOCK_MEDIA_PREVIOUS, "_Previous Chapter/Movie", "b", "Previous chapter or movie", G_CALLBACK (previous_chapter_action_callback) },
+	{ "skip-to", GTK_STOCK_JUMP_TO, "_Skip to...", "S", "Skip to a specific time", G_CALLBACK (skip_to_action_callback) },
+	{ "skip-forward", GTK_STOCK_MEDIA_FORWARD, "Skip _Forward", "Right", "Skip forward", G_CALLBACK (skip_forward_action_callback) },
+	{ "skip-backwards", GTK_STOCK_MEDIA_REWIND, "Skip _Backwards", "Left", "Skip backwards", G_CALLBACK (skip_backwards_action_callback) },
+
+	{ "sound-menu", NULL, "_Sound" },
+/*	{ "languages-menu", NULL, "_Languages" }, */
+	{ "volume-up", NULL, "Volume _Up", "Up", "Volume up", G_CALLBACK (volume_up_action_callback) },
+	{ "volume-down", NULL, "Volume _Down", "Down", "Volume down", G_CALLBACK (volume_down_action_callback) },
+
+	{ "help-menu", NULL, "_Help" },
+	{ "contents", GTK_STOCK_HELP, "_Contents", "F1", "Help contents", G_CALLBACK (contents_action_callback) },
+	{ "about", GTK_STOCK_ABOUT, "_About", NULL, NULL, G_CALLBACK (about_action_callback) }
+};
+
+static const GtkActionEntry zoom_entries[] = {
+	{ "zoom-in", GTK_STOCK_ZOOM_IN, "Zoom In", "R", "Zoom in", G_CALLBACK (zoom_in_action_callback) },
+	{ "zoom-reset", GTK_STOCK_ZOOM_100, "Zoom Reset", NULL, "Zoom reset", G_CALLBACK (zoom_reset_action_callback) },
+	{ "zoom-out", GTK_STOCK_ZOOM_OUT, "Zoom Out", "T", "Zoom out", G_CALLBACK (zoom_out_action_callback) }
+};
+
+static void repeat_mode_action_callback (GtkToggleAction *action, Totem *totem);
+static void shuffle_mode_action_callback (GtkToggleAction *action, Totem *totem);
+static void deinterlace_action_callback (GtkToggleAction *action, Totem *totem);
+static void always_on_top_action_callback (GtkToggleAction *action, Totem *totem);
+static void show_controls_action_callback (GtkToggleAction *action, Totem *totem);
+static void show_sidebar_action_callback (GtkToggleAction *action, Totem *totem);
+
+static const GtkToggleActionEntry toggle_entries[] = {
+	{ "repeat-mode", NULL, "_Repeat Mode", NULL, "Set the repeat mode", G_CALLBACK (repeat_mode_action_callback), FALSE },
+	{ "shuffle-mode", NULL, "Shuff_le Mode", NULL, "Set the shuffle mode", G_CALLBACK (shuffle_mode_action_callback), FALSE },
+	{ "deinterlace", NULL, "_Deinterlace", "I", "Deinterlace", G_CALLBACK (deinterlace_action_callback), FALSE },
+	{ "always-on-top", NULL, "Always on _Top", NULL, "Always on top", G_CALLBACK (always_on_top_action_callback), FALSE },
+	{ "show-controls", NULL, "Show _Controls", "H", "Show controls", G_CALLBACK (show_controls_action_callback), TRUE },
+	{ "sidebar", NULL, "_Sidebar", "F9", "Show or hide the sidebar", G_CALLBACK (show_sidebar_action_callback), TRUE }
+};
+
+static void aspect_ratio_changed_callback (GtkRadioAction *action, GtkRadioAction *current, Totem *totem);
+
+static const GtkRadioActionEntry aspect_ratio_entries[] = {
+	{ "aspect-ratio-auto", NULL, "Auto", NULL, "Sets automatic aspect ratio", BVW_RATIO_AUTO },
+	{ "aspect-ratio-square", NULL, "Square", NULL, "Sets square aspect ratio", BVW_RATIO_SQUARE },
+	{ "aspect-ratio-fbt", NULL, "4:3 (TV)", NULL, "Sets 4:3 (TV) aspect ratio", BVW_RATIO_FOURBYTHREE },
+	{ "aspect-ratio-anamorphic", NULL, "16:9 (Widescreen)", NULL, "Sets 16:9 (Anamorphic) aspect ratio", BVW_RATIO_ANAMORPHIC },
+	{ "aspect-ratio-dvb", NULL, "2.11:1 (DVB)", NULL, "Sets 2.11:1 (DVB) aspect ratio", BVW_RATIO_DVB }
+};
+
 static gboolean totem_action_open_files (Totem *totem, char **list);
 static gboolean totem_action_open_files_list (Totem *totem, GSList *list);
 static void update_fullscreen_size (Totem *totem);
@@ -259,8 +365,8 @@
 {
 	GtkWidget *menu;
 
-	menu = glade_xml_get_widget (totem->xml_popup,
-			"totem_right_click_menu");
+	menu = gtk_ui_manager_get_widget (totem->ui_manager,
+			"/totem-main-popup");
 	gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
 			button, gtk_get_current_event_time ());
 	gtk_menu_shell_select_first (GTK_MENU_SHELL (menu), FALSE);
@@ -610,7 +716,7 @@
 		totem->controls_visibility = TOTEM_CONTROLS_FULLSCREEN;
 		show_controls (totem, FALSE);
 	} else {
-		GtkWidget *item;
+		GtkAction *action;
 
 		popup_hide (totem);
 		bacon_video_widget_set_fullscreen (totem->bvw, FALSE);
@@ -618,11 +724,10 @@
 
 		totem_scrsaver_enable (totem->scr);
 
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_show_controls_menu_item");
+		action = gtk_action_group_get_action (totem->main_action_group,
+			"show-controls");
 
-		if (gtk_check_menu_item_get_active
-				(GTK_CHECK_MENU_ITEM (item)))
+		if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
 		{
 			totem->controls_visibility = TOTEM_CONTROLS_VISIBLE;
 			show_controls (totem, TRUE);
@@ -630,6 +735,8 @@
 			totem->controls_visibility = TOTEM_CONTROLS_HIDDEN;
 			show_controls (totem, TRUE);
 		}
+
+		g_object_unref (action);
 	}
 
 	return FALSE;
@@ -775,30 +882,27 @@
 		/* Play/Pause */
 		gtk_widget_set_sensitive (totem->pp_button, FALSE);
 
-		totem_main_set_sensitivity ("tmw_play_menu_item", FALSE);
-		totem_popup_set_sensitivity ("trcm_play", FALSE);
+		totem_action_set_sensitivity ("play", FALSE);
 
 		/* Seek bar and seek buttons */
 		update_seekable (totem, FALSE);
 
 		/* Volume */
 		totem_main_set_sensitivity ("tcw_volume_button", FALSE);
-		totem_main_set_sensitivity ("tmw_volume_up_menu_item", FALSE);
-		totem_main_set_sensitivity ("tmw_volume_down_menu_item", FALSE);
-		totem_popup_set_sensitivity ("trcm_volume_up", FALSE);
-		totem_popup_set_sensitivity ("trcm_volume_down", FALSE);
+		totem_action_set_sensitivity ("volume-up", FALSE);
+		totem_action_set_sensitivity ("volume-down", FALSE);
 
 		/* Control popup */
 		gtk_widget_set_sensitive (totem->fs_seek, FALSE);
 		gtk_widget_set_sensitive (totem->fs_pp_button, FALSE);
 		totem_main_set_sensitivity ("tcw_previous_button", FALSE);
 		totem_main_set_sensitivity ("tcw_next_button", FALSE);
-		totem_popup_set_sensitivity ("trcm_next_chapter", FALSE);
-		totem_popup_set_sensitivity ("trcm_previous_chapter", FALSE);
+		totem_action_set_sensitivity ("next-chapter", FALSE);
+		totem_action_set_sensitivity ("previous-chapter", FALSE);
 		totem_main_set_sensitivity ("tcw_volume_hbox", FALSE);
 
 		/* Take a screenshot */
-		totem_main_set_sensitivity ("tmw_take_screenshot_menu_item", FALSE);
+		totem_action_set_sensitivity ("take-screenshot", FALSE);
 
 		/* Set the logo */
 		bacon_video_widget_set_logo_mode (totem->bvw, TRUE);
@@ -820,9 +924,8 @@
 		totem->mrl = g_strdup (mrl);
 
 		/* Play/Pause */
-		totem_main_set_sensitivity ("tmw_play_menu_item", TRUE);
+		totem_action_set_sensitivity ("play", TRUE);
 		gtk_widget_set_sensitive (totem->pp_button, TRUE);
-		totem_popup_set_sensitivity ("trcm_play", TRUE);
 		gtk_widget_set_sensitive (totem->fs_pp_button, TRUE);
 
 		/* Seek bar */
@@ -833,14 +936,11 @@
 		caps = bacon_video_widget_can_set_volume (totem->bvw);
 		totem_main_set_sensitivity ("tcw_volume_button", caps);
 		totem_main_set_sensitivity ("tcw_volume_hbox", caps);
-		totem_popup_set_sensitivity ("trcm_volume_up", caps);
-		totem_popup_set_sensitivity ("trcm_volume_down", caps);
-		totem_main_set_sensitivity ("tmw_volume_up_menu_item", caps);
-		totem_main_set_sensitivity ("tmw_volume_down_menu_item", caps);
+		totem_action_set_sensitivity ("volume-up", caps);
+		totem_action_set_sensitivity ("volume-down", caps);
 
 		/* Take a screenshot */
-		totem_main_set_sensitivity ("tmw_take_screenshot_menu_item",
-				retval);
+		totem_action_set_sensitivity ("take-screenshot", retval);
 		gtk_widget_set_sensitive
 			(GTK_WIDGET (totem->properties), retval);
 
@@ -976,24 +1076,24 @@
 static void
 totem_action_zoom (Totem *totem, int zoom)
 {
+	GtkAction *action;
+
 	if (zoom < ZOOM_LOWER || zoom > ZOOM_UPPER)
 		return;
 
 	bacon_video_widget_set_zoom (totem->bvw, zoom);
 
-	if (zoom == ZOOM_UPPER) {
-		totem_main_set_sensitivity ("tmw_zoom_in_menu_item", FALSE);
-	} else if (zoom == ZOOM_LOWER) {
-		totem_main_set_sensitivity ("tmw_zoom_out_menu_item", FALSE);
-	} else if (zoom == ZOOM_RESET) {
-		totem_main_set_sensitivity ("tmw_zoom_reset_menu_item", FALSE);
-		totem_main_set_sensitivity ("tmw_zoom_in_menu_item", TRUE);
-		totem_main_set_sensitivity ("tmw_zoom_out_menu_item", TRUE);
-	} else {
-		totem_main_set_sensitivity ("tmw_zoom_in_menu_item", TRUE);
-		totem_main_set_sensitivity ("tmw_zoom_out_menu_item", TRUE);
-		totem_main_set_sensitivity ("tmw_zoom_reset_menu_item", TRUE);
-	}
+	action = gtk_action_group_get_action (totem->zoom_action_group,
+			"zoom-in");
+	gtk_action_set_sensitive (action, zoom != ZOOM_UPPER);
+
+	action = gtk_action_group_get_action (totem->zoom_action_group,
+			"zoom-out");
+	gtk_action_set_sensitive (action, zoom != ZOOM_LOWER);
+
+	action = gtk_action_group_get_action (totem->zoom_action_group,
+			"zoom-reset");
+	gtk_action_set_sensitive (action, zoom != ZOOM_RESET);
 }
 
 static void
@@ -1026,23 +1126,16 @@
 void
 totem_action_toggle_aspect_ratio (Totem *totem)
 {		
-	GtkWidget  *item;
-	int  tmp;
-	const char const *widgets[] = {
-		"tmw_aspect_ratio_auto_menu_item",
-		"tmw_aspect_ratio_square_menu_item",
-		"tmw_aspect_ratio_fbt_menu_item",
-		"tmw_aspect_ratio_anamorphic_menu_item",
-		"tmw_aspect_ratio_dvb_menu_item",
-	};
+	GtkAction *action;
+	int tmp;
 
 	tmp = totem_action_get_aspect_ratio (totem);
 	tmp++;
 	if (tmp > 4)
 		tmp = 0;
 
-	item = glade_xml_get_widget (totem->xml, widgets[tmp]);
-	gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
+	action = gtk_action_group_get_action (totem->main_action_group, "aspect-ratio-auto");
+	gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), tmp);
 }
 
 void
@@ -1355,11 +1448,9 @@
 
 	totem_main_set_sensitivity ("tcw_time_hbox", seekable);
 
-	totem_main_set_sensitivity ("tmw_skip_forward_menu_item", seekable);
-	totem_main_set_sensitivity ("tmw_skip_backwards_menu_item", seekable);
-	totem_popup_set_sensitivity ("trcm_skip_forward", seekable);
-	totem_popup_set_sensitivity ("trcm_skip_backwards", seekable);
-	totem_main_set_sensitivity ("tmw_skip_to_menu_item", seekable);
+	totem_action_set_sensitivity ("skip-forward", seekable);
+	totem_action_set_sensitivity ("skip-backwards", seekable);
+	totem_action_set_sensitivity ("skip-to", seekable);
 	if (totem->skipto)
 		totem_skipto_set_seekable (totem->skipto, seekable);
 }
@@ -1671,7 +1762,7 @@
 }
 
 static void
-on_open1_activate (GtkButton *button, Totem *totem)
+open_action_callback (GtkAction *action, Totem *totem)
 {
 	static char *path = NULL;
 	char *new_path;
@@ -1685,7 +1776,7 @@
 
 //FIXME move the URI to a separate widget
 static void
-on_open_location1_activate (GtkButton *button, Totem *totem)
+open_location_action_callback (GtkAction *action, Totem *totem)
 {
 	GladeXML *glade;
 	char *mrl;
@@ -1730,238 +1821,246 @@
 }
 
 static void
-on_eject1_activate (GtkButton *button, Totem *totem)
+eject_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_eject (totem);
 }
 
 static void
-on_play1_activate (GtkButton *button, Totem *totem)
+play_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_play_pause (totem);
 }
 
 static void
-on_full_screen1_activate (GtkButton *button, Totem *totem)
+quit_action_callback (GtkAction *action, Totem *totem)
+{
+	totem_action_exit (totem);
+}
+
+static void
+take_screenshot_action_callback (GtkAction *action, Totem *totem)
+{
+	GdkPixbuf *pixbuf;
+	GtkWidget *dialog;
+	char *filename;
+	GError *err = NULL;
+
+	if (bacon_video_widget_get_logo_mode (totem->bvw) != FALSE)
+		return;
+
+	if (bacon_video_widget_can_get_frames (totem->bvw, &err) == FALSE)
+	{
+		if (err == NULL)
+			return;
+
+		totem_action_error (_("Totem could not get a screenshot of that film."), err->message, totem);
+		g_error_free (err);
+		return;
+	}
+
+	pixbuf = bacon_video_widget_get_current_frame (totem->bvw);
+	if (pixbuf == NULL)
+	{
+		totem_action_error (_("Totem could not get a screenshot of that film."), _("This is not supposed to happen; please file a bug report."), totem);
+		return;
+	}
+
+	filename = g_build_filename (DATADIR,
+			"totem", "screenshot.glade", NULL);
+	dialog = totem_screenshot_new (filename, pixbuf);
+	g_free (filename);
+
+	gtk_dialog_run (GTK_DIALOG (dialog));
+	gtk_widget_destroy (dialog);
+	gdk_pixbuf_unref (pixbuf);
+}
+
+static void
+preferences_action_callback (GtkAction *action, Totem *totem)
+{
+	gtk_widget_show (totem->prefs);
+}
+
+static void
+fullscreen_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_fullscreen_toggle (totem);
 }
 
 static void
-on_resize_1_2_activate (GtkButton *button, Totem *totem)
+zoom_1_2_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_set_scale_ratio (totem, 0.5); 
 }
 
 static void
-on_resize_1_1_activate (GtkButton *button, Totem *totem)
+zoom_1_1_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_set_scale_ratio (totem, 1);
 }
 
 static void
-on_resize_2_1_activate (GtkButton *button, Totem *totem)
-{                       
+zoom_2_1_action_callback (GtkAction *action, Totem *totem)
+{
 	totem_action_set_scale_ratio (totem, 2);
 }
 
 static void
-on_zoom_in_activate (GtkButton *button, Totem *totem)
+zoom_in_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_zoom_relative (totem, ZOOM_IN_OFFSET);
 }
 
 static void
-on_zoom_reset_activate (GtkButton *button, Totem *totem)
+zoom_reset_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_zoom_reset (totem);
 }
 
 static void
-on_zoom_out_activate (GtkButton *button, Totem *totem)
+zoom_out_action_callback (GtkAction *action, Totem *totem)
 {
 	totem_action_zoom_relative (totem, ZOOM_OUT_OFFSET);
 }
 
 static void
-on_aspect_ratio_auto_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_set_aspect_ratio (totem, BVW_RATIO_AUTO);
-}
-
-static void
-on_aspect_ratio_square_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_set_aspect_ratio (totem, BVW_RATIO_SQUARE);
-}
-
-static void
-on_aspect_ratio_fbt_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_set_aspect_ratio (totem, BVW_RATIO_FOURBYTHREE);
-}
-
-static void
-on_aspect_anamorphic_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_set_aspect_ratio (totem, BVW_RATIO_ANAMORPHIC);
-}
-
-static void
-on_aspect_ratio_dvb_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_set_aspect_ratio (totem, BVW_RATIO_DVB);
-}
-
-static void
-on_fs_exit1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_fullscreen_toggle (totem);
-}
-
-static void
-on_quit1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_exit (totem);
-}
-
-static void
-on_repeat_mode1_toggled (GtkCheckMenuItem *checkmenuitem, Totem *totem)
-{
-	totem_playlist_set_repeat (totem->playlist,
-			gtk_check_menu_item_get_active (checkmenuitem));
-}
-
-static void
-on_shuffle_mode1_toggled (GtkCheckMenuItem *checkmenuitem, Totem *totem)
-{
-	totem_playlist_set_shuffle (totem->playlist,
-			gtk_check_menu_item_get_active (checkmenuitem));
-}
-
-static void
-on_always_on_top1_activate (GtkCheckMenuItem *checkmenuitem, Totem *totem)
-{
-	gtk_window_set_keep_above (GTK_WINDOW (totem->win),
-			gtk_check_menu_item_get_active (checkmenuitem));
-	gconf_client_set_bool (totem->gc,
-			GCONF_PREFIX"/window_on_top",
-			gtk_check_menu_item_get_active (checkmenuitem), NULL);
-}
-
-static void
-show_controls (Totem *totem, gboolean was_fullscreen)
-{
-	GtkWidget *menubar, *controlbar, *statusbar, *item, *bvw_vbox, *widget;
-	int width = 0, height = 0;
-
-	if (totem->bvw == NULL)
-		return;
-
-	menubar = glade_xml_get_widget (totem->xml, "tmw_menubar");
-	controlbar = glade_xml_get_widget (totem->xml, "tmw_controls_vbox");
-	statusbar = glade_xml_get_widget (totem->xml, "tmw_statusbar");
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_show_controls");
-	bvw_vbox = glade_xml_get_widget (totem->xml, "tmw_bvw_vbox");
-	widget = GTK_WIDGET (totem->bvw);
-
-	if (totem->controls_visibility == TOTEM_CONTROLS_VISIBLE)
-	{
-		if (was_fullscreen == FALSE)
-		{
-			height = widget->allocation.height;
-			width =	widget->allocation.width;
-		}
-
-		gtk_widget_set_sensitive (menubar, TRUE);
-		gtk_widget_show (menubar);
-		gtk_widget_show (controlbar);
-		gtk_widget_show (statusbar);
-		if (totem_sidebar_is_visible (totem) != FALSE)
-			gtk_widget_show (totem->sidebar);
-		else
-			gtk_widget_hide (totem->sidebar);
-
-		gtk_widget_hide (item);
-		gtk_container_set_border_width (GTK_CONTAINER (bvw_vbox),
-				BVW_VBOX_BORDER_WIDTH);
-
-		if (was_fullscreen == FALSE)
-		{
-			totem_widget_set_preferred_size (widget,
-					width, height);
-		}
-	} else {
-		if (totem->controls_visibility == TOTEM_CONTROLS_HIDDEN)
-		{
-			width = widget->allocation.width;
-			height = widget->allocation.height;
-		}
-
-		/* Hide and make the menubar unsensitive */
-		gtk_widget_set_sensitive (menubar, FALSE);
-		gtk_widget_hide (menubar);
-
-		gtk_widget_hide (controlbar);
-		gtk_widget_hide (statusbar);
-		gtk_widget_hide (totem->sidebar);
-
-		 /* We won't show controls in fullscreen */
-		if (totem_is_fullscreen (totem) != FALSE)
-			gtk_widget_hide (item);
-		else
-			gtk_widget_show (item);
-		gtk_container_set_border_width (GTK_CONTAINER (bvw_vbox), 0);
-
-		if (totem->controls_visibility == TOTEM_CONTROLS_HIDDEN)
-		{
-			gtk_window_resize (GTK_WINDOW(totem->win),
-					width, height);
-		}
-	}
-}
-
-static void
-on_show_controls1_activate (GtkCheckMenuItem *checkmenuitem, Totem *totem)
-{
-	gboolean show;
-
-	show = gtk_check_menu_item_get_active (checkmenuitem);
-
-	/* Let's update our controls visibility */
-	if (show)
-		totem->controls_visibility = TOTEM_CONTROLS_VISIBLE;
-	else
-		totem->controls_visibility = TOTEM_CONTROLS_HIDDEN;
-
-	show_controls (totem, FALSE);
-}
-
-static void
-on_show_controls2_activate (GtkMenuItem *menuitem, Totem *totem)
-{
-	totem_action_toggle_controls (totem);
-}
-
-void
-totem_action_toggle_controls (Totem *totem)
-{
-	GtkWidget *item;
-	gboolean state;
-
-	if (totem_is_fullscreen (totem) != FALSE)
-		return;
-
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_show_controls_menu_item");
-	state = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item));
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), !state);
-}
-
+next_angle_action_callback (GtkAction *action, Totem *totem)
+{
+}
+
+static void
+dvd_root_menu_action_callback (GtkAction *action, Totem *totem)
+{
+        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_ROOT_MENU);
+}
+
+static void
+dvd_title_menu_action_callback (GtkAction *action, Totem *totem)
+{
+        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_TITLE_MENU);
+}
+
+static void
+dvd_audio_menu_action_callback (GtkAction *action, Totem *totem)
+{
+        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_AUDIO_MENU);
+}
+
+static void
+dvd_angle_menu_action_callback (GtkAction *action, Totem *totem)
+{
+        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_ANGLE_MENU);
+}
+
+static void
+dvd_chapter_menu_action_callback (GtkAction *action, Totem *totem)
+{
+        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_CHAPTER_MENU);
+}
+
+static void
+next_chapter_action_callback (GtkAction *action, Totem *totem)
+{
+	TOTEM_PROFILE (totem_action_next (totem));
+}
+
+static void
+previous_chapter_action_callback (GtkAction *action, Totem *totem)
+{
+	TOTEM_PROFILE (totem_action_previous (totem));
+}
+
+static void
+commit_hide_skip_to (GtkDialog *dialog, gint response, Totem *totem)
+{
+	GError *err = NULL;
+
+	if (response != GTK_RESPONSE_OK)
+	{
+		gtk_widget_destroy (GTK_WIDGET (totem->skipto));
+		return;
+	}
+
+	gtk_widget_hide (GTK_WIDGET (dialog));
+
+	bacon_video_widget_seek_time (totem->bvw,
+			totem_skipto_get_range (totem->skipto), &err);
+
+	gtk_widget_destroy (GTK_WIDGET (totem->skipto));
+
+	if (err != NULL)
+	{
+		char *msg, *disp;
+
+		disp = totem_uri_escape_for_display (totem->mrl);
+		msg = g_strdup_printf(_("Totem could not seek in '%s'."), disp);
+		g_free (disp);
+		totem_action_stop (totem);
+		totem_playlist_set_playing (totem->playlist, FALSE);
+		totem_action_error (msg, err->message, totem);
+		g_free (msg);
+		g_error_free (err);
+	}
+}
+
+static void
+skip_to_action_callback (GtkAction *action, Totem *totem)
+{
+	char *filename;
+
+	if (totem->seekable == FALSE)
+		return;
+
+	if (totem->skipto != NULL)
+	{
+		gtk_window_present (GTK_WINDOW (totem->skipto));
+		return;
+	}
+
+	filename = totem_interface_get_full_path ("skip_to.glade");
+	totem->skipto = TOTEM_SKIPTO (totem_skipto_new (filename));
+	g_free (filename);
+
+	g_signal_connect (G_OBJECT (totem->skipto), "delete-event",
+			G_CALLBACK (gtk_widget_destroy), NULL);
+	g_signal_connect (G_OBJECT (totem->skipto), "response",
+			G_CALLBACK (commit_hide_skip_to), totem);
+	g_object_add_weak_pointer (G_OBJECT (totem->skipto),
+			(gpointer *)&totem->skipto);
+	gtk_window_set_transient_for (GTK_WINDOW (totem->skipto),
+			GTK_WINDOW (totem->win));
+	gtk_widget_show (GTK_WIDGET (totem->skipto));
+}
+
+static void
+skip_forward_action_callback (GtkAction *action, Totem *totem)
+{
+	totem_action_seek_relative (totem, SEEK_FORWARD_OFFSET);
+}
+
+static void
+skip_backwards_action_callback (GtkAction *action, Totem *totem)
+{
+	totem_action_seek_relative (totem, SEEK_BACKWARD_OFFSET);
+}
+
+static void
+volume_up_action_callback (GtkAction *action, Totem *totem)
+{
+	totem_action_volume_relative (totem, VOLUME_UP_OFFSET);
+}
+
+static void
+volume_down_action_callback (GtkAction *action, Totem *totem)
+{
+	totem_action_volume_relative (totem, VOLUME_DOWN_OFFSET);
+}
+
+static void
+contents_action_callback (GtkAction *action, Totem *totem)
+{
 #ifndef HAVE_GTK_ONLY
-static void
-on_help_activate (GtkButton *button, Totem *totem)
-{
 	GError *err = NULL;
 
 	if (gnome_help_display ("totem.xml", NULL, &err) == FALSE)
@@ -1969,11 +2068,11 @@
 		totem_action_error (_("Totem could not display the help contents."), err->message, totem);
 		g_error_free (err);
 	}
+#endif /* !HAVE_GTK_ONLY */
 }
-#endif /* !HAVE_GTK_ONLY */
 
 static void
-on_about1_activate (GtkButton *button, Totem *totem)
+about_action_callback (GtkAction *action, Totem *totem)
 {
 	char *backend_version, *description;
 	const char *frontend_type;
@@ -2035,163 +2134,153 @@
 }
 
 static void
-on_take_screenshot1_activate (GtkButton *button, Totem *totem)
-{
-	GdkPixbuf *pixbuf;
-	GtkWidget *dialog;
-	char *filename;
-	GError *err = NULL;
-
-	if (bacon_video_widget_get_logo_mode (totem->bvw) != FALSE)
-		return;
-
-	if (bacon_video_widget_can_get_frames (totem->bvw, &err) == FALSE)
-	{
-		if (err == NULL)
-			return;
-
-		totem_action_error (_("Totem could not get a screenshot of that film."), err->message, totem);
-		g_error_free (err);
-		return;
-	}
-
-	pixbuf = bacon_video_widget_get_current_frame (totem->bvw);
-	if (pixbuf == NULL)
-	{
-		totem_action_error (_("Totem could not get a screenshot of that film."), _("This is not supposed to happen; please file a bug report."), totem);
-		return;
-	}
-
-	filename = g_build_filename (DATADIR,
-			"totem", "screenshot.glade", NULL);
-	dialog = totem_screenshot_new (filename, pixbuf);
-	g_free (filename);
-
-	gtk_dialog_run (GTK_DIALOG (dialog));
-	gtk_widget_destroy (dialog);
-	gdk_pixbuf_unref (pixbuf);
-}
-
-static void
-on_preferences1_activate (GtkButton *button, Totem *totem)
-{
-	gtk_widget_show (totem->prefs);
-}
-
-static void
-on_dvd_root_menu1_activate (GtkButton *button, Totem *totem)
-{
-        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_ROOT_MENU);
-}
-
-static void
-on_dvd_title_menu1_activate (GtkButton *button, Totem *totem)
-{
-        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_TITLE_MENU);
-}
-
-static void
-on_dvd_audio_menu1_activate (GtkButton *button, Totem *totem)
-{
-        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_AUDIO_MENU);
-}
-
-static void
-on_dvd_angle_menu1_activate (GtkButton *button, Totem *totem)
-{
-        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_ANGLE_MENU);
-}
-
-static void
-on_dvd_chapter_menu1_activate (GtkButton *button, Totem *totem)
-{
-        bacon_video_widget_dvd_event (totem->bvw, BVW_DVD_CHAPTER_MENU);
-}
-
-static void
-commit_hide_skip_to (GtkDialog *dialog, gint response, Totem *totem)
-{
-	GError *err = NULL;
-
-	if (response != GTK_RESPONSE_OK)
-	{
-		gtk_widget_destroy (GTK_WIDGET (totem->skipto));
-		return;
-	}
-
-	gtk_widget_hide (GTK_WIDGET (dialog));
-
-	bacon_video_widget_seek_time (totem->bvw,
-			totem_skipto_get_range (totem->skipto), &err);
-
-	gtk_widget_destroy (GTK_WIDGET (totem->skipto));
-
-	if (err != NULL)
-	{
-		char *msg, *disp;
-
-		disp = totem_uri_escape_for_display (totem->mrl);
-		msg = g_strdup_printf(_("Totem could not seek in '%s'."), disp);
-		g_free (disp);
-		totem_action_stop (totem);
-		totem_playlist_set_playing (totem->playlist, FALSE);
-		totem_action_error (msg, err->message, totem);
-		g_free (msg);
-		g_error_free (err);
-	}
-}
-
-static void
-on_skip_to1_activate (GtkButton *button, Totem *totem)
-{
-	char *filename;
-
-	if (totem->seekable == FALSE)
-		return;
-
-	if (totem->skipto != NULL)
-	{
-		gtk_window_present (GTK_WINDOW (totem->skipto));
-		return;
-	}
-
-	filename = totem_interface_get_full_path ("skip_to.glade");
-	totem->skipto = TOTEM_SKIPTO (totem_skipto_new (filename));
-	g_free (filename);
-
-	g_signal_connect (G_OBJECT (totem->skipto), "delete-event",
-			G_CALLBACK (gtk_widget_destroy), NULL);
-	g_signal_connect (G_OBJECT (totem->skipto), "response",
-			G_CALLBACK (commit_hide_skip_to), totem);
-	g_object_add_weak_pointer (G_OBJECT (totem->skipto),
-			(gpointer *)&totem->skipto);
-	gtk_window_set_transient_for (GTK_WINDOW (totem->skipto),
-			GTK_WINDOW (totem->win));
-	gtk_widget_show (GTK_WIDGET (totem->skipto));
-}
-
-static void
-on_skip_forward1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_seek_relative (totem, SEEK_FORWARD_OFFSET);
-}
-
-static void
-on_skip_backwards1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_seek_relative (totem, SEEK_BACKWARD_OFFSET);
-}
-
-static void
-on_volume_up1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_volume_relative (totem, VOLUME_UP_OFFSET);
-}
-
-static void
-on_volume_down1_activate (GtkButton *button, Totem *totem)
-{
-	totem_action_volume_relative (totem, VOLUME_DOWN_OFFSET);
+repeat_mode_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	totem_playlist_set_repeat (totem->playlist,
+			gtk_toggle_action_get_active (action));
+}
+
+static void
+shuffle_mode_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	totem_playlist_set_shuffle (totem->playlist,
+			gtk_toggle_action_get_active (action));
+}
+
+static void
+deinterlace_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	gboolean value;
+
+	value = gtk_toggle_action_get_active (action);
+	bacon_video_widget_set_deinterlacing (totem->bvw, value);
+	gconf_client_set_bool (totem->gc, GCONF_PREFIX"/deinterlace",
+			value, NULL);
+}
+
+static void
+always_on_top_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	gtk_window_set_keep_above (GTK_WINDOW (totem->win),
+			gtk_toggle_action_get_active (action));
+	gconf_client_set_bool (totem->gc,
+			GCONF_PREFIX"/window_on_top",
+			gtk_toggle_action_get_active (action), NULL);
+}
+
+static void
+show_controls_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	gboolean show;
+
+	show = gtk_toggle_action_get_active (action);
+
+	/* Let's update our controls visibility */
+	if (show)
+		totem->controls_visibility = TOTEM_CONTROLS_VISIBLE;
+	else
+		totem->controls_visibility = TOTEM_CONTROLS_HIDDEN;
+
+	show_controls (totem, FALSE);
+}
+
+static void
+show_sidebar_action_callback (GtkToggleAction *action, Totem *totem)
+{
+	totem_sidebar_toggle (totem);
+}
+
+static void
+aspect_ratio_changed_callback (GtkRadioAction *action, GtkRadioAction *current, Totem *totem)
+{
+	totem_action_set_aspect_ratio (totem, gtk_radio_action_get_current_value (current));
+}
+
+static void
+on_fs_exit1_activate (GtkButton *button, Totem *totem)
+{
+	totem_action_fullscreen_toggle (totem);
+}
+
+static void
+show_controls (Totem *totem, gboolean was_fullscreen)
+{
+	GtkWidget *menubar, *controlbar, *statusbar, *bvw_vbox, *widget;
+	int width = 0, height = 0;
+
+	if (totem->bvw == NULL)
+		return;
+
+	menubar = glade_xml_get_widget (totem->xml, "tmw_menubar_box");
+	controlbar = glade_xml_get_widget (totem->xml, "tmw_controls_vbox");
+	statusbar = glade_xml_get_widget (totem->xml, "tmw_statusbar");
+	bvw_vbox = glade_xml_get_widget (totem->xml, "tmw_bvw_vbox");
+	widget = GTK_WIDGET (totem->bvw);
+
+	if (totem->controls_visibility == TOTEM_CONTROLS_VISIBLE)
+	{
+		if (was_fullscreen == FALSE)
+		{
+			height = widget->allocation.height;
+			width =	widget->allocation.width;
+		}
+
+		gtk_widget_set_sensitive (menubar, TRUE);
+		gtk_widget_show (menubar);
+		gtk_widget_show (controlbar);
+		gtk_widget_show (statusbar);
+		if (totem_sidebar_is_visible (totem) != FALSE)
+			gtk_widget_show (totem->sidebar);
+		else
+			gtk_widget_hide (totem->sidebar);
+
+		gtk_container_set_border_width (GTK_CONTAINER (bvw_vbox),
+				BVW_VBOX_BORDER_WIDTH);
+
+		if (was_fullscreen == FALSE)
+		{
+			totem_widget_set_preferred_size (widget,
+					width, height);
+		}
+	} else {
+		if (totem->controls_visibility == TOTEM_CONTROLS_HIDDEN)
+		{
+			width = widget->allocation.width;
+			height = widget->allocation.height;
+		}
+
+		/* Hide and make the menubar unsensitive */
+		gtk_widget_set_sensitive (menubar, FALSE);
+		gtk_widget_hide (menubar);
+
+		gtk_widget_hide (controlbar);
+		gtk_widget_hide (statusbar);
+		gtk_widget_hide (totem->sidebar);
+
+		 /* We won't show controls in fullscreen */
+		gtk_container_set_border_width (GTK_CONTAINER (bvw_vbox), 0);
+
+		if (totem->controls_visibility == TOTEM_CONTROLS_HIDDEN)
+		{
+			gtk_window_resize (GTK_WINDOW(totem->win),
+					width, height);
+		}
+	}
+}
+
+void
+totem_action_toggle_controls (Totem *totem)
+{
+	GtkAction *action;
+	gboolean state;
+
+	if (totem_is_fullscreen (totem) != FALSE)
+		return;
+
+	action = gtk_action_group_get_action (totem->main_action_group,
+		"show-controls");
+	state = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), !state);
 }
 
 static void
@@ -2409,33 +2498,33 @@
 static void
 playlist_repeat_toggle_cb (TotemPlaylist *playlist, gboolean repeat, Totem *totem)
 {
-	GtkWidget *item;
-
-	item = glade_xml_get_widget (totem->xml, "tmw_repeat_mode_menu_item");
-
-	g_signal_handlers_disconnect_by_func (G_OBJECT (item),
-			on_repeat_mode1_toggled, totem);
-
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), repeat);
-
-	g_signal_connect (G_OBJECT (item), "toggled",
-			G_CALLBACK (on_repeat_mode1_toggled), totem);
+	GtkAction *action;
+
+	action = gtk_action_group_get_action (totem->main_action_group, "repeat-mode");
+
+	g_signal_handlers_block_by_func (G_OBJECT (action),
+			repeat_mode_action_callback, totem);
+
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), repeat);
+
+	g_signal_handlers_unblock_by_func (G_OBJECT (action),
+			repeat_mode_action_callback, totem);
 }
 
 static void
 playlist_shuffle_toggle_cb (TotemPlaylist *playlist, gboolean shuffle, Totem *totem)
 {
-	GtkWidget *item;
-
-	item = glade_xml_get_widget (totem->xml, "tmw_shuffle_mode_menu_item");
-
-	g_signal_handlers_disconnect_by_func (G_OBJECT (item),
-			on_shuffle_mode1_toggled, totem);
-
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), shuffle);
-
-	g_signal_connect (G_OBJECT (item), "toggled",
-			G_CALLBACK (on_shuffle_mode1_toggled), totem);
+	GtkAction *action;
+
+	action = gtk_action_group_get_action (totem->main_action_group, "shuffle-mode");
+
+	g_signal_handlers_block_by_func (G_OBJECT (action),
+			shuffle_mode_action_callback, totem);
+
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), shuffle);
+
+	g_signal_handlers_unblock_by_func (G_OBJECT (action),
+			shuffle_mode_action_callback, totem);
 }
 
 static void
@@ -2717,7 +2806,7 @@
 	case GDK_O:
 	case GDK_o:
 		totem_action_fullscreen (totem, FALSE);
-		on_open1_activate (NULL, totem);
+		open_action_callback (NULL, totem);
 		break;
 #ifdef HAVE_XFREE
 	case XF86XK_AudioPlay:
@@ -2738,9 +2827,9 @@
 	case GDK_s:
 	case GDK_S:
 		if (event->state & GDK_CONTROL_MASK) {
-			on_take_screenshot1_activate (NULL, totem);
+			take_screenshot_action_callback (NULL, totem);
 		} else {
-			on_skip_to1_activate (NULL, totem);
+			skip_to_action_callback (NULL, totem);
 		}
 		break;
 	case GDK_t:
@@ -2993,17 +3082,17 @@
 
 	playing = totem_playing_dvd (totem->mrl);
 
-	totem_main_set_sensitivity ("tmw_dvd_root_menu_item", playing);
-	totem_main_set_sensitivity ("tmw_dvd_title_menu_item", playing);
-	totem_main_set_sensitivity ("tmw_dvd_audio_menu_item", playing);
-	totem_main_set_sensitivity ("tmw_dvd_angle_menu_item", playing);
-	totem_main_set_sensitivity ("tmw_dvd_chapter_menu_item", playing);
+	totem_action_set_sensitivity ("dvd-root-menu", playing);
+	totem_action_set_sensitivity ("dvd-title-menu", playing);
+	totem_action_set_sensitivity ("dvd-audio-menu", playing);
+	totem_action_set_sensitivity ("dvd-angle-menu", playing);
+	totem_action_set_sensitivity ("dvd-chapter-menu", playing);
 	/* FIXME we should only show that if we have multiple angles */
-	totem_main_set_sensitivity ("tmw_next_angle_menu_item", playing);
+	totem_action_set_sensitivity ("next-angle", playing);
 
 	playing = totem_is_media (totem->mrl);
 
-	totem_main_set_sensitivity ("tmw_eject_menu_item", playing);
+	totem_action_set_sensitivity ("eject", playing);
 }
 
 static void
@@ -3022,8 +3111,7 @@
 
 	totem_main_set_sensitivity ("tmw_previous_button", has_item);
 	totem_main_set_sensitivity ("tcw_previous_button", has_item);
-	totem_main_set_sensitivity ("tmw_previous_chapter_menu_item", has_item);
-	totem_popup_set_sensitivity ("trcm_previous_chapter", has_item);
+	totem_action_set_sensitivity ("previous-chapter", has_item);
 
 	/* Next */
 	/* FIXME Need way to detect if DVD Title has no more chapters */
@@ -3036,8 +3124,7 @@
 
 	totem_main_set_sensitivity ("tmw_next_button", has_item);
 	totem_main_set_sensitivity ("tcw_next_button", has_item);
-	totem_main_set_sensitivity ("tmw_next_chapter_menu_item", has_item);
-	totem_popup_set_sensitivity ("trcm_next_chapter", has_item);
+	totem_action_set_sensitivity ("next-chapter", has_item);
 }
 
 static void
@@ -3132,154 +3219,23 @@
 totem_callback_connect (Totem *totem)
 {
 	GtkWidget *item;
+	GtkAction *action;
 
 	/* Menu items */
-	item = glade_xml_get_widget (totem->xml, "tmw_open_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_open1_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_open_location_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_open_location1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_eject_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_eject1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_play_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_play1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_fullscreen_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_full_screen1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_resize_1_2_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_resize_1_2_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_resize_1_1_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_resize_1_1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_resize_2_1_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_resize_2_1_activate), totem);
-	if (bacon_video_widget_can_set_zoom (totem->bvw) != FALSE)
-	{
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_in_menu_item");
-		g_signal_connect (G_OBJECT (item), "activate",
-				G_CALLBACK (on_zoom_in_activate), totem);
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_reset_menu_item");
-		g_signal_connect (G_OBJECT (item), "activate",
-				G_CALLBACK (on_zoom_reset_activate), totem);
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_out_menu_item");
-		g_signal_connect (G_OBJECT (item), "activate",
-				G_CALLBACK (on_zoom_out_activate), totem);
-	} else {
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_in_menu_item");
-		gtk_widget_hide (item);
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_reset_menu_item");
-		gtk_widget_hide (item);
-		item = glade_xml_get_widget
-			(totem->xml, "tmw_zoom_out_menu_item");
-		gtk_widget_hide (item);
-	}
-
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_aspect_ratio_auto_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_aspect_ratio_auto_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_aspect_ratio_square_menu_item");
-        g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_aspect_ratio_square_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_aspect_ratio_fbt_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_aspect_ratio_fbt_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_aspect_ratio_anamorphic_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_aspect_anamorphic_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_aspect_ratio_dvb_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_aspect_ratio_dvb_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_repeat_mode_menu_item");
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
-			totem_playlist_get_repeat (totem->playlist));
-	g_signal_connect (G_OBJECT (item), "toggled",
-			G_CALLBACK (on_repeat_mode1_toggled), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_shuffle_mode_menu_item");
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
-			totem_playlist_get_shuffle (totem->playlist));
-	g_signal_connect (G_OBJECT (item), "toggled",
-			G_CALLBACK (on_shuffle_mode1_toggled), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_quit_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_quit1_activate), totem);
-
-	/* Help */
-	item = glade_xml_get_widget (totem->xml, "tmw_about_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_about1_activate), totem);
-
-#ifndef HAVE_GTK_ONLY
-	item = glade_xml_get_widget (totem->xml, "tmw_contents_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_help_activate), totem);
-#else
-	item = glade_xml_get_widget (totem->xml, "tmw_contents_menu_item");
-	gtk_widget_hide (item);
-#endif /* !HAVE_GTK_ONLY */
-
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_take_screenshot_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_take_screenshot1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_preferences_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_preferences1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_volume_up_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_volume_up1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_volume_down_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_volume_down1_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_always_on_top_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_always_on_top1_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_show_controls_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_show_controls1_activate), totem);
-
-	/* Popup menu */
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_play");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_play1_activate), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_next_chapter");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_next_button_clicked), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_previous_chapter");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_previous_button_clicked), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_skip_forward");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_skip_forward1_activate), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_skip_backwards");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_skip_backwards1_activate), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_volume_up");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_volume_up1_activate), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_volume_down");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_volume_down1_activate), totem);
-	item = glade_xml_get_widget (totem->xml_popup, "trcm_show_controls");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_show_controls2_activate), totem);
+	gtk_action_group_set_visible (totem->zoom_action_group,
+		bacon_video_widget_can_set_zoom (totem->bvw));
+
+	action = gtk_action_group_get_action (totem->main_action_group, "repeat-mode");
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+		totem_playlist_get_repeat (totem->playlist));
+	action = gtk_action_group_get_action (totem->main_action_group, "shuffle-mode");
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+		totem_playlist_get_shuffle (totem->playlist));
+
+#ifdef HAVE_GTK_ONLY
+	action = gtk_action_group_get_action (totem->main_action_group, "contents");
+	gtk_action_set_visible (action, FALSE)
+#endif /* HAVE_GTK_ONLY */
 
 	/* Controls */
 	totem->pp_button = glade_xml_get_widget
@@ -3409,45 +3365,11 @@
 
 	/* Playlist */
 
-	/* DVD menu callbacks */
-	item = glade_xml_get_widget (totem->xml, "tmw_dvd_root_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_dvd_root_menu1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_dvd_title_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_dvd_title_menu1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_dvd_audio_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_dvd_audio_menu1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_dvd_angle_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_dvd_angle_menu1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_dvd_chapter_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_dvd_chapter_menu1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_skip_to_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_skip_to1_activate), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_next_chapter_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_next_button_clicked), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_previous_chapter_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_previous_button_clicked), totem);
-	item = glade_xml_get_widget (totem->xml, "tmw_skip_forward_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_skip_forward1_activate), totem);
-	item = glade_xml_get_widget (totem->xml,
-			"tmw_skip_backwards_menu_item");
-	g_signal_connect (G_OBJECT (item), "activate",
-			G_CALLBACK (on_skip_backwards1_activate), totem);
-
 	/* Subtitle and Languages submenu */
-	item = glade_xml_get_widget (totem->xml, "tmw_menu_languages");
+	/*item = glade_xml_get_widget (totem->xml, "tmw_menu_languages");
 	g_object_ref (item);
 	item = glade_xml_get_widget (totem->xml, "tmw_menu_subtitles");
-	g_object_ref (item);
+	g_object_ref (item);*/
 
 	/* Named icon support */
 	totem_set_default_icons (totem);
@@ -3638,6 +3560,10 @@
 {
 	Totem *totem;
 	GConfClient *gc;
+	char *filename;
+	GtkWidget *menubar;
+	GtkWidget *menubar_box;
+	GtkAction *action;
 
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -3703,16 +3629,70 @@
 			TRUE, NULL);
 	if (totem->xml == NULL)
 		totem_action_exit (NULL);
-	totem->xml_popup = totem_interface_load ("popup.glade",
-			_("video popup menu"),
-			TRUE, NULL);
-	if (totem->xml_popup == NULL)
-		totem_action_exit (NULL);
 
 	totem->win = glade_xml_get_widget (totem->xml, "totem_main_window");
 	
 	totem_named_icons_init (totem, FALSE);
 
+	/* Menubar */
+	totem->main_action_group = gtk_action_group_new ("main-action-group");
+	gtk_action_group_set_translation_domain (totem->main_action_group, GETTEXT_PACKAGE);
+	gtk_action_group_add_actions (totem->main_action_group, entries,
+		G_N_ELEMENTS (entries), totem);
+	gtk_action_group_add_toggle_actions (totem->main_action_group, 
+		toggle_entries, G_N_ELEMENTS (toggle_entries), totem);
+	gtk_action_group_add_radio_actions (totem->main_action_group, 
+		aspect_ratio_entries, G_N_ELEMENTS (aspect_ratio_entries), 0,
+		G_CALLBACK (aspect_ratio_changed_callback), totem);
+
+	action = g_object_new (GTK_TYPE_ACTION,
+			"name", "subtitles-menu",
+			"label", "S_ubtitles",
+			"hide-if-empty", FALSE, NULL);
+	gtk_action_group_add_action (totem->main_action_group, action);
+	g_object_unref (action);
+	action = g_object_new (GTK_TYPE_ACTION,
+			"name", "languages-menu",
+			"label", "_Languages",
+			"hide-if-empty", FALSE, NULL);
+	gtk_action_group_add_action (totem->main_action_group, action);
+	g_object_unref (action);
+
+	totem->zoom_action_group = gtk_action_group_new ("zoom-action-group");
+	gtk_action_group_set_translation_domain (totem->zoom_action_group, GETTEXT_PACKAGE);
+	gtk_action_group_add_actions (totem->zoom_action_group, zoom_entries,
+		G_N_ELEMENTS (zoom_entries), totem);
+
+	totem->ui_manager = gtk_ui_manager_new ();
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+		totem->main_action_group, 0);
+	gtk_ui_manager_insert_action_group (totem->ui_manager,
+		totem->zoom_action_group, -1);
+
+	totem->devices_action_group = NULL;
+	totem->devices_ui_id = gtk_ui_manager_new_merge_id (totem->ui_manager);
+	totem->languages_action_group = NULL;
+	totem->languages_ui_id = gtk_ui_manager_new_merge_id (totem->ui_manager);
+	totem->subtitles_action_group = NULL;
+	totem->subtitles_ui_id = gtk_ui_manager_new_merge_id (totem->ui_manager);
+
+	gtk_window_add_accel_group (GTK_WINDOW (totem->win),
+		gtk_ui_manager_get_accel_group (totem->ui_manager));
+
+	filename = totem_interface_get_full_path ("totem-ui.xml");
+	if (!gtk_ui_manager_add_ui_from_file (totem->ui_manager, filename, NULL)) {
+		totem_interface_error_blocking (
+			_("Couldn't load the 'ui description' file"),
+			_("Make sure that Totem is properly installed."),
+			GTK_WINDOW (totem->win));
+		totem_action_exit (NULL);
+	}
+	g_free (filename);
+
+	menubar = gtk_ui_manager_get_widget (totem->ui_manager, "/tmw-menubar");
+	menubar_box = glade_xml_get_widget (totem->xml, "tmw_menubar_box");
+	gtk_box_pack_start (GTK_BOX (menubar_box), menubar, FALSE, FALSE, 0);
+
 	/* The sidebar */
 	playlist_widget_setup (totem);
 	totem->properties = bacon_video_widget_properties_new ();

