summaryrefslogtreecommitdiff
path: root/biblio/bibtex/utils/xbibfile/techreport.c
diff options
context:
space:
mode:
Diffstat (limited to 'biblio/bibtex/utils/xbibfile/techreport.c')
-rw-r--r--biblio/bibtex/utils/xbibfile/techreport.c475
1 files changed, 475 insertions, 0 deletions
diff --git a/biblio/bibtex/utils/xbibfile/techreport.c b/biblio/bibtex/utils/xbibfile/techreport.c
new file mode 100644
index 0000000000..95ee47aca1
--- /dev/null
+++ b/biblio/bibtex/utils/xbibfile/techreport.c
@@ -0,0 +1,475 @@
+/* This file is a part of XBibFile - a system for handling BibTeX references
+ *
+ * Author: Ross Maloney
+ * Date: October 1999
+ * Modified: January 2002
+ *
+ */
+
+#include <stdio.h>
+#include <gtk/gtk.h>
+
+#include "xbibfile.h"
+
+/* This file is a modified copy of phd.c so that it handles the
+ * Technical Report BibTeX reference style */
+
+
+GtkWidget *labelX, *dataX;
+GtkWidget *label0, *data0;
+GtkWidget *label1, *data1;
+GtkWidget *label2, *data2;
+GtkWidget *label3, *data3;
+GtkWidget *label9, *data9;
+GtkWidget *label12, *data12;
+GtkWidget *label13, *data13, *textscroll;
+GtkWidget *label14, *data14;
+GtkWidget *label20, *data20;
+GtkWidget *label21, *data21;
+GtkWidget *label22, *data22;
+GtkWidget *label24, *data24;
+GtkWidget *label30, *data30;
+GtkWidget *label31, *data31;
+GtkWidget *label32, *data32;
+GtkTextBuffer *text13;
+GtkTextIter start, end;
+PangoFontDescription *font_desc;
+
+
+
+
+/* The procedure to save the Technical Reporot style */
+
+void save_techreport(GtkWidget *widget)
+{
+ extern int format;
+ extern int length[];
+ extern char slate[][];
+ extern int lengthX;
+ extern char slateX[];
+ extern char slate1[];
+ extern char slate2[];
+ extern char slate3[];
+ extern char slate9[];
+ extern char slate12[];
+ extern char slate13[];
+ extern char slate14[];
+ extern char slate20[];
+ extern char slate21[];
+ extern char slate22[];
+ extern char slate24[];
+ extern char slate30[];
+ extern char slate31[];
+ extern char slate32[];
+ extern void error(); /* defined in file error.c */
+ extern FILE *finput; /* defined in file xbibfile.c */
+ extern void close_window(); /* defined in file cleanup.c */
+
+ if (format != 13) {
+ error(widget, GINT_TO_POINTER(5));
+ return;
+ }
+ strcpy(slateX, gtk_entry_get_text(GTK_ENTRY(dataX)));
+ lengthX = strlen(slateX);
+ strcpy(slate3, gtk_entry_get_text(GTK_ENTRY(data3)));
+ length[3] = strlen(slate3);
+ strcpy(slate9, gtk_entry_get_text(GTK_ENTRY(data9)));
+ length[9] = strlen(slate9);
+ strcpy(slate20, gtk_entry_get_text(GTK_ENTRY(data20)));
+ length[20] = strlen(slate20);
+ strcpy(slate24, gtk_entry_get_text(GTK_ENTRY(data24)));
+ length[24] = strlen(slate24);
+ if (!(length[3] && length[9] && length[20] && length[24] && lengthX)) {
+ error(widget, GINT_TO_POINTER(3));
+ return;
+ }
+ if (!finput) {
+ error(widget, GINT_TO_POINTER(8));
+ return;
+ }
+ /* finput = stdout; */
+ fprintf(finput, "\n@TECHREPORT{%s,\n", slateX);
+ fprintf(finput, " author = {%s},\n", slate3);
+ fprintf(finput, " title = {%s},\n", slate20);
+ fprintf(finput, " institution = {%s},\n", slate9);
+ fprintf(finput, " year = {%s}", slate24);
+ if (length[21])
+ fprintf(finput, ",\n type = {%s}", slate21);
+ if (length[14])
+ fprintf(finput, ",\n number = {%s}", slate14);
+ if (length[1])
+ fprintf(finput, ",\n address = {%s}", slate1);
+ if (length[12])
+ fprintf(finput, ",\n month = {%s}", slate12);
+ if (length[22])
+ fprintf(finput, ",\n URL = {%s}", slate22);
+ if (length[2])
+ fprintf(finput, ",\n note = {%s}", slate2);
+ if (length[13])
+ fprintf(finput, ",\n annote = {%s}", slate13);
+ if (length[30])
+ fprintf(finput, ",\n uplink = {%s}", slate30);
+ if (length[31])
+ fprintf(finput, ",\n crosslink = {%s}", slate31);
+ if (length[32])
+ fprintf(finput, ",\n externlink = {%s}", slate32);
+ fprintf(finput, " }\n");
+ /* indicate that the reference is saved */
+ format = 0;
+ length[1] = 0;
+ length[2] = 0;
+ length[12] = 0;
+ length[13] = 0;
+ length[14] = 0;
+ length[21] = 0;
+ length[22] = 0;
+ length[30] = 0;
+ length[31] = 0;
+ length[32] = 0;
+ close_window(widget); /* remove this reference window */
+}
+
+
+/* Save the Technical Report optional fields for subsequent saving */
+
+void save_techoptions(GtkWidget *widget)
+{
+ extern void close_window();
+ extern int length[];
+ extern char slate1[];
+ extern char slate2[];
+ extern char slate12[];
+ extern char slate13[];
+ extern char slate14[];
+ extern char slate21[];
+ extern char slate22[];
+ char *text_in_field;
+ int count;
+
+ strcpy(slate1, gtk_entry_get_text(GTK_ENTRY(data1)));
+ length[1] = strlen(slate1);
+ strcpy(slate12, gtk_entry_get_text(GTK_ENTRY(data12)));
+ length[12] = strlen(slate12);
+ count = gtk_text_buffer_get_char_count(text13);
+ gtk_text_buffer_get_iter_at_offset(text13, &end, count);
+ gtk_text_buffer_get_iter_at_offset(text13, &start, 0);
+ strcpy(slate13, gtk_text_buffer_get_text(text13, &start, &end, FALSE));
+ length[13] = count;
+ strcpy(slate14, gtk_entry_get_text(GTK_ENTRY(data14)));
+ length[14] = strlen(slate14);
+ strcpy(slate21, gtk_entry_get_text(GTK_ENTRY(data21)));
+ length[21] = strlen(slate21);
+ strcpy(slate22, gtk_entry_get_text(GTK_ENTRY(data22)));
+ length[22] = strlen(slate22);
+ strcpy(slate2, gtk_entry_get_text(GTK_ENTRY(data2)));
+ length[2] = strlen(slate2);
+ close_window(widget);
+}
+
+
+
+
+/* Close the option entry window, but first delete the entries */
+
+void close_techoptions(GtkWidget *widget)
+{
+ extern void close_window();
+ extern int length[];
+
+ length[1] = 0;
+ length[2] = 0;
+ length[12] = 0;
+ length[13] = 0;
+ length[14] = 0;
+ length[21] = 0;
+ length[22] = 0;
+ close_window(widget);
+}
+
+
+/* The procedure to put the optional Technical Report style
+ * fields on the screen */
+
+void techoptions(GtkWidget *widget)
+{
+ extern int format;
+ GtkTooltips *tooltips;
+ GtkWidget *window;
+ GtkWidget *decoration;
+ GtkWidget *totalPane;
+ GtkWidget *field0;
+ GtkWidget *field1;
+ GtkWidget *field2;
+ GtkWidget *field3;
+ GtkWidget *field4;
+ GtkWidget *field5;
+ GtkWidget *field6;
+ GtkWidget *key0;
+ GtkWidget *key1;
+
+ void close_techoptions();
+ void save_techoptions();
+
+ if (format == 0) {
+ error (widget, GINT_TO_POINTER(6));
+ return;
+ }
+
+ /* create the tooltip help feature */
+
+ tooltips = gtk_tooltips_new();
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(window), "XBibFile create");
+ gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_MOUSE);
+ gtk_widget_set_usize(GTK_WIDGET(window), 400, 570);
+ decoration = gtk_frame_new("Optional Technical Report fields");
+ gtk_container_add(GTK_CONTAINER(window), decoration);
+ totalPane = gtk_vbox_new(FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(decoration), totalPane);
+
+ /* put the text fields in place */
+ field1 = gtk_hbox_new(FALSE, 0);
+ data21 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data21), TINY);
+ label21 = gtk_label_new("Type:");
+ gtk_widget_set_usize(GTK_WIDGET(label21), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field1), label21, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field1), data21, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field1, FALSE, TRUE, 10);
+
+ field2 = gtk_hbox_new(FALSE, 0);
+ data14 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data14), TINY);
+ label14 = gtk_label_new("Number:");
+ gtk_widget_set_usize(GTK_WIDGET(label14), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field2), label14, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field2), data14, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field2, FALSE, TRUE, 2);
+
+ field3 = gtk_hbox_new(FALSE, 0);
+ data1 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data1), LARGE);
+ label1 = gtk_label_new("Address:");
+ gtk_widget_set_usize(GTK_WIDGET(label1), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field3), label1, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field3), data1, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field3, FALSE, TRUE, 2);
+
+ field4 = gtk_hbox_new(FALSE, 0);
+ data12 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data12), TINY);
+ label12 = gtk_label_new("Month:");
+ gtk_widget_set_usize(GTK_WIDGET(label12), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field4), label12, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field4), data12, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field4, FALSE, TRUE, 2);
+
+ field5 = gtk_hbox_new(FALSE, 0);
+ data22 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data22), LARGE);
+ label22 = gtk_label_new("URL:");
+ gtk_widget_set_usize(GTK_WIDGET(label22), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field5), label22, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field5), data22, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field5, FALSE, TRUE, 2);
+
+ field6 = gtk_hbox_new(FALSE, 0);
+ data2 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data2), LARGE);
+ label2 = gtk_label_new("note:");
+ gtk_widget_set_usize(GTK_WIDGET(label2), 75, -1);
+ gtk_box_pack_start(GTK_BOX(field6), label2, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field6), data2, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field6, FALSE, TRUE, 2);
+
+ text13 = gtk_text_buffer_new(NULL);
+ data13 = gtk_text_view_new_with_buffer(text13);
+ textscroll = gtk_scrolled_window_new(NULL, NULL);
+ font_desc = pango_font_description_from_string("Sans 12");
+ gtk_widget_modify_font(data13, font_desc);
+ gtk_container_add(GTK_CONTAINER(textscroll), data13);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(textscroll),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_usize(GTK_WIDGET(data13), 30, 250);
+ label13 = gtk_label_new("Annotation:");
+ gtk_box_pack_start(GTK_BOX(totalPane), label13, FALSE, TRUE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), textscroll, FALSE, TRUE, 2);
+
+ /* finally, put the cancel button in place */
+ field0 = gtk_hbox_new(FALSE, 0);
+ key0 = gtk_button_new_with_label("CANCEL");
+ gtk_widget_set_usize(GTK_WIDGET(key0), 90, -1);
+ g_signal_connect(GTK_OBJECT(key0), "clicked",
+ G_CALLBACK(close_techoptions), NULL);
+ gtk_tooltips_set_tip(tooltips, key0,
+ "Discard the contents of this window", NULL);
+ gtk_box_pack_end(GTK_BOX(field0), key0, FALSE, FALSE, 10);
+ key1 = gtk_button_new_with_label("Save");
+ gtk_widget_set_usize(GTK_WIDGET(key1), 90, -1);
+ g_signal_connect(GTK_OBJECT(key1), "clicked",
+ G_CALLBACK(save_techoptions), NULL);
+ gtk_tooltips_set_tip(tooltips, key1,
+ "Store the contents of this window", NULL);
+ gtk_box_pack_end(GTK_BOX(field0), key1, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field0, FALSE, TRUE, 10);
+
+ /* put the composite window on the screen */
+ gtk_widget_show_all(window);
+}
+
+
+
+/* The procedure to put the basic Technical Report style on the screen */
+
+void techreport(GtkWidget *widget)
+{
+ GtkTooltips *tooltips;
+ GtkWidget *window;
+ GtkWidget *decoration;
+ GtkWidget *totalPane;
+ GtkWidget *opDecoration;
+ GtkWidget *field0;
+ GtkWidget *field1;
+ GtkWidget *option;
+ GtkWidget *controls;
+ GtkWidget *key1;
+ GtkWidget *key2;
+ GtkWidget *key3;
+ GtkWidget *key4;
+ GtkWidget *field2;
+ GtkWidget *field3;
+ GtkWidget *field4;
+ GtkWidget *field5;
+ extern int format;
+ extern char slate0[];
+
+ extern void linkwindow();
+ extern void closure_check(); /* defined in file cleanup.c */
+ extern void close_window(); /* defined in file cleanup.c */
+ void techoptions();
+ void save_techreport();
+
+ /* create the tooltip help feature */
+
+ tooltips = gtk_tooltips_new();
+
+ format = 13; /* indicate processing of a TECHREPORT */
+
+ /* create the wondow and its top panel */
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(window), "XBibFile create");
+ gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_MOUSE);
+ decoration = gtk_frame_new("Technical Report type - required fields");
+ gtk_widget_set_usize(GTK_WIDGET(window), 450, 325);
+ gtk_container_add(GTK_CONTAINER(window), decoration);
+ totalPane = gtk_vbox_new(FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(decoration), totalPane);
+
+ field1 = gtk_hbox_new(FALSE,0);
+ dataX = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(dataX), SMALL);
+ gtk_widget_set_usize(GTK_WIDGET(dataX), 345, -1);
+ labelX = gtk_label_new("Tag/s:");
+ gtk_widget_set_usize(GTK_WIDGET(labelX), 65, -1);
+ gtk_box_pack_start(GTK_BOX(field1), labelX, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field1), dataX, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field1, FALSE, TRUE, 10);
+
+ field0 = gtk_hbox_new(FALSE, 0);
+ data0 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data0), LARGE);
+ gtk_widget_set_usize(GTK_WIDGET(data0), 345, -1);
+ label0 = gtk_label_new("File used:");
+ gtk_widget_set_usize(GTK_WIDGET(label0), 65, -1);
+ gtk_entry_set_text(GTK_ENTRY(data0), slate0);
+ gtk_box_pack_start(GTK_BOX(field0), label0, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field0), data0, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field0, FALSE, TRUE, 2);
+
+ /* position the remaining field entries */
+ field2 = gtk_hbox_new(FALSE, 0);
+ data3 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data3), LARGE);
+ gtk_widget_set_usize(GTK_WIDGET(data3), 345, -1);
+ label3 = gtk_label_new("Author/s:");
+ gtk_widget_set_usize(GTK_WIDGET(label3), 65, -1);
+ gtk_box_pack_start(GTK_BOX(field2), label3, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field2), data3, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field2, FALSE, TRUE, 8);
+
+ field3 = gtk_hbox_new(FALSE, 0);
+ data20 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data20), LARGE);
+ gtk_widget_set_usize(GTK_WIDGET(data20), 345, -1);
+ label20 = gtk_label_new("Title:");
+ gtk_widget_set_usize(GTK_WIDGET(label20), 65, -1);
+ gtk_box_pack_start(GTK_BOX(field3), label20, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field3), data20, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field3, FALSE, TRUE, 2);
+
+ field4 = gtk_hbox_new(FALSE, 0);
+ data9 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data9), SMALL);
+ gtk_widget_set_usize(GTK_WIDGET(data9), 345, -1);
+ label9 = gtk_label_new("Institution:");
+ gtk_widget_set_usize(GTK_WIDGET(label9), 65, -1);
+ gtk_box_pack_start(GTK_BOX(field4), label9, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field4), data9, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field4, FALSE, TRUE, 2);
+
+ field5 = gtk_hbox_new(FALSE, 0);
+ data24 = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(data24), TINY);
+ gtk_widget_set_usize(GTK_WIDGET(data24), 200, -1);
+ label24 = gtk_label_new("Year:");
+ gtk_widget_set_usize(GTK_WIDGET(label24), 65, -1);
+ gtk_box_pack_start(GTK_BOX(field5), label24, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(field5), data24, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), field5, FALSE, TRUE, 2);
+
+ /* put the control keys on to the window */
+ option = gtk_hbox_new(FALSE, 0);
+ key2 = gtk_button_new_with_label("Optional fields");
+ gtk_widget_set_usize(GTK_WIDGET(key2), 130, -1);
+ g_signal_connect(GTK_OBJECT(key2), "clicked",
+ G_CALLBACK(techoptions), NULL);
+ gtk_tooltips_set_tip(tooltips, key2,
+ "Click here to get window containing remaining Tech Report fields",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(option), key2, FALSE, FALSE, 10);
+ controls = gtk_hbox_new(FALSE, 0);
+ key1 = gtk_button_new_with_label("Save");
+ gtk_widget_set_usize(GTK_WIDGET(key1), 90, -1);
+ g_signal_connect(GTK_OBJECT(key1), "clicked",
+ G_CALLBACK(save_techreport), NULL);
+ gtk_tooltips_set_tip(tooltips, key1,
+ "Store this Tech Report reference in database", NULL);
+ gtk_box_pack_start(GTK_BOX(controls), key1, FALSE, FALSE, 30);
+ key3 = gtk_button_new_with_label("Cancel");
+ gtk_widget_set_usize(GTK_WIDGET(key3), 90, -1);
+ g_signal_connect(GTK_OBJECT(key3), "clicked",
+ G_CALLBACK(closure_check), NULL);
+ gtk_tooltips_set_tip(tooltips, key3,
+ "Discard this Tech Report entry", NULL);
+ gtk_box_pack_start(GTK_BOX(controls), key3, FALSE, FALSE, 30);
+ key4 = gtk_button_new_with_label("Linking");
+ gtk_widget_set_usize(GTK_WIDGET(key4), 90, -1);
+ g_signal_connect(GTK_OBJECT(key4), "clicked",
+ G_CALLBACK(linkwindow), NULL);
+ gtk_tooltips_set_tip(tooltips, key4,
+ "Click here for window to create links for this Tech Report",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(controls), key4, FALSE, FALSE, 30);
+ gtk_box_pack_start(GTK_BOX(totalPane), option, FALSE, TRUE, 10);
+ gtk_box_pack_start(GTK_BOX(totalPane), controls, FALSE, TRUE, 10);
+
+
+ format = 13;
+
+ /* make the composite visible on screen */
+ gtk_widget_show_all(window);
+}
+
+