brasero r740 - in trunk: . src



Author: philippr
Date: Mon Apr 21 11:36:08 2008
New Revision: 740
URL: http://svn.gnome.org/viewvc/brasero?rev=740&view=rev

Log:
	Copy disc dialog:
	Fixed appearance of destination medium (there was only file type before)
	This patch should probably be backported to stable (with a few changes)

	* src/brasero-dest-selection.c
	(brasero_dest_selection_source_changed),
	(brasero_dest_selection_init):
	* src/brasero-disc-copy-dialog.c (brasero_disc_copy_dialog_init):
	* src/brasero-drive-selection.c
	(brasero_drive_selection_set_type_shown):
	* src/brasero-medium-selection.c
	(brasero_medium_selection_medium_added_cb):
	* src/burn-drive.c (brasero_drive_can_write):
	* src/burn-drive.h:
	* src/burn-medium-monitor.c (brasero_medium_monitor_get_media):
	* src/burn-medium-monitor.h:

Modified:
   trunk/ChangeLog
   trunk/src/brasero-dest-selection.c
   trunk/src/brasero-disc-copy-dialog.c
   trunk/src/brasero-drive-selection.c
   trunk/src/brasero-medium-selection.c
   trunk/src/burn-drive.c
   trunk/src/burn-drive.h
   trunk/src/burn-medium-monitor.c
   trunk/src/burn-medium-monitor.h

Modified: trunk/src/brasero-dest-selection.c
==============================================================================
--- trunk/src/brasero-dest-selection.c	(original)
+++ trunk/src/brasero-dest-selection.c	Mon Apr 21 11:36:08 2008
@@ -1194,7 +1194,6 @@
 	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. */
-
 		if (brasero_burn_session_get_output (priv->session, NULL, NULL, NULL) != BRASERO_BURN_OK)
 			brasero_dest_selection_set_image_properties (self);
 
@@ -1361,7 +1360,9 @@
 			  G_CALLBACK (brasero_dest_selection_copies_num_changed_cb),
 			  object);
 
-	/* only show media on which we can write and which are in a burner */
+	/* Only show media on which we can write and which are in a burner.
+	 * There is one exception though, when we're copying media and when the
+	 * burning device is the same as the dest device. */
 	brasero_drive_selection_set_type_shown (BRASERO_DRIVE_SELECTION (object),
 						BRASERO_MEDIA_TYPE_WRITABLE);
 

Modified: trunk/src/brasero-disc-copy-dialog.c
==============================================================================
--- trunk/src/brasero-disc-copy-dialog.c	(original)
+++ trunk/src/brasero-disc-copy-dialog.c	Mon Apr 21 11:36:08 2008
@@ -163,9 +163,11 @@
 	brasero_drive_selection_set_type_shown (BRASERO_DRIVE_SELECTION (priv->source),
 						BRASERO_MEDIA_TYPE_READABLE);
 
+	/* This is a special case. When we're copying, someone may want to read
+	 * and burn to the same drive so provided that the drive is a burner
+	 * then show its contents. */
 	brasero_drive_selection_set_type_shown (BRASERO_DRIVE_SELECTION (priv->selection),
-						BRASERO_MEDIA_TYPE_WRITABLE|
-						BRASERO_MEDIA_TYPE_REWRITABLE|
+						BRASERO_MEDIA_TYPE_ANY_IN_BURNER|
 						BRASERO_MEDIA_TYPE_FILE);
 
 	drive = brasero_drive_selection_get_drive (BRASERO_DRIVE_SELECTION (priv->selection));

Modified: trunk/src/brasero-drive-selection.c
==============================================================================
--- trunk/src/brasero-drive-selection.c	(original)
+++ trunk/src/brasero-drive-selection.c	Mon Apr 21 11:36:08 2008
@@ -236,9 +236,8 @@
 	BraseroDriveSelectionPrivate *priv;
 
 	priv = BRASERO_DRIVE_SELECTION_PRIVATE (self);
-	brasero_medium_selection_show_type (BRASERO_MEDIUM_SELECTION (priv->selection), type);
 
-	/* ncb sets sensitivity on its own so we need to reset it correctly */
+	brasero_medium_selection_show_type (BRASERO_MEDIUM_SELECTION (priv->selection), type);
 	if (priv->locked_drive)
 		gtk_widget_set_sensitive (priv->selection, FALSE);
 }

Modified: trunk/src/brasero-medium-selection.c
==============================================================================
--- trunk/src/brasero-medium-selection.c	(original)
+++ trunk/src/brasero-medium-selection.c	Mon Apr 21 11:36:08 2008
@@ -228,11 +228,17 @@
 	const gchar *medium_icon;
 	gboolean add = FALSE;
 	GtkTreeModel *model;
+	BraseroDrive *drive;
 	gchar *medium_name;
 	GtkTreeIter iter;
 
 	priv = BRASERO_MEDIUM_SELECTION_PRIVATE (self);
 
+	drive = brasero_medium_get_drive (medium);
+	if ((priv->type & BRASERO_MEDIA_TYPE_ANY_IN_BURNER)
+	&&  (brasero_drive_can_write (drive)))
+		add = TRUE;
+
 	if ((priv->type & BRASERO_MEDIA_TYPE_READABLE)
 	&&  (brasero_medium_get_status (medium) & (BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA)))
 		add = TRUE;

Modified: trunk/src/burn-drive.c
==============================================================================
--- trunk/src/burn-drive.c	(original)
+++ trunk/src/burn-drive.c	Mon Apr 21 11:36:08 2008
@@ -341,6 +341,22 @@
 	return priv->caps;
 }
 
+gboolean
+brasero_drive_can_write (BraseroDrive *self)
+{
+	BraseroDrivePrivate *priv;
+
+	priv = BRASERO_DRIVE_PRIVATE (self);
+	return (priv->caps & (BRASERO_DRIVE_CAPS_CDR|
+			      BRASERO_DRIVE_CAPS_DVDR|
+			      BRASERO_DRIVE_CAPS_DVDR_PLUS|
+			      BRASERO_DRIVE_CAPS_CDRW|
+			      BRASERO_DRIVE_CAPS_DVDRW|
+			      BRASERO_DRIVE_CAPS_DVDRW_PLUS|
+			      BRASERO_DRIVE_CAPS_DVDR_PLUS_DL|
+			      BRASERO_DRIVE_CAPS_DVDRW_PLUS_DL));
+}
+
 static void
 brasero_drive_init (BraseroDrive *object)
 { }

Modified: trunk/src/burn-drive.h
==============================================================================
--- trunk/src/burn-drive.h	(original)
+++ trunk/src/burn-drive.h	Mon Apr 21 11:36:08 2008
@@ -101,6 +101,9 @@
 brasero_drive_get_caps (BraseroDrive *drive);
 
 gboolean
+brasero_drive_can_write (BraseroDrive *drive);
+
+gboolean
 brasero_drive_is_door_open (BraseroDrive *drive);
 
 gboolean

Modified: trunk/src/burn-medium-monitor.c
==============================================================================
--- trunk/src/burn-medium-monitor.c	(original)
+++ trunk/src/burn-medium-monitor.c	Mon Apr 21 11:36:08 2008
@@ -82,8 +82,18 @@
 
 	for (iter = priv->media; iter; iter = iter->next) {
 		BraseroMedium *medium;
+		BraseroDrive *drive;
 
 		medium = iter->data;
+		drive = brasero_medium_get_drive (medium);
+
+		if ((type & BRASERO_MEDIA_TYPE_ANY_IN_BURNER)
+		&&  (brasero_drive_can_write (drive))) {
+			list = g_slist_prepend (list, medium);
+			g_object_ref (medium);
+			continue;
+		}
+
 		if ((type & BRASERO_MEDIA_TYPE_READABLE)
 		&& !(brasero_medium_get_status (medium) & BRASERO_MEDIUM_FILE)
 		&&  (brasero_medium_get_status (medium) & (BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA))) {

Modified: trunk/src/burn-medium-monitor.h
==============================================================================
--- trunk/src/burn-medium-monitor.h	(original)
+++ trunk/src/burn-medium-monitor.h	Mon Apr 21 11:36:08 2008
@@ -61,6 +61,7 @@
 	BRASERO_MEDIA_TYPE_READABLE			= 1 << 1,
 	BRASERO_MEDIA_TYPE_WRITABLE			= 1 << 2,
 	BRASERO_MEDIA_TYPE_REWRITABLE			= 1 << 3,
+	BRASERO_MEDIA_TYPE_ANY_IN_BURNER		= 1 << 4,
 	BRASERO_MEDIA_TYPE_ALL				= 0xFF
 } BraseroMediaType;
 



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