is this correct way to open file in buffer?
- From: Rudra Banerjee <rudra banerjee aol co uk>
- To: gtk-app-devel-list gnome org
- Subject: is this correct way to open file in buffer?
- Date: Tue, 29 Jan 2013 23:39:52 +0000
Dear friends,
I am trying hard to get rid of file reading and editing (as evident from
my previous post)
Here is a small code where I tried to open my file in a buffer and scan.
Its small, 50 line code.
I will be grateful if anybody kindly have a look and tell if this is
really opening the file from buffer or still using the file. Please
help.
void open_file(GtkWidget *widget, gpointer data){
GScanner *scanner;
GHashTable *table;
char* fd;
gsize length;
GError* error=NULL;
GtkWidget *dialog; //, *entry;
GtkFileFilter *filter;
dialog = gtk_file_chooser_dialog_new("Open File", NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, "All files (*.*)");
gtk_file_filter_add_pattern(filter, "*");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
filter = gtk_file_filter_new();
gtk_file_filter_set_name(filter, "Bibtex file (*.bib)");
gtk_file_filter_add_pattern(filter, "*.bib");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
gtk_list_store_clear (store);
g_file_get_contents(filename, &fd, &length , &error);
g_assert(!error);
scanner = g_scanner_new (NULL);
g_scanner_input_text (scanner, fd, CHAR_BUFF);
table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
g_free);
do
{
g_hash_table_remove_all (table);
parse_entry (scanner, table);
output_entry (table);
g_scanner_peek_next_token (scanner);
}
while (scanner->next_token != G_TOKEN_EOF &&
scanner->next_token != G_TOKEN_ERROR);
/* finsish parsing */
g_scanner_destroy (scanner);
g_hash_table_destroy (table);
gtk_label_set_text(GTK_LABEL(flabel), filename);
gtk_widget_destroy(dialog);
}
else
gtk_widget_destroy(dialog);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]