You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kbibtex/src/settings.h

206 lines
7.3 KiB

/***************************************************************************
* Copyright (C) 2004-2006 by Thomas Fischer *
* fischer@unix-ag.uni-kl.de *
* *
* 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 SETTINGS_H
#define SETTINGS_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <qstringlist.h>
#include <kcompletion.h>
#include <file.h>
#include <fieldlineedit.h>
#include <fileexporterbibtex.h>
#include <fileexporterexternal.h>
#include <entryfield.h>
#include <entry.h>
class KConfig;
class KStandardDirs;
class KURL;
class QString;
class QRegExp;
class QChar;
class QFont;
namespace KBibTeX
{
class Settings
{
public:
struct SearchURL
{
QString description;
QString url;
bool includeAuthor;
};
struct UserDefinedInputFields
{
QString name;
QString label;
FieldLineEdit::InputType inputType;
};
static Settings* self( BibTeX::File *bibtexFile = NULL );
void load( KConfig * config );
void save( KConfig * config );
static QString fieldTypeToI18NString( const BibTeX::EntryField::FieldType fieldType );
static QString entryTypeToI18NString( const BibTeX::Entry::EntryType entryType );
static KURL doiURL( const QString& doiText );
static bool kpsewhich( const QString& filename );
static KURL locateFile( const QString& filename, const QString& bibTeXFileName = QString::null, QWidget *window = NULL );
KURL locateFile( const QString& filename, QWidget *window = NULL );
static QString resolveLink( const QString& originalFilename, const QString& linkFilename );
static bool openUrl( const KURL& url, QWidget *parent );
#ifdef HAVE_YAZ
void z3950clearAll();
void z3950loadDefault();
void z3950loadUser( KConfig * config );
void z3950saveUser( KConfig *config );
typedef struct Z3950Server_
{
QString charset, database, host, locale, name, syntax, user, password;
int port;
} Z3950Server;
QMap<QString, Z3950Server> z3950_ServerList;
#endif // HAVE_YAZ
enum DragAction {COPYREFERENCE = 1, COPYBIBTEX = 2};
// FileIO section
QString fileIO_Encoding;
QString fileIO_ExportLanguage;
QString fileIO_ExportBibliographyStyle;
QChar fileIO_BibtexStringOpenDelimiter;
QChar fileIO_BibtexStringCloseDelimiter;
BibTeX::FileExporterBibTeX::KeywordCasing fileIO_KeywordCasing;
BibTeX::FileExporterExternal::Exporter fileIO_ExporterHTML;
bool fileIO_EmbedFiles;
bool fileIO_EnclosingCurlyBrackets;
bool fileIO_useBibUtils;
QString fileIO_bib2db5BasePath;
QString fileIO_bib2db5ClassPath;
int fileIO_NumberOfBackups;
bool updateBib2Db5ClassPath( const QString& newBasePath, bool testOnly = false );
// Editing section
bool editing_SearchBarClearField;
bool editing_EnableAllFields;
int editing_MainListDoubleClickAction;
int editing_MainListSortingColumn;
int editing_MainListSortingOrder;
QStringList editing_FilterHistory;
bool editing_ShowMacros;
bool editing_ShowComments;
QValueList<int> editing_MainListColumnsWidth;
QValueList<int> editing_MainListColumnsIndex;
QValueList<int> editing_HorSplitterSizes;
QValueList<int> editing_VertSplitterSizes;
QFont editing_SpecialFont;
bool editing_UseSpecialFont;
bool editing_FirstNameFirst;
QStringList editing_DocumentSearchPaths;
DragAction editing_DragAction;
int editing_findDuplicatesSensitivity;
// SearchURLs section
QValueList<SearchURL*> searchURLs;
// UserDefinedInputFields section
QValueList<UserDefinedInputFields*> userDefinedInputFields;
// External section
QString external_XSLTStylesheetHTML;
bool external_bibconvAvailable;
bool external_bibtex2htmlAvailable;
bool external_bib2xhtmlAvailable;
bool external_latex2rtfAvailable;
bool external_xml2bibAvailable;
bool external_end2xmlAvailable;
bool external_ris2xmlAvailable;
// Id Suggestions
QStringList idSuggestions_formatStrList;
int idSuggestions_default;
bool idSuggestions_forceDefault;
QStringList idSuggestions_smallWords;
// Auto-completion for user fields (non-persistant)
void addToCompletion( BibTeX::File *file );
void addToCompletion( BibTeX::Element *element );
void addToCompletion( BibTeX::Value *value, BibTeX::EntryField::FieldType fieldType );
KCompletion* completion( BibTeX::EntryField::FieldType fieldType );
KCompletion* completionMacro;
// Keyword list
QStringList keyword_GlobalList;
// Online Database Search;
int webQuery_LastEngine;
QString webQuery_LastSearchTerm;
int webQuery_LastNumberOfResults;
bool webQuery_ImportAll;
// Current BibTeX file
BibTeX::File *currentBibTeXFile;
void restoreDefaultSearchURLs();
QString detectLyXInPipe();
// web query history/default values
QString getWebQueryDefault( const QString &key );
void setWebQueryDefault( const QString &key, const QString& value );
// characters that do match this regexp are
// not allowed in entry ids or macro keys
static const QRegExp noIdChars;
/** Create backup of file as specified in fileIO_NumberOfBackups */
bool createBackup( const KURL &url, QWidget *window = NULL );
private:
static Settings* staticSettings;
KCompletion **m_completion;
static QStringList m_lyxRcFileNames;
QMap<QString, QString> m_webQueryDefaults;
Settings();
~Settings();
bool checkExternalToolAvailable( const QString &binary );
void checkExternalToolsAvailable();
int completionFieldTypeToIndex( BibTeX::EntryField::FieldType fieldType );
};
}
#endif