summaryrefslogtreecommitdiffstats
path: root/src/renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer.h')
-rw-r--r--src/renderer.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/renderer.h b/src/renderer.h
new file mode 100644
index 0000000..d3e398f
--- /dev/null
+++ b/src/renderer.h
@@ -0,0 +1,131 @@
+/***************************************************************************
+ File: renderer.h
+ Project: Kio-Sword -- An ioslave for SWORD and KDE
+ Copyright: Copyright (C) 2004-2005 Luke Plant
+ ***************************************************************************/
+
+/***************************************************************************
+ * 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 KS_RENDERER_H
+#define KS_RENDERER_H
+
+#include "filter.h"
+
+#include <swmgr.h>
+#include <swmodule.h>
+#include <versekey.h>
+
+#include <qstring.h>
+#include <qstringlist.h>
+
+#include <functional>
+#include <vector>
+#include <set>
+
+
+/** Handles sword backend and prints modules
+ *
+ * Renderer inherits from sword::SWMgr and handles the majority of
+ * the sword stuff. It also adds functions to 'print' text from
+ * a specified module and to list available modules.
+ *
+ * All output is in HTML, and unicode characters are not converted
+ * to HTML entities (this allows the calling function to decide
+ * what encoding to use in the web page e.g. utf 8 could be used
+ * and no transformation would need to be done).
+ *
+ */
+
+namespace KioSword {
+ class SwordOptions;
+ class Template;
+
+ class Renderer : public sword::SWMgr {
+
+ public:
+ Renderer();
+ virtual ~Renderer();
+
+ typedef enum { SEARCH_WORDS,
+ SEARCH_PHRASE,
+ SEARCH_REGEX } SearchType;
+
+ /** Return an HTML snippet of specified key from module
+ *
+ * @param module The sword module to print from
+ * @param key The text description of the key from the users URL
+ * @param options Options for rendering text
+ * @param tmplt Output parameter that should be filled with title and content
+ */
+ void moduleQuery(const QString &module, const QString &ref, const SwordOptions &options, Template* tmplt);
+
+ QString search(const QString &module, const QString &query, SearchType stype, const SwordOptions &options);
+
+ /** Return an HTML snippet containing a hyperlinked table of modules
+ */
+ QString listModules(const SwordOptions &options);
+ void setOptions(const SwordOptions &options);
+ QStringList moduleList();
+ QStringList availableLocales();
+
+
+ protected:
+ typedef enum { BIBLE, COMMENTARY, LEXDICT, GENERIC, NUM_MODULE_TYPES } ModuleType ;
+ enum KeyType { SWKEY, VERSEKEY, TREEKEY } ;
+ void setModuleFilter(sword::SWModule *module, const SwordOptions* options);
+
+ ModuleType getModuleType(sword::SWModule *module);
+ QString indexBible(sword::SWModule *module, const SwordOptions& options);
+ QString indexBook(sword::SWModule *module, const SwordOptions& options);
+ QString indexTree(sword::SWModule *module, const SwordOptions& options, bool fromTop, const int depth = -1);
+
+ void verseQuery(sword::SWModule *module, const QString &query, const SwordOptions &options,
+ ModuleType modtype, Template* tmplt, QString &navlinks);
+ void treeQuery(sword::SWModule *module, const QString &query, const SwordOptions &options,
+ ModuleType modtype, Template* tmplt, QString &navlinks);
+ void normalQuery(sword::SWModule *module, const QString &query, const SwordOptions &options,
+ ModuleType modtype, Template* tmplt, QString &navlinks);
+
+ static QString renderText(sword::SWModule *module);
+ static QString chapterList(const QString &modname, const sword::VerseKey *vk, const SwordOptions& options);
+
+ static QString chapterLink(const QString &modname, const sword::VerseKey *vk, const SwordOptions& options);
+ static QString chapterLink(const QString &modname, const sword::SWKey *sk, const SwordOptions& options);
+
+ static QString bookLink(const QString &modname, const sword::VerseKey *vk, const SwordOptions& options);
+ static QString bookLink(const QString &modname, const sword::SWKey *sk, const SwordOptions& options);
+
+ static QString bookChapter(const sword::SWKey *sk);
+ static QString bookChapter(const sword::VerseKey *vk);
+
+ static QString bookName(const sword::SWKey *sk);
+ static QString bookName(const sword::VerseKey *vk);
+
+ FilterBase *m_osisfilter;
+ FilterBase *m_gbffilter;
+ FilterBase *m_thmlfilter;
+ sword::SWFilter *m_plainfilter;
+ sword::SWFilter *m_rtffilter;
+
+ std::set<sword::SWModule *, std::less<sword::SWModule *> > m_modset;
+ std::vector<const char *> m_moduleTypes;
+ std::vector<QString> m_moduleTypeNames;
+
+ };
+}
+#endif // KS_RENDERER_H
+