|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qdir.h>
|
|
Packit |
1c1d7e |
#include <qregexp.h>
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "htmlgen.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
#include "doxygen.h"
|
|
Packit |
1c1d7e |
#include "logos.h"
|
|
Packit |
1c1d7e |
#include "diagram.h"
|
|
Packit |
1c1d7e |
#include "version.h"
|
|
Packit |
1c1d7e |
#include "dot.h"
|
|
Packit |
1c1d7e |
#include "language.h"
|
|
Packit |
1c1d7e |
#include "htmlhelp.h"
|
|
Packit |
1c1d7e |
#include "docparser.h"
|
|
Packit |
1c1d7e |
#include "htmldocvisitor.h"
|
|
Packit |
1c1d7e |
#include "searchindex.h"
|
|
Packit |
1c1d7e |
#include "pagedef.h"
|
|
Packit |
1c1d7e |
#include "debug.h"
|
|
Packit |
1c1d7e |
#include "dirdef.h"
|
|
Packit |
1c1d7e |
#include "vhdldocgen.h"
|
|
Packit |
1c1d7e |
#include "layout.h"
|
|
Packit |
1c1d7e |
#include "image.h"
|
|
Packit |
1c1d7e |
#include "ftvhelp.h"
|
|
Packit |
1c1d7e |
#include "bufstr.h"
|
|
Packit |
1c1d7e |
#include "resourcemgr.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//#define DBG_HTML(x) x;
|
|
Packit |
1c1d7e |
#define DBG_HTML(x)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString g_header;
|
|
Packit |
1c1d7e |
static QCString g_footer;
|
|
Packit |
1c1d7e |
static QCString g_mathjax_code;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// note: this is only active if DISABLE_INDEX=YES, if DISABLE_INDEX is disabled, this
|
|
Packit |
1c1d7e |
// part will be rendered inside menu.js
|
|
Packit |
1c1d7e |
static void writeClientSearchBox(FTextStream &t,const char *relPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
|
|
Packit |
1c1d7e |
t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
|
|
Packit |
1c1d7e |
t << " alt=\"\"/>\n";
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< theTranslator->trSearch() << "\" accesskey=\"S\"\n";
|
|
Packit |
1c1d7e |
t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
|
|
Packit |
1c1d7e |
t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n";
|
|
Packit |
1c1d7e |
t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " "
|
|
Packit |
1c1d7e |
<< "\n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// note: this is only active if DISABLE_INDEX=YES. if DISABLE_INDEX is disabled, this
|
|
Packit |
1c1d7e |
// part will be rendered inside menu.js
|
|
Packit |
1c1d7e |
static void writeServerSearchBox(FTextStream &t,const char *relPath,bool highlightSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool externalSearch = Config_getBool(EXTERNAL_SEARCH);
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (externalSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "search" << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "search.php";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\" method=\"get\">\n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
if (!highlightSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< theTranslator->trSearch() << "\" size=\"20\" accesskey=\"S\" \n";
|
|
Packit |
1c1d7e |
t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
|
|
Packit |
1c1d7e |
t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n";
|
|
Packit |
1c1d7e |
t << " </form>\n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//------------------------------------------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/// Clear a text block \a s from \a begin to \a end markers
|
|
Packit |
1c1d7e |
QCString clearBlock(const char *s,const char *begin,const char *end)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (s==0 || begin==0 || end==0) return s;
|
|
Packit |
1c1d7e |
const char *p, *q;
|
|
Packit |
1c1d7e |
int beginLen = qstrlen(begin);
|
|
Packit |
1c1d7e |
int endLen = qstrlen(end);
|
|
Packit |
1c1d7e |
int resLen = 0;
|
|
Packit |
1c1d7e |
for (p=s; (q=strstr(p,begin))!=0; p=q+endLen)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
resLen+=(int)(q-p);
|
|
Packit |
1c1d7e |
p=q+beginLen;
|
|
Packit |
1c1d7e |
if ((q=strstr(p,end))==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
resLen+=beginLen;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
resLen+=qstrlen(p);
|
|
Packit |
1c1d7e |
// resLen is the length of the string without the marked block
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString result(resLen+1);
|
|
Packit |
1c1d7e |
char *r;
|
|
Packit |
1c1d7e |
for (r=result.rawData(), p=s; (q=strstr(p,begin))!=0; p=q+endLen)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
int l = (int)(q-p);
|
|
Packit |
1c1d7e |
memcpy(r,p,l);
|
|
Packit |
1c1d7e |
r+=l;
|
|
Packit |
1c1d7e |
p=q+beginLen;
|
|
Packit |
1c1d7e |
if ((q=strstr(p,end))==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
memcpy(r,begin,beginLen);
|
|
Packit |
1c1d7e |
r+=beginLen;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
qstrcpy(r,p);
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//----------------------------------------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString selectBlock(const QCString& s,const QCString &name,bool enable)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// TODO: this is an expensive function that is called a lot -> optimize it
|
|
Packit |
1c1d7e |
const QCString begin = "";
|
|
Packit |
1c1d7e |
const QCString end = "";
|
|
Packit |
1c1d7e |
const QCString nobegin = "";
|
|
Packit |
1c1d7e |
const QCString noend = "";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString result = s;
|
|
Packit |
1c1d7e |
if (enable)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = substitute(result, begin, "");
|
|
Packit |
1c1d7e |
result = substitute(result, end, "");
|
|
Packit |
1c1d7e |
result = clearBlock(result, nobegin, noend);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = substitute(result, nobegin, "");
|
|
Packit |
1c1d7e |
result = substitute(result, noend, "");
|
|
Packit |
1c1d7e |
result = clearBlock(result, begin, end);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString getSearchBox(bool serverSide, QCString relPath, bool highlightSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString result;
|
|
Packit |
1c1d7e |
FTextStream t(&result);
|
|
Packit |
1c1d7e |
if (serverSide)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeServerSearchBox(t, relPath, highlightSearch);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeClientSearchBox(t, relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return QCString(result);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString removeEmptyLines(const QCString &s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
BufStr out(s.length()+1);
|
|
Packit |
1c1d7e |
const char *p=s.data();
|
|
Packit |
1c1d7e |
if (p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
while ((c=*p++))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (c=='\n')
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *e = p;
|
|
Packit |
1c1d7e |
while (*e==' ' || *e=='\t') e++;
|
|
Packit |
1c1d7e |
if (*e=='\n')
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
p=e;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else out.addChar(c);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
out.addChar(c);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
out.addChar('\0');
|
|
Packit |
1c1d7e |
//printf("removeEmptyLines(%s)=%s\n",s.data(),out.data());
|
|
Packit |
1c1d7e |
return out.data();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString substituteHtmlKeywords(const QCString &s,
|
|
Packit |
1c1d7e |
const QCString &title,
|
|
Packit |
1c1d7e |
const QCString &relPath,
|
|
Packit |
1c1d7e |
const QCString &navPath=QCString())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// Build CSS/Javascript tags depending on treeview, search engine settings
|
|
Packit |
1c1d7e |
QCString cssFile;
|
|
Packit |
1c1d7e |
QStrList extraCssFile;
|
|
Packit |
1c1d7e |
QCString generatedBy;
|
|
Packit |
1c1d7e |
QCString treeViewCssJs;
|
|
Packit |
1c1d7e |
QCString searchCssJs;
|
|
Packit |
1c1d7e |
QCString searchBox;
|
|
Packit |
1c1d7e |
QCString mathJaxJs;
|
|
Packit |
1c1d7e |
QCString extraCssText;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString projectName = Config_getString(PROJECT_NAME);
|
|
Packit |
1c1d7e |
static bool timeStamp = Config_getBool(HTML_TIMESTAMP);
|
|
Packit |
1c1d7e |
static bool treeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
static bool searchEngine = Config_getBool(SEARCHENGINE);
|
|
Packit |
1c1d7e |
static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
|
|
Packit |
1c1d7e |
static bool mathJax = Config_getBool(USE_MATHJAX);
|
|
Packit |
1c1d7e |
static QCString mathJaxFormat = Config_getEnum(MATHJAX_FORMAT);
|
|
Packit |
1c1d7e |
static bool disableIndex = Config_getBool(DISABLE_INDEX);
|
|
Packit |
1c1d7e |
static bool hasProjectName = !projectName.isEmpty();
|
|
Packit |
1c1d7e |
static bool hasProjectNumber = !Config_getString(PROJECT_NUMBER).isEmpty();
|
|
Packit |
1c1d7e |
static bool hasProjectBrief = !Config_getString(PROJECT_BRIEF).isEmpty();
|
|
Packit |
1c1d7e |
static bool hasProjectLogo = !Config_getString(PROJECT_LOGO).isEmpty();
|
|
Packit |
1c1d7e |
static bool titleArea = (hasProjectName || hasProjectBrief || hasProjectLogo || (disableIndex && searchEngine));
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
cssFile = Config_getString(HTML_STYLESHEET);
|
|
Packit |
1c1d7e |
if (cssFile.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
cssFile = "doxygen.css";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFileInfo cssfi(cssFile);
|
|
Packit |
1c1d7e |
if (cssfi.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
cssFile = cssfi.fileName().utf8();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
cssFile = "doxygen.css";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
extraCssText = "";
|
|
Packit |
1c1d7e |
extraCssFile = Config_getList(HTML_EXTRA_STYLESHEET);
|
|
Packit |
1c1d7e |
for (uint i=0; i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString fileName(extraCssFile.at(i));
|
|
Packit |
1c1d7e |
if (!fileName.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFileInfo fi(fileName);
|
|
Packit |
1c1d7e |
if (fi.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
extraCssText += "<link href=\"$relpath^"+stripPath(fileName)+"\" rel=\"stylesheet\" type=\"text/css\"/>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (timeStamp)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), convertToHtml(Config_getString(PROJECT_NAME)));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatedBy = theTranslator->trGeneratedBy();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (treeView)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
treeViewCssJs = "<link href=\"$relpath^navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"
|
|
Packit |
1c1d7e |
"<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n"
|
|
Packit |
1c1d7e |
"<script type=\"text/javascript\" src=\"$relpath^navtreedata.js\"></script>\n"
|
|
Packit |
1c1d7e |
"<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n"
|
|
Packit |
1c1d7e |
"<script type=\"text/javascript\">\n"
|
|
Packit |
1c1d7e |
"/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"
|
|
Packit |
1c1d7e |
" $(document).ready(initResizable);\n"
|
|
Packit |
1c1d7e |
"/* @license-end */"
|
|
Packit |
1c1d7e |
"</script>";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (searchEngine)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCssJs = "<link href=\"$relpath^search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n";
|
|
Packit |
1c1d7e |
if (!serverBasedSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCssJs += "<script type=\"text/javascript\" src=\"$relpath^search/searchdata.js\"></script>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
searchCssJs += "<script type=\"text/javascript\" src=\"$relpath^search/search.js\"></script>\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!serverBasedSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCssJs += "<script type=\"text/javascript\">\n"
|
|
Packit |
1c1d7e |
"/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"
|
|
Packit |
1c1d7e |
" $(document).ready(function() { init_search(); });\n"
|
|
Packit |
1c1d7e |
"/* @license-end */\n"
|
|
Packit |
1c1d7e |
"</script>";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCssJs += "<script type=\"text/javascript\">\n"
|
|
Packit |
1c1d7e |
"/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"
|
|
Packit |
1c1d7e |
" $(document).ready(function() {\n"
|
|
Packit |
1c1d7e |
" if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
|
|
Packit |
1c1d7e |
" });\n"
|
|
Packit |
1c1d7e |
" /* @license-end */\n"
|
|
Packit |
1c1d7e |
"</script>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// OPENSEARCH_PROVIDER {
|
|
Packit |
1c1d7e |
searchCssJs += "
|
|
Packit |
1c1d7e |
"search_opensearch.php?v=opensearch.xml\" "
|
|
Packit |
1c1d7e |
"type=\"application/opensearchdescription+xml\" title=\"" +
|
|
Packit |
1c1d7e |
(hasProjectName ? projectName : QCString("Doxygen")) +
|
|
Packit |
1c1d7e |
"\"/>";
|
|
Packit |
1c1d7e |
// OPENSEARCH_PROVIDER }
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
searchBox = getSearchBox(serverBasedSearch, relPath, FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (mathJax)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString path = Config_getString(MATHJAX_RELPATH);
|
|
Packit |
1c1d7e |
if (path.isEmpty() || path.left(2)=="..") // relative path
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
path.prepend(relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
mathJaxJs = "<script type=\"text/x-mathjax-config\">\n"
|
|
Packit |
1c1d7e |
" MathJax.Hub.Config({\n"
|
|
Packit |
1c1d7e |
" extensions: [\"tex2jax.js\"";
|
|
Packit |
1c1d7e |
QStrList &mathJaxExtensions = Config_getList(MATHJAX_EXTENSIONS);
|
|
Packit |
1c1d7e |
const char *s = mathJaxExtensions.first();
|
|
Packit |
1c1d7e |
while (s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mathJaxJs+= ", \""+QCString(s)+".js\"";
|
|
Packit |
1c1d7e |
s = mathJaxExtensions.next();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (mathJaxFormat.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mathJaxFormat = "HTML-CSS";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
mathJaxJs += "],\n"
|
|
Packit |
1c1d7e |
" jax: [\"input/TeX\",\"output/"+mathJaxFormat+"\"],\n"
|
|
Packit |
1c1d7e |
"});\n";
|
|
Packit |
1c1d7e |
if (!g_mathjax_code.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mathJaxJs += g_mathjax_code;
|
|
Packit |
1c1d7e |
mathJaxJs += "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
mathJaxJs += "</script>";
|
|
Packit |
1c1d7e |
mathJaxJs += "<script type=\"text/javascript\" async src=\"" + path + "MathJax.js\"></script>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// first substitute generic keywords
|
|
Packit |
1c1d7e |
QCString result = substituteKeywords(s,title,
|
|
Packit |
1c1d7e |
convertToHtml(Config_getString(PROJECT_NAME)),
|
|
Packit |
1c1d7e |
convertToHtml(Config_getString(PROJECT_NUMBER)),
|
|
Packit |
1c1d7e |
convertToHtml(Config_getString(PROJECT_BRIEF)));
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// additional HTML only keywords
|
|
Packit |
1c1d7e |
result = substitute(result,"$navpath",navPath);
|
|
Packit |
1c1d7e |
result = substitute(result,"$stylesheet",cssFile);
|
|
Packit |
1c1d7e |
result = substitute(result,"$treeview",treeViewCssJs);
|
|
Packit |
1c1d7e |
result = substitute(result,"$searchbox",searchBox);
|
|
Packit |
1c1d7e |
result = substitute(result,"$search",searchCssJs);
|
|
Packit |
1c1d7e |
result = substitute(result,"$mathjax",mathJaxJs);
|
|
Packit |
1c1d7e |
result = substitute(result,"$generatedby",generatedBy);
|
|
Packit |
1c1d7e |
result = substitute(result,"$extrastylesheet",extraCssText);
|
|
Packit |
1c1d7e |
result = substitute(result,"$relpath$",relPath); //<-- obsolete: for backwards compatibility only
|
|
Packit |
1c1d7e |
result = substitute(result,"$relpath^",relPath); //<-- must be last
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// additional HTML only conditional blocks
|
|
Packit |
1c1d7e |
result = selectBlock(result,"DISABLE_INDEX",disableIndex);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"GENERATE_TREEVIEW",treeView);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"SEARCHENGINE",searchEngine);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"TITLEAREA",titleArea);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"PROJECT_NAME",hasProjectName);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"PROJECT_NUMBER",hasProjectNumber);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"PROJECT_BRIEF",hasProjectBrief);
|
|
Packit |
1c1d7e |
result = selectBlock(result,"PROJECT_LOGO",hasProjectLogo);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
result = removeEmptyLines(result);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
HtmlCodeGenerator::HtmlCodeGenerator()
|
|
Packit |
1c1d7e |
: m_streamSet(FALSE), m_col(0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
HtmlCodeGenerator::HtmlCodeGenerator(FTextStream &t,const QCString &relPath)
|
|
Packit |
1c1d7e |
: m_col(0), m_relPath(relPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
setTextStream(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::setTextStream(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_streamSet = t.device()!=0;
|
|
Packit |
1c1d7e |
m_t.setDevice(t.device());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::setRelativePath(const QCString &path)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_relPath = path;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::codify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static int tabSize = Config_getInt(TAB_SIZE);
|
|
Packit |
1c1d7e |
if (str && m_streamSet)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *p=str;
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
int spacesToNextTabStop;
|
|
Packit |
1c1d7e |
while (*p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
c=*p++;
|
|
Packit |
1c1d7e |
switch(c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case '\t': spacesToNextTabStop =
|
|
Packit |
1c1d7e |
tabSize - (m_col%tabSize);
|
|
Packit |
1c1d7e |
m_t << Doxygen::spaces.left(spacesToNextTabStop);
|
|
Packit |
1c1d7e |
m_col+=spacesToNextTabStop;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\n': m_t << "\n"; m_col=0;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\r': break;
|
|
Packit |
1c1d7e |
case '<': m_t << "<"; m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '>': m_t << ">"; m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '&': m_t << "&"; m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\'': m_t << "'"; m_col++; // ' is not valid XHTML
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '"': m_t << """; m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\\':
|
|
Packit |
1c1d7e |
if (*p=='<')
|
|
Packit |
1c1d7e |
{ m_t << "<"; p++; }
|
|
Packit |
1c1d7e |
else if (*p=='>')
|
|
Packit |
1c1d7e |
{ m_t << ">"; p++; }
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_t << "\\";
|
|
Packit |
1c1d7e |
m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default: p=writeUtf8Char(m_t,p-1);
|
|
Packit |
1c1d7e |
m_col++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::docify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (str && m_streamSet)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *p=str;
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
while (*p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
c=*p++;
|
|
Packit |
1c1d7e |
switch(c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case '<': m_t << "<"; break;
|
|
Packit |
1c1d7e |
case '>': m_t << ">"; break;
|
|
Packit |
1c1d7e |
case '&': m_t << "&"; break;
|
|
Packit |
1c1d7e |
case '"': m_t << """; break;
|
|
Packit |
1c1d7e |
case '\\':
|
|
Packit |
1c1d7e |
if (*p=='<')
|
|
Packit |
1c1d7e |
{ m_t << "<"; p++; }
|
|
Packit |
1c1d7e |
else if (*p=='>')
|
|
Packit |
1c1d7e |
{ m_t << ">"; p++; }
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_t << "\\";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default: m_t << c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::writeLineNumber(const char *ref,const char *filename,
|
|
Packit |
1c1d7e |
const char *anchor,int l)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!m_streamSet) return;
|
|
Packit |
1c1d7e |
const int maxLineNrStr = 10;
|
|
Packit |
1c1d7e |
char lineNumber[maxLineNrStr];
|
|
Packit |
1c1d7e |
char lineAnchor[maxLineNrStr];
|
|
Packit |
1c1d7e |
qsnprintf(lineNumber,maxLineNrStr,"%5d",l);
|
|
Packit |
1c1d7e |
qsnprintf(lineAnchor,maxLineNrStr,"l%05d",l);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
if (filename)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
_writeCodeLink("line",ref,filename,anchor,lineNumber,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
codify(lineNumber);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
m_t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::writeCodeLink(const char *ref,const char *f,
|
|
Packit |
1c1d7e |
const char *anchor, const char *name,
|
|
Packit |
1c1d7e |
const char *tooltip)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!m_streamSet) return;
|
|
Packit |
1c1d7e |
//printf("writeCodeLink(ref=%s,f=%s,anchor=%s,name=%s,tooltip=%s)\n",ref,f,anchor,name,tooltip);
|
|
Packit |
1c1d7e |
_writeCodeLink("code",ref,f,anchor,name,tooltip);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::_writeCodeLink(const char *className,
|
|
Packit |
1c1d7e |
const char *ref,const char *f,
|
|
Packit |
1c1d7e |
const char *anchor, const char *name,
|
|
Packit |
1c1d7e |
const char *tooltip)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
m_t << externalLinkTarget() << externalRef(m_relPath,ref,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "href=\"";
|
|
Packit |
1c1d7e |
m_t << externalRef(m_relPath,ref,TRUE);
|
|
Packit |
1c1d7e |
if (f) m_t << f << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (anchor) m_t << "#" << anchor;
|
|
Packit |
1c1d7e |
m_t << "\"";
|
|
Packit |
1c1d7e |
if (tooltip) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
|
|
Packit |
1c1d7e |
m_t << ">";
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
m_col+=qstrlen(name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::writeTooltip(const char *id, const DocLinkInfo &docInfo,
|
|
Packit |
1c1d7e |
const char *decl, const char *desc,
|
|
Packit |
1c1d7e |
const SourceLinkInfo &defInfo,
|
|
Packit |
1c1d7e |
const SourceLinkInfo &declInfo)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
if (!docInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
m_t << externalRef(m_relPath,docInfo.ref,TRUE);
|
|
Packit |
1c1d7e |
m_t << docInfo.url << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (!docInfo.anchor.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "#" << docInfo.anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
docify(docInfo.name);
|
|
Packit |
1c1d7e |
if (!docInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
if (decl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
docify(decl);
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (desc)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
docify(desc); // desc is already HTML escaped; but there are still < and > signs
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!defInfo.file.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "Definition: ";
|
|
Packit |
1c1d7e |
if (!defInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
m_t << externalRef(m_relPath,defInfo.ref,TRUE);
|
|
Packit |
1c1d7e |
m_t << defInfo.url << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (!defInfo.anchor.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "#" << defInfo.anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << defInfo.file << ":" << defInfo.line;
|
|
Packit |
1c1d7e |
if (!defInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!declInfo.file.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "Declaration: ";
|
|
Packit |
1c1d7e |
if (!declInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
m_t << externalRef(m_relPath,declInfo.ref,TRUE);
|
|
Packit |
1c1d7e |
m_t << declInfo.url << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (!declInfo.anchor.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "#" << declInfo.anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << declInfo.file << ":" << declInfo.line;
|
|
Packit |
1c1d7e |
if (!declInfo.url.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::startCodeLine(bool hasLineNumbers)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_streamSet)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!hasLineNumbers) m_t << "";
|
|
Packit |
1c1d7e |
m_col=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::endCodeLine()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_streamSet) m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::startFontClass(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_streamSet) m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::endFontClass()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_streamSet) m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlCodeGenerator::writeCodeAnchor(const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_streamSet) m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
HtmlGenerator::HtmlGenerator() : OutputGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir=Config_getString(HTML_OUTPUT);
|
|
Packit |
1c1d7e |
m_emptySection=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
HtmlGenerator::~HtmlGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("HtmlGenerator::~HtmlGenerator()\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::init()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString dname=Config_getString(HTML_OUTPUT);
|
|
Packit |
1c1d7e |
QDir d(dname);
|
|
Packit |
1c1d7e |
if (!d.exists() && !d.mkdir(dname))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not create output directory %s\n",dname.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//writeLogo(dname);
|
|
Packit |
1c1d7e |
if (!Config_getString(HTML_HEADER).isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g_header=fileToString(Config_getString(HTML_HEADER));
|
|
Packit |
1c1d7e |
//printf("g_header='%s'\n",g_header.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g_header = ResourceMgr::instance().getAsString("header.html");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!Config_getString(HTML_FOOTER).isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g_footer=fileToString(Config_getString(HTML_FOOTER));
|
|
Packit |
1c1d7e |
//printf("g_footer='%s'\n",g_footer.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g_footer = ResourceMgr::instance().getAsString("footer.html");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (Config_getBool(USE_MATHJAX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!Config_getString(MATHJAX_CODEFILE).isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g_mathjax_code=fileToString(Config_getString(MATHJAX_CODEFILE));
|
|
Packit |
1c1d7e |
//printf("g_mathjax_code='%s'\n",g_mathjax_code.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
createSubDirs(d);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ResourceMgr &mgr = ResourceMgr::instance();
|
|
Packit |
1c1d7e |
if (Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResourceAs("tabs.css",dname,"tabs.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // stylesheet for the 'old' static tabs
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResourceAs("fixed_tabs.css",dname,"tabs.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
mgr.copyResource("jquery.js",dname);
|
|
Packit |
1c1d7e |
if (Config_getBool(INTERACTIVE_SVG))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResource("svgpan.js",dname);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!Config_getBool(DISABLE_INDEX) && Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResource("menu.js",dname);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile f(dname+"/dynsections.js");
|
|
Packit |
1c1d7e |
if (f.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << mgr.getAsString("dynsections.js");
|
|
Packit |
1c1d7e |
if (Config_getBool(SOURCE_BROWSER) && Config_getBool(SOURCE_TOOLTIPS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl <<
|
|
Packit |
1c1d7e |
"$(document).ready(function() {\n"
|
|
Packit |
1c1d7e |
" $('.code,.codeRef').each(function() {\n"
|
|
Packit |
1c1d7e |
" $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());\n"
|
|
Packit |
1c1d7e |
" $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });\n"
|
|
Packit |
1c1d7e |
" });\n"
|
|
Packit |
1c1d7e |
"});\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/// Additional initialization after indices have been created
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeTabData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("tabs.css");
|
|
Packit |
1c1d7e |
QCString dname=Config_getString(HTML_OUTPUT);
|
|
Packit |
1c1d7e |
ResourceMgr &mgr = ResourceMgr::instance();
|
|
Packit |
1c1d7e |
//writeColoredImgData(dname,colored_tab_data);
|
|
Packit |
1c1d7e |
mgr.copyResource("tab_a.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("tab_b.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("tab_h.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("tab_s.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("nav_h.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("nav_f.lum",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("bc_s.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("doxygen.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("closed.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("open.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("bdwn.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("sync_on.luma",dname);
|
|
Packit |
1c1d7e |
mgr.copyResource("sync_off.luma",dname);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// unsigned char shadow[6] = { 5, 5, 5, 5, 5, 5 };
|
|
Packit |
1c1d7e |
// unsigned char shadow_alpha[6] = { 80, 60, 40, 20, 10, 0 };
|
|
Packit |
1c1d7e |
// ColoredImage img(1,6,shadow,shadow_alpha,0,0,100);
|
|
Packit |
1c1d7e |
// img.save(dname+"/nav_g.png");
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
mgr.copyResource("nav_g.png",dname);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSearchData(const char *dir)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
|
|
Packit |
1c1d7e |
//writeImgData(dir,serverBasedSearch ? search_server_data : search_client_data);
|
|
Packit |
1c1d7e |
ResourceMgr &mgr = ResourceMgr::instance();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
mgr.copyResource("search_l.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/search_l.png");
|
|
Packit |
1c1d7e |
mgr.copyResource("search_m.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/search_m.png");
|
|
Packit |
1c1d7e |
mgr.copyResource("search_r.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/search_r.png");
|
|
Packit |
1c1d7e |
if (serverBasedSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResource("mag.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/mag.png");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mgr.copyResource("close.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/close.png");
|
|
Packit |
1c1d7e |
mgr.copyResource("mag_sel.png",dir);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addImageFile("search/mag_sel.png");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString searchDirName = Config_getString(HTML_OUTPUT)+"/search";
|
|
Packit |
1c1d7e |
QFile f(searchDirName+"/search.css");
|
|
Packit |
1c1d7e |
if (f.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
QCString searchCss;
|
|
Packit |
1c1d7e |
if (Config_getBool(DISABLE_INDEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCss = mgr.getAsString("search_nomenu.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (!Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCss = mgr.getAsString("search_fixedtabs.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchCss = mgr.getAsString("search.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
searchCss = substitute(replaceColorMarkers(searchCss),"$doxygenversion",versionString);
|
|
Packit |
1c1d7e |
t << searchCss;
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("search/search.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeStyleSheetFile(QFile &file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeHeaderFile(QFile &file, const char * /*cssname*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << ResourceMgr::instance().getAsString("header.html");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeFooterFile(QFile &file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << ResourceMgr::instance().getAsString("footer.html");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startFile(const char *name,const char *,
|
|
Packit |
1c1d7e |
const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("HtmlGenerator::startFile(%s)\n",name);
|
|
Packit |
1c1d7e |
QCString fileName=name;
|
|
Packit |
1c1d7e |
lastTitle=title;
|
|
Packit |
1c1d7e |
relPath = relativePathToRoot(fileName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (fileName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
fileName+=Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
startPlainFile(fileName);
|
|
Packit |
1c1d7e |
m_codeGen.setTextStream(t);
|
|
Packit |
1c1d7e |
m_codeGen.setRelativePath(relPath);
|
|
Packit |
1c1d7e |
Doxygen::indexList->addIndexFile(fileName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
lastFile = fileName;
|
|
Packit |
1c1d7e |
t << substituteHtmlKeywords(g_header,convertToHtml(filterTitle(title)),relPath);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< versionString << " -->" << endl;
|
|
Packit |
1c1d7e |
//static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
static bool searchEngine = Config_getBool(SEARCHENGINE);
|
|
Packit |
1c1d7e |
if (searchEngine /*&& !generateTreeView*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\">\n";
|
|
Packit |
1c1d7e |
t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n";
|
|
Packit |
1c1d7e |
t << "var searchBox = new SearchBox(\"searchBox\", \""
|
|
Packit |
1c1d7e |
<< relPath<< "search\",false,'" << theTranslator->trSearch() << "');\n";
|
|
Packit |
1c1d7e |
t << "/* @license-end */\n";
|
|
Packit |
1c1d7e |
t << "</script>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//generateDynamicSections(t,relPath);
|
|
Packit |
1c1d7e |
m_sectionCount=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSearchInfo(FTextStream &t,const QCString &relPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool searchEngine = Config_getBool(SEARCHENGINE);
|
|
Packit |
1c1d7e |
static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
|
|
Packit |
1c1d7e |
if (searchEngine && !serverBasedSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
(void)relPath;
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
|
|
Packit |
1c1d7e |
t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
|
|
Packit |
1c1d7e |
t << " onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << " name=\"MSearchResults\" id=\"MSearchResults\">\n";
|
|
Packit |
1c1d7e |
t << "</iframe>\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSearchInfo()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeSearchInfo(t,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString HtmlGenerator::writeLogoAsString(const char *path)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool timeStamp = Config_getBool(HTML_TIMESTAMP);
|
|
Packit |
1c1d7e |
QCString result;
|
|
Packit |
1c1d7e |
if (timeStamp)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result += theTranslator->trGeneratedAt(
|
|
Packit |
1c1d7e |
dateToString(TRUE),
|
|
Packit |
1c1d7e |
Config_getString(PROJECT_NAME)
|
|
Packit |
1c1d7e |
);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result += theTranslator->trGeneratedBy();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
result += " \n\n"
|
|
Packit |
1c1d7e |
"
|
|
Packit |
1c1d7e |
result += path;
|
|
Packit |
1c1d7e |
result += "doxygen.png\" alt=\"doxygen\"/> ";
|
|
Packit |
1c1d7e |
result += versionString;
|
|
Packit |
1c1d7e |
result += " ";
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeLogo()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << writeLogoAsString(relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writePageFooter(FTextStream &t,const QCString &lastTitle,
|
|
Packit |
1c1d7e |
const QCString &relPath,const QCString &navPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << substituteHtmlKeywords(g_footer,convertToHtml(lastTitle),relPath,navPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeFooter(const char *navPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writePageFooter(t,lastTitle,relPath,navPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endFile()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startProjectNumber()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endProjectNumber()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeStyleInfo(int part)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("writeStyleInfo(%d)\n",part);
|
|
Packit |
1c1d7e |
if (part==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getString(HTML_STYLESHEET).isEmpty()) // write default style sheet
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("write doxygen.css\n");
|
|
Packit |
1c1d7e |
startPlainFile("doxygen.css");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// alternative, cooler looking titles
|
|
Packit |
1c1d7e |
//t << "H1 { text-align: center; border-width: thin none thin none;" << endl;
|
|
Packit |
1c1d7e |
//t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString));
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("doxygen.css");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // write user defined style sheet
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString cssname=Config_getString(HTML_STYLESHEET);
|
|
Packit |
1c1d7e |
QFileInfo cssfi(cssname);
|
|
Packit |
1c1d7e |
if (!cssfi.exists() || !cssfi.isFile() || !cssfi.isReadable())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("style sheet %s does not exist or is not readable!", Config_getString(HTML_STYLESHEET).data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// convert style sheet to string
|
|
Packit |
1c1d7e |
QCString fileStr = fileToString(cssname);
|
|
Packit |
1c1d7e |
// write the string into the output dir
|
|
Packit |
1c1d7e |
startPlainFile(cssfi.fileName().utf8());
|
|
Packit |
1c1d7e |
t << fileStr;
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile(cssfi.fileName().utf8());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
static QStrList extraCssFile = Config_getList(HTML_EXTRA_STYLESHEET);
|
|
Packit |
1c1d7e |
for (uint i=0; i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString fileName(extraCssFile.at(i));
|
|
Packit |
1c1d7e |
if (!fileName.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFileInfo fi(fileName);
|
|
Packit |
1c1d7e |
if (fi.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile(fi.fileName().utf8());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("jquery.js");
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("dynsections.js");
|
|
Packit |
1c1d7e |
if (Config_getBool(INTERACTIVE_SVG))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::indexList->addStyleSheetFile("svgpan.js");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDoxyAnchor(const char *,const char *,
|
|
Packit |
1c1d7e |
const char *anchor, const char *,
|
|
Packit |
1c1d7e |
const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDoxyAnchor(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void HtmlGenerator::newParagraph()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << endl << "" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startParagraph(const char *classDef)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (classDef)
|
|
Packit |
1c1d7e |
t << endl << "";
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << endl << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endParagraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeString(const char *text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << text;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndexListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndexListItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndexItem(const char *ref,const char *f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("HtmlGenerator::startIndexItem(%s,%s)\n",ref,f);
|
|
Packit |
1c1d7e |
if (ref || f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << externalLinkTarget() << externalRef(relPath,ref,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "href=\"";
|
|
Packit |
1c1d7e |
t << externalRef(relPath,ref,TRUE);
|
|
Packit |
1c1d7e |
if (f) t << f << Doxygen::htmlFileExtension << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndexItem(const char *ref,const char *f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("HtmlGenerator::endIndexItem(%s,%s,%s)\n",ref,f,name);
|
|
Packit |
1c1d7e |
if (ref || f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeStartAnnoItem(const char *,const char *f,
|
|
Packit |
1c1d7e |
const char *path,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
if (path) docify(path);
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
|
|
Packit |
1c1d7e |
const char *anchor, const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << externalLinkTarget() << externalRef(relPath,ref,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "href=\"";
|
|
Packit |
1c1d7e |
t << externalRef(relPath,ref,TRUE);
|
|
Packit |
1c1d7e |
if (f) t << f << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (anchor) t << "#" << anchor;
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startTextLink(const char *f,const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (f) t << relPath << f << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
if (anchor) t << "#" << anchor;
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endTextLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startHtmlLink(const char *url)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (generateTreeView) t << "target=\"top\" ";
|
|
Packit |
1c1d7e |
t << "href=\"";
|
|
Packit |
1c1d7e |
if (url) t << url;
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endHtmlLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startGroupHeader(int extraIndentLevel)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (extraIndentLevel==2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (extraIndentLevel==1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // extraIndentLevel==0
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endGroupHeader(int extraIndentLevel)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (extraIndentLevel==2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (extraIndentLevel==1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startSection(const char *lab,const char *,SectionInfo::SectionType type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case SectionInfo::Page: t << "\n\n"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Section: t << "\n\n"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsection: t << "\n\n"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsubsection: t << "\n\n"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Paragraph: t << "\n\n"; break;
|
|
Packit |
1c1d7e |
default: ASSERT(0); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endSection(const char *,SectionInfo::SectionType type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case SectionInfo::Page: t << ""; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Section: t << ""; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsection: t << ""; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsubsection: t << ""; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Paragraph: t << ""; break;
|
|
Packit |
1c1d7e |
default: ASSERT(0); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::docify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docify(str,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::docify(const char *str,bool inHtmlComment)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *p=str;
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
while (*p)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
c=*p++;
|
|
Packit |
1c1d7e |
switch(c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case '<': t << "<"; break;
|
|
Packit |
1c1d7e |
case '>': t << ">"; break;
|
|
Packit |
1c1d7e |
case '&': t << "&"; break;
|
|
Packit |
1c1d7e |
case '"': t << """; break;
|
|
Packit |
1c1d7e |
case '-': if (inHtmlComment) t << "-"; else t << "-"; break;
|
|
Packit |
1c1d7e |
case '\\':
|
|
Packit |
1c1d7e |
if (*p=='<')
|
|
Packit |
1c1d7e |
{ t << "<"; p++; }
|
|
Packit |
1c1d7e |
else if (*p=='>')
|
|
Packit |
1c1d7e |
{ t << ">"; p++; }
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << "\\";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default: t << c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeChar(char c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char cs[2];
|
|
Packit |
1c1d7e |
cs[0]=c;
|
|
Packit |
1c1d7e |
cs[1]=0;
|
|
Packit |
1c1d7e |
docify(cs);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--- helper function for dynamic sections -------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void startSectionHeader(FTextStream &t,
|
|
Packit |
1c1d7e |
const QCString &relPath,int sectionCount)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
static bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
|
|
Packit |
1c1d7e |
if (dynamicSections)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
"onclick=\"return toggleVisibility(this)\" "
|
|
Packit |
1c1d7e |
"class=\"dynheader closed\" "
|
|
Packit |
1c1d7e |
"style=\"cursor:pointer;\">" << endl;
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< relPath << "closed.png\" alt=\"+\"/> ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void endSectionHeader(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void startSectionSummary(FTextStream &t,int sectionCount)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
static bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
|
|
Packit |
1c1d7e |
if (dynamicSections)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
"class=\"dynsummary\" "
|
|
Packit |
1c1d7e |
"style=\"display:block;\">" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void endSectionSummary(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
static bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
|
|
Packit |
1c1d7e |
if (dynamicSections)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void startSectionContent(FTextStream &t,int sectionCount)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
static bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
|
|
Packit |
1c1d7e |
if (dynamicSections)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
"class=\"dyncontent\" "
|
|
Packit |
1c1d7e |
"style=\"display:none;\">" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void endSectionContent(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "";
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//----------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startClassDiagram()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endClassDiagram(const ClassDiagram &d,
|
|
Packit |
1c1d7e |
const char *fileName,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << relPath << fileName << ".png\" usemap=\"#" << convertToId(name);
|
|
Packit |
1c1d7e |
t << "_map\" alt=\"\"/>" << endl;
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << "_map\" name=\"" << convertToId(name);
|
|
Packit |
1c1d7e |
t << "_map\">" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
d.writeImage(t,dir,relPath,fileName);
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// anonymous type:
|
|
Packit |
1c1d7e |
// 0 = single column right aligned
|
|
Packit |
1c1d7e |
// 1 = double column left aligned
|
|
Packit |
1c1d7e |
// 2 = single column left aligned
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberItem(const char *anchor,int annoType,const char *inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
if (m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
m_emptySection=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " inherit " << inheritId;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
switch(annoType)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case 0: t << ""; break;
|
|
Packit |
1c1d7e |
case 1: t << ""; break;
|
|
Packit |
1c1d7e |
case 2: t << ""; break;
|
|
Packit |
1c1d7e |
default: t << ""; break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberTemplateParams()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberTemplateParams(const char *anchor,const char *inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " inherit " << inheritId;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::insertMemberAlign(bool templ)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
QCString className = templ ? "memTemplItemRight" : "memItemRight";
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
if (m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
m_emptySection=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " inherit " << inheritId;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\"> ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberSections()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
m_emptySection=TRUE; // we postpone writing until we actually
|
|
Packit |
1c1d7e |
// write a row to prevent empty tables, which
|
|
Packit |
1c1d7e |
// are not valid XHTML!
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberSections()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
if (!m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberHeader(const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
if (!m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
m_emptySection=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
m_emptySection=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
if (anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberSubtitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberSubtitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndexList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndexList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// inserted 'class = ...', 02 jan 2002, jh
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndexValue(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// inserted 'class = ...', 02 jan 2002, jh
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndexValue(const char *,bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDocList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDocList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDoc( const char *clName, const char *memName,
|
|
Packit |
1c1d7e |
const char *anchor, const char *title,
|
|
Packit |
1c1d7e |
int memCount, int memTotal, bool showInline)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "\n"
|
|
Packit |
1c1d7e |
<< "◆ ";
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
if (memTotal>1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " [" << memCount << "/" << memTotal <<"]";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << ""
|
|
Packit |
1c1d7e |
<< endl;
|
|
Packit |
1c1d7e |
t << "\n" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDocPrefixItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDocPrefixItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDocName(bool /*align*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDocName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startParameterList(bool openBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
if (openBracket) t << "(";
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startParameterType(bool first,const char *key)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (first)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
if (key) t << key;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endParameterType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startParameterName(bool /*oneArgOnly*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
if (last)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (emptyList)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (closeBracket) t << ")";
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
if (closeBracket) t << ")";
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endParameterList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::exceptionEntry(const char* prefix,bool closeBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
// colspan 2 so it gets both parameter type and parameter name columns
|
|
Packit |
1c1d7e |
if (prefix)
|
|
Packit |
1c1d7e |
t << prefix << "(";
|
|
Packit |
1c1d7e |
else if (closeBracket)
|
|
Packit |
1c1d7e |
t << ")";
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDoc(bool hasArgs)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
if (!hasArgs)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
// t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDotGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDotGraph(const DotClassGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool generateLegend = Config_getBool(GENERATE_LEGEND);
|
|
Packit |
1c1d7e |
bool umlLook = Config_getBool(UML_LOOK);
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,TRUE,m_sectionCount);
|
|
Packit |
1c1d7e |
if (generateLegend && !umlLook)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "<center>[";
|
|
Packit |
1c1d7e |
startHtmlLink(relPath+"graph_legend"+Doxygen::htmlFileExtension);
|
|
Packit |
1c1d7e |
t << theTranslator->trLegend();
|
|
Packit |
1c1d7e |
endHtmlLink();
|
|
Packit |
1c1d7e |
t << "]</center>";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startInclDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startGroupCollaboration()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startCallGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endCallGraph(const DotCallGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDirDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startSectionHeader(t,relPath,m_sectionCount);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDirDepGraph(const DotDirDeps &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endSectionHeader(t);
|
|
Packit |
1c1d7e |
startSectionSummary(t,m_sectionCount);
|
|
Packit |
1c1d7e |
endSectionSummary(t);
|
|
Packit |
1c1d7e |
startSectionContent(t,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endSectionContent(t);
|
|
Packit |
1c1d7e |
m_sectionCount++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeGraphicalHierarchy(const DotGfxHierarchyTable &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,dir,fileName);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberGroupHeader(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberGroupHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberGroup()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberGroup(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << endl << "" << endl << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::addIndexItem(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeNonBreakableSpace(int n)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
int i;
|
|
Packit |
1c1d7e |
for (i=0;i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDescTable(const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl
|
|
Packit |
1c1d7e |
<< "" << title << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDescTable()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startSimpleSect(SectionTypes,
|
|
Packit |
1c1d7e |
const char *filename,const char *anchor,
|
|
Packit |
1c1d7e |
const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "- ";
|
|
Packit |
1c1d7e |
if (filename)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeObjectLink(0,filename,anchor,title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endSimpleSect()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startParamList(ParamListTypes,
|
|
Packit |
1c1d7e |
const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "- ";
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endParamList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
HtmlDocVisitor *visitor = new HtmlDocVisitor(t,m_codeGen,ctx);
|
|
Packit |
1c1d7e |
n->accept(visitor);
|
|
Packit |
1c1d7e |
delete visitor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//---------------- helpers for index generation -----------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void startQuickIndexList(FTextStream &t,bool compact,bool topLevel=TRUE)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compact)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (topLevel)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void endQuickIndexList(FTextStream &t,bool compact)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compact)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void startQuickIndexItem(FTextStream &t,const char *l,
|
|
Packit |
1c1d7e |
bool hl,bool /*compact*/,
|
|
Packit |
1c1d7e |
const QCString &relPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (hl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " class=\"current\"";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << ">";
|
|
Packit |
1c1d7e |
if (l) t << "";
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void endQuickIndexItem(FTextStream &t,const char *l)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
if (l) t << "";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static bool quickLinkVisible(LayoutNavEntry::Kind kind)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool showFiles = Config_getBool(SHOW_FILES);
|
|
Packit |
1c1d7e |
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
|
|
Packit |
1c1d7e |
switch (kind)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case LayoutNavEntry::MainPage: return TRUE;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::User: return TRUE;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::UserGroup: return TRUE;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Pages: return indexedPages>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Modules: return documentedGroups>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Classes: return annotatedClasses>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::ClassList: return annotatedClasses>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::FileList: return documentedHtmlFiles>0 && showFiles;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::FileGlobals: return documentedFileMembers[FMHL_All]>0;
|
|
Packit |
1c1d7e |
//case LayoutNavEntry::Dirs: return documentedDirs>0;
|
|
Packit |
1c1d7e |
case LayoutNavEntry::Examples: return Doxygen::exampleSDict->count()>0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void renderQuickLinksAsTree(FTextStream &t,const QCString &relPath,LayoutNavEntry *root)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<LayoutNavEntry> li(root->children());
|
|
Packit |
1c1d7e |
LayoutNavEntry *entry;
|
|
Packit |
1c1d7e |
int count=0;
|
|
Packit |
1c1d7e |
for (li.toFirst();(entry=li.current());++li)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (entry->visible() && quickLinkVisible(entry->kind())) count++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (count>0) // at least one item is visible
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startQuickIndexList(t,FALSE);
|
|
Packit |
1c1d7e |
for (li.toFirst();(entry=li.current());++li)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (entry->visible() && quickLinkVisible(entry->kind()))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString url = entry->url();
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
t << fixSpaces(entry->title());
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
// recursive into child list
|
|
Packit |
1c1d7e |
renderQuickLinksAsTree(t,relPath,entry);
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
endQuickIndexList(t,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void renderQuickLinksAsTabs(FTextStream &t,const QCString &relPath,
|
|
Packit |
1c1d7e |
LayoutNavEntry *hlEntry,LayoutNavEntry::Kind kind,
|
|
Packit |
1c1d7e |
bool highlightParent,bool highlightSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (hlEntry->parent()) // first draw the tabs for the parent of hlEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
renderQuickLinksAsTabs(t,relPath,hlEntry->parent(),kind,highlightParent,highlightSearch);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (hlEntry->parent() && hlEntry->parent()->children().count()>0) // draw tabs for row containing hlEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool topLevel = hlEntry->parent()->parent()==0;
|
|
Packit |
1c1d7e |
QListIterator<LayoutNavEntry> li(hlEntry->parent()->children());
|
|
Packit |
1c1d7e |
LayoutNavEntry *entry;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
int count=0;
|
|
Packit |
1c1d7e |
for (li.toFirst();(entry=li.current());++li)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (entry->visible() && quickLinkVisible(entry->kind())) count++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (count>0) // at least one item is visible
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
startQuickIndexList(t,TRUE,topLevel);
|
|
Packit |
1c1d7e |
for (li.toFirst();(entry=li.current());++li)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (entry->visible() && quickLinkVisible(entry->kind()))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString url = entry->url();
|
|
Packit |
1c1d7e |
startQuickIndexItem(t,url,
|
|
Packit |
1c1d7e |
entry==hlEntry &&
|
|
Packit |
1c1d7e |
(entry->children().count()>0 ||
|
|
Packit |
1c1d7e |
(entry->kind()==kind && !highlightParent)
|
|
Packit |
1c1d7e |
),
|
|
Packit |
1c1d7e |
TRUE,relPath);
|
|
Packit |
1c1d7e |
t << fixSpaces(entry->title());
|
|
Packit |
1c1d7e |
endQuickIndexItem(t,url);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (hlEntry->parent()==LayoutDocManager::instance().rootNavEntry()) // first row is special as it contains the search box
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool searchEngine = Config_getBool(SEARCHENGINE);
|
|
Packit |
1c1d7e |
static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
|
|
Packit |
1c1d7e |
if (searchEngine)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
if (!serverBasedSearch) // pure client side search
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeClientSearchBox(t,relPath);
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // server based search
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeServerSearchBox(t,relPath,highlightSearch);
|
|
Packit |
1c1d7e |
if (!highlightSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!highlightSearch) // on the search page the index will be ended by the
|
|
Packit |
1c1d7e |
// page itself
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endQuickIndexList(t,TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // normal case for other rows than first one
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endQuickIndexList(t,TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultQuickLinks(FTextStream &t,bool compact,
|
|
Packit |
1c1d7e |
HighlightedItem hli,
|
|
Packit |
1c1d7e |
const char *file,
|
|
Packit |
1c1d7e |
const QCString &relPath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
|
|
Packit |
1c1d7e |
static bool searchEngine = Config_getBool(SEARCHENGINE);
|
|
Packit |
1c1d7e |
static bool externalSearch = Config_getBool(EXTERNAL_SEARCH);
|
|
Packit |
1c1d7e |
LayoutNavEntry *root = LayoutDocManager::instance().rootNavEntry();
|
|
Packit |
1c1d7e |
LayoutNavEntry::Kind kind = (LayoutNavEntry::Kind)-1;
|
|
Packit |
1c1d7e |
LayoutNavEntry::Kind altKind = (LayoutNavEntry::Kind)-1; // fall back for the old layout file
|
|
Packit |
1c1d7e |
bool highlightParent=FALSE;
|
|
Packit |
1c1d7e |
switch (hli) // map HLI enums to LayoutNavEntry::Kind enums
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case HLI_Main: kind = LayoutNavEntry::MainPage; break;
|
|
Packit |
1c1d7e |
case HLI_Modules: kind = LayoutNavEntry::Modules; break;
|
|
Packit |
1c1d7e |
//case HLI_Directories: kind = LayoutNavEntry::Dirs; break;
|
|
Packit |
1c1d7e |
case HLI_Namespaces: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces; break;
|
|
Packit |
1c1d7e |
case HLI_Hierarchy: kind = LayoutNavEntry::ClassHierarchy; break;
|
|
Packit |
1c1d7e |
case HLI_Classes: kind = LayoutNavEntry::ClassIndex; altKind = LayoutNavEntry::Classes; break;
|
|
Packit |
1c1d7e |
case HLI_Annotated: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes; break;
|
|
Packit |
1c1d7e |
case HLI_Files: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files; break;
|
|
Packit |
1c1d7e |
case HLI_NamespaceMembers: kind = LayoutNavEntry::NamespaceMembers; break;
|
|
Packit |
1c1d7e |
case HLI_Functions: kind = LayoutNavEntry::ClassMembers; break;
|
|
Packit |
1c1d7e |
case HLI_Globals: kind = LayoutNavEntry::FileGlobals; break;
|
|
Packit |
1c1d7e |
case HLI_Pages: kind = LayoutNavEntry::Pages; break;
|
|
Packit |
1c1d7e |
case HLI_Examples: kind = LayoutNavEntry::Examples; break;
|
|
Packit |
1c1d7e |
case HLI_UserGroup: kind = LayoutNavEntry::UserGroup; break;
|
|
Packit |
1c1d7e |
case HLI_ClassVisible: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes;
|
|
Packit |
1c1d7e |
highlightParent = TRUE; break;
|
|
Packit |
1c1d7e |
case HLI_NamespaceVisible: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces;
|
|
Packit |
1c1d7e |
highlightParent = TRUE; break;
|
|
Packit |
1c1d7e |
case HLI_FileVisible: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files;
|
|
Packit |
1c1d7e |
highlightParent = TRUE; break;
|
|
Packit |
1c1d7e |
case HLI_None: break;
|
|
Packit |
1c1d7e |
case HLI_Search: break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (compact && Config_getBool(HTML_DYNAMIC_MENUS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString searchPage;
|
|
Packit |
1c1d7e |
if (externalSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchPage = "search" + Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
searchPage = "search.php";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\" src=\"" << relPath << "menudata.js\"></script>" << endl;
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\" src=\"" << relPath << "menu.js\"></script>" << endl;
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\">" << endl;
|
|
Packit |
1c1d7e |
t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n";
|
|
Packit |
1c1d7e |
t << "$(function() {" << endl;
|
|
Packit |
1c1d7e |
t << " initMenu('" << relPath << "',"
|
|
Packit |
1c1d7e |
<< (searchEngine?"true":"false") << ","
|
|
Packit |
1c1d7e |
<< (serverBasedSearch?"true":"false") << ",'"
|
|
Packit |
1c1d7e |
<< searchPage << "','"
|
|
Packit |
1c1d7e |
<< theTranslator->trSearch() << "');" << endl;
|
|
Packit |
1c1d7e |
if (Config_getBool(SEARCHENGINE))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!serverBasedSearch)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " $(document).ready(function() { init_search(); });\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n";
|
|
Packit |
1c1d7e |
t << " $(document).ready(function() {\n"
|
|
Packit |
1c1d7e |
<< " if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
|
|
Packit |
1c1d7e |
<< " });\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "});" << endl;
|
|
Packit |
1c1d7e |
t << "/* @license-end */";
|
|
Packit |
1c1d7e |
t << "</script>" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (compact) // && !Config_getBool(HTML_DYNAMIC_MENUS)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// find highlighted index item
|
|
Packit |
1c1d7e |
LayoutNavEntry *hlEntry = root->find(kind,kind==LayoutNavEntry::UserGroup ? file : 0);
|
|
Packit |
1c1d7e |
if (!hlEntry && altKind!=(LayoutNavEntry::Kind)-1) { hlEntry=root->find(altKind); kind=altKind; }
|
|
Packit |
1c1d7e |
if (!hlEntry) // highlighted item not found in the index! -> just show the level 1 index...
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
highlightParent=TRUE;
|
|
Packit |
1c1d7e |
hlEntry = root->children().getFirst();
|
|
Packit |
1c1d7e |
if (hlEntry==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return; // argl, empty index!
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (kind==LayoutNavEntry::UserGroup)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutNavEntry *e = hlEntry->children().getFirst();
|
|
Packit |
1c1d7e |
if (e)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
hlEntry = e;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
renderQuickLinksAsTabs(t,relPath,hlEntry,kind,highlightParent,hli==HLI_Search);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
renderQuickLinksAsTree(t,relPath,root);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endQuickIndices()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString HtmlGenerator::writeSplitBarAsString(const char *name,const char *relpath)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
QCString result;
|
|
Packit |
1c1d7e |
// write split bar
|
|
Packit |
1c1d7e |
if (generateTreeView)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = QCString(
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
"
|
|
Packit |
1c1d7e |
" class=\"ui-resizable-handle\">\n"
|
|
Packit |
1c1d7e |
" \n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"<script type=\"text/javascript\">\n"
|
|
Packit |
1c1d7e |
"/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n"
|
|
Packit |
1c1d7e |
"$(document).ready(function(){initNavTree('") +
|
|
Packit |
1c1d7e |
QCString(name) + Doxygen::htmlFileExtension +
|
|
Packit |
1c1d7e |
QCString("','") + relpath +
|
|
Packit |
1c1d7e |
QCString("');});\n"
|
|
Packit |
1c1d7e |
"/* @license-end */\n"
|
|
Packit |
1c1d7e |
"</script>\n"
|
|
Packit |
1c1d7e |
"\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSplitBar(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << writeSplitBarAsString(name,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeNavigationPath(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << substitute(s,"$relpath^",relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startContents()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endContents()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeQuickLinks(bool compact,HighlightedItem hli,const char *file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultQuickLinks(t,compact,hli,file,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// PHP based search script
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSearchPage()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
static bool disableIndex = Config_getBool(DISABLE_INDEX);
|
|
Packit |
1c1d7e |
static QCString projectName = Config_getString(PROJECT_NAME);
|
|
Packit |
1c1d7e |
static QCString htmlOutput = Config_getString(HTML_OUTPUT);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// OPENSEARCH_PROVIDER {
|
|
Packit |
1c1d7e |
QCString configFileName = htmlOutput+"/search_config.php";
|
|
Packit |
1c1d7e |
QFile cf(configFileName);
|
|
Packit |
1c1d7e |
if (cf.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&cf);
|
|
Packit |
1c1d7e |
t << "<script language=\"php\">\n\n";
|
|
Packit |
1c1d7e |
t << "$config = array(\n";
|
|
Packit |
1c1d7e |
t << " 'PROJECT_NAME' => \"" << convertToHtml(projectName) << "\",\n";
|
|
Packit |
1c1d7e |
t << " 'GENERATE_TREEVIEW' => " << (generateTreeView?"true":"false") << ",\n";
|
|
Packit |
1c1d7e |
t << " 'DISABLE_INDEX' => " << (disableIndex?"true":"false") << ",\n";
|
|
Packit |
1c1d7e |
t << ");\n\n";
|
|
Packit |
1c1d7e |
t << "$translator = array(\n";
|
|
Packit |
1c1d7e |
t << " 'search_results_title' => \"" << theTranslator->trSearchResultsTitle() << "\",\n";
|
|
Packit |
1c1d7e |
t << " 'search_results' => array(\n";
|
|
Packit |
1c1d7e |
t << " 0 => \"" << theTranslator->trSearchResults(0) << "\",\n";
|
|
Packit |
1c1d7e |
t << " 1 => \"" << theTranslator->trSearchResults(1) << "\",\n";
|
|
Packit |
1c1d7e |
t << " 2 => \"" << substitute(theTranslator->trSearchResults(2), "$", "\\$") << "\",\n";
|
|
Packit |
1c1d7e |
t << " ),\n";
|
|
Packit |
1c1d7e |
t << " 'search_matches' => \"" << theTranslator->trSearchMatches() << "\",\n";
|
|
Packit |
1c1d7e |
t << " 'search' => \"" << theTranslator->trSearch() << "\",\n";
|
|
Packit |
1c1d7e |
t << " 'split_bar' => \"" << substitute(substitute(writeSplitBarAsString("search",""), "\"","\\\""), "\n","\\n") << "\",\n";
|
|
Packit |
1c1d7e |
t << " 'logo' => \"" << substitute(substitute(writeLogoAsString(""), "\"","\\\""), "\n","\\n") << "\",\n";
|
|
Packit |
1c1d7e |
t << ");\n\n";
|
|
Packit |
1c1d7e |
t << "</script>\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ResourceMgr::instance().copyResource("search_functions.php",htmlOutput);
|
|
Packit |
1c1d7e |
ResourceMgr::instance().copyResource("search_opensearch.php",htmlOutput);
|
|
Packit |
1c1d7e |
// OPENSEARCH_PROVIDER }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString fileName = htmlOutput+"/search.php";
|
|
Packit |
1c1d7e |
QFile f(fileName);
|
|
Packit |
1c1d7e |
if (f.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << substituteHtmlKeywords(g_header,"Search","");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< versionString << " -->" << endl;
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\">\n";
|
|
Packit |
1c1d7e |
t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n";
|
|
Packit |
1c1d7e |
t << "var searchBox = new SearchBox(\"searchBox\", \""
|
|
Packit |
1c1d7e |
<< "search\",false,'" << theTranslator->trSearch() << "');\n";
|
|
Packit |
1c1d7e |
t << "/* @license-end */\n";
|
|
Packit |
1c1d7e |
t << "</script>\n";
|
|
Packit |
1c1d7e |
if (!Config_getBool(DISABLE_INDEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultQuickLinks(t,TRUE,HLI_Search,0,"");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "<script language=\"php\">\n";
|
|
Packit |
1c1d7e |
t << "require_once \"search_functions.php\";\n";
|
|
Packit |
1c1d7e |
t << "main();\n";
|
|
Packit |
1c1d7e |
t << "</script>\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Write empty navigation path, to make footer connect properly
|
|
Packit |
1c1d7e |
if (generateTreeView)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
writePageFooter(t,"Search","","");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QCString scriptName = htmlOutput+"/search/search.js";
|
|
Packit |
1c1d7e |
QFile sf(scriptName);
|
|
Packit |
1c1d7e |
if (sf.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&sf);
|
|
Packit |
1c1d7e |
t << ResourceMgr::instance().getAsString("extsearch.js");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Failed to open file '%s' for writing...\n",scriptName.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeExternalSearchPage()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
static bool disableIndex = Config_getBool(DISABLE_INDEX);
|
|
Packit |
1c1d7e |
QCString fileName = Config_getString(HTML_OUTPUT)+"/search"+Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
QFile f(fileName);
|
|
Packit |
1c1d7e |
if (f.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << substituteHtmlKeywords(g_header,"Search","");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< versionString << " -->" << endl;
|
|
Packit |
1c1d7e |
t << "<script type=\"text/javascript\">\n";
|
|
Packit |
1c1d7e |
t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */\n";
|
|
Packit |
1c1d7e |
t << "var searchBox = new SearchBox(\"searchBox\", \""
|
|
Packit |
1c1d7e |
<< "search\",false,'" << theTranslator->trSearch() << "');\n";
|
|
Packit |
1c1d7e |
t << "/* @license-end */\n";
|
|
Packit |
1c1d7e |
t << "</script>\n";
|
|
Packit |
1c1d7e |
if (!Config_getBool(DISABLE_INDEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultQuickLinks(t,TRUE,HLI_Search,0,"");
|
|
Packit |
1c1d7e |
t << " <input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"\" size=\"20\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n";
|
|
Packit |
1c1d7e |
t << " </form>\n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << writeSplitBarAsString("search","");
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
t << " " << theTranslator->trSearchResultsTitle() << " " << endl;
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (generateTreeView)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
writePageFooter(t,"Search","","");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QCString scriptName = Config_getString(HTML_OUTPUT)+"/search/search.js";
|
|
Packit |
1c1d7e |
QFile sf(scriptName);
|
|
Packit |
1c1d7e |
if (sf.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&sf);
|
|
Packit |
1c1d7e |
t << "var searchResultsText=["
|
|
Packit |
1c1d7e |
<< "\"" << theTranslator->trSearchResults(0) << "\","
|
|
Packit |
1c1d7e |
<< "\"" << theTranslator->trSearchResults(1) << "\","
|
|
Packit |
1c1d7e |
<< "\"" << theTranslator->trSearchResults(2) << "\"];" << endl;
|
|
Packit |
1c1d7e |
t << "var serverUrl=\"" << Config_getString(SEARCHENGINE_URL) << "\";" << endl;
|
|
Packit |
1c1d7e |
t << "var tagMap = {" << endl;
|
|
Packit |
1c1d7e |
bool first=TRUE;
|
|
Packit |
1c1d7e |
// add search mappings
|
|
Packit |
1c1d7e |
QStrList &extraSearchMappings = Config_getList(EXTRA_SEARCH_MAPPINGS);
|
|
Packit |
1c1d7e |
char *ml=extraSearchMappings.first();
|
|
Packit |
1c1d7e |
while (ml)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString mapLine = ml;
|
|
Packit |
1c1d7e |
int eqPos = mapLine.find('=');
|
|
Packit |
1c1d7e |
if (eqPos!=-1) // tag command contains a destination
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString tagName = mapLine.left(eqPos).stripWhiteSpace();
|
|
Packit |
1c1d7e |
QCString destName = mapLine.right(mapLine.length()-eqPos-1).stripWhiteSpace();
|
|
Packit |
1c1d7e |
if (!tagName.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!first) t << "," << endl;
|
|
Packit |
1c1d7e |
t << " \"" << tagName << "\": \"" << destName << "\"";
|
|
Packit |
1c1d7e |
first=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ml=extraSearchMappings.next();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!first) t << endl;
|
|
Packit |
1c1d7e |
t << "};" << endl << endl;
|
|
Packit |
1c1d7e |
t << ResourceMgr::instance().getAsString("extsearch.js");
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
t << "$(document).ready(function() {" << endl;
|
|
Packit |
1c1d7e |
t << " var query = trim(getURLParameter('query'));" << endl;
|
|
Packit |
1c1d7e |
t << " if (query) {" << endl;
|
|
Packit |
1c1d7e |
t << " searchFor(query,0,20);" << endl;
|
|
Packit |
1c1d7e |
t << " } else {" << endl;
|
|
Packit |
1c1d7e |
t << " var results = $('#results');" << endl;
|
|
Packit |
1c1d7e |
t << " results.html('" << theTranslator->trSearchResults(0) << " ');" << endl;
|
|
Packit |
1c1d7e |
t << " }" << endl;
|
|
Packit |
1c1d7e |
t << "});" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Failed to open file '%s' for writing...\n",scriptName.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startConstraintList(const char *header)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "- " << header << "
- " << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " :";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endConstraintList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::lineBreak(const char *style)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (style)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startHeaderSection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startTitleHead(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
startTitle();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endTitleHead(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endTitle();
|
|
Packit |
1c1d7e |
t << " " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endHeaderSection()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_emptySection)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
m_emptySection=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startMemberDocSimple(bool isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
t << (isEnum? theTranslator->trEnumerationValues() :
|
|
Packit |
1c1d7e |
theTranslator->trCompoundMembers()) << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDocSimple(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::startLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeLabel(const char *l,bool /*isLast*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
//t << "<tt>[" << l << "]</tt>";
|
|
Packit |
1c1d7e |
//if (!isLast) t << ", ";
|
|
Packit |
1c1d7e |
t << "" << l << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeInheritedSectionTitle(
|
|
Packit |
1c1d7e |
const char *id, const char *ref,
|
|
Packit |
1c1d7e |
const char *file, const char *anchor,
|
|
Packit |
1c1d7e |
const char *title, const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DBG_HTML(t << "" << endl;)
|
|
Packit |
1c1d7e |
QCString a = anchor;
|
|
Packit |
1c1d7e |
if (!a.isEmpty()) a.prepend("#");
|
|
Packit |
1c1d7e |
QCString classLink = QCString("
|
|
Packit |
1c1d7e |
if (ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
classLink+= externalLinkTarget() + externalRef(relPath,ref,TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
classLink+=relPath;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
classLink+=file+Doxygen::htmlFileExtension+a;
|
|
Packit |
1c1d7e |
classLink+=QCString("\">")+convertToHtml(name,FALSE)+"";
|
|
Packit |
1c1d7e |
t << ""
|
|
Packit |
1c1d7e |
<< ""
|
|
Packit |
1c1d7e |
<< " "
|
|
Packit |
1c1d7e |
<< theTranslator->trInheritedFrom(convertToHtml(title,FALSE),classLink)
|
|
Packit |
1c1d7e |
<< "" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::writeSummaryLink(const char *file,const char *anchor,const char *title,bool first)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (first)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " |\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << relPath << file;
|
|
Packit |
1c1d7e |
t << Doxygen::htmlFileExtension;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "#";
|
|
Packit |
1c1d7e |
t << anchor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\">";
|
|
Packit |
1c1d7e |
t << title;
|
|
Packit |
1c1d7e |
t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::endMemberDeclaration(const char *anchor,const char *inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
if (inheritId)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " inherit " << inheritId;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\"> \n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::setCurrentDoc(Definition *context,const char *anchor,bool isSourceFile)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Doxygen::searchIndex)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::searchIndex->setCurrentDoc(context,anchor,isSourceFile);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void HtmlGenerator::addWord(const char *word,bool hiPriority)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Doxygen::searchIndex)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::searchIndex->addWord(word,hiPriority);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|