[Rhythmbox-devel] No-burner support



I'd been wondering for a while whether I could disable the CD-burning support in Rhythmbox entirely, as I never use it (my system doesn't even have a burner). As it turns out I couldn't, so I've written a patch to support this. Default behaviour is as current, but with the --disable-nautilus-burn flag given to configure, CD burning is switched off entirely. As well as the patch enclosed here, you'll also need the rhythmbox-ui.xml.in and sifter.pl (used to generate rhythmbox-ui.xml from the .in with or without burner menu/popup options).

WFM, applies against current CVS Head. Hopefully of some interest to other people.

Tom Parker
--
palfrey tevp net - http://tevp.net
Illegitimus non carborundum
Index: Makefile.am
===================================================================
RCS file: /cvs/gnome/rhythmbox/Makefile.am,v
retrieving revision 1.51
diff -u -p -r1.51 Makefile.am
--- Makefile.am	12 May 2006 16:04:44 -0000	1.51
+++ Makefile.am	8 Jun 2006 13:19:21 -0000
@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = 1.7
 DISTCHECK_CONFIGURE_FLAGS = --disable-schemas-install --enable-gtk-doc --disable-scrollkeeper
 distuninstallcheck_listfiles = find . -type f -print | grep -v '^\./var/scrollkeeper'
 
-SUBDIRS = macros lib metadata player rhythmdb widgets sources iradio podcast \
+SUBDIRS = macros lib metadata $(PLAYER_MODULE) rhythmdb widgets sources iradio podcast \
 	daapsharing backends plugins bindings shell data po help tests doc
 
 EXTRA_DIST = 			\
Index: configure.ac
===================================================================
RCS file: /cvs/gnome/rhythmbox/configure.ac,v
retrieving revision 1.245
diff -u -p -r1.245 configure.ac
--- configure.ac	8 Jun 2006 06:31:10 -0000	1.245
+++ configure.ac	8 Jun 2006 13:19:22 -0000
@@ -559,22 +559,34 @@ AM_CONDITIONAL(HAVE_LINUX_CDROM, test "x
 
 NCB_DRIVE_DOOR_VERSION=2.11.3
 dnl CD burner support
-PKG_CHECK_MODULES(LIBNAUTILUS_BURN, [libnautilus-burn >= $NCB_MIN_REQS], have_cd_burner=yes, have_cd_burner=no)
-if test "x$have_cd_burner" = xno; then
-   AC_MSG_ERROR([libnautilus-burn not found or too cold])	   
-fi
-AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_door_is_open,
-    [AC_DEFINE([HAVE_BURN_DRIVE_DOOR], 1, [Have nautilus-burn function to check drive door state])],
-    ,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
-AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_unref,
-    [AC_DEFINE([HAVE_BURN_DRIVE_UNREF], 1, [Have nautilus-burn 2.13 drive unref function])],
-    ,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
-AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_new_from_path,
-    [AC_DEFINE([HAVE_BURN_DRIVE_NEW_FROM_PATH], 1, [Have nautilus-burn 2.13 drive new_from_path function])],
-    ,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
-AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_get_write_speeds,
-    [AC_DEFINE([HAVE_BURN_DRIVE_GET_WRITE_SPEEDS], 1, [Have nautilus-burn 2.13 drive get_write_speeds])],
-    ,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
+AC_ARG_ENABLE(nautilus-burn,
+	      AC_HELP_STRING([--disable-nautilus-burn],
+			     [Disable cd burner support in rhythmbox]))
+if test x"$enable_nautilus_burn" != xno; then
+	PKG_CHECK_MODULES(LIBNAUTILUS_BURN, [libnautilus-burn >= $NCB_MIN_REQS], have_cd_burner=yes, have_cd_burner=no)
+	if test "x$have_cd_burner" = xyes; then
+		AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_door_is_open,
+			[AC_DEFINE([HAVE_BURN_DRIVE_DOOR], 1, [Have nautilus-burn function to check drive door state])],
+			,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
+		AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_unref,
+			[AC_DEFINE([HAVE_BURN_DRIVE_UNREF], 1, [Have nautilus-burn 2.13 drive unref function])],
+			,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
+		AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_new_from_path,
+			[AC_DEFINE([HAVE_BURN_DRIVE_NEW_FROM_PATH], 1, [Have nautilus-burn 2.13 drive new_from_path function])],
+			,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
+		AC_CHECK_LIB(nautilus-burn, nautilus_burn_drive_get_write_speeds,
+			[AC_DEFINE([HAVE_BURN_DRIVE_GET_WRITE_SPEEDS], 1, [Have nautilus-burn 2.13 drive get_write_speeds])],
+			,[$LIBNAUTILUS_BURN_LIBS $LIBNAUTILUS_BURN_CFLAGS])
+		AC_DEFINE(HAVE_NAUTILUS_BURN, 1, [defined if you have nautilus-burn])
+		PLAYER_MODULE=player
+	else	
+		AC_MSG_ERROR([libnautilus-burn not found or too cold])	   
+	fi
+else
+	PLAYER_MODULE=
+fi	
+AC_SUBST(PLAYER_MODULE)
+AM_CONDITIONAL(HAVE_NAUTILUS_BURN, test "x$enable_nautilus_burn" != "xno")
 
 AC_SUBST(CFLAGS)
 AC_SUBST(LDFLAGS)

@@ -944,7 +955,11 @@ fi
 if test x"${with_rhythmdb_debug}" != x0; then
 	AC_MSG_NOTICE([** RhythmDB sanity checking enabled (may be slow!)])
 fi
-
+if test x"$enable_nautilus_burn" = xyes; then
+        AC_MSG_NOTICE([** CD burning is enabled])
+else
+	AC_MSG_NOTICE([   CD burning is disabled])
+fi
 
 if test x"$enable_tag_writing" = xyes; then
         AC_MSG_NOTICE([** Tag writing is enabled - USE AT YOUR OWN RISK])
Index: data/ui/Makefile.am
===================================================================
RCS file: /cvs/gnome/rhythmbox/data/ui/Makefile.am,v
retrieving revision 1.17
diff -u -p -r1.17 Makefile.am
--- data/ui/Makefile.am	25 May 2006 07:20:46 -0000	1.17
+++ data/ui/Makefile.am	8 Jun 2006 13:19:22 -0000
@@ -3,5 +3,9 @@
 uixmldir = $(pkgdatadir)
 uixml_DATA = rhythmbox-ui.xml ipod-ui.xml daap-ui.xml generic-player-ui.xml
 
-EXTRA_DIST = rhythmbox-ui.xml ipod-ui.xml daap-ui.xml generic-player-ui.xml
+EXTRA_DIST = rhythmbox-ui.xml.in ipod-ui.xml daap-ui.xml generic-player-ui.xml
 
+export
+
+rhythmbox-ui.xml: rhythmbox-ui.xml.in Makefile sifter.pl
+	./sifter.pl $< $@
Index: player/rb-recorder-gst.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/player/rb-recorder-gst.c,v
retrieving revision 1.26
diff -u -p -r1.26 rb-recorder-gst.c
--- player/rb-recorder-gst.c	2 Jun 2006 05:58:18 -0000	1.26
+++ player/rb-recorder-gst.c	8 Jun 2006 13:19:22 -0000
@@ -100,7 +100,8 @@ struct _RBRecorderPrivate {
         double      progress;
         GList      *tracks;
 
+#ifdef HAVE_NAUTILUS_BURN
         NautilusBurnDrive    *drive;
         NautilusBurnRecorder *recorder;
 
         gboolean    playing;

Index: shell/Makefile.am
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/Makefile.am,v
retrieving revision 1.83
diff -u -p -r1.83 Makefile.am
--- shell/Makefile.am	14 May 2006 00:00:55 -0000	1.83
+++ shell/Makefile.am	8 Jun 2006 13:19:22 -0000
@@ -100,13 +100,16 @@ rhythmbox_LDADD =					\
 	$(top_builddir)/sources/libsourcesimpl.la	\
 	$(top_builddir)/iradio/librbiradio.la	        \
 	$(top_builddir)/podcast/librbpodcast.la	        \
-	$(top_builddir)/player/librbplayer.la		\
 	$(top_builddir)/metadata/librbmetadata.la	\
 	$(top_builddir)/widgets/librbwidgets.la         \
 	$(top_builddir)/rhythmdb/librhythmdb.la         \
 	$(top_builddir)/backends/librbbackends.la	\
 	$(top_builddir)/plugins/librbplugins.la		\
 	$(top_builddir)/lib/librb.la
+
+if HAVE_NAUTILUS_BURN
+rhythmbox_LDADD += $(top_builddir)/player/librbplayer.la
+endif
 
 if USE_DAAP
 INCLUDES += -I$(top_srcdir)/daapsharing
Index: shell/main.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/main.c,v
retrieving revision 1.98
diff -u -p -r1.98 main.c
--- shell/main.c	30 May 2006 13:47:16 -0000	1.98
+++ shell/main.c	8 Jun 2006 13:19:22 -0000
@@ -73,6 +73,7 @@
 #include <dbus/dbus-glib-lowlevel.h>
 #endif
 
+#ifdef HAVE_NAUTILUS_BURN
 #include <nautilus-burn-drive.h>
 #ifndef NAUTILUS_BURN_CHECK_VERSION 	 
 #define NAUTILUS_BURN_CHECK_VERSION(a,b,c) FALSE 	 
@@ -81,6 +82,13 @@
 #if NAUTILUS_BURN_CHECK_VERSION(2,15,3)
 #include <nautilus-burn.h>
 #endif
+
+#else // !HAVE_NAUTILUS_BURN
+#ifndef NAUTILUS_BURN_CHECK_VERSION 	 
+#define NAUTILUS_BURN_CHECK_VERSION(a,b,c) FALSE 	 
+#endif
+
+#endif // HAVE_NAUTILUS_BURN
 
 static gboolean debug           = FALSE;
 static char *debug_match        = NULL;
Index: shell/rb-playlist-manager.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/rb-playlist-manager.c,v
retrieving revision 1.107
diff -u -p -r1.107 rb-playlist-manager.c
--- shell/rb-playlist-manager.c	7 Jun 2006 13:10:39 -0000	1.107
+++ shell/rb-playlist-manager.c	8 Jun 2006 13:19:22 -0000
@@ -70,8 +70,10 @@ static void rb_playlist_manager_cmd_load
 						   RBPlaylistManager *mgr);
 static void rb_playlist_manager_cmd_save_playlist (GtkAction *action,
 						   RBPlaylistManager *mgr);
+#ifdef HAVE_NAUTILUS_BURN
 static void rb_playlist_manager_cmd_burn_playlist (GtkAction *action,
 						   RBPlaylistManager *mgr);
+#endif						   
 static void rb_playlist_manager_cmd_new_playlist (GtkAction *action,
 						  RBPlaylistManager *mgr);
 static void rb_playlist_manager_cmd_new_automatic_playlist (GtkAction *action,
@@ -144,9 +146,11 @@ static GtkActionEntry rb_playlist_manage
 	{ "MusicPlaylistSavePlaylist", GTK_STOCK_SAVE_AS, N_("_Save to File..."), NULL,
 	  N_("Save a playlist to a file"),
 	  G_CALLBACK (rb_playlist_manager_cmd_save_playlist) },
+#ifdef HAVE_NAUTILUS_BURN
 	{ "MusicPlaylistBurnPlaylist", GTK_STOCK_CDROM, N_("_Create Audio CD..."), NULL,
 	  N_("Create an audio CD from playlist"),
 	  G_CALLBACK (rb_playlist_manager_cmd_burn_playlist) },
+#endif  
 	{ "MusicPlaylistRenamePlaylist", NULL, N_("_Rename"), NULL,
 	  N_("Rename playlist"),
 	  G_CALLBACK (rb_playlist_manager_cmd_rename_playlist) },
@@ -314,12 +318,16 @@ static void
 rb_playlist_manager_playlist_entries_changed (GtkTreeModel *model, RhythmDBEntry *entry, RBPlaylistManager *mgr)
 {
 	int num_tracks;
+#ifdef HAVE_NAUTILUS_BURN
 	GtkAction *action;
+#endif	
 
 	num_tracks = gtk_tree_model_iter_n_children (model, NULL);
 
+#ifdef HAVE_NAUTILUS_BURN
 	action = gtk_action_group_get_action (mgr->priv->actiongroup, "MusicPlaylistBurnPlaylist");
 	gtk_action_set_sensitive (action, (num_tracks > 0));
+#endif	
 }
 
 static void
@@ -391,6 +399,7 @@ rb_playlist_manager_set_source (RBPlayli
 					      "MusicPlaylistRenamePlaylist");
 	gtk_action_set_visible (action, can_rename);
 
+#ifdef HAVE_NAUTILUS_BURN
 	action = gtk_action_group_get_action (mgr->priv->actiongroup,
 					      "MusicPlaylistBurnPlaylist");
 	if (playlist_active && rb_recorder_enabled ()) {
@@ -413,6 +422,7 @@ rb_playlist_manager_set_source (RBPlayli
 	} else {
 		gtk_action_set_visible (action, FALSE);
 	}
+#endif	
 }
 
 static void
@@ -1401,12 +1411,14 @@ rb_playlist_manager_cmd_save_playlist (G
 	g_object_unref (G_OBJECT (xml));
 }
 
+#ifdef HAVE_NAUTILUS_BURN
 static void
 rb_playlist_manager_cmd_burn_playlist (GtkAction *action,
 				       RBPlaylistManager *mgr)
 {
 	rb_playlist_source_burn_playlist (RB_PLAYLIST_SOURCE (mgr->priv->selected_source));
 }
+#endif
 
 /**
  * rb_playlist_manager_get_playlists
Index: shell/rb-removable-media-manager.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/rb-removable-media-manager.c,v
retrieving revision 1.28
diff -u -p -r1.28 rb-removable-media-manager.c
--- shell/rb-removable-media-manager.c	2 Jun 2006 22:27:46 -0000	1.28
+++ shell/rb-removable-media-manager.c	8 Jun 2006 13:19:22 -0000
@@ -27,6 +27,7 @@
 #include <gtk/gtk.h>
 
 #include <libgnomevfs/gnome-vfs.h>
+#ifdef HAVE_NAUTILUS_BURN
 
 #include <nautilus-burn-drive.h>
 #ifndef NAUTILUS_BURN_CHECK_VERSION 	 
@@ -37,6 +38,12 @@
 #include <nautilus-burn.h>
 #endif
 
+#else // !HAVE_NAUTILUS_BURN
+#ifndef NAUTILUS_BURN_CHECK_VERSION 	 
+#define NAUTILUS_BURN_CHECK_VERSION(a,b,c) FALSE 	 
+#endif
+#endif
+
 #include "rb-removable-media-manager.h"
 #include "rb-library-source.h"
 #include "rb-sourcelist.h"
@@ -371,7 +379,9 @@ typedef struct
 	gboolean removed;
 	gboolean tray_opened;
 	RBRemovableMediaManager *manager;
+#ifdef HAVE_NAUTILUS_BURN
 	NautilusBurnDrive *drive;
+#endif	
 } RbCdDriveInfo;
 
 #ifdef HAVE_BURN_DRIVE_DOOR
@@ -406,6 +416,7 @@ gboolean poll_tray_opened (RbCdDriveInfo
 }
 #endif
 
+#ifdef HAVE_NAUTILUS_BURN
 static
 void end_cd_drive_monitor (RbCdDriveInfo *info, RBRemovableMediaManager *manager)
 {
@@ -466,8 +477,10 @@ get_nautilus_burn_drive_for_path (const 
 	return path_drive;
 #endif
 }
+#endif
 #endif /* NAUTILUS_BURN < 2.15.3 */
 
+#ifdef HAVE_NAUTILUS_BURN
 static char *
 split_drive_from_cdda_uri (const char *uri)
 {
@@ -538,17 +551,20 @@ rb_removable_media_manager_playing_uri_c
 	g_free (priv->playing_uri);
 	priv->playing_uri = (uri) ? g_strdup (uri) : NULL;
 }
+#endif
 
 	
 static gboolean
 rb_removable_media_manager_load_media (RBRemovableMediaManager *manager)
 {
-	RBRemovableMediaManagerPrivate *priv = REMOVABLE_MEDIA_MANAGER_GET_PRIVATE (manager);
 	GnomeVFSVolumeMonitor *monitor = gnome_vfs_get_volume_monitor ();
+#ifdef HAVE_NAUTILUS_BURN
+	RBRemovableMediaManagerPrivate *priv = REMOVABLE_MEDIA_MANAGER_GET_PRIVATE (manager);
 #if !NAUTILUS_BURN_CHECK_VERSION(2,15,3)
 	GList *drives;
 #endif
 	GObject *shell_player;
+#endif	
 
 	/*
 	 * Monitor new (un)mounted file systems to look for new media
@@ -568,6 +584,7 @@ rb_removable_media_manager_load_media (R
 			  G_CALLBACK (rb_removable_media_manager_volume_unmounted_cb), 
 			  manager);
 
+#ifdef HAVE_NAUTILUS_BURN
 	/*
 	 * Monitor all cd drives for inserted audio cds
 	 *
@@ -586,6 +603,7 @@ rb_removable_media_manager_load_media (R
 	g_signal_connect (shell_player, "playing-uri-changed",
 			  G_CALLBACK (rb_removable_media_manager_playing_uri_changed_cb),
 			  manager);
+#endif			  
 
 	return FALSE;
 }
@@ -819,6 +837,7 @@ rb_removable_media_manager_unmount_volum
 	rb_removable_media_manager_unmount_volume (manager, volume);
 }
 
+#ifdef HAVE_NAUTILUS_BURN
 #if !NAUTILUS_BURN_CHECK_VERSION(2,15,3)
 static const char *
 nautilus_burn_drive_get_device (NautilusBurnDrive *drive)
@@ -828,6 +847,7 @@ nautilus_burn_drive_get_device (Nautilus
 	return drive->device;
 }
 #endif
+#endif
 
 void
 rb_removable_media_manager_scan (RBRemovableMediaManager *manager)
@@ -862,6 +882,7 @@ rb_removable_media_manager_scan (RBRemov
 	}
 	g_list_free (list);
 
+#ifdef HAVE_NAUTILUS_BURN
 	/* scan cd drives */
 #if NAUTILUS_BURN_CHECK_VERSION(2,15,3)
 	list = nautilus_burn_drive_monitor_get_drives (nautilus_burn_get_drive_monitor ());
@@ -878,6 +899,7 @@ rb_removable_media_manager_scan (RBRemov
 		}
 	}
 	g_list_free (list);
+#endif	
 }
 
 
Index: sources/Makefile.am
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/Makefile.am,v
retrieving revision 1.41
diff -u -p -r1.41 Makefile.am
--- sources/Makefile.am	27 May 2006 04:30:50 -0000	1.41
+++ sources/Makefile.am	8 Jun 2006 13:19:22 -0000
@@ -20,8 +20,6 @@ libsourcesimpl_la_SOURCES =		\
 	rb-removable-media-source.h	\
 	rb-audiocd-source.c		\
 	rb-audiocd-source.h		\
-	rb-playlist-source-recorder.c   \
-	rb-playlist-source-recorder.h	\
 	rb-playlist-source.c            \
 	rb-playlist-source.h		\
 	rb-playlist-xml.h		\
@@ -70,6 +68,11 @@ if USE_DAAP
 libsourcesimpl_la_SOURCES += $(daap_files)
 endif
 
+if HAVE_NAUTILUS_BURN
+libsourcesimpl_la_SOURCES += rb-playlist-source-recorder.c   \
+	rb-playlist-source-recorder.h
+endif
+	
 if USE_LIBSOUP
 INCLUDES += $(SOUP_CFLAGS)
 endif
Index: sources/rb-playlist-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-playlist-source.c,v
retrieving revision 1.118
diff -u -p -r1.118 rb-playlist-source.c
--- sources/rb-playlist-source.c	25 May 2006 07:20:48 -0000	1.118
+++ sources/rb-playlist-source.c	8 Jun 2006 13:19:22 -0000
@@ -500,6 +500,7 @@ rb_playlist_source_save_playlist (RBPlay
 				 "%s", error->message);
 }
 
+#ifdef HAVE_NAUTILUS_BURN
 static gboolean
 burn_playlist_iter_func (GtkTreeModel *model, GtkTreeIter *iter, char **uri, char **artist, char **title, gulong *duration)
 {
@@ -545,6 +546,7 @@ rb_playlist_source_burn_playlist (RBPlay
 							  GTK_TREE_MODEL (source->priv->model),
 							  burn_playlist_iter_func,
 							  &error);
+							  
 	if (! res) {
 		rb_error_dialog (GTK_WINDOW (parent),
 				 _("Unable to create audio CD"),
@@ -563,6 +565,7 @@ rb_playlist_source_burn_playlist (RBPlay
 
 	gtk_widget_show (recorder);
 }
+#endif
 
 /* Adapted from yelp-toc-pager.c */
 static xmlChar *
<ui>
  <menubar name="MenuBar">
    <menu name="MusicMenu" action="Music">  
      <menuitem name="MusicImportFileMenu" action="MusicImportFile"/>
      <menuitem name="MusicImportFolderMenu" action="MusicImportFolder"/>
      <separator/>
      <menuitem name="MusicImportCD" action="MusicImportCD"/>
      <menuitem name="MusicScanMedia" action="MusicScanMedia"/>
      <separator/>
      <menu name="PlaylistMenu" action="Playlist">
	<menuitem name="MusicPlaylistNewPlaylistMenu" action="MusicPlaylistNewPlaylist"/>
	<menuitem name="MusicPlaylistNewAutomaticPlaylistMenu" action="MusicPlaylistNewAutomaticPlaylist"/>
	<menuitem name="MusicPlaylistLoadPlaylistMenu" action="MusicPlaylistLoadPlaylist"/>
	<menuitem name="MusicPlaylistSavePlaylistMenu" action="MusicPlaylistSavePlaylist"/>
#HAVE_NAUTILUS_BURN 	<menuitem name="MusicPlaylistBurnPlaylistMenu" action="MusicPlaylistBurnPlaylist"/>
	<menuitem name="MusicPlaylistEditAutoPlaylistMenu" action="EditAutomaticPlaylist"/>
	<separator name="MusicPlaylistSeparator1"/>
	<menuitem name="MusicPlaylistDeletePlaylistMenu" action="MusicPlaylistDeletePlaylist"/>
      </menu>
      <menuitem name="MusicNewInternetRadioStationMenu" action="MusicNewInternetRadioStation"/>
      <menuitem name="MusicNewPodcastMenu" action="MusicNewPodcast"/>
      <separator/>
      <menuitem name="MusicPropertiesMenu" action="MusicProperties"/>
      <separator/>
      <menuitem name="MusicClose" action="MusicClose"/>
      <menuitem name="MusicQuit" action="MusicQuit"/>
    </menu>

    <menu name="EditMenu" action="Edit">
      <menuitem name="EditCutMenu" action="EditCut"/>
      <menuitem name="EditCopyMenu" action="EditCopy"/>
      <menuitem name="EditPasteMenu" action="EditPaste"/>
      <menuitem name="EditDeleteMenu" action="EditDelete"/>
      <separator/> 
      <menuitem name="EditSelectAllMenu" action="EditSelectAll"/>
      <menuitem name="EditSelectNoneMenu" action="EditSelectNone"/>
      <separator/> 
      <menuitem name="EditAddToQueueMenu" action="AddToQueue"/>
      <menu name="EditPlaylistAddMenu" action="EditPlaylistAdd">
        <menuitem name="EditPlaylistAddNew" action="EditPlaylistAddNew"/>
        <separator/> 
        <placeholder name="EditPlaylistAddPlaceholder"/>
      </menu>
      <separator/> 
      <menuitem name="EditMovetoTrash" action="EditMovetoTrash"/>
      <separator/>
      <menuitem name="EditPluginsMenu" action="EditPlugins"/> 
      <menuitem name="EditPreferencesMenu" action="EditPreferences"/> 
    </menu>

    <menu name="ViewMenu" action="View">
      <menuitem name="ViewSmallDisplayMenu" action="ViewSmallDisplay"/>
      <menuitem name="ViewPartyModeMenu" action="ViewPartyMode"/>
      <separator name="ViewSep1"/>
      <menuitem name="ViewSidePaneMenu" action="ViewSidePane"/>
      <menuitem name="ViewQueueAsSidebarMenu" action="ViewQueueAsSidebar"/>
      <menuitem name="ViewBrowserMenu" action="ViewBrowser"/>
      <menuitem name="ViewStatusbarMenu" action="ViewStatusbar"/>
      <menuitem name="ViewToolbarMenu" action="ViewToolbar"/>
      <separator name="ViewSep2"/>
      <menuitem name="ViewAllMenu" action="ViewAll"/>
      <separator name="ViewSep3"/>
      <menuitem name="ViewJumpToPlayingMenu" action="ViewJumpToPlaying"/>
    </menu>

    <menu name="ToolsMenu" action="Tools">
      <placeholder name="ToolsOps_1" />
      <separator/>
      <placeholder name="ToolsOps_2" />
      <separator/>
      <placeholder name="ToolsOps_3" />
      <separator/>
      <placeholder name="ToolsOps_4" />
      <separator/>
      <placeholder name="ToolsOps_5" />
    </menu>

    <menu name="ControlMenu" action="Control">
      <menuitem name="ControlPlayMenu" action="ControlPlay"/>
      <separator name="ControlSep1"/>
      <menuitem name="ControlPreviousMenu" action="ControlPrevious"/>
      <menuitem name="ControlNextMenu" action="ControlNext"/>
      <separator name="ControlSep2"/>
      <menuitem name="ControlVolumeUpMenu" action="ControlVolumeUp"/>
      <menuitem name="ControlVolumeDownMenu" action="ControlVolumeDown"/>
      <separator name="ControlSep3"/>
      <menuitem name="ControlShuffleMenu" action="ControlShuffle"/>
      <menuitem name="ControlRepeatMenu" action="ControlRepeat"/>
    </menu>

    <menu name="HelpMenu" action="Help">
      <menuitem name="HelpContentsMenu" action="HelpContents"/>
      <menuitem name="HelpAboutMenu" action="HelpAbout"/>
    </menu>

  </menubar>

  <toolbar name="ToolBar">
    <toolitem name="Previous" action="ControlPrevious"/>
    <toolitem name="Play" action="ControlPlay"/>
    <toolitem name="Next" action="ControlNext"/>
    <separator/>
    <toolitem name="Repeat" action="ControlRepeat"/>
    <toolitem name="Shuffle" action="ControlShuffle"/>
    <separator/>
    <toolitem name="Browse" action="ViewBrowser"/>
    <separator/>
  </toolbar>

  <toolbar name="SearchBar">
  </toolbar>

  <popup name="RhythmboxTrayPopup">
      <menuitem name="PlayTray" action="ControlPlay"/>
      <separator/>
      <menuitem name="PreviousTray" action="ControlPrevious"/>
      <menuitem name="NextTray" action="ControlNext"/>
      <separator/>
      <menuitem name="ShowWindowTray" action="TrayShowWindow"/>
      <menuitem name="ShowNotifications" action="TrayShowNotifications"/>
      <separator/>
      <menuitem name="QuitTray" action="MusicQuit"/>
  </popup>

  <popup name="BrowserSourceViewPopup">
    <menuitem name="AddToQueueLibraryPopup" action="AddToQueue"/>
    <menu name="BrowserSourcePopupPlaylistAdd" action="EditPlaylistAdd">
      <placeholder name="BrowserSourcePopupPlaylistAddPlaceholder"/>
      <separator/> 
      <menuitem name="BrowserSourcePopupPlaylistAddNew" action="EditPlaylistAddNew"/>
    </menu>
    <menuitem name="CopyLibraryPopup" action="EditCopy"/>
    <separator/>
    <menuitem name="DeleteLibraryPopup" action="EditDelete"/>
    <menuitem name="MovetoTrashPopup" action="EditMovetoTrash"/>
    <separator/>
    <menuitem name="BrowseGenreLibraryPopup" action="BrowserSrcChooseGenre"/>
    <menuitem name="BrowseArtistLibraryPopup" action="BrowserSrcChooseArtist"/>
    <menuitem name="BrowseAlbumLibraryPopup" action="BrowserSrcChooseAlbum"/>
    <separator/>
    <menuitem name="PropertiesLibraryPopup" action="MusicProperties"/>
  </popup>

  <popup name="ImportErrorsViewPopup">
    <menuitem name="MovetoTrashPopup" action="EditMovetoTrash"/>
  </popup>

  <popup name="PlaylistViewPopup">
    <menuitem name="AddToQueuePlaylistPopup" action="AddToQueue"/>
    <menu name="PlaylistPopupPlaylistAdd" action="EditPlaylistAdd">
      <menuitem name="PlaylistPopupPlaylistAddNew" action="EditPlaylistAddNew"/>
      <separator/> 
      <placeholder name="PlaylistPopupPlaylistAddPlaceholder"/>
    </menu>
    <menuitem name="CopyPlaylistPopup" action="EditCopy"/>
    <menuitem name="CutPlaylistPopup" action="EditCut"/>
    <menuitem name="DeletePlaylistPopup" action="EditDelete"/>
    <separator/>
    <menuitem name="MovetoTrashPlaylistPopup" action="EditMovetoTrash"/>
    <separator/>
    <menuitem name="PropertiesPlaylistPopup" action="MusicProperties"/>
  </popup>

  <popup name="QueuePlaylistViewPopup">
    <menuitem name="DeletePlaylistPopup" action="EditDelete"/>
    <separator/>
    <menuitem name="PropertiesPlaylistPopup" action="MusicProperties"/>
  </popup>
  
  <popup name="QueueSidebarViewPopup">
    <menuitem name="DeletePlaylistPopup" action="QueueDelete"/>
    <menuitem name="ClearPlaylistPopup" action="ClearQueue"/>
    <separator/>
    <menuitem name="PropertiesPlaylistPopup" action="QueueMusicProperties"/>
  </popup>

  <popup name="QueueSourcePopup">
    <menuitem name="ClearPlaylistPopup" action="ClearQueue"/>
#HAVE_NAUTILUS_BURN    <separator/>
#HAVE_NAUTILUS_BURN    <menuitem name="MusicPlaylistBurnPlaylistMenu" action="MusicPlaylistBurnPlaylist"/>
  </popup>

  <popup name="SourceListPopup">
    <menuitem name="SourceListPopupNewPlaylist" action="MusicPlaylistNewPlaylist"/>
    <menuitem name="SourceListPopupNewAutomaticPlaylist" action="MusicPlaylistNewAutomaticPlaylist"/>
  </popup>

  <popup name="LibrarySourcePopup">
    <menuitem name="LibrarySrcPopupAddFile" action="MusicImportFile"/>
    <menuitem name="LibrarySrcPopupAddFolder" action="MusicImportFolder"/>
    <menuitem name="LibrarySrcPopupAddCD" action="MusicImportCD"/>
  </popup>

  <popup name="IRadioSourcePopup">
    <menuitem name="IRadioSrcPopupNewStation" action="MusicNewInternetRadioStation"/>
  </popup>

  <popup name="IRadioViewPopup">
    <menuitem name="DeleteIRadioPopup" action="EditDelete"/>
    <separator/>
    <menuitem name="PropertiesIRadioPopup" action="MusicProperties"/>
  </popup>
  <popup name="PodcastSourcePopup">
    <menuitem name="PodcastSrcPopupNew" action="MusicNewPodcast"/>
    <menuitem name="PodcastSrcPopupUpdateAllFeeds" action="PodcastUpdateAllFeeds"/>
  </popup>

  <popup name="PodcastViewPopup">
    <menuitem name="DownloadPodcastPopup" action="PodcastSrcDownloadPost"/>
    <menuitem name="CancelDownloadPopup" action="PodcastSrcCancelDownload"/>
    <menuitem name="DeletePodcastPopup" action="EditDelete"/>
    <separator/>
    <menuitem name="AddToQueuePodcastPopup" action="AddToQueue"/>
    <separator/>
    <menuitem name="PropertiesPodcastPopup" action="MusicProperties"/>
  </popup>

  <popup name="PodcastFeedViewPopup">
    <menuitem name="NewPodcastPopup" action="MusicNewPodcast"/>
    <menuitem name="PodcastSrcPopupUpdateAllFeeds" action="PodcastUpdateAllFeeds"/>
    <separator/>
    <menuitem name="UpdateFeedPodcastPopup" action="PodcastFeedUpdate"/>
    <menuitem name="DeleteFeedPodcastPopup" action="PodcastFeedDelete"/>
    <separator/>
    <menuitem name="PropertiesFeedPodcastPopup" action="PodcastFeedProperties"/>
  </popup>

  <popup name="AudioCdSourcePopup">
    <menuitem name="AudioCdSourcePopupCopyAllTracks" action="RemovableSourceCopyAllTracks"/>
    <menuitem name="AudioCdSourcePopupEjectCd" action="RemovableSourceEject"/>
  </popup>

  <popup name="PlaylistSourcePopup">
    <menuitem name="RenameAutoPlaylistPopup" action="MusicPlaylistRenamePlaylist"/>
    <separator/>
    <menuitem name="QueuePlaylistPopup" action="QueuePlaylist"/>
    <separator/>
    <menuitem name="DeletePlaylistPopup" action="MusicPlaylistDeletePlaylist"/>
  </popup>

  <popup name="AutoPlaylistSourcePopup">
    <menuitem name="EditAutoPlaylistPopup" action="EditAutomaticPlaylist"/>
    <menuitem name="RenameAutoPlaylistPopup" action="MusicPlaylistRenamePlaylist"/>
    <separator/>
    <menuitem name="QueuePlaylistPopup" action="QueuePlaylist"/>
#HAVE_NAUTILUS_BURN    <menuitem name="MusicPlaylistBurnPlaylistMenu" action="MusicPlaylistBurnPlaylist"/>
    <separator/>
    <menuitem name="DeleteAutoPlaylistPopup" action="MusicPlaylistDeletePlaylist"/>
  </popup>

  <popup name="MissingFilesViewPopup">
    <menuitem name="DeleteMissingFilesPopup" action="EditDelete"/>
    <menuitem name="PropertiesMissingFilesPopup" action="MusicProperties"/>
  </popup>

</ui>
#!/usr/bin/perl -w 

open(INFILE, "< $ARGV[0]");
open(OUTFILE, "> $ARGV[1]");

while (<INFILE>)
{
	if (substr($_,0,1) eq "#")
	{
		($var,$rest) = split(/ /,$_,2);
		$var = substr($var,1);
		if (!exists $ENV{$var} || $ENV{$var} == 0)
		{
			next;
		}
		$_ = $rest;
	}
	print OUTFILE $_;
}
close INFILE;


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