SF.net SVN: geany-plugins:[806] trunk/geanylatex
frlan at users.sourceforge.net
frlan at xxxxx
Thu Jul 9 21:38:36 UTC 2009
Revision: 806
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=806&view=rev
Author: frlan
Date: 2009-07-09 21:38:35 +0000 (Thu, 09 Jul 2009)
Log Message:
-----------
GeanyLaTeX: Migrated bibTeX inserting entry framework to make usage of a GPtrArray.
Modified Paths:
--------------
trunk/geanylatex/ChangeLog
trunk/geanylatex/src/bibtex.c
trunk/geanylatex/src/bibtex.h
trunk/geanylatex/src/bibtexlabels.c
Modified: trunk/geanylatex/ChangeLog
===================================================================
--- trunk/geanylatex/ChangeLog 2009-07-07 17:51:06 UTC (rev 805)
+++ trunk/geanylatex/ChangeLog 2009-07-09 21:38:35 UTC (rev 806)
@@ -1,3 +1,8 @@
+2009-07-08 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+
+ * Migrated bibTeX inserting entry framework to make usage of a GPtrArray.
+
+
2009-06-27 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
* Added Portuguese translation. Thanks to André Glória for providing.
Modified: trunk/geanylatex/src/bibtex.c
===================================================================
--- trunk/geanylatex/src/bibtex.c 2009-07-07 17:51:06 UTC (rev 805)
+++ trunk/geanylatex/src/bibtex.c 2009-07-09 21:38:35 UTC (rev 806)
@@ -22,10 +22,6 @@
#include "bibtex.h"
#include "reftex.h"
-#define glatex_set_status(entry_number, flag) \
- fields[entry_number] = flag;
-
-
#if 0
static int get_entry_pos(char *str)
{
@@ -44,99 +40,128 @@
void glatex_insert_bibtex_entry(G_GNUC_UNUSED GtkMenuItem * menuitem,
G_GNUC_UNUSED gpointer gdata)
{
- int doctype = GPOINTER_TO_INT(gdata);
- gboolean fields[GLATEX_BIBTEX_N_ENTRIES];
- gchar *output = g_strdup("@");
- int i;
+ gint i;
+ gint doctype = GPOINTER_TO_INT(gdata);
+ GPtrArray *entry = glatex_bibtex_init_empty_entry();
- for (i = 0; i < GLATEX_BIBTEX_N_ENTRIES; i++)
- {
- glatex_set_status(i, FALSE);
- }
-
switch(doctype) {
case GLATEX_BIBTEX_ARTICLE:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_JOURNAL, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_JOURNAL) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_BOOK:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_EDITOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_PUBLISHER, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_EDITOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_PUBLISHER) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_BOOKLET:
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
break;
case GLATEX_BIBTEX_CONFERENCE:
case GLATEX_BIBTEX_INCOLLECTION:
case GLATEX_BIBTEX_INPROCEEDINGS:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_BOOKTITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_BOOKTITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_INBOOK:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_EDITOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_CHAPTER, TRUE);
- glatex_set_status(GLATEX_BIBTEX_PAGES, TRUE);
- glatex_set_status(GLATEX_BIBTEX_PUBLISHER, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_EDITOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_CHAPTER) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_PAGES) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_PUBLISHER) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_MANUAL:
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
break;
case GLATEX_BIBTEX_MASTERSTHESIS:
case GLATEX_BIBTEX_PHDTHESIS:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_SCHOOL, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_SCHOOL) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_MISC:
for (i = 0; i < GLATEX_BIBTEX_N_ENTRIES; i++)
{
- glatex_set_status(i, TRUE);
+ g_ptr_array_index(entry, i) = g_strdup("\0");
}
case GLATEX_BIBTEX_TECHREPORT:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_INSTITUTION, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_INSTITUTION) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
case GLATEX_BIBTEX_UNPUBLISHED:
- glatex_set_status(GLATEX_BIBTEX_AUTHOR, TRUE);
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_NOTE, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_AUTHOR) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_NOTE) = g_strdup("\0");
break;
case GLATEX_BIBTEX_PROCEEDINGS:
- glatex_set_status(GLATEX_BIBTEX_TITLE, TRUE);
- glatex_set_status(GLATEX_BIBTEX_YEAR, TRUE);
+ g_ptr_array_index(entry, GLATEX_BIBTEX_TITLE) = g_strdup("\0");
+ g_ptr_array_index(entry, GLATEX_BIBTEX_YEAR) = g_strdup("\0");
break;
default:
for (i = 0; i < GLATEX_BIBTEX_N_ENTRIES; i++)
{
- glatex_set_status(i, TRUE);
+ g_ptr_array_index(entry, i) = g_strdup("\0");
}
}
+ glatex_bibtex_write_entry(entry, doctype);
+
+ g_ptr_array_free(entry, TRUE);
+}
+
+/* Creating and initialising a array for a bibTeX entry with NULL pointers*/
+GPtrArray *glatex_bibtex_init_empty_entry()
+{
+ gint i;
+ GPtrArray *entry = g_ptr_array_new();
+ g_ptr_array_set_size(entry, GLATEX_BIBTEX_N_ENTRIES);
+ return entry;
+}
+
+
+void glatex_bibtex_write_entry(GPtrArray *entry, gint doctype)
+{
+ gint i;
+ gchar *output = g_strdup("@");
+
+ /* Adding the doctype to entry */
output = g_strconcat(output, glatex_label_types[doctype], "{ \n",NULL);
+
+ /* Adding the keywords and values to entry */
for (i = 0; i < GLATEX_BIBTEX_N_ENTRIES; i++)
{
- if (fields[i] == TRUE)
+ /* Check whether a field has been marked for being used */
+ if (g_ptr_array_index (entry, i) != NULL)
{
- output = g_strconcat(output, glatex_label_entry_keywords[i], " = {},\n", NULL);
+ /* Check whether a field was only set for being used ... */
+ if (utils_str_equal(g_ptr_array_index (entry, i), "\0"))
+ {
+ output = g_strconcat(output,
+ glatex_label_entry_keywords[i], " = {},\n", NULL);
+ }
+ /* ... or has some real value inside. */
+ else
+ {
+ output = g_strconcat(output,
+ glatex_label_entry_keywords[i], " = {", g_ptr_array_index(entry, i),
+ "},\n", NULL);
+ }
}
}
output = g_strconcat(output, "}\n", NULL);
glatex_insert_string(output, FALSE);
- g_free(output);
}
Modified: trunk/geanylatex/src/bibtex.h
===================================================================
--- trunk/geanylatex/src/bibtex.h 2009-07-07 17:51:06 UTC (rev 805)
+++ trunk/geanylatex/src/bibtex.h 2009-07-09 21:38:35 UTC (rev 806)
@@ -44,7 +44,6 @@
GLATEX_BIBTEX_N_TYPES
};
-
enum {
GLATEX_BIBTEX_ADDRESS = 0,
GLATEX_BIBTEX_ANNOTE,
@@ -88,4 +87,7 @@
void glatex_insert_bibtex_entry(G_GNUC_UNUSED GtkMenuItem * menuitem,
G_GNUC_UNUSED gpointer gdata);
+void glatex_bibtex_write_entry(GPtrArray *entry, gint doctype);
+
+GPtrArray *glatex_bibtex_init_empty_entry();
#endif
Modified: trunk/geanylatex/src/bibtexlabels.c
===================================================================
--- trunk/geanylatex/src/bibtexlabels.c 2009-07-07 17:51:06 UTC (rev 805)
+++ trunk/geanylatex/src/bibtexlabels.c 2009-07-09 21:38:35 UTC (rev 806)
@@ -93,7 +93,8 @@
("Type"),
("URL"),
("Volume"),
- ("Year")};
+ ("Year"),
+ ( NULL) };
const gchar *glatex_label_tooltips[] = {
N_("Address of publisher"),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list