brasero r1136 - in trunk: . data src



Author: philippr
Date: Thu Aug 21 13:19:59 2008
New Revision: 1136
URL: http://svn.gnome.org/viewvc/brasero?rev=1136&view=rev

Log:
	Fix for 548137 â Duplicate disc autorun action

	* configure.in:
	* data/Makefile.am:
	* data/brasero-copy-medium.desktop.in.in:
	* data/brasero-open-image.desktop.in.in:
	* data/brasero-open-playlist.desktop.in.in:
	* data/brasero-open-project.desktop.in.in:
	* data/brasero.desktop.in.in:
	* src/brasero-dest-selection.c
	(brasero_dest_selection_source_changed),
	(brasero_dest_selection_drive_changed),
	(brasero_dest_selection_set_property):
	* src/brasero-disc-copy-dialog.c
	(brasero_disc_copy_dialog_set_drive):
	* src/brasero-disc-copy-dialog.h:
	* src/brasero-drive-info.c (brasero_drive_info_set_same_src_dest):
	* src/brasero-drive-info.h:
	* src/brasero-drive-selection.c
	(brasero_drive_selection_drive_changed),
	(brasero_drive_selection_drive_changed_cb),
	(brasero_drive_selection_set_same_src_dest),
	(brasero_drive_selection_set_drive):
	* src/brasero-drive-selection.h:
	* src/brasero-medium-selection.c
	(brasero_medium_selection_set_active):
	* src/brasero-medium-selection.h:
	* src/brasero-project-manager.c
	(brasero_project_manager_copy_disc),
	(brasero_project_manager_switch), (brasero_project_manager_copy):
	* src/brasero-project-manager.h:
	* src/brasero-src-selection.c
	(brasero_src_selection_drive_changed):
	* src/burn-medium-monitor.c (brasero_medium_monitor_get_drive):
	* src/burn-medium-monitor.h:
	* src/main.c (brasero_app_parse_options):

Added:
   trunk/data/brasero-copy-medium.desktop.in.in
   trunk/data/brasero-open-image.desktop.in.in
   trunk/data/brasero-open-playlist.desktop.in.in
   trunk/data/brasero-open-project.desktop.in.in
Modified:
   trunk/ChangeLog
   trunk/configure.in
   trunk/data/Makefile.am
   trunk/data/brasero.desktop.in.in
   trunk/src/brasero-dest-selection.c
   trunk/src/brasero-disc-copy-dialog.c
   trunk/src/brasero-disc-copy-dialog.h
   trunk/src/brasero-drive-info.c
   trunk/src/brasero-drive-info.h
   trunk/src/brasero-drive-selection.c
   trunk/src/brasero-drive-selection.h
   trunk/src/brasero-medium-selection.c
   trunk/src/brasero-medium-selection.h
   trunk/src/brasero-project-manager.c
   trunk/src/brasero-project-manager.h
   trunk/src/brasero-src-selection.c
   trunk/src/burn-medium-monitor.c
   trunk/src/burn-medium-monitor.h
   trunk/src/main.c

Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in	(original)
+++ trunk/configure.in	Thu Aug 21 13:19:59 2008
@@ -367,6 +367,10 @@
 docs/Makefile
 data/Makefile
 data/brasero.desktop.in
+data/brasero-open-playlist.desktop.in
+data/brasero-open-image.desktop.in
+data/brasero-open-project.desktop.in
+data/brasero-copy-medium.desktop.in
 data/icons/Makefile
 help/Makefile
 src/plugins/Makefile

Modified: trunk/data/Makefile.am
==============================================================================
--- trunk/data/Makefile.am	(original)
+++ trunk/data/Makefile.am	Thu Aug 21 13:19:59 2008
@@ -10,7 +10,12 @@
 @INTLTOOL_DESKTOP_RULE@
 
 desktopdir=$(datadir)/applications
-desktop_in_files = brasero.desktop.in
+desktop_in_files =	brasero.desktop.in	\
+			brasero-open-playlist.desktop.in	\
+			brasero-open-project.desktop.in		\
+			brasero-open-image.desktop.in		\
+			brasero-copy-medium.desktop.in
+		
 desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 
 @INTLTOOL_XML_RULE@

Added: trunk/data/brasero-copy-medium.desktop.in.in
==============================================================================
--- (empty file)
+++ trunk/data/brasero-copy-medium.desktop.in.in	Thu Aug 21 13:19:59 2008
@@ -0,0 +1,16 @@
+[Desktop Entry]
+_Name=Brasero Disc Burning
+_GenericName=Disc Burning Application
+_Comment=Write and copy CD / DVD
+Categories=GNOME;AudioVideo;DiscBurning;
+Exec=brasero -c %u
+Icon=brasero
+MimeType=x-content/audio-cdda;x-content/video-dvd;x-content/video-vcd;x-content/video-svcd;x-content/image-picturecd;
+StartupNotify=true
+Terminal=false
+Type=Application
+NoDisplay=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=brasero
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version= VERSION@

Added: trunk/data/brasero-open-image.desktop.in.in
==============================================================================
--- (empty file)
+++ trunk/data/brasero-open-image.desktop.in.in	Thu Aug 21 13:19:59 2008
@@ -0,0 +1,16 @@
+[Desktop Entry]
+_Name=Brasero Disc Burning
+_GenericName=Disc Burning Application
+_Comment=Write and copy CD / DVD
+Categories=GNOME;AudioVideo;DiscBurning;
+Exec=brasero -i %u
+Icon=brasero
+MimeType=application/x-cd-image;application/x-cdrdao-toc;application/x-cue;application/x-toc;
+StartupNotify=true
+Terminal=false
+Type=Application
+NoDisplay=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=brasero
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version= VERSION@

Added: trunk/data/brasero-open-playlist.desktop.in.in
==============================================================================
--- (empty file)
+++ trunk/data/brasero-open-playlist.desktop.in.in	Thu Aug 21 13:19:59 2008
@@ -0,0 +1,16 @@
+[Desktop Entry]
+_Name=Brasero Disc Burning
+_GenericName=Disc Burning Application
+_Comment=Write and copy CD / DVD
+Categories=GNOME;AudioVideo;DiscBurning;
+Exec=brasero -l %u
+Icon=brasero
+MimeType=audio/x-scpls;audio/x-ms-asx;audio/x-mp3-playlist;audio/x-mpegurl;
+StartupNotify=true
+Terminal=false
+Type=Application
+NoDisplay=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=brasero
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version= VERSION@

Added: trunk/data/brasero-open-project.desktop.in.in
==============================================================================
--- (empty file)
+++ trunk/data/brasero-open-project.desktop.in.in	Thu Aug 21 13:19:59 2008
@@ -0,0 +1,16 @@
+[Desktop Entry]
+_Name=Brasero Disc Burning
+_GenericName=Disc Burning Application
+_Comment=Write and copy CD / DVD
+Categories=GNOME;AudioVideo;DiscBurning;
+Exec=brasero -p %u
+Icon=brasero
+MimeType=application/x-brasero;
+StartupNotify=true
+Terminal=false
+Type=Application
+NoDisplay=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=brasero
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version= VERSION@

Modified: trunk/data/brasero.desktop.in.in
==============================================================================
--- trunk/data/brasero.desktop.in.in	(original)
+++ trunk/data/brasero.desktop.in.in	Thu Aug 21 13:19:59 2008
@@ -5,7 +5,7 @@
 Categories=GNOME;AudioVideo;DiscBurning;
 Exec=brasero %U
 Icon=brasero
-MimeType=application/x-cd-image;application/x-cdrdao-toc;application/x-toc;application/x-cue;application/x-brasero;audio/x-scpls;audio/x-ms-asx;audio/x-mp3-playlist;audio/x-mpegurl;
+MimeType=x-content/blank-cd;x-content/blank-dvd;
 StartupNotify=true
 Terminal=false
 Type=Application
@@ -13,23 +13,3 @@
 X-GNOME-Bugzilla-Product=brasero
 X-GNOME-Bugzilla-Component=general
 X-GNOME-Bugzilla-Version= VERSION@
-
-Actions=BurnImage;OpenProject;OpenPlaylist;
-
-[Desktop Action BurnImage]
-Icon=brasero
-MimeType=application/x-cd-image;application/x-cdrdao-toc;application/x-cue;application/x-toc;
-Exec=brasero -i %u
-_Name=Burn Image
-
-[Desktop Action OpenProject]
-Icon=brasero
-MimeType=application/x-brasero;
-Exec=brasero -p %u
-_Name=Open project
-
-[Desktop Action OpenPlaylist]
-Icon=brasero
-MimeType=audio/x-scpls;audio/x-ms-asx;audio/x-mp3-playlist;audio/x-mpegurl;
-Exec=brasero -l %u
-_Name=Open project

Modified: trunk/src/brasero-dest-selection.c
==============================================================================
--- trunk/src/brasero-dest-selection.c	(original)
+++ trunk/src/brasero-dest-selection.c	Thu Aug 21 13:19:59 2008
@@ -1230,6 +1230,9 @@
 
 	priv = BRASERO_DEST_SELECTION_PRIVATE (self);
 
+	brasero_drive_selection_set_same_src_dest (BRASERO_DRIVE_SELECTION (self),
+						   brasero_burn_session_same_src_dest_drive (priv->session));
+
 	if (brasero_burn_session_is_dest_file (priv->session)) {
 		/* check that if a path was set there may be none if there was
 		 * no disc inserted when the dialog was created. */
@@ -1330,7 +1333,7 @@
 	brasero_burn_session_set_burner (priv->session, drive);
 
 	if (brasero_burn_session_same_src_dest_drive (priv->session))
-		brasero_drive_selection_set_same_src_dest (selection);
+		brasero_drive_selection_set_same_src_dest (selection, TRUE);
 }
 
 static void
@@ -1471,9 +1474,10 @@
 		if (drive)
 			g_object_unref (drive);
 
-		if (brasero_burn_session_same_src_dest_drive (priv->session))
-			brasero_drive_selection_set_same_src_dest (BRASERO_DRIVE_SELECTION (object));
-		else if (brasero_burn_session_is_dest_file (session))
+		brasero_drive_selection_set_same_src_dest (BRASERO_DRIVE_SELECTION (object),
+							   brasero_burn_session_same_src_dest_drive (priv->session));
+
+		if (brasero_burn_session_is_dest_file (session))
 			brasero_dest_selection_set_image_properties (BRASERO_DEST_SELECTION (object));
 		else
 			brasero_dest_selection_set_drive_properties (BRASERO_DEST_SELECTION (object));

Modified: trunk/src/brasero-disc-copy-dialog.c
==============================================================================
--- trunk/src/brasero-disc-copy-dialog.c	(original)
+++ trunk/src/brasero-disc-copy-dialog.c	Thu Aug 21 13:19:59 2008
@@ -79,6 +79,16 @@
 	return priv->session;
 }
 
+gboolean
+brasero_disc_copy_dialog_set_drive (BraseroDiscCopyDialog *self,
+				    BraseroDrive *drive)
+{
+	BraseroDiscCopyDialogPrivate *priv;
+
+	priv = BRASERO_DISC_COPY_DIALOG_PRIVATE (self);
+	return brasero_drive_selection_set_drive (BRASERO_DRIVE_SELECTION (priv->source), drive);
+}
+
 static void
 brasero_disc_copy_dialog_set_burn_button_state (BraseroDiscCopyDialog *self,
 						gboolean valid)

Modified: trunk/src/brasero-disc-copy-dialog.h
==============================================================================
--- trunk/src/brasero-disc-copy-dialog.h	(original)
+++ trunk/src/brasero-disc-copy-dialog.h	Thu Aug 21 13:19:59 2008
@@ -33,6 +33,7 @@
 #include <gtk/gtkdialog.h>
 
 #include "burn-session.h"
+#include "burn-drive.h"
 
 G_BEGIN_DECLS
 
@@ -59,6 +60,10 @@
 BraseroBurnSession *
 brasero_disc_copy_dialog_get_session (BraseroDiscCopyDialog *self);
 
+gboolean
+brasero_disc_copy_dialog_set_drive (BraseroDiscCopyDialog *self,
+				    BraseroDrive *drive);
+
 G_END_DECLS
 
 #endif				/* DISC_COPY_DIALOG_H */

Modified: trunk/src/brasero-drive-info.c
==============================================================================
--- trunk/src/brasero-drive-info.c	(original)
+++ trunk/src/brasero-drive-info.c	Thu Aug 21 13:19:59 2008
@@ -221,17 +221,25 @@
 }
 
 void
-brasero_drive_info_set_same_src_dest (BraseroDriveInfo *self)
+brasero_drive_info_set_same_src_dest (BraseroDriveInfo *self,
+				      gboolean value)
 {
 	BraseroDriveInfoPrivate *priv;
 
 	priv = BRASERO_DRIVE_INFO_PRIVATE (self);
 
-	/* This is to handle a special case when copying a media using same 
-	 * drive as source and destination */
-	gtk_widget_show (priv->warning);
-	gtk_widget_hide (priv->image_path);
-	gtk_widget_hide (priv->table);
+	if (value) {
+		/* This is to handle a special case when copying a media using
+		 * same drive as source and destination */
+		gtk_widget_show (priv->warning);
+		gtk_widget_hide (priv->image_path);
+		gtk_widget_hide (priv->table);
+	}
+	else {
+		gtk_widget_hide (priv->warning);
+		gtk_widget_show (priv->image_path);
+		gtk_widget_show (priv->table);
+	}
 }
 
 void

Modified: trunk/src/brasero-drive-info.h
==============================================================================
--- trunk/src/brasero-drive-info.h	(original)
+++ trunk/src/brasero-drive-info.h	Thu Aug 21 13:19:59 2008
@@ -55,15 +55,16 @@
 brasero_drive_info_new ();
 
 void
-brasero_drive_info_set_medium (BraseroDriveInfo *self,
+brasero_drive_info_set_medium (BraseroDriveInfo *info,
 			       BraseroMedium *medium);
 
 void
-brasero_drive_info_set_image_path (BraseroDriveInfo *self,
+brasero_drive_info_set_image_path (BraseroDriveInfo *info,
 				   const gchar *path);
 
 void
-brasero_drive_info_set_same_src_dest (BraseroDriveInfo *self);
+brasero_drive_info_set_same_src_dest (BraseroDriveInfo *info,
+				      gboolean same_src_dest);
 
 G_END_DECLS
 

Modified: trunk/src/brasero-drive-selection.c
==============================================================================
--- trunk/src/brasero-drive-selection.c	(original)
+++ trunk/src/brasero-drive-selection.c	Thu Aug 21 13:19:59 2008
@@ -62,8 +62,7 @@
 G_DEFINE_TYPE (BraseroDriveSelection, brasero_drive_selection, GTK_TYPE_VBOX);
 
 static void
-brasero_drive_selection_drive_changed_cb (BraseroMediumSelection *selector,
-					  BraseroDriveSelection *self)
+brasero_drive_selection_drive_changed (BraseroDriveSelection *self)
 {
 	BraseroDriveSelectionPrivate *priv;
 	BraseroMedium *medium;
@@ -111,6 +110,13 @@
 		g_object_unref (medium);
 }
 
+static void
+brasero_drive_selection_drive_changed_cb (BraseroMediumSelection *selector,
+					  BraseroDriveSelection *self)
+{
+	brasero_drive_selection_drive_changed (self);
+}
+
 void
 brasero_drive_selection_set_image_path (BraseroDriveSelection *self,
 					const gchar *path)
@@ -122,15 +128,17 @@
 }
 
 void
-brasero_drive_selection_set_same_src_dest (BraseroDriveSelection *self)
+brasero_drive_selection_set_same_src_dest (BraseroDriveSelection *self,
+					   gboolean value)
 {
 	BraseroDriveSelectionPrivate *priv;
 
 	priv = BRASERO_DRIVE_SELECTION_PRIVATE (self);
-	brasero_drive_info_set_same_src_dest (BRASERO_DRIVE_INFO (priv->info));
+	brasero_drive_info_set_same_src_dest (BRASERO_DRIVE_INFO (priv->info),
+					      value);
 }
 
-void
+gboolean
 brasero_drive_selection_set_drive (BraseroDriveSelection *self,
 				   BraseroDrive *drive)
 {
@@ -139,10 +147,15 @@
 
 	priv = BRASERO_DRIVE_SELECTION_PRIVATE (self);
 	if (priv->locked_drive)
-		return;
+		return FALSE;
 
 	medium = brasero_drive_get_medium (drive);
-	brasero_medium_selection_set_active (BRASERO_MEDIUM_SELECTION (priv->selection), medium);
+	if (brasero_medium_selection_set_active (BRASERO_MEDIUM_SELECTION (priv->selection), medium)) {
+		brasero_drive_selection_drive_changed (self);
+		return TRUE;
+	}
+
+	return FALSE;
 }
 
 BraseroMedium *

Modified: trunk/src/brasero-drive-selection.h
==============================================================================
--- trunk/src/brasero-drive-selection.h	(original)
+++ trunk/src/brasero-drive-selection.h	Thu Aug 21 13:19:59 2008
@@ -64,7 +64,7 @@
 brasero_drive_selection_lock (BraseroDriveSelection *selection,
 			      gboolean locked);
 
-void
+gboolean
 brasero_drive_selection_set_drive (BraseroDriveSelection *selection,
 				   BraseroDrive *drive);
 
@@ -83,7 +83,8 @@
 					const gchar *path);
 
 void
-brasero_drive_selection_set_same_src_dest (BraseroDriveSelection *selection);
+brasero_drive_selection_set_same_src_dest (BraseroDriveSelection *selection,
+					   gboolean same_src_dest);
 
 void
 brasero_drive_selection_set_button (BraseroDriveSelection *selection,

Modified: trunk/src/brasero-medium-selection.c
==============================================================================
--- trunk/src/brasero-medium-selection.c	(original)
+++ trunk/src/brasero-medium-selection.c	Thu Aug 21 13:19:59 2008
@@ -71,16 +71,17 @@
 			       0);
 }
 
-void
+gboolean
 brasero_medium_selection_set_active (BraseroMediumSelection *self,
 				     BraseroMedium *medium)
 {
+	gboolean result = FALSE;
 	GtkTreeModel *model;
 	GtkTreeIter iter;
 
 	model = gtk_combo_box_get_model (GTK_COMBO_BOX (self));
 	if (!gtk_tree_model_get_iter_first (model, &iter))
-		return;
+		return FALSE;
 
 	do {
 		BraseroMedium *iter_medium;
@@ -95,11 +96,14 @@
 			g_signal_emit (self,
 				       medium_selection_signals [MEDIUM_CHANGED],
 				       0);
+			result = TRUE;
 			break;
 		}
 
 		g_object_unref (iter_medium);
 	} while (gtk_tree_model_iter_next (model, &iter));
+
+	return result;
 }
 
 BraseroMedium *

Modified: trunk/src/brasero-medium-selection.h
==============================================================================
--- trunk/src/brasero-medium-selection.h	(original)
+++ trunk/src/brasero-medium-selection.h	Thu Aug 21 13:19:59 2008
@@ -59,7 +59,7 @@
 BraseroMedium *
 brasero_medium_selection_get_active (BraseroMediumSelection *self);
 
-void
+gboolean
 brasero_medium_selection_set_active (BraseroMediumSelection *self,
 				     BraseroMedium *medium);
 

Modified: trunk/src/brasero-project-manager.c
==============================================================================
--- trunk/src/brasero-project-manager.c	(original)
+++ trunk/src/brasero-project-manager.c	Thu Aug 21 13:19:59 2008
@@ -57,6 +57,7 @@
 #include "brasero-disc-copy-dialog.h"
 #include "brasero-io.h"
 #include "burn-caps.h"
+#include "burn-medium-monitor.h"
 
 #ifdef BUILD_SEARCH
 #include "brasero-search-beagle.h"
@@ -577,7 +578,8 @@
 }
 
 static void
-brasero_project_manager_burn_disc (BraseroProjectManager *manager)
+brasero_project_manager_copy_disc (BraseroProjectManager *manager,
+				   const gchar *device)
 {
 	BraseroBurnSession *session;
 	GtkResponseType result;
@@ -592,6 +594,19 @@
 	gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ON_PARENT);
 	gtk_widget_show (dialog);
 
+	/* if a device is specified then get the corresponding medium */
+	if (device) {
+		BraseroDrive *drive;
+		BraseroMediumMonitor *monitor;
+
+		monitor = brasero_medium_monitor_get_default ();
+		drive = brasero_medium_monitor_get_drive (monitor, device);
+		g_object_unref (monitor);
+
+		brasero_disc_copy_dialog_set_drive (BRASERO_DISC_COPY_DIALOG (dialog), drive);
+		g_object_unref (drive);
+	}
+
 	result = gtk_dialog_run (GTK_DIALOG (dialog));
 	if (result != GTK_RESPONSE_OK) {
 		gtk_widget_destroy (dialog);
@@ -702,7 +717,7 @@
 		if (toplevel)
 			gtk_window_set_title (GTK_WINDOW (toplevel), _("Brasero - Disc Copy"));
 
-		brasero_project_manager_burn_disc (manager);
+		brasero_project_manager_copy_disc (manager, uri);
 	}
 }
 
@@ -781,9 +796,10 @@
 }
 
 void
-brasero_project_manager_copy (BraseroProjectManager *manager)
+brasero_project_manager_copy (BraseroProjectManager *manager,
+			      const gchar *device)
 {
-	brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_COPY, NULL, NULL, TRUE);
+	brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_COPY, NULL, device, TRUE);
 }
 
 void

Modified: trunk/src/brasero-project-manager.h
==============================================================================
--- trunk/src/brasero-project-manager.h	(original)
+++ trunk/src/brasero-project-manager.h	Thu Aug 21 13:19:59 2008
@@ -33,6 +33,7 @@
 #include <gtk/gtknotebook.h>
 #include <gtk/gtkuimanager.h>
 
+#include "burn-medium.h"
 #include "brasero-project-type-chooser.h"
 
 G_BEGIN_DECLS
@@ -65,7 +66,8 @@
 void
 brasero_project_manager_video (BraseroProjectManager *manager, GSList *uris);
 void
-brasero_project_manager_copy (BraseroProjectManager *manager);
+brasero_project_manager_copy (BraseroProjectManager *manager,
+			      const gchar *device);
 void
 brasero_project_manager_iso (BraseroProjectManager *manager, const gchar *uri);
 

Modified: trunk/src/brasero-src-selection.c
==============================================================================
--- trunk/src/brasero-src-selection.c	(original)
+++ trunk/src/brasero-src-selection.c	Thu Aug 21 13:19:59 2008
@@ -57,7 +57,6 @@
 	BraseroSrcSelectionPrivate *priv;
 
 	priv = BRASERO_SRC_SELECTION_PRIVATE (selection);
-
 	if (!priv->session)
 		return;
 

Modified: trunk/src/burn-medium-monitor.c
==============================================================================
--- trunk/src/burn-medium-monitor.c	(original)
+++ trunk/src/burn-medium-monitor.c	Thu Aug 21 13:19:59 2008
@@ -74,6 +74,31 @@
 
 G_DEFINE_TYPE (BraseroMediumMonitor, brasero_medium_monitor, G_TYPE_OBJECT);
 
+BraseroDrive *
+brasero_medium_monitor_get_drive (BraseroMediumMonitor *self,
+				  const gchar *device)
+{
+	GSList *iter;
+	BraseroMediumMonitorPrivate *priv;
+
+	priv = BRASERO_MEDIUM_MONITOR_PRIVATE (self);
+	for (iter = priv->media; iter; iter = iter->next) {
+		BraseroDrive *drive;
+		BraseroMedium *medium;
+		const gchar *drive_device;
+
+		medium = iter->data;
+		drive = brasero_medium_get_drive (medium);
+
+		drive_device = brasero_drive_get_device (drive);
+		if (drive_device && !strcmp (drive_device, device)) {
+			g_object_ref (drive);
+			return drive;
+		}
+	}
+
+	return NULL;
+}
 
 GSList *
 brasero_medium_monitor_get_media (BraseroMediumMonitor *self,

Modified: trunk/src/burn-medium-monitor.h
==============================================================================
--- trunk/src/burn-medium-monitor.h	(original)
+++ trunk/src/burn-medium-monitor.h	Thu Aug 21 13:19:59 2008
@@ -25,6 +25,8 @@
 
 #include <glib-object.h>
 
+#include "burn-drive.h"
+
 G_BEGIN_DECLS
 
 #define BRASERO_TYPE_MEDIUM_MONITOR             (brasero_medium_monitor_get_type ())
@@ -68,6 +70,10 @@
 brasero_medium_monitor_get_media (BraseroMediumMonitor *monitor,
 				  BraseroMediaType type);
 
+BraseroDrive *
+brasero_medium_monitor_get_drive (BraseroMediumMonitor *monitor,
+				  const gchar *device);
+
 G_END_DECLS
 
 #endif /* _BRASERO_MEDIUM_MONITOR_H_ */

Modified: trunk/src/main.c
==============================================================================
--- trunk/src/main.c	(original)
+++ trunk/src/main.c	Thu Aug 21 13:19:59 2008
@@ -716,8 +716,18 @@
 		brasero_project_manager_empty (BRASERO_PROJECT_MANAGER (app->contents));
 	}
 	else if (copy_project) {
+		gchar *device = NULL;
+
+		/* make sure there is only one file in the remaining list for
+		 * specifying the source device. It could be extended to let
+		 * the user specify the destination device as well */
+		if (files
+		&&  files [0] != NULL
+		&&  files [1] == NULL)
+			device = files [0];
+		
 		/* this can't combine with any other options */
-		brasero_project_manager_copy (BRASERO_PROJECT_MANAGER (app->contents));
+		brasero_project_manager_copy (BRASERO_PROJECT_MANAGER (app->contents), device);
 	}
 	else if (iso_uri) {
 		BRASERO_PROJECT_OPEN_URI (app, brasero_project_manager_iso, iso_uri);



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