diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.l | 1 | ||||
-rw-r--r-- | src/definition.cpp | 6 | ||||
-rw-r--r-- | src/docparser.cpp | 5 | ||||
-rw-r--r-- | src/docparser.h | 13 | ||||
-rw-r--r-- | src/dot.cpp | 86 | ||||
-rw-r--r-- | src/doxygen.cpp | 45 | ||||
-rw-r--r-- | src/doxygen.pro.in | 1 | ||||
-rw-r--r-- | src/filedef.cpp | 26 | ||||
-rw-r--r-- | src/htmldocvisitor.cpp | 2 | ||||
-rw-r--r-- | src/htmlgen.h | 2 | ||||
-rw-r--r-- | src/index.cpp | 33 | ||||
-rw-r--r-- | src/lang_cfg.h | 1 | ||||
-rw-r--r-- | src/language.cpp | 9 | ||||
-rw-r--r-- | src/latexgen.h | 2 | ||||
-rw-r--r-- | src/mangen.h | 2 | ||||
-rw-r--r-- | src/memberdef.cpp | 18 | ||||
-rw-r--r-- | src/outputgen.h | 2 | ||||
-rw-r--r-- | src/outputlist.cpp | 9 | ||||
-rw-r--r-- | src/outputlist.h | 7 | ||||
-rw-r--r-- | src/rtfdocvisitor.cpp | 264 | ||||
-rw-r--r-- | src/rtfdocvisitor.h | 1 | ||||
-rw-r--r-- | src/rtfgen.cpp | 40 | ||||
-rw-r--r-- | src/rtfgen.h | 10 | ||||
-rw-r--r-- | src/rtfstyle.cpp | 4 | ||||
-rw-r--r-- | src/translator_cz.h | 24 | ||||
-rw-r--r-- | src/translator_lt.h | 1546 | ||||
-rw-r--r-- | src/translator_ru.h | 2 | ||||
-rw-r--r-- | src/util.cpp | 31 |
28 files changed, 1943 insertions, 249 deletions
diff --git a/src/config.l b/src/config.l index f757a3d..7db22c9 100644 --- a/src/config.l +++ b/src/config.l @@ -1356,7 +1356,6 @@ void Config::create() "cause performance problems for the file system. \n", FALSE ); - cb->addDependency("GENERATE_HTML"); ce = addEnum( "OUTPUT_LANGUAGE", "The OUTPUT_LANGUAGE tag is used to specify the language in which all \n" diff --git a/src/definition.cpp b/src/definition.cpp index 9bf6acd..6581847 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -355,10 +355,6 @@ void Definition::writeSourceDef(OutputList &ol,const char *) //printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef); if (Config_getBool("SOURCE_BROWSER") && m_startBodyLine!=-1 && m_bodyDef) { - ol.disable(OutputGenerator::RTF); - ol.newParagraph(); - ol.enableAll(); - QCString refText = theTranslator->trDefinedAtLineInSourceFile(); int lineMarkerPos = refText.find("@0"); int fileMarkerPos = refText.find("@1"); @@ -462,11 +458,11 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) initParseCodeContext(); //printf("Read:\n`%s'\n\n",codeFragment.data()); if (definitionType()==TypeMember) setParameterList((MemberDef *)this); - ol.newParagraph(); ol.startCodeFragment(); parseCode(ol,scopeName,codeFragment,FALSE,0, m_bodyDef,actualStart,actualEnd,TRUE); ol.endCodeFragment(); + ol.newParagraph(); } } ol.popGeneratorState(); diff --git a/src/docparser.cpp b/src/docparser.cpp index d6fcee9..16bbb58 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -4807,7 +4807,8 @@ void DocRoot::parse() DocNode *validatingParseDoc(const char *fileName,int startLine, Definition *ctx,MemberDef *md, const char *input,bool indexWords, - bool isExample, const char *exampleName) + bool isExample, const char *exampleName, + bool singleLine) { //printf("validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>", @@ -4923,7 +4924,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, doctokenizerYYinit(input,g_fileName); // build abstract syntax tree - DocRoot *root = new DocRoot; + DocRoot *root = new DocRoot(md!=0,singleLine); root->parse(); if (Debug::isFlagSet(Debug::PrintTree)) diff --git a/src/docparser.h b/src/docparser.h index ff13c46..da57809 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -51,13 +51,16 @@ void initDocParser(); * search index. * @param isExample TRUE if the documentation belongs to an example. * @param exampleName Base name of the example file (0 if isExample is FALSE). + * @param singleLine Output should be presented on a single line, so without + * starting a new paragraph at the end. * @returns Root node of the abstract syntax tree. Ownership of the * pointer is handed over to the caller. */ DocNode *validatingParseDoc(const char *fileName,int startLine, Definition *context, MemberDef *md, const char *input,bool indexWords, - bool isExample,const char *exampleName=0); + bool isExample,const char *exampleName=0, + bool singleLine=FALSE); /*! Main entry point for parsing simple text fragments. These * fragments are limited to words, whitespace and symbols. @@ -1185,11 +1188,17 @@ class DocText : public CompAccept<DocText>, public DocNode class DocRoot : public CompAccept<DocRoot>, public DocNode { public: - DocRoot() {} + DocRoot(bool indent,bool sl) : m_indent(indent), m_singleLine(sl) {} Kind kind() const { return Kind_Root; } DocNode *parent() const { return 0; } void accept(DocVisitor *v) { CompAccept<DocRoot>::accept(this,v); } void parse(); + bool indent() const { return m_indent; } + bool singleLine() const { return m_singleLine; } + + private: + bool m_indent; + bool m_singleLine; }; diff --git a/src/dot.cpp b/src/dot.cpp index 1429645..c9f54d0 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -35,7 +35,7 @@ //-------------------------------------------------------------------- -static const int maxCmdLine = 4096; +static const int maxCmdLine = 40960; /*! mapping from protection levels to color names */ static const char *edgeColorMap[] = @@ -981,9 +981,10 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) f.close(); QCString dotArgs(maxCmdLine); - dotArgs.sprintf("-T%s \"%s\" -o \"%s\"", - imgExt.data(), dotName.data(),imgName.data()); - //printf("Running: dot -T%s %s -o %s\n",imgExt.data(),dotName.data(),imgName.data()); + dotArgs.sprintf("\"%s\" -T%s -o \"%s\" -Timap -o \"%s\"", + dotName.data(), imgExt.data(), imgName.data(), mapName.data()); + //printf("Running: dot %s -T%s -o %s -Timap -o %s\n", + // dotName.data(),imgExt.data(),imgName.data(),mapName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); @@ -991,14 +992,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) return; } checkDotResult(imgName); - dotArgs.sprintf("-Timap \"%s\" -o \"%s\"",dotName.data(),mapName.data()); - //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Problems running dot. Check your installation!\n"); - out << "</table>" << endl; - return; - } if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName); } // write image and map in a table row @@ -1673,8 +1666,14 @@ QCString DotClassGraph::writeGraph(QTextStream &out, { QCString dotArgs(maxCmdLine); QCString imgName = baseName+"."+imgExt; - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", - imgExt.data(),baseName.data(),imgName.data()); + dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"", + baseName.data(),imgExt.data(),imgName.data()); + if (generateImageMap) + { + // run dot also to create an image map + dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"", + baseName.data()); + } if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Error: Problems running dot. Check your installation!\n"); @@ -1682,17 +1681,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out, return baseName; } checkDotResult(imgName); - if (generateImageMap) - { - // run dot again to create an image map - dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"",baseName.data(),baseName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Error: Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return baseName; - } - } } else if (format==EPS) // run dot to create a .eps image { @@ -1942,8 +1930,14 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, // run dot to create a bitmap image QCString dotArgs(maxCmdLine); QCString imgName=baseName+"."+imgExt; - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", - imgExt.data(),baseName.data(),imgName.data()); + dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"", + baseName.data(),imgExt.data(),imgName.data()); + if (generateImageMap) + { + // run dot also to create an image map + dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"", + baseName.data()); + } if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); @@ -1951,21 +1945,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, return baseName; } checkDotResult(imgName); - - if (generateImageMap) - { - // run dot again to create an image map - dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"", - baseName.data(),baseName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return baseName; - } - - //thisDir.remove(baseName+".map"); - } } else if (format==EPS) { @@ -2128,8 +2107,14 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format, // run dot to create a bitmap image QCString dotArgs(maxCmdLine); QCString imgName=baseName+"."+imgExt; - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", - imgExt.data(),baseName.data(),imgName.data()); + dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"", + baseName.data(),imgExt.data(),imgName.data()); + if (generateImageMap) + { + // run dot also to create an image map + dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"", + baseName.data()); + } if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); @@ -2137,19 +2122,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format, return baseName; } checkDotResult(imgName); - - if (generateImageMap) - { - // run dot again to create an image map - dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"", - baseName.data(),baseName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return baseName; - } - } } else if (format==EPS) { diff --git a/src/doxygen.cpp b/src/doxygen.cpp index ba10bb9..a91a64e 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1608,8 +1608,8 @@ static MemberDef *addVariableToFile( if ( ((nd==0 && md->getFileDef() && root->fileName==md->getFileDef()->absFilePath() - ) - || (nd!=0 && md->getNamespaceDef()==nd) + ) // both variable names in the same file + || (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace ) && !md->isDefine() // function style #define's can be "overloaded" by typedefs or variables ) @@ -1658,15 +1658,17 @@ static MemberDef *addVariableToFile( md->addSectionsToDefinition(root->anchors); md->setFromAnonymousScope(fromAnnScope); md->setFromAnonymousMember(fromAnnMemb); - //md->setIndentDepth(indentDepth); - md->setBodySegment(root->bodyLine,root->endBodyLine); md->setInitializer(root->initializer); md->setMaxInitLines(root->initLines); md->setMemberGroupId(root->mGrpId); - md->setBodyDef(fd); md->setDefinition(def); md->enableCallGraph(root->callGraph); md->setExplicitExternal(root->explicitExternal); + if (!root->explicitExternal) + { + md->setBodySegment(root->bodyLine,root->endBodyLine); + md->setBodyDef(fd); + } addMemberToGroups(root,md); md->setRefItems(root->sli); @@ -1956,7 +1958,7 @@ static void buildVarList(Entry *root) int si=scope.find('@'); //int anonyScopes = 0; bool added=FALSE; - if (si!=-1) + if (si!=-1) // anonymous scope { QCString pScope; ClassDef *pcd=0; @@ -1994,19 +1996,6 @@ static void buildVarList(Entry *root) //printf("Inserting member in global scope %s!\n",scope.data()); addVariableToFile(root,mtype,scope,name,FALSE,/*0,*/0); } - //if (mtype==MemberDef::Typedef) - //{ - // static QRegExp r("[a-z_A-Z][a-z_A-Z0-9]*"); - // int i,l; - // if ((i=r.match(type,8,&l))!=-1) - // { - // //printf(">>> inserting typedef `%s'->`%s'\n",type.mid(i,l).data(),name.data()); - // if (getClass(type.mid(i,l))!=0) - // { - // typedefDict.insert(name,new QCString(type.mid(i,l))); - // } - // } - //} } nextMember: EntryListIterator eli(*root->sublist); @@ -3091,11 +3080,18 @@ static void findUsedClassesForClass(Entry *root, { //printf("Found used class %s\n",usedClassName.data()); // the name could be a type definition, resolve it - // TODO: recursive typedef resolution QCString typeName = resolveTypeDef(masterCd,usedClassName); - //printf("Found resolved class %s\n",typeName.data()); + //printf("*** Found resolved class %s for %s\n",typeName.data(),usedClassName.data()); + + if (!typeName.isEmpty()) // if we could resolve the typedef, use + // the result as the class name. + { + usedClassName=typeName; + } - int si=usedClassName.findRev("::"); + int sp=usedClassName.find('<'); + if (sp==-1) sp=0; + int si=usedClassName.findRev("::",sp); if (si!=-1) { // replace any namespace aliases @@ -8381,8 +8377,9 @@ void generateOutput() Doxygen::tagFile << "<tagfile>" << endl; } - if (Config_getBool("GENERATE_HTML")) writeDoxFont(Config_getString("HTML_OUTPUT")); - if (Config_getBool("GENERATE_RTF")) writeDoxFont(Config_getString("RTF_OUTPUT")); + if (Config_getBool("GENERATE_HTML")) writeDoxFont(Config_getString("HTML_OUTPUT")); + if (Config_getBool("GENERATE_LATEX")) writeDoxFont(Config_getString("LATEX_OUTPUT")); + if (Config_getBool("GENERATE_RTF")) writeDoxFont(Config_getString("RTF_OUTPUT")); //statistics(); diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index 26de635..8e8d273 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -35,5 +35,6 @@ TARGET = doxygen unix:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a win32:TARGETDEPS = ..\lib\doxygen.lib ..\lib\doxycfg.lib win32-g++:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a +win32-mingw:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a OBJECTS_DIR = ../objects diff --git a/src/filedef.cpp b/src/filedef.cpp index 0c00968..33c418c 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -235,28 +235,31 @@ void FileDef::writeDocumentation(OutputList &ol) << "</filename>" << endl; } - ol.startTextBlock(); if (Config_getBool("DETAILS_AT_TOP")) { + ol.startTextBlock(); writeDetailedDocumentation(ol); - ol.newParagraph(); + ol.endTextBlock(); } - else if (briefDescription()) + else if (!briefDescription().isEmpty()) { ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),TRUE,FALSE); - ol.writeString(" \n"); + //ol.writeString(" \n"); ol.disableAllBut(OutputGenerator::Html); ol.startTextLink(0,"_details"); ol.parseText(theTranslator->trMore()); ol.endTextLink(); ol.enableAll(); + + ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); + ol.disable(OutputGenerator::RTF); ol.newParagraph(); - ol.enable(OutputGenerator::Man); + ol.popGeneratorState(); } ol.writeSynopsis(); - if (Config_getBool("SHOW_INCLUDE_FILES")) + if (Config_getBool("SHOW_INCLUDE_FILES") && includeList->count()>0) { ol.startTextBlock(TRUE); QListIterator<IncludeInfo> ili(*includeList); @@ -323,12 +326,7 @@ void FileDef::writeDocumentation(OutputList &ol) if (isIDLorJava) ol.docify(";"); ol.endTypewriter(); - ol.disable(OutputGenerator::RTF); ol.lineBreak(); - ol.enableAll(); - ol.disableAllBut(OutputGenerator::RTF); - ol.newParagraph(); - ol.enableAll(); } ol.endTextBlock(); } @@ -339,12 +337,14 @@ void FileDef::writeDocumentation(OutputList &ol) DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),FALSE); if (!incDepGraph.isTrivial()) { + ol.startTextBlock(); ol.disable(OutputGenerator::Man); ol.newParagraph(); ol.startInclDepGraph(); ol.parseText(theTranslator->trInclDepGraph(name())); ol.endInclDepGraph(incDepGraph); ol.enableAll(); + ol.endTextBlock(TRUE); } //incDepGraph.writeGraph(Config_getString("HTML_OUTPUT"),fd->getOutputFileBase()); } @@ -355,12 +355,14 @@ void FileDef::writeDocumentation(OutputList &ol) DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),TRUE); if (!incDepGraph.isTrivial()) { + ol.startTextBlock(); ol.disable(OutputGenerator::Man); ol.newParagraph(); ol.startInclDepGraph(); ol.parseText(theTranslator->trInclByDepGraph()); ol.endInclDepGraph(incDepGraph); ol.enableAll(); + ol.endTextBlock(TRUE); } //incDepGraph.writeGraph(Config_getString("HTML_OUTPUT"),fd->getOutputFileBase()); } @@ -376,8 +378,6 @@ void FileDef::writeDocumentation(OutputList &ol) ol.enableAll(); } - ol.endTextBlock(); - ol.startMemberSections(); if (namespaceSDict->count()>0) diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 62460df..bfb0958 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -249,6 +249,7 @@ void HtmlDocVisitor::visit(DocInclude *inc) m_t << "<pre><div class=\"fragment\">"; parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile()); m_t << "</div></pre>"; + break; case DocInclude::IncWithLines: { m_t << "<pre><div class=\"fragment\">"; @@ -258,7 +259,6 @@ void HtmlDocVisitor::visit(DocInclude *inc) m_t << "</div></pre>"; } break; - break; case DocInclude::DontInclude: break; case DocInclude::HtmlInclude: diff --git a/src/htmlgen.h b/src/htmlgen.h index 29d7385..e63030a 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -190,7 +190,7 @@ class HtmlGenerator : public OutputGenerator void writeGraphicalHierarchy(DotGfxHierarchyTable &g); void startTextBlock(bool) {} - void endTextBlock() {} + void endTextBlock(bool) {} void lastIndexPage() {} void startMemberDocPrefixItem(); diff --git a/src/index.cpp b/src/index.cpp index afc0f1d..6473f9a 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -961,35 +961,6 @@ void writeFileIndex(OutputList &ol) fullName.prepend(path); } - // --------------- LaTeX/RTF only ------------------------- -#if 0 - if (doc) - { - ol.pushGeneratorState(); - ol.disable(OutputGenerator::Html); - ol.writeStartAnnoItem("file", - fd->getOutputFileBase(), - path, - fd->name() - ); - if (!fd->briefDescription().isEmpty()) - { - ol.docify(" ("); - parseDoc(ol,fd->absFilePath(),1, - 0,0, - abbreviate(fd->briefDescription(),fd->name())); - ol.docify(")"); - } - ol.writeEndAnnoItem(fd->getOutputFileBase()); - ol.popGeneratorState(); - } -#endif - // -------------------------------------------------------- - - // ----------------- HTML only ---------------------------- - //ol.pushGeneratorState(); - //ol.disableAllBut(OutputGenerator::Html); - //ol.writeListItem(); ol.startIndexKey(); ol.docify(path); if (doc) @@ -1041,7 +1012,9 @@ void writeFileIndex(OutputList &ol) fd,0, abbreviate(fd->briefDescription(),fd->name()), FALSE, // index words - FALSE // isExample + FALSE, // isExample + 0, // example name + TRUE // single line ); //ol.docify(")"); } diff --git a/src/lang_cfg.h b/src/lang_cfg.h index 01180c6..085c2a0 100644 --- a/src/lang_cfg.h +++ b/src/lang_cfg.h @@ -27,3 +27,4 @@ #define LANG_TW #define LANG_SR #define LANG_CA +#define LANG_LT diff --git a/src/language.cpp b/src/language.cpp index c73b68c..8cc1214 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -112,6 +112,9 @@ //#ifdef LANG_JS //#include "translator_js.h" //#endif +#ifdef LANG_LT +#include "translator_lt.h" +#endif #endif #define L_EQUAL(a) !stricmp(langName,a) @@ -307,6 +310,12 @@ bool setTranslator(const char *langName) theTranslator=new TranslatorCatalan; } #endif +#ifdef LANG_LT + else if (L_EQUAL("lithuanian")) + { + theTranslator=new TranslatorLithuanian; + } +#endif #endif // ENGLISH_ONLY else // use the default language (i.e. english) { diff --git a/src/latexgen.h b/src/latexgen.h index 49705d2..08f3ad0 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -266,7 +266,7 @@ class LatexGenerator : public OutputGenerator void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} void startTextBlock(bool) {} - void endTextBlock() {} + void endTextBlock(bool) {} void startMemberDocPrefixItem() {} void endMemberDocPrefixItem() {} diff --git a/src/mangen.h b/src/mangen.h index b7d43bb..ac5bbe5 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -232,7 +232,7 @@ class ManGenerator : public OutputGenerator void writeGraphicalHierarchy(DotGfxHierarchyTable &) {} void startTextBlock(bool) {} - void endTextBlock() {} + void endTextBlock(bool) {} void lastIndexPage() {} void startMemberDocPrefixItem() {} diff --git a/src/memberdef.cpp b/src/memberdef.cpp index fd4ff55..ce37bac 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1507,17 +1507,13 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (!detailed.isEmpty()) { ol.parseDoc(docFile(),docLine(),getOuterScope()?getOuterScope():container,this,detailed+"\n",TRUE,FALSE); - ol.pushGeneratorState(); if (!m_inbodyDocs.isEmpty()) { ol.newParagraph(); ol.parseDoc(inbodyFile(),inbodyLine(),getOuterScope()?getOuterScope():container,this,m_inbodyDocs+"\n",TRUE,FALSE); } - ol.disableAllBut(OutputGenerator::RTF); - ol.newParagraph(); - ol.popGeneratorState(); } - else if(!brief.isEmpty() && (Config_getBool("REPEAT_BRIEF") || + else if (!brief.isEmpty() && (Config_getBool("REPEAT_BRIEF") || !Config_getBool("BRIEF_MEMBER_DESC"))) { if (!m_inbodyDocs.isEmpty()) @@ -1525,10 +1521,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ol.newParagraph(); ol.parseDoc(inbodyFile(),inbodyLine(),getOuterScope()?getOuterScope():container,this,m_inbodyDocs+"\n",TRUE,FALSE); } - ol.pushGeneratorState(); - ol.disableAllBut(OutputGenerator::RTF); - ol.newParagraph(); - ol.popGeneratorState(); } @@ -1678,9 +1670,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ol.parseText(reimplFromLine.right( reimplFromLine.length()-markerPos-2)); // text right from marker - ol.disableAllBut(OutputGenerator::RTF); ol.newParagraph(); - ol.enableAll(); } else { @@ -1761,9 +1751,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, index=newIndex+matchLen; } ol.parseText(reimplInLine.right(reimplInLine.length()-index)); - ol.disableAllBut(OutputGenerator::RTF); ol.newParagraph(); - ol.enableAll(); } } // write the list of examples that use this member @@ -1781,10 +1769,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, writeSourceReffedBy(ol,cname); writeInlineCode(ol,cname); - ol.disableAllBut(OutputGenerator::RTF); - ol.newParagraph(); - ol.enableAll(); - if ((m_hasCallGraph || Config_getBool("CALL_GRAPH")) && isFunction() && Config_getBool("HAVE_DOT") ) diff --git a/src/outputgen.h b/src/outputgen.h index 6a86831..214ffaf 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -342,7 +342,7 @@ class OutputGenerator : public BaseOutputDocInterface //virtual void endQuickIndexItem() = 0; virtual void writeQuickLinks(bool compact,HighlightedItem hli) = 0; virtual void startTextBlock(bool) = 0; - virtual void endTextBlock() = 0; + virtual void endTextBlock(bool) = 0; virtual void lastIndexPage() = 0; virtual void startMemberDocPrefixItem() = 0; virtual void endMemberDocPrefixItem() = 0; diff --git a/src/outputlist.cpp b/src/outputlist.cpp index eaa7811..261355e 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -132,7 +132,8 @@ void OutputList::popGeneratorState() void OutputList::parseDoc(const char *fileName,int startLine, Definition *ctx,MemberDef * md, const QCString &docStr,bool indexWords, - bool isExample,const char *exampleName) + bool isExample,const char *exampleName, + bool singleLine) { int count=0; if (docStr.isEmpty()) return; @@ -149,12 +150,14 @@ void OutputList::parseDoc(const char *fileName,int startLine, if (docStr.at(docStr.length()-1)=='\n') { root = validatingParseDoc(fileName,startLine, - ctx,md,docStr,indexWords,isExample,exampleName); + ctx,md,docStr,indexWords,isExample,exampleName, + singleLine); } else { root = validatingParseDoc(fileName,startLine, - ctx,md,docStr+"\n",indexWords,isExample,exampleName); + ctx,md,docStr+"\n",indexWords,isExample,exampleName, + singleLine); } og=outputs->first(); diff --git a/src/outputlist.h b/src/outputlist.h index c24950f..68a8c10 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -62,7 +62,8 @@ class OutputList : public OutputDocInterface void parseDoc(const char *fileName,int startLine, Definition *ctx,MemberDef *md,const QCString &docStr, - bool indexWords,bool isExample,const char *exampleName=0); + bool indexWords,bool isExample,const char *exampleName=0, + bool singleLine=FALSE); void parseText(const QCString &textStr); @@ -321,8 +322,8 @@ class OutputList : public OutputDocInterface { forall(&OutputGenerator::writeGraphicalHierarchy,g); } void startTextBlock(bool dense=FALSE) { forall(&OutputGenerator::startTextBlock,dense); } - void endTextBlock() - { forall(&OutputGenerator::endTextBlock); } + void endTextBlock(bool paraBreak=FALSE) + { forall(&OutputGenerator::endTextBlock,paraBreak); } void lastIndexPage() { forall(&OutputGenerator::lastIndexPage); } void startMemberDocPrefixItem() diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp index 2f2dd25..a878abc 100644 --- a/src/rtfdocvisitor.cpp +++ b/src/rtfdocvisitor.cpp @@ -28,8 +28,13 @@ #include "message.h" #include <qfileinfo.h> + +#define DBG_RTF(x) m_t << x +//#define DBG_RTF(x) do {} while(0) + RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci) - : DocVisitor(DocVisitor_RTF), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE), m_indentLevel(1) + : DocVisitor(DocVisitor_RTF), m_t(t), m_ci(ci), m_insidePre(FALSE), + m_hide(FALSE), m_indentLevel(0), m_lastIsPara(FALSE) { } @@ -49,7 +54,7 @@ void RTFDocVisitor::incIndentLevel() void RTFDocVisitor::decIndentLevel() { - if (m_indentLevel>1) m_indentLevel--; + if (m_indentLevel>0) m_indentLevel--; } //-------------------------------------- @@ -59,20 +64,25 @@ void RTFDocVisitor::decIndentLevel() void RTFDocVisitor::visit(DocWord *w) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocWord)}\n"); filter(w->word()); + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocLinkedWord *w) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocLinkedWord)}\n"); startLink(w->ref(),w->file(),w->anchor()); filter(w->word()); endLink(w->ref()); + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocWhiteSpace *w) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocWhiteSpace)}\n"); if (m_insidePre) { m_t << w->chars(); @@ -81,11 +91,13 @@ void RTFDocVisitor::visit(DocWhiteSpace *w) { m_t << " "; } + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocSymbol *s) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocSymbol)}\n"); switch(s->symbol()) { case DocSymbol::BSlash: m_t << "\\\\"; break; @@ -202,11 +214,13 @@ void RTFDocVisitor::visit(DocSymbol *s) default: err("Error: unknown symbol found\n"); } + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocURL *u) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocURL)}\n"); if (Config_getBool("RTF_HYPERLINKS")) { m_t << "{\\field " @@ -230,23 +244,30 @@ void RTFDocVisitor::visit(DocURL *u) filter(u->url()); m_t << "}"; } + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocLineBreak *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocLineBreak)}\n"); m_t << "\\par\n"; + m_lastIsPara=TRUE; } void RTFDocVisitor::visit(DocHorRuler *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocHorRuler)}\n"); m_t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visit(DocStyleChange *s) { if (m_hide) return; + m_lastIsPara=FALSE; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocStyleChange)}\n"); switch (s->style()) { case DocStyleChange::Bold: @@ -284,6 +305,7 @@ void RTFDocVisitor::visit(DocStyleChange *s) m_t << "\\par" << endl; m_t << "}" << endl; } + m_lastIsPara=TRUE; break; case DocStyleChange::Div: /* HTML only */ break; case DocStyleChange::Span: /* HTML only */ break; @@ -293,6 +315,7 @@ void RTFDocVisitor::visit(DocStyleChange *s) void RTFDocVisitor::visit(DocVerbatim *s) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocVerbatim)}\n"); switch(s->type()) { case DocVerbatim::Code: // fall though @@ -340,11 +363,13 @@ void RTFDocVisitor::visit(DocVerbatim *s) } break; } + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocAnchor *anc) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocAnchor)}\n"); QString anchor; if (!anc->file().isEmpty()) { @@ -360,11 +385,13 @@ void RTFDocVisitor::visit(DocAnchor *anc) } m_t << "{\\bkmkstart " << rtfFormatBmkStr(anchor) << "}" << endl; m_t << "{\\bkmkend " << rtfFormatBmkStr(anchor) << "}" << endl; + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocInclude *inc) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocInclude)}\n"); switch(inc->type()) { case DocInclude::IncWithLines: @@ -400,12 +427,14 @@ void RTFDocVisitor::visit(DocInclude *inc) m_t << "}" << endl; break; } + m_lastIsPara=TRUE; } void RTFDocVisitor::visit(DocIncOperator *op) { //printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n", // op->type(),op->isFirst(),op->isLast(),op->text().data()); + DBG_RTF("{\\comment RTFDocVisitor::visit(DocIncOperator)}\n"); if (op->isFirst()) { if (!m_hide) @@ -432,10 +461,12 @@ void RTFDocVisitor::visit(DocIncOperator *op) m_t << "\\par" << endl; m_t << "}" << endl; } + m_lastIsPara=TRUE; } else { if (!m_hide) m_t << endl; + m_lastIsPara=FALSE; } } @@ -443,13 +474,17 @@ void RTFDocVisitor::visit(DocFormula *f) { if (m_hide) return; // TODO: do something sensible here, like including a bitmap + DBG_RTF("{\\comment RTFDocVisitor::visit(DocFormula)}\n"); m_t << f->text(); + m_lastIsPara=FALSE; } void RTFDocVisitor::visit(DocIndexEntry *i) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visit(DocIndexEntry)}\n"); m_t << "{\\xe \\v " << i->entry() << "}" << endl; + m_lastIsPara=FALSE; } //-------------------------------------- @@ -459,24 +494,27 @@ void RTFDocVisitor::visit(DocIndexEntry *i) void RTFDocVisitor::visitPre(DocAutoList *l) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocAutoList)}\n"); m_t << "{" << endl; - incIndentLevel(); rtf_listItemInfo[m_indentLevel].isEnum = l->isEnumList(); rtf_listItemInfo[m_indentLevel].number = 1; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocAutoList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocAutoList)}\n"); m_t << "\\par" << endl; m_t << "}" << endl; - decIndentLevel(); + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocAutoListItem *) { if (m_hide) return; - m_t << "\\par" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocAutoListItem)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; m_t << rtf_Style_Reset; if (rtf_listItemInfo[m_indentLevel].isEnum) { @@ -488,40 +526,62 @@ void RTFDocVisitor::visitPre(DocAutoListItem *) { m_t << getStyle("ListBullet") << endl; } + incIndentLevel(); + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocAutoListItem *) { + decIndentLevel(); + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocAutoListItem)}\n"); } void RTFDocVisitor::visitPre(DocPara *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocPara)}\n"); } void RTFDocVisitor::visitPost(DocPara *p) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocPara)}\n"); if (!p->isLast() && // omit <p> for last paragraph !(p->parent() && // and for parameter sections p->parent()->kind()==DocNode::Kind_ParamSect ) - ) m_t << "\\par" << endl; + ) + { + m_t << "\\par" << endl; + m_lastIsPara=TRUE; + } } -void RTFDocVisitor::visitPre(DocRoot *) +void RTFDocVisitor::visitPre(DocRoot *r) { + if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocRoot)}\n"); + if (r->indent()) incIndentLevel(); + m_t << "{" << rtf_Style["BodyText"]->reference << endl; } -void RTFDocVisitor::visitPost(DocRoot *) +void RTFDocVisitor::visitPost(DocRoot *r) { + if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocRoot)}\n"); + if (!m_lastIsPara && !r->singleLine()) m_t << "\\par" << endl; + m_t << "}"; + m_lastIsPara=TRUE; + if (r->indent()) decIndentLevel(); } void RTFDocVisitor::visitPre(DocSimpleSect *s) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSimpleSect)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; m_t << "{"; // start desc - m_t << "{\\b "; // start bold - m_t << "\\par" << endl; + //m_t << "{\\b "; // start bold + m_t << "{" << rtf_Style["Heading5"]->reference << endl; switch(s->type()) { case DocSimpleSect::See: @@ -560,65 +620,80 @@ void RTFDocVisitor::visitPre(DocSimpleSect *s) // special case 1: user defined title if (s->type()!=DocSimpleSect::User && s->type()!=DocSimpleSect::Rcs) { - m_t << ":}"; // end bold + m_t << ":"; m_t << "\\par" << endl; + m_t << "}"; // end bold incIndentLevel(); m_t << rtf_Style_Reset << getStyle("DescContinue"); } + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocSimpleSect *) { if (m_hide) return; - m_t << "\\par" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSimpleSect)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; decIndentLevel(); m_t << "}"; // end desc + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocTitle *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocTitle)}\n"); } void RTFDocVisitor::visitPost(DocTitle *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocTitle)}\n"); m_t << "}"; // end bold m_t << "\\par" << endl; incIndentLevel(); m_t << rtf_Style_Reset << getStyle("DescContinue"); + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPre(DocSimpleList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSimpleSect)}\n"); m_t << "{" << endl; - incIndentLevel(); rtf_listItemInfo[m_indentLevel].isEnum = FALSE; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocSimpleList *) { if (m_hide) return; - decIndentLevel(); - m_t << "\\par" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSimpleSect)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; m_t << "}" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocSimpleListItem *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSimpleListItem)}\n"); m_t << "\\par" << rtf_Style_Reset << getStyle("ListBullet") << endl; + m_lastIsPara=FALSE; + incIndentLevel(); } void RTFDocVisitor::visitPost(DocSimpleListItem *) { + decIndentLevel(); + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSimpleListItem)}\n"); } void RTFDocVisitor::visitPre(DocSection *s) { if (m_hide) return; - m_t << "\\par" << endl << - "{{" // start section + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSection)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; + m_t << "{{" // start section << rtf_Style_Reset; QString heading; int level = QMIN(s->level()+1,4); @@ -631,33 +706,39 @@ void RTFDocVisitor::visitPre(DocSection *s) m_t << "{\\tc\\tcl" << level << " \\v "; filter(s->title()); m_t << "}" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPost(DocSection *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSection)}\n"); m_t << "}" << endl; // end section + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlList *l) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlList)}\n"); m_t << "{" << endl; - incIndentLevel(); rtf_listItemInfo[m_indentLevel].isEnum = l->type()==DocHtmlList::Ordered; rtf_listItemInfo[m_indentLevel].number = 1; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlList)}\n"); m_t << "\\par" << endl << "}" << endl; - decIndentLevel(); + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlListItem *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlListItem)}\n"); m_t << "\\par" << endl; m_t << rtf_Style_Reset; if (rtf_listItemInfo[m_indentLevel].isEnum) @@ -670,92 +751,101 @@ void RTFDocVisitor::visitPre(DocHtmlListItem *) { m_t << getStyle("ListBullet") << endl; } + incIndentLevel(); + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlListItem *) { + decIndentLevel(); + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlListItem)}\n"); } -//void RTFDocVisitor::visitPre(DocHtmlPre *) -//{ -// m_t << "{" << endl; -// m_t << "\\par" << endl; -// m_t << rtf_Style_Reset << getStyle("CodeExample"); -// m_insidePre=TRUE; -//} - -//void RTFDocVisitor::visitPost(DocHtmlPre *) -//{ -// m_insidePre=FALSE; -// m_t << "\\par" << endl; -// m_t << "}" << endl; -//} - void RTFDocVisitor::visitPre(DocHtmlDescList *) { if (m_hide) return; - m_t << "{" << endl; - m_t << rtf_Style_Reset << getStyle("ListContinue"); + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlDescList)}\n"); + //m_t << "{" << endl; + //m_t << rtf_Style_Reset << getStyle("ListContinue"); + //m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlDescList *) { if (m_hide) return; - m_t << "}" << endl; - m_t << "\\par" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlDescList)}\n"); + //m_t << "}" << endl; + //m_t << "\\par" << endl; + //m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlDescTitle *) { if (m_hide) return; - m_t << "\\par" << endl; - m_t << "{\\b "; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlDescTitle)}\n"); + //m_t << "\\par" << endl; + //m_t << "{\\b "; + m_t << "{" << rtf_Style["Heading5"]->reference << endl; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlDescTitle *) { if (m_hide) return; - m_t << "}" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlDescTitle)}\n"); m_t << "\\par" << endl; + m_t << "}" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlDescData *) { + if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlDescData)}\n"); + incIndentLevel(); + m_t << "{" << rtf_Style_Reset << getStyle("DescContinue"); } void RTFDocVisitor::visitPost(DocHtmlDescData *) { + if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlDescData)}\n"); + m_t << "\\par" << endl; + m_t << "}" << endl; + decIndentLevel(); + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlTable *) { if (m_hide) return; - m_t << "\\par" << endl; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlTable)}\n"); + if (!m_lastIsPara) m_t << "\\par" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPost(DocHtmlTable *) { if (m_hide) return; - //if (!t->hasCaption()) - //{ - // m_t << endl; - // m_t << "\\pard \\widctlpar\\intbl\\adjustright" << endl; - // m_t << "{\\row }" << endl; - //} + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlTable)}\n"); m_t << "\\pard" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHtmlCaption *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlCaption)}\n"); } void RTFDocVisitor::visitPost(DocHtmlCaption *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlCaption)}\n"); } void RTFDocVisitor::visitPre(DocHtmlRow *r) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlRow)}\n"); uint i,columnWidth=rtf_pageWidth/r->numCells(); m_t << "\\trowd \\trgaph108\\trleft-108" "\\trbrdrt\\brdrs\\brdrw10 " @@ -774,31 +864,39 @@ void RTFDocVisitor::visitPre(DocHtmlRow *r) "\\cellx" << ((i+1)*columnWidth) << endl; } m_t << "\\pard \\widctlpar\\intbl\\adjustright" << endl; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlRow *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlRow)}\n"); m_t << endl; m_t << "\\pard \\widctlpar\\intbl\\adjustright" << endl; m_t << "{\\row }" << endl; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPre(DocHtmlCell *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlCell)}\n"); m_t << "{"; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlCell *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlCell)}\n"); m_t << "\\cell }"; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPre(DocInternal *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocInternal)}\n"); m_t << "{"; // start desc m_t << "{\\b "; // start bold m_t << theTranslator->trForInternalUseOnly(); @@ -806,19 +904,23 @@ void RTFDocVisitor::visitPre(DocInternal *) m_t << "\\par" << endl; incIndentLevel(); m_t << rtf_Style_Reset << getStyle("DescContinue"); + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocInternal *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocInternal)}\n"); m_t << "\\par" << endl; decIndentLevel(); m_t << "}"; // end desc + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocHRef *href) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHRef)}\n"); if (Config_getBool("RTF_HYPERLINKS")) { m_t << "{\\field " @@ -834,11 +936,13 @@ void RTFDocVisitor::visitPre(DocHRef *href) { m_t << "{\\f2 "; } + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHRef *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHRef)}\n"); if (Config_getBool("RTF_HYPERLINKS")) { m_t << "}" @@ -849,11 +953,13 @@ void RTFDocVisitor::visitPost(DocHRef *) { m_t << "}"; } + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPre(DocHtmlHeader *header) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlHeader)}\n"); m_t << "{" // start section << rtf_Style_Reset; QString heading; @@ -863,18 +969,22 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header) m_t << rtf_Style[heading]->reference; // make table of contents entry m_t << "{\\tc\\tcl \\v " << level << "}"; + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocHtmlHeader *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlHeader)}\n"); m_t << "\\par" << endl; m_t << "}" << endl; // end section + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocImage *img) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocImage)}\n"); if (img->type()==DocImage::Rtf) { m_t << "\\par" << endl; @@ -884,7 +994,7 @@ void RTFDocVisitor::visitPre(DocImage *img) m_t << img->name(); m_t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; m_t << "}" << endl; - + m_lastIsPara=TRUE; } else // other format -> skip { @@ -896,11 +1006,13 @@ void RTFDocVisitor::visitPre(DocImage *img) void RTFDocVisitor::visitPost(DocImage *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocImage)}\n"); popEnabled(); } void RTFDocVisitor::visitPre(DocDotFile *df) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocDotFile)}\n"); writeDotFile(df->file()); // hide caption since it is not supported at the moment @@ -910,24 +1022,28 @@ void RTFDocVisitor::visitPre(DocDotFile *df) void RTFDocVisitor::visitPost(DocDotFile *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocDotFile)}\n"); popEnabled(); } void RTFDocVisitor::visitPre(DocLink *lnk) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocLink)}\n"); startLink(lnk->ref(),lnk->file(),lnk->anchor()); } void RTFDocVisitor::visitPost(DocLink *lnk) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocLink)}\n"); endLink(lnk->ref()); } void RTFDocVisitor::visitPre(DocRef *ref) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocRef)}\n"); if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); if (!ref->hasLinkText()) filter(ref->targetTitle()); } @@ -935,6 +1051,7 @@ void RTFDocVisitor::visitPre(DocRef *ref) void RTFDocVisitor::visitPost(DocRef *ref) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocRef)}\n"); if (!ref->file().isEmpty()) endLink(ref->ref()); m_t << " "; } @@ -942,31 +1059,38 @@ void RTFDocVisitor::visitPost(DocRef *ref) void RTFDocVisitor::visitPre(DocSecRefItem *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSecRefItem)}\n"); } void RTFDocVisitor::visitPost(DocSecRefItem *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSecRefItem)}\n"); } void RTFDocVisitor::visitPre(DocSecRefList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocSecRefList)}\n"); m_t << "{" << endl; incIndentLevel(); m_t << rtf_Style_Reset << getStyle("LatexTOC") << endl; m_t << "\\par" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPost(DocSecRefList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSecRefList)}\n"); decIndentLevel(); m_t << "\\par" << endl; m_t << "}"; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocLanguage *l) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocLanguage)}\n"); QString langId = Config_getEnum("OUTPUT_LANGUAGE"); if (l->id().lower()!=langId.lower()) { @@ -977,6 +1101,7 @@ void RTFDocVisitor::visitPre(DocLanguage *l) void RTFDocVisitor::visitPost(DocLanguage *l) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocLanguage)}\n"); QString langId = Config_getEnum("OUTPUT_LANGUAGE"); if (l->id().lower()!=langId.lower()) { @@ -987,9 +1112,11 @@ void RTFDocVisitor::visitPost(DocLanguage *l) void RTFDocVisitor::visitPre(DocParamSect *s) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocParamSect)}\n"); m_t << "{"; // start param list - m_t << "\\par" << endl; - m_t << "{\\b "; // start bold + if (!m_lastIsPara) m_t << "\\par" << endl; + //m_t << "{\\b "; // start bold + m_t << "{" << rtf_Style["Heading5"]->reference << endl; switch(s->type()) { case DocParamSect::Param: @@ -1001,15 +1128,18 @@ void RTFDocVisitor::visitPre(DocParamSect *s) default: ASSERT(0); } - m_t << ":}" << endl; + m_t << ":"; m_t << "\\par" << endl; + m_t << "}" << endl; incIndentLevel(); m_t << rtf_Style_Reset << getStyle("DescContinue"); + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPost(DocParamSect *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocParamSect)}\n"); //m_t << "\\par" << endl; decIndentLevel(); m_t << "}" << endl; @@ -1018,6 +1148,7 @@ void RTFDocVisitor::visitPost(DocParamSect *) void RTFDocVisitor::visitPre(DocParamList *pl) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocParamList)}\n"); m_t << "{\\i "; QStrListIterator li(pl->parameters()); const char *s; @@ -1028,20 +1159,24 @@ void RTFDocVisitor::visitPre(DocParamList *pl) filter(s); } m_t << "} "; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPost(DocParamList *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocParamList)}\n"); m_t << "\\par" << endl; + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocXRefItem *x) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocXRefItem)}\n"); m_t << "{"; // start param list - m_t << "{\\b "; // start bold - m_t << "\\par" << endl; + //m_t << "{\\b "; // start bold + m_t << "{" << rtf_Style["Heading5"]->reference << endl; if (Config_getBool("RTF_HYPERLINKS")) { QString refName; @@ -1074,47 +1209,57 @@ void RTFDocVisitor::visitPre(DocXRefItem *x) { filter(x->title()); } - m_t << ":}"; // end bold + m_t << ":"; m_t << "\\par" << endl; + m_t << "}"; // end bold incIndentLevel(); m_t << rtf_Style_Reset << getStyle("DescContinue"); + m_lastIsPara=FALSE; } void RTFDocVisitor::visitPost(DocXRefItem *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocXRefItem)}\n"); m_t << "\\par" << endl; decIndentLevel(); m_t << "}" << endl; // end xref item + m_lastIsPara=TRUE; } void RTFDocVisitor::visitPre(DocInternalRef *ref) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocInternalRef)}\n"); startLink("",ref->file(),ref->anchor()); } void RTFDocVisitor::visitPost(DocInternalRef *) { if (m_hide) return; + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocInternalRef)}\n"); endLink(""); m_t << " "; } void RTFDocVisitor::visitPre(DocCopy *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocCopy)}\n"); } void RTFDocVisitor::visitPost(DocCopy *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocCopy)}\n"); } void RTFDocVisitor::visitPre(DocText *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocText)}\n"); } void RTFDocVisitor::visitPost(DocText *) { + DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocText)}\n"); } static char* getMultiByte(int c) @@ -1194,6 +1339,7 @@ void RTFDocVisitor::startLink(const QString &ref,const QString &file,const QStri { m_t << "{\\b "; } + m_lastIsPara=FALSE; } void RTFDocVisitor::endLink(const QString &ref) @@ -1206,6 +1352,7 @@ void RTFDocVisitor::endLink(const QString &ref) { m_t << "}"; } + m_lastIsPara=FALSE; } void RTFDocVisitor::pushEnabled() @@ -1231,13 +1378,14 @@ void RTFDocVisitor::writeDotFile(const QString &fileName) } QString outDir = Config_getString("RTF_OUTPUT"); writeDotGraphFromFile(fileName,outDir,baseName,BITMAP); - m_t << "\\par" << endl; + if (!m_lastIsPara) m_t << "\\par" << endl; m_t << "{" << endl; - m_t << rtf_Style_Reset << endl; - m_t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; + m_t << rtf_Style_Reset; + m_t << "\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; m_t << baseName << "." << Config_getEnum("DOT_IMAGE_FORMAT"); m_t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; m_t << "}" << endl; + m_lastIsPara=TRUE; } diff --git a/src/rtfdocvisitor.h b/src/rtfdocvisitor.h index a46c14a..83c5abe 100644 --- a/src/rtfdocvisitor.h +++ b/src/rtfdocvisitor.h @@ -154,6 +154,7 @@ class RTFDocVisitor : public DocVisitor bool m_hide; int m_indentLevel; QStack<bool> m_enabled; + bool m_lastIsPara; }; #endif diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 4f024d8..17958b9 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -37,8 +37,8 @@ #include "rtfdocvisitor.h" #include "docparser.h" -//#define DBG_RTF(x) x; -#define DBG_RTF(x) +#define DBG_RTF(x) x; +//#define DBG_RTF(x) static QCString dateToRTFDateString() { @@ -1328,7 +1328,7 @@ void RTFGenerator::startTitle() void RTFGenerator::startGroupHeader() { DBG_RTF(t <<"{\\comment startGroupHeader}" << endl) - newParagraph(); + //newParagraph(); t << rtf_Style_Reset; t << rtf_Style["Heading3"]->reference; t << endl; @@ -1426,12 +1426,10 @@ void RTFGenerator::startIndent() DBG_RTF(t << "{\\comment (startIndent) }" << endl) t << "{" << endl; t << rtf_Style_Reset << rtf_CList_DepthStyle() << endl; - //styleStack.push(style); } void RTFGenerator::endIndent() { - //const char *style = /* rtf_CList_DepthStyle(); */ t << "}" << endl; decrementIndentLevel(); } @@ -1762,14 +1760,14 @@ void RTFGenerator::startCodeFragment() { DBG_RTF(t << "{\\comment (startCodeFragment) }" << endl) t << "{" << endl; - newParagraph(); + //newParagraph(); t << rtf_Style_Reset << rtf_Code_DepthStyle(); //styleStack.push(rtf_Style_CodeExample); } void RTFGenerator::endCodeFragment() { - newParagraph(); + //newParagraph(); //styleStack.pop(); //printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top()); //t << rtf_Style_Reset << styleStack.top() << endl; @@ -1967,9 +1965,9 @@ void RTFGenerator::startTextBlock(bool dense) } } -void RTFGenerator::endTextBlock() +void RTFGenerator::endTextBlock(bool paraBreak) { - newParagraph(); + if (paraBreak) newParagraph(); DBG_RTF(t << "{\\comment endTextBlock}" << endl) t << "}" << endl; //m_omitParagraph = TRUE; @@ -2448,3 +2446,27 @@ void RTFGenerator::printDoc(DocNode *n) delete visitor; } +void RTFGenerator::rtfwriteRuler_doubleline() +{ + DBG_RTF(t << "{\\comment (rtfwriteRuler_doubleline)}" << endl) + t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; +} + +void RTFGenerator::rtfwriteRuler_emboss() +{ + DBG_RTF(t << "{\\comment (rtfwriteRuler_emboss)}" << endl) + t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; +} + +void RTFGenerator::rtfwriteRuler_thick() +{ + DBG_RTF(t << "{\\comment (rtfwriteRuler_thick)}" << endl) + t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; +} + +void RTFGenerator::rtfwriteRuler_thin() +{ + DBG_RTF(t << "{\\comment (rtfwriteRuler_thin)}" << endl) + t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; +} + diff --git a/src/rtfgen.h b/src/rtfgen.h index ee4d767..8cfbed5 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -235,7 +235,7 @@ class RTFGenerator : public OutputGenerator void endMemberGroup(bool); void startTextBlock(bool dense); - void endTextBlock(); + void endTextBlock(bool); void lastIndexPage(); void startMemberDocPrefixItem() {} @@ -287,10 +287,10 @@ class RTFGenerator : public OutputGenerator void beginRTFDocument(); void beginRTFChapter(); void beginRTFSection(); - void rtfwriteRuler_doubleline() { t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; - void rtfwriteRuler_emboss() { t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; }; - void rtfwriteRuler_thick() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; }; - void rtfwriteRuler_thin() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; }; + void rtfwriteRuler_doubleline(); + void rtfwriteRuler_emboss(); + void rtfwriteRuler_thick(); + void rtfwriteRuler_thin(); void writeRTFReference(const char *label); char *getMultiByte(int c); }; diff --git a/src/rtfstyle.cpp b/src/rtfstyle.cpp index 997038f..908ac24 100644 --- a/src/rtfstyle.cpp +++ b/src/rtfstyle.cpp @@ -58,6 +58,10 @@ Rtf_Style_Default rtf_Style_Default[] = "\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ", "\\sbasedon0 \\snext0 heading 4;}{\\*\\cs10 \\additive Default Paragraph Font" }, + { "Heading5", + "\\s5\\sb90\\sa30\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ", + "\\sbasedon0 \\snext0 heading 5;}{\\*\\cs10 \\additive Default Paragraph Font" + }, { "Title", "\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid ", "\\sbasedon0 \\snext15 Title" diff --git a/src/translator_cz.h b/src/translator_cz.h index 9ccc00e..37a847b 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -18,7 +18,8 @@ #ifndef TRANSLATOR_CZ_H #define TRANSLATOR_CZ_H - +// $Id$ +// // The first translation from English to Czech was started by // Vlastimil Havran (1999--2000). The prototype version of Czech strings // with diacritics was implemented by Petr Prikryl (prikrylp@skil.cz), @@ -125,7 +126,9 @@ // 2002/10/15 - The new trEvents() and trEventDocumentation() implemented. // 2003/04/28 - Five new methods "since 1.3" implemented. // 2003/06/10 - Two new methods "since 1.3.1" implemented. -// 2003/08/13 - Four new "since 1.3.3" implemented. +// 2003/08/13 - Four new methods "since 1.3.3" implemented. +// 2004/02/26 - trLegendDocs() updated. +// 2004/02/27 - Text inside the trCallGraph() corrected. // Todo // ---- @@ -1184,8 +1187,6 @@ class TranslatorCzech : public Translator "/*! Tųķda, u které dolo k oųezįnķ grafu. Vztah dģdičnosti " "je skryt. */\n" "class Truncated : public Invisible { };\n\n" - "/* Tųķda, kterį nenķ dokumentovįna komentįųi programu doxygen. */\n" - "class Undocumented { };\n\n" "/*! Bįzovį tųķda dģdģnį veųejnģ (public inheritance). */\n" "class PublicBase : public Truncated { };\n\n" "/*! Bįzovį tųķda, pouitį pro chrįnģné dģdģnķ " @@ -1194,6 +1195,10 @@ class TranslatorCzech : public Translator "/*! Bįzovį tųķda, vyuitį pro privįtnķ dģdģnķ " "(private inheritance). */\n" "class PrivateBase { };\n\n" + "/* Tųķda, kterį nenķ dokumentovįna komentįųi programu doxygen. */\n" + "class Undocumented { };\n\n" + "/*! ablona tųķdy. */\n" + "template<class T> class Templ { };\n\n" "/*! Tųķda, kterį je vyuķvįna tųķdou Inherited. */\n" "class Used { };\n\n" "/*! Odvozenį tųķda, kterį rłznżm zpłsobem dģdķ z vķce bįzovżch " @@ -1201,7 +1206,8 @@ class TranslatorCzech : public Translator "class Inherited : public PublicBase,\n" " protected ProtectedBase,\n" " private PrivateBase,\n" - " public Undocumented\n" + " public Undocumented,\n" + " public Templ<int>\n" "{\n" " private:\n" " Used *m_usedClass;\n" @@ -1223,7 +1229,7 @@ class TranslatorCzech : public Translator "strukturu nebo tųķdu, pro kterou\n" "nejsou zobrazeny vechny vztahy dģdičnosti nebo obsaenķ. " "Graf je oųezįn v pųķpadģ, kdy jej\n" - "nenķ moné umķstit do vymezenżch hranic.\n" + "nenķ moné umķstit do vymezeného prostoru.\n" "</ul>\n" "ipky (tj. hrany grafu) majķ nįsledujķcķ vżznam:\n" "<ul>\n" @@ -1238,6 +1244,10 @@ class TranslatorCzech : public Translator "nebo kdy je pouķvįna jinou tųķdou. Je označena identifikįtorem " "jedné nebo vķce promģnżch, pųes které\n" "je tųķda nebo struktura zpųķstupnģna.\n" + "<li>lutį ipka kreslenį čįrkovanģ vyjadųuje vztah mezi instancķ ablony " + "a ablonou tųķdy, na zįkladģ které byla\n" + "instance ablony vytvoųena. V popisu ipky jsou uvedeny pųķsluné" + " parametry ablony.\n" "</ul>\n"); return decode(result); @@ -1597,7 +1607,7 @@ class TranslatorCzech : public Translator /*! Put in front of the call graph for a function. */ virtual QCString trCallGraph() { - return decode("Graf volįnķ této funkce:"); + return decode("Graf volįnķ pro tuto funkci:"); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/translator_lt.h b/src/translator_lt.h new file mode 100644 index 0000000..a965a4a --- /dev/null +++ b/src/translator_lt.h @@ -0,0 +1,1546 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2004 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. + * + */ + +/* Translation from English to Lithanian by Tomas Simonaitis, Mindaugas Radzius and Aidas Berukstis + * (haden@homelan.lt/mindaugasradzius@takas.lt/aidasber@takas.lt) + * We tried to keep meaning close to original, + * if you have any suggestions drop us an email + * ------------------------------------------- + * Project start :13.May.2k4 + * Last Doxygen version covered : 1.3.6 + * Last revision : + * +*/ + +#ifndef TRANSLATOR_LT_H +#define TRANSLATOR_LT_H + + +class TranslatorLithuanian : public Translator +{ + public: + + // --- Language control methods ------------------- + + /*! Used for identification of the language. The identification + * should not be translated. It should be replaced by the name + * of the language in English using lower-case characters only + * (e.g. "czech", "japanese", "russian", etc.). It should be equal to + * the identification used in language.cpp. + */ + virtual QCString idLanguage() + { return "lithuanian"; } + + /*! Used to get the LaTeX command(s) for the language support. + * This method should return string with commands that switch + * LaTeX to the desired language. For example + * <pre>"\\usepackage[german]{babel}\n" + * </pre> + * or + * <pre>"\\usepackage{polski}\n" + * "\\usepackage[latin2]{inputenc}\n" + * "\\usepackage[T1]{fontenc}\n" + * </pre> + * + * The English LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. + */ + virtual QCString latexLanguageSupportCommand() + { + return ""; + } + + /*! return the language charset. This will be used for the HTML output */ + virtual QCString idLanguageCharset() + { + return "iso-8859-13"; + } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + virtual QCString trRelatedFunctions() + { return "Susiję Funkcijos"; } + + /*! subscript for the related functions. */ + virtual QCString trRelatedSubscript() + { return "Atkreipkite dėmesį, čią ne metodai"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() + { return "Smulkus aprašymas"; } + + /*! header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() + { return "Tipo Aprašymo Dokumentacija"; } + + /*! header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() + { return "Išvardinimo Dokumentacija"; } + + /*! header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() + { return "Metodų Dokumentacija"; } + + /*! header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Lauko aprašymas"; + } + else + { + return "Atributų Dokumentacija"; + } + } + + /*! this is the text of a link put after brief descriptions. */ + virtual QCString trMore() + { return "Daugiau..."; } + + /*! put in the class documentation */ + virtual QCString trListOfAllMembers() + { return "Visų narių sąrašas."; } + + /*! used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() + { return "Narių sąrašas"; } + + /*! this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() + { return "Tai galutinis narių sąrašas "; } + + /*! this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() + { return ", įtraukiant visus paveldėtus narius."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + virtual QCString trGeneratedAutomatically(const char *s) + { QCString result="Automatiškai sugeneruota Doxygen įrankiu"; + if (s) result+=(QCString)" "+s; + result+=" iš programos kodo."; + return result; + } + + /*! put after an enum name in the list of all members */ + virtual QCString trEnumName() + { return "išvardinimo vardas"; } + + /*! put after an enum value in the list of all members */ + virtual QCString trEnumValue() + { return "išvardinimo reikšmė"; } + + /*! put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() + { return "apibrėžta"; } + + // 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). + */ + virtual QCString trModules() + { return "Moduliai"; } + + /*! This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() + { return "Klasių hierarchija"; } + + /*! This is put above each page as a link to the list of annotated classes */ + virtual QCString trCompoundList() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Struktūros"; + } + else + { + return "Klasės"; + } + } + + /*! This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() + { return "Failai"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + virtual QCString trHeaderFiles() + { return "Antraščių Failai"; } + + /*! This is put above each page as a link to all members of compounds. */ + virtual QCString trCompoundMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Laukai"; + } + else + { + return "Klasių Nariai"; + } + } + + /*! This is put above each page as a link to all members of files. */ + virtual QCString trFileMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Globalūs Nariai"; + } + else + { + return "Globalūs Nariai"; + } + } + + /*! This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() + { return "Susiję Puslapiai"; } + + /*! This is put above each page as a link to all examples. */ + virtual QCString trExamples() + { return "Pavyzdžiai"; } + + /*! This is put above each page as a link to the search engine. */ + virtual QCString trSearch() + { return "Paieška"; } + + /*! This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() + { return "Šis paveldėjimo sąrašas yra beveik surikiuotas " + "abėcėlės tvarka:"; + } + + /*! This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) + { + QCString result="Visų "; + if (!extractAll) result+="dokumentuotų "; + result+="failų sąrašas su trumpais aprašymais:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() + { + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų struktūros su trumpais aprašymais:"; + } + else + { + return "Klasės, struktūros, " + "sąjungos ir sąsajos su trumpais aprašymais:"; + } + } + + /*! This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Visų "; + if (!extractAll) + { + result+="dokumentuotų "; + } + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="struktūrų ir sąjungų laukų sąrašas"; + } + else + { + result+="klasių nariai"; + } + result+=" su ryšiais į "; + if (!extractAll) + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="struktūrų/sąjungų kiekvieno lauko dokumentaciją:"; + } + else + { + result+="klasės dokumentacija kiekvienam nariui:"; + } + } + else + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="struktūros/sąjungos, kurios priklauso:"; + } + else + { + result+="klasės, kurios priklauso:"; + } + } + return result; + } + + /*! This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) + { + QCString result="Sąrašas visų "; + if (!extractAll) result+="dokumentuotų "; + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="funkcijų, kintamųjų, apibrėžimų, išvardinimų, ir tipų apibrėžimų"; + } + else + { + result+="globalių narių"; + } + result+=" su ryšiais į "; + if (extractAll) + result+="failus, kuriems jie priklauso:"; + else + result+="dokumentacija:"; + return result; + } + + /*! This is an introduction to the page with the list of all header files. */ + virtual QCString trHeaderFilesDescription() + { return "Antraščių failai, kurie sudaro API:"; } + + /*! This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() + { return "Visų pavyzdžių sąrašas:"; } + + /*! This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() + { return "Visų susijusių dokumentacijos puslapių sąrašas:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() + { return "Visų modulių sąrašas:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + virtual QCString trNoDescriptionAvailable() + { return "Aprašymo nėra"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() + { return "Dokumentacija"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() + { return "Modulio Indeksas"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() + { return "Hierarchijos Indeksas"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + virtual QCString trCompoundIndex() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Struktūros Indeksas"; + } + else + { + return "Klasės Indeksas"; + } + } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() + { return "Failo Indeksas"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() + { return "Modulio Dokumentacija"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + virtual QCString trClassDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Struktūros Dokumentacija"; + } + else + { + return "Klasės Dokumentacija"; + } + } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() + { return "Failo Dokumentacija"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() + { return "Pavyzdžio Dokumentacija"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() + { return "Puslapio Dokumentacija"; } + + /*! This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() + { return "Informacinis Vadovas"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() + { return "Apibrėžimai"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() + { return "Funkcijų Prototipai"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() + { return "Tipų apibrėžimai"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() + { return "Išvardinimai"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() + { return "Funkcijos"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() + { return "Kintamieji"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() + { return "Išvardinimų reikšmės"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() + { return "Apibrėžimų Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() + { return "Funkcijų Prototipų Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() + { return "Tipų apibrėžimų Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() + { return "Išvardinimo Tipo Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return "Išvardinimo Reikšmių Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() + { return "Funkcijos Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() + { return "Kintamojo Dokumentacija"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + virtual QCString trCompounds() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų struktųros"; + } + else + { + return "Klasės"; + } + } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + virtual QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)"Sugeneruota "+date;/*FIXME*/ + if (projName) result+=(QCString)" "+projName;/*FIXME*/ + result+=(QCString)" ";/*FIXME*/ + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() + { + return "parašyta"; + } + + /*! this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) + { + return (QCString)"Paveldimumo diagrama "+clName+":"; /*FIXME*/ + } + + /*! this text is generated when the \\internal command is used. */ + virtual QCString trForInternalUseOnly() + { return "Tiktai vidiniam naudojimui."; } + + /*! this text is generated when the \\reimp command is used. */ + virtual QCString trReimplementedForInternalReasons() + { return "Reimplemented for internal reasons; the API is not affected."; }/*FIXME*/ + + /*! this text is generated when the \\warning command is used. */ + virtual QCString trWarning() + { return "Įspėjimas"; } + + /*! this text is generated when the \\bug command is used. */ + virtual QCString trBugsAndLimitations() + { return "Klaidos ir apribojimai"; } + + /*! this text is generated when the \\version command is used. */ + virtual QCString trVersion() + { return "Versija"; } + + /*! this text is generated when the \\date command is used. */ + virtual QCString trDate() + { return "Data"; } + + /*! this text is generated when the \\return command is used. */ + virtual QCString trReturns() + { return "Gražina"; } + + /*! this text is generated when the \\sa command is used. */ + virtual QCString trSeeAlso() + { return "Taip pat žiūrėti"; } + + /*! this text is generated when the \\param command is used. */ + virtual QCString trParameters() + { return "Parametrai"; } + + /*! this text is generated when the \\exception command is used. */ + virtual QCString trExceptions() + { return "Išimtys"; } + + /*! this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() + { return "Sugeneruota"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() + { return "Varų Srities Sąrašas"; } + + /*! used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Sąrašas visų "; + if (!extractAll) result+="dokumentuotų "; + result+="vardų sričių su trumpais aprašymais:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() + { return "Draugai"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() + { return "Draugiškų Ir Susijusių Funkcijų Dokumentacija"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + virtual QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName; + switch(compType) + { + case ClassDef::Class: result+=" Klasė"; break; + case ClassDef::Struct: result+=" Struktūra"; break; + case ClassDef::Union: result+=" Sąjunga"; break; + case ClassDef::Interface: result+=" Sąsaja"; break; + case ClassDef::Protocol: result+=" Protokolas"; break; + case ClassDef::Category: result+=" Kategorija"; break; + case ClassDef::Exception: result+=" Išimtis"; break; + } + if (isTemplate) result+=" Šablonas"; + return result; + } + + /*! used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) + { + QCString result=fileName; + result+=" Failo Nuoroda"; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" Vardų Srities Nuoroda"; + return result; + } + + virtual QCString trPublicMembers() + { return "Vieši Metodai"; } + virtual QCString trPublicSlots() + { return "Vieši Slotai"; } /*FIXME*/ + virtual QCString trSignals() + { return "Signalai"; } + virtual QCString trStaticPublicMembers() + { return "Statiniai Vieši Metodai"; } + virtual QCString trProtectedMembers() + { return "Apsaugoti Metodai"; } + virtual QCString trProtectedSlots() + { return "Apsaugoti Slotai"; }/*FIXME*/ + virtual QCString trStaticProtectedMembers() + { return "Statiniai Apsaugoti Metodai"; } + virtual QCString trPrivateMembers() + { return "Privatatūs Metodai"; } + virtual QCString trPrivateSlots() + { return "Privatūs Slotai"; }/*FIXME*/ + virtual QCString trStaticPrivateMembers() + { return "Statiniai Privatūs Metodai"; } + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + virtual 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+=", ir "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritsList(int numEntries) + { + return "Paveldi "+trWriteList(numEntries)+"."; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritedByList(int numEntries) + { + return "Paveldėta "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + virtual QCString trReimplementedFromList(int numEntries) + { + return "Perkrauna metodą iš "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + virtual QCString trReimplementedInList(int numEntries) + { + return "Metodas perkraunamas "+trWriteList(numEntries)+"."; + } + + /*! This is put above each page as a link to all members of namespaces. */ + virtual QCString trNamespaceMembers() + { return "Vardų Srities Nariai"; } + + /*! This is an introduction to the page with all namespace members */ + virtual QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Sąrašas visų "; + if (!extractAll) result+="dokumentuotų "; + result+="vardų srities narių su nuorodomis į "; + if (extractAll) + result+="vardų srities dokumentaciją kiekvienam nariui:"; + else + result+="vardų sritis, kurioms jos priklauso:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + virtual QCString trNamespaceIndex() + { return "Vardų Srities Indeksas"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + virtual QCString trNamespaceDocumentation() + { return "Vardų Srities Dokumentacija"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + virtual QCString trNamespaces() + { return "Vardų Sritys"; } + +////////////////////////////////////////////////////////////////////////// +// 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. + */ + virtual 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)"Dokumentacija "; + switch(compType) + { + case ClassDef::Class: result+="šiai klasei"; break; + case ClassDef::Struct: result+="šiai struktūrai"; break; + case ClassDef::Union: result+="šiai sąjungai"; break; + case ClassDef::Interface: result+="šiai sąsajai"; break; + case ClassDef::Protocol: result+="šiam protocolui"; break; + case ClassDef::Category: result+="šiai kategorijai"; break; + case ClassDef::Exception: result+="šiai išimčiai"; break; + } + result+=" sugeneruota iš "; + if (single) result+="šio failo:"; else result+="šių failų:"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + virtual QCString trAlphabeticalList() + { return "Abėcėlinis Sąrašas"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + virtual QCString trReturnValues() + { return "Gražinamos reikšmės"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + virtual QCString trMainPage() + { return "Pagrindinis Puslapis"; } + + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + virtual QCString trPageAbbreviation() + { return "psl."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trSources() + { + return "Šaltiniai";/*FIXME cia gali buti ir programos tekstai*/ + } + virtual QCString trDefinedAtLineInSourceFile() + { + return "Apibrėžimas failo @1 eilutėje @0."; + } + virtual QCString trDefinedInSourceFile() + { + return "Apibrėžimas faile @0."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trDeprecated() + { + return "Smerktina"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + virtual QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Bendradarbiavimo diagrama "+clName+":";/*FIXME*/ + } + /*! this text is put before an include dependency graph */ + virtual QCString trInclDepGraph(const char *fName) + { + return (QCString)"Įtraukimo priklausomybių diagrama "+fName+":";/*FIXME*/ + } + /*! header that is put before the list of constructor/destructors. */ + virtual QCString trConstructorDocumentation() + { + return "Konstruktoriaus ir Destruktoriaus Dokumentacija"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + virtual QCString trGotoSourceCode() + { + return "Eiti į šio failo programos kodą."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + virtual QCString trGotoDocumentation() + { + return "Eiti į šio failo dokumentaciją."; + } + /*! Text for the \\pre command */ + virtual QCString trPrecondition() + { + return "Išakstinė sąlyga"; + } + /*! Text for the \\post command */ + virtual QCString trPostcondition() + { + return "Postcondition";/*FIXME*/ + } + /*! Text for the \\invariant command */ + virtual QCString trInvariant() + { + return "Pastovus"; + } + /*! Text shown before a multi-line variable/enum initialization */ + virtual QCString trInitialValue() + { + return "Pradinė reikšmė:"; + } + /*! Text used the source code in the file index */ + virtual QCString trCode() + { + return "tekstas";/*FIXME*/ + } + virtual QCString trGraphicalHierarchy() + { + return "Grafinė Klasės Hierarchija"; + } + virtual QCString trGotoGraphicalHierarchy() + { + return "Eiti į grafinę klasės hierarchiją"; + } + virtual QCString trGotoTextualHierarchy() + { + return "Eiti į tekstinę klasės hierarchiją"; + } + virtual QCString trPageIndex() + { + return "Puslapio Indeksas"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trNote() + { + return "Pastaba"; + } + virtual QCString trPublicTypes() + { + return "Vieši Tipai"; + } + virtual QCString trPublicAttribs() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Laukai"; + } + else + { + return "Vieši Atributai"; + } + } + virtual QCString trStaticPublicAttribs() + { + return "Statiniai Vieši Atributai"; + } + virtual QCString trProtectedTypes() + { + return "Apsaugoti Tipai"; + } + virtual QCString trProtectedAttribs() + { + return "Apsaugoti Atributai"; + } + virtual QCString trStaticProtectedAttribs() + { + return "Statiniai Apsaugoti Atributai"; + } + virtual QCString trPrivateTypes() + { + return "Privatūs Tipai"; + } + virtual QCString trPrivateAttribs() + { + return "Privatūs Atributai"; + } + virtual QCString trStaticPrivateAttribs() + { + return "Statiniai Privatūs Atributai"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\todo item */ + virtual QCString trTodo() + { + return "Daryti"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Tolimesni Darbai"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trReferencedBy() + { + return "Naudojamas"; + } + virtual QCString trRemarks() + { + return "Pastabos"; + } + virtual QCString trAttention() + { + return "Attention"; + } + virtual QCString trInclByDepGraph() + { + return "Šis grafas rodo, kuris failas tiesiogiai ar " + "netiesiogiai įtraukia šį failą:"; + } + virtual QCString trSince() + { + return "Nuo"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Grafo Legenda"; + } + /*! page explaining how the dot graph's should be interpreted + * The %A in the text below are to prevent link to classes called "A". + */ + virtual QCString trLegendDocs() + { + return + "Šis puslapis paaiškina, kaip interpretuoti sugeneruotus grafus " + "su Doxygen įrankiu.<p>\n" + "Panagrinėkite pavyzdį:\n" + "\\kodo pradžia\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" + "/*! A template class */\n" + "template<class T> class Templ { };\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" + " public Templ<int>\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 240 this will result in the following graph:" + "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></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" + "which not all inheritance/containment relations are shown. %A graph is " + "truncated if it does not fit within the specified boundaries.\n" + "</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" + "<li>%A yellow dashed arrow denotes a relation between a template instance and " + "the template class it was instantiated from. The arrow is labeled with " + "the template parameters of the instance.\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "legenda"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Testas"; + } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Testo Sąrašas"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for KDE-2 IDL methods */ + virtual QCString trDCOPMethods() + { + return "DCOP Metodai"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for IDL properties */ + virtual QCString trProperties() + { + return "Savybės"; + } + /*! Used as a section header for IDL property documentation */ + virtual QCString trPropertyDocumentation() + { + return "Savybės Dokumentacija"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + virtual QCString trInterfaces() + { + return "Sąsajos"; + } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Duomenų Struktūros"; + } + else + { + return "Klasės"; + } + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Paketas "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Paketo Sąrašas"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Paketai su trumpu aprašymu:"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Paketai"; + } + /*! Used as a chapter title for Latex & RTF output */ + virtual QCString trPackageDocumentation() + { + return "Paketo Dokumentacija"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Reikšmė:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\bug item */ + virtual QCString trBug() + { + return "Klaida"; + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return "Klaidų Sąrašas"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.6 +////////////////////////////////////////////////////////////////////////// + + /*! Used as ansicpg for RTF file + * + * The following table shows the correlation of Charset name, Charset Value and + * <pre> + * Codepage number: + * Charset Name Charset Value(hex) Codepage number + * ------------------------------------------------------ + * DEFAULT_CHARSET 1 (x01) + * SYMBOL_CHARSET 2 (x02) + * OEM_CHARSET 255 (xFF) + * ANSI_CHARSET 0 (x00) 1252 + * RUSSIAN_CHARSET 204 (xCC) 1251 + * EE_CHARSET 238 (xEE) 1250 + * GREEK_CHARSET 161 (xA1) 1253 + * TURKISH_CHARSET 162 (xA2) 1254 + * BALTIC_CHARSET 186 (xBA) 1257 + * HEBREW_CHARSET 177 (xB1) 1255 + * ARABIC _CHARSET 178 (xB2) 1256 + * SHIFTJIS_CHARSET 128 (x80) 932 + * HANGEUL_CHARSET 129 (x81) 949 + * GB2313_CHARSET 134 (x86) 936 + * CHINESEBIG5_CHARSET 136 (x88) 950 + * </pre> + * + */ + virtual QCString trRTFansicp() + { + return "1252"; + } + + + /*! Used as ansicpg for RTF fcharset + * \see trRTFansicp() for a table of possible values. + */ + virtual QCString trRTFCharSet() + { + return "0"; + } + + /*! Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return "Indeksas"; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trClass(bool first_capital, bool singular) + { + QCString result((first_capital ? "Klasė" : "klasė")); + if (!singular) result+="s"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trFile(bool first_capital, bool singular) + { + QCString result((first_capital ? "Faila" : "faila")); + if (!singular) result+="i"; + else result+="s"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trNamespace(bool first_capital, bool singular) + { + QCString result((first_capital ? "Vardų srit" : "vardų srit")); + if (!singular) result+="ys"; + else result+="is"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGroup(bool first_capital, bool singular) + { + QCString result((first_capital ? "Grupė" : "grupė")); + if (!singular) result+="s"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trPage(bool first_capital, bool singular) + { + QCString result((first_capital ? "Puslapi" : "puslapi")); + if (!singular) result+="ai"; + else result+="s"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trMember(bool first_capital, bool singular) + { + QCString result((first_capital ? "Nar" : "nar")); + if (!singular) result+="iai"; + else result+="ys"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trField(bool first_capital, bool singular) + { + QCString result((first_capital ? "Lauka" : "lauka")); + if (!singular) result+="i"; + else result+="s"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGlobal(bool first_capital, bool singular) + { + QCString result((first_capital ? "Global" : "global")); + if (!singular) result+="ūs"; + else result+="us"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.7 +////////////////////////////////////////////////////////////////////////// + + /*! This text is generated when the \\author command is used and + * for the author section in man pages. */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + QCString result((first_capital ? "Autori" : "autori")); + if (!singular) result+="ai"; + else result+="us"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Ryšiai"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.13 +////////////////////////////////////////////////////////////////////////// + + /*! used in member documentation blocks to produce a list of + * members that are implemented by this one. + */ + virtual QCString trImplementedFromList(int numEntries) + { + return "Realizuoja "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all members that implement this abstract member. + */ + virtual QCString trImplementedInList(int numEntries) + { + return "Realizuota "+trWriteList(numEntries)+"."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Turinys"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.17 +////////////////////////////////////////////////////////////////////////// + + /*! Used as the header of the list of item that have been + * flagged deprecated + */ + virtual QCString trDeprecatedList() + { + return "Smerktinumų Sąrašas"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + return "Įvykiai"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + return "Įvykio Dokumentacija"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a heading for a list of Java class types with package scope. + */ + virtual QCString trPackageTypes() + { + return "Paketo Tipai"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + return "Paketo Funkcijos"; + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + return "Statinės Paketo Funkcijos"; + } + /*! Used as a heading for a list of Java class variables with package + * scope. + */ + virtual QCString trPackageAttribs() + { + return "Paketo Atributai"; + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + return "Statiniai Paketo Atributai"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 "Visi"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Funkcijos kvietimo grafas:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.3 +////////////////////////////////////////////////////////////////////////// + + /*! When the search engine is enabled this text is put in the header + * of each page before the field where one can enter the text to search + * for. + */ + virtual QCString trSearchForIndex() + { + return "Ieškoti"; + } + /*! This string is used as the title for the page listing the search + * results. + */ + virtual QCString trSearchResultsTitle() + { + return "Paieškos Rezultatai"; + } + /*! This string is put just before listing the search results. The + * text can be different depending on the number of documents found. + * Inside the text you can put the special marker $num to insert + * the number representing the actual number of search results. + * The @a numDocuments parameter can be either 0, 1 or 2, where the + * value 2 represents 2 or more matches. HTML markup is allowed inside + * the returned string. + */ + virtual QCString trSearchResults(int numDocuments) + { + if (numDocuments==0) + { + return "Atsiprašome, jokių dokumentų nerasta pagal Jūsų užklausą."; + } + else if (numDocuments==1) + { + return "Surasta <b>1</b> dokumentas, atitinkantis Jūsų užklausą."; + } + else + { + return "Surasti <b>$num</b> dokumentų, atitinkančių Jūsų užklausą. " + "Pirmiausiai rodomi labiausiai tenkinantys užklausą."; + } + } + /*! This string is put before the list of matched words, for each search + * result. What follows is the list of words that matched the query. + */ + virtual QCString trSearchMatches() + { + return "Atitikmenys:"; + } + +}; + +#endif diff --git a/src/translator_ru.h b/src/translator_ru.h index db45e08..5f8ac1d 100644 --- a/src/translator_ru.h +++ b/src/translator_ru.h @@ -638,7 +638,7 @@ class TranslatorRussian : public Translator * related classes */ virtual QCString trRelatedFunctionDocumentation() - { return decode("äĻĖÕĶÅĪŌĮĆÉŃ ŠĻ ÄŅÕŚŲŃĶ ĖĢĮÓÓĮ É ĘÕĪĖĆÉŃĶ ĻŌĪĻĪĻÓŃŻÉČÓŃ" + { return decode("äĻĖÕĶÅĪŌĮĆÉŃ ŠĻ ÄŅÕŚŲŃĶ ĖĢĮÓÓĮ É ĘÕĪĖĆÉŃĶ ĻŌĪĻĪĻÓŃŻÉĶÓŃ" " Ė ĖĢĮÓÓÕ"); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/util.cpp b/src/util.cpp index ca30377..e223da2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -60,7 +60,16 @@ extern char **environ; //------------------------------------------------------------------------ -static QCache<ClassDef*> g_lookupCache(20000,20000); +struct LookupInfo +{ + LookupInfo(ClassDef *cd=0,MemberDef *td=0,QCString ts="") + : classDef(cd), typeDef(td), templSpec(ts) {} + ClassDef *classDef; + MemberDef *typeDef; + QCString templSpec; +}; + +static QCache<LookupInfo> g_lookupCache(20000,20000); // object that automatically initializes the cache at startup class CacheInitializer @@ -448,7 +457,6 @@ int guessSection(const char *name) return 0; } -// TODO: remove this! QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, Definition **typedefContext) { @@ -639,6 +647,7 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe } type=type.stripWhiteSpace(); // strip leading and trailing whitespace ClassDef *result = getResolvedClassRec(md->getOuterScope(),fileScope,type,0,0); + //printf("type=%s result=%p\n",type.data(),result); if (result==0) { // try unspecialized version if type is template @@ -1025,16 +1034,21 @@ ClassDef *getResolvedClassRec(Definition *scope, // scope, the name to search for and the explicit scope prefix. The speedup // achieved by this simple cache can be enormous. QCString key=scope->name()+"+"+name+"+"+explicitScopePart; - ClassDef **pval=g_lookupCache.find(key); + LookupInfo *pval=g_lookupCache.find(key); //printf("Searching for %s result=%p\n",key.data(),pval); if (pval) { - return *pval; + if (pTemplSpec) *pTemplSpec=pval->templSpec; + if (pTypeDef) *pTypeDef=pval->typeDef; + //printf("] cachedMatch=%s\n", + // pval->classDef?pval->classDef->name().data():"<none>"); + //if (pTemplSpec) printf("templSpec=%s\n",pTemplSpec->data()); + return pval->classDef; } else // not found yet; we already add a 0 to avoid the possibility of // endless recursion. { - g_lookupCache.insert(key,new ClassDef*(0)); + g_lookupCache.insert(key,new LookupInfo); } ClassDef *bestMatch=0; @@ -1114,14 +1128,17 @@ ClassDef *getResolvedClassRec(Definition *scope, pval=g_lookupCache.find(key); if (pval) { - *pval=bestMatch; + pval->classDef = bestMatch; + pval->typeDef = bestTypedef; + pval->templSpec = bestTemplSpec; } else { - g_lookupCache.insert(key,new ClassDef*(bestMatch)); + g_lookupCache.insert(key,new LookupInfo(bestMatch,bestTypedef,bestTemplSpec)); } //printf("] bestMatch=%s distance=%d\n", // bestMatch?bestMatch->name().data():"<none>",minDistance); + //if (pTemplSpec) printf("templSpec=%s\n",pTemplSpec->data()); return bestMatch; } |