aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/e-filter-bar.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/misc/e-filter-bar.c')
-rw-r--r--widgets/misc/e-filter-bar.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
index 6679059963..709a0dc837 100644
--- a/widgets/misc/e-filter-bar.c
+++ b/widgets/misc/e-filter-bar.c
@@ -29,6 +29,7 @@
#include "e-dropdown-button.h"
#include "e-filter-bar.h"
+#include "filter/rule-editor.h"
#include <gal/widgets/e-unicode.h>
#include <gal/widgets/e-gui-utils.h>
@@ -58,6 +59,21 @@ static void rule_editor_destroyed(GtkWidget *w, EFilterBar *efb)
e_search_bar_set_menu_sensitive((ESearchBar *)efb, E_FILTERBAR_SAVE_ID, TRUE);
}
+/* FIXME: need to update the popup menu to match any edited rules, sigh */
+static void full_rule_editor_clicked(GtkWidget *w, int button, void *data)
+{
+ EFilterBar *efb = data;
+
+ switch (button) {
+ case 0:
+ rule_context_save(efb->context, efb->userrules);
+ case 1:
+ default:
+ gnome_dialog_close((GnomeDialog *)w);
+ case -1:
+ }
+}
+
static void rule_editor_clicked(GtkWidget *w, int button, void *data)
{
EFilterBar *efb = data;
@@ -121,6 +137,16 @@ menubar_activated (ESearchBar *esb, int id, void *data)
gtk_object_set((GtkObject *)esb, "text", NULL, NULL);
gtk_widget_set_sensitive(esb->entry, TRUE);
break;
+ case E_FILTERBAR_EDIT_ID:
+ if (!efb->save_dialogue) {
+ GnomeDialog *gd;
+
+ gd = (GnomeDialog *)rule_editor_new(efb->context, FILTER_SOURCE_INCOMING);
+ gtk_signal_connect((GtkObject *)gd, "clicked", full_rule_editor_clicked, efb);
+ gtk_signal_connect((GtkObject *)gd, "destroy", rule_editor_destroyed, efb);
+ gtk_widget_show((GtkWidget *)gd);
+ }
+ break;
case E_FILTERBAR_SAVE_ID:
if (efb->current_query && !efb->save_dialogue) {
GtkWidget *w;