Commit c1605e5b authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.7-20040704

parent 6b195c8d
# Doxyfile 1.3.5
# Doxyfile 1.3.7
#---------------------------------------------------------------------------
# Project related configuration options
......@@ -6,6 +6,7 @@
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
......@@ -15,6 +16,7 @@ ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
......@@ -33,6 +35,7 @@ EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
......@@ -44,6 +47,7 @@ SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
......
DOXYGEN Version 1.3.7-20040617
DOXYGEN Version 1.3.7-20040704
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (17 June 2004)
Dimitri van Heesch (04 July 2004)
DOXYGEN Version 1.3.7_20040617
DOXYGEN Version 1.3.7_20040704
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) (17 June 2004)
Dimitri van Heesch (dimitri@stack.nl) (04 July 2004)
1.3.7-20040617
1.3.7-20040704
......@@ -11,7 +11,7 @@
#
all: config.h config.l version.cpp Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@
$(MAKE) -f Makefile.doxywizard QTDIR=$(QTDIR) $@
config.h: ../../src/config.h
$(CP) ../../src/config.h config.h
......
Doxywizard is a graphical front-end to read/edit/write doxygen configuration
files. It requires Qt version 2.1.0 or higher.
files. It requires Qt version 3.x or higher.
As a special exception, Dimitri van Heesch gives permission to link this
program with Qt non-commercial edition, and distribute the resulting
executable, without including the source code for the Qt non-commercial
edition in the source distribution.
This diff is collapsed.
This diff is collapsed.
......@@ -23,23 +23,21 @@ CONFIG = qt warn_on $extraopts
# header file for the project
HEADERS = doxywizard.h \
version.h \
pagewidget.h \
inputstring.h \
inputbool.h \
inputstrlist.h \
inputint.h \
pixmaps.h \
expert.h \
config.h
# source flle for the project
SOURCES = doxywizard.cpp \
version.cpp \
pagewidget.cpp \
inputstring.cpp \
inputbool.cpp \
inputstrlist.cpp \
inputint.cpp \
pixmaps.cpp \
expert.cpp \
config.cpp
# where to put the objects
......@@ -52,8 +50,10 @@ MOC_DIR = moc
INCLUDEPATH += ../../src
win32:TMAKE_CXXFLAGS += -DQT_DLL
win32:INCLUDEPATH += .
macosx-c++:LIBS+=-framework CoreFoundation -framework ApplicationServices
# extra link options
win32:TMAKE_LIBS = $(QTDIR)\lib\qtmain.lib $(QTDIR)\lib\qt-mt230nc.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
win32:TMAKE_LFLAGS = /NODEFAULTLIB:msvcrt.lib
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 =
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 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.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <qmainwindow.h>
#include <qpopupmenu.h>
#include <qfileinfo.h>
#include <qmenubar.h>
#include <qstatusbar.h>
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <qapplication.h>
#include <qwhatsthis.h>
#include <qlayout.h>
#include <qtabwidget.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qscrollview.h>
#include <qlayout.h>
#include "expert.h"
#include "inputbool.h"
#include "inputstring.h"
#include "inputstrlist.h"
#include "inputint.h"
#include "config.h"
#include "version.h"
//-------------------------------------------------------------------------
Expert::Expert( QWidget *parent ) : QTabDialog( parent )
{
m_dependencies = new QDict< QList<IInput> >(257);
m_dependencies->setAutoDelete(TRUE);
m_inputWidgets = new QDict< IInput >;
m_switches = new QDict< QObject >;
setHelpButton();
QListIterator<ConfigOption> options = Config::instance()->iterator();
QVBoxLayout *pageLayout = 0;
QFrame *page = 0;
ConfigOption *option = 0;
for (options.toFirst();(option=options.current());++options)
{
switch(option->kind())
{
case ConfigOption::O_Info:
{
if (pageLayout) pageLayout->addStretch(1);
QScrollView *view = new QScrollView(this);
view->setVScrollBarMode(QScrollView::Auto);
view->setHScrollBarMode(QScrollView::AlwaysOff);
view->setResizePolicy(QScrollView::AutoOneFit);
page = new QFrame( view->viewport(), option->name() );
pageLayout = new QVBoxLayout(page);
pageLayout->setMargin(10);
view->addChild(page);
addTab(view,option->name());
QWhatsThis::add(page, option->docs().simplifyWhiteSpace() );
}
break;
case ConfigOption::O_String:
{
ASSERT(page!=0);
InputString::StringMode sm=InputString::StringFree;
switch(((ConfigString *)option)->widgetType())
{
case ConfigString::String: sm=InputString::StringFree; break;
case ConfigString::File: sm=InputString::StringFile; break;
case ConfigString::Dir: sm=InputString::StringDir; break;
}
InputString *inputString = new InputString(
option->name(), // name
page, // widget
*((ConfigString *)option)->valueRef(), // variable
sm // type
);
pageLayout->addWidget(inputString);
QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() );
connect(inputString,SIGNAL(changed()),SIGNAL(changed()));
m_inputWidgets->insert(option->name(),inputString);
addDependency(m_switches,option->dependsOn(),option->name());
}
break;
case ConfigOption::O_Enum:
{
ASSERT(page!=0);
InputString *inputString = new InputString(
option->name(), // name
page, // widget
*((ConfigEnum *)option)->valueRef(), // variable
InputString::StringFixed // type
);
pageLayout->addWidget(inputString);
QStrListIterator sli=((ConfigEnum *)option)->iterator();
for (sli.toFirst();sli.current();++sli)
{
inputString->addValue(sli.current());
}
inputString->init();
QWhatsThis::add(inputString, option->docs().simplifyWhiteSpace() );
connect(inputString,SIGNAL(changed()),SIGNAL(changed()));
m_inputWidgets->insert(option->name(),inputString);
addDependency(m_switches,option->dependsOn(),option->name());
}
break;
case ConfigOption::O_List:
{
ASSERT(page!=0);
InputStrList::ListMode lm=InputStrList::ListString;
switch(((ConfigList *)option)->widgetType())
{
case ConfigList::String: lm=InputStrList::ListString; break;
case ConfigList::File: lm=InputStrList::ListFile; break;
case ConfigList::Dir: lm=InputStrList::ListDir; break;
case ConfigList::FileAndDir: lm=InputStrList::ListFileDir; break;
}
InputStrList *inputStrList = new InputStrList(
option->name(), // name
page, // widget
*((ConfigList *)option)->valueRef(), // variable
lm // type
);
pageLayout->addWidget(inputStrList);
QWhatsThis::add(inputStrList, option->docs().simplifyWhiteSpace() );
connect(inputStrList,SIGNAL(changed()),SIGNAL(changed()));
m_inputWidgets->insert(option->name(),inputStrList);
addDependency(m_switches,option->dependsOn(),option->name());
}
break;
break;
case ConfigOption::O_Bool:
{
ASSERT(page!=0);
InputBool *inputBool = new InputBool(
option->name(), // name
page, // widget
*((ConfigBool *)option)->valueRef() // variable
);
pageLayout->addWidget(inputBool);
QWhatsThis::add(inputBool, option->docs().simplifyWhiteSpace() );
connect(inputBool,SIGNAL(changed()),SIGNAL(changed()));
m_inputWidgets->insert(option->name(),inputBool);
addDependency(m_switches,option->dependsOn(),option->name());
}
break;
case ConfigOption::O_Int:
{
ASSERT(page!=0);
InputInt *inputInt = new InputInt(
option->name(), // name
page, // widget
*((ConfigInt *)option)->valueRef(), // variable
((ConfigInt *)option)->minVal(), // min value
((ConfigInt *)option)->maxVal() // max value
);
pageLayout->addWidget(inputInt);
QWhatsThis::add(inputInt, option->docs().simplifyWhiteSpace() );
connect(inputInt,SIGNAL(changed()),SIGNAL(changed()));
m_inputWidgets->insert(option->name(),inputInt);
addDependency(m_switches,option->dependsOn(),option->name());
}
break;
case ConfigOption::O_Obsolete:
break;
}
}
if (pageLayout) pageLayout->addStretch(1);
QDictIterator<QObject> di(*m_switches);
QObject *obj = 0;
for (di.toFirst();(obj=di.current());++di)
{
connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool)));
// UGLY HACK: assumes each item depends on a boolean without checking!
emit toggle(di.currentKey(),((InputBool *)obj)->getState());
}
connect(this,SIGNAL(helpButtonPressed()),
this,SLOT(handleHelp()));
}
Expert::~Expert()
{
delete m_dependencies;
delete m_inputWidgets;
delete m_switches;
}
void Expert::handleHelp()
{
QWhatsThis::enterWhatsThisMode();
}
void Expert::addDependency(QDict<QObject> *switches,
const QCString &dep,const QCString &name)
{
if (!dep.isEmpty())
{
//printf("Expert::addDependency(%s)\n",name.data());
IInput *parent = m_inputWidgets->find(dep);
ASSERT(parent!=0);
IInput *child = m_inputWidgets->find(name);
ASSERT(child!=0);
if (switches->find(dep)==0)
{
switches->insert(dep,parent->qobject());
}
QList<IInput> *list = m_dependencies->find(dep);
if (list==0)
{
list = new QList<IInput>;
m_dependencies->insert(dep,list);
}
list->append(child);
}
}
void Expert::toggle(const char *name,bool state)
{
QList<IInput> *inputs = m_dependencies->find(name);
ASSERT(inputs!=0);
IInput *input = inputs->first();
while (input)
{
input->setEnabled(state);
input = inputs->next();
}
}
void Expert::init()
{
QDictIterator<IInput> di(*m_inputWidgets);
IInput *input = 0;
for (di.toFirst();(input=di.current());++di)
{
input->init();
}
QDictIterator<QObject> dio(*m_switches);
QObject *obj = 0;
for (dio.toFirst();(obj=dio.current());++dio)
{
connect(obj,SIGNAL(toggle(const char *,bool)),SLOT(toggle(const char *,bool)));
// UGLY HACK: assumes each item depends on a boolean without checking!
emit toggle(dio.currentKey(),((InputBool *)obj)->getState());
}
}
......@@ -12,52 +12,71 @@
*
*/
#ifndef _PAGEWIDGET_H
#define _PAGEWIDGET_H
#ifndef EXPERT_H
#define EXPERT_H
#include <qscrollview.h>
#include <qtabdialog.h>
#include <qlist.h>
#include <qdict.h>
class QTabWidget;
class QVBoxLayout;
class IInput;
class QWidget;
class QObject;
class InputBool;
class InputString;
class InputStrList;
class InputFile;
class InputDir;
class InputInt;
class FrameLayout : public QFrame
class ConfigWidget
{
Q_OBJECT
public:
FrameLayout(QWidget *parent=0, const char *name=0, WFlags g=0);
~FrameLayout();
void addStretch(int s=0);
void addWidget(QWidget *w);
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:
QVBoxLayout *lay;
QWidget *m_widget;
Kind m_kind;
};
class PageWidget : public QScrollView
class Expert : public QTabDialog
{
Q_OBJECT
public:
PageWidget( QTabWidget *parent, const char *name );
~PageWidget() {};
//void frameChanged()
//{
// if (!layout()) return;
// layout()->setMargin(frameWidth());
//}
void addStretch(int stretch=0);
void addWidget(QWidget *w);
QWidget *getLayout() const;
protected:
void resizeEvent(QResizeEvent *e);
void paintEvent(QPaintEvent *e);
Expert(QWidget *parent=0);
~Expert();
void init();
void addDependency(QDict<QObject> *switches,
const QCString &dep,const QCString &name);
private:
FrameLayout *lay;
QTabWidget *m_parent;
signals:
void changed();
private slots:
void toggle(const char *,bool);
void handleHelp();
private:
QDict<IInput> *m_inputWidgets;
QDict< QList<IInput> > *m_dependencies;
QDict<QObject> *m_switches;
};
#endif
......@@ -13,35 +13,32 @@
*/
#include "inputbool.h"
#include "pagewidget.h"
#if QT_VERSION >= 300
#include <qstylefactory.h>
#else
#include <qwindowsstyle.h>
#endif
//#if QT_VERSION >= 300
//#include <qstylefactory.h>
//#else
//#include <qwindowsstyle.h>
//#endif
#include <qlayout.h>
InputBool::InputBool( const QString & text, PageWidget * parent, bool &flag )
: /*QCheckBox( text, parent->getLayout() )*/ QWidget(parent->getLayout()), state(flag)
InputBool::InputBool( const QString & text, QWidget * parent, bool &flag )
: QWidget(parent), state(flag)
{
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
//#if QT_VERSION >= 300
// QStyle *winStyle = QStyleFactory::create("windows");
//#else
// QWindowsStyle *winStyle = new QWindowsStyle();
//#endif
cb->setChecked( flag );
if (winStyle) cb->setStyle( winStyle );
// if (winStyle) cb->setStyle( winStyle );
cb->setMinimumSize( sizeHint() );
connect( cb, SIGNAL(toggled(bool)), SLOT(setState(bool)) );
parent->addWidget(this);
layout->activate();
}
......
......@@ -27,7 +27,7 @@ class InputBool : public QWidget, /*QCheckBox,*/ public IInput
Q_OBJECT
public:
InputBool( const QString &text, PageWidget *parent, bool &flag );
InputBool( const QString &text, QWidget *parent, bool &flag );
~InputBool(){};
void init();
void setEnabled(bool b) { cb->setEnabled(b); }
......
......@@ -13,7 +13,6 @@
*/
#include "inputint.h"
#include "pagewidget.h"
#include <stdio.h>
#include <stdlib.h>
......@@ -22,8 +21,8 @@
#include <qwindowsstyle.h>
#include <qspinbox.h>
InputInt::InputInt( const QString & label, PageWidget *parent, int &val, int minVal,int maxVal )
: QWidget( parent->getLayout() ), m_val(val), m_minVal(minVal), m_maxVal(maxVal)
InputInt::InputInt( const QString & label, QWidget *parent, int &val, int minVal,int maxVal )
: QWidget( parent), m_val(val), m_minVal(minVal), m_maxVal(maxVal)
{
QHBoxLayout *layout = new QHBoxLayout( this, 5 );
......@@ -44,7 +43,6 @@ InputInt::InputInt( const QString & label, PageWidget *parent, int &val, int min
connect(sp, SIGNAL(valueChanged(int)),
this, SLOT(valueChanged(int)) );
parent->addWidget(this);
}
void InputInt::valueChanged(int val)
......
......@@ -22,14 +22,13 @@
class QLabel;
class QSpinBox;
class PageWidget;
class InputInt : public QWidget, public IInput
{
Q_OBJECT
public:
InputInt( const QString &text, PageWidget *parent, int &val,
InputInt( const QString &text, QWidget *parent, int &val,
int minVal, int maxVal );
~InputInt(){};
void setEnabled(bool);
......
......@@ -13,8 +13,7 @@
*/
#include "inputstring.h"
#include "pagewidget.h"
#include "pixmaps.h"
//#include "pixmaps.h"
#include <qlabel.h>
#include <qlayout.h>
......@@ -28,8 +27,8 @@
InputString::InputString( const QString & label,
PageWidget *parent, QCString &s, StringMode m )
: QWidget( parent->getLayout() ), str(s), sm(m), m_values(0), m_index(0)
QWidget *parent, QCString &s, StringMode m )
: QWidget( parent ), str(s), sm(m), m_values(0), m_index(0)
{
if (m==StringFixed)
{
......@@ -38,6 +37,7 @@ InputString::InputString( const QString & label,
lab->setMinimumSize( lab->sizeHint() );
layout->addWidget( lab );
com = new QComboBox( this );
com->setMinimumSize(com->sizeHint());
layout->addWidget( com );
layout->addStretch( 1 );
le=0;
......@@ -57,16 +57,21 @@ InputString::InputString( const QString & label,
layout->addWidget( le,0,1 );
if (m==StringFile || m==StringDir)
{
QPixmap pixmap = QPixmap(m==StringFile ?
file_xpm :
folder_xpm );
//QPixmap pixmap = QPixmap(m==StringFile ?
// file_xpm :
// folder_xpm );
br = new QPushButton( this );
br->setPixmap(pixmap);
br->setMinimumSize( br->sizeHint() );
if (m==StringFile)
{
br->setText("File...");
QToolTip::add(br,"Browse to a file");
}
else
{
br->setText("Folder...");
QToolTip::add(br,"Browse to a folder");
}
layout->addWidget( br,0,2 );
}
else
......@@ -83,8 +88,6 @@ InputString::InputString( const QString & label,
if (br) connect( br, SIGNAL(clicked()), this, SLOT(browse()) );
if (com) connect( com, SIGNAL(activated(const QString &)),
this, SLOT(textChanged(const QString &)) );
parent->addWidget(this);
}
InputString::~InputString()
......
......@@ -26,7 +26,6 @@ class QLabel;
class QLineEdit;
class QPushButton;
class QComboBox;
class PageWidget;
class InputString : public QWidget, public IInput
{
......@@ -39,7 +38,7 @@ class InputString : public QWidget, public IInput
StringFixed=3
};
InputString( const QString &text, PageWidget *parent, QCString &s,
InputString( const QString &text, QWidget *parent, QCString &s,
StringMode m=StringFree );
~InputString();
void setEnabled(bool);
......
......@@ -13,8 +13,7 @@
*/
#include "inputstrlist.h"
#include "pagewidget.h"
#include "pixmaps.h"
//#include "pixmaps.h"
#include <qlabel.h>
#include <qlayout.h>
......@@ -27,8 +26,8 @@
#include <qtooltip.h>
InputStrList::InputStrList( const QString & label,
PageWidget *parent, QStrList &sl, ListMode lm)
: QWidget(parent->getLayout()), strList(sl)
QWidget *parent, QStrList &sl, ListMode lm)
: QWidget(parent), strList(sl)
{
QGridLayout *layout = new QGridLayout( this, 2, 2, 5 );
lab = new QLabel( label, this );
......@@ -42,19 +41,22 @@ InputStrList::InputStrList( const QString & label,
boxlayout->addWidget( le, 1 );
add = new QPushButton( dw );
add->setPixmap( QPixmap( add_xpm ));
//add->setPixmap( QPixmap( add_xpm ));
add->setText( "+" );
add->setMinimumSize( add->sizeHint() );
QToolTip::add(add,"Add item");
boxlayout->addWidget( add );
del = new QPushButton( dw );
del->setPixmap( QPixmap( del_xpm ));
//del->setPixmap( QPixmap( del_xpm ));
del->setText( "-" );
del->setMinimumSize( del->sizeHint() );
QToolTip::add(del,"Delete selected item");
boxlayout->addWidget( del );
upd = new QPushButton( dw );
upd->setPixmap( QPixmap( update_xpm ));
//upd->setPixmap( QPixmap( update_xpm ));
upd->setText( "*" );
upd->setMinimumSize( upd->sizeHint() );
QToolTip::add(upd,"Update selected item");
boxlayout->addWidget( upd );
......@@ -72,7 +74,8 @@ InputStrList::InputStrList( const QString & label,
if (lm&ListFile)
{
brFile = new QPushButton(dw);
brFile->setPixmap( QPixmap(file_xpm) );
//brFile->setPixmap( QPixmap(file_xpm) );
brFile->setText("Select...");
brFile->setMinimumSize(brFile->sizeHint());
QToolTip::add(brFile,"Browse to a file");
boxlayout->addWidget( brFile );
......@@ -80,7 +83,8 @@ InputStrList::InputStrList( const QString & label,
if (lm&ListDir)
{
brDir = new QPushButton(dw);
brDir->setPixmap( QPixmap(folder_xpm) );
//brDir->setPixmap( QPixmap(folder_xpm) );
brDir->setText("Select...");
brDir->setMinimumSize(brDir->sizeHint());
QToolTip::add(brDir,"Browse to a folder");
boxlayout->addWidget( brDir );
......@@ -111,10 +115,6 @@ InputStrList::InputStrList( const QString & label,
}
connect(lb, SIGNAL(selected(const QString &)),
this, SLOT(selectText(const QString &)));
parent->addWidget(this);
strList=sl;
}
void InputStrList::addString()
......
......@@ -24,7 +24,6 @@ class QLabel;
class QLineEdit;
class QPushButton;
class QListBox;
class PageWidget;
class QStrList;
class InputStrList : public QWidget, public IInput
......@@ -38,7 +37,7 @@ class InputStrList : public QWidget, public IInput
ListFileDir=ListFile|ListDir
};
InputStrList( const QString &text, PageWidget *parent,
InputStrList( const QString &text, QWidget *parent,
QStrList &sl, ListMode v=ListString );
~InputStrList() {};
void setEnabled(bool);
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 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.
*
*/
#include <stdio.h>
#include <qtabwidget.h>
#include <qlayout.h>
#include "pagewidget.h"
FrameLayout::FrameLayout(QWidget *parent,const char *name,WFlags f)
: QFrame(parent,name,f)
{
lay = new QVBoxLayout(this,5,3,name);
}
FrameLayout::~FrameLayout()
{
}
void FrameLayout::addStretch(int stretch)
{
lay->addStretch(stretch);
}
void FrameLayout::addWidget(QWidget *w)
{
lay->addWidget(w);
}
PageWidget::PageWidget( QTabWidget *parent, const char *name )
: QScrollView ( parent,name )
{
// the Qt docs say that one has to insert the viewport() as a parent
// here but this does not work! Insert 0 does give the proper result!
lay = new FrameLayout(this);
addChild(lay);
setVScrollBarMode(QScrollView::Auto);
setHScrollBarMode(QScrollView::AlwaysOff);
m_parent=parent;
m_parent->addTab( this, name );
}
void PageWidget::addStretch(int stretch)
{
lay->addStretch(stretch);
//printf("Viewport SizeHint %d,%d\n",viewport()->sizeHint().width(),viewport()->sizeHint().height());
}
void PageWidget::addWidget(QWidget *w)
{
//printf("Adding widget height=%d\n",w->sizeHint().height());
lay->addWidget(w);
}
QWidget *PageWidget::getLayout() const
{
return lay;
}
void PageWidget::resizeEvent(QResizeEvent *e)
{
QScrollView::resizeEvent(e);
//printf("PageWidget::resizeEvent!\n");
lay->resize(viewport()->width(),QMAX(lay->height(),viewport()->height()));
}
void PageWidget::paintEvent(QPaintEvent *e)
{
QScrollView::paintEvent(e);
//printf("PageWidget::paintEvent()\n");
lay->resize(viewport()->width(),QMAX(lay->height(),viewport()->height()));
}
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 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.
*
*/
#include "pixmaps.h"
static const char * const folder_xpm_data[] =
{
"16 16 6 1",
". c None",
"b c #ffff00",
"d c #000000",
"* c #999999",
"a c #cccccc",
"c c #ffffff",
"................",
"................",
"..*****.........",
".*ababa*........",
"*abababa******..",
"*cccccccccccc*d.",
"*cbababababab*d.",
"*cabababababa*d.",
"*cbababababab*d.",
"*cabababababa*d.",
"*cbababababab*d.",
"*cabababababa*d.",
"*cbababababab*d.",
"**************d.",
".dddddddddddddd.",
"................"
};
const char **folder_xpm = (const char **)folder_xpm_data;
static const char* const file_xpm_data[] =
{
"16 16 5 1",
". c #7f7f7f",
"# c None",
"c c #000000",
"b c #bfbfbf",
"a c #ffffff",
"################",
"#..........#####",
"#.aaaaaaaab.####",
"#.aaaaaaaaba.###",
"#.aaaaaaaacccc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.aaaaaaaaaabc##",
"#.bbbbbbbbbbbc##",
"#ccccccccccccc##",
"################"
};
const char **file_xpm = (const char **)file_xpm_data;
static const char * const add_xpm_data[] =
{
"16 16 5 1",
". c None",
"* c #0328f9",
"# c #354396",
"a c #353740",
"c c #999999",
"................",
"......###.......",
"......#*ac......",
"......#*ac......",
"......#*ac......",
"......#*ac......",
".######*a#####..",
".#***********ac.",
".#aaaaa*aaaaaac.",
"..cccc#*acccccc.",
"......#*ac......",
"......#*ac......",
"......#*ac......",
"......#aac......",
".......ccc......",
"................"
};
const char **add_xpm = (const char **)add_xpm_data;
static const char * const del_xpm_data[] =
{
"16 16 5 1",
". c None",
"* c #0328f9",
"# c #354396",
"a c #353740",
"c c #999999",
"................",
"................",
"................",
"................",
"................",
"................",
".#############..",
".#***********ac.",
".aaaaaaaaaaaaac.",
"..ccccccccccccc.",
"................",
"................",
"................",
"................",
"................",
"................"
};
const char **del_xpm = (const char **)del_xpm_data;
static char *update_xpm_data[] =
{
"16 16 5 1",
/* colors */
". c #0328f9",
"# c #354396",
"a c #353740",
"b c None",
"c c #999999",
/* pixels */
"bbbbbbbbbbbbbbbb",
"bbbbbbbb#####acb",
"bbbbbbbb#....abb",
"bbc##cbb#...acbb",
"bb#..abb#....abb",
"bc#..abb#.a..acb",
"b#..acbbaac#..ab",
"b#..abbbcbb#..ab",
"b#..abbbbbb#..ab",
"b#..acbbbbc#..ab",
"bc#..#cbbc#..acb",
"bb#...####...acb",
"bbca........acbb",
"bbbbaa....aaccbb",
"bbbbbcaaaaccbbbb",
"bbbbbbbbbbbbbbbb"
};
const char **update_xpm = (const char **)update_xpm_data;
static const char *fileopen_xpm_data[] =
{
"16 13 5 1",
". c #040404",
"# c #808304",
"a c None",
"b c #f3f704",
"c c #f3f7f3",
"aaaaaaaaa...aaaa",
"aaaaaaaa.aaa.a.a",
"aaaaaaaaaaaaa..a",
"a...aaaaaaaa...a",
".bcb.......aaaaa",
".cbcbcbcbc.aaaaa",
".bcbcbcbcb.aaaaa",
".cbcb...........",
".bcb.#########.a",
".cb.#########.aa",
".b.#########.aaa",
"..#########.aaaa",
"...........aaaaa"
};
const char **fileopen_xpm = (const char **)fileopen_xpm_data;
/* XPM */
static const char *filesave_xpm_data[] =
{
"14 14 4 1",
". c #040404",
"# c #808304",
"a c #bfc2bf",
"b c None",
"..............",
".#.aaaaaaaa.a.",
".#.aaaaaaaa...",
".#.aaaaaaaa.#.",
".#.aaaaaaaa.#.",
".#.aaaaaaaa.#.",
".#.aaaaaaaa.#.",
".##........##.",
".############.",
".##.........#.",
".##......aa.#.",
".##......aa.#.",
".##......aa.#.",
"b............."
};
const char **filesave_xpm = (const char **)filesave_xpm_data;
/* XPM */
static const char *rundoxygen_xpm_data[] =
{
"16 16 11 1",
" c None",
". c #000000",
"+ c #DCDCDC",
"@ c #A0A0A0",
"# c #C3C3C3",
"$ c #808080",
"% c #FFA858",
"& c #FFDCA8",
"* c #FFFFC0",
"= c #FFFFFF",
"- c #585858",
" .. ",
" .. .++. .. ",
" .+@.@##@.@+. ",
" .@+$@%%@$+@. ",
" .$%%&%&%$. ",
" ..+@%&$$%&@+.. ",
".+#@%&%@@&*%@#+.",
".$@+$&*&&=*$+@$.",
" .--+$&*=&$+--. ",
" .$#++$$++#$. ",
" .@=$-$++$-$=@. ",
" .+@-..@@..-@+. ",
" ... .+=. ... ",
" .-$. ",
" .. ",
" "
};
const char **rundoxygen_xpm = (const char **)rundoxygen_xpm_data;
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 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 _PIXMAPS_H
#define _PIXMAPS_H
extern const char** folder_xpm;
extern const char** file_xpm;
extern const char** add_xpm;
extern const char** del_xpm;
extern const char** update_xpm;
extern const char** fileopen_xpm;
extern const char** filesave_xpm;
extern const char** rundoxygen_xpm;
#endif
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 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 VERSION_H
#define VERSION_H
......
......@@ -27,6 +27,7 @@ f_prefix=/usr/local
f_insttool=NO
f_english=NO
f_wizard=NO
f_thread=NO
f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt
while test -n "$1"; do
......@@ -233,21 +234,21 @@ if test "$f_wizard" = YES; then
if test -d "/usr/lib/qt3/lib"; then
if test -d "/usr/lib/qt3/include"; then
if test -x "/usr/lib/qt3/bin/moc"; then
QTDIR="/usr/lib/qt3";
QTDIR="/usr/lib/qt3"
fi
fi
fi
if test -d "/usr/lib/qt2/lib"; then
if test -d "/usr/lib/qt2/include"; then
if test -x "/usr/lib/qt2/bin/moc"; then
QTDIR="/usr/lib/qt2";
QTDIR="/usr/lib/qt2"
fi
fi
fi
if test -d "/usr/lib/qt/lib"; then
if test -d "/usr/lib/qt/include"; then
if test -x "/usr/lib/qt/bin/moc"; then
QTDIR="/usr/lib/qt";
QTDIR="/usr/lib/qt"
fi
fi
fi
......@@ -260,19 +261,22 @@ if test "$f_wizard" = YES; then
exit 2
else
if test ! -d "$QTDIR/lib"; then
echo "QTDIR is set, but library directory does not exist!"
echo "QTDIR is set to $QTDIR, but library directory $QTDIR/lib does not exist!"
exit 2
fi
if test ! -d "$QTDIR/include"; then
echo "QTDIR is set, but include directory does not exist!"
echo "QTDIR is set to $QTDIR, but include directory $QTDIR/include does not exist!"
exit 2
fi
if test ! -x "$QTDIR/bin/moc"; then
echo "QTDIR is set, but the moc tool could not be found in $QTDIR/bin!"
echo "QTDIR is set to $QTDIR, but the moc tool could not be found in $QTDIR/bin!"
exit 2
fi
echo " headers $QTDIR/include,"
echo " libraries $QTDIR/lib"
if test -n "`ls $QTDIR/lib/* | grep qt-mt`"; then
f_thread=YES
fi
fi
fi
......@@ -418,6 +422,7 @@ INSTALL = $f_prefix
INSTTOOL = $f_insttool
DOXYDOCS = ..
DOCDIR = $f_docdir
QTDIR = $QTDIR
EOF
if test "$f_dot" != NO; then
......@@ -505,10 +510,14 @@ for i in $f_inprofiles ; do
EOF
if test "$f_debug" = NO; then
cat $SRC .tmakeconfig | sed -e "s/\$extraopts/release/g" >> $DST
realopts="release"
else
cat $SRC .tmakeconfig | sed -e "s/\$extraopts/debug/g" >> $DST
realopts="debug"
fi
if test "$f_thread" = YES; then
realopts="$realopts thread"
fi
cat $SRC .tmakeconfig | sed -e "s/\$extraopts/$realopts/g" >> $DST
echo " Created $DST from $SRC..."
done
......
......@@ -239,7 +239,7 @@ followed by the descriptions of the tags grouped by category.
<dt>\c CREATE_SUBDIRS <dd>
\addindex CREATE_SUBDIRS
If the \c CREATE_SUBDIRS tag is set to \c YES, then doxygen will create
2 levels of 10 sub-directories under the output directory of each output
4096 sub-directories (in 2 levels) under the output directory of each output
format and will distribute the generated files over these directories.
Enabling this option can be useful when feeding doxygen a huge amount of source
files, where putting all generated files in the same directory would otherwise
......
......@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.3.7-20040616), 29 languages
Currently (version 1.3.7), 29 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, French, German, Greek,
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.7_20040617
Version: 1.3.7_20040704
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -1348,7 +1348,7 @@ void Config::create()
cb = addBool(
"CREATE_SUBDIRS",
"If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n"
"2 levels of 10 sub-directories under the output directory of each output \n"
"4096 sub-directories (in 2 levels) under the output directory of each output \n"
"format and will distribute the generated files over these directories. \n"
"Enabling this option can be useful when feeding doxygen a huge amount of source \n"
"files, where putting all generated files in the same directory would otherwise \n"
......@@ -1361,10 +1361,11 @@ void Config::create()
"documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"(Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n",
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, \n"
"Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, \n"
"Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, \n"
"Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, \n"
"Swedish, and Ukrainian.\n",
"English"
);
#ifdef LANG_BR
......@@ -1513,7 +1514,7 @@ void Config::create()
"If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \n"
"path before files name in the file list and in the header files. If set \n"
"to NO the shortest path that makes the file name unique will be used. \n",
FALSE
TRUE
);
cl = addList(
"STRIP_FROM_PATH",
......
......@@ -193,6 +193,48 @@ static bool convertMapFile(QTextStream &t,const char *mapName,
return TRUE;
}
static QArray<int> * s_newNumber = new QArray<int>();
static int s_max_newNumber=0;
inline int reNumberNode(int number, bool doReNumbering)
{
if (!doReNumbering)
{
return number;
}
else
{
int s = s_newNumber->size();
if (number>=s)
{
int ns=0;
ns = s * 3 / 2 + 5; // new size
if (number>=ns) // number still doesn't fit
{
ns = number * 3 / 2 + 5;
}
s_newNumber->resize(ns);
for (int i=s;i<ns;i++) // clear new part of the array
{
s_newNumber->at(i)=0;
}
}
int i = s_newNumber->at(number);
if (i == 0) // not yet mapped
{
i = ++s_max_newNumber; // start from 1
s_newNumber->at(number) = i;
}
return i;
}
}
static void resetReNumbering()
{
s_max_newNumber=0;
s_newNumber->resize(s_max_newNumber);
}
static bool readBoundingBoxDot(const char *fileName,int *width,int *height)
{
QFile f(fileName);
......@@ -497,14 +539,15 @@ static void writeBoxMemberList(QTextStream &t,char prot,MemberList &ml,ClassDef
void DotNode::writeBox(QTextStream &t,
GraphType gt,
GraphOutputFormat /*format*/,
bool hasNonReachableChildren)
bool hasNonReachableChildren,
bool reNumber)
{
const char *labCol =
m_url.isEmpty() ? "grey75" : // non link
(
(hasNonReachableChildren) ? "red" : "black"
);
t << " Node" << m_number << " [label=\"";
t << " Node" << reNumberNode(m_number,reNumber) << " [label=\"";
if (Config_getBool("UML_LOOK") && (gt==Inheritance || gt==Collaboration))
{
......@@ -567,13 +610,14 @@ void DotNode::writeArrow(QTextStream &t,
DotNode *cn,
EdgeInfo *ei,
bool topDown,
bool pointBack
bool pointBack,
bool reNumber
)
{
t << " Node";
if (topDown) t << cn->number(); else t << m_number;
if (topDown) t << reNumberNode(cn->number(),reNumber); else t << reNumberNode(m_number,reNumber);
t << " -> Node";
if (topDown) t << m_number; else t << cn->number();
if (topDown) t << reNumberNode(m_number,reNumber); else t << reNumberNode(cn->number(),reNumber);
t << " [";
if (pointBack) t << "dir=back,";
t << "color=\"" << edgeColorMap[ei->m_color]
......@@ -603,7 +647,8 @@ void DotNode::write(QTextStream &t,
bool topDown,
bool toChildren,
int distance,
bool backArrows
bool backArrows,
bool reNumber
)
{
//printf("DotNode::write(%d) name=%s this=%p written=%d\n",distance,m_label.data(),this,m_written);
......@@ -620,7 +665,7 @@ void DotNode::write(QTextStream &t,
if (cn->m_distance>distance) hasNonReachableChildren=TRUE;
}
}
writeBox(t,gt,format,hasNonReachableChildren);
writeBox(t,gt,format,hasNonReachableChildren,reNumber);
m_written=TRUE;
if (nl)
{
......@@ -634,9 +679,9 @@ void DotNode::write(QTextStream &t,
if (cn->m_distance<=distance)
{
//printf("write arrow %s%s%s\n",label().data(),backArrows?"<-":"->",cn->label().data());
writeArrow(t,gt,format,cn,dnli2.current(),topDown,backArrows);
writeArrow(t,gt,format,cn,dnli2.current(),topDown,backArrows,reNumber);
}
cn->write(t,gt,format,topDown,toChildren,distance,backArrows);
cn->write(t,gt,format,topDown,toChildren,distance,backArrows,reNumber);
}
}
else // render parents
......@@ -654,10 +699,11 @@ void DotNode::write(QTextStream &t,
pn,
pn->m_edgeInfo->at(pn->m_children->findRef(this)),
FALSE,
backArrows
backArrows,
reNumber
);
}
pn->write(t,gt,format,TRUE,FALSE,distance,backArrows);
pn->write(t,gt,format,TRUE,FALSE,distance,backArrows,reNumber);
}
}
}
......@@ -946,9 +992,10 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
{
if (node->m_subgraphId==n->m_subgraphId)
{
node->write(md5stream,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE);
node->write(md5stream,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE,TRUE);
}
}
resetReNumbering();
uchar md5_sig[16];
QCString sigStr(33);
MD5Buffer((const unsigned char *)buf.ascii(),buf.length(),md5_sig);
......@@ -974,11 +1021,12 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
{
if (node->m_subgraphId==n->m_subgraphId)
{
node->write(t,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE);
node->write(t,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE,TRUE);
}
}
writeGraphFooter(t);
f.close();
resetReNumbering();
QCString dotArgs(maxCmdLine);
dotArgs.sprintf("\"%s\" -T%s -o \"%s\" -Timap -o \"%s\"",
......@@ -1407,7 +1455,8 @@ void writeDotGraph(DotNode *root,
bool lrRank,
bool renderParents,
int distance,
bool backArrows
bool backArrows,
bool reNumber
)
{
// generate the graph description for dot
......@@ -1423,7 +1472,7 @@ void writeDotGraph(DotNode *root,
t << " rankdir=LR;" << endl;
}
root->clearWriteFlag();
root->write(t,gt,format,gt!=DotNode::CallGraph,TRUE,distance,backArrows);
root->write(t,gt,format,gt!=DotNode::CallGraph,TRUE,distance,backArrows,reNumber);
if (renderParents && root->m_parents)
{
//printf("rendering parents!\n");
......@@ -1439,10 +1488,11 @@ void writeDotGraph(DotNode *root,
pn,
pn->m_edgeInfo->at(pn->m_children->findRef(root)),
FALSE,
backArrows
backArrows,
reNumber
);
}
pn->write(t,gt,format,TRUE,FALSE,distance,backArrows);
pn->write(t,gt,format,TRUE,FALSE,distance,backArrows,reNumber);
}
}
writeGraphFooter(t);
......@@ -1462,6 +1512,8 @@ QCString computeMd5Signature(DotNode *root,
bool backArrows
)
{
bool reNumber=TRUE;
//printf("computeMd5Signature\n");
QString buf;
QTextStream md5stream(&buf,IO_WriteOnly);
......@@ -1470,7 +1522,7 @@ QCString computeMd5Signature(DotNode *root,
md5stream << "rankdir=LR;" << endl;
}
root->clearWriteFlag();
root->write(md5stream,gt,format,gt!=DotNode::CallGraph,TRUE,distance,backArrows);
root->write(md5stream,gt,format,gt!=DotNode::CallGraph,TRUE,distance,backArrows,reNumber);
if (renderParents && root->m_parents)
{
QListIterator<DotNode> dnli(*root->m_parents);
......@@ -1485,16 +1537,21 @@ QCString computeMd5Signature(DotNode *root,
pn,
pn->m_edgeInfo->at(pn->m_children->findRef(root)),
FALSE,
backArrows
backArrows,
reNumber
);
}
pn->write(md5stream,gt,format,TRUE,FALSE,distance,backArrows);
pn->write(md5stream,gt,format,TRUE,FALSE,distance,backArrows,reNumber);
}
}
uchar md5_sig[16];
QCString sigStr(33);
MD5Buffer((const unsigned char *)buf.ascii(),buf.length(),md5_sig);
MD5SigToString(md5_sig,sigStr.data(),33);
if (reNumber)
{
resetReNumbering();
}
//printf("md5: %s | file: %s\n",sigStr,baseName.data());
return sigStr;
}
......@@ -1510,6 +1567,7 @@ static bool findMaximalDotGraph(DotNode *root,
bool backArrows /*=TRUE*/
)
{
bool reNumber=TRUE;
int minDistance=1; // min distance that shows only direct children.
int curDistance; //=QMIN(2,maxDist); // current distance to try
int maxDistance=maxDist; // max distance that show whole graph
......@@ -1526,7 +1584,7 @@ static bool findMaximalDotGraph(DotNode *root,
curDistance = (minDistance+maxDistance)/2;
writeDotGraph(root,gt,format,baseName,lrRank,renderParents,
curDistance,backArrows);
curDistance,backArrows,reNumber);
QCString dotArgs(maxCmdLine);
// create annotated dot file
......@@ -1576,8 +1634,13 @@ static bool findMaximalDotGraph(DotNode *root,
hasLRRank,
renderParents,
lastFit,
backArrows
backArrows,
reNumber
);
if (reNumber)
{
resetReNumbering();
}
return TRUE;
}
......
......@@ -65,7 +65,7 @@ class DotNode
void removeChild(DotNode *n);
void removeParent(DotNode *n);
void write(QTextStream &t,GraphType gt,GraphOutputFormat f,
bool topDown,bool toChildren,int maxDistance,bool backArrows);
bool topDown,bool toChildren,int maxDistance,bool backArrows,bool reNumber);
int m_subgraphId;
void clearWriteFlag();
void writeXML(QTextStream &t,bool isClassGraph);
......@@ -76,9 +76,9 @@ class DotNode
private:
void colorConnectedNodes(int curColor);
void writeBox(QTextStream &t,GraphType gt,GraphOutputFormat f,
bool hasNonReachableChildren);
bool hasNonReachableChildren, bool reNumber=FALSE);
void writeArrow(QTextStream &t,GraphType gt,GraphOutputFormat f,DotNode *cn,
EdgeInfo *ei,bool topDown, bool pointBack=TRUE);
EdgeInfo *ei,bool topDown, bool pointBack=TRUE, bool reNumber=FALSE);
const DotNode *findDocNode() const; // only works for acyclic graphs!
int m_number;
QCString m_label; //!< label text
......@@ -102,7 +102,7 @@ class DotNode
DotNode *root, GraphType gt,
GraphOutputFormat f, const QCString &baseName,
bool lrRank, bool renderParents,
int distance, bool backArrows
int distance, bool backArrows, bool reNumber
);
friend QCString computeMd5Signature(
DotNode *root, GraphType gt,
......
......@@ -810,9 +810,9 @@ static void addClassToContext(Entry *root)
}
}
// if the class is not in a namespace then we insert
// it in the file definition
if (!found && fd && (root->section & Entry::COMPOUND_MASK))
// add the class to the file (we do this even if we have already inserted
// it into the namespace)
if (fd && (root->section & Entry::COMPOUND_MASK))
{
//printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n",
// cd->name().data(),
......@@ -1677,15 +1677,14 @@ static MemberDef *addVariableToFile(
nd->insertMember(md);
md->setNamespace(nd);
}
else
{
// find file definition
// add member to the file (we do this even if we have already inserted
// it into the namespace.
if (fd)
{
fd->insertMember(md);
md->setFileDef(fd);
}
}
// add member definition to the list of globals
if (mn)
......@@ -1739,6 +1738,8 @@ static bool isVarWithConstructor(Entry *root)
Definition *ctx = 0;
FileDef *fd = 0;
bool ambig;
int ti;
if (root->parent && root->parent->section&Entry::COMPOUND_MASK)
{ // inside a class
result=FALSE;
......@@ -1760,6 +1761,10 @@ static bool isVarWithConstructor(Entry *root)
type = root->type;
if (type.left(6)=="const ") type=type.right(type.length()-6);
typeIsClass=getResolvedClass(ctx,fd,type)!=0;
if (!typeIsClass && (ti=type.find('<'))!=-1)
{
typeIsClass=getResolvedClass(ctx,fd,type.left(ti))!=0;
}
if (typeIsClass) // now we still have to check if the arguments are
// types or values. Since we do not have complete type info
// we need to rely on heuristics :-(
......@@ -2453,9 +2458,11 @@ static void buildFunctionList(Entry *root)
nd->insertMember(md);
md->setNamespace(nd);
}
else if (fd)
if (fd)
{
// add member to the file
// add member to the file (we do this even if we have already
// inserted it into the namespace)
fd->insertMember(md);
md->setFileDef(fd);
}
......@@ -5367,10 +5374,14 @@ static void findEnums(Entry *root)
nd->insertMember(md);
md->setNamespace(nd);
}
else if (isGlobal)
// even if we have already added the enum to a namespace, we still
// also want to add it to other appropriate places such as file
// or class.
if (isGlobal)
{
md->setDefinition(name);
if (fd==0 && root->tagInfo)
if (fd==0 && root->parent)
{
bool ambig;
QCString filePathName = root->parent->fileName;
......
......@@ -27,6 +27,9 @@
#include "message.h"
#include "config.h"
#define PREFRAG_START "<div class=\"fragment\"><pre>"
#define PREFRAG_END "</pre></div"
static QString htmlAttribsToString(const HtmlAttribList &attribs)
{
QString result;
......@@ -189,14 +192,14 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
switch(s->type())
{
case DocVerbatim::Code: // fall though
m_t << "<pre><div class=\"fragment\">";
m_t << PREFRAG_START;
parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile());
m_t << "</div></pre>";
m_t << PREFRAG_END;
break;
case DocVerbatim::Verbatim:
m_t << "<pre><div class=\"fragment\">";
m_t << PREFRAG_START;
filter(s->text());
m_t << "</div></pre>";
m_t << PREFRAG_END;
break;
case DocVerbatim::HtmlOnly:
m_t << s->text();
......@@ -246,17 +249,17 @@ void HtmlDocVisitor::visit(DocInclude *inc)
switch(inc->type())
{
case DocInclude::Include:
m_t << "<pre><div class=\"fragment\">";
m_t << PREFRAG_START;
parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile());
m_t << "</div></pre>";
m_t << PREFRAG_END;
break;
case DocInclude::IncWithLines:
{
m_t << "<pre><div class=\"fragment\">";
m_t << PREFRAG_START;
QFileInfo cfi( inc->file() );
FileDef fd( cfi.dirPath(), cfi.fileName() );
parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile(), &fd);
m_t << "</div></pre>";
m_t << PREFRAG_END;
}
break;
case DocInclude::DontInclude:
......@@ -265,9 +268,9 @@ void HtmlDocVisitor::visit(DocInclude *inc)
m_t << inc->text();
break;
case DocInclude::VerbInclude:
m_t << "<pre><div class=\"fragment\">";
m_t << PREFRAG_START;
filter(inc->text());
m_t << "</div></pre>";
m_t << PREFRAG_END;
break;
}
}
......@@ -278,7 +281,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
// op->type(),op->isFirst(),op->isLast(),op->text().data());
if (op->isFirst())
{
if (!m_hide) m_t << "<pre><div class=\"fragment\">";
if (!m_hide) m_t << PREFRAG_START;
pushEnabled();
m_hide=TRUE;
}
......@@ -292,7 +295,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
if (op->isLast())
{
popEnabled();
if (!m_hide) m_t << "</div></pre>";
if (!m_hide) m_t << PREFRAG_END;
}
else
{
......
......@@ -5500,12 +5500,23 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<Doc>"*/" {
checkDocs();
current->doc += "\n\n";
//printf("End of docs at line %d: %s\n",yyLineNr,current->doc.data());
if (lastDocContext==SkipCurly && Config_getBool("HIDE_IN_BODY_DOCS"))
if (lastDocContext==SkipCurly)
{
if (!Config_getBool("HIDE_IN_BODY_DOCS"))
{
if (!previous->doc.isEmpty())
{
previous->doc+="<p>";
}
previous->doc += current->doc;
}
current->doc.resize(0);
}
else
{
current->doc += "\n\n";
}
if (current->section==Entry::GROUPDOC_SEC)
{
current_root->addSubEntry(current);
......
......@@ -352,19 +352,4 @@ class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4
{ return english.trPropertyDocumentation(); }
};
/*! \brief Translator adapter class for release 1.2.1
*
* Translator adapter for dealing with translator changes since
* release 1.2.1
*/
class TranslatorAdapter_1_2_1 : public TranslatorAdapter_1_2_2
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.1"); }
virtual QCString trDCOPMethods()
{ return english.trDCOPMethods(); }
};
#endif
......@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_CZ_H
#define TRANSLATOR_CZ_H
// $Id$
//
//
// The first translation from English to Czech was started by
// Vlastimil Havran (1999--2000). The prototype version of Czech strings
......@@ -129,6 +129,7 @@
// 2003/08/13 - Four new methods "since 1.3.3" implemented.
// 2004/02/26 - trLegendDocs() updated.
// 2004/02/27 - Text inside the trCallGraph() corrected.
// 2004/06/16 - The new method "since 1.3.8" implemented.
// Todo
// ----
......@@ -148,7 +149,7 @@
// Windows version. The version which does not call the function is
// probably slightly faster.
class TranslatorCzech : public TranslatorAdapter_1_3_8
class TranslatorCzech : public Translator
{
private:
/*! The decode() inline assumes the source written in the
......@@ -1660,6 +1661,18 @@ class TranslatorCzech : public TranslatorAdapter_1_3_8
{
return decode("Nalezená slova:");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return decode("Zdrojový soubor ") + filename;
}
};
#endif // TRANSLATOR_CZ_H
......@@ -25,7 +25,7 @@
#ifndef TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
class TranslatorSpanish : public TranslatorAdapter_1_3_3
class TranslatorSpanish : public TranslatorAdapter_1_3_8
{
public:
virtual QCString idLanguage()
......
......@@ -19,6 +19,7 @@
*
* Revision history
*
* 2004/06: translated new items used since version 1.3.8
* 2003/11: translated new items used since version 1.3.3
* 2003/06: translated new items used since version 1.3.1
* 2003/04: translated new items used since version 1.3
......@@ -70,7 +71,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class TranslatorItalian : public TranslatorAdapter_1_3_8
class TranslatorItalian : public Translator
{
public:
......@@ -1504,6 +1505,17 @@ class TranslatorItalian : public TranslatorAdapter_1_3_8
return "Corrispondenze:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return " File sorgente " + filename ;
}
};
#endif
......@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
class TranslatorDutch : public TranslatorAdapter_1_3_8
class TranslatorDutch : public Translator
{
public:
QCString idLanguage()
......@@ -1143,6 +1143,17 @@ class TranslatorDutch : public TranslatorAdapter_1_3_8
return "Gevonden:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return filename + " Bron Bestand";
}
};
......
......@@ -21,6 +21,8 @@
#include <windows.h>
#endif
#include <md5.h>
#include "qtbc.h"
#include <qregexp.h>
#include <qfileinfo.h>
......@@ -60,6 +62,19 @@ extern char **environ;
//------------------------------------------------------------------------
// selects one of the name to sub-dir mapping algorithms that is used
// to select a sub directory when CREATE_SUBDIRS is set to YES.
#define ALGO_COUNT 1
#define ALGO_CRC16 2
#define ALGO_MD5 3
//#define MAP_ALGO ALGO_COUNT
//#define MAP_ALGO ALGO_CRC16
#define MAP_ALGO ALGO_MD5
//------------------------------------------------------------------------
struct LookupInfo
{
LookupInfo(ClassDef *cd=0,MemberDef *td=0,QCString ts="")
......@@ -326,24 +341,6 @@ QCString replaceAnonymousScopes(const QCString &s)
// strip annonymous left hand side part of the scope
QCString stripAnonymousNamespaceScope(const QCString &s)
{
#if 0
int oi=0,i=0,p=0;
p=s.find('@');
if (p==-1) return s;
while (s.at(p)=='@' && (i=s.find("::@",p))!=-1 &&
Doxygen::namespaceDict[s.left(i)]!=0) { oi=i; p=i+2; }
if (oi==0)
{
//printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
return s;
}
else
{
//printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
return s.right(s.length()-oi-2);
}
#endif
int i,p=0,l;
QCString newScope;
while ((i=getScopeFragment(s,p,&l))!=-1)
......@@ -3639,6 +3636,11 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
if (createSubdirs)
{
int l1Dir=0,l2Dir=0;
#if MAP_ALGO==ALGO_COUNT
// old algorithm, has the problem that after regeneration the
// output can be located in a different dir.
if (Doxygen::htmlDirMap==0)
{
Doxygen::htmlDirMap=new QDict<int>(100003);
......@@ -3646,20 +3648,31 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
static int curDirNum=0;
int *dirNum = Doxygen::htmlDirMap->find(result);
int l1Dir=0,l2Dir=0;
if (dirNum==0) // new name
{
Doxygen::htmlDirMap->insert(result,new int(curDirNum));
l1Dir = (curDirNum)%10;
l2Dir = ((curDirNum)/10)%10;
l1Dir = (curDirNum)&0xf; // bits 0-3
l2Dir = (curDirNum>>4)&0xff; // bits 4-11
curDirNum++;
}
else // existing name
{
l1Dir = (*dirNum)%10;
l2Dir = ((*dirNum)/10)%10;
}
result.prepend(QCString().sprintf("d%d/d%d/",l1Dir,l2Dir));
l1Dir = (*dirNum)&0xf; // bits 0-3
l2Dir = ((*dirNum)>>4)&0xff; // bits 4-11
}
#elif MAP_ALGO==ALGO_CRC16
// second algorithm based on CRC-16 checksum
int dirNum = qChecksum(result,result.length());
l1Dir = dirNum&0xf;
l2Dir = (dirNum>>4)&0xff;
#elif MAP_ALGO==ALGO_MD5
// third algorithm based on MD5 hash
uchar md5_sig[16];
MD5Buffer((const unsigned char *)result.data(),result.length(),md5_sig);
l1Dir = md5_sig[14]&0xf;
l2Dir = md5_sig[15];
#endif
result.prepend(QCString().sprintf("d%x/d%02x/",l1Dir,l2Dir));
}
return result;
}
......@@ -3690,14 +3703,14 @@ void createSubDirs(QDir &d)
{
if (Config_getBool("CREATE_SUBDIRS"))
{
// create 100 subdirectories
// create 4096 subdirectories
int l1,l2;
for (l1=0;l1<10;l1++)
for (l1=0;l1<16;l1++)
{
d.mkdir(QString().sprintf("d%d",l1));
for (l2=0;l2<10;l2++)
d.mkdir(QString().sprintf("d%x",l1));
for (l2=0;l2<256;l2++)
{
d.mkdir(QString().sprintf("d%d/d%d",l1,l2));
d.mkdir(QString().sprintf("d%x/d%02x",l1,l2));
}
}
}
......
......@@ -1557,6 +1557,7 @@ void generateXML()
}
}
QDir xmlDir(outputDirectory);
createSubDirs(xmlDir);
QCString fileName=outputDirectory+"/index.xsd";
QFile f(fileName);
if (!f.open(IO_WriteOnly))
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -51,6 +51,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -40,6 +40,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_MOC = moc
......
......@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-h,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm -lICE -lSM
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl -lGL
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
TMAKE_LIBS_YACC = -ly
......
......@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL =
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl -lGL
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_X11SM = -lICE -lSM
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LIBS =
TMAKE_LIBS_X11 =
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -47,6 +47,7 @@ END
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS = -lunix
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS = -lC
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm -lICE -lSM
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl -lGL
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lGL -lGLU -lXmu
......
......@@ -45,6 +45,7 @@ TMAKE_LFLAGS_DEBUG =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
......
......@@ -47,9 +47,13 @@
if ( !((Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG")) ) {
Project("TMAKE_LIBDIR_QT") &&
Project('TMAKE_LIBS *= -L$$TMAKE_LIBDIR_QT');
if ( Config("thread") ) {
Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_MT');
} else {
Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
}
}
}
if ( Config("opengl") ) {
AddIncludePath(Project("TMAKE_INCDIR_OPENGL"));
Project("TMAKE_LIBDIR_OPENGL") &&
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS = -lc
TMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lnsl -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu -lXt
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lnsl -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu -lXt
......
......@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS = -lc
TMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lnsl -lm
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu -lXt
......
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