diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 32 | ||||
-rw-r--r-- | src/config.l | 34 | ||||
-rw-r--r-- | src/defargs.l | 2 | ||||
-rw-r--r-- | src/definition.cpp | 11 | ||||
-rw-r--r-- | src/dot.cpp | 84 | ||||
-rw-r--r-- | src/dot.h | 3 | ||||
-rw-r--r-- | src/doxygen.cpp | 42 | ||||
-rw-r--r-- | src/doxygen.pro.in | 2 | ||||
-rw-r--r-- | src/doxysearch.cpp | 4 | ||||
-rw-r--r-- | src/filedef.cpp | 4 | ||||
-rw-r--r-- | src/htmlgen.cpp | 6 | ||||
-rw-r--r-- | src/image.cpp | 6 | ||||
-rw-r--r-- | src/index.cpp | 19 | ||||
-rw-r--r-- | src/index.h | 1 | ||||
-rw-r--r-- | src/language.cpp | 5 | ||||
-rw-r--r-- | src/memberdef.cpp | 90 | ||||
-rw-r--r-- | src/namespacedef.cpp | 4 | ||||
-rw-r--r-- | src/outputgen.cpp | 9 | ||||
-rw-r--r-- | src/scanner.l | 49 | ||||
-rw-r--r-- | src/suffixtree.cpp | 2 | ||||
-rw-r--r-- | src/translator.h | 72 | ||||
-rw-r--r-- | src/translator_cz.h | 3 | ||||
-rw-r--r-- | src/translator_hr.h | 39 | ||||
-rw-r--r-- | src/translator_pl.h | 902 | ||||
-rw-r--r-- | src/util.cpp | 34 |
25 files changed, 1323 insertions, 136 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index 558d33b..9d66246 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -45,7 +45,7 @@ static QCString stripExtension(const char *fName) ClassDef::ClassDef( const char *defFileName,int defLine, const char *nm,CompoundType ct, - const char *ref,const char *fName) + const char *lref,const char *fName) : Definition(defFileName,defLine,removeRedundantWhiteSpace(nm)) { //name=n; @@ -53,9 +53,9 @@ ClassDef::ClassDef( fileName=stripExtension(fName); else fileName="class_"+nameToFile(nm); - if (ref) + if (lref) { - //url=(QCString)"doxygen=\""+ref+":\" href=\""+fileName; + //url=(QCString)"doxygen=\""+lref+":\" href=\""+fileName; exampleList = 0; exampleDict = 0; } @@ -74,7 +74,7 @@ ClassDef::ClassDef( allMemberNameInfoList->setAutoDelete(TRUE); allMemberNameInfoDict = new MemberNameInfoDict(1009); visited=FALSE; - setReference(ref); + setReference(lref); compType=ct; incInfo=0; tempArgs=0; @@ -551,17 +551,17 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) } } -void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local) +void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local) { - //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,incName,local); + //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,includeName,local); if (!incInfo) incInfo=new IncludeInfo; - if ((incName && incInfo->includeName.isEmpty()) || + if ((includeName && incInfo->includeName.isEmpty()) || (fd!=0 && incInfo->fileDef==0) ) { //printf("Setting file info\n"); incInfo->fileDef = fd; - incInfo->includeName = incName; + incInfo->includeName = includeName; incInfo->local = local; } } @@ -776,6 +776,14 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.startDotGraph(); parseText(ol,theTranslator->trClassDiagram(name())); ol.endDotGraph(inheritanceGraph); + { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<font size=2><center>["); + ol.writeHtmlLink("graph_legend.html",theTranslator->trLegend()); + ol.writeString("]</center></font>"); + ol.popGeneratorState(); + } ol.popGeneratorState(); } } @@ -800,6 +808,14 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.startDotGraph(); parseText(ol,theTranslator->trCollaborationDiagram(name())); ol.endDotGraph(usageImplGraph); + { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<font size=2><center>["); + ol.writeHtmlLink("graph_legend.html",theTranslator->trLegend()); + ol.writeString("]</center></font>"); + ol.popGeneratorState(); + } ol.popGeneratorState(); } } diff --git a/src/config.l b/src/config.l index 57064e7..2a2174e 100644 --- a/src/config.l +++ b/src/config.l @@ -829,7 +829,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# information to generate all constant output in the proper language. \n"; t << "# The default language is English, other supported languages are: \n"; t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"; - t << "# Spanish and Russian\n"; + t << "# Spanish, Russian, Croatian and Polish.\n"; t << "\n"; } t << "OUTPUT_LANGUAGE = "; @@ -894,7 +894,7 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; - t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n"; + t << "# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \n"; t << "# undocumented classes that are normally visible in the class hierarchy. \n"; t << "# If set to NO (the default) these class will be included in the various \n"; t << "# overviews. This option has no effect if EXTRACT_ALL is enabled. \n"; @@ -1994,9 +1994,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); width=1024; } - else if (width<250) // clip to lower bound + else if (width<100) // clip to lower bound { - width=250; + width=100; } else if (width>30000) // clip to upper bound { @@ -2019,9 +2019,9 @@ void configStrToVal() "Using the default of 1024 pixels!\n"); height=1024; } - else if (height<250) // clip to lower bound + else if (height<100) // clip to lower bound { - height=250; + height=100; } else if (height>30000) // clip to upper bound { @@ -2333,6 +2333,28 @@ void checkConfig() err("Could not create output directory %s\n",Config::manOutputDir.data()); exit(1); } + + // expand the relative stripFromPath values + char *sfp = Config::stripFromPath.first(); + while (sfp) + { + QCString path = sfp; + if (path.at(0)!='/' && (path.length()<=2 || path.at(1)!=':')) + { + QFileInfo fi(path); + if (fi.exists() && fi.isDir()) + { + int i = Config::stripFromPath.at(); + Config::stripFromPath.remove(); + if (Config::stripFromPath.at()==i) // did not remove last item + Config::stripFromPath.insert(i,fi.absFilePath()+"/"); + else + Config::stripFromPath.append(fi.absFilePath()+"/"); + } + } + sfp = Config::stripFromPath.next(); + } + // Test to see if HTML header is valid if (!Config::headerFile.isEmpty()) diff --git a/src/defargs.l b/src/defargs.l index 88e4148..05a26b6 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -270,7 +270,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* { a->type = g_curArgTypeName.stripWhiteSpace(); } - a->array = g_curArgArray.copy(); + a->array = removeRedundantWhiteSpace(g_curArgArray); a->defval = g_curArgDefValue.copy(); a->docs = g_curArgDocs.stripWhiteSpace(); //printf("Argument `%s' `%s' adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); diff --git a/src/definition.cpp b/src/definition.cpp index 1d663ab..4b96f04 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -324,21 +324,22 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) parseText(ol,theTranslator->trReferencedBy()); ol.docify(" "); - QCString defLine=theTranslator->trWriteList(sourceRefList->count()); + QCString ldefLine=theTranslator->trWriteList(sourceRefList->count()); QRegExp marker("@[0-9]+"); int index=0,newIndex,matchLen; // now replace all markers in inheritLine with links to the classes - while ((newIndex=marker.match(defLine,index,&matchLen))!=-1) + while ((newIndex=marker.match(ldefLine,index,&matchLen))!=-1) { bool ok; - parseText(ol,defLine.mid(index,newIndex-index)); - uint entryIndex = defLine.mid(newIndex+1,matchLen-1).toUInt(&ok); + parseText(ol,ldefLine.mid(index,newIndex-index)); + uint entryIndex = ldefLine.mid(newIndex+1,matchLen-1).toUInt(&ok); MemberDef *md=sourceRefList->at(entryIndex); if (ok && md) { QCString scope=md->getScopeString(); QCString name=md->name(); + //printf("class=%p scope=%s scopeName=%s\n",md->memberClass(),scope.data(),scopeName); if (!scope.isEmpty() && scope!=scopeName) { name.prepend(scope+"::"); @@ -358,7 +359,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) } index=newIndex+matchLen; } - parseText(ol,defLine.right(defLine.length()-index)); + parseText(ol,ldefLine.right(ldefLine.length()-index)); ol.writeString("."); } ol.popGeneratorState(); diff --git a/src/dot.cpp b/src/dot.cpp index 207aa38..996bf32 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -23,6 +23,8 @@ #include "message.h" #include "util.h" #include "config.h" +#include "language.h" +#include "scanner.h" #include <qdir.h> #include <qfile.h> @@ -55,7 +57,11 @@ static const char *edgeStyleMap[] = static bool convertMapFile(QTextStream &t,const char *mapName) { QFile f(mapName); - if (!f.open(IO_ReadOnly)) return FALSE; + if (!f.open(IO_ReadOnly)) + { + err("Error opening map file %s for inclusion in the docs!\n",mapName); + return FALSE; + } const int maxLineLen=1024; char buf[maxLineLen]; char url[maxLineLen]; @@ -1016,11 +1022,10 @@ static void findMaximalDotGraph(DotNode *root, // remove temporary dot file thisDir.remove(baseName+"_tmp.dot"); - } while (maxDistance-minDistance>1); + } while ((maxDistance-minDistance)>1); if (!lastFit) { - //printf("Using last fit %d\n",minDistance); writeDotGraph(root, format, baseName, @@ -1082,6 +1087,7 @@ void DotClassGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } // run dot again to create an image map @@ -1090,6 +1096,7 @@ void DotClassGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" @@ -1101,18 +1108,20 @@ void DotClassGraph::writeGraph(QTextStream &out, } else if (format==EPS) // run dot to create a .eps image { - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tps \"%s.dot\" -o \"%s.eps\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); return; } int maxWidth = 420; /* approx. page width in points */ @@ -1125,7 +1134,7 @@ void DotClassGraph::writeGraph(QTextStream &out, "\\end{center}\n" "\\end{figure}\n"; } - thisDir.remove(baseName+".dot"); + //thisDir.remove(baseName+".dot"); QDir::setCurrent(oldDir); } @@ -1240,12 +1249,13 @@ void DotInclDepGraph::writeGraph(QTextStream &out, if (format==GIF) { // run dot to create a .gif image - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tgif \"%s.dot\" -o \"%s.gif\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } @@ -1255,11 +1265,13 @@ void DotInclDepGraph::writeGraph(QTextStream &out, if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" - << mapName << "_map\"></center>" << endl; + << mapName << "_map\">"; + out << "</center>" << endl; out << "<map name=\"" << mapName << "_map\">" << endl; convertMapFile(out,baseName+".map"); out << "</map><p>" << endl; @@ -1268,18 +1280,20 @@ void DotInclDepGraph::writeGraph(QTextStream &out, else if (format==EPS) { // run dot to create a .eps image - QCString dotCmd; + QCString dotCmd(4096); dotCmd.sprintf("%sdot -Tps \"%s.dot\" -o \"%s.eps\"", Config::dotPath.data(),baseName.data(),baseName.data()); if (system(dotCmd)!=0) { err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); return; } int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); return; } int maxWidth = 420; /* approx. page width in points */ @@ -1302,3 +1316,57 @@ bool DotInclDepGraph::isTrivial() const { return m_startNode->m_children==0; } + +//------------------------------------------------------------- + +void generateGraphLegend(const char *path) +{ + QFile dotFile((QCString)path+"/graph_legend.dot"); + if (!dotFile.open(IO_WriteOnly)) + { + err("Could not open file %s for writing\n", + convertToQCString(dotFile.name()).data()); + return; + } + QTextStream dotText(&dotFile); + dotText << "digraph inheritance\n"; + dotText << "{\n"; + dotText << " Node7 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n"; + dotText << " Node8 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node8 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_publicbase.html\"];\n"; + dotText << " Node9 -> Node8 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node9 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"red\",URL=\"$class_truncated.html\"];\n"; + dotText << " Node11 -> Node7 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node11 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_protectedbase.html\"];\n"; + dotText << " Node12 -> Node7 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node12 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_privatebase.html\"];\n"; + dotText << " Node13 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; + dotText << " Node13 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"grey\"];\n"; + dotText << " Node14 -> Node7 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"doxfont\"];\n"; + dotText << " Node14 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_used.html\"];\n"; + dotText << "}\n"; + dotFile.close(); + + QDir d(path); + // store the original directory + if (!d.exists()) + { + err("Error: Output dir %s does not exist!\n",path); exit(1); + } + QCString oldDir = convertToQCString(QDir::currentDirPath()); + // goto the html output directory (i.e. path) + QDir::setCurrent(d.absPath()); + + // run dot to generate the a .gif image from the graph + QCString dotCmd(4096); + dotCmd.sprintf("%sdot -Tgif graph_legend.dot -o graph_legend.gif", + Config::dotPath.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return; + } + QDir::setCurrent(oldDir); +} + @@ -154,3 +154,6 @@ class DotInclDepGraph int m_maxDistance; bool m_inverse; }; + +void generateGraphLegend(const char *path); + diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 31e012b..ae77a91 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -656,6 +656,7 @@ static void buildNamespaceList(Entry *root) FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig); // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); + addNamespaceToGroups(root,nd); } else /* if (!root->doc.isEmpty() || !root->brief.isEmpty() || @@ -1493,7 +1494,10 @@ static void buildMemberList(Entry *root) } else if (root->parent && !(root->parent->section & Entry::COMPOUND_MASK) && - root->name.find("::")==-1 && + root->name.find("::")==-1 && // TODO: remove this check + // it breaks cases like + // func<A::B>(), but it is needed + // for detect that A::func() is a member root->relates.isEmpty() && root->type.left(7)!="extern " && root->type.left(8)!="typedef " @@ -2678,7 +2682,9 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl } namespaceName=removeAnnonymousScopes(namespaceName); + //printf("namespaceName=`%s' className=`%s'\n",namespaceName.data(),className.data()); // merge class and namespace scopes again + scopeName.resize(0); if (!namespaceName.isEmpty()) { if (className.isEmpty()) @@ -3292,14 +3298,14 @@ static void findMemberDocumentation(Entry *root) if (!root->type.isEmpty()) { - findMember(root, - root->type+" "+ - root->inside+ - root->name+ - root->args+ - root->exception, - root->relates, - FALSE,isFunc); + findMember(root, + root->type+" "+ + root->inside+ + root->name+ + root->args+ + root->exception, + root->relates, + FALSE,isFunc); } else { @@ -4576,8 +4582,8 @@ static void generateSearchIndex() if (f.open(IO_WriteOnly)) { QTextStream t(&f); - t << Config::docURL << endl << Config::cgiURL - << "/" << Config::cgiName << endl; + t << Config::docURL << "/" << endl + << Config::cgiURL << "/" << Config::cgiName << endl; f.close(); } else @@ -5112,7 +5118,7 @@ int main(int argc,char **argv) #endif initPreprocessor(); - + /************************************************************************** * Handle arguments * **************************************************************************/ @@ -5218,6 +5224,15 @@ int main(int argc,char **argv) exampleNameDict = new FileNameDict(1009); imageNameDict = new FileNameDict(257); + if (!Config::docURL.isEmpty()) + { + tagDestinationDict.insert("_doc",new QCString(Config::docURL)); + } + if (!Config::cgiURL.isEmpty()) + { + tagDestinationDict.insert("_cgi",new QCString(Config::cgiURL+"/"+Config::cgiName)); + } + /************************************************************************** * Initialize some global constants **************************************************************************/ @@ -5555,6 +5570,9 @@ int main(int argc,char **argv) msg("Generating page index...\n"); writePageIndex(*outputList); + msg("Generating graph info page...\n"); + writeGraphInfo(*outputList); + msg("Generating search index...\n"); generateSearchIndex(); diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index eda5885..81d0817 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -25,7 +25,7 @@ HEADERS = doxygen.h scanner.h classdef.h classlist.h memberdef.h \ namespacedef.h version.h language.h translator.h \ translator_nl.h translator_se.h translator_cz.h translator_fr.h \ translator_it.h formula.h debug.h membergroup.h htmlhelp.h \ - translator_ru.h dot.h rtfgen.h + translator_ru.h translator_pl.h dot.h rtfgen.h SOURCES = doxygen.cpp scanner.cpp classdef.cpp classlist.cpp memberdef.cpp \ membername.cpp index.cpp memberlist.cpp \ entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \ diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp index 1dbad7e..d14cf37 100644 --- a/src/doxysearch.cpp +++ b/src/doxysearch.cpp @@ -204,7 +204,7 @@ void printFooter() //---------------------------------------------------------------------------- -void message(char *fmt,...) +void message(const char *fmt,...) { printHeader(); printf("<h2>"); @@ -413,7 +413,7 @@ void searchIndex(const char *word,SearchResults *results) //---------------------------------------------------------------------------- -int sortResults(const void *a1,const void *a2) +extern "C" int sortResults(const void *a1,const void *a2) { SearchDoc **d1=(SearchDoc **)a1; SearchDoc **d2=(SearchDoc **)a2; diff --git a/src/filedef.cpp b/src/filedef.cpp index 08b16b2..fb21f39 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -34,14 +34,14 @@ \a the file name, and \a ref is an HTML anchor name if the file was read from a tag file or 0 otherwise */ -FileDef::FileDef(const char *p,const char *nm,const char *ref) +FileDef::FileDef(const char *p,const char *nm,const char *lref) : Definition((QCString)p+nm,1,nm) { path=p; filepath=path+nm; filename=nameToFile(nm); diskname=filename.copy(); - setReference(ref); + setReference(lref); classList = new ClassList; includeList = new QList<IncludeInfo>; includeList->setAutoDelete(TRUE); diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 52abbff..acca70b 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -111,7 +111,8 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) { t << "<a class=\"qindexRef\" "; t << "doxygen=\"" << s << ":"; - if ((dest=tagDestinationDict[s])) t << *dest << "/"; + if ((dest=tagDestinationDict[s])) t << *dest; + if (strcmp(s,"_cgi")!=0) t << "/"; // small hack to get the cgi binary link right t << "\" "; } else @@ -121,7 +122,8 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) t << "href=\""; if (s) { - if ((dest=tagDestinationDict[s])) t << *dest << "/"; + if ((dest=tagDestinationDict[s])) t << *dest; + if (strcmp(s,"_cgi")!=0) t << "/"; } t << l << "\">"; } diff --git a/src/image.cpp b/src/image.cpp index 2b82bf5..17d89b4 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -310,11 +310,11 @@ void Image::drawRect(int x,int y,int w,int h,uchar colIndex,uint mask) drawVertLine(x+w-1,y,y+h-1,colIndex,mask); } -void Image::fillRect(int x,int y,int width,int height,uchar colIndex,uint mask) +void Image::fillRect(int x,int y,int lwidth,int lheight,uchar colIndex,uint mask) { int xp,yp,xi,yi; - for (yp=y,yi=0;yp<y+height;yp++,yi++) - for (xp=x,xi=0;xp<x+width;xp++,xi++) + for (yp=y,yi=0;yp<y+lheight;yp++,yi++) + for (xp=x,xi=0;xp<x+lwidth;xp++,xi++) if (mask&(1<<((xi+yi)&0x1f))) setPixel(xp,yp,colIndex); } diff --git a/src/index.cpp b/src/index.cpp index aabdcdc..d59a3a0 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1491,6 +1491,23 @@ void writeGroupList(OutputList &ol) //---------------------------------------------------------------------------- +void writeGraphInfo(OutputList &ol) +{ + if (!Config::haveDotFlag) return; + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + generateGraphLegend(Config::htmlOutputDir); + startFile(ol,"graph_legend","Graph Legend"); + startTitle(ol,0); + parseText(ol,theTranslator->trLegendTitle()); + endTitle(ol,0,0); + parseDoc(ol,"graph_legend",1,0,0,theTranslator->trLegendDocs()); + endFile(ol); + ol.popGeneratorState(); +} + +//---------------------------------------------------------------------------- + void writeGroupIndex(OutputList &ol) { if (documentedGroups==0) return; @@ -1522,6 +1539,8 @@ void writeGroupIndex(OutputList &ol) ol.popGeneratorState(); } +//---------------------------------------------------------------------------- + void writeIndex(OutputList &ol) { // save old generator state diff --git a/src/index.h b/src/index.h index 56abdda..8a81d96 100644 --- a/src/index.h +++ b/src/index.h @@ -62,6 +62,7 @@ void writeGroupIndex(OutputList &ol); void writeNamespaceIndex(OutputList &ol); void writeNamespaceMemberIndex(OutputList &ol); void writeGraphicalClassHierarchy(OutputList &ol); +void writeGraphInfo(OutputList &ol); int countClassHierarchy(); int countClassMembers(); diff --git a/src/language.cpp b/src/language.cpp index 27b6c7c..08704d3 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -29,6 +29,7 @@ #include "translator_fi.h" #include "translator_ru.h" #include "translator_hr.h" +#include "translator_pl.h" #endif #define L_EQUAL(a) !stricmp(langName,a) @@ -90,6 +91,10 @@ bool setTranslator(const char *langName) { theTranslator=new TranslatorCroatian; } + else if (L_EQUAL("polish")) + { + theTranslator=new TranslatorPolish; + } #endif else // use the default language (i.e. english) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 2980a73..6311c8a 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -484,14 +484,14 @@ void MemberDef::writeDeclaration(OutputList &ol, //printf("md->name()=`%s' Protection=%d\n",name().data(),protection()); if (inGroup && protection()==Private && !Config::extractPrivateFlag) return; - QCString type=typeString(); - // strip `static' keyword from type - if (type.left(7)=="static ") type=type.right(type.length()-7); - // strip `friend' keyword from type - if (type.left(7)=="friend ") type=type.right(type.length()-7); + QCString ltype=type.copy(); + // strip `static' keyword from ltype + if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7); + // strip `friend' keyword from ltype + if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7); static QRegExp r("@[0-9]+"); i=-1; - if ((type.isEmpty() || (i=r.match(type,0,&l))==-1) || !enumUsed()) + if ((ltype.isEmpty() || (i=r.match(ltype,0,&l))==-1) || !enumUsed()) { if (!Config::genTagFile.isEmpty()) @@ -541,20 +541,20 @@ void MemberDef::writeDeclaration(OutputList &ol, // search for the last anonymous scope in the member type ClassDef *annoClassDef=0; - //while (i!=-1 && cname.find(type.mid(i,l))!=-1) + //while (i!=-1 && cname.find(ltype.mid(i,l))!=-1) //{ - // i=r.match(type,i+l,&l); + // i=r.match(ltype,i+l,&l); //} int il=i-1,ir=i+l; if (i!=-1) // found anonymous scope in type { // extract anonymous scope - while (il>=0 && (isId(type.at(il)) || type.at(il)==':' || type.at(il)=='@')) il--; + while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--; if (il>0) il++; - while (ir<(int)type.length() && (isId(type.at(ir)) || type.at(ir)==':' || type.at(ir)=='@')) ir++; + while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++; - //QCString annName = type.mid(i,l); - QCString annName = type.mid(il,ir-il); + //QCString annName = ltype.mid(i,l); + QCString annName = ltype.mid(il,ir-il); // if inside a class or namespace try to prepend the scope name if ((cd || nd) && annName.left(cname.length())!=cname) @@ -612,7 +612,7 @@ void MemberDef::writeDeclaration(OutputList &ol, if (i!=-1) // member has an anonymous type { //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n", - // annoClassDef,annMemb,cname.data(),type.mid(i,l).data()); + // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data()); if (annoClassDef) // type is an anonymous compound { @@ -624,7 +624,7 @@ void MemberDef::writeDeclaration(OutputList &ol, { ol.writeNonBreakableSpace(); } - QCString varName=type.right(type.length()-ir).stripWhiteSpace(); + QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace(); ol.docify("}"); if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@')) { @@ -639,27 +639,27 @@ void MemberDef::writeDeclaration(OutputList &ol, { if (getAnonymousEnumType()) // type is an anonymous enum { - linkifyText(ol,cname,name(),type.left(i),TRUE); + linkifyText(ol,cname,name(),ltype.left(i),TRUE); ol+=*getAnonymousEnumType()->enumDecl(); - linkifyText(ol,cname,name(),type.right(type.length()-i-l),TRUE); + linkifyText(ol,cname,name(),ltype.right(ltype.length()-i-l),TRUE); } else { - type = type.left(i) + " { ... } " + type.right(type.length()-i-l); - linkifyText(ol,cname,name(),type,TRUE); + ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l); + linkifyText(ol,cname,name(),ltype,TRUE); } } } else { - linkifyText(ol,cname,name(),type,TRUE); + linkifyText(ol,cname,name(),ltype,TRUE); } bool htmlOn = ol.isEnabled(OutputGenerator::Html); - if (htmlOn && Config::htmlAlignMemberFlag && !type.isEmpty()) + if (htmlOn && Config::htmlAlignMemberFlag && !ltype.isEmpty()) { ol.disable(OutputGenerator::Html); } - if (!type.isEmpty()) ol.docify(" "); + if (!ltype.isEmpty()) ol.docify(" "); if (htmlOn) { ol.enable(OutputGenerator::Html); @@ -821,16 +821,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, // prepend scope if there is any. TODO: make this optional for C only docs if (scopeName) doxyName.prepend((QCString)scopeName+"::"); - QCString def = definition(); + QCString ldef = definition(); if (isEnumerate()) { if (name().at(0)=='@') { - def = "anonymous enum"; + ldef = "anonymous enum"; } else { - def.prepend("enum "); + ldef.prepend("enum "); } } int i=0,l; @@ -844,7 +844,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, HtmlHelp *htmlHelp = 0; if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance(); - if ((isVariable() || isTypedef()) && (i=r.match(def,0,&l))!=-1) + if ((isVariable() || isTypedef()) && (i=r.match(ldef,0,&l))!=-1) { // find enum type and insert it in the definition MemberListIterator vmli(*ml); @@ -852,7 +852,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, bool found=FALSE; for ( ; (vmd=vmli.current()) && !found ; ++vmli) { - if (vmd->isEnumerate() && def.mid(i,l)==vmd->name()) + if (vmd->isEnumerate() && ldef.mid(i,l)==vmd->name()) { ol.startDoxyAnchor(cfname,cname,anchor(),doxyName); ol.startMemberDoc(cname,name(),anchor(),name()); @@ -860,9 +860,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, { htmlHelp->addIndexItem(cname,name(),cfname,anchor()); } - linkifyText(ol,scopeName,name(),def.left(i)); + linkifyText(ol,scopeName,name(),ldef.left(i)); ol+=*vmd->enumDecl(); - linkifyText(ol,scopeName,name(),def.right(def.length()-i-l)); + linkifyText(ol,scopeName,name(),ldef.right(ldef.length()-i-l)); found=TRUE; } @@ -877,16 +877,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, htmlHelp->addIndexItem(cname,name(),cfname,anchor()); } // strip anonymous compound names from definition - int si=def.find(' '),pi,ei=i+l; + int si=ldef.find(' '),pi,ei=i+l; if (si==-1) si=0; - while ((pi=r.match(def,i+l,&l))!=-1) ei=i=pi+l; - // first si characters of def contain compound type name - ol.docify(def.left(si)); + while ((pi=r.match(ldef,i+l,&l))!=-1) ei=i=pi+l; + // first si characters of ldef contain compound type name + ol.docify(ldef.left(si)); ol.docify(" { ... } "); - // last ei characters of def contain pointer/reference specifiers - int ni=def.find("::",si); + // last ei characters of ldef contain pointer/reference specifiers + int ni=ldef.find("::",si); if (ni>=ei) ei=ni+2; - linkifyText(ol,scopeName,name(),def.right(def.length()-ei)); + linkifyText(ol,scopeName,name(),ldef.right(ldef.length()-ei)); } } else @@ -931,19 +931,19 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, int ir=cName.findRev('>'); if (il!=-1 && ir!=-1 && ir>il) { - def=addTemplateNames(def, + ldef=addTemplateNames(ldef, cName.left(il), /* class without template spec */ cName.mid(il,ir-il+1) /* templ spec */ ); } else if (scopeAl) { - def=addTemplateNames(def,cName,tempArgListToString(scopeAl)); + ldef=addTemplateNames(ldef,cName,tempArgListToString(scopeAl)); } } } ol.startMemberDocName(); - linkifyText(ol,scopeName,name(),def); + linkifyText(ol,scopeName,name(),ldef); writeDefArgumentList(ol,cd,scopeName,this); if (!init.isEmpty() && initLines==0 && maxInitLines>0) // add initializer { @@ -965,16 +965,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, } } - Specifier virt=virtualness(); + Specifier lvirt=virtualness(); MemberDef *rmd=reimplements(); - while (rmd && virt==Normal) + while (rmd && lvirt==Normal) { - virt = rmd->virtualness()==Normal ? Normal : Virtual; + lvirt = rmd->virtualness()==Normal ? Normal : Virtual; rmd = rmd->reimplements(); } if (isStatic() || protection()!=Public || - virt!=Normal || isSignal() || isFriend() || + lvirt!=Normal || isSignal() || isFriend() || isRelated() || isSlot() || getMemberSpecifiers()!=0 ) @@ -995,8 +995,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (isStatic()) sl.append("static"); if (protection()==Protected) sl.append("protected"); else if (protection()==Private) sl.append("private"); - if (virt==Virtual) sl.append("virtual"); - else if (virt==Pure) sl.append("pure virtual"); + if (lvirt==Virtual) sl.append("virtual"); + else if (lvirt==Pure) sl.append("pure virtual"); if (isSignal()) sl.append("signal"); if (isSlot()) sl.append("slot"); } @@ -1163,7 +1163,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (bmd && (bcd=bmd->memberClass())) { #if 0 - if (virt!=Normal) // search for virtual member of the deepest base class + if (lvirt!=Normal) // search for virtual member of the deepest base class { MemberDef *lastBmd=bmd; while (lastBmd) diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 89f7a5a..366e49b 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -28,7 +28,7 @@ #include "message.h" NamespaceDef::NamespaceDef(const char *df,int dl, - const char *name,const char *ref) : + const char *name,const char *lref) : Definition(df,dl,name) { fileName="namespace_"+nameToFile(name); @@ -37,7 +37,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl, //memList = new MemberList; usingDirList = 0; usingDeclList = 0; - setReference(ref); + setReference(lref); memberGroupList = new MemberGroupList; memberGroupList->setAutoDelete(TRUE); memberGroupDict = new MemberGroupDict(1009); diff --git a/src/outputgen.cpp b/src/outputgen.cpp index 722558d..95ef0b0 100644 --- a/src/outputgen.cpp +++ b/src/outputgen.cpp @@ -90,8 +90,9 @@ void OutputGenerator::pushGeneratorState() void OutputGenerator::popGeneratorState() { - bool *b = genStack->pop(); - ASSERT(b!=0); - if (b==0) return; // for some robustness against superfluous \endhtmlonly commands. - if (*b) enable(); else disable(); + bool *lb = genStack->pop(); + ASSERT(lb!=0); + if (lb==0) return; // for some robustness against superfluous \endhtmlonly commands. + if (*lb) enable(); else disable(); } + diff --git a/src/scanner.l b/src/scanner.l index 5c97241..8062238 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -796,7 +796,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) FileDef *fd; if ((fd=findFileDef(imageNameDict,fileName,ambig))) { - QFile inImage(fd->absFilePath().data()); + QFile inImage(QString(fd->absFilePath().data())); if (inImage.open(IO_ReadOnly)) { result = fileName; @@ -816,7 +816,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) break; } QCString outputFile = outputDir+"/"+result; - QFile outImage(outputFile.data()); + QFile outImage(QString(outputFile.data())); if (outImage.open(IO_WriteOnly)) // copy the image { char *buffer = new char[inImage.size()]; @@ -1300,19 +1300,28 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") insideArgumentList=TRUE; } } -<DocScan>{CMD}"par"{B}+ { +<DocScan>(({B}*"\n"){2,}{B}*)?{CMD}"par"{B}* { BEGIN(DocPar); } <DocPar>[^\n]*{BN} { - endArgumentList(); - if (inBlock()) endBlock(); - inParBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - outDoc->docify(((QCString)yytext).stripWhiteSpace()); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); + QCString title=QCString(yytext).stripWhiteSpace(); + bool b = inBlock(); + if (!title.isEmpty()) + { + endArgumentList(); + if (b) endBlock(); + inParBlock=TRUE; + outDoc->startDescList(); + outDoc->startBold(); + outDoc->docify(title); + outDoc->endBold(); + outDoc->endDescTitle(); + outDoc->writeDescItem(); + } + else + { + outDoc->newParagraph(); + } BEGIN(DocScan); } <DocScan>{CMD}"warning"/{BN} { @@ -2397,7 +2406,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") BEGIN( NextSemi ); } <FindMembers>{B}*"typename"{BN}+ { lineCount(); } -<FindMembers>{B}*"namespace"{BN}+ { +<FindMembers>{B}*"namespace"{BN}*/[^a-z_A-Z0-9] { isTypedef=FALSE; current->section = Entry::NAMESPACE_SEC; current->type = "namespace" ; @@ -2417,6 +2426,16 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") lineCount(); BEGIN( CompoundName ); } +<FindMembers>{B}*"library"{BN}+ { + isTypedef=FALSE; + current->section = Entry::NAMESPACE_SEC; + current->type = "library" ; + current->fileName = yyFileName; + current->startLine = yyLineNr; + current->bodyLine = yyLineNr; + lineCount(); + BEGIN( CompoundName ); + } <FindMembers>{B}*"interface"{BN}+ { // M$/Corba IDL interface isTypedef=FALSE; current->section = Entry::INTERFACE_SEC; @@ -4852,8 +4871,8 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") copyArgString = ¤t->args; BEGIN( ReadFuncArgType ) ; } -<ClassDocFunc>"("({B}*"*")+ { - current->name+="(*"; +<ClassDocFunc>"("({ID}"::")*({B}*"*")+ { + current->name+=yytext; BEGIN( ClassDocFuncPtr ); } <ClassDocFuncPtr>{SCOPENAME} { diff --git a/src/suffixtree.cpp b/src/suffixtree.cpp index ad0aebd..5439fc6 100644 --- a/src/suffixtree.cpp +++ b/src/suffixtree.cpp @@ -325,7 +325,7 @@ void SuffixTree::insertWord(const char *word,int index,bool inName) { QCString suffix=word; uint i; - for (i=2;i<suffix.length()-1;i++) + for (i=2;i<suffix.length();i++) { //printf("Inserting suffix %s\n",suffix.right(i).data()); nodes+=root->insert(suffix.right(i),index,inName?1:0,FALSE); diff --git a/src/translator.h b/src/translator.h index 6bc534d..ef89013 100644 --- a/src/translator.h +++ b/src/translator.h @@ -899,6 +899,78 @@ class Translator { return "Since"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Graph Legend"; + } + /*! page explaining how the dot graph's should be interpreted */ + virtual QCString trLegendDocs() + { + return + "This page explains how to interpret the graphs that are generated " + "by doxygen.<p>\n" + "Consider the following example:\n" + "\\code\n" + "/*! Invisible class because of truncation */\n" + "class Invisible { };\n\n" + "/*! Truncated class, inheritance relation is hidden */\n" + "class Truncated : public Invisible { };\n\n" + "/* Class not documented with doxygen comments */\n" + "class Undocumented { };\n\n" + "/*! Class that is inherited using public inheritance */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Class that is inherited using protected inheritance */\n" + "class ProtectedBase { };\n\n" + "/*! Class that is inherited using private inheritance */\n" + "class PrivateBase { };\n\n" + "/*! Class that is used by the Inherited class */\n" + "class Used { };\n\n" + "/*! Super class that inherits a number of other classes */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file " + "is set to 200 this will result in the following graph:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "The boxes in the above graph have the following meaning:\n" + "<ul>\n" + "<li>A filled black box represents the struct or class for which the " + "graph is generated.\n" + "<li>A box with a black border denotes a documented struct or class.\n" + "<li>A box with a grey border denotes an undocumented struct or class.\n" + "<li>A box with a red border denotes a documented struct or class for\n" + "which not all inheritance/containment relations are shown. A graph is " + "truncated if it does not fit within the specified boundaries." + "</ul>\n" + "The arrows have the following meaning:\n" + "<ul>\n" + "<li>A dark blue arrow is used to visualize a public inheritance " + "relation between two classes.\n" + "<li>A dark green arrow is used for protected inheritance.\n" + "<li>A dark red arrow is used for private inheritance.\n" + "<li>A purple dashed arrow is used if a class is contained or used " + "by another class. The arrow is labeled with the variable(s) " + "through which the pointed class or struct is accessible. \n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "legend"; + } }; #endif diff --git a/src/translator_cz.h b/src/translator_cz.h index 63edec7..0b78c99 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -516,7 +516,8 @@ class TranslatorCzech : public Translator /*! used as the title of the HTML page of a class/struct/union */ virtual QCString trCompoundReference(const char *clName, - ClassDef::CompoundType compType) + ClassDef::CompoundType compType, + bool /*isTemplate*/) { QCString result=(QCString)clName+" "; switch(compType) diff --git a/src/translator_hr.h b/src/translator_hr.h index 40e5733..3407e82 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -583,11 +583,48 @@ class TranslatorCroatian : public Translator { return "Static private atributi"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + virtual QCString trTodo() + { + return "Za uraditi"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Ostalo za uraditi"; + } ////////////////////////////////////////////////////////////////////////// -// new since 1.1.1 +// new since 1.1.4 ////////////////////////////////////////////////////////////////////////// + virtual QCString trReferencedBy() + { + return "Referencirano od"; + } + virtual QCString trRemarks() + { + return "Napomene"; + } + virtual QCString trAttention() + { + return "Pažnja"; + } + virtual QCString trInclByDepGraph() + { + return "Ovaj graf pokazuje koje datoteke izravno " + "ili neizravno uključuju ovu datoteku:"; + } + virtual QCString trSince() + { + return "Od"; + } + + }; #endif diff --git a/src/translator_pl.h b/src/translator_pl.h new file mode 100644 index 0000000..13978fa --- /dev/null +++ b/src/translator_pl.h @@ -0,0 +1,902 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2000 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef TRANSLATOR_PL_H +#define TRANSLATOR_PL_H + +#include "translator.h" + +class TranslatorPolish : public Translator +{ + public: + + // --- Language contol methods ------------------- + + /*! Used for identification of the language. May resemble + * the string returned by latexBabelPackage(), but it is not used + * for the same purpose. The identification should not be translated. + * It should be replaced by the name of the language in English + * (e.g. Czech, Japanese, Russian, etc.). It should be equal to + * the identification in language.h. + */ + QCString idLanguage() + { return "polish"; } + /*! Used to get the command(s) for the language support. This method + * was designed for languages which do not prefer babel package. + * If this methods returns empty string, then the latexBabelPackage() + * method is used to generate the command for using the babel package. + */ + QCString latexLanguageSupportCommand() + { + return "\\usepackage{polski} \\usepackage[latin2]{inputenc} \\usepackage[T1]{fontenc}"; + } + /*! returns the name of the package that is included by LaTeX */ + QCString latexBabelPackage() + { return "polish"; } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + QCString trRelatedFunctions() + { return "Funkcje Powiązane"; } + + /*! subscript for the related functions. */ + QCString trRelatedSubscript() + { return "(Zauważ, że to nie są metody klas.)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + QCString trDetailedDescription() + { return "Opis Szczegółowy"; } + + /*! header that is put before the list of typedefs. */ + QCString trMemberTypedefDocumentation() + { return "Dokumentacja Składowych Definicji Typu"; } + + /*! header that is put before the list of enumerations. */ + QCString trMemberEnumerationDocumentation() + { return "Dokumentacja Składowych Wyliczanych"; } + + /*! header that is put before the list of member functions. */ + QCString trMemberFunctionDocumentation() + { return "Dokumentacja Funkcji Składowych"; } + + /*! header that is put before the list of member attributes. */ + QCString trMemberDataDocumentation() + { return "Dokumentacja Atrybutów Składowych"; } + + /*! this is the text of a link put after brief descriptions. */ + QCString trMore() + { return "Więcej..."; } + + /*! put in the class documentation */ + QCString trListOfAllMembers() + { return "Lista wszystkich składowych."; } + + /*! used as the title of the "list of all members" page of a class */ + QCString trMemberList() + { return "Lista Składowych"; } + + /*! this is the first part of a sentence that is followed by a class name */ + QCString trThisIsTheListOfAllMembers() + { return "To jest kompletna lista składowych dla "; } + + /*! this is the remainder of the sentence after the class name */ + QCString trIncludingInheritedMembers() + { return ", uwzględniająca wszystkie dziedziczone składowe."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + QCString trGeneratedAutomatically(const char *s) + { QCString result="Wygenerowano automatycznie z kodu źródłowego programem Doxygen"; + if (s) result+=(QCString)" dla "+s; + result+="."; + return result; + } + + /*! put after an enum name in the list of all members */ + QCString trEnumName() + { return "nazwa wyliczenia"; } + + /*! put after an enum value in the list of all members */ + QCString trEnumValue() + { return "wartość wyliczenia"; } + + /*! put after an undocumented member in the list of all members */ + QCString trDefinedIn() + { return "zdefiniowana w"; } + + /*! put as in introduction in the verbatim header file of a class. + * parameter f is the name of the include file. + */ + QCString trVerbatimText(const char *f) + { return (QCString)"Tutaj znajduje się zawartość pliku nagłówkowego "+f+"."; } + + // quick reference sections + + /*! This is put above each page as a link to the list of all groups of + * compounds or files (see the \group command). + */ + QCString trModules() + { return "Moduły"; } + + /*! This is put above each page as a link to the class hierarchy */ + QCString trClassHierarchy() + { return "Hierarchia Klas"; } + + /*! This is put above each page as a link to the list of annotated classes */ + QCString trCompoundList() + { return "Lista Klas"; } + + /*! This is put above each page as a link to the list of documented files */ + QCString trFileList() + { return "Lista Plików"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + QCString trHeaderFiles() + { return "Pliki Nagłówkowe"; } + + /*! This is put above each page as a link to all members of compounds. */ + QCString trCompoundMembers() + { return "Składowe Klas"; } + + /*! This is put above each page as a link to all members of files. */ + QCString trFileMembers() + { return "Składowe Plików"; } + + /*! This is put above each page as a link to all related pages. */ + QCString trRelatedPages() + { return "Dodatkowe Strony"; } + + /*! This is put above each page as a link to all examples. */ + QCString trExamples() + { return "Przykłady"; } + + /*! This is put above each page as a link to the search engine. */ + QCString trSearch() + { return "Szukaj"; } + + /*! This is an introduction to the class hierarchy. */ + QCString trClassHierarchyDescription() + { return "Ta lista dziedziczenia posortowana jest z grubsza, " + "choć nie całkowicie, alfabetycznie:"; + } + + /*! This is an introduction to the list with all files. */ + QCString trFileListDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="plików z ich krótkimi opisami:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + QCString trCompoundListDescription() + { return "Tutaj znajdują się klasy, struktury, " + "unie i interfejsy wraz z ich krótkimi opisami:"; + } + + /*! This is an introduction to the page with all class members. */ + QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji klas dla każdej składowej:"; + else + result+="klas, do których dana składowa należy:"; + return result; + } + + /*! This is an introduction to the page with all file members. */ + QCString trFileMembersDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji plików dla każdej składowej:"; + else + result+="plików, do których dana składowa należy:"; + return result; + } + + /*! This is an introduction to the page with the list of all header files. */ + QCString trHeaderFilesDescription() + { return "Tutaj znajdują się pliki nagłówkowe tworzące API:"; } + + /*! This is an introduction to the page with the list of all examples */ + QCString trExamplesDescription() + { return "Tutaj znajduje się lista wszystkich przykładów:"; } + + /*! This is an introduction to the page with the list of related pages */ + QCString trRelatedPagesDescription() + { return "Tutaj znajduje się lista wszystkich stron dokumentacji:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + QCString trModulesDescription() + { return "Tutaj znajduje się lista wszystkich grup:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + QCString trNoDescriptionAvailable() + { return "Brak opisu"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + QCString trDocumentation() + { return "Dokumentacja"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + QCString trModuleIndex() + { return "Indeks Grup"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + QCString trHierarchicalIndex() + { return "Indeks Hierarchiczny"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + QCString trCompoundIndex() + { return "Indeks Klas"; } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + QCString trFileIndex() + { return "Indeks Plików"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + QCString trModuleDocumentation() + { return "Dokumentacja Grup"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + QCString trClassDocumentation() + { return "Dokumentacja Klas"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + QCString trFileDocumentation() + { return "Dokumentacja Plików"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + QCString trExampleDocumentation() + { return "Dokumentacja Przykładów"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + QCString trPageDocumentation() + { return "Dokumentacja Stron"; } + + /*! This is used in LaTeX as the title of the document */ + QCString trReferenceManual() + { return "Podręcznik Referencji"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + QCString trDefines() + { return "Definicje"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + QCString trFuncProtos() + { return "Prototypy Funkcji"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + QCString trTypedefs() + { return "Definicje Typów"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + QCString trEnumerations() + { return "Wyliczenia"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + QCString trFunctions() + { return "Funkcje"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trVariables() + { return "Zmienne"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trEnumerationValues() + { return "Wartości Wyliczeń"; } + + /*! This is used in man pages as the author section. */ + QCString trAuthor() + { return "Autor"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + QCString trDefineDocumentation() + { return "Dokumentacja Definicji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + QCString trFunctionPrototypeDocumentation() + { return "Dokumentacja Prototypów Funkcji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + QCString trTypedefDocumentation() + { return "Dokumentacja Definicji Typów"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + QCString trEnumerationTypeDocumentation() + { return "Dokumentacja Typów Wyliczanych"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + QCString trEnumerationValueDocumentation() + { return "Dokumentacja Wartości Wyliczanych"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + QCString trFunctionDocumentation() + { return "Dokumentacja Funkcji"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + QCString trVariableDocumentation() + { return "Dokumentacja Zmiennych"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + QCString trCompounds() + { return "Komponenty"; } + + /*! This is used in the documentation of a group before the list of + * links to documented files + */ + QCString trFiles() + { return "Pliki"; } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)"Wygenerowano "+date; + if (projName) result+=(QCString)" dla "+projName; + result+=(QCString)" programem"; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + QCString trWrittenBy() + { + return "napisanym przez"; + } + + /*! this text is put before a class diagram */ + QCString trClassDiagram(const char *clName) + { + return (QCString)"Diagram dziedziczenia dla "+clName; + } + + /*! this text is generated when the \internal command is used. */ + QCString trForInternalUseOnly() + { return "Tylko do użytku wewnętrznego."; } + + /*! this text is generated when the \reimp command is used. */ + QCString trReimplementedForInternalReasons() + { return "Reimplementowana z wewnętrzych przyczyn; nie dotyczy API."; } + + /*! this text is generated when the \warning command is used. */ + QCString trWarning() + { return "Ostrzeżenie"; } + + /*! this text is generated when the \bug command is used. */ + QCString trBugsAndLimitations() + { return "Błędy i ograniczenia"; } + + /*! this text is generated when the \version command is used. */ + QCString trVersion() + { return "Wersja"; } + + /*! this text is generated when the \date command is used. */ + QCString trDate() + { return "Data"; } + + /*! this text is generated when the \author command is used. */ + QCString trAuthors() + { return "Autorzy"; } + + /*! this text is generated when the \return command is used. */ + QCString trReturns() + { return "Powroty"; } + + /*! this text is generated when the \sa command is used. */ + QCString trSeeAlso() + { return "Zobacz również"; } + + /*! this text is generated when the \param command is used. */ + QCString trParameters() + { return "Parametry"; } + + /*! this text is generated when the \exception command is used. */ + QCString trExceptions() + { return "Wyjątki"; } + + /*! this text is used in the title page of a LaTeX document. */ + QCString trGeneratedBy() + { return "Wygenerowano przez"; } + + // new since 0.49-990307 + + /*! used as the title of page containing all the index of all namespaces. */ + QCString trNamespaceList() + { return "Lista Obszarów Nazw"; } + + /*! used as an introduction to the namespace list */ + QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Tutaj znajdują się wszystkie "; + if (!extractAll) result+="udokumentowane "; + result+="obszary nazw wraz z ich krótkimi opisami:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + QCString trFriends() + { return "Przyjaciele"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + QCString trRelatedFunctionDocumentation() + { return "Dokumentacja Przyjaciół i Funkcji Związanych"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result="Referencje"; + if (isTemplate) result+=" Szablonu"; + switch(compType) + { + case ClassDef::Class: result+=" Klasy "; break; + case ClassDef::Struct: result+=" Struktury "; break; + case ClassDef::Union: result+=" Unii "; break; + case ClassDef::Interface: result+=" Interfejsu "; break; + case ClassDef::Exception: result+=" Wyjątku "; break; + } + result+=(QCString)clName; + return result; + } + + /*! used as the title of the HTML page of a file */ + QCString trFileReference(const char *fileName) + { + QCString result="Referencje Pliku "; + result+=fileName; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + QCString trNamespaceReference(const char *namespaceName) + { + QCString result="Referencje Obszaru Nazw "; + result+=namespaceName; + return result; + } + + /*! \mgroup Class sections + * these are for the member sections of a class, struct or union + */ + QCString trPublicMembers() + { return "Metody Publiczne"; } + QCString trPublicSlots() + { return "Sloty Publiczne"; } + QCString trSignals() + { return "Sygnały"; } + QCString trStaticPublicMembers() + { return "Statyczne Metody Publiczne"; } + QCString trProtectedMembers() + { return "Metody Chronione"; } + QCString trProtectedSlots() + { return "Sloty Chronione"; } + QCString trStaticProtectedMembers() + { return "Statyczne Metody Chronione"; } + QCString trPrivateMembers() + { return "Metody Prywatne"; } + QCString trPrivateSlots() + { return "Sloty Prywatne"; } + QCString trStaticPrivateMembers() + { return "Statyczne Metody Prywatne"; } + /*! \endmgroup */ + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + QCString trWriteList(int numEntries) + { + QCString result; + int i; + // the inherits list contain `numEntries' classes + for (i=0;i<numEntries;i++) + { + // use generateMarker to generate placeholders for the class links! + result+=generateMarker(i); // generate marker for entry i in the list + // (order is left to right) + + if (i!=numEntries-1) // not the last entry, so we need a separator + { + if (i<numEntries-2) // not the fore last entry + result+=", "; + else // the fore last entry + result+=" i "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + QCString trInheritsList(int numEntries) + { + return "Dziedziczy "+trWriteList(numEntries)+"."; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + QCString trInheritedByList(int numEntries) + { + return "Dziedziczona przez "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + QCString trReimplementedFromList(int numEntries) + { + return "Reimplementowana z "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + QCString trReimplementedInList(int numEntries) + { + return "Reimplementowana w "+trWriteList(numEntries)+"."; + } + + /*! This is put above each page as a link to all members of namespaces. */ + QCString trNamespaceMembers() + { return "Składowe Obszaru Nazw"; } + + /*! This is an introduction to the page with all namespace members */ + QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Tutaj znajduje się lista wszystkich "; + if (!extractAll) result+="udokumentowanych "; + result+="składowych wraz z odnośnikami do "; + if (extractAll) + result+="dokumentacji obszarów nazw dla każdej składowej:"; + else + result+="obszarów nazw do których składowe te należą:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + QCString trNamespaceIndex() + { return "Indeks Obszarów Nazw"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + QCString trNamespaceDocumentation() + { return "Dokumentacja Obszarów Nazw"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + QCString trNamespaces() + { return "Obszary Nazw"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990728 +////////////////////////////////////////////////////////////////////////// + + /*! This is put at the bottom of a class documentation page and is + * followed by a list of files that were used to generate the page. + */ + QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Class", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Dokumentacja dla te"; + switch(compType) + { + case ClassDef::Class: result+="j klasy"; break; + case ClassDef::Struct: result+="j struktury"; break; + case ClassDef::Union: result+="j unii"; break; + case ClassDef::Interface: result+="go interfejsu"; break; + case ClassDef::Exception: result+="go wyjątku"; break; + } + result+=" została wygenerowana z plik"; + if (single) result+="u:"; else result+="ów:"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + QCString trAlphabeticalList() + { return "Lista Alfabetyczna"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + QCString trReturnValues() + { return "Zwracane wartości"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + QCString trMainPage() + { return "Strona Główna"; } + + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + QCString trPageAbbreviation() + { return "str."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + QCString trSources() + { + return "Źródła"; + } + QCString trDefinedAtLineInSourceFile() + { + return "Definicja w linii @0 pliku @1."; + } + QCString trDefinedInSourceFile() + { + return "Definicja w pliku @0."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + QCString trDeprecated() + { + return "Do wycofania"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Diagram współpracy dla "+clName+":"; + } + /*! this text is put before an include dependency graph */ + QCString trInclDepGraph(const char *fName) + { + return (QCString)"Wykres zależności załączania dla "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + QCString trConstructorDocumentation() + { + return "Dokumentacja Konstruktora i Destruktora"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + QCString trGotoSourceCode() + { + return "Idź do kodu źródłowego tego pliku."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + QCString trGotoDocumentation() + { + return "Idź do dokumentacji tego pliku."; + } + /*! Text for the \pre command */ + QCString trPrecondition() + { + return "Warunek wstępny"; + } + /*! Text for the \post command */ + QCString trPostcondition() + { + return "Warunek końcowy"; + } + /*! Text for the \invariant command */ + QCString trInvariant() + { + return "Inwariant"; + } + /*! Text shown before a multi-line variable/enum initialization */ + QCString trInitialValue() + { + return "Inicjalizator:"; + } + /*! Text used the source code in the file index */ + QCString trCode() + { + return "kod źródłowy"; + } + QCString trGraphicalHierarchy() + { + return "Graficzna Hierarchia Klas"; + } + QCString trGotoGraphicalHierarchy() + { + return "Idź do graficznej hierarchi klas"; + } + QCString trGotoTextualHierarchy() + { + return "Idź do tekstowej hierarchi klas"; + } + QCString trPageIndex() + { + return "Indeks Stron"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + QCString trNote() + { + return "Nota"; + } + QCString trPublicTypes() + { + return "Typy Publiczne"; + } + QCString trPublicAttribs() + { + return "Atrybuty Publiczne"; + } + QCString trStaticPublicAttribs() + { + return "Statyczne Atrybuty Publiczne"; + } + QCString trProtectedTypes() + { + return "Typy Chronione"; + } + QCString trProtectedAttribs() + { + return "Atrybuty Chronione"; + } + QCString trStaticProtectedAttribs() + { + return "Statyczne Atrybuty Chronione"; + } + QCString trPrivateTypes() + { + return "Typy Prywatne"; + } + QCString trPrivateAttribs() + { + return "Atrybuty Prywatne"; + } + QCString trStaticPrivateAttribs() + { + return "Statyczne Atrybuty Prywatne"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + QCString trTodo() + { + return "Do Zrobienia"; + } + /*! Used as the header of the todo list */ + QCString trTodoList() + { + return "Lista Do Zrobienia"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + QCString trReferencedBy() + { + return "Referencje według"; + } + QCString trRemarks() + { + return "Spostrzeżenia"; + } + QCString trAttention() + { + return "Uwaga"; + } + QCString trInclByDepGraph() + { + return "Ten wykres pokazuje, które pliki bezpośrednio lub " + "pośrednio załączają ten plik:"; + } + QCString trSince() + { + return "Od"; + } +}; + +#endif diff --git a/src/util.cpp b/src/util.cpp index f9ab566..eb2f252 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -559,35 +559,35 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) //bool manEnabled = ol.isEnabled(OutputGenerator::Man); //bool texEnabled = ol.isEnabled(OutputGenerator::Latex); ol.disableAllBut(OutputGenerator::Html); - QCString extLink,absPath; - if (ext) { extLink="_doc"; absPath=Config::docURL+"/"; } + QCString extLink; + if (ext) { extLink="_doc"; } //if (manEnabled) ol.disable(OutputGenerator::Man); //if (texEnabled) ol.disable(OutputGenerator::Latex); if (compact) ol.startCenter(); else ol.startItemList(); if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"index.html"); + ol.startQuickIndexItem(extLink,"index.html"); parseText(ol,theTranslator->trMainPage()); ol.endQuickIndexItem(); if (documentedGroups>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"modules.html"); + ol.startQuickIndexItem(extLink,"modules.html"); parseText(ol,theTranslator->trModules()); ol.endQuickIndexItem(); } if (documentedNamespaces>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"namespaces.html"); + ol.startQuickIndexItem(extLink,"namespaces.html"); parseText(ol,theTranslator->trNamespaceList()); ol.endQuickIndexItem(); } if (hierarchyClasses>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"hierarchy.html"); + ol.startQuickIndexItem(extLink,"hierarchy.html"); parseText(ol,theTranslator->trClassHierarchy()); ol.endQuickIndexItem(); } @@ -596,75 +596,75 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) if (Config::alphaIndexFlag) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"classes.html"); + ol.startQuickIndexItem(extLink,"classes.html"); parseText(ol,theTranslator->trAlphabeticalList()); ol.endQuickIndexItem(); } if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"annotated.html"); + ol.startQuickIndexItem(extLink,"annotated.html"); parseText(ol,theTranslator->trCompoundList()); ol.endQuickIndexItem(); } if (documentedHtmlFiles>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"files.html"); + ol.startQuickIndexItem(extLink,"files.html"); parseText(ol,theTranslator->trFileList()); ol.endQuickIndexItem(); } //if (documentedIncludeFiles>0 && Config::verbatimHeaderFlag) //{ // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,absPath+"headers.html"); + // ol.startQuickIndexItem(extLink,"headers.html"); // parseText(ol,theTranslator->trHeaderFiles()); // ol.endQuickIndexItem(); //} //if (Config::sourceBrowseFlag) //{ // if (!compact) ol.writeListItem(); - // ol.startQuickIndexItem(extLink,absPath+"sources.html"); + // ol.startQuickIndexItem(extLink,"sources.html"); // parseText(ol,theTranslator->trSources()); // ol.endQuickIndexItem(); //} if (documentedNamespaceMembers>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"namespacemembers.html"); + ol.startQuickIndexItem(extLink,"namespacemembers.html"); parseText(ol,theTranslator->trNamespaceMembers()); ol.endQuickIndexItem(); } if (documentedMembers>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"functions.html"); + ol.startQuickIndexItem(extLink,"functions.html"); parseText(ol,theTranslator->trCompoundMembers()); ol.endQuickIndexItem(); } if (documentedFunctions>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"globals.html"); + ol.startQuickIndexItem(extLink,"globals.html"); parseText(ol,theTranslator->trFileMembers()); ol.endQuickIndexItem(); } if (pageList.count()>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"pages.html"); + ol.startQuickIndexItem(extLink,"pages.html"); parseText(ol,theTranslator->trRelatedPages()); ol.endQuickIndexItem(); } if (exampleList.count()>0) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem(extLink,absPath+"examples.html"); + ol.startQuickIndexItem(extLink,"examples.html"); parseText(ol,theTranslator->trExamples()); ol.endQuickIndexItem(); } if (Config::searchEngineFlag) { if (!compact) ol.writeListItem(); - ol.startQuickIndexItem("_cgi",Config::cgiURL+"/"+Config::cgiName); + ol.startQuickIndexItem("_cgi",""); parseText(ol,theTranslator->trSearch()); ol.endQuickIndexItem(); } |