Commit bc6161ea authored by dimitri's avatar dimitri

Release-1.3.8-20040906

parent 4b77f4fc
Makefile Makefile
.makeconfig .makeconfig
.tmakeconfig .tmakeconfig
bin
lib
objects
DOXYGEN Version 1.3.8-20040824 DOXYGEN Version 1.3.8-20040906
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 (24 August 2004) Dimitri van Heesch (06 September 2004)
DOXYGEN Version 1.3.8_20040824 DOXYGEN Version 1.3.8_20040906
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) (24 August 2004) Dimitri van Heesch (dimitri@stack.nl) (06 September 2004)
1.3.8-20040824 1.3.8-20040906
...@@ -227,7 +227,7 @@ void MemberHandler::startMember(const QXmlAttributes& attrib) ...@@ -227,7 +227,7 @@ void MemberHandler::startMember(const QXmlAttributes& attrib)
{ {
m_parent->setDelegate(this); m_parent->setDelegate(this);
m_kindString = attrib.value("kind"); m_kindString = attrib.value("kind");
printf("startMember kindString=`%s'\n",m_kindString.data()); //printf("startMember kindString=`%s'\n",m_kindString.data());
m_kind = s_typeMap->map(m_kindString); m_kind = s_typeMap->map(m_kindString);
m_id = attrib.value("id"); m_id = attrib.value("id");
m_virtualness = attrib.value("virt"); m_virtualness = attrib.value("virt");
...@@ -242,7 +242,7 @@ void MemberHandler::startEnumValue(const QXmlAttributes& attrib) ...@@ -242,7 +242,7 @@ void MemberHandler::startEnumValue(const QXmlAttributes& attrib)
{ {
m_parent->setDelegate(this); m_parent->setDelegate(this);
m_kindString = "enumvalue"; m_kindString = "enumvalue";
printf("startEnumValue kindString=`%s'\n",m_kindString.data()); //printf("startEnumValue kindString=`%s'\n",m_kindString.data());
m_kind = s_typeMap->map(m_kindString); m_kind = s_typeMap->map(m_kindString);
m_id = attrib.value("id"); m_id = attrib.value("id");
m_virtualness = "non-virtual"; m_virtualness = "non-virtual";
......
...@@ -64,8 +64,8 @@ ParamHandler::ParamHandler(IBaseHandler *parent) : m_parent(parent) ...@@ -64,8 +64,8 @@ ParamHandler::ParamHandler(IBaseHandler *parent) : m_parent(parent)
addStartHandler("array"); addStartHandler("array");
addEndHandler("array",this,&ParamHandler::endArray); addEndHandler("array",this,&ParamHandler::endArray);
addStartHandler("attrib"); addStartHandler("attribute");
addEndHandler("attrib",this,&ParamHandler::endAttrib); addEndHandler("attribute",this,&ParamHandler::endAttrib);
addStartHandler("defval",this,&ParamHandler::startDefVal); addStartHandler("defval",this,&ParamHandler::startDefVal);
......
...@@ -616,7 +616,7 @@ int main(int argc,char **argv) ...@@ -616,7 +616,7 @@ int main(int argc,char **argv)
{ {
IMember *memr = mr->member(); IMember *memr = mr->member();
printf(" References %s at line %d\n", printf(" References %s at line %d\n",
mr->memberName()->latin1(),memr->bodyStart()); mr->name()->latin1(),memr->bodyStart());
} }
mri->release(); mri->release();
...@@ -625,7 +625,7 @@ int main(int argc,char **argv) ...@@ -625,7 +625,7 @@ int main(int argc,char **argv)
{ {
IMember *memr = mr->member(); IMember *memr = mr->member();
printf(" ReferencedBy %s at line %d\n", printf(" ReferencedBy %s at line %d\n",
mr->memberName()->latin1(),memr->bodyStart()); mr->name()->latin1(),memr->bodyStart());
} }
mri->release(); mri->release();
......
Makefile Makefile
doxywizard.pro doxywizard.pro
\ No newline at end of file Makefile.doxywizard
config.cpp
config.h
config.l
moc
obj
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
#include <qmenubar.h> #include <qmenubar.h>
#include <qtooltip.h> #include <qtooltip.h>
#include <stdlib.h>
#if defined(Q_OS_MACX) #if defined(Q_OS_MACX)
#include <CoreFoundation/CFBundle.h> #include <CoreFoundation/CFBundle.h>
#include <ApplicationServices/ApplicationServices.h> #include <ApplicationServices/ApplicationServices.h>
......
...@@ -149,9 +149,6 @@ if test -z "$f_platform"; then ...@@ -149,9 +149,6 @@ if test -z "$f_platform"; then
FreeBSD:*) FreeBSD:*)
f_platform=freebsd-g++ f_platform=freebsd-g++
;; ;;
GNU:*)
f_platform=gnu-g++
;;
HP-UX:*) HP-UX:*)
f_platform=hpux-g++ f_platform=hpux-g++
;; ;;
...@@ -161,7 +158,7 @@ if test -z "$f_platform"; then ...@@ -161,7 +158,7 @@ if test -z "$f_platform"; then
IRIX:*) IRIX:*)
f_platform=irix-n32 f_platform=irix-n32
;; ;;
Linux:*) Linux:*|GNU:*|GNU/*:*)
f_platform=linux-g++ f_platform=linux-g++
;; ;;
NetBSD:*) NetBSD:*)
...@@ -239,27 +236,6 @@ if test "$f_wizard" = YES; then ...@@ -239,27 +236,6 @@ if test "$f_wizard" = YES; then
QTDIR=$d QTDIR=$d
fi fi
done done
# if test -d "/usr/lib/qt3/lib"; then
# if test -d "/usr/lib/qt3/include"; then
# if test -x "/usr/lib/qt3/bin/moc"; then
# QTDIR="/usr/lib/qt3"
# fi
# fi
# fi
# if test -d "/usr/lib/qt2/lib"; then
# if test -d "/usr/lib/qt2/include"; then
# if test -x "/usr/lib/qt2/bin/moc"; then
# QTDIR="/usr/lib/qt2"
# fi
# fi
# fi
# if test -d "/usr/lib/qt/lib"; then
# if test -d "/usr/lib/qt/include"; then
# if test -x "/usr/lib/qt/bin/moc"; then
# QTDIR="/usr/lib/qt"
# fi
# fi
# fi
else else
echo " Detected Qt via the QTDIR environment variable..." echo " Detected Qt via the QTDIR environment variable..."
echo -n " " echo -n " "
......
...@@ -56,6 +56,7 @@ documentation: ...@@ -56,6 +56,7 @@ documentation:
\refitem cmddef \\def \refitem cmddef \\def
\refitem cmddefgroup \\defgroup \refitem cmddefgroup \\defgroup
\refitem cmddeprecated \\deprecated \refitem cmddeprecated \\deprecated
\refitem cmddir \\dir
\refitem cmddontinclude \\dontinclude \refitem cmddontinclude \\dontinclude
\refitem cmddot \\dot \refitem cmddot \\dot
\refitem cmddotfile \\dotfile \refitem cmddotfile \\dotfile
...@@ -273,6 +274,18 @@ doxygen. Unrecognized commands are treated as normal text. ...@@ -273,6 +274,18 @@ doxygen. Unrecognized commands are treated as normal text.
\sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup", \sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup",
\ref cmdweakgroup "\\weakgroup". \ref cmdweakgroup "\\weakgroup".
<hr>
\section cmddir \dir [<path fragment>]
\addindex \\dir
Indicates that a comment block contains documentation for a directory.
The "path fragment" argument should include the directory name and
enough of the path to be unique w.r.t. the other directories in the project.
The \ref cfg_show_dirs "SHOW_DIRECTORIES" option determines whether
or not the directory information is shown and the
\ref cfg_strip_from_path "STRIP_FROM_PATH" option determines what is
stripped from the full path before it appears in the output.
<hr> <hr>
\section cmdenum \enum <name> \section cmdenum \enum <name>
......
...@@ -182,6 +182,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -182,6 +182,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_search_includes SEARCH_INCLUDES \refitem cfg_search_includes SEARCH_INCLUDES
\refitem cfg_searchengine SEARCHENGINE \refitem cfg_searchengine SEARCHENGINE
\refitem cfg_short_names SHORT_NAMES \refitem cfg_short_names SHORT_NAMES
\refitem cfg_show_dirs SHOW_DIRECTORIES
\refitem cfg_show_include_files SHOW_INCLUDE_FILES \refitem cfg_show_include_files SHOW_INCLUDE_FILES
\refitem cfg_show_used_files SHOW_USED_FILES \refitem cfg_show_used_files SHOW_USED_FILES
\refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS \refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS
...@@ -627,6 +628,13 @@ function's detailed documentation block. ...@@ -627,6 +628,13 @@ function's detailed documentation block.
at the bottom of the documentation of classes and structs. If set to \c YES the at the bottom of the documentation of classes and structs. If set to \c YES the
list will mention the files that were used to generate the documentation. list will mention the files that were used to generate the documentation.
\anchor cfg_show_dirs
<dt>\c SHOW_DIRECTORIES <dd>
\addindex SHOW_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
in the documentation.
</dl> </dl>
\section messages_input Options related to warning and progress messages \section messages_input Options related to warning and progress messages
......
...@@ -49,10 +49,10 @@ It can help you in three ways: ...@@ -49,10 +49,10 @@ It can help you in three ways:
for this manual). for this manual).
</ol> </ol>
Doxygen is developed under <a href="http://www.linux.org">Linux</a>, Doxygen is developed under <a href="http://www.linux.org">Linux</a>
but is set-up to be highly portable. As a result, it runs on most and Mac OS X, but is set-up to be highly portable. As a result, it
other Unix flavors as well. Furthermore, executables for runs on most other Unix flavors as well. Furthermore, executables for
Windows 9x/NT and Mac OS X are available. Windows are available.
\n This manual is divided into three parts, each of which is divided into several \n This manual is divided into three parts, each of which is divided into several
sections. sections.
...@@ -128,9 +128,19 @@ for more details. ...@@ -128,9 +128,19 @@ for more details.
Documents produced by doxygen are derivative works derived from the Documents produced by doxygen are derivative works derived from the
input used in their production; they are not affected by this license. input used in their production; they are not affected by this license.
<h2>Projects using doxygen</h2> <h2>User examples</h2>
I have compiled a Doxygen supports a number of \ref output "output formats" where HTML is the
most popular one. I've gathered
\htmlonly
<a href="http://www.doxygen.org/results.html">some nice examples</a>
\endhtmlonly
\latexonly
some nice examples (see {\tt http://www.doxygen.org/results.html})
\endlatexonly
of real-life projects using doxygen.
These are part of a larger
\htmlonly \htmlonly
<a href="http://www.doxygen.org/projects.html">list of projects</a> <a href="http://www.doxygen.org/projects.html">list of projects</a>
that use doxygen. that use doxygen.
......
...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile). configuration file (with default name and known as Doxyfile).
Currently (version 1.3.8-20040803), 30 languages Currently (version 1.3.8-20040825), 30 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...@@ -54,13 +54,13 @@ when the translator was updated. ...@@ -54,13 +54,13 @@ when the translator was updated.
<td>Afrikaans</td> <td>Afrikaans</td>
<td>Johan Prinsloo</td> <td>Johan Prinsloo</td>
<td>johan at zippysnoek dot com</td> <td>johan at zippysnoek dot com</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Brazilian Portuguese</td> <td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td> <td>Fabio "FJTC" Jun Takada Chino</td>
<td>chino at icmc dot sc dot usp dot br</td> <td>chino at icmc dot sc dot usp dot br</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td> <td>Chinese</td>
<td>Li Daobing<br>Wei Liu</td> <td>Li Daobing<br>Wei Liu</td>
<td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td> <td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
...@@ -84,25 +84,25 @@ when the translator was updated. ...@@ -84,25 +84,25 @@ when the translator was updated.
<td>Croatian</td> <td>Croatian</td>
<td>Boris Bralo</td> <td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td> <td>boris.bralo at zg dot htnet dot hr</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Czech</td> <td>Czech</td>
<td>Petr P&#x0159;ikryl</td> <td>Petr P&#x0159;ikryl</td>
<td>prikrylp at skil dot cz</td> <td>prikrylp at skil dot cz</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Danish</td> <td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td> <td>Erik S&oslash;e S&oslash;rensen</td>
<td>eriksoe+doxygen at daimi dot au dot dk</td> <td>eriksoe+doxygen at daimi dot au dot dk</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Dutch</td> <td>Dutch</td>
<td>Dimitri van Heesch</td> <td>Dimitri van Heesch</td>
<td>dimitri at stack dot nl</td> <td>dimitri at stack dot nl</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>English</td> <td>English</td>
...@@ -126,7 +126,7 @@ when the translator was updated. ...@@ -126,7 +126,7 @@ when the translator was updated.
<td>German</td> <td>German</td>
<td>Jens Seidel</td> <td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td> <td>jensseidel at users dot sf dot net</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -138,19 +138,19 @@ when the translator was updated. ...@@ -138,19 +138,19 @@ when the translator was updated.
<td>Hungarian</td> <td>Hungarian</td>
<td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td> <td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td>
<td>foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net</td> <td>foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net</td>
<td>1.3.8</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Italian</td> <td>Italian</td>
<td>Alessandro Falappa<br>Ahmed Aldo Faisal</td> <td>Alessandro Falappa<br>Ahmed Aldo Faisal</td>
<td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td> <td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Japanese</td> <td>Japanese</td>
<td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td> <td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td>
<td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td> <td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>JapaneseEn</td> <td>JapaneseEn</td>
...@@ -180,13 +180,13 @@ when the translator was updated. ...@@ -180,13 +180,13 @@ when the translator was updated.
<td>Norwegian</td> <td>Norwegian</td>
<td>Lars Erik Jordet</td> <td>Lars Erik Jordet</td>
<td>lejordet at gmail dot com</td> <td>lejordet at gmail dot com</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Polish</td> <td>Polish</td>
<td>Piotr Kaminski<br>Grzegorz Kowal</td> <td>Piotr Kaminski<br>Grzegorz Kowal</td>
<td>Piotr.Kaminski at ctm dot gdynia dot pl<br>g_kowal at poczta dot onet dot pl</td> <td>Piotr.Kaminski at ctm dot gdynia dot pl<br>g_kowal at poczta dot onet dot pl</td>
<td>1.3</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Portuguese</td> <td>Portuguese</td>
...@@ -204,7 +204,7 @@ when the translator was updated. ...@@ -204,7 +204,7 @@ when the translator was updated.
<td>Russian</td> <td>Russian</td>
<td>Alexandr Chelpanov</td> <td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td> <td>cav at cryptopro dot ru</td>
<td>up-to-date</td> <td>1.3.9</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Serbian</td> <td>Serbian</td>
...@@ -257,25 +257,25 @@ when the translator was updated. ...@@ -257,25 +257,25 @@ when the translator was updated.
\hline \hline
\hline \hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & up-to-date \\ Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & up-to-date \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & 1.3.9 \\
\hline \hline
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\ Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\hline \hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\ Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.3.9 \\
~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\ Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\ ~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\hline \hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.3.9 \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.3.9 \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & up-to-date \\ Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & 1.3.9 \\
\hline \hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
...@@ -283,17 +283,17 @@ when the translator was updated. ...@@ -283,17 +283,17 @@ when the translator was updated.
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & up-to-date \\ German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.3.9 \\
\hline \hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline \hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & 1.3.8 \\ Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & 1.3.9 \\
~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\ ~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\
\hline \hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.3.9 \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
\hline \hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & up-to-date \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\ ~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\
~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\ ~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
\hline \hline
...@@ -307,16 +307,16 @@ when the translator was updated. ...@@ -307,16 +307,16 @@ when the translator was updated.
~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\ ~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\ ~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & up-to-date \\ Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.3.9 \\
\hline \hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.3 \\ Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.3.9 \\
~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\ ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\ Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
\hline \hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.3.9 \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\
\hline \hline
......
This diff is collapsed.
Makefile Makefile
libmd5.pro libmd5.pro
Makefile.libmd5
Makefile Makefile
libpng.pro libpng.pro
Makefile.libpng
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.8_20040824 Version: 1.3.8_20040906
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
Makefile Makefile
qtools.pro qtools.pro
Makefile.qtools
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
#define _OS_ULTRIX_ #define _OS_ULTRIX_
#elif defined(reliantunix) #elif defined(reliantunix)
#define _OS_RELIANTUNIX_ #define _OS_RELIANTUNIX_
#elif defined(linux) || defined(__linux) || defined(__linux__) #elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
#define _OS_LINUX_ #define _OS_LINUX_
#elif defined(__FreeBSD__) #elif defined(__FreeBSD__)
#define _OS_FREEBSD_ #define _OS_FREEBSD_
...@@ -116,8 +116,6 @@ ...@@ -116,8 +116,6 @@
#define _OS_LYNXOS_ #define _OS_LYNXOS_
#elif defined(_UNIXWARE) #elif defined(_UNIXWARE)
#define _OS_UNIXWARE_ #define _OS_UNIXWARE_
#elif defined(__GNU__)
#define _OS_GNU_
#elif defined(DGUX) #elif defined(DGUX)
#define _OS_DGUX_ #define _OS_DGUX_
#elif defined(__QNX__) #elif defined(__QNX__)
......
...@@ -3,3 +3,20 @@ doxygen.pro ...@@ -3,3 +3,20 @@ doxygen.pro
doxytag.pro doxytag.pro
libdoxycfg.pro libdoxycfg.pro
libdoxygen.pro libdoxygen.pro
Makefile.doxygen
Makefile.doxytag
Makefile.libdoxycfg
Makefile.libdoxygen
ce_lex.cpp
ce_parse.cpp
ce_parse.h
code.cpp
commentcnv.cpp
config.cpp
declinfo.cpp
defargs.cpp
doctokenizer.cpp
doxytag.cpp
pre.cpp
scanner.cpp
version.cpp
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="incdepgraph" type="graphType" minOccurs="0" /> <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
<xsd:element name="invincdepgraph" type="graphType" minOccurs="0" /> <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
<xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
...@@ -647,6 +648,7 @@ ...@@ -647,6 +648,7 @@
<xsd:enumeration value="group" /> <xsd:enumeration value="group" />
<xsd:enumeration value="page" /> <xsd:enumeration value="page" />
<xsd:enumeration value="example" /> <xsd:enumeration value="example" />
<xsd:enumeration value="dir" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
" <xsd:element name=\"includedby\" type=\"incType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"includedby\" type=\"incType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"incdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n" " <xsd:element name=\"incdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"invincdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n" " <xsd:element name=\"invincdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"innerdir\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innerfile\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"innerfile\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innerclass\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"innerclass\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innernamespace\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"innernamespace\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
...@@ -647,6 +648,7 @@ ...@@ -647,6 +648,7 @@
" <xsd:enumeration value=\"group\" />\n" " <xsd:enumeration value=\"group\" />\n"
" <xsd:enumeration value=\"page\" />\n" " <xsd:enumeration value=\"page\" />\n"
" <xsd:enumeration value=\"example\" />\n" " <xsd:enumeration value=\"example\" />\n"
" <xsd:enumeration value=\"dir\" />\n"
" </xsd:restriction>\n" " </xsd:restriction>\n"
" </xsd:simpleType>\n" " </xsd:simpleType>\n"
"\n" "\n"
......
...@@ -1814,6 +1814,13 @@ void Config::create() ...@@ -1814,6 +1814,13 @@ void Config::create()
"list will mention the files that were used to generate the documentation. \n", "list will mention the files that were used to generate the documentation. \n",
TRUE TRUE
); );
cb = addBool(
"SHOW_DIRECTORIES",
"If the sources in your project are distributed over multiple directories \n"
"then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \n"
"in the documentation.\n",
TRUE
);
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
addInfo( "Messages","configuration options related to warning and progress messages"); addInfo( "Messages","configuration options related to warning and progress messages");
......
...@@ -2,18 +2,34 @@ ...@@ -2,18 +2,34 @@
#include "filename.h" #include "filename.h"
#include "doxygen.h" #include "doxygen.h"
#include "util.h" #include "util.h"
#include "outputlist.h"
#include "language.h"
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// method implementation // method implementation
DirDef::DirDef(const char *path) : Definition(path,1,path), static int g_dirCount=0;
m_parent(0)
DirDef::DirDef(const char *path) : Definition(path,1,path)
{ {
// get short name (stipping the paths mentioned in STRIP_FROM_PATH) // get display name (stipping the paths mentioned in STRIP_FROM_PATH)
m_dispName = stripFromPath(path); m_dispName = stripFromPath(path);
// get short name (last part of path)
m_shortName = path;
if (m_shortName.at(m_shortName.length()-1)=='/')
{ // strip trailing /
m_shortName = m_shortName.left(m_shortName.length()-1);
}
int pi=m_shortName.findRev('/');
if (pi!=-1)
{ // remove everything till the last /
m_shortName = m_shortName.mid(pi+1);
}
m_subdirs.setAutoDelete(TRUE); m_subdirs.setAutoDelete(TRUE);
m_fileList = new FileList; m_fileList = new FileList;
m_classSDict = new ClassSDict(17); m_classSDict = new ClassSDict(17);
m_dirCount = g_dirCount++;
} }
DirDef::~DirDef() DirDef::~DirDef()
...@@ -22,16 +38,193 @@ DirDef::~DirDef() ...@@ -22,16 +38,193 @@ DirDef::~DirDef()
void DirDef::addSubDir(DirDef *subdir) void DirDef::addSubDir(DirDef *subdir)
{ {
m_subdirs.append(subdir); m_subdirs.inSort(subdir);
subdir->m_parent=this; subdir->setOuterScope(this);
} }
void DirDef::addFile(FileDef *fd) void DirDef::addFile(FileDef *fd)
{ {
m_fileList->append(fd); m_fileList->inSort(fd);
fd->setDirDef(this); fd->setDirDef(this);
} }
QCString DirDef::getOutputFileBase() const
{
//return "dir_"+convertNameToFile(name());
return QCString().sprintf("dir_%06d",m_dirCount);
}
void DirDef::writeDetailedDocumentation(OutputList &ol)
{
if (!briefDescription().isEmpty() || !documentation().isEmpty())
{
ol.writeRuler();
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.writeAnchor(0,"_details");
ol.popGeneratorState();
ol.startGroupHeader();
ol.parseText(theTranslator->trDetailedDescription());
ol.endGroupHeader();
// repeat brief description
if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF"))
{
ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),FALSE,FALSE);
ol.newParagraph();
}
// write documentation
if (!documentation().isEmpty())
{
ol.parseDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE);
}
}
}
void DirDef::writeDocumentation(OutputList &ol)
{
ol.pushGeneratorState();
QCString shortTitle=theTranslator->trDirReference(m_shortName);
QCString title=theTranslator->trDirReference(m_dispName);
startFile(ol,getOutputFileBase(),name(),title);
// write navigation path
writeNavigationPath(ol);
startTitle(ol,getOutputFileBase());
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.parseText(shortTitle);
ol.enableAll();
ol.disable(OutputGenerator::Html);
ol.parseText(title);
ol.popGeneratorState();
endTitle(ol,getOutputFileBase(),title);
// write brief or details (if DETAILS_AT_TOP)
if (Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
ol.newParagraph();
}
else if (!briefDescription().isEmpty())
{
ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),TRUE,FALSE);
ol.writeString(" \n");
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.disable(OutputGenerator::Man);
ol.startTextLink(0,"_details");
ol.parseText(theTranslator->trMore());
ol.endTextLink();
ol.enableAll();
ol.disableAllBut(OutputGenerator::Man);
ol.newParagraph();
ol.popGeneratorState();
}
ol.startMemberSections();
// write subdir list
if (m_subdirs.count()>0)
{
ol.startMemberHeader();
ol.parseText(theTranslator->trDir(TRUE,FALSE));
ol.endMemberHeader();
ol.startMemberList();
DirDef *dd=m_subdirs.first();
while (dd)
{
ol.startMemberItem(0);
ol.parseText(theTranslator->trDir(FALSE,TRUE));
ol.insertMemberAlign();
ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),0,dd->shortName());
ol.endMemberItem();
if (!dd->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
{
ol.startMemberDescription();
ol.parseDoc(briefFile(),briefLine(),dd,0,dd->briefDescription(),FALSE,FALSE);
ol.endMemberDescription();
ol.newParagraph();
}
dd=m_subdirs.next();
}
ol.endMemberList();
}
// write file list
if (m_fileList->count()>0)
{
ol.startMemberHeader();
ol.parseText(theTranslator->trFile(TRUE,FALSE));
ol.endMemberHeader();
ol.startMemberList();
FileDef *fd=m_fileList->first();
while (fd)
{
ol.startMemberItem(0);
ol.docify("file ");
ol.insertMemberAlign();
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name());
//if (!Config_getString("GENERATE_TAGFILE").isEmpty())
//{
// Doxygen::tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
//}
ol.endMemberItem();
if (!fd->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
{
ol.startMemberDescription();
ol.parseDoc(briefFile(),briefLine(),fd,0,fd->briefDescription(),FALSE,FALSE);
ol.endMemberDescription();
ol.newParagraph();
}
fd=m_fileList->next();
}
ol.endMemberList();
}
ol.endMemberSections();
if (!Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
}
// write details (if !DETAILS_AT_TOP)
endFile(ol);
ol.popGeneratorState();
}
void DirDef::writePathFragment(OutputList &ol)
{
if (getOuterScope()!=Doxygen::globalScope &&
getOuterScope()->definitionType()==Definition::TypeDir)
{
((DirDef*)getOuterScope())->writePathFragment(ol);
ol.writeString("&nbsp;/&nbsp;");
}
ol.writeObjectLink(getReference(),getOutputFileBase(),0,shortName());
}
void DirDef::writeNavigationPath(OutputList &ol)
{
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString("<div class=\"nav\">\n");
writePathFragment(ol);
ol.writeString("</div>\n");
ol.popGeneratorState();
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// helper functions // helper functions
...@@ -68,6 +261,7 @@ bool DirDef::matchPath(const QCString &path,QStrList &l) ...@@ -68,6 +261,7 @@ bool DirDef::matchPath(const QCString &path,QStrList &l)
*/ */
DirDef *DirDef::mergeDirectoryInTree(const QCString &path) DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
{ {
//printf("DirDef::mergeDirectoryInTree(%s)\n",path.data());
int p=0,i=0; int p=0,i=0;
DirDef *dir=0; DirDef *dir=0;
while ((i=path.find('/',p))!=-1) while ((i=path.find('/',p))!=-1)
...@@ -96,7 +290,8 @@ void buildDirectories() ...@@ -96,7 +290,8 @@ void buildDirectories()
FileDef *fd; FileDef *fd;
for (;(fd=fni.current());++fni) for (;(fd=fni.current());++fni)
{ {
if (!fd->getReference().isEmpty()) //printf("buildDirectories %s\n",fd->name().data());
if (fd->getReference().isEmpty())
{ {
DirDef *dir; DirDef *dir;
if ((dir=Doxygen::directories.find(fd->getPath()))==0) // new directory if ((dir=Doxygen::directories.find(fd->getPath()))==0) // new directory
...@@ -112,23 +307,33 @@ void buildDirectories() ...@@ -112,23 +307,33 @@ void buildDirectories()
} }
} }
DirDef *root = new DirDef("root:"); //DirDef *root = new DirDef("root:");
// compute relations between directories => introduce container dirs. // compute relations between directories => introduce container dirs.
DirDef *dir; DirDef *dir;
SDict<DirDef>::Iterator sdi(Doxygen::directories); DirSDict::Iterator sdi(Doxygen::directories);
for (sdi.toFirst();(dir=sdi.current());++sdi) for (sdi.toFirst();(dir=sdi.current());++sdi)
{ {
printf("New dir %s\n",dir->displayName().data()); //printf("New dir %s\n",dir->displayName().data());
QCString name = dir->name(); QCString name = dir->name();
int i=name.findRev('/',name.length()-2); int i=name.findRev('/',name.length()-2);
if (i!=-1) if (i!=-1)
{ {
DirDef *parent = Doxygen::directories.find(name.left(i+1)); DirDef *parent = Doxygen::directories.find(name.left(i+1));
if (parent==0) parent=root; //if (parent==0) parent=root;
parent->addSubDir(dir); if (parent) parent->addSubDir(dir);
printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n", //printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n",
dir->displayName().data(), parent->displayName().data()); // dir->displayName().data(), parent->displayName().data());
} }
} }
} }
void generateDirDocs(OutputList &ol)
{
DirDef *dir;
DirSDict::Iterator sdi(Doxygen::directories);
for (sdi.toFirst();(dir=sdi.current());++sdi)
{
dir->writeDocumentation(ol);
}
}
...@@ -22,10 +22,21 @@ ...@@ -22,10 +22,21 @@
#include "sortdict.h" #include "sortdict.h"
#include "definition.h" #include "definition.h"
#include <qlist.h>
class FileList; class FileList;
class ClassSDict; class ClassSDict;
class QStrList; class QStrList;
class FileDef; class FileDef;
class OutputList;
class DirDef;
class DirDefList : public QList<DirDef>
{
public:
int compareItems(GCI item1,GCI item2);
};
class DirDef : public Definition class DirDef : public Definition
{ {
...@@ -33,29 +44,54 @@ class DirDef : public Definition ...@@ -33,29 +44,54 @@ class DirDef : public Definition
DirDef(const char *path); DirDef(const char *path);
virtual ~DirDef(); virtual ~DirDef();
virtual DefType definitionType() { return TypeDir; } virtual DefType definitionType() { return TypeDir; }
virtual QCString getOutputFileBase() const { return ""; } virtual QCString getOutputFileBase() const;
virtual bool isLinkableInProject() const { return FALSE; } virtual bool isLinkableInProject() const { return !isReference() && hasDocumentation(); }
virtual bool isLinkable() const { return FALSE; } virtual bool isLinkable() const { return isReference() || isLinkableInProject(); }
QCString displayName() const { return m_dispName; } QCString displayName() const { return m_dispName; }
QCString shortName() const { return m_shortName; }
void addSubDir(DirDef *subdir); void addSubDir(DirDef *subdir);
FileList * getFiles() const { return m_fileList; } FileList * getFiles() const { return m_fileList; }
ClassSDict * getClasses() const { return m_classSDict; } ClassSDict * getClasses() const { return m_classSDict; }
DirDef *parent() const { return m_parent; }
void addFile(FileDef *fd); void addFile(FileDef *fd);
void writeDetailedDocumentation(OutputList &ol);
void writeDocumentation(OutputList &ol);
void writeNavigationPath(OutputList &ol);
const QList<DirDef> &subDirs() const { return m_subdirs; }
static DirDef *mergeDirectoryInTree(const QCString &path); static DirDef *mergeDirectoryInTree(const QCString &path);
bool visited;
private: private:
void writePathFragment(OutputList &ol);
static DirDef *createNewDir(const char *path); static DirDef *createNewDir(const char *path);
static bool matchPath(const QCString &path,QStrList &l); static bool matchPath(const QCString &path,QStrList &l);
QList<DirDef> m_subdirs; DirDefList m_subdirs;
DirDef *m_parent;
QCString m_dispName; QCString m_dispName;
QCString m_shortName;
FileList *m_fileList; // list of files in the group FileList *m_fileList; // list of files in the group
ClassSDict *m_classSDict; // list of classes in the group ClassSDict *m_classSDict; // list of classes in the group
int m_dirCount;
}; };
inline int DirDefList::compareItems(GCI item1,GCI item2)
{
return stricmp(((DirDef *)item1)->shortName(),((DirDef *)item2)->shortName());
}
class DirSDict : public SDict<DirDef>
{
public:
DirSDict(int size) : SDict<DirDef>(size) {}
int compareItems(GCI item1,GCI item2)
{
return stricmp(((DirDef *)item1)->shortName(),((DirDef *)item2)->shortName());
}
};
void buildDirectories(); void buildDirectories();
void generateDirDocs(OutputList &ol);
#endif #endif
...@@ -121,7 +121,7 @@ SDict<DefinitionList> *Doxygen::symbolMap; ...@@ -121,7 +121,7 @@ SDict<DefinitionList> *Doxygen::symbolMap;
bool Doxygen::outputToWizard=FALSE; bool Doxygen::outputToWizard=FALSE;
QDict<int> * Doxygen::htmlDirMap = 0; QDict<int> * Doxygen::htmlDirMap = 0;
QCache<LookupInfo> Doxygen::lookupCache(20000,20000); QCache<LookupInfo> Doxygen::lookupCache(20000,20000);
SDict<DirDef> Doxygen::directories(17); DirSDict Doxygen::directories(17);
static StringList inputFiles; static StringList inputFiles;
static StringDict excludeNameDict(1009); // sections static StringDict excludeNameDict(1009); // sections
...@@ -6450,6 +6450,61 @@ static void findDefineDocumentation(Entry *root) ...@@ -6450,6 +6450,61 @@ static void findDefineDocumentation(Entry *root)
} }
} }
//----------------------------------------------------------------------------
static void findDirDocumentation(Entry *root)
{
if (root->section == Entry::DIRDOC_SEC)
{
QCString normalizedName = root->name;
normalizedName = substitute(normalizedName,"\\","/");
if (normalizedName.at(normalizedName.length()-1)!='/')
{
normalizedName+='/';
}
DirDef *dir,*matchingDir=0;
SDict<DirDef>::Iterator sdi(Doxygen::directories);
for (sdi.toFirst();(dir=sdi.current());++sdi)
{
printf("Dir: %s<->%s\n",dir->name().data(),normalizedName.data());
if (dir->name().right(normalizedName.length())==normalizedName)
{
if (matchingDir)
{
warn(root->fileName,root->startLine,
"Warning: \\dir command matches multiple directories.\n"
" Applying the command for directory %s\n"
" Ignoring the command for directory %s\n",
matchingDir->name().data(),dir->name().data()
);
}
else
{
matchingDir=dir;
}
}
}
if (matchingDir)
{
printf("Match for with dir %s\n",matchingDir->name().data());
matchingDir->setBriefDescription(root->brief,root->briefFile,root->briefLine);
matchingDir->setDocumentation(root->doc,root->docFile,root->docLine);
}
else
{
warn(root->fileName,root->startLine,"Warning: No matching "
"directory found for command \\dir %s\n",root->name.data());
}
}
EntryListIterator eli(*root->sublist);
Entry *e;
for (;(e=eli.current());++eli)
{
findDirDocumentation(e);
}
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// create a (sorted) list of separate documentation pages // create a (sorted) list of separate documentation pages
...@@ -7329,41 +7384,6 @@ static int readDir(QFileInfo *fi, ...@@ -7329,41 +7384,6 @@ static int readDir(QFileInfo *fi,
return totalSize; return totalSize;
} }
//----------------------------------------------------------------------------
// read the file with name `name' into a string.
//static QCString readExampleFile(const char *name)
//{
// QCString example;
// QFileInfo fi(name);
// if (fi.exists())
// {
// QFile f((const char *)fi.absFilePath());
// if (f.open(IO_ReadOnly))
// {
// example.resize(fi.size()+1);
// if ((int)fi.size()!=f.readBlock(example.data(),fi.size()))
// {
// err("Error while reading file %s\n",fi.absFilePath().data());
// //exit(1);
// return "";
// }
// example.at(fi.size())='\0';
// }
// else
// {
// err("Error opening file %s\n",fi.absFilePath().data());
// //exit(1);
// return "";
// }
// }
// else
// {
// err("Error: example file %s does not exist\n",name);
// exit(1);
// }
// return example;
//}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// read a file or all files in a directory and append their contents to the // read a file or all files in a directory and append their contents to the
...@@ -8257,8 +8277,9 @@ void parseInput() ...@@ -8257,8 +8277,9 @@ void parseInput()
msg("Freeing input...\n"); msg("Freeing input...\n");
input.resize(0); input.resize(0);
//msg("Building directory list...\n"); msg("Building directory list...\n");
//buildDirectories(); buildDirectories();
findDirDocumentation(root);
msg("Building group list...\n"); msg("Building group list...\n");
buildGroupList(root); buildGroupList(root);
...@@ -8480,6 +8501,24 @@ void generateOutput() ...@@ -8480,6 +8501,24 @@ void generateOutput()
if (Config_getBool("GENERATE_LATEX")) writeDoxFont(Config_getString("LATEX_OUTPUT")); if (Config_getBool("GENERATE_LATEX")) writeDoxFont(Config_getString("LATEX_OUTPUT"));
if (Config_getBool("GENERATE_RTF")) writeDoxFont(Config_getString("RTF_OUTPUT")); if (Config_getBool("GENERATE_RTF")) writeDoxFont(Config_getString("RTF_OUTPUT"));
msg("Generating style sheet...\n");
//printf("writing style info\n");
outputList->writeStyleInfo(0); // write first part
outputList->disableAllBut(OutputGenerator::Latex);
outputList->parseText(
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(1); // write second part
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part
outputList->parseText(
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(3); // write fourth part
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part
outputList->enableAll();
//statistics(); //statistics();
// count the number of documented elements in the lists we have built. // count the number of documented elements in the lists we have built.
...@@ -8522,12 +8561,24 @@ void generateOutput() ...@@ -8522,12 +8561,24 @@ void generateOutput()
msg("Generating group documentation...\n"); msg("Generating group documentation...\n");
generateGroupDocs(); generateGroupDocs();
if (Config_getBool("SHOW_DIRECTORIES"))
{
msg("Generating directory documentation...\n");
generateDirDocs(*outputList);
}
msg("Generating namespace index...\n"); msg("Generating namespace index...\n");
generateNamespaceDocs(); generateNamespaceDocs();
msg("Generating group index...\n"); msg("Generating group index...\n");
writeGroupIndex(*outputList); writeGroupIndex(*outputList);
if (Config_getBool("SHOW_DIRECTORIES"))
{
msg("Generating directory index...\n");
writeDirIndex(*outputList);
}
msg("Generating example index...\n"); msg("Generating example index...\n");
writeExampleIndex(*outputList); writeExampleIndex(*outputList);
...@@ -8549,24 +8600,6 @@ void generateOutput() ...@@ -8549,24 +8600,6 @@ void generateOutput()
//msg("Generating search index...\n"); //msg("Generating search index...\n");
//generateSearchIndex(); //generateSearchIndex();
msg("Generating style sheet...\n");
//printf("writing style info\n");
outputList->writeStyleInfo(0); // write first part
outputList->disableAllBut(OutputGenerator::Latex);
outputList->parseText(
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(1); // write second part
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part
outputList->parseText(
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(3); // write fourth part
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part
outputList->enableAll();
if (Config_getBool("GENERATE_RTF")) if (Config_getBool("GENERATE_RTF"))
{ {
msg("Combining RTF output...\n"); msg("Combining RTF output...\n");
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "section.h" #include "section.h"
#include "membergroup.h" #include "membergroup.h"
#include "reflist.h" #include "reflist.h"
#include "dirdef.h"
class PageSList; class PageSList;
class PageSDict; class PageSDict;
...@@ -113,7 +114,7 @@ class Doxygen ...@@ -113,7 +114,7 @@ class Doxygen
static bool outputToWizard; static bool outputToWizard;
static QDict<int> *htmlDirMap; static QDict<int> *htmlDirMap;
static QCache<LookupInfo> lookupCache; static QCache<LookupInfo> lookupCache;
static SDict<DirDef> directories; static DirSDict directories;
}; };
void initDoxygen(); void initDoxygen();
......
...@@ -230,7 +230,8 @@ class Entry ...@@ -230,7 +230,8 @@ class Entry
USINGDECL_SEC = 0x14000000, USINGDECL_SEC = 0x14000000,
PACKAGE_SEC = 0x15000000, PACKAGE_SEC = 0x15000000,
PACKAGEDOC_SEC = 0x16000000, PACKAGEDOC_SEC = 0x16000000,
OBJCIMPL_SEC = 0x17000000 OBJCIMPL_SEC = 0x17000000,
DIRDOC_SEC = 0x18000000,
}; };
enum MemberSpecifier enum MemberSpecifier
{ {
......
...@@ -84,6 +84,7 @@ FileDef::FileDef(const char *p,const char *nm, ...@@ -84,6 +84,7 @@ FileDef::FileDef(const char *p,const char *nm,
package = 0; package = 0;
isSource = FALSE; isSource = FALSE;
docname = nm; docname = nm;
dir = 0;
if (Config_getBool("FULL_PATH_NAMES")) if (Config_getBool("FULL_PATH_NAMES"))
{ {
docname.prepend(stripFromPath(path.copy())); docname.prepend(stripFromPath(path.copy()));
...@@ -213,11 +214,29 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -213,11 +214,29 @@ void FileDef::writeDocumentation(OutputList &ol)
QCString pageTitle=theTranslator->trFileReference(docname); QCString pageTitle=theTranslator->trFileReference(docname);
startFile(ol,getOutputFileBase(),name(),pageTitle); startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase());
ol.parseText(pageTitle); if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
addGroupListToTitle(ol,this); {
endTitle(ol,getOutputFileBase(),docName()); getDirDef()->writeNavigationPath(ol);
//ol.newParagraph(); QCString pageTitleShort=theTranslator->trFileReference(name());
startTitle(ol,getOutputFileBase());
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.parseText(pageTitleShort); // Html only
ol.enableAll();
ol.disable(OutputGenerator::Html);
ol.parseText(pageTitle); // other output formats
ol.popGeneratorState();
addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),docname);
}
else
{
startTitle(ol,getOutputFileBase());
ol.parseText(pageTitle);
addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),docname);
}
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
...@@ -500,11 +519,23 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -500,11 +519,23 @@ void FileDef::writeDocumentation(OutputList &ol)
/*! Write a source listing of this file to the output */ /*! Write a source listing of this file to the output */
void FileDef::writeSource(OutputList &ol) void FileDef::writeSource(OutputList &ol)
{ {
QCString pageTitle = theTranslator->trSourceFile(docname);
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
startFile(ol,getSourceFileBase(),0,theTranslator->trSourceFile(docname)); startFile(ol,getSourceFileBase(),0,pageTitle);
startTitle(ol,0);
ol.parseText(docname); if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
endTitle(ol,0,0); {
getDirDef()->writeNavigationPath(ol);
startTitle(ol,getOutputFileBase());
ol.parseText(name());
endTitle(ol,getOutputFileBase(),docname);
}
else
{
startTitle(ol,0);
ol.parseText(docname);
endTitle(ol,0,0);
}
if (isLinkable()) if (isLinkable())
{ {
......
...@@ -455,7 +455,6 @@ void GroupDef::writeDetailedDocumentation(OutputList &ol) ...@@ -455,7 +455,6 @@ void GroupDef::writeDetailedDocumentation(OutputList &ol)
void GroupDef::writeDocumentation(OutputList &ol) void GroupDef::writeDocumentation(OutputList &ol)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
//ol.disable(OutputGenerator::Man);
startFile(ol,getOutputFileBase(),name(),title); startFile(ol,getOutputFileBase(),name(),title);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.parseText(title); ol.parseText(title);
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "index.h" #include "index.h"
#include "pagedef.h" #include "pagedef.h"
#include "debug.h" #include "debug.h"
#include "dirdef.h"
// #define GROUP_COLOR "#ff8080" // #define GROUP_COLOR "#ff8080"
...@@ -58,6 +59,15 @@ static const char *defaultStyleSheet = ...@@ -58,6 +59,15 @@ static const char *defaultStyleSheet =
" padding: 2px;\n" " padding: 2px;\n"
" line-height: 140%;\n" " line-height: 140%;\n"
"}\n" "}\n"
"DIV.nav {\n"
" width: 100%;\n"
" background-color: #eeeeff;\n"
" border: 1px solid #b0b0b0;\n"
" text-align: center;\n"
" margin: 2px;\n"
" padding: 2px;\n"
" line-height: 140%;\n"
"}\n"
"A.qindex {\n" "A.qindex {\n"
" text-decoration: none;\n" " text-decoration: none;\n"
" font-weight: bold;\n" " font-weight: bold;\n"
...@@ -1365,6 +1375,13 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact, ...@@ -1365,6 +1375,13 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
t << fixSpaces(theTranslator->trModules()); t << fixSpaces(theTranslator->trModules());
endQuickIndexItem(t); endQuickIndexItem(t);
} }
if (Config_getBool("SHOW_DIRECTORIES") && documentedDirs>0)
{
startQuickIndexItem(t,"dirs"+Doxygen::htmlFileExtension,
hli==HLI_Directories,compact,first,relPath);
t << fixSpaces(theTranslator->trDirectories());
endQuickIndexItem(t);
}
if (documentedNamespaces>0) if (documentedNamespaces>0)
{ {
startQuickIndexItem(t,"namespaces"+Doxygen::htmlFileExtension, startQuickIndexItem(t,"namespaces"+Doxygen::htmlFileExtension,
......
This diff is collapsed.
...@@ -26,15 +26,15 @@ enum IndexSections ...@@ -26,15 +26,15 @@ enum IndexSections
isTitlePageStart, isTitlePageStart,
isTitlePageAuthor, isTitlePageAuthor,
isMainPage, isMainPage,
// isPackageIndex,
isModuleIndex, isModuleIndex,
isDirIndex,
isNamespaceIndex, isNamespaceIndex,
isClassHierarchyIndex, isClassHierarchyIndex,
isCompoundIndex, isCompoundIndex,
isFileIndex, isFileIndex,
isPageIndex, isPageIndex,
// isPackageDocumentation,
isModuleDocumentation, isModuleDocumentation,
isDirDocumentation,
isNamespaceDocumentation, isNamespaceDocumentation,
isClassDocumentation, isClassDocumentation,
isFileDocumentation, isFileDocumentation,
...@@ -61,6 +61,7 @@ void writeExampleIndex(OutputList &ol); ...@@ -61,6 +61,7 @@ void writeExampleIndex(OutputList &ol);
void writePageIndex(OutputList &ol); void writePageIndex(OutputList &ol);
void writeFileMemberIndex(OutputList &ol); void writeFileMemberIndex(OutputList &ol);
void writeGroupIndex(OutputList &ol); void writeGroupIndex(OutputList &ol);
void writeDirIndex(OutputList &ol);
void writeNamespaceIndex(OutputList &ol); void writeNamespaceIndex(OutputList &ol);
void writeNamespaceMemberIndex(OutputList &ol); void writeNamespaceMemberIndex(OutputList &ol);
void writeGraphicalClassHierarchy(OutputList &ol); void writeGraphicalClassHierarchy(OutputList &ol);
...@@ -74,6 +75,7 @@ enum HighlightedItem ...@@ -74,6 +75,7 @@ enum HighlightedItem
HLI_None=0, HLI_None=0,
HLI_Main, HLI_Main,
HLI_Modules, HLI_Modules,
HLI_Directories,
HLI_Namespaces, HLI_Namespaces,
HLI_Hierarchy, HLI_Hierarchy,
HLI_Classes, HLI_Classes,
...@@ -148,6 +150,7 @@ extern int documentedFileMembers[FMHL_Total]; ...@@ -148,6 +150,7 @@ extern int documentedFileMembers[FMHL_Total];
extern int documentedNamespaceMembers[NMHL_Total]; extern int documentedNamespaceMembers[NMHL_Total];
extern int documentedHtmlFiles; extern int documentedHtmlFiles;
extern int documentedPages; extern int documentedPages;
extern int documentedDirs;
void startTitle(OutputList &ol,const char *fileName); void startTitle(OutputList &ol,const char *fileName);
void endTitle(OutputList &ol,const char *fileName,const char *name); void endTitle(OutputList &ol,const char *fileName,const char *name);
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<xsd:enumeration value="group"/> <xsd:enumeration value="group"/>
<xsd:enumeration value="page"/> <xsd:enumeration value="page"/>
<xsd:enumeration value="example"/> <xsd:enumeration value="example"/>
<xsd:enumeration value="dir"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
" <xsd:enumeration value=\"group\"/>\n" " <xsd:enumeration value=\"group\"/>\n"
" <xsd:enumeration value=\"page\"/>\n" " <xsd:enumeration value=\"page\"/>\n"
" <xsd:enumeration value=\"example\"/>\n" " <xsd:enumeration value=\"example\"/>\n"
" <xsd:enumeration value=\"dir\"/>\n"
" </xsd:restriction>\n" " </xsd:restriction>\n"
" </xsd:simpleType>\n" " </xsd:simpleType>\n"
"\n" "\n"
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "pagedef.h" #include "pagedef.h"
#include "docparser.h" #include "docparser.h"
#include "latexdocvisitor.h" #include "latexdocvisitor.h"
#include "dirdef.h"
//static QCString filterTitle(const char *s) //static QCString filterTitle(const char *s)
//{ //{
...@@ -102,6 +103,7 @@ LatexGenerator::LatexGenerator() : OutputGenerator() ...@@ -102,6 +103,7 @@ LatexGenerator::LatexGenerator() : OutputGenerator()
insideTabbing=FALSE; insideTabbing=FALSE;
firstDescItem=TRUE; firstDescItem=TRUE;
insidePre=FALSE; insidePre=FALSE;
m_indent=0;
} }
LatexGenerator::~LatexGenerator() LatexGenerator::~LatexGenerator()
...@@ -501,6 +503,10 @@ void LatexGenerator::startIndexSection(IndexSections is) ...@@ -501,6 +503,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Index}\n" t << "{"; //Module Index}\n"
break; break;
case isDirIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Directory Index}\n"
break;
case isNamespaceIndex: case isNamespaceIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Namespace Index}\" t << "{"; //Namespace Index}\"
...@@ -537,6 +543,22 @@ void LatexGenerator::startIndexSection(IndexSections is) ...@@ -537,6 +543,22 @@ void LatexGenerator::startIndexSection(IndexSections is)
} }
} }
break; break;
case isDirDocumentation:
{
SDict<DirDef>::Iterator dli(Doxygen::directories);
DirDef *dd;
bool found=FALSE;
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
{
if (dd->isLinkableInProject())
{
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Documentation}\n";
found=TRUE;
}
}
}
break;
case isNamespaceDocumentation: case isNamespaceDocumentation:
{ {
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
...@@ -637,6 +659,9 @@ void LatexGenerator::endIndexSection(IndexSections is) ...@@ -637,6 +659,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
case isModuleIndex: case isModuleIndex:
t << "}\n\\input{modules}\n"; t << "}\n\\input{modules}\n";
break; break;
case isDirIndex:
t << "}\n\\input{dirs}\n";
break;
case isNamespaceIndex: case isNamespaceIndex:
t << "}\n\\input{namespaces}\n"; t << "}\n\\input{namespaces}\n";
break; break;
...@@ -675,6 +700,29 @@ void LatexGenerator::endIndexSection(IndexSections is) ...@@ -675,6 +700,29 @@ void LatexGenerator::endIndexSection(IndexSections is)
} }
} }
break; break;
case isDirDocumentation:
{
SDict<DirDef>::Iterator dli(Doxygen::directories);
DirDef *dd;
bool found=FALSE;
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
{
if (dd->isLinkableInProject())
{
t << "}\n\\input{" << dd->getOutputFileBase() << "}\n";
found=TRUE;
}
}
for (;(dd=dli.current());++dli)
{
if (dd->isLinkableInProject())
{
if (compactLatex) t << "\\input"; else t << "\\include";
t << "{" << dd->getOutputFileBase() << "}\n";
}
}
}
break;
case isNamespaceDocumentation: case isNamespaceDocumentation:
{ {
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
...@@ -1321,10 +1369,39 @@ void LatexGenerator::endMemberItem() ...@@ -1321,10 +1369,39 @@ void LatexGenerator::endMemberItem()
t << endl; t << endl;
} }
void LatexGenerator::startMemberDescription()
{
if (!insideTabbing)
{
t << "\\begin{CompactList}\\small\\item\\em ";
}
else
{
for (int i=0;i<m_indent+1;i++) t << "\\>";
t << "{\\em ";
}
}
void LatexGenerator::endMemberDescription()
{
if (!insideTabbing)
{
t << "\\item\\end{CompactList}";
}
else
{
t << "}\\\\";
}
}
void LatexGenerator::writeNonBreakableSpace(int) void LatexGenerator::writeNonBreakableSpace(int)
{ {
if (insideTabbing) if (insideTabbing)
{
t << "\\>"; t << "\\>";
m_indent++;
}
else else
t << "\\ "; t << "\\ ";
} }
......
...@@ -49,7 +49,6 @@ class LatexGenerator : public OutputGenerator ...@@ -49,7 +49,6 @@ class LatexGenerator : public OutputGenerator
void endFile(); void endFile();
void clearBuffer(); void clearBuffer();
//void writeIndex();
void startIndexSection(IndexSections); void startIndexSection(IndexSections);
void endIndexSection(IndexSections); void endIndexSection(IndexSections);
void startProjectNumber(); void startProjectNumber();
...@@ -70,11 +69,6 @@ class LatexGenerator : public OutputGenerator ...@@ -70,11 +69,6 @@ class LatexGenerator : public OutputGenerator
void endIndexValue(const char *,bool); void endIndexValue(const char *,bool);
void startItemList() { t << "\\begin{CompactItemize}" << endl; } void startItemList() { t << "\\begin{CompactItemize}" << endl; }
void endItemList() { t << "\\end{CompactItemize}" << endl; } void endItemList() { t << "\\end{CompactItemize}" << endl; }
//void startEnumList() { t << "\\begin{enumerate}" << endl; }
//void endEnumList() { t << "\\end{enumerate}" << endl; }
//void startAlphabeticalIndexList() {}
//void endAlphabeticalIndexList() {}
//void writeIndexHeading(const char *) {}
void writeIndexItem(const char *ref,const char *file,const char *name); void writeIndexItem(const char *ref,const char *file,const char *name);
void docify(const char *text); void docify(const char *text);
void codify(const char *text); void codify(const char *text);
...@@ -86,7 +80,6 @@ class LatexGenerator : public OutputGenerator ...@@ -86,7 +80,6 @@ class LatexGenerator : public OutputGenerator
void endTextLink(); void endTextLink();
void startHtmlLink(const char *url); void startHtmlLink(const char *url);
void endHtmlLink(); void endHtmlLink();
//void writeMailLink(const char *url);
void startTypewriter() { t << "{\\tt "; } void startTypewriter() { t << "{\\tt "; }
void endTypewriter() { t << "}"; } void endTypewriter() { t << "}"; }
void startGroupHeader(); void startGroupHeader();
...@@ -119,19 +112,9 @@ class LatexGenerator : public OutputGenerator ...@@ -119,19 +112,9 @@ class LatexGenerator : public OutputGenerator
void writeAnchor(const char *fileName,const char *name); void writeAnchor(const char *fileName,const char *name);
void startCodeFragment() { t << endl << endl << "\\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}";
// insidePre=TRUE;
// }
//void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl;
// insidePre=FALSE;
// }
//void startVerbatimFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; }
//void endVerbatimFragment() { t << "\\end{verbatim}\\normalsize " << endl; }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; } void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; } void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); } void endCodeLine() { codify("\n"); }
//void writeBoldString(const char *text)
// { t << "{\\bf "; docify(text); t << "}"; }
void startEmphasis() { t << "{\\em "; } void startEmphasis() { t << "{\\em "; }
void endEmphasis() { t << "}"; } void endEmphasis() { t << "}"; }
void startBold() { t << "{\\bf "; } void startBold() { t << "{\\bf "; }
...@@ -149,7 +132,6 @@ class LatexGenerator : public OutputGenerator ...@@ -149,7 +132,6 @@ class LatexGenerator : public OutputGenerator
void endCodeAnchor() {} void endCodeAnchor() {}
void writeChar(char c); void writeChar(char c);
void writeLatexSpacing() { t << "\\hspace{0.3cm}"; } void writeLatexSpacing() { t << "\\hspace{0.3cm}"; }
//void writeLatexLabel(const char *scope,const char *anchor);
void writeStartAnnoItem(const char *type,const char *file, void writeStartAnnoItem(const char *type,const char *file,
const char *path,const char *name); const char *path,const char *name);
void writeEndAnnoItem(const char *name); void writeEndAnnoItem(const char *name);
...@@ -161,87 +143,27 @@ class LatexGenerator : public OutputGenerator ...@@ -161,87 +143,27 @@ class LatexGenerator : public OutputGenerator
void endCenter() { t << "\\end{center}" << endl; } void endCenter() { t << "\\end{center}" << endl; }
void startSmall() { t << "\\footnotesize "; } void startSmall() { t << "\\footnotesize "; }
void endSmall() { t << "\\normalsize "; } void endSmall() { t << "\\normalsize "; }
//void startSubscript() { t << "$_{\\mbox{"; } void startMemberDescription();
//void endSubscript() { t << "}}$"; } void endMemberDescription();
//void startSuperscript() { t << "$^{\\mbox{"; }
//void endSuperscript() { t << "}}$"; }
//void startTable(bool hasCaption,int c)
// {
// if (hasCaption) t << "\\begin{table}[h]";
// t << "\\begin{TabularC}{" << c << "}\n\\hline\n";
// }
//void endTable(bool hasCaption)
// {
// if (hasCaption)
// {
// t << "\\end{table}\n";
// }
// else
// {
// t << "\\\\\\hline\n\\end{TabularC}\n";
// }
// }
//void startCaption() { t << "\\\\\\hline\n\\end{TabularC}\n"
// "\\centering\n\\caption{";
// }
//void endCaption() { t << "}\n"; }
//void nextTableRow() {}
//void endTableRow() { t << "\\\\\\hline\n"; }
//void nextTableColumn() { t << "&"; }
//void endTableColumn() {}
//void writeCopyright() { t << "\\copyright"; }
//void writeQuote() { t << "''"; }
//void writeUmlaut(char c) { if (c=='i') t << "\\\"{\\i}"; else
// t << "\\\"{" << c << "}";
// }
//void writeAcute(char c) { if (c=='i') t << "\\'{\\i}"; else
// t << "\\'{" << c << "}";
// }
//void writeGrave(char c) { if (c=='i') t << "\\`{\\i}"; else
// t << "\\`{" << c << "}";
// }
//void writeCirc(char c) { if (c=='i') t << "\\^{\\i}"; else
// t << "\\^{" << c << "}";
// }
//void writeTilde(char c) { t << "\\~{" << c << "}"; }
//void writeRing(char c) { t << "\\" << c << c; }
//void writeSharpS() { t << "\"s"; }
//void writeCCedil(char c) { t << "\\c{" << c << "}"; }
void startMemberDescription() { t << "\\begin{CompactList}\\small\\item\\em "; }
void endMemberDescription() { t << "\\item\\end{CompactList}"; }
void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; } void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; }
void endDescList() { t << "\\end{Desc}" << endl; } void endDescList() { t << "\\end{Desc}" << endl; }
void startSimpleSect(SectionTypes,const char *,const char *,const char *); void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endSimpleSect(); void endSimpleSect();
void startParamList(ParamListTypes,const char *title); void startParamList(ParamListTypes,const char *title);
void endParamList(); void endParamList();
//void endDescTitle() { t << "]"; }
void writeDescItem() { t << "\\par" << endl; } void writeDescItem() { t << "\\par" << endl; }
void startSection(const char *,const char *,SectionInfo::SectionType); void startSection(const char *,const char *,SectionInfo::SectionType);
void endSection(const char *,SectionInfo::SectionType); void endSection(const char *,SectionInfo::SectionType);
//void writeSectionRef(const char *,const char *,const char *,const char *);
//void writeSectionRefItem(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *);
void addIndexItem(const char *,const char *); void addIndexItem(const char *,const char *);
void startIndent() {} void startIndent() {}
void endIndent() {} void endIndent() {}
void writeSynopsis() {} void writeSynopsis() {}
//void generateExternalIndex() {}
void startClassDiagram(); void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *); void endClassDiagram(ClassDiagram &,const char *,const char *);
//void startColorFont(uchar,uchar,uchar) {}
//void endColorFont() {}
void startPageRef(); void startPageRef();
void endPageRef(const char *,const char *); void endPageRef(const char *,const char *);
//void startQuickIndexItem(const char *,const char *) {}
//void endQuickIndexItem() {}
void writeQuickLinks(bool,HighlightedItem) {} void writeQuickLinks(bool,HighlightedItem) {}
//void writeFormula(const char *,const char *);
void writeNonBreakableSpace(int); void writeNonBreakableSpace(int);
//void startImage(const char *,const char *,bool);
//void endImage(bool);
//void startDotFile(const char *,bool);
//void endDotFile(bool);
void startDescTable() void startDescTable()
{ t << "\\begin{description}" << endl; } { t << "\\begin{description}" << endl; }
...@@ -255,8 +177,6 @@ class LatexGenerator : public OutputGenerator ...@@ -255,8 +177,6 @@ class LatexGenerator : public OutputGenerator
void endDescTableData() {} void endDescTableData() {}
void lastIndexPage() {} void lastIndexPage() {}
//static void docifyStatic(QTextStream &t,const char *str);
void startDotGraph(); void startDotGraph();
void endDotGraph(DotClassGraph &); void endDotGraph(DotClassGraph &);
void startInclDepGraph(); void startInclDepGraph();
...@@ -282,14 +202,6 @@ class LatexGenerator : public OutputGenerator ...@@ -282,14 +202,6 @@ class LatexGenerator : public OutputGenerator
void startFontClass(const char *) {} void startFontClass(const char *) {}
void endFontClass() {} void endFontClass() {}
//void startHtmlOnly() {}
//void endHtmlOnly() {}
//void startLatexOnly() {}
//void endLatexOnly() {}
//void startSectionRefList();
//void endSectionRefList();
void writeCodeAnchor(const char *) {} void writeCodeAnchor(const char *) {}
private: private:
...@@ -300,6 +212,7 @@ class LatexGenerator : public OutputGenerator ...@@ -300,6 +212,7 @@ class LatexGenerator : public OutputGenerator
bool firstDescItem; bool firstDescItem;
bool insidePre; bool insidePre;
QCString relPath; QCString relPath;
int m_indent;
}; };
#endif #endif
...@@ -272,7 +272,6 @@ FORALL1(SectionTypes a1,a1) ...@@ -272,7 +272,6 @@ FORALL1(SectionTypes a1,a1)
FORALL1(bool a1,a1) FORALL1(bool a1,a1)
FORALL2(bool a1,int a2,a1,a2) FORALL2(bool a1,int a2,a1,a2)
FORALL2(bool a1,bool a2,a1,a2) FORALL2(bool a1,bool a2,a1,a2)
FORALL3(bool a1,bool a2,bool a3,a1,a2,a3)
FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4) FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4)
#endif #endif
FORALL2(int a1,bool a2,a1,a2) FORALL2(int a1,bool a2,a1,a2)
...@@ -283,6 +282,7 @@ FORALL1(IndexSections a1,a1) ...@@ -283,6 +282,7 @@ FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2) FORALL2(const char *a1,const char *a2,a1,a2)
FORALL2(const char *a1,bool a2,a1,a2) FORALL2(const char *a1,bool a2,a1,a2)
FORALL2(const char *a1,SectionInfo::SectionType a2,a1,a2) FORALL2(const char *a1,SectionInfo::SectionType a2,a1,a2)
FORALL3(bool a1,bool a2,bool a3,a1,a2,a3)
FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
......
...@@ -389,7 +389,6 @@ class OutputList : public OutputDocInterface ...@@ -389,7 +389,6 @@ class OutputList : public OutputDocInterface
FORALLPROTO1(bool); FORALLPROTO1(bool);
FORALLPROTO2(bool,int); FORALLPROTO2(bool,int);
FORALLPROTO2(bool,bool); FORALLPROTO2(bool,bool);
FORALLPROTO3(bool,bool,bool);
FORALLPROTO4(const char *,const char *,const char *,int); FORALLPROTO4(const char *,const char *,const char *,int);
#endif #endif
FORALLPROTO2(int,bool); FORALLPROTO2(int,bool);
...@@ -399,6 +398,7 @@ class OutputList : public OutputDocInterface ...@@ -399,6 +398,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO2(const char *,const char *); FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool); FORALLPROTO2(const char *,bool);
FORALLPROTO2(const char *,SectionInfo::SectionType); FORALLPROTO2(const char *,SectionInfo::SectionType);
FORALLPROTO3(bool,bool,bool);
FORALLPROTO3(const char *,const char *,bool); FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(const char *,const char *,SectionInfo::SectionType); FORALLPROTO3(const char *,const char *,SectionInfo::SectionType);
FORALLPROTO3(uchar,uchar,uchar); FORALLPROTO3(uchar,uchar,uchar);
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "rtfstyle.h" #include "rtfstyle.h"
#include "rtfdocvisitor.h" #include "rtfdocvisitor.h"
#include "docparser.h" #include "docparser.h"
#include "dirdef.h"
//#define DBG_RTF(x) x; //#define DBG_RTF(x) x;
#define DBG_RTF(x) #define DBG_RTF(x)
...@@ -388,6 +389,10 @@ void RTFGenerator::startIndexSection(IndexSections is) ...@@ -388,6 +389,10 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Module Index //Module Index
beginRTFChapter(); beginRTFChapter();
break; break;
case isDirIndex:
//Directory Index
beginRTFChapter();
break;
case isNamespaceIndex: case isNamespaceIndex:
//Namespace Index //Namespace Index
beginRTFChapter(); beginRTFChapter();
...@@ -409,21 +414,6 @@ void RTFGenerator::startIndexSection(IndexSections is) ...@@ -409,21 +414,6 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Related Page Index //Related Page Index
beginRTFChapter(); beginRTFChapter();
break; break;
//case isPackageDocumentation:
// {
// //Package Documentation
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd=pdi.toFirst();
// bool found=FALSE;
// while (pd && !found)
// {
// beginRTFChapter();
// found=TRUE;
// ++pdi;
// pd=pdi.current();
// }
// }
// break;
case isModuleDocumentation: case isModuleDocumentation:
{ {
//Module Documentation //Module Documentation
...@@ -440,6 +430,22 @@ void RTFGenerator::startIndexSection(IndexSections is) ...@@ -440,6 +430,22 @@ void RTFGenerator::startIndexSection(IndexSections is)
} }
} }
break; break;
case isDirDocumentation:
{
//Directory Documentation
SDict<DirDef>::Iterator dli(Doxygen::directories);
DirDef *dd;
bool found=FALSE;
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
{
if (dd->isLinkableInProject())
{
beginRTFChapter();
found=TRUE;
}
}
}
break;
case isNamespaceDocumentation: case isNamespaceDocumentation:
{ {
// Namespace Documentation // Namespace Documentation
...@@ -609,6 +615,11 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -609,6 +615,11 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isDirIndex:
t << "\\par " << rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trDirIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"dirs.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break;
case isNamespaceIndex: case isNamespaceIndex:
t << "\\par " << rtf_Style_Reset << endl; t << "\\par " << rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl;
...@@ -634,22 +645,6 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -634,22 +645,6 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
//case isPackageDocumentation:
// {
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd=pdi.toFirst();
// t << "{\\tc \\v " << theTranslator->trPackageDocumentation() << "}"<< endl;
// while (pd)
// {
// t << "\\par " << rtf_Style_Reset << endl;
// t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
// t << pd->getOutputFileBase();
// t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
// ++pdi;
// pd=pdi.current();
// }
// }
// break;
case isModuleDocumentation: case isModuleDocumentation:
{ {
GroupSDict::Iterator gli(Doxygen::groupSDict); GroupSDict::Iterator gli(Doxygen::groupSDict);
...@@ -667,6 +662,23 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -667,6 +662,23 @@ void RTFGenerator::endIndexSection(IndexSections is)
} }
} }
break; break;
case isDirDocumentation:
{
SDict<DirDef>::Iterator dli(Doxygen::directories);
DirDef *dd;
t << "{\\tc \\v " << theTranslator->trDirDocumentation() << "}"<< endl;
for (dli.toFirst();(dd=dli.current());++dli)
{
if (dd->isLinkableInProject())
{
t << "\\par " << rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << dd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
}
}
}
break;
case isNamespaceDocumentation: case isNamespaceDocumentation:
{ {
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
......
...@@ -4225,6 +4225,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4225,6 +4225,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( FileDocArg1 ); BEGIN( FileDocArg1 );
} }
<Doc,LineDoc,JavaDoc>{B}*{CMD}"dir"{B}* {
current->section = Entry::DIRDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( FileDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"example"{B}+ { <Doc,JavaDoc>{B}*{CMD}"example"{B}+ {
current->section = Entry::EXAMPLE_SEC; current->section = Entry::EXAMPLE_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
...@@ -5029,7 +5035,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -5029,7 +5035,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current_root->addSubEntry(current); current_root->addSubEntry(current);
current = new Entry ; current = new Entry ;
initEntry(); initEntry();
BEGIN( FindMembers ); BEGIN( lastDocContext );
} }
} }
<PageDoc>"<"{TITLE}">" { <PageDoc>"<"{TITLE}">" {
......
...@@ -422,6 +422,17 @@ class Translator ...@@ -422,6 +422,17 @@ class Translator
virtual QCString trSourceFile(QCString& filename) = 0; virtual QCString trSourceFile(QCString& filename) = 0;
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
virtual QCString trDirIndex() = 0;
virtual QCString trDirDocumentation() = 0;
virtual QCString trDirectories() = 0;
virtual QCString trDirDescription() = 0;
virtual QCString trDirReference(const char *dirName) = 0;
virtual QCString trDir(bool first_capital, bool singular) = 0;
}; };
#endif #endif
...@@ -40,7 +40,27 @@ class TranslatorAdapterBase : public Translator ...@@ -40,7 +40,27 @@ class TranslatorAdapterBase : public Translator
}; };
class TranslatorAdapter_1_3_8 : public TranslatorAdapterBase class TranslatorAdapter_1_3_9 : public TranslatorAdapterBase
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.3.9"); }
virtual QCString trDirIndex()
{ return english.trDirIndex(); }
virtual QCString trDirDocumentation()
{ return english.trDirDocumentation(); }
virtual QCString trDirectories()
{ return english.trDirectories(); }
virtual QCString trDirDescription()
{ return english.trDirDescription(); }
virtual QCString trDirReference(const char *dirName)
{ return english.trDirReference(dirName); }
virtual QCString trDir(bool first_capital, bool singular)
{ return english.trDir(first_capital,singular); }
};
class TranslatorAdapter_1_3_8 : public TranslatorAdapter_1_3_9
{ {
public: public:
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian: public Translator class TranslatorBrazilian : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
*/ */
#define CN_SPC #define CN_SPC
class TranslatorChinese : public Translator class TranslatorChinese : public TranslatorAdapter_1_3_9
{ {
public: public:
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
......
...@@ -149,7 +149,7 @@ ...@@ -149,7 +149,7 @@
// Windows version. The version which does not call the function is // Windows version. The version which does not call the function is
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public Translator class TranslatorCzech : public TranslatorAdapter_1_3_9
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public Translator class TranslatorGerman : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_DK_H #ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H #define TRANSLATOR_DK_H
class TranslatorDanish : public Translator class TranslatorDanish : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -18,27 +18,28 @@ ...@@ -18,27 +18,28 @@
#ifndef TRANSLATOR_EN_H #ifndef TRANSLATOR_EN_H
#define TRANSLATOR_EN_H #define TRANSLATOR_EN_H
// When defining a translator class for the new language, follow /*!
// the description in the documentation. One of the steps says When defining a translator class for the new language, follow
// that you should copy the translator_en.h (this) file to your the description in the documentation. One of the steps says
// translator_xx.h new file. Your new language should use the that you should copy the translator_en.h (this) file to your
// Translator class as the base class. This means that you need to translator_xx.h new file. Your new language should use the
// implement exactly the same (pure virtual) methods as the Translator class as the base class. This means that you need to
// TranslatorEnglish does. Because of this, it is a good idea to implement exactly the same (pure virtual) methods as the
// start with the copy of TranslatorEnglish and replace the strings TranslatorEnglish does. Because of this, it is a good idea to
// one by one. start with the copy of TranslatorEnglish and replace the strings
// one by one.
// It is not necessary to include "translator.h" or
// "translator_adapter.h" here. The files are included in the It is not necessary to include "translator.h" or
// language.cpp correctly. Not including any of the mentioned "translator_adapter.h" here. The files are included in the
// files frees the maintainer from thinking about whether the language.cpp correctly. Not including any of the mentioned
// first, the second, or both files should be included or not, and files frees the maintainer from thinking about whether the
// why. This holds namely for localized translators because their first, the second, or both files should be included or not, and
// base class is changed occasionaly to adapter classes when the why. This holds namely for localized translators because their
// Translator class changes the interface, or back to the base class is changed occasionaly to adapter classes when the
// Translator class (by the local maintainer) when the localized Translator class changes the interface, or back to the
// translator is made up-to-date again. Translator class (by the local maintainer) when the localized
translator is made up-to-date again.
*/
class TranslatorEnglish : public Translator class TranslatorEnglish : public Translator
{ {
public: public:
...@@ -1555,6 +1556,27 @@ class TranslatorEnglish : public Translator ...@@ -1555,6 +1556,27 @@ class TranslatorEnglish : public Translator
return filename + " Source File"; return filename + " Source File";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
virtual QCString trDirIndex()
{ return "Directories"; }
virtual QCString trDirDocumentation()
{ return "Directory Documentation"; }
virtual QCString trDirectories()
{ return "Directories"; }
virtual QCString trDirDescription()
{ return "Here is a list of all directories:"; }
virtual QCString trDirReference(const char *dirName)
{ QCString result=dirName; result+=" Directory Reference"; return result; }
virtual QCString trDir(bool first_capital, bool singular)
{
QCString result((first_capital ? "Director" : "director"));
if (singular) result+="y"; else result+="ies";
return result;
}
}; };
#endif #endif
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
#ifndef TRANSLATOR_HR_H #ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H #define TRANSLATOR_HR_H
class TranslatorCroatian : public Translator class TranslatorCroatian : public TranslatorAdapter_1_3_9
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
......
...@@ -29,10 +29,7 @@ ...@@ -29,10 +29,7 @@
#ifndef TRANSLATOR_HU_H #ifndef TRANSLATOR_HU_H
#define TRANSLATOR_HU_H #define TRANSLATOR_HU_H
#include "translator.h" class TranslatorHungarian : public TranslatorAdapter_1_3_9
#include "../qtools/qdatetime.h"
class TranslatorHungarian : public TranslatorAdapter_1_3_8
{ {
private: private:
const char * zed(char c) const char * zed(char c)
...@@ -1518,6 +1515,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_3_8 ...@@ -1518,6 +1515,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_3_8
return "Találatok:"; return "Találatok:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return filename + " Forrásfájl";
}
}; };
#endif #endif
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
#ifndef TRANSLATOR_IT_H #ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H #define TRANSLATOR_IT_H
class TranslatorItalian : public Translator class TranslatorItalian : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#ifndef TRANSLATOR_JP_H #ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H #define TRANSLATOR_JP_H
class TranslatorJapanese : public Translator class TranslatorJapanese : public TranslatorAdapter_1_3_9
{ {
private: private:
/*! The decode() can change euc into sjis */ /*! The decode() can change euc into sjis */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H #ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H #define TRANSLATOR_NL_H
class TranslatorDutch : public Translator class TranslatorDutch : public TranslatorAdapter_1_3_9
{ {
public: public:
QCString idLanguage() QCString idLanguage()
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#ifndef TRANSLATOR_NO_H #ifndef TRANSLATOR_NO_H
#define TRANSLATOR_NO_H #define TRANSLATOR_NO_H
class TranslatorNorwegian : public Translator class TranslatorNorwegian : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -13,14 +13,14 @@ ...@@ -13,14 +13,14 @@
* Documents produced by Doxygen are derivative works derived from the * Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license. * input used in their production; they are not affected by this license.
* *
* Polish translation was updated to version 1.3 by * Polish translation was updated to version 1.3.8 by
* Piotr Kaminski (Piotr.Kaminski@ctm.gdynia.pl) * Piotr Kaminski (Piotr.Kaminski@ctm.gdynia.pl)
*/ */
#ifndef TRANSLATOR_PL_H #ifndef TRANSLATOR_PL_H
#define TRANSLATOR_PL_H #define TRANSLATOR_PL_H
class TranslatorPolish : public TranslatorAdapter_1_3 class TranslatorPolish : public TranslatorAdapter_1_3_9
{ {
private: private:
/*! to avoid macro redefinition from translator_pl.h */ /*! to avoid macro redefinition from translator_pl.h */
...@@ -57,9 +57,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -57,9 +57,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
{ {
return "\\usepackage{polski} \\usepackage[latin2]{inputenc} \\usepackage[T1]{fontenc}"; return "\\usepackage{polski} \\usepackage[latin2]{inputenc} \\usepackage[T1]{fontenc}";
} }
/*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage()
{ return "polish"; }
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
...@@ -154,12 +151,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -154,12 +151,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
/*! put after an undocumented member in the list of all members */ /*! put after an undocumented member in the list of all members */
QCString trDefinedIn() QCString trDefinedIn()
{ return "zdefiniowana w"; } { return "zdefiniowana w"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
QCString trVerbatimText(const char *f)
{ return (QCString)decode("Tutaj znajduje siê zawarto¶æ pliku nag³ówkowego ")+f+"."; }
// quick reference sections // quick reference sections
...@@ -472,10 +463,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -472,10 +463,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
QCString trEnumerationValues() QCString trEnumerationValues()
{ return decode("Warto¶ci wyliczeñ"); } { return decode("Warto¶ci wyliczeñ"); }
/*! This is used in man pages as the author section. */
QCString trAuthor()
{ return "Autor"; }
/*! This is used in the documentation of a file before the list of /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
...@@ -533,12 +520,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -533,12 +520,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
} }
} }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
QCString trFiles()
{ return "Pliki"; }
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
...@@ -586,10 +567,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -586,10 +567,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
QCString trDate() QCString trDate()
{ return "Data"; } { return "Data"; }
/*! this text is generated when the \\author command is used. */
QCString trAuthors()
{ return "Autorzy"; }
/*! this text is generated when the \\return command is used. */ /*! this text is generated when the \\return command is used. */
QCString trReturns() QCString trReturns()
{ return "Zwraca"; } { return "Zwraca"; }
...@@ -1410,6 +1387,130 @@ class TranslatorPolish : public TranslatorAdapter_1_3 ...@@ -1410,6 +1387,130 @@ class TranslatorPolish : public TranslatorAdapter_1_3
return decode("Dokumentacja zdarzeñ"); return decode("Dokumentacja zdarzeñ");
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return "Typy pakietu";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return "Funkcje pakietu";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return "Statyczne funkcje pakietu";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return "Atrybuty pakietu";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return "Statyczne atrybuty pakietu";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual QCString trAll()
{
return "All";
}
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
return "Oto graf wywo³añ dla tej funkcji:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual QCString trSearchForIndex()
{
return "Szukaj";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
return "Wyniki szukania";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual QCString trSearchResults(int numDocuments)
{
if (numDocuments==0)
{
return "Niestety ¿aden dokument nie pasuje do twojego zapytania.";
}
else if (numDocuments==1)
{
return "Znaleziono <b>1</b> dokument pasuj±cy do twojego zapytania.";
}
int count = numDocuments % 10;
if ((count>=2) && (count<=4))
{
return "Znaleziono <b>$num</b> dokumenty pasuj±ce do twojego zapytania. "
"Najlepiej pasuj±ce dokumenty wy¶wietlane s± na pocz±tku listy.";
}
else
{
return "Znaleziono <b>$num</b> dokumentów pasuj±cych do twojego zapytania. "
"Najlepiej pasuj±ce dokumenty wy¶wietlane s± na pocz±tku listy.";
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual QCString trSearchMatches()
{
return "Pasuj±ce s³owa:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return "Plik ¼ród³owy " + filename;
}
}; };
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H #define TRANSLATOR_RU_H
class TranslatorRussian : public Translator class TranslatorRussian : public TranslatorAdapter_1_3_9
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
......
...@@ -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 Translator class TranslatorAfrikaans : public TranslatorAdapter_1_3_9
{ {
public: public:
......
...@@ -1467,6 +1467,61 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -1467,6 +1467,61 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
ti << " </compound>" << endl; ti << " </compound>" << endl;
} }
static void generateXMLForDir(DirDef *dd,QTextStream &ti)
{
if (dd->isReference()) return; // skip external references
ti << " <compound refid=\"" << dd->getOutputFileBase()
<< "\" kind=\"dir\"><name>" << convertToXML(dd->displayName())
<< "</name>" << endl;
QCString outputDirectory = Config_getString("XML_OUTPUT");
QCString fileName=outputDirectory+"/"+dd->getOutputFileBase()+".xml";
QFile f(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
QTextStream t(&f);
t.setEncoding(QTextStream::Latin1);
writeXMLHeader(t);
t << " <compounddef id=\""
<< dd->getOutputFileBase() << "\" kind=\"dir\">" << endl;
t << " <compoundname>" << convertToXML(dd->displayName()) << "</compoundname>" << endl;
QListIterator<DirDef> subdirs(dd->subDirs());
DirDef *subdir;
for (subdirs.toFirst();(subdir=subdirs.current());++subdirs)
{
t << " <innerdir refid=\"" << subdir->getOutputFileBase()
<< "\">" << convertToXML(subdir->displayName()) << "</innerdir>" << endl;
}
FileList *fl = dd->getFiles();
if (fl)
{
QListIterator<FileDef> fli(*fl);
FileDef *fd = fl->first();
for (fli.toFirst();(fd=fli.current());++fli)
{
t << " <innerfile refid=\"" << fd->getOutputFileBase()
<< "\">" << convertToXML(fd->name()) << "</innerfile>" << endl;
}
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,dd->briefFile(),dd->briefLine(),dd,0,dd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,dd->docFile(),dd->docLine(),dd,0,dd->documentation());
t << " </detaileddescription>" << endl;
t << " <location file=\"" << dd->name() << "\"/>" << endl;
t << " </compounddef>" << endl;
t << "</doxygen>" << endl;
ti << " </compound>" << endl;
}
static void generateXMLForPage(PageDef *pd,QTextStream &ti,bool isExample) static void generateXMLForPage(PageDef *pd,QTextStream &ti,bool isExample)
{ {
// + name // + name
...@@ -1534,7 +1589,6 @@ void generateXML() ...@@ -1534,7 +1589,6 @@ void generateXML()
// + classes // + classes
// + namespaces // + namespaces
// + files // + files
// - packages
// + groups // + groups
// + related pages // + related pages
// - examples // - examples
...@@ -1668,6 +1722,15 @@ void generateXML() ...@@ -1668,6 +1722,15 @@ void generateXML()
generateXMLForPage(pd,t,FALSE); generateXMLForPage(pd,t,FALSE);
} }
} }
{
DirDef *dir;
DirSDict::Iterator sdi(Doxygen::directories);
for (sdi.toFirst();(dir=sdi.current());++sdi)
{
msg("Generate XML output for dir %s\n",dir->name().data());
generateXMLForDir(dir,t);
}
}
{ {
PageSDict::Iterator pdi(*Doxygen::exampleSDict); PageSDict::Iterator pdi(*Doxygen::exampleSDict);
PageDef *pd=0; PageDef *pd=0;
......
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