errol wrote:
Your code samples are far too short given the questions you are asking.
You also seam to have little understanding of the C programming language.
I agree to both of your blame. I am both a c and gtk novice. I am completly depending on the huge tutorials availavle on net to develop the app.
So, I am pasting below the complete code that I have managed to write so far.
If someone help me with two problem, I ll be very happy.
1) How to open/save any file from filemenu option to the textview widget.
2) How I can extract the data entered in the entry widget to write those data in the textview?
Code:
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
static GtkWidget *window;
GtkWidget *vbox, *hbox, *combo;
GtkWidget *vbox1, *hbox1, *combo1;
GtkWidget *vbox2, *hbox2, *combo2;
GtkWidget *entry1;
GtkWidget *entryEditor;
GtkWidget *entryAuth, *entryEdition, *entryTitle, *entryPub, *entryVol, *entryIss, *entryPage;
GtkWidget *entryMon;
GtkWidget *entryNote, *entryKey, *entrySer, *entryYear;
GtkWidget *entryAdd;
GtkWidget *menubar, *filemenu, *filemenu_menu, *enew, *open, *save;
GtkWidget *separator_1;
GtkWidget *quit;
GtkWidget *editmenu, *editmenu_menu, *editcut, *editcopy, *editpaste;
GtkWidget *separator_2;
GtkWidget *editselectall, *editdeselect;
GtkWidget *helpmenu, *helpmenu_menu, *helphelp, *helpabout;
GtkWidget *toolbar1;
GtkToolItem *tooleditcut, *tooleditcopy, *tooleditpaste;
GtkToolItem *separator_3;
GtkToolItem *tooleditselectall;
GtkAccelGroup *menuGroup;
GtkTextBuffer *buffer;
GtkTextIter start, end, iter;
GtkWidget *view;
#include "menubar.c"
int main(int argc,
char *argv[]) {
GtkWidget *window, *button, *table, *frame, *notebook, *label, *checkbutton, *widget, *scrolledwindow, *textview;
GtkTextBuffer *textbuffer;
GtkWidget *menubar, *filemenu, *file, *new, *open, *quit;
GtkWidget *sep;
GtkAccelGroup *accel_group = NULL;
struct stat filestat;
char *buffer;
FILE *efile;
int i;
char bufferf[32];
char bufferl[32];
// char bibtype;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "BibMk");
gtk_container_set_border_width(GTK_CONTAINER(window), 20);
gtk_window_set_default_size(GTK_WINDOW(window), 600, 400);
g_signal_connect(window, "delete-event",
G_CALLBACK(gtk_main_quit), NULL);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(window), hbox);
gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
frame = gtk_frame_new("Properties");
menubar = gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 2);
/*
* FILE MENU
*/
menubar = gtk_menu_bar_new();
filemenu = gtk_menu_new();
accel_group = gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
file = gtk_menu_item_new_with_mnemonic("_File");
new = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, accel_group);
open = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, accel_group);
sep = gtk_separator_menu_item_new();
quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), new);
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), open);
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), sep);
gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);
g_signal_connect(G_OBJECT(new), "activate", G_CALLBACK(filenew_activated), (gpointer) window);
g_signal_connect(G_OBJECT(open), "activate", G_CALLBACK(fileopen_activated), (gpointer) window);
g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
/*
* HELP MENU
*/
/* helpmenu = gtk_menu_item_new_with_label("Help");
helpmenu_menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(helpmenu), helpmenu_menu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), helpmenu);
helphelp = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP, menuGroup);
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu_menu), helphelp);
*/
vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(vbox), hbox2);
combo = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Book");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Article");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Booklet");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Conference");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "inBook");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "inCollection");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "inProceedings");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Manual");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "MastersThesis");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Misc");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "PhdThesis");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Proceedings");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Techreport");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Unpublished");
gtk_box_pack_start(GTK_BOX(hbox2), combo, TRUE, TRUE, 0);
gtk_widget_show(combo);
entry1 = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entry1), "bibKey");
gtk_container_add(GTK_CONTAINER(hbox2), entry1);
gtk_widget_show(entry1);
scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_size_request(scrolledwindow, 400, 175);
gtk_widget_show(scrolledwindow);
gtk_container_add(GTK_CONTAINER(hbox), scrolledwindow);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
textview = gtk_text_view_new();
gtk_widget_show(textview);
gtk_container_add(GTK_CONTAINER(scrolledwindow), textview);
gtk_widget_set_size_request(textview, 600, -1);
textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
if ( argc > 1 && argv[1] != NULL ) {
stat(argv[1], &filestat);
buffer = (char *) malloc(filestat.st_size * sizeof (char));
efile = fopen(argv[1], "r");
fread(buffer, filestat.st_size, 1, efile);
gtk_text_buffer_set_text(textbuffer, buffer, filestat.st_size);
free(buffer);
}
/*
* CREATE THE NOTEBOOK PAN
*/
table = gtk_table_new(3, 6, FALSE);
/* Create a new notebook, place the position of the tabs */
notebook = gtk_notebook_new();
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
gtk_table_attach_defaults(GTK_TABLE(table), notebook, 0, 6, 0, 1);
gtk_widget_show(notebook);
/*
* CREATE BASIC NOTEBOOK
*/
frame = gtk_frame_new("Authors");
gtk_widget_set_size_request(frame, 400, 175);
vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(frame), vbox1);
/*
* Authors Tab
*/
entryAuth = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryAuth), "Author");
gtk_container_add(GTK_CONTAINER(vbox1), entryAuth);
gtk_widget_show(entryAuth);
entryEditor = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryEditor), "Editor");
gtk_container_add(GTK_CONTAINER(vbox1), entryEditor);
gtk_widget_show(entryEditor);
entryTitle = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryTitle), "Title");
gtk_container_add(GTK_CONTAINER(vbox1), entryTitle);
gtk_widget_show(entryTitle);
label = gtk_label_new("Authors/Title");
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);
/*
* Publishers Tab
*/
frame = gtk_frame_new("Publishers");
gtk_widget_set_size_request(frame, 400, 175);
vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(frame), vbox1);
entryPub = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryPub), "Publishor");
gtk_container_add(GTK_CONTAINER(vbox1), entryPub);
gtk_widget_show(entryPub);
entryVol = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryVol), "Volume");
gtk_container_add(GTK_CONTAINER(vbox1), entryVol);
gtk_widget_show(entryVol);
entryIss = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryIss), "Issue");
gtk_container_add(GTK_CONTAINER(vbox1), entryIss);
gtk_widget_show(entryIss);
entryPage = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryPage), "Page");
gtk_container_add(GTK_CONTAINER(vbox1), entryPage);
gtk_widget_show(entryPage);
entryYear = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryYear), "Year");
gtk_container_add(GTK_CONTAINER(vbox1), entryYear);
gtk_widget_show(entryYear);
label = gtk_label_new("Publishers");
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);
/*
* Other Tab
*/
frame = gtk_frame_new("Optional");
gtk_widget_set_size_request(frame, 400, 175);
vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(frame), vbox1);
entryMon = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryMon), "Month");
gtk_container_add(GTK_CONTAINER(vbox1), entryMon);
gtk_widget_show(entryMon);
entryNote = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryNote), "Note");
gtk_container_add(GTK_CONTAINER(vbox1), entryNote);
gtk_widget_show(entryNote);
entryKey = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryKey), "Key");
gtk_container_add(GTK_CONTAINER(vbox1), entryKey);
gtk_widget_show(entryKey);
entryAdd = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryAdd), "Address");
gtk_container_add(GTK_CONTAINER(vbox1), entryAdd);
gtk_widget_show(entryAdd);
entryEdition = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entryEdition), "Edition");
gtk_container_add(GTK_CONTAINER(vbox1), entryEdition);
gtk_widget_show(entryEdition);
label = gtk_label_new("Optional");
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);
button = gtk_button_new_with_label("CREATE");
gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(vbox), button);
gtk_widget_show(button);
gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);
gtk_widget_show(table);
gtk_widget_show_all(window);
gtk_main();
return 0;
}