diff -r 932c358ece3e -r d8fccb2cd802 Orb/Doxygen/src/eclipsehelp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orb/Doxygen/src/eclipsehelp.cpp Fri Apr 23 20:47:58 2010 +0100 @@ -0,0 +1,200 @@ +/****************************************************************************** + * + * Copyright (C) 1997-2009 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_tocfile(0) +{ +} + +EclipseHelp::~EclipseHelp() +{ +} + +void EclipseHelp::indent() +{ + int i; + for (i=0; i" << endl; + m_endtag = FALSE; + } +} + +void EclipseHelp::openedTag() +{ + if (m_endtag) + { + m_tocstream << ">" << endl; + m_endtag = FALSE; + } +} + +/*! + * \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_tocfile = new QFile(name); + if (!m_tocfile->open(IO_WriteOnly)) + { + err("Could not open file %s for writing\n", name.data()); + exit(1); + } + + // -- initialize its text stream + m_tocstream.setDevice(m_tocfile); + m_tocstream.setEncoding(QTextStream::UnicodeUTF8); + + // -- write the opening tag + QCString title = Config_getString("PROJECT_NAME"); + if (title.isEmpty()) + { + title = "Doxygen generated documentation"; + } + m_tocstream << "" << endl; + ++ 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 << "" << endl; + + // -- close the content file + m_tocstream.unsetDevice(); + m_tocfile->close(); + delete m_tocfile; m_tocfile = 0; + + QCString name = Config_getString("HTML_OUTPUT") + "/plugin.xml"; + QFile pluginFile(name); + if (pluginFile.open(IO_WriteOnly)) + { + QString docId = Config_getString("ECLIPSE_DOC_ID"); + QTextStream t(&pluginFile); + t << "" << endl; + t << " " << endl; + t << " " << endl; + t << " " << endl; + t << "" << endl; + } +} + +/*! + * \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; + indent(); + m_tocstream << "" << endl; +} + +/*! + * \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. + */ +void EclipseHelp::addContentsItem( + bool isDir, + const char *name, + const char * /* ref */, + const char *file, + const char *anchor) +{ + // -- write the topic tag + closedTag(); + indent(); + m_tocstream << "