summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Sullivan <sullivan@src.gnome.org>2000-08-09 18:00:49 +0000
committerJohn Sullivan <sullivan@src.gnome.org>2000-08-09 18:00:49 +0000
commit6336ed3d907459cf55661813cd353513a752e546 (patch)
tree3bc57f6d8afe14ce38a843c94b19b049489f1dce
parenta939160e500d5a6c6e7184d0395c4e6be1c903bc (diff)
downloadnautilus-6336ed3d907459cf55661813cd353513a752e546.tar.gz
A little more work towards bug 1753 (search results should
start out sorted by search criteria) and a bug fix. * libnautilus-extensions/nautilus-search-bar-criterion.h: Make #define constants for the criteria parts of search URIs (e.g. "file_name", "size", "content", etc.) * libnautilus-extensions/nautilus-search-bar-criterion.c: (get_name_location_for), (get_content_location_for), (get_file_type_location_for), (get_size_location_for), (get_emblem_location_for), (get_date_modified_location_for), (get_owner_location_for): Use these constants when creating the URI used by complex search bar. * src/nautilus-simple-search-bar.c: (nautilus_simple_search_criteria_to_search_uri): Use these constants when creating the URI used by simple search bar. Also added a FIXME about how the simple search bar should be sharing the URI-generation code of the complex search bar. * src/nautilus-complex-search-bar.c: (criterion_callback): Update sensitivity of "Find" button when user chooses different criterion from menu. This fixes bug where switching from an empty text-type value to a menu-type value would leave the "Find" button insensitive.
-rw-r--r--ChangeLog28
-rw-r--r--libnautilus-extensions/nautilus-search-bar-criterion.c24
-rw-r--r--libnautilus-extensions/nautilus-search-bar-criterion.h8
-rw-r--r--libnautilus-private/nautilus-search-bar-criterion.c24
-rw-r--r--libnautilus-private/nautilus-search-bar-criterion.h8
-rw-r--r--src/nautilus-complex-search-bar.c2
-rw-r--r--src/nautilus-simple-search-bar.c16
7 files changed, 88 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 59b0a09a7..ef6b7cdf9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2000-08-09 John Sullivan <sullivan@eazel.com>
+
+ A little more work towards bug 1753 (search results should
+ start out sorted by search criteria) and a bug fix.
+
+ * libnautilus-extensions/nautilus-search-bar-criterion.h:
+ Make #define constants for the criteria parts of search URIs
+ (e.g. "file_name", "size", "content", etc.)
+
+ * libnautilus-extensions/nautilus-search-bar-criterion.c:
+ (get_name_location_for), (get_content_location_for),
+ (get_file_type_location_for), (get_size_location_for),
+ (get_emblem_location_for), (get_date_modified_location_for),
+ (get_owner_location_for): Use these constants when creating
+ the URI used by complex search bar.
+ * src/nautilus-simple-search-bar.c:
+ (nautilus_simple_search_criteria_to_search_uri):
+ Use these constants when creating the URI used by simple
+ search bar. Also added a FIXME about how the simple search
+ bar should be sharing the URI-generation code of the
+ complex search bar.
+
+ * src/nautilus-complex-search-bar.c: (criterion_callback):
+ Update sensitivity of "Find" button when user chooses
+ different criterion from menu. This fixes bug where switching
+ from an empty text-type value to a menu-type value would leave
+ the "Find" button insensitive.
+
2000-08-09 Andy Hertzfeld <andy@eazel.com>
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_hit_test),
diff --git a/libnautilus-extensions/nautilus-search-bar-criterion.c b/libnautilus-extensions/nautilus-search-bar-criterion.c
index d7f166726..8a4875318 100644
--- a/libnautilus-extensions/nautilus-search-bar-criterion.c
+++ b/libnautilus-extensions/nautilus-search-bar-criterion.c
@@ -517,7 +517,7 @@ nautilus_search_bar_criterion_human_from_uri (const char *location_uri)
static char *
get_name_location_for (int relation_number, char *name_text)
{
- const char *possible_relations[] = { "contains",
+ const char *possible_relations[] = {"contains",
"starts_with",
"ends_with",
"matches_glob",
@@ -526,7 +526,8 @@ get_name_location_for (int relation_number, char *name_text)
g_assert (relation_number >= 0);
g_assert (relation_number < 5);
- return g_strdup_printf ("file_name %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_NAME,
+ possible_relations[relation_number],
name_text);
}
@@ -539,7 +540,8 @@ get_content_location_for (int relation_number, char *name_text)
g_assert (relation_number == 0 || relation_number == 1);
- return g_strdup_printf ("content %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_CONTENT,
+ possible_relations[relation_number],
name_text);
}
@@ -553,7 +555,8 @@ get_file_type_location_for (int relation_number,
g_assert (relation_number == 0 || relation_number == 1);
g_assert (value_number >= 0);
g_assert (value_number < 5);
- return g_strdup_printf ("file_type %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_TYPE,
+ possible_relations[relation_number],
possible_values[value_number]);
}
@@ -566,7 +569,9 @@ get_size_location_for (int relation_number,
g_assert (relation_number == 0 || relation_number == 1);
/* FIXME: Need checks for appropriate size here */
- return g_strdup_printf ("size %s %s", possible_relations[relation_number], size_text);
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_SIZE,
+ possible_relations[relation_number],
+ size_text);
}
@@ -574,8 +579,8 @@ static char *
get_emblem_location_for (int relation_number,
int value_number)
{
- /* FIXME */
- return g_strdup ("");
+ /* FIXME: not yet implemented */
+ return g_strdup_printf ("%s ", NAUTILUS_SEARCH_URI_TEXT_EMBLEMS);
}
static char *
@@ -589,7 +594,8 @@ get_date_modified_location_for (int relation_number,
g_assert (value_number >= 0);
g_assert (value_number < 3);
- return g_strdup_printf ("mod_time %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_DATE_MODIFIED,
+ possible_relations[relation_number],
possible_values[value_number]);
}
@@ -600,7 +606,7 @@ get_owner_location_for (int relation_number,
{
const char *possible_relations[] = { "is", "is not" };
g_assert (relation_number == 0 || relation_number == 1);
- return g_strdup_printf ("owner %s %s", possible_relations[relation_number], owner_text);
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_OWNER, possible_relations[relation_number], owner_text);
}
diff --git a/libnautilus-extensions/nautilus-search-bar-criterion.h b/libnautilus-extensions/nautilus-search-bar-criterion.h
index 7ade54330..ff6194095 100644
--- a/libnautilus-extensions/nautilus-search-bar-criterion.h
+++ b/libnautilus-extensions/nautilus-search-bar-criterion.h
@@ -43,6 +43,14 @@ typedef enum {
NAUTILUS_LAST_CRITERION
} NautilusSearchBarCriterionType;
+/* These strings are used programatically; they must not be translated */
+#define NAUTILUS_SEARCH_URI_TEXT_NAME "file_name"
+#define NAUTILUS_SEARCH_URI_TEXT_CONTENT "content"
+#define NAUTILUS_SEARCH_URI_TEXT_TYPE "file"
+#define NAUTILUS_SEARCH_URI_TEXT_SIZE "size"
+#define NAUTILUS_SEARCH_URI_TEXT_EMBLEMS "emblem"
+#define NAUTILUS_SEARCH_URI_TEXT_DATE_MODIFIED "mod_time"
+#define NAUTILUS_SEARCH_URI_TEXT_OWNER "owner"
typedef struct NautilusSearchBarCriterionDetails NautilusSearchBarCriterionDetails;
diff --git a/libnautilus-private/nautilus-search-bar-criterion.c b/libnautilus-private/nautilus-search-bar-criterion.c
index d7f166726..8a4875318 100644
--- a/libnautilus-private/nautilus-search-bar-criterion.c
+++ b/libnautilus-private/nautilus-search-bar-criterion.c
@@ -517,7 +517,7 @@ nautilus_search_bar_criterion_human_from_uri (const char *location_uri)
static char *
get_name_location_for (int relation_number, char *name_text)
{
- const char *possible_relations[] = { "contains",
+ const char *possible_relations[] = {"contains",
"starts_with",
"ends_with",
"matches_glob",
@@ -526,7 +526,8 @@ get_name_location_for (int relation_number, char *name_text)
g_assert (relation_number >= 0);
g_assert (relation_number < 5);
- return g_strdup_printf ("file_name %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_NAME,
+ possible_relations[relation_number],
name_text);
}
@@ -539,7 +540,8 @@ get_content_location_for (int relation_number, char *name_text)
g_assert (relation_number == 0 || relation_number == 1);
- return g_strdup_printf ("content %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_CONTENT,
+ possible_relations[relation_number],
name_text);
}
@@ -553,7 +555,8 @@ get_file_type_location_for (int relation_number,
g_assert (relation_number == 0 || relation_number == 1);
g_assert (value_number >= 0);
g_assert (value_number < 5);
- return g_strdup_printf ("file_type %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_TYPE,
+ possible_relations[relation_number],
possible_values[value_number]);
}
@@ -566,7 +569,9 @@ get_size_location_for (int relation_number,
g_assert (relation_number == 0 || relation_number == 1);
/* FIXME: Need checks for appropriate size here */
- return g_strdup_printf ("size %s %s", possible_relations[relation_number], size_text);
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_SIZE,
+ possible_relations[relation_number],
+ size_text);
}
@@ -574,8 +579,8 @@ static char *
get_emblem_location_for (int relation_number,
int value_number)
{
- /* FIXME */
- return g_strdup ("");
+ /* FIXME: not yet implemented */
+ return g_strdup_printf ("%s ", NAUTILUS_SEARCH_URI_TEXT_EMBLEMS);
}
static char *
@@ -589,7 +594,8 @@ get_date_modified_location_for (int relation_number,
g_assert (value_number >= 0);
g_assert (value_number < 3);
- return g_strdup_printf ("mod_time %s %s", possible_relations[relation_number],
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_DATE_MODIFIED,
+ possible_relations[relation_number],
possible_values[value_number]);
}
@@ -600,7 +606,7 @@ get_owner_location_for (int relation_number,
{
const char *possible_relations[] = { "is", "is not" };
g_assert (relation_number == 0 || relation_number == 1);
- return g_strdup_printf ("owner %s %s", possible_relations[relation_number], owner_text);
+ return g_strdup_printf ("%s %s %s", NAUTILUS_SEARCH_URI_TEXT_OWNER, possible_relations[relation_number], owner_text);
}
diff --git a/libnautilus-private/nautilus-search-bar-criterion.h b/libnautilus-private/nautilus-search-bar-criterion.h
index 7ade54330..ff6194095 100644
--- a/libnautilus-private/nautilus-search-bar-criterion.h
+++ b/libnautilus-private/nautilus-search-bar-criterion.h
@@ -43,6 +43,14 @@ typedef enum {
NAUTILUS_LAST_CRITERION
} NautilusSearchBarCriterionType;
+/* These strings are used programatically; they must not be translated */
+#define NAUTILUS_SEARCH_URI_TEXT_NAME "file_name"
+#define NAUTILUS_SEARCH_URI_TEXT_CONTENT "content"
+#define NAUTILUS_SEARCH_URI_TEXT_TYPE "file"
+#define NAUTILUS_SEARCH_URI_TEXT_SIZE "size"
+#define NAUTILUS_SEARCH_URI_TEXT_EMBLEMS "emblem"
+#define NAUTILUS_SEARCH_URI_TEXT_DATE_MODIFIED "mod_time"
+#define NAUTILUS_SEARCH_URI_TEXT_OWNER "owner"
typedef struct NautilusSearchBarCriterionDetails NautilusSearchBarCriterionDetails;
diff --git a/src/nautilus-complex-search-bar.c b/src/nautilus-complex-search-bar.c
index 389053004..363b6c370 100644
--- a/src/nautilus-complex-search-bar.c
+++ b/src/nautilus-complex-search-bar.c
@@ -110,6 +110,8 @@ static void criterion_callback (NautilusSearchBarCriterion *old_criterion,
attach_criterion_to_search_bar (bar, new_criterion, row + 1);
+ update_find_button_state (bar);
+
}
diff --git a/src/nautilus-simple-search-bar.c b/src/nautilus-simple-search-bar.c
index ac77308ed..45f568780 100644
--- a/src/nautilus-simple-search-bar.c
+++ b/src/nautilus-simple-search-bar.c
@@ -28,6 +28,7 @@
#include <libgnomevfs/gnome-vfs-utils.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-string.h>
+#include <libnautilus-extensions/nautilus-search-bar-criterion.h>
struct NautilusSimpleSearchBarDetails {
GtkEntry *entry;
@@ -177,6 +178,11 @@ nautilus_simple_search_criteria_to_search_uri (const char *search_criteria)
char *escaped_fragment;
int length, i;
+ /* FIXME: The logic here should be exactly the same as the logic for
+ * a complex search-by-file-name. Currently the complex search doesn't
+ * do the multi-word handling that this function does. They should use
+ * the same code.
+ */
g_return_val_if_fail (search_criteria != NULL, NULL);
words = g_strsplit (search_criteria, " ", strlen (search_criteria));
@@ -184,19 +190,21 @@ nautilus_simple_search_criteria_to_search_uri (const char *search_criteria)
length = strlen ("[file:///]");
/* Count total length */
for (i = 0; words[i] != NULL; i++) {
- length += strlen (words[i]) + strlen ("file_name contains & ");
+ length += strlen (words[i]) + strlen (NAUTILUS_SEARCH_URI_TEXT_NAME) + strlen (" contains & ");
}
fragment = g_new0 (char, length + 1);
/* FIXME: this should eventually be: sprintf (fragment, "[file%%3A%%2F%%2F%%2F]"); */
sprintf (fragment, "[file:///]");
if (words[0] != NULL) {
for (i = 0; words[i+1] != NULL; i++) {
- strcat (fragment, "file_name contains ");
+ strcat (fragment, NAUTILUS_SEARCH_URI_TEXT_NAME);
+ strcat (fragment, " contains ");
strcat (fragment, words[i]);
strcat (fragment, " & ");
}
- strcat (fragment, "file_name contains ");
- strcat (fragment, words[i]);
+ strcat (fragment, NAUTILUS_SEARCH_URI_TEXT_NAME);
+ strcat (fragment, " contains ");
+ strcat (fragment, words[i]);
}
g_strfreev (words);
escaped_fragment = gnome_vfs_escape_string (fragment);