Commit 05b70e8e authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.6.2

parent e3256753
DOXYGEN Version 1.6.1-20091222
DOXYGEN Version 1.6.2
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (22 December 2009)
Dimitri van Heesch (30 December 2009)
DOXYGEN Version 1.6.1_20091222
DOXYGEN Version 1.6.2
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) (22 December 2009)
Dimitri van Heesch (dimitri@stack.nl) (30 December 2009)
......@@ -17,10 +17,10 @@
doxygen_version_major=1
doxygen_version_minor=6
doxygen_version_revision=1
doxygen_version_revision=2
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20091222
doxygen_version_mmn=NO
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
......@@ -91,6 +91,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_dot_transparent DOT_TRANSPARENT
\refitem cfg_dotfile_dirs DOTFILE_DIRS
\refitem cfg_doxyfile_encoding DOXYFILE_ENCODING
\refitem cfg_eclipse_doc_id ECLIPSE_DOC_ID
\refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
\refitem cfg_enabled_sections ENABLED_SECTIONS
\refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE
......@@ -123,6 +124,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_generate_chi GENERATE_CHI
\refitem cfg_generate_deprecatedlist GENERATE_DEPRECIATEDLIST
\refitem cfg_generate_docset GENERATE_DOCSET
\refitem cfg_generate_eclipsehelp GENERATE_ECLIPSEHELP
\refitem cfg_generate_html GENERATE_HTML
\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
\refitem cfg_generate_latex GENERATE_LATEX
......@@ -1455,6 +1457,28 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
If non-empty doxygen will try to run qhelpgenerator on the generated
.qhp file.
\anchor cfg_generate_eclipsehelp
<dt>\c GENERATE_ECLIPSEHELP <dd>
\addindex GENERATE_ECLIPSEHELP
If the \c GENERATE_ECLIPSEHELP tag is set to \c YES, additional index files
will be generated, which together with the HTML files, form an Eclipse help
plugin.
To install this plugin and make it available under the help contents
menu in Eclipse, the contents of the directory containing the HTML and XML
files needs to be copied into the plugins directory of eclipse. The name of
the directory within the plugins directory should be the same as
the \ref cfg_eclipse_doc_id "ECLIPSE_DOC_ID" value.
After copying Eclipse needs to be restarted before the help appears.
\anchor cfg_eclipse_doc_id
<dt>\c ECLIPSE_DOC_ID <dd>
\addindex ECLIPSE_DOC_ID
A unique identifier for the eclipse help plugin. When installing the plugin
the directory name containing the HTML and XML files should also have
this name. Each documentation set should have its own identifier.
\anchor cfg_searchengine
<dt>\c SEARCHENGINE <dd>
\addindex SEARCHENGINE
......
......@@ -153,18 +153,31 @@ that use doxygen.
\latexonly
list of projects that use doxygen (see {\tt http://www.doxygen.org/projects.html}).
\endlatexonly
If you know other projects, let me know and I'll add them.
If you know other projects, let <a href="mailto:dimitri@stack.nl?subject=New%20project%20using%20Doxygen">me</a>
know and I'll add them.
<h2>Commercial Support</h2>
I'm currently investigating the possibilities of providing
commercial support for doxygen. The forms of support I'm thinking of
are:
<ul>
<li>implementing features,
<li>fixing bugs,
<li>providing priority help in answering questions.
</ul>
To get a better understanding of the feasibility,
please let <a href="mailto:dimitri@stack.nl?subject=Doxygen%20Commercial%20Support">me</a> know if you
have a need for this type (or another type)
of doxygen related commercial support.
<h2>Future work</h2>
Although doxygen is used successfully by a lot of people already,
there is always room for improvement. Therefore, I have compiled a
\htmlonly
<a href="http://www.doxygen.org/todo.html">todo/wish list</a>
\endhtmlonly
\latexonly
todo/wish list (see {\tt http://www.doxygen.org/todo.html})
\endlatexonly
of possible and/or requested enhancements.
Although doxygen is successfully used by large number of companies and
open source projects already, there is always room for improvement.
<p>
You can submit enhancement requests in
<a href="https://bugzilla.gnome.org/buglist.cgi?product=doxygen&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=enhancement">the bug tracker</a>.
Make sure the severity of the bug report is set to "enhancement".
<h2>Acknowledgements</h2>
\addindex acknowledgements
......
......@@ -25,7 +25,7 @@ HTML browsers by default have no search capabilities that work across multiple
pages, so either doxygen or external tools need to help to facilitate
this feature.
Doxygen has 5 different ways to add searching to the HTML output, each of which
Doxygen has 6 different ways to add searching to the HTML output, each of which
has its own advantages and disadvantages:
<h2>1. Client side searching</h2>
......@@ -128,4 +128,31 @@ has its own advantages and disadvantages:
each user, or distributing the Qt help assistant along with
the documentation, which is complicated by the fact that it is not
available as a separate package at this moment.
<h2>6. Eclipse Help Plugin</h2>
If you use eclipse, you can embed the documentation generated by
doxygen as a help plugin. It will then appear as a topic in the help
browser that can be started from "Help contents" in the Help menu.
Eclipse will generate a search index for the documentation when you
first search for an keyword.
To enable the help plugin set
\ref cfg_generate_eclipsehelp "GENERATE_ECLIPSE_HELP" to \c YES,
and define a unique identifier for your project via
\ref cfg_eclipse_doc_id "ECLIPSE_DOC_ID", i.e:
\verbatim
GENERATE_ECLIPSE_HELP = YES
ECLIPSE_DOC_ID = com.yourcompany.yourproject
\endverbatim
then create the \c com.yourcompany.yourproject directory (so with
the same name as the value of \c ECLIPSE_DOC_ID) in the
\c plugin directory of eclipse and after doxygen completes copy
to contents of the help output directory to
the \c com.yourcompany.yourproject directory.
Then restart eclipse to make let it find the new plugin.
The eclipse help plugin provides similar functionality as the
Qt compressed help or CHM output, but it does require that Eclipse is
installed and running.
*/
# Doxyfile 1.5.9
# Doxyfile 1.6.1
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
PROJECT_NAME = Qtools
PROJECT_NUMBER =
OUTPUT_DIRECTORY = ../qtools_docs
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_INC_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO
......@@ -24,12 +24,12 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
ALIASES =
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING =
EXTENSION_MAPPING =
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
......@@ -55,22 +55,25 @@ INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_DIRECTORIES = NO
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
LAYOUT_FILE =
FILE_VERSION_FILTER =
LAYOUT_FILE =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
......@@ -80,7 +83,7 @@ WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text "
WARN_LOGFILE =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
......@@ -90,16 +93,16 @@ FILE_PATTERNS = *.h \
*.cpp \
*.doc
RECURSIVE = NO
EXCLUDE =
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
......@@ -122,31 +125,34 @@ IGNORE_PREFIX = Q
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_TIMESTAMP = NO
HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = YES
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
GENERATE_QHP = YES
QCH_FILE =
QCH_FILE =
QHP_NAMESPACE = com.qtools
QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
QHG_LOCATION =
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
QHG_LOCATION =
GENERATE_ECLIPSEHELP = YES
ECLIPSE_DOC_ID = org.doxygen.qtools
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
......@@ -154,17 +160,18 @@ USE_INLINE_TREES = NO
TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = YES
LATEX_OUTPUT =
LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
......@@ -174,16 +181,16 @@ LATEX_SOURCE_CODE = YES
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_OUTPUT =
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
......@@ -191,8 +198,8 @@ MAN_LINKS = NO
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
......@@ -204,37 +211,37 @@ GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
TAGFILES =
GENERATE_TAGFILE = ../qtools_docs/qtools.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_FONTNAME = FreeSans
DOT_FONTSIZE = 10
DOT_FONTPATH =
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
......@@ -247,8 +254,8 @@ CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
DOT_PATH =
DOTFILE_DIRS =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
......
......@@ -370,8 +370,8 @@ void replaceComment(int offset);
BEGIN(CComment);
}
}
<CComment>[ \t]+"{@code" {
copyToOutput(" @code",6);
<CComment>"{@code"/[ \t\n] {
copyToOutput("@code",5);
g_lastCommentContext = YY_START;
g_javaBlock=1;
g_blockName=&yytext[1];
......@@ -426,6 +426,7 @@ void replaceComment(int offset);
else
{
g_javaBlock++;
copyToOutput(yytext,yyleng);
}
}
<VerbatimCode>"}" {
......@@ -441,6 +442,10 @@ void replaceComment(int offset);
copyToOutput(" @endcode ",10);
BEGIN(g_lastCommentContext);
}
else
{
copyToOutput(yytext,yyleng);
}
}
}
<VerbatimCode>[\\@]("enddot"|"endcode"|"endmsc") { /* end of verbatim block */
......@@ -492,7 +497,7 @@ void replaceComment(int offset);
copyToOutput(yytext,yyleng);
}
<CComment>[^\\!@*\n]* { /* anything that is not a '*' or command */
<CComment>[^\\!@*\n{]* { /* anything that is not a '*' or command */
copyToOutput(yytext,yyleng);
}
<CComment>"*"+[^*/\\@\n]* { /* stars without slashes */
......
......@@ -1361,26 +1361,17 @@ void Config::check()
// check QHP creation requirements
if (Config_getBool("GENERATE_QHP"))
{
bool qhp=TRUE;
if (!Config_getBool("GENERATE_HTML"))
{
config_err("Error: GENERATE_QHP=YES requires GENERATE_HTML=YES. Disabling QHP output.\n");
qhp=FALSE;
}
if (Config_getString("QHP_NAMESPACE").isEmpty())
{
config_err("Error: GENERATE_QHP=YES requires QHP_NAMESPACE to be set. Disabling QHP output.\n");
qhp=FALSE;
config_err("Error: GENERATE_QHP=YES requires QHP_NAMESPACE to be set. Using 'org.doxygen.doc' as default!.\n");
Config_getString("QHP_NAMESPACE")="org.doxygen.doc";
}
if (Config_getString("QHP_VIRTUAL_FOLDER").isEmpty())
{
config_err("Error: GENERATE_QHP=YES requires QHP_VIRTUAL_FOLDER to be set. Disabling QHP output.\n");
qhp=FALSE;
config_err("Error: GENERATE_QHP=YES requires QHP_VIRTUAL_FOLDER to be set. Using 'doc' as default!\n");
Config_getString("QHP_VIRTUAL_FOLDER")="doc";
}
Config_getBool("GENERATE_QHP")=qhp;
}
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO"))
......
......@@ -861,7 +861,7 @@ The path specified is relative to the HTML output folder.
The QHP_NAMESPACE tag specifies the namespace to use when generating
Qt Help Project output. For more information please see
http://doc.trolltech.com/qthelpproject.html#namespace
' defval='' depends='GENERATE_QHP'/>
' defval='org.doxygen.Project' depends='GENERATE_QHP'/>
<option type='string' id='QHP_VIRTUAL_FOLDER' format='string' docs='
The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
Qt Help Project output. For more information please see
......@@ -887,6 +887,21 @@ be used to specify the location of Qt&apos;s qhelpgenerator.
If non-empty doxygen will try to run qhelpgenerator on the generated
.qhp file.
' defval='' depends='GENERATE_QHP'/>
<option type='bool' id='GENERATE_ECLIPSEHELP' docs='
If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
will be generated, which together with the HTML files, form an Eclipse help
plugin. To install this plugin and make it available under the help contents
menu in Eclipse, the contents of the directory containing the HTML and XML
files needs to be copied into the plugins directory of eclipse. The name of
the directory within the plugins directory should be the same as
the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
the help appears.
' defval='0' depends='GENERATE_HTML'/>
<option type='string' id='ECLIPSE_DOC_ID' docs='
A unique identifier for the eclipse help plugin. When installing the plugin
the directory name containing the HTML and XML files should also have
this name.
' defval='org.doxygen.Project' depends='GENERATE_ECLIPSEHELP'/>
<option type='bool' id='DISABLE_INDEX' docs='
The DISABLE_INDEX tag can be used to turn on/off the condensed index at
top of each HTML page. The value NO (the default) enables the index and
......
......@@ -1253,6 +1253,7 @@ void addConfigOptions(Config *cfg)
"Qt Help Project output. For more information please see\n"
"http://doc.trolltech.com/qthelpproject.html#namespace"
);
cs->setDefaultValue("org.doxygen.Project");
cs->addDependency("GENERATE_QHP");
//----
cs = cfg->addString(
......@@ -1297,6 +1298,28 @@ void addConfigOptions(Config *cfg)
cs->setWidgetType(ConfigString::File);
cs->addDependency("GENERATE_QHP");
//----
cb = cfg->addBool(
"GENERATE_ECLIPSEHELP",
"If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files\n"
" will be generated, which together with the HTML files, form an Eclipse help\n"
" plugin. To install this plugin and make it available under the help contents\n"
"menu in Eclipse, the contents of the directory containing the HTML and XML\n"
"files needs to be copied into the plugins directory of eclipse. The name of\n"
"the directory within the plugins directory should be the same as\n"
"the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears.",
FALSE
);
cb->addDependency("GENERATE_HTML");
//----
cs = cfg->addString(
"ECLIPSE_DOC_ID",
"A unique identifier for the eclipse help plugin. When installing the plugin\n"
"the directory name containing the HTML and XML files should also have\n"
"this name."
);
cs->setDefaultValue("org.doxygen.Project");
cs->addDependency("GENERATE_ECLIPSEHELP");
//----
cb = cfg->addBool(
"DISABLE_INDEX",
"The DISABLE_INDEX tag can be used to turn on/off the condensed index at\n"
......
......@@ -1171,6 +1171,7 @@ class DocHtmlCell : public CompAccept<DocHtmlCell>, public DocNode
void markFirst(bool v=TRUE) { m_isFirst=v; }
void markLast(bool v=TRUE) { m_isLast=v; }
const HtmlAttribList &attribs() const { return m_attribs; }
const QList<DocNode> &children() const { return m_children; }
int parse();
int parseXml();
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
*
......@@ -79,6 +76,7 @@
#include "portable.h"
#include "vhdlscanner.h"
#include "vhdldocgen.h"
#include "eclipsehelp.h"
#include "layout.h"
......@@ -10196,9 +10194,11 @@ void generateOutput()
if (Config_getBool("GENERATE_INDEXLOG")) Doxygen::indexList.addIndex(new IndexLog);
#endif
bool generateHtmlHelp = Config_getBool("GENERATE_HTMLHELP");
bool generateEclipseHelp = Config_getBool("GENERATE_ECLIPSEHELP");
bool generateQhp = Config_getBool("GENERATE_QHP");
bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
bool generateDocSet = Config_getBool("GENERATE_DOCSET");
if (generateEclipseHelp) Doxygen::indexList.addIndex(new EclipseHelp);
if (generateHtmlHelp) Doxygen::indexList.addIndex(new HtmlHelp);
if (generateQhp) Doxygen::indexList.addIndex(new Qhp);
if (generateTreeView) Doxygen::indexList.addIndex(new FTVHelp);
......
......@@ -31,7 +31,7 @@ div.multicol {
-webkit-column-count: 3;
}
p.startli, p.startdd {
p.startli, p.startdd, p.starttd {
margin-top: 2px;
}
......@@ -43,6 +43,10 @@ p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
/* @end */
caption {
......@@ -115,9 +119,11 @@ a.elRef {
}
a.code {
color: #3030f0;
}
a.codeRef {
color: #3030f0;
}
/* @end */
......@@ -136,6 +142,10 @@ pre.fragment {
background-color: #f5f5f5;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
}
div.ah {
......@@ -501,3 +511,22 @@ address {
font-style: normal;
color: #333;
}
table.doxtable {
border-collapse:collapse;
}
table.doxtable td, table.doxtable th {
border: 1px solid #153788;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #254798;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
}
......@@ -31,7 +31,7 @@
" -webkit-column-count: 3;\n"
"}\n"
"\n"
"p.startli, p.startdd {\n"
"p.startli, p.startdd, p.starttd {\n"
" margin-top: 2px;\n"
"}\n"
"\n"
......@@ -43,6 +43,10 @@
" margin-bottom: 4px;\n"
"}\n"
"\n"
"p.endtd {\n"
" margin-bottom: 2px;\n"
"}\n"
"\n"
"/* @end */\n"
"\n"
"caption {\n"
......@@ -115,9 +119,11 @@
"}\n"
"\n"
"a.code {\n"
" color: #3030f0;\n"
"}\n"
"\n"
"a.codeRef {\n"
" color: #3030f0;\n"
"}\n"
"\n"
"/* @end */\n"
......@@ -136,6 +142,10 @@
" background-color: #f5f5f5;\n"
" padding: 4px 6px;\n"
" margin: 4px 8px 4px 2px;\n"
" overflow: auto;\n"
" word-wrap: break-word;\n"
" font-size: 9pt;\n"
" line-height: 125%;\n"
"}\n"
"\n"
"div.ah {\n"
......@@ -501,3 +511,22 @@
" font-style: normal;\n"
" color: #333;\n"
"}\n"
"\n"
"table.doxtable {\n"
" border-collapse:collapse;\n"
"}\n"
"\n"
"table.doxtable td, table.doxtable th {\n"
" border: 1px solid #153788;\n"
" padding: 3px 7px 2px;\n"
"}\n"
"\n"
"table.doxtable th {\n"
" background-color: #254798;\n"
" color: #FFFFFF;\n"
" font-size: 110%;\n"
" padding-bottom: 4px;\n"
" padding-top: 5px;\n"
" text-align:left;\n"
"}\n"
"\n"
/******************************************************************************
*
* Copyright (C) 1997-2009 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License 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.
*
*/
#include "eclipsehelp.h"
#include "util.h"
#include "config.h"
#include "message.h"
#include "doxygen.h"
EclipseHelp::EclipseHelp() : m_depth(0), m_endtag(FALSE), m_tocfile(0)
{
}
EclipseHelp::~EclipseHelp()
{
}
void EclipseHelp::indent()
{
int i;
for (i=0; i<m_depth; i++)
{
m_tocstream << " ";
}
}
void EclipseHelp::closedTag()
{
if (m_endtag)
{
m_tocstream << "/>" << endl;
m_endtag = FALSE;
}
}
void EclipseHelp::openedTag()
{
if (m_endtag)
{
m_tocstream << ">" << endl;
m_endtag = FALSE;
}
}
/*!
* \brief Initialize the Eclipse generator
*
* This method opens the XML TOC file and writes headers of the files.
* \sa finalize()
*/
void EclipseHelp::initialize()
{
// -- read path prefix from the configuration
//m_pathprefix = Config_getString("ECLIPSE_PATHPREFIX");
//if (m_pathprefix.isEmpty()) m_pathprefix = "html/";
// -- open the contents file
QCString name = Config_getString("HTML_OUTPUT") + "/toc.xml";
m_tocfile = new QFile(name);
if (!m_tocfile->open(IO_WriteOnly))
{
err("Could not open file %s for writing\n", name.data());
exit(1);
}
// -- initialize its text stream
m_tocstream.setDevice(m_tocfile);
m_tocstream.setEncoding(QTextStream::UnicodeUTF8);
// -- write the opening tag
QCString title = Config_getString("PROJECT_NAME");
if (title.isEmpty())
{
title = "Doxygen generated documentation";
}
m_tocstream << "<toc label=\"" << convertToXML(title) << "\">" << endl;
++ m_depth;
}
/*!
* \brief Finish generation of the Eclipse specific help files
*
* This method writes footers of the files and closes them.
* \sa initialize()
*/
void EclipseHelp::finalize()
{
closedTag(); // -- close previous tag
// -- write ending tag
--m_depth;
m_tocstream << "</toc>" << endl;
// -- close the content file
m_tocstream.unsetDevice();
m_tocfile->close();
delete m_tocfile; m_tocfile = 0;
QCString name = Config_getString("HTML_OUTPUT") + "/plugin.xml";
QFile pluginFile(name);
if (pluginFile.open(IO_WriteOnly))
{
QString docId = Config_getString("ECLIPSE_DOC_ID");
QTextStream t(&pluginFile);
t << "<plugin name=\"" << docId << "\" id=\"" << docId << "\"" << endl;
t << " version=\"1.0.0\" provider-name=\"Doxygen\">" << endl;
t << " <extension point=\"org.eclipse.help.toc\">" << endl;
t << " <toc file=\"toc.xml\" primary=\"true\" />" << endl;
t << " </extension>" << endl;
t << "</plugin>" << endl;
}
}
/*!
* \brief Increase the level of content hierarchy
*/
void EclipseHelp::incContentsDepth()
{
openedTag();
++m_depth;
}
/*!
* \brief Decrease the level of content hierarchy
*
* It closes currently opened topic tag.
*/
void EclipseHelp::decContentsDepth()
{
// -- end of the opened topic
closedTag();
--m_depth;
indent();
m_tocstream << "</topic>" << endl;
}
/*!
* \brief Add an item to the content
*
* @param isDir Flag whether the argument \a file is a directory or a file entry
* @param name Name of the item
* @param ref URL of the item
* @param file Name of a file which the item is defined in (without extension)
* @param anchor Name of an anchor of the item.
*/
void EclipseHelp::addContentsItem(
bool isDir,
const char *name,
const char * /* ref */,
const char *file,
const char *anchor)
{
// -- write the topic tag
closedTag();
indent();
m_tocstream << "<topic label=\"" << convertToXML(name) << "\"";
if (!isDir && file)
{ // -- Eclipse help cannot handle directories
m_tocstream << " href=\"" << convertToXML(m_pathprefix)
<< file << Doxygen::htmlFileExtension;
if (anchor)
{
m_tocstream << "#" << anchor;
}
m_tocstream << "\"";
}
m_endtag = TRUE;
}
void EclipseHelp::addIndexItem(
Definition * /* context */,
MemberDef * /* md */,
const char * /* anchor */,
const char * /* word */)
{
}
void EclipseHelp::addIndexFile(const char * /* name */)
{
}
void EclipseHelp::addImageFile(const char * /* name */)
{
}
void EclipseHelp::addStyleSheetFile(const char * /* name */)
{
}
/******************************************************************************
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License 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.
*
*/
/*
* eclipsehelp.h
*
* Created on: 7.11.2009
* Author: ondrej
*/
#ifndef ECLIPSEHELP_H
#define ECLIPSEHELP_H
#include "qtbc.h"
#include "index.h"
#include <qtextstream.h>
/* -- forward declarations */
class QFile;
/*!
* \brief Generator of Eclipse help files
*
* This class generates the Eclipse specific help files.
* These files can be used to generate a help plugin readable
* by the Eclipse IDE.
*/
class EclipseHelp : public IndexIntf
{
public:
EclipseHelp();
virtual ~EclipseHelp();
/* -- index interface */
virtual void initialize();
virtual void finalize();
virtual void incContentsDepth();
virtual void decContentsDepth();
virtual void addContentsItem(bool isDir, const char *name, const char *ref = 0,
const char *file = 0, const char *anchor = 0);
virtual void addIndexItem(Definition *context,MemberDef *md,
const char *anchor,const char *word);
virtual void addIndexFile(const char *name);
virtual void addImageFile(const char *name);
virtual void addStyleSheetFile(const char *name);
private:
int m_depth;
bool m_endtag;
QFile * m_tocfile;
QTextStream m_tocstream;
QCString m_pathprefix;
/* -- avoid copying */
EclipseHelp(const EclipseHelp &);
EclipseHelp & operator = (const EclipseHelp &);
/* -- formatting helpers */
void indent();
void closedTag();
void openedTag();
};
#endif /* ECLIPSEHELP_H */
......@@ -619,7 +619,7 @@ bool isSeparatedParagraph(DocSimpleSect *parent,DocPara *par)
return FALSE;
}
int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast)
static int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast)
{
int t=0;
isFirst=FALSE;
......@@ -664,6 +664,12 @@ int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast)
if (isFirst) t=2;
if (isLast) t=4;
break;
case DocNode::Kind_HtmlCell:
isFirst=isFirstChildNode((DocHtmlCell*)p->parent(),p);
isLast =isLastChildNode ((DocHtmlCell*)p->parent(),p);
if (isFirst) t=5;
if (isLast) t=6;
break;
case DocNode::Kind_SimpleSect:
isFirst=isFirstChildNode((DocSimpleSect*)p->parent(),p);
isLast =isLastChildNode ((DocSimpleSect*)p->parent(),p);
......@@ -741,12 +747,14 @@ void HtmlDocVisitor::visitPre(DocPara *p)
// this allows us to mark the tag with a special class so we can
// fix the otherwise ugly spacing.
int t;
static const char *contexts[5] =
{ "",
" class=\"startli\"",
" class=\"startdd\"",
" class=\"endli\"",
" class=\"enddd\""
static const char *contexts[7] =
{ "", // 0
" class=\"startli\"", // 1
" class=\"startdd\"", // 2
" class=\"endli\"", // 3
" class=\"enddd\"", // 4
" class=\"starttd\"", // 5
" class=\"endtd\"" // 6
};
bool isFirst;
bool isLast;
......@@ -1025,24 +1033,24 @@ void HtmlDocVisitor::visitPost(DocHtmlDescData *)
void HtmlDocVisitor::visitPre(DocHtmlTable *t)
{
if (m_hide) return;
bool hasBorder = FALSE;
bool hasCellSpacing = FALSE;
bool hasCellPadding = FALSE;
//bool hasBorder = FALSE;
//bool hasCellSpacing = FALSE;
//bool hasCellPadding = FALSE;
forceEndParagraph(t);
HtmlAttribListIterator li(t->attribs());
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
if (att->name=="border") hasBorder=TRUE;
else if (att->name=="cellspacing") hasCellSpacing=TRUE;
else if (att->name=="cellpadding") hasCellPadding=TRUE;
}
m_t << "<table" << htmlAttribsToString(t->attribs());
if (!hasBorder) m_t << " border=\"1\"";
if (!hasCellSpacing) m_t << " cellspacing=\"3\"";
if (!hasCellPadding) m_t << " cellpadding=\"3\"";
//HtmlAttribListIterator li(t->attribs());
//HtmlAttrib *att;
//for (li.toFirst();(att=li.current());++li)
//{
// if (att->name=="border") hasBorder=TRUE;
// else if (att->name=="cellspacing") hasCellSpacing=TRUE;
// else if (att->name=="cellpadding") hasCellPadding=TRUE;
//}
m_t << "<table class=\"doxtable\"" << htmlAttribsToString(t->attribs());
//if (!hasBorder) m_t << " border=\"1\"";
//if (!hasCellSpacing) m_t << " cellspacing=\"3\"";
//if (!hasCellPadding) m_t << " cellpadding=\"3\"";
m_t << ">\n";
}
......
......@@ -2892,7 +2892,7 @@ void writeExampleIndex(OutputList &ol)
if (!pd->title().isEmpty())
{
ol.writeObjectLink(0,n,0,pd->title());
Doxygen::indexList.addContentsItem(FALSE,pd->title(),pd->getReference(),n,0);
Doxygen::indexList.addContentsItem(FALSE,filterTitle(pd->title()),pd->getReference(),n,0);
}
else
{
......@@ -3005,7 +3005,7 @@ void writePageIndex(OutputList &ol)
ol.endTypewriter();
}
ol.writeString("\n");
Doxygen::indexList.addContentsItem(hasSubPages,pageTitle,pd->getReference(),pd->getOutputFileBase(),0);
Doxygen::indexList.addContentsItem(hasSubPages,filterTitle(pageTitle),pd->getReference(),pd->getOutputFileBase(),0);
writeSubPages(pd);
ol.endIndexListItem();
}
......@@ -3548,7 +3548,7 @@ void writeIndex(OutputList &ol)
}
else
{
title = substitute(Doxygen::mainPage->title(),"%","");
title = filterTitle(Doxygen::mainPage->title());
}
QCString indexName=Config_getBool("GENERATE_TREEVIEW")?"main":"index";
......@@ -3576,7 +3576,9 @@ void writeIndex(OutputList &ol)
{
if (Doxygen::mainPage->title().lower()!="notitle")
{
ol.docify(Doxygen::mainPage->title());
ol.parseDoc(Doxygen::mainPage->docFile(),Doxygen::mainPage->docLine(),
Doxygen::mainPage,0,Doxygen::mainPage->title(),
TRUE,FALSE,0,TRUE,FALSE);
}
}
else
......
......@@ -42,6 +42,7 @@ HEADERS = bufstr.h \
dot.h \
doxygen.h \
doxygen_css.h \
eclipsehelp.h \
entry.h \
example.h \
filedef.h \
......@@ -173,6 +174,7 @@ SOURCES = ce_lex.cpp \
doctokenizer.cpp \
dot.cpp \
doxygen.cpp \
eclipsehelp.cpp \
entry.cpp \
filedef.cpp \
filename.cpp \
......
......@@ -6,6 +6,7 @@
#include "outputlist.h"
#include "doxygen.h"
#include "language.h"
#include <qregexp.h>
PageDef::PageDef(const char *f,int l,const char *n,
......@@ -156,7 +157,7 @@ void PageDef::writeDocumentation(OutputList &ol)
}
}
Doxygen::indexList.addIndexItem(this,0,0,title());
Doxygen::indexList.addIndexItem(this,0,0,filterTitle(title()));
}
void PageDef::writePageDocumentation(OutputList &ol)
......
......@@ -6970,4 +6970,19 @@ bool readInputFile(const char *fileName,BufStr &inBuf)
return TRUE;
}
// Replace %word by word in title
QCString filterTitle(const QCString &title)
{
QCString tf;
static QRegExp re("%[A-Z_a-z]");
int p=0,i,l;
while ((i=re.match(title,p,&l))!=-1)
{
tf+=title.mid(p,i-p);
tf+=title.mid(i+1,l-1); // skip %
p=i+l;
}
tf+=title.right(title.length()-p);
return tf;
}
......@@ -366,6 +366,7 @@ bool usingTreeIndex();
void stackTrace();
bool readInputFile(const char *fileName,BufStr &inBuf);
QCString filterTitle(const QCString &title);
#endif
......
......@@ -766,6 +766,10 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\eclipsehelp.cpp"
>
</File>
<File
RelativePath="..\src\entry.cpp"
>
......@@ -2097,6 +2101,10 @@
RelativePath="..\src\doxygen_css.h"
>
</File>
<File
RelativePath="..\src\eclipsehelp.h"
>
</File>
<File
RelativePath="..\src\entry.h"
>
......
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