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
|
/***************************************************************************
* Copyright (C) 2004-2006 by Thomas Fischer *
* [email protected] *
* *
* This program 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 2 of the License, or *
* (at your option) any later version. *
* *
* This program 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 this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef BIBTEXFILE_H
#define BIBTEXFILE_H
#include <qobject.h>
#include <qvaluelist.h>
#include <entryfield.h>
class QDir;
class QString;
class QChar;
class QStringList;
class QWaitCondition;
class QProcess;
class QIODevice;
namespace BibTeX
{
class Element;
class Entry;
class String;
class FileExporter;
static const QString Months[] =
{
QString( "January" ), QString( "February" ), QString( "March" ), QString( "April" ), QString( "May" ), QString( "June" ), QString( "July" ), QString( "August" ), QString( "September" ), QString( "October" ), QString( "November" ), QString( "December" )
};
static const QString MonthsTriple[] =
{
QString( "jan" ), QString( "feb" ), QString( "mar" ), QString( "apr" ), QString( "may" ), QString( "jun" ), QString( "jul" ), QString( "aug" ), QString( "sep" ), QString( "oct" ), QString( "nov" ), QString( "dec" )
};
class File : public QObject
{
Q_OBJECT
friend class FileExporterXML;
friend class FileExporterBibTeX;
friend class FileExporterRIS;
friend class FileExporter;
friend class FileParser;
public:
typedef QValueList<Element*> ElementList;
enum FileFormat { formatUndefined = 0, formatBibTeX = 1, formatXML = 2, formatHTML = 3, formatPDF = 4, formatPS = 5, formatRTF = 6, formatRIS = 7, formatEndNote = 8, formatISI = 9, formatDocBook5 = 10, formatMODS = 11, formatWordBib = 12, formatAds = 13, formatEndNoteXML = 14 };
enum Encoding {encImplicit = 0, encLaTeX = 1, encUTF8 = 2};
enum StringProtection { spNone, spParanthesis, spQuote, spBoth };
File( );
~File();
unsigned int count() const;
Element* at( const unsigned int index );
void append( const File *other, const Element *after = NULL );
void appendElement( Element *element, const Element *after = NULL );
void deleteElement( Element *element );
static Element* cloneElement( Element *element );
Element *containsKey( const QString &key );
const Element *containsKeyConst( const QString &key ) const;
QStringList allKeys();
QString text();
ElementList::iterator begin();
ElementList::iterator end();
ElementList::const_iterator constBegin() const;
ElementList::const_iterator constEnd() const;
QStringList getAllValuesAsStringList( const EntryField::FieldType fieldType ) const;
QMap<QString, int> getAllValuesAsStringListWithCount( const EntryField::FieldType fieldType ) const;
void replaceValue( const QString& oldText, const QString& newText, const EntryField::FieldType fieldType );
BibTeX::Entry *completeReferencedFieldsConst( const BibTeX::Entry *entry ) const;
void completeReferencedFields( BibTeX::Entry *entry ) const;
QString fileName;
protected:
ElementList elements;
private:
void clearElements();
};
}
#endif
|