summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2015-09-08 14:10:32 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2015-09-08 14:10:32 (GMT)
commite58fb0a46f73f37d16859f43fda1eb5ba4a15c5d (patch)
treee2c81dd42a25e439ea0055605418732883a173d0
parent5aa4ade86499ba615da48875a9e7292ddd22c22f (diff)
downloadDoxygen-e58fb0a46f73f37d16859f43fda1eb5ba4a15c5d.zip
Doxygen-e58fb0a46f73f37d16859f43fda1eb5ba4a15c5d.tar.gz
Doxygen-e58fb0a46f73f37d16859f43fda1eb5ba4a15c5d.tar.bz2
Template enhancements and various other small fixes
-rw-r--r--src/context.cpp386
-rw-r--r--src/context.h38
-rw-r--r--src/definition.cpp23
-rw-r--r--src/definition.h3
-rw-r--r--src/diagram.cpp2
-rw-r--r--src/doxygen.cpp8
-rw-r--r--src/htmldocvisitor.cpp2
-rw-r--r--src/htmlgen.cpp8
-rw-r--r--src/index.cpp6
-rw-r--r--src/latexgen.cpp2
-rw-r--r--src/memberdef.cpp16
-rw-r--r--src/memberdef.h1
-rw-r--r--src/memberlist.cpp4
-rw-r--r--src/template.cpp39
-rw-r--r--src/translator_br.h4
-rw-r--r--src/translator_cn.h4
-rw-r--r--src/translator_cz.h4
-rw-r--r--src/translator_de.h4
-rw-r--r--src/translator_en.h4
-rw-r--r--src/translator_eo.h4
-rw-r--r--src/translator_es.h4
-rw-r--r--src/translator_fr.h4
-rw-r--r--src/translator_gr.h4
-rw-r--r--src/translator_it.h4
-rw-r--r--src/translator_jp.h4
-rw-r--r--src/translator_kr.h4
-rw-r--r--src/translator_lv.h4
-rw-r--r--src/translator_nl.h4
-rw-r--r--src/translator_pt.h4
-rw-r--r--src/translator_ro.h4
-rw-r--r--src/translator_ru.h4
-rw-r--r--src/translator_sk.h4
-rw-r--r--src/translator_sv.h4
-rw-r--r--src/translator_tw.h4
-rw-r--r--src/translator_ua.h4
-rwxr-xr-xsrc/util.cpp35
-rwxr-xr-xsrc/util.h2
-rw-r--r--templates/html/htmlannotated.tpl2
-rw-r--r--templates/html/htmlbase.tpl9
-rw-r--r--templates/html/htmlclass.tpl10
-rw-r--r--templates/html/htmlclasses.tpl2
-rw-r--r--templates/html/htmldeclcomp.tpl1
-rw-r--r--templates/html/htmldir.tpl16
-rw-r--r--templates/html/htmldirtree.tpl8
-rw-r--r--templates/html/htmlexample.tpl17
-rw-r--r--templates/html/htmlexamples.tpl15
-rw-r--r--templates/html/htmlfile.tpl8
-rw-r--r--templates/html/htmlfiles.tpl2
-rw-r--r--templates/html/htmlhierarchy.tpl2
-rw-r--r--templates/html/htmlindexpages.tpl2
-rw-r--r--templates/html/htmljsnavtree.tpl2
-rw-r--r--templates/html/htmllayout.tpl55
-rw-r--r--templates/html/htmlmembersindex.tpl20
-rw-r--r--templates/html/htmlmemdecl.tpl20
-rw-r--r--templates/html/htmlmemdef.tpl45
-rw-r--r--templates/html/htmlmodule.tpl8
-rw-r--r--templates/html/htmlmodules.tpl2
-rw-r--r--templates/html/htmlnamespace.tpl8
-rw-r--r--templates/html/htmlnamespaces.tpl2
-rw-r--r--templates/html/htmlnavtree.tpl2
-rw-r--r--templates/html/htmlobjlink.tpl6
-rw-r--r--templates/html/htmlpage.tpl8
-rw-r--r--templates/html/htmlpages.tpl2
-rw-r--r--templates/html/htmlsource.tpl16
-rw-r--r--templates/html/htmltabs.tpl2
-rw-r--r--templates/latex/latexclass.tpl4
-rw-r--r--templates/latex/latexfiles.tpl1
-rw-r--r--templates/latex/latexmodules.tpl1
-rw-r--r--templates/latex/latexnamespaces.tpl1
69 files changed, 739 insertions, 219 deletions
diff --git a/src/context.cpp b/src/context.cpp
index 8f9200e..c1cc57f 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -976,6 +976,18 @@ class TranslateContext::Private : public PropertyMapper
{
return theTranslator->trPanelSynchronisationTooltip(TRUE);
}
+ TemplateVariant providedByCategory() const
+ {
+ return theTranslator->trProvidedByCategory();
+ }
+ TemplateVariant extendsClass() const
+ {
+ return theTranslator->trExtendsClass();
+ }
+ TemplateVariant examplesDescription() const
+ {
+ return theTranslator->trExamplesDescription();
+ }
Private()
{
//%% string generatedBy
@@ -1156,6 +1168,12 @@ class TranslateContext::Private : public PropertyMapper
addProperty("panelSyncOff", this,&Private::panelSyncOff);
//%% string dirDependencyGraph
addProperty("dirDependencyGraphFor", this,&Private::dirDependencyGraphFor);
+ //%% string providedByCategory
+ addProperty("providedByCategory", this,&Private::providedByCategory);
+ //%% string extendsClass
+ addProperty("extendsClass", this,&Private::extendsClass);
+ //%% string examplesDescription
+ addProperty("examplesDescription",this,&Private::examplesDescription);
m_javaOpt = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
m_fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
@@ -1349,6 +1367,12 @@ class DefinitionContext : public PropertyMapper
addProperty("sourceDef",this,&DefinitionContext::sourceDef);
//%% list[Definition] navigationPath: Breadcrumb navigation path to this item
addProperty("navigationPath",this,&DefinitionContext::navigationPath);
+ //%% string kind: Kind of compound object: class, namespace, module, package, page, dir
+ addProperty("compoundKind",this,&DefinitionContext::compoundKind);
+ //%% bool isReference: is this definition imported via a tag file
+ addProperty("isReference",this,&DefinitionContext::isReference);
+ //%% string externalReference: the link to the element in the remote documentation
+ addProperty("externalReference",this,&DefinitionContext::externalReference);
m_cache.sourceDef.reset(TemplateList::alloc());
m_cache.lineLink.reset(TemplateStruct::alloc());
@@ -1360,6 +1384,8 @@ class DefinitionContext : public PropertyMapper
m_cache.lineLink->set("isLinkable",TRUE);
m_cache.lineLink->set("fileName",m_def->getSourceFileBase());
m_cache.lineLink->set("anchor",m_def->getSourceAnchor());
+ m_cache.lineLink->set("isReference",FALSE);
+ m_cache.lineLink->set("externalReference","");
if (m_def->definitionType()==Definition::TypeFile)
{
m_cache.fileLink->set("text",m_def->name());
@@ -1375,6 +1401,8 @@ class DefinitionContext : public PropertyMapper
m_cache.fileLink->set("isLinkable",TRUE);
m_cache.fileLink->set("fileName",m_def->getSourceFileBase());
m_cache.fileLink->set("anchor",QCString());
+ m_cache.fileLink->set("isReference",FALSE);
+ m_cache.fileLink->set("externalReference","");
m_cache.sourceDef->append(m_cache.lineLink.get());
m_cache.sourceDef->append(m_cache.fileLink.get());
}
@@ -1488,6 +1516,24 @@ class DefinitionContext : public PropertyMapper
}
return result;
}
+ TemplateVariant compoundKind() const
+ {
+ QCString result = "unspecified";
+ switch (m_def->definitionType())
+ {
+ case DefinitionIntf::TypeClass: result="class"; break;
+ case DefinitionIntf::TypeFile: result="file"; break;
+ case DefinitionIntf::TypeNamespace: result="namespace"; break;
+ case DefinitionIntf::TypeGroup: result="module"; break;
+ case DefinitionIntf::TypePackage: result="package"; break;
+ case DefinitionIntf::TypePage: result="page"; break;
+ case DefinitionIntf::TypeDir: result="dir"; break;
+ case DefinitionIntf::TypeMember: // fall through
+ case DefinitionIntf::TypeSymbolList:
+ break;
+ }
+ return result;
+ }
TemplateVariant sourceDef() const
{
if (m_cache.sourceDef->count()==2)
@@ -1530,12 +1576,22 @@ class DefinitionContext : public PropertyMapper
}
return m_cache.navPath.get();
}
+ TemplateVariant isReference() const
+ {
+ return m_def->isReference();
+ }
+ TemplateVariant externalReference() const
+ {
+ return m_def->externalReference(relPathAsString());
+ }
private:
Definition *m_def;
struct Cachable
{
- Cachable() { }
+ Cachable() : detailsOutputFormat(ContextOutputFormat_Unspecified),
+ briefOutputFormat(ContextOutputFormat_Unspecified),
+ inbodyDocsOutputFormat(ContextOutputFormat_Unspecified) { }
ScopedPtr<TemplateVariant> details;
ContextOutputFormat detailsOutputFormat;
ScopedPtr<TemplateVariant> brief;
@@ -1577,7 +1633,7 @@ class IncludeInfoContext::Private : public PropertyMapper
}
TemplateVariant isImport() const
{
- return m_info->imported;
+ return m_info->imported || m_lang==SrcLangExt_ObjC;
}
TemplateVariant file() const
{
@@ -1730,6 +1786,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addProperty("detailedProperties", this,&Private::detailedProperties);
addProperty("detailedEvents", this,&Private::detailedEvents);
addProperty("classes", this,&Private::classes);
+ addProperty("innerClasses", this,&Private::innerClasses);
addProperty("compoundType", this,&Private::compoundType);
addProperty("templateDecls", this,&Private::templateDecls);
addProperty("typeConstraints", this,&Private::typeConstraints);
@@ -1740,6 +1797,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addProperty("memberGroups", this,&Private::memberGroups);
addProperty("additionalInheritedMembers",this,&Private::additionalInheritedMembers);
addProperty("isSimple", this,&Private::isSimple);
+ addProperty("categoryOf", this,&Private::categoryOf);
}
virtual ~Private() {}
TemplateVariant title() const
@@ -1852,8 +1910,8 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
t << "<div class=\"center\">" << endl;
t << "<img src=\"";
t << relPathAsString() << m_classDef->getOutputFileBase();
- t << ".png\" usemap=\"#" << name << "_map\" alt=\"\"/>" << endl;
- t << "<map id=\"" << name << "_map\" name=\"" << name << "_map\">" << endl;
+ t << ".png\" usemap=\"#" << convertToId(name) << "_map\" alt=\"\"/>" << endl;
+ t << "<map id=\"" << convertToId(name) << "_map\" name=\"" << name << "_map\">" << endl;
d.writeImage(t,g_globals.outputDir,
relPathAsString(),
m_classDef->getOutputFileBase());
@@ -2161,6 +2219,31 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
}
return m_cache.classes.get();
}
+ TemplateVariant innerClasses() const
+ {
+ if (!m_cache.innerClasses)
+ {
+ TemplateList *classList = TemplateList::alloc();
+ if (m_classDef->getClassSDict())
+ {
+ ClassSDict::Iterator sdi(*m_classDef->getClassSDict());
+ ClassDef *cd;
+ for (sdi.toFirst();(cd=sdi.current());++sdi)
+ {
+ if (cd->name().find('@')==-1 &&
+ cd->isLinkableInProject() &&
+ cd->isEmbeddedInOuterScope() &&
+ cd->partOfGroups()==0
+ )
+ {
+ classList->append(ClassContext::alloc(cd));
+ }
+ }
+ }
+ m_cache.innerClasses.reset(classList);
+ }
+ return m_cache.innerClasses.get();
+ }
TemplateVariant compoundType() const
{
return m_classDef->compoundTypeString();
@@ -2197,6 +2280,8 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
s->set("isLinkable",TRUE);
s->set("anchor",ex->anchor);
s->set("fileName",ex->file);
+ s->set("isReference",FALSE);
+ s->set("externalReference","");
list->append(s);
}
}
@@ -2367,6 +2452,21 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
{
return m_classDef->isSimple();
}
+ TemplateVariant categoryOf() const
+ {
+ if (!m_cache.categoryOf && m_classDef->categoryOf())
+ {
+ m_cache.categoryOf.reset(ClassContext::alloc(m_classDef->categoryOf()));
+ }
+ if (m_cache.categoryOf)
+ {
+ return m_cache.categoryOf.get();
+ }
+ else
+ {
+ return TemplateVariant(FALSE);
+ }
+ }
private:
ClassDef *m_classDef;
@@ -2379,6 +2479,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
ScopedPtr<DotClassGraph> classGraph;
ScopedPtr<DotClassGraph> collaborationGraph;
SharedPtr<TemplateList> classes;
+ SharedPtr<TemplateList> innerClasses;
SharedPtr<MemberListInfoContext> publicTypes;
SharedPtr<MemberListInfoContext> publicMethods;
SharedPtr<MemberListInfoContext> publicStaticMethods;
@@ -2428,6 +2529,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
SharedPtr<MemberListContext> members;
SharedPtr<UsedFilesContext> usedFiles;
SharedPtr<TemplateList> exampleList;
+ SharedPtr<ClassContext> categoryOf;
int inheritanceNodes;
MemberList allMembers;
};
@@ -3302,12 +3404,14 @@ TemplateVariant DirContext::get(const char *n) const
class PageContext::Private : public DefinitionContext<PageContext::Private>
{
public:
- Private(PageDef *pd,bool isMainPage)
- : DefinitionContext<PageContext::Private>(pd) , m_pageDef(pd), m_isMainPage(isMainPage)
+ Private(PageDef *pd,bool isMainPage,bool isExample)
+ : DefinitionContext<PageContext::Private>(pd) , m_pageDef(pd), m_isMainPage(isMainPage),
+ m_isExample(isExample)
{
addProperty("title",this,&Private::title);
addProperty("highlight",this,&Private::highlight);
addProperty("subhighlight",this,&Private::subHighlight);
+ addProperty("example",this,&Private::example);
}
virtual ~Private() {}
TemplateVariant title() const
@@ -3323,6 +3427,10 @@ class PageContext::Private : public DefinitionContext<PageContext::Private>
return theTranslator->trMainPage();
}
}
+ else if (m_isExample)
+ {
+ return m_pageDef->name();
+ }
else
{
return m_pageDef->title();
@@ -3354,15 +3462,41 @@ class PageContext::Private : public DefinitionContext<PageContext::Private>
{
return "";
}
+ TemplateVariant example() const
+ {
+ if (m_isExample)
+ {
+ if (!m_cache.example || g_globals.outputFormat!=m_cache.exampleOutputFormat)
+ {
+ m_cache.example.reset(new TemplateVariant(
+ parseDoc(m_pageDef,m_pageDef->docFile(),m_pageDef->docLine(),
+ relPathAsString(),"\\include "+m_pageDef->name(),FALSE)));
+ m_cache.exampleOutputFormat = g_globals.outputFormat;
+ }
+ return *m_cache.example;
+ }
+ else
+ {
+ return TemplateVariant("");
+ }
+ }
private:
PageDef *m_pageDef;
+ struct Cachable
+ {
+ Cachable() : exampleOutputFormat(ContextOutputFormat_Unspecified) { }
+ ScopedPtr<TemplateVariant> example;
+ ContextOutputFormat exampleOutputFormat;
+ };
+ mutable Cachable m_cache;
bool m_isMainPage;
+ bool m_isExample;
};
//%% }
-PageContext::PageContext(PageDef *pd,bool isMainPage) : RefCountedContext("PageContext")
+PageContext::PageContext(PageDef *pd,bool isMainPage,bool isExample) : RefCountedContext("PageContext")
{
- p = new Private(pd,isMainPage);
+ p = new Private(pd,isMainPage,isExample);
}
PageContext::~PageContext()
@@ -3623,6 +3757,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
addProperty("propertyAttrs", this,&Private::propertyAttrs);
addProperty("eventAttrs", this,&Private::eventAttrs);
addProperty("category", this,&Private::category);
+ addProperty("categoryRelation", this,&Private::categoryRelation);
addProperty("class", this,&Private::getClass);
addProperty("file", this,&Private::getFile);
addProperty("namespace", this,&Private::getNamespace);
@@ -3654,6 +3789,8 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
addProperty("callerGraph", this,&Private::callerGraph);
addProperty("fieldType", this,&Private::fieldType);
addProperty("type", this,&Private::type);
+ addProperty("detailsVisibleFor", this,&Private::detailsVisibleFor);
+ addProperty("nameWithContextFor", this,&Private::nameWithContextFor);
m_cache.propertyAttrs.reset(TemplateList::alloc());
if (md && md->isProperty())
@@ -4106,6 +4243,21 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
return TemplateVariant(FALSE);
}
}
+ TemplateVariant categoryRelation() const
+ {
+ if (!m_cache.categoryRelation && m_memberDef->categoryRelation())
+ {
+ m_cache.categoryRelation.reset(MemberContext::alloc(m_memberDef->categoryRelation()));
+ }
+ if (m_cache.categoryRelation)
+ {
+ return m_cache.categoryRelation.get();
+ }
+ else
+ {
+ return TemplateVariant(FALSE);
+ }
+ }
TemplateVariant getFile() const
{
if (!m_cache.fileDef && m_memberDef->getFileDef())
@@ -4388,6 +4540,8 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
s->set("isLinkable",TRUE);
s->set("anchor",ex->anchor);
s->set("fileName",ex->file);
+ s->set("isReference",FALSE);
+ s->set("externalReference","");
list->append(s);
}
}
@@ -4598,6 +4752,54 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
{
return m_memberDef->typeString();
}
+ TemplateVariant handleDetailsVisibleFor(const QValueList<TemplateVariant> &args) const
+ {
+ if (args.count()==1)
+ {
+ return m_memberDef->isDetailedSectionVisible(args[0].toString()=="module",args[0].toString()=="file");
+ }
+ else
+ {
+ err(".detailsVisibleFor should take one string argument, got %d\n",args.count());
+ }
+ return TemplateVariant();
+ }
+ TemplateVariant detailsVisibleFor() const
+ {
+ return TemplateVariant::Delegate::fromMethod<Private,&Private::handleDetailsVisibleFor>(this);
+ }
+ TemplateVariant handleNameWithContextFor(const QValueList<TemplateVariant> &args) const
+ {
+ if (args.count()==1)
+ {
+ SrcLangExt lang = m_memberDef->getLanguage();
+ QCString n = m_memberDef->name();
+ QCString ctx = args[0].toString();
+ QCString sep = getLanguageSpecificSeparator(lang,TRUE);
+ if (m_memberDef->getEnumScope() && m_memberDef->livesInsideEnum())
+ {
+ n.prepend(m_memberDef->getEnumScope()->displayName()+sep);
+ }
+ if (ctx=="module" && m_memberDef->getClassDef() && !m_memberDef->isRelated())
+ {
+ n.prepend(m_memberDef->getClassDef()->displayName()+sep);
+ }
+ else if ((ctx=="module" || ctx=="file") && m_memberDef->getNamespaceDef())
+ {
+ n.prepend(m_memberDef->getNamespaceDef()->displayName()+sep);
+ }
+ return n;
+ }
+ else
+ {
+ err(".nameWithContextFor should take one string argument, got %d\n",args.count());
+ }
+ return TemplateVariant();
+ }
+ TemplateVariant nameWithContextFor() const
+ {
+ return TemplateVariant::Delegate::fromMethod<Private,&Private::handleNameWithContextFor>(this);
+ }
private:
MemberDef *m_memberDef;
struct Cachable
@@ -4611,6 +4813,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
SharedPtr<FileContext> fileDef;
SharedPtr<NamespaceContext> namespaceDef;
SharedPtr<ClassContext> category;
+ SharedPtr<MemberContext> categoryRelation;
SharedPtr<ClassContext> classDef;
SharedPtr<ClassContext> anonymousType;
SharedPtr<TemplateList> templateDecls;
@@ -4818,7 +5021,7 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
PageDef *ex;
for (eli.toFirst();(ex=eli.current());++eli)
{
- exampleList->append(PageContext::alloc(ex));
+ exampleList->append(PageContext::alloc(ex,FALSE,TRUE));
}
}
m_cache.examples.reset(exampleList);
@@ -4836,7 +5039,7 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
PageDef *ex;
for (eli.toFirst();(ex=eli.current());++eli)
{
- pageList->append(PageContext::alloc(ex));
+ pageList->append(PageContext::alloc(ex,FALSE,TRUE));
}
}
m_cache.pages.reset(pageList);
@@ -5582,6 +5785,8 @@ class NestingNodeContext::Private : public PropertyMapper
addProperty("isLinkable",this,&Private::isLinkable);
addProperty("anchor",this,&Private::anchor);
addProperty("fileName",this,&Private::fileName);
+ addProperty("isReference",this,&Private::isReference);
+ addProperty("externalReference",this,&Private::externalReference);
addNamespaces(addCls);
addClasses(inherit,hideSuper);
@@ -5661,7 +5866,7 @@ class NestingNodeContext::Private : public PropertyMapper
{
if (!m_cache.pageContext && m_def->definitionType()==Definition::TypePage)
{
- m_cache.pageContext.reset(PageContext::alloc((PageDef*)m_def));
+ m_cache.pageContext.reset(PageContext::alloc((PageDef*)m_def,FALSE,FALSE));
}
if (m_cache.pageContext)
{
@@ -5735,6 +5940,14 @@ class NestingNodeContext::Private : public PropertyMapper
{
return m_def->getOutputFileBase();
}
+ TemplateVariant isReference() const
+ {
+ return m_def->isReference();
+ }
+ TemplateVariant externalReference() const
+ {
+ return m_def->externalReference(relPathAsString());
+ }
//------------------------------------------------------------------
@@ -6680,13 +6893,13 @@ TemplateVariant FileTreeContext::get(const char *name) const
class PageTreeContext::Private : public PropertyMapper
{
public:
- Private()
+ Private(const PageSDict *pages)
{
m_pageTree.reset(NestingContext::alloc(0,0));
// Add pages
- if (Doxygen::pageSDict)
+ if (pages)
{
- m_pageTree->addPages(*Doxygen::pageSDict,TRUE);
+ m_pageTree->addPages(*pages,TRUE);
}
//%% PageNodeList tree:
@@ -6755,9 +6968,9 @@ class PageTreeContext::Private : public PropertyMapper
};
//%% }
-PageTreeContext::PageTreeContext() : RefCountedContext("PageTreeContext")
+PageTreeContext::PageTreeContext(const PageSDict *pages) : RefCountedContext("PageTreeContext")
{
- p = new Private;
+ p = new Private(pages);
}
PageTreeContext::~PageTreeContext()
@@ -6784,7 +6997,7 @@ class PageListContext::Private : public GenericNodeListContext
{
if (!pd->getGroupDef() && !pd->isReference())
{
- append(PageContext::alloc(pd));
+ append(PageContext::alloc(pd,FALSE,FALSE));
}
}
}
@@ -6819,6 +7032,55 @@ TemplateListIntf::ConstIterator *PageListContext::createIterator() const
//------------------------------------------------------------------------
+//%% list ExampleList[Page]: list of pages
+class ExampleListContext::Private : public GenericNodeListContext
+{
+ public:
+ Private()
+ {
+ if (Doxygen::exampleSDict)
+ {
+ PageSDict::Iterator pdi(*Doxygen::exampleSDict);
+ PageDef *pd=0;
+ for (pdi.toFirst();(pd=pdi.current());++pdi)
+ {
+ if (!pd->getGroupDef() && !pd->isReference())
+ {
+ append(PageContext::alloc(pd,FALSE,TRUE));
+ }
+ }
+ }
+ }
+};
+
+ExampleListContext::ExampleListContext() : RefCountedContext("ExampleListContext")
+{
+ p = new Private;
+}
+
+ExampleListContext::~ExampleListContext()
+{
+ delete p;
+}
+
+// TemplateListIntf
+int ExampleListContext::count() const
+{
+ return p->count();
+}
+
+TemplateVariant ExampleListContext::at(int index) const
+{
+ return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *ExampleListContext::createIterator() const
+{
+ return p->createIterator();
+}
+
+//------------------------------------------------------------------------
+
//%% list ModuleList[ModuleNode]: list of directories and/or files
class ModuleListContext::Private : public GenericNodeListContext
{
@@ -6974,6 +7236,8 @@ class NavPathElemContext::Private : public PropertyMapper
addProperty("fileName",this,&Private::fileName);
addProperty("anchor",this,&Private::anchor);
addProperty("text",this,&Private::text);
+ addProperty("isReference",this,&Private::isReference);
+ addProperty("externalReference",this,&Private::externalReference);
}
TemplateVariant isLinkable() const
{
@@ -7008,6 +7272,19 @@ class NavPathElemContext::Private : public PropertyMapper
}
return text;
}
+ TemplateVariant isReference() const
+ {
+ return m_def->isReference();
+ }
+ QCString relPathAsString() const
+ {
+ static bool createSubdirs = Config_getBool("CREATE_SUBDIRS");
+ return createSubdirs ? QCString("../../") : QCString("");
+ }
+ TemplateVariant externalReference() const
+ {
+ return m_def->externalReference(relPathAsString());
+ }
private:
Definition *m_def;
};
@@ -7033,12 +7310,30 @@ TemplateVariant NavPathElemContext::get(const char *name) const
//%% struct ExampleList: list of examples page
//%% {
-class ExampleListContext::Private : public PropertyMapper
+class ExampleTreeContext::Private : public PropertyMapper
{
public:
- TemplateVariant items() const
+ Private()
{
- return m_pageList.get();
+ m_exampleTree.reset(NestingContext::alloc(0,0));
+ // Add pages
+ if (Doxygen::exampleSDict)
+ {
+ m_exampleTree->addPages(*Doxygen::exampleSDict,TRUE);
+ }
+
+ addProperty("tree",this,&Private::tree);
+ addProperty("fileName",this,&Private::fileName);
+ addProperty("relPath",this,&Private::relPath);
+ addProperty("highlight",this,&Private::highlight);
+ addProperty("subhighlight",this,&Private::subhighlight);
+ addProperty("title",this,&Private::title);
+ addProperty("preferredDepth",this,&Private::preferredDepth);
+ addProperty("maxDepth",this,&Private::maxDepth);
+ }
+ TemplateVariant tree() const
+ {
+ return m_exampleTree.get();
}
TemplateVariant fileName() const
{
@@ -7060,33 +7355,49 @@ class ExampleListContext::Private : public PropertyMapper
{
return theTranslator->trExamples();
}
- Private()
+ TemplateVariant maxDepth() const
{
- m_pageList.reset(PageListContext::alloc(Doxygen::exampleSDict));
-
- addProperty("items",this,&Private::items);
- addProperty("fileName",this,&Private::fileName);
- addProperty("relPath",this,&Private::relPath);
- addProperty("highlight",this,&Private::highlight);
- addProperty("subhighlight",this,&Private::subhighlight);
- addProperty("title",this,&Private::title);
+ if (!m_cache.maxDepthComputed)
+ {
+ m_cache.maxDepth = computeMaxDepth(m_exampleTree.get());
+ m_cache.maxDepthComputed=TRUE;
+ }
+ return m_cache.maxDepth;
+ }
+ TemplateVariant preferredDepth() const
+ {
+ if (!m_cache.preferredDepthComputed)
+ {
+ m_cache.preferredDepth = computePreferredDepth(m_exampleTree.get(),maxDepth().toInt());
+ m_cache.preferredDepthComputed=TRUE;
+ }
+ return m_cache.preferredDepth;
}
private:
- SharedPtr<PageListContext> m_pageList;
+ SharedPtr<NestingContext> m_exampleTree;
+ struct Cachable
+ {
+ Cachable() : maxDepthComputed(FALSE), preferredDepthComputed(FALSE) {}
+ int maxDepth;
+ bool maxDepthComputed;
+ int preferredDepth;
+ bool preferredDepthComputed;
+ };
+ mutable Cachable m_cache;
};
//%% }
-ExampleListContext::ExampleListContext() : RefCountedContext("ExampleListContext")
+ExampleTreeContext::ExampleTreeContext() : RefCountedContext("ExampleTreeContext")
{
p = new Private;
}
-ExampleListContext::~ExampleListContext()
+ExampleTreeContext::~ExampleTreeContext()
{
delete p;
}
-TemplateVariant ExampleListContext::get(const char *name) const
+TemplateVariant ExampleTreeContext::get(const char *name) const
{
return p->get(name);
}
@@ -9201,8 +9512,9 @@ void generateOutputViaTemplate()
SharedPtr<DirListContext> dirList (DirListContext::alloc());
SharedPtr<FileListContext> fileList (FileListContext::alloc());
SharedPtr<FileTreeContext> fileTree (FileTreeContext::alloc());
- SharedPtr<PageTreeContext> pageTree (PageTreeContext::alloc());
+ SharedPtr<PageTreeContext> pageTree (PageTreeContext::alloc(Doxygen::pageSDict));
SharedPtr<PageListContext> pageList (PageListContext::alloc(Doxygen::pageSDict));
+ SharedPtr<ExampleTreeContext> exampleTree (ExampleTreeContext::alloc());
SharedPtr<ExampleListContext> exampleList (ExampleListContext::alloc());
SharedPtr<ModuleTreeContext> moduleTree (ModuleTreeContext::alloc());
SharedPtr<ModuleListContext> moduleList (ModuleListContext::alloc());
@@ -9237,6 +9549,8 @@ void generateOutputViaTemplate()
ctx->set("pageList",pageList.get());
//%% PageTree pageTree
ctx->set("pageTree",pageTree.get());
+ //%% ExampleTree exampleTree
+ ctx->set("exampleTree",exampleTree.get());
//%% ExampleList exampleList
ctx->set("exampleList",exampleList.get());
//%% ModuleTree moduleTree
@@ -9248,7 +9562,7 @@ void generateOutputViaTemplate()
//%% Page mainPage
if (Doxygen::mainPage)
{
- SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE));
+ SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE,FALSE));
ctx->set("mainPage",mainPage.get());
}
else
@@ -9256,7 +9570,7 @@ void generateOutputViaTemplate()
// TODO: for LaTeX output index should be main... => solve in template
Doxygen::mainPage = new PageDef("[generated]",1,"index","",theTranslator->trMainPage());
Doxygen::mainPage->setFileName("index",TRUE);
- SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE));
+ SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE,FALSE));
ctx->set("mainPage",mainPage.get());
}
//%% GlobalsIndex globalsIndex:
diff --git a/src/context.h b/src/context.h
index 77a3a95..66b1634 100644
--- a/src/context.h
+++ b/src/context.h
@@ -329,7 +329,7 @@ class DirContext : public RefCountedContext, public TemplateStructIntf
class PageContext : public RefCountedContext, public TemplateStructIntf
{
public:
- static PageContext *alloc(PageDef *pd,bool isMainPage=FALSE) { return new PageContext(pd,isMainPage); }
+ static PageContext *alloc(PageDef *pd,bool isMainPage,bool isExample) { return new PageContext(pd,isMainPage,isExample); }
// TemplateStructIntf methods
virtual TemplateVariant get(const char *name) const;
@@ -337,7 +337,7 @@ class PageContext : public RefCountedContext, public TemplateStructIntf
virtual int release() { return RefCountedContext::release(); }
private:
- PageContext(PageDef *,bool isMainPage);
+ PageContext(PageDef *,bool isMainPage,bool isExample);
~PageContext();
class Private;
Private *p;
@@ -710,7 +710,7 @@ class PageListContext : public RefCountedContext, public TemplateListIntf
class PageTreeContext : public RefCountedContext, public TemplateStructIntf
{
public:
- static PageTreeContext *alloc() { return new PageTreeContext; }
+ static PageTreeContext *alloc(const PageSDict *pages) { return new PageTreeContext(pages); }
// TemplateStructIntf methods
virtual TemplateVariant get(const char *name) const;
@@ -718,7 +718,7 @@ class PageTreeContext : public RefCountedContext, public TemplateStructIntf
virtual int release() { return RefCountedContext::release(); }
private:
- PageTreeContext();
+ PageTreeContext(const PageSDict *pages);
~PageTreeContext();
class Private;
Private *p;
@@ -788,13 +788,15 @@ class ModuleTreeContext : public RefCountedContext, public TemplateStructIntf
//----------------------------------------------------
-class ExampleListContext : public RefCountedContext, public TemplateStructIntf
+class ExampleListContext : public RefCountedContext, public TemplateListIntf
{
public:
- static ExampleListContext *alloc() { return new ExampleListContext(); }
+ static ExampleListContext *alloc() { return new ExampleListContext; }
- // TemplateStructIntf methods
- virtual TemplateVariant get(const char *name) const;
+ // TemplateListIntf methods
+ virtual int count() const;
+ virtual TemplateVariant at(int index) const;
+ virtual TemplateListIntf::ConstIterator *createIterator() const;
virtual int addRef() { return RefCountedContext::addRef(); }
virtual int release() { return RefCountedContext::release(); }
@@ -807,6 +809,26 @@ class ExampleListContext : public RefCountedContext, public TemplateStructIntf
//----------------------------------------------------
+
+class ExampleTreeContext : public RefCountedContext, public TemplateStructIntf
+{
+ public:
+ static ExampleTreeContext *alloc() { return new ExampleTreeContext; }
+
+ // TemplateStructIntf methods
+ virtual TemplateVariant get(const char *name) const;
+ virtual int addRef() { return RefCountedContext::addRef(); }
+ virtual int release() { return RefCountedContext::release(); }
+
+ private:
+ ExampleTreeContext();
+ ~ExampleTreeContext();
+ class Private;
+ Private *p;
+};
+
+//----------------------------------------------------
+
class GlobalsIndexContext : public RefCountedContext, public TemplateStructIntf
{
public:
diff --git a/src/definition.cpp b/src/definition.cpp
index 457c6ea..a210295 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -1943,4 +1943,27 @@ bool Definition::hasBriefDescription() const
return !briefDescription().isEmpty() && briefMemberDesc;
}
+QCString Definition::externalReference(const QCString &relPath) const
+{
+ QCString ref = getReference();
+ if (!ref.isEmpty())
+ {
+ QCString *dest = Doxygen::tagDestinationDict[ref];
+ if (dest)
+ {
+ QCString result = *dest;
+ int l = result.length();
+ if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
+ { // relative path -> prepend relPath.
+ result.prepend(relPath);
+ l+=relPath.length();
+ }
+ if (l>0 && result.at(l-1)!='/') result+='/';
+ return result;
+ }
+ }
+ return relPath;
+}
+
+
diff --git a/src/definition.h b/src/definition.h
index 5905a55..4fe953b 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -231,6 +231,9 @@ class Definition : public DefinitionIntf
/*! Returns TRUE if this definition is imported via a tag file. */
virtual bool isReference() const;
+ /*! Convenience method to return a resolved external link */
+ QCString externalReference(const QCString &relPath) const;
+
/*! Returns the first line of the body of this item (applicable to classes and
* functions).
*/
diff --git a/src/diagram.cpp b/src/diagram.cpp
index 994c1a4..8a6ccf6 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -274,7 +274,7 @@ static void writeMapArea(FTextStream &t,ClassDef *cd,QCString relPath,
QCString tooltip = cd->briefDescriptionAsTooltip();
if (!tooltip.isEmpty())
{
- t << "title=\"" << tooltip << "\" ";
+ t << "title=\"" << convertToHtml(tooltip) << "\" ";
}
t << "alt=\"" << convertToXML(cd->displayName());
t << "\" shape=\"rect\" coords=\"" << x << "," << y << ",";
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 51b9341..841ad56 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -7847,7 +7847,7 @@ static void generateFileSources()
QStrList filesInSameTu;
fd->getAllIncludeFilesRecursively(filesInSameTu);
fd->startParsing();
- if (fd->generateSourceFile()) // sources need to be shown in the output
+ if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
{
msg("Generating code for file %s...\n",fd->docName().data());
fd->writeSource(*g_outputList,FALSE,filesInSameTu);
@@ -7870,7 +7870,7 @@ static void generateFileSources()
FileDef *ifd=findFileDef(Doxygen::inputNameDict,incFile,ambig);
if (ifd && !ifd->isReference())
{
- if (ifd->generateSourceFile()) // sources need to be shown in the output
+ if (ifd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
{
msg(" Generating code for file %s...\n",ifd->docName().data());
ifd->writeSource(*g_outputList,TRUE,moreFiles);
@@ -7903,7 +7903,7 @@ static void generateFileSources()
{
QStrList filesInSameTu;
fd->startParsing();
- if (fd->generateSourceFile()) // sources need to be shown in the output
+ if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
{
msg("Generating code for file %s...\n",fd->docName().data());
fd->writeSource(*g_outputList,FALSE,filesInSameTu);
@@ -7933,7 +7933,7 @@ static void generateFileSources()
{
QStrList filesInSameTu;
fd->startParsing();
- if (fd->generateSourceFile()) // sources need to be shown in the output
+ if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
{
msg("Generating code for file %s...\n",fd->docName().data());
fd->writeSource(*g_outputList,FALSE,filesInSameTu);
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 2e9795e..d1e4ffb 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -1927,7 +1927,7 @@ void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,
if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
if (!anchor.isEmpty()) m_t << "#" << anchor;
m_t << "\"";
- if (!tooltip.isEmpty()) m_t << " title=\"" << substitute(tooltip,"\"","&quot;") << "\"";
+ if (!tooltip.isEmpty()) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
m_t << ">";
}
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 7e9c806..1b72661 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -549,7 +549,7 @@ void HtmlCodeGenerator::_writeCodeLink(const char *className,
if (f) m_t << f << Doxygen::htmlFileExtension;
if (anchor) m_t << "#" << anchor;
m_t << "\"";
- if (tooltip) m_t << " title=\"" << tooltip << "\"";
+ if (tooltip) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
m_t << ">";
docify(name);
m_t << "</a>";
@@ -1340,11 +1340,9 @@ void HtmlGenerator::endClassDiagram(const ClassDiagram &d,
startSectionContent(t,m_sectionCount);
t << " <div class=\"center\">" << endl;
t << " <img src=\"";
- t << relPath << fileName << ".png\" usemap=\"#";
- docify(name);
+ t << relPath << fileName << ".png\" usemap=\"#" << convertToId(name);
t << "_map\" alt=\"\"/>" << endl;
- t << " <map id=\"";
- docify(name);
+ t << " <map id=\"" << convertToId(name);
t << "_map\" name=\"";
docify(name);
t << "_map\">" << endl;
diff --git a/src/index.cpp b/src/index.cpp
index 06d2185..272e86f 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -1640,7 +1640,7 @@ static void writeAnnotatedClassList(OutputList &ol)
static QCString letterToLabel(uint startLetter)
{
char s[11]; // max 0x12345678 + '\0'
- if (startLetter>0x20 && startLetter<=0x7f) // printable ASCII character
+ if (isId(startLetter)) // printable ASCII character
{
s[0]=(char)startLetter;
s[1]=0;
@@ -2476,8 +2476,8 @@ static void writeQuickMemberIndex(OutputList &ol,
anchor=fullName+extension+"#index_";
else
anchor=fullName+"_"+letterToLabel(i)+extension+"#index_";
- startQuickIndexItem(ol,anchor+ci,i==page,TRUE,first);
- ol.writeString(is);
+ startQuickIndexItem(ol,anchor+is,i==page,TRUE,first);
+ ol.writeString(ci);
endQuickIndexItem(ol);
first=FALSE;
}
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index ad4cc89..681b575 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -47,7 +47,7 @@ LatexCodeGenerator::LatexCodeGenerator(FTextStream &t,const QCString &relPath,co
setTextStream(t);
}
-LatexCodeGenerator::LatexCodeGenerator() : m_col(0)
+LatexCodeGenerator::LatexCodeGenerator() : m_col(0), m_streamSet(FALSE)
{
m_prettyCode=Config_getBool("LATEX_SOURCE_CODE");
}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 7f93b51..9fcc2a2 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -967,7 +967,7 @@ QCString MemberDef::getOutputFileBase() const
return baseName;
}
}
- else if (m_impl->nspace)
+ else if (m_impl->nspace && m_impl->nspace->isLinkableInProject())
{
baseName=m_impl->nspace->getOutputFileBase();
}
@@ -1092,7 +1092,8 @@ void MemberDef::_computeLinkableInProject()
m_isLinkableCached = 1; // in class but class not linkable
return;
}
- if (!m_impl->group && m_impl->nspace && !m_impl->related && !m_impl->nspace->isLinkableInProject())
+ if (!m_impl->group && m_impl->nspace && !m_impl->related && !m_impl->nspace->isLinkableInProject()
+ && (m_impl->fileDef==0 || !m_impl->fileDef->isLinkableInProject()))
{
//printf("in a namespace but namespace not linkable!\n");
m_isLinkableCached = 1; // in namespace but namespace not linkable
@@ -1914,7 +1915,7 @@ bool MemberDef::isDetailedSectionVisible(bool inGroup,bool inFile) const
static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
bool groupFilter = getGroupDef()==0 || inGroup || separateMemPages;
- bool fileFilter = getNamespaceDef()==0 || !inFile;
+ bool fileFilter = getNamespaceDef()==0 || !getNamespaceDef()->isLinkable() || !inFile;
bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
getClassDef()!=0 && getClassDef()->isSimple();
@@ -2261,7 +2262,7 @@ void MemberDef::_writeCategoryRelation(OutputList &ol)
text = theTranslator->trExtendsClass();
name = m_impl->classDef->categoryOf()->displayName();
}
- i=text.find("@1");
+ i=text.find("@0");
if (i!=-1)
{
MemberDef *md = m_impl->categoryRelation;
@@ -2495,7 +2496,7 @@ void MemberDef::_writeGroupInclude(OutputList &ol,bool inGroup)
if (isIDLorJava) ol.docify("\""); else ol.docify("<");
- if (fd && fd->isLinkable())
+ if (fd->isLinkable())
{
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),fd->anchor(),nm);
}
@@ -4481,6 +4482,11 @@ MemberDef *MemberDef::getEnumScope() const
return m_impl->enumScope;
}
+bool MemberDef::livesInsideEnum() const
+{
+ return m_impl->livesInsideEnum;
+}
+
MemberList *MemberDef::enumFieldList() const
{
return m_impl->enumFields;
diff --git a/src/memberdef.h b/src/memberdef.h
index f60fb54..19a37ea 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -176,6 +176,7 @@ class MemberDef : public Definition
bool protectionVisible() const;
bool showInCallGraph() const;
bool isStrongEnumValue() const;
+ bool livesInsideEnum() const;
// derived getters
bool isFriendToHide() const;
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 64fe44a..75e9785 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -435,8 +435,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
}
delete rootNode;
}
- ol.endMemberDeclaration(md->anchor(),inheritId);
ol.endMemberItem();
+ ol.endMemberDeclaration(md->anchor(),inheritId);
}
md->warnIfUndocumented();
break;
@@ -681,7 +681,7 @@ void MemberList::writeDocumentation(OutputList &ol,
}
if (memberGroupList)
{
- //printf("MemberList::writeDocumentation() -- member groups\n");
+ printf("MemberList::writeDocumentation() -- member groups %d\n",memberGroupList->count());
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
diff --git a/src/template.cpp b/src/template.cpp
index debd8fa..6ce187b 100644
--- a/src/template.cpp
+++ b/src/template.cpp
@@ -839,6 +839,31 @@ class FilterRaw
//-----------------------------------------------------------------------------
+/** @brief The implementation of the "list" filter */
+class FilterList
+{
+ public:
+ static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+ {
+ if (v.isValid())
+ {
+ if (v.type()==TemplateVariant::List) // input is already a list
+ {
+ return v;
+ }
+ // create a list with v as the only element
+ TemplateList *list = TemplateList::alloc();
+ list->append(v);
+ return list;
+ }
+ else
+ {
+ return v;
+ }
+ }
+};
+
+//-----------------------------------------------------------------------------
/** @brief The implementation of the "texlabel" filter */
class FilterTexLabel
{
@@ -1268,16 +1293,19 @@ class FilterAlphaIndex
static QCString keyToLabel(uint startLetter)
{
char s[11]; // 0x12345678 + '\0'
- if (startLetter>0x20 && startLetter<=0x7f) // printable ASCII character
+ if ((startLetter>='0' && startLetter<='9') ||
+ (startLetter>='a' && startLetter<='z') ||
+ (startLetter>='A' && startLetter<='Z'))
{
- s[0]=tolower((char)startLetter);
- s[1]=0;
+ int i=0;
+ if (startLetter>='0' && startLetter<='9') s[i++] = 'x';
+ s[i++]=tolower((char)startLetter);
+ s[i++]=0;
}
else
{
const char hex[]="0123456789abcdef";
int i=0;
- s[i++]='0';
s[i++]='x';
if (startLetter>(1<<24)) // 4 byte character
{
@@ -1492,6 +1520,7 @@ class TemplateFilterFactory
static TemplateFilterFactory::AutoRegister<FilterAdd> fAdd("add");
static TemplateFilterFactory::AutoRegister<FilterGet> fGet("get");
static TemplateFilterFactory::AutoRegister<FilterRaw> fRaw("raw");
+static TemplateFilterFactory::AutoRegister<FilterList> fList("list");
static TemplateFilterFactory::AutoRegister<FilterAppend> fAppend("append");
static TemplateFilterFactory::AutoRegister<FilterLength> fLength("length");
static TemplateFilterFactory::AutoRegister<FilterNoWrap> fNoWrap("nowrap");
@@ -2429,7 +2458,7 @@ class TemplateImpl : public TemplateNode, public Template
TemplateContextImpl::TemplateContextImpl(const TemplateEngine *e)
: m_engine(e), m_templateName("<unknown>"), m_line(1), m_activeEscapeIntf(0),
- m_spacelessIntf(0), m_spacelessEnabled(FALSE), m_indices(TemplateStruct::alloc())
+ m_spacelessIntf(0), m_spacelessEnabled(FALSE), m_tabbingEnabled(FALSE), m_indices(TemplateStruct::alloc())
{
m_indexStacks.setAutoDelete(TRUE);
m_contextStack.setAutoDelete(TRUE);
diff --git a/src/translator_br.h b/src/translator_br.h
index 6a7966f..f9fe664 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1903,7 +1903,7 @@ class TranslatorBrazilian : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Provido pela categoria @1.";
+ return "Provido pela categoria @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorBrazilian : public Translator
*/
virtual QCString trExtendsClass()
{
- return "estende a classe @1.";
+ return "estende a classe @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_cn.h b/src/translator_cn.h
index 26160d4..8d8e4ae 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -1815,7 +1815,7 @@ class TranslatorChinese : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "由 category @1 提供.";
+ return "由 category @0 提供.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1824,7 +1824,7 @@ class TranslatorChinese : public Translator
*/
virtual QCString trExtendsClass()
{
- return "扩展类 @1.";
+ return "扩展类 @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 2ddc029..e4a5692 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -1936,7 +1936,7 @@ class TranslatorCzech : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Deklarováno v kategorii @1.";
+ return "Deklarováno v kategorii @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1945,7 +1945,7 @@ class TranslatorCzech : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Rozšiřuje třídu @1.";
+ return "Rozšiřuje třídu @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_de.h b/src/translator_de.h
index f2ca676..7d3d63a 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -1995,7 +1995,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_4
*/
virtual QCString trProvidedByCategory()
{
- return "Bestandteil der Kategorie @1.";
+ return "Bestandteil der Kategorie @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -2004,7 +2004,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_4
*/
virtual QCString trExtendsClass()
{
- return "Erweitert Klasse @1.";
+ return "Erweitert Klasse @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_en.h b/src/translator_en.h
index ba89726..a72c05a 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -1893,7 +1893,7 @@ class TranslatorEnglish : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Provided by category @1.";
+ return "Provided by category @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1902,7 +1902,7 @@ class TranslatorEnglish : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Extends class @1.";
+ return "Extends class @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_eo.h b/src/translator_eo.h
index 65f7e82..5415e81 100644
--- a/src/translator_eo.h
+++ b/src/translator_eo.h
@@ -1898,7 +1898,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_4
*/
virtual QCString trProvidedByCategory()
{
- return "Provizita de kategorio @1.";
+ return "Provizita de kategorio @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1907,7 +1907,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_4
*/
virtual QCString trExtendsClass()
{
- return "Etendi klason @1.";
+ return "Etendi klason @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_es.h b/src/translator_es.h
index 97d1d26..1b75465 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -1957,7 +1957,7 @@ class TranslatorSpanish : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Proporcionado por categoría @1.";
+ return "Proporcionado por categoría @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1966,7 +1966,7 @@ class TranslatorSpanish : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Extiende la clase @1.";
+ return "Extiende la clase @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_fr.h b/src/translator_fr.h
index e1fb5e6..65e77df 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -1954,7 +1954,7 @@ class TranslatorFrench : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Déclarée dans la catégorie @1.";
+ return "Déclarée dans la catégorie @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1963,7 +1963,7 @@ class TranslatorFrench : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Dérive la classe @1.";
+ return "Dérive la classe @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_gr.h b/src/translator_gr.h
index e264deb..97eebc4 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -1864,7 +1864,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
*/
virtual QCString trProvidedByCategory()
{
- return "Παρέχεται από την κατηγορία @1.";
+ return "Παρέχεται από την κατηγορία @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1873,7 +1873,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
*/
virtual QCString trExtendsClass()
{
- return "Κληρονομει την κλάση @1.";
+ return "Κληρονομει την κλάση @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_it.h b/src/translator_it.h
index d27c9dd..e2c51c7 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -1877,7 +1877,7 @@ class TranslatorItalian : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Fornito dalla categoria @1.";
+ return "Fornito dalla categoria @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1886,7 +1886,7 @@ class TranslatorItalian : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Estende la classe @1.";
+ return "Estende la classe @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 66f1ac6..4dc9cba 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -1878,7 +1878,7 @@ class TranslatorJapanese : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "@1 カテゴリーから提供されています。";
+ return "@0 カテゴリーから提供されています。";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1887,7 +1887,7 @@ class TranslatorJapanese : public Translator
*/
virtual QCString trExtendsClass()
{
- return "@1 を拡張しています。";
+ return "@0 を拡張しています。";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 7d669a5..2ef50e8 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -1903,7 +1903,7 @@ class TranslatorKorean : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "카테고리 @1에 의해 제공됨.";
+ return "카테고리 @0에 의해 제공됨.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorKorean : public Translator
*/
virtual QCString trExtendsClass()
{
- return "클래스 @1 확장.";
+ return "클래스 @0 확장.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_lv.h b/src/translator_lv.h
index 20b2a38..35aab0f 100644
--- a/src/translator_lv.h
+++ b/src/translator_lv.h
@@ -1901,7 +1901,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
*/
virtual QCString trProvidedByCategory()
{
- return "Nodrošina kategorija @1.";
+ return "Nodrošina kategorija @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1910,7 +1910,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
*/
virtual QCString trExtendsClass()
{
- return "Paplašina klasi @1.";
+ return "Paplašina klasi @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_nl.h b/src/translator_nl.h
index ab811a5..241cf97 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -1488,7 +1488,7 @@ class TranslatorDutch : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Wordt aangeboden door category @1.";
+ return "Wordt aangeboden door category @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1497,7 +1497,7 @@ class TranslatorDutch : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Uitbereiding van klasse @1.";
+ return "Uitbereiding van klasse @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 5edfdf6..5df58d7 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -1903,7 +1903,7 @@ class TranslatorPortuguese : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Provido pela categoria @1.";
+ return "Provido pela categoria @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorPortuguese : public Translator
*/
virtual QCString trExtendsClass()
{
- return "estende a classe @1.";
+ return "estende a classe @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 394e570..eba7d47 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -1908,7 +1908,7 @@ class TranslatorRomanian : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Furnizat de categoria @1.";
+ return "Furnizat de categoria @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1917,7 +1917,7 @@ class TranslatorRomanian : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Extinde clasa @1.";
+ return "Extinde clasa @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ru.h b/src/translator_ru.h
index c06027c..2162a34 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -1869,7 +1869,7 @@ class TranslatorRussian : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "По группам @1.";
+ return "По группам @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1878,7 +1878,7 @@ class TranslatorRussian : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Расширяет класс @1.";
+ return "Расширяет класс @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 875e92c..d6d94a6 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -1866,7 +1866,7 @@ class TranslatorSlovak : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Deklarované v kategórii @1.";
+ return "Deklarované v kategórii @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorSlovak : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Rozširuje triedu @1.";
+ return "Rozširuje triedu @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_sv.h b/src/translator_sv.h
index 68b8a1b..d491632 100644
--- a/src/translator_sv.h
+++ b/src/translator_sv.h
@@ -1764,7 +1764,7 @@ class TranslatorSwedish : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "Tillhandahålls av kategori @1.";
+ return "Tillhandahålls av kategori @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1773,7 +1773,7 @@ class TranslatorSwedish : public Translator
*/
virtual QCString trExtendsClass()
{
- return "Utökar klass @1.";
+ return "Utökar klass @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 31aeede..79bf6f5 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -1866,7 +1866,7 @@ class TranslatorChinesetraditional : public Translator
*/
virtual QCString trProvidedByCategory()
{
- return "由 @1 分類所提供.";
+ return "由 @0 分類所提供.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorChinesetraditional : public Translator
*/
virtual QCString trExtendsClass()
{
- return "延伸 @1 類別 .";
+ return "延伸 @0 類別 .";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 871acd1..964285b 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -1866,7 +1866,7 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
*/
virtual QCString trProvidedByCategory()
{
- return "Забезпечено категорією @1.";
+ return "Забезпечено категорією @0.";
}
/*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
*/
virtual QCString trExtendsClass()
{
- return "Розширює клас @1.";
+ return "Розширює клас @0.";
}
/*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/util.cpp b/src/util.cpp
index 1a94830..432a76f 100755
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -5676,6 +5676,37 @@ QCString stripScope(const char *name)
return name;
}
+/*! Converts a string to a HTML id string */
+QCString convertToId(const char *s)
+{
+ static const char hex[] = "0123456789ABCDEF";
+ static GrowBuf growBuf;
+ growBuf.clear();
+ if (s==0) return "";
+ const char *p=s;
+ char c;
+ bool first=TRUE;
+ while ((c=*p++))
+ {
+ char encChar[4];
+ if ((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') || c=='-' || c==':' || c=='.')
+ { // any permissive character except _
+ if (first && c>='0' && c<='9') growBuf.addChar('a'); // don't start with a digit
+ growBuf.addChar(c);
+ }
+ else
+ {
+ encChar[0]='_';
+ encChar[1]=hex[((unsigned char)c)>>4];
+ encChar[2]=hex[((unsigned char)c)&0xF];
+ encChar[3]=0;
+ growBuf.addStr(encChar);
+ }
+ first=FALSE;
+ }
+ growBuf.addChar(0);
+ return growBuf.get();
+}
/*! Converts a string to an XML-encoded string */
QCString convertToXML(const char *s)
@@ -6519,8 +6550,10 @@ void filterLatexString(FTextStream &t,const char *str,
case '}': t << "\\}"; break;
case '_': t << "\\_"; break;
case ' ': if (keepSpaces) t << "~"; else t << ' ';
- default:
+ break;
+ default:
t << (char)c;
+ break;
}
}
else
diff --git a/src/util.h b/src/util.h
index acb3e92..6c72594 100755
--- a/src/util.h
+++ b/src/util.h
@@ -274,6 +274,8 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te
QCString stripScope(const char *name);
+QCString convertToId(const char *s);
+
QCString convertToHtml(const char *s,bool keepEntities=TRUE);
QCString convertToLaTeX(const QCString &s,bool insideTabbing=FALSE,bool keepSpaces=FALSE);
diff --git a/templates/html/htmlannotated.tpl b/templates/html/htmlannotated.tpl
index dd72ac9..c5faa14 100644
--- a/templates/html/htmlannotated.tpl
+++ b/templates/html/htmlannotated.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.classListDescription }}
</div>
-{% indexentry nav name=tr.classes file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classes file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=classTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl
index 84807ec..aacaf92 100644
--- a/templates/html/htmlbase.tpl
+++ b/templates/html/htmlbase.tpl
@@ -192,6 +192,15 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
<div id="nav-path" class="navpath">{# id is needed for treeview function! #}
<ul>
{# navpath #}
+ {% if page|get:'navigationPath' %}
+ {% for obj in page.navigationPath %}
+ <li class="navelem">
+ {% with text=obj.text %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ </li>
+ {% endfor %}
+ {% endif %}
<li class="footer">
{% if config.HTML_TIMESTAMP %}
{{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
diff --git a/templates/html/htmlclass.tpl b/templates/html/htmlclass.tpl
index 24694b3..9a2b494 100644
--- a/templates/html/htmlclass.tpl
+++ b/templates/html/htmlclass.tpl
@@ -2,9 +2,11 @@
{% msg %}Generating HTML output for class {{ compound.name }}{% endmsg %}
{% block navpath %}
-{% with navpath=compound.navigationPath %}
- {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+{% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+{% endif %}
{% endblock %}
{% block title %}
@@ -378,7 +380,7 @@
{% endif %}
{# member definitions #}
{# inline classes #}
- {% with classList=compound.classes %}
+ {% with classList=compound.innerClasses %}
{% include 'htmlinlineclasses.tpl' %}
{% endwith %}
{# typedefs #}
diff --git a/templates/html/htmlclasses.tpl b/templates/html/htmlclasses.tpl
index 8a1bf18..c00ce32 100644
--- a/templates/html/htmlclasses.tpl
+++ b/templates/html/htmlclasses.tpl
@@ -2,7 +2,7 @@
{% block content %}
<div class="contents">
<div class="textblock">
-{% indexentry nav name=tr.classIndex file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classIndex file=page.fileName anchor='' isReference=False %}
</div>
{% with index=classIndex.list|alphaIndex:'name' %}
{# quick index at top #}
diff --git a/templates/html/htmldeclcomp.tpl b/templates/html/htmldeclcomp.tpl
index 4bd99d2..3ae90b8 100644
--- a/templates/html/htmldeclcomp.tpl
+++ b/templates/html/htmldeclcomp.tpl
@@ -21,7 +21,6 @@
<tr class="memdesc:{{ nc.anchor }}"><td class="mdescLeft">&#160;</td><td class="mdescRight">
{{ nc.brief }}
{% if nc.hasDetails %}
- {# TODO: link to group if member is grouped #}
<a href="{{ page.relPath }}{{ nc.fileName }}{{ config.HTML_FILE_EXTENSION}}{% if nc.anchor %}#{{ nc.anchor }}{% endif %}">{{ tr.more }}</a>
{% endif %}
<br/></td></tr>
diff --git a/templates/html/htmldir.tpl b/templates/html/htmldir.tpl
index a399759..aeb2fa5 100644
--- a/templates/html/htmldir.tpl
+++ b/templates/html/htmldir.tpl
@@ -2,18 +2,10 @@
{% msg %}Generating HTML output for directory {{ compound.name }}{% endmsg %}
{% block navpath %}
- {% if compound.navigationPath %}
- <div id="nav-path" class="navpath">
- <ul>
- {% for obj in compound.navigationPath %}
- <li class="navelem">
- {% with text=obj.text %}
- {% include 'htmlobjlink.tpl' %}
- {% endwith %}
- </li>
- {% endfor %}
- </ul>
- </div>
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
{% endif %}
{% endblock %}
diff --git a/templates/html/htmldirtree.tpl b/templates/html/htmldirtree.tpl
index 2fa266a..a6b9b21 100644
--- a/templates/html/htmldirtree.tpl
+++ b/templates/html/htmldirtree.tpl
@@ -11,7 +11,7 @@
{# the table with entries #}
<table class="directory">
{% recursetree tree.tree %}
- {% indexentry nav name=node.name file=node.fileName anchor=node.anchor %}
+ {% indexentry nav name=node.name file=node.fileName anchor=node.anchor isReference=node.isReference externalReference=node.externalReference %}
{% spaceless %}
<tr id="row_{{ node.id }}" class="{% cycle 'even' 'odd' %}"{%if node.level>tree.preferredDepth %} style="display:none;"{% endif %}>
<td class="entry">
@@ -30,7 +30,13 @@
{% elif node.dir %}
<span id="img_{{ node.id }}" class="iconf{%if node.level+1<tree.preferredDepth %}open{% else %}closed{% endif %}" onclick="toggleFolder('{{ node.id }}')">&#160;</span>
{% elif node.file %}
+ {% if node.file.hasSourceFile %}
+ <a href="{{ node.file.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">
+ {% endif %}
<span class="icondoc"></span>
+ {% if node.file.hasSourceFile %}
+ </a>
+ {% endif %}
{% endif %}
{% with obj=node text=node.name %}
{% include 'htmlobjlink.tpl' %}
diff --git a/templates/html/htmlexample.tpl b/templates/html/htmlexample.tpl
new file mode 100644
index 0000000..f8c1f96
--- /dev/null
+++ b/templates/html/htmlexample.tpl
@@ -0,0 +1,17 @@
+{% extend 'htmlbase.tpl' %}
+{% msg %}Generating HTML output for example {{ compound.name }}{% endmsg %}
+
+{% block navpath %}
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+ {% endif %}
+{% endblock %}
+
+{% block content %}
+<div class="contents">
+{{ compound.details }}
+{{ compound.example }}
+</div>
+{% endblock %}
diff --git a/templates/html/htmlexamples.tpl b/templates/html/htmlexamples.tpl
new file mode 100644
index 0000000..58392df
--- /dev/null
+++ b/templates/html/htmlexamples.tpl
@@ -0,0 +1,15 @@
+{% extend 'htmlbase.tpl' %}
+{% block content %}
+<div class="contents">
+<div class="textblock">
+{{ tr.examplesDescription }}
+</div>
+{% indexentry nav name=tr.examples file=page.fileName anchor='' isReference=False %}
+{% opensubindex nav %}
+{% with tree=exampleTree %}
+ {% include 'htmldirtree.tpl' %}
+{% endwith %}
+{% closesubindex nav %}
+</div><!-- contents -->
+{% endblock %}
+
diff --git a/templates/html/htmlfile.tpl b/templates/html/htmlfile.tpl
index dbf0841..80e2826 100644
--- a/templates/html/htmlfile.tpl
+++ b/templates/html/htmlfile.tpl
@@ -2,9 +2,11 @@
{% msg %}Generating HTML output for file {{ compound.name }}{% endmsg %}
{% block navpath %}
-{% with navpath=compound.navigationPath %}
- {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+ {% endif %}
{% endblock %}
{% block title %}
diff --git a/templates/html/htmlfiles.tpl b/templates/html/htmlfiles.tpl
index 1871d4d..55799ca 100644
--- a/templates/html/htmlfiles.tpl
+++ b/templates/html/htmlfiles.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.fileListDescription }}
</div>
-{% indexentry nav name=tr.fileList file=page.fileName anchor='' %}
+{% indexentry nav name=tr.fileList file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=fileTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlhierarchy.tpl b/templates/html/htmlhierarchy.tpl
index 5d03755..ff10172 100644
--- a/templates/html/htmlhierarchy.tpl
+++ b/templates/html/htmlhierarchy.tpl
@@ -7,7 +7,7 @@
<p><a href="inherits{{ config.HTML_FILE_EXTENSION }}">{{ tr.gotoGraphicalHierarchy }}</a></p>
{% endif %}
</div>
-{% indexentry nav name=tr.classHierarchy file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classHierarchy file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=classHierarchy %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlindexpages.tpl b/templates/html/htmlindexpages.tpl
index 65bf1b6..2886a69 100644
--- a/templates/html/htmlindexpages.tpl
+++ b/templates/html/htmlindexpages.tpl
@@ -9,7 +9,7 @@
{% for sect in index %}
{% with letter=sect.letter %}
{% set page_postfix=section|append:'_'|append:sect.label %}
- {% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' isReference=False %}
{# create index pages for all globals starting with a specific letter #}
{% create page.fileName|append:page_postfix|append:config.HTML_FILE_EXTENSION from template %}
{% endwith %}
diff --git a/templates/html/htmljsnavtree.tpl b/templates/html/htmljsnavtree.tpl
index 99a269e..9970161 100644
--- a/templates/html/htmljsnavtree.tpl
+++ b/templates/html/htmljsnavtree.tpl
@@ -1,7 +1,7 @@
var NAVTREE =
[
{% recursetree index.nav %}
- [ "{{ node.name }}", {% if node.file %}"{{ node.file }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
+ [ "{{ node.name }}", {% if node.file %}"{% if node.isReference %}{{ node.externalReference }}{% endif %}{{ node.file }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
{{ children }}
]{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
{% endrecursetree %}
diff --git a/templates/html/htmllayout.tpl b/templates/html/htmllayout.tpl
index c21ef91..52883a3 100644
--- a/templates/html/htmllayout.tpl
+++ b/templates/html/htmllayout.tpl
@@ -62,14 +62,14 @@
{# -------------------------------------------------- #}
{# global constants #}
-{% set maxItemsForFlatList=2 %}
-{% set maxItemsForMultiPageList=4 %}
+{% set maxItemsForFlatList=30 %}
+{% set maxItemsForMultiPageList=200 %}
{# global variable #}
{% set page_postfix='' %}
{# open the global navigation index #}
-{% indexentry nav name=tr.mainPage file='index' anchor='' %}
+{% indexentry nav name=tr.mainPage file='index' anchor='' isReference=False %}
{% opensubindex nav %}
{# ----------- HTML DOCUMENTATION PAGES ------------ #}
@@ -100,7 +100,6 @@
{% for compound in fileList %}
{% with page=compound %}
{# TODO: to deal with clang optimisation, we need to write the sources in a different order! #}
- {# TODO: now writing sources has the side-effect of creating cross-references. Need to split that up! #}
{% if compound.hasSourceFile %}
{% create compound.sourceFileName|append:config.HTML_FILE_EXTENSION from 'htmlsource.tpl' %}
{% endif %}
@@ -128,7 +127,12 @@
{% endwith %}
{% endfor %}
-{# TODO: write example documentation #}
+{# write example documentation #}
+{% for compound in exampleList %}
+ {% with page=compound %}
+ {% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlexample.tpl' %}
+ {% endwith %}
+{% endfor %}
{# ----------- INDEXES ------------ #}
@@ -139,6 +143,13 @@
{% endwith %}
{% endif %}
+{# ---- examples --- #}
+{% if exampleTree.tree %}
+ {% with page=exampleTree %}
+ {% create exampleTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlexamples.tpl' %}
+ {% endwith %}
+{% endif %}
+
{# --- modules --- #}
{% if moduleTree.tree %}
{% with page=moduleTree %}
@@ -147,8 +158,9 @@
{% endif %}
{# --- namespaces --- #}
-{% indexentry nav name=tr.namespaces file='' anchor='' %}
-{% opensubindex nav %}
+{% if namespaceList %}
+ {% indexentry nav name=tr.namespaces file='' anchor='' isReference=False %}
+ {% opensubindex nav %}
{% if namespaceTree.tree %}
{% with page=namespaceTree %}
@@ -159,16 +171,18 @@
{# write symbol indices for namespace members #}
{% if namespaceMembersIndex.all %}
{% with page=namespaceMembersIndex scope='namespace' template='htmlnsmembers.tpl' %}
- {% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' %}
+ {% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' isReference=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
-{% closesubindex nav %}
+ {% closesubindex nav %}
+{% endif %}
{# --- classes --- #}
-{% indexentry nav name=tr.classes file='' anchor='' %}
-{% opensubindex nav %}
+{% if classList %}
+ {% indexentry nav name=tr.classes file='' anchor='' isReference=False %}
+ {% opensubindex nav %}
{# write the annotated class list #}
{% if classTree.tree %}
@@ -184,12 +198,10 @@
{% endwith %}
{% endif %}
- {# TODO: write the class inheritance hierarchy #}
+ {# write the class inheritance hierarchy #}
{% if classHierarchy.tree %}
{% with page=classHierarchy %}
{% create classHierarchy.fileName|append:config.HTML_FILE_EXTENSION from 'htmlhierarchy.tpl' %}
- {% endwith %}
- {% with page=classHierarchy %}
{% if config.HAVE_DOT and config.GRAPHICAL_HIERARCHY %}
{% with fileName='inherits' %}
{% create fileName|append:config.HTML_FILE_EXTENSION from 'htmlgraphhierarchy.tpl' %}
@@ -201,16 +213,18 @@
{# write symbol indices for class members #}
{% if classMembersIndex.all %}
{% with page=classMembersIndex scope='class' template='htmlclmembers.tpl' %}
- {% indexentry nav name=tr.classMembers file=page.fileName anchor='' %}
+ {% indexentry nav name=tr.classMembers file=page.fileName anchor='' isReference=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
-{% closesubindex nav %}
+ {% closesubindex nav %}
+{% endif %}
{# --- files --- #}
-{% indexentry nav name=tr.files file='' anchor='' %}
-{% opensubindex nav %}
+{% if fileList %}
+ {% indexentry nav name=tr.files file='' anchor='' isReference=False %}
+ {% opensubindex nav %}
{# write the directory/file hierarchy #}
{% if fileTree.tree %}
@@ -222,12 +236,13 @@
{# write symbol indices for global namespace #}
{% if globalsIndex.all %}
{% with page=globalsIndex scope='file' template='htmlflmembers.tpl' %}
- {% indexentry nav name=tr.fileMembers file=page.fileName anchor='' %}
+ {% indexentry nav name=tr.fileMembers file=page.fileName anchor='' isReference=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
-{% closesubindex nav %}
+ {% closesubindex nav %}
+{% endif %}
{# write directory documentation pages #}
{% for compound in dirList %}
diff --git a/templates/html/htmlmembersindex.tpl b/templates/html/htmlmembersindex.tpl
index ef891df..700bce2 100644
--- a/templates/html/htmlmembersindex.tpl
+++ b/templates/html/htmlmembersindex.tpl
@@ -2,13 +2,13 @@
{% opensubindex nav %}
{# all members #}
{% with list=page.all section='' %}
- {% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# functions #}
{% if page.functions %}
{% set page_postfix='_func' %}
- {% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.functions section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -16,7 +16,7 @@
{# variables #}
{% if page.variables %}
{% set page_postfix='_vars' %}
- {% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.variables section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -24,7 +24,7 @@
{# typedefs #}
{% if page.typedefs %}
{% set page_postfix='_type' %}
- {% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.typedefs section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -32,7 +32,7 @@
{# enums #}
{% if page.enums %}
{% set page_postfix='_enum' %}
- {% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.enums section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -40,7 +40,7 @@
{# enumValues #}
{% if page.enumValues %}
{% set page_postfix='_eval' %}
- {% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.enumValues section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -48,7 +48,7 @@
{# macros #}
{% if page.macros %}
{% set page_postfix='_defs' %}
- {% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.macros section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -56,7 +56,7 @@
{# properties #}
{% if page.properties %}
{% set page_postfix='_prop' %}
- {% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.properties section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -64,7 +64,7 @@
{# events #}
{% if page.events %}
{% set page_postfix='_evnt' %}
- {% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.events section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
@@ -72,7 +72,7 @@
{# related #}
{% if page.related %}
{% set page_postfix='_rela' %}
- {% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' %}
+ {% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' isReference=False %}
{% with list=page.related section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
diff --git a/templates/html/htmlmemdecl.tpl b/templates/html/htmlmemdecl.tpl
index 6af75ce..c7894d8 100644
--- a/templates/html/htmlmemdecl.tpl
+++ b/templates/html/htmlmemdecl.tpl
@@ -17,7 +17,7 @@
enum&#160;</td><td class="memTemplItemRight" valign="bottom">
{# write name #}
{% if not member.isAnonymous %}
- {% with obj=member text=member.name %}
+ {% with obj=member text=member.nameWithContextFor:compound.compoundKind %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
@@ -74,7 +74,7 @@
{% with ctx=member.anonymousType anonymousNestingLevel=anonymousNestingLevel|add:1 %}
{{ ctx.compoundType }}
{% if ctx.bareName %}
- &#160;<b>{{ ctx.bareName }}</b> {# TODO: associated documentation is lost! #}
+ &#160;<b>{{ ctx.bareName }}</b>
{% endif %}
{</td></tr>
{# recursively write members that can appear inside the anonymous class/struct #}
@@ -128,11 +128,7 @@
<td class="memItemLeft" valign="top">{% repeat anonymousNestingLevel %}&#160;&#160;&#160;{% endrepeat %}
}
{% else %}
- {% if member.isObjCMethod %}
- {% if member.isStatic %}+&#160;{% else %}-&#160;{% endif %}
- {% else %}
- {{ member.declType }}
- {% endif %}
+ {{ member.declType }}
{% endif %}
{% spaceless %}
&#160;
@@ -140,16 +136,19 @@
&#160;&#160;
{% else %}
</td><td class="{% if member.templateArgs %}memTemplItemRight{% else %}memItemRight{% endif %}" valign="bottom">
+ {% if member.isObjCMethod %}
+ {% if member.isStatic %}+&#160;{% else %}-&#160;{% endif %}
+ {% endif %}
{% endif %}
{% endspaceless %}
{# write name #}
{% if not member.isAnonymous %}
{% if member.anonymousMember %}
- {% with obj=member.anonymousMember text=member.anonymousMember.name %}
+ {% with obj=member.anonymousMember text=member.anonymousMember.nameWithContextFor:compound.compoundKind %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% else %}
- {% with obj=member text=member.name %}
+ {% with obj=member text=member.nameWithContextFor:compound.compoundKind %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
@@ -205,8 +204,7 @@
<tr class="memdesc:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}"><td class="mdescLeft">&#160;</td><td class="mdescRight">
{{ member.brief }}
{% if member.hasDetails %}
- {# TODO: link to group if member is grouped #}
- <a href="#{{ member.anchor }}">{{ tr.more }}</a>
+ <a href="{{ member.fileName }}{{ config.HTML_FILE_EXTENSION }}#{{ member.anchor }}">{{ tr.more }}</a>
{% endif %}
<br/></td></tr>
{% endif %}
diff --git a/templates/html/htmlmemdef.tpl b/templates/html/htmlmemdef.tpl
index be4d94e..2b03a22 100644
--- a/templates/html/htmlmemdef.tpl
+++ b/templates/html/htmlmemdef.tpl
@@ -3,9 +3,8 @@
{% if memberListInfo.members %}
<h2 class="groupheader">{{ memberListInfo.title }}</h2>
{% for member in memberListInfo.members %}
- {% if member.hasDetails %} {# TODO: not the same as isDetailedSectionVisible! #}
- {# TODO: handle enum + anonymous members #}
- <a class="anchor" id="{{ member.anchor }}"></a> {# TODO: for namespace members written in a file we need to prepend file_ #}
+ {% if member.detailsVisibleFor:compound.compoundKind %}
+ <a class="anchor" id="{{ member.anchor }}"></a>
<div class="memitem">
<div class="memproto">
{# write template declarations #}
@@ -120,7 +119,22 @@
{% endif %}
</div>
<div class="memdoc">
- {# TODO: write group include #}
+ {# write group include #}
+ {% if compound.compoundKind=="module" and config.SHOW_GROUPED_MEMB_INC and member.file %}
+ <p><tt>{% spaceless %}
+ {% if compound.language=='java' or compound.language=='idl' %}
+ import&#160; "
+ {% else %}
+ #include&#160;&lt;
+ {% endif %}
+ {% with obj=member.file text=member.file.bareName %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% if compound.language=='java' or compound.language=='idl' %}"
+ {% else %}&gt;
+ {% endif %}
+ {% endspaceless %}</tt></p>
+ {% endif %}
{# multi-line initializer #}
{% if member.hasMultiLineInitializer %}
<b>{% if member.isDefine %}{{ tr.defineValue }}{% else %}{{ tr.initialValue }}{% endif %}</b>
@@ -187,9 +201,25 @@
</p>
{% endif %}
{# category relation #}
-
- {# TODO #}
-
+ {% if member.class and member.categoryRelation %}
+ {% if member.category %}
+ <p>
+ {% markers mem in member.categoryRelation|list with tr.providedByCategory %}
+ {% with obj=mem text=member.category.name %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% endmarkers %}
+ </p>
+ {% elif member.class.categoryOf %}
+ <p>
+ {% markers mem in member.categoryRelation|list with tr.extendsClass %}
+ {% with obj=mem text=member.class.categoryOf.name %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% endmarkers %}
+ </p>
+ {% endif %}
+ {% endif %}
{# examples #}
{% if member.examples %}
<dl><dt><b>{{ tr.examples }}</b><dd>
@@ -280,7 +310,6 @@
</div>
{% endif %}
{% endfor %} {# for each member #}
- {# TODO: write member group docs #}
{% endif %}
{% endif %}
diff --git a/templates/html/htmlmodule.tpl b/templates/html/htmlmodule.tpl
index 887da1b..ce80514 100644
--- a/templates/html/htmlmodule.tpl
+++ b/templates/html/htmlmodule.tpl
@@ -2,9 +2,11 @@
{% msg %}Generating HTML output for module {{ compound.name }}{% endmsg %}
{% block navpath %}
-{% with navpath=compound.navigationPath %}
- {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+ {% endif %}
{% endblock %}
{% block title %}
diff --git a/templates/html/htmlmodules.tpl b/templates/html/htmlmodules.tpl
index f19c225..5431032 100644
--- a/templates/html/htmlmodules.tpl
+++ b/templates/html/htmlmodules.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.modulesDescription }}
</div>
-{% indexentry nav name=tr.modules file=page.fileName anchor='' %}
+{% indexentry nav name=tr.modules file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=moduleTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlnamespace.tpl b/templates/html/htmlnamespace.tpl
index eb127de..d359efa 100644
--- a/templates/html/htmlnamespace.tpl
+++ b/templates/html/htmlnamespace.tpl
@@ -2,9 +2,11 @@
{% msg %}Generating HTML output for namespace {{ compound.name }}{% endmsg %}
{% block navpath %}
-{% with navpath=compound.navigationPath %}
- {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+{% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+{% endif %}
{% endblock %}
{% block title %}
diff --git a/templates/html/htmlnamespaces.tpl b/templates/html/htmlnamespaces.tpl
index 4767d13..b7e7b9d 100644
--- a/templates/html/htmlnamespaces.tpl
+++ b/templates/html/htmlnamespaces.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.namespaceListDescription }}
</div>
-{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' %}
+{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=namespaceTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlnavtree.tpl b/templates/html/htmlnavtree.tpl
index 8da89a2..9713232 100644
--- a/templates/html/htmlnavtree.tpl
+++ b/templates/html/htmlnavtree.tpl
@@ -17,6 +17,6 @@ var NAVTREEINDEX =
{# write all sub indices #}
{% for entries in navTree.subindices %}
{% with idx=forloop.counter0 %}
- {% create idx|prepend:'navtreeindex'|append:'.js' from htmlnavindex.tpl' %}
+ {% create idx|prepend:'navtreeindex'|append:'.js' from 'htmlnavindex.tpl' %}
{% endwith %}
{% endfor %}
diff --git a/templates/html/htmlobjlink.tpl b/templates/html/htmlobjlink.tpl
index 51a281f..5d3c3f4 100644
--- a/templates/html/htmlobjlink.tpl
+++ b/templates/html/htmlobjlink.tpl
@@ -1,6 +1,10 @@
-{# inputs: obj (with .isLinkable .anchor .fileName), text, config, page.relPath #}
+{# inputs: obj (with .isLinkable .isReference .anchor .fileName .externalReference), text, config, page.relPath #}
{% if obj.isLinkable %}
+{% if obj.isReference %}
+<a class="elRef" href="{{ obj.externalReference }}{{ obj.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if obj.anchor %}#{{ obj.anchor }}{% endif %}">{{ text }}</a>
+{% else %}
<a class="el" href="{{ page.relPath }}{{ obj.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if obj.anchor %}#{{ obj.anchor }}{% endif %}">{{ text }}</a>
+{% endif %}
{% else %}
<b>{{ text }}</b>
{% endif %}
diff --git a/templates/html/htmlpage.tpl b/templates/html/htmlpage.tpl
index 3882989..7547ed5 100644
--- a/templates/html/htmlpage.tpl
+++ b/templates/html/htmlpage.tpl
@@ -2,9 +2,11 @@
{% msg %}Generating HTML output for page {{ compound.name }}{% endmsg %}
{% block navpath %}
-{% with navpath=compound.navigationPath %}
- {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl' %}
+ {% endwith %}
+ {% endif %}
{% endblock %}
{% block content %}
diff --git a/templates/html/htmlpages.tpl b/templates/html/htmlpages.tpl
index cc00bf5..5e3778d 100644
--- a/templates/html/htmlpages.tpl
+++ b/templates/html/htmlpages.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.relatedPagesDesc }}
</div>
-{% indexentry nav name=tr.pages file=page.fileName anchor='' %}
+{% indexentry nav name=tr.pages file=page.fileName anchor='' isReference=False %}
{% opensubindex nav %}
{% with tree=pageTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlsource.tpl b/templates/html/htmlsource.tpl
index cb4e65d..dda2b8c 100644
--- a/templates/html/htmlsource.tpl
+++ b/templates/html/htmlsource.tpl
@@ -2,18 +2,10 @@
{% msg %}Generating HTML source code for file {{ compound.name }}{% endmsg %}
{% block navpath %}
- {% if compound.navigationPath %}
- <div id="nav-path" class="navpath">
- <ul>
- {% for obj in compound.navigationPath %}
- <li class="navelem">
- {% with text=obj.text %}
- {% include 'htmlobjlink.tpl' %}
- {% endwith %}
- </li>
- {% endfor %}
- </ul>
- </div>
+ {% if not config.GENERATE_TREEVIEW %}
+ {% with navpath=compound.navigationPath %}
+ {% include 'htmlnavpath.tpl %}
+ {% endwith %}
{% endif %}
{% endblock %}
diff --git a/templates/html/htmltabs.tpl b/templates/html/htmltabs.tpl
index 4c48f54..e7539d9 100644
--- a/templates/html/htmltabs.tpl
+++ b/templates/html/htmltabs.tpl
@@ -24,7 +24,7 @@
<li{% if page.highlight=='files' %} class="current"{% endif %}><a href="{{ page.relPath }}files{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.files|nowrap }}</span></a></li>
{% endif %}
{# examples tab #}
- {% if exampleList.items %}
+ {% if exampleTree.tree %}
<li{% if page.highlight=='examples' %} class="current"{% endif %}><a href="{{ page.relPath }}examples{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.examples|nowrap }}</span></a></li>
{% endif %}
{# search box #}
diff --git a/templates/latex/latexclass.tpl b/templates/latex/latexclass.tpl
index 7671de0..9fdcb24 100644
--- a/templates/latex/latexclass.tpl
+++ b/templates/latex/latexclass.tpl
@@ -93,7 +93,7 @@
<% if compound.examples %>
<dl><dt><b><{ tr.examples }></b><dd>
<% markers obj in compound.examples with tr.exampleList:compound.examples|length %>
- <% with text=obj.text %>
+ <% with page=compound text=obj.text %>
<% include 'htmlobjlink.tpl' %>
<% endwith %>
<% endmarkers %>
@@ -102,7 +102,7 @@
<# source definition #>
<% if compound.sourceDef %>
<% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %>
- <% with text=obj.text %>
+ <% with page=compound text=obj.text %>
<% include 'htmlobjlink.tpl' %>
<% endwith %>
<% endmarkers %>
diff --git a/templates/latex/latexfiles.tpl b/templates/latex/latexfiles.tpl
index e69de29..a9a897d 100644
--- a/templates/latex/latexfiles.tpl
+++ b/templates/latex/latexfiles.tpl
@@ -0,0 +1 @@
+<# TODO #>
diff --git a/templates/latex/latexmodules.tpl b/templates/latex/latexmodules.tpl
index e69de29..a9a897d 100644
--- a/templates/latex/latexmodules.tpl
+++ b/templates/latex/latexmodules.tpl
@@ -0,0 +1 @@
+<# TODO #>
diff --git a/templates/latex/latexnamespaces.tpl b/templates/latex/latexnamespaces.tpl
index e69de29..a9a897d 100644
--- a/templates/latex/latexnamespaces.tpl
+++ b/templates/latex/latexnamespaces.tpl
@@ -0,0 +1 @@
+<# TODO #>