Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
c1605e5b
Commit
c1605e5b
authored
Jul 04, 2004
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.7-20040704
parent
6b195c8d
Changes
72
Hide whitespace changes
Inline
Side-by-side
Showing
72 changed files
with
2220 additions
and
1030 deletions
+2220
-1030
Doxyfile
Doxyfile
+5
-1
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
Makefile.in
addon/doxywizard/Makefile.in
+1
-1
README
addon/doxywizard/README
+1
-5
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+1240
-406
doxywizard.h
addon/doxywizard/doxywizard.h
+265
-84
doxywizard.pro.in
addon/doxywizard/doxywizard.pro.in
+5
-5
expert.cpp
addon/doxywizard/expert.cpp
+264
-0
expert.h
addon/doxywizard/expert.h
+82
-0
inputbool.cpp
addon/doxywizard/inputbool.cpp
+13
-16
inputbool.h
addon/doxywizard/inputbool.h
+1
-1
inputint.cpp
addon/doxywizard/inputint.cpp
+2
-4
inputint.h
addon/doxywizard/inputint.h
+1
-2
inputstring.cpp
addon/doxywizard/inputstring.cpp
+13
-10
inputstring.h
addon/doxywizard/inputstring.h
+1
-2
inputstrlist.cpp
addon/doxywizard/inputstrlist.cpp
+13
-13
inputstrlist.h
addon/doxywizard/inputstrlist.h
+1
-2
pagewidget.cpp
addon/doxywizard/pagewidget.cpp
+0
-86
pixmaps.cpp
addon/doxywizard/pixmaps.cpp
+0
-238
pixmaps.h
addon/doxywizard/pixmaps.h
+0
-27
version.h
addon/doxywizard/version.h
+17
-0
configure
configure
+17
-8
config.doc
doc/config.doc
+1
-1
language.doc
doc/language.doc
+1
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
config.l
src/config.l
+7
-6
dot.cpp
src/dot.cpp
+85
-22
dot.h
src/dot.h
+4
-4
doxygen.cpp
src/doxygen.cpp
+25
-14
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+15
-12
scanner.l
src/scanner.l
+13
-2
translator_adapter.h
src/translator_adapter.h
+0
-15
translator_cz.h
src/translator_cz.h
+15
-2
translator_es.h
src/translator_es.h
+1
-1
translator_it.h
src/translator_it.h
+13
-1
translator_nl.h
src/translator_nl.h
+12
-1
util.cpp
src/util.cpp
+43
-30
xmlgen.cpp
src/xmlgen.cpp
+1
-0
tmake.conf
tmake/lib/aix-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/aix-xlc/tmake.conf
+1
-0
tmake.conf
tmake/lib/beos-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/bsdi-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/dgux-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/freebsd-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/gnu-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/hpux-acc/tmake.conf
+1
-0
tmake.conf
tmake/lib/hpux-cc/tmake.conf
+1
-0
tmake.conf
tmake/lib/hpux-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/irix-64/tmake.conf
+1
-0
tmake.conf
tmake/lib/irix-dcc/tmake.conf
+1
-0
tmake.conf
tmake/lib/irix-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/irix-n32/tmake.conf
+1
-0
tmake.conf
tmake/lib/irix-o32/tmake.conf
+1
-0
tmake.conf
tmake/lib/linux-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/macosx-c++/tmake.conf
+1
-0
tmake.conf
tmake/lib/netbsd-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/openbsd-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/osf1-cxx/tmake.conf
+1
-0
tmake.conf
tmake/lib/osf1-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/qnx-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/sco-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/solaris-cc-gcc/tmake.conf
+1
-0
tmake.conf
tmake/lib/solaris-cc/tmake.conf
+1
-0
tmake.conf
tmake/lib/solaris-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/sunos-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/ultrix-g++/tmake.conf
+1
-0
generic.t
tmake/lib/unix/generic.t
+5
-1
tmake.conf
tmake/lib/unixware-g++/tmake.conf
+1
-0
tmake.conf
tmake/lib/unixware7-cc/tmake.conf
+1
-0
tmake.conf
tmake/lib/unixware7-g++/tmake.conf
+1
-0
No files found.
Doxyfile
View file @
c1605e5b
# Doxyfile 1.3.
5
# Doxyfile 1.3.
7
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Project related configuration options
# Project related configuration options
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
PROJECT_NAME = Doxygen
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
OUTPUT_DIRECTORY = doxygen_docs
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
BRIEF_MEMBER_DESC = YES
...
@@ -15,6 +16,7 @@ ALWAYS_DETAILED_SEC = NO
...
@@ -15,6 +16,7 @@ ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
...
@@ -33,6 +35,7 @@ EXTRACT_ALL = YES
...
@@ -33,6 +35,7 @@ EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_FRIEND_COMPOUNDS = NO
...
@@ -44,6 +47,7 @@ SHOW_INCLUDE_FILES = YES
...
@@ -44,6 +47,7 @@ SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_BUGLIST = YES
...
...
INSTALL
View file @
c1605e5b
DOXYGEN Version 1.3.7-20040
617
DOXYGEN Version 1.3.7-20040
704
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
17 June
2004)
Dimitri van Heesch (
04 July
2004)
README
View file @
c1605e5b
DOXYGEN Version 1.3.7_20040
617
DOXYGEN Version 1.3.7_20040
704
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
17 June
2004)
Dimitri van Heesch (dimitri@stack.nl) (
04 July
2004)
VERSION
View file @
c1605e5b
1.3.7-20040
617
1.3.7-20040
704
addon/doxywizard/Makefile.in
View file @
c1605e5b
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
#
#
all
:
config.h config.l version.cpp Makefile.doxywizard
all
:
config.h config.l version.cpp Makefile.doxywizard
$(MAKE)
-f
Makefile.doxywizard
$@
$(MAKE)
-f
Makefile.doxywizard
QTDIR
=
$(QTDIR)
$@
config.h
:
../../src/config.h
config.h
:
../../src/config.h
$(CP)
../../src/config.h config.h
$(CP)
../../src/config.h config.h
...
...
addon/doxywizard/README
View file @
c1605e5b
Doxywizard is a graphical front-end to read/edit/write doxygen configuration
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.
addon/doxywizard/doxywizard.cpp
View file @
c1605e5b
/******************************************************************************
#include <qlabel.h>
*
#include <qhbox.h>
*
#include <qvbox.h>
*
#include <qlineedit.h>
* 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 <qapplication.h>
#include <qwhatsthis.h>
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <qbuttongroup.h>
#include <qradiobutton.h>
#include <qlayout.h>
#include <qlayout.h>
#include <qtabwidget.h>
#include <qcombobox.h>
#include <qtoolbar.h>
#include <qfiledialog.h>
#include <qtoolbutton.h>
#include <qmessagebox.h>
#include <qtextedit.h>
#include <qprocess.h>
#include <qtimer.h>
#include <qstatusbar.h>
#include <qfileinfo.h>
#include <qpopupmenu.h>
#include <qmenubar.h>
#include <qtooltip.h>
#if defined(Q_OS_MACX)
#include <CoreFoundation/CFBundle.h>
#include <ApplicationServices/ApplicationServices.h>
#undef check
#endif
#include "doxywizard.h"
#include "doxywizard.h"
#include "pagewidget.h"
#include "expert.h"
#include "inputbool.h"
#include "inputstring.h"
#include "inputstrlist.h"
#include "inputint.h"
#include "config.h"
#include "config.h"
#include "version.h"
#include "pixmaps.h"
QString
configFileName
;
const
int
messageTimeout
=
4000
;
//!< status bar message timeout in millisec.
const
int
messageTimeout
=
5000
;
//!< status bar message timeout in millisec.
#if defined(Q_OS_MACX)
QCString
getResourcePath
()
{
// todo: use qApp->applicationDirPath()
QCString
result
;
CFURLRef
pluginRef
=
CFBundleCopyBundleURL
(
CFBundleGetMainBundle
());
CFStringRef
macPath
=
CFURLCopyFileSystemPath
(
pluginRef
,
kCFURLPOSIXPathStyle
);
result
=
CFStringGetCStringPtr
(
macPath
,
CFStringGetSystemEncoding
());
result
+=
"/Contents/Resources/"
;
return
result
;
}
#endif
//-------------------------------------------------------------------------
static
bool
loadConfig
(
QString
loadFile
)
//==========================================================================
Step1
::
Step1
(
QWidget
*
parent
)
:
QWidget
(
parent
,
"Step1"
)
{
{
QFileInfo
fi
(
loadFile
);
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
this
);
if
(
!
fi
.
exists
()
)
layout
->
setMargin
(
4
);
{
layout
->
setSpacing
(
8
);
QMessageBox
::
warning
(
0
,
layout
->
addWidget
(
new
QLabel
(
"Provide some information "
"Warning"
,
"Input file "
+
loadFile
+
"about the project you are documenting"
,
this
));
" does not exist! Starting new file."
,
QWidget
*
w
=
new
QWidget
(
this
);
"ok"
QHBoxLayout
*
bl
=
new
QHBoxLayout
(
w
,
10
);
);
return
FALSE
;
}
// set config values to their defaults
QVBox
*
col1
=
new
QVBox
(
w
);
Config
::
instance
()
->
init
();
col1
->
setSpacing
(
8
);
(
new
QLabel
(
"Project name:"
,
col1
))
->
setAlignment
(
Qt
::
AlignRight
|
Qt
::
AlignVCenter
);
(
new
QLabel
(
"Project version or id:"
,
col1
))
->
setAlignment
(
Qt
::
AlignRight
|
Qt
::
AlignVCenter
);
// parse the config file
QVBox
*
col2
=
new
QVBox
(
w
);
// this will initialize the various Config data members
col2
->
setSpacing
(
8
);
if
(
!
Config
::
instance
()
->
parse
(
loadFile
))
m_projName
=
new
QLineEdit
(
col2
);
{
m_projNumber
=
new
QLineEdit
(
col2
);
QMessageBox
::
warning
(
0
,
"Warning"
,
"Cannot open or read input "
+
loadFile
+
"!"
,
bl
->
addWidget
(
col1
);
"abort"
bl
->
addWidget
(
col2
);
);
return
FALSE
;
layout
->
addWidget
(
w
);
}
Config
::
instance
()
->
convertStrToVal
();
return
TRUE
;
//---------------------------------------------------
QFrame
*
f
=
new
QFrame
(
this
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
layout
->
addWidget
(
f
);
layout
->
addWidget
(
new
QLabel
(
"Specify the directory to "
"scan for source code"
,
this
));
QHBox
*
row
=
new
QHBox
(
this
);
row
->
setSpacing
(
10
);
new
QLabel
(
"Source code directory:"
,
row
);
m_sourceDir
=
new
QLineEdit
(
row
);
m_srcSelectDir
=
new
QPushButton
(
"Select..."
,
row
);
layout
->
addWidget
(
row
);
m_recursive
=
new
QCheckBox
(
"Scan recursively"
,
this
);
m_recursive
->
setChecked
(
TRUE
);
layout
->
addWidget
(
m_recursive
);
//---------------------------------------------------
f
=
new
QFrame
(
this
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
layout
->
addWidget
(
f
);
layout
->
addWidget
(
new
QLabel
(
"Specify the directory where doxygen should "
"put the generated documentation"
,
this
));
row
=
new
QHBox
(
this
);
row
->
setSpacing
(
10
);
new
QLabel
(
"Destination directory:"
,
row
);
m_destDir
=
new
QLineEdit
(
row
);
m_dstSelectDir
=
new
QPushButton
(
"Select..."
,
row
);
layout
->
addWidget
(
row
);
layout
->
addStretch
(
1
);
connect
(
m_srcSelectDir
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
selectSourceDir
()));
connect
(
m_dstSelectDir
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
selectDestinationDir
()));
}
}
static
bool
saveConfig
(
QString
saveFile
)
void
Step1
::
selectSourceDir
(
)
{
{
QFile
f
(
saveFile
);
m_sourceDir
->
setText
(
QFileDialog
::
getExistingDirectory
(
m_sourceDir
->
text
(),
this
));
if
(
!
f
.
open
(
IO_WriteOnly
)
)
}
{
QMessageBox
::
warning
(
0
,
"Warning"
,
"Cannot open file "
+
saveFile
+
" for writing. Nothing saved!."
,
"ok"
);
return
FALSE
;
// failure
}
QTextStream
t
(
&
f
);
void
Step1
::
selectDestinationDir
()
Config
::
instance
()
->
writeTemplate
(
t
,
TRUE
,
FALSE
);
// write brief config file
{
m_destDir
->
setText
(
QFileDialog
::
getExistingDirectory
(
m_destDir
->
text
(),
this
));
}
return
TRUE
;
// success
QString
Step1
::
getProjectName
()
const
{
return
m_projName
->
text
();
}
}
//--------------------------------------------------------------------------
QString
Step1
::
getProjectNumber
()
const
{
return
m_projNumber
->
text
();
}
Wizard
::
Wizard
(
int
argc
,
char
**
argv
)
:
QString
Step1
::
getSourceDir
()
const
QMainWindow
(
0
,
(
QCString
)
"DoxyWizard v"
+
versionString
)
{
{
// File popupmenu
return
m_sourceDir
->
text
();
}
bool
Step1
::
scanRecursively
()
const
{
return
m_recursive
->
isChecked
();
}
QString
Step1
::
getDestinationDir
()
const
{
return
m_destDir
->
text
();
}
void
Step1
::
setProjectName
(
const
QString
&
name
)
{
m_projName
->
setText
(
name
);
}
void
Step1
::
setProjectNumber
(
const
QString
&
num
)
{
m_projNumber
->
setText
(
num
);
}
hasChanged
=
FALSE
;
void
Step1
::
setSourceDir
(
const
QString
&
dir
)
{
fileTools
=
new
QToolBar
(
this
,
"file operations"
);
m_sourceDir
->
setText
(
dir
);
fileTools
->
setLabel
(
"File Operations"
);
}
new
QToolButton
(
QPixmap
(
file_xpm
),
"New File"
,
QString
::
null
,
void
Step1
::
setRecursiveScan
(
bool
enable
)
this
,
SLOT
(
newFile
()),
fileTools
,
"new file"
);
{
m_recursive
->
setChecked
(
enable
);
}
//QToolButton * fileOpen =
void
Step1
::
setDestinationDir
(
const
QString
&
dir
)
new
QToolButton
(
QPixmap
(
fileopen_xpm
),
"Open File"
,
QString
::
null
,
{
this
,
SLOT
(
loadFile
()),
fileTools
,
"open file"
);
m_destDir
->
setText
(
dir
);
}
//QToolButton * fileSave =
new
QToolButton
(
QPixmap
(
filesave_xpm
),
"Save File"
,
QString
::
null
,
this
,
SLOT
(
saveFile
()),
fileTools
,
"save file"
);
//Micha: QToolButton * =
//==========================================================================
new
QToolButton
(
QPixmap
(
rundoxygen_xpm
),
"Save and Run doxygen"
,
QString
::
null
,
this
,
SLOT
(
runDoxygen
()),
fileTools
,
"save and run doxygen"
);
Step2
::
Step2
(
QWidget
*
parent
)
:
QWidget
(
parent
,
"Step2"
)
{
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
this
);
layout
->
setSpacing
(
8
);
QWhatsThis
::
whatsThisButton
(
fileTools
);
m_extractMode
=
new
QButtonGroup
(
"Select the desired extraction mode:"
,
this
);
QGridLayout
*
gbox
=
new
QGridLayout
(
m_extractMode
,
4
,
1
,
8
,
0
);
gbox
->
addRowSpacing
(
0
,
fontMetrics
().
lineSpacing
()
+
2
);
gbox
->
addWidget
(
new
QRadioButton
(
"Documented entities only"
,
m_extractMode
),
1
,
0
);
gbox
->
addWidget
(
new
QRadioButton
(
"All entities"
,
m_extractMode
),
2
,
0
);
gbox
->
addWidget
(
m_crossRef
=
new
QCheckBox
(
"Include cross-referenced source code in the output"
,
m_extractMode
),
3
,
0
);
m_extractMode
->
setButton
(
0
);
layout
->
addWidget
(
m_extractMode
);
QPopupMenu
*
file
=
new
QPopupMenu
;
//---------------------------------------------------
file
->
insertItem
(
QIconSet
(
QPixmap
(
file_xpm
)),
QFrame
*
f
=
new
QFrame
(
this
);
"&New"
,
this
,
SLOT
(
newFile
()),
CTRL
+
Key_N
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
file
->
insertItem
(
QIconSet
(
QPixmap
(
fileopen_xpm
)),
layout
->
addWidget
(
f
);
"&Load"
,
this
,
SLOT
(
loadFile
()),
CTRL
+
Key_O
);
file
->
insertSeparator
();
m_optimizeLang
=
new
QButtonGroup
(
"Select programming language to optimize the results for"
,
this
);
file
->
insertItem
(
QIconSet
(
QPixmap
(
filesave_xpm
)),
gbox
=
new
QGridLayout
(
m_optimizeLang
,
4
,
1
,
8
,
0
);
"&Save"
,
this
,
SLOT
(
saveFile
()),
CTRL
+
Key_S
);
gbox
->
addRowSpacing
(
0
,
fontMetrics
().
lineSpacing
()
+
2
);
file
->
insertItem
(
"&Save as ..."
,
this
,
SLOT
(
saveAsFile
())
);
gbox
->
addWidget
(
new
QRadioButton
(
"Optimize for C++ output"
,
m_optimizeLang
),
1
,
0
);
file
->
insertSeparator
();
gbox
->
addWidget
(
new
QRadioButton
(
"Optimize for Java output"
,
m_optimizeLang
),
2
,
0
);
file
->
insertItem
(
"&Quit"
,
this
,
SLOT
(
quit
()),
CTRL
+
Key_Q
);
gbox
->
addWidget
(
new
QRadioButton
(
"Optimize for C output"
,
m_optimizeLang
),
3
,
0
);
m_optimizeLang
->
setButton
(
0
);
// Doxygen popupmenu
layout
->
addWidget
(
m_optimizeLang
);
QPopupMenu
*
doxygen
=
new
QPopupMenu
;
int
itemIndex
=
doxygen
->
insertItem
(
QIconSet
(
QPixmap
(
rundoxygen_xpm
)),
layout
->
addStretch
(
1
);
"&Run"
,
this
,
SLOT
(
runDoxygen
()),
CTRL
+
Key_R
);
doxygen
->
setWhatsThis
(
itemIndex
,
"Run doxygen with the current configuration file..."
);
connect
(
m_crossRef
,
SIGNAL
(
stateChanged
(
int
)),
parent
,
SLOT
(
changeCrossRefState
(
int
)));
// Help popupmenu
}
QPopupMenu
*
help
=
new
QPopupMenu
;
help
->
insertItem
(
"&About"
,
this
,
SLOT
(
about
()),
Key_F1
);
bool
Step2
::
crossReferencingEnabled
()
const
help
->
insertItem
(
"What's &This"
,
this
,
SLOT
(
whatsThis
()),
SHIFT
+
Key_F1
);
{
return
m_crossRef
->
isOn
();
// menubar definition
}
menuBar
()
->
insertItem
(
"&File"
,
file
);
menuBar
()
->
insertItem
(
"&Doxygen"
,
doxygen
);
void
Step2
::
enableCrossReferencing
()
menuBar
()
->
insertSeparator
();
{
menuBar
()
->
insertItem
(
"&Help"
,
help
);
m_crossRef
->
setChecked
(
TRUE
);
}
statusBar
()
->
message
(
"Welcome to DoxyWizard"
,
messageTimeout
);
bool
Step2
::
extractAll
()
const
cw
=
new
ConfigFile
(
this
);
{
connect
(
cw
,
SIGNAL
(
changed
()),
this
,
SLOT
(
changed
()));
return
m_extractMode
->
selectedId
()
==
1
;
setCentralWidget
(
cw
);
}
cw
->
show
();
bool
Step2
::
crossReferencing
()
const
if
(
argc
==
2
)
{
{
return
m_crossRef
->
isChecked
();
loadFile
(
argv
[
1
]);
}
OptLang
Step2
::
optimizeFor
()
const
{
switch
(
m_optimizeLang
->
selectedId
())
{
case
0
:
return
Lang_Cpp
;
case
1
:
return
Lang_Java
;
case
2
:
return
Lang_C
;
}
}
else
return
Lang_Cpp
;
}
void
Step2
::
setExtractAll
(
bool
enable
)
{
m_extractMode
->
setButton
(
enable
?
1
:
0
);
}
void
Step2
::
setCrossReferencing
(
bool
enable
)
{
m_crossRef
->
setChecked
(
enable
);
}
void
Step2
::
setOptimizeFor
(
OptLang
lang
)
{
switch
(
lang
)
{
{
newFile
();
case
Lang_Cpp
:
m_optimizeLang
->
setButton
(
0
);
break
;
case
Lang_Java
:
m_optimizeLang
->
setButton
(
1
);
break
;
case
Lang_C
:
m_optimizeLang
->
setButton
(
2
);
break
;
}
}
refreshCaption
();
}
resize
(
640
,
480
);
//==========================================================================
Step3
::
Step3
(
QWidget
*
parent
)
:
QWidget
(
parent
,
"Step3"
)
{
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
this
);
QButtonGroup
*
bg
=
new
QButtonGroup
(
"Output format(s) to generate"
,
this
);
QGridLayout
*
gbox
=
new
QGridLayout
(
bg
,
8
,
1
,
8
,
0
);
gbox
->
addRowSpacing
(
0
,
fontMetrics
().
lineSpacing
()
+
2
);
gbox
->
addWidget
(
m_htmlEnabled
=
new
QCheckBox
(
"HTML"
,
bg
),
1
,
0
);
QWidget
*
w
=
new
QWidget
(
bg
);
QHBoxLayout
*
bl
=
new
QHBoxLayout
(
w
);
m_htmlOptions
=
new
QButtonGroup
(
w
);
m_htmlOptions
->
hide
();
m_htmlOptionBox
=
new
QVBox
(
w
);
m_htmlOptions
->
insert
(
new
QRadioButton
(
"plain HTML"
,
m_htmlOptionBox
));
m_htmlOptions
->
insert
(
new
QRadioButton
(
"with frames and a navigation tree"
,
m_htmlOptionBox
));
m_htmlOptions
->
insert
(
new
QRadioButton
(
"prepare for compressed HTML (.chm)"
,
m_htmlOptionBox
));
m_htmlOptions
->
insert
(
m_searchEnabled
=
new
QCheckBox
(
"With search function (requires PHP enabled web server)"
,
m_htmlOptionBox
));
bl
->
addSpacing
(
30
);
bl
->
addWidget
(
m_htmlOptionBox
);
m_htmlOptions
->
setButton
(
0
);
m_htmlOptionBox
->
setEnabled
(
TRUE
);
gbox
->
addWidget
(
w
,
2
,
0
);
gbox
->
addWidget
(
m_latexEnabled
=
new
QCheckBox
(
"LaTeX"
,
bg
),
3
,
0
);
w
=
new
QWidget
(
bg
);
bl
=
new
QHBoxLayout
(
w
);
m_texOptions
=
new
QButtonGroup
(
w
);
m_texOptions
->
hide
();
m_texOptionBox
=
new
QVBox
(
w
);
m_texOptions
->
insert
(
new
QRadioButton
(
"as intermediate format for hyperlinked PDF"
,
m_texOptionBox
));
m_texOptions
->
insert
(
new
QRadioButton
(
"as intermediate format for PDF"
,
m_texOptionBox
));
m_texOptions
->
insert
(
new
QRadioButton
(
"as intermediate format for PostScript"
,
m_texOptionBox
));
bl
->
addSpacing
(
30
);
bl
->
addWidget
(
m_texOptionBox
);
m_texOptions
->
setButton
(
0
);
m_texOptionBox
->
setEnabled
(
FALSE
);
gbox
->
addWidget
(
w
,
4
,
0
);
gbox
->
addWidget
(
m_manEnabled
=
new
QCheckBox
(
"Man pages"
,
bg
),
5
,
0
);
gbox
->
addWidget
(
m_rtfEnabled
=
new
QCheckBox
(
"Rich Text Format (RTF)"
,
bg
),
6
,
0
);
gbox
->
addWidget
(
m_xmlEnabled
=
new
QCheckBox
(
"XML"
,
bg
),
7
,
0
);
bg
->
setButton
(
0
);
layout
->
addWidget
(
bg
);
//w = new QWidget( this );
//bl = new QHBoxLayout(w);
//bl->addWidget(new QLabel("Select the output language:",w));
//m_outputLang = new QComboBox(w);
//m_outputLang->setMinimumSize(m_outputLang->sizeHint());
//bl->setSpacing(10);
//bl->addWidget(m_outputLang);
//bl->addStretch(1);
//m_outputLang->insertItem("English");
//m_outputLang->insertItem("Dutch");
//m_outputLang->insertItem("German");
//m_outputLang->insertItem("Spanish");
//m_outputLang->insertItem("French");
//m_outputLang->insertItem("Chinese");
//m_outputLang->insertItem("Japanese");
//m_outputLang->insertItem("Korean");
//layout->addWidget(w);
layout
->
addStretch
(
1
);
connect
(
m_latexEnabled
,
SIGNAL
(
stateChanged
(
int
)),
this
,
SLOT
(
latexStateChange
(
int
)));
connect
(
m_htmlEnabled
,
SIGNAL
(
stateChanged
(
int
)),
this
,
SLOT
(
htmlStateChange
(
int
)));
}
}
void
Wizard
::
newFile
(
)
void
Step3
::
latexStateChange
(
int
state
)
{
{
if
(
hasChanged
)
if
(
state
==
QButton
::
On
)
{
{
switch
(
QMessageBox
::
warning
(
this
,
"DoxyWizard"
,
m_texOptionBox
->
setEnabled
(
TRUE
);
"Start a new file and lose changes?"
,
}
"Yes"
,
"No"
,
0
,
0
,
1
))
else
if
(
state
==
QButton
::
Off
)
{
{
case
0
:
m_texOptionBox
->
setEnabled
(
FALSE
);
break
;
default
:
// command aborted by the user
return
;
}
}
}
Config
::
instance
()
->
init
();
configFileName
=
"Doxyfile"
;
cw
->
init
();
}
}
void
Wizard
::
loadFile
(
const
char
*
fileNam
e
)
void
Step3
::
htmlStateChange
(
int
stat
e
)
{
{
if
(
fileName
==
0
)
if
(
state
==
QButton
::
On
)
{
{
configFileName
=
QFileDialog
::
getOpenFileName
(
);
m_htmlOptionBox
->
setEnabled
(
TRUE
);
}
}
else
else
if
(
state
==
QButton
::
Off
)
{
m_htmlOptionBox
->
setEnabled
(
FALSE
);
}
}
bool
Step3
::
htmlEnabled
()
const
{
return
m_htmlEnabled
->
isChecked
();
}
bool
Step3
::
latexEnabled
()
const
{
return
m_latexEnabled
->
isChecked
();
}
bool
Step3
::
manEnabled
()
const
{
return
m_manEnabled
->
isChecked
();
}
bool
Step3
::
rtfEnabled
()
const
{
return
m_rtfEnabled
->
isChecked
();
}
bool
Step3
::
xmlEnabled
()
const
{
return
m_xmlEnabled
->
isChecked
();
}
bool
Step3
::
searchEnabled
()
const
{
return
m_searchEnabled
->
isChecked
();
}
HtmlStyle
Step3
::
htmlStyle
()
const
{
switch
(
m_htmlOptions
->
selectedId
())
{
{
configFileName
=
fileName
;
case
0
:
return
HS_Plain
;
case
1
:
return
HS_TreeView
;
case
2
:
return
HS_CHM
;
}
}
return
HS_Plain
;
}
if
(
!
configFileName
.
isNull
()
)
TexStyle
Step3
::
texStyle
()
const
{
switch
(
m_texOptions
->
selectedId
())
{
{
//initData( configFileName );
case
0
:
return
TS_PDFHyper
;
loadConfig
(
configFileName
);
case
1
:
return
TS_PDF
;
cw
->
init
();
case
2
:
return
TS_PS
;
}
return
TS_PDFHyper
;
}
statusBar
()
->
message
(
configFileName
,
messageTimeout
);
void
Step3
::
setHtmlEnabled
(
bool
enable
)
}
{
m_htmlEnabled
->
setChecked
(
enable
);
}
}
void
Wizard
::
loadFile
(
)
void
Step3
::
setLatexEnabled
(
bool
enable
)
{
{
if
(
hasChanged
)
m_latexEnabled
->
setChecked
(
enable
);
}
void
Step3
::
setManEnabled
(
bool
enable
)
{
m_manEnabled
->
setChecked
(
enable
);
}
void
Step3
::
setRtfEnabled
(
bool
enable
)
{
m_rtfEnabled
->
setChecked
(
enable
);
}
void
Step3
::
setXmlEnabled
(
bool
enable
)
{
m_xmlEnabled
->
setChecked
(
enable
);
}
void
Step3
::
setSearchEnabled
(
bool
enable
)
{
m_searchEnabled
->
setChecked
(
enable
);
}
void
Step3
::
setHtmlStyle
(
HtmlStyle
style
)
{
switch
(
style
)
{
{
switch
(
QMessageBox
::
warning
(
case
HS_Plain
:
m_htmlOptions
->
setButton
(
0
);
break
;
this
,
"DoxyWizard"
,
"Load a new file and lose changes?"
,
case
HS_TreeView
:
m_htmlOptions
->
setButton
(
1
);
break
;
"Yes"
,
"No"
,
0
,
0
,
1
))
case
HS_CHM
:
m_htmlOptions
->
setButton
(
2
);
break
;
{
case
0
:
break
;
default
:
// command aborted by the user
return
;
}
}
}
loadFile
(
0
);
}
}
void
Wizard
::
saveFile
(
)
void
Step3
::
setTexStyle
(
TexStyle
style
)
{
{
//printf("configFileName=`%s'\n",configFileName.data());
switch
(
style
)
if
(
configFileName
.
isEmpty
())
{
{
saveAsFile
();
case
TS_PDFHyper
:
m_texOptions
->
setButton
(
0
);
break
;
return
;
case
TS_PDF
:
m_texOptions
->
setButton
(
1
);
break
;
case
TS_PS
:
m_texOptions
->
setButton
(
2
);
break
;
}
}
else
}
//==========================================================================
Step4
::
Step4
(
QWidget
*
parent
)
:
QWidget
(
parent
,
"Step4"
)
{
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
this
);
m_diagramMode
=
new
QButtonGroup
(
"Diagrams to generate"
,
this
);
QGridLayout
*
gbox
=
new
QGridLayout
(
m_diagramMode
,
5
,
1
,
8
,
0
);
gbox
->
addRowSpacing
(
0
,
fontMetrics
().
lineSpacing
()
+
2
);
gbox
->
addWidget
(
new
QRadioButton
(
"No diagrams"
,
m_diagramMode
),
1
,
0
);
gbox
->
addWidget
(
new
QRadioButton
(
"Use built-in class diagram generator"
,
m_diagramMode
),
2
,
0
);
gbox
->
addWidget
(
new
QRadioButton
(
"Use dot tool from the GraphViz package to generate"
,
m_diagramMode
),
3
,
0
);
QWidget
*
w
=
new
QWidget
(
m_diagramMode
);
QHBoxLayout
*
bl
=
new
QHBoxLayout
(
w
);
QButtonGroup
*
dotGroup
=
new
QButtonGroup
(
w
);
dotGroup
->
hide
();
m_dotOptions
=
new
QVBox
(
w
);
dotGroup
->
insert
(
m_dotClass
=
new
QCheckBox
(
"Class diagrams"
,
m_dotOptions
));
dotGroup
->
insert
(
m_dotCollaboration
=
new
QCheckBox
(
"Collaboration diagrams"
,
m_dotOptions
));
dotGroup
->
insert
(
m_dotInclude
=
new
QCheckBox
(
"Include dependency graphs"
,
m_dotOptions
));
dotGroup
->
insert
(
m_dotIncludedBy
=
new
QCheckBox
(
"Included by dependency graphs"
,
m_dotOptions
));
dotGroup
->
insert
(
m_dotInheritance
=
new
QCheckBox
(
"Overall Class hierarchy"
,
m_dotOptions
));
dotGroup
->
insert
(
m_dotCall
=
new
QCheckBox
(
"Call graphs"
,
m_dotOptions
));
bl
->
addSpacing
(
30
);
bl
->
addWidget
(
m_dotOptions
);
dotGroup
->
setButton
(
0
);
m_dotOptions
->
setEnabled
(
FALSE
);
gbox
->
addWidget
(
w
,
4
,
0
);
m_diagramMode
->
setButton
(
1
);
layout
->
addWidget
(
m_diagramMode
);
layout
->
addStretch
(
1
);
connect
(
m_diagramMode
,
SIGNAL
(
clicked
(
int
)),
this
,
SLOT
(
diagramModeChanged
(
int
)));
connect
(
m_dotCall
,
SIGNAL
(
stateChanged
(
int
)),
parent
,
SLOT
(
changeCallGraphState
(
int
)));
}
void
Step4
::
diagramModeChanged
(
int
buttonId
)
{
m_dotOptions
->
setEnabled
(
buttonId
==
2
);
}
void
Step4
::
disableCallGraphs
()
{
m_dotCall
->
setChecked
(
FALSE
);
}
bool
Step4
::
callGraphEnabled
()
const
{
return
m_dotCall
->
isOn
();
}
DiagramMode
Step4
::
diagramMode
()
const
{
switch
(
m_diagramMode
->
selectedId
())
{
{
saveConfig
(
configFileName
);
case
0
:
return
DM_None
;
statusBar
()
->
message
(
configFileName
+
" saved"
,
messageTimeout
);
case
1
:
return
DM_Builtin
;
case
2
:
return
DM_Dot
;
}
}
hasChanged
=
FALSE
;
return
DM_None
;
refreshCaption
();
}
bool
Step4
::
classDiagram
()
const
{
return
m_dotClass
->
isChecked
();
}
bool
Step4
::
collaborationDiagram
()
const
{
return
m_dotCollaboration
->
isChecked
();
}
bool
Step4
::
includeGraph
()
const
{
return
m_dotInclude
->
isChecked
();
}
bool
Step4
::
includedByGraph
()
const
{
return
m_dotIncludedBy
->
isChecked
();
}
bool
Step4
::
inheritanceGraph
()
const
{
return
m_dotInheritance
->
isChecked
();
}
}
void
Wizard
::
saveAsFile
()
bool
Step4
::
callGraph
()
const
{
{
configFileName
=
QFileDialog
::
getSaveFileName
();
return
m_dotCall
->
isChecked
();
if
(
configFileName
.
isNull
())
}
void
Step4
::
setDiagramMode
(
DiagramMode
mode
)
{
switch
(
mode
)
{
{
statusBar
()
->
message
(
"Save aborted"
,
messageTimeout
);
case
DM_None
:
m_diagramMode
->
setButton
(
0
);
break
;
return
;
// operation cancelled by the user
case
DM_Builtin
:
m_diagramMode
->
setButton
(
1
);
break
;
case
DM_Dot
:
m_diagramMode
->
setButton
(
2
);
break
;
}
}
}
saveConfig
(
configFileName
);
void
Step4
::
setClassDiagram
(
bool
enable
)
statusBar
()
->
message
(
"Saved as "
+
configFileName
,
messageTimeout
);
{
m_dotClass
->
setChecked
(
enable
);
}
}
//Micha
void
Step4
::
setCollaborationDiagram
(
bool
enable
)
// TODO: Use QProcess to show the output in a window
void
Wizard
::
runDoxygen
()
{
{
saveFile
();
m_dotCollaboration
->
setChecked
(
enable
);
QString
orgDir
=
QDir
::
currentDirPath
();
}
QFileInfo
fi
(
configFileName
);
// cd to the config dir
void
Step4
::
setIncludeGraph
(
bool
enable
)
QDir
::
setCurrent
(
fi
.
dirPath
());
{
// run doxygen on the config file
m_dotInclude
->
setChecked
(
enable
);
QString
s
=
"doxygen
\"
"
+
fi
.
fileName
()
+
"
\"
"
;
}
// actually run the exe
system
((
const
char
*
)
s
);
void
Step4
::
setIncludedByGraph
(
bool
enable
)
statusBar
()
->
message
(
"doxygen completed: "
+
configFileName
,
messageTimeout
);
{
hasChanged
=
FALSE
;
m_dotIncludedBy
->
setChecked
(
enable
);
refreshCaption
();
}
QDir
::
setCurrent
(
orgDir
);
}
void
Step4
::
setInheritanceGraph
(
bool
enable
)
{
m_dotInheritance
->
setChecked
(
enable
);
}
void
Step4
::
setCallGraph
(
bool
enable
)
{
m_dotCall
->
setChecked
(
enable
);
}
void
Wizard
::
quit
()
//==========================================================================
Wizard
::
Wizard
(
QWidget
*
parent
=
0
)
:
QTabDialog
(
parent
)
{
addTab
(
m_step1
=
new
Step1
(
this
),
"Project"
);
addTab
(
m_step2
=
new
Step2
(
this
),
"Mode"
);
addTab
(
m_step3
=
new
Step3
(
this
),
"Output"
);
addTab
(
m_step4
=
new
Step4
(
this
),
"Diagrams"
);
setCancelButton
();
}
void
Wizard
::
changeCallGraphState
(
int
state
)
{
{
if
(
hasChanged
)
if
(
state
==
QButton
::
On
&&
!
m_step2
->
crossReferencingEnabled
()
)
{
{
switch
(
QMessageBox
::
warning
(
this
,
"DoxyWizard"
,
"Quit and lose changes?"
,
if
(
QMessageBox
::
question
(
this
,
"This option depends on another option"
,
"Yes"
,
"No"
,
0
,
0
,
1
))
"The call graph option requires that cross-referencing "
"of source code is enabled.
\n
Do you want to enable this "
"option?"
,
QMessageBox
::
Yes
,
QMessageBox
::
No
)
==
QMessageBox
::
Yes
)
{
{
case
0
:
m_step2
->
enableCrossReferencing
();
qApp
->
quit
();
}
break
;
else
case
1
:
{
break
;
m_step4
->
disableCallGraphs
()
;
}
}
}
}
else
}
void
Wizard
::
changeCrossRefState
(
int
state
)
{
if
(
state
==
QButton
::
Off
&&
m_step4
->
callGraphEnabled
())
{
{
qApp
->
quit
();
if
(
QMessageBox
::
question
(
this
,
"Another option depends on this one"
,
"The call graph option requires that cross-referencing "
"of source code is enabled.
\n
Do you want to disable the call "
"graph option?"
,
QMessageBox
::
Yes
,
QMessageBox
::
No
)
==
QMessageBox
::
Yes
)
{
m_step4
->
disableCallGraphs
();
}
else
{
m_step2
->
enableCrossReferencing
();
}
}
}
}
}
void
Wizard
::
changed
()
//==========================================================================
MainWidget
::
MainWidget
(
QWidget
*
parent
)
:
QMainWindow
(
parent
,
"MainWidget"
)
{
{
hasChanged
=
TRUE
;
setCaption
(
"Doxygen GUI frontend"
);
refreshCaption
();
// initialize config settings
Config
::
instance
()
->
init
();
Config
::
instance
()
->
check
();
QWidget
*
w
=
new
QWidget
(
this
);
setCentralWidget
(
w
);
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
w
);
layout
->
setMargin
(
10
);
QPopupMenu
*
file
=
new
QPopupMenu
(
this
);
file
->
insertItem
(
"Open..."
,
this
,
SLOT
(
loadConfigFile
()),
CTRL
+
Key_O
);
file
->
insertItem
(
"Save As..."
,
this
,
SLOT
(
saveConfigFile
()),
CTRL
+
Key_S
);
m_recentMenu
=
new
QPopupMenu
;
file
->
insertItem
(
"&Recent configurations"
,
m_recentMenu
);
connect
(
m_recentMenu
,
SIGNAL
(
activated
(
int
)),
this
,
SLOT
(
openRecent
(
int
)));
file
->
insertItem
(
"Set as default..."
,
this
,
SLOT
(
saveDefaults
())
);
file
->
insertItem
(
"Reset..."
,
this
,
SLOT
(
resetConfig
())
);
file
->
insertItem
(
"Quit"
,
this
,
SLOT
(
quit
()),
CTRL
+
Key_Q
);
QPopupMenu
*
help
=
new
QPopupMenu
(
this
);
#if defined(Q_OS_MACX)
help
->
insertItem
(
"Online manual"
,
this
,
SLOT
(
manual
()),
Key_F1
);
#endif
help
->
insertItem
(
"About"
,
this
,
SLOT
(
about
())
);
menuBar
()
->
insertItem
(
"File"
,
file
);
menuBar
()
->
insertItem
(
"Help"
,
help
);
//---------------------------------------------------
QVBox
*
heading
=
new
QVBox
(
w
);
QLabel
*
l
=
new
QLabel
(
"Step 1: Configure doxygen"
,
heading
);
QFrame
*
f
=
new
QFrame
(
heading
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
//f->setFixedSize(l->sizeHint().width(),f->sizeHint().height());
layout
->
addWidget
(
heading
);
layout
->
addSpacing
(
10
);
l
=
new
QLabel
(
"Choose one of the following ways to configure doxygen"
,
w
);
layout
->
addWidget
(
l
);
layout
->
addSpacing
(
5
);
QHBoxLayout
*
hbl
=
new
QHBoxLayout
(
layout
);
hbl
->
setSpacing
(
8
);
m_wizard
=
new
QPushButton
(
"Wizard..."
,
w
);
QToolTip
::
add
(
m_wizard
,
"Quickly configure the most important settings"
);
hbl
->
addWidget
(
m_wizard
);
m_expert
=
new
QPushButton
(
"Expert..."
,
w
);
QToolTip
::
add
(
m_expert
,
"Determine all configuration settings in detail"
);
hbl
->
addWidget
(
m_expert
);
m_load
=
new
QPushButton
(
"Load..."
,
w
);
QToolTip
::
add
(
m_load
,
"Load the configuration settings from file"
);
hbl
->
addWidget
(
m_load
);
hbl
->
addStretch
(
1
);
//---------------------------------------------------
heading
=
new
QVBox
(
w
);
l
=
new
QLabel
(
"Step 2: Save the configuration file"
,
heading
);
f
=
new
QFrame
(
heading
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
//f->setFixedSize(l->sizeHint().width(),f->sizeHint().height());
layout
->
addSpacing
(
15
);
layout
->
addWidget
(
heading
);
layout
->
addSpacing
(
5
);
QGridLayout
*
grid
=
new
QGridLayout
(
layout
,
1
,
2
,
10
);
m_save
=
new
QPushButton
(
"Save..."
,
w
);
m_save
->
setFixedSize
(
m_save
->
sizeHint
());
grid
->
addWidget
(
m_save
,
0
,
0
);
grid
->
addWidget
(
m_saveStatus
=
new
QLabel
(
w
),
0
,
1
);
m_saveStatus
->
setTextFormat
(
Qt
::
RichText
);
//---------------------------------------------------
heading
=
new
QVBox
(
w
);
l
=
new
QLabel
(
"Step 3: Specify the directory from which to run doxygen"
,
heading
);
f
=
new
QFrame
(
heading
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
//f->setFixedSize(l->sizeHint().width(),f->sizeHint().height());
layout
->
addSpacing
(
15
);
layout
->
addWidget
(
heading
);
layout
->
addSpacing
(
5
);
QHBoxLayout
*
row
=
new
QHBoxLayout
(
layout
);
row
->
setSpacing
(
10
);
row
->
addWidget
(
new
QLabel
(
"Working directory:"
,
w
));
m_workingDir
=
new
QLineEdit
(
w
);
m_selWorkingDir
=
new
QPushButton
(
"Select..."
,
w
);
row
->
addWidget
(
m_workingDir
,
1
);
row
->
addWidget
(
m_selWorkingDir
);
//---------------------------------------------------
heading
=
new
QVBox
(
w
);
l
=
new
QLabel
(
"Step 4: Run doxygen"
,
heading
);
f
=
new
QFrame
(
heading
);
f
->
setFrameStyle
(
QFrame
::
HLine
|
QFrame
::
Sunken
);
//f->setFixedSize(l->sizeHint().width(),f->sizeHint().height());
layout
->
addSpacing
(
15
);
layout
->
addWidget
(
heading
);
layout
->
addSpacing
(
5
);
row
=
new
QHBoxLayout
(
layout
);
row
->
setSpacing
(
10
);
m_run
=
new
QPushButton
(
"Start"
,
w
);
row
->
addWidget
(
m_run
);
row
->
addWidget
(
m_runStatus
=
new
QLabel
(
"Status: not running"
,
w
));
row
->
addStretch
(
1
);
m_run
->
setEnabled
(
FALSE
);
m_runStatus
->
setEnabled
(
FALSE
);
m_saveLog
=
new
QPushButton
(
"Save log..."
,
w
);
m_saveLog
->
setEnabled
(
FALSE
);
row
->
addWidget
(
m_saveLog
);
layout
->
addSpacing
(
8
);
layout
->
addWidget
(
m_outputHeading
=
new
QLabel
(
"Output produced by doxygen"
,
w
));
grid
=
new
QGridLayout
(
layout
,
1
,
1
,
3
);
m_outputLog
=
new
QTextEdit
(
w
);
m_outputLog
->
setReadOnly
(
TRUE
);
m_outputLog
->
setMinimumWidth
(
600
);
grid
->
addWidget
(
m_outputLog
,
0
,
0
);
grid
->
setColStretch
(
0
,
1
);
grid
->
setRowStretch
(
0
,
1
);
m_outputLog
->
setEnabled
(
FALSE
);
m_outputHeading
->
setEnabled
(
FALSE
);
// make connections
connect
(
m_wizard
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
launchWizard
()));
connect
(
m_expert
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
launchExpert
()));
connect
(
m_load
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
loadConfigFile
()));
connect
(
m_save
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
saveConfigFile
()));
connect
(
m_selWorkingDir
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
selectWorkingDir
()));
connect
(
m_workingDir
,
SIGNAL
(
textChanged
(
const
QString
&
)),
this
,
SLOT
(
updateRunnable
(
const
QString
&
)));
connect
(
m_run
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
runDoxygen
()));
connect
(
m_saveLog
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
saveLog
()));
// load default settings
m_settings
.
setPath
(
"www.doxygen.org"
,
"Doxygen GUI"
);
bool
ok
;
QString
config
=
m_settings
.
readEntry
(
"/config/default"
,
QString
::
null
,
&
ok
);
if
(
ok
&&
!
config
.
isEmpty
())
{
Config
::
instance
()
->
parseString
(
"default settings"
,
config
);
}
QString
workingDir
=
m_settings
.
readEntry
(
"/config/workingdir"
,
QString
::
null
,
&
ok
);
if
(
ok
&&
!
workingDir
.
isEmpty
())
{
m_workingDir
->
setText
(
workingDir
);
}
setConfigSaved
(
FALSE
);
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
QString
entry
=
m_settings
.
readEntry
(
QString
().
sprintf
(
"/recent/config%d"
,
i
));
if
(
!
entry
.
isEmpty
())
{
addRecentFile
(
entry
);
}
}
m_runProcess
=
new
QProcess
;
connect
(
m_runProcess
,
SIGNAL
(
readyReadStdout
()),
this
,
SLOT
(
readStdout
()));
connect
(
m_runProcess
,
SIGNAL
(
processExited
()),
this
,
SLOT
(
runComplete
()));
m_running
=
FALSE
;
m_timer
=
new
QTimer
;
connect
(
m_timer
,
SIGNAL
(
timeout
()),
this
,
SLOT
(
readStdout
()));
statusBar
()
->
message
(
"Welcome to Doxygen"
,
messageTimeout
);
}
}
void
Wizard
::
refreshCaption
()
MainWidget
::~
MainWidget
()
{
{
QString
s
;
delete
m_runProcess
;
if
(
hasChanged
)
s
=
" *"
;
setCaption
(
"Doxywizard - ["
+
configFileName
+
s
+
"]"
);
}
}
void
Wizard
::
about
()
void
MainWidget
::
selectWorkingDir
()
{
{
QCString
text
(
4096
);
QString
selectedDir
=
QFileDialog
::
getExistingDirectory
(
m_workingDir
->
text
());
text
.
sprintf
(
"<qt><center>A tool to create and edit configuration files "
if
(
!
selectedDir
.
isEmpty
())
"that can be read by doxygen version %s.</center><p>"
{
"<center>Written by Dimitri van Heesch</center><p>"
m_workingDir
->
setText
(
selectedDir
);
"<center>(c) 2000-2003</center></qt>"
,
versionString
}
);
QMessageBox
::
about
(
this
,
"DoxyWizard"
,
text
);
}
}
//----------------------------------------------------------------------
void
MainWidget
::
updateRunnable
(
const
QString
&
newDirName
)
{
if
(
m_running
)
return
;
QFileInfo
fi
(
newDirName
);
bool
isRunnable
=
fi
.
exists
()
&&
fi
.
isDir
()
&&
m_configSaved
;
m_run
->
setEnabled
(
isRunnable
);
m_runStatus
->
setEnabled
(
isRunnable
);
m_outputHeading
->
setEnabled
(
isRunnable
);
m_outputLog
->
setEnabled
(
isRunnable
);
m_saveLog
->
setEnabled
(
isRunnable
&&
!
m_outputLog
->
text
().
isEmpty
());
}
ConfigFile
::
ConfigFile
(
QWidget
*
parent
)
:
QWidget
(
parent
)
void
MainWidget
::
launchWizard
(
)
{
{
Wizard
wizard
(
this
);
m_dependencies
=
new
QDict
<
QList
<
IInput
>
>
(
257
);
// -------- Initialize the dialog ----------------
m_dependencies
->
setAutoDelete
(
TRUE
);
m_inputWidgets
=
new
QDict
<
IInput
>
;
m_switches
=
new
QDict
<
QObject
>
;
QVBoxLayout
*
layout
=
new
QVBoxLayout
(
this
);
// step1
wizard
.
setProjectName
(
Config_getString
(
"PROJECT_NAME"
));
wizard
.
setProjectNumber
(
Config_getString
(
"PROJECT_NUMBER"
));
if
(
Config_getList
(
"INPUT"
).
count
()
==
1
)
{
QString
dirName
=
Config_getList
(
"INPUT"
).
getFirst
();
QFileInfo
fi
(
dirName
);
if
(
fi
.
exists
()
&&
fi
.
isDir
())
{
wizard
.
setSourceDir
(
dirName
);
}
}
wizard
.
setRecursiveScan
(
Config_getBool
(
"RECURSIVE"
));
wizard
.
setDestinationDir
(
Config_getString
(
"OUTPUT_DIRECTORY"
));
// QTabWidget definition
// step2
QTabWidget
*
tab
=
new
QTabWidget
(
this
);
wizard
.
setExtractAll
(
Config_getBool
(
"EXTRACT_ALL"
));
layout
->
addWidget
(
tab
);
wizard
.
setCrossReferencing
(
Config_getBool
(
"SOURCE_BROWSER"
));
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
wizard
.
setOptimizeFor
(
Lang_Java
);
}
else
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
wizard
.
setOptimizeFor
(
Lang_C
);
}
else
{
wizard
.
setOptimizeFor
(
Lang_Cpp
);
}
QListIterator
<
ConfigOption
>
options
=
Config
::
instance
()
->
iterator
();
// step3
PageWidget
*
page
=
0
;
wizard
.
setHtmlEnabled
(
Config_getBool
(
"GENERATE_HTML"
));
ConfigOption
*
option
=
0
;
wizard
.
setLatexEnabled
(
Config_getBool
(
"GENERATE_LATEX"
));
for
(
options
.
toFirst
();(
option
=
options
.
current
());
++
options
)
wizard
.
setManEnabled
(
Config_getBool
(
"GENERATE_MAN"
));
wizard
.
setRtfEnabled
(
Config_getBool
(
"GENERATE_RTF"
));
wizard
.
setXmlEnabled
(
Config_getBool
(
"GENERATE_XML"
));
wizard
.
setSearchEnabled
(
Config_getBool
(
"SEARCHENGINE"
));
if
(
Config_getBool
(
"GENERATE_HTMLHELP"
))
{
{
switch
(
option
->
kind
())
wizard
.
setHtmlStyle
(
HS_CHM
);
}
else
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
{
wizard
.
setHtmlStyle
(
HS_TreeView
);
}
else
{
wizard
.
setHtmlStyle
(
HS_Plain
);
}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
case
ConfigOption
:
:
O_Info
:
wizard
.
setTexStyle
(
TS_PDFHyper
);
if
(
page
)
page
->
addStretch
(
1
);
}
page
=
new
PageWidget
(
tab
,
option
->
name
()
);
else
QWhatsThis
::
add
(
page
,
option
->
docs
().
simplifyWhiteSpace
()
);
{
break
;
wizard
.
setTexStyle
(
TS_PDF
);
case
ConfigOption
:
:
O_String
:
}
{
}
ASSERT
(
page
!=
0
);
else
InputString
::
StringMode
sm
=
InputString
::
StringFree
;
{
switch
(((
ConfigString
*
)
option
)
->
widgetType
())
wizard
.
setTexStyle
(
TS_PS
);
{
}
case
ConfigString
:
:
String
:
sm
=
InputString
::
StringFree
;
break
;
case
ConfigString
:
:
File
:
sm
=
InputString
::
StringFile
;
break
;
// step4
case
ConfigString
:
:
Dir
:
sm
=
InputString
::
StringDir
;
break
;
if
(
Config_getBool
(
"HAVE_DOT"
))
}
{
InputString
*
inputString
=
new
InputString
(
wizard
.
setDiagramMode
(
DM_Dot
);
option
->
name
(),
// name
}
page
,
// widget
else
if
(
Config_getBool
(
"CLASS_DIAGRAMS"
))
*
((
ConfigString
*
)
option
)
->
valueRef
(),
// variable
{
sm
// type
wizard
.
setDiagramMode
(
DM_Builtin
);
);
}
QWhatsThis
::
add
(
inputString
,
option
->
docs
().
simplifyWhiteSpace
()
);
else
connect
(
inputString
,
SIGNAL
(
changed
()),
SIGNAL
(
changed
()));
{
m_inputWidgets
->
insert
(
option
->
name
(),
inputString
);
wizard
.
setDiagramMode
(
DM_None
);
addDependency
(
m_switches
,
option
->
dependsOn
(),
option
->
name
());
}
}
wizard
.
setClassDiagram
(
Config_getBool
(
"CLASS_GRAPH"
));
break
;
wizard
.
setCollaborationDiagram
(
Config_getBool
(
"COLLABORATION_GRAPH"
));
case
ConfigOption
:
:
O_Enum
:
wizard
.
setIncludeGraph
(
Config_getBool
(
"INCLUDE_GRAPH"
));
{
wizard
.
setIncludedByGraph
(
Config_getBool
(
"INCLUDED_BY_GRAPH"
));
ASSERT
(
page
!=
0
);
wizard
.
setInheritanceGraph
(
Config_getBool
(
"GRAPHICAL_HIERARCHY"
));
InputString
*
inputString
=
new
InputString
(
wizard
.
setCallGraph
(
Config_getBool
(
"CALL_GRAPH"
));
option
->
name
(),
// name
page
,
// widget
// -------- Run the dialog ----------------
*
((
ConfigEnum
*
)
option
)
->
valueRef
(),
// variable
InputString
::
StringFixed
// type
if
(
wizard
.
exec
()
==
QDialog
::
Accepted
)
);
{
QStrListIterator
sli
=
((
ConfigEnum
*
)
option
)
->
iterator
();
// -------- Store the results ----------------
for
(
sli
.
toFirst
();
sli
.
current
();
++
sli
)
{
// step1
inputString
->
addValue
(
sli
.
current
());
Config_getString
(
"PROJECT_NAME"
)
=
wizard
.
getProjectName
();
}
Config_getString
(
"PROJECT_NUMBER"
)
=
wizard
.
getProjectNumber
();
QWhatsThis
::
add
(
inputString
,
option
->
docs
().
simplifyWhiteSpace
()
);
Config_getList
(
"INPUT"
).
clear
();
connect
(
inputString
,
SIGNAL
(
changed
()),
SIGNAL
(
changed
()));
Config_getList
(
"INPUT"
).
append
(
wizard
.
getSourceDir
());
m_inputWidgets
->
insert
(
option
->
name
(),
inputString
);
Config_getBool
(
"RECURSIVE"
)
=
wizard
.
scanRecursively
();
addDependency
(
m_switches
,
option
->
dependsOn
(),
option
->
name
());
Config_getString
(
"OUTPUT_DIRECTORY"
)
=
wizard
.
getDestinationDir
();
}
// step2
if
(
wizard
.
extractAll
())
{
Config_getBool
(
"EXTRACT_ALL"
)
=
TRUE
;
Config_getBool
(
"EXTRACT_PRIVATE"
)
=
TRUE
;
Config_getBool
(
"EXTRACT_STATIC"
)
=
TRUE
;
Config_getBool
(
"EXTRACT_LOCAL_CLASSES"
)
=
TRUE
;
Config_getBool
(
"HIDE_UNDOC_MEMBERS"
)
=
FALSE
;
Config_getBool
(
"HIDE_UNDOC_CLASSES"
)
=
FALSE
;
}
else
{
Config_getBool
(
"EXTRACT_ALL"
)
=
FALSE
;
Config_getBool
(
"EXTRACT_PRIVATE"
)
=
FALSE
;
Config_getBool
(
"EXTRACT_STATIC"
)
=
FALSE
;
Config_getBool
(
"EXTRACT_LOCAL_CLASSES"
)
=
TRUE
;
Config_getBool
(
"HIDE_UNDOC_MEMBERS"
)
=
TRUE
;
Config_getBool
(
"HIDE_UNDOC_CLASSES"
)
=
TRUE
;
}
if
(
wizard
.
crossReferencing
())
{
Config_getBool
(
"SOURCE_BROWSER"
)
=
TRUE
;
Config_getBool
(
"REFERENCED_BY_RELATION"
)
=
TRUE
;
Config_getBool
(
"REFERENCES_RELATION"
)
=
TRUE
;
Config_getBool
(
"VERBATIM_HEADERS"
)
=
TRUE
;
}
else
{
Config_getBool
(
"SOURCE_BROWSER"
)
=
FALSE
;
Config_getBool
(
"REFERENCED_BY_RELATION"
)
=
FALSE
;
Config_getBool
(
"REFERENCES_RELATION"
)
=
FALSE
;
Config_getBool
(
"VERBATIM_HEADERS"
)
=
FALSE
;
}
switch
(
wizard
.
optimizeFor
())
{
case
Lang_Cpp
:
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
)
=
FALSE
;
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
)
=
FALSE
;
break
;
break
;
case
ConfigOption
:
:
O_List
:
case
Lang_Java
:
{
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
)
=
FALSE
;
ASSERT
(
page
!=
0
);
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
)
=
TRUE
;
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
);
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
Lang_C
:
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
)
=
TRUE
;
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
)
=
FALSE
;
break
;
break
;
case
ConfigOption
:
:
O_Bool
:
}
{
ASSERT
(
page
!=
0
);
// step3
InputBool
*
inputBool
=
new
InputBool
(
Config_getBool
(
"GENERATE_HTML"
)
=
wizard
.
htmlEnabled
();
option
->
name
(),
// name
Config_getBool
(
"GENERATE_LATEX"
)
=
wizard
.
latexEnabled
();
page
,
// widget
Config_getBool
(
"GENERATE_MAN"
)
=
wizard
.
manEnabled
();
*
((
ConfigBool
*
)
option
)
->
valueRef
()
// variable
Config_getBool
(
"GENERATE_RTF"
)
=
wizard
.
rtfEnabled
();
);
Config_getBool
(
"GENERATE_XML"
)
=
wizard
.
xmlEnabled
();
QWhatsThis
::
add
(
inputBool
,
option
->
docs
().
simplifyWhiteSpace
()
);
Config_getBool
(
"SEARCHENGINE"
)
=
wizard
.
searchEnabled
();
connect
(
inputBool
,
SIGNAL
(
changed
()),
SIGNAL
(
changed
()));
if
(
wizard
.
htmlEnabled
())
m_inputWidgets
->
insert
(
option
->
name
(),
inputBool
);
{
addDependency
(
m_switches
,
option
->
dependsOn
(),
option
->
name
());
switch
(
wizard
.
htmlStyle
())
}
{
case
HS_Plain
:
Config_getBool
(
"GENERATE_HTMLHELP"
)
=
FALSE
;
Config_getBool
(
"GENERATE_TREEVIEW"
)
=
FALSE
;
break
;
case
HS_TreeView
:
Config_getBool
(
"GENERATE_HTMLHELP"
)
=
FALSE
;
Config_getBool
(
"GENERATE_TREEVIEW"
)
=
TRUE
;
break
;
case
HS_CHM
:
Config_getBool
(
"GENERATE_HTMLHELP"
)
=
TRUE
;
Config_getBool
(
"GENERATE_TREEVIEW"
)
=
FALSE
;
break
;
}
}
if
(
wizard
.
latexEnabled
())
{
switch
(
wizard
.
texStyle
())
{
case
TS_PDFHyper
:
Config_getBool
(
"USE_PDFLATEX"
)
=
TRUE
;
Config_getBool
(
"PDF_HYPERLINKS"
)
=
TRUE
;
break
;
case
TS_PDF
:
Config_getBool
(
"USE_PDFLATEX"
)
=
TRUE
;
Config_getBool
(
"PDF_HYPERLINKS"
)
=
FALSE
;
break
;
case
TS_PS
:
Config_getBool
(
"USE_PDFLATEX"
)
=
FALSE
;
Config_getBool
(
"PDF_HYPERLINKS"
)
=
FALSE
;
break
;
}
}
// step4
switch
(
wizard
.
diagramMode
())
{
case
DM_None
:
Config_getBool
(
"CLASS_DIAGRAMS"
)
=
FALSE
;
Config_getBool
(
"HAVE_DOT"
)
=
FALSE
;
break
;
break
;
case
ConfigOption
:
:
O_Int
:
case
DM_Builtin
:
{
Config_getBool
(
"CLASS_DIAGRAMS"
)
=
TRUE
;
ASSERT
(
page
!=
0
);
Config_getBool
(
"HAVE_DOT"
)
=
FALSE
;
InputInt
*
inputInt
=
new
InputInt
(
option
->
name
(),
// name
page
,
// widget
*
((
ConfigInt
*
)
option
)
->
valueRef
(),
// variable
((
ConfigInt
*
)
option
)
->
minVal
(),
// min value
((
ConfigInt
*
)
option
)
->
maxVal
()
// max value
);
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
;
break
;
case
ConfigOption
:
:
O_Obsolete
:
case
DM_Dot
:
Config_getBool
(
"CLASS_DIAGRAMS"
)
=
FALSE
;
Config_getBool
(
"HAVE_DOT"
)
=
TRUE
;
Config_getBool
(
"CLASS_GRAPH"
)
=
wizard
.
classDiagram
();
Config_getBool
(
"COLLABORATION_GRAPH"
)
=
wizard
.
collaborationDiagram
();
Config_getBool
(
"INCLUDE_GRAPH"
)
=
wizard
.
includeGraph
();
Config_getBool
(
"INCLUDED_BY_GRAPH"
)
=
wizard
.
includedByGraph
();
Config_getBool
(
"GRAPHICAL_HIERARCHY"
)
=
wizard
.
inheritanceGraph
();
Config_getBool
(
"CALL_GRAPH"
)
=
wizard
.
callGraph
();
break
;
break
;
}
}
#if defined(Q_OS_MACX)
Config_getString
(
"DOT_PATH"
)
=
getResourcePath
();
#endif
setConfigSaved
(
FALSE
);
}
}
if
(
page
)
page
->
addStretch
(
1
);
}
QDictIterator
<
QObject
>
di
(
*
m_switches
);
void
MainWidget
::
loadConfigFromFile
(
const
QString
&
fn
)
QObject
*
obj
=
0
;
{
for
(
di
.
toFirst
();(
obj
=
di
.
current
());
++
di
)
if
(
!
Config
::
instance
()
->
parse
(
fn
)
)
{
{
connect
(
obj
,
SIGNAL
(
toggle
(
const
char
*
,
bool
)),
SLOT
(
toggle
(
const
char
*
,
bool
)));
QMessageBox
::
warning
(
0
,
"Warning"
,
// UGLY HACK: assumes each item depends on a boolean without checking!
"Could not open or read config file "
+
fn
+
"!"
,
emit
toggle
(
di
.
currentKey
(),((
InputBool
*
)
obj
)
->
getState
());
"abort"
);
}
else
{
Config
::
instance
()
->
convertStrToVal
();
#if defined(Q_OS_MACX)
if
(
Config_getString
(
"DOT_PATH"
)
!=
getResourcePath
())
{
Config_getString
(
"DOT_PATH"
)
=
getResourcePath
();
setConfigSaved
(
FALSE
);
}
else
{
setConfigSaved
(
TRUE
);
}
#else
setConfigSaved
(
TRUE
);
#endif
addRecentFile
(
fn
);
m_workingDir
->
setText
(
QFileInfo
(
fn
).
dirPath
(
TRUE
));
m_configFileName
=
fn
;
statusBar
()
->
message
(
"New configuration loaded"
,
messageTimeout
);
}
}
void
MainWidget
::
loadConfigFile
()
{
QString
fn
=
QFileDialog
::
getOpenFileName
(
m_workingDir
->
text
(),
QString
::
null
,
this
);
if
(
!
fn
.
isEmpty
())
{
loadConfigFromFile
(
fn
);
}
}
}
}
ConfigFile
::~
ConfigFile
()
void
MainWidget
::
launchExpert
()
{
{
delete
m_dependencies
;
Expert
expert
(
this
);
delete
m_inputWidgets
;
expert
.
init
();
delete
m_switches
;
expert
.
exec
();
#if defined(Q_OS_MACX)
Config_getString
(
"DOT_PATH"
)
=
getResourcePath
();
#endif
setConfigSaved
(
FALSE
);
}
}
void
ConfigFile
::
addDependency
(
QDict
<
QObject
>
*
switches
,
void
MainWidget
::
saveDefaults
()
const
QCString
&
dep
,
const
QCString
&
name
)
{
{
if
(
!
dep
.
isEmpty
())
if
(
QMessageBox
::
question
(
this
,
"Store settings as defaults"
,
"Do you wish to use the "
"current configuration settings as the default settings?"
,
QMessageBox
::
Yes
,
QMessageBox
::
No
)
==
QMessageBox
::
Yes
)
{
{
//printf("ConfigFile::addDependency(%s)\n",name.data());
QString
newConfig
;
IInput
*
parent
=
m_inputWidgets
->
find
(
dep
);
QTextStream
t
(
&
newConfig
,
IO_WriteOnly
);
ASSERT
(
parent
!=
0
);
Config
::
instance
()
->
writeTemplate
(
t
,
TRUE
,
FALSE
);
IInput
*
child
=
m_inputWidgets
->
find
(
name
);
m_settings
.
writeEntry
(
"/config/default"
,
newConfig
);
ASSERT
(
child
!=
0
);
m_settings
.
writeEntry
(
"/config/workingdir"
,
m_workingDir
->
text
());
if
(
switches
->
find
(
dep
)
==
0
)
statusBar
()
->
message
(
"Current configuration saved as default"
,
messageTimeout
);
}
}
void
MainWidget
::
saveConfigFile
()
{
QString
fn
=
QFileDialog
::
getSaveFileName
(
m_workingDir
->
text
()
+
"/Doxyfile"
,
QString
::
null
,
this
);
if
(
!
fn
.
isEmpty
())
{
QFile
f
(
fn
);
if
(
f
.
open
(
IO_WriteOnly
))
{
{
switches
->
insert
(
dep
,
parent
->
qobject
());
QTextStream
t
(
&
f
);
Config
::
instance
()
->
writeTemplate
(
t
,
TRUE
,
FALSE
);
m_configFileName
=
fn
;
setConfigSaved
(
TRUE
);
addRecentFile
(
fn
);
statusBar
()
->
message
(
"Configuration saved"
,
messageTimeout
);
}
}
QList
<
IInput
>
*
list
=
m_dependencies
->
find
(
dep
);
else
if
(
list
==
0
)
{
{
list
=
new
QList
<
IInput
>
;
QMessageBox
::
warning
(
0
,
"Warning"
,
m_dependencies
->
insert
(
dep
,
list
);
"Cannot open file "
+
fn
+
" for writing. Nothing saved!"
,
"ok"
);
}
}
list
->
append
(
child
);
}
}
}
}
void
ConfigFile
::
toggle
(
const
char
*
name
,
bool
state
)
void
MainWidget
::
resetConfig
(
)
{
{
QList
<
IInput
>
*
inputs
=
m_dependencies
->
find
(
name
);
if
(
QMessageBox
::
question
(
this
,
"Reset settings to their defaults"
,
ASSERT
(
inputs
!=
0
);
"Do you wish to reset the "
IInput
*
input
=
inputs
->
first
();
"current configuration settings to their factory defaults?"
,
while
(
input
)
QMessageBox
::
Yes
,
QMessageBox
::
No
)
==
QMessageBox
::
Yes
)
{
{
input
->
setEnabled
(
state
);
// initialize config settings
input
=
inputs
->
next
();
Config
::
instance
()
->
init
();
m_configFileName
=
""
;
setConfigSaved
(
FALSE
);
statusBar
()
->
message
(
"Configuration settings reset to their defaults"
,
messageTimeout
);
}
}
}
}
void
ConfigFile
::
init
(
)
void
MainWidget
::
setConfigSaved
(
bool
enable
)
{
{
QDictIterator
<
IInput
>
di
(
*
m_inputWidgets
);
m_configSaved
=
enable
;
IInput
*
input
=
0
;
if
(
m_configSaved
)
for
(
di
.
toFirst
();(
input
=
di
.
current
());
++
di
)
{
{
input
->
init
(
);
m_saveStatus
->
setText
(
"Status: saved"
);
}
}
QDictIterator
<
QObject
>
dio
(
*
m_switches
);
else
QObject
*
obj
=
0
;
for
(
dio
.
toFirst
();(
obj
=
dio
.
current
());
++
dio
)
{
{
connect
(
obj
,
SIGNAL
(
toggle
(
const
char
*
,
bool
)),
SLOT
(
toggle
(
const
char
*
,
bool
)));
m_saveStatus
->
setText
(
"Status: <font color=
\"
red
\"
>not saved</font>"
);
// UGLY HACK: assumes each item depends on a boolean without checking!
}
emit
toggle
(
dio
.
currentKey
(),((
InputBool
*
)
obj
)
->
getState
());
updateRunnable
(
m_workingDir
->
text
());
}
void
MainWidget
::
runDoxygen
()
{
if
(
!
m_running
)
{
QString
doxygenPath
;
#if defined(Q_OS_MACX)
doxygenPath
=
getResourcePath
();
#else
// TODO: get the right value if not in the search path
#endif
//printf("Trying to run doxygen from path %s\n",doxygenPath.data());
m_runProcess
->
setCommunication
(
QProcess
::
Stdout
|
QProcess
::
Stderr
|
QProcess
::
DupStderr
);
m_runProcess
->
setWorkingDirectory
(
QDir
(
m_workingDir
->
text
()));
m_runProcess
->
clearArguments
();
m_runProcess
->
addArgument
(
doxygenPath
+
"doxygen"
);
m_runProcess
->
addArgument
(
"-b"
);
m_runProcess
->
addArgument
(
m_configFileName
);
m_outputLog
->
clear
();
if
(
!
m_runProcess
->
start
())
{
m_outputLog
->
append
(
QString
(
"*** Failed to run doxygen
\n
"
));
}
else
{
m_running
=
TRUE
;
m_run
->
setText
(
"Cancel"
);
m_runStatus
->
setText
(
"Status: running"
);
m_timer
->
start
(
1000
);
}
}
else
{
m_running
=
FALSE
;
m_run
->
setText
(
"Start"
);
m_runStatus
->
setText
(
"Status: not running"
);
m_runProcess
->
kill
();
m_timer
->
stop
();
updateRunnable
(
m_workingDir
->
text
());
}
}
void
MainWidget
::
readStdout
()
{
m_outputLog
->
append
(
QString
(
m_runProcess
->
readStdout
()));
}
void
MainWidget
::
runComplete
()
{
if
(
m_running
)
{
m_outputLog
->
append
(
QString
(
"*** Doxygen has finished
\n
"
));
}
else
{
m_outputLog
->
append
(
QString
(
"*** Cancelled by user
\n
"
));
}
m_run
->
setText
(
"Start"
);
m_runStatus
->
setText
(
"Status: not running"
);
m_running
=
FALSE
;
updateRunnable
(
m_workingDir
->
text
());
}
void
MainWidget
::
about
()
{
QString
msg
;
QTextStream
t
(
&
msg
,
IO_WriteOnly
);
t
<<
"<qt><center>A tool to configure and run doxygen "
"on your source files.</center><p><br>"
"<center>Written by<br> Dimitri van Heesch<br>© 2000-2004</center><p>"
"</qt>"
;
QMessageBox
::
about
(
this
,
"Doxygen GUI"
,
msg
);
}
void
MainWidget
::
manual
()
{
#if defined(Q_OS_MACX)
const
char
*
urlBytes
=
"http://www.doxygen.org/manual.html"
;
CFURLRef
url
=
CFURLCreateWithBytes
(
NULL
,
// allocator
(
UInt8
*
)
urlBytes
,
// bytes
strlen
(
urlBytes
),
// length
kCFStringEncodingASCII
,
// encoding
NULL
// baseURL
);
LSOpenCFURLRef
(
url
,
0
);
CFRelease
(
url
);
#endif
}
void
MainWidget
::
addRecentFile
(
const
QString
&
file
)
{
QStringList
::
Iterator
it
=
m_recentFiles
.
find
(
file
);
if
(
it
!=
m_recentFiles
.
end
())
{
// already found => move to top
m_recentFiles
.
remove
(
it
);
m_recentFiles
.
prepend
(
file
);
}
else
{
// not found
if
(
m_recentFiles
.
count
()
<
10
)
// append
{
m_recentFiles
.
prepend
(
file
);
}
else
// add + drop last item
{
m_recentFiles
.
remove
(
m_recentFiles
.
last
());
m_recentFiles
.
prepend
(
file
);
}
}
m_recentMenu
->
clear
();
int
i
=
0
;
for
(
it
=
m_recentFiles
.
begin
();
it
!=
m_recentFiles
.
end
();
++
it
,
++
i
)
{
m_recentMenu
->
insertItem
(
*
it
);
m_settings
.
writeEntry
(
QString
().
sprintf
(
"/recent/config%d"
,
i
),
*
it
);
}
}
}
}
//----------------------------------------------------------------------
void
MainWidget
::
openRecent
(
int
id
)
{
loadConfigFromFile
(
m_recentMenu
->
text
(
id
));
}
void
MainWidget
::
quit
()
{
if
(
!
m_configSaved
&&
QMessageBox
::
warning
(
this
,
"DoxyWizard"
,
"Quit and lose changes?"
,
QMessageBox
::
Yes
,
QMessageBox
::
No
)
==
QMessageBox
::
No
)
return
;
// Quit cancelled by user
qApp
->
quit
();
}
void
MainWidget
::
saveLog
()
{
QString
fn
=
QFileDialog
::
getSaveFileName
(
m_workingDir
->
text
()
+
"/doxygen_log.txt"
,
QString
::
null
,
this
);
if
(
!
fn
.
isEmpty
())
{
QFile
f
(
fn
);
if
(
f
.
open
(
IO_WriteOnly
))
{
QTextStream
t
(
&
f
);
t
<<
m_outputLog
->
text
();
statusBar
()
->
message
(
"Output log saved"
,
messageTimeout
);
}
else
{
QMessageBox
::
warning
(
0
,
"Warning"
,
"Cannot open file "
+
fn
+
" for writing. Nothing saved!"
,
"ok"
);
}
}
}
//==========================================================================
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
QApplication
::
setColorSpec
(
QApplication
::
NormalColor
);
QApplication
a
(
argc
,
argv
);
QApplication
app
(
argc
,
argv
);
MainWidget
main
;
Wizard
wizard
(
argc
,
argv
);
a
.
setMainWidget
(
&
main
);
app
.
setMainWidget
(
&
wizard
);
main
.
show
();
wizard
.
show
();
return
a
.
exec
();
return
app
.
exec
();
}
}
addon/doxywizard/doxywizard.h
View file @
c1605e5b
/******************************************************************************
#ifndef DOXYWIZARD_H
*
#define DOXYWIZARD_H
*
*
* 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 _DOXWIZARD_H
#define _DOXWIZARD_H
#include <qvbox.h>
#include <qtabdialog.h>
#include <qmainwindow.h>
#include <qmainwindow.h>
#include <qlist.h>
#include <qsettings.h>
#include <qdict.h>
#include <qstringlist.h>
class
IInput
;
class
QLineEdit
;
class
QToolBar
;
class
QCheckBox
;
class
QWidget
;
class
QPushButton
;
class
QObject
;
class
QComboBox
;
class
ConfigFile
;
class
QButtonGroup
;
class
InputBool
;
class
QTextEdit
;
class
InputString
;
class
QLabel
;
class
InputStrList
;
class
QProcess
;
class
InputFile
;
class
QTimer
;
class
InputDir
;
class
QPopupMenu
;
class
InputInt
;
enum
OptLang
{
Lang_Cpp
,
Lang_C
,
Lang_Java
};
class
Wizard
:
public
QMainWindow
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
Q_OBJECT
public
:
public
:
Wizard
(
int
argc
,
char
**
argv
);
Step1
(
QWidget
*
parent
);
~
Wizard
(){};
void
loadFile
(
const
char
*
s
);
QString
getProjectName
()
const
;
QString
getProjectNumber
()
const
;
QString
getSourceDir
()
const
;
bool
scanRecursively
()
const
;
QString
getDestinationDir
()
const
;
void
setProjectName
(
const
QString
&
name
);
void
setProjectNumber
(
const
QString
&
num
);
void
setSourceDir
(
const
QString
&
dir
);
void
setRecursiveScan
(
bool
enable
);
void
setDestinationDir
(
const
QString
&
dir
);
private
slots
:
private
slots
:
void
newFile
();
void
selectSourceDir
();
void
loadFile
();
void
selectDestinationDir
();
void
saveFile
();
void
saveAsFile
();
private
:
void
quit
();
QLineEdit
*
m_projName
;
void
changed
();
QLineEdit
*
m_projNumber
;
void
about
();
QLineEdit
*
m_sourceDir
;
void
runDoxygen
();
// Micha
QLineEdit
*
m_destDir
;
QCheckBox
*
m_recursive
;
QPushButton
*
m_srcSelectDir
;
QPushButton
*
m_dstSelectDir
;
};
signals
:
class
Step2
:
public
QWidget
{
public
:
Step2
(
QWidget
*
parent
);
bool
crossReferencingEnabled
()
const
;
void
enableCrossReferencing
();
bool
extractAll
()
const
;
bool
crossReferencing
()
const
;
OptLang
optimizeFor
()
const
;
void
setExtractAll
(
bool
enable
);
void
setCrossReferencing
(
bool
enable
);
void
setOptimizeFor
(
OptLang
lang
);
private
:
private
:
void
refreshCaption
();
QButtonGroup
*
m_extractMode
;
QToolBar
*
fileTools
;
QButtonGroup
*
m_optimizeLang
;
bool
hasChanged
;
QCheckBox
*
m_crossRef
;
ConfigFile
*
cw
;
};
};
class
Config
Widget
class
Step3
:
public
Q
Widget
{
{
Q_OBJECT
public
:
public
:
enum
Kind
{
Int
,
String
,
StrList
,
Bool
};
Step3
(
QWidget
*
parent
);
ConfigWidget
(
QWidget
*
w
,
Kind
k
)
:
m_widget
(
w
),
m_kind
(
k
)
{}
bool
htmlEnabled
()
const
;
bool
latexEnabled
()
const
;
Kind
kind
()
const
{
return
m_kind
;
}
bool
manEnabled
()
const
;
bool
rtfEnabled
()
const
;
InputString
*
getString
()
const
bool
xmlEnabled
()
const
;
{
return
m_kind
==
String
?
(
InputString
*
)
m_widget
:
0
;
}
bool
searchEnabled
()
const
;
HtmlStyle
htmlStyle
()
const
;
InputBool
*
getBool
()
const
TexStyle
texStyle
()
const
;
{
return
m_kind
==
Bool
?
(
InputBool
*
)
m_widget
:
0
;
}
void
setHtmlEnabled
(
bool
);
InputStrList
*
getStrList
()
const
void
setLatexEnabled
(
bool
);
{
return
m_kind
==
StrList
?
(
InputStrList
*
)
m_widget
:
0
;
}
void
setManEnabled
(
bool
);
void
setRtfEnabled
(
bool
);
InputInt
*
getInt
()
const
void
setXmlEnabled
(
bool
);
{
return
m_kind
==
Int
?
(
InputInt
*
)
m_widget
:
0
;
}
void
setSearchEnabled
(
bool
);
void
setHtmlStyle
(
HtmlStyle
);
void
setTexStyle
(
TexStyle
);
private
slots
:
void
latexStateChange
(
int
state
);
void
htmlStateChange
(
int
state
);
private
:
QButtonGroup
*
m_texOptions
;
QVBox
*
m_texOptionBox
;
QButtonGroup
*
m_htmlOptions
;
QVBox
*
m_htmlOptionBox
;
QCheckBox
*
m_htmlEnabled
;
QCheckBox
*
m_latexEnabled
;
QCheckBox
*
m_manEnabled
;
QCheckBox
*
m_rtfEnabled
;
QCheckBox
*
m_xmlEnabled
;
QCheckBox
*
m_searchEnabled
;
};
class
Step4
:
public
QWidget
{
Q_OBJECT
public
:
Step4
(
QWidget
*
parent
);
void
disableCallGraphs
();
bool
callGraphEnabled
()
const
;
DiagramMode
diagramMode
()
const
;
bool
classDiagram
()
const
;
bool
collaborationDiagram
()
const
;
bool
includeGraph
()
const
;
bool
includedByGraph
()
const
;
bool
inheritanceGraph
()
const
;
bool
callGraph
()
const
;
void
setDiagramMode
(
DiagramMode
mode
);
void
setClassDiagram
(
bool
enable
);
void
setCollaborationDiagram
(
bool
enable
);
void
setIncludeGraph
(
bool
enable
);
void
setIncludedByGraph
(
bool
enable
);
void
setInheritanceGraph
(
bool
enable
);
void
setCallGraph
(
bool
enable
);
private
slots
:
void
diagramModeChanged
(
int
);
private
:
private
:
QWidget
*
m_widget
;
QButtonGroup
*
m_diagramMode
;
Kind
m_kind
;
QVBox
*
m_dotOptions
;
QCheckBox
*
m_dotClass
;
QCheckBox
*
m_dotCollaboration
;
QCheckBox
*
m_dotInclude
;
QCheckBox
*
m_dotIncludedBy
;
QCheckBox
*
m_dotInheritance
;
QCheckBox
*
m_dotCall
;
};
};
class
ConfigFile
:
public
QWidget
class
Wizard
:
public
QTabDialog
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
ConfigFile
(
QWidget
*
parent
=
0
);
Wizard
(
QWidget
*
parent
);
~
ConfigFile
();
void
disableCallGraphs
();
void
init
();
void
addDependency
(
QDict
<
QObject
>
*
switches
,
// step1
const
QCString
&
dep
,
const
QCString
&
name
);
QString
getProjectName
()
const
{
return
m_step1
->
getProjectName
();
}
QString
getProjectNumber
()
const
{
return
m_step1
->
getProjectNumber
();
}
signals
:
QString
getSourceDir
()
const
{
return
m_step1
->
getSourceDir
();
}
void
changed
();
bool
scanRecursively
()
const
{
return
m_step1
->
scanRecursively
();
}
QString
getDestinationDir
()
const
{
return
m_step1
->
getDestinationDir
();
}
void
setProjectName
(
const
QString
&
name
)
{
m_step1
->
setProjectName
(
name
);
}
void
setProjectNumber
(
const
QString
&
num
)
{
m_step1
->
setProjectNumber
(
num
);
}
void
setSourceDir
(
const
QString
&
dir
)
{
m_step1
->
setSourceDir
(
dir
);
}
void
setRecursiveScan
(
bool
enable
)
{
m_step1
->
setRecursiveScan
(
enable
);
}
void
setDestinationDir
(
const
QString
&
dir
)
{
m_step1
->
setDestinationDir
(
dir
);
}
// step2
bool
extractAll
()
const
{
return
m_step2
->
extractAll
();
}
bool
crossReferencing
()
const
{
return
m_step2
->
crossReferencing
();
}
OptLang
optimizeFor
()
const
{
return
m_step2
->
optimizeFor
();
}
void
setExtractAll
(
bool
enable
)
{
m_step2
->
setExtractAll
(
enable
);
}
void
setCrossReferencing
(
bool
enable
)
{
m_step2
->
setCrossReferencing
(
enable
);
}
void
setOptimizeFor
(
OptLang
lang
)
{
m_step2
->
setOptimizeFor
(
lang
);
}
private
slots
:
// step3
void
toggle
(
const
char
*
,
bool
);
bool
htmlEnabled
()
const
{
return
m_step3
->
htmlEnabled
();
}
bool
latexEnabled
()
const
{
return
m_step3
->
latexEnabled
();
}
bool
manEnabled
()
const
{
return
m_step3
->
manEnabled
();
}
bool
rtfEnabled
()
const
{
return
m_step3
->
rtfEnabled
();
}
bool
xmlEnabled
()
const
{
return
m_step3
->
xmlEnabled
();
}
bool
searchEnabled
()
const
{
return
m_step3
->
searchEnabled
();
}
HtmlStyle
htmlStyle
()
const
{
return
m_step3
->
htmlStyle
();
}
TexStyle
texStyle
()
const
{
return
m_step3
->
texStyle
();
}
void
setHtmlEnabled
(
bool
enable
)
{
m_step3
->
setHtmlEnabled
(
enable
);
}
void
setLatexEnabled
(
bool
enable
)
{
m_step3
->
setLatexEnabled
(
enable
);
}
void
setManEnabled
(
bool
enable
)
{
m_step3
->
setManEnabled
(
enable
);
}
void
setRtfEnabled
(
bool
enable
)
{
m_step3
->
setRtfEnabled
(
enable
);
}
void
setXmlEnabled
(
bool
enable
)
{
m_step3
->
setXmlEnabled
(
enable
);
}
void
setSearchEnabled
(
bool
enable
)
{
m_step3
->
setSearchEnabled
(
enable
);
}
void
setHtmlStyle
(
HtmlStyle
style
)
{
m_step3
->
setHtmlStyle
(
style
);
}
void
setTexStyle
(
TexStyle
style
)
{
m_step3
->
setTexStyle
(
style
);
}
// step4
DiagramMode
diagramMode
()
const
{
return
m_step4
->
diagramMode
();
}
bool
classDiagram
()
const
{
return
m_step4
->
classDiagram
();
}
bool
collaborationDiagram
()
const
{
return
m_step4
->
collaborationDiagram
();
}
bool
includeGraph
()
const
{
return
m_step4
->
includeGraph
();
}
bool
includedByGraph
()
const
{
return
m_step4
->
includedByGraph
();
}
bool
inheritanceGraph
()
const
{
return
m_step4
->
inheritanceGraph
();
}
bool
callGraph
()
const
{
return
m_step4
->
callGraph
();
}
void
setDiagramMode
(
DiagramMode
mode
)
{
m_step4
->
setDiagramMode
(
mode
);
}
void
setClassDiagram
(
bool
enable
)
{
m_step4
->
setClassDiagram
(
enable
);
}
void
setCollaborationDiagram
(
bool
enable
)
{
m_step4
->
setCollaborationDiagram
(
enable
);
}
void
setIncludeGraph
(
bool
enable
)
{
m_step4
->
setIncludeGraph
(
enable
);
}
void
setIncludedByGraph
(
bool
enable
)
{
m_step4
->
setIncludedByGraph
(
enable
);
}
void
setInheritanceGraph
(
bool
enable
)
{
m_step4
->
setInheritanceGraph
(
enable
);
}
void
setCallGraph
(
bool
enable
)
{
m_step4
->
setCallGraph
(
enable
);
}
public
slots
:
void
changeCallGraphState
(
int
state
);
void
changeCrossRefState
(
int
state
);
private
:
Step1
*
m_step1
;
Step2
*
m_step2
;
Step3
*
m_step3
;
Step4
*
m_step4
;
};
class
MainWidget
:
public
QMainWindow
{
Q_OBJECT
public
:
MainWidget
(
QWidget
*
parent
=
0
);
~
MainWidget
();
private
slots
:
void
launchWizard
();
void
launchExpert
();
void
loadConfigFile
();
void
selectWorkingDir
();
void
updateRunnable
(
const
QString
&
newDirName
);
void
saveDefaults
();
void
saveConfigFile
();
void
runDoxygen
();
void
readStdout
();
void
runComplete
();
void
about
();
void
manual
();
void
resetConfig
();
void
openRecent
(
int
);
void
quit
();
void
saveLog
();
private
:
private
:
QDict
<
IInput
>
*
m_inputWidgets
;
void
setConfigSaved
(
bool
);
QDict
<
QList
<
IInput
>
>
*
m_dependencies
;
void
loadConfigFromFile
(
const
QString
&
);
QDict
<
QObject
>
*
m_switches
;
void
addRecentFile
(
const
QString
&
);
QPushButton
*
m_wizard
;
QPushButton
*
m_expert
;
QPushButton
*
m_load
;
QPushButton
*
m_save
;
QPushButton
*
m_defaults
;
QLineEdit
*
m_workingDir
;
QPushButton
*
m_selWorkingDir
;
QPushButton
*
m_run
;
QPushButton
*
m_saveLog
;
QLabel
*
m_runStatus
;
QProcess
*
m_runProcess
;
QLabel
*
m_saveStatus
;
QLabel
*
m_outputHeading
;
QTextEdit
*
m_outputLog
;
QTimer
*
m_timer
;
QSettings
m_settings
;
QPopupMenu
*
m_recentMenu
;
bool
m_configSaved
;
bool
m_running
;
QString
m_configFileName
;
QStringList
m_recentFiles
;
};
};
#endif
#endif
addon/doxywizard/doxywizard.pro.in
View file @
c1605e5b
...
@@ -23,23 +23,21 @@ CONFIG = qt warn_on $extraopts
...
@@ -23,23 +23,21 @@ CONFIG = qt warn_on $extraopts
# header file for the project
# header file for the project
HEADERS = doxywizard.h \
HEADERS = doxywizard.h \
version.h \
version.h \
pagewidget.h \
inputstring.h \
inputstring.h \
inputbool.h \
inputbool.h \
inputstrlist.h \
inputstrlist.h \
inputint.h \
inputint.h \
pixmaps.h \
expert.h \
config.h
config.h
# source flle for the project
# source flle for the project
SOURCES = doxywizard.cpp \
SOURCES = doxywizard.cpp \
version.cpp \
version.cpp \
pagewidget.cpp \
inputstring.cpp \
inputstring.cpp \
inputbool.cpp \
inputbool.cpp \
inputstrlist.cpp \
inputstrlist.cpp \
inputint.cpp \
inputint.cpp \
pixmaps.cpp \
expert.cpp \
config.cpp
config.cpp
# where to put the objects
# where to put the objects
...
@@ -52,8 +50,10 @@ MOC_DIR = moc
...
@@ -52,8 +50,10 @@ MOC_DIR = moc
INCLUDEPATH += ../../src
INCLUDEPATH += ../../src
win32:TMAKE_CXXFLAGS += -DQT_DLL
win32:TMAKE_CXXFLAGS += -DQT_DLL
win32:INCLUDEPATH += .
win32:INCLUDEPATH += .
macosx-c++:LIBS+=-framework CoreFoundation -framework ApplicationServices
# extra link options
# 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 =
win32:TMAKE_LIBS_QT =
addon/doxywizard/expert.cpp
0 → 100644
View file @
c1605e5b
/******************************************************************************
*
*
*
* 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
());
}
}
addon/doxywizard/
pagewidge
t.h
→
addon/doxywizard/
exper
t.h
View file @
c1605e5b
...
@@ -12,52 +12,71 @@
...
@@ -12,52 +12,71 @@
*
*
*/
*/
#ifndef
_PAGEWIDGE
T_H
#ifndef
EXPER
T_H
#define
_PAGEWIDGE
T_H
#define
EXPER
T_H
#include <qscrollview.h>
#include <qtabdialog.h>
#include <qlist.h>
#include <qdict.h>
class
QTabWidget
;
class
IInput
;
class
QVBoxLayout
;
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
:
public
:
FrameLayout
(
QWidget
*
parent
=
0
,
const
char
*
name
=
0
,
WFlags
g
=
0
);
enum
Kind
{
Int
,
String
,
StrList
,
Bool
};
~
FrameLayout
();
void
addStretch
(
int
s
=
0
);
ConfigWidget
(
QWidget
*
w
,
Kind
k
)
:
m_widget
(
w
),
m_kind
(
k
)
{}
void
addWidget
(
QWidget
*
w
);
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
:
private
:
QVBoxLayout
*
lay
;
QWidget
*
m_widget
;
Kind
m_kind
;
};
};
class
PageWidget
:
public
QScrollView
class
Expert
:
public
QTabDialog
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
PageWidget
(
QTabWidget
*
parent
,
const
char
*
name
);
Expert
(
QWidget
*
parent
=
0
);
~
PageWidget
()
{};
~
Expert
();
//void frameChanged()
void
init
();
//{
void
addDependency
(
QDict
<
QObject
>
*
switches
,
// if (!layout()) return;
const
QCString
&
dep
,
const
QCString
&
name
);
// layout()->setMargin(frameWidth());
//}
void
addStretch
(
int
stretch
=
0
);
void
addWidget
(
QWidget
*
w
);
QWidget
*
getLayout
()
const
;
protected
:
void
resizeEvent
(
QResizeEvent
*
e
);
void
paintEvent
(
QPaintEvent
*
e
);
private
:
signals
:
FrameLayout
*
lay
;
void
changed
();
QTabWidget
*
m_parent
;
private
slots
:
void
toggle
(
const
char
*
,
bool
);
void
handleHelp
();
private
:
QDict
<
IInput
>
*
m_inputWidgets
;
QDict
<
QList
<
IInput
>
>
*
m_dependencies
;
QDict
<
QObject
>
*
m_switches
;
};
};
#endif
#endif
addon/doxywizard/inputbool.cpp
View file @
c1605e5b
...
@@ -13,35 +13,32 @@
...
@@ -13,35 +13,32 @@
*/
*/
#include "inputbool.h"
#include "inputbool.h"
#include "pagewidget.h"
//#if QT_VERSION >= 300
#if QT_VERSION >= 300
//#include <qstylefactory.h>
#include <qstylefactory.h>
//#else
#else
//#include <qwindowsstyle.h>
#include <qwindowsstyle.h>
//#endif
#endif
#include <qlayout.h>
#include <qlayout.h>
InputBool
::
InputBool
(
const
QString
&
text
,
Page
Widget
*
parent
,
bool
&
flag
)
InputBool
::
InputBool
(
const
QString
&
text
,
Q
Widget
*
parent
,
bool
&
flag
)
:
/*QCheckBox( text, parent->getLayout() )*/
QWidget
(
parent
->
getLayout
()
),
state
(
flag
)
:
QWidget
(
parent
),
state
(
flag
)
{
{
QBoxLayout
*
layout
=
new
QHBoxLayout
(
this
);
QBoxLayout
*
layout
=
new
QHBoxLayout
(
this
);
cb
=
new
QCheckBox
(
text
,
this
);
cb
=
new
QCheckBox
(
text
,
this
);
layout
->
addWidget
(
cb
);
layout
->
addWidget
(
cb
);
layout
->
addStretch
(
10
);
layout
->
addStretch
(
10
);
#if QT_VERSION >= 300
//
#if QT_VERSION >= 300
QStyle
*
winStyle
=
QStyleFactory
::
create
(
"windows"
);
//
QStyle *winStyle = QStyleFactory::create("windows");
#else
//
#else
QWindowsStyle
*
winStyle
=
new
QWindowsStyle
();
//
QWindowsStyle *winStyle = new QWindowsStyle();
#endif
//
#endif
cb
->
setChecked
(
flag
);
cb
->
setChecked
(
flag
);
if
(
winStyle
)
cb
->
setStyle
(
winStyle
);
//
if (winStyle) cb->setStyle( winStyle );
cb
->
setMinimumSize
(
sizeHint
()
);
cb
->
setMinimumSize
(
sizeHint
()
);
connect
(
cb
,
SIGNAL
(
toggled
(
bool
)),
SLOT
(
setState
(
bool
))
);
connect
(
cb
,
SIGNAL
(
toggled
(
bool
)),
SLOT
(
setState
(
bool
))
);
parent
->
addWidget
(
this
);
layout
->
activate
();
layout
->
activate
();
}
}
...
...
addon/doxywizard/inputbool.h
View file @
c1605e5b
...
@@ -27,7 +27,7 @@ class InputBool : public QWidget, /*QCheckBox,*/ public IInput
...
@@ -27,7 +27,7 @@ class InputBool : public QWidget, /*QCheckBox,*/ public IInput
Q_OBJECT
Q_OBJECT
public
:
public
:
InputBool
(
const
QString
&
text
,
Page
Widget
*
parent
,
bool
&
flag
);
InputBool
(
const
QString
&
text
,
Q
Widget
*
parent
,
bool
&
flag
);
~
InputBool
(){};
~
InputBool
(){};
void
init
();
void
init
();
void
setEnabled
(
bool
b
)
{
cb
->
setEnabled
(
b
);
}
void
setEnabled
(
bool
b
)
{
cb
->
setEnabled
(
b
);
}
...
...
addon/doxywizard/inputint.cpp
View file @
c1605e5b
...
@@ -13,7 +13,6 @@
...
@@ -13,7 +13,6 @@
*/
*/
#include "inputint.h"
#include "inputint.h"
#include "pagewidget.h"
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
...
@@ -22,8 +21,8 @@
...
@@ -22,8 +21,8 @@
#include <qwindowsstyle.h>
#include <qwindowsstyle.h>
#include <qspinbox.h>
#include <qspinbox.h>
InputInt
::
InputInt
(
const
QString
&
label
,
Page
Widget
*
parent
,
int
&
val
,
int
minVal
,
int
maxVal
)
InputInt
::
InputInt
(
const
QString
&
label
,
Q
Widget
*
parent
,
int
&
val
,
int
minVal
,
int
maxVal
)
:
QWidget
(
parent
->
getLayout
()
),
m_val
(
val
),
m_minVal
(
minVal
),
m_maxVal
(
maxVal
)
:
QWidget
(
parent
),
m_val
(
val
),
m_minVal
(
minVal
),
m_maxVal
(
maxVal
)
{
{
QHBoxLayout
*
layout
=
new
QHBoxLayout
(
this
,
5
);
QHBoxLayout
*
layout
=
new
QHBoxLayout
(
this
,
5
);
...
@@ -44,7 +43,6 @@ InputInt::InputInt( const QString & label, PageWidget *parent, int &val, int min
...
@@ -44,7 +43,6 @@ InputInt::InputInt( const QString & label, PageWidget *parent, int &val, int min
connect
(
sp
,
SIGNAL
(
valueChanged
(
int
)),
connect
(
sp
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
valueChanged
(
int
))
);
this
,
SLOT
(
valueChanged
(
int
))
);
parent
->
addWidget
(
this
);
}
}
void
InputInt
::
valueChanged
(
int
val
)
void
InputInt
::
valueChanged
(
int
val
)
...
...
addon/doxywizard/inputint.h
View file @
c1605e5b
...
@@ -22,14 +22,13 @@
...
@@ -22,14 +22,13 @@
class
QLabel
;
class
QLabel
;
class
QSpinBox
;
class
QSpinBox
;
class
PageWidget
;
class
InputInt
:
public
QWidget
,
public
IInput
class
InputInt
:
public
QWidget
,
public
IInput
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
InputInt
(
const
QString
&
text
,
Page
Widget
*
parent
,
int
&
val
,
InputInt
(
const
QString
&
text
,
Q
Widget
*
parent
,
int
&
val
,
int
minVal
,
int
maxVal
);
int
minVal
,
int
maxVal
);
~
InputInt
(){};
~
InputInt
(){};
void
setEnabled
(
bool
);
void
setEnabled
(
bool
);
...
...
addon/doxywizard/inputstring.cpp
View file @
c1605e5b
...
@@ -13,8 +13,7 @@
...
@@ -13,8 +13,7 @@
*/
*/
#include "inputstring.h"
#include "inputstring.h"
#include "pagewidget.h"
//#include "pixmaps.h"
#include "pixmaps.h"
#include <qlabel.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlayout.h>
...
@@ -28,8 +27,8 @@
...
@@ -28,8 +27,8 @@
InputString
::
InputString
(
const
QString
&
label
,
InputString
::
InputString
(
const
QString
&
label
,
Page
Widget
*
parent
,
QCString
&
s
,
StringMode
m
)
Q
Widget
*
parent
,
QCString
&
s
,
StringMode
m
)
:
QWidget
(
parent
->
getLayout
()
),
str
(
s
),
sm
(
m
),
m_values
(
0
),
m_index
(
0
)
:
QWidget
(
parent
),
str
(
s
),
sm
(
m
),
m_values
(
0
),
m_index
(
0
)
{
{
if
(
m
==
StringFixed
)
if
(
m
==
StringFixed
)
{
{
...
@@ -38,6 +37,7 @@ InputString::InputString( const QString & label,
...
@@ -38,6 +37,7 @@ InputString::InputString( const QString & label,
lab
->
setMinimumSize
(
lab
->
sizeHint
()
);
lab
->
setMinimumSize
(
lab
->
sizeHint
()
);
layout
->
addWidget
(
lab
);
layout
->
addWidget
(
lab
);
com
=
new
QComboBox
(
this
);
com
=
new
QComboBox
(
this
);
com
->
setMinimumSize
(
com
->
sizeHint
());
layout
->
addWidget
(
com
);
layout
->
addWidget
(
com
);
layout
->
addStretch
(
1
);
layout
->
addStretch
(
1
);
le
=
0
;
le
=
0
;
...
@@ -57,16 +57,21 @@ InputString::InputString( const QString & label,
...
@@ -57,16 +57,21 @@ InputString::InputString( const QString & label,
layout
->
addWidget
(
le
,
0
,
1
);
layout
->
addWidget
(
le
,
0
,
1
);
if
(
m
==
StringFile
||
m
==
StringDir
)
if
(
m
==
StringFile
||
m
==
StringDir
)
{
{
QPixmap
pixmap
=
QPixmap
(
m
==
StringFile
?
//
QPixmap pixmap = QPixmap(m==StringFile ?
file_xpm
:
//
file_xpm :
folder_xpm
);
//
folder_xpm );
br
=
new
QPushButton
(
this
);
br
=
new
QPushButton
(
this
);
br
->
setPixmap
(
pixmap
);
br
->
setMinimumSize
(
br
->
sizeHint
()
);
br
->
setMinimumSize
(
br
->
sizeHint
()
);
if
(
m
==
StringFile
)
if
(
m
==
StringFile
)
{
br
->
setText
(
"File..."
);
QToolTip
::
add
(
br
,
"Browse to a file"
);
QToolTip
::
add
(
br
,
"Browse to a file"
);
}
else
else
{
br
->
setText
(
"Folder..."
);
QToolTip
::
add
(
br
,
"Browse to a folder"
);
QToolTip
::
add
(
br
,
"Browse to a folder"
);
}
layout
->
addWidget
(
br
,
0
,
2
);
layout
->
addWidget
(
br
,
0
,
2
);
}
}
else
else
...
@@ -83,8 +88,6 @@ InputString::InputString( const QString & label,
...
@@ -83,8 +88,6 @@ InputString::InputString( const QString & label,
if
(
br
)
connect
(
br
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
browse
())
);
if
(
br
)
connect
(
br
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
browse
())
);
if
(
com
)
connect
(
com
,
SIGNAL
(
activated
(
const
QString
&
)),
if
(
com
)
connect
(
com
,
SIGNAL
(
activated
(
const
QString
&
)),
this
,
SLOT
(
textChanged
(
const
QString
&
))
);
this
,
SLOT
(
textChanged
(
const
QString
&
))
);
parent
->
addWidget
(
this
);
}
}
InputString
::~
InputString
()
InputString
::~
InputString
()
...
...
addon/doxywizard/inputstring.h
View file @
c1605e5b
...
@@ -26,7 +26,6 @@ class QLabel;
...
@@ -26,7 +26,6 @@ class QLabel;
class
QLineEdit
;
class
QLineEdit
;
class
QPushButton
;
class
QPushButton
;
class
QComboBox
;
class
QComboBox
;
class
PageWidget
;
class
InputString
:
public
QWidget
,
public
IInput
class
InputString
:
public
QWidget
,
public
IInput
{
{
...
@@ -39,7 +38,7 @@ class InputString : public QWidget, public IInput
...
@@ -39,7 +38,7 @@ class InputString : public QWidget, public IInput
StringFixed
=
3
StringFixed
=
3
};
};
InputString
(
const
QString
&
text
,
Page
Widget
*
parent
,
QCString
&
s
,
InputString
(
const
QString
&
text
,
Q
Widget
*
parent
,
QCString
&
s
,
StringMode
m
=
StringFree
);
StringMode
m
=
StringFree
);
~
InputString
();
~
InputString
();
void
setEnabled
(
bool
);
void
setEnabled
(
bool
);
...
...
addon/doxywizard/inputstrlist.cpp
View file @
c1605e5b
...
@@ -13,8 +13,7 @@
...
@@ -13,8 +13,7 @@
*/
*/
#include "inputstrlist.h"
#include "inputstrlist.h"
#include "pagewidget.h"
//#include "pixmaps.h"
#include "pixmaps.h"
#include <qlabel.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlayout.h>
...
@@ -27,8 +26,8 @@
...
@@ -27,8 +26,8 @@
#include <qtooltip.h>
#include <qtooltip.h>
InputStrList
::
InputStrList
(
const
QString
&
label
,
InputStrList
::
InputStrList
(
const
QString
&
label
,
Page
Widget
*
parent
,
QStrList
&
sl
,
ListMode
lm
)
Q
Widget
*
parent
,
QStrList
&
sl
,
ListMode
lm
)
:
QWidget
(
parent
->
getLayout
()
),
strList
(
sl
)
:
QWidget
(
parent
),
strList
(
sl
)
{
{
QGridLayout
*
layout
=
new
QGridLayout
(
this
,
2
,
2
,
5
);
QGridLayout
*
layout
=
new
QGridLayout
(
this
,
2
,
2
,
5
);
lab
=
new
QLabel
(
label
,
this
);
lab
=
new
QLabel
(
label
,
this
);
...
@@ -42,19 +41,22 @@ InputStrList::InputStrList( const QString & label,
...
@@ -42,19 +41,22 @@ InputStrList::InputStrList( const QString & label,
boxlayout
->
addWidget
(
le
,
1
);
boxlayout
->
addWidget
(
le
,
1
);
add
=
new
QPushButton
(
dw
);
add
=
new
QPushButton
(
dw
);
add
->
setPixmap
(
QPixmap
(
add_xpm
));
//add->setPixmap( QPixmap( add_xpm ));
add
->
setText
(
"+"
);
add
->
setMinimumSize
(
add
->
sizeHint
()
);
add
->
setMinimumSize
(
add
->
sizeHint
()
);
QToolTip
::
add
(
add
,
"Add item"
);
QToolTip
::
add
(
add
,
"Add item"
);
boxlayout
->
addWidget
(
add
);
boxlayout
->
addWidget
(
add
);
del
=
new
QPushButton
(
dw
);
del
=
new
QPushButton
(
dw
);
del
->
setPixmap
(
QPixmap
(
del_xpm
));
//del->setPixmap( QPixmap( del_xpm ));
del
->
setText
(
"-"
);
del
->
setMinimumSize
(
del
->
sizeHint
()
);
del
->
setMinimumSize
(
del
->
sizeHint
()
);
QToolTip
::
add
(
del
,
"Delete selected item"
);
QToolTip
::
add
(
del
,
"Delete selected item"
);
boxlayout
->
addWidget
(
del
);
boxlayout
->
addWidget
(
del
);
upd
=
new
QPushButton
(
dw
);
upd
=
new
QPushButton
(
dw
);
upd
->
setPixmap
(
QPixmap
(
update_xpm
));
//upd->setPixmap( QPixmap( update_xpm ));
upd
->
setText
(
"*"
);
upd
->
setMinimumSize
(
upd
->
sizeHint
()
);
upd
->
setMinimumSize
(
upd
->
sizeHint
()
);
QToolTip
::
add
(
upd
,
"Update selected item"
);
QToolTip
::
add
(
upd
,
"Update selected item"
);
boxlayout
->
addWidget
(
upd
);
boxlayout
->
addWidget
(
upd
);
...
@@ -72,7 +74,8 @@ InputStrList::InputStrList( const QString & label,
...
@@ -72,7 +74,8 @@ InputStrList::InputStrList( const QString & label,
if
(
lm
&
ListFile
)
if
(
lm
&
ListFile
)
{
{
brFile
=
new
QPushButton
(
dw
);
brFile
=
new
QPushButton
(
dw
);
brFile
->
setPixmap
(
QPixmap
(
file_xpm
)
);
//brFile->setPixmap( QPixmap(file_xpm) );
brFile
->
setText
(
"Select..."
);
brFile
->
setMinimumSize
(
brFile
->
sizeHint
());
brFile
->
setMinimumSize
(
brFile
->
sizeHint
());
QToolTip
::
add
(
brFile
,
"Browse to a file"
);
QToolTip
::
add
(
brFile
,
"Browse to a file"
);
boxlayout
->
addWidget
(
brFile
);
boxlayout
->
addWidget
(
brFile
);
...
@@ -80,7 +83,8 @@ InputStrList::InputStrList( const QString & label,
...
@@ -80,7 +83,8 @@ InputStrList::InputStrList( const QString & label,
if
(
lm
&
ListDir
)
if
(
lm
&
ListDir
)
{
{
brDir
=
new
QPushButton
(
dw
);
brDir
=
new
QPushButton
(
dw
);
brDir
->
setPixmap
(
QPixmap
(
folder_xpm
)
);
//brDir->setPixmap( QPixmap(folder_xpm) );
brDir
->
setText
(
"Select..."
);
brDir
->
setMinimumSize
(
brDir
->
sizeHint
());
brDir
->
setMinimumSize
(
brDir
->
sizeHint
());
QToolTip
::
add
(
brDir
,
"Browse to a folder"
);
QToolTip
::
add
(
brDir
,
"Browse to a folder"
);
boxlayout
->
addWidget
(
brDir
);
boxlayout
->
addWidget
(
brDir
);
...
@@ -111,10 +115,6 @@ InputStrList::InputStrList( const QString & label,
...
@@ -111,10 +115,6 @@ InputStrList::InputStrList( const QString & label,
}
}
connect
(
lb
,
SIGNAL
(
selected
(
const
QString
&
)),
connect
(
lb
,
SIGNAL
(
selected
(
const
QString
&
)),
this
,
SLOT
(
selectText
(
const
QString
&
)));
this
,
SLOT
(
selectText
(
const
QString
&
)));
parent
->
addWidget
(
this
);
strList
=
sl
;
}
}
void
InputStrList
::
addString
()
void
InputStrList
::
addString
()
...
...
addon/doxywizard/inputstrlist.h
View file @
c1605e5b
...
@@ -24,7 +24,6 @@ class QLabel;
...
@@ -24,7 +24,6 @@ class QLabel;
class
QLineEdit
;
class
QLineEdit
;
class
QPushButton
;
class
QPushButton
;
class
QListBox
;
class
QListBox
;
class
PageWidget
;
class
QStrList
;
class
QStrList
;
class
InputStrList
:
public
QWidget
,
public
IInput
class
InputStrList
:
public
QWidget
,
public
IInput
...
@@ -38,7 +37,7 @@ class InputStrList : public QWidget, public IInput
...
@@ -38,7 +37,7 @@ class InputStrList : public QWidget, public IInput
ListFileDir
=
ListFile
|
ListDir
ListFileDir
=
ListFile
|
ListDir
};
};
InputStrList
(
const
QString
&
text
,
Page
Widget
*
parent
,
InputStrList
(
const
QString
&
text
,
Q
Widget
*
parent
,
QStrList
&
sl
,
ListMode
v
=
ListString
);
QStrList
&
sl
,
ListMode
v
=
ListString
);
~
InputStrList
()
{};
~
InputStrList
()
{};
void
setEnabled
(
bool
);
void
setEnabled
(
bool
);
...
...
addon/doxywizard/pagewidget.cpp
deleted
100644 → 0
View file @
6b195c8d
/******************************************************************************
*
*
*
* 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
()));
}
addon/doxywizard/pixmaps.cpp
deleted
100644 → 0
View file @
6b195c8d
/******************************************************************************
*
*
*
* 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
;
addon/doxywizard/pixmaps.h
deleted
100644 → 0
View file @
6b195c8d
/******************************************************************************
*
*
*
* 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
addon/doxywizard/version.h
View file @
c1605e5b
/******************************************************************************
*
*
*
* 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
#ifndef VERSION_H
#define VERSION_H
#define VERSION_H
...
...
configure
View file @
c1605e5b
...
@@ -27,6 +27,7 @@ f_prefix=/usr/local
...
@@ -27,6 +27,7 @@ f_prefix=/usr/local
f_insttool
=
NO
f_insttool
=
NO
f_english
=
NO
f_english
=
NO
f_wizard
=
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
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
while
test
-n
"
$1
"
;
do
...
@@ -233,21 +234,21 @@ if test "$f_wizard" = YES; then
...
@@ -233,21 +234,21 @@ if test "$f_wizard" = YES; then
if
test
-d
"/usr/lib/qt3/lib"
;
then
if
test
-d
"/usr/lib/qt3/lib"
;
then
if
test
-d
"/usr/lib/qt3/include"
;
then
if
test
-d
"/usr/lib/qt3/include"
;
then
if
test
-x
"/usr/lib/qt3/bin/moc"
;
then
if
test
-x
"/usr/lib/qt3/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt3"
;
QTDIR
=
"/usr/lib/qt3"
fi
fi
fi
fi
fi
fi
if
test
-d
"/usr/lib/qt2/lib"
;
then
if
test
-d
"/usr/lib/qt2/lib"
;
then
if
test
-d
"/usr/lib/qt2/include"
;
then
if
test
-d
"/usr/lib/qt2/include"
;
then
if
test
-x
"/usr/lib/qt2/bin/moc"
;
then
if
test
-x
"/usr/lib/qt2/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt2"
;
QTDIR
=
"/usr/lib/qt2"
fi
fi
fi
fi
fi
fi
if
test
-d
"/usr/lib/qt/lib"
;
then
if
test
-d
"/usr/lib/qt/lib"
;
then
if
test
-d
"/usr/lib/qt/include"
;
then
if
test
-d
"/usr/lib/qt/include"
;
then
if
test
-x
"/usr/lib/qt/bin/moc"
;
then
if
test
-x
"/usr/lib/qt/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt"
;
QTDIR
=
"/usr/lib/qt"
fi
fi
fi
fi
fi
fi
...
@@ -260,19 +261,22 @@ if test "$f_wizard" = YES; then
...
@@ -260,19 +261,22 @@ if test "$f_wizard" = YES; then
exit
2
exit
2
else
else
if
test
!
-d
"
$QTDIR
/lib"
;
then
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
exit
2
fi
fi
if
test
!
-d
"
$QTDIR
/include"
;
then
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
exit
2
fi
fi
if
test
!
-x
"
$QTDIR
/bin/moc"
;
then
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
exit
2
fi
fi
echo
" headers
$QTDIR
/include,"
echo
" headers
$QTDIR
/include,"
echo
" libraries
$QTDIR
/lib"
echo
" libraries
$QTDIR
/lib"
if
test
-n
"
`
ls
$QTDIR
/lib/
*
|
grep
qt-mt
`
"
;
then
f_thread
=
YES
fi
fi
fi
fi
fi
...
@@ -418,6 +422,7 @@ INSTALL = $f_prefix
...
@@ -418,6 +422,7 @@ INSTALL = $f_prefix
INSTTOOL =
$f_insttool
INSTTOOL =
$f_insttool
DOXYDOCS = ..
DOXYDOCS = ..
DOCDIR =
$f_docdir
DOCDIR =
$f_docdir
QTDIR =
$QTDIR
EOF
EOF
if
test
"
$f_dot
"
!=
NO
;
then
if
test
"
$f_dot
"
!=
NO
;
then
...
@@ -505,10 +510,14 @@ for i in $f_inprofiles ; do
...
@@ -505,10 +510,14 @@ for i in $f_inprofiles ; do
EOF
EOF
if
test
"
$f_debug
"
=
NO
;
then
if
test
"
$f_debug
"
=
NO
;
then
cat
$SRC
.tmakeconfig |
sed
-e
"s/
\$
extraopts/release/g"
>>
$DST
realopts
=
"release"
else
else
cat
$SRC
.tmakeconfig |
sed
-e
"s/
\$
extraopts/debug/g"
>>
$DST
realopts
=
"debug"
fi
if
test
"
$f_thread
"
=
YES
;
then
realopts
=
"
$realopts
thread"
fi
fi
cat
$SRC
.tmakeconfig |
sed
-e
"s/
\$
extraopts/
$realopts
/g"
>>
$DST
echo
" Created
$DST
from
$SRC
..."
echo
" Created
$DST
from
$SRC
..."
done
done
...
...
doc/config.doc
View file @
c1605e5b
...
@@ -239,7 +239,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -239,7 +239,7 @@ followed by the descriptions of the tags grouped by category.
<
dt
>\
c
CREATE_SUBDIRS
<
dd
>
<
dt
>\
c
CREATE_SUBDIRS
<
dd
>
\
addindex
CREATE_SUBDIRS
\
addindex
CREATE_SUBDIRS
If
the
\
c
CREATE_SUBDIRS
tag
is
set
to
\
c
YES
,
then
doxygen
will
create
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
.
format
and
will
distribute
the
generated
files
over
these
directories
.
Enabling
this
option
can
be
useful
when
feeding
doxygen
a
huge
amount
of
source
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
files
,
where
putting
all
generated
files
in
the
same
directory
would
otherwise
...
...
doc/language.doc
View file @
c1605e5b
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
...
@@ -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
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
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):
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, French, German, Greek,
Czech, Danish, Dutch, English, Finnish, French, German, Greek,
...
...
packages/rpm/doxygen.spec
View file @
c1605e5b
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.7_20040
617
Version: 1.3.7_20040
704
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/config.l
View file @
c1605e5b
...
@@ -1348,7 +1348,7 @@ void Config::create()
...
@@ -1348,7 +1348,7 @@ void Config::create()
cb = addBool(
cb = addBool(
"CREATE_SUBDIRS",
"CREATE_SUBDIRS",
"If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n"
"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"
"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"
"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"
"files, where putting all generated files in the same directory would otherwise \n"
...
@@ -1361,10 +1361,11 @@ void Config::create()
...
@@ -1361,10 +1361,11 @@ void Config::create()
"documentation generated by doxygen is written. Doxygen will use this \n"
"documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n"
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"The default language is English, other supported languages are: \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, \n"
"(Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, \n"
"Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n",
"Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, \n"
"Swedish, and Ukrainian.\n",
"English"
"English"
);
);
#ifdef LANG_BR
#ifdef LANG_BR
...
@@ -1513,7 +1514,7 @@ void Config::create()
...
@@ -1513,7 +1514,7 @@ void Config::create()
"If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \n"
"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"
"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",
"to NO the shortest path that makes the file name unique will be used. \n",
FALS
E
TRU
E
);
);
cl = addList(
cl = addList(
"STRIP_FROM_PATH",
"STRIP_FROM_PATH",
...
...
src/dot.cpp
View file @
c1605e5b
...
@@ -193,6 +193,48 @@ static bool convertMapFile(QTextStream &t,const char *mapName,
...
@@ -193,6 +193,48 @@ static bool convertMapFile(QTextStream &t,const char *mapName,
return
TRUE
;
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
)
static
bool
readBoundingBoxDot
(
const
char
*
fileName
,
int
*
width
,
int
*
height
)
{
{
QFile
f
(
fileName
);
QFile
f
(
fileName
);
...
@@ -497,14 +539,15 @@ static void writeBoxMemberList(QTextStream &t,char prot,MemberList &ml,ClassDef
...
@@ -497,14 +539,15 @@ static void writeBoxMemberList(QTextStream &t,char prot,MemberList &ml,ClassDef
void
DotNode
::
writeBox
(
QTextStream
&
t
,
void
DotNode
::
writeBox
(
QTextStream
&
t
,
GraphType
gt
,
GraphType
gt
,
GraphOutputFormat
/*format*/
,
GraphOutputFormat
/*format*/
,
bool
hasNonReachableChildren
)
bool
hasNonReachableChildren
,
bool
reNumber
)
{
{
const
char
*
labCol
=
const
char
*
labCol
=
m_url
.
isEmpty
()
?
"grey75"
:
// non link
m_url
.
isEmpty
()
?
"grey75"
:
// non link
(
(
(
hasNonReachableChildren
)
?
"red"
:
"black"
(
hasNonReachableChildren
)
?
"red"
:
"black"
);
);
t
<<
" Node"
<<
m_number
<<
" [label=
\"
"
;
t
<<
" Node"
<<
reNumberNode
(
m_number
,
reNumber
)
<<
" [label=
\"
"
;
if
(
Config_getBool
(
"UML_LOOK"
)
&&
(
gt
==
Inheritance
||
gt
==
Collaboration
))
if
(
Config_getBool
(
"UML_LOOK"
)
&&
(
gt
==
Inheritance
||
gt
==
Collaboration
))
{
{
...
@@ -567,13 +610,14 @@ void DotNode::writeArrow(QTextStream &t,
...
@@ -567,13 +610,14 @@ void DotNode::writeArrow(QTextStream &t,
DotNode
*
cn
,
DotNode
*
cn
,
EdgeInfo
*
ei
,
EdgeInfo
*
ei
,
bool
topDown
,
bool
topDown
,
bool
pointBack
bool
pointBack
,
bool
reNumber
)
)
{
{
t
<<
" Node"
;
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"
;
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
<<
" ["
;
t
<<
" ["
;
if
(
pointBack
)
t
<<
"dir=back,"
;
if
(
pointBack
)
t
<<
"dir=back,"
;
t
<<
"color=
\"
"
<<
edgeColorMap
[
ei
->
m_color
]
t
<<
"color=
\"
"
<<
edgeColorMap
[
ei
->
m_color
]
...
@@ -603,7 +647,8 @@ void DotNode::write(QTextStream &t,
...
@@ -603,7 +647,8 @@ void DotNode::write(QTextStream &t,
bool
topDown
,
bool
topDown
,
bool
toChildren
,
bool
toChildren
,
int
distance
,
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);
//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,
...
@@ -620,7 +665,7 @@ void DotNode::write(QTextStream &t,
if
(
cn
->
m_distance
>
distance
)
hasNonReachableChildren
=
TRUE
;
if
(
cn
->
m_distance
>
distance
)
hasNonReachableChildren
=
TRUE
;
}
}
}
}
writeBox
(
t
,
gt
,
format
,
hasNonReachableChildren
);
writeBox
(
t
,
gt
,
format
,
hasNonReachableChildren
,
reNumber
);
m_written
=
TRUE
;
m_written
=
TRUE
;
if
(
nl
)
if
(
nl
)
{
{
...
@@ -634,9 +679,9 @@ void DotNode::write(QTextStream &t,
...
@@ -634,9 +679,9 @@ void DotNode::write(QTextStream &t,
if
(
cn
->
m_distance
<=
distance
)
if
(
cn
->
m_distance
<=
distance
)
{
{
//printf("write arrow %s%s%s\n",label().data(),backArrows?"<-":"->",cn->label().data());
//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
else
// render parents
...
@@ -654,10 +699,11 @@ void DotNode::write(QTextStream &t,
...
@@ -654,10 +699,11 @@ void DotNode::write(QTextStream &t,
pn
,
pn
,
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
this
)),
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
this
)),
FALSE
,
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)
...
@@ -946,9 +992,10 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
{
{
if
(
node
->
m_subgraphId
==
n
->
m_subgraphId
)
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
];
uchar
md5_sig
[
16
];
QCString
sigStr
(
33
);
QCString
sigStr
(
33
);
MD5Buffer
((
const
unsigned
char
*
)
buf
.
ascii
(),
buf
.
length
(),
md5_sig
);
MD5Buffer
((
const
unsigned
char
*
)
buf
.
ascii
(),
buf
.
length
(),
md5_sig
);
...
@@ -974,11 +1021,12 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
...
@@ -974,11 +1021,12 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
{
{
if
(
node
->
m_subgraphId
==
n
->
m_subgraphId
)
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
);
writeGraphFooter
(
t
);
f
.
close
();
f
.
close
();
resetReNumbering
();
QCString
dotArgs
(
maxCmdLine
);
QCString
dotArgs
(
maxCmdLine
);
dotArgs
.
sprintf
(
"
\"
%s
\"
-T%s -o
\"
%s
\"
-Timap -o
\"
%s
\"
"
,
dotArgs
.
sprintf
(
"
\"
%s
\"
-T%s -o
\"
%s
\"
-Timap -o
\"
%s
\"
"
,
...
@@ -1407,7 +1455,8 @@ void writeDotGraph(DotNode *root,
...
@@ -1407,7 +1455,8 @@ void writeDotGraph(DotNode *root,
bool
lrRank
,
bool
lrRank
,
bool
renderParents
,
bool
renderParents
,
int
distance
,
int
distance
,
bool
backArrows
bool
backArrows
,
bool
reNumber
)
)
{
{
// generate the graph description for dot
// generate the graph description for dot
...
@@ -1423,7 +1472,7 @@ void writeDotGraph(DotNode *root,
...
@@ -1423,7 +1472,7 @@ void writeDotGraph(DotNode *root,
t
<<
" rankdir=LR;"
<<
endl
;
t
<<
" rankdir=LR;"
<<
endl
;
}
}
root
->
clearWriteFlag
();
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
)
if
(
renderParents
&&
root
->
m_parents
)
{
{
//printf("rendering parents!\n");
//printf("rendering parents!\n");
...
@@ -1439,10 +1488,11 @@ void writeDotGraph(DotNode *root,
...
@@ -1439,10 +1488,11 @@ void writeDotGraph(DotNode *root,
pn
,
pn
,
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
FALSE
,
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
);
writeGraphFooter
(
t
);
...
@@ -1462,6 +1512,8 @@ QCString computeMd5Signature(DotNode *root,
...
@@ -1462,6 +1512,8 @@ QCString computeMd5Signature(DotNode *root,
bool
backArrows
bool
backArrows
)
)
{
{
bool
reNumber
=
TRUE
;
//printf("computeMd5Signature\n");
//printf("computeMd5Signature\n");
QString
buf
;
QString
buf
;
QTextStream
md5stream
(
&
buf
,
IO_WriteOnly
);
QTextStream
md5stream
(
&
buf
,
IO_WriteOnly
);
...
@@ -1470,7 +1522,7 @@ QCString computeMd5Signature(DotNode *root,
...
@@ -1470,7 +1522,7 @@ QCString computeMd5Signature(DotNode *root,
md5stream
<<
"rankdir=LR;"
<<
endl
;
md5stream
<<
"rankdir=LR;"
<<
endl
;
}
}
root
->
clearWriteFlag
();
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
)
if
(
renderParents
&&
root
->
m_parents
)
{
{
QListIterator
<
DotNode
>
dnli
(
*
root
->
m_parents
);
QListIterator
<
DotNode
>
dnli
(
*
root
->
m_parents
);
...
@@ -1485,16 +1537,21 @@ QCString computeMd5Signature(DotNode *root,
...
@@ -1485,16 +1537,21 @@ QCString computeMd5Signature(DotNode *root,
pn
,
pn
,
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
pn
->
m_edgeInfo
->
at
(
pn
->
m_children
->
findRef
(
root
)),
FALSE
,
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
];
uchar
md5_sig
[
16
];
QCString
sigStr
(
33
);
QCString
sigStr
(
33
);
MD5Buffer
((
const
unsigned
char
*
)
buf
.
ascii
(),
buf
.
length
(),
md5_sig
);
MD5Buffer
((
const
unsigned
char
*
)
buf
.
ascii
(),
buf
.
length
(),
md5_sig
);
MD5SigToString
(
md5_sig
,
sigStr
.
data
(),
33
);
MD5SigToString
(
md5_sig
,
sigStr
.
data
(),
33
);
if
(
reNumber
)
{
resetReNumbering
();
}
//printf("md5: %s | file: %s\n",sigStr,baseName.data());
//printf("md5: %s | file: %s\n",sigStr,baseName.data());
return
sigStr
;
return
sigStr
;
}
}
...
@@ -1510,6 +1567,7 @@ static bool findMaximalDotGraph(DotNode *root,
...
@@ -1510,6 +1567,7 @@ static bool findMaximalDotGraph(DotNode *root,
bool
backArrows
/*=TRUE*/
bool
backArrows
/*=TRUE*/
)
)
{
{
bool
reNumber
=
TRUE
;
int
minDistance
=
1
;
// min distance that shows only direct children.
int
minDistance
=
1
;
// min distance that shows only direct children.
int
curDistance
;
//=QMIN(2,maxDist); // current distance to try
int
curDistance
;
//=QMIN(2,maxDist); // current distance to try
int
maxDistance
=
maxDist
;
// max distance that show whole graph
int
maxDistance
=
maxDist
;
// max distance that show whole graph
...
@@ -1526,7 +1584,7 @@ static bool findMaximalDotGraph(DotNode *root,
...
@@ -1526,7 +1584,7 @@ static bool findMaximalDotGraph(DotNode *root,
curDistance
=
(
minDistance
+
maxDistance
)
/
2
;
curDistance
=
(
minDistance
+
maxDistance
)
/
2
;
writeDotGraph
(
root
,
gt
,
format
,
baseName
,
lrRank
,
renderParents
,
writeDotGraph
(
root
,
gt
,
format
,
baseName
,
lrRank
,
renderParents
,
curDistance
,
backArrows
);
curDistance
,
backArrows
,
reNumber
);
QCString
dotArgs
(
maxCmdLine
);
QCString
dotArgs
(
maxCmdLine
);
// create annotated dot file
// create annotated dot file
...
@@ -1576,8 +1634,13 @@ static bool findMaximalDotGraph(DotNode *root,
...
@@ -1576,8 +1634,13 @@ static bool findMaximalDotGraph(DotNode *root,
hasLRRank
,
hasLRRank
,
renderParents
,
renderParents
,
lastFit
,
lastFit
,
backArrows
backArrows
,
reNumber
);
);
if
(
reNumber
)
{
resetReNumbering
();
}
return
TRUE
;
return
TRUE
;
}
}
...
...
src/dot.h
View file @
c1605e5b
...
@@ -65,7 +65,7 @@ class DotNode
...
@@ -65,7 +65,7 @@ class DotNode
void
removeChild
(
DotNode
*
n
);
void
removeChild
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
void
write
(
QTextStream
&
t
,
GraphType
gt
,
GraphOutputFormat
f
,
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
;
int
m_subgraphId
;
void
clearWriteFlag
();
void
clearWriteFlag
();
void
writeXML
(
QTextStream
&
t
,
bool
isClassGraph
);
void
writeXML
(
QTextStream
&
t
,
bool
isClassGraph
);
...
@@ -76,9 +76,9 @@ class DotNode
...
@@ -76,9 +76,9 @@ class DotNode
private
:
private
:
void
colorConnectedNodes
(
int
curColor
);
void
colorConnectedNodes
(
int
curColor
);
void
writeBox
(
QTextStream
&
t
,
GraphType
gt
,
GraphOutputFormat
f
,
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
,
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!
const
DotNode
*
findDocNode
()
const
;
// only works for acyclic graphs!
int
m_number
;
int
m_number
;
QCString
m_label
;
//!< label text
QCString
m_label
;
//!< label text
...
@@ -102,7 +102,7 @@ class DotNode
...
@@ -102,7 +102,7 @@ class DotNode
DotNode
*
root
,
GraphType
gt
,
DotNode
*
root
,
GraphType
gt
,
GraphOutputFormat
f
,
const
QCString
&
baseName
,
GraphOutputFormat
f
,
const
QCString
&
baseName
,
bool
lrRank
,
bool
renderParents
,
bool
lrRank
,
bool
renderParents
,
int
distance
,
bool
backArrows
int
distance
,
bool
backArrows
,
bool
reNumber
);
);
friend
QCString
computeMd5Signature
(
friend
QCString
computeMd5Signature
(
DotNode
*
root
,
GraphType
gt
,
DotNode
*
root
,
GraphType
gt
,
...
...
src/doxygen.cpp
View file @
c1605e5b
...
@@ -810,9 +810,9 @@ static void addClassToContext(Entry *root)
...
@@ -810,9 +810,9 @@ static void addClassToContext(Entry *root)
}
}
}
}
//
if the class is not in a namespace then we insert
//
add the class to the file (we do this even if we have already inserted
// it in
the file definition
// it in
to the namespace)
if
(
!
found
&&
fd
&&
(
root
->
section
&
Entry
::
COMPOUND_MASK
))
if
(
fd
&&
(
root
->
section
&
Entry
::
COMPOUND_MASK
))
{
{
//printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n",
//printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n",
// cd->name().data(),
// cd->name().data(),
...
@@ -1677,14 +1677,13 @@ static MemberDef *addVariableToFile(
...
@@ -1677,14 +1677,13 @@ static MemberDef *addVariableToFile(
nd
->
insertMember
(
md
);
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
md
->
setNamespace
(
nd
);
}
}
else
// add member to the file (we do this even if we have already inserted
// it into the namespace.
if
(
fd
)
{
{
// find file definition
fd
->
insertMember
(
md
);
if
(
fd
)
md
->
setFileDef
(
fd
);
{
fd
->
insertMember
(
md
);
md
->
setFileDef
(
fd
);
}
}
}
// add member definition to the list of globals
// add member definition to the list of globals
...
@@ -1739,6 +1738,8 @@ static bool isVarWithConstructor(Entry *root)
...
@@ -1739,6 +1738,8 @@ static bool isVarWithConstructor(Entry *root)
Definition
*
ctx
=
0
;
Definition
*
ctx
=
0
;
FileDef
*
fd
=
0
;
FileDef
*
fd
=
0
;
bool
ambig
;
bool
ambig
;
int
ti
;
if
(
root
->
parent
&&
root
->
parent
->
section
&
Entry
::
COMPOUND_MASK
)
if
(
root
->
parent
&&
root
->
parent
->
section
&
Entry
::
COMPOUND_MASK
)
{
// inside a class
{
// inside a class
result
=
FALSE
;
result
=
FALSE
;
...
@@ -1760,6 +1761,10 @@ static bool isVarWithConstructor(Entry *root)
...
@@ -1760,6 +1761,10 @@ static bool isVarWithConstructor(Entry *root)
type
=
root
->
type
;
type
=
root
->
type
;
if
(
type
.
left
(
6
)
==
"const "
)
type
=
type
.
right
(
type
.
length
()
-
6
);
if
(
type
.
left
(
6
)
==
"const "
)
type
=
type
.
right
(
type
.
length
()
-
6
);
typeIsClass
=
getResolvedClass
(
ctx
,
fd
,
type
)
!=
0
;
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
if
(
typeIsClass
)
// now we still have to check if the arguments are
// types or values. Since we do not have complete type info
// types or values. Since we do not have complete type info
// we need to rely on heuristics :-(
// we need to rely on heuristics :-(
...
@@ -2453,9 +2458,11 @@ static void buildFunctionList(Entry *root)
...
@@ -2453,9 +2458,11 @@ static void buildFunctionList(Entry *root)
nd
->
insertMember
(
md
);
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
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
);
fd
->
insertMember
(
md
);
md
->
setFileDef
(
fd
);
md
->
setFileDef
(
fd
);
}
}
...
@@ -5367,10 +5374,14 @@ static void findEnums(Entry *root)
...
@@ -5367,10 +5374,14 @@ static void findEnums(Entry *root)
nd
->
insertMember
(
md
);
nd
->
insertMember
(
md
);
md
->
setNamespace
(
nd
);
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
);
md
->
setDefinition
(
name
);
if
(
fd
==
0
&&
root
->
tagInfo
)
if
(
fd
==
0
&&
root
->
parent
)
{
{
bool
ambig
;
bool
ambig
;
QCString
filePathName
=
root
->
parent
->
fileName
;
QCString
filePathName
=
root
->
parent
->
fileName
;
...
...
src/htmldocvisitor.cpp
View file @
c1605e5b
...
@@ -27,6 +27,9 @@
...
@@ -27,6 +27,9 @@
#include "message.h"
#include "message.h"
#include "config.h"
#include "config.h"
#define PREFRAG_START "<div class=\"fragment\"><pre>"
#define PREFRAG_END "</pre></div"
static
QString
htmlAttribsToString
(
const
HtmlAttribList
&
attribs
)
static
QString
htmlAttribsToString
(
const
HtmlAttribList
&
attribs
)
{
{
QString
result
;
QString
result
;
...
@@ -189,14 +192,14 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
...
@@ -189,14 +192,14 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
switch
(
s
->
type
())
switch
(
s
->
type
())
{
{
case
DocVerbatim
:
:
Code
:
// fall though
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
());
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
().
latin1
(),
s
->
isExample
(),
s
->
exampleFile
());
m_t
<<
"</div></pre>"
;
m_t
<<
PREFRAG_END
;
break
;
break
;
case
DocVerbatim
:
:
Verbatim
:
case
DocVerbatim
:
:
Verbatim
:
m_t
<<
"<pre><div class=
\"
fragment
\"
>"
;
m_t
<<
PREFRAG_START
;
filter
(
s
->
text
());
filter
(
s
->
text
());
m_t
<<
"</div></pre>"
;
m_t
<<
PREFRAG_END
;
break
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
case
DocVerbatim
:
:
HtmlOnly
:
m_t
<<
s
->
text
();
m_t
<<
s
->
text
();
...
@@ -246,17 +249,17 @@ void HtmlDocVisitor::visit(DocInclude *inc)
...
@@ -246,17 +249,17 @@ void HtmlDocVisitor::visit(DocInclude *inc)
switch
(
inc
->
type
())
switch
(
inc
->
type
())
{
{
case
DocInclude
:
:
Include
:
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
());
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
().
latin1
(),
inc
->
isExample
(),
inc
->
exampleFile
());
m_t
<<
"</div></pre>"
;
m_t
<<
PREFRAG_END
;
break
;
break
;
case
DocInclude
:
:
IncWithLines
:
case
DocInclude
:
:
IncWithLines
:
{
{
m_t
<<
"<pre><div class=
\"
fragment
\"
>"
;
m_t
<<
PREFRAG_START
;
QFileInfo
cfi
(
inc
->
file
()
);
QFileInfo
cfi
(
inc
->
file
()
);
FileDef
fd
(
cfi
.
dirPath
(),
cfi
.
fileName
()
);
FileDef
fd
(
cfi
.
dirPath
(),
cfi
.
fileName
()
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
().
latin1
(),
inc
->
isExample
(),
inc
->
exampleFile
(),
&
fd
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
().
latin1
(),
inc
->
isExample
(),
inc
->
exampleFile
(),
&
fd
);
m_t
<<
"</div></pre>"
;
m_t
<<
PREFRAG_END
;
}
}
break
;
break
;
case
DocInclude
:
:
DontInclude
:
case
DocInclude
:
:
DontInclude
:
...
@@ -265,9 +268,9 @@ void HtmlDocVisitor::visit(DocInclude *inc)
...
@@ -265,9 +268,9 @@ void HtmlDocVisitor::visit(DocInclude *inc)
m_t
<<
inc
->
text
();
m_t
<<
inc
->
text
();
break
;
break
;
case
DocInclude
:
:
VerbInclude
:
case
DocInclude
:
:
VerbInclude
:
m_t
<<
"<pre><div class=
\"
fragment
\"
>"
;
m_t
<<
PREFRAG_START
;
filter
(
inc
->
text
());
filter
(
inc
->
text
());
m_t
<<
"</div></pre>"
;
m_t
<<
PREFRAG_END
;
break
;
break
;
}
}
}
}
...
@@ -278,7 +281,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
...
@@ -278,7 +281,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
// op->type(),op->isFirst(),op->isLast(),op->text().data());
// op->type(),op->isFirst(),op->isLast(),op->text().data());
if
(
op
->
isFirst
())
if
(
op
->
isFirst
())
{
{
if
(
!
m_hide
)
m_t
<<
"<pre><div class=
\"
fragment
\"
>"
;
if
(
!
m_hide
)
m_t
<<
PREFRAG_START
;
pushEnabled
();
pushEnabled
();
m_hide
=
TRUE
;
m_hide
=
TRUE
;
}
}
...
@@ -292,7 +295,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
...
@@ -292,7 +295,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
if
(
op
->
isLast
())
if
(
op
->
isLast
())
{
{
popEnabled
();
popEnabled
();
if
(
!
m_hide
)
m_t
<<
"</div></pre>"
;
if
(
!
m_hide
)
m_t
<<
PREFRAG_END
;
}
}
else
else
{
{
...
...
src/scanner.l
View file @
c1605e5b
...
@@ -5500,12 +5500,23 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -5500,12 +5500,23 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<Doc>"*/" {
<Doc>"*/" {
checkDocs();
checkDocs();
current->doc += "\n\n";
//printf("End of docs at line %d: %s\n",yyLineNr,current->doc.data());
//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);
current->doc.resize(0);
}
}
else
{
current->doc += "\n\n";
}
if (current->section==Entry::GROUPDOC_SEC)
if (current->section==Entry::GROUPDOC_SEC)
{
{
current_root->addSubEntry(current);
current_root->addSubEntry(current);
...
...
src/translator_adapter.h
View file @
c1605e5b
...
@@ -352,19 +352,4 @@ class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4
...
@@ -352,19 +352,4 @@ class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4
{
return
english
.
trPropertyDocumentation
();
}
{
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
#endif
src/translator_cz.h
View file @
c1605e5b
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_CZ_H
#ifndef TRANSLATOR_CZ_H
#define TRANSLATOR_CZ_H
#define TRANSLATOR_CZ_H
//
$Id$
//
//
//
// The first translation from English to Czech was started by
// The first translation from English to Czech was started by
// Vlastimil Havran (1999--2000). The prototype version of Czech strings
// Vlastimil Havran (1999--2000). The prototype version of Czech strings
...
@@ -129,6 +129,7 @@
...
@@ -129,6 +129,7 @@
// 2003/08/13 - Four new methods "since 1.3.3" implemented.
// 2003/08/13 - Four new methods "since 1.3.3" implemented.
// 2004/02/26 - trLegendDocs() updated.
// 2004/02/26 - trLegendDocs() updated.
// 2004/02/27 - Text inside the trCallGraph() corrected.
// 2004/02/27 - Text inside the trCallGraph() corrected.
// 2004/06/16 - The new method "since 1.3.8" implemented.
// Todo
// Todo
// ----
// ----
...
@@ -148,7 +149,7 @@
...
@@ -148,7 +149,7 @@
// Windows version. The version which does not call the function is
// Windows version. The version which does not call the function is
// probably slightly faster.
// probably slightly faster.
class
TranslatorCzech
:
public
Translator
Adapter_1_3_8
class
TranslatorCzech
:
public
Translator
{
{
private
:
private
:
/*! The decode() inline assumes the source written in the
/*! The decode() inline assumes the source written in the
...
@@ -1660,6 +1661,18 @@ class TranslatorCzech : public TranslatorAdapter_1_3_8
...
@@ -1660,6 +1661,18 @@ class TranslatorCzech : public TranslatorAdapter_1_3_8
{
{
return
decode
(
"Nalezená slova:"
);
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
#endif // TRANSLATOR_CZ_H
src/translator_es.h
View file @
c1605e5b
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
#ifndef TRANSLATOR_ES_H
#ifndef TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
class
TranslatorSpanish
:
public
TranslatorAdapter_1_3_
3
class
TranslatorSpanish
:
public
TranslatorAdapter_1_3_
8
{
{
public
:
public
:
virtual
QCString
idLanguage
()
virtual
QCString
idLanguage
()
...
...
src/translator_it.h
View file @
c1605e5b
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
*
*
* Revision history
* 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/11: translated new items used since version 1.3.3
* 2003/06: translated new items used since version 1.3.1
* 2003/06: translated new items used since version 1.3.1
* 2003/04: translated new items used since version 1.3
* 2003/04: translated new items used since version 1.3
...
@@ -70,7 +71,7 @@
...
@@ -70,7 +71,7 @@
#ifndef TRANSLATOR_IT_H
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class
TranslatorItalian
:
public
Translator
Adapter_1_3_8
class
TranslatorItalian
:
public
Translator
{
{
public
:
public
:
...
@@ -1504,6 +1505,17 @@ class TranslatorItalian : public TranslatorAdapter_1_3_8
...
@@ -1504,6 +1505,17 @@ class TranslatorItalian : public TranslatorAdapter_1_3_8
return
"Corrispondenze:"
;
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
#endif
src/translator_nl.h
View file @
c1605e5b
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
class
TranslatorDutch
:
public
Translator
Adapter_1_3_8
class
TranslatorDutch
:
public
Translator
{
{
public
:
public
:
QCString
idLanguage
()
QCString
idLanguage
()
...
@@ -1143,6 +1143,17 @@ class TranslatorDutch : public TranslatorAdapter_1_3_8
...
@@ -1143,6 +1143,17 @@ class TranslatorDutch : public TranslatorAdapter_1_3_8
return
"Gevonden:"
;
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"
;
}
};
};
...
...
src/util.cpp
View file @
c1605e5b
...
@@ -21,6 +21,8 @@
...
@@ -21,6 +21,8 @@
#include <windows.h>
#include <windows.h>
#endif
#endif
#include <md5.h>
#include "qtbc.h"
#include "qtbc.h"
#include <qregexp.h>
#include <qregexp.h>
#include <qfileinfo.h>
#include <qfileinfo.h>
...
@@ -60,6 +62,19 @@ extern char **environ;
...
@@ -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
struct
LookupInfo
{
{
LookupInfo
(
ClassDef
*
cd
=
0
,
MemberDef
*
td
=
0
,
QCString
ts
=
""
)
LookupInfo
(
ClassDef
*
cd
=
0
,
MemberDef
*
td
=
0
,
QCString
ts
=
""
)
...
@@ -326,24 +341,6 @@ QCString replaceAnonymousScopes(const QCString &s)
...
@@ -326,24 +341,6 @@ QCString replaceAnonymousScopes(const QCString &s)
// strip annonymous left hand side part of the scope
// strip annonymous left hand side part of the scope
QCString
stripAnonymousNamespaceScope
(
const
QCString
&
s
)
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
;
int
i
,
p
=
0
,
l
;
QCString
newScope
;
QCString
newScope
;
while
((
i
=
getScopeFragment
(
s
,
p
,
&
l
))
!=-
1
)
while
((
i
=
getScopeFragment
(
s
,
p
,
&
l
))
!=-
1
)
...
@@ -3639,6 +3636,11 @@ QCString convertNameToFile(const char *name,bool allowDots)
...
@@ -3639,6 +3636,11 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
}
if
(
createSubdirs
)
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
)
if
(
Doxygen
::
htmlDirMap
==
0
)
{
{
Doxygen
::
htmlDirMap
=
new
QDict
<
int
>
(
100003
);
Doxygen
::
htmlDirMap
=
new
QDict
<
int
>
(
100003
);
...
@@ -3646,20 +3648,31 @@ QCString convertNameToFile(const char *name,bool allowDots)
...
@@ -3646,20 +3648,31 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
}
static
int
curDirNum
=
0
;
static
int
curDirNum
=
0
;
int
*
dirNum
=
Doxygen
::
htmlDirMap
->
find
(
result
);
int
*
dirNum
=
Doxygen
::
htmlDirMap
->
find
(
result
);
int
l1Dir
=
0
,
l2Dir
=
0
;
if
(
dirNum
==
0
)
// new name
if
(
dirNum
==
0
)
// new name
{
{
Doxygen
::
htmlDirMap
->
insert
(
result
,
new
int
(
curDirNum
));
Doxygen
::
htmlDirMap
->
insert
(
result
,
new
int
(
curDirNum
));
l1Dir
=
(
curDirNum
)
%
10
;
l1Dir
=
(
curDirNum
)
&
0xf
;
// bits 0-3
l2Dir
=
(
(
curDirNum
)
/
10
)
%
10
;
l2Dir
=
(
curDirNum
>>
4
)
&
0xff
;
// bits 4-11
curDirNum
++
;
curDirNum
++
;
}
}
else
// existing name
else
// existing name
{
{
l1Dir
=
(
*
dirNum
)
%
10
;
l1Dir
=
(
*
dirNum
)
&
0xf
;
// bits 0-3
l2Dir
=
((
*
dirNum
)
/
10
)
%
10
;
l2Dir
=
((
*
dirNum
)
>>
4
)
&
0xff
;
// bits 4-11
}
}
result
.
prepend
(
QCString
().
sprintf
(
"d%d/d%d/"
,
l1Dir
,
l2Dir
));
#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
;
return
result
;
}
}
...
@@ -3690,14 +3703,14 @@ void createSubDirs(QDir &d)
...
@@ -3690,14 +3703,14 @@ void createSubDirs(QDir &d)
{
{
if
(
Config_getBool
(
"CREATE_SUBDIRS"
))
if
(
Config_getBool
(
"CREATE_SUBDIRS"
))
{
{
// create
100
subdirectories
// create
4096
subdirectories
int
l1
,
l2
;
int
l1
,
l2
;
for
(
l1
=
0
;
l1
<
1
0
;
l1
++
)
for
(
l1
=
0
;
l1
<
1
6
;
l1
++
)
{
{
d
.
mkdir
(
QString
().
sprintf
(
"d%
d
"
,
l1
));
d
.
mkdir
(
QString
().
sprintf
(
"d%
x
"
,
l1
));
for
(
l2
=
0
;
l2
<
10
;
l2
++
)
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
));
}
}
}
}
}
}
...
...
src/xmlgen.cpp
View file @
c1605e5b
...
@@ -1557,6 +1557,7 @@ void generateXML()
...
@@ -1557,6 +1557,7 @@ void generateXML()
}
}
}
}
QDir
xmlDir
(
outputDirectory
);
QDir
xmlDir
(
outputDirectory
);
createSubDirs
(
xmlDir
);
QCString
fileName
=
outputDirectory
+
"/index.xsd"
;
QCString
fileName
=
outputDirectory
+
"/index.xsd"
;
QFile
f
(
fileName
);
QFile
f
(
fileName
);
if
(
!
f
.
open
(
IO_WriteOnly
))
if
(
!
f
.
open
(
IO_WriteOnly
))
...
...
tmake/lib/aix-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/aix-xlc/tmake.conf
View file @
c1605e5b
...
@@ -51,6 +51,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -51,6 +51,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/beos-g++/tmake.conf
View file @
c1605e5b
...
@@ -40,6 +40,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -40,6 +40,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_MOC
=
moc
TMAKE_MOC
=
moc
...
...
tmake/lib/bsdi-g++/tmake.conf
View file @
c1605e5b
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/dgux-g++/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-h,
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-h,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/freebsd-g++/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/gnu-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/hpux-acc/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
-
lICE
-
lSM
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
-
lICE
-
lSM
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_YACC
= -
ly
TMAKE_LIBS_YACC
= -
ly
...
...
tmake/lib/hpux-cc/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/hpux-g++/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
...
@@ -46,6 +46,7 @@ TMAKE_HPUX_SHLIB = 1
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
=
TMAKE_LIBS_OPENGL
=
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/irix-64/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/irix-dcc/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/irix-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/irix-n32/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/irix-o32/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/linux-g++/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_LIBS =
...
@@ -46,6 +46,7 @@ TMAKE_LIBS =
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11SM
= -
lICE
-
lSM
TMAKE_LIBS_X11SM
= -
lICE
-
lSM
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/macosx-c++/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
=
TMAKE_LIBS_X11
=
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/netbsd-g++/tmake.conf
View file @
c1605e5b
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/openbsd-g++/tmake.conf
View file @
c1605e5b
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -48,6 +48,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/osf1-cxx/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ END
...
@@ -47,6 +47,7 @@ END
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/osf1-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/qnx-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
= -
lunix
TMAKE_LIBS
= -
lunix
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/sco-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/solaris-cc-gcc/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
= -
lC
TMAKE_LIBS
= -
lC
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/solaris-cc/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
-
lICE
-
lSM
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
-
lICE
-
lSM
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_QT_OPENGL
= -
lqgl
-
lGL
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/solaris-g++/tmake.conf
View file @
c1605e5b
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -46,6 +46,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/sunos-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lGL
-
lGLU
-
lXmu
...
...
tmake/lib/ultrix-g++/tmake.conf
View file @
c1605e5b
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_DEBUG =
...
@@ -45,6 +45,7 @@ TMAKE_LFLAGS_DEBUG =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
...
...
tmake/lib/unix/generic.t
View file @
c1605e5b
...
@@ -47,7 +47,11 @@
...
@@ -47,7 +47,11 @@
if
(
!
((
Project
(
"TARGET"
)
eq
"qt"
)
&&
Project
(
"TMAKE_LIB_FLAG"
))
)
{
if
(
!
((
Project
(
"TARGET"
)
eq
"qt"
)
&&
Project
(
"TMAKE_LIB_FLAG"
))
)
{
Project
(
"TMAKE_LIBDIR_QT"
)
&&
Project
(
"TMAKE_LIBDIR_QT"
)
&&
Project
(
'TMAKE_LIBS *= -L$$TMAKE_LIBDIR_QT'
);
Project
(
'TMAKE_LIBS *= -L$$TMAKE_LIBDIR_QT'
);
Project
(
'TMAKE_LIBS *= $$TMAKE_LIBS_QT'
);
if
(
Config
(
"thread"
)
)
{
Project
(
'TMAKE_LIBS *= $$TMAKE_LIBS_QT_MT'
);
}
else
{
Project
(
'TMAKE_LIBS *= $$TMAKE_LIBS_QT'
);
}
}
}
}
}
if
(
Config
(
"opengl"
)
)
{
if
(
Config
(
"opengl"
)
)
{
...
...
tmake/lib/unixware-g++/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
= -
lc
TMAKE_LIBS
= -
lc
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
...
...
tmake/lib/unixware7-cc/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
=
TMAKE_LIBS
=
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
...
...
tmake/lib/unixware7-g++/tmake.conf
View file @
c1605e5b
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
...
@@ -47,6 +47,7 @@ TMAKE_LFLAGS_SONAME =
TMAKE_LIBS
= -
lc
TMAKE_LIBS
= -
lc
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lsocket
-
lnsl
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_QT_OPENGL
= -
lqgl
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
TMAKE_LIBS_OPENGL
= -
lMesaGL
-
lMesaGLU
-
lXmu
-
lXt
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment