/****************************************************************************** * * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * */ #include "eclipsehelp.h" #include "util.h" #include "config.h" #include "message.h" #include "doxygen.h" EclipseHelp::EclipseHelp() : m_depth(0), m_endtag(FALSE), m_openTags(0) { } EclipseHelp::~EclipseHelp() { } void EclipseHelp::indent() { int i; for (i=0; i\n"; m_endtag = FALSE; } } void EclipseHelp::openedTag() { if (m_endtag) { m_tocstream << ">\n"; m_endtag = FALSE; ++m_openTags; } } /*! * \brief Initialize the Eclipse generator * * This method opens the XML TOC file and writes headers of the files. * \sa finalize() */ void EclipseHelp::initialize() { // -- read path prefix from the configuration //m_pathprefix = Config_getString(ECLIPSE_PATHPREFIX); //if (m_pathprefix.isEmpty()) m_pathprefix = "html/"; // -- open the contents file QCString name = Config_getString(HTML_OUTPUT) + "/toc.xml"; m_tocstream.open(name.str(), std::ofstream::out | std::ofstream::binary); if (!m_tocstream.is_open()) { term("Could not open file %s for writing\n", qPrint(name)); } // -- write the opening tag QCString title = Config_getString(PROJECT_NAME); if (title.isEmpty()) { title = "Doxygen generated documentation"; } m_tocstream << "\n"; ++ m_depth; } /*! * \brief Finish generation of the Eclipse specific help files * * This method writes footers of the files and closes them. * \sa initialize() */ void EclipseHelp::finalize() { closedTag(); // -- close previous tag // -- write ending tag --m_depth; m_tocstream << "\n"; // -- close the content file m_tocstream.close(); QCString name = Config_getString(HTML_OUTPUT) + "/plugin.xml"; std::ofstream t(name.str(),std::ofstream::out | std::ofstream::binary); if (t.is_open()) { QCString docId = Config_getString(ECLIPSE_DOC_ID); t << "\n"; t << " \n"; t << " \n"; t << " \n"; t << "\n"; } } /*! * \brief Increase the level of content hierarchy */ void EclipseHelp::incContentsDepth() { openedTag(); ++m_depth; } /*! * \brief Decrease the level of content hierarchy * * It closes currently opened topic tag. */ void EclipseHelp::decContentsDepth() { // -- end of the opened topic closedTag(); --m_depth; if (m_openTags==m_depth) { --m_openTags; indent(); m_tocstream << "\n"; } } /*! * \brief Add an item to the content * * @param isDir Flag whether the argument \a file is a directory or a file entry * @param name Name of the item * @param ref URL of the item * @param file Name of a file which the item is defined in (without extension) * @param anchor Name of an anchor of the item. * @param separateIndex not used. * @param addToNavIndex not used. * @param def not used. */ void EclipseHelp::addContentsItem( bool /* isDir */, const QCString &name, const QCString & /* ref */, const QCString &file, const QCString &anchor, bool /* separateIndex */, bool /* addToNavIndex */, const Definition * /*def*/) { // -- write the topic tag closedTag(); if (!file.isEmpty()) { switch (file[0]) // check for special markers (user defined URLs) { case '^': // URL not supported by eclipse toc.xml break; case '!': indent(); m_tocstream << "