/* Copyright (C) 2001-2002 Kenichi Suto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU 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 "defs.h" #include "global.h" #include "dictgroup.h" #include "weblist.h" #include "mainmenu.h" #include "shortcut.h" #include "multi.h" GtkWidget *display_menubar; GtkWidget *display_statusbar; GtkWidget *display_dictbar; GtkWidget *display_treetab; extern GtkWidget *note_tree; static GtkWidget *menubar=NULL; static gint menuitem_handler (gchar *string) { if(strcmp(string, "file.exit") == 0){ exit_program(NULL, NULL); return(0); } if(strcmp(string, "search.all") == 0){ select_any_search(); return(0); } if(strcmp(string, "search.exact") == 0){ select_exactword_search(); return(0); } if(strcmp(string, "search.word") == 0){ select_word_search(); return(0); } if(strcmp(string, "search.endword") == 0){ select_endword_search(); return(0); } if(strcmp(string, "search.keyword") == 0){ select_keyword_search(); return(0); } if(strcmp(string, "search.multi") == 0){ select_multi_search(); show_multi(); return(0); } if(strcmp(string, "search.fulltext") == 0){ select_fulltext_search(); return(0); } if(strcmp(string, "search.internet") == 0){ select_internet_search(); return(0); } if(strcmp(string, "search.menu") == 0){ show_menu(); return(0); } if(strcmp(string, "search.copyright") == 0){ show_copyright(); return(0); } if(strcmp(string, "view.menubar") == 0){ if(GTK_CHECK_MENU_ITEM(display_menubar)->active) { show_menu_bar(); } else { hide_menu_bar(); } return(0); } if(strcmp(string, "view.statusbar") == 0){ if(GTK_CHECK_MENU_ITEM(display_statusbar)->active) { show_status_bar(); } else { hide_status_bar(); } return(0); } if(strcmp(string, "view.dictbar") == 0){ if(GTK_CHECK_MENU_ITEM(display_dictbar)->active) { show_dict_bar(); } else { hide_dict_bar(); } return(0); } if(strcmp(string, "view.treetab") == 0){ if(GTK_CHECK_MENU_ITEM(display_treetab)->active) { show_tree_tab(); } else { hide_tree_tab(); } return(0); } if(strcmp(string, "pref.dict") == 0){ // preference_dict(); preference_dictgroup(); return(0); } if(strcmp(string, "pref.ending") == 0){ preference_ending(); return(0); } if(strcmp(string, "pref.shortcut") == 0){ preference_shortcut(); return(0); } if(strcmp(string, "pref.web") == 0){ preference_weblist(); return(0); } if(strcmp(string, "pref.external") == 0){ preference_external(); return(0); } if(strcmp(string, "pref.font") == 0){ preference_font(); return(0); } if(strcmp(string, "pref.misc") == 0){ misc_preference(); return(0); } if(strcmp(string, "dump.item") == 0){ dump_hex(); return(0); } if(strcmp(string, "dump.text") == 0){ dump_text(); return(0); } if(strcmp(string, "help.usage") == 0){ show_usage(); return(0); } if(strcmp(string, "help.home") == 0){ show_home(); return(0); } if(strcmp(string, "help.about") == 0){ show_about(); return(0); } fprintf(stderr, "Unknown menu : %s\n", string); return(0); } GtkWidget *create_main_menu() { GtkWidget *menu; GtkWidget *item; GtkWidget *hseparator; gint i; gchar buff[512]; if(menubar) gtk_widget_destroy(menubar); menubar = gtk_menu_bar_new(); // Program menu menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Exit")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"file.exit"); item = gtk_menu_item_new_with_label(_("File")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); // Display menu menu = gtk_menu_new(); item = gtk_menu_item_new(); gtk_menu_append(GTK_MENU(menu), item); hseparator = gtk_hseparator_new(); gtk_container_add(GTK_CONTAINER (item), hseparator); display_menubar = gtk_check_menu_item_new_with_label(_("Menu Bar")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_menubar), bshow_menu_bar); gtk_menu_append(GTK_MENU(menu), display_menubar); gtk_signal_connect_object(GTK_OBJECT(display_menubar), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"view.menubar"); display_dictbar = gtk_check_menu_item_new_with_label(_("Dictionary Selection Bar")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_dictbar), bshow_dict_bar); gtk_menu_append(GTK_MENU(menu), display_dictbar); gtk_signal_connect_object(GTK_OBJECT(display_dictbar), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"view.dictbar"); display_statusbar = gtk_check_menu_item_new_with_label(_("Status Bar")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_statusbar), bshow_status_bar); gtk_menu_append(GTK_MENU(menu), display_statusbar); gtk_signal_connect_object(GTK_OBJECT(display_statusbar), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"view.statusbar"); display_treetab = gtk_check_menu_item_new_with_label(_("Tree Frame Tab")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_treetab), bshow_tree_tab); gtk_menu_append(GTK_MENU(menu), display_treetab); gtk_signal_connect_object(GTK_OBJECT(display_treetab), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"view.treetab"); item = gtk_menu_item_new_with_label(_("View")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); // Search method menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Automatic Search")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.all"); if(menu_exactword_search == TRUE) { item = gtk_menu_item_new_with_label(_("Exactword Search")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.exact"); } if(menu_word_search == TRUE) { item = gtk_menu_item_new_with_label(_("Forward Search")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.word"); } if(menu_endword_search == TRUE) { item = gtk_menu_item_new_with_label(_("Backward Search")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.endword"); } if(menu_keyword_search == TRUE) { item = gtk_menu_item_new_with_label(_("Keyword Search")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.keyword"); } if(menu_multi_search == TRUE){ item = gtk_menu_item_new_with_label(_("Multiword Search"));; gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.multi"); } if(menu_multi_search == TRUE){ item = gtk_menu_item_new_with_label(_("Fulltext Search"));; gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.fulltext"); } item = gtk_menu_item_new(); gtk_menu_append(GTK_MENU(menu), item); hseparator = gtk_hseparator_new(); gtk_container_add(GTK_CONTAINER (item), hseparator); item = gtk_menu_item_new_with_label(_("Menu")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.menu"); item = gtk_menu_item_new_with_label(_("Copyright")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.copyright"); item = gtk_menu_item_new(); gtk_menu_append(GTK_MENU(menu), item); hseparator = gtk_hseparator_new(); gtk_container_add(GTK_CONTAINER (item), hseparator); item = gtk_menu_item_new_with_label(_("Internet Search"));; gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"search.internet"); item = gtk_menu_item_new_with_label(_("Search")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); // Preference menu menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Add/Remove Dictionary")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.dict"); item = gtk_menu_item_new_with_label(_("Stemming")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.ending"); item = gtk_menu_item_new_with_label(_("Shortcut")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.shortcut"); #ifdef ENABLE_WEBSEARCH item = gtk_menu_item_new_with_label(_("Search Engines")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.web"); #endif item = gtk_menu_item_new_with_label(_("External Program")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.external"); item = gtk_menu_item_new_with_label(_("Font")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.font"); item = gtk_menu_item_new_with_label(_("Misc")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"pref.misc"); item = gtk_menu_item_new_with_label(_("Settings")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); // Debug menu menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Hex Dump")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"dump.item"); item = gtk_menu_item_new_with_label(_("Text Dump")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"dump.text"); item = gtk_menu_item_new_with_label(_("Debug")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); // Help menu menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Usage")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"help.usage"); item = gtk_menu_item_new_with_label(_("Show EBView Home")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"help.home"); item = gtk_menu_item_new_with_label(_("About")); gtk_menu_append(GTK_MENU(menu), item); gtk_signal_connect_object(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(menuitem_handler), (gpointer)"help.about"); item = gtk_menu_item_new_with_label(_("Help")); gtk_menu_item_right_justify(GTK_MENU_ITEM(item)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_menu_bar_append (GTK_MENU_BAR (menubar), item); /* item = gtk_menu_item_new(); gtk_menu_item_right_justify(GTK_MENU_ITEM(item)); pixmap_book = gtk_pixmap_new (book1_pixmap, book1_mask); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); gtk_widget_set_sensitive(pixmap_book, FALSE); gtk_container_add (GTK_CONTAINER (item), pixmap_book); gtk_menu_bar_append(GTK_MENU_BAR(menubar), item); */ gtk_widget_show_all(menubar); return(menubar); } void toggle_menu_bar() { if(bshow_menu_bar == 1){ hide_menu_bar(); } else { show_menu_bar(); } } void show_menu_bar() { gtk_widget_show(menubar); bshow_menu_bar = 1; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_menubar), bshow_menu_bar); } void hide_menu_bar() { gtk_widget_hide(menubar); bshow_menu_bar = 0; gtk_widget_queue_draw(window); gtk_widget_queue_resize(window); gtk_container_check_resize(GTK_CONTAINER(window)); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_menubar), bshow_menu_bar); } void show_tree_tab(){ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(note_tree), TRUE); bshow_tree_tab = 1; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_treetab), bshow_tree_tab); } void hide_tree_tab(){ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(note_tree), FALSE); bshow_tree_tab = 0; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(display_treetab), bshow_tree_tab); } void toggle_tree_tab(){ if(bshow_tree_tab == 1){ hide_tree_tab(); } else { show_tree_tab(); } }