summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-05-20 18:23:39 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-05-20 18:24:26 (GMT)
commit32dc0630c43c081c9af15b02b2366516ad78a868 (patch)
tree2a83d9b37f74ca3930fcb015fa61253d333c2e08
parente6f54449c5b688cdc6647f80558d67dcaa03b30d (diff)
downloadDoxygen-32dc0630c43c081c9af15b02b2366516ad78a868.zip
Doxygen-32dc0630c43c081c9af15b02b2366516ad78a868.tar.gz
Doxygen-32dc0630c43c081c9af15b02b2366516ad78a868.tar.bz2
Make templated HTML output more similar to hardcoded output.
-rw-r--r--src/classdef.cpp4
-rw-r--r--src/context.cpp146
-rw-r--r--src/context.h1
-rw-r--r--src/dirdef.cpp8
-rw-r--r--src/htmlgen.cpp4
-rw-r--r--src/index.cpp42
-rw-r--r--src/memberdef.cpp15
-rw-r--r--src/memberdef.h2
-rw-r--r--src/searchindex.cpp1
-rwxr-xr-xsrc/template.cpp18
-rw-r--r--templates/html/htmlallmembers.tpl3
-rw-r--r--templates/html/htmlannotated.tpl2
-rw-r--r--templates/html/htmlbase.tpl5
-rw-r--r--templates/html/htmlclasses.tpl1
-rw-r--r--templates/html/htmldeclcomp.tpl3
-rw-r--r--templates/html/htmldirtree.tpl17
-rw-r--r--templates/html/htmlexamples.tpl2
-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/htmljsnavpage.tpl20
-rw-r--r--templates/html/htmljsnavtree.tpl16
-rw-r--r--templates/html/htmllayout.tpl19
-rw-r--r--templates/html/htmlmemberindex.tpl13
-rw-r--r--templates/html/htmlmembersindex.tpl20
-rw-r--r--templates/html/htmlmodules.tpl2
-rw-r--r--templates/html/htmlnamespaces.tpl2
-rw-r--r--templates/html/htmlpages.tpl2
-rw-r--r--templates/html/nomatches.tpl13
29 files changed, 286 insertions, 101 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 9f2fe12..c3a3160 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2893,7 +2893,7 @@ void ClassDefImpl::writeMemberList(OutputList &ol) const
first = false;
}
ol.writeString(" <tr");
- if ((idx&1)==0) ol.writeString(" class=\"even\"");
+ if ((idx&1)==0) ol.writeString(" class=\"even\""); else ol.writeString(" class=\"odd\"");
idx++;
ol.writeString("><td class=\"entry\">");
if (cd->isObjectiveC())
@@ -2951,7 +2951,7 @@ void ClassDefImpl::writeMemberList(OutputList &ol) const
first = false;
}
ol.writeString(" <tr bgcolor=\"#f0f0f0\"");
- if ((idx&1)==0) ol.writeString(" class=\"even\"");
+ if ((idx&1)==0) ol.writeString(" class=\"even\""); else ol.writeString(" class=\"odd\"");
idx++;
ol.writeString("><td class=\"entry\">");
if (cd->isObjectiveC())
diff --git a/src/context.cpp b/src/context.cpp
index ff5815e..7d1c6a7 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -1044,6 +1044,10 @@ class TranslateContext::Private
{
return HtmlHelp::getLanguageString();
}
+ TemplateVariant code() const
+ {
+ return theTranslator->trCode();
+ }
Private()
{
static bool init=FALSE;
@@ -1239,6 +1243,8 @@ class TranslateContext::Private
s_inst.addProperty("examplesDescription",&Private::examplesDescription);
//%% string langstring
s_inst.addProperty("langString", &Private::langString);
+ //%% string code
+ s_inst.addProperty("code", &Private::code);
init=TRUE;
}
@@ -6190,6 +6196,7 @@ class NestingNodeContext::Private
: m_parent(parent), m_def(d), m_level(level), m_index(index)
{
m_children.reset(NestingContext::alloc(thisNode,level+1));
+ m_members.reset(NestingContext::alloc(thisNode,level+1));
static bool init=FALSE;
if (!init)
{
@@ -6197,6 +6204,8 @@ class NestingNodeContext::Private
s_inst.addProperty("is_leaf_node",&Private::isLeafNode);
//%% Nesting children: list of nested classes/namespaces
s_inst.addProperty("children",&Private::children);
+ //%% Nesting children: list of nested classes/namespaces
+ s_inst.addProperty("members",&Private::members);
//%% [optional] Class class: class info (if this node represents a class)
s_inst.addProperty("class",&Private::getClass);
//%% [optional] Namespace namespace: namespace info (if this node represents a namespace)
@@ -6209,6 +6218,8 @@ class NestingNodeContext::Private
s_inst.addProperty("page",&Private::getPage);
//%% [optional] Module module: module info (if this node represents a module)
s_inst.addProperty("module",&Private::getModule);
+ //%% [optional] Member member: member info (if this node represents a member)
+ s_inst.addProperty("member",&Private::getMember);
//%% int id
s_inst.addProperty("id",&Private::id);
//%% string level
@@ -6231,6 +6242,7 @@ class NestingNodeContext::Private
addDirFiles(visitedClasses);
addPages(visitedClasses);
addModules(visitedClasses);
+ addMembers(visitedClasses);
}
TemplateVariant get(const QCString &n) const
{
@@ -6248,6 +6260,10 @@ class NestingNodeContext::Private
{
return m_children.get();
}
+ TemplateVariant members() const
+ {
+ return m_members.get();
+ }
TemplateVariant getClass() const
{
if (!m_cache.classContext && m_def->definitionType()==Definition::TypeClass)
@@ -6338,6 +6354,21 @@ class NestingNodeContext::Private
return TemplateVariant(FALSE);
}
}
+ TemplateVariant getMember() const
+ {
+ if (!m_cache.memberContext && m_def->definitionType()==Definition::TypeMember)
+ {
+ m_cache.memberContext.reset(MemberContext::alloc(toMemberDef(m_def)));
+ }
+ if (m_cache.memberContext)
+ {
+ return m_cache.memberContext.get();
+ }
+ else
+ {
+ return TemplateVariant(FALSE);
+ }
+ }
TemplateVariant level() const
{
return m_level;
@@ -6400,26 +6431,26 @@ class NestingNodeContext::Private
void addClasses(bool inherit, bool hideSuper,ClassDefSet &visitedClasses)
{
const ClassDef *cd = toClassDef(m_def);
- if (cd && inherit)
+ if (cd)
{
- bool hasChildren = visitedClasses.find(cd)==visitedClasses.end() &&
- !hideSuper && classHasVisibleChildren(cd);
- if (hasChildren)
+ if (inherit)
{
- visitedClasses.insert(cd);
- if (cd->getLanguage()==SrcLangExt_VHDL)
- {
- m_children->addDerivedClasses(cd->baseClasses(),false,visitedClasses);
- }
- else
+ bool hasChildren = visitedClasses.find(cd)==visitedClasses.end() &&
+ !hideSuper && classHasVisibleChildren(cd);
+ if (hasChildren)
{
- m_children->addDerivedClasses(cd->subClasses(),false,visitedClasses);
+ visitedClasses.insert(cd);
+ if (cd->getLanguage()==SrcLangExt_VHDL)
+ {
+ m_children->addDerivedClasses(cd->baseClasses(),false,visitedClasses);
+ }
+ else
+ {
+ m_children->addDerivedClasses(cd->subClasses(),false,visitedClasses);
+ }
}
}
- }
- else
- {
- if (cd)
+ else
{
m_children->addClasses(cd->getClasses(),FALSE,visitedClasses);
}
@@ -6428,13 +6459,16 @@ class NestingNodeContext::Private
void addNamespaces(bool addClasses,ClassDefSet &visitedClasses)
{
const NamespaceDef *nd = toNamespaceDef(m_def);
- if (nd && !nd->getNamespaces().empty())
+ if (nd)
{
- m_children->addNamespaces(nd->getNamespaces(),FALSE,addClasses,visitedClasses);
- }
- if (addClasses && nd)
- {
- m_children->addClasses(nd->getClasses(),FALSE,visitedClasses);
+ if (!nd->getNamespaces().empty())
+ {
+ m_children->addNamespaces(nd->getNamespaces(),FALSE,addClasses,visitedClasses);
+ }
+ if (addClasses)
+ {
+ m_children->addClasses(nd->getClasses(),FALSE,visitedClasses);
+ }
}
}
void addDirFiles(ClassDefSet &visitedClasses)
@@ -6462,10 +6496,53 @@ class NestingNodeContext::Private
m_children->addModules(gd->getSubGroups(),visitedClasses);
}
}
+ void addMembers(ClassDefSet &visitedClasses)
+ {
+ if (m_def->definitionType()==Definition::TypeNamespace)
+ {
+ // add namespace members
+ for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
+ {
+ if (lde->kind()==LayoutDocEntry::MemberDef)
+ {
+ const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
+ const MemberList *ml = toNamespaceDef(m_def)->getMemberList(lmd->type);
+ m_members->addMembers(ml,visitedClasses);
+ }
+ }
+ }
+ else if (m_def->definitionType()==Definition::TypeClass)
+ {
+ // add class members
+ for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
+ {
+ if (lde->kind()==LayoutDocEntry::MemberDef)
+ {
+ const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
+ const MemberList *ml = toClassDef(m_def)->getMemberList(lmd->type);
+ m_members->addMembers(ml,visitedClasses);
+ }
+ }
+ }
+ else if (m_def->definitionType()==Definition::TypeFile)
+ {
+ // add class members
+ for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
+ {
+ if (lde->kind()==LayoutDocEntry::MemberDef)
+ {
+ const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
+ const MemberList *ml = toFileDef(m_def)->getMemberList(lmd->type);
+ m_members->addMembers(ml,visitedClasses);
+ }
+ }
+ }
+ }
private:
const NestingNodeContext *m_parent;
const Definition *m_def;
SharedPtr<NestingContext> m_children;
+ SharedPtr<NestingContext> m_members;
int m_level;
int m_index;
struct Cachable
@@ -6476,6 +6553,7 @@ class NestingNodeContext::Private
SharedPtr<FileContext> fileContext;
SharedPtr<PageContext> pageContext;
SharedPtr<ModuleContext> moduleContext;
+ SharedPtr<MemberContext> memberContext;
ScopedPtr<TemplateVariant> brief;
};
mutable Cachable m_cache;
@@ -6618,7 +6696,8 @@ class NestingContext::Private : public GenericNodeListContext
{
if (fd->getDirDef()==0) // top level file
{
- append(NestingNodeContext::alloc(m_parent,fd.get(),m_index,m_level,FALSE,FALSE,FALSE,visitedClasses));
+ NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,fd.get(),m_index,m_level,FALSE,FALSE,FALSE,visitedClasses);
+ append(nnc);
m_index++;
}
}
@@ -6628,7 +6707,8 @@ class NestingContext::Private : public GenericNodeListContext
{
for (const auto &fd : fList)
{
- append(NestingNodeContext::alloc(m_parent,fd,m_index,m_level,FALSE,FALSE,FALSE,visitedClasses));
+ NestingNodeContext *nnc=NestingNodeContext::alloc(m_parent,fd,m_index,m_level,FALSE,FALSE,FALSE,visitedClasses);
+ append(nnc);
m_index++;
}
}
@@ -6738,6 +6818,21 @@ class NestingContext::Private : public GenericNodeListContext
}
}
}
+ void addMembers(const MemberList *ml,ClassDefSet &visitedClasses)
+ {
+ if (ml)
+ {
+ for (const auto &md : *ml)
+ {
+ if (md->visibleInIndex())
+ {
+ NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,md,m_index,m_level+1,TRUE,TRUE,FALSE,visitedClasses);
+ append(nnc);
+ m_index++;
+ }
+ }
+ }
+ }
private:
const NestingNodeContext *m_parent;
@@ -6841,6 +6936,11 @@ void NestingContext::addDerivedClasses(const BaseClassList &bcl,bool hideSuper,C
p->addDerivedClasses(bcl,hideSuper,visitedClasses);
}
+void NestingContext::addMembers(const MemberList *ml,ClassDefSet &visitedClasses)
+{
+ p->addMembers(ml,visitedClasses);
+}
+
//------------------------------------------------------------------------
//%% struct ClassTree: Class nesting relations
diff --git a/src/context.h b/src/context.h
index 42da981..bff4903 100644
--- a/src/context.h
+++ b/src/context.h
@@ -578,6 +578,7 @@ class NestingContext : public RefCountedContext, public TemplateListIntf
void addModules(const GroupList &modules,ClassDefSet &visitedClasses);
void addClassHierarchy(const ClassLinkedMap &clLinkedMap,ClassDefSet &visitedClasses);
void addDerivedClasses(const BaseClassList &bcl,bool hideSuper,ClassDefSet &visitedClasses);
+ void addMembers(const MemberList *ml,ClassDefSet &visitedClasses);
private:
NestingContext(const NestingNodeContext *parent,int level);
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 1814b51..f4354a4 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -341,7 +341,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
if (dd->hasDocumentation() || dd->getFiles().empty())
{
ol.startMemberDeclaration();
- ol.startMemberItem(dd->getOutputFileBase(),0);
+ ol.startMemberItem(dd->anchor(),0);
ol.parseText(theTranslator->trDir(FALSE,TRUE)+" ");
ol.insertMemberAlign();
ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
@@ -359,7 +359,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
);
ol.endMemberDescription();
}
- ol.endMemberDeclaration(QCString(),QCString());
+ ol.endMemberDeclaration(dd->anchor(),QCString());
}
}
@@ -390,7 +390,7 @@ void DirDefImpl::writeFileList(OutputList &ol)
if (fd->hasDocumentation())
{
ol.startMemberDeclaration();
- ol.startMemberItem(fd->getOutputFileBase(),0);
+ ol.startMemberItem(fd->anchor(),0);
ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
ol.insertMemberAlign();
if (fd->isLinkable())
@@ -429,7 +429,7 @@ void DirDefImpl::writeFileList(OutputList &ol)
);
ol.endMemberDescription();
}
- ol.endMemberDeclaration(QCString(),QCString());
+ ol.endMemberDeclaration(fd->anchor(),QCString());
}
}
ol.endMemberList();
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index cde7ef2..ee9560a 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2887,14 +2887,14 @@ void HtmlGenerator::startHeaderSection()
void HtmlGenerator::startTitleHead(const QCString &)
{
- m_t << " <div class=\"headertitle\">\n";
+ m_t << " <div class=\"headertitle\">";
startTitle();
}
void HtmlGenerator::endTitleHead(const QCString &,const QCString &)
{
endTitle();
- m_t << " </div>\n";
+ m_t << "</div>\n";
}
void HtmlGenerator::endHeaderSection()
diff --git a/src/index.cpp b/src/index.cpp
index 99942f1..de50cc5 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -289,18 +289,6 @@ void endFileWithNavPath(const Definition *d,OutputList &ol)
//----------------------------------------------------------------------
-static bool memberVisibleInIndex(const MemberDef *md)
-{
- bool isAnonymous = md->isAnonymous();
- bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
- bool extractStatic = Config_getBool(EXTRACT_STATIC);
- return (!isAnonymous &&
- (!hideUndocMembers || md->hasDocumentation()) &&
- (!md->isStatic() || extractStatic) &&
- md->isLinkable()
- );
-}
-
static void writeMemberToIndex(const Definition *def,const MemberDef *md,bool addToIndex)
{
bool isAnonymous = md->isAnonymous();
@@ -388,7 +376,7 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,
{
for (const auto &md : *ml)
{
- if (memberVisibleInIndex(md))
+ if (md->visibleInIndex())
{
writeMemberToIndex(def,md,addToIndex);
}
@@ -1611,7 +1599,7 @@ static int countVisibleMembers(const NamespaceDef *nd)
{
for (const auto &md : *ml)
{
- if (memberVisibleInIndex(md))
+ if (md->visibleInIndex())
{
count++;
}
@@ -1634,8 +1622,8 @@ static void writeNamespaceMembers(const NamespaceDef *nd,bool addToIndex)
{
for (const auto &md : *ml)
{
- //printf(" member %s visible=%d\n",qPrint(md->name()),memberVisibleInIndex(md));
- if (memberVisibleInIndex(md))
+ //printf(" member %s visible=%d\n",qPrint(md->name()),md->visibleInIndex());
+ if (md->visibleInIndex())
{
writeMemberToIndex(nd,md,addToIndex);
}
@@ -2180,7 +2168,9 @@ static void writeAlphabeticalClassList(OutputList &ol, ClassDef::CompoundType ct
// write character heading
ol.writeString("<dt class=\"alphachar\">");
QCString s = letterToLabel(cl.first.c_str());
- ol.writeString("<a name=\"letter_");
+ ol.writeString("<a id=\"letter_");
+ ol.writeString(s);
+ ol.writeString("\" name=\"letter_");
ol.writeString(s);
ol.writeString("\">");
ol.writeString(cl.first.c_str());
@@ -2511,10 +2501,10 @@ static void writeClassLinkForMember(OutputList &ol,const MemberDef *md,const QCS
const ClassDef *cd=md->getClassDef();
if ( cd && prevClassName!=cd->displayName())
{
- ol.docify(separator);
+ ol.writeString(separator);
ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
cd->displayName());
- ol.writeString("\n");
+ //ol.writeString("\n");
prevClassName = cd->displayName();
}
}
@@ -2525,10 +2515,10 @@ static void writeFileLinkForMember(OutputList &ol,const MemberDef *md,const QCSt
const FileDef *fd=md->getFileDef();
if (fd && prevFileName!=fd->name())
{
- ol.docify(separator);
+ ol.writeString(separator);
ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
fd->name());
- ol.writeString("\n");
+ //ol.writeString("\n");
prevFileName = fd->name();
}
}
@@ -2539,10 +2529,10 @@ static void writeNamespaceLinkForMember(OutputList &ol,const MemberDef *md,const
const NamespaceDef *nd=md->getNamespaceDef();
if (nd && prevNamespaceName!=nd->displayName())
{
- ol.docify(separator);
+ ol.writeString(separator);
ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
nd->displayName());
- ol.writeString("\n");
+ //ol.writeString("\n");
prevNamespaceName = nd->displayName();
}
}
@@ -2625,11 +2615,11 @@ static void writeMemberList(OutputList &ol,bool useSections,const std::string &p
firstItem=FALSE;
ol.docify(name);
if (isFunc) ol.docify("()");
- ol.writeString("\n");
+ //ol.writeString("\n");
// link to class
prevDefName="";
- sep = ": ";
+ sep = "&#160;:&#160;";
prevName = name.data()+startIndex;
}
else // same entry
@@ -3512,7 +3502,7 @@ static void writeExampleIndex(OutputList &ol)
}
}
ol.endItemListItem();
- ol.writeString("\n");
+ //ol.writeString("\n");
}
ol.endItemList();
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index af05535..7133641 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -321,6 +321,7 @@ class MemberDefImpl : public DefinitionMixin<MemberDefMutable>
virtual void writeTagFile(TextStream &) const;
virtual void warnIfUndocumented() const;
virtual void warnIfUndocumentedParams() const;
+ virtual bool visibleInIndex() const;
virtual void detectUndocumentedParams(bool hasParamCommand,bool hasReturnCommand) const;
virtual MemberDefMutable *createTemplateInstanceMember(const ArgumentList &formalArgs,
const std::unique_ptr<ArgumentList> &actualArgs) const;
@@ -744,6 +745,8 @@ class MemberDefAliasImpl : public DefinitionAliasMixin<MemberDef>
{ return getMdAlias()->getDeclColumn(); }
virtual QCString requiresClause() const
{ return getMdAlias()->requiresClause(); }
+ virtual bool visibleInIndex() const
+ { return getMdAlias()->visibleInIndex(); }
virtual void warnIfUndocumented() const {}
virtual void warnIfUndocumentedParams() const {}
@@ -3844,6 +3847,18 @@ void MemberDefImpl::warnIfUndocumented() const
warnIfUndocumentedParams();
}
}
+
+bool MemberDefImpl::visibleInIndex() const
+{
+ bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
+ bool extractStatic = Config_getBool(EXTRACT_STATIC);
+ return (!isAnonymous() &&
+ (!hideUndocMembers || hasDocumentation()) &&
+ (!isStatic() || extractStatic) &&
+ isLinkable()
+ );
+}
+
static QCString stripTrailingReturn(const QCString &trailRet)
{
QCString ret = trailRet;
diff --git a/src/memberdef.h b/src/memberdef.h
index 1d1e744..ca745a0 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -285,9 +285,11 @@ class MemberDef : public Definition
virtual void detectUndocumentedParams(bool hasParamCommand,bool hasReturnCommand) const = 0;
virtual void warnIfUndocumented() const = 0;
virtual void warnIfUndocumentedParams() const = 0;
+ virtual bool visibleInIndex() const = 0;
// TODO: this is not a getter, should be passed at construction
virtual void setMemberGroup(MemberGroup *grp) = 0;
+
};
class MemberDefMutable : public DefinitionMutable, public MemberDef
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index cf09e67..f87cd33 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -1214,6 +1214,7 @@ void writeJavaScriptSearchIndex()
t << "</html>\n";
}
}
+
Doxygen::indexList->addStyleSheetFile("search/search.js");
}
diff --git a/src/template.cpp b/src/template.cpp
index 86780be..e1d9c79 100755
--- a/src/template.cpp
+++ b/src/template.cpp
@@ -1327,6 +1327,23 @@ class FilterUpper
//--------------------------------------------------------------------
+/** @brief The implementation of the "upper" filter */
+class FilterHex
+{
+ public:
+ static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+ {
+ if (v.isValid())
+ {
+ return QCString().sprintf("%x",v.toInt());
+ }
+ return v;
+ }
+};
+
+
+//--------------------------------------------------------------------
+
/** @brief The implementation of the "e" filter */
class FilterEscape
{
@@ -1419,6 +1436,7 @@ class TemplateFilterFactory
// register a handlers for each filter we support
static TemplateFilterFactory::AutoRegister<FilterAdd> fAdd("add");
static TemplateFilterFactory::AutoRegister<FilterGet> fGet("get");
+static TemplateFilterFactory::AutoRegister<FilterHex> fHex("hex");
static TemplateFilterFactory::AutoRegister<FilterRaw> fRaw("raw");
static TemplateFilterFactory::AutoRegister<FilterList> fList("list");
static TemplateFilterFactory::AutoRegister<FilterLower> fLower("lower");
diff --git a/templates/html/htmlallmembers.tpl b/templates/html/htmlallmembers.tpl
index b44110d..ed34131 100644
--- a/templates/html/htmlallmembers.tpl
+++ b/templates/html/htmlallmembers.tpl
@@ -9,8 +9,7 @@
<p>{{ tr.theListOfAllMembers }} <a class="el" href="{{ compound.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ compound.name }}</a>{{ tr.incInheritedMembers }}</p>
<table class="directory">
{% for mi in compound.allMembersList %}
- <tr class="{% cycle 'even' 'odd' %}">
- {% spaceless %}
+ <tr class="{% cycle 'even' 'odd' %}">{% spaceless %}
{% with member=mi.member %}
{% if member.language=='objc' %}
<td class="entry">
diff --git a/templates/html/htmlannotated.tpl b/templates/html/htmlannotated.tpl
index 2e4d40d..e3b8442 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.classList file=page.fileName anchor='' isReference=False %}
+{% indexentry nav name=tr.classList file=page.fileName anchor='' isReference=False separateIndex=True %}
{% opensubindex nav %}
{% with tree=classTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl
index 11cb054..6727da0 100644
--- a/templates/html/htmlbase.tpl
+++ b/templates/html/htmlbase.tpl
@@ -74,10 +74,7 @@
{% endif %}
<td id="projectalign" style="padding-left: 0.5em;">
{% if config.PROJECT_NAME %}
- <div id="projectname">{{ config.PROJECT_NAME }}
- {% if config.PROJECT_NUMBER %}
- <span id="projectnumber">{{ config.PROJECT_NUMBER }}</span>
- {% endif %}
+ <div id="projectname">{{ config.PROJECT_NAME }}{% if config.PROJECT_NUMBER %}<span id="projectnumber">&#160;{{ config.PROJECT_NUMBER }}</span>{% endif %}
</div>
{% endif %}
{% if config.PROJECT_BRIEF %}
diff --git a/templates/html/htmlclasses.tpl b/templates/html/htmlclasses.tpl
index 372d72d..3e556a2 100644
--- a/templates/html/htmlclasses.tpl
+++ b/templates/html/htmlclasses.tpl
@@ -11,6 +11,7 @@
{% endif %}
{% endfor %}
</div>
+ {% indexentry nav name=tr.classIndex file=page.fileName anchor='' isReference=False separateIndex=False %}
{# multi column index #}
<div class="classindex">
{% for section in index %}
diff --git a/templates/html/htmldeclcomp.tpl b/templates/html/htmldeclcomp.tpl
index 3ae90b8..5f6fe60 100644
--- a/templates/html/htmldeclcomp.tpl
+++ b/templates/html/htmldeclcomp.tpl
@@ -15,6 +15,7 @@
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
+ {% if nc.sourceFileName and nc.isLinkable %}<a class="el" href="{{ nc.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">[{{ tr.code }}]</a>{% endif %}
</td></tr>
{# brief description #}
{% if nc.brief %}
@@ -25,7 +26,7 @@
{% endif %}
<br/></td></tr>
{% endif %}
- <tr class="separator:{{ nc.anchor}}"><td class="memSeparator" colspan="2">&#160;</td></tr>
+ <tr class="separator:{{ nc.anchor }}"><td class="memSeparator" colspan="2">&#160;</td></tr>
{% endfor %}
</table>
{% endif %}
diff --git a/templates/html/htmldirtree.tpl b/templates/html/htmldirtree.tpl
index a6b9b21..f1b4fcf 100644
--- a/templates/html/htmldirtree.tpl
+++ b/templates/html/htmldirtree.tpl
@@ -11,7 +11,12 @@
{# the table with entries #}
<table class="directory">
{% recursetree tree.tree %}
- {% indexentry nav name=node.name file=node.fileName anchor=node.anchor isReference=node.isReference externalReference=node.externalReference %}
+ {% if node.isLinkable %}
+ {% indexentry nav name=node.name file=node.fileName anchor=node.anchor isReference=node.isReference externalReference=node.externalReference separateIndex=True %}
+ {% else %}
+ {% indexentry nav name=node.name file='' anchor=node.anchor isReference=False separateIndex=False %}
+ {% endif %}
+ {% if not node.member %}
{% spaceless %}
<tr id="row_{{ node.id }}" class="{% cycle 'even' 'odd' %}"{%if node.level>tree.preferredDepth %} style="display:none;"{% endif %}>
<td class="entry">
@@ -47,6 +52,16 @@
{% opensubindex nav %}
{{ children }}
{% closesubindex nav %}
+ {% spaceless %}
+ {% if node.members %}
+ {% opensubindex nav %}
+ {% for member in node.members %}
+ {% indexentry nav name=member.name file=member.fileName anchor=member.anchor isReference=member.isReference externalReference=member.externalReference separateIndex=False %}
+ {% endfor %}
+ {% closesubindex nav %}
+ {% endif %}
+ {% endspaceless %}
+ {% endif %}
{% endrecursetree %}
</table>
</div><!-- directory -->
diff --git a/templates/html/htmlexamples.tpl b/templates/html/htmlexamples.tpl
index 58392df..18384e2 100644
--- a/templates/html/htmlexamples.tpl
+++ b/templates/html/htmlexamples.tpl
@@ -4,7 +4,7 @@
<div class="textblock">
{{ tr.examplesDescription }}
</div>
-{% indexentry nav name=tr.examples file=page.fileName anchor='' isReference=False %}
+{% indexentry nav name=tr.examples file=page.fileName anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{% with tree=exampleTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlfiles.tpl b/templates/html/htmlfiles.tpl
index 55799ca..1c784dc 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='' isReference=False %}
+{% indexentry nav name=tr.fileList file=page.fileName anchor='' isReference=False separateIndex=True %}
{% opensubindex nav %}
{% with tree=fileTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlhierarchy.tpl b/templates/html/htmlhierarchy.tpl
index ff10172..df01709 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='' isReference=False %}
+{% indexentry nav name=tr.classHierarchy file=page.fileName anchor='' isReference=False separateIndex=True %}
{% opensubindex nav %}
{% with tree=classHierarchy %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlindexpages.tpl b/templates/html/htmlindexpages.tpl
index 2886a69..eacf122 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='' isReference=False %}
+ {% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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/htmljsnavpage.tpl b/templates/html/htmljsnavpage.tpl
new file mode 100644
index 0000000..9d9881d
--- /dev/null
+++ b/templates/html/htmljsnavpage.tpl
@@ -0,0 +1,20 @@
+var {{ varName }} =
+[
+{% recursetree node.children %}
+ {% set varName=node.file %}
+ {% if node.anchor %}
+ {% update varName=varName|append:'_'|append:node.anchor %}
+ {% endif %}
+ {% if node.parent %}
+ {% if node.parent.file==node.file %}
+ {% update varName=varName|append:'_dup' %}
+ {% endif %}
+ {% endif %}
+[ "{{ node.name }}",{% if node.file %}"{% if node.isReference %}{{ node.externalReference }}{% endif %}{{ node.file|decodeURL }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %}{% if node.separateIndex %}"{{ varName }}"{% else %} [
+ {{ children }}
+ ]{% endif %}{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
+ {% if node.separateIndex %}
+ {% create varName|append:'.js' from 'htmljsnavpage.tpl' %}
+ {% endif %}
+{% endrecursetree %}
+];
diff --git a/templates/html/htmljsnavtree.tpl b/templates/html/htmljsnavtree.tpl
index 3d11175..fef1819 100644
--- a/templates/html/htmljsnavtree.tpl
+++ b/templates/html/htmljsnavtree.tpl
@@ -25,9 +25,21 @@
var NAVTREE =
[
{% recursetree index.nav %}
- [ "{{ node.name }}", {% if node.file %}"{% if node.isReference %}{{ node.externalReference }}{% endif %}{{ node.file|decodeURL }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
+ {% set varName=node.file %}
+ {% if node.anchor %}
+ {% update varName=varName|append:'_'|append:node.anchor %}
+ {% endif %}
+ {% if node.parent %}
+ {% if node.parent.file==node.file %}
+ {% update varName=varName|append:'_dup' %}
+ {% endif %}
+ {% endif %}
+[ "{{ node.name }}",{% if node.file %}"{% if node.isReference %}{{ node.externalReference }}{% endif %}{{ node.file|decodeURL }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %}{% if node.separateIndex %}"{{ varName }}"{% else %} [
{{ children }}
- ]{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
+ ]{% endif %}{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
+ {% if node.separateIndex %}
+ {% create varName|append:'.js' from 'htmljsnavpage.tpl' %}
+ {% endif %}
{% endrecursetree %}
];
diff --git a/templates/html/htmllayout.tpl b/templates/html/htmllayout.tpl
index a0bb6f0..0fbe458 100644
--- a/templates/html/htmllayout.tpl
+++ b/templates/html/htmllayout.tpl
@@ -57,6 +57,7 @@
{% endif %}
{% endif %}
{% resource 'search_common.css' append 'search/search.css' %}
+{% create 'search/nomatches.html' from 'nomatches.tpl' %}
{% if config.SERVER_BASED_SEARCH %}
{# server side search resources #}
@@ -87,9 +88,9 @@
{# open the global navigation index #}
{% if config.PROJECT_NAME %}
- {% indexentry nav name=config.PROJECT_NAME file='index' anchor='' isReference=False %}
+ {% indexentry nav name=config.PROJECT_NAME file='index' anchor='' isReference=False separateIndex=False %}
{% else %}
- {% indexentry nav name=tr.mainPage file='index' anchor='' isReference=False %}
+ {% indexentry nav name=tr.mainPage file='index' anchor='' isReference=False separateIndex=False %}
{% endif %}
{% opensubindex nav %}
@@ -180,7 +181,7 @@
{# --- namespaces --- #}
{% if namespaceList %}
- {% indexentry nav name=tr.namespaces file='namespaces' anchor='' isReference=False %}
+ {% indexentry nav name=tr.namespaces file='namespaces' anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{% if namespaceTree.tree %}
@@ -192,7 +193,7 @@
{# 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='' isReference=False %}
+ {% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' isReference=False separateIndex=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
@@ -202,7 +203,7 @@
{# --- classes --- #}
{% if classList %}
- {% indexentry nav name=tr.classes file='annotated'|append:config.HTML_FILE_EXTENSION anchor='' isReference=False %}
+ {% indexentry nav name=tr.classes file='annotated'|append:config.HTML_FILE_EXTENSION anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{# write the annotated class list #}
@@ -234,7 +235,7 @@
{# 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='' isReference=False %}
+ {% indexentry nav name=tr.classMembers file=page.fileName anchor='' isReference=False separateIndex=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
@@ -244,7 +245,7 @@
{# --- files --- #}
{% if fileList %}
- {% indexentry nav name=tr.files file='files' anchor='' isReference=False %}
+ {% indexentry nav name=tr.files file='files' anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{# write the directory/file hierarchy #}
@@ -257,7 +258,7 @@
{# 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='' isReference=False %}
+ {% indexentry nav name=tr.fileMembers file=page.fileName anchor='' isReference=False separateIndex=False %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
@@ -281,7 +282,7 @@
{% set symbolCount=0 %}
{% for idx in searchIndices %}
{% for si in idx.symbolIndices %}
- {% with baseName=si.name|append:'_'|append:forloop.counter0 %}
+ {% with hexCount=forloop.counter0|hex baseName=si.name|append:'_'|append:hexCount %}
{% create baseName|prepend:'search/'|append:config.HTML_FILE_EXTENSION from 'htmlsearchresult.tpl' %}
{% create baseName|prepend:'search/'|append:'.js' from 'htmljssearchindex.tpl' %}
{% endwith %}
diff --git a/templates/html/htmlmemberindex.tpl b/templates/html/htmlmemberindex.tpl
index 7de92b9..504219c 100644
--- a/templates/html/htmlmemberindex.tpl
+++ b/templates/html/htmlmemberindex.tpl
@@ -7,22 +7,21 @@
{% for section in index %}
{% if not singleList or letter=='' or section.letter==letter %}
{% if not singleList %}
- <a class="anchor" id="index_{{ section.label }}"></a><h3>- {{ section.letter }} -</h3>
+ <a class="anchor" id="index_{{ section.label|lower }}"></a><h3>- {{ section.letter|lower }} -</h3>
<ul>
{% endif %}
{% for nameList in section.items|groupBy:'name' %}
{% for item in nameList|listsort:'{{item.file.name}}' %}
+ {% spaceless %}
{% if forloop.first %}
- <li>{{ item.name }}{% if (item.isFunction or item.isSignal or item.isSlot) and not item.isObjCMethod %}(){% endif %} :
- {% endif %}
- {% spaceless %}
+ <li>{{ item.name }}{% if (item.isFunction or item.isSignal or item.isSlot) and not item.isObjCMethod %}(){% endif %}&#160;:&#160;{% endif %}
{% with obj=item scope=item|get:scope text=scope.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
- {% endspaceless %}
{% if not forloop.last %},
- {% else %}</li>
- {% endif %}
+ {% else %}</li>{% endif %}
+ {% endspaceless %}
+
{% endfor %}
{% endfor %}
{% if not singleList %}
diff --git a/templates/html/htmlmembersindex.tpl b/templates/html/htmlmembersindex.tpl
index 700bce2..46a3cfd 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='' isReference=False %}
+ {% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=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='' isReference=False %}
+ {% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' isReference=False separateIndex=False %}
{% with list=page.related section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
diff --git a/templates/html/htmlmodules.tpl b/templates/html/htmlmodules.tpl
index 5431032..c4e84fd 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='' isReference=False %}
+{% indexentry nav name=tr.modules file=page.fileName anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{% with tree=moduleTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlnamespaces.tpl b/templates/html/htmlnamespaces.tpl
index b7e7b9d..c3b8b3b 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='' isReference=False %}
+{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{% with tree=namespaceTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlpages.tpl b/templates/html/htmlpages.tpl
index 5e3778d..0f12603 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='' isReference=False %}
+{% indexentry nav name=tr.pages file=page.fileName anchor='' isReference=False separateIndex=False %}
{% opensubindex nav %}
{% with tree=pageTree %}
{% include 'htmldirtree.tpl' %}
diff --git a/templates/html/nomatches.tpl b/templates/html/nomatches.tpl
new file mode 100644
index 0000000..94af265
--- /dev/null
+++ b/templates/html/nomatches.tpl
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">{{ tr.noMatches }}</div>
+</div>
+</body>
+</html>