Commit ab254316 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.6.1

parent 2e1a3702
DOXYGEN Version 1.6.0 DOXYGEN Version 1.6.1
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (20 August 2009) Dimitri van Heesch (25 August 2009)
...@@ -105,7 +105,6 @@ rpm: dist ...@@ -105,7 +105,6 @@ rpm: dist
mkdir $(DISTDIR)/packages mkdir $(DISTDIR)/packages
mkdir $(DISTDIR)/packages/rpm mkdir $(DISTDIR)/packages/rpm
cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR) rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar gzip -9v $(DISTDIR).src.tar
rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
......
DOXYGEN Version 1.6.0 DOXYGEN Version 1.6.1
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (20 August 2009) Dimitri van Heesch (dimitri@stack.nl) (25 August 2009)
...@@ -568,17 +568,17 @@ void Step3::setHtmlOptions(int id) ...@@ -568,17 +568,17 @@ void Step3::setHtmlOptions(int id)
if (id==0) // plain HTML if (id==0) // plain HTML
{ {
updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,false); updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,false);
updateStringOption(m_modelData,STR_GENERATE_TREEVIEW,QString::fromAscii("NONE")); updateBoolOption(m_modelData,STR_GENERATE_TREEVIEW,false);
} }
else if (id==1) // with navigation tree else if (id==1) // with navigation tree
{ {
updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,false); updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,false);
updateStringOption(m_modelData,STR_GENERATE_TREEVIEW,QString::fromAscii("ALL")); updateBoolOption(m_modelData,STR_GENERATE_TREEVIEW,true);
} }
else if (id==2) // with compiled help else if (id==2) // with compiled help
{ {
updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,true); updateBoolOption(m_modelData,STR_GENERATE_HTMLHELP,true);
updateStringOption(m_modelData,STR_GENERATE_TREEVIEW,QString::fromAscii("NONE")); updateBoolOption(m_modelData,STR_GENERATE_TREEVIEW,false);
} }
} }
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
doxygen_version_major=1 doxygen_version_major=1
doxygen_version_minor=6 doxygen_version_minor=6
doxygen_version_revision=0 doxygen_version_revision=1
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=NO doxygen_version_mmn=NO
......
...@@ -1508,7 +1508,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" ...@@ -1508,7 +1508,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
\addindex GENERATE_TREEVIEW \addindex GENERATE_TREEVIEW
The GENERATE_TREEVIEW tag is used to specify whether a tree-like index The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
structure should be generated to display hierarchical information. structure should be generated to display hierarchical information.
If the tag value is set to FRAME, a side panel will be generated If the tag value is set to YES, a side panel will be generated
containing a tree-like index structure (just like the one that containing a tree-like index structure (just like the one that
is generated for HTML Help). For this to work a browser that supports is generated for HTML Help). For this to work a browser that supports
JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
......
...@@ -9,6 +9,14 @@ all XML comments starting with '*' or '!'. An additional '<' can be ...@@ -9,6 +9,14 @@ all XML comments starting with '*' or '!'. An additional '<' can be
used to assign the documentation string to the previous entity instead used to assign the documentation string to the previous entity instead
of the one following the comment. of the one following the comment.
Note that before the parsing of DBus XML file works one has to
assign the .xml extension to the DBus XML parser using the
following configuration option:
\verbatim
EXTENSION_MAPPING = xml=dbusxml
\endverbatim
\section dbusxml_supported Supported XML elements and attributes \section dbusxml_supported Supported XML elements and attributes
<p>The following DBus XML elemets can be annotated: <p>The following DBus XML elemets can be annotated:
......
This diff is collapsed.
This diff is collapsed.
...@@ -14,7 +14,7 @@ URL: http://www.stack.nl/~dimitri/doxygen/index.html ...@@ -14,7 +14,7 @@ URL: http://www.stack.nl/~dimitri/doxygen/index.html
Vendor: Dimitri van Heesch Vendor: Dimitri van Heesch
License: GNU General Public License License: GNU General Public License
Group: Development/Tools Group: Development/Tools
Source: %{name}-%{version}_%{revision}.src.tar.gz Source: %{name}-%{version}.src.tar.gz
BuildRoot: %{buildroot} BuildRoot: %{buildroot}
BuildPrereq: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips, /usr/bin/gs BuildPrereq: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips, /usr/bin/gs
Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96 Prereq: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96
...@@ -48,7 +48,7 @@ install. ...@@ -48,7 +48,7 @@ install.
%endif %endif
%prep %prep
%setup -q -n %{name}-%{version}_%{revision} %setup -q -n %{name}-%{version}
./configure %{?_with_doxywizard} --prefix $RPM_BUILD_ROOT/usr ./configure %{?_with_doxywizard} --prefix $RPM_BUILD_ROOT/usr
%build %build
......
...@@ -1021,7 +1021,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" ...@@ -1021,7 +1021,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
<Comment>^{B}*"."{B}*/\n { // explicit end autolist: e.g " ." <Comment>^{B}*"."{B}*/\n { // explicit end autolist: e.g " ."
addOutput(yytext); addOutput(yytext);
} }
<Comment>"."[a-z_A-Z0-9] { // . at start or in the middle of a word <Comment>("."+)[a-z_A-Z0-9] { // . at start or in the middle of a word, or ellipsis
addOutput(yytext); addOutput(yytext);
} }
<Comment>".\\"[ \t] { // . with escaped space. <Comment>".\\"[ \t] { // . with escaped space.
...@@ -2626,6 +2626,7 @@ static void groupAddDocs(Entry *e,const char *fileName) ...@@ -2626,6 +2626,7 @@ static void groupAddDocs(Entry *e,const char *fileName)
{ {
info->doc = g_memberGroupDocs; info->doc = g_memberGroupDocs;
info->docFile = fileName; info->docFile = fileName;
info->setRefItems(e->sli);
} }
e->doc.resize(0); e->doc.resize(0);
e->brief.resize(0); e->brief.resize(0);
......
...@@ -449,6 +449,11 @@ The appearance of the initializer of individual variables and defines in the ...@@ -449,6 +449,11 @@ The appearance of the initializer of individual variables and defines in the
documentation can be controlled using \showinitializer or \hideinitializer documentation can be controlled using \showinitializer or \hideinitializer
command in the documentation regardless of this setting. command in the documentation regardless of this setting.
' minval='0' maxval='10000' defval='30'/> ' minval='0' maxval='10000' defval='30'/>
<option type='bool' id='SHOW_USED_FILES' docs='
Set the SHOW_USED_FILES tag to NO to disable the list of files generated
at the bottom of the documentation of classes and structs. If set to YES the
list will mention the files that were used to generate the documentation.
' defval='1'/>
<option type='bool' id='SHOW_DIRECTORIES' docs=' <option type='bool' id='SHOW_DIRECTORIES' docs='
If the sources in your project are distributed over multiple directories If the sources in your project are distributed over multiple directories
then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
...@@ -884,7 +889,7 @@ that doxygen will group on one line in the generated HTML documentation. ...@@ -884,7 +889,7 @@ that doxygen will group on one line in the generated HTML documentation.
<option type='bool' id='GENERATE_TREEVIEW' defval='0' docs=' <option type='bool' id='GENERATE_TREEVIEW' defval='0' docs='
The GENERATE_TREEVIEW tag is used to specify whether a tree-like index The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
structure should be generated to display hierarchical information. structure should be generated to display hierarchical information.
If the tag value is set to FRAME, a side panel will be generated If the tag value is set to YES, a side panel will be generated
containing a tree-like index structure (just like the one that containing a tree-like index structure (just like the one that
is generated for HTML Help). For this to work a browser that supports is generated for HTML Help). For this to work a browser that supports
JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
...@@ -1374,7 +1379,6 @@ If the DOT_CLEANUP tag is set to YES (the default) Doxygen will ...@@ -1374,7 +1379,6 @@ If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
remove the intermediate dot files that are used to generate remove the intermediate dot files that are used to generate
the various graphs. the various graphs.
' defval='1' depends='HAVE_DOT'/> ' defval='1' depends='HAVE_DOT'/>
<option type='obsolete' id='SHOW_USED_FILES'/>
<option type='obsolete' id='USE_WINDOWS_ENCODING'/> <option type='obsolete' id='USE_WINDOWS_ENCODING'/>
<option type='obsolete' id='DETAILS_AT_TOP'/> <option type='obsolete' id='DETAILS_AT_TOP'/>
<option type='obsolete' id='QTHELP_FILE'/> <option type='obsolete' id='QTHELP_FILE'/>
......
...@@ -635,6 +635,14 @@ void addConfigOptions(Config *cfg) ...@@ -635,6 +635,14 @@ void addConfigOptions(Config *cfg)
0,10000,30 0,10000,30
); );
//---- //----
cb = cfg->addBool(
"SHOW_USED_FILES",
"Set the SHOW_USED_FILES tag to NO to disable the list of files generated\n"
"at the bottom of the documentation of classes and structs. If set to YES the\n"
"list will mention the files that were used to generate the documentation.",
TRUE
);
//----
cb = cfg->addBool( cb = cfg->addBool(
"SHOW_DIRECTORIES", "SHOW_DIRECTORIES",
"If the sources in your project are distributed over multiple directories\n" "If the sources in your project are distributed over multiple directories\n"
...@@ -1293,7 +1301,7 @@ void addConfigOptions(Config *cfg) ...@@ -1293,7 +1301,7 @@ void addConfigOptions(Config *cfg)
"GENERATE_TREEVIEW", "GENERATE_TREEVIEW",
"The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n" "The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n"
"structure should be generated to display hierarchical information.\n" "structure should be generated to display hierarchical information.\n"
"If the tag value is set to FRAME, a side panel will be generated\n" "If the tag value is set to YES, a side panel will be generated\n"
"containing a tree-like index structure (just like the one that\n" "containing a tree-like index structure (just like the one that\n"
"is generated for HTML Help). For this to work a browser that supports\n" "is generated for HTML Help). For this to work a browser that supports\n"
"JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).\n" "JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).\n"
...@@ -2089,8 +2097,6 @@ void addConfigOptions(Config *cfg) ...@@ -2089,8 +2097,6 @@ void addConfigOptions(Config *cfg)
); );
cb->addDependency("HAVE_DOT"); cb->addDependency("HAVE_DOT");
//---- //----
cfg->addObsolete("SHOW_USED_FILES");
//----
cfg->addObsolete("USE_WINDOWS_ENCODING"); cfg->addObsolete("USE_WINDOWS_ENCODING");
//---- //----
cfg->addObsolete("DETAILS_AT_TOP"); cfg->addObsolete("DETAILS_AT_TOP");
......
...@@ -354,6 +354,7 @@ public: ...@@ -354,6 +354,7 @@ public:
// Interface: // Interface:
if (DBUS("interface")) if (DBUS("interface"))
{ {
CONDITION(m_currentInterface, "end of interface found without start.");
m_currentInterface->endBodyLine = lineNumber(); m_currentInterface->endBodyLine = lineNumber();
closeScopes(); closeScopes();
m_currentInterface = 0; m_currentInterface = 0;
...@@ -361,6 +362,8 @@ public: ...@@ -361,6 +362,8 @@ public:
if (DBUS("method") || DBUS("signal")) if (DBUS("method") || DBUS("signal"))
{ {
CONDITION(m_currentMethod, "end of method found without start.");
CONDITION(m_currentInterface, "end of method found outside interface.");
m_currentMethod->endBodyLine = lineNumber(); m_currentMethod->endBodyLine = lineNumber();
m_currentInterface->addSubEntry(m_currentMethod); m_currentInterface->addSubEntry(m_currentMethod);
m_currentMethod = 0; m_currentMethod = 0;
...@@ -368,6 +371,8 @@ public: ...@@ -368,6 +371,8 @@ public:
if (DBUS("property")) if (DBUS("property"))
{ {
CONDITION(m_currentMethod, "end of property found without start.");
CONDITION(m_currentInterface, "end of property found outside interface.");
m_currentProperty->endBodyLine = lineNumber(); m_currentProperty->endBodyLine = lineNumber();
m_currentInterface->addSubEntry(m_currentProperty); m_currentInterface->addSubEntry(m_currentProperty);
m_currentProperty = 0; m_currentProperty = 0;
...@@ -375,6 +380,7 @@ public: ...@@ -375,6 +380,7 @@ public:
if (DBUS("arg")) if (DBUS("arg"))
{ {
CONDITION(m_currentMethod, "end of arg found outside method.");
m_currentMethod->argList->append(m_currentArgument); m_currentMethod->argList->append(m_currentArgument);
m_currentArgument = 0; m_currentArgument = 0;
} }
...@@ -382,6 +388,7 @@ public: ...@@ -382,6 +388,7 @@ public:
if (EXTENSION("namespace")) if (EXTENSION("namespace"))
{ {
Entry * current = m_namespaceStack.last(); Entry * current = m_namespaceStack.last();
CONDITION(current, "end of namespace without start.");
m_namespaceStack.removeLast(); m_namespaceStack.removeLast();
current->endBodyLine = lineNumber(); current->endBodyLine = lineNumber();
...@@ -391,6 +398,7 @@ public: ...@@ -391,6 +398,7 @@ public:
if (EXTENSION("struct")) if (EXTENSION("struct"))
{ {
StructData * data = m_structStack.last(); StructData * data = m_structStack.last();
CONDITION(data, "end of struct without start.");
data->entry->endBodyLine = lineNumber(); data->entry->endBodyLine = lineNumber();
...@@ -408,11 +416,14 @@ public: ...@@ -408,11 +416,14 @@ public:
if (EXTENSION("member")) if (EXTENSION("member"))
{ {
m_structStack.last()->entry->addSubEntry(m_currentEntry); StructData * data = m_structStack.last();
CONDITION(data, "end of struct without start");
data->entry->addSubEntry(m_currentEntry);
} }
if (EXTENSION("enum") || EXTENSION("flagset")) if (EXTENSION("enum") || EXTENSION("flagset"))
{ {
CONDITION(m_currentEnum, "end of enum without start");
m_currentEnum->endBodyLine = lineNumber(); m_currentEnum->endBodyLine = lineNumber();
closeScopes(); closeScopes();
...@@ -421,6 +432,7 @@ public: ...@@ -421,6 +432,7 @@ public:
if (EXTENSION("value")) if (EXTENSION("value"))
{ {
CONDITION(m_currentEntry, "end of value without start");
m_currentEntry->endBodyLine = lineNumber(); m_currentEntry->endBodyLine = lineNumber();
m_currentEnum->addSubEntry(m_currentEntry); m_currentEnum->addSubEntry(m_currentEntry);
...@@ -847,7 +859,8 @@ void DBusXMLScanner::parseInput(const char * fileName, ...@@ -847,7 +859,8 @@ void DBusXMLScanner::parseInput(const char * fileName,
reader.parse(inputSource); reader.parse(inputSource);
if (handler.errorString()) if (handler.errorString())
{ err("ERROR parsing XML: %s\n", handler.errorString().utf8().data()); } { err("DBus XML Parser: Error at line %d: %s\n",
handler.locator()->lineNumber(),handler.errorString().utf8().data()); }
groupLeaveFile(fileName, 1); groupLeaveFile(fileName, 1);
} }
......
...@@ -702,10 +702,12 @@ void DirRelation::writeDocumentation(OutputList &ol) ...@@ -702,10 +702,12 @@ void DirRelation::writeDocumentation(OutputList &ol)
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
QCString shortTitle=m_src->shortName()+" &rarr; "+ QCString shortTitle=theTranslator->trDirRelation(
m_dst->dir()->shortName()+" Relation";//theTranslator->trDirRelation(m_shortName); m_src->shortName()+" &rarr; "+
QCString title=m_src->displayName()+" -> "+ m_dst->dir()->shortName());
m_dst->dir()->shortName()+" Relation";//theTranslator->trDirRelation(m_dispName); QCString title=theTranslator->trDirRelation(
m_src->displayName()+" -> "+
m_dst->dir()->shortName());
startFile(ol,getOutputFileBase(),getOutputFileBase(),title); startFile(ol,getOutputFileBase(),getOutputFileBase(),title);
// write navigation path // write navigation path
......
...@@ -725,7 +725,7 @@ REFWORD ("#"|"::")?({ID}{TEMPLPART}?("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCA ...@@ -725,7 +725,7 @@ REFWORD ("#"|"::")?({ID}{TEMPLPART}?("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCA
unput(' '); unput(' ');
return 0; return 0;
} }
<St_Ref>{WS}+"\"" { // white space following by quoted string <St_Ref>{WS}+"\""{WS}* { // white space following by quoted string
BEGIN(St_Ref2); BEGIN(St_Ref2);
} }
<St_Ref>\n { // new line <St_Ref>\n { // new line
......
...@@ -6330,6 +6330,7 @@ static void findEnums(EntryNav *rootNav) ...@@ -6330,6 +6330,7 @@ static void findEnums(EntryNav *rootNav)
md->setMemberGroupId(root->mGrpId); md->setMemberGroupId(root->mGrpId);
md->enableCallGraph(root->callGraph); md->enableCallGraph(root->callGraph);
md->enableCallerGraph(root->callerGraph); md->enableCallerGraph(root->callerGraph);
//printf("%s::setRefItems(%d)\n",md->name().data(),root->sli?root->sli->count():-1);
md->setRefItems(root->sli); md->setRefItems(root->sli);
//printf("found enum %s nd=%p\n",name.data(),nd); //printf("found enum %s nd=%p\n",name.data(),nd);
bool defSet=FALSE; bool defSet=FALSE;
...@@ -6757,6 +6758,7 @@ static void findEnumDocumentation(EntryNav *rootNav) ...@@ -6757,6 +6758,7 @@ static void findEnumDocumentation(EntryNav *rootNav)
} }
md->addSectionsToDefinition(root->anchors); md->addSectionsToDefinition(root->anchors);
md->setRefItems(root->sli);
GroupDef *gd=md->getGroupDef(); GroupDef *gd=md->getGroupDef();
if (gd==0 &&root->groups->first()!=0) // member not grouped but out-of-line documentation is if (gd==0 &&root->groups->first()!=0) // member not grouped but out-of-line documentation is
......
...@@ -590,7 +590,7 @@ void FTVHelp::generateTreeView(QString* OutString) ...@@ -590,7 +590,7 @@ void FTVHelp::generateTreeView(QString* OutString)
//t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n"; //t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n";
t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n"; t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n"; t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n";
t << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>\n"; t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n";
t << "<title>"; t << "<title>";
if (Config_getString("PROJECT_NAME").isEmpty()) if (Config_getString("PROJECT_NAME").isEmpty())
{ {
......
...@@ -672,7 +672,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title, ...@@ -672,7 +672,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
// t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"; // t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n" t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>\n" "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n"
"<title>"; "<title>";
t << convertToHtml(title); t << convertToHtml(title);
t << "</title>\n"; t << "</title>\n";
......
...@@ -2523,6 +2523,7 @@ void writeSearchIndex() ...@@ -2523,6 +2523,7 @@ void writeSearchIndex()
t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"" t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\""
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl; " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl;
t << "<html><head><title></title>" << endl; t << "<html><head><title></title>" << endl;
t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>" << endl;
t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl; t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl;
t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl; t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl;
t << "</head>" << endl; t << "</head>" << endl;
...@@ -2552,17 +2553,30 @@ void writeSearchIndex() ...@@ -2552,17 +2553,30 @@ void writeSearchIndex()
<< "return searchResults.Nav(event," << itemCount << ")\" " << "return searchResults.Nav(event," << itemCount << ")\" "
<< "onkeyup=\"" << "onkeyup=\""
<< "return searchResults.Nav(event," << itemCount << ")\" " << "return searchResults.Nav(event," << itemCount << ")\" "
<< "class=\"SRSymbol\" href=\"../" << "class=\"SRSymbol\" ";
<< d->getOutputFileBase() << Doxygen::htmlFileExtension; if (!d->getReference().isEmpty())
{
QCString *dest;
t << "doxygen=\"" << d->getReference() << ":../";
if ((dest=Doxygen::tagDestinationDict[d->getReference()])) t << *dest << "/";
t << "\" ";
t << "href=\"../";
if ((dest=Doxygen::tagDestinationDict[d->getReference()])) t << *dest << "/";
}
else
{
t << "href=\"../";
}
t << d->getOutputFileBase() << Doxygen::htmlFileExtension;
if (isMemberDef) if (isMemberDef)
{ {
t << "#" << ((MemberDef *)d)->anchor(); t << "#" << ((MemberDef *)d)->anchor();
} }
t << "\" target=\""; t << "\" target=\"";
if (treeView) t << "basefrm"; else t << "_parent"; if (treeView) t << "basefrm"; else t << "_parent";
t << "\">" t << "\">";
<< convertToXML(d->localName()) t << convertToXML(d->localName());
<< "</a>" << endl; t << "</a>" << endl;
if (d->getOuterScope()!=Doxygen::globalScope) if (d->getOuterScope()!=Doxygen::globalScope)
{ {
t << " <span class=\"SRScope\">" t << " <span class=\"SRScope\">"
...@@ -2622,8 +2636,21 @@ void writeSearchIndex() ...@@ -2622,8 +2636,21 @@ void writeSearchIndex()
<< "onkeyup=\"" << "onkeyup=\""
<< "return searchResults.NavChild(event," << "return searchResults.NavChild(event,"
<< itemCount << "," << childCount << ")\" " << itemCount << "," << childCount << ")\" "
<< "class=\"SRScope\" href=\"../" << << "class=\"SRScope\" ";
d->getOutputFileBase() << Doxygen::htmlFileExtension; if (!d->getReference().isEmpty())
{
QCString *dest;
t << "doxygen=\"" << d->getReference() << ":../";
if ((dest=Doxygen::tagDestinationDict[d->getReference()])) t << *dest << "/";
t << "\" ";
t << "href=\"../";
if ((dest=Doxygen::tagDestinationDict[d->getReference()])) t << *dest << "/";
}
else
{
t << "href=\"../";
}
t << d->getOutputFileBase() << Doxygen::htmlFileExtension;
if (isMemberDef) if (isMemberDef)
{ {
t << "#" << ((MemberDef *)d)->anchor(); t << "#" << ((MemberDef *)d)->anchor();
...@@ -2791,6 +2818,7 @@ void writeSearchIndex() ...@@ -2791,6 +2818,7 @@ void writeSearchIndex()
t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl; "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" << endl;
t << "<html><head><title></title>" << endl; t << "<html><head><title></title>" << endl;
t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>" << endl;
t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl; t << "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>" << endl;
t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl; t << "<script type=\"text/javascript\" src=\"search.js\"></script>" << endl;
t << "</head>" << endl; t << "</head>" << endl;
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#include "doxygen.h" #include "doxygen.h"
#include "docparser.h" #include "docparser.h"
#include "marshal.h" #include "marshal.h"
#include "entry.h"
#include "md5.h"
//static QCString idToName(int id) //static QCString idToName(int id)
//{ //{
...@@ -55,6 +57,8 @@ MemberGroup::MemberGroup(Definition *parent, ...@@ -55,6 +57,8 @@ MemberGroup::MemberGroup(Definition *parent,
m_numDocMembers = -1; m_numDocMembers = -1;
m_parent = parent; m_parent = parent;
m_docFile = docFile; m_docFile = docFile;
m_xrefListItems = 0;
doc.prepend("<a name=\""+anchor()+"\"></a>");
//printf("Member group docs=`%s'\n",doc.data()); //printf("Member group docs=`%s'\n",doc.data());
} }
...@@ -255,9 +259,23 @@ void MemberGroup::setInGroup(bool b) ...@@ -255,9 +259,23 @@ void MemberGroup::setInGroup(bool b)
memberList->setInGroup(b); memberList->setInGroup(b);
} }
QCString MemberGroup::anchor() const
{
uchar md5_sig[16];
QCString sigStr(33);
MD5Buffer((const unsigned char *)grpHeader.data(),grpHeader.length(),md5_sig);
MD5SigToString(md5_sig,sigStr.data(),33);
return "amgrp"+sigStr;
}
void MemberGroup::addListReferences(Definition *def) void MemberGroup::addListReferences(Definition *def)
{ {
memberList->addListReferences(def); memberList->addListReferences(def);
if (m_xrefListItems && def)
{
addRefItem(m_xrefListItems,theTranslator->trGroup(TRUE,TRUE),
def->getOutputFileBase()+"#"+anchor(),grpHeader,0);
}
} }
void MemberGroup::findSectionsInDocumentation() void MemberGroup::findSectionsInDocumentation()
...@@ -280,6 +298,7 @@ void MemberGroup::marshal(StorageIntf *s) ...@@ -280,6 +298,7 @@ void MemberGroup::marshal(StorageIntf *s)
marshalInt(s,m_numDocMembers); marshalInt(s,m_numDocMembers);
marshalObjPointer(s,m_parent); marshalObjPointer(s,m_parent);
marshalQCString(s,m_docFile); marshalQCString(s,m_docFile);
marshalItemInfoList (Doxygen::symbolStorage,m_xrefListItems);
} }
void MemberGroup::unmarshal(StorageIntf *s) void MemberGroup::unmarshal(StorageIntf *s)
...@@ -296,5 +315,41 @@ void MemberGroup::unmarshal(StorageIntf *s) ...@@ -296,5 +315,41 @@ void MemberGroup::unmarshal(StorageIntf *s)
m_numDocMembers = unmarshalInt(s); m_numDocMembers = unmarshalInt(s);
m_parent = (Definition *)unmarshalObjPointer(s); m_parent = (Definition *)unmarshalObjPointer(s);
m_docFile = unmarshalQCString(s); m_docFile = unmarshalQCString(s);
m_xrefListItems = unmarshalItemInfoList (Doxygen::symbolStorage);
}
void MemberGroup::setRefItems(const QList<ListItemInfo> *sli)
{
if (sli)
{
// deep copy the list
if (m_xrefListItems==0)
{
m_xrefListItems=new QList<ListItemInfo>;
m_xrefListItems->setAutoDelete(TRUE);
}
QListIterator<ListItemInfo> slii(*sli);
ListItemInfo *lii;
for (slii.toFirst();(lii=slii.current());++slii)
{
m_xrefListItems->append(new ListItemInfo(*lii));
}
}
} }
//--------------------------------------------------------------------------
void MemberGroupInfo::setRefItems(const QList<ListItemInfo> *sli)
{
if (!sli) return;
if (m_sli==0)
{
m_sli = new QList<ListItemInfo>;
m_sli->setAutoDelete(TRUE);
}
QListIterator<ListItemInfo> slii(*sli);
ListItemInfo *ili;
for (slii.toFirst();(ili=slii.current());++slii)
{
m_sli->append(new ListItemInfo(*ili));
}
}
...@@ -34,6 +34,7 @@ class GroupDef; ...@@ -34,6 +34,7 @@ class GroupDef;
class OutputList; class OutputList;
class Definition; class Definition;
class StorageIntf; class StorageIntf;
struct ListItemInfo;
class MemberGroup class MemberGroup
{ {
...@@ -74,8 +75,10 @@ class MemberGroup ...@@ -74,8 +75,10 @@ class MemberGroup
int numDocMembers() const; int numDocMembers() const;
void setInGroup(bool b); void setInGroup(bool b);
void addListReferences(Definition *d); void addListReferences(Definition *d);
void setRefItems(const QList<ListItemInfo> *sli);
MemberList *members() const { return memberList; } MemberList *members() const { return memberList; }
Definition *parent() const { return m_parent; } Definition *parent() const { return m_parent; }
QCString anchor() const;
void marshal(StorageIntf *s); void marshal(StorageIntf *s);
void unmarshal(StorageIntf *s); void unmarshal(StorageIntf *s);
...@@ -93,6 +96,7 @@ class MemberGroup ...@@ -93,6 +96,7 @@ class MemberGroup
int m_numDocMembers; int m_numDocMembers;
Definition *m_parent; Definition *m_parent;
QCString m_docFile; QCString m_docFile;
QList<ListItemInfo> *m_xrefListItems;
}; };
class MemberGroupList : public QList<MemberGroup> class MemberGroupList : public QList<MemberGroup>
...@@ -113,12 +117,17 @@ class MemberGroupSDict : public SIntDict<MemberGroup> ...@@ -113,12 +117,17 @@ class MemberGroupSDict : public SIntDict<MemberGroup>
~MemberGroupSDict() {} ~MemberGroupSDict() {}
}; };
struct MemberGroupInfo struct MemberGroupInfo
{ {
MemberGroupInfo() : m_sli(0) {}
~MemberGroupInfo() { delete m_sli; m_sli=0; }
void setRefItems(const QList<ListItemInfo> *sli);
QCString header; QCString header;
QCString doc; QCString doc;
QCString docFile; QCString docFile;
QCString compoundName; QCString compoundName;
QList<ListItemInfo> *m_sli;
}; };
//class MemberGroupDict : public QIntDict<MemberGroup> //class MemberGroupDict : public QIntDict<MemberGroup>
......
...@@ -179,26 +179,31 @@ static Define *isDefined(const char *name) ...@@ -179,26 +179,31 @@ static Define *isDefined(const char *name)
static QDict<void> g_allIncludes(10009); static QDict<void> g_allIncludes(10009);
static FileState *checkAndOpenFile(const QCString &fileName) static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyIncluded)
{ {
alreadyIncluded = FALSE;
FileState *fs = 0; FileState *fs = 0;
//printf("checkAndOpenFile(%s)\n",absName.data()); //printf("checkAndOpenFile(%s)\n",fileName.data());
QFileInfo fi(fileName); QFileInfo fi(fileName);
if (fi.exists() && fi.isFile()) if (fi.exists() && fi.isFile())
{ {
QCString absName = convertToQCString(fi.absFilePath()); QCString absName = convertToQCString(fi.absFilePath());
#if 1
// global guard // global guard
if (g_allIncludes.find(absName)) return 0; // already done if (g_curlyCount==0) // not #include inside { ... }
{
if (g_allIncludes.find(absName)==0)
{
alreadyIncluded = TRUE;
//printf(" already included 1\n");
return 0; // already done
}
g_allIncludes.insert(absName,(void *)0x8); g_allIncludes.insert(absName,(void *)0x8);
}
// check include stack for absName // check include stack for absName
#endif
#if 0 // stack based recusive inclusion detection
QStack<FileState> tmpStack; QStack<FileState> tmpStack;
g_includeStack.setAutoDelete(FALSE); g_includeStack.setAutoDelete(FALSE);
bool alreadyIncluded=FALSE;
while ((fs=g_includeStack.pop())) while ((fs=g_includeStack.pop()))
{ {
if (fs->fileName==absName) alreadyIncluded=TRUE; if (fs->fileName==absName) alreadyIncluded=TRUE;
...@@ -210,11 +215,15 @@ static FileState *checkAndOpenFile(const QCString &fileName) ...@@ -210,11 +215,15 @@ static FileState *checkAndOpenFile(const QCString &fileName)
} }
g_includeStack.setAutoDelete(TRUE); g_includeStack.setAutoDelete(TRUE);
if (alreadyIncluded) return 0; if (alreadyIncluded)
#endif {
//printf(" already included 2\n");
return 0;
}
//printf("#include %s\n",absName.data()); //printf("#include %s\n",absName.data());
fs = new FileState; fs = new FileState;
alreadyIncluded = FALSE;
QCString filterName = getFileFilter(absName); QCString filterName = getFileFilter(absName);
if (!filterName.isEmpty()) if (!filterName.isEmpty())
...@@ -222,25 +231,36 @@ static FileState *checkAndOpenFile(const QCString &fileName) ...@@ -222,25 +231,36 @@ static FileState *checkAndOpenFile(const QCString &fileName)
fs->isPlainFile = FALSE; fs->isPlainFile = FALSE;
QCString cmd = filterName+" \""+absName+"\""; QCString cmd = filterName+" \""+absName+"\"";
fs->filePtr=portable_popen(cmd,"r"); fs->filePtr=portable_popen(cmd,"r");
if (!fs->filePtr) err("Error: could not execute filter %s\n",cmd.data()); if (!fs->filePtr)
{
err("Error: could not execute filter %s, reason: %s\n",cmd.data(),
strerror(errno));
}
} }
else else
{ {
fs->isPlainFile = TRUE; fs->isPlainFile = TRUE;
fs->filePtr=fopen(absName,"r"); fs->filePtr=fopen(absName,"r");
if (!fs->filePtr) err("Error: could not open file %s for reading\n",absName.data()); if (!fs->filePtr)
{
err("Error: could not open file %s for reading, reason: %s \n",
absName.data(),strerror(errno));
}
} }
if (!fs->filePtr) // error -> cleanup if (!fs->filePtr) // error -> cleanup
{ {
delete fs; delete fs;
fs=0; fs=0;
} }
else
{
fs->oldYYin = preYYin; fs->oldYYin = preYYin;
} }
}
return fs; return fs;
} }
static FileState *findFile(const char *fileName,bool localInclude) static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyIncluded)
{ {
//printf("** findFile(%s,%d) g_yyFileName=%s\n",fileName,localInclude,g_yyFileName.data()); //printf("** findFile(%s,%d) g_yyFileName=%s\n",fileName,localInclude,g_yyFileName.data());
if (localInclude && !g_yyFileName.isEmpty()) if (localInclude && !g_yyFileName.isEmpty())
...@@ -249,13 +269,17 @@ static FileState *findFile(const char *fileName,bool localInclude) ...@@ -249,13 +269,17 @@ static FileState *findFile(const char *fileName,bool localInclude)
if (fi.exists()) if (fi.exists())
{ {
QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+fileName; QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+fileName;
FileState *fs = checkAndOpenFile(absName); FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
if (fs) if (fs)
{ {
setFileName(absName); setFileName(absName);
g_yyLineNr=1; g_yyLineNr=1;
return fs; return fs;
} }
else if (alreadyIncluded)
{
return 0;
}
} }
} }
if (g_pathList==0) if (g_pathList==0)
...@@ -266,13 +290,17 @@ static FileState *findFile(const char *fileName,bool localInclude) ...@@ -266,13 +290,17 @@ static FileState *findFile(const char *fileName,bool localInclude)
while (s) while (s)
{ {
QCString absName = (QCString)s+"/"+fileName; QCString absName = (QCString)s+"/"+fileName;
FileState *fs = checkAndOpenFile(absName); FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
if (fs) if (fs)
{ {
setFileName(absName); setFileName(absName);
g_yyLineNr=1; g_yyLineNr=1;
return fs; return fs;
} }
else if (alreadyIncluded)
{
return 0;
}
s=g_pathList->next(); s=g_pathList->next();
} }
...@@ -1150,7 +1178,9 @@ static void readIncludeFile(const QCString &inc) ...@@ -1150,7 +1178,9 @@ static void readIncludeFile(const QCString &inc)
// findFile will overwrite g_yyFileDef if found // findFile will overwrite g_yyFileDef if found
FileState *fs; FileState *fs;
if ((fs=findFile(incFileName,localInclude))) // see if the include file can be found bool alreadyIncluded = FALSE;
//printf("calling findFile(%s)\n",incFileName.data());
if ((fs=findFile(incFileName,localInclude,alreadyIncluded))) // see if the include file can be found
{ {
//printf("Found include file!\n"); //printf("Found include file!\n");
if (Debug::isFlagSet(Debug::Preprocessor)) if (Debug::isFlagSet(Debug::Preprocessor))
...@@ -1188,6 +1218,7 @@ static void readIncludeFile(const QCString &inc) ...@@ -1188,6 +1218,7 @@ static void readIncludeFile(const QCString &inc)
} }
else else
{ {
//printf(" calling findFile(%s) alreadyInc=%d\n",incFileName.data(),alreadyIncluded);
if (oldFileDef) if (oldFileDef)
{ {
bool ambig; bool ambig;
...@@ -1207,7 +1238,7 @@ static void readIncludeFile(const QCString &inc) ...@@ -1207,7 +1238,7 @@ static void readIncludeFile(const QCString &inc)
msg("#include %s: not found or already included! skipping...\n",incFileName.data()); msg("#include %s: not found or already included! skipping...\n",incFileName.data());
//printf("Error: include file %s not found\n",yytext); //printf("Error: include file %s not found\n",yytext);
} }
if (g_curlyCount>0) // failed to find #include inside { ... } if (g_curlyCount>0 && !alreadyIncluded) // failed to find #include inside { ... }
{ {
warn(g_yyFileName,g_yyLineNr,"Warning: include file %s not found, perhaps you forgot to add its directory to INCLUDE_PATH?",incFileName.data()); warn(g_yyFileName,g_yyLineNr,"Warning: include file %s not found, perhaps you forgot to add its directory to INCLUDE_PATH?",incFileName.data());
} }
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
// Updates: // Updates:
// -------- // --------
// 2009/08/24 -
// 2008/06/09 - Corrections in trLegendDocs().
// 2007/11/13 - Update for "new since 1.5.4 (mainly for Fortran)". // 2007/11/13 - Update for "new since 1.5.4 (mainly for Fortran)".
// 2007/03/20 - removing decode(), conversion of literals to UTF-8. // 2007/03/20 - removing decode(), conversion of literals to UTF-8.
// 2006/06/13 - translation of the trEnumerationValueDocumentation(). // 2006/06/13 - translation of the trEnumerationValueDocumentation().
...@@ -77,7 +79,7 @@ ...@@ -77,7 +79,7 @@
// something else. It is difficult to find the general translation // something else. It is difficult to find the general translation
// for all kinds in the Czech language. // for all kinds in the Czech language.
class TranslatorCzech : public TranslatorAdapter_1_6_0 class TranslatorCzech : public Translator
{ {
public: public:
// --- Language control methods ------------------- // --- Language control methods -------------------
...@@ -1053,7 +1055,7 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0 ...@@ -1053,7 +1055,7 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0
/*! page explaining how the dot graph's should be interpreted */ /*! page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs() virtual QCString trLegendDocs()
{ {
QCString result( return
"Zde naleznete vysvětlení, jak mají být interpretovány grafy, " "Zde naleznete vysvětlení, jak mají být interpretovány grafy, "
"které byly generovány programem doxygen.<p>\n" "které byly generovány programem doxygen.<p>\n"
"Uvažujte následující příklad:\n" "Uvažujte následující příklad:\n"
...@@ -1064,22 +1066,21 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0 ...@@ -1064,22 +1066,21 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0
"/*! Třída, u které došlo k ořezání grafu. Vztah dědičnosti " "/*! Třída, u které došlo k ořezání grafu. Vztah dědičnosti "
"je skryt. */\n" "je skryt. */\n"
"class Truncated : public Invisible { };\n\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" "/*! Bázová třída děděná veřejně (public inheritance). */\n"
"class PublicBase : public Truncated { };\n\n" "class PublicBase : public Truncated { };\n\n"
"/*! Šablona třídy. */\n"
"template<class T> class Templ { };\n\n"
"/*! Bázová třída, použitá pro chráněné dědění " "/*! Bázová třída, použitá pro chráněné dědění "
"(protected inheritance). */\n" "(protected inheritance). */\n"
"class ProtectedBase { };\n\n" "class ProtectedBase { };\n\n"
"/*! Bázová třída, využitá pro privátní dědění " "/*! Bázová třída, využitá pro privátní dědění "
"(private inheritance). */\n" "(private inheritance). */\n"
"class PrivateBase { };\n\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" "/*! Třída, která je využívána třídou Inherited. */\n"
"class Used { };\n\n" "class Used { };\n\n"
"/*! Odvozená třída, která různým způsobem dědí z více bázových " "/*! Odvozená třída, která dědí z více tříd. */\n"
"tříd. */\n"
"class Inherited : public PublicBase,\n" "class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n" " protected ProtectedBase,\n"
" private PrivateBase,\n" " private PrivateBase,\n"
...@@ -1090,13 +1091,12 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0 ...@@ -1090,13 +1091,12 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0
" Used *m_usedClass;\n" " Used *m_usedClass;\n"
"};\n" "};\n"
"\\endcode\n" "\\endcode\n"
"Pokud je položka \\c MAX_DOT_GRAPH_HEIGHT konfiguračního souboru " "K výše uvedenému bude vygenerován následující graf:"
"nastavena na hodnotu 200, bude vygenerován následující graf:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n" "<p>\n"
"Bloky (tj. uzly) v uvedeném grafu mají následující význam:\n" "Bloky (tj. uzly) v uvedeném grafu mají následující význam:\n"
"<ul>\n" "<ul>\n"
"<li>Černě vyplněný obdélník reprezentuje strukturu nebo třídu, " "<li>Šedě vyplněný obdélník reprezentuje strukturu nebo třídu, "
"pro kterou byl graf generován.\n" "pro kterou byl graf generován.\n"
"<li>Obdélník s černým obrysem označuje dokumentovanou " "<li>Obdélník s černým obrysem označuje dokumentovanou "
"strukturu nebo třídu.\n" "strukturu nebo třídu.\n"
...@@ -1125,9 +1125,7 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0 ...@@ -1125,9 +1125,7 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0
"a šablonou třídy, na základě které byla\n" "a šablonou třídy, na základě které byla\n"
"instance šablony vytvořena. V popisu šipky jsou uvedeny příslušné" "instance šablony vytvořena. V popisu šipky jsou uvedeny příslušné"
" parametry šablony.\n" " parametry šablony.\n"
"</ul>\n"); "</ul>\n";
return result;
} }
/*! text for the link to the legend page */ /*! text for the link to the legend page */
virtual QCString trLegend() virtual QCString trLegend()
...@@ -1816,6 +1814,40 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0 ...@@ -1816,6 +1814,40 @@ class TranslatorCzech : public TranslatorAdapter_1_6_0
return "Omezení typů (Type Constraints)"; return "Omezení typů (Type Constraints)";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.6.0 (mainly for the new search engine)
//////////////////////////////////////////////////////////////////////////
/*! directory relation for \a name */
virtual QCString trDirRelation(const char *name)
{
return "Relace "+QCString(name);
}
/*! Loading message shown when loading search results */
virtual QCString trLoading()
{
return "Načítám...";
}
/*! Label used for search results in the global namespace */
virtual QCString trGlobalNamespace()
{
return "Globální prostor jmen";
}
/*! Message shown while searching */
virtual QCString trSearching()
{
return "Vyhledávám...";
}
/*! Text shown when no search results are found */
virtual QCString trNoMatches()
{
return "Nic se nenašlo";
}
}; };
#endif // TRANSLATOR_CZ_H #endif // TRANSLATOR_CZ_H
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef TRANSLATOR_ZA_H #ifndef TRANSLATOR_ZA_H
#define TRANSLATOR_ZA_H #define TRANSLATOR_ZA_H
class TranslatorAfrikaans : public TranslatorAdapter_1_4_6 class TranslatorAfrikaans : public TranslatorAdapter_1_6_0
{ {
public: public:
...@@ -1548,8 +1548,220 @@ class TranslatorAfrikaans : public TranslatorAdapter_1_4_6 ...@@ -1548,8 +1548,220 @@ class TranslatorAfrikaans : public TranslatorAdapter_1_4_6
"funksie in die argument(e) wat dit aanvaar."; "funksie in die argument(e) wat dit aanvaar.";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.6
//////////////////////////////////////////////////////////////////////////
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
return "Hier is die roep skema vir die funksie:";
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return "Enumerator Dokumentasie"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
//////////////////////////////////////////////////////////////////////////
/*! header that is put before the list of member subprograms (Fortran). */
virtual QCString trMemberFunctionDocumentationFortran()
{ return "Lede Funksie/Subroetine Dokumentasie"; }
/*! This is put above each page as a link to the list of annotated data types (Fortran). */
virtual QCString trCompoundListFortran()
{ return "Data Tipes Lys"; }
/*! This is put above each page as a link to all members of compounds (Fortran). */
virtual QCString trCompoundMembersFortran()
{ return "Data Velde"; }
/*! This is an introduction to the annotated compound list (Fortran). */
virtual QCString trCompoundListDescriptionFortran()
{ return "Hier is die data tipes met kort beskrywings:"; }
/*! This is an introduction to the page with all data types (Fortran). */
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
{
QCString result="Hier is 'n lys van alle ";
if (!extractAll)
{
result+="gedokumenteerde ";
}
result+="data tipe lede";
result+=" met skakels na ";
if (!extractAll)
{
result+="die data strukture dokumentasie vir elke lid";
}
else
{
result+="die data tipes waaraan hulle behoort:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index (Fortran).
*/
virtual QCString trCompoundIndexFortran()
{ return "Data Tipe Indeks"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all data types (Fortran).
*/
virtual QCString trTypeDocumentation()
{ return "Data Tipe Dokumentasie"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) subprograms (Fortran).
*/
virtual QCString trSubprograms()
{ return "Funksies/Subroetines"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for subprograms (Fortran)
*/
virtual QCString trSubprogramDocumentation()
{ return "Funksies/Subroetine Dokumentasie"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds (Fortran)
*/
virtual QCString trDataTypes()
{ return "Data Tipes"; }
/*! used as the title of page containing all the index of all modules (Fortran). */
virtual QCString trModulesList()
{ return "Modules Lys"; }
/*! used as an introduction to the modules list (Fortran) */
virtual QCString trModulesListDescription(bool extractAll)
{
QCString result="Hier is 'n lys van alle ";
if (!extractAll) result+="gedokumenteerde ";
result+="modules met kort beskrywings:";
return result;
}
/*! used as the title of the HTML page of a module/type (Fortran) */
virtual QCString trCompoundReferenceFortran(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result=(QCString)clName;
switch(compType)
{
case ClassDef::Class: result+=" Module"; break;
case ClassDef::Struct: result+=" Tipe"; break;
case ClassDef::Union: result+=" Unie"; break;
case ClassDef::Interface: result+=" Interflak"; break;
case ClassDef::Protocol: result+=" Protokol"; break;
case ClassDef::Category: result+=" Kategorie"; break;
case ClassDef::Exception: result+=" Eksepsie"; break;
}
if (isTemplate) result+=" Template";
result+=" Bron";
return result;
}
/*! used as the title of the HTML page of a module (Fortran) */
virtual QCString trModuleReference(const char *namespaceName)
{
QCString result=namespaceName;
result+=" Module Bron";
return result;
}
/*! This is put above each page as a link to all members of modules. (Fortran) */
virtual QCString trModulesMembers()
{ return "Module Lede"; }
/*! This is an introduction to the page with all modules members (Fortran) */
virtual QCString trModulesMemberDescription(bool extractAll)
{
QCString result="Hier is 'n lys van alle ";
if (!extractAll) result+="gedokumenteerde ";
result+="module lede met skakels na ";
if (extractAll)
{
result+="die module dokumentasie vir elke lid:";
}
else
{
result+="die modules waaraan hulle behoort:";
}
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all modules (Fortran).
*/
virtual QCString trModulesIndex()
{ return "Modules Indeks"; }
/*! 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 trModule(bool first_capital, bool singular)
{
QCString result((first_capital ? "Module" : "module"));
if (!singular) result+="s";
return result;
}
/*! This is put at the bottom of a module documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
bool single)
{
// single is true implies a single file
QCString result=(QCString)"The documentation for this ";
switch(compType)
{
case ClassDef::Class: result+="module"; break;
case ClassDef::Struct: result+="tipe"; break;
case ClassDef::Union: result+="unie"; break;
case ClassDef::Interface: result+="Interflak"; break;
case ClassDef::Protocol: result+="protokcol"; break;
case ClassDef::Category: result+="kategorie"; break;
case ClassDef::Exception: result+="eksepsie"; break;
}
result+=" is gegenereer vanaf die foldende leer";
if (single) result+=":"; 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 trType(bool first_capital, bool singular)
{
QCString result((first_capital ? "Tipe" : "tipe"));
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 trSubprogram(bool first_capital, bool singular)
{
QCString result((first_capital ? "Subprogram" : "subprogram"));
if (!singular) result+="me";
return result;
}
/*! C# Type Constraint list */
virtual QCString trTypeConstraints()
{
return "Tipe Limiete";
}
}; };
#endif #endif
...@@ -5399,6 +5399,7 @@ void addMembersToMemberGroup(MemberList *ml, ...@@ -5399,6 +5399,7 @@ void addMembersToMemberGroup(MemberList *ml,
} }
md = ml->take(index); // remove from member list md = ml->take(index); // remove from member list
mg->insertMember(md); // insert in member group mg->insertMember(md); // insert in member group
mg->setRefItems(info->m_sli);
md->setMemberGroup(mg); md->setMemberGroup(mg);
continue; continue;
} }
...@@ -6502,7 +6503,7 @@ void initDefaultExtensionMapping() ...@@ -6502,7 +6503,7 @@ void initDefaultExtensionMapping()
updateLanguageMapping(".f90", "fortran"); updateLanguageMapping(".f90", "fortran");
updateLanguageMapping(".vhd", "vhdl"); updateLanguageMapping(".vhd", "vhdl");
updateLanguageMapping(".vhdl", "vhdl"); updateLanguageMapping(".vhdl", "vhdl");
updateLanguageMapping(".xml", "dbusxml"); //updateLanguageMapping(".xml", "dbusxml");
} }
SrcLangExt getLanguageFromFileName(const QCString fileName) SrcLangExt getLanguageFromFileName(const QCString fileName)
......
...@@ -579,7 +579,7 @@ static void startFontClass(const char *s) ...@@ -579,7 +579,7 @@ static void startFontClass(const char *s)
static void writeFont(const char *s,const char* text) static void writeFont(const char *s,const char* text)
{ {
if (s==0 || text==0) return; if (s==0 || text==0) return;
printf("writeFont(%d,\"%s\")\n",g_yyLineNr,text); //printf("writeFont(%d,\"%s\")\n",g_yyLineNr,text);
g_code->startFontClass(s); g_code->startFontClass(s);
g_code->codify(text); g_code->codify(text);
g_code->endFontClass(); g_code->endFontClass();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment