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