/* Copyright (C) 2012 Rudra Banerjee*/
/*
This file is part of mkbib.
mkbib 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 3 of the License, or
(at your option) any later version.
mkbib 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 mkbib. If not, see .
*/
#include
#include
#include
#include
#include "main.h"
GtkWidget *window,
*flabel,
*tree,
*bibcombo;
char *filename,*key, *val;
GtkTreeIter siter;
#define slen 1064
void activate_func(GtkWidget *widget, gpointer data);
char output_entry () {
extern FILE* yyin;
extern int yyparse (void);
yyin=fmemopen(buffer,strlen(buffer),"r");
return yyparse();
}
GtkWidget *create_view_and_model(void) {
GtkCellRenderer *cell;
void
cell_edited(GtkCellRendererText *renderer,
gchar *path,
gchar *new_text,
GtkTreeView *treeview);
GtkTreeViewColumn *col_key,*col_year,*col_type,*col_auth,*col_title,*col_journal;
store = gtk_list_store_new (NUM_COLS,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
g_object_unref(G_OBJECT(store));
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE);
/* #1: KEY COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set (cell, "editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_KEY));
col_key=gtk_tree_view_column_new_with_attributes (
"Key", cell,
"text", COL_BIB_KEY,
NULL);
gtk_tree_view_column_set_sort_column_id( col_key, ID_KEY);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_key);
gtk_tree_view_column_set_max_width (col_key,100);
/* #2: TYPE COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set(G_OBJECT(cell), "wrap-mode", PANGO_WRAP_WORD,
"wrap-width",100,"editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_TYPE));
col_type=gtk_tree_view_column_new_with_attributes (
"Type", cell,
"text", COL_BIB_TYPE,
NULL);
gtk_tree_view_column_set_sort_column_id( col_type, ID_TYPE);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_type);
/* #3: AUTHOR COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set(G_OBJECT(cell), "wrap-mode", PANGO_WRAP_WORD,
"wrap-width",300,"editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_AUTHOR));
col_auth=gtk_tree_view_column_new_with_attributes (
"Author", cell,
"text", COL_BIB_AUTHOR,
NULL);
gtk_tree_view_column_set_sort_column_id( col_auth, ID_AUTHOR);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_auth);
// gtk_tree_view_column_set_max_width (col_auth,350);
/* #4: YEAR COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set (cell, "editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_YEAR));
col_year=gtk_tree_view_column_new_with_attributes (
"Year", cell,
"text", COL_BIB_YEAR,
NULL);
gtk_tree_view_column_set_sort_column_id( col_year, ID_YEAR);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_year);
gtk_tree_view_column_set_max_width (col_year,65);
/* #5: TITLE COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set(G_OBJECT(cell), "wrap-mode", PANGO_WRAP_WORD,
"wrap-width",300,"editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_TITLE));
col_title=gtk_tree_view_column_new_with_attributes (
"Title", cell,
"text", COL_BIB_TITLE,
NULL);
gtk_tree_view_column_set_sort_column_id( col_title, ID_TITLE);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_title);
// gtk_tree_view_column_set_max_width (col_pub,350);
/* #6: Journal COLUMN */
cell = gtk_cell_renderer_text_new ();
g_object_set(G_OBJECT(cell), "wrap-mode", PANGO_WRAP_WORD,
"wrap-width",100,"editable", TRUE, NULL);
g_signal_connect (cell, "edited",G_CALLBACK(cell_edited), tree);
g_object_set_data (G_OBJECT (cell),
"column", GINT_TO_POINTER (COL_BIB_JOURNAL));
col_journal=gtk_tree_view_column_new_with_attributes (
"Journal", cell,
"text", COL_BIB_JOURNAL,
NULL);
gtk_tree_view_column_set_sort_column_id(col_journal, ID_JOURNAL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_journal);
return tree;
}
/* Apply the changed text to the cell if it is not an empty string. */
void cell_edited(GtkCellRendererText *renderer,
gchar *path,
gchar *new_text,
GtkTreeView *treeview)
{
guint column;
GtkTreeIter iter;
gboolean valid;
GtkTreeModel *model;
GString *ustring = g_string_new ("");
GString *str=g_string_new(NULL);
// g_free(buffer);
gpointer columnptr = g_object_get_data(G_OBJECT(renderer), "column");
column = GPOINTER_TO_UINT(columnptr);
if (g_ascii_strcasecmp (new_text, "") != 0)
{
model = gtk_tree_view_get_model (treeview);
if (gtk_tree_model_get_iter_from_string (model, &iter, path))
gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, new_text, -1);
}
for (valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);
valid;
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)) {
char *string0, *string1, *string2, *string3, *string4,*string5, *string6,
*string7, *string8, *string9,*string10, *string11, *string12, *string13,
*string14,*string15, *string16, *string17, *string18, *string19;
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
0, &string0, 1, &string1, 2, &string2, 3, &string3,
4, &string4, 5, &string5, 6, &string6, 7, &string7,
8, &string8, 9, &string9, 10, &string10, 11, &string11,
12, &string12, 13, &string13, 14, &string14, 15, &string15,
16, &string16, 17, &string17, 18, &string18, 19, &string19,
-1);//
/* g_print("0:%s\n1:%s\n2:%s\n3:%s\n4:%s\n5:%s\n6:%s\n7:%s\n8:%s\n9:%s\n10:%s\n11:%s\n12:%s\n13:%s\n14:%s\n15:%s\n16:%s\n17:%s\n18:%s\n19:%s",
string0, string1, string2, string3, string4, string5, string6,
string7, string8, string9,string10, string11, string12, string13,
string14,string15, string16, string17, string18, string19);
*/
g_string_append_printf (ustring, "@%s{%s,\n",string1, string0);
if( strlen(string2)!=0 ||string2!=NULL)
g_string_append_printf (ustring,"\tAuthor=\"%s\",\n", string2);
if( strlen(string3)!=0 ||string3!=NULL)
g_string_append_printf (ustring,"\tYear=\"%s\",\n", string3);
if( strlen(string4)!=0 ||string4!=NULL)
g_string_append_printf (ustring, "\tTitle=\"%s\",\n", string4);
if( (string5)!=0 || string5 !=NULL)
g_string_append_printf (ustring, "\tPublisher=\"%s\",\n", string5);
if( (string6)!=0 || string6 !=NULL)
g_string_append_printf (ustring, "\tEditor=\"%s\",\n", string6);
if( (string7)!=0 && string7 !=NULL)
g_string_append_printf (ustring, "\tVolume=\"%s\",\n", string7);
if( (string8)!=0 && string8 !=NULL)
g_string_append_printf (ustring, "\tNumber=\"%s\",\n", string8);
if( (string9)!=0 && string9 !=NULL)
g_string_append_printf (ustring, "\tPages=\"%s\",\n", string9);
if( (string10)!=0 && string10 !=NULL)
g_string_append_printf (ustring, "\tMonth=\"%s\",\n", string10);
if( (string11)!=0 && string11 !=NULL)
g_string_append_printf (ustring, "\tNote=\"%s\",\n", string11);
if( (string12)!=0 && string12 !=NULL)
g_string_append_printf (ustring, "\tKey=\"%s\",\n", string12);
if( (string13)!=0 && string13 !=NULL)
g_string_append_printf (ustring, "\tAddress=\"%s\",\n", string13);
if( (string14)!=0 && string14 !=NULL)
g_string_append_printf (ustring, "\tJournal=\"%s\",\n", string14);
if( (string15)!=0 && string15 !=NULL)
g_string_append_printf (ustring, "\tEdition=\"%s\",\n", string15);
if( (string16)!=0 && string16 !=NULL)
g_string_append_printf (ustring, "\tSeries=\"%s\",\n", string16);
if( (string17)!=0 && string17 !=NULL)
g_string_append_printf (ustring, "\tBooktitle=\"%s\",\n", string17);
if( (string18)!=0 && string18 !=NULL)
g_string_append_printf (ustring, "\tOrganization=\"%s\",\n", string18);
if( (string19)!=0 && string19 !=NULL)
g_string_append_printf (ustring, "\tChapter=\"%s\",\n", string19);
g_string_append_printf(ustring, "%s\n","}");
g_free (string0); g_free (string1);
g_free (string2); g_free (string3);
g_free (string4); g_free (string5);
g_free (string6); g_free (string7);
g_free (string8); g_free (string9);
g_free (string10); g_free (string11);
g_free (string12); g_free (string13);
g_free (string14); g_free (string15);
g_free (string16); g_free (string17);
g_free (string18); g_free (string19);
}
g_string_append(str,ustring->str);
buffer=str->str;
buf_mod=TRUE;
}