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

Release-1.2.8-20010617

parent df80e278
DOXYGEN Version 1.2.8.1 DOXYGEN Version 1.2.8-20010617
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (10 June 2001) Dimitri van Heesch (17 June 2001)
...@@ -6,7 +6,7 @@ Just follow these steps: ...@@ -6,7 +6,7 @@ Just follow these steps:
is already working on support for that language, you will be is already working on support for that language, you will be
assigned as the maintainer for the language. I'll create a assigned as the maintainer for the language. I'll create a
list on Doxygen's homepage, so everyone knows who is doing what. list on Doxygen's homepage, so everyone knows who is doing what.
2) Create a copy of translator_nl.h and name it 2) Create a copy of translator_en.h and name it
translator_<your_2_letter_counter_code>.h translator_<your_2_letter_counter_code>.h
I'll use xx in the rest of this document. I'll use xx in the rest of this document.
3) Edit language.cpp: 3) Edit language.cpp:
...@@ -19,31 +19,31 @@ Just follow these steps: ...@@ -19,31 +19,31 @@ Just follow these steps:
} }
after the if { ... } after the if { ... }
4) Edit doxygen.pro and add translator_xx.h to the HEADERS line in the 4) Edit libdoxygen.pro.in and add translator_xx.h to the HEADERS line.
file doxygen.pro.
5) Edit translator_xx.h: 5) Edit translator_xx.h:
- Rename TRANSLATOR_NL_H to TRANSLATOR_XX_H twice. - Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice.
- Rename TranslatorDutch to TranslatorYourlanguage - Rename TranslatorEnglish to TranslatorYourlanguage
- In the member latexBabelPackage() change "dutch" into the name of the - In the member latexBabelPackage() change "english" into the name of the
latex package that adds support for your language. latex package that adds support for your language.
- In the member idLanguage() change "english" into the name of your
language (use lower case characters only). Depending on the language you
may also wish to change the member functions latexLanguageSupportCommand()
and idLanguageCharset().
- Edit all the strings that are returned by the members that start - Edit all the strings that are returned by the members that start
with tr. with tr. Try to match punctuation and capitals!
Look at the corresponding member in translator.h for the english text
that is returned and translate that into your language.
Try to match punctuation and capitals!
To enter special characters (with accents) you can: To enter special characters (with accents) you can:
a) Enter them directly if your keyboard supports that and you are a) Enter them directly if your keyboard supports that and you are
using a Latin-1 font. using a Latin-1 font.
Doxygen will translate the characters to proper Latex and Doxygen will translate the characters to proper Latex and
leave the Html and man output for what it is. leave the Html and man output for what it is (which is fine, if
b) Use html codes like &auml; for an a with an umlaut. idLanguageCharset() is set correctly).
b) Use html codes like &auml; for an a with an umlaut (i.e. ä).
See the HTML specification for the codes. See the HTML specification for the codes.
6) Recompile everything (do this from the root of the distribution, 6) Run configure and make again from the root of the distribution,
because the Makefile.dox* have to be regenerated!) in order to regenerate the Makefiles.
7) Now you can use OUTPUT_LANGUAGE = your_language_name 7) Now you can use OUTPUT_LANGUAGE = your_language_name
in the config file to generate output in your language. in the config file to generate output in your language.
8) Send translator_xx.h or a diff -u of the changes to me so I can add it 8) Send translator_xx.h to me so I can add it to doxygen.
to doxygen.
Good luck, and let me know if there are problems. Good luck, and let me know if there are problems.
...@@ -45,7 +45,7 @@ distclean: clean ...@@ -45,7 +45,7 @@ distclean: clean
-rm -f addon/xmlgen/*.o -rm -f addon/xmlgen/*.o
install: doxywizard_install install: doxywizard_install xmlgen_install
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin
......
DOXYGEN Version 1.2.8.1 DOXYGEN Version 1.2.8_20010617
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) (10 June 2001) Dimitri van Heesch (dimitri@stack.nl) (17 June 2001)
1.2.8.1 1.2.8-20010617
...@@ -10,3 +10,7 @@ tmake: ...@@ -10,3 +10,7 @@ tmake:
Makefile.xmlgen: xmlgen.pro Makefile.xmlgen: xmlgen.pro
$(ENV) $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen $(ENV) $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen
install:
$(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -m 755 ../../bin/doxygen_xml $(INSTALL)/bin
...@@ -24,7 +24,7 @@ f_dot=NO ...@@ -24,7 +24,7 @@ f_dot=NO
f_perl=NO f_perl=NO
f_plf_auto=NO f_plf_auto=NO
f_prefix=/usr f_prefix=/usr
f_insttool=ginstall f_insttool=NO
f_english=NO f_english=NO
f_wizard=NO f_wizard=NO
f_xmlgen=NO f_xmlgen=NO
...@@ -116,7 +116,7 @@ Options: ...@@ -116,7 +116,7 @@ Options:
[default: /usr] [default: /usr]
--install name Use \`name' as the name of the GNU install tool --install name Use \`name' as the name of the GNU install tool
[default: install] [default: autodetect]
--english-only Include support for English only. --english-only Include support for English only.
...@@ -265,6 +265,40 @@ if test "$f_make" = NO; then ...@@ -265,6 +265,40 @@ if test "$f_make" = NO; then
fi fi
echo "using $f_make" echo "using $f_make"
# - check for install ------------------------------------------------------------
echo -n " Checking for GNU install tool... "
if test "$f_insttool" = NO; then
install_names="ginstall install"
install_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs"
install_prog=NO
install_found=NO
for i in $install_names; do
for j in $install_dirs; do
if test -x "$j/$i"; then
install_found=YES
if $j/$i --version 2>/dev/null | grep GNU >/dev/null; then
install_prog="$j/$i"
break 2
fi
fi
done
done
f_insttool="$install_prog"
fi
if test "$f_insttool" = NO; then
if test "$install_found" = YES; then
echo "GNU version of install is required!"
else
echo "not found!";
fi
echo
exit 2
fi
echo "using $f_insttool";
# - check for dot ------------------------------------------------------------ # - check for dot ------------------------------------------------------------
echo -n " Checking for dot (part of GraphViz)... " echo -n " Checking for dot (part of GraphViz)... "
...@@ -401,6 +435,12 @@ EOF ...@@ -401,6 +435,12 @@ EOF
if test $f_wizard = YES; then if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard install" >> $DST echo " \$(MAKE) -C addon/doxywizard install" >> $DST
fi fi
echo "" >> $DST
echo "xmlgen_install:" >> $DST
if test $f_xmlgen = YES; then
echo " \$(MAKE) -C addon/xmlgen install" >> $DST
fi
echo "" >> $DST
fi fi
cat $SRC >> $DST cat $SRC >> $DST
echo " Created $DST from $SRC..." echo " Created $DST from $SRC..."
......
...@@ -129,7 +129,7 @@ Compilation is now done by performing the following steps: ...@@ -129,7 +129,7 @@ Compilation is now done by performing the following steps:
To let doxygen generate the HTML documentation. To let doxygen generate the HTML documentation.
\note you will need the stream editor <code>sed</code> for this, \note You will need the stream editor <code>sed</code> for this,
but this should be available on any Unix platform. but this should be available on any Unix platform.
The HTML directory of the distribution will now contain the html The HTML directory of the distribution will now contain the html
...@@ -137,7 +137,7 @@ Compilation is now done by performing the following steps: ...@@ -137,7 +137,7 @@ Compilation is now done by performing the following steps:
<code>index.html</code> in the <code>index.html</code> in the
html directory). html directory).
<li>Optional: Generate a postscript and pdf version of the manual. <li>Optional: Generate a PostScript and PDF version of the manual
(you will need <code>latex</code> and <code>dvips</code> and (you will need <code>latex</code> and <code>dvips</code> and
the ghostscript package for this). the ghostscript package for this).
...@@ -153,21 +153,23 @@ Compilation is now done by performing the following steps: ...@@ -153,21 +153,23 @@ Compilation is now done by performing the following steps:
\subsection install_bin_unix Installating the binaries on Unix \subsection install_bin_unix Installating the binaries on Unix
If you downloaded the binary distribution for Unix, you can install After the compilation of the source code do a <code>make install</code>
doxygen by typing: to install doxygen. If you downloaded the binary distribution for Unix,
type:
\verbatim \verbatim
./configure ./configure
make install make install
\endverbatim \endverbatim
Binaries are installed in the directory <code>\<prefix\>/bin</code>, Binaries are installed into the directory <code>\<prefix\>/bin</code>.
documentation and examples in the directory Use <code>make install_docs DOCDIR=\<path\></code> to install the
<code>\<prefix\>/share/doc/packages/doxygen</code> (use documentation and examples into the <code>\<path\></code> directory.
<code>make install DOCDIR=\<path\></code> to change this).
<code>\<prefix\></code> defaults to /usr but can be changed with <code>\<prefix\></code> defaults to /usr but can be changed with
the <code>--prefix</code> option of the configure script. the <code>--prefix</code> option of the configure script.
The default <code>DOCDIR</code> directory is
<code>\<prefix\>/share/doc/packages/doxygen</code>
Alternatively, you can also copy the binaries from the <code>bin</code> Alternatively, you can also copy the binaries from the <code>bin</code>
directory manually to some <code>bin</code> directory in your search path. directory manually to some <code>bin</code> directory in your search path.
...@@ -402,7 +404,7 @@ Here is what is required: ...@@ -402,7 +404,7 @@ Here is what is required:
<code>latex</code>, <code>dvips</code> and <code>gswin32</code>. <code>latex</code>, <code>dvips</code> and <code>gswin32</code>.
To get these working under Windows To get these working under Windows
install the fpTeX distribution. You can download it at: install the fpTeX distribution. You can download it at:
ftp://ctan.tug.org/tex-archive/systems/win32/web2c/fptex-0.3/ http://www.ese-metz.fr/~popineau/fptex/wwwfptex.html
Make sure the tools are available from a dos box, by adding the Make sure the tools are available from a dos box, by adding the
directory they are in to the search path. directory they are in to the search path.
......
...@@ -101,8 +101,8 @@ when the translator was updated. ...@@ -101,8 +101,8 @@ when the translator was updated.
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>French</TD> <TD>French</TD>
<TD>Christophe Bordeux</TD> <TD>Xavier Outhier</TD>
<TD>bordeux@NOSPAM.lig.di.epfl.ch</TD> <TD>xavier.outhier@NOSPAM.anfdata.cz</TD>
<TD>1.2.0</TD> <TD>1.2.0</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -217,7 +217,7 @@ when the translator was updated. ...@@ -217,7 +217,7 @@ when the translator was updated.
\hline \hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & 1.0.0 \\ Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & 1.0.0 \\
\hline \hline
French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} & 1.2.0 \\ French & Xavier Outhier & {\tt xavier.outhier@anfdata.cz} & 1.2.0 \\
\hline \hline
German & Jens Seidel & {\tt jensseidel@users.sourceforge.net} & up-to-date \\ German & Jens Seidel & {\tt jensseidel@users.sourceforge.net} & up-to-date \\
& Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\
......
...@@ -27,7 +27,7 @@ Finnish ...@@ -27,7 +27,7 @@ Finnish
Olli Korhonen: Olli.Korhonen@ccc.fi Olli Korhonen: Olli.Korhonen@ccc.fi
French French
Christophe Bordeux: bordeux@lig.di.epfl.ch Xavier Outhier: xavier.outhier@anfdata.cz
German German
Jens Seidel: jensseidel@users.sourceforge.net Jens Seidel: jensseidel@users.sourceforge.net
......
Name: doxygen Name: doxygen
Version: 1.2.8.1 Version: 1.2.8_20010617
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 3 Release: 3
Source: doxygen-%{version}.src.tar.gz Source: doxygen-%{version}.src.tar.gz
......
...@@ -183,7 +183,8 @@ void ClassDef::insertMember(MemberDef *md) ...@@ -183,7 +183,8 @@ void ClassDef::insertMember(MemberDef *md)
/********************************************/ /********************************************/
/* insert member in the declaration section */ /* insert member in the declaration section */
/********************************************/ /********************************************/
if (md->isRelated() && (Config_getBool("EXTRACT_PRIVATE") || md->protection()!=Private)) if (md->isRelated() &&
(Config_getBool("EXTRACT_PRIVATE") || md->protection()!=Private))
{ {
related.append(md); related.append(md);
md->setSectionList(&related); md->setSectionList(&related);
......
...@@ -898,6 +898,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -898,6 +898,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
%x DocLink %x DocLink
%x DocJavaLink %x DocJavaLink
%x DocLinkText %x DocLinkText
%x DocJavaLinkText
%x DocSkipWord %x DocSkipWord
%x DocInclude %x DocInclude
%x DocDontInclude %x DocDontInclude
...@@ -1056,19 +1057,21 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1056,19 +1057,21 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
BEGIN( DocLinkText ); BEGIN( DocLinkText );
} }
<DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ } <DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ }
<DocJavaLink>([a-z_A-Z0-9]+"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,~&*()\[\]]*")")? { // TODO: support operators as well! <DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well!
linkRef = yytext; linkRef = yytext;
linkText = "";
BEGIN( DocJavaLinkText );
} }
<DocJavaLink>"}" { <DocJavaLinkText>"}" {
//printf("Trying to link `%s'\n",linkRef.data()); //printf("Trying to link `%s'\n",linkRef.data());
if (!generateLink(*outDoc,className,linkRef,inSeeBlock,0)) if (!generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace()))
{ {
warn(yyFileName,yyLineNr,"Warning: link to unknown entity `%s' in the documentation of this entity!",linkRef.data()); warn(yyFileName,yyLineNr,"Warning: link to unknown entity `%s' in the documentation of this entity!",linkRef.data());
} }
BEGIN( DocScan ); BEGIN( DocScan );
} }
<DocLinkText>. { linkText += *yytext; } <DocJavaLinkText,DocLinkText>. { linkText += *yytext; }
<DocLinkText>"\n" { linkText += " "; } <DocJavaLinkText,DocLinkText>"\n" { linkText += " "; }
<DocLink,DocLinkText>{CMD}"endlink" { // <- needed for things like \endlink. <DocLink,DocLinkText>{CMD}"endlink" { // <- needed for things like \endlink.
//printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n",
// className.data(),linkRef.data(),linkText.data()); // className.data(),linkRef.data(),linkText.data());
......
...@@ -772,18 +772,6 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper) ...@@ -772,18 +772,6 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
// bClass->name().data()); // bClass->name().data());
if ((bn=m_usedNodes->find(bClass->name()))) // node already present if ((bn=m_usedNodes->find(bClass->name()))) // node already present
{ {
//printf("Base node `%s'\n",bn->m_label.data());
//if (n->m_children)
//{
// QListIterator<DotNode> dnli(*n->m_children);
// DotNode *cn;
// for (dnli.toFirst();(cn=dnli.current());++dnli)
// {
// printf("Child node `%s'\n",cn->m_label.data());
// }
// printf("ref node = %p\n",n->m_children->findRef(bn));
//}
if (n->m_children==0 || n->m_children->findRef(bn)==-1) // no arrow yet if (n->m_children==0 || n->m_children->findRef(bn)==-1) // no arrow yet
{ {
n->addChild(bn,bcd->prot); n->addChild(bn,bcd->prot);
...@@ -847,7 +835,7 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() ...@@ -847,7 +835,7 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
//printf("Trying %s subClasses=%d\n",cd->name().data(),cd->subClasses()->count()); //printf("Trying %s subClasses=%d\n",cd->name().data(),cd->subClasses()->count());
if (!hasVisibleRoot(cd->baseClasses())) if (!hasVisibleRoot(cd->baseClasses()))
{ {
if (cd->isVisibleInHierarchy()) // root class in the graph if (cd->isVisibleInHierarchy()) // root node in the forest
{ {
QCString tmp_url=""; QCString tmp_url="";
if (cd->isLinkable()) if (cd->isLinkable())
...@@ -1075,8 +1063,13 @@ DotClassGraph::DotClassGraph(ClassDef *cd,GraphType t,int maxRecursionDepth) ...@@ -1075,8 +1063,13 @@ DotClassGraph::DotClassGraph(ClassDef *cd,GraphType t,int maxRecursionDepth)
m_recDepth = maxRecursionDepth; m_recDepth = maxRecursionDepth;
QCString tmp_url=""; QCString tmp_url="";
if (cd->isLinkable()) tmp_url=cd->getReference()+"$"+cd->getOutputFileBase(); if (cd->isLinkable()) tmp_url=cd->getReference()+"$"+cd->getOutputFileBase();
QCString className = cd->displayName();
if (cd->templateArguments())
{
className+=tempArgListToString(cd->templateArguments());
}
m_startNode = new DotNode(m_curNodeNumber++, m_startNode = new DotNode(m_curNodeNumber++,
cd->displayName(), className,
tmp_url.data(), tmp_url.data(),
0, // distance 0, // distance
TRUE // is a root node TRUE // is a root node
...@@ -1250,7 +1243,7 @@ QCString DotClassGraph::diskName() const ...@@ -1250,7 +1243,7 @@ QCString DotClassGraph::diskName() const
return result; return result;
} }
void DotClassGraph::writeGraph(QTextStream &out, QCString DotClassGraph::writeGraph(QTextStream &out,
GraphOutputFormat format, GraphOutputFormat format,
const char *path, const char *path,
bool isTBRank, bool isTBRank,
...@@ -1295,7 +1288,7 @@ void DotClassGraph::writeGraph(QTextStream &out, ...@@ -1295,7 +1288,7 @@ void DotClassGraph::writeGraph(QTextStream &out,
{ {
err("Error: Problems running dot. Check your installation!\n"); err("Error: Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
if (generateImageMap) if (generateImageMap)
{ {
...@@ -1305,7 +1298,7 @@ void DotClassGraph::writeGraph(QTextStream &out, ...@@ -1305,7 +1298,7 @@ void DotClassGraph::writeGraph(QTextStream &out,
{ {
err("Error: Problems running dot. Check your installation!\n"); err("Error: Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#"
<< m_startNode->m_label << "_" << mapName << "\" alt=\""; << m_startNode->m_label << "_" << mapName << "\" alt=\"";
...@@ -1336,14 +1329,14 @@ void DotClassGraph::writeGraph(QTextStream &out, ...@@ -1336,14 +1329,14 @@ void DotClassGraph::writeGraph(QTextStream &out,
{ {
err("Error: Problems running dot. Check your installation!\n"); err("Error: Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
int width,height; int width,height;
if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) if (!readBoundingBoxEPS(baseName+".eps",&width,&height))
{ {
err("Error: Could not extract bounding box from .eps!\n"); err("Error: Could not extract bounding box from .eps!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
if (Config_getBool("USE_PDFLATEX")) if (Config_getBool("USE_PDFLATEX"))
{ {
...@@ -1354,7 +1347,7 @@ void DotClassGraph::writeGraph(QTextStream &out, ...@@ -1354,7 +1347,7 @@ void DotClassGraph::writeGraph(QTextStream &out,
{ {
err("Error: Problems running epstopdf. Check your TeX installation!\n"); err("Error: Problems running epstopdf. Check your TeX installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
} }
int maxWidth = 420; /* approx. page width in points */ int maxWidth = 420; /* approx. page width in points */
...@@ -1370,6 +1363,7 @@ void DotClassGraph::writeGraph(QTextStream &out, ...@@ -1370,6 +1363,7 @@ void DotClassGraph::writeGraph(QTextStream &out,
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return baseName;
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -1461,7 +1455,7 @@ QCString DotInclDepGraph::diskName() const ...@@ -1461,7 +1455,7 @@ QCString DotInclDepGraph::diskName() const
return convertNameToFile(result); return convertNameToFile(result);
} }
void DotInclDepGraph::writeGraph(QTextStream &out, QCString DotInclDepGraph::writeGraph(QTextStream &out,
GraphOutputFormat format, GraphOutputFormat format,
const char *path, const char *path,
bool generateImageMap bool generateImageMap
...@@ -1498,7 +1492,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1498,7 +1492,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
if (generateImageMap) if (generateImageMap)
...@@ -1510,7 +1504,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1510,7 +1504,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#"
...@@ -1534,14 +1528,14 @@ void DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1534,14 +1528,14 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
int width,height; int width,height;
if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) if (!readBoundingBoxEPS(baseName+".eps",&width,&height))
{ {
err("Error: Could not extract bounding box from .eps!\n"); err("Error: Could not extract bounding box from .eps!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
if (Config_getBool("USE_PDFLATEX")) if (Config_getBool("USE_PDFLATEX"))
{ {
...@@ -1552,7 +1546,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1552,7 +1546,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
{ {
err("Error: Problems running epstopdf. Check your TeX installation!\n"); err("Error: Problems running epstopdf. Check your TeX installation!\n");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return; return baseName;
} }
} }
int maxWidth = 420; /* approx. page width in points */ int maxWidth = 420; /* approx. page width in points */
...@@ -1571,6 +1565,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1571,6 +1565,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot");
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return baseName;
} }
bool DotInclDepGraph::isTrivial() const bool DotInclDepGraph::isTrivial() const
......
...@@ -119,7 +119,7 @@ class DotClassGraph ...@@ -119,7 +119,7 @@ class DotClassGraph
DotClassGraph(ClassDef *cd,GraphType t,int maxRecusionDepth=1000); DotClassGraph(ClassDef *cd,GraphType t,int maxRecusionDepth=1000);
~DotClassGraph(); ~DotClassGraph();
bool isTrivial() const; bool isTrivial() const;
void writeGraph(QTextStream &t,GraphOutputFormat f,const char *path, QCString writeGraph(QTextStream &t,GraphOutputFormat f,const char *path,
bool TBRank=TRUE,bool imageMap=TRUE); bool TBRank=TRUE,bool imageMap=TRUE);
QCString diskName() const; QCString diskName() const;
...@@ -142,7 +142,7 @@ class DotInclDepGraph ...@@ -142,7 +142,7 @@ class DotInclDepGraph
public: public:
DotInclDepGraph(FileDef *fd,bool inverse=FALSE); DotInclDepGraph(FileDef *fd,bool inverse=FALSE);
~DotInclDepGraph(); ~DotInclDepGraph();
void writeGraph(QTextStream &t, GraphOutputFormat f,const char *path, QCString writeGraph(QTextStream &t, GraphOutputFormat f,const char *path,
bool writeImageMap=TRUE); bool writeImageMap=TRUE);
bool isTrivial() const; bool isTrivial() const;
QCString diskName() const; QCString diskName() const;
......
...@@ -3396,7 +3396,9 @@ static void findMember(Entry *root, ...@@ -3396,7 +3396,9 @@ static void findMember(Entry *root,
scopeName=related.copy(); scopeName=related.copy();
} }
if (related.isEmpty() && root->parent && !root->parent->name.isEmpty()) if (related.isEmpty() && root->parent &&
(root->parent->section&Entry::SCOPE_MASK) &&
!root->parent->name.isEmpty())
{ {
scopeName = mergeScopes(root->parent->name,scopeName); scopeName = mergeScopes(root->parent->name,scopeName);
} }
...@@ -3982,6 +3984,7 @@ static void findMember(Entry *root, ...@@ -3982,6 +3984,7 @@ static void findMember(Entry *root,
cd->insertMember(md); cd->insertMember(md);
cd->insertUsedFile(root->fileName); cd->insertUsedFile(root->fileName);
md->setRefItems(root->todoId,root->testId,root->bugId); md->setRefItems(root->todoId,root->testId,root->bugId);
addMemberToGroups(root,md);
if (newMemberName) if (newMemberName)
{ {
//printf("Adding memberName=%s\n",mn->memberName()); //printf("Adding memberName=%s\n",mn->memberName());
...@@ -5986,7 +5989,7 @@ static const char *getArg(int argc,char **argv,int &optind) ...@@ -5986,7 +5989,7 @@ static const char *getArg(int argc,char **argv,int &optind)
char *s=0; char *s=0;
if (strlen(&argv[optind][2])>0) if (strlen(&argv[optind][2])>0)
s=&argv[optind][2]; s=&argv[optind][2];
else if (optind+1<argc) else if (optind+1<argc && argv[optind+1][0]!='-')
s=argv[++optind]; s=argv[++optind];
return s; return s;
} }
......
...@@ -121,50 +121,42 @@ struct TagInfo ...@@ -121,50 +121,42 @@ struct TagInfo
QCString anchor; QCString anchor;
}; };
struct Grouping { struct Grouping
typedef enum { {
GROUPING_LOWEST, enum GroupPri_t
GROUPING_AUTO_WEAK = {
GROUPING_LOWEST, //!< membership in group was defined via @weakgroup @{ @} GROUPING_LOWEST,
GROUPING_AUTO_ADD, //!< membership in group was defined via @add[to]group @{ @} GROUPING_AUTO_WEAK =
GROUPING_AUTO_DEF, //!< membership in group was defined via @defgroup @{ @} GROUPING_LOWEST, //!< membership in group was defined via @weakgroup @{ @}
GROUPING_AUTO_HIGHEST = GROUPING_AUTO_ADD, //!< membership in group was defined via @add[to]group @{ @}
GROUPING_AUTO_DEF, GROUPING_AUTO_DEF, //!< membership in group was defined via @defgroup @{ @}
GROUPING_INGROUP, //!< membership in group was defined by @ingroup GROUPING_AUTO_HIGHEST =
GROUPING_HIGHEST = GROUPING_AUTO_DEF,
GROUPING_INGROUP GROUPING_INGROUP, //!< membership in group was defined by @ingroup
} GroupPri_t; GROUPING_HIGHEST =
GROUPING_INGROUP
};
static const char *getGroupPriName( GroupPri_t priority ) static const char *getGroupPriName( GroupPri_t priority )
{
switch( priority )
{ {
switch( priority ) case GROUPING_AUTO_WEAK:
{ return "@weakgroup";
case GROUPING_AUTO_WEAK: case GROUPING_AUTO_ADD:
return "@weakgroup"; return "@addtogroup";
break; case GROUPING_AUTO_DEF:
case GROUPING_AUTO_ADD: return "@defgroup";
return "@addtogroup"; case GROUPING_INGROUP:
break; return "@ingroup";
case GROUPING_AUTO_DEF: }
return "@defgroup"; return "???";
break; }
case GROUPING_INGROUP:
return "@ingroup";
break;
default:
return "???";
break;
}
}
Grouping( const char *gn, GroupPri_t p ) : Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {}
groupname(gn), Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {}
pri(p) {} QCString groupname; //!< name of the group
Grouping( const Grouping &g ) : GroupPri_t pri; //!< priority of this definition
groupname(g.groupname),
pri(g.pri) {}
QCString groupname; //!< name of the group
GroupPri_t pri; //!< priority of this definition
}; };
......
...@@ -168,7 +168,7 @@ void GroupDef::addMembersToMemberGroup() ...@@ -168,7 +168,7 @@ void GroupDef::addMembersToMemberGroup()
void GroupDef::insertMember(MemberDef *md,bool docOnly) void GroupDef::insertMember(MemberDef *md,bool docOnly)
{ {
// fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); //fprintf(stderr, "GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data());
MemberNameInfo *mni=0; MemberNameInfo *mni=0;
if ((mni=(*allMemberNameInfoDict)[md->name()])) if ((mni=(*allMemberNameInfoDict)[md->name()]))
{ // member with this name already found { // member with this name already found
...@@ -177,7 +177,8 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -177,7 +177,8 @@ void GroupDef::insertMember(MemberDef *md,bool docOnly)
for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
{ {
MemberDef *srcMd = srcMi->memberDef; MemberDef *srcMd = srcMi->memberDef;
if (matchArguments(srcMd->argumentList(),md->argumentList())) if (matchArguments(srcMd->argumentList(),md->argumentList()) &&
srcMd->getOuterScope()==md->getOuterScope())
{ {
return; // member already added return; // member already added
} }
......
...@@ -110,7 +110,7 @@ class LatexGenerator : public OutputGenerator ...@@ -110,7 +110,7 @@ class LatexGenerator : public OutputGenerator
void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ } void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ }
void writeAnchor(const char *fileName,const char *name); void writeAnchor(const char *fileName,const char *name);
void startCodeFragment() { t << "\\footnotesize\\begin{verbatim}"; } void startCodeFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; }
void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; } void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; }
void startPreFragment() { t << "\\small\\begin{alltt}"; void startPreFragment() { t << "\\small\\begin{alltt}";
insidePre=TRUE; insidePre=TRUE;
......
...@@ -366,7 +366,7 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c ...@@ -366,7 +366,7 @@ void ManGenerator::startMemberDoc(const char *,const char *,const char *,const c
} }
void ManGenerator::startDoxyAnchor(const char *,const char *manName, void ManGenerator::startDoxyAnchor(const char *,const char *manName,
const char *, const char *) const char *, const char *name)
{ {
// something to be done? // something to be done?
if( !Config_getBool("MAN_LINKS") ) if( !Config_getBool("MAN_LINKS") )
...@@ -374,9 +374,16 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName, ...@@ -374,9 +374,16 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName,
return; // no return; // no
} }
// only create file when it doesn't exist // the name of the link file is derived from the name of the anchor:
QCString fileName=dir+"/"+buildFileName( manName ); // - truncate after an (optional) ::
QCString baseName = name;
int i=baseName.findRev(':');
if (i!=-1) baseName=baseName.right(baseName.length()-i-1);
// - remove dangerous characters and append suffix, then add dir prefix
QCString fileName=dir+"/"+buildFileName( baseName );
QFile linkfile( fileName ); QFile linkfile( fileName );
// - only create file if it doesn't exist already
if ( !linkfile.open( IO_ReadOnly ) ) if ( !linkfile.open( IO_ReadOnly ) )
{ {
if ( linkfile.open( IO_WriteOnly ) ) if ( linkfile.open( IO_WriteOnly ) )
......
...@@ -518,8 +518,10 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -518,8 +518,10 @@ bool MemberDef::isBriefSectionVisible() const
Config_getBool("EXTRACT_PRIVATE") Config_getBool("EXTRACT_PRIVATE")
); );
return visibleIfStatic && visibleIfDocumented && bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate && !annScope; visibleIfEnabled && visibleIfPrivate && !annScope;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible);
return visible;
} }
void MemberDef::writeDeclaration(OutputList &ol, void MemberDef::writeDeclaration(OutputList &ol,
...@@ -837,19 +839,27 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -837,19 +839,27 @@ bool MemberDef::isDetailedSectionLinkable() const
// this is not a global static or global statics should be extracted // this is not a global static or global statics should be extracted
bool staticFilter = getClassDef()!=0 || !isStatic() || Config_getBool("EXTRACT_STATIC"); bool staticFilter = getClassDef()!=0 || !isStatic() || Config_getBool("EXTRACT_STATIC");
// only include members that are non-private unless EXTRACT_PRIVATE is
// set to YES or the member is part of a group
bool privateFilter = (protection()!=Private ||
Config_getBool("EXTRACT_PRIVATE")
);
// member is part of an anonymous scope that is the type of // member is part of an anonymous scope that is the type of
// another member in the list. // another member in the list.
// //
bool inAnonymousScope = !briefDescription().isEmpty() && annUsed; bool inAnonymousScope = !briefDescription().isEmpty() && annUsed;
return ((docFilter && staticFilter) || inAnonymousScope); return ((docFilter && staticFilter && privateFilter) || inAnonymousScope);
} }
bool MemberDef::isDetailedSectionVisible(bool inGroup) const bool MemberDef::isDetailedSectionVisible(bool inGroup) const
{ {
bool groupFilter = getGroupDef()==0 || inGroup; bool groupFilter = getGroupDef()==0 || inGroup;
return isDetailedSectionLinkable() && groupFilter; bool visible = isDetailedSectionLinkable() && groupFilter;
//printf("MemberDef::isDetailedSectionVisible() %d\n",visible);
return visible;
} }
/*! Writes the "detailed documentation" section of this member to /*! Writes the "detailed documentation" section of this member to
...@@ -969,9 +979,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -969,9 +979,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ArgumentList *membAl=memberDefTemplateArguments(); ArgumentList *membAl=memberDefTemplateArguments();
if (membAl==0) membAl=templateArguments(); if (membAl==0) membAl=templateArguments();
//if (cd && (!isRelated() || templateArguments()!=0) &&
// ((al=scopeDefTemplateArguments()) || (al=cd->templateArguments()))
// )
if (!Config_getBool("HIDE_SCOPE_NAMES")) if (!Config_getBool("HIDE_SCOPE_NAMES"))
{ {
if (scopeAl && !related) // class template prefix if (scopeAl && !related) // class template prefix
...@@ -1413,7 +1420,7 @@ bool MemberDef::isLinkableInProject() ...@@ -1413,7 +1420,7 @@ bool MemberDef::isLinkableInProject()
return !name().isEmpty() && name().at(0)!='@' && return !name().isEmpty() && name().at(0)!='@' &&
((hasDocumentation() && !isReference()) ((hasDocumentation() && !isReference())
) && ) &&
(prot!=Private || Config_getBool("EXTRACT_PRIVATE") || isFriend()) && // not a private class member (prot!=Private || Config_getBool("EXTRACT_PRIVATE")) && // not a private class member
(classDef!=0 || Config_getBool("EXTRACT_STATIC") || !isStatic()); // not a static file/namespace member (classDef!=0 || Config_getBool("EXTRACT_STATIC") || !isStatic()); // not a static file/namespace member
} }
...@@ -1496,3 +1503,15 @@ void MemberDef::setEnumScope(MemberDef *md) ...@@ -1496,3 +1503,15 @@ void MemberDef::setEnumScope(MemberDef *md)
} }
} }
void MemberDef::setMemberClass(ClassDef *cd)
{
classDef=cd;
setOuterScope(cd);
}
void MemberDef::setNamespace(NamespaceDef *nd)
{
nspace=nd;
setOuterScope(nd);
}
...@@ -142,7 +142,7 @@ class MemberDef : public Definition ...@@ -142,7 +142,7 @@ class MemberDef : public Definition
} }
void setBitfields(const char *s) { bitfields = s; } void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; } void setMaxInitLines(int lines) { userInitLines=lines; }
void setMemberClass(ClassDef *cd) { classDef=cd; } void setMemberClass(ClassDef *cd);
void setSectionList(MemberList *sl) { section=sl; } void setSectionList(MemberList *sl) { section=sl; }
void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; } void setExplicitExternal(bool b) { explExt=b; }
...@@ -202,7 +202,7 @@ class MemberDef : public Definition ...@@ -202,7 +202,7 @@ class MemberDef : public Definition
ArgumentList *memberDefTemplateArguments() const { return membTAL; } ArgumentList *memberDefTemplateArguments() const { return membTAL; }
// namespace related members // namespace related members
void setNamespace(NamespaceDef *nd) { nspace=nd; } void setNamespace(NamespaceDef *nd);
// member group related members // member group related members
void setMemberGroup(MemberGroup *grp); void setMemberGroup(MemberGroup *grp);
......
...@@ -50,7 +50,7 @@ int MemberList::compareItems(GCI item1, GCI item2) ...@@ -50,7 +50,7 @@ int MemberList::compareItems(GCI item1, GCI item2)
/*! Count the number of members in this list that are visible in /*! Count the number of members in this list that are visible in
* the declaration part of a compound's documentation page. * the declaration part of a compound's documentation page.
*/ */
void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/) void MemberList::countDecMembers()
{ {
if (m_numDecMembers!=-1) return; if (m_numDecMembers!=-1) return;
...@@ -85,7 +85,8 @@ void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool section ...@@ -85,7 +85,8 @@ void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool section
md->hasDocumentation() md->hasDocumentation()
) m_defCnt++,m_numDecMembers++; ) m_defCnt++,m_numDecMembers++;
break; break;
case MemberDef::Friend: m_friendCnt++,m_numDecMembers++; break; case MemberDef::Friend: m_friendCnt++,m_numDecMembers++;
break;
default: default:
err("Error: Unknown member type found for member `%s'\n!",md->name().data()); err("Error: Unknown member type found for member `%s'\n!",md->name().data());
} }
...@@ -347,14 +348,17 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -347,14 +348,17 @@ void MemberList::writePlainDeclarations(OutputList &ol,
} }
case MemberDef::Friend: case MemberDef::Friend:
{ {
#if 0
//printf("Writing friend `%s'\n",md->name().data()); //printf("Writing friend `%s'\n",md->name().data());
QCString type=md->typeString(); QCString type=md->typeString();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data()); //printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
bool isFriendClass = type=="friend class"; bool isFriendClass = type=="friend class";
if (!isFriendClass) if (!isFriendClass)
{ {
#endif
if (first) ol.startMemberList(),first=FALSE; if (first) ol.startMemberList(),first=FALSE;
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup); md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
#if 0
} }
else // isFriendClass else // isFriendClass
// friend is undocumented as a member but it is a class, // friend is undocumented as a member but it is a class,
...@@ -391,6 +395,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -391,6 +395,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
} }
} }
#endif
break; break;
} }
case MemberDef::EnumValue: case MemberDef::EnumValue:
...@@ -441,10 +446,7 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -441,10 +446,7 @@ void MemberList::writeDeclarations(OutputList &ol,
{ {
//printf("subtitle=`%s'\n",subtitle); //printf("subtitle=`%s'\n",subtitle);
ol.startMemberSubtitle(); ol.startMemberSubtitle();
if (m_inGroup) parseDoc(ol,"<generated>",1,0,0,subtitle);
parseDoc(ol,"<generated>",1,0,0,subtitle);
else
parseText(ol,subtitle);
ol.endMemberSubtitle(); ol.endMemberSubtitle();
} }
......
...@@ -31,7 +31,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl, ...@@ -31,7 +31,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
const char *name,const char *lref) : const char *name,const char *lref) :
Definition(df,dl,name) Definition(df,dl,name)
{ {
fileName=(QCString)"namespace_"+name; fileName=(QCString)"namespace"+name;
classSDict = new ClassSDict(257); classSDict = new ClassSDict(257);
namespaceSDict = new NamespaceSDict(257); namespaceSDict = new NamespaceSDict(257);
m_innerCompounds = new SDict<Definition>(257); m_innerCompounds = new SDict<Definition>(257);
......
...@@ -1372,9 +1372,9 @@ void RTFGenerator::writeStyleInfo(int) ...@@ -1372,9 +1372,9 @@ void RTFGenerator::writeStyleInfo(int)
void RTFGenerator::lineBreak() void RTFGenerator::lineBreak()
{ {
//t << "\\par" << endl; t << "\\par" << endl;
//newParagraph(); //newParagraph();
t << "\\line" << endl; //t << "\\line" << endl;
} }
void RTFGenerator::writeString(const char *text) void RTFGenerator::writeString(const char *text)
...@@ -2541,13 +2541,14 @@ void RTFGenerator::endDotGraph(DotClassGraph &g) ...@@ -2541,13 +2541,14 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
{ {
newParagraph(); newParagraph();
g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),TRUE,FALSE); QCString fileName =
g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),TRUE,FALSE);
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style_Reset << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << fileName << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
t << "}" << endl; t << "}" << endl;
} }
...@@ -2560,15 +2561,13 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) ...@@ -2560,15 +2561,13 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
{ {
newParagraph(); newParagraph();
g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),FALSE); QCString fileName = g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),FALSE);
//QCString diskName = g.diskName();
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style_Reset << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << fileName << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
t << "}" << endl; t << "}" << endl;
} }
......
...@@ -462,7 +462,7 @@ class TranslatorCroatian : public Translator ...@@ -462,7 +462,7 @@ class TranslatorCroatian : public Translator
case ClassDef::Interface: result+="suelja (interface)"; break; case ClassDef::Interface: result+="suelja (interface)"; break;
case ClassDef::Exception: result+="iznimke (exception)"; break; case ClassDef::Exception: result+="iznimke (exception)"; break;
} }
result+=" je generirana iz " + trFile(false, single) + ": "; result+=" je generirana iz " + trFile(FALSE, single) + ": ";
return decode(result); return decode(result);
} }
......
...@@ -172,7 +172,9 @@ ...@@ -172,7 +172,9 @@
" doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n" " doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" } \n" " } \n"
" if (browserVersion == 3) \n" " if (browserVersion == 3) \n"
" doc.write(\"<div id='folder\" + this.id + \"' style='display:none;'>\") \n" " {\n"
" doc.write(\"<div id='folder\" + this.id + \"' style='visibility:hide;'>\") \n"
" }\n"
" \n" " \n"
" doc.write(\"\\n<table \") \n" " doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n" " if (browserVersion == 1) \n"
......
...@@ -172,7 +172,9 @@ function drawFolder(leftSide) ...@@ -172,7 +172,9 @@ function drawFolder(leftSide)
doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
} }
if (browserVersion == 3) if (browserVersion == 3)
doc.write("<div id='folder" + this.id + "' style='display:none;'>") {
doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>")
}
doc.write("\n<table ") doc.write("\n<table ")
if (browserVersion == 1) if (browserVersion == 1)
......
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