1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
/* This file is a part of XBibFile - a system for handling BibTeX references
*
* Author: Ross Maloney
* Date: October 1999
* Renamed and reworked: January 2002
*
*/
/* History
*
* Version Date
* 0.1 October 1999 Initial release with Join and Lookup
* outputing to the console terminal window.
* 0.2 December 1999 In an attempt to solve the limited fields
* for some data entry, the code for assigning
* field-lengths was generalised.
* 0.3 May 2000 Added the URL field to reference type fields
* and error corrections
* 0.4 July 2000 Added the note field and commented out the
* actions of the Join and Lookup buttons
* 0.5 December 2000 Replace gtk_widget_show() with
* gtk_widget_show_all(), and add tooltips for
* help
* 0.6 January 2002 Major revision of software layout and computer
* graphics/human interface
* 0.7 November 2002 Upgrade the Gtk routines used internally in the
* source code from version 1.2 to 2.0
*/
/* This file initiates XBibFile */
#include <stdio.h>
#include <gtk/gtk.h>
#include "xbibfile.h"
/* These memory locations contain the input text fields and labels
* used by all the windows that enter the various BibTeX reference
* types. */
int format; /* the BibTeX format being currently used */
FILE *finput;
FILE *refFile;
char slateX[SMALL]; /* search key */
int lengthX;
int length[40]; /* length of strings entered via windows */
char slate0[LARGE]; /* file currently being used for receiving */
char slate1[LARGE]; /* address */
char slate2[LARGE]; /* note */
char slate3[LARGE]; /* author */
char slate4[LARGE]; /* booktitle */
char slate5[TINY]; /* chapter */
char slate6[SMALL]; /* edition */
char slate7[LARGE]; /* editor */
char slate8[SMALL]; /* howpublished */
char slate9[SMALL]; /* institution */
char slate10[SMALL]; /* journal */
char slate11[SMALL]; /* key */
char slate12[TINY]; /* month */
char slate13[HUGE]; /* annote */
char slate14[SMALL]; /* number */
char slate15[LARGE]; /* organization */
char slate16[LARGE]; /* pages */
char slate17[LARGE]; /* publisher */
char slate18[LARGE]; /* school */
char slate19[SMALL]; /* series */
char slate20[LARGE]; /* title */
char slate21[TINY]; /* type */
char slate22[LARGE]; /* URL */
char slate23[TINY]; /* volume */
char slate24[TINY]; /* year */
char slate30[LARGE]; /* Up Link */
char slate31[LARGE]; /* Cross Link */
char slate32[LARGE]; /* External Link */
char slate40[LARGE]; /* name of file for cross-reference forming */
GtkWidget *root; /* the widget that is the root of the current
* tree */
int main(int argc, char *argv[])
{
GtkTooltips *tooltips;
GtkWidget *top, *panel, *buttonBox, *buttonFrame;
GtkWidget *button1, *button2, *button3;
GtkWidget *description1, *description2, *separator;
int i;
extern byebye(GtkWidget); /* in cleanup.c */
extern file_select(GtkWidget); /* in file filing.c */
extern ref_select(GtkWidget *); /* in file filing.c */
format = 0; /* indicate start condition */
strcpy(slate0, "GO BACK and SELECT a FILE");
strcpy(slate40, "GO BACK and SELECT a REF FILE");
length[0] = strlen(slate0);
length[40] = strlen(slate40);
finput = 0;
refFile = 0;
/* initialise the string storage areas */
for (i=0; i<40; i++) {
length[i] = 0;
}
lengthX = 0;
/* slateX = 1; */
/* create the initial window panel for the program */
gtk_init(&argc, &argv);
/* create the tooltip help feature */
tooltips = gtk_tooltips_new();
top = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(top), "XBibFile 0.7");
gtk_window_set_default_size(GTK_WINDOW(top), 150, 250);
panel = gtk_vbox_new(FALSE, 10);
gtk_container_add(GTK_CONTAINER(top), panel);
gtk_container_set_border_width(GTK_CONTAINER(top), 10);
description1 = gtk_label_new("Build and handle the \nBibTeX database");
gtk_box_pack_start_defaults(GTK_BOX(panel), description1);
description2 = gtk_label_new("\nVersion 0.7.1\n");
gtk_box_pack_start_defaults(GTK_BOX(panel), description2);
buttonBox = gtk_vbox_new(FALSE, 10);
gtk_widget_set_usize(GTK_WIDGET(buttonBox), 140, 130);
gtk_box_pack_start_defaults(GTK_BOX(panel), buttonBox);
button1 = gtk_button_new_with_label("Create New");
gtk_widget_set_usize(GTK_WIDGET(button1), 100, 30);
g_signal_connect(GTK_OBJECT(button1), "button-press-event",
G_CALLBACK(file_select), NULL);
gtk_tooltips_set_tip(tooltips, button1,
"Create a new BibTeX database entry", NULL);
gtk_box_pack_start_defaults(GTK_BOX(buttonBox), button1);
button2 = gtk_button_new_with_label("Find Reference");
gtk_widget_set_usize(GTK_WIDGET(button2), 100, 30);
g_signal_connect(GTK_OBJECT(button2), "button-press-event",
G_CALLBACK(ref_select), NULL);
gtk_tooltips_set_tip(tooltips, button2,
"Search database for an existing reference", NULL);
gtk_box_pack_start_defaults(GTK_BOX(buttonBox), button2);
separator = gtk_hseparator_new();
gtk_box_pack_start_defaults(GTK_BOX(buttonBox), separator);
button3 = gtk_button_new_with_label("exit");
gtk_widget_set_usize(GTK_WIDGET(button3), 100, 30);
g_signal_connect(GTK_OBJECT(button3), "button-press-event",
G_CALLBACK(byebye), NULL);
gtk_tooltips_set_tip(tooltips, button3,
"Exit this program", NULL);
gtk_box_pack_start_defaults(GTK_BOX(buttonBox), button3);
/* make this composite window visible on the screen */
gtk_widget_show_all(top);
/* process all signals associated with this application */
gtk_main();
/* The End */
return(0);
}
|