Skip to content

Commit

Permalink
Make templated HTML output more similar to hardcoded output.
Browse files Browse the repository at this point in the history
  • Loading branch information
doxygen committed May 20, 2021
1 parent e6f5444 commit 32dc063
Show file tree
Hide file tree
Showing 29 changed files with 286 additions and 101 deletions.
4 changes: 2 additions & 2 deletions src/classdef.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down Expand Up @@ -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())
Expand Down
146 changes: 123 additions & 23 deletions src/context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1044,6 +1044,10 @@ class TranslateContext::Private
{
return HtmlHelp::getLanguageString();
}
TemplateVariant code() const
{
return theTranslator->trCode();
}
Private()
{
static bool init=FALSE;
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -6190,13 +6196,16 @@ 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)
{
//%% bool is_leaf_node: true if this node does not have any children
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)
Expand All @@ -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
Expand All @@ -6231,6 +6242,7 @@ class NestingNodeContext::Private
addDirFiles(visitedClasses);
addPages(visitedClasses);
addModules(visitedClasses);
addMembers(visitedClasses);
}
TemplateVariant get(const QCString &n) const
{
Expand All @@ -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)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
Expand All @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand Down Expand Up @@ -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++;
}
}
Expand All @@ -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++;
}
}
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/context.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
8 changes: 4 additions & 4 deletions src/dirdef.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -359,7 +359,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
);
ol.endMemberDescription();
}
ol.endMemberDeclaration(QCString(),QCString());
ol.endMemberDeclaration(dd->anchor(),QCString());
}
}

Expand Down Expand Up @@ -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())
Expand Down Expand Up @@ -429,7 +429,7 @@ void DirDefImpl::writeFileList(OutputList &ol)
);
ol.endMemberDescription();
}
ol.endMemberDeclaration(QCString(),QCString());
ol.endMemberDeclaration(fd->anchor(),QCString());
}
}
ol.endMemberList();
Expand Down
4 changes: 2 additions & 2 deletions src/htmlgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Loading

0 comments on commit 32dc063

Please sign in to comment.