From ab3f1f17ad83b23d14fc552a29cce88ed0939f8d Mon Sep 17 00:00:00 2001 From: Jens Oberender Date: Wed, 11 Dec 2002 01:00:58 +0000 Subject: [PATCH] added dialog for incomplete rules in scoring, filtering and matcher to ask wheather really close --- ChangeLog.claws | 7 +++++++ configure.in | 2 +- src/prefs_filtering.c | 37 ++++++++++++++++++++++++++++++------ src/prefs_matcher.c | 33 ++++++++++++++++++++++++++++++-- src/prefs_scoring.c | 44 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+), 9 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index 64b4184df..396455ad6 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,10 @@ +2002-12-11 [jens] 0.8.6claws98 + * src/prefs_filtering.c + * src/prefs_matcher.c + * src/prefs_scoring.c + added dialog for incomplete rules in scoring, filtering and + matcher to ask wheather really close + 2002-12-11 [colin] 0.8.6claws97 * src/folder.c diff --git a/configure.in b/configure.in index 31153c1df..a5a089ef3 100644 --- a/configure.in +++ b/configure.in @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=6 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws97 +EXTRA_VERSION=claws98 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/prefs_filtering.c b/src/prefs_filtering.c index 549737a4b..f68bfa749 100644 --- a/src/prefs_filtering.c +++ b/src/prefs_filtering.c @@ -947,7 +947,7 @@ static void prefs_filtering_condition_define(void) /* register / substitute delete buttons */ -static FilteringProp * prefs_filtering_dialog_to_filtering(void) +static FilteringProp * prefs_filtering_dialog_to_filtering(gboolean alert) { MatcherList * cond; gchar * cond_str; @@ -962,7 +962,7 @@ static FilteringProp * prefs_filtering_dialog_to_filtering(void) cond_str = gtk_entry_get_text(GTK_ENTRY(filtering.cond_entry)); if (*cond_str == '\0') { - alertpanel_error(_("Condition string is empty.")); + if(alert == TRUE) alertpanel_error(_("Condition string is empty.")); return NULL; } @@ -980,7 +980,7 @@ static FilteringProp * prefs_filtering_dialog_to_filtering(void) case ACTION_EXECUTE: destination = gtk_entry_get_text(GTK_ENTRY(filtering.dest_entry)); if (*destination == '\0') { - alertpanel_error(_("Destination is not set.")); + if(alert == TRUE) alertpanel_error(_("Destination is not set.")); return NULL; } break; @@ -1002,7 +1002,7 @@ static FilteringProp * prefs_filtering_dialog_to_filtering(void) cond = matcher_parser_get_cond(cond_str); if (cond == NULL) { - alertpanel_error(_("Condition string is not valid.")); + if(alert == TRUE) alertpanel_error(_("Condition string is not valid.")); filteringaction_free(action); return NULL; } @@ -1016,7 +1016,7 @@ static void prefs_filtering_register_cb(void) { FilteringProp * prop; - prop = prefs_filtering_dialog_to_filtering(); + prop = prefs_filtering_dialog_to_filtering(TRUE); if (prop == NULL) return; prefs_filtering_clist_set_row(-1, prop); @@ -1037,7 +1037,7 @@ static void prefs_filtering_substitute_cb(void) row = GPOINTER_TO_INT(clist->selection->data); if (row == 0) return; - prop = prefs_filtering_dialog_to_filtering(); + prop = prefs_filtering_dialog_to_filtering(TRUE); if (prop == NULL) return; prefs_filtering_clist_set_row(row, prop); @@ -1420,6 +1420,31 @@ static void prefs_filtering_key_pressed(GtkWidget *widget, GdkEventKey *event, static void prefs_filtering_ok(void) { + FilteringProp * prop; + gchar * str; + gchar * filtering_str; + gint row = 1; + AlertValue val; + + prop = prefs_filtering_dialog_to_filtering(FALSE); + if (prop != NULL) { + str = filteringprop_to_string(prop); + while (gtk_clist_get_text(GTK_CLIST(filtering.cond_clist), + row, 0, &filtering_str)) { + if (strcmp(filtering_str, str) == 0) break; + row++; + } + if (strcmp(filtering_str, str) != 0) { + val = alertpanel(_("Entry not registered"), + _("The entry was not registered\nAre you really finish?"), + _("Yes"), _("No"), NULL); + if (G_ALERTDEFAULT != val) { + g_free(str); + return; + } + } + g_free(str); + } prefs_filtering_set_list(); prefs_matcher_write_config(); prefs_filtering_close(); diff --git a/src/prefs_matcher.c b/src/prefs_matcher.c index df0bfbf27..251f241b9 100644 --- a/src/prefs_matcher.c +++ b/src/prefs_matcher.c @@ -1384,11 +1384,40 @@ static void prefs_matcher_cancel(void) static void prefs_matcher_ok(void) { MatcherList * matchers; + MatcherProp * matcherprop; + AlertValue val; + gint criteria; + gint value_criteria; + gchar * matcher_str; + gchar * str; + gint row = 1; matchers = prefs_matcher_get_list(); - gtk_widget_hide(matcher.window); - inc_unlock(); + if (matchers != NULL) { + matcherprop = prefs_matcher_dialog_to_matcher(); + if (matcherprop != NULL) { + str = matcherprop_to_string(matcherprop); + if(strcmp(str, "all") != 0) { + while (gtk_clist_get_text(GTK_CLIST(matcher.cond_clist), + row, 0, &matcher_str)) { + if (strcmp(matcher_str, str) == 0) break; + row++; + } + if (strcmp(matcher_str, str) != 0) { + val = alertpanel(_("Entry not registered"), + _("The entry was not registered\nAre you really finish?"), + _("Yes"), _("No"), NULL); + if (G_ALERTDEFAULT != val) { + g_free(str); + return; + } + } + } + } + g_free(str); + gtk_widget_hide(matcher.window); + inc_unlock(); if (matchers_callback != NULL) matchers_callback(matchers); matcherlist_free(matchers); diff --git a/src/prefs_scoring.c b/src/prefs_scoring.c index 5f389f97b..029902f70 100644 --- a/src/prefs_scoring.c +++ b/src/prefs_scoring.c @@ -730,6 +730,50 @@ static void prefs_scoring_key_pressed(GtkWidget *widget, GdkEventKey *event, static void prefs_scoring_ok(void) { + MatcherList * cond; + gchar * cond_str; + gchar * score_str; + gchar * scoring_str; + gchar * str; + ScoringProp * prop; + gint score; + gint row = 1; + AlertValue val; + + cond_str = gtk_entry_get_text(GTK_ENTRY(scoring.cond_entry)); + score_str = gtk_entry_get_text(GTK_ENTRY(scoring.score_entry)); + if (*cond_str != '\0' && *score_str != '\0') { + score = atoi(score_str); + cond = matcher_parser_get_cond(cond_str); + + if (cond == NULL) { + prefs_common_save_config(); + prefs_scoring_set_list(); + prefs_matcher_write_config(); + if (cur_item != NULL) + prefs_folder_item_save_config(cur_item); + gtk_widget_hide(scoring.window); + inc_unlock(); + return; + } + prop = scoringprop_new(cond, score); + str = scoringprop_to_string(prop); + while (gtk_clist_get_text(GTK_CLIST(scoring.cond_clist), + row, 0, &scoring_str)) { + if (strcmp(scoring_str, str) == 0) break; + row++; + } + if (strcmp(scoring_str, str) != 0) { + val = alertpanel(_("Entry not registered"), + _("The entry was not registered\nAre you really finish?"), + _("Yes"), _("No"), NULL); + if (G_ALERTDEFAULT != val) { + g_free(str); + return; + } + } + g_free(str); + } prefs_common_save_config(); prefs_scoring_set_list(); prefs_matcher_write_config(); -- 2.25.1