From 89f0dd1c94c08e6f6d972c23dff1a5e40ba5d0e5 Mon Sep 17 00:00:00 2001 From: b0ric Date: Mon, 3 Aug 2009 15:59:50 +0300 Subject: WordExtract GUI prototype --- interface.c | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 interface.c (limited to 'interface.c') diff --git a/interface.c b/interface.c new file mode 100644 index 0000000..d494a1c --- /dev/null +++ b/interface.c @@ -0,0 +1,182 @@ +/* This file is a part of WordExtract project + * + * Copyright (C) 2009 Borisov Alexandr + * + * 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, see . + */ + +#include +#include "interface.h" +#include "callbacks.h" + +static GtkWidget *gtk_button_new_with_label_and_image(gchar *img_file, gchar *label); + +GtkWidget *create_main_window() +{ + GtkWidget *main_window; + GtkWidget *vbox; + GtkWidget *tool_hbox; + GtkWidget *open_btn; + GtkWidget *save_btn; + GtkWidget *preferences_btn; + GtkWidget *dict_btn; + GtkWidget *about_btn; + GtkWidget *quit_btn; + GtkWidget *hpaned; + GtkWidget *word_sc_win; + GtkWidget *word_list; + GtkWidget *sentences_sc_win; + GtkWidget *sentences_text; + GtkWidget *statusbar; + + main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_set_size_request(main_window, 640, 480); + gtk_container_set_border_width(GTK_CONTAINER(main_window), 2); + gtk_window_set_title(GTK_WINDOW(main_window), "WordExtract"); + gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER); + g_signal_connect(G_OBJECT(main_window), "delete_event", G_CALLBACK(main_window_close), NULL); + g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(main_window_destroy), NULL); + + vbox = gtk_vbox_new(FALSE, 0); + gtk_widget_show(vbox); + gtk_container_add(GTK_CONTAINER(main_window), vbox); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 2); + + tool_hbox = gtk_hbox_new(FALSE, 0); + gtk_widget_show(tool_hbox); + gtk_box_pack_start(GTK_BOX(vbox), tool_hbox, FALSE, FALSE, 0); + + open_btn = gtk_button_new_with_label_and_image("gtk-open", "Open"); + gtk_widget_show(open_btn); + gtk_box_pack_start(GTK_BOX(tool_hbox), open_btn, FALSE, FALSE, 0); + + save_btn = gtk_button_new_with_label_and_image("gtk-save-as", "Save"); + gtk_widget_show(save_btn); + gtk_box_pack_start(GTK_BOX(tool_hbox), save_btn, FALSE, FALSE, 0); + + preferences_btn = gtk_button_new_with_label_and_image("gtk-preferences", "Preferences"); + gtk_widget_show (preferences_btn); + gtk_box_pack_start (GTK_BOX (tool_hbox), preferences_btn, FALSE, FALSE, 0); + + dict_btn = gtk_button_new_with_label_and_image("gtk-edit", "Dictionary"); + gtk_widget_show(dict_btn); + gtk_box_pack_start(GTK_BOX(tool_hbox), dict_btn, FALSE, FALSE, 0); + + quit_btn = gtk_button_new_with_label_and_image("gtk-quit", "Quit"); + gtk_widget_show (quit_btn); + gtk_box_pack_end(GTK_BOX(tool_hbox), quit_btn, FALSE, FALSE, 0); + + about_btn = gtk_button_new_with_label_and_image("gtk-about", "About"); + gtk_widget_show(about_btn); + gtk_box_pack_end(GTK_BOX(tool_hbox), about_btn, FALSE, FALSE, 0); + + hpaned = gtk_hpaned_new(); + gtk_widget_show(hpaned); + gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); + gtk_paned_set_position(GTK_PANED(hpaned), 200); + + word_sc_win = gtk_scrolled_window_new(NULL, NULL); + gtk_widget_show(word_sc_win); + gtk_paned_add1(GTK_PANED(hpaned), word_sc_win); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(word_sc_win), GTK_SHADOW_IN); + + word_list = gtk_tree_view_new(); + gtk_widget_show(word_list); + gtk_container_add(GTK_CONTAINER(word_sc_win), word_list); + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(word_list), FALSE); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(word_list), TRUE); + + sentences_sc_win = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (sentences_sc_win); + gtk_paned_add2(GTK_PANED(hpaned), sentences_sc_win); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sentences_sc_win), GTK_SHADOW_IN); + + sentences_text = gtk_text_view_new(); + gtk_widget_show(sentences_text); + gtk_container_add(GTK_CONTAINER(sentences_sc_win), sentences_text); + gtk_text_view_set_editable(GTK_TEXT_VIEW(sentences_text), FALSE); + + statusbar = gtk_statusbar_new(); + gtk_widget_show(statusbar); + gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, FALSE, 0); + + return main_window; +} + +/*GtkWidget *create_popup_menu(void) +{ + GtkWidget *popup_menu; + GtkWidget *show_sent_item; + GtkWidget *find_image; + GtkWidget *add_to_dict_item; + GtkWidget *add_image; + GtkTooltips *tooltips; + + tooltips = gtk_tooltips_new (); + + popup_menu = gtk_menu_new (); + + show_sent_item = gtk_image_menu_item_new_with_mnemonic (_("Show Sentence")); + gtk_widget_show (show_sent_item); + gtk_container_add (GTK_CONTAINER (popup_menu), show_sent_item); + gtk_tooltips_set_tip (tooltips, show_sent_item, _("Show sentenses word appears in"), NULL); + + find_image = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU); + gtk_widget_show (find_image); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (show_sent_item), find_image); + + add_to_dict_item = gtk_image_menu_item_new_with_mnemonic (_("Add To Dictionary")); + gtk_widget_show (add_to_dict_item); + gtk_container_add (GTK_CONTAINER (popup_menu), add_to_dict_item); + gtk_tooltips_set_tip (tooltips, add_to_dict_item, _("Add word to my dictionary"), NULL); + + add_image = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (add_image); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_to_dict_item), add_image); + + g_signal_connect ((gpointer) show_sent_item, "activate", + G_CALLBACK (on_show_sent_item_activate), + NULL); + g_signal_connect ((gpointer) add_to_dict_item, "activate", + G_CALLBACK (on_add_to_dict_item_activate), + NULL); + + return popup_menu; +}*/ + +static GtkWidget *gtk_button_new_with_label_and_image(gchar *img_name, gchar *label_text) +{ + GtkWidget *button; + GtkWidget *box; + GtkWidget *label; + GtkWidget *image; + + button = gtk_button_new(); + + box = gtk_hbox_new(FALSE, 2); + gtk_container_add(GTK_CONTAINER(button), box); + + image = gtk_image_new_from_stock(img_name, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); + + label = gtk_label_new_with_mnemonic(label_text); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); + + gtk_widget_show(image); + gtk_widget_show(label); + gtk_widget_show(box); + + return button; +} + -- cgit v1.2.3