diff options
author | John Sullivan <sullivan@src.gnome.org> | 2000-08-09 18:00:49 +0000 |
---|---|---|
committer | John Sullivan <sullivan@src.gnome.org> | 2000-08-09 18:00:49 +0000 |
commit | 6336ed3d907459cf55661813cd353513a752e546 (patch) | |
tree | 3bc57f6d8afe14ce38a843c94b19b049489f1dce | |
parent | a939160e500d5a6c6e7184d0395c4e6be1c903bc (diff) | |
download | nautilus-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-- | ChangeLog | 28 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-search-bar-criterion.c | 24 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-search-bar-criterion.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-search-bar-criterion.c | 24 | ||||
-rw-r--r-- | libnautilus-private/nautilus-search-bar-criterion.h | 8 | ||||
-rw-r--r-- | src/nautilus-complex-search-bar.c | 2 | ||||
-rw-r--r-- | src/nautilus-simple-search-bar.c | 16 |
7 files changed, 88 insertions, 22 deletions
@@ -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); |