diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2011-11-17 21:22:48 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2011-11-17 21:22:48 (GMT) |
commit | b9e362903872f0313e6e26154aacc6c185a9b31d (patch) | |
tree | 0c7c3ab3d6f38e212b2cd4a4628e3c9d32d49db3 /src/index.cpp | |
parent | 169834ef89a1df22c8f72a01b6a9413bbb57edb5 (diff) | |
download | Doxygen-b9e362903872f0313e6e26154aacc6c185a9b31d.zip Doxygen-b9e362903872f0313e6e26154aacc6c185a9b31d.tar.gz Doxygen-b9e362903872f0313e6e26154aacc6c185a9b31d.tar.bz2 |
Release-1.7.5.1-20111117
Diffstat (limited to 'src/index.cpp')
-rw-r--r-- | src/index.cpp | 702 |
1 files changed, 38 insertions, 664 deletions
diff --git a/src/index.cpp b/src/index.cpp index fc400a1..3310357 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -47,10 +47,6 @@ #define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX 200 #define MAX_ITEMS_BEFORE_QUICK_INDEX 30 -static const char search_script[]= -#include "search_js.h" -; - int annotatedClasses; int annotatedClassesPrinted; @@ -328,6 +324,16 @@ void endFile(OutputList &ol,bool skipNavIndex) ol.endFile(); } +void endFileWithNavPath(Definition *d,OutputList &ol) +{ + static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW"); + if (generateTreeView) + { + d->writeNavigationPath(ol); + } + endFile(ol,generateTreeView); +} + //---------------------------------------------------------------------- template<class T> void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,const QCString &name,const QCString &anchor) { @@ -549,8 +555,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT bool b; if (cd->getLanguage()==SrcLangExt_VHDL) { - if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS || - (VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS) + if (!(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS) { continue; } @@ -996,7 +1001,15 @@ static void writeNamespaceIndex(OutputList &ol) } //ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name()); ol.startIndexKey(); - ol.writeObjectLink(0,nd->getOutputFileBase(),0,nd->displayName()); + if (nd->getLanguage()==SrcLangExt_VHDL) + { + ClassDef* ccd=getClass(nd->displayName()); + if (ccd) ol.writeObjectLink(0,ccd->getOutputFileBase(),0,nd->displayName()); + } + else + { + ol.writeObjectLink(0,nd->getOutputFileBase(),0,nd->displayName()); + } ol.endIndexKey(); bool hasBrief = !nd->briefDescription().isEmpty(); ol.startIndexValue(hasBrief); @@ -1016,8 +1029,6 @@ static void writeNamespaceIndex(OutputList &ol) //ol.docify(")"); } ol.endIndexValue(nd->getOutputFileBase(),hasBrief); - //ol.writeEndAnnoItem(nd->getOutputFileBase()); - //Doxygen::indexList.addContentsItem(FALSE,nd->displayName(),nd->getReference(),nd->getOutputFileBase(),0); addMembersToIndex(nd,LayoutDocManager::Namespace,nd->displayName(),QCString()); } } @@ -1107,6 +1118,10 @@ static void writeAnnotatedClassList(OutputList &ol) for (cli.toFirst();(cd=cli.current());++cli) { + + if (cd->getLanguage()==SrcLangExt_VHDL &&(!(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS )) + continue; + ol.pushGeneratorState(); if (cd->isEmbeddedInOuterScope()) { @@ -1122,7 +1137,6 @@ static void writeAnnotatedClassList(OutputList &ol) QCString prot= VhdlDocGen::getProtectionName((VhdlDocGen::VhdlClasses)cd->protection()); ol.docify(prot.data()); ol.writeString(" "); - ol.insertMemberAlign(); } ol.writeObjectLink(0,cd->getOutputFileBase(),cd->anchor(),cd->displayName()); ol.endIndexKey(); @@ -1241,8 +1255,11 @@ static void writeAlphabeticalClassList(OutputList &ol) { if (cd->isLinkableInProject() && cd->templateMaster()==0) { + if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture + continue; + int index = getPrefixIndex(cd->className()); - //printf("name=%s index=%d\n",cd->className().data(),index); + //printf("name=%s index=%d %d\n",cd->className().data(),index,cd->protection()); startLetter=toupper(cd->className().at(index))&0xFF; indexLetterUsed[startLetter] = true; } @@ -1287,12 +1304,21 @@ static void writeAlphabeticalClassList(OutputList &ol) startLetter=0; for (cli.toFirst();(cd=cli.current());++cli) { + if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture + continue; + if (cd->isLinkableInProject() && cd->templateMaster()==0) { int index = getPrefixIndex(cd->className()); startLetter=toupper(cd->className().at(index))&0xFF; // Do some sorting again, since the classes are sorted by name with // prefix, which should be ignored really. + if (cd->getLanguage()==SrcLangExt_VHDL) + { + if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS )// no architecture + classesByLetter[startLetter].inSort(cd); + } + else classesByLetter[startLetter].inSort(cd); } } @@ -1673,8 +1699,7 @@ void addClassMemberNameToIndex(MemberDef *md) static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS"); ClassDef *cd=0; - if (md->getLanguage()==SrcLangExt_VHDL && - (VhdlDocGen::isRecord(md) || VhdlDocGen::isUnit(md))) + if (md->getLanguage()==SrcLangExt_VHDL) { VhdlDocGen::adjustRecordMember(md); } @@ -2412,657 +2437,6 @@ static void writeNamespaceMemberIndex(OutputList &ol) //---------------------------------------------------------------------------- -#define NUM_SEARCH_INDICES 13 -#define SEARCH_INDEX_ALL 0 -#define SEARCH_INDEX_CLASSES 1 -#define SEARCH_INDEX_NAMESPACES 2 -#define SEARCH_INDEX_FILES 3 -#define SEARCH_INDEX_FUNCTIONS 4 -#define SEARCH_INDEX_VARIABLES 5 -#define SEARCH_INDEX_TYPEDEFS 6 -#define SEARCH_INDEX_ENUMS 7 -#define SEARCH_INDEX_ENUMVALUES 8 -#define SEARCH_INDEX_PROPERTIES 9 -#define SEARCH_INDEX_EVENTS 10 -#define SEARCH_INDEX_RELATED 11 -#define SEARCH_INDEX_DEFINES 12 - -class SearchIndexList : public SDict< QList<Definition> > -{ - public: - SearchIndexList(int size=17) : SDict< QList<Definition> >(size,FALSE) - { - setAutoDelete(TRUE); - } - ~SearchIndexList() {} - void append(Definition *d) - { - QList<Definition> *l = find(d->name()); - if (l==0) - { - l=new QList<Definition>; - SDict< QList<Definition> >::append(d->name(),l); - } - l->append(d); - } - int compareItems(GCI item1, GCI item2) - { - QList<Definition> *md1=(QList<Definition> *)item1; - QList<Definition> *md2=(QList<Definition> *)item2; - QCString n1 = md1->first()->localName(); - QCString n2 = md2->first()->localName(); - return stricmp(n1.data(),n2.data()); - } -}; - -static void addMemberToSearchIndex( - SearchIndexList symbols[NUM_SEARCH_INDICES][MEMBER_INDEX_ENTRIES], - int symbolCount[NUM_SEARCH_INDICES], - MemberDef *md) -{ - static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS"); - bool isLinkable = md->isLinkable(); - ClassDef *cd=0; - NamespaceDef *nd=0; - FileDef *fd=0; - if (isLinkable && - (cd=md->getClassDef()) && - cd->isLinkable() && - cd->templateMaster()==0) - { - QCString n = md->name(); - uchar charCode = (uchar)n.at(0); - uint letter = charCode<128 ? tolower(charCode) : charCode; - if (!n.isEmpty()) - { - bool isFriendToHide = hideFriendCompounds && - (QCString(md->typeString())=="friend class" || - QCString(md->typeString())=="friend struct" || - QCString(md->typeString())=="friend union"); - if (!(md->isFriend() && isFriendToHide)) - { - symbols[SEARCH_INDEX_ALL][letter].append(md); - symbolCount[SEARCH_INDEX_ALL]++; - } - if (md->isFunction() || md->isSlot() || md->isSignal()) - { - symbols[SEARCH_INDEX_FUNCTIONS][letter].append(md); - symbolCount[SEARCH_INDEX_FUNCTIONS]++; - } - else if (md->isVariable()) - { - symbols[SEARCH_INDEX_VARIABLES][letter].append(md); - symbolCount[SEARCH_INDEX_VARIABLES]++; - } - else if (md->isTypedef()) - { - symbols[SEARCH_INDEX_TYPEDEFS][letter].append(md); - symbolCount[SEARCH_INDEX_TYPEDEFS]++; - } - else if (md->isEnumerate()) - { - symbols[SEARCH_INDEX_ENUMS][letter].append(md); - symbolCount[SEARCH_INDEX_ENUMS]++; - } - else if (md->isEnumValue()) - { - symbols[SEARCH_INDEX_ENUMVALUES][letter].append(md); - symbolCount[SEARCH_INDEX_ENUMVALUES]++; - } - else if (md->isProperty()) - { - symbols[SEARCH_INDEX_PROPERTIES][letter].append(md); - symbolCount[SEARCH_INDEX_PROPERTIES]++; - } - else if (md->isEvent()) - { - symbols[SEARCH_INDEX_EVENTS][letter].append(md); - symbolCount[SEARCH_INDEX_EVENTS]++; - } - else if (md->isRelated() || md->isForeign() || - (md->isFriend() && !isFriendToHide)) - { - symbols[SEARCH_INDEX_RELATED][letter].append(md); - symbolCount[SEARCH_INDEX_RELATED]++; - } - } - } - else if (isLinkable && - (((nd=md->getNamespaceDef()) && nd->isLinkable()) || - ((fd=md->getFileDef()) && fd->isLinkable()) - ) - ) - { - QCString n = md->name(); - uchar charCode = (uchar)n.at(0); - uint letter = charCode<128 ? tolower(charCode) : charCode; - if (!n.isEmpty()) - { - symbols[SEARCH_INDEX_ALL][letter].append(md); - symbolCount[SEARCH_INDEX_ALL]++; - - if (md->isFunction()) - { - symbols[SEARCH_INDEX_FUNCTIONS][letter].append(md); - symbolCount[SEARCH_INDEX_FUNCTIONS]++; - } - else if (md->isVariable()) - { - symbols[SEARCH_INDEX_VARIABLES][letter].append(md); - symbolCount[SEARCH_INDEX_VARIABLES]++; - } - else if (md->isTypedef()) - { - symbols[SEARCH_INDEX_TYPEDEFS][letter].append(md); - symbolCount[SEARCH_INDEX_TYPEDEFS]++; - } - else if (md->isEnumerate()) - { - symbols[SEARCH_INDEX_ENUMS][letter].append(md); - symbolCount[SEARCH_INDEX_ENUMS]++; - } - else if (md->isEnumValue()) - { - symbols[SEARCH_INDEX_ENUMVALUES][letter].append(md); - symbolCount[SEARCH_INDEX_ENUMVALUES]++; - } - else if (md->isDefine()) - { - symbols[SEARCH_INDEX_DEFINES][letter].append(md); - symbolCount[SEARCH_INDEX_DEFINES]++; - } - } - } -} - -static QCString searchId(const QCString &s) -{ - int c; - uint i; - QCString result; - for (i=0;i<s.length();i++) - { - c=s.at(i); - if ((c>='0' && c<='9') || (c>='A' && c<='Z') || (c>='a' && c<='z')) - { - result+=(char)tolower(c); - } - else - { - char val[4]; - sprintf(val,"_%02x",(uchar)c); - result+=val; - } - } - return result; -} - -static int g_searchIndexCount[NUM_SEARCH_INDICES]; -static SearchIndexList g_searchIndexSymbols[NUM_SEARCH_INDICES][MEMBER_INDEX_ENTRIES]; -static const char *g_searchIndexName[NUM_SEARCH_INDICES] = -{ - "all", - "classes", - "namespaces", - "files", - "functions", - "variables", - "typedefs", - "enums", - "enumvalues", - "properties", - "events", - "related", - "defines" -}; - - -class SearchIndexCategoryMapping -{ - public: - SearchIndexCategoryMapping() - { - categoryLabel[SEARCH_INDEX_ALL] = theTranslator->trAll(); - categoryLabel[SEARCH_INDEX_CLASSES] = theTranslator->trClasses(); - categoryLabel[SEARCH_INDEX_NAMESPACES] = theTranslator->trNamespace(TRUE,FALSE); - categoryLabel[SEARCH_INDEX_FILES] = theTranslator->trFile(TRUE,FALSE); - categoryLabel[SEARCH_INDEX_FUNCTIONS] = theTranslator->trFunctions(); - categoryLabel[SEARCH_INDEX_VARIABLES] = theTranslator->trVariables(); - categoryLabel[SEARCH_INDEX_TYPEDEFS] = theTranslator->trTypedefs(); - categoryLabel[SEARCH_INDEX_ENUMS] = theTranslator->trEnumerations(); - categoryLabel[SEARCH_INDEX_ENUMVALUES] = theTranslator->trEnumerationValues(); - categoryLabel[SEARCH_INDEX_PROPERTIES] = theTranslator->trProperties(); - categoryLabel[SEARCH_INDEX_EVENTS] = theTranslator->trEvents(); - categoryLabel[SEARCH_INDEX_RELATED] = theTranslator->trFriends(); - categoryLabel[SEARCH_INDEX_DEFINES] = theTranslator->trDefines(); - } - QCString categoryLabel[NUM_SEARCH_INDICES]; -}; - -void writeJavascriptSearchIndex() -{ - if (!Config_getBool("GENERATE_HTML")) return; - //static bool treeView = Config_getBool("GENERATE_TREEVIEW"); - - ClassSDict::Iterator cli(*Doxygen::classSDict); - ClassDef *cd; - for (;(cd=cli.current());++cli) - { - uchar charCode = (uchar)cd->localName().at(0); - uint letter = charCode<128 ? tolower(charCode) : charCode; - if (cd->isLinkable() && isId(letter)) - { - g_searchIndexSymbols[SEARCH_INDEX_ALL][letter].append(cd); - g_searchIndexSymbols[SEARCH_INDEX_CLASSES][letter].append(cd); - g_searchIndexCount[SEARCH_INDEX_ALL]++; - g_searchIndexCount[SEARCH_INDEX_CLASSES]++; - } - } - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for (;(nd=nli.current());++nli) - { - uchar charCode = (uchar)nd->name().at(0); - uint letter = charCode<128 ? tolower(charCode) : charCode; - if (nd->isLinkable() && isId(letter)) - { - g_searchIndexSymbols[SEARCH_INDEX_ALL][letter].append(nd); - g_searchIndexSymbols[SEARCH_INDEX_NAMESPACES][letter].append(nd); - g_searchIndexCount[SEARCH_INDEX_ALL]++; - g_searchIndexCount[SEARCH_INDEX_NAMESPACES]++; - } - } - FileNameListIterator fnli(*Doxygen::inputNameList); - FileName *fn; - for (;(fn=fnli.current());++fnli) - { - FileNameIterator fni(*fn); - FileDef *fd; - for (;(fd=fni.current());++fni) - { - uchar charCode = (uchar)fd->name().at(0); - uint letter = charCode<128 ? tolower(charCode) : charCode; - if (fd->isLinkable() && isId(letter)) - { - g_searchIndexSymbols[SEARCH_INDEX_ALL][letter].append(fd); - g_searchIndexSymbols[SEARCH_INDEX_FILES][letter].append(fd); - g_searchIndexCount[SEARCH_INDEX_ALL]++; - g_searchIndexCount[SEARCH_INDEX_FILES]++; - } - } - } - { - MemberNameSDict::Iterator mnli(*Doxygen::memberNameSDict); - MemberName *mn; - // for each member name - for (mnli.toFirst();(mn=mnli.current());++mnli) - { - MemberDef *md; - MemberNameIterator mni(*mn); - // for each member definition - for (mni.toFirst();(md=mni.current());++mni) - { - addMemberToSearchIndex(g_searchIndexSymbols,g_searchIndexCount,md); - } - } - } - { - MemberNameSDict::Iterator fnli(*Doxygen::functionNameSDict); - MemberName *mn; - // for each member name - for (fnli.toFirst();(mn=fnli.current());++fnli) - { - MemberDef *md; - MemberNameIterator mni(*mn); - // for each member definition - for (mni.toFirst();(md=mni.current());++mni) - { - addMemberToSearchIndex(g_searchIndexSymbols,g_searchIndexCount,md); - } - } - } - - int i,p; - for (i=0;i<NUM_SEARCH_INDICES;i++) - { - for (p=0;p<MEMBER_INDEX_ENTRIES;p++) - { - if (g_searchIndexSymbols[i][p].count()>0) - { - g_searchIndexSymbols[i][p].sort(); - } - } - } - - QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search"; - - for (i=0;i<NUM_SEARCH_INDICES;i++) - { - for (p=0;p<MEMBER_INDEX_ENTRIES;p++) - { - if (g_searchIndexSymbols[i][p].count()>0) - { - QCString fileName; - fileName.sprintf("/%s_%02x.html",g_searchIndexName[i],p); - fileName.prepend(searchDirName); - QFile outFile(fileName); - if (outFile.open(IO_WriteOnly)) - { - FTextStream t(&outFile); - t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"" - " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl; - t << "<html><head><title></title>" << endl; - t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>" << endl; - t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl; - t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl; - t << "</head>" << endl; - t << "<body class=\"SRPage\">" << endl; - t << "<div id=\"SRIndex\">" << endl; - t << "<div class=\"SRStatus\" id=\"Loading\">" << theTranslator->trLoading() << "</div>" << endl; - - SDict<QList<Definition> >::Iterator li(g_searchIndexSymbols[i][p]); - QList<Definition> *dl; - int itemCount=0; - for (li.toFirst();(dl=li.current());++li) - { - Definition *d = dl->first(); - QCString id = d->localName(); - t << "<div class=\"SRResult\" id=\"SR_" - << searchId(d->localName()) << "\">" << endl; - t << " <div class=\"SREntry\">\n"; - if (dl->count()==1) // item with a unique name - { - MemberDef *md = 0; - bool isMemberDef = d->definitionType()==Definition::TypeMember; - if (isMemberDef) md = (MemberDef*)d; - t << " <a id=\"Item" << itemCount << "\" " - << "onkeydown=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "onkeypress=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "onkeyup=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "class=\"SRSymbol\" "; - t << externalLinkTarget() << "href=\"" << externalRef("../",d->getReference(),TRUE); - t << d->getOutputFileBase() << Doxygen::htmlFileExtension; - QCString anchor = d->anchor(); - if (!anchor.isEmpty()) - { - t << "#" << anchor; - } - t << "\""; - static bool extLinksInWindow = Config_getBool("EXT_LINKS_IN_WINDOW"); - if (!extLinksInWindow || d->getReference().isEmpty()) - { - t << " target=\"_parent\""; - } - t << ">"; - t << convertToXML(d->localName()); - t << "</a>" << endl; - if (d->getOuterScope()!=Doxygen::globalScope) - { - t << " <span class=\"SRScope\">" - << convertToXML(d->getOuterScope()->name()) - << "</span>" << endl; - } - else if (md) - { - FileDef *fd = md->getBodyDef(); - if (fd==0) fd = md->getFileDef(); - if (fd) - { - t << " <span class=\"SRScope\">" - << convertToXML(fd->localName()) - << "</span>" << endl; - } - } - } - else // multiple items with the same name - { - t << " <a id=\"Item" << itemCount << "\" " - << "onkeydown=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "onkeypress=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "onkeyup=\"" - << "return searchResults.Nav(event," << itemCount << ")\" " - << "class=\"SRSymbol\" " - << "href=\"javascript:searchResults.Toggle('SR_" - << searchId(d->localName()) << "')\">" - << convertToXML(d->localName()) << "</a>" << endl; - t << " <div class=\"SRChildren\">" << endl; - - QListIterator<Definition> di(*dl); - bool overloadedFunction = FALSE; - Definition *prevScope = 0; - int childCount=0; - for (di.toFirst();(d=di.current());) - { - ++di; - Definition *scope = d->getOuterScope(); - Definition *next = di.current(); - Definition *nextScope = 0; - MemberDef *md = 0; - bool isMemberDef = d->definitionType()==Definition::TypeMember; - if (isMemberDef) md = (MemberDef*)d; - if (next) nextScope = next->getOuterScope(); - - t << " <a id=\"Item" << itemCount << "_c" - << childCount << "\" " - << "onkeydown=\"" - << "return searchResults.NavChild(event," - << itemCount << "," << childCount << ")\" " - << "onkeypress=\"" - << "return searchResults.NavChild(event," - << itemCount << "," << childCount << ")\" " - << "onkeyup=\"" - << "return searchResults.NavChild(event," - << itemCount << "," << childCount << ")\" " - << "class=\"SRScope\" "; - if (!d->getReference().isEmpty()) - { - t << externalLinkTarget() << externalRef("../",d->getReference(),FALSE); - } - t << "href=\"" << externalRef("../",d->getReference(),TRUE); - t << d->getOutputFileBase() << Doxygen::htmlFileExtension; - QCString anchor = d->anchor(); - if (!anchor.isEmpty()) - { - t << "#" << anchor; - } - t << "\""; - static bool extLinksInWindow = Config_getBool("EXT_LINKS_IN_WINDOW"); - if (!extLinksInWindow || d->getReference().isEmpty()) - { - t << " target=\"_parent\""; - } - t << ">"; - bool found=FALSE; - overloadedFunction = ((prevScope!=0 && scope==prevScope) || - (scope && scope==nextScope) - ) && md && - (md->isFunction() || md->isSlot()); - QCString prefix; - if (md) prefix=convertToXML(md->localName()); - if (overloadedFunction) // overloaded member function - { - prefix+=convertToXML(md->argsString()); - // show argument list to disambiguate overloaded functions - } - else if (md) // unique member function - { - prefix+="()"; // only to show it is a function - } - if (d->definitionType()==Definition::TypeClass) - { - t << convertToXML(((ClassDef*)d)->displayName()); - found = TRUE; - } - else if (d->definitionType()==Definition::TypeNamespace) - { - t << convertToXML(((NamespaceDef*)d)->displayName()); - found = TRUE; - } - else if (scope==0 || scope==Doxygen::globalScope) // in global scope - { - if (md) - { - FileDef *fd = md->getBodyDef(); - if (fd==0) fd = md->getFileDef(); - if (fd) - { - if (!prefix.isEmpty()) prefix+=": "; - t << prefix << convertToXML(fd->localName()); - found = TRUE; - } - } - } - else if (md && (md->getClassDef() || md->getNamespaceDef())) - // member in class or namespace scope - { - SrcLangExt lang = md->getLanguage(); - t << convertToXML(d->getOuterScope()->qualifiedName()) - << getLanguageSpecificSeparator(lang) << prefix; - found = TRUE; - } - else if (scope) // some thing else? -> show scope - { - t << prefix << convertToXML(scope->name()); - found = TRUE; - } - if (!found) // fallback - { - t << prefix << "("+theTranslator->trGlobalNamespace()+")"; - } - t << "</a>" << endl; - prevScope = scope; - childCount++; - } - t << " </div>" << endl; // SRChildren - } - t << " </div>" << endl; // SREntry - t << "</div>" << endl; // SRResult - itemCount++; - } - t << "<div class=\"SRStatus\" id=\"Searching\">" - << theTranslator->trSearching() << "</div>" << endl; - t << "<div class=\"SRStatus\" id=\"NoMatches\">" - << theTranslator->trNoMatches() << "</div>" << endl; - - t << "<script type=\"text/javascript\"><!--" << endl; - t << "document.getElementById(\"Loading\").style.display=\"none\";" << endl; - t << "document.getElementById(\"NoMatches\").style.display=\"none\";" << endl; - t << "var searchResults = new SearchResults(\"searchResults\");" << endl; - t << "searchResults.Search();" << endl; - t << "--></script>" << endl; - - t << "</div>" << endl; // SRIndex - - t << "</body>" << endl; - t << "</html>" << endl; - - } - else - { - err("Failed to open file '%s' for writing...\n",fileName.data()); - } - } - } - } - //ol.popGeneratorState(); - - { - QFile f(searchDirName+"/search.js"); - if (f.open(IO_WriteOnly)) - { - FTextStream t(&f); - t << "// Search script generated by doxygen" << endl; - t << "// Copyright (C) 2009 by Dimitri van Heesch." << endl << endl; - t << "// The code in this file is loosly based on main.js, part of Natural Docs," << endl; - t << "// which is Copyright (C) 2003-2008 Greg Valure" << endl; - t << "// Natural Docs is licensed under the GPL." << endl << endl; - t << "var indexSectionsWithContent =" << endl; - t << "{" << endl; - bool first=TRUE; - int j=0; - for (i=0;i<NUM_SEARCH_INDICES;i++) - { - if (g_searchIndexCount[i]>0) - { - if (!first) t << "," << endl; - t << " " << j << ": \""; - for (p=0;p<MEMBER_INDEX_ENTRIES;p++) - { - t << (g_searchIndexSymbols[i][p].count()>0 ? "1" : "0"); - } - t << "\""; - first=FALSE; - j++; - } - } - if (!first) t << "\n"; - t << "};" << endl << endl; - t << "var indexSectionNames =" << endl; - t << "{" << endl; - first=TRUE; - j=0; - for (i=0;i<NUM_SEARCH_INDICES;i++) - { - if (g_searchIndexCount[i]>0) - { - if (!first) t << "," << endl; - t << " " << j << ": \"" << g_searchIndexName[i] << "\""; - first=FALSE; - j++; - } - } - if (!first) t << "\n"; - t << "};" << endl << endl; - t << search_script; - } - } - { - QFile f(searchDirName+"/nomatches.html"); - if (f.open(IO_WriteOnly)) - { - FTextStream t(&f); - t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " - "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl; - t << "<html><head><title></title>" << endl; - t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>" << endl; - t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl; - t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl; - t << "</head>" << endl; - t << "<body class=\"SRPage\">" << endl; - t << "<div id=\"SRIndex\">" << endl; - t << "<div class=\"SRStatus\" id=\"NoMatches\">" - << theTranslator->trNoMatches() << "</div>" << endl; - t << "</div>" << endl; - t << "</body>" << endl; - t << "</html>" << endl; - } - } - Doxygen::indexList.addStyleSheetFile("search/search.js"); -} - -void writeSearchCategories(FTextStream &t) -{ - static SearchIndexCategoryMapping map; - int i,j=0; - for (i=0;i<NUM_SEARCH_INDICES;i++) - { - if (g_searchIndexCount[i]>0) - { - t << "<a class=\"SelectItem\" href=\"javascript:void(0)\" " - << "onclick=\"searchBox.OnSelectItem(" << j << ")\">" - << "<span class=\"SelectionMark\"> </span>" - << convertToXML(map.categoryLabel[i]) - << "</a>"; - j++; - } - } -} - //---------------------------------------------------------------------------- static void writeExampleIndex(OutputList &ol) |