From dae59054d3387840f0f4b4bf8f237fee0591a5b1 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 9 Jun 2003 19:58:49 +0000 Subject: Release-1.3.1-20030609 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- doc/commands.doc | 3 +- doc/features.doc | 2 +- doc/index.doc | 2 +- doc/language.doc | 2 +- packages/rpm/doxygen.spec | 2 +- src/definition.cpp | 8 +- src/htmlgen.cpp | 22 +- src/index.cpp | 738 +++++++++++++++++++++++++++++++++------------- src/index.h | 27 +- src/memberdef.cpp | 2 +- src/scanner.l | 9 +- src/translator.h | 7 + src/translator_adapter.h | 15 +- src/translator_br.h | 2 +- src/translator_cz.h | 2 +- src/translator_de.h | 2 +- src/translator_en.h | 17 ++ src/translator_fr.h | 2 +- src/translator_hr.h | 2 +- src/translator_it.h | 2 +- src/translator_nl.h | 17 ++ 24 files changed, 659 insertions(+), 236 deletions(-) diff --git a/INSTALL b/INSTALL index dfd713a..c36d7f4 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.3.1-20030607 +DOXYGEN Version 1.3.1-20030609 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (07 June 2003) +Dimitri van Heesch (09 June 2003) diff --git a/README b/README index 44cbc5e..02b4378 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3.1_20030607 +DOXYGEN Version 1.3.1_20030609 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (07 June 2003) +Dimitri van Heesch (dimitri@stack.nl) (09 June 2003) diff --git a/VERSION b/VERSION index 0843be3..8d76dc2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.1-20030607 +1.3.1-20030609 diff --git a/doc/commands.doc b/doc/commands.doc index d7ba4f3..950d4e5 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -406,7 +406,8 @@ doxygen. Unrecognized commands are treated as normal text. the first chapter (in \f$\mbox{\LaTeX}\f$). The title argument is optional and replaces the default title that - doxygen normally generates. + doxygen normally generates. If you do not want any title you can + specify \c notitle as the argument of \\mainpage. Here is an example: \verbatim diff --git a/doc/features.doc b/doc/features.doc index fd5ff70..eaeefbf 100644 --- a/doc/features.doc +++ b/doc/features.doc @@ -21,7 +21,7 @@
  • Requires very little overhead from the writer of the documentation. Plain text will do, but for more fancy or structured output HTML tags and/or some of doxygen's special commands can be used. -
  • Supports C/C++, Java, (Corba, Microsoft, and KDE-DCOP) Java, +
  • Supports C/C++, Java, (Corba and Microsoft) Java, IDL, and to some extent C# and PHP sources.
  • Supports documentation of files, namespaces, classes, structs, unions, templates, variables, functions, typedefs, enums and defines. diff --git a/doc/index.doc b/doc/index.doc index df3455e..9aeba8b 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -27,7 +27,7 @@ Version: $(VERSION)

    Introduction

    Doxygen is a documentation system for C++, C, Java, IDL -(Corba, Microsoft, and KDE-DCOP flavors) and to some extent PHP and C#. +(Corba and Microsoft flavors) and to some extent PHP and C#. It can help you in three ways:
      diff --git a/doc/language.doc b/doc/language.doc index 5525e56..bb6cc00 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means that the text fragments that doxygen generates can be produced in languages other than English (the default) at configuration time. -Currently (version 1.3.1), 28 languages +Currently (version 1.3-20030430), 28 languages are supported (sorted alphabetically): Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index ca0232c..471f071 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3.1_20030607 +Version: 1.3.1_20030609 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/src/definition.cpp b/src/definition.cpp index ad50412..5692f88 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -126,7 +126,7 @@ void Definition::writeDocAnchorsToTagFile() void Definition::setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace) { if (d==0) return; - //printf("Definition::setDocumentation(%s,%s,%d)\n",d,docFile,docLine); + //printf("Definition::setDocumentation(%s,%s,%d,%d)\n",d,docFile,docLine,stripWhiteSpace); if (stripWhiteSpace) { // strip leading empty lines in front of the text, but not the @@ -141,6 +141,7 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, p++; s++; } + if (c=='\0') return; m_doc=d+so; // zero any trailing whitespace int e=m_doc.length()-1; @@ -150,8 +151,11 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, e--; } } - else + else // don't strip whitespace + { m_doc=d; + } + //printf("setting docs for %s: `%s'\n",name().data(),m_doc.data()); m_docFile = docFile; m_docLine = docLine; } diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 3d6b79a..1471638 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -47,8 +47,26 @@ static const char *defaultStyleSheet = " font-family: Geneva, Arial, Helvetica, sans-serif;\n" "}\n" "CAPTION { font-weight: bold }\n" -"A.qindex {}\n" -"A.qindexRef {}\n" +"DIV.qindex { width: 100%;\n" +" background-color: #ddddee;\n" +" border: 4px solid #ddddee;\n" +" text-align: center;\n" +" margin-bottom: 2px\n" +"}\n" +"A.qindex { text-decoration: none; font-weight: bold; }\n" +"A.qindex:hover { text-decoration: none; background-color: #ccccee }\n" +"A.qindexHL { text-decoration: none; font-weight: bold;\n" +" background-color: #6666cc;\n" +" color: #ffffff\n" +" }\n" +"A.qindexHL:hover { text-decoration: none; background-color: #6666cc }\n" +"A.qindexRef { text-decoration: none; font-weight: bold; }\n" +"A.qindexRef:hover { text-decoration: none; background-color: #ccccee }\n" +"A.qindexRefHL { text-decoration: none; font-weight: bold;\n" +" background-color: #6666cc;\n" +" color: #ffffff\n" +" }\n" +"A.qindexRefHL:hover { text-decoration: none; background-color: #6666cc }\n" "A.el { text-decoration: none; font-weight: bold }\n" "A.elRef { font-weight: bold }\n" "A.code { text-decoration: none; font-weight: normal; color: #4444ee }\n" diff --git a/src/index.cpp b/src/index.cpp index 8e369f7..af8f119 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -35,46 +35,88 @@ #include "ftvhelp.h" #include "dot.h" #include "pagedef.h" -//#include "packagedef.h" -int annotatedClasses; -int hierarchyClasses; -int documentedFunctions; -int documentedMembers; +enum ClassMemberHighlight +{ + CMHL_All = 0, + CMHL_Functions, + CMHL_Variables, + CMHL_Typedefs, + CMHL_Enums, + CMHL_EnumValues, + CMHL_Related, + CMHL_Properties, + CMHL_Events, + CMHL_Total = CMHL_Events+1 +}; + +enum FileMemberHighlight +{ + FMHL_All = 0, + FMHL_Functions, + FMHL_Variables, + FMHL_Typedefs, + FMHL_Enums, + FMHL_EnumValues, + FMHL_Defines, + FMHL_Total = FMHL_Defines+1 +}; + +enum NamespaceMemberHighlight +{ + NMHL_All = 0, + NMHL_Functions, + NMHL_Variables, + NMHL_Typedefs, + NMHL_Enums, + NMHL_EnumValues, + NMHL_Total = FMHL_EnumValues+1 +}; + +static int annotatedClasses; +static int hierarchyClasses; +static int documentedFiles; +static int documentedGroups; +static int documentedNamespaces; +static int indexedPages; +static int documentedClassMembers[CMHL_Total]; +static int documentedFileMembers[FMHL_Total]; +static int documentedNamespaceMembers[NMHL_Total]; int documentedHtmlFiles; -int documentedFiles; -int documentedGroups; -int documentedNamespaces; -int documentedNamespaceMembers; -int documentedIncludeFiles; int documentedPages; -int indexedPages; -//int documentedPackages; int countClassHierarchy(); -int countClassMembers(); -int countFileMembers(); +int countClassMembers(int filter=CMHL_All); +int countFileMembers(int filter=FMHL_All); void countFiles(int &htmlFiles,int &files); int countGroups(); int countNamespaces(); int countAnnotatedClasses(); -int countNamespaceMembers(); +int countNamespaceMembers(int filter=NMHL_All); int countIncludeFiles(); void countRelatedPages(int &docPages,int &indexPages); -//int countPackages(); void countDataStructures() { annotatedClasses = countAnnotatedClasses(); hierarchyClasses = countClassHierarchy(); - documentedMembers = countClassMembers(); - documentedFunctions = countFileMembers(); countFiles(documentedHtmlFiles,documentedFiles); countRelatedPages(documentedPages,indexedPages); documentedGroups = countGroups(); documentedNamespaces = countNamespaces(); - documentedNamespaceMembers = countNamespaceMembers(); - //documentedPackages = countPackages(); + int i; + for (i=0;i<(int)CMHL_Total;i++) + { + documentedClassMembers[i] = countClassMembers(i); + } + for (i=0;i<(int)FMHL_Total;i++) + { + documentedFileMembers[i] = countFileMembers(i); + } + for (i=0;i<(int)NMHL_Total;i++) + { + documentedNamespaceMembers[i] = countNamespaceMembers(i); + } } static void startIndexHierarchy(OutputList &ol,int level) @@ -107,11 +149,11 @@ static void endIndexHierarchy(OutputList &ol,int level) //---------------------------------------------------------------------------- -static bool g_memberIndexLetterUsed[256]; -static bool g_fileIndexLetterUsed[256]; -static bool g_namespaceIndexLetterUsed[256]; +static bool g_memberIndexLetterUsed[CMHL_Total][256]; +static bool g_fileIndexLetterUsed[FMHL_Total][256]; +static bool g_namespaceIndexLetterUsed[NMHL_Total][256]; -const int maxItemsBeforeQuickIndex = 50; +const int maxItemsBeforeQuickIndex = 30; //---------------------------------------------------------------------------- @@ -169,142 +211,195 @@ QCString abbreviate(const char *s,const char *name) //---------------------------------------------------------------------------- -void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE) +static void startQuickIndexItem(OutputList &ol,const char *s,const char *l, + bool hl,bool compact,bool &first) { + if (!first) ol.writeString(" | "); + first=FALSE; + if (!compact) ol.writeString("
    1. "); + QCString *dest; + if (s) // external link + { + if (hl && compact) + { + ol.writeString(""); +} + +static void endQuickIndexItem(OutputList &ol) +{ + ol.writeString(""); +} + +static QCString fixSpaces(const QCString &s) +{ + return substitute(s," "," "); +} + +void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FALSE) +{ + bool first=TRUE; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); QCString extLink; if (ext) { extLink="_doc"; } - if (compact) ol.startCenter(); else ol.startItemList(); + if (compact) + { + ol.writeString("
      "); + } + else + { + ol.startItemList(); + } if (!compact) ol.writeListItem(); if (Config_getBool("GENERATE_TREEVIEW")) { - ol.startQuickIndexItem(extLink,"main"+Doxygen::htmlFileExtension); + startQuickIndexItem(ol,extLink,"main"+Doxygen::htmlFileExtension, + hli==HLI_Main,compact,first); } else { - ol.startQuickIndexItem(extLink,"index"+Doxygen::htmlFileExtension); + startQuickIndexItem(ol,extLink,"index"+Doxygen::htmlFileExtension, + hli==HLI_Main,compact,first); } - ol.parseText(theTranslator->trMainPage()); - ol.endQuickIndexItem(); + ol.parseText(fixSpaces(theTranslator->trMainPage())); + endQuickIndexItem(ol); - //if (documentedPackages>0) - //{ - // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,"packages"+Doxygen::htmlFileExtension); - // parseText(ol,theTranslator->trPackages()); - // ol.endQuickIndexItem(); - //} if (documentedGroups>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"modules"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trModules()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"modules"+Doxygen::htmlFileExtension, + hli==HLI_Modules,compact,first); + ol.parseText(fixSpaces(theTranslator->trModules())); + endQuickIndexItem(ol); } if (documentedNamespaces>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"namespaces"+Doxygen::htmlFileExtension); + startQuickIndexItem(ol,extLink,"namespaces"+Doxygen::htmlFileExtension, + hli==HLI_Namespaces,compact,first); if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) { - ol.parseText(theTranslator->trPackages()); + ol.parseText(fixSpaces(theTranslator->trPackages())); } else { ol.parseText(theTranslator->trNamespaceList()); } - ol.endQuickIndexItem(); + endQuickIndexItem(ol); } if (hierarchyClasses>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"hierarchy"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trClassHierarchy()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"hierarchy"+Doxygen::htmlFileExtension, + hli==HLI_Hierarchy,compact,first); + ol.parseText(fixSpaces(theTranslator->trClassHierarchy())); + endQuickIndexItem(ol); } if (annotatedClasses>0) { if (Config_getBool("ALPHABETICAL_INDEX")) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"classes"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trAlphabeticalList()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"classes"+Doxygen::htmlFileExtension, + hli==HLI_Classes,compact,first); + ol.parseText(fixSpaces(theTranslator->trAlphabeticalList())); + endQuickIndexItem(ol); } if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"annotated"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trCompoundList()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"annotated"+Doxygen::htmlFileExtension, + hli==HLI_Annotated,compact,first); + ol.parseText(fixSpaces(theTranslator->trCompoundList())); + endQuickIndexItem(ol); } if (documentedHtmlFiles>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"files"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trFileList()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"files"+Doxygen::htmlFileExtension, + hli==HLI_Files,compact,first); + ol.parseText(fixSpaces(theTranslator->trFileList())); + endQuickIndexItem(ol); } - //if (documentedIncludeFiles>0 && Config_getBool("VERBATIM_HEADERS")) - //{ - // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,"headers"+Doxygen::htmlFileExtension); - // parseText(ol,theTranslator->trHeaderFiles()); - // ol.endQuickIndexItem(); - //} - //if (Config_getBool("SOURCE_BROWSER")) - //{ - // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,"sources"+Doxygen::htmlFileExtension); - // parseText(ol,theTranslator->trSources()); - // ol.endQuickIndexItem(); - //} - if (documentedNamespaceMembers>0) + if (documentedNamespaceMembers[NMHL_All]>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"namespacemembers"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trNamespaceMembers()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"namespacemembers"+Doxygen::htmlFileExtension, + hli==HLI_NamespaceMembers,compact,first); + ol.parseText(fixSpaces(theTranslator->trNamespaceMembers())); + endQuickIndexItem(ol); } - if (documentedMembers>0) + if (documentedClassMembers>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"functions"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trCompoundMembers()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"functions"+Doxygen::htmlFileExtension, + hli==HLI_Functions,compact,first); + ol.parseText(fixSpaces(theTranslator->trCompoundMembers())); + endQuickIndexItem(ol); } - if (documentedFunctions>0) + if (documentedFileMembers[FMHL_All]>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"globals"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trFileMembers()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"globals"+Doxygen::htmlFileExtension, + hli==HLI_Globals,compact,first); + ol.parseText(fixSpaces(theTranslator->trFileMembers())); + endQuickIndexItem(ol); } if (indexedPages>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"pages"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trRelatedPages()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"pages"+Doxygen::htmlFileExtension, + hli==HLI_Pages,compact,first); + ol.parseText(fixSpaces(theTranslator->trRelatedPages())); + endQuickIndexItem(ol); } if (Doxygen::exampleSDict->count()>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,"examples"+Doxygen::htmlFileExtension); - ol.parseText(theTranslator->trExamples()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,extLink,"examples"+Doxygen::htmlFileExtension, + hli==HLI_Examples,compact,first); + ol.parseText(fixSpaces(theTranslator->trExamples())); + endQuickIndexItem(ol); } if (Config_getBool("SEARCHENGINE")) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem("_cgi",""); - ol.parseText(theTranslator->trSearch()); - ol.endQuickIndexItem(); + startQuickIndexItem(ol,"_cgi","",hli==HLI_Search,compact,first); + ol.parseText(fixSpaces(theTranslator->trSearch())); + endQuickIndexItem(ol); } if (compact) { - ol.endCenter(); - ol.writeRuler(); + ol.writeString("
      \n"); } else { @@ -327,10 +422,10 @@ void endTitle(OutputList &ol,const char *fileName,const char *name) } void startFile(OutputList &ol,const char *name,const char *manName, - const char *title,bool external) + const char *title,bool external,HighlightedItem hli) { ol.startFile(name,manName,title,external); - if (!Config_getBool("DISABLE_INDEX")) writeQuickLinks(ol,TRUE,external); + if (!Config_getBool("DISABLE_INDEX")) writeQuickLinks(ol,TRUE,hli,external); } void endFile(OutputList &ol,bool external) @@ -704,7 +799,7 @@ void writeHierarchicalIndex(OutputList &ol) if (hierarchyClasses==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"hierarchy",0,"Hierarchical Index"); + startFile(ol,"hierarchy",0,"Hierarchical Index",FALSE,HLI_Hierarchy); startTitle(ol,0); QCString title = theTranslator->trClassHierarchy(); QCString htmlHelpTitle = title; @@ -834,7 +929,7 @@ void writeFileIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); if (documentedFiles==0) ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"files",0,"File Index"); + startFile(ol,"files",0,"File Index",FALSE,HLI_Files); startTitle(ol,0); QCString title = theTranslator->trFileList(); QCString htmlHelpTitle = title; @@ -1069,12 +1164,12 @@ void writeNamespaceIndex(OutputList &ol) QCString title; if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) { - startFile(ol,"namespaces",0,"Package Index"); + startFile(ol,"namespaces",0,"Package Index",FALSE,HLI_Namespaces); title = theTranslator->trPackageList(); } else { - startFile(ol,"namespaces",0,"Namespace Index"); + startFile(ol,"namespaces",0,"Namespace Index",FALSE,HLI_Namespaces); title = theTranslator->trNamespaceList(); } startTitle(ol,0); @@ -1450,7 +1545,7 @@ void writeAlphabeticalIndex(OutputList &ol) if (annotatedClasses==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"classes"+Doxygen::htmlFileExtension,0,"Alphabetical index"); + startFile(ol,"classes"+Doxygen::htmlFileExtension,0,"Alphabetical index",FALSE,HLI_Classes); startTitle(ol,0); ol.parseText(Config_getString("PROJECT_NAME")+" "+theTranslator->trCompoundIndex()); endTitle(ol,0,0); @@ -1471,7 +1566,7 @@ void writeAnnotatedIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"annotated",0,"Annotated Index"); + startFile(ol,"annotated",0,"Annotated Index",FALSE,HLI_Annotated); startTitle(ol,0); QCString title = theTranslator->trCompoundList(); QCString htmlHelpTitle = title; @@ -1563,7 +1658,7 @@ void writeAnnotatedIndex(OutputList &ol) //---------------------------------------------------------------------------- -void writeMemberList(OutputList &ol,bool useSections) +void writeMemberList(OutputList &ol,bool useSections,ClassMemberHighlight filter) { bool first = TRUE; char lastChar = 0; @@ -1581,11 +1676,21 @@ void writeMemberList(OutputList &ol,bool useSections) if ( md->isLinkableInProject() && (cd=md->getClassDef()) && - cd->isLinkableInProject() && cd->templateMaster()==0 + cd->isLinkableInProject() && cd->templateMaster()==0 && + ( filter==CMHL_All || + (filter==CMHL_Functions && (md->isFunction() || md->isSlot() || md->isSignal())) || + (filter==CMHL_Variables && md->isVariable()) || + (filter==CMHL_Typedefs && md->isTypedef()) || + (filter==CMHL_Enums && md->isEnumerate()) || + (filter==CMHL_EnumValues && md->isEnumValue()) || + (filter==CMHL_Properties && md->isProperty()) || + (filter==CMHL_Events && md->isEvent()) || + (filter==CMHL_Related && (md->isRelated() || md->isFriend())) + ) ) { found=TRUE; - isFunc=md->isFunction(); + isFunc=md->isFunction() || md->isSlot() || md->isSignal(); } md=mn->next(); } @@ -1648,9 +1753,9 @@ void writeMemberList(OutputList &ol,bool useSections) //---------------------------------------------------------------------------- -int countClassMembers() +int countClassMembers(int filter) { - int i=0;for (i=0;i<256;i++) g_memberIndexLetterUsed[i]=FALSE; + int i=0;for (i=0;i<256;i++) g_memberIndexLetterUsed[filter][i]=FALSE; int count=0; MemberNameSDict::Iterator mnli(Doxygen::memberNameSDict); MemberName *mn=0; @@ -1664,7 +1769,17 @@ int countClassMembers() if ( md->isLinkableInProject() && (cd=md->getClassDef()) && - cd->isLinkableInProject() + cd->isLinkableInProject() && + ( filter==CMHL_All || + (filter==CMHL_Functions && (md->isFunction() || md->isSlot() || md->isSignal())) || + (filter==CMHL_Variables && md->isVariable()) || + (filter==CMHL_Typedefs && md->isTypedef()) || + (filter==CMHL_Enums && md->isEnumerate()) || + (filter==CMHL_EnumValues && md->isEnumValue()) || + (filter==CMHL_Properties && md->isProperty()) || + (filter==CMHL_Events && md->isEvent()) || + (filter==CMHL_Related && (md->isRelated() || md->isFriend())) + ) ) { found=TRUE; @@ -1674,7 +1789,7 @@ int countClassMembers() if (found) { QCString n = mn->memberName(); - if (!n.isEmpty()) g_memberIndexLetterUsed[tolower(n.at(0))]=TRUE; + if (!n.isEmpty()) g_memberIndexLetterUsed[filter][tolower(n.at(0))]=TRUE; count++; } } @@ -1687,46 +1802,112 @@ void writeQuickMemberIndex(OutputList &ol,bool *charUsed) { bool first=TRUE; int i; - ol.startCenter(); + ol.writeString("
      "); for (i=33;i<127;i++) { - QCString anchor="index_"; + QCString anchor="#index_"; char is[2];is[0]=(char)i;is[1]='\0'; if (charUsed[i]) { - if (!first) - { - ol.writeString(" | "); - } - ol.startTextLink(0,anchor+is); + startQuickIndexItem(ol,0,anchor+is,FALSE,TRUE,first); ol.writeString(is); - ol.endTextLink(); + endQuickIndexItem(ol); first=FALSE; } } - ol.endCenter(); + ol.writeString("
      \n"); ol.newParagraph(); } //---------------------------------------------------------------------------- -void writeMemberIndex(OutputList &ol) +static void writeMemberIndexFiltered(OutputList &ol, + const char *fileName,ClassMemberHighlight hl) { - if (documentedMembers==0) return; + if (documentedClassMembers[hl]==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"functions",0,"Compound Member Index"); + startFile(ol,fileName,0,"Compound Member Index",FALSE,HLI_Functions); QCString title = theTranslator->trCompoundMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; - if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" "); - startTitle(ol,0); - ol.parseText(title); - endTitle(ol,0,0); - bool quickIndex = documentedMembers>maxItemsBeforeQuickIndex; + //if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" "); + //startTitle(ol,0); + //ol.parseText(title); + //endTitle(ol,0,0); + + ol.writeString("
      "); + + bool first=TRUE; + startQuickIndexItem(ol,0, + "functions"+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trAll())); + endQuickIndexItem(ol); + + if (documentedClassMembers[CMHL_Functions]>0) + { + startQuickIndexItem(ol,0, + "functions_func"+Doxygen::htmlFileExtension,hl==CMHL_Functions,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trFunctions())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Variables]>0) + { + startQuickIndexItem(ol,0, + "functions_vars"+Doxygen::htmlFileExtension,hl==CMHL_Variables,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trVariables())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Typedefs]>0) + { + startQuickIndexItem(ol,0, + "functions_type"+Doxygen::htmlFileExtension,hl==CMHL_Typedefs,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trTypedefs())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Enums]>0) + { + startQuickIndexItem(ol,0, + "functions_enum"+Doxygen::htmlFileExtension,hl==CMHL_Enums,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerations())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_EnumValues]>0) + { + startQuickIndexItem(ol,0, + "functions_eval"+Doxygen::htmlFileExtension,hl==CMHL_EnumValues,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerationValues())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Properties]>0) + { + startQuickIndexItem(ol,0, + "functions_prop"+Doxygen::htmlFileExtension,hl==CMHL_Properties,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trProperties())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Events]>0) + { + startQuickIndexItem(ol,0, + "functions_evnt"+Doxygen::htmlFileExtension,hl==CMHL_Events,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEvents())); + endQuickIndexItem(ol); + } + if (documentedClassMembers[CMHL_Related]>0) + { + startQuickIndexItem(ol,0, + "functions_rela"+Doxygen::htmlFileExtension,hl==CMHL_Related,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trRelatedFunctions())); + endQuickIndexItem(ol); + } + ol.writeString("

      \n"); + + + + bool quickIndex = documentedClassMembers[hl]>maxItemsBeforeQuickIndex; if (quickIndex) { - writeQuickMemberIndex(ol,g_memberIndexLetterUsed); + writeQuickMemberIndex(ol,g_memberIndexLetterUsed[hl]); } bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); @@ -1741,15 +1922,31 @@ void writeMemberIndex(OutputList &ol) FTVHelp *ftvHelp = FTVHelp::getInstance(); ftvHelp->addContentsItem(FALSE,0,"functions",0,ftvHelpTitle); } - ol.parseText(theTranslator->trCompoundMembersDescription(Config_getBool("EXTRACT_ALL"))); - writeMemberList(ol,quickIndex); + if (hl==CMHL_All) ol.parseText(theTranslator->trCompoundMembersDescription(Config_getBool("EXTRACT_ALL"))); + writeMemberList(ol,quickIndex,hl); endFile(ol); ol.popGeneratorState(); } +void writeMemberIndex(OutputList &ol) +{ + QCString ext=Doxygen::htmlFileExtension; + writeMemberIndexFiltered(ol,"functions"+ext,CMHL_All); + writeMemberIndexFiltered(ol,"functions_func"+ext,CMHL_Functions); + writeMemberIndexFiltered(ol,"functions_vars"+ext,CMHL_Variables); + writeMemberIndexFiltered(ol,"functions_type"+ext,CMHL_Typedefs); + writeMemberIndexFiltered(ol,"functions_enum"+ext,CMHL_Enums); + writeMemberIndexFiltered(ol,"functions_eval"+ext,CMHL_EnumValues); + writeMemberIndexFiltered(ol,"functions_prop"+ext,CMHL_Properties); + writeMemberIndexFiltered(ol,"functions_evnt"+ext,CMHL_Events); + writeMemberIndexFiltered(ol,"functions_rela"+ext,CMHL_Related); +} + //---------------------------------------------------------------------------- -void writeFileMemberList(OutputList &ol,bool useSections) +static void writeFileMemberList(OutputList &ol, + bool useSections, + FileMemberHighlight filter) { char lastChar=0; bool first=TRUE; @@ -1766,10 +1963,23 @@ void writeFileMemberList(OutputList &ol,bool useSections) md->getFileDef()->isLinkableInProject(); if (fd && hasDocs && - md->isLinkableInProject() - ) found=TRUE; + md->isLinkableInProject() && + ( filter==FMHL_All || + (filter==FMHL_Functions && md->isFunction()) || + (filter==FMHL_Variables && md->isVariable()) || + (filter==FMHL_Typedefs && md->isTypedef()) || + (filter==FMHL_Enums && md->isEnumerate()) || + (filter==FMHL_EnumValues && md->isEnumValue()) || + (filter==FMHL_Defines && md->isDefine()) + ) + ) + { + found=TRUE; + } else + { md=mn->next(); + } } if (found) // function is documented { @@ -1831,7 +2041,8 @@ void writeFileMemberList(OutputList &ol,bool useSections) //---------------------------------------------------------------------------- -void writeNamespaceMemberList(OutputList &ol,bool useSections) +void writeNamespaceMemberList(OutputList &ol,bool useSections, + NamespaceMemberHighlight filter) { char lastChar=0; bool first=TRUE; @@ -1844,10 +2055,22 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections) while (md && !found) { NamespaceDef *nd=md->getNamespaceDef(); - if (nd && nd->isLinkableInProject() && md->isLinkableInProject()) + if (nd && nd->isLinkableInProject() && md->isLinkableInProject() && + ( filter==NMHL_All || + (filter==NMHL_Functions && md->isFunction()) || + (filter==NMHL_Variables && md->isVariable()) || + (filter==NMHL_Typedefs && md->isTypedef()) || + (filter==NMHL_Enums && md->isEnumerate()) || + (filter==NMHL_EnumValues && md->isEnumValue()) + ) + ) + { found=TRUE; + } else + { md=mn->next(); + } } if (found) // member is documented and in a documented namespace { @@ -1906,9 +2129,9 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections) //---------------------------------------------------------------------------- -int countNamespaceMembers() +int countNamespaceMembers(int filter) { - int i=0;for (i=0;i<256;i++) g_namespaceIndexLetterUsed[i]=FALSE; + int i=0;for (i=0;i<256;i++) g_namespaceIndexLetterUsed[filter][i]=FALSE; int count=0; MemberNameSDict::Iterator mnli(Doxygen::functionNameSDict); MemberName *mn=0; @@ -1922,7 +2145,7 @@ int countNamespaceMembers() if (nd && nd->isLinkableInProject() && md->isLinkableInProject()) { QCString n = mn->memberName(); - if (!n.isEmpty()) g_namespaceIndexLetterUsed[tolower(n.at(0))]=TRUE; + if (!n.isEmpty()) g_namespaceIndexLetterUsed[filter][tolower(n.at(0))]=TRUE; found=TRUE; } else @@ -1935,9 +2158,9 @@ int countNamespaceMembers() //---------------------------------------------------------------------------- -int countFileMembers() +int countFileMembers(int filter) { - int i=0;for (i=0;i<256;i++) g_fileIndexLetterUsed[i]=FALSE; + int i=0;for (i=0;i<256;i++) g_fileIndexLetterUsed[filter][i]=FALSE; int count=0; MemberNameSDict::Iterator mnli(Doxygen::functionNameSDict); MemberName *mn=0; @@ -1950,11 +2173,22 @@ int countFileMembers() { if (md->isLinkableInProject() && (fd=md->getFileDef()) && - fd->isLinkableInProject() + fd->isLinkableInProject() && + ( filter==FMHL_All || + (filter==FMHL_Functions && md->isFunction()) || + (filter==FMHL_Variables && md->isVariable()) || + (filter==FMHL_Typedefs && md->isTypedef()) || + (filter==FMHL_Enums && md->isEnumerate()) || + (filter==FMHL_EnumValues && md->isEnumValue()) || + (filter==FMHL_Defines && md->isDefine()) + ) ) { QCString n = mn->memberName(); - if (!n.isEmpty()) g_fileIndexLetterUsed[tolower(n.at(0))]=TRUE; + if (!n.isEmpty()) + { + g_fileIndexLetterUsed[filter][tolower(n.at(0))]=TRUE; + } found=TRUE; } else @@ -1967,23 +2201,74 @@ int countFileMembers() //---------------------------------------------------------------------------- -void writeFileMemberIndex(OutputList &ol) +static void writeFileMemberIndexFiltered(OutputList &ol, + const char *fileName,FileMemberHighlight hl) { - if (documentedFunctions==0) return; + if (documentedFileMembers[hl]==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"globals",0,"File Member Index"); + startFile(ol,fileName,0,"File Member Index",FALSE,HLI_Globals); QCString title = theTranslator->trFileMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; - if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" "); - startTitle(ol,0); - ol.parseText(title); - endTitle(ol,0,0); - bool quickIndex = documentedMembers>maxItemsBeforeQuickIndex; + + ol.writeString("

      "); + + bool first=TRUE; + startQuickIndexItem(ol,0, + "globals"+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trAll())); + endQuickIndexItem(ol); + + if (documentedFileMembers[FMHL_Functions]>0) + { + startQuickIndexItem(ol,0, + "globals_func"+Doxygen::htmlFileExtension,hl==FMHL_Functions,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trFunctions())); + endQuickIndexItem(ol); + } + if (documentedFileMembers[FMHL_Variables]>0) + { + startQuickIndexItem(ol,0, + "globals_vars"+Doxygen::htmlFileExtension,hl==FMHL_Variables,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trVariables())); + endQuickIndexItem(ol); + } + if (documentedFileMembers[FMHL_Typedefs]>0) + { + startQuickIndexItem(ol,0, + "globals_type"+Doxygen::htmlFileExtension,hl==FMHL_Typedefs,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trTypedefs())); + endQuickIndexItem(ol); + } + if (documentedFileMembers[FMHL_Enums]>0) + { + startQuickIndexItem(ol,0, + "globals_enum"+Doxygen::htmlFileExtension,hl==FMHL_Enums,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerations())); + endQuickIndexItem(ol); + } + if (documentedFileMembers[FMHL_EnumValues]>0) + { + startQuickIndexItem(ol,0, + "globals_eval"+Doxygen::htmlFileExtension,hl==FMHL_EnumValues,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerationValues())); + endQuickIndexItem(ol); + } + if (documentedFileMembers[FMHL_Defines]>0) + { + startQuickIndexItem(ol,0, + "globals_defs"+Doxygen::htmlFileExtension,hl==FMHL_Defines,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trDefines())); + endQuickIndexItem(ol); + } + ol.writeString("

      \n"); + + + bool quickIndex = documentedFileMembers[hl]>maxItemsBeforeQuickIndex; if (quickIndex) { - writeQuickMemberIndex(ol,g_fileIndexLetterUsed); + writeQuickMemberIndex(ol,g_fileIndexLetterUsed[hl]); } bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); @@ -1998,31 +2283,92 @@ void writeFileMemberIndex(OutputList &ol) FTVHelp *ftvHelp = FTVHelp::getInstance(); ftvHelp->addContentsItem(FALSE,0,"globals",0,ftvHelpTitle); } - ol.parseText(theTranslator->trFileMembersDescription(Config_getBool("EXTRACT_ALL"))); - writeFileMemberList(ol,quickIndex); + if (hl==FMHL_All) ol.parseText(theTranslator->trFileMembersDescription(Config_getBool("EXTRACT_ALL"))); + writeFileMemberList(ol,quickIndex,hl); endFile(ol); ol.popGeneratorState(); } +void writeFileMemberIndex(OutputList &ol) +{ + QCString ext=Doxygen::htmlFileExtension; + writeFileMemberIndexFiltered(ol,"globals"+ext,FMHL_All); + writeFileMemberIndexFiltered(ol,"globals_func"+ext,FMHL_Functions); + writeFileMemberIndexFiltered(ol,"globals_vars"+ext,FMHL_Variables); + writeFileMemberIndexFiltered(ol,"globals_type"+ext,FMHL_Typedefs); + writeFileMemberIndexFiltered(ol,"globals_enum"+ext,FMHL_Enums); + writeFileMemberIndexFiltered(ol,"globals_eval"+ext,FMHL_EnumValues); + writeFileMemberIndexFiltered(ol,"globals_defs"+ext,FMHL_Defines); +} + + //---------------------------------------------------------------------------- -void writeNamespaceMemberIndex(OutputList &ol) +static void writeNamespaceMemberIndexFiltered(OutputList &ol, + const char *fileName, + NamespaceMemberHighlight hl) { - if (documentedNamespaceMembers==0) return; + if (documentedNamespaceMembers[hl]==0) return; ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); - startFile(ol,"namespacemembers",0,"Namespace Member Index"); + startFile(ol,fileName,0,"Namespace Member Index",FALSE,HLI_NamespaceMembers); QCString title = theTranslator->trNamespaceMembers(); QCString htmlHelpTitle = title; QCString ftvHelpTitle = title; - if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" "); - startTitle(ol,0); - ol.parseText(title); - endTitle(ol,0,0); - bool quickIndex = documentedMembers>maxItemsBeforeQuickIndex; + //if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" "); + //startTitle(ol,0); + //ol.parseText(title); + //endTitle(ol,0,0); + + ol.writeString("

      "); + + bool first=TRUE; + startQuickIndexItem(ol,0, + "namespacemembers"+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trAll())); + endQuickIndexItem(ol); + + if (documentedNamespaceMembers[NMHL_Functions]>0) + { + startQuickIndexItem(ol,0, + "namespacemembers_func"+Doxygen::htmlFileExtension,hl==NMHL_Functions,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trFunctions())); + endQuickIndexItem(ol); + } + if (documentedNamespaceMembers[NMHL_Variables]>0) + { + startQuickIndexItem(ol,0, + "namespacemembers_vars"+Doxygen::htmlFileExtension,hl==NMHL_Variables,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trVariables())); + endQuickIndexItem(ol); + } + if (documentedNamespaceMembers[NMHL_Typedefs]>0) + { + startQuickIndexItem(ol,0, + "namespacemembers_type"+Doxygen::htmlFileExtension,hl==NMHL_Typedefs,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trTypedefs())); + endQuickIndexItem(ol); + } + if (documentedNamespaceMembers[NMHL_Enums]>0) + { + startQuickIndexItem(ol,0, + "namespacemembers_enum"+Doxygen::htmlFileExtension,hl==NMHL_Enums,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerations())); + endQuickIndexItem(ol); + } + if (documentedNamespaceMembers[NMHL_EnumValues]>0) + { + startQuickIndexItem(ol,0, + "namespacemembers_eval"+Doxygen::htmlFileExtension,hl==NMHL_EnumValues,TRUE,first); + ol.writeString(fixSpaces(theTranslator->trEnumerationValues())); + endQuickIndexItem(ol); + } + ol.writeString("

      \n"); + + bool quickIndex = documentedNamespaceMembers[hl]>maxItemsBeforeQuickIndex; if (quickIndex) { - writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed); + writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed[hl]); } bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); @@ -2037,12 +2383,23 @@ void writeNamespaceMemberIndex(OutputList &ol) FTVHelp *ftvHelp = FTVHelp::getInstance(); ftvHelp->addContentsItem(FALSE,0,"namespacemembers",0,ftvHelpTitle); } - ol.parseText(theTranslator->trNamespaceMemberDescription(Config_getBool("EXTRACT_ALL"))); - writeNamespaceMemberList(ol,quickIndex); + if (hl==NMHL_All) ol.parseText(theTranslator->trNamespaceMemberDescription(Config_getBool("EXTRACT_ALL"))); + writeNamespaceMemberList(ol,quickIndex,hl); endFile(ol); ol.popGeneratorState(); } +void writeNamespaceMemberIndex(OutputList &ol) +{ + QCString ext=Doxygen::htmlFileExtension; + writeNamespaceMemberIndexFiltered(ol,"namespacemembers"+ext,NMHL_All); + writeNamespaceMemberIndexFiltered(ol,"namespacemembers_func"+ext,NMHL_Functions); + writeNamespaceMemberIndexFiltered(ol,"namespacemembers_vars"+ext,NMHL_Variables); + writeNamespaceMemberIndexFiltered(ol,"namespacemembers_type"+ext,NMHL_Typedefs); + writeNamespaceMemberIndexFiltered(ol,"namespacemembers_enum"+ext,NMHL_Enums); + writeNamespaceMemberIndexFiltered(ol,"namespacemembers_eval"+ext,NMHL_EnumValues); +} + //---------------------------------------------------------------------------- void writeExampleIndex(OutputList &ol) @@ -2050,7 +2407,7 @@ void writeExampleIndex(OutputList &ol) if (Doxygen::exampleSDict->count()==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"examples",0,"Example Index"); + startFile(ol,"examples",0,"Example Index",FALSE,HLI_Examples); startTitle(ol,0); QCString title = theTranslator->trExamples(); QCString htmlHelpTitle = title; @@ -2132,29 +2489,13 @@ void countRelatedPages(int &docPages,int &indexPages) //---------------------------------------------------------------------------- -//int countPackages() -//{ -// int count=0; -// PackageSDict::Iterator pdi(Doxygen::packageDict); -// PackageDef *pd=0; -// for (pdi.toFirst();(pd=pdi.current());++pdi) -// { -// if (!pd->isReference()) -// { -// count++; -// } -// } -// return count; -//} - -//---------------------------------------------------------------------------- void writePageIndex(OutputList &ol) { if (indexedPages==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"pages",0,"Page Index"); + startFile(ol,"pages",0,"Page Index",FALSE,HLI_Pages); startTitle(ol,0); QCString title = theTranslator->trRelatedPages(); QCString htmlHelpTitle = title; @@ -2655,7 +2996,7 @@ void writeGroupIndex(OutputList &ol) if (documentedGroups==0) return; ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); - startFile(ol,"modules",0,"Module Index"); + startFile(ol,"modules",0,"Module Index",FALSE,HLI_Modules); startTitle(ol,0); QCString title = theTranslator->trModules(); QCString htmlHelpTitle = title; @@ -2724,7 +3065,7 @@ void writeIndex(OutputList &ol) { title = theTranslator->trMainPage(); } - else + else if (Doxygen::mainPage) { title = substitute(Doxygen::mainPage->title(),"%",""); } @@ -2745,15 +3086,21 @@ void writeIndex(OutputList &ol) FTVHelp::getInstance()->addContentsItem(FALSE,0,indexName,0,title); } - if (!Config_getBool("DISABLE_INDEX")) writeQuickLinks(ol,TRUE); + if (!Config_getBool("DISABLE_INDEX")) writeQuickLinks(ol,TRUE,HLI_Main); ol.startTitleHead(0); if (Doxygen::mainPage && !Doxygen::mainPage->title().isEmpty()) { - ol.parseDoc(defFileName,defLine,0,0,Doxygen::mainPage->title(),FALSE); + if (Doxygen::mainPage->title().lower()!="notitle") + { + ol.parseDoc(defFileName,defLine,0,0,Doxygen::mainPage->title(),FALSE); + } } else { - ol.parseText(projPrefix+theTranslator->trDocumentation()); + if (!Config_getString("PROJECT_NAME").isEmpty()) + { + ol.parseText(projPrefix+theTranslator->trDocumentation()); + } } ol.endTitleHead(0,0); ol.newParagraph(); @@ -2763,7 +3110,7 @@ void writeIndex(OutputList &ol) ol.parseDoc(defFileName,defLine,0,0,Config_getString("PROJECT_NUMBER"),FALSE); ol.endProjectNumber(); } - if (Config_getBool("DISABLE_INDEX") && Doxygen::mainPage==0) writeQuickLinks(ol,FALSE); + if (Config_getBool("DISABLE_INDEX") && Doxygen::mainPage==0) writeQuickLinks(ol,FALSE,HLI_Main); if (Doxygen::mainPage) { @@ -2837,13 +3184,6 @@ void writeIndex(OutputList &ol) ol.endIndexSection(isMainPage); } - - //if (documentedPackages>0) - //{ - // ol.startIndexSection(isPackageIndex); - // parseText(ol,projPrefix+theTranslator->trPackageList()); - // ol.endIndexSection(isPackageIndex); - //} if (!Config_getBool("LATEX_HIDE_INDICES")) { if (documentedGroups>0) @@ -2884,12 +3224,6 @@ void writeIndex(OutputList &ol) } } ol.lastIndexPage(); - //if (documentedPackages>0) - //{ - // ol.startIndexSection(isPackageDocumentation); - // parseText(ol,projPrefix+theTranslator->trPackageDocumentation()); - // ol.endIndexSection(isPackageDocumentation); - //} if (documentedGroups>0) { ol.startIndexSection(isModuleDocumentation); @@ -2934,14 +3268,6 @@ void writeIndex(OutputList &ol) Doxygen::insideMainPage=TRUE; ol.disable(OutputGenerator::Man); startFile(ol,Doxygen::mainPage->name(),0,Doxygen::mainPage->title()); - //SectionInfo *si=0; - //if (!Doxygen::mainPage->title.isEmpty() && !Doxygen::mainPage->name.isEmpty() && - // (si=Doxygen::sectionDict[Doxygen::mainPage->name])!=0) - //{ - // ol.startSection(si->label,si->title,FALSE); - // ol.docify(si->title); - // ol.endSection(si->label,FALSE); - //} ol.startTextBlock(); ol.parseDoc(defFileName,defLine,0,0, Doxygen::mainPage->documentation(),FALSE diff --git a/src/index.h b/src/index.h index f6d546e..c4e8f8d 100644 --- a/src/index.h +++ b/src/index.h @@ -69,25 +69,44 @@ void writePackageIndex(OutputList &ol); void countDataStructures(); +#if 0 extern int annotatedClasses; extern int hierarchyClasses; extern int documentedFunctions; extern int documentedMembers; extern int documentedDefines; extern int documentedFiles; -extern int documentedHtmlFiles; extern int documentedGroups; extern int documentedNamespaces; extern int documentedNamespaceMembers; extern int documentedIncludeFiles; -extern int documentedPages; extern int indexedPages; -//extern int documentedPackages; +#endif +extern int documentedHtmlFiles; +extern int documentedPages; + +enum HighlightedItem +{ + HLI_None=0, + HLI_Main, + HLI_Modules, + HLI_Namespaces, + HLI_Hierarchy, + HLI_Classes, + HLI_Annotated, + HLI_Files, + HLI_NamespaceMembers, + HLI_Functions, + HLI_Globals, + HLI_Pages, + HLI_Examples, + HLI_Search +}; void startTitle(OutputList &ol,const char *fileName); void endTitle(OutputList &ol,const char *fileName,const char *name); void startFile(OutputList &ol,const char *name,const char *manName, - const char *title,bool external=FALSE); + const char *title,bool external=FALSE,HighlightedItem hli=HLI_None); void endFile(OutputList &ol,bool external=FALSE); #endif diff --git a/src/memberdef.cpp b/src/memberdef.cpp index ffda3bd..019943b 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1581,7 +1581,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ol.disable(OutputGenerator::Man); ol.newParagraph(); ol.startCallGraph(); - //ol.parseText(theTranslator->trCallGraph()); + ol.parseText(theTranslator->trCallGraph()); ol.endCallGraph(callGraph); ol.enableAll(); } diff --git a/src/scanner.l b/src/scanner.l index 9a7ad66..4cf55d0 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -492,7 +492,7 @@ static int yyread(char *buf,int max_size) /* start command character */ CMD ("\\"|"@") -SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"xrefitem"|"ingroup"|"callgraph"|"latexonly"|"htmlonly"|"xmlonly"|"{"|"verbatim"|"dotfile"|"defgroup"|"addtogroup"|"weakgroup"|"class"|"namespace"|"union"|"struct"|"fn"|"var"|"typedef"|"def"|"overload")|("<"{PRE}">") +SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"xrefitem"|"ingroup"|"callgraph"|"latexonly"|"htmlonly"|"xmlonly"|"{"|"verbatim"|"dotfile"|"defgroup"|"addtogroup"|"weakgroup"|"class"|"namespace"|"union"|"struct"|"fn"|"var"|"details"|"typedef"|"def"|"overload")|("<"{PRE}">") BN [ \t\n\r] BL [ \t\r]*"\n" B [ \t] @@ -3448,6 +3448,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] current->startLine = yyLineNr; BEGIN( ExampleDocArg1 ); } +{B}*{CMD}"details"{B}+ { /* nop */ + } {CMD}"name"[^\n]*\n { lastDefGroup.groupname.resize(0); memberGroupHeader=&yytext[5]; @@ -4139,6 +4141,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] else if (YY_START==ClassDocBrief && lastBriefContext==Doc) { + //printf("Add docs %s\n",current->doc.data()); current->doc += "\n\n"; BEGIN( lastDocContext ); } @@ -4150,7 +4153,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] else { current->doc += "\n\n"; - //printf("Add docs for class %s\n",current->name.data()); + //printf("Add docs for %s\n",current->name.data()); current_root->addSubEntry(current); current = new Entry ; initEntry(); @@ -4379,7 +4382,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] else { current->brief += "\n"; - if (!current->doc.isEmpty()) + if (!current->doc.stripWhiteSpace().isEmpty()) { current->doc += "

      "; } diff --git a/src/translator.h b/src/translator.h index ec9f213..4b1679c 100644 --- a/src/translator.h +++ b/src/translator.h @@ -400,6 +400,13 @@ class Translator virtual QCString trPackageAttribs() = 0; virtual QCString trStaticPackageAttribs() = 0; +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trAll() = 0; + virtual QCString trCallGraph() = 0; + }; #endif diff --git a/src/translator_adapter.h b/src/translator_adapter.h index ac44505..7aaa3ca 100644 --- a/src/translator_adapter.h +++ b/src/translator_adapter.h @@ -40,7 +40,19 @@ class TranslatorAdapterBase : public Translator }; -class TranslatorAdapter_1_3 : public TranslatorAdapterBase +class TranslatorAdapter_1_3_1 : public TranslatorAdapterBase +{ + public: + virtual QCString updateNeededMessage() + { return createUpdateNeededMessage(idLanguage(),"release 1.3.1"); } + + virtual QCString trAll() + { return english.trAll(); } + virtual QCString trCallGraph() + { return english.trCallGraph(); } +}; + +class TranslatorAdapter_1_3 : public TranslatorAdapter_1_3_1 { public: virtual QCString updateNeededMessage() @@ -58,7 +70,6 @@ class TranslatorAdapter_1_3 : public TranslatorAdapterBase { return english.trStaticPackageAttribs(); } }; - class TranslatorAdapter_1_2_18 : public TranslatorAdapter_1_3 { public: diff --git a/src/translator_br.h b/src/translator_br.h index f45947f..a9066d7 100644 --- a/src/translator_br.h +++ b/src/translator_br.h @@ -27,7 +27,7 @@ #ifndef TRANSLATOR_BR_H #define TRANSLATOR_BR_H -class TranslatorBrazilian: public Translator +class TranslatorBrazilian: public TranslatorAdapter_1_3_1 { public: diff --git a/src/translator_cz.h b/src/translator_cz.h index c493e33..a0db49b 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -168,7 +168,7 @@ // Windows version. The version which does not call the function is // probably slightly faster. -class TranslatorCzech : public Translator +class TranslatorCzech : public TranslatorAdapter_1_3_1 { private: /*! The decode() inline assumes the source written in the diff --git a/src/translator_de.h b/src/translator_de.h index 215b572..9ba91e1 100644 --- a/src/translator_de.h +++ b/src/translator_de.h @@ -83,7 +83,7 @@ #ifndef TRANSLATOR_DE_H #define TRANSLATOR_DE_H -class TranslatorGerman : public Translator +class TranslatorGerman : public TranslatorAdapter_1_3_1 { public: diff --git a/src/translator_en.h b/src/translator_en.h index 1b00007..9342828 100644 --- a/src/translator_en.h +++ b/src/translator_en.h @@ -1472,6 +1472,23 @@ class TranslatorEnglish : public Translator return "Static Package Attributes"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used in the quick index of a class/file/namespace member list page + * to link to the unfiltered list of all members. + */ + virtual QCString trAll() + { + return "All"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Here is the call graph for this function:"; + } + }; diff --git a/src/translator_fr.h b/src/translator_fr.h index 8a30f2d..82b22b2 100644 --- a/src/translator_fr.h +++ b/src/translator_fr.h @@ -49,7 +49,7 @@ #ifndef TRANSLATOR_FR_H #define TRANSLATOR_FR_H -class TranslatorFrench : public Translator +class TranslatorFrench : public TranslatorAdapter_1_3_1 { public: QCString idLanguage() diff --git a/src/translator_hr.h b/src/translator_hr.h index 9daab7e..5a8e2f0 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -56,7 +56,7 @@ #ifndef TRANSLATOR_HR_H #define TRANSLATOR_HR_H -class TranslatorCroatian : public Translator +class TranslatorCroatian : public TranslatorAdapter_1_3_1 { private: /*! to avoid macro redefinition from translator_cz.h */ diff --git a/src/translator_it.h b/src/translator_it.h index 9f806d4..406ce4b 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -68,7 +68,7 @@ #ifndef TRANSLATOR_IT_H #define TRANSLATOR_IT_H -class TranslatorItalian : public Translator +class TranslatorItalian : public TranslatorAdapter_1_3_1 { public: diff --git a/src/translator_nl.h b/src/translator_nl.h index 5ca923d..7b18489 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -1068,6 +1068,23 @@ class TranslatorDutch : public Translator { return "Statische Package Attributen"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used in the quick index of a class/file/namespace member list page + * to link to the unfiltered list of all members. + */ + virtual QCString trAll() + { + return "Alle"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Hier is de call graaf voor deze functie:"; + } }; -- cgit v0.12