/* 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();
}
}
syntax highlighted by Code2HTML, v. 0.9.1