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

📄 msearch.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 3 页
字号:
/* TradeClient <http://tradeclient.sourceforge.net> * $Id: msearch.c,v 1.39 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 "msearch.h"GList *found = NULL;int msearch_cancel_flag = 0;int searching = 0;GtkWidget *create_msearch_window (void){  GtkWidget *msearch_window;  GtkWidget *vbox1;  GtkWidget *progressbar;  GtkWidget *prog_frame;  GtkWidget *vbox2;  GtkWidget *hbox1;  GtkWidget *combo1;  GtkWidget *search_folder;	// entry for the folder we're going to search in  GtkWidget *child_button;	// toggle button to search subfolders or not  GtkWidget *case_button;  GtkWidget *any_all_frame;  GtkWidget *hbox2;  GSList *hbox2_group = NULL;  GtkWidget *any_button;	// match any of the criteria,  GtkWidget *all_button;	// or all of it  GtkWidget *vbox3;  GtkWidget *hbox5;  GtkWidget *option_frame;  GtkWidget *folder_frame;  GtkWidget *search_frame;  GtkWidget *search_frame2;  GtkWidget *search_tree;	// tree that contains all the search items  GtkWidget *scrolledwindow2;  GtkWidget *scrolledwindow3;  GtkWidget *viewport1;  GtkWidget *viewport2;  GtkWidget *search_english;	// textbox that shows the search criteria in  // english or something like that  GtkWidget *scrolledwindow1;  GtkWidget *message_clist;  GtkWidget *s_label;  GtkWidget *p_label;  GtkWidget *subject_label;  GtkWidget *sender_label;  GtkWidget *sent_label;  GtkWidget *received_label;  GtkWidget *hbuttonbox2;  GtkWidget *search_button;  GtkWidget *cancel_button;  GtkWidget *done_button;  char *all_folders = "* All Folders";  GList *folders = folder_create_glist ();  folders = g_list_prepend (folders, all_folders);  msearch_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);  gtk_widget_set_name (msearch_window, "msearch_window");  gtk_object_set_data (GTK_OBJECT (msearch_window), "msearch_window",		       msearch_window);  gtk_window_set_title (GTK_WINDOW (msearch_window), "Message Search");  gtk_widget_set_usize (GTK_WIDGET (msearch_window), 540, 400);  gtk_window_set_default_size (GTK_WINDOW (msearch_window),			       tm_globs->wsize.msearch_window.x,			       tm_globs->wsize.msearch_window.y);  vbox1 = gtk_vbox_new (FALSE, 0);  gtk_widget_set_name (vbox1, "vbox1");  gtk_widget_ref (vbox1);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "vbox1", vbox1,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (vbox1);  gtk_container_add (GTK_CONTAINER (msearch_window), vbox1);  vbox2 = gtk_vbox_new (FALSE, 0);  gtk_widget_set_name (vbox2, "vbox2");  gtk_widget_ref (vbox2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "vbox2", vbox2,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (vbox2);  gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);  hbox1 = gtk_hbox_new (FALSE, 0);  gtk_widget_set_name (hbox1, "hbox1");  gtk_widget_ref (hbox1);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "hbox1", hbox1,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (hbox1);  gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);  folder_frame = gtk_frame_new ("Look in");  gtk_widget_set_name (folder_frame, "folder_frame");  gtk_widget_ref (folder_frame);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "folder_frame",			    folder_frame,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (folder_frame);  gtk_box_pack_start (GTK_BOX (hbox1), folder_frame, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (folder_frame), 3);  combo1 = gtk_combo_new ();  gtk_widget_set_name (combo1, "combo1");  gtk_widget_ref (combo1);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "combo1", combo1,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (combo1);  gtk_container_add (GTK_CONTAINER (folder_frame), combo1);  gtk_container_set_border_width (GTK_CONTAINER (combo1), 3);  gtk_combo_set_popdown_strings (GTK_COMBO (combo1), folders);  search_folder = GTK_COMBO (combo1)->entry;  gtk_widget_set_name (search_folder, "search_folder");  gtk_widget_ref (search_folder);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_folder",			    search_folder,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_folder);  gtk_entry_set_editable (GTK_ENTRY (search_folder), FALSE);  option_frame = gtk_frame_new ("Options");  gtk_widget_set_name (option_frame, "option_frame");  gtk_widget_ref (option_frame);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "option_frame",			    option_frame,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (option_frame);  gtk_box_pack_start (GTK_BOX (hbox1), option_frame, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (option_frame), 3);  hbox5 = gtk_hbox_new (FALSE, 0);  gtk_widget_set_name (hbox5, "hbox5");  gtk_widget_ref (hbox5);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "hbox5", hbox5,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (hbox5);  gtk_container_add (GTK_CONTAINER (option_frame), hbox5);  child_button = gtk_check_button_new_with_label ("Include subfolders");  gtk_widget_set_name (child_button, "child_button");  gtk_widget_ref (child_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "child_button",			    child_button,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (child_button);  gtk_box_pack_start (GTK_BOX (hbox5), child_button, FALSE, FALSE, 0);  gtk_container_set_border_width (GTK_CONTAINER (child_button), 3);  case_button = gtk_check_button_new_with_label ("Ignore case");  gtk_widget_set_name (case_button, "case_button");  gtk_widget_ref (case_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "case_button",			    case_button, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (case_button);  gtk_box_pack_start (GTK_BOX (hbox5), case_button, FALSE, FALSE, 0);  gtk_container_set_border_width (GTK_CONTAINER (case_button), 3);  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (case_button), TRUE);  any_all_frame = gtk_frame_new ("Match");  gtk_widget_set_name (any_all_frame, "any_all_frame");  gtk_widget_ref (any_all_frame);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "any_all_frame",			    any_all_frame,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (any_all_frame);  gtk_box_pack_start (GTK_BOX (hbox1), any_all_frame, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (any_all_frame), 3);  hbox2 = gtk_hbox_new (TRUE, 0);  gtk_widget_set_name (hbox2, "hbox2");  gtk_widget_ref (hbox2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "hbox2", hbox2,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (hbox2);  gtk_container_add (GTK_CONTAINER (any_all_frame), hbox2);  gtk_container_set_border_width (GTK_CONTAINER (hbox2), 5);  any_button = gtk_radio_button_new_with_label (hbox2_group, "Any");  hbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (any_button));  gtk_widget_set_name (any_button, "any_button");  gtk_widget_ref (any_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "any_button",			    any_button, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (any_button);  gtk_box_pack_start (GTK_BOX (hbox2), any_button, FALSE, FALSE, 0);  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (any_button), TRUE);  all_button = gtk_radio_button_new_with_label (hbox2_group, "All");  hbox2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (all_button));  gtk_widget_set_name (all_button, "all_button");  gtk_widget_ref (all_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "all_button",			    all_button, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (all_button);  gtk_box_pack_start (GTK_BOX (hbox2), all_button, FALSE, FALSE, 0);  vbox3 = gtk_vbox_new (FALSE, 0);  gtk_widget_set_name (vbox3, "vbox3");  gtk_widget_ref (vbox3);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "vbox3", vbox3,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (vbox3);  gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, TRUE, 0);  scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_name (scrolledwindow3, "scrolledwindow3");  gtk_widget_ref (scrolledwindow3);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "scrolledwindow3",			    scrolledwindow3,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (scrolledwindow3);  gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow3, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow3), 2);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3),				  GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);  gtk_widget_set_usize (scrolledwindow3, -2, 125);  viewport2 = gtk_viewport_new (NULL, NULL);  gtk_widget_set_name (viewport2, "viewport2");  gtk_widget_ref (viewport2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "viewport2",			    viewport2, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (viewport2);  gtk_container_add (GTK_CONTAINER (scrolledwindow3), viewport2);  search_frame = gtk_frame_new (NULL);  gtk_widget_set_name (search_frame, "search_frame");  gtk_widget_ref (search_frame);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_frame",			    search_frame,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_frame);  gtk_container_add (GTK_CONTAINER (viewport2), search_frame);  gtk_container_set_border_width (GTK_CONTAINER (search_frame), 2);  search_tree = gtk_tree_new ();  gtk_widget_set_name (search_tree, "search_tree");  gtk_widget_ref (search_tree);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_tree",			    search_tree, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_tree);  gtk_container_add (GTK_CONTAINER (search_frame), search_tree);  on_add_button_clicked (NULL, GTK_TREE (search_tree));  gtk_signal_connect (GTK_OBJECT (search_tree), "select_child",		      GTK_SIGNAL_FUNC (search_tree_selected), NULL);  search_frame2 = gtk_frame_new (NULL);  gtk_widget_set_name (search_frame2, "search_frame2");  gtk_widget_ref (search_frame2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_frame2",			    search_frame2,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_frame2);  gtk_box_pack_start (GTK_BOX (vbox2), search_frame2, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (search_frame2), 2);  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_name (scrolledwindow2, "scrolledwindow2");  gtk_widget_ref (scrolledwindow2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "scrolledwindow2",			    scrolledwindow2,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (scrolledwindow2);  gtk_container_add (GTK_CONTAINER (search_frame2), scrolledwindow2);  gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow2), 2);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2),				  GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);  gtk_widget_set_usize (scrolledwindow2, -2, 70);  viewport1 = gtk_viewport_new (NULL, NULL);  gtk_widget_set_name (viewport1, "viewport1");  gtk_widget_ref (viewport1);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "viewport1",			    viewport1, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (viewport1);  gtk_container_add (GTK_CONTAINER (scrolledwindow2), viewport1);  search_english = gtk_text_new (NULL, NULL);  gtk_widget_set_name (search_english, "search_english");  gtk_widget_ref (search_english);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_english",			    search_english,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_english);  gtk_container_add (GTK_CONTAINER (viewport1), search_english);  prog_frame = gtk_frame_new (NULL);  gtk_widget_set_name (prog_frame, "prog_frame");  gtk_widget_ref (prog_frame);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "prog_frame",			    prog_frame, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (prog_frame);  gtk_box_pack_start (GTK_BOX (vbox1), prog_frame, FALSE, TRUE, 0);  gtk_container_set_border_width (GTK_CONTAINER (prog_frame), 2);  progressbar = gtk_progress_bar_new ();  gtk_widget_set_name (progressbar, "progressbar");  gtk_widget_ref (progressbar);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "progressbar",			    progressbar, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (progressbar);  gtk_container_add (GTK_CONTAINER (prog_frame), progressbar);  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);  gtk_widget_set_name (scrolledwindow1, "scrolledwindow1");  gtk_widget_ref (scrolledwindow1);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "scrolledwindow1",			    scrolledwindow1,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (scrolledwindow1);  gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  message_clist = gtk_clist_new (6);  gtk_widget_set_name (message_clist, "message_clist");  gtk_widget_ref (message_clist);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "message_clist",			    message_clist,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (message_clist);  gtk_container_add (GTK_CONTAINER (scrolledwindow1), message_clist);  gtk_container_set_border_width (GTK_CONTAINER (message_clist), 3);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 0,			      tm_globs->cpos.msw[0]);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 1,			      tm_globs->cpos.msw[1]);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 2,			      tm_globs->cpos.msw[2]);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 3,			      tm_globs->cpos.msw[3]);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 4,			      tm_globs->cpos.msw[4]);  gtk_clist_set_column_width (GTK_CLIST (message_clist), 5,			      tm_globs->cpos.msw[5]);  gtk_clist_column_titles_show (GTK_CLIST (message_clist));  s_label = gtk_label_new ("S");  gtk_widget_set_name (s_label, "s_label");  gtk_widget_ref (s_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "s_label",			    s_label, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (s_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 0, s_label);  p_label = gtk_label_new ("P");  gtk_widget_set_name (p_label, "p_label");  gtk_widget_ref (p_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "p_label",			    p_label, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (p_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 1, p_label);  subject_label = gtk_label_new ("Subject");  gtk_widget_set_name (subject_label, "subject_label");  gtk_widget_ref (subject_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "subject_label",			    subject_label,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (subject_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 2, subject_label);  sender_label = gtk_label_new ("Sender");  gtk_widget_set_name (sender_label, "sender_label");  gtk_widget_ref (sender_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "sender_label",			    sender_label,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (sender_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 3, sender_label);  sent_label = gtk_label_new ("Sent");  gtk_widget_set_name (sent_label, "sent_label");  gtk_widget_ref (sent_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "sent_label",			    sent_label, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (sent_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 4, sent_label);  received_label = gtk_label_new ("Received");  gtk_widget_set_name (received_label, "received_label");  gtk_widget_ref (received_label);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "received_label",			    received_label,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (received_label);  gtk_clist_set_column_widget (GTK_CLIST (message_clist), 5, received_label);  hbuttonbox2 = gtk_hbutton_box_new ();  gtk_widget_set_name (hbuttonbox2, "hbuttonbox2");  gtk_widget_ref (hbuttonbox2);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "hbuttonbox2",			    hbuttonbox2, (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (hbuttonbox2);  gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox2, FALSE, TRUE, 0);  search_button = gtk_button_new_with_label ("Search");  gtk_widget_set_name (search_button, "search_button");  gtk_widget_ref (search_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "search_button",			    search_button,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (search_button);  gtk_container_add (GTK_CONTAINER (hbuttonbox2), search_button);  GTK_WIDGET_SET_FLAGS (search_button, GTK_CAN_DEFAULT);  cancel_button = gtk_button_new_with_label ("Cancel");  gtk_widget_set_name (cancel_button, "cancel_button");  gtk_widget_ref (cancel_button);  gtk_object_set_data_full (GTK_OBJECT (msearch_window), "cancel_button",			    cancel_button,			    (GtkDestroyNotify) gtk_widget_unref);  gtk_widget_show (cancel_button);  gtk_container_add (GTK_CONTAINER (hbuttonbox2), cancel_button);  GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);  done_button = gtk_button_new_with_label ("Done");

⌨️ 快捷键说明

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