diff options
author | Jeffrey Stedfast <fejj@helixcode.com> | 2001-01-10 13:44:23 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-01-10 13:44:23 +0800 |
commit | f54327b748170a6e771dc0cd87eff918d7f64b2d (patch) | |
tree | 77ad253ada6b454862cffdcaddc4548b460d039e | |
parent | 8f1d09360b6e8d6c07ce44d1a437678b41226524 (diff) | |
download | gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.gz gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.bz2 gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.lz gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.xz gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.zst gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.zip |
Attach to the "activate" signal - this should now make it so that a
2001-01-10 Jeffrey Stedfast <fejj@helixcode.com>
* filter-option.c (get_widget): Attach to the "activate" signal -
this should now make it so that a filter-option will "remember"
what a user changed.
* filter-system-flag.c (get_widget): Don't reset fsf->value to the
first system flag, this should already be defaulted to the
appropriate flag. This should fix the problem of always defaulting
to the first menu option and thus "forgetting" the user's settings.
svn path=/trunk/; revision=7356
-rw-r--r-- | filter/ChangeLog | 11 | ||||
-rw-r--r-- | filter/filter-option.c | 19 | ||||
-rw-r--r-- | filter/filter-system-flag.c | 24 | ||||
-rw-r--r-- | filter/filtertypes.xml | 2 | ||||
-rw-r--r-- | filter/libfilter-i18n.h | 36 |
5 files changed, 65 insertions, 27 deletions
diff --git a/filter/ChangeLog b/filter/ChangeLog index a1b483dc4a..dfc3602574 100644 --- a/filter/ChangeLog +++ b/filter/ChangeLog @@ -1,3 +1,14 @@ +2001-01-10 Jeffrey Stedfast <fejj@helixcode.com> + + * filter-option.c (get_widget): Attach to the "activate" signal - + this should now make it so that a filter-option will "remember" + what a user changed. + + * filter-system-flag.c (get_widget): Don't reset fsf->value to the + first system flag, this should already be defaulted to the + appropriate flag. This should fix the problem of always defaulting + to the first menu option and thus "forgetting" the user's settings. + 2001-01-04 Jeffrey Stedfast <fejj@helixcode.com> * filter-system-flag.c: comment out some of the system flags as we diff --git a/filter/filter-option.c b/filter/filter-option.c index 658136f0cb..3b3660dd5c 100644 --- a/filter/filter-option.c +++ b/filter/filter-option.c @@ -239,6 +239,14 @@ xml_decode (FilterElement *fe, xmlNodePtr node) return 0; } +static void +option_changed (GtkWidget *widget, FilterElement *fe) +{ + FilterOption *fo = (FilterOption *)fe; + + fo->current = gtk_object_get_data (GTK_OBJECT (widget), "option"); +} + static GtkWidget * get_widget (FilterElement *fe) { @@ -246,6 +254,7 @@ get_widget (FilterElement *fe) GtkWidget *menu; GtkWidget *omenu; GtkWidget *item; + GtkWidget *first = NULL; GList *l = fo->options; struct _filter_option *op; int index = 0, current = 0; @@ -253,12 +262,16 @@ get_widget (FilterElement *fe) menu = gtk_menu_new (); while (l) { op = l->data; - item = gtk_menu_item_new_with_label (_(op->title)); + item = gtk_menu_item_new_with_label (op->title); gtk_object_set_data (GTK_OBJECT (item), "option", op); + gtk_signal_connect (GTK_OBJECT (item), "activate", option_changed, fe); gtk_menu_append (GTK_MENU (menu), item); gtk_widget_show (item); if (op == fo->current) { current = index; + first = item; + } else if (!first) { + first = item; } l = g_list_next (l); @@ -267,6 +280,10 @@ get_widget (FilterElement *fe) omenu = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); + + if (first) + gtk_signal_emit_by_name (GTK_OBJECT (first), "activate", fe); + gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); return omenu; diff --git a/filter/filter-system-flag.c b/filter/filter-system-flag.c index f1eb2a5b10..3667876e23 100644 --- a/filter/filter-system-flag.c +++ b/filter/filter-system-flag.c @@ -69,12 +69,12 @@ struct _system_flag { }; static struct _system_flag * -find_option (const char *name) +find_option (const char *value) { struct _system_flag *flag; for (flag = system_flags; flag->title; flag++) { - if (!g_strcasecmp (name, flag->value)) + if (!g_strcasecmp (value, flag->value)) return flag; } @@ -215,26 +215,36 @@ static GtkWidget * get_widget (FilterElement *fe) { FilterSystemFlag *fsf = (FilterSystemFlag *) fe; - GtkWidget *omenu, *menu, *item; + GtkWidget *omenu, *menu, *item, *first = NULL; struct _system_flag *flag; int index = 0, current = 0; - fsf->value = system_flags[0].value; - menu = gtk_menu_new (); for (flag = system_flags; flag->title; flag++) { item = gtk_menu_item_new_with_label (flag->title); gtk_object_set_data (GTK_OBJECT (item), "flag", flag); - gtk_signal_connect (GTK_OBJECT (item), "select", item_selected, fe); + gtk_signal_connect (GTK_OBJECT (item), "activate", item_selected, fe); + gtk_menu_append (GTK_MENU (menu), item); + gtk_widget_show (item); - if (!strcmp (fsf->value, flag->value)) + + if (fsf->value && !g_strcasecmp (fsf->value, flag->value)) { current = index; + first = item; + } else if (!first) { + first = item; + } + index++; } omenu = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); + + if (first) + gtk_signal_emit_by_name (GTK_OBJECT (first), "activate", fe); + gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); return omenu; diff --git a/filter/filtertypes.xml b/filter/filtertypes.xml index 0eb9ca242d..e0837cf09e 100644 --- a/filter/filtertypes.xml +++ b/filter/filtertypes.xml @@ -423,7 +423,7 @@ (match-all (system-flag ${flag})) </code> </option> - <option value="is-not"> + <option value="is not"> <title>is not</title> <code> (match-all (not (system-flag ${flag}))) diff --git a/filter/libfilter-i18n.h b/filter/libfilter-i18n.h index 7654341b07..b38f69c314 100644 --- a/filter/libfilter-i18n.h +++ b/filter/libfilter-i18n.h @@ -1,44 +1,44 @@ /* Automatically generated. Do not edit. */ -char *s = N_("after"); char *s = N_("Assign Colour"); char *s = N_("Assign Score"); -char *s = N_("before"); -char *s = N_("contains"); char *s = N_("Copy to Folder"); char *s = N_("Date received"); char *s = N_("Date sent"); char *s = N_("Delete"); -char *s = N_("does not contain"); -char *s = N_("does not end with"); -char *s = N_("does not exist"); -char *s = N_("does not sound like"); -char *s = N_("does not start with"); -char *s = N_("ends with"); -char *s = N_("exists"); char *s = N_("Expression"); char *s = N_("Forward to Address"); -char *s = N_("is"); -char *s = N_("is greater than"); -char *s = N_("is less than"); -char *s = N_("is not"); char *s = N_("Message Body"); char *s = N_("Message Header"); char *s = N_("Message was received"); char *s = N_("Message was sent"); char *s = N_("Move to Folder"); -char *s = N_("on or after"); -char *s = N_("on or before"); char *s = N_("Priority"); char *s = N_("Recipients"); char *s = N_("Regex Match"); char *s = N_("Sender"); char *s = N_("Set Status"); -char *s = N_("sounds like"); char *s = N_("Source"); char *s = N_("Specific header"); -char *s = N_("starts with"); char *s = N_("Status"); char *s = N_("Stop Processing"); char *s = N_("Subject"); +char *s = N_("after"); +char *s = N_("before"); +char *s = N_("contains"); +char *s = N_("does not contain"); +char *s = N_("does not end with"); +char *s = N_("does not exist"); +char *s = N_("does not sound like"); +char *s = N_("does not start with"); +char *s = N_("ends with"); +char *s = N_("exists"); +char *s = N_("is greater than"); +char *s = N_("is less than"); +char *s = N_("is not"); +char *s = N_("is"); +char *s = N_("on or after"); +char *s = N_("on or before"); +char *s = N_("sounds like"); +char *s = N_("starts with"); char *s = N_("was after"); char *s = N_("was before"); |