[brasero] Make sure the BraseroImageProperties respect the video image type that is set in the session



commit b4d5a57ccd4e90f7aab7ad74816bf053529be22a
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Fri Jul 3 14:48:40 2009 +0200

    Make sure the BraseroImageProperties respect the video image type that is set in the session

 libbrasero-burn/brasero-image-properties.c   |   19 ++++++++++--
 libbrasero-burn/brasero-image-type-chooser.c |   40 +++++++++++++++++++++++++-
 libbrasero-burn/brasero-image-type-chooser.h |    6 +++-
 3 files changed, 60 insertions(+), 5 deletions(-)
---
diff --git a/libbrasero-burn/brasero-image-properties.c b/libbrasero-burn/brasero-image-properties.c
index cd62edd..c05efa7 100644
--- a/libbrasero-burn/brasero-image-properties.c
+++ b/libbrasero-burn/brasero-image-properties.c
@@ -214,8 +214,21 @@ brasero_image_properties_set_formats (BraseroImageProperties *self,
 						      formats,
 	                                              FALSE,
 	                                              priv->is_video);
-	brasero_image_type_chooser_set_format (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
-					       format);
+
+	if (priv->is_video && format == BRASERO_IMAGE_FORMAT_CUE) {
+		GValue *value = NULL;
+
+		/* see whether it's a SVCD or a VCD */
+		brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (priv->session),
+		                                 BRASERO_VCD_TYPE,
+		                                 &value);
+
+		brasero_image_type_chooser_set_VCD_type (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
+		                                         (value && g_value_get_int (value) == BRASERO_SVCD));
+	}
+	else
+		brasero_image_type_chooser_set_format (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
+						       format);
 
 	if (num > 1)
 		gtk_widget_show (priv->format_box);
@@ -289,7 +302,7 @@ brasero_image_properties_response (GtkFileChooser *chooser,
 		value = g_new0 (GValue, 1);
 		g_value_init (value, G_TYPE_INT);
 
-		res = brasero_image_type_chooser_is_SVCD (BRASERO_IMAGE_TYPE_CHOOSER (priv->format));
+		res = brasero_image_type_chooser_get_VCD_type (BRASERO_IMAGE_TYPE_CHOOSER (priv->format));
 		if (res)
 			g_value_set_int (value, BRASERO_SVCD);
 		else
diff --git a/libbrasero-burn/brasero-image-type-chooser.c b/libbrasero-burn/brasero-image-type-chooser.c
index 1836f32..fb1e850 100644
--- a/libbrasero-burn/brasero-image-type-chooser.c
+++ b/libbrasero-burn/brasero-image-type-chooser.c
@@ -205,6 +205,44 @@ brasero_image_type_chooser_set_format (BraseroImageTypeChooser *self,
 }
 
 void
+brasero_image_type_chooser_set_VCD_type (BraseroImageTypeChooser *chooser,
+                                         gboolean is_SVCD)
+{
+	GtkTreeIter iter;
+	GtkTreeModel *store;
+	BraseroImageTypeChooserPrivate *priv;
+
+	priv = BRASERO_IMAGE_TYPE_CHOOSER_PRIVATE (chooser);
+
+	store = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->combo));
+	
+	if (!gtk_tree_model_get_iter_first (store, &iter))
+		return;
+
+	do {
+		BraseroImageFormat iter_format;
+		gboolean is_svcd;
+
+		gtk_tree_model_get (store, &iter,
+				    FORMAT_TYPE, &iter_format,
+		                    FORMAT_SVCD, &is_svcd,
+				    -1);
+
+		if (iter_format == BRASERO_IMAGE_FORMAT_CUE && is_SVCD == is_svcd) {
+			gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->combo), &iter);
+			return;
+		}
+
+	} while (gtk_tree_model_iter_next (store, &iter));
+
+	/* just to make sure we see if there is a line which is active. It can 
+	 * happens that the last time it was a CD and the user chose RAW. If it
+	 * is now a DVD it can't be raw any more */
+	if (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combo)) == -1)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo), 0);
+}
+
+void
 brasero_image_type_chooser_get_format (BraseroImageTypeChooser *self,
 				       BraseroImageFormat *format)
 {
@@ -215,7 +253,7 @@ brasero_image_type_chooser_get_format (BraseroImageTypeChooser *self,
 }
 
 gboolean
-brasero_image_type_chooser_is_SVCD (BraseroImageTypeChooser *chooser)
+brasero_image_type_chooser_get_VCD_type (BraseroImageTypeChooser *chooser)
 {
 	BraseroImageTypeChooserPrivate *priv;
 	GtkTreeModel *model;
diff --git a/libbrasero-burn/brasero-image-type-chooser.h b/libbrasero-burn/brasero-image-type-chooser.h
index d97f6d3..e4d9a0d 100644
--- a/libbrasero-burn/brasero-image-type-chooser.h
+++ b/libbrasero-burn/brasero-image-type-chooser.h
@@ -72,7 +72,11 @@ void
 brasero_image_type_chooser_get_format (BraseroImageTypeChooser *self,
 				       BraseroImageFormat *format);
 gboolean
-brasero_image_type_chooser_is_SVCD (BraseroImageTypeChooser *chooser);
+brasero_image_type_chooser_get_VCD_type (BraseroImageTypeChooser *chooser);
+
+void
+brasero_image_type_chooser_set_VCD_type (BraseroImageTypeChooser *chooser,
+                                         gboolean is_svcd);
 
 G_END_DECLS
 



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