Re: [Rhythmbox-devel] Additional automatic playlist criteria patch(es)



As a follow-up to myself, I'm attaching a patch which makes the "path"
property work correctly - it deals with escaping/unescaping special
characters.


Cheers,

James "Doc" Livingston 
-- 
"There are some benefits to high blood pressure", Bob mused as another
mosquito exploded. -- Bulwer-Lytton contest entry, author unknown.
--- widgets/rb-query-creator-properties.c	2005-07-20 00:30:47.000000000 +1000
+++ widgets/rb-query-creator-properties.c	2005-07-20 02:39:50.818553792 +1000
@@ -28,6 +28,7 @@
 #include "rb-rating.h"
 
 const RBQueryCreatorPropertyType string_property_type;
+const RBQueryCreatorPropertyType escaped_string_property_type;
 const RBQueryCreatorPropertyType rating_property_type;
 const RBQueryCreatorPropertyType integer_property_type;
 const RBQueryCreatorPropertyType duration_property_type;
@@ -36,6 +37,8 @@
 static GtkWidget * stringCriteriaCreateWidget (gboolean *constrain);
 static void stringCriteriaSetWidgetData (GtkWidget *widget, GValue *val);
 static void stringCriteriaGetWidgetData (GtkWidget *widget, GValue *val);
+static void escapedStringCriteriaSetWidgetData (GtkWidget *widget, GValue *val);
+static void escapedStringCriteriaGetWidgetData (GtkWidget *widget, GValue *val);
 static GtkWidget * ratingCriteriaCreateWidget (gboolean *constrain);
 static void ratingCriteriaSetWidgetData (GtkWidget *widget, GValue *val);
 static void ratingCriteriaGetWidgetData (GtkWidget *widget, GValue *val);
@@ -60,7 +63,7 @@
 	{ N_("Album"), RHYTHMDB_PROP_ALBUM, RHYTHMDB_PROP_ALBUM_FOLDED, &string_property_type },
 	{ N_("Genre"), RHYTHMDB_PROP_GENRE, RHYTHMDB_PROP_GENRE_FOLDED, &string_property_type },
 	{ N_("Rating"), RHYTHMDB_PROP_RATING, RHYTHMDB_PROP_RATING, &rating_property_type },
-	{ N_("Path"), RHYTHMDB_PROP_LOCATION, RHYTHMDB_PROP_LOCATION, &string_property_type },
+	{ N_("Path"), RHYTHMDB_PROP_LOCATION, RHYTHMDB_PROP_LOCATION, &escaped_string_property_type },
 
 	{ N_("Play Count"), RHYTHMDB_PROP_PLAY_COUNT, RHYTHMDB_PROP_PLAY_COUNT, &integer_property_type },
 	{ N_("Track Number"), RHYTHMDB_PROP_TRACK_NUMBER, RHYTHMDB_PROP_TRACK_NUMBER, &integer_property_type },
@@ -95,6 +98,15 @@
 	stringCriteriaGetWidgetData
 };
 
+const RBQueryCreatorPropertyType escaped_string_property_type =
+{
+	G_N_ELEMENTS (string_criteria_options),
+	string_criteria_options,
+	stringCriteriaCreateWidget,
+	escapedStringCriteriaSetWidgetData,
+	escapedStringCriteriaGetWidgetData
+};
+
 
 /*
  * This are the property types for numeric quantities, such as rating and playcounts
@@ -197,6 +209,23 @@
 	g_value_set_string (val, text);
 }
 
+static void
+escapedStringCriteriaSetWidgetData (GtkWidget *widget, GValue *val)
+{
+	char *text = gnome_vfs_unescape_string (g_value_get_string (val), NULL);
+	gtk_entry_set_text (GTK_ENTRY (widget), text);
+	g_free (text);
+}
+
+static void
+escapedStringCriteriaGetWidgetData (GtkWidget *widget, GValue *val)
+{
+	char *text = gnome_vfs_escape_path_string (gtk_entry_get_text (GTK_ENTRY (widget)));
+
+	g_value_init (val, G_TYPE_STRING);
+	g_value_take_string (val, text);
+}
+
 
 /*
  * Implementation for the ratings property, using the RbRating widget

Attachment: signature.asc
Description: This is a digitally signed message part



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