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.
267 lines
8.5 KiB
267 lines
8.5 KiB
/*********
|
|
*
|
|
* This file is part of BibleTime's source code, http://www.bibletime.info/.
|
|
*
|
|
* Copyright 1999-2006 by the BibleTime developers.
|
|
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
|
|
*
|
|
**********/
|
|
|
|
|
|
|
|
#ifndef CSWORDBACKEND_H
|
|
#define CSWORDBACKEND_H
|
|
|
|
//BibleTime includes
|
|
#include "cswordmoduleinfo.h"
|
|
//#include "centrydisplay.h"
|
|
|
|
//Qt includes
|
|
#include <tqptrlist.h>
|
|
#include <tqmap.h>
|
|
#include <tqstring.h>
|
|
#include <tqstringlist.h>
|
|
|
|
//Sword includes
|
|
#include <swmgr.h>
|
|
#include <swbuf.h>
|
|
#include <swmodule.h>
|
|
#include <swversion.h>
|
|
#include <localemgr.h>
|
|
#include <utilstr.h>
|
|
|
|
using namespace sword;
|
|
|
|
namespace Rendering {
|
|
|
|
class CEntryDisplay;
|
|
|
|
class CChapterDisplay;
|
|
|
|
class CBookDisplay;
|
|
}
|
|
|
|
/** The backend layer main class.
|
|
* This is the implementation of CBackend for Sword. It's additionally derived from SWMgr
|
|
* to provide functions of Sword.
|
|
*
|
|
* @short The backend implementation of Sword
|
|
* @author The BibleTime team
|
|
* @version $Id: cswordbackend.h,v 1.58 2007/03/14 21:32:47 joachim Exp $
|
|
*/
|
|
|
|
class CSwordBackend : public sword::SWMgr {
|
|
|
|
public:
|
|
/** Filter options. Filter options to
|
|
* control the text display of modules. Uses int and not bool because not all
|
|
* options have just two toggle values.
|
|
*/
|
|
|
|
struct FilterOptions {
|
|
int footnotes; /**< 0 for disabled, 1 for enabled */
|
|
int strongNumbers; /**< 0 for disabled, 1 for enabled */
|
|
int headings; /**< 0 for disabled, 1 for enabled */
|
|
int morphTags; /**< 0 for disabled, 1 for enabled */
|
|
int lemmas; /**< 0 for disabled, 1 for enabled */
|
|
int hebrewPoints; /**< 0 for disabled, 1 for enabled */
|
|
int hebrewCantillation; /**< 0 for disabled, 1 for enabled */
|
|
int greekAccents; /**< 0 for disabled, 1 for enabled */
|
|
int textualVariants; /**< Number n to enabled the n-th variant */
|
|
int redLetterWords; /**< 0 for disabled, 1 for enabled */
|
|
int scriptureReferences; /**< 0 for disabled, 1 for enabled */
|
|
int morphSegmentation; /**< 0 for disabled, 1 for enabled */
|
|
};
|
|
|
|
/** Control the display of a text.
|
|
*/
|
|
|
|
struct DisplayOptions {
|
|
int lineBreaks;
|
|
int verseNumbers;
|
|
};
|
|
|
|
/** The error codes which may be returned by the @ref Load() call.
|
|
*/
|
|
enum LoadError { // the values exist to cast from the char return of SWMgr::Load
|
|
NoSwordConfig = -1,
|
|
NoError = 0,
|
|
NoModules = 1
|
|
};
|
|
/**
|
|
* The constructor of the Sword backend.
|
|
* It creates the SWModule objects using SWMgr's methods, it adds the necessary
|
|
* filters for the module format.
|
|
*/
|
|
CSwordBackend();
|
|
/**
|
|
* The constructor of the Sword backend.
|
|
* @param path The path which is used to load modules
|
|
* @param augmentHome True if the $HOME/.sword/ modules should be augmented with the other modules
|
|
*/
|
|
CSwordBackend( const TQString& path, const bool augmentHome = true );
|
|
|
|
/**
|
|
* The destrctor of this backend. This function shuts the modules down using @ref shutdownModules.
|
|
*/
|
|
virtual ~CSwordBackend();
|
|
|
|
/**
|
|
* This function returns the list of available modules managed by this backend.
|
|
* You have to call initModules() first;
|
|
*
|
|
* @return The list of modules managed by this backend
|
|
*/
|
|
inline virtual ListCSwordModuleInfo& moduleList();
|
|
/**
|
|
* Initializes the Sword modules.
|
|
*
|
|
* @return True if the initializiation was succesful, otherwise return false.
|
|
*/
|
|
virtual const CSwordBackend::LoadError initModules();
|
|
/**
|
|
* This function deinitializes the modules and deletes them.
|
|
*
|
|
* @return True if it was succesful, otherwise return false
|
|
*/
|
|
virtual const bool shutdownModules();
|
|
/**
|
|
* Sets the given options enabled or disabled depending on the second parameter.
|
|
*
|
|
* @param type This is the type this function should set enabled or disabled
|
|
* @param enable If this is true the option will be enabled, otherwise it will be disabled.
|
|
*/
|
|
void setOption( const CSwordModuleInfo::FilterTypes type, const int state );
|
|
void setFilterOptions( const CSwordBackend::FilterOptions options );
|
|
void setDisplayOptions( const CSwordBackend::DisplayOptions options );
|
|
/**
|
|
* Returns true if the given option is enabled.
|
|
*
|
|
* @return Returns true if the options given as aparameter is switched on at this time, otherwise return false.
|
|
*/
|
|
virtual const bool isOptionEnabled( const CSwordModuleInfo::FilterTypes type);
|
|
/**
|
|
* Sets the language for the international booknames of Sword.
|
|
* @param langName The abbreviation string which should be used for the Sword backend
|
|
*/
|
|
const TQString booknameLanguage( const TQString& langName = TQString::null );
|
|
/**
|
|
* This function searches for a module with the specified description
|
|
* @param description The description of the desired module
|
|
* @return pointer to the desired module; null if no module has the specified description
|
|
*/
|
|
virtual CSwordModuleInfo* const findModuleByDescription(const TQString& description);
|
|
/**
|
|
* This function searches for a module with the specified description
|
|
* @param description The description of the desired module
|
|
* @return pointer to the desired module; null if no module has the specified description
|
|
*/
|
|
const TQString findModuleNameByDescription(const TQString& description);
|
|
/**
|
|
* This function searches for a module with the specified name
|
|
* @param name The name of the desired module
|
|
* @return Pointer to the desired module; null if no module has the specified name
|
|
*/
|
|
CSwordModuleInfo* const findModuleByName(const TQString& name);
|
|
/**
|
|
* This function searches for a module with the specified sword module as module() object!
|
|
* @param swmodule to a Sword module
|
|
* @return pointer to the desired module; null if no module has the specified name
|
|
*/
|
|
CSwordModuleInfo* const findSwordModuleByPointer(const sword::SWModule* const swmodule);
|
|
/**
|
|
* This function searches for a module which is the same as the passed module.
|
|
* @param module The module which should be used for searching the new one. May be child of a different backend.
|
|
* @return Pointer to the desired module; null if no module has the specified name
|
|
*/
|
|
CSwordModuleInfo* const findModuleByPointer(const CSwordModuleInfo* const module);
|
|
/**
|
|
* @return Our global config object which contains the configs of all modules merged together.
|
|
*/
|
|
inline sword::SWConfig* const getConfig() const;
|
|
/**
|
|
* Tries to find the config object for the module. The second paramter will be the found config.
|
|
* @return True if the config was found, false if not. If false is returned the moduleConfig object is in undefined/unknwon state.
|
|
*/
|
|
const bool moduleConfig(const TQString& module, sword::SWConfig& moduleConfig );
|
|
/**
|
|
* Returns the text used for the option given as parameter.
|
|
* @param The paramter enum
|
|
* @return The name of the option given by the parameter
|
|
*/
|
|
static const TQString optionName( const CSwordModuleInfo::FilterTypes option );
|
|
/**
|
|
* Returns the text used for the option given as parameter.
|
|
*/
|
|
static const TQString configOptionName( const CSwordModuleInfo::FilterTypes option );
|
|
/**
|
|
* Returns the translated name of the option given as parameter.
|
|
* @param The translated option name
|
|
*/
|
|
static const TQString translatedOptionName(const CSwordModuleInfo::FilterTypes option );
|
|
/**
|
|
* Returns the version of the Sword library.
|
|
* @return The version used by this backend
|
|
*/
|
|
inline virtual const sword::SWVersion Version();
|
|
/**
|
|
* Reload all Sword modules.
|
|
*/
|
|
void reloadModules();
|
|
/** Sword prefix list.
|
|
* @return A list of all known Sword prefix dirs
|
|
*/
|
|
const TQStringList swordDirList();
|
|
|
|
protected:
|
|
/**
|
|
* Adds a render filter to the module.
|
|
* @param module Add a render filter to this module!
|
|
*/
|
|
virtual void AddRenderFilters(sword::SWModule *module, sword::ConfigEntMap §ion);
|
|
/**
|
|
* Initializes the filters provided by BibleTime.
|
|
*/
|
|
virtual void filterInit();
|
|
|
|
private:
|
|
// Filters
|
|
|
|
struct Filters {
|
|
sword::SWFilter *gbf;
|
|
sword::SWFilter *plain;
|
|
sword::SWFilter *thml;
|
|
sword::SWFilter *osis;
|
|
}
|
|
|
|
m_filters;
|
|
|
|
struct Displays {
|
|
Rendering::CChapterDisplay* chapter;
|
|
Rendering::CEntryDisplay* entry;
|
|
Rendering::CBookDisplay* book;
|
|
}
|
|
|
|
m_displays;
|
|
|
|
ListCSwordModuleInfo m_moduleList;
|
|
TQMap<TQString, TQString> m_moduleDescriptionMap;
|
|
};
|
|
|
|
/**Returns The list of modules managed by this backend*/
|
|
inline ListCSwordModuleInfo& CSwordBackend::moduleList() {
|
|
return m_moduleList;
|
|
}
|
|
|
|
/** Returns our local config object to store the cipher keys etc. locally for each user. The values of the config are merged with the global config. */
|
|
inline sword::SWConfig* const CSwordBackend::getConfig() const {
|
|
return config;
|
|
}
|
|
|
|
/** Returns the version of the Sword library. */
|
|
inline const sword::SWVersion CSwordBackend::Version() {
|
|
return sword::SWVersion::currentVersion;
|
|
}
|
|
|
|
#endif
|