Commit 48f4fd9c authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.7.2-20101224

parent dd7602fd
...@@ -190,7 +190,7 @@ ENUM_VALUES_PER_LINE = 4 ...@@ -190,7 +190,7 @@ ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = YES
USE_INLINE_TREES = YES USE_INLINE_TREES = YES
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = YES EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10 FORMULA_FONTSIZE = 10
SEARCHENGINE = YES SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO SERVER_BASED_SEARCH = NO
......
DOXYGEN Version 1.7.2-20101118 DOXYGEN Version 1.7.2-20101224
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 (18 November 2010) Dimitri van Heesch (24 December 2010)
DOXYGEN Version 1.7.2_20101118 DOXYGEN Version 1.7.2_20101224
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -26,4 +26,4 @@ forum. ...@@ -26,4 +26,4 @@ forum.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (18 November 2010) Dimitri van Heesch (dimitri@stack.nl) (24 December 2010)
...@@ -6,5 +6,6 @@ ...@@ -6,5 +6,6 @@
<file>images/file.png</file> <file>images/file.png</file>
<file>images/folder.png</file> <file>images/folder.png</file>
<file>images/refresh.png</file> <file>images/refresh.png</file>
<file>images/tunecolor.png</file>
</qresource> </qresource>
</RCC> </RCC>
...@@ -117,6 +117,32 @@ static void updateStringOption( ...@@ -117,6 +117,32 @@ static void updateStringOption(
//========================================================================== //==========================================================================
TuneColorDialog::TuneColorDialog(QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("Tune the color of the HTML output"));
QGridLayout *layout = new QGridLayout(this);
m_image = new QImage(QString::fromAscii(":/images/tunecolor.png"));
m_imageLab = new QLabel;
m_imageLab->setPixmap(QPixmap::fromImage(*m_image));
layout->addWidget(new QLabel(tr("Example output: use the sliders to change")),0,0);
layout->addWidget(m_imageLab,1,0);
QHBoxLayout *buttonsLayout = new QHBoxLayout;
QPushButton *okButton = new QPushButton(tr("Ok"));
connect(okButton,SIGNAL(clicked()),SLOT(accept()));
okButton->setDefault(true);
QPushButton *cancelButton = new QPushButton(tr("Cancel"));
connect(cancelButton,SIGNAL(clicked()),SLOT(reject()));
buttonsLayout->addStretch();
buttonsLayout->addWidget(okButton);
buttonsLayout->addWidget(cancelButton);
layout->addLayout(buttonsLayout,5,0);
}
//==========================================================================
Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(wizard), m_modelData(modelData) Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(wizard), m_modelData(modelData)
{ {
QVBoxLayout *layout = new QVBoxLayout(this); QVBoxLayout *layout = new QVBoxLayout(this);
...@@ -477,9 +503,14 @@ Step3::Step3(Wizard *wizard,const QHash<QString,Input*> &modelData) ...@@ -477,9 +503,14 @@ Step3::Step3(Wizard *wizard,const QHash<QString,Input*> &modelData)
m_htmlOptionsGroup->addButton(r, 2); m_htmlOptionsGroup->addButton(r, 2);
// GENERATE_HTMLHELP // GENERATE_HTMLHELP
vbox->addWidget(r); vbox->addWidget(r);
m_searchEnabled=new QCheckBox(tr("With search function (requires PHP enabled web server)")); m_searchEnabled=new QCheckBox(tr("With search function"));
vbox->addWidget(m_searchEnabled); vbox->addWidget(m_searchEnabled);
// SEARCH_ENGINE // SEARCH_ENGINE
QHBoxLayout *hbox = new QHBoxLayout;
m_tuneColor=new QPushButton(tr("Change color..."));
hbox->addWidget(m_tuneColor);
hbox->addStretch(1);
vbox->addLayout(hbox);
m_htmlOptions->setLayout(vbox); m_htmlOptions->setLayout(vbox);
m_htmlOptions->setChecked(true); m_htmlOptions->setChecked(true);
} }
...@@ -531,6 +562,13 @@ Step3::Step3(Wizard *wizard,const QHash<QString,Input*> &modelData) ...@@ -531,6 +562,13 @@ Step3::Step3(Wizard *wizard,const QHash<QString,Input*> &modelData)
SLOT(setHtmlOptions(int))); SLOT(setHtmlOptions(int)));
connect(m_texOptionsGroup,SIGNAL(buttonClicked(int)), connect(m_texOptionsGroup,SIGNAL(buttonClicked(int)),
SLOT(setLatexOptions(int))); SLOT(setLatexOptions(int)));
connect(m_tuneColor,SIGNAL(clicked()),SLOT(tuneColorDialog()));
}
void Step3::tuneColorDialog()
{
TuneColorDialog tuneColor(this);
tuneColor.exec();
} }
void Step3::setHtmlEnabled(bool b) void Step3::setHtmlEnabled(bool b)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <QSplitter> #include <QSplitter>
#include <QHash> #include <QHash>
#include <QDialog>
class Input; class Input;
class QTreeWidget; class QTreeWidget;
...@@ -29,12 +30,26 @@ class QRadioButton; ...@@ -29,12 +30,26 @@ class QRadioButton;
class QGroupBox; class QGroupBox;
class QButtonGroup; class QButtonGroup;
class Wizard; class Wizard;
class QImage;
class QLabel;
enum OptLang { Lang_Cpp, Lang_C, Lang_Java, Lang_CS }; enum OptLang { Lang_Cpp, Lang_C, Lang_Java, Lang_CS };
enum HtmlStyle { HS_Plain, HS_TreeView, HS_CHM }; enum HtmlStyle { HS_Plain, HS_TreeView, HS_CHM };
enum TexStyle { TS_PDFHyper, TS_PDF, TS_PS }; enum TexStyle { TS_PDFHyper, TS_PDF, TS_PS };
enum DiagramMode { DM_None, DM_Builtin, DM_Dot }; enum DiagramMode { DM_None, DM_Builtin, DM_Dot };
class TuneColorDialog : public QDialog
{
Q_OBJECT
public:
TuneColorDialog(QWidget *parent=0);
private:
QImage *m_image;
QLabel *m_imageLab;
};
class Step1 : public QWidget class Step1 : public QWidget
{ {
Q_OBJECT Q_OBJECT
...@@ -103,6 +118,7 @@ class Step3 : public QWidget ...@@ -103,6 +118,7 @@ class Step3 : public QWidget
void setSearchEnabled(int); void setSearchEnabled(int);
void setHtmlOptions(int); void setHtmlOptions(int);
void setLatexOptions(int); void setLatexOptions(int);
void tuneColorDialog();
private: private:
QGroupBox *m_texOptions; QGroupBox *m_texOptions;
...@@ -115,6 +131,7 @@ class Step3 : public QWidget ...@@ -115,6 +131,7 @@ class Step3 : public QWidget
QCheckBox *m_rtfEnabled; QCheckBox *m_rtfEnabled;
QCheckBox *m_xmlEnabled; QCheckBox *m_xmlEnabled;
QCheckBox *m_searchEnabled; QCheckBox *m_searchEnabled;
QPushButton *m_tuneColor;
Wizard *m_wizard; Wizard *m_wizard;
const QHash<QString,Input *> &m_modelData; const QHash<QString,Input *> &m_modelData;
}; };
......
...@@ -20,7 +20,7 @@ doxygen_version_minor=7 ...@@ -20,7 +20,7 @@ doxygen_version_minor=7
doxygen_version_revision=2 doxygen_version_revision=2
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20101118 doxygen_version_mmn=20101224
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -189,6 +189,7 @@ documentation: ...@@ -189,6 +189,7 @@ documentation:
\refitem cmdhash \\\# \refitem cmdhash \\\#
\refitem cmdperc \\\% \refitem cmdperc \\\%
\refitem cmdquot \\\" \refitem cmdquot \\\"
\refitem cmddcolon \\\::
\endsecreflist \endsecreflist
The following subsections provide a list of all commands that are recognized by The following subsections provide a list of all commands that are recognized by
...@@ -2701,6 +2702,14 @@ class Receiver ...@@ -2701,6 +2702,14 @@ class Receiver
character has to be escaped in some cases, because it is used in pairs character has to be escaped in some cases, because it is used in pairs
to indicate an unformatted text fragment. to indicate an unformatted text fragment.
<hr>
\section cmddcolon \\::
\addindex \\\::
This command write a double colon (\::) to the output. This
character sequence has to be escaped in some cases, because it is used
to ref to documented entities.
<hr> <hr>
\htmlonly <center> \endhtmlonly \htmlonly <center> \endhtmlonly
<h2> <h2>
......
...@@ -801,6 +801,16 @@ function's detailed documentation block. ...@@ -801,6 +801,16 @@ function's detailed documentation block.
putting \ref cmddeprecated "\\deprecated" putting \ref cmddeprecated "\\deprecated"
commands in the documentation. commands in the documentation.
\anchor cfg_strict_proto_matching
<dt>\c STRICT_PROTO_MATCHING <dd>
\addindex STRICT_PROTO_MATCHING
If the \c STRICT_PROTO_MATCHING option is enabled and doxygen fails to
do proper type resolution of all parameters of a function it will reject a
match between the prototype and the implementation of a member function even
if there is only one candidate or it is obvious which candidate to choose
by doing a simple string match. By disabling \c STRICT_PROTO_MATCHING doxygen
will still accept a match between prototype and implementation in such cases.
\anchor cfg_generate_todolist \anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd> <dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST \addindex GENERATE_TODOLIST
......
...@@ -30,6 +30,7 @@ Maximiliano Pin: max dot pin at bitroit dot com ...@@ -30,6 +30,7 @@ Maximiliano Pin: max dot pin at bitroit dot com
Albert Mora: [unreachable] amora at iua dot upf dot es Albert Mora: [unreachable] amora at iua dot upf dot es
TranslatorChinese TranslatorChinese
Lang Yang: lian dot yang dot cn at gmail dot com
Li Daobing: lidaobing at gmail dot com Li Daobing: lidaobing at gmail dot com
Wei Liu: liuwei at asiainfo dot com Wei Liu: liuwei at asiainfo dot com
......
# Doxyfile 1.6.3 # Doxyfile 1.7.2
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
...@@ -62,6 +62,7 @@ SORT_BRIEF_DOCS = NO ...@@ -62,6 +62,7 @@ SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
...@@ -104,6 +105,7 @@ IMAGE_PATH = ...@@ -104,6 +105,7 @@ IMAGE_PATH =
INPUT_FILTER = INPUT_FILTER =
FILTER_PATTERNS = FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
...@@ -131,9 +133,9 @@ HTML_HEADER = ...@@ -131,9 +133,9 @@ HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 80 HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80 HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = NO HTML_TIMESTAMP = YES
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = YES GENERATE_DOCSET = YES
...@@ -165,6 +167,9 @@ USE_INLINE_TREES = NO ...@@ -165,6 +167,9 @@ USE_INLINE_TREES = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10 FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
USE_MATHJAX = NO
MATHJAX_RELPATH = http://www.mathjax.org/mathjax
SEARCHENGINE = YES SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO SERVER_BASED_SEARCH = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
...@@ -241,10 +246,10 @@ PERL_PATH = /usr/bin/perl ...@@ -241,10 +246,10 @@ PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = NO
MSCGEN_PATH = MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES HAVE_DOT = NO
DOT_NUM_THREADS = 0 DOT_NUM_THREADS = 0
DOT_FONTNAME = FreeSans.ttf DOT_FONTNAME = FreeSans.ttf
DOT_FONTSIZE = 10 DOT_FONTSIZE = 10
...@@ -263,6 +268,7 @@ DIRECTORY_GRAPH = YES ...@@ -263,6 +268,7 @@ DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS = DOTFILE_DIRS =
MSCFILE_DIRS =
DOT_GRAPH_MAX_NODES = 50 DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0 MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES DOT_TRANSPARENT = YES
......
...@@ -1434,6 +1434,7 @@ void ClassDef::writeSummaryLinks(OutputList &ol) ...@@ -1434,6 +1434,7 @@ void ClassDef::writeSummaryLinks(OutputList &ol)
// write all documentation for this class // write all documentation for this class
void ClassDef::writeDocumentation(OutputList &ol) void ClassDef::writeDocumentation(OutputList &ol)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL"); static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
QCString pageType = " "; QCString pageType = " ";
...@@ -1459,12 +1460,15 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1459,12 +1460,15 @@ void ClassDef::writeDocumentation(OutputList &ol)
m_impl->tempArgs != 0); m_impl->tempArgs != 0);
} }
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_ClassVisible,TRUE); startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_ClassVisible,!generateTreeView);
if (getOuterScope()!=Doxygen::globalScope) if (!generateTreeView)
{ {
writeNavigationPath(ol); if (getOuterScope()!=Doxygen::globalScope)
{
writeNavigationPath(ol);
}
ol.endQuickIndices();
} }
ol.endQuickIndices();
startTitle(ol,getOutputFileBase(),this); startTitle(ol,getOutputFileBase(),this);
ol.parseText(pageTitle); ol.parseText(pageTitle);
...@@ -1621,8 +1625,15 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1621,8 +1625,15 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeDocAnchorsToTagFile(); writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl; Doxygen::tagFile << " </compound>" << endl;
} }
ol.endContents();
if (generateTreeView)
{
writeNavigationPath(ol);
}
endFile(ol); endFile(ol,TRUE);
if (Config_getBool("SEPARATE_MEMBER_PAGES")) if (Config_getBool("SEPARATE_MEMBER_PAGES"))
{ {
...@@ -1730,14 +1741,23 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1730,14 +1741,23 @@ void ClassDef::writeMemberList(OutputList &ol)
{ {
static bool cOpt = Config_getBool("OPTIMIZE_OUTPUT_FOR_C"); static bool cOpt = Config_getBool("OPTIMIZE_OUTPUT_FOR_C");
static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL"); static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
if (m_impl->allMemberNameInfoSDict==0 || cOpt) return; if (m_impl->allMemberNameInfoSDict==0 || cOpt) return;
// only for HTML // only for HTML
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
QCString memListFile = getMemberListFileName(); QCString memListFile = getMemberListFileName();
startFile(ol,memListFile,memListFile, startFile(ol,memListFile,memListFile,theTranslator->trMemberList(),
theTranslator->trMemberList(),HLI_ClassVisible); HLI_ClassVisible,!generateTreeView,getOutputFileBase());
if (!generateTreeView)
{
if (getOuterScope()!=Doxygen::globalScope)
{
writeNavigationPath(ol);
}
ol.endQuickIndices();
}
startTitle(ol,0); startTitle(ol,0);
ol.parseText(displayName()+" "+theTranslator->trMemberList()); ol.parseText(displayName()+" "+theTranslator->trMemberList());
endTitle(ol,0,0); endTitle(ol,0,0);
......
...@@ -1890,8 +1890,14 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP} ...@@ -1890,8 +1890,14 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
bool ambig; bool ambig;
bool found=FALSE; bool found=FALSE;
FileDef *fd=0; FileDef *fd=0;
//printf("looking for include %s\n",yytext); QCString absPath = yytext;
if ((fd=findFileDef(Doxygen::inputNameDict,yytext,ambig)) && if (g_sourceFileDef && QDir::isRelativePath(absPath))
{
absPath = QDir::cleanDirPath(g_sourceFileDef->getPath()+"/"+absPath);
}
//printf("looking for include %s -> %s\n",yytext,absPath.data());
if ((fd=findFileDef(Doxygen::inputNameDict,absPath,ambig)) &&
fd->isLinkable()) fd->isLinkable())
{ {
if (ambig) // multiple input files match the name if (ambig) // multiple input files match the name
......
...@@ -1303,6 +1303,7 @@ void Config::check() ...@@ -1303,6 +1303,7 @@ void Config::check()
filePatternList.append("*.py"); filePatternList.append("*.py");
filePatternList.append("*.f90"); filePatternList.append("*.f90");
filePatternList.append("*.f"); filePatternList.append("*.f");
filePatternList.append("*.for");
filePatternList.append("*.vhd"); filePatternList.append("*.vhd");
filePatternList.append("*.vhdl"); filePatternList.append("*.vhdl");
if (portable_fileSystemIsCaseSensitive()) if (portable_fileSystemIsCaseSensitive())
......
...@@ -14,6 +14,17 @@ by quotes) that should identify the project. ' defval=''/> ...@@ -14,6 +14,17 @@ by quotes) that should identify the project. ' defval=''/>
The PROJECT_NUMBER tag can be used to enter a project or revision number. The PROJECT_NUMBER tag can be used to enter a project or revision number.
This could be handy for archiving the generated documentation or This could be handy for archiving the generated documentation or
if some version control system is used. if some version control system is used.
' defval=''/>
<option type='string' id='PROJECT_BRIEF' format='string' docs='
Using the PROJECT_BRIEF tag one can provide an optional one line description
for a project that appears at the top of each page and should give viewer
a quick idea about the purpose of the project. Keep the description short.
' defval=''/>
<option type='string' id='PROJECT_LOGO' format='file' docs='
With the PROJECT_LOGO tag one can specify an logo or icon that is
included in the documentation. The maximum height of the logo should not
exceed 55 pixels and the maximum width should not exceed 200 pixels.
Doxygen will copy the logo to the output directory.
' defval=''/> ' defval=''/>
<option type='string' id='OUTPUT_DIRECTORY' format='dir' docs=' <option type='string' id='OUTPUT_DIRECTORY' format='dir' docs='
The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
...@@ -565,7 +576,7 @@ and *.h) to filter out the source-files in the directories. If left ...@@ -565,7 +576,7 @@ and *.h) to filter out the source-files in the directories. If left
blank the following patterns are tested: blank the following patterns are tested:
*.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
*.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
*.f90 *.f *.vhd *.vhdl *.f90 *.f *.for *.vhd *.vhdl
'> '>
<value name='*.c'/> <value name='*.c'/>
<value name='*.cc'/> <value name='*.cc'/>
...@@ -596,6 +607,7 @@ blank the following patterns are tested: ...@@ -596,6 +607,7 @@ blank the following patterns are tested:
<value name='*.py'/> <value name='*.py'/>
<value name='*.f90'/> <value name='*.f90'/>
<value name='*.f'/> <value name='*.f'/>
<value name='*.for'/>
<value name='*.vhd'/> <value name='*.vhd'/>
<value name='*.vhdl'/> <value name='*.vhdl'/>
</option> </option>
...@@ -666,7 +678,7 @@ input file. Doxygen will then use the output that the filter program writes ...@@ -666,7 +678,7 @@ input file. Doxygen will then use the output that the filter program writes
to standard output. If FILTER_PATTERNS is specified, this tag will be to standard output. If FILTER_PATTERNS is specified, this tag will be
ignored. ignored.
' defval=''/> ' defval=''/>
<option type='list' id='FILTER_PATTERNS' format='file' docs=' <option type='list' id='FILTER_PATTERNS' format='string' docs='
The FILTER_PATTERNS tag can be used to specify filters on a per file pattern The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
basis. Doxygen will compare the file name with each pattern and apply the basis. Doxygen will compare the file name with each pattern and apply the
filter if there is a match. The filters are a list of the form: filter if there is a match. The filters are a list of the form:
...@@ -680,7 +692,7 @@ If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using ...@@ -680,7 +692,7 @@ If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
INPUT_FILTER) will be used to filter the input files when producing source INPUT_FILTER) will be used to filter the input files when producing source
files to browse (i.e. when SOURCE_BROWSER is set to YES). files to browse (i.e. when SOURCE_BROWSER is set to YES).
' defval='0'/> ' defval='0'/>
<option type='list' id='FILTER_SOURCE_PATTERNS' format='file' docs=' <option type='list' id='FILTER_SOURCE_PATTERNS' format='string' docs='
The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
pattern. A pattern will override the setting for FILTER_PATTERN (if any) pattern. A pattern will override the setting for FILTER_PATTERN (if any)
and it is also possible to disable source filtering for a specific pattern and it is also possible to disable source filtering for a specific pattern
......
...@@ -43,6 +43,20 @@ void addConfigOptions(Config *cfg) ...@@ -43,6 +43,20 @@ void addConfigOptions(Config *cfg)
"if some version control system is used." "if some version control system is used."
); );
//---- //----
cs = cfg->addString(
"PROJECT_BRIEF",
"Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short."
);
//----
cs = cfg->addString(
"PROJECT_LOGO",
"With the PROJECT_LOGO tag one can specify an logo or icon that is\n"
"included in the documentation. The maximum height of the logo should not\n"
"exceed 55 pixels and the maximum width should not exceed 200 pixels.\n"
"Doxygen will copy the logo to the output directory."
);
cs->setWidgetType(ConfigString::File);
//----
cs = cfg->addString( cs = cfg->addString(
"OUTPUT_DIRECTORY", "OUTPUT_DIRECTORY",
"The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)\n" "The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)\n"
...@@ -811,7 +825,7 @@ void addConfigOptions(Config *cfg) ...@@ -811,7 +825,7 @@ void addConfigOptions(Config *cfg)
"blank the following patterns are tested:\n" "blank the following patterns are tested:\n"
"*.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh\n" "*.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh\n"
"*.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py\n" "*.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py\n"
"*.f90 *.f *.vhd *.vhdl" "*.f90 *.f *.for *.vhd *.vhdl"
); );
cl->addValue("*.c"); cl->addValue("*.c");
cl->addValue("*.cc"); cl->addValue("*.cc");
...@@ -842,6 +856,7 @@ void addConfigOptions(Config *cfg) ...@@ -842,6 +856,7 @@ void addConfigOptions(Config *cfg)
cl->addValue("*.py"); cl->addValue("*.py");
cl->addValue("*.f90"); cl->addValue("*.f90");
cl->addValue("*.f"); cl->addValue("*.f");
cl->addValue("*.for");
cl->addValue("*.vhd"); cl->addValue("*.vhd");
cl->addValue("*.vhdl"); cl->addValue("*.vhdl");
//---- //----
...@@ -945,7 +960,6 @@ void addConfigOptions(Config *cfg) ...@@ -945,7 +960,6 @@ void addConfigOptions(Config *cfg)
"info on how filters are used. If FILTER_PATTERNS is empty or if\n" "info on how filters are used. If FILTER_PATTERNS is empty or if\n"
"non of the patterns match the file name, INPUT_FILTER is applied." "non of the patterns match the file name, INPUT_FILTER is applied."
); );
cl->setWidgetType(ConfigList::File);
//---- //----
cb = cfg->addBool( cb = cfg->addBool(
"FILTER_SOURCE_FILES", "FILTER_SOURCE_FILES",
...@@ -964,7 +978,6 @@ void addConfigOptions(Config *cfg) ...@@ -964,7 +978,6 @@ void addConfigOptions(Config *cfg)
"FILTER_SOURCE_FILES is enabled." "FILTER_SOURCE_FILES is enabled."
); );
cl->addDependency("FILTER_SOURCE_FILES"); cl->addDependency("FILTER_SOURCE_FILES");
cl->setWidgetType(ConfigList::File);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
cfg->addInfo("Source Browser","configuration options related to source browsing"); cfg->addInfo("Source Browser","configuration options related to source browsing");
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
......
...@@ -275,11 +275,10 @@ ID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]* ...@@ -275,11 +275,10 @@ ID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
int i=l-1; int i=l-1;
while (i>=0 && (isspace((uchar)g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--; while (i>=0 && (isspace((uchar)g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
while (i>=0 && isId(g_curArgTypeName.at(i))) i--; while (i>=0 && isId(g_curArgTypeName.at(i))) i--;
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
Argument *a = new Argument; Argument *a = new Argument;
a->attrib = g_curArgAttrib.copy(); a->attrib = g_curArgAttrib.copy();
//printf("a->type=%s a->name=%s i=%d l=%d\n", //printf("a->type=%s a->name=%s i=%d l=%d\n",
// a->type.data(),a->name.data(),i,l); // a->type.data(),a->name.data(),i,l);
a->array.resize(0); a->array.resize(0);
if (i==l-1 && g_curArgTypeName.at(i)==')') // function argument if (i==l-1 && g_curArgTypeName.at(i)==')') // function argument
{ {
...@@ -300,24 +299,28 @@ ID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]* ...@@ -300,24 +299,28 @@ ID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
} }
else if (i>=0 && g_curArgTypeName.at(i)!=':') else if (i>=0 && g_curArgTypeName.at(i)!=':')
{ // type contains a name { // type contains a name
a->type = removeRedundantWhiteSpace(g_curArgTypeName.left(i+1)); a->type = removeRedundantWhiteSpace(g_curArgTypeName.left(i+1)).stripWhiteSpace();
a->name = g_curArgTypeName.right(l-i-1).stripWhiteSpace(); a->name = g_curArgTypeName.right(l-i-1).stripWhiteSpace();
// if the type becomes a type specifier only then we make a mistake // if the type becomes a type specifier only then we make a mistake
// and need to correct it to avoid seeing a nameless parameter // and need to correct it to avoid seeing a nameless parameter
// "struct A" as a parameter with type "struct" and name "A". // "struct A" as a parameter with type "struct" and name "A".
int sv=0; int sv=0;
if (a->type.left(6)=="const ") sv=6; if (a->type.left(6)=="const ") sv=6;
else if (a->type.left(8)=="volatile ") sv=9; else if (a->type.left(9)=="volatile ") sv=9;
if (a->type.mid(sv)=="struct" ||
a->type.mid(sv)=="union" || if (a->type.mid(sv)=="struct" ||
a->type.mid(sv)=="class" || a->type.mid(sv)=="union" ||
a->type.mid(sv)=="typename" || a->type.mid(sv)=="class" ||
a->type=="const" || a->type=="volatile") a->type.mid(sv)=="typename" ||
a->type=="const" ||
a->type=="volatile"
)
{ {
a->type = a->type + " " + a->name; a->type = a->type + " " + a->name;
a->name.resize(0); a->name.resize(0);
} }
//printf(" --> a->type='%s'\n",a->type.data());
} }
else // assume only the type was specified, try to determine name later else // assume only the type was specified, try to determine name later
{ {
......
...@@ -575,6 +575,7 @@ static bool readCodeFragment(const char *fileName, ...@@ -575,6 +575,7 @@ static bool readCodeFragment(const char *fileName,
char cn=0; char cn=0;
while (lineNr<=endLine && !feof(f) && !found) while (lineNr<=endLine && !feof(f) && !found)
{ {
int pc=0;
while ((c=fgetc(f))!='{' && c!=':' && c!=EOF) while ((c=fgetc(f))!='{' && c!=':' && c!=EOF)
{ {
//printf("parsing char `%c'\n",c); //printf("parsing char `%c'\n",c);
...@@ -586,10 +587,24 @@ static bool readCodeFragment(const char *fileName, ...@@ -586,10 +587,24 @@ static bool readCodeFragment(const char *fileName,
{ {
col+=Config_getInt("TAB_SIZE") - (col%Config_getInt("TAB_SIZE")); col+=Config_getInt("TAB_SIZE") - (col%Config_getInt("TAB_SIZE"));
} }
else if (pc=='/' && c=='/') // skip single line comment
{
while ((c=fgetc(f))!='\n' && c!=EOF) pc=c;
if (c=='\n') lineNr++,col=0;
}
else if (pc=='/' && c=='*') // skip C style comment
{
while (((c=fgetc(f))!='/' || pc!='*') && c!=EOF)
{
if (c=='\n') lineNr++,col=0;
pc=c;
}
}
else else
{ {
col++; col++;
} }
pc = c;
} }
if (c==':') if (c==':')
{ {
...@@ -1291,7 +1306,7 @@ void Definition::writePathFragment(OutputList &ol) const ...@@ -1291,7 +1306,7 @@ void Definition::writePathFragment(OutputList &ol) const
{ {
m_impl->outerScope->writePathFragment(ol); m_impl->outerScope->writePathFragment(ol);
} }
ol.writeString(" <li>"); ol.writeString(" <li class=\"navelem\">");
if (isLinkable()) if (isLinkable())
{ {
if (definitionType()==Definition::TypeGroup && ((const GroupDef*)this)->groupTitle()) if (definitionType()==Definition::TypeGroup && ((const GroupDef*)this)->groupTitle())
...@@ -1327,14 +1342,31 @@ void Definition::writePathFragment(OutputList &ol) const ...@@ -1327,14 +1342,31 @@ void Definition::writePathFragment(OutputList &ol) const
void Definition::writeNavigationPath(OutputList &ol) const void Definition::writeNavigationPath(OutputList &ol) const
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
static bool hasCustomFooter = !Config_getString("HTML_FOOTER").isEmpty();
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.writeString(" <div class=\"navpath\">\n"); if (generateTreeView)
{
ol.writeString("</div>\n");
}
ol.writeString(" <div id=\"nav-path\" class=\"navpath\">\n");
ol.writeString(" <ul>\n"); ol.writeString(" <ul>\n");
writePathFragment(ol); writePathFragment(ol);
ol.writeString(" </ul>\n"); if (!hasCustomFooter)
ol.writeString(" </div>\n"); {
if (generateTreeView) // write the doxygen logo as part of the navigation bar
{
ol.writeString(" <li class=\"footer\">");
ol.writeLogo();
ol.writeString("</li>\n");
}
ol.writeString(" </ul>\n");
ol.writeString(" </div>\n");
}
ol.popGeneratorState(); ol.popGeneratorState();
} }
......
...@@ -191,12 +191,12 @@ void DirDef::writeDirectoryGraph(OutputList &ol) ...@@ -191,12 +191,12 @@ void DirDef::writeDirectoryGraph(OutputList &ol)
{ {
msg("Generating dependency graph for directory %s\n",displayName().data()); msg("Generating dependency graph for directory %s\n",displayName().data());
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
ol.startParagraph(); //ol.startParagraph();
ol.startDirDepGraph(); ol.startDirDepGraph();
//TODO: ol.parseText(theTranslator->trDirDepGraph()); //TODO: ol.parseText(theTranslator->trDirDepGraph());
ol.parseText((QCString)"Directory dependency graph for "+displayName()+":"); ol.parseText((QCString)"Directory dependency graph for "+displayName()+":");
ol.endDirDepGraph(dirDep); ol.endDirDepGraph(dirDep);
ol.endParagraph(); //ol.endParagraph();
ol.enableAll(); ol.enableAll();
} }
} }
...@@ -318,16 +318,19 @@ void DirDef::endMemberDeclarations(OutputList &ol) ...@@ -318,16 +318,19 @@ void DirDef::endMemberDeclarations(OutputList &ol)
void DirDef::writeDocumentation(OutputList &ol) void DirDef::writeDocumentation(OutputList &ol)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState(); ol.pushGeneratorState();
QCString shortTitle=theTranslator->trDirReference(m_shortName); QCString shortTitle=theTranslator->trDirReference(m_shortName);
QCString title=theTranslator->trDirReference(m_dispName); QCString title=theTranslator->trDirReference(m_dispName);
startFile(ol,getOutputFileBase(),name(),title,HLI_None,TRUE); startFile(ol,getOutputFileBase(),name(),title,HLI_None,!generateTreeView);
// write navigation path if (!generateTreeView)
writeNavigationPath(ol); {
// write navigation path
ol.endQuickIndices(); writeNavigationPath(ol);
ol.endQuickIndices();
}
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.pushGeneratorState(); ol.pushGeneratorState();
...@@ -422,35 +425,18 @@ void DirDef::writeDocumentation(OutputList &ol) ...@@ -422,35 +425,18 @@ void DirDef::writeDocumentation(OutputList &ol)
Doxygen::tagFile << " </compound>" << endl; Doxygen::tagFile << " </compound>" << endl;
} }
endFile(ol); ol.endContents();
ol.popGeneratorState();
}
#if 0 if (generateTreeView)
void DirDef::writePathFragment(OutputList &ol) const
{
if (m_parent)
{ {
m_parent->writePathFragment(ol); writeNavigationPath(ol);
ol.writeString("&#160;/&#160;");
} }
ol.writeObjectLink(getReference(),getOutputFileBase(),0,shortName());
}
void DirDef::writeNavigationPath(OutputList &ol) endFile(ol,TRUE);
{ ol.popGeneratorState();
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString("<div class=\"nav\">\n");
writePathFragment(ol);
ol.writeString("</div>\n");
ol.popGeneratorState();
} }
#endif
void DirDef::setLevel() void DirDef::setLevel()
{ {
...@@ -701,6 +687,7 @@ static void writePartialFilePath(OutputList &ol,const DirDef *root,const FileDef ...@@ -701,6 +687,7 @@ static void writePartialFilePath(OutputList &ol,const DirDef *root,const FileDef
void DirRelation::writeDocumentation(OutputList &ol) void DirRelation::writeDocumentation(OutputList &ol)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
...@@ -710,28 +697,24 @@ void DirRelation::writeDocumentation(OutputList &ol) ...@@ -710,28 +697,24 @@ void DirRelation::writeDocumentation(OutputList &ol)
QCString title=theTranslator->trDirRelation( QCString title=theTranslator->trDirRelation(
m_src->displayName()+" -> "+ m_src->displayName()+" -> "+
m_dst->dir()->shortName()); m_dst->dir()->shortName());
startFile(ol,getOutputFileBase(),getOutputFileBase(),title); startFile(ol,getOutputFileBase(),getOutputFileBase(),
title,HLI_None,!generateTreeView,m_src->getOutputFileBase());
// write navigation path if (!generateTreeView)
m_src->writeNavigationPath(ol); {
// write navigation path
m_src->writeNavigationPath(ol);
ol.endQuickIndices();
}
ol.startContents(); ol.startContents();
//startTitle(ol,getOutputFileBase());
// ol.parseText(shortTitle);
//endTitle(ol,getOutputFileBase(),title);
ol.writeString("<h3>"+shortTitle+"</h3>"); ol.writeString("<h3>"+shortTitle+"</h3>");
ol.writeString("<table class=\"dirtab\">"); ol.writeString("<table class=\"dirtab\">");
ol.writeString("<tr class=\"dirtab\">"); ol.writeString("<tr class=\"dirtab\">");
// TODO: translate me! "File in %s"
ol.writeString("<th class=\"dirtab\">"); ol.writeString("<th class=\"dirtab\">");
ol.parseText(theTranslator->trFileIn(m_src->pathFragment())); ol.parseText(theTranslator->trFileIn(m_src->pathFragment()));
//m_src->writePathFragment(ol);
ol.writeString("</th>"); ol.writeString("</th>");
// TODO: translate me! "Includes file in %s"
ol.writeString("<th class=\"dirtab\">"); ol.writeString("<th class=\"dirtab\">");
//ol.writeString("Includes file in ");
//m_dst->dir()->writePathFragment(ol);
ol.parseText(theTranslator->trIncludesFileIn(m_dst->dir()->pathFragment())); ol.parseText(theTranslator->trIncludesFileIn(m_dst->dir()->pathFragment()));
ol.writeString("</th>"); ol.writeString("</th>");
ol.writeString("</tr>"); ol.writeString("</tr>");
...@@ -750,8 +733,15 @@ void DirRelation::writeDocumentation(OutputList &ol) ...@@ -750,8 +733,15 @@ void DirRelation::writeDocumentation(OutputList &ol)
ol.writeString("</tr>"); ol.writeString("</tr>");
} }
ol.writeString("</table>"); ol.writeString("</table>");
ol.endContents();
endFile(ol); if (generateTreeView)
{
m_src->writeNavigationPath(ol);
}
endFile(ol,TRUE);
ol.popGeneratorState(); ol.popGeneratorState();
} }
......
...@@ -453,7 +453,7 @@ static bool writeSVGFigureLink(FTextStream &out,const QCString &relPath, ...@@ -453,7 +453,7 @@ static bool writeSVGFigureLink(FTextStream &out,const QCString &relPath,
out << "<iframe src=\"" out << "<iframe src=\""
<< relPath << baseName << ".svg\" width=\"" << relPath << baseName << ".svg\" width=\""
<< ((width*96+48)/72) << "\" height=\"" << ((width*96+48)/72) << "\" height=\""
<< ((height*96+48)/72) << "\">"; << ((height*96+48)/72) << "\" frameborder=\"0\" scrolling=\"no\">";
writeSVGNotSupported(out); writeSVGNotSupported(out);
// out << "</object>"; // out << "</object>";
out << "</iframe>"; out << "</iframe>";
...@@ -1744,7 +1744,7 @@ void DotGfxHierarchyTable::writeGraph(FTextStream &out, ...@@ -1744,7 +1744,7 @@ void DotGfxHierarchyTable::writeGraph(FTextStream &out,
QCString baseName; QCString baseName;
QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
baseName.sprintf("inherit_graph_%d",count++); baseName.sprintf("inherit_graph_%d",count++);
baseName = convertNameToFile(baseName); //baseName = convertNameToFile(baseName);
QCString imgName = baseName+"."+ imgExt; QCString imgName = baseName+"."+ imgExt;
QCString mapName = baseName+".map"; QCString mapName = baseName+".map";
QCString absImgName = QCString(d.absPath().data())+"/"+imgName; QCString absImgName = QCString(d.absPath().data())+"/"+imgName;
......
...@@ -144,7 +144,7 @@ class DotGfxHierarchyTable ...@@ -144,7 +144,7 @@ class DotGfxHierarchyTable
public: public:
DotGfxHierarchyTable(); DotGfxHierarchyTable();
~DotGfxHierarchyTable(); ~DotGfxHierarchyTable();
void writeGraph(FTextStream &t,const char *path,const char *fileName) const; void writeGraph(FTextStream &t,const char *path, const char *fileName) const;
private: private:
void addHierarchy(DotNode *n,ClassDef *cd,bool hide); void addHierarchy(DotNode *n,ClassDef *cd,bool hide);
......
...@@ -672,6 +672,7 @@ static void buildFileList(EntryNav *rootNav) ...@@ -672,6 +672,7 @@ static void buildFileList(EntryNav *rootNav)
if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname))) if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname)))
{ {
gd->addFile(fd); gd->addFile(fd);
fd->makePartOfGroup(gd);
//printf("File %s: in group %s\n",fd->name().data(),s->data()); //printf("File %s: in group %s\n",fd->name().data(),s->data());
} }
} }
...@@ -8554,34 +8555,66 @@ static void readTagFile(Entry *root,const char *tl) ...@@ -8554,34 +8555,66 @@ static void readTagFile(Entry *root,const char *tl)
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
static void copyFile(const QCString &src,const QCString &dest)
{
QFile sf(src);
if (sf.open(IO_ReadOnly))
{
QFileInfo fi(src);
QFile df(dest);
if (df.open(IO_WriteOnly))
{
char *buffer = new char[fi.size()];
sf.readBlock(buffer,fi.size());
df.writeBlock(buffer,fi.size());
df.flush();
delete[] buffer;
}
else
{
err("error: could not write to file %s\n",dest.data());
}
}
else
{
err("error: could not open user specified file %s\n",src.data());
}
}
static void copyStyleSheet() static void copyStyleSheet()
{ {
QCString &htmlStyleSheet = Config_getString("HTML_STYLESHEET"); QCString &htmlStyleSheet = Config_getString("HTML_STYLESHEET");
if (!htmlStyleSheet.isEmpty()) if (!htmlStyleSheet.isEmpty())
{ {
QFile cssf(htmlStyleSheet); QFileInfo fi(htmlStyleSheet);
QFileInfo cssfi(htmlStyleSheet); if (!fi.exists())
if (cssf.open(IO_ReadOnly))
{ {
QCString destFileName = Config_getString("HTML_OUTPUT")+"/"+cssfi.fileName().data(); err("Style sheet '%s' specified by HTML_STYLESHEET does not exist!\n",htmlStyleSheet.data());
QFile df(destFileName); htmlStyleSheet.resize(0); // revert to the default
if (df.open(IO_WriteOnly))
{
char *buffer = new char[cssf.size()];
cssf.readBlock(buffer,cssf.size());
df.writeBlock(buffer,cssf.size());
df.flush();
delete[] buffer;
}
else
{
err("error: could not write to style sheet %s\n",destFileName.data());
}
} }
else else
{ {
err("error: could not open user specified style sheet %s\n",Config_getString("HTML_STYLESHEET").data()); QCString destFileName = Config_getString("HTML_OUTPUT")+"/"+fi.fileName().data();
htmlStyleSheet.resize(0); // revert to the default copyFile(htmlStyleSheet,destFileName);
}
}
}
static void copyLogo()
{
QCString &projectLogo = Config_getString("PROJECT_LOGO");
if (!projectLogo.isEmpty())
{
QFileInfo fi(projectLogo);
if (!fi.exists())
{
err("Project logo '%s' specified by PROJECT_LOGO does not exist!\n",projectLogo.data());
projectLogo.resize(0); // revert to the default
}
else
{
QCString destFileName = Config_getString("HTML_OUTPUT")+"/"+fi.fileName().data();
copyFile(projectLogo,destFileName);
} }
} }
} }
...@@ -10340,6 +10373,7 @@ void generateOutput() ...@@ -10340,6 +10373,7 @@ void generateOutput()
#endif #endif
//if (Config_getBool("HTML_DYNAMIC_SECTIONS")) HtmlGenerator::generateSectionImages(); //if (Config_getBool("HTML_DYNAMIC_SECTIONS")) HtmlGenerator::generateSectionImages();
copyStyleSheet(); copyStyleSheet();
copyLogo();
if (!generateTreeView && Config_getBool("USE_INLINE_TREES")) if (!generateTreeView && Config_getBool("USE_INLINE_TREES"))
{ {
FTVHelp::generateTreeViewImages(); FTVHelp::generateTreeViewImages();
......
...@@ -636,14 +636,14 @@ table.doxtable th { ...@@ -636,14 +636,14 @@ table.doxtable th {
list-style-type:none; list-style-type:none;
float:left; float:left;
padding-left:10px; padding-left:10px;
padding-right: 15px; padding-right:15px;
background-image:url('bc_s.png'); background-image:url('bc_s.png');
background-repeat:no-repeat; background-repeat:no-repeat;
background-position:right; background-position:right;
color:##45; color:##45;
} }
.navpath a .navpath li.navelem a
{ {
height:32px; height:32px;
display:block; display:block;
...@@ -651,11 +651,25 @@ table.doxtable th { ...@@ -651,11 +651,25 @@ table.doxtable th {
outline: none; outline: none;
} }
.navpath a:hover .navpath li.navelem a:hover
{ {
color:##80; color:##80;
} }
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:##45;
font-size: 8pt;
}
div.summary div.summary
{ {
float: right; float: right;
...@@ -670,6 +684,19 @@ div.summary a ...@@ -670,6 +684,19 @@ div.summary a
white-space: nowrap; white-space: nowrap;
} }
div.ingroups
{
font-size: 8pt;
padding-left: 5px;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header div.header
{ {
background-image:url('nav_h.png'); background-image:url('nav_h.png');
...@@ -724,3 +751,44 @@ dl.bug ...@@ -724,3 +751,44 @@ dl.bug
border-color: #C08050; border-color: #C08050;
} }
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectname
{
font: 300% arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectbrief
{
font: 120% arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid ##70;
}
...@@ -636,14 +636,14 @@ ...@@ -636,14 +636,14 @@
" list-style-type:none;\n" " list-style-type:none;\n"
" float:left;\n" " float:left;\n"
" padding-left:10px;\n" " padding-left:10px;\n"
" padding-right: 15px;\n" " padding-right:15px;\n"
" background-image:url('bc_s.png');\n" " background-image:url('bc_s.png');\n"
" background-repeat:no-repeat;\n" " background-repeat:no-repeat;\n"
" background-position:right;\n" " background-position:right;\n"
" color:##45;\n" " color:##45;\n"
"}\n" "}\n"
"\n" "\n"
".navpath a\n" ".navpath li.navelem a\n"
"{\n" "{\n"
" height:32px;\n" " height:32px;\n"
" display:block;\n" " display:block;\n"
...@@ -651,11 +651,25 @@ ...@@ -651,11 +651,25 @@
" outline: none;\n" " outline: none;\n"
"}\n" "}\n"
"\n" "\n"
".navpath a:hover\n" ".navpath li.navelem a:hover\n"
"{\n" "{\n"
" color:##80;\n" " color:##80;\n"
"}\n" "}\n"
"\n" "\n"
".navpath li.footer\n"
"{\n"
" list-style-type:none;\n"
" float:right;\n"
" padding-left:10px;\n"
" padding-right:15px;\n"
" background-image:none;\n"
" background-repeat:no-repeat;\n"
" background-position:right;\n"
" color:##45;\n"
" font-size: 8pt;\n"
"}\n"
"\n"
"\n"
"div.summary\n" "div.summary\n"
"{\n" "{\n"
" float: right;\n" " float: right;\n"
...@@ -670,6 +684,19 @@ ...@@ -670,6 +684,19 @@
" white-space: nowrap;\n" " white-space: nowrap;\n"
"}\n" "}\n"
"\n" "\n"
"div.ingroups\n"
"{\n"
" font-size: 8pt;\n"
" padding-left: 5px;\n"
" width: 50%;\n"
" text-align: left;\n"
"}\n"
"\n"
"div.ingroups a\n"
"{\n"
" white-space: nowrap;\n"
"}\n"
"\n"
"div.header\n" "div.header\n"
"{\n" "{\n"
" background-image:url('nav_h.png');\n" " background-image:url('nav_h.png');\n"
...@@ -724,3 +751,44 @@ ...@@ -724,3 +751,44 @@
" border-color: #C08050;\n" " border-color: #C08050;\n"
"}\n" "}\n"
"\n" "\n"
"#projectlogo\n"
"{\n"
" text-align: center;\n"
" vertical-align: bottom;\n"
" border-collapse: separate;\n"
"}\n"
" \n"
"#projectlogo img\n"
"{ \n"
" border: 0px none;\n"
"}\n"
" \n"
"#projectname\n"
"{\n"
" font: 300% arial,sans-serif;\n"
" margin: 0px;\n"
" padding: 0px;\n"
"}\n"
" \n"
"#projectbrief\n"
"{\n"
" font: 120% arial,sans-serif;\n"
" margin: 0px;\n"
" padding: 0px;\n"
"}\n"
"\n"
"#projectnumber\n"
"{\n"
" font: 50% arial,sans-serif;\n"
" margin: 0px;\n"
" padding: 0px;\n"
"}\n"
"\n"
"#titlearea\n"
"{\n"
" padding: 0px;\n"
" margin: 0px;\n"
" width: 100%;\n"
" border-bottom: 1px solid ##70;\n"
"}\n"
"\n"
...@@ -84,7 +84,9 @@ void EclipseHelp::initialize() ...@@ -84,7 +84,9 @@ void EclipseHelp::initialize()
{ {
title = "Doxygen generated documentation"; title = "Doxygen generated documentation";
} }
m_tocstream << "<toc label=\"" << convertToXML(title) << "\">" << endl; m_tocstream << "<toc label=\"" << convertToXML(title)
<< "\" topic=\"" << convertToXML(m_pathprefix)
<< "index" << Doxygen::htmlFileExtension << "\">" << endl;
++ m_depth; ++ m_depth;
} }
...@@ -155,7 +157,7 @@ void EclipseHelp::decContentsDepth() ...@@ -155,7 +157,7 @@ void EclipseHelp::decContentsDepth()
* @param anchor Name of an anchor of the item. * @param anchor Name of an anchor of the item.
*/ */
void EclipseHelp::addContentsItem( void EclipseHelp::addContentsItem(
bool isDir, bool /* isDir */,
const char *name, const char *name,
const char * /* ref */, const char * /* ref */,
const char *file, const char *file,
...@@ -165,8 +167,8 @@ void EclipseHelp::addContentsItem( ...@@ -165,8 +167,8 @@ void EclipseHelp::addContentsItem(
closedTag(); closedTag();
indent(); indent();
m_tocstream << "<topic label=\"" << convertToXML(name) << "\""; m_tocstream << "<topic label=\"" << convertToXML(name) << "\"";
if (!isDir && file) if (file)
{ // -- Eclipse help cannot handle directories {
m_tocstream << " href=\"" << convertToXML(m_pathprefix) m_tocstream << " href=\"" << convertToXML(m_pathprefix)
<< file << Doxygen::htmlFileExtension; << file << Doxygen::htmlFileExtension;
if (anchor) if (anchor)
......
...@@ -497,6 +497,7 @@ void FileDef::writeSummaryLinks(OutputList &ol) ...@@ -497,6 +497,7 @@ void FileDef::writeSummaryLinks(OutputList &ol)
*/ */
void FileDef::writeDocumentation(OutputList &ol) void FileDef::writeDocumentation(OutputList &ol)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
//funcList->countDecMembers(); //funcList->countDecMembers();
//QCString fn = name(); //QCString fn = name();
...@@ -517,9 +518,12 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -517,9 +518,12 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SHOW_DIRECTORIES") && getDirDef()) if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
{ {
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,TRUE); startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
getDirDef()->writeNavigationPath(ol); if (!generateTreeView)
ol.endQuickIndices(); {
getDirDef()->writeNavigationPath(ol);
ol.endQuickIndices();
}
QCString pageTitleShort=theTranslator->trFileReference(name()); QCString pageTitleShort=theTranslator->trFileReference(name());
startTitle(ol,getOutputFileBase(),this); startTitle(ol,getOutputFileBase(),this);
ol.pushGeneratorState(); ol.pushGeneratorState();
...@@ -534,7 +538,11 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -534,7 +538,11 @@ void FileDef::writeDocumentation(OutputList &ol)
} }
else else
{ {
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible); startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
if (!generateTreeView)
{
ol.endQuickIndices();
}
startTitle(ol,getOutputFileBase(),this); startTitle(ol,getOutputFileBase(),this);
ol.parseText(pageTitle); ol.parseText(pageTitle);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
...@@ -672,7 +680,14 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -672,7 +680,14 @@ void FileDef::writeDocumentation(OutputList &ol)
Doxygen::tagFile << " </compound>" << endl; Doxygen::tagFile << " </compound>" << endl;
} }
endFile(ol); ol.endContents();
if (generateTreeView)
{
writeNavigationPath(ol);
}
endFile(ol,TRUE);
if (Config_getBool("SEPARATE_MEMBER_PAGES")) if (Config_getBool("SEPARATE_MEMBER_PAGES"))
{ {
...@@ -746,6 +761,7 @@ void FileDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const ...@@ -746,6 +761,7 @@ void FileDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
/*! 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)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
static bool filterSourceFiles = Config_getBool("FILTER_SOURCE_FILES"); static bool filterSourceFiles = Config_getBool("FILTER_SOURCE_FILES");
static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE"); static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE");
QCString title = docname; QCString title = docname;
...@@ -760,16 +776,21 @@ void FileDef::writeSource(OutputList &ol) ...@@ -760,16 +776,21 @@ void FileDef::writeSource(OutputList &ol)
if (Config_getBool("SHOW_DIRECTORIES") && getDirDef()) if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
{ {
startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE); startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,
getDirDef()->writeNavigationPath(ol); !generateTreeView,getOutputFileBase());
ol.endQuickIndices(); if (!generateTreeView)
{
getDirDef()->writeNavigationPath(ol);
ol.endQuickIndices();
}
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.parseText(name()); ol.parseText(name());
endTitle(ol,getOutputFileBase(),title); endTitle(ol,getOutputFileBase(),title);
} }
else else
{ {
startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,TRUE); startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,
!generateTreeView,getOutputFileBase());
startTitle(ol,getSourceFileBase()); startTitle(ol,getSourceFileBase());
ol.parseText(title); ol.parseText(title);
endTitle(ol,getSourceFileBase(),0); endTitle(ol,getSourceFileBase(),0);
...@@ -795,7 +816,15 @@ void FileDef::writeSource(OutputList &ol) ...@@ -795,7 +816,15 @@ void FileDef::writeSource(OutputList &ol)
); );
ol.endCodeFragment(); ol.endCodeFragment();
ol.endContents(); ol.endContents();
endFile(ol); if (generateTreeView)
{
writeNavigationPath(ol);
endFile(ol,TRUE);
}
else
{
endFile(ol);
}
ol.enableAll(); ol.enableAll();
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -33,40 +33,6 @@ class QFile; ...@@ -33,40 +33,6 @@ class QFile;
struct FTVNode; struct FTVNode;
class FTextStream; class FTextStream;
struct FTVImageInfo
{
const char *alt;
const char *name;
const unsigned char *data;
unsigned int len;
unsigned short width, height;
};
extern FTVImageInfo image_info[];
#define FTVIMG_blank 0
#define FTVIMG_doc 1
#define FTVIMG_folderclosed 2
#define FTVIMG_folderopen 3
#define FTVIMG_lastnode 4
#define FTVIMG_link 5
#define FTVIMG_mlastnode 6
#define FTVIMG_mnode 7
#define FTVIMG_node 8
#define FTVIMG_plastnode 9
#define FTVIMG_pnode 10
#define FTVIMG_vertline 11
#define FTV_S(name) #name
#define FTV_ICON_FILE(name) "ftv2" FTV_S(name) ".png"
#define FTVIMG_INDEX(name) FTVIMG_ ## name
#define FTV_INFO(name) ( image_info[FTVIMG_INDEX(name)] )
#define FTV_IMGATTRIBS(name) \
"src=\"" FTV_ICON_FILE(name) "\" " \
"alt=\"" << FTV_INFO(name).alt << "\" " \
"width=\"" << FTV_INFO(name).width << "\" " \
"height=\"" << FTV_INFO(name).height << "\" "
/*! A class that generates a dynamic tree view side panel. /*! A class that generates a dynamic tree view side panel.
*/ */
class FTVHelp : public IndexIntf class FTVHelp : public IndexIntf
...@@ -93,11 +59,14 @@ class FTVHelp : public IndexIntf ...@@ -93,11 +59,14 @@ class FTVHelp : public IndexIntf
void generateTreeView(); void generateTreeView();
void generateTreeViewInline(FTextStream &t); void generateTreeViewInline(FTextStream &t);
static void generateTreeViewImages(); static void generateTreeViewImages();
void generateTreeViewScripts();
private: private:
void generateScript(FTextStream &t); void generateScript(FTextStream &t);
void generateTree(FTextStream &t,const QList<FTVNode> &nl,int level); void generateTree(FTextStream &t,const QList<FTVNode> &nl,int level);
bool generateJSTree(FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
void generateIndent(FTextStream &t,FTVNode *n,int level); void generateIndent(FTextStream &t,FTVNode *n,int level);
void generateLink(FTextStream &t,FTVNode *n); void generateLink(FTextStream &t,FTVNode *n);
void generateJSLink(FTextStream &t,FTVNode *n);
QList<FTVNode> *m_indentNodes; QList<FTVNode> *m_indentNodes;
int m_indent; int m_indent;
bool m_topLevelIndex; bool m_topLevelIndex;
......
...@@ -589,11 +589,11 @@ void GroupDef::writeGroupGraph(OutputList &ol) ...@@ -589,11 +589,11 @@ void GroupDef::writeGroupGraph(OutputList &ol)
msg("Generating dependency graph for group %s\n",qualifiedName().data()); msg("Generating dependency graph for group %s\n",qualifiedName().data());
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
ol.startParagraph(); //ol.startParagraph();
ol.startGroupCollaboration(); ol.startGroupCollaboration();
ol.parseText(theTranslator->trCollaborationDiagram(title)); ol.parseText(theTranslator->trCollaborationDiagram(title));
ol.endGroupCollaboration(graph); ol.endGroupCollaboration(graph);
ol.endParagraph(); //ol.endParagraph();
ol.popGeneratorState(); ol.popGeneratorState();
} }
} }
...@@ -848,12 +848,20 @@ void GroupDef::writeSummaryLinks(OutputList &ol) ...@@ -848,12 +848,20 @@ void GroupDef::writeSummaryLinks(OutputList &ol)
void GroupDef::writeDocumentation(OutputList &ol) void GroupDef::writeDocumentation(OutputList &ol)
{ {
//static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState(); ol.pushGeneratorState();
startFile(ol,getOutputFileBase(),name(),title); startFile(ol,getOutputFileBase(),name(),title);
startTitle(ol,getOutputFileBase(),this);
ol.startHeaderSection();
writeSummaryLinks(ol);
ol.startTitleHead(getOutputFileBase());
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.parseText(title); ol.parseText(title);
ol.popGeneratorState();
ol.endTitleHead(getOutputFileBase(),title);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),title); ol.endHeaderSection();
ol.startContents(); ol.startContents();
if (Doxygen::searchIndex) if (Doxygen::searchIndex)
...@@ -989,6 +997,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -989,6 +997,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
//---------------------------------------- end flexible part ------------------------------- //---------------------------------------- end flexible part -------------------------------
endFile(ol); endFile(ol);
ol.popGeneratorState(); ol.popGeneratorState();
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
This diff is collapsed.
...@@ -36,8 +36,12 @@ class HtmlGenerator : public OutputGenerator ...@@ -36,8 +36,12 @@ class HtmlGenerator : public OutputGenerator
static void writeStyleSheetFile(QFile &f); static void writeStyleSheetFile(QFile &f);
static void writeHeaderFile(QFile &f); static void writeHeaderFile(QFile &f);
static void writeFooterFile(QFile &f); static void writeFooterFile(QFile &f);
static void writeSearchPage();
static void writeTabData(); static void writeTabData();
static void writeSearchFooter(FTextStream &t,const QCString &relPath);
static void writeSearchData(const char *dir);
static void writeSearchPage();
static QCString writeLogoAsString(const char *path);
static QCString writeSplitBarAsString(const char *name,const char *relpath);
void enable() void enable()
{ if (genStack->top()) active=*genStack->top(); else active=TRUE; } { if (genStack->top()) active=*genStack->top(); else active=TRUE; }
...@@ -188,6 +192,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -188,6 +192,8 @@ class HtmlGenerator : public OutputGenerator
void endPageRef(const char *,const char *) {} void endPageRef(const char *,const char *) {}
void startQuickIndices(); void startQuickIndices();
void endQuickIndices(); void endQuickIndices();
void writeSplitBar(const char *name);
void writeLogo();
void writeQuickLinks(bool compact,HighlightedItem hli); void writeQuickLinks(bool compact,HighlightedItem hli);
void startContents(); void startContents();
void endContents(); void endContents();
...@@ -245,15 +251,15 @@ class HtmlGenerator : public OutputGenerator ...@@ -245,15 +251,15 @@ class HtmlGenerator : public OutputGenerator
void startFontClass(const char *s) { t << "<span class=\"" << s << "\">"; } void startFontClass(const char *s) { t << "<span class=\"" << s << "\">"; }
void endFontClass() { t << "</span>"; } void endFontClass() { t << "</span>"; }
void writeCodeAnchor(const char *anchor) void writeCodeAnchor(const char *anchor)
{ t << "<a name=\"" << anchor << "\"></a>"; } { t << "<a name=\"" << anchor << "\"></a>"; }
void linkableSymbol(int,const char *,Definition *,Definition *) {} void linkableSymbol(int,const char *,Definition *,Definition *) {}
static void writeSearchFooter(FTextStream &t,const QCString &relPath);
static void writeSearchData(const char *dir);
//static void generateSectionImages(); //static void generateSectionImages();
private: private:
static void writePageFooter(FTextStream &t,const QCString &,const QCString &);
QCString lastTitle; QCString lastTitle;
QCString lastFile; QCString lastFile;
QCString relPath; QCString relPath;
......
...@@ -447,7 +447,7 @@ void HtmlHelp::createProjectFile() ...@@ -447,7 +447,7 @@ void HtmlHelp::createProjectFile()
FTextStream t(&f); FTextStream t(&f);
QCString indexName="index"+Doxygen::htmlFileExtension; QCString indexName="index"+Doxygen::htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+Doxygen::htmlFileExtension; //if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+Doxygen::htmlFileExtension;
t << "[OPTIONS]\n"; t << "[OPTIONS]\n";
if (!Config_getString("CHM_FILE").isEmpty()) if (!Config_getString("CHM_FILE").isEmpty())
{ {
......
This diff is collapsed.
...@@ -261,8 +261,8 @@ void startTitle(OutputList &ol,const char *fileName,Definition *def=0); ...@@ -261,8 +261,8 @@ void startTitle(OutputList &ol,const char *fileName,Definition *def=0);
void endTitle(OutputList &ol,const char *fileName,const char *name); void endTitle(OutputList &ol,const char *fileName,const char *name);
void startFile(OutputList &ol,const char *name,const char *manName, void startFile(OutputList &ol,const char *name,const char *manName,
const char *title,HighlightedItem hli=HLI_None, const char *title,HighlightedItem hli=HLI_None,
bool additionalIndices=FALSE); bool additionalIndices=FALSE,const char *altSidebarName=0);
void endFile(OutputList &ol,bool external=FALSE); void endFile(OutputList &ol,bool skipNavIndex=FALSE);
void initClassMemberIndices(); void initClassMemberIndices();
void initFileMemberIndices(); void initFileMemberIndices();
......
...@@ -59,12 +59,6 @@ void writeInstallScript() ...@@ -59,12 +59,6 @@ void writeInstallScript()
t << ");\n"; t << ");\n";
t << "$quiet = 0;\n"; t << "$quiet = 0;\n";
t << "\n"; t << "\n";
t << "if (open(F,\"search.cfg\"))\n";
t << "{\n";
t << " $_=<F> ; s/[ \\t\\n]*$//g ; $subst{\"_doc\"} = $_;\n";
t << " $_=<F> ; s/[ \\t\\n]*$//g ; $subst{\"_cgi\"} = $_;\n";
t << "}\n";
t << "\n";
t << "while ( @ARGV ) {\n"; t << "while ( @ARGV ) {\n";
t << " $_ = shift @ARGV;\n"; t << " $_ = shift @ARGV;\n";
t << " if ( s/^-// ) {\n"; t << " if ( s/^-// ) {\n";
...@@ -120,7 +114,7 @@ void writeInstallScript() ...@@ -120,7 +114,7 @@ void writeInstallScript()
t << " next if ( $file =~ /^\\.\\.?$/ );\n"; t << " next if ( $file =~ /^\\.\\.?$/ );\n";
t << " ($file =~ /$match/) && (push @files, $file);\n"; t << " ($file =~ /$match/) && (push @files, $file);\n";
t << " ($file =~ /\\.svg/) && (push @files, $file);\n"; t << " ($file =~ /\\.svg/) && (push @files, $file);\n";
t << " ($file =~ \"tree.js\") && (push @files, $file);\n"; t << " ($file =~ \"navtree.js\") && (push @files, $file);\n";
t << " }\n"; t << " }\n";
t << " closedir(D);\n"; t << " closedir(D);\n";
t << " }\n"; t << " }\n";
......
This diff is collapsed.
This diff is collapsed.
...@@ -161,11 +161,7 @@ void LatexGenerator::init() ...@@ -161,11 +161,7 @@ void LatexGenerator::init()
t << endl t << endl
<< "clean:" << endl << "clean:" << endl
#if defined(_MSC_VER)
<< "\tdel "
#else
<< "\trm -f " << "\trm -f "
#endif
<< "*.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf" << endl; << "*.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf" << endl;
createSubDirs(d); createSubDirs(d);
......
...@@ -180,6 +180,8 @@ class LatexGenerator : public OutputGenerator ...@@ -180,6 +180,8 @@ class LatexGenerator : public OutputGenerator
void endPageRef(const char *,const char *); void endPageRef(const char *,const char *);
void startQuickIndices() {} void startQuickIndices() {}
void endQuickIndices() {} void endQuickIndices() {}
void writeSplitBar(const char *) {}
void writeLogo() {}
void writeQuickLinks(bool,HighlightedItem) {} void writeQuickLinks(bool,HighlightedItem) {}
void startContents() {} void startContents() {}
void endContents() {} void endContents() {}
......
...@@ -759,7 +759,7 @@ class LayoutParser : public QXmlDefaultHandler ...@@ -759,7 +759,7 @@ class LayoutParser : public QXmlDefaultHandler
{ {
// no MainPage node... add one the first item of the root node... // no MainPage node... add one the first item of the root node...
new LayoutNavEntry(m_rootNav,LayoutNavEntry::MainPage, TRUE, new LayoutNavEntry(m_rootNav,LayoutNavEntry::MainPage, TRUE,
Config_getBool("GENERATE_TREEVIEW") ? "main" : "index", /*Config_getBool("GENERATE_TREEVIEW") ? "main" :*/ "index",
theTranslator->trMainPage(),TRUE); theTranslator->trMainPage(),TRUE);
} }
} }
...@@ -780,7 +780,7 @@ class LayoutParser : public QXmlDefaultHandler ...@@ -780,7 +780,7 @@ class LayoutParser : public QXmlDefaultHandler
QCString baseFile; // base name of the file containing the index page QCString baseFile; // base name of the file containing the index page
} mapping[] = } mapping[] =
{ {
{ "mainpage", LayoutNavEntry::MainPage, theTranslator->trMainPage(), QCString(), Config_getBool("GENERATE_TREEVIEW") ? "main" : "index" }, { "mainpage", LayoutNavEntry::MainPage, theTranslator->trMainPage(), QCString(), /*Config_getBool("GENERATE_TREEVIEW") ? "main" :*/ "index" },
{ "pages", LayoutNavEntry::Pages, theTranslator->trRelatedPages(), QCString(), "pages" }, { "pages", LayoutNavEntry::Pages, theTranslator->trRelatedPages(), QCString(), "pages" },
{ "modules", LayoutNavEntry::Modules, theTranslator->trModules(), QCString(), "modules" }, { "modules", LayoutNavEntry::Modules, theTranslator->trModules(), QCString(), "modules" },
{ "namespaces", LayoutNavEntry::Namespaces, javaOpt ? theTranslator->trPackages() : { "namespaces", LayoutNavEntry::Namespaces, javaOpt ? theTranslator->trPackages() :
......
...@@ -61,6 +61,7 @@ HEADERS = bufstr.h \ ...@@ -61,6 +61,7 @@ HEADERS = bufstr.h \
index.h \ index.h \
index_xsd.h \ index_xsd.h \
instdox.h \ instdox.h \
jquery_js.h \
language.h \ language.h \
latexdocvisitor.h \ latexdocvisitor.h \
latexgen.h \ latexgen.h \
...@@ -78,6 +79,8 @@ HEADERS = bufstr.h \ ...@@ -78,6 +79,8 @@ HEADERS = bufstr.h \
message.h \ message.h \
msc.h \ msc.h \
namespacedef.h \ namespacedef.h \
navtree_css.h \
navtree_js.h \
objcache.h \ objcache.h \
outputgen.h \ outputgen.h \
outputlist.h \ outputlist.h \
...@@ -95,6 +98,7 @@ HEADERS = bufstr.h \ ...@@ -95,6 +98,7 @@ HEADERS = bufstr.h \
qhpxmlwriter.h \ qhpxmlwriter.h \
qtbc.h \ qtbc.h \
reflist.h \ reflist.h \
resize_js.h \
rtfdocvisitor.h \ rtfdocvisitor.h \
rtfgen.h \ rtfgen.h \
rtfstyle.h \ rtfstyle.h \
......
...@@ -120,3 +120,18 @@ search_css.h: search.css ...@@ -120,3 +120,18 @@ search_css.h: search.css
doxygen_css.h: doxygen.css doxygen_css.h: doxygen.css
cat doxygen.css | $(TO_C_CMD) >doxygen_css.h cat doxygen.css | $(TO_C_CMD) >doxygen_css.h
navtree_js.h: navtree.js
cat navtree.js | $(TO_C_CMD) >navtree_js.h
navindex_js.h: navindex.js
cat navindex.js | $(TO_C_CMD) >navindex_js.h
resize_js.h: resize.js
cat resize.js | $(TO_C_CMD) >resize_js.h
jquery_js.h: jquery.js
cat jquery.js | $(TO_C_CMD) >jquery_js.h
navtree_css.h: navtree.css
cat navtree.css | $(TO_C_CMD) >navtree_css.h
...@@ -178,6 +178,8 @@ class ManGenerator : public OutputGenerator ...@@ -178,6 +178,8 @@ class ManGenerator : public OutputGenerator
void endPageRef(const char *,const char *) {} void endPageRef(const char *,const char *) {}
void startQuickIndices() {} void startQuickIndices() {}
void endQuickIndices() {} void endQuickIndices() {}
void writeSplitBar(const char *) {}
void writeLogo() {}
void writeQuickLinks(bool,HighlightedItem) {} void writeQuickLinks(bool,HighlightedItem) {}
void startContents() {} void startContents() {}
void endContents() {} void endContents() {}
......
...@@ -143,7 +143,6 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -143,7 +143,6 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
} }
//printf("~~~ %s cName=%s\n",md->name().data(),cName.data()); //printf("~~~ %s cName=%s\n",md->name().data(),cName.data());
//if (!md->isDefine()) ol.startParameter(TRUE); else ol.docify(" ");
bool first=TRUE; bool first=TRUE;
bool paramTypeStarted=FALSE; bool paramTypeStarted=FALSE;
bool isDefine = md->isDefine(); bool isDefine = md->isDefine();
...@@ -166,10 +165,6 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -166,10 +165,6 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
// use the following to put the function pointer type before the name // use the following to put the function pointer type before the name
bool hasFuncPtrType=FALSE; bool hasFuncPtrType=FALSE;
// or use the following to put the function pointer as it appears in
// the prototype.
//bool hasFuncPtrType=vp!=-1 && wp!=-1 && wp<vp;
if (!a->attrib.isEmpty() && !md->isObjCMethod()) // argument has an IDL attribute if (!a->attrib.isEmpty() && !md->isObjCMethod()) // argument has an IDL attribute
{ {
ol.docify(a->attrib+" "); ol.docify(a->attrib+" ");
...@@ -208,10 +203,10 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -208,10 +203,10 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
} }
if (!a->name.isEmpty() || (a->name.isEmpty() && a->type=="...")) // argument has a name if (!a->name.isEmpty() || (a->name.isEmpty() && a->type=="...")) // argument has a name
{ {
if (!hasFuncPtrType) //if (!hasFuncPtrType)
{ //{
ol.docify(" "); // ol.docify(" ");
} //}
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
ol.disable(OutputGenerator::Latex); ol.disable(OutputGenerator::Latex);
ol.startEmphasis(); ol.startEmphasis();
...@@ -277,21 +272,12 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -277,21 +272,12 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
ol.disable(OutputGenerator::Latex); ol.disable(OutputGenerator::Latex);
//if (!first) ol.writeString("&#160;");
if (!md->isObjCMethod()) ol.docify(")"); // end argument list if (!md->isObjCMethod()) ol.docify(")"); // end argument list
ol.enableAll(); ol.enableAll();
if (htmlOn) ol.enable(OutputGenerator::Html); if (htmlOn) ol.enable(OutputGenerator::Html);
if (latexOn) ol.enable(OutputGenerator::Latex); if (latexOn) ol.enable(OutputGenerator::Latex);
//if (!isDefine) if (first) ol.startParameterName(defArgList->count()<2);
{ ol.endParameterName(TRUE,defArgList->count()<2,!md->isObjCMethod());
if (first) ol.startParameterName(defArgList->count()<2);
ol.endParameterName(TRUE,defArgList->count()<2,!md->isObjCMethod());
}
//else // isDefine
//{
// if (first) ol.startParameterName(TRUE);
// ol.endParameterName(TRUE,defArgList->count()<2,!md->isObjCMethod());
//}
ol.popGeneratorState(); ol.popGeneratorState();
if (md->extraTypeChars()) if (md->extraTypeChars())
{ {
......
...@@ -107,7 +107,7 @@ void MemberGroup::setAnchors(ClassDef *context) ...@@ -107,7 +107,7 @@ void MemberGroup::setAnchors(ClassDef *context)
void MemberGroup::writeDeclarations(OutputList &ol, void MemberGroup::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd) ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd)
{ {
printf("MemberGroup::writeDeclarations() %s\n",grpHeader.data()); //printf("MemberGroup::writeDeclarations() %s\n",grpHeader.data());
QCString ldoc = doc; QCString ldoc = doc;
if (!ldoc.isEmpty()) ldoc.prepend("<a name=\""+anchor()+"\"></a>"); if (!ldoc.isEmpty()) ldoc.prepend("<a name=\""+anchor()+"\"></a>");
memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,ldoc/*,TRUE,TRUE*/); memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,ldoc/*,TRUE,TRUE*/);
......
...@@ -515,14 +515,19 @@ void MemberList::writeDocumentation(OutputList &ol, ...@@ -515,14 +515,19 @@ void MemberList::writeDocumentation(OutputList &ol,
void MemberList::writeDocumentationPage(OutputList &ol, void MemberList::writeDocumentationPage(OutputList &ol,
const char *scopeName, Definition *container) const char *scopeName, Definition *container)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
MemberListIterator mli(*this); MemberListIterator mli(*this);
MemberDef *md; MemberDef *md;
for ( ; (md=mli.current()) ; ++mli) for ( ; (md=mli.current()) ; ++mli)
{ {
QCString diskName=md->getOutputFileBase(); QCString diskName=md->getOutputFileBase();
QCString title=md->qualifiedName(); QCString title=md->qualifiedName();
startFile(ol,diskName,md->name(),title); startFile(ol,diskName,md->name(),title,HLI_None,!generateTreeView,
container->writeNavigationPath(ol); container->getOutputFileBase());
if (!generateTreeView)
{
container->writeNavigationPath(ol);
}
ol.startContents(); ol.startContents();
ol.writeString("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n" ol.writeString("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
...@@ -539,8 +544,15 @@ void MemberList::writeDocumentationPage(OutputList &ol, ...@@ -539,8 +544,15 @@ void MemberList::writeDocumentationPage(OutputList &ol,
ol.writeString(" </td>\n"); ol.writeString(" </td>\n");
ol.writeString(" </tr>\n"); ol.writeString(" </tr>\n");
ol.writeString("</table>\n"); ol.writeString("</table>\n");
endFile(ol); ol.endContents();
if (generateTreeView)
{
container->writeNavigationPath(ol);
}
endFile(ol,TRUE);
} }
if (memberGroupList) if (memberGroupList)
{ {
......
...@@ -411,7 +411,8 @@ void NamespaceDef::writeSummaryLinks(OutputList &ol) ...@@ -411,7 +411,8 @@ void NamespaceDef::writeSummaryLinks(OutputList &ol)
void NamespaceDef::writeDocumentation(OutputList &ol) void NamespaceDef::writeDocumentation(OutputList &ol)
{ {
bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
QCString pageTitle; QCString pageTitle;
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
...@@ -426,12 +427,17 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -426,12 +427,17 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{ {
pageTitle = theTranslator->trNamespaceReference(displayName()); pageTitle = theTranslator->trNamespaceReference(displayName());
} }
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,TRUE); startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,!generateTreeView);
if (getOuterScope()!=Doxygen::globalScope)
if (!generateTreeView)
{ {
writeNavigationPath(ol); if (getOuterScope()!=Doxygen::globalScope)
{
writeNavigationPath(ol);
}
ol.endQuickIndices();
} }
ol.endQuickIndices();
startTitle(ol,getOutputFileBase(),this); startTitle(ol,getOutputFileBase(),this);
ol.parseText(pageTitle); ol.parseText(pageTitle);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
...@@ -544,7 +550,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -544,7 +550,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
//---------------------------------------- end flexible part ------------------------------- //---------------------------------------- end flexible part -------------------------------
endFile(ol); ol.endContents();
if (generateTreeView)
{
writeNavigationPath(ol);
}
endFile(ol,TRUE);
if (generateTagFile) if (generateTagFile)
{ {
......
#nav-tree .children_ul {
margin:0;
padding:4px;
}
#nav-tree ul {
list-style:none outside none;
margin:0px;
padding:0px;
}
#nav-tree li {
white-space:nowrap;
margin:0px;
padding:0px;
}
#nav-tree .plus {
margin:0px;
}
#nav-tree .selected {
background-image: url('tab_a.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
}
#nav-tree img {
margin:0px;
padding:0px;
border:0px;
vertical-align: middle;
}
#nav-tree a {
text-decoration:none;
padding:0px;
margin:0px;
outline:none;
}
#nav-tree .label {
margin:0px;
padding:0px;
}
#nav-tree .label a {
padding:2px;
}
#nav-tree .selected a {
text-decoration:none;
padding:2px;
margin:0px;
color:#fff;
}
#nav-tree .children_ul {
margin:0px;
padding:0px;
}
#nav-tree .item {
margin:0px;
padding:0px;
}
#nav-tree {
padding: 0px 0px;
background-color: #FAFAFF;
font-size:14px;
overflow:auto;
}
#doc-content {
overflow:auto;
display:block;
padding:0px;
margin:0px;
}
#side-nav {
padding:0 6px 0 0;
margin: 0px;
display:block;
position: absolute;
left: 0px;
width: 300px;
}
.ui-resizable .ui-resizable-handle {
display:block;
}
.ui-resizable-e {
background:url("ftv2splitbar.png") repeat scroll right center transparent;
cursor:e-resize;
height:100%;
right:0;
top:0;
width:6px;
}
.ui-resizable-handle {
display:none;
font-size:0.1px;
position:absolute;
z-index:1;
}
#nav-tree-contents {
margin: 6px 0px 0px 0px;
}
#nav-tree {
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: ##FA;
}
function createIndent(o,domNode,node,level)
{
if (node.parentNode && node.parentNode.parentNode)
{
createIndent(o,domNode,node.parentNode,level+1);
}
var imgNode = document.createElement("img");
if (level==0 && node.childrenData)
{
node.plus_img = imgNode;
node.expandToggle = document.createElement("a");
node.expandToggle.href = "javascript:void(0)";
node.expandToggle.onclick = function()
{
if (node.expanded)
{
$(node.getChildrenUL()).slideUp("fast");
if (node.isLast)
{
node.plus_img.src = node.relpath+"ftv2plastnode.png";
}
else
{
node.plus_img.src = node.relpath+"ftv2pnode.png";
}
node.expanded = false;
}
else
{
expandNode(o, node, false);
}
}
node.expandToggle.appendChild(imgNode);
domNode.appendChild(node.expandToggle);
}
else
{
domNode.appendChild(imgNode);
}
if (level==0)
{
if (node.isLast)
{
if (node.childrenData)
{
imgNode.src = node.relpath+"ftv2plastnode.png";
}
else
{
imgNode.src = node.relpath+"ftv2lastnode.png";
domNode.appendChild(imgNode);
}
}
else
{
if (node.childrenData)
{
imgNode.src = node.relpath+"ftv2pnode.png";
}
else
{
imgNode.src = node.relpath+"ftv2node.png";
domNode.appendChild(imgNode);
}
}
}
else
{
if (node.isLast)
{
imgNode.src = node.relpath+"ftv2blank.png";
}
else
{
imgNode.src = node.relpath+"ftv2vertline.png";
}
}
imgNode.border = "0";
}
function newNode(o, po, text, link, childrenData, lastNode)
{
var node = new Object();
node.children = Array();
node.childrenData = childrenData;
node.depth = po.depth + 1;
node.relpath = po.relpath;
node.isLast = lastNode;
node.li = document.createElement("li");
po.getChildrenUL().appendChild(node.li);
node.parentNode = po;
node.itemDiv = document.createElement("div");
node.itemDiv.className = "item";
node.labelSpan = document.createElement("span");
node.labelSpan.className = "label";
createIndent(o,node.itemDiv,node,0);
node.itemDiv.appendChild(node.labelSpan);
node.li.appendChild(node.itemDiv);
var a = document.createElement("a");
node.labelSpan.appendChild(a);
node.label = document.createTextNode(text);
a.appendChild(node.label);
if (link)
{
a.href = node.relpath+link;
}
else
{
if (childrenData != null)
{
a.className = "nolink";
a.href = "javascript:void(0)";
a.onclick = node.expandToggle.onclick;
node.expanded = false;
}
}
node.childrenUL = null;
node.getChildrenUL = function()
{
if (!node.childrenUL)
{
node.childrenUL = document.createElement("ul");
node.childrenUL.className = "children_ul";
node.childrenUL.style.display = "none";
node.li.appendChild(node.childrenUL);
}
return node.childrenUL;
};
return node;
}
function showRoot()
{
var headerHeight = $("#top").height();
var footerHeight = $("#nav-path").height();
var windowHeight = $(window).height() - headerHeight - footerHeight;
navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
}
function expandNode(o, node, imm)
{
if (node.childrenData && !node.expanded)
{
if (!node.childrenVisited)
{
getNode(o, node);
}
if (imm)
{
$(node.getChildrenUL()).show();
}
else
{
$(node.getChildrenUL()).slideDown("fast",showRoot);
}
if (node.isLast)
{
node.plus_img.src = node.relpath+"ftv2mlastnode.png";
}
else
{
node.plus_img.src = node.relpath+"ftv2mnode.png";
}
node.expanded = true;
}
}
function getNode(o, po)
{
po.childrenVisited = true;
var l = po.childrenData.length-1;
for (var i in po.childrenData)
{
var nodeData = po.childrenData[i];
po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
i==l);
}
}
function findNavTreePage(url, data)
{
var nodes = data;
var result = null;
for (var i in nodes)
{
var d = nodes[i];
if (d[1] == url)
{
return new Array(i);
}
else if (d[2] != null) // array of children
{
result = findNavTreePage(url, d[2]);
if (result != null)
{
return (new Array(i).concat(result));
}
}
}
return null;
}
function initNavTree(toroot,relpath)
{
var o = new Object();
o.toroot = toroot;
o.node = new Object();
o.node.li = document.getElementById("nav-tree-contents");
o.node.childrenData = NAVTREE;
o.node.children = new Array();
o.node.childrenUL = document.createElement("ul");
o.node.getChildrenUL = function() { return o.node.childrenUL; };
o.node.li.appendChild(o.node.childrenUL);
o.node.depth = 0;
o.node.relpath = relpath;
getNode(o, o.node);
o.breadcrumbs = findNavTreePage(toroot, NAVTREE);
if (o.breadcrumbs == null)
{
o.breadcrumbs = findNavTreePage("index.html",NAVTREE);
}
if (o.breadcrumbs != null && o.breadcrumbs.length>0)
{
var p = o.node;
for (var i in o.breadcrumbs)
{
var j = o.breadcrumbs[i];
p = p.children[j];
expandNode(o,p,true);
}
p.itemDiv.className = p.itemDiv.className + " selected";
p.itemDiv.id = "selected";
$(window).load(showRoot);
}
}
"#nav-tree .children_ul {\n"
" margin:0;\n"
" padding:4px;\n"
"}\n"
"\n"
"#nav-tree ul {\n"
" list-style:none outside none;\n"
" margin:0px;\n"
" padding:0px;\n"
"}\n"
"\n"
"#nav-tree li {\n"
" white-space:nowrap;\n"
" margin:0px;\n"
" padding:0px;\n"
"}\n"
"\n"
"#nav-tree .plus {\n"
" margin:0px;\n"
"}\n"
"\n"
"#nav-tree .selected {\n"
" background-image: url('tab_a.png');\n"
" background-repeat:repeat-x;\n"
" color: #fff;\n"
" text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n"
"}\n"
"\n"
"#nav-tree img {\n"
" margin:0px;\n"
" padding:0px;\n"
" border:0px;\n"
" vertical-align: middle;\n"
"}\n"
"\n"
"#nav-tree a {\n"
" text-decoration:none;\n"
" padding:0px;\n"
" margin:0px;\n"
" outline:none;\n"
"}\n"
"\n"
"#nav-tree .label {\n"
" margin:0px;\n"
" padding:0px;\n"
"}\n"
"\n"
"#nav-tree .label a {\n"
" padding:2px;\n"
"}\n"
"\n"
"#nav-tree .selected a {\n"
" text-decoration:none;\n"
" padding:2px;\n"
" margin:0px;\n"
" color:#fff;\n"
"}\n"
"\n"
"#nav-tree .children_ul {\n"
" margin:0px;\n"
" padding:0px;\n"
"}\n"
"\n"
"#nav-tree .item {\n"
" margin:0px;\n"
" padding:0px;\n"
"}\n"
"\n"
"#nav-tree {\n"
" padding: 0px 0px;\n"
" background-color: #FAFAFF; \n"
" font-size:14px;\n"
" overflow:auto;\n"
"}\n"
"\n"
"#doc-content {\n"
" overflow:auto;\n"
" display:block;\n"
" padding:0px;\n"
" margin:0px;\n"
"}\n"
"\n"
"#side-nav {\n"
" padding:0 6px 0 0;\n"
" margin: 0px;\n"
" display:block;\n"
" position: absolute;\n"
" left: 0px;\n"
" width: 300px;\n"
"}\n"
"\n"
".ui-resizable .ui-resizable-handle {\n"
" display:block;\n"
"}\n"
"\n"
".ui-resizable-e {\n"
" background:url(\"ftv2splitbar.png\") repeat scroll right center transparent;\n"
" cursor:e-resize;\n"
" height:100%;\n"
" right:0;\n"
" top:0;\n"
" width:6px;\n"
"}\n"
"\n"
".ui-resizable-handle {\n"
" display:none;\n"
" font-size:0.1px;\n"
" position:absolute;\n"
" z-index:1;\n"
"}\n"
"\n"
"#nav-tree-contents {\n"
" margin: 6px 0px 0px 0px;\n"
"}\n"
"\n"
"#nav-tree {\n"
" background-image:url('nav_h.png');\n"
" background-repeat:repeat-x;\n"
" background-color: ##FA;\n"
"}\n"
"\n"
"\n"
"\n"
This diff is collapsed.
...@@ -379,6 +379,8 @@ class OutputGenerator : public BaseOutputDocInterface ...@@ -379,6 +379,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void writeGraphicalHierarchy(const DotGfxHierarchyTable &g) = 0; virtual void writeGraphicalHierarchy(const DotGfxHierarchyTable &g) = 0;
virtual void startQuickIndices() = 0; virtual void startQuickIndices() = 0;
virtual void endQuickIndices() = 0; virtual void endQuickIndices() = 0;
virtual void writeSplitBar(const char *) = 0;
virtual void writeLogo() = 0;
virtual void writeQuickLinks(bool compact,HighlightedItem hli) = 0; virtual void writeQuickLinks(bool compact,HighlightedItem hli) = 0;
virtual void startContents() = 0; virtual void startContents() = 0;
virtual void endContents() = 0; virtual void endContents() = 0;
......
...@@ -328,6 +328,10 @@ class OutputList : public OutputDocInterface ...@@ -328,6 +328,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startQuickIndices); } { forall(&OutputGenerator::startQuickIndices); }
void endQuickIndices() void endQuickIndices()
{ forall(&OutputGenerator::endQuickIndices); } { forall(&OutputGenerator::endQuickIndices); }
void writeSplitBar(const char *name)
{ forall(&OutputGenerator::writeSplitBar,name); }
void writeLogo()
{ forall(&OutputGenerator::writeLogo); }
void writeQuickLinks(bool compact,HighlightedItem hli) void writeQuickLinks(bool compact,HighlightedItem hli)
{ forall(&OutputGenerator::writeQuickLinks,compact,hli); } { forall(&OutputGenerator::writeQuickLinks,compact,hli); }
void startContents() void startContents()
......
...@@ -69,13 +69,15 @@ bool PageDef::hasParentPage() const ...@@ -69,13 +69,15 @@ bool PageDef::hasParentPage() const
void PageDef::writeDocumentation(OutputList &ol) void PageDef::writeDocumentation(OutputList &ol)
{ {
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
//outputList->disable(OutputGenerator::Man); //outputList->disable(OutputGenerator::Man);
QCString pageName; QCString pageName;
pageName=escapeCharsInString(name(),FALSE,TRUE); pageName=escapeCharsInString(name(),FALSE,TRUE);
//printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data()); //printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data());
startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,TRUE); startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView);
ol.pushGeneratorState(); ol.pushGeneratorState();
//1.{ //1.{
...@@ -92,13 +94,15 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -92,13 +94,15 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.enable(OutputGenerator::Html); ol.enable(OutputGenerator::Html);
} }
if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) if (!generateTreeView)
{ {
getOuterScope()->writeNavigationPath(ol); if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX"))
{
getOuterScope()->writeNavigationPath(ol);
}
ol.endQuickIndices();
} }
ol.endQuickIndices();
// save old generator state and write title only to Man generator // save old generator state and write title only to Man generator
ol.pushGeneratorState(); ol.pushGeneratorState();
//2.{ //2.{
...@@ -135,7 +139,16 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -135,7 +139,16 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.popGeneratorState(); ol.popGeneratorState();
//1.} //1.}
endFile(ol); if (generateTreeView && getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX"))
{
ol.endContents();
getOuterScope()->writeNavigationPath(ol);
endFile(ol,TRUE);
}
else
{
endFile(ol);
}
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{ {
......
This diff is collapsed.
This diff is collapsed.
...@@ -173,6 +173,8 @@ class RTFGenerator : public OutputGenerator ...@@ -173,6 +173,8 @@ class RTFGenerator : public OutputGenerator
void endPageRef(const char *,const char *); void endPageRef(const char *,const char *);
void startQuickIndices() {} void startQuickIndices() {}
void endQuickIndices() {} void endQuickIndices() {}
void writeSplitBar(const char *) {}
void writeLogo() {}
void writeQuickLinks(bool,HighlightedItem) {} void writeQuickLinks(bool,HighlightedItem) {}
void startContents() {} void startContents() {}
void endContents() {} void endContents() {}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -382,5 +382,17 @@ QCString externalLinkTarget(); ...@@ -382,5 +382,17 @@ QCString externalLinkTarget();
QCString externalRef(const QCString &relPath,const QCString &ref,bool href); QCString externalRef(const QCString &relPath,const QCString &ref,bool href);
int nextUtf8CharPosition(const QCString &utf8Str,int len,int startPos); int nextUtf8CharPosition(const QCString &utf8Str,int len,int startPos);
struct ColoredImgDataItem
{
const char *name;
unsigned short width;
unsigned short height;
unsigned char *content;
unsigned char *alpha;
};
void writeColoredImgData(const char *dir,ColoredImgDataItem data[]);
QCString replaceColorMarkers(const char *str);
#endif #endif
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