📄 msearch.c
字号:
/* 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 + -