summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml3
-rw-r--r--CMakeLists.txt5
-rw-r--r--addon/doxywizard/CMakeLists.txt46
-rw-r--r--addon/doxywizard/config_doxyw.l71
-rw-r--r--addon/doxywizard/doxywizard.cpp97
-rw-r--r--addon/doxywizard/expert.cpp73
-rw-r--r--addon/doxywizard/inputbool.cpp20
-rw-r--r--addon/doxywizard/inputint.cpp9
-rw-r--r--addon/doxywizard/inputstring.cpp25
-rw-r--r--addon/doxywizard/inputstrlist.cpp29
-rw-r--r--addon/doxywizard/wizard.cpp118
-rw-r--r--cmake/run_translator.cmake2
-rw-r--r--cmake/version.cmake2
-rw-r--r--doc/.gitignore1
-rw-r--r--doc/CMakeLists.txt221
-rw-r--r--doc/Doxyfile1
-rw-r--r--doc/doxygen.14
-rw-r--r--doc/doxygen.sty486
-rw-r--r--doc/doxygen_manual.tex4
-rw-r--r--doc/doxyindexer.12
-rw-r--r--doc/doxysearch.12
-rw-r--r--doc/doxywizard.12
-rw-r--r--doc/maintainers.txt2
-rw-r--r--doc/manual.sty33
-rw-r--r--qtools/qcstring.cpp6
-rw-r--r--qtools/qcstring.h1
-rw-r--r--qtools/qstring.cpp54
-rw-r--r--qtools/qstring.h1
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/cite.cpp4
-rw-r--r--src/commentscan.l2
-rw-r--r--src/docparser.h19
-rw-r--r--src/doctokenizer.l2
-rw-r--r--src/latexdocvisitor.cpp30
-rw-r--r--src/latexdocvisitor.h1
-rw-r--r--src/latexgen.cpp8
-rw-r--r--src/translator_it.h133
-rw-r--r--src/util.cpp33
-rw-r--r--templates/latex/doxygen.sty129
40 files changed, 838 insertions, 849 deletions
diff --git a/.gitignore b/.gitignore
index 3e575a1..21ebe47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,5 +13,3 @@
/doxygen_docs
/doxygen.tag
-
-
diff --git a/.travis.yml b/.travis.yml
index b6976ba..bcfe2c8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,7 @@ language: cpp
compiler:
- gcc
before_install:
+ - sudo add-apt-repository ppa:texlive-backports/ppa -y
- sudo apt-get update -qq
- sudo apt-get install -qq texlive texlive-extra-utils texlive-latex-extra libxml2-utils
- wget -qO- http://www.cmake.org/files/v3.1/cmake-3.1.0-Linux-x86_64.tar.gz | tar xvz
@@ -11,5 +12,5 @@ script:
- cd build
- ../cmake-3.1.0-Linux-x86_64/bin/cmake -G "Unix Makefiles" -Dbuild_doc=ON -Dbuild_wizard=ON ..
- make
- - make docs
- make tests
+ - make docs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c5f71cf..3695093 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,9 +23,10 @@ option(use_sqlite3 "Add support for sqlite3 output [experimental]." OFF)
option(use_libclang "Add support for libclang parsing." OFF)
option(win_static "Link with /MT in stead of /MD on windows" OFF)
option(english_only "Only compile in support for the English language" OFF)
+option(force_qt4 "Forces doxywizard to build using Qt4 even if Qt5 is installed" OFF)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
-set(SOURCE "${CMAKE_SOURCE_DIR}")
+set(TOP "${CMAKE_SOURCE_DIR}")
include(version)
set(sqlite3 "0" CACHE INTERNAL "used in settings.h")
@@ -66,8 +67,6 @@ include_directories(${ICONV_INCLUDE_DIR})
#set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs")
-set(DOC_INSTALL_DIR "share/doc/packages/doxygen" CACHE STRING "Relative path where to install the documentation")
-set(EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/examples)
set(DOXYDOCS ${PROJECT_BINARY_DIR}/doc)
set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS})
set(GENERATED_SRC "${CMAKE_BINARY_DIR}/generated_src" CACHE INTERNAL "Stores generated files")
diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt
index d81d2e0..eb97388 100644
--- a/addon/doxywizard/CMakeLists.txt
+++ b/addon/doxywizard/CMakeLists.txt
@@ -1,5 +1,40 @@
if (build_wizard)
+# search for Qt5
+if (NOT force_qt4)
+ find_package(Qt5Core QUIET)
+ if (Qt5Core_FOUND)
+ message(STATUS "Using Qt5")
+ find_package(Qt5 COMPONENTS Widgets Gui Xml)
+ macro(qt_use_modules)
+ qt5_use_modules(${ARGN})
+ endmacro()
+ macro(qt_wrap_cpp)
+ qt5_wrap_cpp(${ARGN})
+ endmacro()
+ macro(qt_add_resources)
+ qt5_add_resources(${ARGN})
+ endmacro()
+ endif()
+endif()
+# fallback to Qt4
+if (NOT Qt5Core_FOUND)
+ if (NOT force_qt4)
+ message(STATUS "Qt5 not found, searching for Qt4 instead...")
+ else()
+ message(STATUS "Using Qt4")
+ endif()
+ find_package(Qt4 REQUIRED COMPONENTS QtCore QtXml QtGui)
+ macro(qt_use_modules)
+ endmacro()
+ macro(qt_wrap_cpp)
+ qt4_wrap_cpp(${ARGN})
+ endmacro()
+ macro(qt_add_resources)
+ qt4_add_resources(${ARGN})
+ endmacro()
+endif()
+
include_directories(
.
${CMAKE_SOURCE_DIR}/src
@@ -11,9 +46,9 @@ set(GENERATED_SRC_WIZARD ${GENERATED_SRC}/doxywizard)
file(MAKE_DIRECTORY ${GENERATED_SRC_WIZARD})
add_definitions(-DQT_ARCH_X86_64 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DUNICODE)
-set(QT_USE_QTXML TRUE)
-find_package(Qt4 REQUIRED)
-include(${QT_USE_FILE})
+if (NOT Qt5Core_FOUND)
+ include(${QT_USE_FILE})
+endif()
# generate settings.h
file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/settings.h
@@ -43,7 +78,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GEN
FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC_WIZARD}/config_doxyw.cpp COMPILE_FLAGS "-Pconfig_doxywYY")
-QT4_WRAP_CPP(doxywizard_MOC
+qt_wrap_cpp(doxywizard_MOC
doxywizard.h
expert.h
helplabel.h
@@ -54,7 +89,7 @@ inputstrlist.h
wizard.h
)
-QT4_ADD_RESOURCES(doxywizard_RESOURCES_RCC doxywizard.qrc)
+qt_add_resources(doxywizard_RESOURCES_RCC doxywizard.qrc)
add_executable(doxywizard WIN32
doxywizard.cpp
@@ -71,6 +106,7 @@ ${GENERATED_SRC_WIZARD}/configdoc.cpp
${doxywizard_MOC}
${doxywizard_RESOURCES_RCC}
)
+qt_use_modules(doxywizard Core Gui Widgets Xml)
target_link_libraries(doxywizard
${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY}
)
diff --git a/addon/doxywizard/config_doxyw.l b/addon/doxywizard/config_doxyw.l
index 829f807..90bd09e 100644
--- a/addon/doxywizard/config_doxyw.l
+++ b/addon/doxywizard/config_doxyw.l
@@ -20,7 +20,16 @@
*/
#include "config.h"
#include "input.h"
-#include <QtCore>
+
+#include <QString>
+#include <QVariant>
+#include <QStack>
+#include <QTextCodec>
+#include <QByteArray>
+#include <QFileInfo>
+#include <QStringList>
+#include <QRegExp>
+#include <QTextStream>
#define YY_NO_UNISTD_H 1
@@ -52,7 +61,7 @@ static QVariant *g_arg;
static Input *g_curOption=0;
static QString g_elemStr;
static QTextCodec *g_codec = QTextCodec::codecForName("UTF-8");
-static QString g_codecName = QString::fromAscii("UTF-8");
+static QString g_codecName = QString::fromLatin1("UTF-8");
static int g_lastState;
static QByteArray g_tmpString;
@@ -74,13 +83,13 @@ static int yyread(char *buf,int maxSize)
}
}
-static QString warning_str = QString::fromAscii("warning: ");
-static QString error_str = QString::fromAscii("error: ");
+static QString warning_str = QString::fromLatin1("warning: ");
+static QString error_str = QString::fromLatin1("error: ");
void config_err(const char *fmt, ...)
{
QString msg = error_str;
- msg.append(QString::fromAscii(fmt));
+ msg.append(QString::fromLatin1(fmt));
va_list args;
va_start(args, fmt);
vfprintf(stderr, qPrintable(msg), args);
@@ -89,7 +98,7 @@ void config_err(const char *fmt, ...)
void config_warn(const char *fmt, ...)
{
QString msg = warning_str;
- msg.append(QString::fromAscii(fmt));
+ msg.append(QString::fromLatin1(fmt));
va_list args;
va_start(args, fmt);
vfprintf(stderr, qPrintable(msg), args);
@@ -101,10 +110,10 @@ static void substEnvVarsInString(QString &s);
static void checkEncoding()
{
- Input *option = g_options->value(QString::fromAscii("DOXYFILE_ENCODING"));
+ Input *option = g_options->value(QString::fromLatin1("DOXYFILE_ENCODING"));
if (option && option->value().toString()!=g_codecName)
{
- QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toAscii());
+ QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toLatin1());
if (newCodec)
{
g_codec = newCodec;
@@ -115,7 +124,7 @@ static void checkEncoding()
static FILE *tryPath(const QString &path,const QString &fileName)
{
- QString absName=!path.isEmpty() ? path+QString::fromAscii("/")+fileName : fileName;
+ QString absName=!path.isEmpty() ? path+QString::fromLatin1("/")+fileName : fileName;
QFileInfo fi(absName);
if (fi.exists() && fi.isFile())
{
@@ -144,7 +153,7 @@ static FILE *findFile(const QString &fileName)
if (f) return f;
}
// try cwd if g_includePathList fails
- return tryPath(QString::fromAscii("."),fileName);
+ return tryPath(QString::fromLatin1("."),fileName);
}
static void readIncludeFile(const QString &incName)
@@ -160,8 +169,8 @@ static void readIncludeFile(const QString &incName)
substEnvVarsInString(inc);
inc = inc.trimmed();
uint incLen = inc.length();
- if (inc.at(0)==QChar::fromAscii('"') &&
- inc.at(incLen-1)==QChar::fromAscii('"')) // strip quotes
+ if (inc.at(0)==QChar::fromLatin1('"') &&
+ inc.at(incLen-1)==QChar::fromLatin1('"')) // strip quotes
{
inc=inc.mid(1,incLen-2);
}
@@ -383,7 +392,7 @@ static void readIncludeFile(const QString &incName)
static void substEnvVarsInString(QString &s)
{
- static QRegExp re(QString::fromAscii("\\$\\([a-z_A-Z0-9]+\\)"));
+ static QRegExp re(QString::fromLatin1("\\$\\([a-z_A-Z0-9]+\\)"));
if (s.isEmpty()) return;
int p=0;
int i,l;
@@ -409,8 +418,8 @@ static void substEnvVarsInStrList(QStringList &sl)
foreach (QString result, sl)
{
// an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE.
- bool wasQuoted = (result.indexOf(QChar::fromAscii(' '))!=-1) ||
- (result.indexOf(QChar::fromAscii('\t'))!=-1);
+ bool wasQuoted = (result.indexOf(QChar::fromLatin1(' '))!=-1) ||
+ (result.indexOf(QChar::fromLatin1('\t'))!=-1);
// here we strip the quote again
substEnvVarsInString(result);
@@ -430,33 +439,33 @@ static void substEnvVarsInStrList(QStringList &sl)
{
QChar c=0;
// skip until start of new word
- while (i<l && ((c=result.at(i))==QChar::fromAscii(' ') || c==QChar::fromAscii('\t'))) i++;
+ while (i<l && ((c=result.at(i))==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t'))) i++;
p=i; // p marks the start index of the word
// skip until end of a word
- while (i<l && ((c=result.at(i))!=QChar::fromAscii(' ') &&
- c!=QChar::fromAscii('\t') &&
- c!=QChar::fromAscii('"'))) i++;
+ while (i<l && ((c=result.at(i))!=QChar::fromLatin1(' ') &&
+ c!=QChar::fromLatin1('\t') &&
+ c!=QChar::fromLatin1('"'))) i++;
if (i<l) // not at the end of the string
{
- if (c==QChar::fromAscii('"')) // word within quotes
+ if (c==QChar::fromLatin1('"')) // word within quotes
{
p=i+1;
for (i++;i<l;i++)
{
c=result.at(i);
- if (c==QChar::fromAscii('"')) // end quote
+ if (c==QChar::fromLatin1('"')) // end quote
{
out += result.mid(p,i-p);
p=i+1;
break;
}
- else if (c==QChar::fromAscii('\\')) // skip escaped stuff
+ else if (c==QChar::fromLatin1('\\')) // skip escaped stuff
{
i++;
}
}
}
- else if (c==QChar::fromAscii(' ') || c==QChar::fromAscii('\t')) // separator
+ else if (c==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t')) // separator
{
out += result.mid(p,i-p);
p=i+1;
@@ -529,7 +538,7 @@ bool parseConfig(
void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
{
QChar c;
- bool needsEscaping=FALSE;
+ bool needsEscaping=false;
// convert the string back to it original encoding
//QByteArray se = codec->fromUnicode(s);
t.setCodec(codec);
@@ -538,10 +547,10 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
{
while (!(c=*p++).isNull() && !needsEscaping)
{
- needsEscaping = (c==QChar::fromAscii(' ') ||
- c==QChar::fromAscii('\n') ||
- c==QChar::fromAscii('\t') ||
- c==QChar::fromAscii('"'));
+ needsEscaping = (c==QChar::fromLatin1(' ') ||
+ c==QChar::fromLatin1('\n') ||
+ c==QChar::fromLatin1('\t') ||
+ c==QChar::fromLatin1('"'));
}
if (needsEscaping)
{
@@ -549,9 +558,9 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
p=s.data();
while (!p->isNull())
{
- if (*p ==QChar::fromAscii(' ') &&
- *(p+1)==QChar::fromAscii('\0')) break; // skip inserted space at the end
- if (*p ==QChar::fromAscii('"')) t << "\\"; // escape quotes
+ if (*p ==QChar::fromLatin1(' ') &&
+ *(p+1)==QChar::fromLatin1('\0')) break; // skip inserted space at the end
+ if (*p ==QChar::fromLatin1('"')) t << "\\"; // escape quotes
t << *p++;
}
t << "\"";
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index 4c577cd..e292d0c 100644
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -1,9 +1,28 @@
-#include <QtGui>
#include "doxywizard.h"
#include "version.h"
#include "expert.h"
#include "wizard.h"
+#include <QMenu>
+#include <QMenuBar>
+#include <QPushButton>
+#include <QMessageBox>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QLabel>
+#include <QTextEdit>
+#include <QStatusBar>
+#include <QProcess>
+#include <QTimer>
+#include <QCloseEvent>
+#include <QApplication>
+#include <QDir>
+#include <QFileDialog>
+#include <QDesktopServices>
+#include <QUrl>
+#include <QTextStream>
+#include <QDebug>
+
#ifdef WIN32
#include <windows.h>
#endif
@@ -19,7 +38,7 @@ MainWindow &MainWindow::instance()
}
MainWindow::MainWindow()
- : m_settings(QString::fromAscii("Doxygen.org"), QString::fromAscii("Doxywizard"))
+ : m_settings(QString::fromLatin1("Doxygen.org"), QString::fromLatin1("Doxywizard"))
{
QMenu *file = menuBar()->addMenu(tr("File"));
file->addAction(tr("Open..."),
@@ -84,7 +103,7 @@ MainWindow::MainWindow()
QGridLayout *grid = new QGridLayout;
m_outputLog = new QTextEdit;
m_outputLog->setReadOnly(true);
- m_outputLog->setFontFamily(QString::fromAscii("courier"));
+ m_outputLog->setFontFamily(QString::fromLatin1("courier"));
m_outputLog->setMinimumWidth(600);
grid->addWidget(m_outputLog,0,0);
grid->setColumnStretch(0,1);
@@ -183,16 +202,16 @@ void MainWindow::updateWorkingDir()
void MainWindow::manual()
{
- QDesktopServices::openUrl(QUrl(QString::fromAscii("http://www.doxygen.org/manual.html")));
+ QDesktopServices::openUrl(QUrl(QString::fromLatin1("http://www.doxygen.org/manual.html")));
}
void MainWindow::about()
{
QString msg;
QTextStream t(&msg,QIODevice::WriteOnly);
- t << QString::fromAscii("<qt><center>A tool to configure and run doxygen version ")+
- QString::fromAscii(versionString)+
- QString::fromAscii(" on your source files.</center><p><br>"
+ t << QString::fromLatin1("<qt><center>A tool to configure and run doxygen version ")+
+ QString::fromLatin1(versionString)+
+ QString::fromLatin1(" on your source files.</center><p><br>"
"<center>Written by<br> Dimitri van Heesch<br>&copy; 2000-2015</center><p>"
"</qt>");
QMessageBox::about(this,tr("Doxygen GUI"),msg);
@@ -273,7 +292,7 @@ bool MainWindow::saveConfig()
bool MainWindow::saveConfigAs()
{
QString fileName = QFileDialog::getSaveFileName(this, QString(),
- m_workingDir->text()+QString::fromAscii("/Doxyfile"));
+ m_workingDir->text()+QString::fromLatin1("/Doxyfile"));
if (fileName.isEmpty()) return false;
saveConfig(fileName);
return true;
@@ -289,7 +308,7 @@ void MainWindow::makeDefaults()
{
//printf("MainWindow:makeDefaults()\n");
m_expert->saveSettings(&m_settings);
- m_settings.setValue(QString::fromAscii("wizard/loadsettings"), true);
+ m_settings.setValue(QString::fromLatin1("wizard/loadsettings"), true);
m_settings.sync();
}
}
@@ -306,7 +325,7 @@ void MainWindow::clearRecent()
m_recentFiles.clear();
for (int i=0;i<MAX_RECENT_FILES;i++)
{
- m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
+ m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromLatin1(""));
}
m_settings.sync();
}
@@ -323,7 +342,7 @@ void MainWindow::resetToDefaults()
{
//printf("MainWindow:resetToDefaults()\n");
m_expert->resetToDefaults();
- m_settings.setValue(QString::fromAscii("wizard/loadsettings"), false);
+ m_settings.setValue(QString::fromLatin1("wizard/loadsettings"), false);
m_settings.sync();
m_wizard->refresh();
}
@@ -331,11 +350,11 @@ void MainWindow::resetToDefaults()
void MainWindow::loadSettings()
{
- QVariant geometry = m_settings.value(QString::fromAscii("main/geometry"), QVariant::Invalid);
- QVariant state = m_settings.value(QString::fromAscii("main/state"), QVariant::Invalid);
- QVariant wizState = m_settings.value(QString::fromAscii("wizard/state"), QVariant::Invalid);
- QVariant loadSettings = m_settings.value(QString::fromAscii("wizard/loadsettings"), QVariant::Invalid);
- QVariant workingDir = m_settings.value(QString::fromAscii("wizard/workingdir"), QVariant::Invalid);
+ QVariant geometry = m_settings.value(QString::fromLatin1("main/geometry"), QVariant::Invalid);
+ QVariant state = m_settings.value(QString::fromLatin1("main/state"), QVariant::Invalid);
+ QVariant wizState = m_settings.value(QString::fromLatin1("wizard/state"), QVariant::Invalid);
+ QVariant loadSettings = m_settings.value(QString::fromLatin1("wizard/loadsettings"), QVariant::Invalid);
+ QVariant workingDir = m_settings.value(QString::fromLatin1("wizard/workingdir"), QVariant::Invalid);
if (geometry !=QVariant::Invalid) restoreGeometry(geometry.toByteArray());
if (state !=QVariant::Invalid) restoreState (state.toByteArray());
@@ -362,12 +381,12 @@ void MainWindow::loadSettings()
void MainWindow::saveSettings()
{
- QSettings settings(QString::fromAscii("Doxygen.org"), QString::fromAscii("Doxywizard"));
+ QSettings settings(QString::fromLatin1("Doxygen.org"), QString::fromLatin1("Doxywizard"));
- m_settings.setValue(QString::fromAscii("main/geometry"), saveGeometry());
- m_settings.setValue(QString::fromAscii("main/state"), saveState());
- m_settings.setValue(QString::fromAscii("wizard/state"), m_wizard->saveState());
- m_settings.setValue(QString::fromAscii("wizard/workingdir"), m_workingDir->text());
+ m_settings.setValue(QString::fromLatin1("main/geometry"), saveGeometry());
+ m_settings.setValue(QString::fromLatin1("main/state"), saveState());
+ m_settings.setValue(QString::fromLatin1("wizard/state"), m_wizard->saveState());
+ m_settings.setValue(QString::fromLatin1("wizard/workingdir"), m_workingDir->text());
}
void MainWindow::selectTab(int id)
@@ -405,7 +424,7 @@ void MainWindow::addRecentFile(const QString &fileName)
}
for (;i<MAX_RECENT_FILES;i++)
{
- m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
+ m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromLatin1(""));
}
}
@@ -423,19 +442,19 @@ void MainWindow::runDoxygen()
{
QString doxygenPath;
#if defined(Q_OS_MACX)
- doxygenPath = qApp->applicationDirPath()+QString::fromAscii("/../Resources/");
+ doxygenPath = qApp->applicationDirPath()+QString::fromLatin1("/../Resources/");
qDebug() << tr("Doxygen path: ") << doxygenPath;
- if ( !QFile(doxygenPath + QString::fromAscii("doxygen")).exists() )
+ if ( !QFile(doxygenPath + QString::fromLatin1("doxygen")).exists() )
{
// No Doxygen binary in the resources, if there is a system Doxygen binary, use that instead
- if ( QFile(QString::fromAscii("/usr/local/bin/doxygen")).exists() )
+ if ( QFile(QString::fromLatin1("/usr/local/bin/doxygen")).exists() )
{
- doxygenPath = QString::fromAscii("/usr/local/bin/");
+ doxygenPath = QString::fromLatin1("/usr/local/bin/");
}
else
{
qDebug() << tr("Can't find the doxygen command, make sure it's in your $$PATH");
- doxygenPath = QString::fromAscii("");
+ doxygenPath = QString::fromLatin1("");
}
}
qDebug() << tr("Getting doxygen from: ") << doxygenPath;
@@ -446,20 +465,20 @@ void MainWindow::runDoxygen()
m_runProcess->setWorkingDirectory(m_workingDir->text());
QStringList env=QProcess::systemEnvironment();
// set PWD environment variable to m_workingDir
- env.replaceInStrings(QRegExp(QString::fromAscii("^PWD=(.*)"),Qt::CaseInsensitive),
- QString::fromAscii("PWD=")+m_workingDir->text());
+ env.replaceInStrings(QRegExp(QString::fromLatin1("^PWD=(.*)"),Qt::CaseInsensitive),
+ QString::fromLatin1("PWD=")+m_workingDir->text());
m_runProcess->setEnvironment(env);
QStringList args;
- args << QString::fromAscii("-b"); // make stdout unbuffered
- args << QString::fromAscii("-"); // read config from stdin
+ args << QString::fromLatin1("-b"); // make stdout unbuffered
+ args << QString::fromLatin1("-"); // read config from stdin
m_outputLog->clear();
- m_runProcess->start(doxygenPath + QString::fromAscii("doxygen"), args);
+ m_runProcess->start(doxygenPath + QString::fromLatin1("doxygen"), args);
if (!m_runProcess->waitForStarted())
{
- m_outputLog->append(QString::fromAscii("*** Failed to run doxygen\n"));
+ m_outputLog->append(QString::fromLatin1("*** Failed to run doxygen\n"));
return;
}
QTextStream t(m_runProcess);
@@ -468,7 +487,7 @@ void MainWindow::runDoxygen()
if (m_runProcess->state() == QProcess::NotRunning)
{
- m_outputLog->append(QString::fromAscii("*** Failed to run doxygen\n"));
+ m_outputLog->append(QString::fromLatin1("*** Failed to run doxygen\n"));
}
else
{
@@ -536,10 +555,10 @@ void MainWindow::showHtmlOutput()
QFileInfo fi(indexFile);
// TODO: the following doesn't seem to work with IE
#ifdef WIN32
- //QString indexUrl(QString::fromAscii("file:///"));
+ //QString indexUrl(QString::fromLatin1("file:///"));
ShellExecute(NULL, L"open", (LPCWSTR)fi.absoluteFilePath().utf16(), NULL, NULL, SW_SHOWNORMAL);
#else
- QString indexUrl(QString::fromAscii("file://"));
+ QString indexUrl(QString::fromLatin1("file://"));
indexUrl+=fi.absoluteFilePath();
QDesktopServices::openUrl(QUrl(indexUrl));
#endif
@@ -549,7 +568,7 @@ void MainWindow::saveLog()
{
QString fn = QFileDialog::getSaveFileName(this, tr("Save log file"),
m_workingDir->text()+
- QString::fromAscii("/doxygen_log.txt"));
+ QString::fromLatin1("/doxygen_log.txt"));
if (!fn.isEmpty())
{
QFile f(fn);
@@ -589,11 +608,11 @@ void MainWindow::updateTitle()
QString title = tr("Doxygen GUI frontend");
if (m_modified)
{
- title+=QString::fromAscii(" +");
+ title+=QString::fromLatin1(" +");
}
if (!m_fileName.isEmpty())
{
- title+=QString::fromAscii(" (")+m_fileName+QString::fromAscii(")");
+ title+=QString::fromLatin1(" (")+m_fileName+QString::fromLatin1(")");
}
setWindowTitle(title);
}
diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp
index 3a03c69..66a0955 100644
--- a/addon/doxywizard/expert.cpp
+++ b/addon/doxywizard/expert.cpp
@@ -1,5 +1,3 @@
-#include <QtGui>
-#include <QtXml>
#include "expert.h"
#include "inputbool.h"
#include "inputstring.h"
@@ -11,7 +9,22 @@
#include "configdoc.h"
#include "settings.h"
-#define SA(x) QString::fromAscii(x)
+#include <QTreeWidget>
+#include <QStackedWidget>
+#include <QTextBrowser>
+#include <QSplitter>
+#include <QGridLayout>
+#include <QPushButton>
+#include <QScrollArea>
+#include <QFile>
+#include <QMessageBox>
+#include <QSettings>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QFileInfo>
+
+#define SA(x) QString::fromLatin1(x)
+
static QString convertToComment(const QString &s)
{
@@ -48,7 +61,7 @@ Expert::Expert()
m_treeWidget = new QTreeWidget;
m_treeWidget->setColumnCount(1);
m_topicStack = new QStackedWidget;
- m_inShowHelp = FALSE;
+ m_inShowHelp = false;
QFile file(SA(":/config.xml"));
QString err;
@@ -69,7 +82,7 @@ Expert::Expert()
createTopics(m_rootElement);
m_helper = new QTextBrowser;
m_helper->setReadOnly(true);
- m_helper->setOpenExternalLinks(TRUE);
+ m_helper->setOpenExternalLinks(true);
m_splitter = new QSplitter(Qt::Vertical);
m_splitter->addWidget(m_treeWidget);
m_splitter->addWidget(m_helper);
@@ -471,7 +484,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
while (!child.isNull())
{
QString setting = child.attribute(SA("setting"));
- if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii()))
+ if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
{
QString type = child.attribute(SA("type"));
QString docs = getDocsForNode(child);
@@ -634,7 +647,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
QString dependsOn = child.attribute(SA("depends"));
QString id = child.attribute(SA("id"));
if (!dependsOn.isEmpty() &&
- (setting.isEmpty() || IS_SUPPORTED(setting.toAscii())))
+ (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1())))
{
Input *parentOption = m_options[dependsOn];
if (parentOption==0)
@@ -740,7 +753,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
QString setting = childElem.attribute(SA("setting"));
QString type = childElem.attribute(SA("type"));
QString name = childElem.attribute(SA("id"));
- if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii()))
+ if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
{
QHash<QString,Input*>::const_iterator i = m_options.find(name);
if (i!=m_options.end())
@@ -774,10 +787,10 @@ bool Expert::writeConfig(QTextStream &t,bool brief)
}
QTextCodec *codec = 0;
- Input *option = m_options[QString::fromAscii("DOXYFILE_ENCODING")];
+ Input *option = m_options[QString::fromLatin1("DOXYFILE_ENCODING")];
if (option)
{
- codec = QTextCodec::codecForName(option->value().toString().toAscii());
+ codec = QTextCodec::codecForName(option->value().toString().toLatin1());
if (codec==0) // fallback: use UTF-8
{
codec = QTextCodec::codecForName("UTF-8");
@@ -809,16 +822,16 @@ void Expert::showHelp(Input *option)
{
if (!m_inShowHelp)
{
- m_inShowHelp = TRUE;
+ m_inShowHelp = true;
m_helper->setText(
- QString::fromAscii("<qt><b>")+option->id()+
- QString::fromAscii("</b><br>")+
- QString::fromAscii("<br/>")+
+ QString::fromLatin1("<qt><b>")+option->id()+
+ QString::fromLatin1("</b><br>")+
+ QString::fromLatin1("<br/>")+
option->docs().
- replace(QChar::fromAscii('\n'),QChar::fromAscii(' '))+
- QString::fromAscii("</qt>")
+ replace(QChar::fromLatin1('\n'),QChar::fromLatin1(' '))+
+ QString::fromLatin1("</qt>")
);
- m_inShowHelp = FALSE;
+ m_inShowHelp = false;
}
}
@@ -862,7 +875,7 @@ void Expert::resetToDefaults()
static bool stringVariantToBool(const QVariant &v)
{
QString s = v.toString().toLower();
- return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1");
+ return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
}
static bool getBoolOption(
@@ -884,7 +897,7 @@ static QString getStringOption(
bool Expert::htmlOutputPresent(const QString &workingDir) const
{
- bool generateHtml = getBoolOption(m_options,QString::fromAscii("GENERATE_HTML"));
+ bool generateHtml = getBoolOption(m_options,QString::fromLatin1("GENERATE_HTML"));
if (!generateHtml || workingDir.isEmpty()) return false;
QString indexFile = getHtmlOutputIndex(workingDir);
QFileInfo fi(indexFile);
@@ -893,8 +906,8 @@ bool Expert::htmlOutputPresent(const QString &workingDir) const
QString Expert::getHtmlOutputIndex(const QString &workingDir) const
{
- QString outputDir = getStringOption(m_options,QString::fromAscii("OUTPUT_DIRECTORY"));
- QString htmlOutputDir = getStringOption(m_options,QString::fromAscii("HTML_OUTPUT"));
+ QString outputDir = getStringOption(m_options,QString::fromLatin1("OUTPUT_DIRECTORY"));
+ QString htmlOutputDir = getStringOption(m_options,QString::fromLatin1("HTML_OUTPUT"));
//printf("outputDir=%s\n",qPrintable(outputDir));
//printf("htmlOutputDir=%s\n",qPrintable(htmlOutputDir));
QString indexFile = workingDir;
@@ -904,7 +917,7 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
}
else // append
{
- indexFile += QString::fromAscii("/")+outputDir;
+ indexFile += QString::fromLatin1("/")+outputDir;
}
if (QFileInfo(htmlOutputDir).isAbsolute()) // override
{
@@ -912,27 +925,27 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
}
else // append
{
- indexFile += QString::fromAscii("/")+htmlOutputDir;
+ indexFile += QString::fromLatin1("/")+htmlOutputDir;
}
- indexFile+=QString::fromAscii("/index.html");
+ indexFile+=QString::fromLatin1("/index.html");
return indexFile;
}
bool Expert::pdfOutputPresent(const QString &workingDir) const
{
- bool generateLatex = getBoolOption(m_options,QString::fromAscii("GENERATE_LATEX"));
- bool pdfLatex = getBoolOption(m_options,QString::fromAscii("USE_PDFLATEX"));
+ bool generateLatex = getBoolOption(m_options,QString::fromLatin1("GENERATE_LATEX"));
+ bool pdfLatex = getBoolOption(m_options,QString::fromLatin1("USE_PDFLATEX"));
if (!generateLatex || !pdfLatex) return false;
- QString latexOutput = getStringOption(m_options,QString::fromAscii("LATEX_OUTPUT"));
+ QString latexOutput = getStringOption(m_options,QString::fromLatin1("LATEX_OUTPUT"));
QString indexFile;
if (QFileInfo(latexOutput).isAbsolute())
{
- indexFile = latexOutput+QString::fromAscii("/refman.pdf");
+ indexFile = latexOutput+QString::fromLatin1("/refman.pdf");
}
else
{
- indexFile = workingDir+QString::fromAscii("/")+
- latexOutput+QString::fromAscii("/refman.pdf");
+ indexFile = workingDir+QString::fromLatin1("/")+
+ latexOutput+QString::fromLatin1("/refman.pdf");
}
QFileInfo fi(indexFile);
return fi.exists() && fi.isFile();
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp
index ec2035a..ef71dd9 100644
--- a/addon/doxywizard/inputbool.cpp
+++ b/addon/doxywizard/inputbool.cpp
@@ -14,7 +14,11 @@
#include "inputbool.h"
#include "helplabel.h"
-#include <QtGui>
+
+#include <QCheckBox>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QGridLayout>
InputBool::InputBool( QGridLayout *layout, int &row,
const QString &id, bool checked,
@@ -73,11 +77,11 @@ void InputBool::updateDefault()
{
if (m_state==m_default || !m_lab->isEnabled())
{
- m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+ m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
}
else
{
- m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+ m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
}
}
@@ -89,9 +93,9 @@ QVariant &InputBool::value()
void InputBool::update()
{
QString v = m_value.toString().toLower();
- m_state = (v==QString::fromAscii("yes") ||
- v==QString::fromAscii("true") ||
- v==QString::fromAscii("1"));
+ m_state = (v==QString::fromLatin1("yes") ||
+ v==QString::fromLatin1("true") ||
+ v==QString::fromLatin1("1"));
m_cb->setChecked( m_state );
updateDefault();
updateDependencies();
@@ -105,8 +109,8 @@ void InputBool::reset()
void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
{
if (m_state)
- t << codec->fromUnicode(QString::fromAscii("YES"));
+ t << codec->fromUnicode(QString::fromLatin1("YES"));
else
- t << codec->fromUnicode(QString::fromAscii("NO"));
+ t << codec->fromUnicode(QString::fromLatin1("NO"));
}
diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp
index 8fa46e8..a57e7f4 100644
--- a/addon/doxywizard/inputint.cpp
+++ b/addon/doxywizard/inputint.cpp
@@ -15,7 +15,10 @@
#include "inputint.h"
#include "helplabel.h"
-#include <QtGui>
+#include <QSpinBox>
+#include <QGridLayout>
+#include <QWheelEvent>
+#include <QTextStream>
class NoWheelSpinBox : public QSpinBox
{
@@ -74,11 +77,11 @@ void InputInt::updateDefault()
{
if (m_val==m_default || !m_lab->isEnabled())
{
- m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+ m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
}
else
{
- m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+ m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
}
emit changed();
}
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
index 75de0b5..7fb6ec3 100644
--- a/addon/doxywizard/inputstring.cpp
+++ b/addon/doxywizard/inputstring.cpp
@@ -17,7 +17,14 @@
#include "doxywizard.h"
#include "config.h"
-#include <QtGui>
+#include <QComboBox>
+#include <QLineEdit>
+#include <QGridLayout>
+#include <QWheelEvent>
+#include <QToolBar>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QTextCodec>
class NoWheelComboBox : public QComboBox
{
@@ -34,7 +41,7 @@ InputString::InputString( QGridLayout *layout,int &row,
StringMode m, const QString &docs,
const QString &absPath )
: m_default(s), m_sm(m), m_index(0), m_docs(docs), m_id(id),
- m_absPath(absPath==QString::fromAscii("1"))
+ m_absPath(absPath==QString::fromLatin1("1"))
{
m_lab = new HelpLabel(id);
if (m==StringFixed)
@@ -61,7 +68,7 @@ InputString::InputString( QGridLayout *layout,int &row,
m_br->setIconSize(QSize(24,24));
if (m==StringFile || m==StringImage)
{
- QAction *file = m_br->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),this,SLOT(browse()));
+ QAction *file = m_br->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),this,SLOT(browse()));
file->setToolTip(tr("Browse to a file"));
layout->addWidget( m_br,row,2 );
if (m==StringImage)
@@ -75,7 +82,7 @@ InputString::InputString( QGridLayout *layout,int &row,
}
else
{
- QAction *dir = m_br->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),this,SLOT(browse()));
+ QAction *dir = m_br->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),this,SLOT(browse()));
dir->setToolTip(tr("Browse to a folder"));
layout->addWidget( m_br,row,2 );
}
@@ -94,7 +101,7 @@ InputString::InputString( QGridLayout *layout,int &row,
this, SLOT(setValue(const QString&)) );
if (m_com) connect( m_com, SIGNAL(activated(const QString &)),
this, SLOT(setValue(const QString &)) );
- m_str = s+QChar::fromAscii('!'); // force update
+ m_str = s+QChar::fromLatin1('!'); // force update
setValue(s);
connect( m_lab, SIGNAL(enter()), SLOT(help()) );
connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
@@ -125,11 +132,11 @@ void InputString::updateDefault()
{
if (m_str==m_default || !m_lab->isEnabled())
{
- m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+ m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
}
else
{
- m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+ m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
}
if (m_im)
{
@@ -142,7 +149,7 @@ void InputString::updateDefault()
QFile Fout(m_str);
if(!Fout.exists())
{
- m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromAscii(");"));
+ m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromLatin1(");"));
}
else
{
@@ -153,7 +160,7 @@ void InputString::updateDefault()
}
else
{
- m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromAscii(");"));
+ m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromLatin1(");"));
}
}
}
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index 777af6a..660ce40 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -17,7 +17,14 @@
#include "doxywizard.h"
#include "config.h"
-#include <QtGui>
+#include <QToolBar>
+#include <QGridLayout>
+#include <QLineEdit>
+#include <QListWidget>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QTextStream>
+#include <QTextCodec>
InputStrList::InputStrList( QGridLayout *layout,int &row,
const QString & id,
@@ -32,13 +39,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
QToolBar *toolBar = new QToolBar;
toolBar->setIconSize(QSize(24,24));
- m_add = toolBar->addAction(QIcon(QString::fromAscii(":/images/add.png")),QString(),
+ m_add = toolBar->addAction(QIcon(QString::fromLatin1(":/images/add.png")),QString(),
this,SLOT(addString()));
m_add->setToolTip(tr("Add item"));
- m_del = toolBar->addAction(QIcon(QString::fromAscii(":/images/del.png")),QString(),
+ m_del = toolBar->addAction(QIcon(QString::fromLatin1(":/images/del.png")),QString(),
this,SLOT(delString()));
m_del->setToolTip(tr("Delete selected item"));
- m_upd = toolBar->addAction(QIcon(QString::fromAscii(":/images/refresh.png")),QString(),
+ m_upd = toolBar->addAction(QIcon(QString::fromLatin1(":/images/refresh.png")),QString(),
this,SLOT(updateString()));
m_upd->setToolTip(tr("Update selected item"));
@@ -52,13 +59,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
{
if (lm&ListFile)
{
- m_brFile = toolBar->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),
+ m_brFile = toolBar->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),
this,SLOT(browseFiles()));
m_brFile->setToolTip(tr("Browse to a file"));
}
if (lm&ListDir)
{
- m_brDir = toolBar->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),
+ m_brDir = toolBar->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),
this,SLOT(browseDir()));
m_brDir->setToolTip(tr("Browse to a folder"));
}
@@ -188,7 +195,7 @@ void InputStrList::browseDir()
}
if (dirName.isEmpty())
{
- dirName=QString::fromAscii(".");
+ dirName=QString::fromLatin1(".");
}
m_lb->addItem(dirName);
m_strList.append(dirName);
@@ -225,11 +232,11 @@ void InputStrList::updateDefault()
{
if (m_strList==m_default || !m_lab->isEnabled())
{
- m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+ m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
}
else
{
- m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+ m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
}
}
@@ -240,7 +247,7 @@ void InputStrList::reset()
void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
{
- bool first=TRUE;
+ bool first=true;
foreach (QString s, m_strList)
{
if (!first)
@@ -248,7 +255,7 @@ void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
t << " \\" << endl;
t << " ";
}
- first=FALSE;
+ first=false;
writeStringValue(t,codec,s);
}
}
diff --git a/addon/doxywizard/wizard.cpp b/addon/doxywizard/wizard.cpp
index a8b7f94..b320aaa 100644
--- a/addon/doxywizard/wizard.cpp
+++ b/addon/doxywizard/wizard.cpp
@@ -3,46 +3,64 @@
#include "doxywizard.h"
#include <math.h>
-#include <QtGui>
+
+#include <QGridLayout>
+#include <QImage>
+#include <QLabel>
+#include <QHBoxLayout>
+#include <QPushButton>
+#include <QPixmap>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QButtonGroup>
+#include <QGroupBox>
+#include <QRadioButton>
+#include <QTreeWidget>
+#include <QStackedWidget>
+#include <qdrawutil.h>
// options configurable via the wizard
-#define STR_PROJECT_NAME QString::fromAscii("PROJECT_NAME")
-#define STR_PROJECT_LOGO QString::fromAscii("PROJECT_LOGO")
-#define STR_PROJECT_BRIEF QString::fromAscii("PROJECT_BRIEF")
-#define STR_INPUT QString::fromAscii("INPUT")
-#define STR_OUTPUT_DIRECTORY QString::fromAscii("OUTPUT_DIRECTORY")
-#define STR_PROJECT_NUMBER QString::fromAscii("PROJECT_NUMBER")
-#define STR_RECURSIVE QString::fromAscii("RECURSIVE")
-#define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromAscii("OPTIMIZE_OUTPUT_FOR_C")
-#define STR_OPTIMIZE_OUTPUT_JAVA QString::fromAscii("OPTIMIZE_OUTPUT_JAVA")
-#define STR_OPTIMIZE_FOR_FORTRAN QString::fromAscii("OPTIMIZE_FOR_FORTRAN")
-#define STR_OPTIMIZE_OUTPUT_VHDL QString::fromAscii("OPTIMIZE_OUTPUT_VHDL")
-#define STR_CPP_CLI_SUPPORT QString::fromAscii("CPP_CLI_SUPPORT")
-#define STR_HIDE_SCOPE_NAMES QString::fromAscii("HIDE_SCOPE_NAMES")
-#define STR_EXTRACT_ALL QString::fromAscii("EXTRACT_ALL")
-#define STR_SOURCE_BROWSER QString::fromAscii("SOURCE_BROWSER")
-#define STR_GENERATE_HTML QString::fromAscii("GENERATE_HTML")
-#define STR_GENERATE_LATEX QString::fromAscii("GENERATE_LATEX")
-#define STR_GENERATE_MAN QString::fromAscii("GENERATE_MAN")
-#define STR_GENERATE_RTF QString::fromAscii("GENERATE_RTF")
-#define STR_GENERATE_XML QString::fromAscii("GENERATE_XML")
-#define STR_GENERATE_HTMLHELP QString::fromAscii("GENERATE_HTMLHELP")
-#define STR_GENERATE_TREEVIEW QString::fromAscii("GENERATE_TREEVIEW")
-#define STR_USE_PDFLATEX QString::fromAscii("USE_PDFLATEX")
-#define STR_PDF_HYPERLINKS QString::fromAscii("PDF_HYPERLINKS")
-#define STR_SEARCHENGINE QString::fromAscii("SEARCHENGINE")
-#define STR_HAVE_DOT QString::fromAscii("HAVE_DOT")
-#define STR_CLASS_DIAGRAMS QString::fromAscii("CLASS_DIAGRAMS")
-#define STR_CLASS_GRAPH QString::fromAscii("CLASS_GRAPH")
-#define STR_COLLABORATION_GRAPH QString::fromAscii("COLLABORATION_GRAPH")
-#define STR_GRAPHICAL_HIERARCHY QString::fromAscii("GRAPHICAL_HIERARCHY")
-#define STR_INCLUDE_GRAPH QString::fromAscii("INCLUDE_GRAPH")
-#define STR_INCLUDED_BY_GRAPH QString::fromAscii("INCLUDED_BY_GRAPH")
-#define STR_CALL_GRAPH QString::fromAscii("CALL_GRAPH")
-#define STR_CALLER_GRAPH QString::fromAscii("CALLER_GRAPH")
-#define STR_HTML_COLORSTYLE_HUE QString::fromAscii("HTML_COLORSTYLE_HUE")
-#define STR_HTML_COLORSTYLE_SAT QString::fromAscii("HTML_COLORSTYLE_SAT")
-#define STR_HTML_COLORSTYLE_GAMMA QString::fromAscii("HTML_COLORSTYLE_GAMMA")
+#define STR_PROJECT_NAME QString::fromLatin1("PROJECT_NAME")
+#define STR_PROJECT_LOGO QString::fromLatin1("PROJECT_LOGO")
+#define STR_PROJECT_BRIEF QString::fromLatin1("PROJECT_BRIEF")
+#define STR_INPUT QString::fromLatin1("INPUT")
+#define STR_OUTPUT_DIRECTORY QString::fromLatin1("OUTPUT_DIRECTORY")
+#define STR_PROJECT_NUMBER QString::fromLatin1("PROJECT_NUMBER")
+#define STR_RECURSIVE QString::fromLatin1("RECURSIVE")
+#define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromLatin1("OPTIMIZE_OUTPUT_FOR_C")
+#define STR_OPTIMIZE_OUTPUT_JAVA QString::fromLatin1("OPTIMIZE_OUTPUT_JAVA")
+#define STR_OPTIMIZE_FOR_FORTRAN QString::fromLatin1("OPTIMIZE_FOR_FORTRAN")
+#define STR_OPTIMIZE_OUTPUT_VHDL QString::fromLatin1("OPTIMIZE_OUTPUT_VHDL")
+#define STR_CPP_CLI_SUPPORT QString::fromLatin1("CPP_CLI_SUPPORT")
+#define STR_HIDE_SCOPE_NAMES QString::fromLatin1("HIDE_SCOPE_NAMES")
+#define STR_EXTRACT_ALL QString::fromLatin1("EXTRACT_ALL")
+#define STR_SOURCE_BROWSER QString::fromLatin1("SOURCE_BROWSER")
+#define STR_GENERATE_HTML QString::fromLatin1("GENERATE_HTML")
+#define STR_GENERATE_LATEX QString::fromLatin1("GENERATE_LATEX")
+#define STR_GENERATE_MAN QString::fromLatin1("GENERATE_MAN")
+#define STR_GENERATE_RTF QString::fromLatin1("GENERATE_RTF")
+#define STR_GENERATE_XML QString::fromLatin1("GENERATE_XML")
+#define STR_GENERATE_HTMLHELP QString::fromLatin1("GENERATE_HTMLHELP")
+#define STR_GENERATE_TREEVIEW QString::fromLatin1("GENERATE_TREEVIEW")
+#define STR_USE_PDFLATEX QString::fromLatin1("USE_PDFLATEX")
+#define STR_PDF_HYPERLINKS QString::fromLatin1("PDF_HYPERLINKS")
+#define STR_SEARCHENGINE QString::fromLatin1("SEARCHENGINE")
+#define STR_HAVE_DOT QString::fromLatin1("HAVE_DOT")
+#define STR_CLASS_DIAGRAMS QString::fromLatin1("CLASS_DIAGRAMS")
+#define STR_CLASS_GRAPH QString::fromLatin1("CLASS_GRAPH")
+#define STR_COLLABORATION_GRAPH QString::fromLatin1("COLLABORATION_GRAPH")
+#define STR_GRAPHICAL_HIERARCHY QString::fromLatin1("GRAPHICAL_HIERARCHY")
+#define STR_INCLUDE_GRAPH QString::fromLatin1("INCLUDE_GRAPH")
+#define STR_INCLUDED_BY_GRAPH QString::fromLatin1("INCLUDED_BY_GRAPH")
+#define STR_CALL_GRAPH QString::fromLatin1("CALL_GRAPH")
+#define STR_CALLER_GRAPH QString::fromLatin1("CALLER_GRAPH")
+#define STR_HTML_COLORSTYLE_HUE QString::fromLatin1("HTML_COLORSTYLE_HUE")
+#define STR_HTML_COLORSTYLE_SAT QString::fromLatin1("HTML_COLORSTYLE_SAT")
+#define STR_HTML_COLORSTYLE_GAMMA QString::fromLatin1("HTML_COLORSTYLE_GAMMA")
static bool g_optimizeMapping[6][6] =
{
@@ -76,7 +94,7 @@ static QString g_optimizeOptionNames[6] =
static bool stringVariantToBool(const QVariant &v)
{
QString s = v.toString().toLower();
- return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1");
+ return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
}
static bool getBoolOption(
@@ -111,7 +129,7 @@ static void updateBoolOption(
bool bOld = stringVariantToBool(option->value());
if (bOld!=bNew)
{
- option->value()=QString::fromAscii(bNew ? "true" : "false");
+ option->value()=QString::fromLatin1(bNew ? "true" : "false");
option->update();
}
}
@@ -124,7 +142,7 @@ static void updateIntOption(
int iOld = option->value().toInt();
if (iOld!=iNew)
{
- option->value()=QString::fromAscii("%1").arg(iNew);
+ option->value()=QString::fromLatin1("%1").arg(iNew);
option->update();
}
}
@@ -148,7 +166,7 @@ TuneColorDialog::TuneColorDialog(int hue,int sat,int gamma,QWidget *parent) : QD
{
setWindowTitle(tr("Tune the color of the HTML output"));
QGridLayout *layout = new QGridLayout(this);
- m_image = new QImage(QString::fromAscii(":/images/tunecolor.png"));
+ m_image = new QImage(QString::fromLatin1(":/images/tunecolor.png"));
m_imageLab = new QLabel;
updateImage(hue,sat,gamma);
layout->addWidget(new QLabel(tr("Example output: use the sliders on the right to adjust the color")),0,0);
@@ -519,7 +537,7 @@ Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(w
m_recursive = new QCheckBox(this);
m_recursive->setText(tr("Scan recursively"));
- m_recursive->setChecked(TRUE);
+ m_recursive->setChecked(true);
layout->addWidget(m_recursive);
//---------------------------------------------------
@@ -574,7 +592,7 @@ void Step1::selectProjectIcon()
QFile Fout(iconName);
if(!Fout.exists())
{
- m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");"));
+ m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
}
else
{
@@ -585,7 +603,7 @@ void Step1::selectProjectIcon()
}
else
{
- m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");"));
+ m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
}
}
}
@@ -604,7 +622,7 @@ void Step1::selectSourceDir()
}
if (dirName.isEmpty())
{
- dirName=QString::fromAscii(".");
+ dirName=QString::fromLatin1(".");
}
m_sourceDir->setText(dirName);
}
@@ -621,7 +639,7 @@ void Step1::selectDestinationDir()
}
if (dirName.isEmpty())
{
- dirName=QString::fromAscii(".");
+ dirName=QString::fromLatin1(".");
}
m_destDir->setText(dirName);
}
@@ -683,7 +701,7 @@ void Step1::init()
QFile Fout(iconName);
if(!Fout.exists())
{
- m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");"));
+ m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
}
else
{
@@ -694,7 +712,7 @@ void Step1::init()
}
else
{
- m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");"));
+ m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
}
}
}
@@ -1220,7 +1238,7 @@ Wizard::Wizard(const QHash<QString,Input*> &modelData, QWidget *parent) :
{
m_treeWidget = new QTreeWidget;
m_treeWidget->setColumnCount(1);
- m_treeWidget->setHeaderLabels(QStringList() << QString::fromAscii("Topics"));
+ m_treeWidget->setHeaderLabels(QStringList() << QString::fromLatin1("Topics"));
QList<QTreeWidgetItem*> items;
items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Project"))));
items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Mode"))));
diff --git a/cmake/run_translator.cmake b/cmake/run_translator.cmake
index 618bb82..d1b187c 100644
--- a/cmake/run_translator.cmake
+++ b/cmake/run_translator.cmake
@@ -1,4 +1,4 @@
-include(${SOURCE}/cmake/version.cmake)
+include(${TOP}/cmake/version.cmake)
find_program(PYTHON NAMES python)
execute_process(
COMMAND ${PYTHON} ${CMAKE_SOURCE_DIR}/translator.py
diff --git a/cmake/version.cmake b/cmake/version.cmake
index 48de7b2..b59aa29 100644
--- a/cmake/version.cmake
+++ b/cmake/version.cmake
@@ -1,2 +1,2 @@
-file (STRINGS "${SOURCE}/VERSION" VERSION)
+file (STRINGS "${TOP}/VERSION" VERSION)
set(ENV{VERSION} "${VERSION}")
diff --git a/doc/.gitignore b/doc/.gitignore
index d1d1371..751553b 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,2 +1 @@
*.bak
-mailto.txt
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index af557d8..709121e 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,88 +1,173 @@
+# vim:ts=4:sw=4:expandtab:autoindent:
+#
+# Copyright (C) 1997-2015 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.
+
if (build_doc)
+include (${TOP}/cmake/version.cmake)
+string(TIMESTAMP DATE "%d-%m-%Y")
+
+find_package(PythonInterp REQUIRED)
find_program(EPSTOPDF NAMES epstopdf )
-find_program(SED NAMES sed )
-find_program(MAKE NAMES make gmake nmake )
+find_program(PDFLATEX NAMES pdflatex )
+find_program(MAKEINDEX NAMES makeindex )
+
+if (doxygen_BINARY_DIR)
+ set(DOXYGEN_EXECUTABLE ${doxygen_BINARY_DIR}/bin/doxygen)
+else()
+ # when building only the doxygen_doc, from the doc/ directory, the
+ # doxygen project variables are unknown so look for doxygen in PATH
+ find_package(Doxygen)
+endif()
-file(GLOB DOC_FILES "*")
-file(GLOB LANG_FILES "${CMAKE_SOURCE_DIR}/src/translator_??.h")
+set(DOC_INSTALL_DIR "share/doc/packages/doxygen" CACHE STRING "Relative path where to install the documentation")
+set(EXAMPLE_DIR ${TOP}/examples)
+set(DOC_FILES
+ arch.doc
+ archoverview.eps
+ archoverview.gif
+ autolink.doc
+ changelog.doc
+ commands.doc
+ custcmd.doc
+ customize.doc
+ diagrams.doc
+ docblocks.doc
+ Doxyfile
+ doxygen_manual.css
+ doxygen_usage.doc
+ doxywizard_expert.png
+ doxywizard.gif
+ doxywizard_main.png
+ doxywizard_menu.png
+ doxywizard_page1.png
+ doxywizard_page2.png
+ doxywizard_page3.png
+ doxywizard_page4.png
+ doxywizard_usage.doc
+ external.doc
+ extsearch.doc
+ extsearch_flow.dot
+ extsearch_flow.eps
+ extsearch_flow.png
+ faq.doc
+ features.doc
+ formulas.doc
+ grouping.doc
+ htmlcmds.doc
+ index.doc
+ index.hhp.txt
+ infoflow.eps
+ infoflow.fig
+ infoflow.png
+ install.doc
+ install_prefix
+ lists.doc
+ markdown.doc
+ output.doc
+ perlmod.doc
+ perlmod_tree.doc
+ preprocessing.doc
+ searching.doc
+ starting.doc
+ trouble.doc
+ xmlcmds.doc
+ language.tpl
+ maintainers.txt
+ translator.py
+)
+file(GLOB LANG_FILES "${TOP}/src/translator_??.h")
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/man)
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src)
-file(COPY ${CMAKE_SOURCE_DIR}/src/translator.h DESTINATION ${PROJECT_BINARY_DIR}/src)
-file(COPY ${CMAKE_SOURCE_DIR}/src/translator_adapter.h DESTINATION ${PROJECT_BINARY_DIR}/src)
-file(COPY ${LANG_FILES} DESTINATION ${PROJECT_BINARY_DIR}/src)
-file(COPY ${CMAKE_SOURCE_DIR}/VERSION DESTINATION ${PROJECT_BINARY_DIR})
-
-# copy all doc files
-add_custom_target(copy_docs)
-foreach(doc_file ${DOC_FILES})
- add_custom_command(TARGET copy_docs PRE_BUILD
- COMMAND ${CMAKE_COMMAND} -E
- copy ${doc_file} ${DOXYDOCS})
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
+
+file(COPY ${TOP}/VERSION DESTINATION ${PROJECT_BINARY_DIR}/)
+file(COPY ${TOP}/src/translator.h DESTINATION ${PROJECT_BINARY_DIR}/src/)
+file(COPY ${TOP}/src/translator_adapter.h DESTINATION ${PROJECT_BINARY_DIR}/src/)
+file(COPY ${LANG_FILES} DESTINATION ${PROJECT_BINARY_DIR}/src/)
+file(COPY ${EXAMPLE_DIR} DESTINATION ${PROJECT_BINARY_DIR}/)
+
+foreach (f ${DOC_FILES})
+add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/${f}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/${f} ${PROJECT_BINARY_DIR}/doc/
+ DEPENDS ${CMAKE_SOURCE_DIR}/doc/${f}
+ )
+set_source_files_properties(${PROJECT_BINARY_DIR}/doc/${f} PROPERTIES GENERATED 1)
+list(APPEND OUT_DOC_FILES "${PROJECT_BINARY_DIR}/doc/${f}")
endforeach()
-add_custom_target(docs
- COMMENT "Generating documentation in ${DOXYDOCS}"
- COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen
- COMMAND ${CMAKE_COMMAND} -E remove_directory ../latex/refman.tex
- COMMAND ${CMAKE_COMMAND} -E copy doxygen_logo.gif ../html
- COMMAND ${CMAKE_COMMAND} -E copy doxygen_logo_low.gif ../html
- COMMAND ${CMAKE_COMMAND} -E copy Makefile.latex ../latex/Makefile
- COMMAND ${SED} -e "s/\$VERSION/${VERSION}/g" doxygen_manual.tex > ../latex/doxygen_manual.tex
- COMMAND ${SED} -e "s/\$VERSION/${VERSION}/g" doxygen.sty > ../latex/doxygen.sty
- COMMAND ${EPSTOPDF} doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf
- COMMAND ${MAKE} -C ../latex > latex_out.txt
- DEPENDS doxygen copy_docs ${PROJECT_BINARY_DIR}/doc/language.doc config.doc examples
- "${PROJECT_BINARY_DIR}/man/doxygen.1"
- "${PROJECT_BINARY_DIR}/man/doxywizard.1"
- "${PROJECT_BINARY_DIR}/man/doxysearch.1"
- "${PROJECT_BINARY_DIR}/man/doxyindexer.1"
- WORKING_DIRECTORY ${DOXYDOCS}
- VERBATIM
- )
-
-# language.doc
-add_custom_command(
- COMMAND ${CMAKE_COMMAND} "-DSOURCE=${CMAKE_SOURCE_DIR}" -P ${CMAKE_SOURCE_DIR}/cmake/run_translator.cmake
- DEPENDS ${DOXYDOCS}/translator.py
- DEPENDS maintainers.txt language.tpl translator.py
- OUTPUT ${PROJECT_BINARY_DIR}/doc/language.doc
- WORKING_DIRECTORY ${DOXYDOCS}
-)
-set_source_files_properties(${DOXYDOCS}/language.doc PROPERTIES GENERATED 1)
-
-# config.doc
-add_custom_command(
- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -doc ${CMAKE_SOURCE_DIR}/src/config.xml > config.doc
- DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
- OUTPUT config.doc
- WORKING_DIRECTORY ${DOXYDOCS}
-)
-set_source_files_properties(${DOXYDOCS}/config.doc PROPERTIES GENERATED 1)
-
-string(TIMESTAMP TODAY "%d-%m-%Y")
+configure_file(${CMAKE_SOURCE_DIR}/doc/manual.sty ${PROJECT_BINARY_DIR}/doc/manual.sty)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxygen_manual.tex ${PROJECT_BINARY_DIR}/doc/doxygen_manual.tex)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxygen.1 ${PROJECT_BINARY_DIR}/man/doxygen.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxywizard.1 ${PROJECT_BINARY_DIR}/man/doxywizard.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxysearch.1 ${PROJECT_BINARY_DIR}/man/doxysearch.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxyindexer.1 ${PROJECT_BINARY_DIR}/man/doxyindexer.1)
+# doc/language.doc (see tag Doxyfile:INPUT)
add_custom_command(
- COMMAND ${SED} -e "s/DATE/${TODAY}/g" -e "s/VERSION/${VERSION}/g" doxygen.1 > "${PROJECT_BINARY_DIR}/man/doxygen.1"
- OUTPUT "${PROJECT_BINARY_DIR}/man/doxygen.1"
+ COMMAND ${PYTHON_EXECUTABLE} translator.py
+ DEPENDS ${PROJECT_BINARY_DIR}/doc/maintainers.txt ${PROJECT_BINARY_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py
+ OUTPUT language.doc
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc
)
+set_source_files_properties(language.doc PROPERTIES GENERATED 1)
+# doc/config.doc (see tag Doxyfile:INPUT)
add_custom_command(
- COMMAND ${SED} -e "s/DATE/${TODAY}/g" -e "s/VERSION/${VERSION}/g" doxywizard.1 > "${PROJECT_BINARY_DIR}/man/doxywizard.1"
- OUTPUT "${PROJECT_BINARY_DIR}/man/doxywizard.1"
+ COMMAND ${PYTHON_EXECUTABLE} ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
+ DEPENDS ${TOP}/src/config.xml ${TOP}/src/configgen.py
+ OUTPUT config.doc
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
)
-
-add_custom_command(
- COMMAND ${SED} -e "s/DATE/${TODAY}/g" -e "s/VERSION/${VERSION}/g" doxysearch.1 > "${PROJECT_BINARY_DIR}/man/doxysearch.1"
- OUTPUT "${PROJECT_BINARY_DIR}/man/doxysearch.1"
+set_source_files_properties(config.doc PROPERTIES GENERATED 1)
+################################################################################
+add_custom_target(run_doxygen
+ COMMENT "Generating Latex and HTML documentation."
+ COMMAND ${DOXYGEN_EXECUTABLE}
+ DEPENDS ${PROJECT_BINARY_DIR}/doc/language.doc ${PROJECT_BINARY_DIR}/doc/config.doc ${OUT_DOC_FILES}
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
)
+if (doxygen_BINARY_DIR)
+ # building from project `doxygen'
+ add_dependencies(run_doxygen
+ doxygen
+ )
+endif()
-add_custom_command(
- COMMAND ${SED} -e "s/DATE/${TODAY}/g" -e "s/VERSION/${VERSION}/g" doxyindexer.1 > "${PROJECT_BINARY_DIR}/man/doxyindexer.1"
- OUTPUT "${PROJECT_BINARY_DIR}/man/doxyindexer.1"
+add_custom_target(doxygen_pdf
+ COMMENT "Generating Doxygen Manual PDF."
+ COMMAND ${CMAKE_COMMAND} -E remove_directory refman.tex
+ COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc/doxygen_manual.tex .
+ COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc/manual.sty .
+ COMMAND ${EPSTOPDF} ${CMAKE_SOURCE_DIR}/doc/doxygen_logo.eps --outfile=doxygen_logo.pdf
+ COMMAND ${PDFLATEX} doxygen_manual.tex
+ COMMAND ${MAKEINDEX} doxygen_manual.idx
+ COMMAND ${PDFLATEX} doxygen_manual.tex
+ DEPENDS run_doxygen
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/latex
)
-
+add_custom_target(docs
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/doxygen_logo.gif ${PROJECT_BINARY_DIR}/html/
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/doxygen_logo_low.gif ${PROJECT_BINARY_DIR}/html/
+ DEPENDS ${PROJECT_BINARY_DIR}/man/doxygen.1
+ ${PROJECT_BINARY_DIR}/man/doxywizard.1
+ ${PROJECT_BINARY_DIR}/man/doxysearch.1
+ ${PROJECT_BINARY_DIR}/man/doxyindexer.1
+ doxygen_pdf
+ VERBATIM
+ )
+
+################################################################################
install(FILES
"${PROJECT_BINARY_DIR}/man/doxygen.1"
"${PROJECT_BINARY_DIR}/man/doxywizard.1"
@@ -101,4 +186,4 @@ install(DIRECTORY
DESTINATION "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}"
)
-endif()
+endif(build_doc)
diff --git a/doc/Doxyfile b/doc/Doxyfile
index ab97227..9ea8553 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -54,3 +54,4 @@ HTML_STYLESHEET = doxygen_manual.css
ALIASES = LaTeX="\f$\mbox{\LaTeX}\f$"
ALIASES += TeX="\f$\mbox{\TeX}\f$"
LATEX_BATCHMODE = YES
+LATEX_EXTRA_STYLESHEET = manual.sty
diff --git a/doc/doxygen.1 b/doc/doxygen.1
index 6861c22..1deb7b6 100644
--- a/doc/doxygen.1
+++ b/doc/doxygen.1
@@ -1,4 +1,4 @@
-.TH DOXYGEN "1" "DATE" "doxygen VERSION" "User Commands"
+.TH DOXYGEN "1" "@DATE@" "doxygen @VERSION@" "User Commands"
.SH NAME
doxygen \- documentation system for various programming languages
.SH DESCRIPTION
@@ -45,6 +45,6 @@ doxygen \fB\-e\fR rtf extensionsFile
If \fB\-s\fR is specified the comments in the config file will be omitted.
If configName is omitted `Doxyfile' will be used as a default.
.SH AUTHOR
-Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2015
+Doxygen version @VERSION@, Copyright Dimitri van Heesch 1997-2015
.SH SEE ALSO
doxywizard(1).
diff --git a/doc/doxygen.sty b/doc/doxygen.sty
deleted file mode 100644
index 8013dad..0000000
--- a/doc/doxygen.sty
+++ /dev/null
@@ -1,486 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{doxygen}
-
-% Packages used by this style file
-\RequirePackage{alltt}
-\RequirePackage{array}
-\RequirePackage{calc}
-\RequirePackage{color}
-\RequirePackage{fancyhdr}
-\RequirePackage{longtable}
-\RequirePackage{verbatim}
-\RequirePackage{ifthen}
-\RequirePackage{xtab}
-\RequirePackage{multirow}
-\RequirePackage[table]{xcolor}
-
-% Use helvetica font instead of times roman
-\RequirePackage{helvet}
-\RequirePackage{sectsty}
-\RequirePackage{tocloft}
-\providecommand{\rmdefault}{phv}
-\providecommand{\bfdefault}{bc}
-
-
-% Setup fancy headings
-\pagestyle{fancyplain}
-\newcommand{\clearemptydoublepage}{%
- \newpage{\pagestyle{empty}\cleardoublepage}%
-}
-\renewcommand{\chaptermark}[1]{%
- \markboth{#1}{}%
-}
-\renewcommand{\sectionmark}[1]{%
- \markright{\thesection\ #1}%
-}
-\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
-\fancyhead[CE]{\fancyplain{}{}}
-\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
-\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
-\fancyhead[CO]{\fancyplain{}{}}
-\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
-\fancyfoot[LE]{\fancyplain{}{}}
-\fancyfoot[CE]{\fancyplain{}{}}
-\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[CO]{\fancyplain{}{}}
-\fancyfoot[RO]{\fancyplain{}{}}
-%---------- Internal commands used in this style file ----------------
-
-\newcommand\tabfill[1]{%
- \dimen@\linewidth%
- \advance\dimen@\@totalleftmargin%
- \advance\dimen@-\dimen\@curtab%
- \parbox[t]\dimen@{\raggedright #1\ifhmode\strut\fi}%
-}
-
-\newcommand{\ensurespace}[1]{%
- \begingroup
- \setlength{\dimen@}{#1}%
- \vskip\z@\@plus\dimen@
- \penalty -100\vskip\z@\@plus -\dimen@
- \vskip\dimen@
- \penalty 9999%
- \vskip -\dimen@
- \vskip\z@skip % hide the previous |\vskip| from |\addvspace|
- \endgroup
-}
-
-% Generic environment used by all paragraph-based environments defined
-% below. Note that the command \title{...} needs to be defined inside
-% those environments!
-\newenvironment{DoxyDesc}[1]{%
- \ensurespace{4\baselineskip}%
- \begin{list}{}%
- {%
- \settowidth{\labelwidth}{40pt}%
- \setlength{\leftmargin}{\labelwidth}%
- \setlength{\parsep}{0pt}%
- \setlength{\itemsep}{-4pt}%
- \renewcommand{\makelabel}{\entrylabel}%
- }%
- \item[#1]%
-}{%
- \end{list}%
-}
-
-%---------- Commands used by doxygen LaTeX output generator ----------
-
-% Used by <pre> ... </pre>
-\newenvironment{DoxyPre}{%
- \small%
- \begin{alltt}%
-}{%
- \end{alltt}%
- \normalsize%
-}
-
-% Used by @code ... @endcode
-\newenvironment{DoxyCode}{%
-
-
-\begin{scriptsize}\begin{alltt}%
-}{%
-\end{alltt}\end{scriptsize}%
-}
-
-% Used by @example, @include, @includelineno and @dontinclude
-\newenvironment{DoxyCodeInclude}{%
- \DoxyCode%
-}{%
- \endDoxyCode%
-}
-
-% Used by @verbatim ... @endverbatim
-\newenvironment{DoxyVerb}{%
- \footnotesize%
- \verbatim%
-}{%
- \endverbatim%
- \normalsize%
-}
-
-% Used by @verbinclude
-\newenvironment{DoxyVerbInclude}{%
- \DoxyVerb%
-}{%
- \endDoxyVerb%
-}
-
-% Used by numbered lists (using '-#' or <ol> ... </ol>)
-\newenvironment{DoxyEnumerate}{%
- \enumerate%
-}{%
- \endenumerate%
-}
-
-% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
-\newenvironment{DoxyItemize}{%
- \itemize%
-}{%
- \enditemize%
-}
-
-% Used by description lists (using <dl> ... </dl>)
-\newenvironment{DoxyDescription}{%
- \description%
-}{%
- \enddescription%
-}
-
-% Used by @image, @dotfile, and @dot ... @enddot
-% (only if caption is specified)
-\newenvironment{DoxyImage}{%
- \begin{figure}[H]%
- \begin{center}%
-}{%
- \end{center}%
- \end{figure}%
-}
-
-% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
-% (only if no caption is specified)
-\newenvironment{DoxyImageNoCaption}{%
-}{%
-}
-
-% Used by @attention
-\newenvironment{DoxyAttention}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @author and @authors
-\newenvironment{DoxyAuthor}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @date
-\newenvironment{DoxyDate}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @invariant
-\newenvironment{DoxyInvariant}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @note
-\newenvironment{DoxyNote}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @post
-\newenvironment{DoxyPostcond}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @pre
-\newenvironment{DoxyPrecond}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @copyright
-\newenvironment{DoxyCopyright}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @remark
-\newenvironment{DoxyRemark}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @return
-\newenvironment{DoxyReturn}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @since
-\newenvironment{DoxySince}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @see
-\newenvironment{DoxySeeAlso}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @version
-\newenvironment{DoxyVersion}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @warning
-\newenvironment{DoxyWarning}[1]{%
- \begin{DoxyDesc}{#1}%
-}{%
- \end{DoxyDesc}%
-}
-
-% Used by @internal
-\newenvironment{DoxyInternal}[1]{%
- \paragraph*{#1}%
-}{%
-}
-
-% Used by @par and @paragraph
-\newenvironment{DoxyParagraph}[1]{%
- \begin{list}{}%
- {%
- \settowidth{\labelwidth}{40pt}%
- \setlength{\leftmargin}{\labelwidth}%
- \setlength{\parsep}{0pt}%
- \setlength{\itemsep}{-4pt}%
- \renewcommand{\makelabel}{\entrylabel}%
- }%
- \item[#1]%
-}{%
- \end{list}%
-}
-
-% Used by parameter lists
-\newenvironment{DoxyParams}[2][]{%
- \begin{DoxyDesc}{#2}%
- \item[] \hspace{\fill} \vspace{-40pt}%
- \settowidth{\labelwidth}{40pt}%
- \setlength{\LTleft}{0pt}%
- \setlength{\tabcolsep}{0.01\textwidth}%
- \ifthenelse{\equal{#1}{}}%
- {\begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.815\textwidth}|}}%
- {\ifthenelse{\equal{#1}{1}}%
- {\begin{longtable}{|>{\centering}p{0.10\textwidth}|%
- >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.685\textwidth}|}}%
- {\begin{longtable}{|>{\centering}p{0.10\textwidth}|%
- >{\centering\hspace{0pt}}p{0.15\textwidth}|%
- >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.515\textwidth}|}}%
- }\hline%
-}{%
- \end{longtable}%
- \end{DoxyDesc}%
-}
-
-% Used for fields of simple structs
-\newenvironment{DoxyFields}[1]{%
- \begin{DoxyDesc}{#1}%
- \item[] \hspace{\fill} \vspace{-40pt}%
- \settowidth{\labelwidth}{40pt}%
- \setlength{\LTleft}{0pt}%
- \setlength{\tabcolsep}{0.01\textwidth}%
- \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.15\textwidth}|%
- p{0.635\textwidth}|}%
- \hline%
-}{%
- \end{longtable}%
- \end{DoxyDesc}%
-}
-
-% is used for parameters within a detailed function description
-\newenvironment{DoxyParamCaption}{%
- \renewcommand{\item}[2][]{##1 {\em ##2}}%
- }{%
-}
-
-% Used by return value lists
-\newenvironment{DoxyRetVals}[1]{%
- \begin{DoxyDesc}{#1}%
- \begin{description}%
- \item[] \hspace{\fill} \vspace{-25pt}%
- \setlength{\tabcolsep}{0.01\textwidth}%
- \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.77\textwidth}|}%
- \hline%
-}{%
- \end{longtable}%
- \end{description}%
- \end{DoxyDesc}%
-}
-
-% Used by exception lists
-\newenvironment{DoxyExceptions}[1]{%
- \begin{DoxyDesc}{#1}%
- \begin{description}%
- \item[] \hspace{\fill} \vspace{-25pt}%
- \definecolor{tableShade}{HTML}{F8F8F8}%
- \rowcolors{1}{white}{tableShade}%
- \arrayrulecolor{gray}%
- \setlength{\tabcolsep}{0.01\textwidth}%
- \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.77\textwidth}|}%
- \hline%
-}{%
- \end{longtable}%
- \end{description}%
- \end{DoxyDesc}%
-}
-
-% Used by template parameter lists
-\newenvironment{DoxyTemplParams}[1]{%
- \begin{DoxyDesc}{#1}%
- \begin{description}%
- \item[] \hspace{\fill} \vspace{-25pt}%
- \definecolor{tableShade}{HTML}{F8F8F8}%
- \rowcolors{1}{white}{tableShade}%
- \arrayrulecolor{gray}%
- \setlength{\tabcolsep}{0.01\textwidth}%
- \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.77\textwidth}|}%
- \hline%
-}{%
- \end{longtable}%
- \end{description}%
- \end{DoxyDesc}%
-}
-
-\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
-\newcommand{\lcurly}{\{}
-\newcommand{\rcurly}{\}}
-\newenvironment{DoxyCompactList}
-{\begin{list}{}{
- \setlength{\leftmargin}{0.5cm}
- \setlength{\itemsep}{0pt}
- \setlength{\parsep}{0pt}
- \setlength{\topsep}{0pt}
- \renewcommand{\makelabel}{\hfill}}}
-{\end{list}}
-\newenvironment{DoxyCompactItemize}
-{
- \begin{itemize}
- \setlength{\itemsep}{-3pt}
- \setlength{\parsep}{0pt}
- \setlength{\topsep}{0pt}
- \setlength{\partopsep}{0pt}
-}
-{\end{itemize}}
-\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
-\newlength{\tmplength}
-\newenvironment{TabularC}[1]
-{
-\setlength{\tmplength}
- {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
- \par\begin{xtabular*}{\linewidth}
- {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
-}
-{\end{xtabular*}\par}
-\newcommand{\entrylabel}[1]{
- {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{%
- \usefont{OT1}{phv}{bc}{n}\color{darkgray}#1}\vspace{1.5\baselineskip}}}}
-\newenvironment{Desc}
-{\begin{list}{}
- {
- \settowidth{\labelwidth}{40pt}
- \setlength{\leftmargin}{\labelwidth}
- \setlength{\parsep}{0pt}
- \setlength{\itemsep}{-4pt}
- \renewcommand{\makelabel}{\entrylabel}
- }
-}
-{\end{list}}
-\newsavebox{\xrefbox}
-\newlength{\xreflength}
-\newcommand{\xreflabel}[1]{%
- \sbox{\xrefbox}{#1}%
- \setlength{\xreflength}{\wd\xrefbox}%
- \ifthenelse{\xreflength>\labelwidth}{%
- \begin{minipage}{\textwidth}%
- \setlength{\parindent}{0pt}%
- \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
- \end{minipage}%
- }{%
- \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
- }}%
-\newenvironment{DoxyRefList}{%
- \begin{list}{}{%
- \setlength{\labelwidth}{10pt}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \renewcommand{\makelabel}{\xreflabel}%
- }%
- }%
-{\end{list}}
-\newenvironment{DoxyRefDesc}[1]
-{\begin{list}{}{%
- \renewcommand\makelabel[1]{\textbf{##1}}
- \settowidth\labelwidth{\makelabel{#1}}
- \setlength\leftmargin{\labelwidth+\labelsep}}}
-{\end{list}}
-\newenvironment{Indent}
- {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
- \item[]\ignorespaces}
- {\unskip\end{list}}
-\setlength{\parindent}{0cm}
-\setlength{\parskip}{0.2cm}
-\addtocounter{secnumdepth}{2}
-\usepackage[T1]{fontenc}
-\makeatletter
-\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
- {-1.0ex}%
- {1.0ex}%
- {\usefont{OT1}{phv}{bc}{n}\color{darkgray}}}
-\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{0ex}%
- {-1.0ex}%
- {1.0ex}%
- {\usefont{OT1}{phv}{bc}{n}\color{darkgray}}}
-\makeatother
-\allsectionsfont{\usefont{OT1}{phv}{bc}{n}\selectfont\color{darkgray}}
-\stepcounter{secnumdepth}
-\stepcounter{tocdepth}
-\definecolor{comment}{rgb}{0.5,0.0,0.0}
-\definecolor{keyword}{rgb}{0.0,0.5,0.0}
-\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
-\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
-\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
-\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
-\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
-\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
-\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
-\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
-\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index c97c5f0..84a792d 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -12,6 +12,7 @@
% Documents produced by Doxygen are derivative works derived from the
% input used in their production; they are not affected by this license.
+\batchmode
\documentclass{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{makeidx}
@@ -53,6 +54,7 @@
\usepackage[titles]{tocloft}
\usepackage{amssymb}
\usepackage{doxygen}
+\usepackage{manual}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
\makeindex
@@ -71,7 +73,7 @@
\begin{titlepage}
\includegraphics[width=\textwidth]{doxygen_logo}
\begin{center}
-Manual for version $VERSION\\[2ex]
+Manual for version @VERSION@\\[2ex]
Written by Dimitri van Heesch\\[2ex]
\copyright 1997-\thisyear
\end{center}
diff --git a/doc/doxyindexer.1 b/doc/doxyindexer.1
index 7b7a298..ae4b282 100644
--- a/doc/doxyindexer.1
+++ b/doc/doxyindexer.1
@@ -1,4 +1,4 @@
-.TH DOXYINDEXER "1" "DATE" "doxyindexer VERSION" "User Commands"
+.TH DOXYINDEXER "1" "@DATE@" "doxyindexer @VERSION@" "User Commands"
.SH NAME
doxyindexer \- creates a search index from raw search data
.SH SYNOPSIS
diff --git a/doc/doxysearch.1 b/doc/doxysearch.1
index da9ae05..a00124f 100644
--- a/doc/doxysearch.1
+++ b/doc/doxysearch.1
@@ -1,4 +1,4 @@
-.TH DOXYSEARCH "1" "DATE" "doxysearch.cgi VERSION" "User Commands"
+.TH DOXYSEARCH "1" "@DATE@" "doxysearch.cgi @VERSION@" "User Commands"
.SH NAME
doxysearch.cgi \- search engine used for searching in doxygen documentation.
.SH SYNOPSIS
diff --git a/doc/doxywizard.1 b/doc/doxywizard.1
index e3f23c0..9f57701 100644
--- a/doc/doxywizard.1
+++ b/doc/doxywizard.1
@@ -1,4 +1,4 @@
-.TH DOXYWIZARD "1" "DATE" "doxywizard VERSION" "User Commands"
+.TH DOXYWIZARD "1" "@DATE@" "doxywizard @VERSION@" "User Commands"
.SH NAME
doxywizard \- a tool to configure and run doxygen on your source files
.SH SYNOPSIS
diff --git a/doc/maintainers.txt b/doc/maintainers.txt
index 30afcd5..2c11a17 100644
--- a/doc/maintainers.txt
+++ b/doc/maintainers.txt
@@ -81,7 +81,7 @@ TranslatorIndonesian
Hendy Irawan: ceefour at gauldong dot net
TranslatorItalian
-Alessandro Falappa: alessandro at falappa dot net
+Alessandro Falappa: alex dot falappa at gmail dot com
Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk
TranslatorJapanese
diff --git a/doc/manual.sty b/doc/manual.sty
new file mode 100644
index 0000000..80fbda6
--- /dev/null
+++ b/doc/manual.sty
@@ -0,0 +1,33 @@
+% Use helvetica font instead of times roman
+\RequirePackage{helvet}
+\RequirePackage{sectsty}
+\RequirePackage{tocloft}
+\providecommand{\rmdefault}{phv}
+\providecommand{\bfdefault}{bc}
+\usepackage[T1]{fontenc}
+
+% Setup fancy headings
+\RequirePackage{fancyhdr}
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{%
+ \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+\renewcommand{\chaptermark}[1]{%
+ \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+ \markright{\thesection\ #1}%
+}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+
diff --git a/qtools/qcstring.cpp b/qtools/qcstring.cpp
index 45ccef9..35b9bb8 100644
--- a/qtools/qcstring.cpp
+++ b/qtools/qcstring.cpp
@@ -460,6 +460,12 @@ ulong QCString::toULong(bool *ok) const
return s.toULong(ok);
}
+uint64 QCString::toUInt64(bool *ok) const
+{
+ QString s(data());
+ return s.toUInt64(ok);
+}
+
QCString &QCString::setNum(short n)
{
return setNum((long)n);
diff --git a/qtools/qcstring.h b/qtools/qcstring.h
index d8ce074..4f15b18 100644
--- a/qtools/qcstring.h
+++ b/qtools/qcstring.h
@@ -288,6 +288,7 @@ public:
uint toUInt( bool *ok=0 ) const;
long toLong( bool *ok=0 ) const;
ulong toULong( bool *ok=0 ) const;
+ uint64 toUInt64( bool *ok=0 ) const;
QCString &setNum(short n);
QCString &setNum(ushort n);
QCString &setNum(int n);
diff --git a/qtools/qstring.cpp b/qtools/qstring.cpp
index f51c0d4..458fd53 100644
--- a/qtools/qstring.cpp
+++ b/qtools/qstring.cpp
@@ -13935,6 +13935,60 @@ bye:
}
/*!
+ Returns the string converted to an <code>unsigned long</code>
+ value.
+
+ If \a ok is non-null, \a *ok is set to TRUE if there are no
+ conceivable errors, and FALSE if the string is not a number at all,
+ or if it has trailing garbage.
+*/
+
+uint64 QString::toUInt64( bool *ok, int base ) const
+{
+ const QChar *p = unicode();
+ uint64 val=0;
+ int l = length();
+ const uint64 max_mult = 1844674407370955161ULL; // ULLONG_MAX/10, rounded down
+ bool is_ok = FALSE;
+ if ( !p )
+ goto bye;
+ while ( l && p->isSpace() ) // skip leading space
+ l--,p++;
+ if ( *p == '+' )
+ l--,p++;
+
+ // NOTE: toULong() code is similar
+ if ( !l || !ok_in_base(*p,base) )
+ goto bye;
+ while ( l && ok_in_base(*p,base) ) {
+ l--;
+ uint dv;
+ if ( p->isDigit() ) {
+ dv = p->digitValue();
+ } else {
+ if ( *p >= 'a' && *p <= 'z' )
+ dv = *p - 'a' + 10;
+ else
+ dv = *p - 'A' + 10;
+ }
+ if ( val > max_mult || (val == max_mult && dv > (ULLONG_MAX%base)) )
+ goto bye;
+ val = base*val + dv;
+ p++;
+ }
+
+ while ( l && p->isSpace() ) // skip trailing space
+ l--,p++;
+ if ( !l )
+ is_ok = TRUE;
+bye:
+ if ( ok )
+ *ok = is_ok;
+ return is_ok ? val : 0;
+}
+
+
+/*!
Returns the string converted to a <code>short</code> value.
If \a ok is non-null, \a *ok is set to TRUE if there are no
diff --git a/qtools/qstring.h b/qtools/qstring.h
index a64fabf..df3873d 100644
--- a/qtools/qstring.h
+++ b/qtools/qstring.h
@@ -463,6 +463,7 @@ public:
uint toUInt( bool *ok=0, int base=10 ) const;
long toLong( bool *ok=0, int base=10 ) const;
ulong toULong( bool *ok=0, int base=10 ) const;
+ uint64 toUInt64( bool *ok=0, int base=10 ) const;
float toFloat( bool *ok=0 ) const;
double toDouble( bool *ok=0 ) const;
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 155bf77..52755ea 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -114,7 +114,7 @@ add_library(doxycfg
portable_c.c
)
-add_library(_doxygen
+add_library(libdoxygen
# custom generated files
${GENERATED_SRC}/lang_cfg.h
${GENERATED_SRC}/settings.h
@@ -226,7 +226,7 @@ add_library(_doxygen
add_executable(doxygen main.cpp)
target_link_libraries(doxygen
- _doxygen
+ libdoxygen
doxycfg
qtools
md5
diff --git a/src/cite.cpp b/src/cite.cpp
index 2ea6300..3125f35 100644
--- a/src/cite.cpp
+++ b/src/cite.cpp
@@ -226,13 +226,13 @@ void CiteDict::generatePage() const
else if (insideBib) doc+=line+"\n";
int i;
// determine text to use at the location of the @cite command
- if (insideBib && (i=line.find("<a name=\"CITEREF_"))!=-1)
+ if (insideBib && (i=line.find("name=\"CITEREF_"))!=-1)
{
int j=line.find("\">[");
int k=line.find("]</a>");
if (j!=-1 && k!=-1)
{
- QCString label = line.mid(i+17,j-i-17);
+ QCString label = line.mid(i+14,j-i-14);
QCString number = line.mid(j+2,k-j-1);
CiteInfo *ci = m_entries.find(label);
//printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci);
diff --git a/src/commentscan.l b/src/commentscan.l
index 3546277..406d966 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -920,7 +920,7 @@ FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+@&#]
FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]*"\"")
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
CITEID {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
diff --git a/src/docparser.h b/src/docparser.h
index 1abb687..4984921 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -1303,8 +1303,18 @@ class DocHtmlRow : public CompAccept<DocHtmlRow>, public DocNode
const HtmlAttribList &attribs() const { return m_attribs; }
int parse();
int parseXml(bool header);
- bool isHeading() const { return m_children.count()>0 &&
- ((DocHtmlCell*)m_children.getFirst())->isHeading();
+ bool isHeading() const { // a row is a table heading if all cells are marked as such
+ bool heading=TRUE;
+ QListIterator<DocNode> it(m_children);
+ DocNode *n;
+ for (;(n=it.current());++it)
+ {
+ if (n->kind()==Kind_HtmlCell)
+ {
+ heading = heading && ((DocHtmlCell*)n)->isHeading();
+ }
+ }
+ return m_children.count()>0 && heading;
}
void setVisibleCells(int n) { m_visibleCells = n; }
int visibleCells() const { return m_visibleCells; }
@@ -1332,6 +1342,11 @@ class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
int parseXml();
uint numColumns() const { return m_numCols; }
void accept(DocVisitor *v);
+ DocHtmlRow *firstRow() {
+ DocNode *n = m_children.getFirst();
+ if (n && n->kind()==Kind_HtmlRow) return (DocHtmlRow*)n;
+ return 0;
+ }
private:
void computeTableGrid();
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index 31d583c..efc058a 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -334,7 +334,7 @@ BLANK [ \t\r]
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
PHPTYPE [\\:a-z_A-Z0-9\x80-\xFF\-]+
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
CITEID {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
MAILADR ("mailto:")?[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 37c2130..b9e5839 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -173,7 +173,7 @@ LatexDocVisitor::LatexDocVisitor(FTextStream &t,CodeOutputInterface &ci,
: DocVisitor(DocVisitor_Latex), m_t(t), m_ci(ci), m_insidePre(FALSE),
m_insideItem(FALSE), m_hide(FALSE), m_insideTabbing(insideTabbing),
m_insideTable(FALSE), m_langExt(langExt), m_currentColumn(0),
- m_inRowspan(FALSE), m_inColspan(FALSE)
+ m_inRowspan(FALSE), m_inColspan(FALSE), m_firstRow(FALSE)
{
m_rowSpans.setAutoDelete(TRUE);
}
@@ -913,6 +913,17 @@ void LatexDocVisitor::visitPre(DocHtmlTable *t)
m_t << "\\begin{" << getTableName(t->parent()) << "}{" << t->numColumns() << "}\n";
m_numCols = t->numColumns();
m_t << "\\hline\n";
+
+ // check if first row is a heading and then render the row already here
+ // and end it with \endfirsthead (triggered via m_firstRow==TRUE)
+ // then repeat the row as normal and end it with \endhead (m_firstRow==FALSE)
+ DocHtmlRow *firstRow = t->firstRow();
+ if (firstRow && firstRow->isHeading())
+ {
+ m_firstRow=TRUE;
+ firstRow->accept(this);
+ m_firstRow=FALSE;
+ }
}
void LatexDocVisitor::visitPost(DocHtmlTable *t)
@@ -944,7 +955,7 @@ void LatexDocVisitor::visitPost(DocHtmlCaption *)
void LatexDocVisitor::visitPre(DocHtmlRow *r)
{
m_currentColumn = 0;
- if (r->isHeading()) m_t << "\\rowcolor{lightgray}";
+ if (r->isHeading()) m_t << "\\rowcolor{\\tableheadbgcolor}";
}
void LatexDocVisitor::visitPost(DocHtmlRow *row)
@@ -1011,6 +1022,19 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
}
m_t << "\n";
+
+ if (row->isHeading() && row->rowIndex()==1)
+ {
+ if (m_firstRow)
+ {
+ m_t << "\\endfirsthead" << endl;
+ m_t << "\\hline" << endl;
+ }
+ else
+ {
+ m_t << "\\endhead" << endl;
+ }
+ }
}
void LatexDocVisitor::visitPre(DocHtmlCell *c)
@@ -1076,7 +1100,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
<< m_numCols << "-\\arrayrulewidth*"
<< row->visibleCells() << ")*"
<< cs <<"/"<< m_numCols << "}|}{";
- if (c->isHeading()) m_t << "\\cellcolor{lightgray}";
+ if (c->isHeading()) m_t << "\\cellcolor{\\tableheadbgcolor}";
}
int rs = c->rowSpan();
if (rs>0)
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index d3aeaea..e36e56c 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -199,6 +199,7 @@ class LatexDocVisitor : public DocVisitor
int m_currentColumn;
bool m_inRowspan;
bool m_inColspan;
+ bool m_firstRow;
};
#endif
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 042dd7c..30e28ec 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -1422,6 +1422,10 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
const char *anchor, const char *,
const char *)
{
+}
+
+void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
+{
static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
if (usePDFLatex && pdfHyperlinks)
@@ -1431,10 +1435,6 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
if (anchor) t << "_" << anchor;
t << "}{}";
}
-}
-
-void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
-{
t << "\\label{";
if (fName) t << stripPath(fName);
if (anchor) t << "_" << anchor;
diff --git a/src/translator_it.h b/src/translator_it.h
index c52aa50..d27c9dd 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -19,13 +19,17 @@
*
* Revision history
*
+ * 2015/07: updated translation of new items used since version 1.8.2 and 1.8.4
+ * corrected a typo
+ * updated translator mail address
* 2012/04: updated translation of new items used since version 1.7.5 and 1.8.0
* 2010/08: updated translation of new items used since version 1.6.0 and 1.6.3
* completely reviewed the translation in the trLegendDocs() function
* corrected some typos all around
* reviewed some translations all around
* 2007/11: updated translation of new items used since version 1.5.4
- * 2007/10: Included corrections provided by Arialdo Martini <arialdomartini@bebox.it>, updated some strings marked with 'translate me' comment
+ * 2007/10: Included corrections provided by Arialdo Martini <arialdomartini@bebox.it>
+ * updated some strings marked with 'translate me' comment
* 2006/10: made class to derive directly from Translator class (reported in Petr Prikryl October 9 translator report)
* 2006/06: updated translation of new items used since version 1.4.6
* 2006/05: translated new items used since version 1.4.6
@@ -79,13 +83,13 @@
* tecnica (ad es. "lista dei file" e non "lista dei files")
*
* Se avete suggerimenti sulla traduzione di alcuni termini o volete segnalare
- * eventuali sviste potete scrivermi all'indirizzo: alessandro@falappa.net
+ * eventuali sviste potete scrivermi all'indirizzo: alex.falappa@gmail.com
*/
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
-class TranslatorItalian : public TranslatorAdapter_1_8_2
+class TranslatorItalian : public Translator
{
public:
@@ -1832,7 +1836,7 @@ class TranslatorItalian : public TranslatorAdapter_1_8_2
/*! Used file list for a Java enum */
virtual QCString trEnumGeneratedFromFiles(bool single)
- { QCString result = "La documentazione per questo tipo enumerato è stata generata";
+ { QCString result = "La documentazione per questo tipo enumerato è stata generata a partire";
if (!single) result += " dai seguenti";
else result += " dal seguente";
result+=" file:";
@@ -1853,6 +1857,127 @@ class TranslatorItalian : public TranslatorAdapter_1_8_2
virtual QCString trAdditionalInheritedMembers()
{ return "Altri membri ereditati"; }
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.2
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a tooltip for the toggle button that appears in the
+ * navigation tree in the HTML output when GENERATE_TREEVIEW is
+ * enabled. This tooltip explains the meaning of the button.
+ */
+ virtual QCString trPanelSynchronisationTooltip(bool enable)
+ {
+ QCString opt = enable ? "abilitare" : "disabilitare";
+ return "cliccare per "+opt+" la sincronizzazione del pannello";
+ }
+
+ /*! Used in a method of an Objective-C class that is declared in a
+ * a category. Note that the @1 marker is required and is replaced
+ * by a link.
+ */
+ virtual QCString trProvidedByCategory()
+ {
+ return "Fornito dalla categoria @1.";
+ }
+
+ /*! Used in a method of an Objective-C category that extends a class.
+ * Note that the @1 marker is required and is replaced by a link to
+ * the class method.
+ */
+ virtual QCString trExtendsClass()
+ {
+ return "Estende la classe @1.";
+ }
+
+ /*! Used as the header of a list of class methods in Objective-C.
+ * These are similar to static public member functions in C++.
+ */
+ virtual QCString trClassMethods()
+ {
+ return "Metodi della classe";
+ }
+
+ /*! Used as the header of a list of instance methods in Objective-C.
+ * These are similar to public member functions in C++.
+ */
+ virtual QCString trInstanceMethods()
+ {
+ return "Metodi di instanza";
+ }
+
+ /*! Used as the header of the member functions of an Objective-C class.
+ */
+ virtual QCString trMethodDocumentation()
+ {
+ return "Documentazione dei metodi";
+ }
+
+ /*! Used as the title of the design overview picture created for the
+ * VHDL output.
+ */
+ virtual QCString trDesignOverview()
+ {
+ return "Panoramica del progetto";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.4
+//////////////////////////////////////////////////////////////////////////
+
+ /** old style UNO IDL services: implemented interfaces */
+ virtual QCString trInterfaces()
+ { return "Interfacce esportate"; }
+
+ /** old style UNO IDL services: inherited services */
+ virtual QCString trServices()
+ { return "Servizi inclusi"; }
+
+ /** UNO IDL constant groups */
+ virtual QCString trConstantGroups()
+ { return "Gruppi di costanti"; }
+
+ /** UNO IDL constant groups */
+ virtual QCString trConstantGroupReference(const char *namespaceName)
+ {
+ QCString result="Riferimenti per il gruppo di costanti ";
+ result+=namespaceName;
+ return result;
+ }
+ /** UNO IDL service page title */
+ virtual QCString trServiceReference(const char *sName)
+ {
+ QCString result=(QCString)"Riferimenti per il servizio ";
+ result+=sName;
+ return result;
+ }
+ /** UNO IDL singleton page title */
+ virtual QCString trSingletonReference(const char *sName)
+ {
+ QCString result=(QCString)"Riferimenti per il singleton ";
+ result+=sName;
+ return result;
+ }
+ /** UNO IDL service page */
+ virtual QCString trServiceGeneratedFromFiles(bool single)
+ {
+ // single is true implies a single file
+ QCString result=(QCString)"La documentazione per questo servizio "
+ "è stata generata a partire ";
+ if (single) result+="dal seguente file:"; else result+="dai seguenti file:";
+ return result;
+ }
+ /** UNO IDL singleton page */
+ virtual QCString trSingletonGeneratedFromFiles(bool single)
+ {
+ // single is true implies a single file
+ QCString result=(QCString)"La documentazione per questo singleton "
+ "è stata generata a partire ";
+ if (single) result+="dal seguente file:"; else result+="dai seguenti file:";
+ return result;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+
};
#endif
diff --git a/src/util.cpp b/src/util.cpp
index 3ee7ae5..db6a19c 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -18,6 +18,7 @@
#include <ctype.h>
#include <errno.h>
#include <math.h>
+#include <limits.h>
#include "md5.h"
@@ -2472,6 +2473,35 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
QCString dateToString(bool includeTime)
{
QDateTime current = QDateTime::currentDateTime();
+ QCString sourceDateEpoch = portable_getenv("SOURCE_DATE_EPOCH");
+ if (!sourceDateEpoch.isEmpty())
+ {
+ bool ok;
+ uint64 epoch = sourceDateEpoch.toUInt64(&ok);
+ if (!ok)
+ {
+ static bool warnedOnce=FALSE;
+ if (!warnedOnce)
+ {
+ warn_uncond("Environment variable SOURCE_DATE_EPOCH does not contain a valid number; value is '%s'\n",
+ sourceDateEpoch.data());
+ warnedOnce=TRUE;
+ }
+ }
+ else if (epoch>UINT_MAX)
+ {
+ static bool warnedOnce=FALSE;
+ if (!warnedOnce)
+ {
+ warn_uncond("Environment variable SOURCE_DATA_EPOCH must have a value smaller than or equal to %llu; actual value %llu\n",UINT_MAX,epoch);
+ warnedOnce=TRUE;
+ }
+ }
+ else // all ok, replace current time with epoch value
+ {
+ current.setTime_t((ulong)epoch); // TODO: add support for 64bit epoch value
+ }
+ }
return theTranslator->trDateTime(current.date().year(),
current.date().month(),
current.date().day(),
@@ -6461,7 +6491,6 @@ void filterLatexString(FTextStream &t,const char *str,
bool insideTabbing,bool insidePre,bool insideItem)
{
if (str==0) return;
- //printf("filterLatexString(%s)\n",str);
//if (strlen(str)<2) stackTrace();
const unsigned char *p=(const unsigned char *)str;
const unsigned char *q;
@@ -6555,7 +6584,7 @@ void filterLatexString(FTextStream &t,const char *str,
default:
//if (!insideTabbing && forceBreaks && c!=' ' && *p!=' ')
if (!insideTabbing &&
- ((c>='A' && c<='Z' && pc!=' ' && pc!='\0') || (c==':' && pc!=':') || (pc=='.' && isId(c)))
+ ((c>='A' && c<='Z' && pc!=' ' && pc!='\0' && *p) || (c==':' && pc!=':') || (pc=='.' && isId(c)))
)
{
t << "\\+";
diff --git a/templates/latex/doxygen.sty b/templates/latex/doxygen.sty
index acd68e4..66ffca3 100644
--- a/templates/latex/doxygen.sty
+++ b/templates/latex/doxygen.sty
@@ -9,7 +9,8 @@
\RequirePackage{ifthen}
\RequirePackage{verbatim}
\RequirePackage[table]{xcolor}
-\RequirePackage{xtab}
+\RequirePackage{longtable}
+\RequirePackage{tabu}
%---------- Internal commands used in this style file ----------------
@@ -267,46 +268,38 @@
% Used by parameter lists
\newenvironment{DoxyParams}[2][]{%
+ \tabulinesep=1mm%
\par%
- \tabletail{\hline}%
- \tablelasttail{\hline}%
- \tablefirsthead{}%
- \tablehead{}%
\ifthenelse{\equal{#1}{}}%
- {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
- \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.805\textwidth}|}}%
+ {\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}}% name + description
{\ifthenelse{\equal{#1}{1}}%
- {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
- \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
- >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.678\textwidth}|}}%
- {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
- \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
- >{\centering\hspace{0pt}}p{0.15\textwidth}|%
- >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.501\textwidth}|}}%
- }\hline%
-}{%
- \end{xtabular}%
- \tablefirsthead{}%
+ {\begin{longtabu} spread 0pt [l]{|X[-1,c]|X[-1,r]|X[-1,l]|}}% in/out + name + desc
+ {\begin{longtabu} spread 0pt [l]{|X[-1,c]|X[-1,c]|X[-1,r]|X[-1,l]|}}% in/out + type + name + desc
+ }
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
\vspace{6pt}%
}
% Used for fields of simple structs
\newenvironment{DoxyFields}[1]{%
+ \tabulinesep=1mm%
\par%
- \tabletail{\hline}%
- \tablelasttail{\hline}%
- \tablehead{}%
- \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
- \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
- p{0.15\textwidth}|%
- p{0.63\textwidth}|}%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
+ \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
+ \endfirsthead%
+ \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
}{%
- \end{xtabular}%
- \tablefirsthead{}%
+ \end{longtabu}%
\vspace{6pt}%
}
@@ -318,49 +311,49 @@
% Used by return value lists
\newenvironment{DoxyRetVals}[1]{%
+ \tabulinesep=1mm%
\par%
- \tabletail{\hline}%
- \tablelasttail{\hline}%
- \tablehead{}%
- \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
- \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.705\textwidth}|}%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
+ \endhead%
}{%
- \end{xtabular}%
- \tablefirsthead{}%
+ \end{longtabu}%
\vspace{6pt}%
}
% Used by exception lists
\newenvironment{DoxyExceptions}[1]{%
+ \tabulinesep=1mm%
\par%
- \tabletail{\hline}%
- \tablelasttail{\hline}%
- \tablehead{}%
- \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
- \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.705\textwidth}|}%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
}{%
- \end{xtabular}%
- \tablefirsthead{}%
+ \end{longtabu}%
\vspace{6pt}%
}
% Used by template parameter lists
\newenvironment{DoxyTemplParams}[1]{%
+ \tabulinesep=1mm%
\par%
- \tabletail{\hline}%
- \tablelasttail{\hline}%
- \tablehead{}%
- \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
- \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
- p{0.705\textwidth}|}%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
+ \endhead%
}{%
- \end{xtabular}%
- \tablefirsthead{}%
+ \end{longtabu}%
\vspace{6pt}%
}
@@ -426,25 +419,14 @@
% Used by tables
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
-\newlength{\tmplength}%
\newenvironment{TabularC}[1]%
-{%
-\setlength{\tmplength}%
- {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
- \par\begin{xtabular*}{\linewidth}%
- {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
-}%
-{\end{xtabular*}\par}%
-
-% Used by nested tables
+{\tabulinesep=1mm
+\begin{longtabu} spread 0pt [l]{*#1{|X[-1]}|}}%
+{\end{longtabu}\par}%
+
\newenvironment{TabularNC}[1]%
-{%
-\setlength{\tmplength}%
- {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
- \par\begin{tabular*}{\linewidth}%
- {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
-}%
-{\end{tabular*}\par}%
+{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}%
+{\end{tabu}\par}%
% Used for member group headers
\newenvironment{Indent}{%
@@ -466,7 +448,7 @@
\newcommand{\lcurly}{\{}
\newcommand{\rcurly}{\}}
-% Used for syntax highlighting
+% Colors used for syntax highlighting
\definecolor{comment}{rgb}{0.5,0.0,0.0}
\definecolor{keyword}{rgb}{0.0,0.5,0.0}
\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
@@ -478,3 +460,6 @@
\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
+
+% Color used for table heading
+\newcommand{\tableheadbgcolor}{lightgray}%