[brasero] When burning a video image don't let the user choose between cue, iso image but between SVCD, VCD or



commit 2dba461af55237fda2c082c184328f7fa6ed9385
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Fri Jul 3 10:23:53 2009 +0200

    When burning a video image don't let the user choose between cue, iso image but between SVCD, VCD or DVD video image which is probably clearer

 libbrasero-burn/brasero-image-properties.c   |   36 +++++++++++++++-
 libbrasero-burn/brasero-image-type-chooser.c |   57 ++++++++++++++++++++++----
 libbrasero-burn/brasero-image-type-chooser.h |    5 ++-
 libbrasero-burn/brasero-src-image.c          |    2 +-
 4 files changed, 88 insertions(+), 12 deletions(-)
---
diff --git a/libbrasero-burn/brasero-image-properties.c b/libbrasero-burn/brasero-image-properties.c
index 02b9990..7a376e3 100644
--- a/libbrasero-burn/brasero-image-properties.c
+++ b/libbrasero-burn/brasero-image-properties.c
@@ -41,6 +41,7 @@
 #include <gtk/gtk.h>
 
 #include "burn-basics.h"
+#include "brasero-tags.h"
 #include "burn-image-format.h"
 #include "brasero-image-properties.h"
 #include "brasero-image-type-chooser.h"
@@ -54,6 +55,7 @@ struct _BraseroImagePropertiesPrivate
 	GtkWidget *format_box;
 
 	guint edited:1;
+	guint is_video:1;
 };
 
 #define BRASERO_IMAGE_PROPERTIES_PRIVATE(o)  (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_IMAGE_PROPERTIES, BraseroImagePropertiesPrivate))
@@ -132,7 +134,6 @@ brasero_image_properties_format_changed_cb (BraseroImageTypeChooser *chooser,
 		return;
 
 	format = brasero_image_properties_get_format (self);
-
 	if (format == BRASERO_IMAGE_FORMAT_ANY || format == BRASERO_IMAGE_FORMAT_NONE)
 		format = brasero_burn_session_get_default_output_format (BRASERO_BURN_SESSION (priv->session));
 
@@ -209,7 +210,8 @@ brasero_image_properties_set_formats (BraseroImageProperties *self,
 
 	num = brasero_image_type_chooser_set_formats (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
 						      formats,
-	                                              FALSE);
+	                                              FALSE,
+	                                              priv->is_video);
 	brasero_image_type_chooser_set_format (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
 					       format);
 
@@ -277,6 +279,24 @@ brasero_image_properties_response (GtkFileChooser *chooser,
 						  format,
 						  path);
 	g_free (path);
+
+	if (priv->is_video && format == BRASERO_IMAGE_FORMAT_BIN) {
+		gboolean res;
+		GValue *value;
+
+		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));
+		if (res)
+			g_value_set_int (value, BRASERO_SVCD);
+		else
+			g_value_set_int (value, BRASERO_SVCD);
+
+		brasero_burn_session_tag_add (BRASERO_BURN_SESSION (priv->session),
+					      BRASERO_VCD_TYPE,
+					      value);
+	}
 }
 
 static gchar *
@@ -315,6 +335,7 @@ static void
 brasero_image_properties_update (BraseroImageProperties *self)
 {
 	BraseroImagePropertiesPrivate *priv;
+	BraseroTrackType *track_type;
 	BraseroImageFormat formats;
 	BraseroImageFormat format;
 	gchar *path;
@@ -324,6 +345,17 @@ brasero_image_properties_update (BraseroImageProperties *self)
 
 	priv->edited = brasero_session_cfg_has_default_output_path (priv->session);
 
+	track_type = brasero_track_type_new ();
+
+	brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (priv->session), track_type);
+	if (brasero_track_type_get_has_stream (track_type)
+	&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (track_type)))
+		priv->is_video = TRUE;
+	else
+		priv->is_video = FALSE;
+
+	brasero_track_type_free (track_type);
+
 	/* set all information namely path and format */
 	path = brasero_image_properties_get_output_path (self);
 	brasero_image_properties_set_path (self, path);
diff --git a/libbrasero-burn/brasero-image-type-chooser.c b/libbrasero-burn/brasero-image-type-chooser.c
index 85e6ddf..1836f32 100644
--- a/libbrasero-burn/brasero-image-type-chooser.c
+++ b/libbrasero-burn/brasero-image-type-chooser.c
@@ -48,6 +48,7 @@ G_DEFINE_TYPE (BraseroImageTypeChooser, brasero_image_type_chooser, GTK_TYPE_HBO
 enum {
 	FORMAT_TEXT,
 	FORMAT_TYPE,
+	FORMAT_SVCD,
 	FORMAT_LAST
 };
 
@@ -70,7 +71,8 @@ static GtkHBoxClass *parent_class = NULL;
 guint
 brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
 				        BraseroImageFormat formats,
-                                        gboolean show_autodetect)
+                                        gboolean show_autodetect,
+                                        gboolean is_video)
 {
 	guint format_num;
 	GtkTreeIter iter;
@@ -100,7 +102,7 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
 		format_num ++;
 		gtk_list_store_append (GTK_LIST_STORE (store), &iter);
 		gtk_list_store_set (GTK_LIST_STORE (store), &iter,
-				    FORMAT_TEXT, _("ISO9660 images"),
+				    FORMAT_TEXT, is_video? _("Video DVD image"):_("ISO9660 images"),
 				    FORMAT_TYPE, BRASERO_IMAGE_FORMAT_BIN,
 				    -1);
 	}
@@ -116,11 +118,29 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
 
 	if (formats & BRASERO_IMAGE_FORMAT_CUE) {
 		format_num ++;
-		gtk_list_store_append (GTK_LIST_STORE (store), &iter);
-		gtk_list_store_set (GTK_LIST_STORE (store), &iter,
-				    FORMAT_TEXT, _("Cue images"),
-				    FORMAT_TYPE, BRASERO_IMAGE_FORMAT_CUE,
-				    -1);
+		if (is_video) {
+			format_num ++;
+	
+			gtk_list_store_append (GTK_LIST_STORE (store), &iter);
+			gtk_list_store_set (GTK_LIST_STORE (store), &iter,
+					    FORMAT_TEXT, _("VCD image"),
+					    FORMAT_TYPE, BRASERO_IMAGE_FORMAT_CUE,
+					    -1);
+
+			gtk_list_store_append (GTK_LIST_STORE (store), &iter);
+			gtk_list_store_set (GTK_LIST_STORE (store), &iter,
+					    FORMAT_TEXT, _("SVCD image"),
+					    FORMAT_TYPE, BRASERO_IMAGE_FORMAT_CUE,
+			                    FORMAT_SVCD, TRUE,
+					    -1);
+		}
+		else {
+			gtk_list_store_append (GTK_LIST_STORE (store), &iter);
+			gtk_list_store_set (GTK_LIST_STORE (store), &iter,
+					    FORMAT_TEXT, _("Cue images"),
+					    FORMAT_TYPE, BRASERO_IMAGE_FORMAT_CUE,
+					    -1);
+		}
 	}
 
 	if (formats & BRASERO_IMAGE_FORMAT_CDRDAO) {
@@ -194,6 +214,26 @@ brasero_image_type_chooser_get_format (BraseroImageTypeChooser *self,
 	*format = priv->format;
 }
 
+gboolean
+brasero_image_type_chooser_is_SVCD (BraseroImageTypeChooser *chooser)
+{
+	BraseroImageTypeChooserPrivate *priv;
+	GtkTreeModel *model;
+	gboolean value;
+	GtkTreeIter iter;
+
+	priv = BRASERO_IMAGE_TYPE_CHOOSER_PRIVATE (chooser);
+	if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (priv->combo), &iter))
+		return FALSE;
+
+	model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->combo));
+	gtk_tree_model_get (model, &iter,
+	                    FORMAT_SVCD, &value,
+	                    -1);
+
+	return value;
+}
+
 static void
 brasero_image_type_chooser_changed_cb (GtkComboBox *combo,
 				       BraseroImageTypeChooser *self)
@@ -236,7 +276,8 @@ brasero_image_type_chooser_init (BraseroImageTypeChooser *obj)
 
 	store = gtk_list_store_new (FORMAT_LAST,
 				    G_TYPE_STRING,
-				    G_TYPE_INT);
+				    G_TYPE_INT,
+	                            G_TYPE_BOOLEAN);
 
 	priv->combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
 	g_signal_connect (priv->combo,
diff --git a/libbrasero-burn/brasero-image-type-chooser.h b/libbrasero-burn/brasero-image-type-chooser.h
index 0146b21..d97f6d3 100644
--- a/libbrasero-burn/brasero-image-type-chooser.h
+++ b/libbrasero-burn/brasero-image-type-chooser.h
@@ -63,13 +63,16 @@ GtkWidget *brasero_image_type_chooser_new ();
 guint
 brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
 				        BraseroImageFormat formats,
-                                        gboolean show_autodetect);
+                                        gboolean show_autodetect,
+                                        gboolean is_video);
 void
 brasero_image_type_chooser_set_format (BraseroImageTypeChooser *self,
 				       BraseroImageFormat format);
 void
 brasero_image_type_chooser_get_format (BraseroImageTypeChooser *self,
 				       BraseroImageFormat *format);
+gboolean
+brasero_image_type_chooser_is_SVCD (BraseroImageTypeChooser *chooser);
 
 G_END_DECLS
 
diff --git a/libbrasero-burn/brasero-src-image.c b/libbrasero-burn/brasero-src-image.c
index 4c5f90d..1d76d44 100644
--- a/libbrasero-burn/brasero-src-image.c
+++ b/libbrasero-burn/brasero-src-image.c
@@ -378,7 +378,7 @@ brasero_src_image_set_formats (BraseroSrcImage *dialog)
 
 	brasero_track_type_free (input);
 
-	brasero_image_type_chooser_set_formats (BRASERO_IMAGE_TYPE_CHOOSER (priv->format), formats,  TRUE);
+	brasero_image_type_chooser_set_formats (BRASERO_IMAGE_TYPE_CHOOSER (priv->format), formats,  TRUE, FALSE);
 
 	format = brasero_track_image_cfg_get_forced_format (priv->track);
 	brasero_image_type_chooser_set_format (BRASERO_IMAGE_TYPE_CHOOSER (priv->format), format);



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