⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter-callbacks.c

📁 一个功能全面的电子邮件客户端
💻 C
字号:
/* TradeClient <http://tradeclient.sourceforge.net> * $Id: filter-callbacks.c,v 1.7 2001/03/20 22:19:33 ttabner Exp $ * * Copyright (C) 1999-2000 Bynari Inc. * Copyright (C) 2001 Project TradeClient * * LGPL * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library * General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "puma.h"void rule_editor_search_target_changed (GtkEditable *entry, FilterRule *rule) {	char *search_target=gtk_entry_get_text (GTK_ENTRY (entry));	char *hr;	GtkText *text=GTK_TEXT (lw (GTK_WIDGET (entry), "human_readable"));	g_return_if_fail (rule != NULL);		if (strcmp (search_target, "Subject")==0)		rule->matchline=F_SUBJECT;	if (strcmp (search_target, "From")==0)		rule->matchline=F_FROM;	if (strcmp (search_target, "To")==0)		rule->matchline=F_TO;        if (strcmp (search_target, "Cc")==0)                rule->matchline=F_CC;        if (strcmp (search_target, "Reply-To")==0)                rule->matchline=F_REPLYTO;        if (strcmp (search_target, "Bcc")==0)                rule->matchline=F_BCC;	if (strcmp (search_target, "Message")==0)		rule->matchline=F_MSG;	if (strcmp (search_target, "Keywords")==0)		rule->matchline=F_KEY;		hr=filter_to_hr (rule);		gtk_text_set_point (text, 0);	gtk_text_forward_delete (text, gtk_text_get_length (text));	gtk_text_insert (text, NULL, NULL, NULL, hr, -1);	if (hr) free (hr);	}void rule_editor_search_type_changed (GtkEditable *entry, FilterRule *rule) {	char *search_type=gtk_entry_get_text (GTK_ENTRY (entry));	char *hr;	GtkText *text=GTK_TEXT (lw (GTK_WIDGET (entry), "human_readable"));	g_return_if_fail (rule != NULL);	if (strcmp (search_type, "Contains")==0)		rule->type=F_AND;	if (strcmp (search_type, "Does Not Contain")==0)		rule->type=F_NOT;	if (strcmp (search_type, "Matches Exactly")==0)		rule->type=F_EQUAL;	hr=filter_to_hr (rule);		gtk_text_set_point (text, 0);	gtk_text_forward_delete (text, gtk_text_get_length (text));	gtk_text_insert (text, NULL, NULL, NULL, hr, -1);	free (hr);	}void rule_editor_action_changed (GtkEditable *entry, FilterRule *rule) {	char *action=gtk_entry_get_text (GTK_ENTRY (entry));	char *hr;	GtkText *text=GTK_TEXT (lw (GTK_WIDGET (entry), "human_readable"));	g_return_if_fail (rule != NULL);	if (strcmp (action, "Move Message to Folder")==0) 		rule->action=F_ACTION_MOVE;	if (strcmp (action, "Delete Message")==0)		rule->action=F_ACTION_DELETE;	hr=filter_to_hr (rule);	gtk_text_set_point (text, 0);	gtk_text_forward_delete (text, gtk_text_get_length (text));	gtk_text_insert (text, NULL, NULL, NULL, hr, -1);	free (hr);	}void rule_editor_text_changed (GtkEditable *entry, FilterRule *rule) {	GtkText *text=GTK_TEXT (lw (GTK_WIDGET (entry), "human_readable"));	char *search=gtk_entry_get_text (GTK_ENTRY (entry));	char *hr;	g_return_if_fail (rule != NULL);	if (rule->text) free (rule->text);	rule->text=strdup (search);	hr=filter_to_hr (rule);	gtk_text_set_point (text, 0);	gtk_text_forward_delete (text, gtk_text_get_length (text));	gtk_text_insert (text, NULL, NULL, NULL, hr, -1);	free (hr);	}void rule_editor_folder_changed (GtkEditable *entry, FilterRule *rule) {	GtkText *text=GTK_TEXT (lw (GTK_WIDGET (entry), "human_readable"));	char *folder=gtk_entry_get_text (GTK_ENTRY (entry));	char *hr;	g_return_if_fail (rule != NULL);	if (rule->folder) free (rule->folder);	rule->folder=strdup (folder);	hr=filter_to_hr (rule);		gtk_text_set_point (text, 0);	gtk_text_forward_delete (text, gtk_text_get_length (text));	gtk_text_insert (text, NULL, NULL, NULL, hr, -1);	free (hr);	}void rule_editor_accept (GtkWidget *widget, FilterRule *rule) {	char *search_target=gtk_entry_get_text (GTK_ENTRY (lw (widget, "search_target")));	char *search_type=gtk_entry_get_text (GTK_ENTRY (lw (widget, "search_type")));	char *action=gtk_entry_get_text (GTK_ENTRY (lw (widget, "action")));	char *folder=gtk_entry_get_text (GTK_ENTRY (lw (widget, "folder")));	char *text=gtk_entry_get_text (GTK_ENTRY (lw (widget, "entry")));		g_return_if_fail (rule != NULL);	if (rule->text)		free (rule->text);	rule->text=strdup (text);	if (rule->folder)		free (rule->folder);	rule->folder=strdup (folder);			if (strcmp (search_target, "Subject")==0)		rule->matchline=F_SUBJECT;	if (strcmp (search_target, "From")==0)		rule->matchline=F_FROM;        if (strcmp (search_target, "Reply-To")==0)                rule->matchline=F_REPLYTO;	if (strcmp (search_target, "To")==0)		rule->matchline=F_TO;        if (strcmp (search_target, "Cc")==0)                rule->matchline=F_CC;        if (strcmp (search_target, "Bcc")==0)                rule->matchline=F_BCC;	if (strcmp (search_target, "Message")==0)		rule->matchline=F_MSG;	if (strcmp (search_target, "Keywords")==0)		rule->matchline=F_KEY;		if (strcmp (search_type, "Contains")==0)		rule->type=F_AND;	if (strcmp (search_type, "Does Not Contain")==0)		rule->type=F_NOT;	if (strcmp (search_type, "Matches Exactly")==0)		rule->type=F_EQUAL;	if (strcmp (action, "Move Message to Folder")==0) 		rule->action=F_ACTION_MOVE;	if (strcmp (action, "Delete Message")==0)		rule->action=F_ACTION_DELETE;	rule_rehash ();		gtk_widget_destroy (lw (widget, "rule_editor"));	}void rule_editor_cancel (GtkWidget *widget, FilterRule *rule) {	if (rule)		filter_delete_rule (rule);	gtk_widget_destroy (lw (widget, "rule_editor"));}gint rule_editor_destroy (GtkWidget *widget, GdkEvent *event, FilterRule *rule) {	if (rule)		filter_delete_rule (rule);	return TRUE;}void rule_display (FilterRule *rule) {	GtkCList *clist;	char *hr[1];	int row;	g_return_if_fail (prefs_get_widget () != NULL);	clist=GTK_CLIST (lw (prefs_get_widget (), "rule_clist"));	hr[0]=filter_to_hr (rule);	row=gtk_clist_append (clist, hr);	gtk_clist_set_row_data (clist, row, (gpointer)rule);	if (hr) free (hr[0]);}void rule_rehash () {	GList *seek;	GtkCList *clist=GTK_CLIST (lw (prefs_get_widget (), "rule_clist"));	gtk_clist_freeze (clist);	gtk_clist_clear  (clist);	for (seek=filter_first ();seek;seek=seek->next) {			rule_display (seek->data);	}	gtk_clist_thaw (clist);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -