diff options
Diffstat (limited to 'parts/documentation/plugins/tdevtoc/doctdevtocplugin.cpp')
-rw-r--r-- | parts/documentation/plugins/tdevtoc/doctdevtocplugin.cpp | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/parts/documentation/plugins/tdevtoc/doctdevtocplugin.cpp b/parts/documentation/plugins/tdevtoc/doctdevtocplugin.cpp deleted file mode 100644 index aa603fbd..00000000 --- a/parts/documentation/plugins/tdevtoc/doctdevtocplugin.cpp +++ /dev/null @@ -1,277 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2004 by Alexander Dymo * - * cloudtemple@mksat.net * - * * - * 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., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ -#include "doctdevtocplugin.h" - -#include <unistd.h> - -#include <tqdom.h> -#include <tqfile.h> -#include <tqfileinfo.h> -#include <tqdialog.h> - -#include <kurl.h> -#include <tdeaboutdata.h> -#include <tdeconfig.h> -#include <tdelocale.h> -#include <tdelistview.h> -#include <kstandarddirs.h> - -#include <urlutil.h> -#include <tdevgenericfactory.h> -#include <tdevplugininfo.h> - -#include "../../../../config.h" - -class TOCDocumentationCatalogItem: public DocumentationCatalogItem -{ -public: - TOCDocumentationCatalogItem(const TQString &tocFile, DocumentationPlugin* plugin, - TDEListView *parent, const TQString &name) - :DocumentationCatalogItem(plugin, parent, name), m_tocFile(tocFile) - { - } - TOCDocumentationCatalogItem(const TQString &tocFile, DocumentationPlugin* plugin, - DocumentationItem *parent, const TQString &name) - :DocumentationCatalogItem(plugin, parent, name), m_tocFile(tocFile) - { - } - TQString tocFile() const { return m_tocFile; } - -private: - TQString m_tocFile; -}; - - -static const TDevPluginInfo data("doctdevtocplugin"); -typedef TDevGenericFactory<DocTDevTOCPlugin> DocTDevTOCPluginFactory; -K_EXPORT_COMPONENT_FACTORY( libdoctdevtocplugin, DocTDevTOCPluginFactory(data) ) - -DocTDevTOCPlugin::DocTDevTOCPlugin(TQObject* parent, const char* name, - const TQStringList /*args*/) - :DocumentationPlugin(DocTDevTOCPluginFactory::instance()->config(), parent, name) -{ - setCapabilities(Index); - autoSetup(); -} - -DocTDevTOCPlugin::~DocTDevTOCPlugin() -{ -} - -TQString DocTDevTOCPlugin::pluginName() const -{ - return i18n("TDevelopTOC Documentation Collection"); -} - -DocumentationCatalogItem* DocTDevTOCPlugin::createCatalog(TDEListView* contents, const TQString& title, const TQString& url) -{ - return new TOCDocumentationCatalogItem(url, this, contents, title); -} - -TQPair<KFile::Mode, TQString> DocTDevTOCPlugin::catalogLocatorProps() -{ - return TQPair<KFile::Mode, TQString>(KFile::File, "*.toc"); -} - -TQString DocTDevTOCPlugin::catalogTitle(const TQString& url) -{ - TQFileInfo fi(url); - if (!fi.exists()) - return TQString(); - - TQFile f(url); - if (!f.open(IO_ReadOnly)) - return TQString(); - - TQDomDocument doc; - if (!doc.setContent(&f) || (doc.doctype().name() != "tdeveloptoc")) - return TQString(); - f.close(); - - TQDomElement titleEl = doc.documentElement().namedItem("title").toElement(); - - return titleEl.firstChild().toText().data(); -} - - -TQStringList DocTDevTOCPlugin::fullTextSearchLocations() -{ - return TQStringList(); -} - -bool DocTDevTOCPlugin::needRefreshIndex(DocumentationCatalogItem* /*item*/) -{ - return false; -} - -void DocTDevTOCPlugin::autoSetupPlugin() -{ - TQStringList tocsDir = DocTDevTOCPluginFactory::instance()->dirs()->findAllResources("data", "tdevdocumentation/tocs/*.toc"); - - for (TQStringList::const_iterator it = tocsDir.begin(); it != tocsDir.end(); ++it) - { - config->setGroup("Locations"); - config->writePathEntry(catalogTitle(*it), *it); - } -} - -void DocTDevTOCPlugin::createIndex(IndexBox* index, DocumentationCatalogItem* item) -{ - TOCDocumentationCatalogItem *tocItem = dynamic_cast<TOCDocumentationCatalogItem *>(item); - if (!tocItem) - return; - - TQFileInfo fi(tocItem->tocFile()); - - TQFile f(tocItem->tocFile()); - if (!f.open(IO_ReadOnly)) - { - kdDebug(9002) << "Could not read" << tocItem->tocFile() << endl; - return; - } - TQDomDocument doc; - if (!doc.setContent(&f) || doc.doctype().name() != "tdeveloptoc") - { - kdDebug(9002) << "Not a valid tdeveloptoc file: " << tocItem->tocFile() << endl; - return; - } - f.close(); - - TQDomElement docEl = doc.documentElement(); - TQDomElement baseEl = docEl.namedItem("base").toElement(); - - TQString base; - if (!baseEl.isNull()) - base = baseEl.attribute("href", TQString()); - - TQDomElement indexEl = docEl.namedItem("index").toElement(); - TQDomElement childEl = indexEl.firstChild().toElement(); - while (!childEl.isNull()) - { - if (childEl.tagName() == "entry") - { - TQString name = childEl.attribute("name"); - TQString url = childEl.attribute("url"); - - IndexItemProto *ii = new IndexItemProto(this, item, index, name, item->text(0)); - ii->addURL(KURL(constructURL(base, url))); - } - childEl = childEl.nextSibling().toElement(); - } -} - -void DocTDevTOCPlugin::createTOC(DocumentationCatalogItem* item) -{ - TOCDocumentationCatalogItem *tocItem = dynamic_cast<TOCDocumentationCatalogItem *>(item); - if (!tocItem) - return; - - TQFileInfo fi(tocItem->tocFile()); - - TQFile f(tocItem->tocFile()); - if (!f.open(IO_ReadOnly)) - { - kdDebug(9002) << "Could not read" << tocItem->tocFile() << endl; - return; - } - TQDomDocument doc; - if (!doc.setContent(&f) || doc.doctype().name() != "tdeveloptoc") - { - kdDebug(9002) << "Not a valid tdeveloptoc file: " << tocItem->tocFile() << endl; - return; - } - f.close(); - - TQDomElement docEl = doc.documentElement(); - TQDomElement baseEl = docEl.namedItem("base").toElement(); - - TQString base; - if (!baseEl.isNull()) - base = baseEl.attribute("href", TQString()); - - TQDomElement childEl = docEl.lastChild().toElement(); - addTocSect(tocItem, childEl, base, 1); -} - -void DocTDevTOCPlugin::addTocSect(DocumentationItem *parent, TQDomElement childEl, const TQString &base, uint level) -{ - while (!childEl.isNull()) - { - if (childEl.tagName() == TQString("tocsect%1").arg(level)) - { - TQString name = childEl.attribute("name"); - TQString url = childEl.attribute("url"); - - DocumentationItem *item = new DocumentationItem(level == 1 ? DocumentationItem::Book : DocumentationItem::Document, parent, name); - item->setURL(KURL(constructURL(base, url))); - - TQDomElement grandchildEl = childEl.lastChild().toElement(); - addTocSect(item, grandchildEl, base, level+1); - } - childEl = childEl.previousSibling().toElement(); - } -} - -void DocTDevTOCPlugin::setCatalogURL(DocumentationCatalogItem* item) -{ - TOCDocumentationCatalogItem *tocItem = dynamic_cast<TOCDocumentationCatalogItem *>(item); - if (!tocItem) - return; - - TQFileInfo fi(tocItem->tocFile()); - - TQFile f(tocItem->tocFile()); - if (!f.open(IO_ReadOnly)) - { - kdDebug(9002) << "Could not read" << tocItem->tocFile() << endl; - return; - } - TQDomDocument doc; - if (!doc.setContent(&f) || doc.doctype().name() != "tdeveloptoc") - { - kdDebug(9002) << "Not a valid tdeveloptoc file: " << tocItem->tocFile() << endl; - return; - } - f.close(); - - TQDomElement docEl = doc.documentElement(); - TQDomElement baseEl = docEl.namedItem("base").toElement(); - - if (item->url().isEmpty()) - { - if (baseEl.isNull()) - item->setURL(KURL()); - else - item->setURL(KURL(constructURL(baseEl.attribute("href", TQString()), - baseEl.attribute("url", TQString())))); - } -} - -TQString DocTDevTOCPlugin::constructURL(const TQString &base, const TQString &url) -{ - if (base.isEmpty() && !url.isEmpty()) - return url; - if (!url.isEmpty()) - return base.endsWith("/") ? base + url : base + "/" + url; - else - return base; -} - -#include "doctdevtocplugin.moc" |