Commit 752d21c1 authored by dimitri's avatar dimitri

Release-1.5.7.1-20081206

parent b35a84b3
DOXYGEN Version 1.5.7.1-20081103
DOXYGEN Version 1.5.7.1-20081206
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (03 November 2008)
Dimitri van Heesch (06 December 2008)
......@@ -41,12 +41,7 @@ distclean: clean
-rm -f src/doxygen.pro src/libdoxygen.pro src/doxytag.pro qtools/qtools.pro src/libdoxycfg.pro libpng/libpng.pro libmd5/libmd5.pro
-rm -f src/version.cpp
-rm -r addon/doxywizard/Makefile
-rm -f addon/doxywizard/Makefile.doxywizard
-rm -f addon/doxywizard/doxywizard.pro
-rm -f addon/doxywizard/moc/moc_*
-rm -f addon/doxywizard/config.cpp
-rm -f addon/doxywizard/lib
-rm -f addon/doxywizard/objects
-rm -f VERSION
-rm -f packages/rpm/doxygen.spec
......
DOXYGEN Version 1.5.7.1_20081103
DOXYGEN Version 1.5.7.1_20081206
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (03 November 2008)
Dimitri van Heesch (dimitri@stack.nl) (06 December 2008)
......@@ -10,38 +10,23 @@
# See the GNU General Public License for more details.
#
all: version.cpp config.h config.l portable.h portable.cpp Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard QTDIR=$(QTDIR) $@
QMAKE = qmake
version.cpp: ../../src/version.cpp
$(CP) ../../src/version.cpp version.cpp
all: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard
portable.cpp: ../../src/portable.cpp
$(CP) ../../src/portable.cpp portable.cpp
Makefile.doxywizard: doxywizard.pro
$(QTDIR)/bin/qmake doxywizard.pro -o Makefile.doxywizard
portable.h: ../../src/portable.h
$(CP) ../../src/portable.h portable.h
config.h: ../../src/config.h
$(CP) ../../src/config.h config.h
config.l: ../../src/config.l
$(CP) ../../src/config.l config.l
Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
tmake:
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
qmake:
$(QTDIR)/bin/qmake doxywizard.pro -o Makefile.doxywizard
clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean
$(RM) config.cpp
distclean: clean
$(RM) Makefile.doxywizard version.cpp config.l config.h portable.h portable.cpp
MAN1DIR = man/man1
distclean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard distclean
$(RM) Makefile.doxywizard
install:
$(INSTTOOL) -d $(INSTALL)/bin
......
#
#
#
# Copyright (C) 1997-2008 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
# granted. No representations are made about the suitability of this software
# for any purpose. It is provided "as is" without express or implied warranty.
# See the GNU General Public License for more details.
#
all: config.h config.l unistd.h Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@
unistd.h: ..\..\src\unistd.h
$(CP) ..\..\src\unistd.h unistd.h
config.h: ..\..\src\config.l
$(CP) ..\..\src\config.h config.h
config.l: ..\..\src\config.l
$(CP) ..\..\src\config.l config.l
version.cpp: ..\..\src\version.cpp
$(CP) ..\..\src\version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
tmake:
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean
$(RM) config.cpp
distclean: clean
$(RM) Makefile.doxywizard config.l config.h
FORCE:
Doxywizard is a graphical front-end to read/edit/write doxygen configuration
files. It requires Qt version 3.x or higher.
files and to launch doxygen. It requires Qt version 4.3 or higher.
This diff is collapsed.
This diff is collapsed.
#
#
#
# Copyright (C) 1997-2008 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
# granted. No representations are made about the suitability of this software
# for any purpose. It is provided "as is" without express or implied warranty.
# See the GNU General Public License for more details.
#
# project file for the doxywizard project
# special template configuration file because we use flex
TEMPLATE = doxywizard.t
# executable to generate
TARGET = ../../bin/doxywizard
# we do not use the debug features in this copy of portable.cpp
DEFINES = NODEBUG
# configure options
CONFIG = qt warn_on $extraopts
# header file for the project
HEADERS = doxywizard.h \
version.h \
inputstring.h \
inputbool.h \
inputstrlist.h \
inputint.h \
expert.h \
config.h \
portable.h
# source flle for the project
SOURCES = doxywizard.cpp \
version.cpp \
inputstring.cpp \
inputbool.cpp \
inputstrlist.cpp \
inputint.cpp \
expert.cpp \
config.cpp \
portable.cpp
# where to put the objects
OBJECTS_DIR = obj
# where to put the intermediate moc stuff
MOC_DIR = moc
# extra C++ compiler options
INCLUDEPATH += ../../src
win32:TMAKE_CXXFLAGS += -DQT_DLL
win32:INCLUDEPATH += .
macosx-c++:LIBS+=-framework CoreFoundation -framework ApplicationServices
# extra link options
win32:TMAKE_LFLAGS = /NODEFAULTLIB:msvcrt.lib doxywizard.res
win32:TMAKE_LIBS = $(QTDIR)\lib\qtmain.lib $(QTDIR)\lib\qt-mt332.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
win32:TMAKE_LIBS_QT =
######################################################################
# Automatically generated by qmake (2.01a) zo okt 19 12:50:02 2008
######################################################################
TEMPLATE = app
DESTDIR = ../../bin
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
QT += xml
CONFIG += $extraopts
OBJECTS_DIR = obj
MOC_DIR = moc
RCC_DIR = rcc
DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII
# Input
HEADERS += doxywizard.h version.h expert.h config.h helplabel.h \
inputbool.h inputstring.h inputint.h inputstrlist.h wizard.h
SOURCES += doxywizard.cpp ../../src/version.cpp expert.cpp wizard.cpp \
inputbool.cpp inputstring.cpp inputint.cpp inputstrlist.cpp
LEXSOURCES += config.l
RESOURCES += doxywizard.qrc
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">
<file alias="config.xml">../../src/config.xml</file>
<file>images/add.png</file>
<file>images/del.png</file>
<file>images/file.png</file>
<file>images/folder.png</file>
<file>images/refresh.png</file>
</qresource>
</RCC>
#
#
#
# Copyright (C) 1997-2008 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
# granted. No representations are made about the suitability of this software
# for any purpose. It is provided "as is" without express or implied warranty.
# See the GNU General Public License for more details.
#!
#! wizard.t: This is a custom template for building doxywizard
#!
#$ IncludeTemplate("app.t");
LEX = flex
YACC = bison
#${
sub GenerateDep {
my($obj,$src,$dep) = @_;
my(@objv,$srcv,$i,$s,$o,$d,$c);
@objv = split(/\s+/,$obj);
@srcv = split(/\s+/,$src);
for $i ( 0..$#objv ) {
$s = $srcv[$i];
$o = $objv[$i];
next if $s eq "";
$text .= $o . ": " . $s;
$text .= " ${linebreak}\n\t\t" . $dep if $dep ne "";
if ( $moc_output{$s} ne "" ) {
$text .= " ${linebreak}\n\t\t" . $moc_output{$s};
}
$d = &make_depend($s);
$text .= " ${linebreak}\n\t\t" . $d if $d ne "";
$text .= "\n";
}
chop $text;
}
#$}
####################
#$ GenerateDep("config.cpp","config.l");
$(LEX) -PconfigYY -t config.l >config.cpp
This diff is collapsed.
/******************************************************************************
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
*/
#ifndef EXPERT_H
#define EXPERT_H
#include <qtabdialog.h>
#include <qlist.h>
#include <qdict.h>
class IInput;
class QWidget;
class QObject;
class InputBool;
class InputString;
class InputStrList;
class InputFile;
class InputDir;
class InputInt;
#include <QSplitter>
#include <QDomElement>
#include <QHash>
class ConfigWidget
{
public:
enum Kind { Int, String, StrList, Bool };
ConfigWidget(QWidget *w,Kind k) : m_widget(w), m_kind(k) {}
Kind kind() const { return m_kind; }
InputString *getString() const
{ return m_kind==String ? (InputString *)m_widget : 0; }
InputBool *getBool() const
{ return m_kind==Bool ? (InputBool *)m_widget : 0; }
InputStrList *getStrList() const
{ return m_kind==StrList ? (InputStrList *)m_widget : 0; }
InputInt *getInt() const
{ return m_kind==Int ? (InputInt *)m_widget : 0; }
private:
QWidget *m_widget;
Kind m_kind;
};
class QTreeWidget;
class QTreeWidgetItem;
class QStackedWidget;
class QSettings;
class QTextEdit;
class QTextCodec;
class QPushButton;
class Input;
class Expert : public QTabDialog
class Expert : public QSplitter
{
Q_OBJECT
Q_OBJECT
public:
Expert(QWidget *parent=0);
~Expert();
void init();
void addDependency(QDict<QObject> *switches,
const QCString &dep,const QCString &name);
bool hasChanged() const { return m_changed; }
Expert();
~Expert();
void loadSettings(QSettings *);
void saveSettings(QSettings *);
void loadConfig(const QString &fileName);
bool writeConfig(QTextStream &t,bool brief);
QByteArray saveInnerState () const;
bool restoreInnerState ( const QByteArray & state );
const QHash<QString,Input*> &modelData() const { return m_options; }
void resetToDefaults();
bool htmlOutputPresent(const QString &workingDir) const;
bool pdfOutputPresent(const QString &workingDir) const;
QString getHtmlOutputIndex(const QString &workingDir) const;
public slots:
void activateTopic(QTreeWidgetItem *,QTreeWidgetItem *);
QWidget *createTopicWidget(QDomElement &elem);
private slots:
void toggle(const char *,bool);
void handleHelp();
void showHelp(Input *);
void nextTopic();
void prevTopic();
signals:
void changed();
private:
QDict<IInput> *m_inputWidgets;
QDict< QList<IInput> > *m_dependencies;
QDict<QObject> *m_switches;
bool m_changed;
void createTopics(const QDomElement &);
void saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,bool brief);
QSplitter *m_splitter;
QTextEdit *m_helper;
QTreeWidget *m_treeWidget;
QStackedWidget *m_topicStack;
QHash<QString,QWidget *> m_topics;
QHash<QString,QObject *> m_optionWidgets;
QHash<QString,Input *> m_options;
QPushButton *m_next;
QPushButton *m_prev;
QDomElement m_rootElement;
};
#endif
#ifndef HELPLABEL_H
#define HELPLABEL_H
#include <QLabel>
#include <QMenu>
class HelpLabel : public QLabel
{
Q_OBJECT
public:
HelpLabel(const QString &text) : QLabel(text)
{ setContextMenuPolicy(Qt::CustomContextMenu);
connect(this,SIGNAL(customContextMenuRequested(const QPoint&)),
this,SLOT(showMenu(const QPoint&)));
}
signals:
void enter();
void reset();
private slots:
void showMenu(const QPoint &p)
{
QMenu menu(this);
QAction *a = menu.addAction(tr("Reset to default"));
if (menu.exec(mapToGlobal(p))==a)
{
reset();
}
}
protected:
void enterEvent( QEvent * event ) { enter(); QLabel::enterEvent(event); }
};
#endif
#ifndef _INPUT_H
#define _INPUT_H
#ifndef INPUT_H
#define INPUT_H
class QObject;
#include <QVariant>
class IInput
class QTextStream;
class QTextCodec;
class Input
{
public:
virtual ~IInput() {}
virtual void init() = 0;
enum Kind
{
Bool,
Int,
String,
StrList,
Obsolete
};
virtual ~Input() {}
virtual QVariant &value() = 0;
virtual void update() = 0;
virtual Kind kind() const = 0;
virtual QString docs() const = 0;
virtual QString id() const = 0;
virtual void addDependency(Input *option) = 0;
virtual void setEnabled(bool) = 0;
virtual QObject *qobject() = 0;
virtual void updateDependencies() = 0;
virtual void reset() = 0;
virtual void writeValue(QTextStream &t,QTextCodec *codec) = 0;
};
#endif
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -13,47 +13,98 @@
*/
#include "inputbool.h"
//#if QT_VERSION >= 300
//#include <qstylefactory.h>
//#else
//#include <qwindowsstyle.h>
//#endif
#include <qlayout.h>
#include "helplabel.h"
#include <QtGui>
InputBool::InputBool( const QString & text, QWidget * parent, bool &flag )
: QWidget(parent), state(flag)
InputBool::InputBool( QGridLayout *layout, int &row,
const QString &id, bool checked,
const QString &docs )
: m_default(checked), m_docs(docs), m_id(id)
{
QBoxLayout *layout = new QHBoxLayout(this);
cb = new QCheckBox(text,this);
layout->addWidget(cb);
layout->addStretch(10);
//#if QT_VERSION >= 300
// QStyle *winStyle = QStyleFactory::create("windows");
//#else
// QWindowsStyle *winStyle = new QWindowsStyle();
//#endif
cb->setChecked( flag );
// if (winStyle) cb->setStyle( winStyle );
cb->setMinimumSize( sizeHint() );
m_lab = new HelpLabel(id);
m_cb = new QCheckBox;
layout->addWidget(m_lab,row, 0);
layout->addWidget(m_cb,row, 1);
m_enabled = true;
m_state=!checked; // force update
setValue(checked);
connect( m_cb, SIGNAL(toggled(bool)), SLOT(setValue(bool)) );
connect( m_lab, SIGNAL(enter()), SLOT(help()) );
connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
row++;
}
connect( cb, SIGNAL(toggled(bool)), SLOT(setState(bool)) );
void InputBool::help()
{
showHelp(this);
}
layout->activate();
void InputBool::setEnabled(bool b)
{
m_enabled = b;
m_cb->setEnabled(b);
updateDependencies();
}
void InputBool::init()
void InputBool::updateDependencies()
{
cb->setChecked(state);
for (int i=0;i<m_dependencies.count();i++)
{
m_dependencies[i]->setEnabled(m_enabled && m_state);
}
}
void InputBool::setState( bool s )
void InputBool::setValue( bool s )
{
if (state!=s)
if (m_state!=s)
{
m_state=s;
updateDefault();
updateDependencies();
m_cb->setChecked( s );
m_value = m_state;
emit changed();
emit toggle(cb->text(),s);
}
state=s;
}
void InputBool::updateDefault()
{
if (m_state==m_default)
{
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
}
else
{
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
}
}
QVariant &InputBool::value()
{
return m_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_cb->setChecked( m_state );
updateDefault();
updateDependencies();
}
void InputBool::reset()
{
setValue(m_default);
}
void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
{
if (m_state)
t << codec->fromUnicode(QString::fromAscii("YES"));
else
t << codec->fromUnicode(QString::fromAscii("NO"));
}
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -15,35 +15,55 @@
#ifndef _INPUTBOOL_H
#define _INPUTBOOL_H
#include <qwidget.h>
#include <qcheckbox.h>
#include "input.h"
#include <QObject>
class PageWidget;
class QCheckBox;
class QGridLayout;
class QLabel;
class InputBool : public QWidget, /*QCheckBox,*/ public IInput
class InputBool : public QObject, public Input
{
Q_OBJECT
public:
InputBool( const QString &text, QWidget *parent, bool &flag );
~InputBool(){};
void init();
void setEnabled(bool b) { cb->setEnabled(b); }
QObject *qobject() { return this; }
bool getState() const { return state; }
InputBool(QGridLayout *layout,int &row,const QString &id,
bool enabled, const QString &docs );
// Input
QVariant &value();
void update();
Kind kind() const { return Bool; }
QString docs() const { return m_docs; }
QString id() const { return m_id; }
void addDependency(Input *option) { m_dependencies+=option; }
void setEnabled(bool);
void updateDependencies();
void writeValue(QTextStream &t,QTextCodec *codec);
public slots:
void reset();
void setValue(bool);
signals:
void changed();
void toggle(const char *,bool);
void toggle(QString,bool);
void showHelp(Input *);
private slots:
void setState(bool);
void help();
private:
bool &state;
QCheckBox *cb;
void updateDefault();
bool m_state;
bool m_default;
bool m_enabled;
QVariant m_value;
QCheckBox *m_cb;
QString m_docs;
QList<Input*> m_dependencies;
QString m_id;
QLabel *m_lab;
};
......
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -13,53 +13,84 @@
*/
#include "inputint.h"
#include "helplabel.h"
#include <stdio.h>
#include <stdlib.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qwindowsstyle.h>
#include <qspinbox.h>
#include <QtGui>
InputInt::InputInt( const QString & label, QWidget *parent, int &val, int minVal,int maxVal )
: QWidget( parent), m_val(val), m_minVal(minVal), m_maxVal(maxVal)
InputInt::InputInt( QGridLayout *layout,int &row,
const QString & id,
int defVal, int minVal,int maxVal,
const QString & docs )
: m_default(defVal), m_minVal(minVal), m_maxVal(maxVal), m_docs(docs), m_id(id)
{
QHBoxLayout *layout = new QHBoxLayout( this, 5 );
m_lab = new HelpLabel(id);
m_sp = new QSpinBox;
m_sp->setMinimum(minVal);
m_sp->setMaximum(maxVal);
m_sp->setSingleStep(1);
m_val=defVal-1; // force update
setValue(defVal);
lab = new QLabel( label, this );
lab->setMinimumSize( lab->sizeHint() );
layout->addWidget( m_lab, row, 0 );
layout->addWidget( m_sp, row, 1 );
sp = new QSpinBox( minVal,maxVal,1,this );
sp->setMinimumSize( sp->sizeHint() );
connect(m_sp, SIGNAL(valueChanged(int)),
this, SLOT(setValue(int)) );
connect( m_lab, SIGNAL(enter()), SLOT(help()) );
connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
row++;
}
init();
layout->addWidget( lab );
layout->addWidget( sp );
layout->addStretch(1);
layout->activate();
setMinimumSize( sizeHint() );
void InputInt::help()
{
showHelp(this);
}
connect(sp, SIGNAL(valueChanged(int)),
this, SLOT(valueChanged(int)) );
void InputInt::setValue(int val)
{
val = qMax(m_minVal,val);
val = qMin(m_maxVal,val);
if (val!=m_val)
{
m_val = val;
m_sp->setValue(val);
m_value = m_val;
if (m_val==m_default)
{
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
}
else
{
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
}
emit changed();
}
}
void InputInt::valueChanged(int val)
void InputInt::setEnabled(bool state)
{
if (val!=m_val) emit changed();
m_val = val;
m_lab->setEnabled(state);
m_sp->setEnabled(state);
}
void InputInt::setEnabled(bool state)
QVariant &InputInt::value()
{
lab->setEnabled(state);
sp->setEnabled(state);
return m_value;
}
void InputInt::init()
void InputInt::update()
{
m_val = QMAX(m_minVal,m_val);
m_val = QMIN(m_maxVal,m_val);
sp->setValue(m_val);
setValue(m_value.toInt());
}
void InputInt::reset()
{
setValue(m_default);
}
void InputInt::writeValue(QTextStream &t,QTextCodec *)
{
t << m_val;
}
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -15,39 +15,56 @@
#ifndef _INPUTINT_H
#define _INPUTINT_H
#include <qwidget.h>
#include <qstring.h>
#include "input.h"
#include <QObject>
class QGridLayout;
class QLabel;
class QSpinBox;
class InputInt : public QWidget, public IInput
class InputInt : public QObject, public Input
{
Q_OBJECT
public:
InputInt( const QString &text, QWidget *parent, int &val,
int minVal, int maxVal );
InputInt( QGridLayout *layout,int &row,
const QString &id, int defVal,
int minVal, int maxVal,
const QString &docs );
~InputInt(){};
// Input
QVariant &value();
void update();
Kind kind() const { return Int; }
QString docs() const { return m_docs; }
QString id() const { return m_id; }
void addDependency(Input *) { Q_ASSERT(false); }
void setEnabled(bool);
void init();
QObject *qobject() { return this; }
void updateDependencies() {}
void writeValue(QTextStream &t,QTextCodec *codec);
private:
QLabel *lab;
QSpinBox *sp;
int &m_val;
int m_minVal;
int m_maxVal;
public slots:
void reset();
void setValue(int val);
private slots:
void help();
signals:
void changed();
void showHelp(Input *);
private slots:
void valueChanged(int val);
private:
QLabel *m_lab;
QSpinBox *m_sp;
int m_val;
int m_default;
int m_minVal;
int m_maxVal;
QVariant m_value;
QString m_docs;
QString m_id;
};
#endif
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -13,178 +13,179 @@
*/
#include "inputstring.h"
//#include "pixmaps.h"
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qwindowsstyle.h>
#include <qcstring.h>
#include <qpushbutton.h>
#include <qfiledialog.h>
#include <qcombobox.h>
#include <qtooltip.h>
InputString::InputString( const QString & label,
QWidget *parent, QCString &s, StringMode m )
: QWidget( parent ), str(s), sm(m), m_values(0), m_index(0)
#include "helplabel.h"
#include "doxywizard.h"
#include "config.h"
#include <QtGui>
InputString::InputString( QGridLayout *layout,int &row,
const QString & id, const QString &s,
StringMode m, const QString &docs )
: m_default(s), m_sm(m), m_index(0), m_docs(docs), m_id(id)
{
m_lab = new HelpLabel(id);
if (m==StringFixed)
{
QHBoxLayout *layout = new QHBoxLayout( this, 5);
lab = new QLabel( label, this );
lab->setMinimumSize( lab->sizeHint() );
layout->addWidget( lab );
com = new QComboBox( this );
com->setMinimumSize(com->sizeHint());
layout->addWidget( com );
layout->addStretch( 1 );
le=0;
br=0;
layout->activate();
setMinimumSize( sizeHint() );
layout->addWidget( m_lab, row, 0 );
m_com = new QComboBox;
layout->addWidget( m_com, row, 1, 1, 3, Qt::AlignLeft );
m_le=0;
m_br=0;
row++;
}
else
{
QGridLayout *layout = new QGridLayout( this, 1, m==StringFree ? 1 : 3, 5 );
lab = new QLabel( label, this );
lab->setMinimumSize( lab->sizeHint() );
layout->addWidget( lab,0,0 );
le = new QLineEdit( this );
le->setMinimumSize( le->sizeHint() );
le->setText( s );
layout->addWidget( le,0,1 );
layout->addWidget( m_lab, row, 0 );
m_le = new QLineEdit;
m_le->setText( s );
//layout->setColumnMinimumWidth(2,150);
if (m==StringFile || m==StringDir)
{
//QPixmap pixmap = QPixmap(m==StringFile ?
// file_xpm :
// folder_xpm );
br = new QPushButton( this );
br->setMinimumSize( br->sizeHint() );
layout->addWidget( m_le, row, 1 );
m_br = new QToolBar;
m_br->setIconSize(QSize(24,24));
if (m==StringFile)
{
br->setText("File...");
QToolTip::add(br,"Browse to a file");
QAction *file = m_br->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),this,SLOT(browse()));
file->setToolTip(tr("Browse to a file"));
}
else
{
br->setText("Folder...");
QToolTip::add(br,"Browse to a folder");
QAction *dir = m_br->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),this,SLOT(browse()));
dir->setToolTip(tr("Browse to a folder"));
}
layout->addWidget( br,0,2 );
layout->addWidget( m_br,row,2 );
}
else
{
br=0;
layout->addWidget( m_le, row, 1, 1, 2 );
m_br=0;
}
com=0;
layout->activate();
setMinimumSize( sizeHint() );
m_com=0;
row++;
}
if (le) connect( le, SIGNAL(textChanged(const QString&)),
this, SLOT(textChanged(const QString&)) );
if (br) connect( br, SIGNAL(clicked()), this, SLOT(browse()) );
if (com) connect( com, SIGNAL(activated(const QString &)),
this, SLOT(textChanged(const QString &)) );
if (m_le) connect( m_le, SIGNAL(textChanged(const QString&)),
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
setValue(s);
connect( m_lab, SIGNAL(enter()), SLOT(help()) );
connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
}
void InputString::help()
{
showHelp(this);
}
InputString::~InputString()
{
if (m_values) delete m_values;
}
void InputString::textChanged(const QString &s)
void InputString::setValue(const QString &s)
{
if (str!=(const char *)s)
if (m_str!=s)
{
str = s;
m_str = s;
m_value = m_str;
if (m_str==m_default)
{
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
}
else
{
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
}
if (m_le) m_le->setText( m_str );
emit changed();
}
}
void InputString::setEnabled(bool state)
{
lab->setEnabled(state);
if (le) le->setEnabled(state);
if (br) br->setEnabled(state);
if (com) com->setEnabled(state);
m_lab->setEnabled(state);
if (m_le) m_le->setEnabled(state);
if (m_br) m_br->setEnabled(state);
if (m_com) m_com->setEnabled(state);
}
void InputString::browse()
{
if (sm==StringFile)
QString path = QFileInfo(MainWindow::instance().configFileName()).path();
if (m_sm==StringFile)
{
QString fileName = QFileDialog::getOpenFileName();
QString fileName = QFileDialog::getOpenFileName(&MainWindow::instance(),
tr("Select file"),path);
if (!fileName.isNull())
{
le->setText( fileName );
if (str!=(const char *)le->text())
QDir dir(path);
if (!MainWindow::instance().configFileName().isEmpty() && dir.exists())
{
str = le->text();
emit changed();
fileName = dir.relativeFilePath(fileName);
}
setValue(fileName);
}
}
else // sm==StringDir
{
QString dirName = QFileDialog::getExistingDirectory();
QString dirName = QFileDialog::getExistingDirectory(&MainWindow::instance(),
tr("Select directory"),path);
if (!dirName.isNull())
{
le->setText( dirName );
if (str!=(const char *)le->text())
QDir dir(path);
if (!MainWindow::instance().configFileName().isEmpty() && dir.exists())
{
str = le->text();
emit changed();
dirName = dir.relativeFilePath(dirName);
}
setValue(dirName);
}
}
}
void InputString::clear()
{
le->setText("");
if (!str.isEmpty())
{
emit changed();
str = "";
}
setValue(QString());
}
void InputString::addValue(const char *s)
void InputString::addValue(QString s)
{
if (sm==StringFixed)
if (m_sm==StringFixed)
{
if (m_values==0) m_values = new QDict<int>;
m_values->setAutoDelete(TRUE);
m_values->insert(s,new int(m_index++));
com->insertItem(s);
m_values.append(s);
m_com->addItem(s);
}
}
void InputString::init()
void InputString::setDefault()
{
if (sm==StringFixed)
{
if (m_values)
{
int *itemIndex = m_values->find(str);
if (itemIndex)
{
com->setCurrentItem(*itemIndex);
}
else
{
com->setCurrentItem(0);
}
}
}
else
{
le->setText(str);
}
int index = m_values.indexOf(m_str);
if (index!=-1 && m_com) m_com->setCurrentIndex(index);
}
QVariant &InputString::value()
{
return m_value;
}
void InputString::update()
{
setValue(m_value.toString().trimmed());
setDefault();
}
void InputString::reset()
{
setValue(m_default);
setDefault();
}
void InputString::writeValue(QTextStream &t,QTextCodec *codec)
{
writeStringValue(t,codec,m_str);
}
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -15,19 +15,19 @@
#ifndef _INPUTSTRING_H
#define _INPUTSTRING_H
#include <qwidget.h>
#include <qstring.h>
#include <qdict.h>
#include "qtbc.h"
#include "input.h"
#include <QObject>
#include <QMap>
#include <QStringList>
class QLabel;
class QLineEdit;
class QPushButton;
class QToolBar;
class QComboBox;
class QGridLayout;
class InputString : public QWidget, public IInput
class InputString : public QObject, public Input
{
Q_OBJECT
......@@ -38,32 +38,51 @@ class InputString : public QWidget, public IInput
StringFixed=3
};
InputString( const QString &text, QWidget *parent, QCString &s,
StringMode m=StringFree );
InputString( QGridLayout *layout,int &row,
const QString &id, const QString &s,
StringMode m,
const QString &docs );
~InputString();
void addValue(QString s);
void setDefault();
// Input
QVariant &value();
void update();
Kind kind() const { return String; }
QString docs() const { return m_docs; }
QString id() const { return m_id; }
void addDependency(Input *) { Q_ASSERT(false); }
void setEnabled(bool);
void addValue(const char *s);
void init();
QObject *qobject() { return this; }
void updateDependencies() {}
void writeValue(QTextStream &t,QTextCodec *codec);
private:
QLabel *lab;
QLineEdit *le;
QPushButton *br;
QComboBox *com;
QCString &str;
StringMode sm;
QDict<int> *m_values;
int m_index;
public slots:
void reset();
void setValue(const QString&);
signals:
void changed();
void showHelp(Input *);
private slots:
void textChanged(const QString&);
void browse();
void clear();
void help();
private:
QLabel *m_lab;
QLineEdit *m_le;
QToolBar *m_br;
QComboBox *m_com;
QString m_str;
QString m_default;
StringMode m_sm;
QStringList m_values;
int m_index;
QVariant m_value;
QString m_docs;
QString m_id;
};
#endif
This diff is collapsed.
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......@@ -15,48 +15,51 @@
#ifndef _INPUTSTRLIST_H
#define _INPUTSTRLIST_H
#include <qwidget.h>
#include <qstring.h>
#include "input.h"
#include <QObject>
#include <QStringList>
class QLabel;
class QLineEdit;
class QPushButton;
class QListBox;
class QStrList;
class QListWidget;
class QStringList;
class QGridLayout;
class QAction;
class InputStrList : public QWidget, public IInput
class InputStrList : public QObject, public Input
{
Q_OBJECT
public:
enum ListMode { ListString=0,
ListFile=1,
ListDir=2,
ListFileDir=ListFile|ListDir
enum ListMode { ListString = 0,
ListFile = 1,
ListDir = 2,
ListFileDir = ListFile | ListDir
};
InputStrList( const QString &text, QWidget *parent,
QStrList &sl, ListMode v=ListString );
~InputStrList() {};
InputStrList( QGridLayout *layout,int &row,
const QString &id, const QStringList &sl,
ListMode v, const QString &docs);
void setValue(const QStringList &sl);
QVariant &value();
void update();
Kind kind() const { return StrList; }
QString docs() const { return m_docs; }
QString id() const { return m_id; }
void addDependency(Input *) { Q_ASSERT(false); }
void setEnabled(bool);
void init();
QObject *qobject() { return this; }
void updateDependencies() {}
void writeValue(QTextStream &t,QTextCodec *codec);
private:
QLabel *lab;
QLineEdit *le;
QPushButton *add;
QPushButton *del;
QPushButton *upd;
QPushButton *brFile;
QPushButton *brDir;
QListBox *lb;
QStrList &strList;
public slots:
void reset();
signals:
void changed();
void showHelp(Input *);
private slots:
void addString();
......@@ -65,6 +68,23 @@ class InputStrList : public QWidget, public IInput
void selectText(const QString &s);
void browseFiles();
void browseDir();
void help();
private:
void updateDefault();
QLabel *m_lab;
QLineEdit *m_le;
QAction *m_add;
QAction *m_del;
QAction *m_upd;
QAction *m_brFile;
QAction *m_brDir;
QListWidget *m_lb;
QStringList m_default;
QStringList m_strList;
QVariant m_value;
QString m_docs;
QString m_id;
};
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef QTBC_H
#define QTBC_H
/*! This file contains some hacks to make Doxygen work with
* Qt version 2.00 and Qt version 1.xx
*/
#include <qglobal.h>
#if QT_VERSION >= 200
#include <locale.h>
#define GCI QCollection::Item
#include <qcstring.h>
#include <qstring.h>
inline QCString convertToQCString(const QString &s) { return s.latin1(); }
#else /* QT_VERSION < 200 */
#include <qstring.h>
#define QCString QString
inline QCString convertToQCString(const QCString &s) { return s; }
#endif
#endif
......@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-2008 by Dimitri van Heesch.
* Copyright (C) 1997-2007 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
......
This diff is collapsed.
/******************************************************************************
*
*
*
* Copyright (C) 1997-2007 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.
*
*/
#ifndef WIZARD_H
#define WIZARD_H
#include <QSplitter>
#include <QHash>
class Input;
class QTreeWidget;
class QTreeWidgetItem;
class QStackedWidget;
class QCheckBox;
class QLineEdit;
class QPushButton;
class QRadioButton;
class QGroupBox;
class QButtonGroup;
class Wizard;
enum OptLang { Lang_Cpp, Lang_C, Lang_Java, Lang_CS };
enum HtmlStyle { HS_Plain, HS_TreeView, HS_CHM };
enum TexStyle { TS_PDFHyper, TS_PDF, TS_PS };
enum DiagramMode { DM_None, DM_Builtin, DM_Dot };
class Step1 : public QWidget
{
Q_OBJECT
public:
Step1(Wizard *parent,const QHash<QString,Input*> &modelData);
void init();
private slots:
void selectSourceDir();
void selectDestinationDir();
void setProjectName(const QString &name);
void setProjectNumber(const QString &num);
void setSourceDir(const QString &dir);
void setDestinationDir(const QString &dir);
void setRecursiveScan(int);
private:
QLineEdit *m_projName;
QLineEdit *m_projNumber;
QLineEdit *m_sourceDir;
QLineEdit *m_destDir;
QCheckBox *m_recursive;
QPushButton *m_srcSelectDir;
QPushButton *m_dstSelectDir;
Wizard *m_wizard;
const QHash<QString,Input *> &m_modelData;
};
class Step2 : public QWidget
{
Q_OBJECT
public:
Step2(Wizard *parent,const QHash<QString,Input*> &modelData);
void init();
private slots:
void optimizeFor(int choice);
void extractMode(int choice);
void changeCrossRefState(int choice);
private:
QGroupBox *m_extractMode;
QGroupBox *m_optimizeLang;
QButtonGroup *m_extractModeGroup;
QButtonGroup *m_optimizeLangGroup;
QCheckBox *m_crossRef;
Wizard *m_wizard;
const QHash<QString,Input *> &m_modelData;
};
class Step3 : public QWidget
{
Q_OBJECT
public:
Step3(Wizard *parent,const QHash<QString,Input*> &modelData);
void init();
private slots:
void setHtmlEnabled(bool);
void setLatexEnabled(bool);
void setManEnabled(int);
void setRtfEnabled(int);
void setXmlEnabled(int);
void setSearchEnabled(int);
void setHtmlOptions(int);
void setLatexOptions(int);
private:
QGroupBox *m_texOptions;
QButtonGroup *m_texOptionsGroup;
QGroupBox *m_htmlOptions;
QButtonGroup *m_htmlOptionsGroup;
QCheckBox *m_htmlEnabled;
QCheckBox *m_latexEnabled;
QCheckBox *m_manEnabled;
QCheckBox *m_rtfEnabled;
QCheckBox *m_xmlEnabled;
QCheckBox *m_searchEnabled;
Wizard *m_wizard;
const QHash<QString,Input *> &m_modelData;
};
class Step4 : public QWidget
{
Q_OBJECT
public:
Step4(Wizard *parent,const QHash<QString,Input*> &modelData);
void init();
private slots:
void diagramModeChanged(int);
void setClassGraphEnabled(int state);
void setCollaborationGraphEnabled(int state);
void setGraphicalHierarchyEnabled(int state);
void setIncludeGraphEnabled(int state);
void setIncludedByGraphEnabled(int state);
void setCallGraphEnabled(int state);
void setCallerGraphEnabled(int state);
private:
QGroupBox *m_diagramMode;
QButtonGroup *m_diagramModeGroup;
QGroupBox *m_dotGroup;
QCheckBox *m_dotClass;
QCheckBox *m_dotCollaboration;
QCheckBox *m_dotInclude;
QCheckBox *m_dotIncludedBy;
QCheckBox *m_dotInheritance;
QCheckBox *m_dotCall;
QCheckBox *m_dotCaller;
Wizard *m_wizard;
const QHash<QString,Input *> &m_modelData;
};
class Wizard : public QSplitter
{
Q_OBJECT
public:
Wizard(const QHash<QString,Input*> &modelData, QWidget *parent=0);
~Wizard();
public slots:
void refresh();
private slots:
void activateTopic(QTreeWidgetItem *item,QTreeWidgetItem *);
void nextTopic();
void prevTopic();
private:
const QHash<QString,Input *> &m_modelData;
QTreeWidget *m_treeWidget;
QStackedWidget *m_topicStack;
Step1 *m_step1;
Step2 *m_step2;
Step3 *m_step3;
Step4 *m_step4;
QPushButton *m_next;
QPushButton *m_prev;
};
#endif
This diff is collapsed.
......@@ -1118,7 +1118,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
If the \c REFERENCES_LINK_SOURCE tag is set to \c YES (the default)
and SOURCE_BROWSER tag is set to \c YES, then the hyperlinks from
functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
link to the source code. Otherwise they will link to the documentstion.
link to the source code. Otherwise they will link to the documentation.
\anchor cfg_verbatim_headers
<dt>\c VERBATIM_HEADERS <dd>
......
......@@ -390,7 +390,7 @@ Download the zip extract it to e.g. <code>c:\\tools\\unxutils</code>.
Now you need to add/adjust the following environment variables
(via Control Panel/System/Advanced/Environment Variables):
- add <code>c:\\tools\\unxutils\\usr\\local\\wbin;</code> to the start of <code>PATH</code>
- set <code>BISON_SIMPLE</code> to <code>c:\\tools\\unxutils\\usr\\share\\bison.simple</code>
- set <code>BISON_SIMPLE</code> to <code>c:\\tools\\unxutils\\usr\\local\\share\\bison.simple</code>
Download doxygen's source tarball and put it somewhere (e.g use <code>c:\\tools</code>)
......
This diff is collapsed.
......@@ -58,16 +58,14 @@ Just follow these steps:
<li>Create a copy of translator_en.h and name it
translator_\<your_2_letter_country_code\>.h
I'll use xx in the rest of this document.
<li>Add definition of the symbol for your language into lang_cfg.h:
\verbatim
#define LANG_xx
\endverbatim
Use capital letters for your \c xx (to be consistent). The \c lang_cfg.h
defines which language translators will be compiled into doxygen
executable. It is a kind of configuration file. If you are sure that
you do not need some of the languages, you can remove (comment out)
definitions of symbols for the languages, or you can say \c \#undef
instead of \c \#define for them.
<li>Add definition of the symbol for your language in the configure
at two places in the script:
<ol>
<li>After the <code>f_langs=</code> is statement, in lower case.
<li>In the string that following <code>@allowed=</code> in upper case.
</ol>
The rerun the configure script such that is generates src/lang_cfg.h.
This file should now contain a #define for your language code.
<li>Edit language.cpp:
Add a
\verbatim
......
......@@ -130,3 +130,7 @@ Olexij Tkatchenko: olexij.tkatchenko@parcs.de
TranslatorVietnamese
Dang Minh Tuan: tuanvietkey@gmail.com
TranslatorTurkish
Emin Ilker Cetinbas: niw3@yahoo.com
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -1968,7 +1968,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
}
else
{
out << "\\includegraphics[width=" << width/2 << "pt]";
out << "\\includegraphics[width=" << width << "pt]";
}
out << "{" << baseName << "}\n"
"\\end{center}\n"
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment