* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
#include "defs.h"
#include <glib.h>
static void summary_toggle_view (SummaryView *summaryview);
static void summary_set_row_marks (SummaryView *summaryview,
GtkCTreeNode *row);
+static void summaryview_subject_filter_init (PrefsFolderItem *prefs);
/* message handling */
static void summary_mark_row (SummaryView *summaryview,
mlist = not_killed;
}
- if (item->prefs->enable_simplify_subject
- && item->prefs->simplify_subject_regexp != NULL
- && strlen(item->prefs->simplify_subject_regexp) != 0) {
- summary_simplify_subject(summaryview,
- item->prefs->simplify_subject_regexp,
- mlist);
- }
-
STATUSBAR_POP(summaryview->mainwin);
/* set ctree and hash table from the msginfo list
summaryview->important_score =
summaryview->folder_item->prefs->important_score;
}
+
+ summaryview_subject_filter_init(summaryview->folder_item->prefs);
if (summaryview->folder_item->threaded) {
GNode *root, *gnode;
static gchar *from_name = NULL;
static gchar col_number[11];
static gchar col_score[11];
+ static gchar buf[BUFFSIZE];
+ PrefsFolderItem *prefs = summaryview->folder_item->prefs;
gint *col_pos = summaryview->col_pos;
text[col_pos[S_COL_MARK]] = NULL;
}
}
- text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? msginfo->subject :
- _("(No Subject)");
+ if (prefs->enable_simplify_subject
+ && prefs->simplify_subject_preg != NULL )
+ text[col_pos[S_COL_SUBJECT]] = msginfo->subject ?
+ string_remove_match(buf, BUFFSIZE, msginfo->subject,
+ prefs->simplify_subject_preg) :
+
+ _("(No Subject)");
+ else
+ text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? msginfo->subject :
+ _("(No Subject)");
}
#define CHANGE_FLAGS(msginfo) \
}
}
-void summary_simplify_subject(SummaryView *summaryview, gchar * rexp,
- GSList * mlist)
-{
- GSList * cur;
- for(cur = mlist ; cur != NULL ; cur = cur->next) {
- MsgInfo * msginfo = (MsgInfo *) cur->data;
- string_remove_all_matches(msginfo->subject, rexp,
- REG_EXTENDED, 0);
- }
-}
-
void summary_processing(SummaryView *summaryview, GSList * mlist)
{
GSList * processing_list;
g_hash_table_destroy(summaryview->folder_table);
summaryview->folder_table = NULL;
-
- summary_show(summaryview, summaryview->folder_item, FALSE);
}
debug_print(_("done.\n"));
main_window_cursor_normal(summaryview->mainwin);
summary_unlock(summaryview);
+
+ /* CLAWS: summary_show() only valid after having a lock. ideally
+ * we want the lock to be context aware... */
+ if (global_processing)
+ summary_show(summaryview, summaryview->folder_item, FALSE);
}
static void summary_filter_func(GtkCTree *ctree, GtkCTreeNode *node,
summaryview->folder_item != dest)
summary_move_row_to(summaryview, node, dest);
}
- else
+ else
filter_msginfo_move_or_delete(global_processing, msginfo,
summaryview->folder_table);
}
GtkWidget *widget;
widget = gtk_item_factory_get_item(gtk_item_factory_from_widget(summaryview->mainwin->menubar),
- "/Summary/Hide read messages");
+ "/View/Hide read messages");
gtk_object_set_data(GTK_OBJECT(widget), "dont_toggle",
GINT_TO_POINTER(1));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(widget), action);
gtk_object_set_data(GTK_OBJECT(widget), "dont_toggle",
GINT_TO_POINTER(0));
}
+static void summaryview_subject_filter_init(PrefsFolderItem *prefs)
+{
+ int err;
+ gchar buf[BUFFSIZE];
+ if (prefs->enable_simplify_subject) {
+ if (prefs->simplify_subject_regexp &&
+ *prefs->simplify_subject_regexp != 0x00) {
+
+ if (!prefs->simplify_subject_preg)
+ prefs->simplify_subject_preg = g_new(regex_t, 1);
+ else
+ regfree(prefs->simplify_subject_preg);
+
+ err = string_match_precompile(prefs->simplify_subject_regexp,
+ prefs->simplify_subject_preg, REG_EXTENDED);
+ if (err) {
+ regerror(err, prefs->simplify_subject_preg, buf, BUFFSIZE);
+ alertpanel_error(_("Regular expression (regexp) error:\n%s"), buf);
+ g_free(prefs->simplify_subject_preg);
+ prefs->simplify_subject_preg = NULL;
+ }
+ } else {
+ if (prefs->simplify_subject_preg) {
+ regfree(prefs->simplify_subject_preg);
+ g_free(prefs->simplify_subject_preg);
+ prefs->simplify_subject_preg = NULL;
+ }
+ }
+ }
+}
+
+
/*
* End of Source.
*/