[brasero] Fix #598908 - data project: multiple file rename do not work



commit ea76cee6d02ac1ee5b4511de32d62a65b20de139
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Mon Oct 19 16:24:00 2009 +0200

    Fix #598908 -  data project: multiple file rename do not work
    Based on the patch by  Philipp Doorkeeper
    This adds a new way to renames files by prepending a number to them (useful when you want to order them)

 src/brasero-rename.c |   40 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 2 deletions(-)
---
diff --git a/src/brasero-rename.c b/src/brasero-rename.c
index e189441..920d17f 100644
--- a/src/brasero-rename.c
+++ b/src/brasero-rename.c
@@ -167,6 +167,30 @@ brasero_rename_number_string (BraseroRename *self,
 	return g_strdup_printf ("%s%i%s", left, priv->number ++, right);
 }
 
+static gchar *
+brasero_rename_sequence_string (BraseroRename *self,
+                                const gchar *name,
+                                guint item_num,
+                                guint nb_items)
+{
+	BraseroRenamePrivate *priv;
+	gboolean is_at_end;
+
+	priv = BRASERO_RENAME_PRIVATE (self);
+
+	is_at_end = gtk_combo_box_get_active (GTK_COMBO_BOX (priv->insert_combo)) != 0;
+
+	if (nb_items < 10){
+		return g_strdup_printf ("%i%s", item_num, name);
+	} else if (nb_items < 100){
+		return g_strdup_printf ("%02i%s", item_num, name);       
+	} else if (nb_items < 1000){
+		return g_strdup_printf ("%03i%s", item_num, name);       
+	} else {
+		return g_strdup_printf ("%04i%s", item_num, name); 
+	}
+}
+
 gboolean
 brasero_rename_do (BraseroRename *self,
 		   GtkTreeSelection *selection,
@@ -176,6 +200,8 @@ brasero_rename_do (BraseroRename *self,
 	BraseroRenamePrivate *priv;
 	GtkTreeModel *model;
 	GList *selected;
+	guint item_num;
+	guint nb_items;
 	GList *item;
 	guint mode;
 
@@ -187,7 +213,11 @@ brasero_rename_do (BraseroRename *self,
 		return TRUE;
 
 	selected = gtk_tree_selection_get_selected_rows (selection, &model);
-	for (item = selected; item; item = item->next) {
+
+	nb_items = g_list_length (selected);
+	item_num = 0;
+
+	for (item = selected; item; item = item->next, item_num ++) {
 		GtkTreePath *treepath;
 		GtkTreeIter iter;
 		gboolean result;
@@ -215,6 +245,9 @@ redo:
 		case 3:
 			new_name = brasero_rename_number_string (self, name);
 			break;
+		case 4:
+			new_name = brasero_rename_sequence_string (self, name, item_num, nb_items);
+			break;
 		default:
 			new_name = NULL;
 			break;
@@ -249,7 +282,9 @@ brasero_rename_type_changed (GtkComboBox *combo,
 	BraseroRenamePrivate *priv;
 
 	priv = BRASERO_RENAME_PRIVATE (self);
-	if (gtk_combo_box_get_active (combo) == -1) {
+
+	if (gtk_combo_box_get_active (combo) - priv->show_default < 0
+	||  gtk_combo_box_get_active (combo) - priv->show_default == 4) {
 		gtk_widget_hide (priv->notebook);
 		return;
 	}
@@ -286,6 +321,7 @@ brasero_rename_init (BraseroRename *object)
 	gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo), _("Delete text"));
 	gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo), _("Substitute text"));
 	gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo), _("Number files according to a pattern"));
+	gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo), _("Insert number sequence at beginning"));
 
 	g_signal_connect (priv->combo,
 			  "changed",



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