Commit 4ccd672e authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.8-20040906

parent 3aaaf142
Makefile
.makeconfig
.tmakeconfig
bin
lib
objects
DOXYGEN Version 1.3.8-20040824
DOXYGEN Version 1.3.8-20040906
Please read the installation section of the manual
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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)
{
m_parent->setDelegate(this);
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_id = attrib.value("id");
m_virtualness = attrib.value("virt");
......@@ -242,7 +242,7 @@ void MemberHandler::startEnumValue(const QXmlAttributes& attrib)
{
m_parent->setDelegate(this);
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_id = attrib.value("id");
m_virtualness = "non-virtual";
......
......@@ -64,8 +64,8 @@ ParamHandler::ParamHandler(IBaseHandler *parent) : m_parent(parent)
addStartHandler("array");
addEndHandler("array",this,&ParamHandler::endArray);
addStartHandler("attrib");
addEndHandler("attrib",this,&ParamHandler::endAttrib);
addStartHandler("attribute");
addEndHandler("attribute",this,&ParamHandler::endAttrib);
addStartHandler("defval",this,&ParamHandler::startDefVal);
......
......@@ -616,7 +616,7 @@ int main(int argc,char **argv)
{
IMember *memr = mr->member();
printf(" References %s at line %d\n",
mr->memberName()->latin1(),memr->bodyStart());
mr->name()->latin1(),memr->bodyStart());
}
mri->release();
......@@ -625,7 +625,7 @@ int main(int argc,char **argv)
{
IMember *memr = mr->member();
printf(" ReferencedBy %s at line %d\n",
mr->memberName()->latin1(),memr->bodyStart());
mr->name()->latin1(),memr->bodyStart());
}
mri->release();
......
Makefile
doxywizard.pro
\ No newline at end of file
doxywizard.pro
Makefile.doxywizard
config.cpp
config.h
config.l
moc
obj
......@@ -20,6 +20,8 @@
#include <qmenubar.h>
#include <qtooltip.h>
#include <stdlib.h>
#if defined(Q_OS_MACX)
#include <CoreFoundation/CFBundle.h>
#include <ApplicationServices/ApplicationServices.h>
......
......@@ -149,9 +149,6 @@ if test -z "$f_platform"; then
FreeBSD:*)
f_platform=freebsd-g++
;;
GNU:*)
f_platform=gnu-g++
;;
HP-UX:*)
f_platform=hpux-g++
;;
......@@ -161,7 +158,7 @@ if test -z "$f_platform"; then
IRIX:*)
f_platform=irix-n32
;;
Linux:*)
Linux:*|GNU:*|GNU/*:*)
f_platform=linux-g++
;;
NetBSD:*)
......@@ -239,27 +236,6 @@ if test "$f_wizard" = YES; then
QTDIR=$d
fi
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
echo " Detected Qt via the QTDIR environment variable..."
echo -n " "
......
......@@ -56,6 +56,7 @@ documentation:
\refitem cmddef \\def
\refitem cmddefgroup \\defgroup
\refitem cmddeprecated \\deprecated
\refitem cmddir \\dir
\refitem cmddontinclude \\dontinclude
\refitem cmddot \\dot
\refitem cmddotfile \\dotfile
......@@ -273,6 +274,18 @@ doxygen. Unrecognized commands are treated as normal text.
\sa page \ref grouping "Grouping", sections \ref cmdingroup "\\ingroup", \ref cmdaddtogroup "\\addtogroup",
\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>
\section cmdenum \enum <name>
......
......@@ -182,6 +182,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_search_includes SEARCH_INCLUDES
\refitem cfg_searchengine SEARCHENGINE
\refitem cfg_short_names SHORT_NAMES
\refitem cfg_show_dirs SHOW_DIRECTORIES
\refitem cfg_show_include_files SHOW_INCLUDE_FILES
\refitem cfg_show_used_files SHOW_USED_FILES
\refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS
......@@ -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
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>
\section messages_input Options related to warning and progress messages
......
......@@ -49,10 +49,10 @@ It can help you in three ways:
for this manual).
</ol>
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
other Unix flavors as well. Furthermore, executables for
Windows 9x/NT and Mac OS X are available.
Doxygen is developed under <a href="http://www.linux.org">Linux</a>
and Mac OS X, but is set-up to be highly portable. As a result, it
runs on most other Unix flavors as well. Furthermore, executables for
Windows are available.
\n This manual is divided into three parts, each of which is divided into several
sections.
......@@ -128,9 +128,19 @@ for more details.
Documents produced by doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
<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
<a href="http://www.doxygen.org/projects.html">list of projects</a>
that use doxygen.
......
......@@ -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
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):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
......@@ -54,13 +54,13 @@ when the translator was updated.
<td>Afrikaans</td>
<td>Johan Prinsloo</td>
<td>johan at zippysnoek dot com</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td>
<td>chino at icmc dot sc dot usp dot br</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Catalan</td>
......@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td>
<td>Li Daobing<br>Wei Liu</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 bgcolor="#ffffff">
<td>Chinese Traditional</td>
......@@ -84,25 +84,25 @@ when the translator was updated.
<td>Croatian</td>
<td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Czech</td>
<td>Petr P&#x0159;ikryl</td>
<td>prikrylp at skil dot cz</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td>
<td>eriksoe+doxygen at daimi dot au dot dk</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Dutch</td>
<td>Dimitri van Heesch</td>
<td>dimitri at stack dot nl</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>English</td>
......@@ -126,7 +126,7 @@ when the translator was updated.
<td>German</td>
<td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Greek</td>
......@@ -138,19 +138,19 @@ when the translator was updated.
<td>Hungarian</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>1.3.8</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Italian</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>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Japanese</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>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>JapaneseEn</td>
......@@ -180,13 +180,13 @@ when the translator was updated.
<td>Norwegian</td>
<td>Lars Erik Jordet</td>
<td>lejordet at gmail dot com</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Polish</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>1.3</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Portuguese</td>
......@@ -204,7 +204,7 @@ when the translator was updated.
<td>Russian</td>
<td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td>
<td>up-to-date</td>
<td>1.3.9</td>
</tr>
<tr bgcolor="#ffffff">
<td>Serbian</td>
......@@ -257,25 +257,25 @@ when the translator was updated.
\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
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
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\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} & ~ \\
\hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\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
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
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
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
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline
......@@ -283,17 +283,17 @@ when the translator was updated.
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\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
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\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} & ~ \\
\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} & ~ \\
\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} & ~ \\
~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
\hline
......@@ -307,16 +307,16 @@ when the translator was updated.
~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
\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
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} & ~ \\
\hline
Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
\hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\
\hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.3.9 \\
\hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\
\hline
......
This diff is collapsed.
Makefile
libmd5.pro
Makefile.libmd5
Makefile
libpng.pro
Makefile.libpng
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.8_20040824
Version: 1.3.8_20040906
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
Makefile
qtools.pro
Makefile.qtools
......@@ -96,7 +96,7 @@
#define _OS_ULTRIX_
#elif defined(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_
#elif defined(__FreeBSD__)
#define _OS_FREEBSD_
......@@ -116,8 +116,6 @@
#define _OS_LYNXOS_
#elif defined(_UNIXWARE)
#define _OS_UNIXWARE_
#elif defined(__GNU__)
#define _OS_GNU_
#elif defined(DGUX)
#define _OS_DGUX_
#elif defined(__QNX__)
......
......@@ -3,3 +3,20 @@ doxygen.pro
doxytag.pro
libdoxycfg.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 @@
<xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="incdepgraph" 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="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
......@@ -647,6 +648,7 @@
<xsd:enumeration value="group" />
<xsd:enumeration value="page" />
<xsd:enumeration value="example" />
<xsd:enumeration value="dir" />
</xsd:restriction>
</xsd:simpleType>
......
......@@ -21,6 +21,7 @@
" <xsd:element name=\"includedby\" type=\"incType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"incdepgraph\" 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=\"innerclass\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innernamespace\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
......@@ -647,6 +648,7 @@
" <xsd:enumeration value=\"group\" />\n"
" <xsd:enumeration value=\"page\" />\n"
" <xsd:enumeration value=\"example\" />\n"
" <xsd:enumeration value=\"dir\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
......
......@@ -1814,6 +1814,13 @@ void Config::create()
"list will mention the files that were used to generate the documentation. \n",
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");
......
......@@ -2,18 +2,34 @@
#include "filename.h"
#include "doxygen.h"
#include "util.h"
#include "outputlist.h"
#include "language.h"
//----------------------------------------------------------------------
// method implementation
DirDef::DirDef(const char *path) : Definition(path,1,path),
m_parent(0)
static int g_dirCount=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);
// 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_fileList = new FileList;
m_classSDict = new ClassSDict(17);
m_dirCount = g_dirCount++;
}
DirDef::~DirDef()
......@@ -22,16 +38,193 @@ DirDef::~DirDef()
void DirDef::addSubDir(DirDef *subdir)
{
m_subdirs.append(subdir);
subdir->m_parent=this;
m_subdirs.inSort(subdir);
subdir->setOuterScope(this);
}
void DirDef::addFile(FileDef *fd)
{
m_fileList->append(fd);
m_fileList->inSort(fd);
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
......@@ -68,6 +261,7 @@ bool DirDef::matchPath(const QCString &path,QStrList &l)
*/
DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
{
//printf("DirDef::mergeDirectoryInTree(%s)\n",path.data());
int p=0,i=0;
DirDef *dir=0;
while ((i=path.find('/',p))!=-1)
......@@ -96,7 +290,8 @@ void buildDirectories()
FileDef *fd;
for (;(fd=fni.current());++fni)
{
if (!fd->getReference().isEmpty())
//printf("buildDirectories %s\n",fd->name().data());
if (fd->getReference().isEmpty())
{
DirDef *dir;
if ((dir=Doxygen::directories.find(fd->getPath()))==0) // new directory
......@@ -112,23 +307,33 @@ void buildDirectories()
}
}
DirDef *root = new DirDef("root:");
//DirDef *root = new DirDef("root:");
// compute relations between directories => introduce container dirs.
DirDef *dir;
SDict<DirDef>::Iterator sdi(Doxygen::directories);
DirSDict::Iterator sdi(Doxygen::directories);
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();
int i=name.findRev('/',name.length()-2);
if (i!=-1)
{
DirDef *parent = Doxygen::directories.find(name.left(i+1));
if (parent==0) parent=root;
parent->addSubDir(dir);
printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n",
dir->displayName().data(), parent->displayName().data());
//if (parent==0) parent=root;
if (parent) parent->addSubDir(dir);
//printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n",
// 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 @@
#include "sortdict.h"
#include "definition.h"
#include <qlist.h>
class FileList;
class ClassSDict;
class QStrList;
class FileDef;
class OutputList;
class DirDef;
class DirDefList : public QList<DirDef>
{
public:
int compareItems(GCI item1,GCI item2);
};
class DirDef : public Definition
{
......@@ -33,29 +44,54 @@ class DirDef : public Definition
DirDef(const char *path);
virtual ~DirDef();
virtual DefType definitionType() { return TypeDir; }
virtual QCString getOutputFileBase() const { return ""; }
virtual bool isLinkableInProject() const { return FALSE; }
virtual bool isLinkable() const { return FALSE; }
virtual QCString getOutputFileBase() const;
virtual bool isLinkableInProject() const { return !isReference() && hasDocumentation(); }
virtual bool isLinkable() const { return isReference() || isLinkableInProject(); }
QCString displayName() const { return m_dispName; }
QCString shortName() const { return m_shortName; }
void addSubDir(DirDef *subdir);
FileList * getFiles() const { return m_fileList; }
ClassSDict * getClasses() const { return m_classSDict; }
DirDef *parent() const { return m_parent; }
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);
bool visited;
private:
void writePathFragment(OutputList &ol);
static DirDef *createNewDir(const char *path);
static bool matchPath(const QCString &path,QStrList &l);
QList<DirDef> m_subdirs;
DirDef *m_parent;
DirDefList m_subdirs;
QCString m_dispName;
QCString m_shortName;
FileList *m_fileList; // list of files 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 generateDirDocs(OutputList &ol);
#endif
......@@ -121,7 +121,7 @@ SDict<DefinitionList> *Doxygen::symbolMap;
bool Doxygen::outputToWizard=FALSE;
QDict<int> * Doxygen::htmlDirMap = 0;
QCache<LookupInfo> Doxygen::lookupCache(20000,20000);
SDict<DirDef> Doxygen::directories(17);
DirSDict Doxygen::directories(17);
static StringList inputFiles;
static StringDict excludeNameDict(1009); // sections
......@@ -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
......@@ -7329,41 +7384,6 @@ static int readDir(QFileInfo *fi,
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
......@@ -8257,8 +8277,9 @@ void parseInput()
msg("Freeing input...\n");
input.resize(0);
//msg("Building directory list...\n");
//buildDirectories();
msg("Building directory list...\n");
buildDirectories();
findDirDocumentation(root);
msg("Building group list...\n");
buildGroupList(root);
......@@ -8480,6 +8501,24 @@ void generateOutput()
if (Config_getBool("GENERATE_LATEX")) writeDoxFont(Config_getString("LATEX_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();
// count the number of documented elements in the lists we have built.
......@@ -8522,12 +8561,24 @@ void generateOutput()
msg("Generating group documentation...\n");
generateGroupDocs();
if (Config_getBool("SHOW_DIRECTORIES"))
{
msg("Generating directory documentation...\n");
generateDirDocs(*outputList);
}
msg("Generating namespace index...\n");
generateNamespaceDocs();
msg("Generating group index...\n");
writeGroupIndex(*outputList);
if (Config_getBool("SHOW_DIRECTORIES"))
{
msg("Generating directory index...\n");
writeDirIndex(*outputList);
}
msg("Generating example index...\n");
writeExampleIndex(*outputList);
......@@ -8549,24 +8600,6 @@ void generateOutput()
//msg("Generating search index...\n");
//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"))
{
msg("Combining RTF output...\n");
......
......@@ -35,6 +35,7 @@
#include "section.h"
#include "membergroup.h"
#include "reflist.h"
#include "dirdef.h"
class PageSList;
class PageSDict;
......@@ -113,7 +114,7 @@ class Doxygen
static bool outputToWizard;
static QDict<int> *htmlDirMap;
static QCache<LookupInfo> lookupCache;
static SDict<DirDef> directories;
static DirSDict directories;
};
void initDoxygen();
......
......@@ -230,7 +230,8 @@ class Entry
USINGDECL_SEC = 0x14000000,
PACKAGE_SEC = 0x15000000,
PACKAGEDOC_SEC = 0x16000000,
OBJCIMPL_SEC = 0x17000000
OBJCIMPL_SEC = 0x17000000,
DIRDOC_SEC = 0x18000000,
};
enum MemberSpecifier
{
......
......@@ -84,6 +84,7 @@ FileDef::FileDef(const char *p,const char *nm,
package = 0;
isSource = FALSE;
docname = nm;
dir = 0;
if (Config_getBool("FULL_PATH_NAMES"))
{
docname.prepend(stripFromPath(path.copy()));
......@@ -213,11 +214,29 @@ void FileDef::writeDocumentation(OutputList &ol)
QCString pageTitle=theTranslator->trFileReference(docname);
startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase());
ol.parseText(pageTitle);
addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),docName());
//ol.newParagraph();
if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
{
getDirDef()->writeNavigationPath(ol);
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"))
{
......@@ -500,11 +519,23 @@ void FileDef::writeDocumentation(OutputList &ol)
/*! Write a source listing of this file to the output */
void FileDef::writeSource(OutputList &ol)
{
QCString pageTitle = theTranslator->trSourceFile(docname);
ol.disableAllBut(OutputGenerator::Html);
startFile(ol,getSourceFileBase(),0,theTranslator->trSourceFile(docname));
startTitle(ol,0);
ol.parseText(docname);
endTitle(ol,0,0);
startFile(ol,getSourceFileBase(),0,pageTitle);
if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
{
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())
{
......
......@@ -455,7 +455,6 @@ void GroupDef::writeDetailedDocumentation(OutputList &ol)
void GroupDef::writeDocumentation(OutputList &ol)
{
ol.pushGeneratorState();
//ol.disable(OutputGenerator::Man);
startFile(ol,getOutputFileBase(),name(),title);
startTitle(ol,getOutputFileBase());
ol.parseText(title);
......
......@@ -35,6 +35,7 @@
#include "index.h"
#include "pagedef.h"
#include "debug.h"
#include "dirdef.h"
// #define GROUP_COLOR "#ff8080"
......@@ -58,6 +59,15 @@ static const char *defaultStyleSheet =
" padding: 2px;\n"
" line-height: 140%;\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"
" text-decoration: none;\n"
" font-weight: bold;\n"
......@@ -1365,6 +1375,13 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
t << fixSpaces(theTranslator->trModules());
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)
{
startQuickIndexItem(t,"namespaces"+Doxygen::htmlFileExtension,
......
This diff is collapsed.
......@@ -26,15 +26,15 @@ enum IndexSections
isTitlePageStart,
isTitlePageAuthor,
isMainPage,
// isPackageIndex,
isModuleIndex,
isDirIndex,
isNamespaceIndex,
isClassHierarchyIndex,
isCompoundIndex,
isFileIndex,
isPageIndex,
// isPackageDocumentation,
isModuleDocumentation,
isDirDocumentation,
isNamespaceDocumentation,
isClassDocumentation,
isFileDocumentation,
......@@ -61,6 +61,7 @@ void writeExampleIndex(OutputList &ol);
void writePageIndex(OutputList &ol);
void writeFileMemberIndex(OutputList &ol);
void writeGroupIndex(OutputList &ol);
void writeDirIndex(OutputList &ol);
void writeNamespaceIndex(OutputList &ol);
void writeNamespaceMemberIndex(OutputList &ol);
void writeGraphicalClassHierarchy(OutputList &ol);
......@@ -74,6 +75,7 @@ enum HighlightedItem
HLI_None=0,
HLI_Main,
HLI_Modules,
HLI_Directories,
HLI_Namespaces,
HLI_Hierarchy,
HLI_Classes,
......@@ -148,6 +150,7 @@ extern int documentedFileMembers[FMHL_Total];
extern int documentedNamespaceMembers[NMHL_Total];
extern int documentedHtmlFiles;
extern int documentedPages;
extern int documentedDirs;
void startTitle(OutputList &ol,const char *fileName);
void endTitle(OutputList &ol,const char *fileName,const char *name);
......
......@@ -40,6 +40,7 @@
<xsd:enumeration value="group"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="example"/>
<xsd:enumeration value="dir"/>
</xsd:restriction>
</xsd:simpleType>
......
......@@ -40,6 +40,7 @@
" <xsd:enumeration value=\"group\"/>\n"
" <xsd:enumeration value=\"page\"/>\n"
" <xsd:enumeration value=\"example\"/>\n"
" <xsd:enumeration value=\"dir\"/>\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
......
......@@ -31,6 +31,7 @@
#include "pagedef.h"
#include "docparser.h"
#include "latexdocvisitor.h"
#include "dirdef.h"
//static QCString filterTitle(const char *s)
//{
......@@ -102,6 +103,7 @@ LatexGenerator::LatexGenerator() : OutputGenerator()
insideTabbing=FALSE;
firstDescItem=TRUE;
insidePre=FALSE;
m_indent=0;
}
LatexGenerator::~LatexGenerator()
......@@ -501,6 +503,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Index}\n"
break;
case isDirIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Directory Index}\n"
break;
case isNamespaceIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Namespace Index}\"
......@@ -537,6 +543,22 @@ void LatexGenerator::startIndexSection(IndexSections is)
}
}
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:
{
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
......@@ -637,6 +659,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
case isModuleIndex:
t << "}\n\\input{modules}\n";
break;
case isDirIndex:
t << "}\n\\input{dirs}\n";
break;
case isNamespaceIndex:
t << "}\n\\input{namespaces}\n";
break;
......@@ -675,6 +700,29 @@ void LatexGenerator::endIndexSection(IndexSections is)
}
}
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:
{
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
......@@ -1321,10 +1369,39 @@ void LatexGenerator::endMemberItem()
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)
{
if (insideTabbing)
{
t << "\\>";
m_indent++;
}
else
t << "\\ ";
}
......
......@@ -49,7 +49,6 @@ class LatexGenerator : public OutputGenerator
void endFile();
void clearBuffer();
//void writeIndex();
void startIndexSection(IndexSections);
void endIndexSection(IndexSections);
void startProjectNumber();
......@@ -70,11 +69,6 @@ class LatexGenerator : public OutputGenerator
void endIndexValue(const char *,bool);
void startItemList() { t << "\\begin{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 docify(const char *text);
void codify(const char *text);
......@@ -86,7 +80,6 @@ class LatexGenerator : public OutputGenerator
void endTextLink();
void startHtmlLink(const char *url);
void endHtmlLink();
//void writeMailLink(const char *url);
void startTypewriter() { t << "{\\tt "; }
void endTypewriter() { t << "}"; }
void startGroupHeader();
......@@ -119,19 +112,9 @@ class LatexGenerator : public OutputGenerator
void writeAnchor(const char *fileName,const char *name);
void startCodeFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; }
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 startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
//void writeBoldString(const char *text)
// { t << "{\\bf "; docify(text); t << "}"; }
void startEmphasis() { t << "{\\em "; }
void endEmphasis() { t << "}"; }
void startBold() { t << "{\\bf "; }
......@@ -149,7 +132,6 @@ class LatexGenerator : public OutputGenerator
void endCodeAnchor() {}
void writeChar(char c);
void writeLatexSpacing() { t << "\\hspace{0.3cm}"; }
//void writeLatexLabel(const char *scope,const char *anchor);
void writeStartAnnoItem(const char *type,const char *file,
const char *path,const char *name);
void writeEndAnnoItem(const char *name);
......@@ -161,87 +143,27 @@ class LatexGenerator : public OutputGenerator
void endCenter() { t << "\\end{center}" << endl; }
void startSmall() { t << "\\footnotesize "; }
void endSmall() { t << "\\normalsize "; }
//void startSubscript() { t << "$_{\\mbox{"; }
//void endSubscript() { t << "}}$"; }
//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 startMemberDescription();
void endMemberDescription();
void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; }
void endDescList() { t << "\\end{Desc}" << endl; }
void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endSimpleSect();
void startParamList(ParamListTypes,const char *title);
void endParamList();
//void endDescTitle() { t << "]"; }
void writeDescItem() { t << "\\par" << endl; }
void startSection(const char *,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 startIndent() {}
void endIndent() {}
void writeSynopsis() {}
//void generateExternalIndex() {}
void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *);
//void startColorFont(uchar,uchar,uchar) {}
//void endColorFont() {}
void startPageRef();
void endPageRef(const char *,const char *);
//void startQuickIndexItem(const char *,const char *) {}
//void endQuickIndexItem() {}
void writeQuickLinks(bool,HighlightedItem) {}
//void writeFormula(const char *,const char *);
void writeNonBreakableSpace(int);
//void startImage(const char *,const char *,bool);
//void endImage(bool);
//void startDotFile(const char *,bool);
//void endDotFile(bool);
void startDescTable()
{ t << "\\begin{description}" << endl; }
......@@ -255,8 +177,6 @@ class LatexGenerator : public OutputGenerator
void endDescTableData() {}
void lastIndexPage() {}
//static void docifyStatic(QTextStream &t,const char *str);
void startDotGraph();
void endDotGraph(DotClassGraph &);
void startInclDepGraph();
......@@ -282,14 +202,6 @@ class LatexGenerator : public OutputGenerator
void startFontClass(const char *) {}
void endFontClass() {}
//void startHtmlOnly() {}
//void endHtmlOnly() {}
//void startLatexOnly() {}
//void endLatexOnly() {}
//void startSectionRefList();
//void endSectionRefList();
void writeCodeAnchor(const char *) {}
private:
......@@ -300,6 +212,7 @@ class LatexGenerator : public OutputGenerator
bool firstDescItem;
bool insidePre;
QCString relPath;
int m_indent;
};
#endif
......@@ -272,7 +272,6 @@ FORALL1(SectionTypes a1,a1)
FORALL1(bool a1,a1)
FORALL2(bool a1,int 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)
#endif
FORALL2(int a1,bool a2,a1,a2)
......@@ -283,6 +282,7 @@ FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2)
FORALL2(const char *a1,bool 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(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
......
......@@ -389,7 +389,6 @@ class OutputList : public OutputDocInterface
FORALLPROTO1(bool);
FORALLPROTO2(bool,int);
FORALLPROTO2(bool,bool);
FORALLPROTO3(bool,bool,bool);
FORALLPROTO4(const char *,const char *,const char *,int);
#endif
FORALLPROTO2(int,bool);
......@@ -399,6 +398,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool);
FORALLPROTO2(const char *,SectionInfo::SectionType);
FORALLPROTO3(bool,bool,bool);
FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(const char *,const char *,SectionInfo::SectionType);
FORALLPROTO3(uchar,uchar,uchar);
......
......@@ -36,6 +36,7 @@
#include "rtfstyle.h"
#include "rtfdocvisitor.h"
#include "docparser.h"
#include "dirdef.h"
//#define DBG_RTF(x) x;
#define DBG_RTF(x)
......@@ -388,6 +389,10 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Module Index
beginRTFChapter();
break;
case isDirIndex:
//Directory Index
beginRTFChapter();
break;
case isNamespaceIndex:
//Namespace Index
beginRTFChapter();
......@@ -409,21 +414,6 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Related Page Index
beginRTFChapter();
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:
{
//Module Documentation
......@@ -440,6 +430,22 @@ void RTFGenerator::startIndexSection(IndexSections is)
}
}
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:
{
// Namespace Documentation
......@@ -609,6 +615,11 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
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:
t << "\\par " << rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl;
......@@ -634,22 +645,6 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
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:
{
GroupSDict::Iterator gli(Doxygen::groupSDict);
......@@ -667,6 +662,23 @@ void RTFGenerator::endIndexSection(IndexSections is)
}
}
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:
{
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
......
......@@ -4225,6 +4225,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->startLine = yyLineNr;
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}+ {
current->section = Entry::EXAMPLE_SEC;
current->fileName = yyFileName;
......@@ -5029,7 +5035,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current_root->addSubEntry(current);
current = new Entry ;
initEntry();
BEGIN( FindMembers );
BEGIN( lastDocContext );
}
}
<PageDoc>"<"{TITLE}">" {
......
......@@ -422,6 +422,17 @@ class Translator
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
......@@ -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:
virtual QCString updateNeededMessage()
......
......@@ -32,7 +32,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class TranslatorBrazilian: public Translator
class TranslatorBrazilian : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -24,7 +24,7 @@
*/
#define CN_SPC
class TranslatorChinese : public Translator
class TranslatorChinese : public TranslatorAdapter_1_3_9
{
public:
/*! Used for identification of the language. The identification
......
......@@ -149,7 +149,7 @@
// Windows version. The version which does not call the function is
// probably slightly faster.
class TranslatorCzech : public Translator
class TranslatorCzech : public TranslatorAdapter_1_3_9
{
private:
/*! The decode() inline assumes the source written in the
......
......@@ -93,7 +93,7 @@
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
class TranslatorGerman : public Translator
class TranslatorGerman : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H
class TranslatorDanish : public Translator
class TranslatorDanish : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -18,27 +18,28 @@
#ifndef 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
// that you should copy the translator_en.h (this) file to your
// translator_xx.h new file. Your new language should use the
// Translator class as the base class. This means that you need to
// implement exactly the same (pure virtual) methods as the
// TranslatorEnglish does. Because of this, it is a good idea to
// 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
// language.cpp correctly. Not including any of the mentioned
// files frees the maintainer from thinking about whether the
// first, the second, or both files should be included or not, and
// why. This holds namely for localized translators because their
// base class is changed occasionaly to adapter classes when the
// Translator class changes the interface, or back to the
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
/*!
When defining a translator class for the new language, follow
the description in the documentation. One of the steps says
that you should copy the translator_en.h (this) file to your
translator_xx.h new file. Your new language should use the
Translator class as the base class. This means that you need to
implement exactly the same (pure virtual) methods as the
TranslatorEnglish does. Because of this, it is a good idea to
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
language.cpp correctly. Not including any of the mentioned
files frees the maintainer from thinking about whether the
first, the second, or both files should be included or not, and
why. This holds namely for localized translators because their
base class is changed occasionaly to adapter classes when the
Translator class changes the interface, or back to the
Translator class (by the local maintainer) when the localized
translator is made up-to-date again.
*/
class TranslatorEnglish : public Translator
{
public:
......@@ -1555,6 +1556,27 @@ class TranslatorEnglish : public Translator
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
......@@ -59,7 +59,7 @@
#ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H
class TranslatorCroatian : public Translator
class TranslatorCroatian : public TranslatorAdapter_1_3_9
{
private:
/*! to avoid macro redefinition from translator_cz.h */
......
......@@ -29,10 +29,7 @@
#ifndef TRANSLATOR_HU_H
#define TRANSLATOR_HU_H
#include "translator.h"
#include "../qtools/qdatetime.h"
class TranslatorHungarian : public TranslatorAdapter_1_3_8
class TranslatorHungarian : public TranslatorAdapter_1_3_9
{
private:
const char * zed(char c)
......@@ -1518,6 +1515,17 @@ class TranslatorHungarian : public TranslatorAdapter_1_3_8
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
......@@ -71,7 +71,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class TranslatorItalian : public Translator
class TranslatorItalian : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -29,7 +29,7 @@
#ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H
class TranslatorJapanese : public Translator
class TranslatorJapanese : public TranslatorAdapter_1_3_9
{
private:
/*! The decode() can change euc into sjis */
......
......@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
class TranslatorDutch : public Translator
class TranslatorDutch : public TranslatorAdapter_1_3_9
{
public:
QCString idLanguage()
......
......@@ -41,7 +41,7 @@
#ifndef TRANSLATOR_NO_H
#define TRANSLATOR_NO_H
class TranslatorNorwegian : public Translator
class TranslatorNorwegian : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -13,14 +13,14 @@
* Documents produced by Doxygen are derivative works derived from the
* 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)
*/
#ifndef TRANSLATOR_PL_H
#define TRANSLATOR_PL_H
class TranslatorPolish : public TranslatorAdapter_1_3
class TranslatorPolish : public TranslatorAdapter_1_3_9
{
private:
/*! to avoid macro redefinition from translator_pl.h */
......@@ -57,9 +57,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
{
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 */
virtual QCString idLanguageCharset()
......@@ -154,12 +151,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
/*! put after an undocumented member in the list of all members */
QCString trDefinedIn()
{ return "zdefiniowana w"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
QCString trVerbatimText(const char *f)
{ return (QCString)decode("Tutaj znajduje siê zawarto¶æ pliku nag³ówkowego ")+f+"."; }
// quick reference sections
......@@ -472,10 +463,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
QCString trEnumerationValues()
{ 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
* documentation blocks for defines
*/
......@@ -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
* the page was generated
*/
......@@ -586,10 +567,6 @@ class TranslatorPolish : public TranslatorAdapter_1_3
QCString trDate()
{ return "Data"; }
/*! this text is generated when the \\author command is used. */
QCString trAuthors()
{ return "Autorzy"; }
/*! this text is generated when the \\return command is used. */
QCString trReturns()
{ return "Zwraca"; }
......@@ -1410,6 +1387,130 @@ class TranslatorPolish : public TranslatorAdapter_1_3
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 @@
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
class TranslatorRussian : public Translator
class TranslatorRussian : public TranslatorAdapter_1_3_9
{
private:
/*! The Decode() inline assumes the source written in the
......
......@@ -26,7 +26,7 @@
#ifndef TRANSLATOR_ZA_H
#define TRANSLATOR_ZA_H
class TranslatorAfrikaans : public Translator
class TranslatorAfrikaans : public TranslatorAdapter_1_3_9
{
public:
......
......@@ -1467,6 +1467,61 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
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)
{
// + name
......@@ -1534,7 +1589,6 @@ void generateXML()
// + classes
// + namespaces
// + files
// - packages
// + groups
// + related pages
// - examples
......@@ -1668,6 +1722,15 @@ void generateXML()
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);
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