[dia] Find&Replace: also search in dictionaries (match values from meta)
- From: Hans Breuer <hans src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia] Find&Replace: also search in dictionaries (match values from meta)
- Date: Wed, 3 Oct 2012 20:02:25 +0000 (UTC)
commit 7fc755eeafee8f8457b9fe957b9fa2bb08aead43
Author: Hans Breuer <hans breuer org>
Date: Sun Sep 30 23:30:29 2012 +0200
Find&Replace: also search in dictionaries (match values from meta)
app/find-and-replace.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/app/find-and-replace.c b/app/find-and-replace.c
index 2123fdc..3961ee5 100644
--- a/app/find-and-replace.c
+++ b/app/find-and-replace.c
@@ -143,6 +143,26 @@ _match_name_prop (DiaObject *obj, const SearchData *sd, const gchar *replacement
return plist;
}
+/*! GHRFunc : match SearchData against value in the hashtable */
+static gboolean
+_match_value (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ const SearchData *sd = (SearchData *)user_data;
+
+ if (sd->flags & MATCH_CASE) {
+ return strstr ((char *)value, sd->key) != NULL;
+ } else {
+ gchar *s1 = g_utf8_casefold ((char *)value, -1);
+ gchar *s2 = g_utf8_casefold (sd->key, -1);
+ gboolean matched = strstr (s1, s2) != NULL;
+ g_free (s1);
+ g_free (s2);
+ return matched;
+ }
+}
+
/*! Match and possibly modify one property in an object. */
static gboolean
_match_prop (DiaObject *obj, const SearchData *sd, const gchar *replacement, Property *prop)
@@ -185,6 +205,12 @@ _match_prop (DiaObject *obj, const SearchData *sd, const gchar *replacement, Pro
/* Done. */
return is_match;
}
+ else if (strcmp (prop_type, PROP_TYPE_DICT) == 0)
+ {
+ GHashTable *ht = ((DictProperty*)prop)->dict;
+ if (ht && g_hash_table_find (ht, _match_value, (gpointer)sd))
+ return TRUE;
+ }
/* Check for string / text property. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]