Commit 6659cd32 authored by maddoxx's avatar maddoxx

first verilog update to dox1812

parent 8e8b3061
Doxygen uses cmake (http://www.cmake.org/) to build executables for various platforms. Doxygen uses cmake (http://www.cmake.org/) to build executables for various platforms.
It's required at least cmake version 3.0. It's required at least cmake version 2.8.12
The first step is to create a build directory where the output should be stored. The first step is to create a build directory where the output should be stored.
Doxygen can be fully build outside of the source tree. Doxygen can be fully build outside of the source tree.
...@@ -19,7 +19,7 @@ This also works for MacOSX, but if XCode is installed you can also generate an X ...@@ -19,7 +19,7 @@ This also works for MacOSX, but if XCode is installed you can also generate an X
For Windows one can generate a Visual Studio project using For Windows one can generate a Visual Studio project using
cmake -G "Visual Studio 11 2012" path\to\root\of\doxygen\source\tree cmake -G "Visual Studio 12 2013" path\to\root\of\doxygen\source\tree
(this is for Visual Studio 12, there are typically also generators for other versions of (this is for Visual Studio 12, there are typically also generators for other versions of
Visual Studio or other compiler environments like MinGW) Visual Studio or other compiler environments like MinGW)
...@@ -34,6 +34,7 @@ Doxygen's cmake configuration provides a number of options: ...@@ -34,6 +34,7 @@ Doxygen's cmake configuration provides a number of options:
- use_libclang Add support for libclang parsing. - use_libclang Add support for libclang parsing.
- win_static Link with /MT in stead of /MD on windows. - win_static Link with /MT in stead of /MD on windows.
- english_only Only compile in support for the English language. - english_only Only compile in support for the English language.
- force_qt4 Forces doxywizard to build using Qt4 even if Qt5 is installed
An option can be turned on, by adding -D<option>=ON as a command line option, this can be An option can be turned on, by adding -D<option>=ON as a command line option, this can be
done when generating the initial build files, but also afterwards, i.e. to enable building done when generating the initial build files, but also afterwards, i.e. to enable building
......
...@@ -23,9 +23,10 @@ option(use_sqlite3 "Add support for sqlite3 output [experimental]." OFF) ...@@ -23,9 +23,10 @@ option(use_sqlite3 "Add support for sqlite3 output [experimental]." OFF)
option(use_libclang "Add support for libclang parsing." OFF) option(use_libclang "Add support for libclang parsing." OFF)
option(win_static "Link with /MT in stead of /MD on windows" OFF) option(win_static "Link with /MT in stead of /MD on windows" OFF)
option(english_only "Only compile in support for the English language" OFF) option(english_only "Only compile in support for the English language" OFF)
option(force_qt4 "Forces doxywizard to build using Qt4 even if Qt5 is installed" OFF)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(SOURCE "${CMAKE_SOURCE_DIR}") set(TOP "${CMAKE_SOURCE_DIR}")
include(version) include(version)
set(sqlite3 "0" CACHE INTERNAL "used in settings.h") set(sqlite3 "0" CACHE INTERNAL "used in settings.h")
...@@ -40,17 +41,28 @@ endif() ...@@ -40,17 +41,28 @@ endif()
if (${CMAKE_SYSTEM} MATCHES "Darwin") if (${CMAKE_SYSTEM} MATCHES "Darwin")
set(CMAKE_CXX_FLAGS "-Wno-deprecated-register -mmacosx-version-min=10.5 ${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "-Wno-deprecated-register -mmacosx-version-min=10.5 ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "-Wno-deprecated-register -mmacosx-version-min=10.5 ${CMAKE_C_FLAGS}")
find_library(CORESERVICES_LIB CoreServices) find_library(CORESERVICES_LIB CoreServices)
set(EXTRA_LIBS ${CORESERVICES_LIB}) set(EXTRA_LIBS ${CORESERVICES_LIB})
endif() endif()
if (WIN32) if (WIN32)
set(ICONV_DIR "${CMAKE_SOURCE_DIR}/winbuild") if(NOT ICONV_DIR)
set(ICONV_DIR "${CMAKE_SOURCE_DIR}/winbuild")
endif()
set(CMAKE_REQUIRED_DEFINITIONS "-DLIBICONV_STATIC") set(CMAKE_REQUIRED_DEFINITIONS "-DLIBICONV_STATIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") # needed for language.cpp on 64bit set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") # needed for language.cpp on 64bit
add_definitions(-DLIBICONV_STATIC -D_CRT_SECURE_NO_WARNINGS) add_definitions(-DLIBICONV_STATIC -D_CRT_SECURE_NO_WARNINGS)
endif() endif()
if ("${CMAKE_GENERATOR}" MATCHES "Ninja")
set(LEX_FLAGS )
set(YACC_FLAGS )
else ("${CMAKE_GENERATOR}" MATCHES "Ninja")
set(LEX_FLAGS $(LEX_FLAGS))
set(YACC_FLAGS $(YACC_FLAGS))
endif ("${CMAKE_GENERATOR}" MATCHES "Ninja")
find_program(DOT NAMES dot) find_program(DOT NAMES dot)
find_package(PythonInterp REQUIRED) find_package(PythonInterp REQUIRED)
find_package(FLEX REQUIRED) find_package(FLEX REQUIRED)
...@@ -66,8 +78,6 @@ include_directories(${ICONV_INCLUDE_DIR}) ...@@ -66,8 +78,6 @@ include_directories(${ICONV_INCLUDE_DIR})
#set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs") #set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs")
set(DOC_INSTALL_DIR "share/doc/packages/doxygen" CACHE STRING "Relative path where to install the documentation")
set(EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/examples)
set(DOXYDOCS ${PROJECT_BINARY_DIR}/doc) set(DOXYDOCS ${PROJECT_BINARY_DIR}/doc)
set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS}) set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS})
set(GENERATED_SRC "${CMAKE_BINARY_DIR}/generated_src" CACHE INTERNAL "Stores generated files") set(GENERATED_SRC "${CMAKE_BINARY_DIR}/generated_src" CACHE INTERNAL "Stores generated files")
...@@ -136,3 +146,6 @@ add_subdirectory(addon/doxywizard) ...@@ -136,3 +146,6 @@ add_subdirectory(addon/doxywizard)
enable_testing() enable_testing()
add_subdirectory(testing) add_subdirectory(testing)
include(cmake/packaging.cmake) # set CPACK_xxxx properties
include(CPack)
...@@ -35,6 +35,7 @@ OPTIMIZE_FOR_FORTRAN = NO ...@@ -35,6 +35,7 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING = EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS =
AUTOLINK_SUPPORT = YES AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO CPP_CLI_SUPPORT = NO
......
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
Preamble Preamble
The licenses for most software are designed to take away your The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public freedom to share and change it. By contrast, the GNU General Public
...@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This ...@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to the GNU Lesser General Public License instead.) You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
...@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all. ...@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains 0. This License applies to any program or other work which contains
...@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: ...@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on does not normally print such an announcement, your work based on
the Program is not required to print an announcement.) the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in and can be reasonably considered independent and separate works in
...@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent ...@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not distribution of the source code, even though third parties are not
compelled to copy the source along with the object code. compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is otherwise to copy, modify, sublicense or distribute the Program is
...@@ -225,7 +225,7 @@ impose that choice. ...@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License. be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License original copyright holder who places the Program under this License
...@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals ...@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally. of promoting the sharing and reuse of software generally.
NO WARRANTY NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
...@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ...@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it possible use to the public, the best way to achieve this is to make it
...@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least ...@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) yyyy <name of author> Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found. ...@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License along
along with this program; if not, write to the Free Software with this program; if not, write to the Free Software Foundation, Inc.,
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this If the program is interactive, make it output a short notice like this
when it starts in an interactive mode: when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) yyyy name of author Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
...@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names: ...@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. Public License instead of this License.
DESTDIR =
doxywizard:
cd addon/doxywizard ; $(MAKE)
doxysearch:
cd addon/doxysearch ; $(MAKE)
doxmlparser:
cd addon/doxmlparser/src ; $(MAKE)
cd addon/doxmlparser/test ; $(MAKE)
cd addon/doxmlparser/examples/metrics ; $(MAKE)
doxyapp:
cd addon/doxyapp ; $(MAKE) clean
clean: FORCE
- cd examples ; $(MAKE) clean
- cd doc ; $(MAKE) clean
- cd qtools ; $(MAKE) clean
- cd src ; $(MAKE) clean
- cd libmd5 ; $(MAKE) clean
- cd vhdlparser ; $(MAKE) clean
-cd addon/doxywizard ; $(MAKE) clean
-cd addon/doxysearch ; $(MAKE) clean
-cd addon/doxyapp ; $(MAKE) clean
-cd addon/doxmlparser/src ; $(MAKE) clean
-cd addon/doxmlparser/test ; $(MAKE) clean
-cd addon/doxmlparser/examples/metrics ; $(MAKE) clean
-rm -f bin/doxy*
-rm -f objects/*/*.o
distclean: clean
-cd src ; $(MAKE) distclean
-cd libmd5 ; $(MAKE) distclean
-cd vhdlparser ; $(MAKE) distclean
-cd qtools ; $(MAKE) distclean
-cd addon/doxywizard ; $(MAKE) distclean
-cd addon/doxysearch ; $(MAKE) distclean
-cd addon/doxyapp ; $(MAKE) distclean
-cd addon/doxmlparser/src ; $(MAKE) distclean
-cd addon/doxmlparser/test ; $(MAKE) distclean
-cd addon/doxmlparser/examples/metrics ; $(MAKE) distclean
-rm -rf lib
-rm -rf bin
-rm -rf objects
-rm -rf html
-rm -rf latex
-rm -rf man
-rm -rf docbook
-rm -rf perlmod
-rm -rf rtf
-rm -rf xml
-rm -f src/Makefile.doxygen src/Makefile.libdoxygen
-rm -f src/Makefile.libdoxycfg src/libdoxycfg.t src/libdoxygen.t
-rm -f libmd5/Makefile.libmd5
-rm -f vhdlparser/Makefile.vhdlparser
-rm -f .makeconfig .tmakeconfig
-rm -f src/doxygen.pro src/libdoxygen.pro qtools/qtools.pro src/libdoxycfg.pro libmd5/libmd5.pro vhdlparser/vhdlparser.pro
-rm -rf generated_src
-rm -f addon/doxywizard/doxywizard.pro
-rm -f VERSION
-rm -f packages/rpm/doxygen.spec
-rm -r addon/doxywizard/Makefile
-rm -f addon/doxysearch/Makefile
-rm -f addon/doxyapp/Makefile
-rm -f addon/doxmlparser/src/Makefile
-rm -f addon/doxmlparser/test/Makefile
-rm -f addon/doxmlparser/examples/metrics/Makefile
-rm -f qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f Makefile
DATE=$(shell date "+%B %Y")
MAN1DIR = man/man1
install: doxywizard_install doxysearch_install
$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxygen $(DESTDIR)$(INSTALL)/bin
$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR)
cat doc/doxygen.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxygen.1
$(INSTTOOL) -m 644 doxygen.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxygen.1
rm doxygen.1
install_docs:
$(INSTTOOL) -d $(DESTDIR)$(DOCDIR)
$(MAKE) -C examples
$(MAKE) -C doc
$(MAKE) -C latex
$(INSTTOOL) -m 644 latex/doxygen_manual.pdf $(DESTDIR)$(DOCDIR)
cp -r examples $(DESTDIR)$(DOCDIR)
cp -r html $(DESTDIR)$(DOCDIR)
docs: FORCE
cd examples ; $(MAKE)
cd doc ; $(MAKE)
pdf: docs
cd latex ; $(MAKE)
DISTFILES = Doxyfile vhdlparser libmd5 addon tmake doc examples bin lib objects testing \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION README.md packages winbuild jquery templates
archive: clean
tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES)
DISTDIR = doxygen-`echo $(VERSION) | tr - _`
dist: clean
rm -rf $(DISTDIR)
mkdir $(DISTDIR)
cp -a $(DISTFILES) $(DISTDIR)
find $(DISTDIR) \( -name ".svn" \) -print0 | xargs -0 rm -rf
tar zcvf $(DISTDIR).src.tar.gz $(DISTDIR)
rm -rf $(DISTDIR)
DISTDIR = doxygen-`echo $(VERSION) | tr - _`
rpm: dist
gzip -df $(DISTDIR).src.tar.gz
mkdir $(DISTDIR)
mkdir $(DISTDIR)/packages
mkdir $(DISTDIR)/packages/rpm
cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmsrc: dist
gzip -df $(DISTDIR).src.tar.gz
mkdir $(DISTDIR)
mkdir $(DISTDIR)/packages
mkdir $(DISTDIR)/packages/rpm
cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -ts %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
rpmbinary: dist
gzip -df $(DISTDIR).src.tar.gz
mkdir $(DISTDIR)
mkdir $(DISTDIR)/packages
mkdir $(DISTDIR)/packages/rpm
cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
rm -rf $(DISTDIR)
gzip -9v $(DISTDIR).src.tar
rpmbuild -tb %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
ctags:
ctags -R -f tags src addon/doxywizard qtools
test: FORCE
make -C testing
FORCE:
all: src\version.cpp
set TMAKEPATH=$(TMAKEPATH) & cd qtools & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd libmd5 & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd src & $(MAKE)
clean:
cd examples & $(MAKE) clean
cd doc & $(MAKE) clean
cd src & $(MAKE) clean
-del bin\doxy*.*
-del objects\*.o
distclean: clean
-del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.libdoxycfg \
src\libdoxycfg.t src\libdoxygen.t
-del Makefile src\Makefile examples\Makefile doc\Makefile
-del src\libdoxygen.pro src\doxygen.pro src\libdoxycfg.pro
-del src\version.cpp
realclean: distclean
docs:
set TMAKEPATH=$(TMAKEPATH) & cd examples & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd doc & $(MAKE)
ps: docs
cd latex & $(MAKE)
src\version.cpp: Makefile
echo char versionString[]="""$(VERSION)"""; > src\version.cpp
FORCE:
all: src\version.cpp
set TMAKEPATH=$(TMAKEPATH)
cd qtools
$(MAKE)
cd ..
cd libmd5
$(MAKE)
cd ..
cd src
$(MAKE)
clean: FORCE
cd examples
$(MAKE) clean
cd ..
cd doc
$(MAKE) clean
cd ..
cd src
$(MAKE) clean
cd ..
-del bin\doxy*.*
-del objects\*.o
distclean: clean
-del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.libdoxycfg \
src\libdoxycfg.t src\libdoxygen.t
-del Makefile src\Makefile examples\Makefile doc\Makefile
-del src\libdoxygen.pro src\doxygen.pro src\libdoxycfg.pro
-del src\version.cpp
realclean: distclean
docs: FORCE
cd examples
$(MAKE)
cd ..
cd doc
$(MAKE)
cd ..
ps: docs
cd latex
$(MAKE)
src\version.cpp: Makefile
echo char versionString[]="$(VERSION)"; > src\version.cpp
FORCE:
aix-g++
aix-xlc
beos-g++
dgux-g++
freebsd-g++
gnu-g++
hpux-acc
hpux-cc
hpux-g++
irix-64
irix-dcc
irix-g++
irix-n32
linux-g++
linux-64
macosx-c++
macosx-uni-c++
m68k-atari-mint-g++
netbsd-g++
openbsd-g++
osf1-cxx
osf1-g++
qnx-g++
sco-g++
solaris-cc
solaris-cc-64
solaris-g++
sunos-g++
ultrix-g++
unixware-g++
win32-g++
win32-mingw
...@@ -33,6 +33,8 @@ Developers ...@@ -33,6 +33,8 @@ Developers
* Coverity Scan Build Status: <a href="https://scan.coverity.com/projects/2860"> <img alt="Coverity Scan Build Status" src="https://scan.coverity.com/projects/2860/badge.svg"/> </a> * Coverity Scan Build Status: <a href="https://scan.coverity.com/projects/2860"> <img alt="Coverity Scan Build Status" src="https://scan.coverity.com/projects/2860/badge.svg"/> </a>
* Doxygen's Doxygen Documentation: <a href="https://codedocs.xyz/doxygen/doxygen/"><img src="https://codedocs.xyz/doxygen/doxygen.svg"/></a>
* Install * Install
* Quick install see (./INSTALL) * Quick install see (./INSTALL)
* else http://www.doxygen.org/manual/install.html * else http://www.doxygen.org/manual/install.html
......
../src/doxmlintf.h
\ No newline at end of file
../src/doxmlintf.h
\ No newline at end of file
...@@ -262,28 +262,28 @@ int main(int argc,char **argv) ...@@ -262,28 +262,28 @@ int main(int argc,char **argv)
// setup the non-default configuration options // setup the non-default configuration options
// we need a place to put intermediate files // we need a place to put intermediate files
Config_getString("OUTPUT_DIRECTORY")="/tmp/doxygen"; Config_getString(OUTPUT_DIRECTORY)="/tmp/doxygen";
// disable html output // disable html output
Config_getBool("GENERATE_HTML")=FALSE; Config_getBool(GENERATE_HTML)=FALSE;
// disable latex output // disable latex output
Config_getBool("GENERATE_LATEX")=FALSE; Config_getBool(GENERATE_LATEX)=FALSE;
// be quiet // be quiet
Config_getBool("QUIET")=TRUE; Config_getBool(QUIET)=TRUE;
// turn off warnings // turn off warnings
Config_getBool("WARNINGS")=FALSE; Config_getBool(WARNINGS)=FALSE;
Config_getBool("WARN_IF_UNDOCUMENTED")=FALSE; Config_getBool(WARN_IF_UNDOCUMENTED)=FALSE;
Config_getBool("WARN_IF_DOC_ERROR")=FALSE; Config_getBool(WARN_IF_DOC_ERROR)=FALSE;
// Extract as much as possible // Extract as much as possible
Config_getBool("EXTRACT_ALL")=TRUE; Config_getBool(EXTRACT_ALL)=TRUE;
Config_getBool("EXTRACT_STATIC")=TRUE; Config_getBool(EXTRACT_STATIC)=TRUE;
Config_getBool("EXTRACT_PRIVATE")=TRUE; Config_getBool(EXTRACT_PRIVATE)=TRUE;
Config_getBool("EXTRACT_LOCAL_METHODS")=TRUE; Config_getBool(EXTRACT_LOCAL_METHODS)=TRUE;
// Extract source browse information, needed // Extract source browse information, needed
// to make doxygen gather the cross reference info // to make doxygen gather the cross reference info
Config_getBool("SOURCE_BROWSER")=TRUE; Config_getBool(SOURCE_BROWSER)=TRUE;
// set the input // set the input
Config_getList("INPUT").append(argv[1]); Config_getList(INPUT).append(argv[1]);
// check and finialize the configuration // check and finialize the configuration
checkConfiguration(); checkConfiguration();
......
File mode changed from 100644 to 100755
if (build_wizard) if (build_wizard)
# search for Qt5
if (NOT force_qt4)
find_package(Qt5Core QUIET)
if (Qt5Core_FOUND)
message(STATUS "Using Qt5")
find_package(Qt5 COMPONENTS Widgets Gui Xml)
macro(qt_use_modules)
qt5_use_modules(${ARGN})
endmacro()
macro(qt_wrap_cpp)
qt5_wrap_cpp(${ARGN})
endmacro()
macro(qt_add_resources)
qt5_add_resources(${ARGN})
endmacro()
endif()
endif()
# fallback to Qt4
if (NOT Qt5Core_FOUND)
if (NOT force_qt4)
message(STATUS "Qt5 not found, searching for Qt4 instead...")
else()
message(STATUS "Using Qt4")
endif()
find_package(Qt4 REQUIRED COMPONENTS QtCore QtXml QtGui)
macro(qt_use_modules)
endmacro()
macro(qt_wrap_cpp)
qt4_wrap_cpp(${ARGN})
endmacro()
macro(qt_add_resources)
qt4_add_resources(${ARGN})
endmacro()
endif()
include_directories( include_directories(
. .
${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src
...@@ -10,10 +45,10 @@ include_directories( ...@@ -10,10 +45,10 @@ include_directories(
set(GENERATED_SRC_WIZARD ${GENERATED_SRC}/doxywizard) set(GENERATED_SRC_WIZARD ${GENERATED_SRC}/doxywizard)
file(MAKE_DIRECTORY ${GENERATED_SRC_WIZARD}) file(MAKE_DIRECTORY ${GENERATED_SRC_WIZARD})
add_definitions(-DQT_ARCH_X86_64 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DUNICODE) add_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DUNICODE)
set(QT_USE_QTXML TRUE) if (NOT Qt5Core_FOUND)
find_package(Qt4 REQUIRED) include(${QT_USE_FILE})
include(${QT_USE_FILE}) endif()
# generate settings.h # generate settings.h
file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/settings.h file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/settings.h
...@@ -41,9 +76,9 @@ OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp ...@@ -41,9 +76,9 @@ OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp
) )
set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GENERATED 1) set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GENERATED 1)
FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC_WIZARD}/config_doxyw.cpp COMPILE_FLAGS "-Pconfig_doxywYY") FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC_WIZARD}/config_doxyw.cpp COMPILE_FLAGS "${LEX_FLAGS} -Pconfig_doxywYY")
QT4_WRAP_CPP(doxywizard_MOC qt_wrap_cpp(doxywizard_MOC
doxywizard.h doxywizard.h
expert.h expert.h
helplabel.h helplabel.h
...@@ -54,9 +89,9 @@ inputstrlist.h ...@@ -54,9 +89,9 @@ inputstrlist.h
wizard.h wizard.h
) )
QT4_ADD_RESOURCES(doxywizard_RESOURCES_RCC doxywizard.qrc) qt_add_resources(doxywizard_RESOURCES_RCC doxywizard.qrc)
add_executable(doxywizard add_executable(doxywizard WIN32
doxywizard.cpp doxywizard.cpp
expert.cpp expert.cpp
wizard.cpp wizard.cpp
...@@ -71,8 +106,9 @@ ${GENERATED_SRC_WIZARD}/configdoc.cpp ...@@ -71,8 +106,9 @@ ${GENERATED_SRC_WIZARD}/configdoc.cpp
${doxywizard_MOC} ${doxywizard_MOC}
${doxywizard_RESOURCES_RCC} ${doxywizard_RESOURCES_RCC}
) )
qt_use_modules(doxywizard Core Gui Widgets Xml)
target_link_libraries(doxywizard target_link_libraries(doxywizard
${QT_LIBRARIES} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY}
) )
install(TARGETS doxywizard DESTINATION bin) install(TARGETS doxywizard DESTINATION bin)
......
...@@ -20,7 +20,16 @@ ...@@ -20,7 +20,16 @@
*/ */
#include "config.h" #include "config.h"
#include "input.h" #include "input.h"
#include <QtCore>
#include <QString>
#include <QVariant>
#include <QStack>
#include <QTextCodec>
#include <QByteArray>
#include <QFileInfo>
#include <QStringList>
#include <QRegExp>
#include <QTextStream>
#define YY_NO_UNISTD_H 1 #define YY_NO_UNISTD_H 1
...@@ -52,7 +61,7 @@ static QVariant *g_arg; ...@@ -52,7 +61,7 @@ static QVariant *g_arg;
static Input *g_curOption=0; static Input *g_curOption=0;
static QString g_elemStr; static QString g_elemStr;
static QTextCodec *g_codec = QTextCodec::codecForName("UTF-8"); static QTextCodec *g_codec = QTextCodec::codecForName("UTF-8");
static QString g_codecName = QString::fromAscii("UTF-8"); static QString g_codecName = QString::fromLatin1("UTF-8");
static int g_lastState; static int g_lastState;
static QByteArray g_tmpString; static QByteArray g_tmpString;
...@@ -74,13 +83,13 @@ static int yyread(char *buf,int maxSize) ...@@ -74,13 +83,13 @@ static int yyread(char *buf,int maxSize)
} }
} }
static QString warning_str = QString::fromAscii("warning: "); static QString warning_str = QString::fromLatin1("warning: ");
static QString error_str = QString::fromAscii("error: "); static QString error_str = QString::fromLatin1("error: ");
void config_err(const char *fmt, ...) void config_err(const char *fmt, ...)
{ {
QString msg = error_str; QString msg = error_str;
msg.append(QString::fromAscii(fmt)); msg.append(QString::fromLatin1(fmt));
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vfprintf(stderr, qPrintable(msg), args); vfprintf(stderr, qPrintable(msg), args);
...@@ -89,7 +98,7 @@ void config_err(const char *fmt, ...) ...@@ -89,7 +98,7 @@ void config_err(const char *fmt, ...)
void config_warn(const char *fmt, ...) void config_warn(const char *fmt, ...)
{ {
QString msg = warning_str; QString msg = warning_str;
msg.append(QString::fromAscii(fmt)); msg.append(QString::fromLatin1(fmt));
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vfprintf(stderr, qPrintable(msg), args); vfprintf(stderr, qPrintable(msg), args);
...@@ -101,10 +110,10 @@ static void substEnvVarsInString(QString &s); ...@@ -101,10 +110,10 @@ static void substEnvVarsInString(QString &s);
static void checkEncoding() static void checkEncoding()
{ {
Input *option = g_options->value(QString::fromAscii("DOXYFILE_ENCODING")); Input *option = g_options->value(QString::fromLatin1("DOXYFILE_ENCODING"));
if (option && option->value().toString()!=g_codecName) if (option && option->value().toString()!=g_codecName)
{ {
QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toAscii()); QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toLatin1());
if (newCodec) if (newCodec)
{ {
g_codec = newCodec; g_codec = newCodec;
...@@ -115,7 +124,7 @@ static void checkEncoding() ...@@ -115,7 +124,7 @@ static void checkEncoding()
static FILE *tryPath(const QString &path,const QString &fileName) static FILE *tryPath(const QString &path,const QString &fileName)
{ {
QString absName=!path.isEmpty() ? path+QString::fromAscii("/")+fileName : fileName; QString absName=!path.isEmpty() ? path+QString::fromLatin1("/")+fileName : fileName;
QFileInfo fi(absName); QFileInfo fi(absName);
if (fi.exists() && fi.isFile()) if (fi.exists() && fi.isFile())
{ {
...@@ -144,7 +153,7 @@ static FILE *findFile(const QString &fileName) ...@@ -144,7 +153,7 @@ static FILE *findFile(const QString &fileName)
if (f) return f; if (f) return f;
} }
// try cwd if g_includePathList fails // try cwd if g_includePathList fails
return tryPath(QString::fromAscii("."),fileName); return tryPath(QString::fromLatin1("."),fileName);
} }
static void readIncludeFile(const QString &incName) static void readIncludeFile(const QString &incName)
...@@ -160,8 +169,8 @@ static void readIncludeFile(const QString &incName) ...@@ -160,8 +169,8 @@ static void readIncludeFile(const QString &incName)
substEnvVarsInString(inc); substEnvVarsInString(inc);
inc = inc.trimmed(); inc = inc.trimmed();
uint incLen = inc.length(); uint incLen = inc.length();
if (inc.at(0)==QChar::fromAscii('"') && if (inc.at(0)==QChar::fromLatin1('"') &&
inc.at(incLen-1)==QChar::fromAscii('"')) // strip quotes inc.at(incLen-1)==QChar::fromLatin1('"')) // strip quotes
{ {
inc=inc.mid(1,incLen-2); inc=inc.mid(1,incLen-2);
} }
...@@ -383,7 +392,7 @@ static void readIncludeFile(const QString &incName) ...@@ -383,7 +392,7 @@ static void readIncludeFile(const QString &incName)
static void substEnvVarsInString(QString &s) static void substEnvVarsInString(QString &s)
{ {
static QRegExp re(QString::fromAscii("\\$\\([a-z_A-Z0-9]+\\)")); static QRegExp re(QString::fromLatin1("\\$\\([a-z_A-Z0-9]+\\)"));
if (s.isEmpty()) return; if (s.isEmpty()) return;
int p=0; int p=0;
int i,l; int i,l;
...@@ -409,8 +418,8 @@ static void substEnvVarsInStrList(QStringList &sl) ...@@ -409,8 +418,8 @@ static void substEnvVarsInStrList(QStringList &sl)
foreach (QString result, sl) foreach (QString result, sl)
{ {
// an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE.
bool wasQuoted = (result.indexOf(QChar::fromAscii(' '))!=-1) || bool wasQuoted = (result.indexOf(QChar::fromLatin1(' '))!=-1) ||
(result.indexOf(QChar::fromAscii('\t'))!=-1); (result.indexOf(QChar::fromLatin1('\t'))!=-1);
// here we strip the quote again // here we strip the quote again
substEnvVarsInString(result); substEnvVarsInString(result);
...@@ -430,33 +439,33 @@ static void substEnvVarsInStrList(QStringList &sl) ...@@ -430,33 +439,33 @@ static void substEnvVarsInStrList(QStringList &sl)
{ {
QChar c=0; QChar c=0;
// skip until start of new word // skip until start of new word
while (i<l && ((c=result.at(i))==QChar::fromAscii(' ') || c==QChar::fromAscii('\t'))) i++; while (i<l && ((c=result.at(i))==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t'))) i++;
p=i; // p marks the start index of the word p=i; // p marks the start index of the word
// skip until end of a word // skip until end of a word
while (i<l && ((c=result.at(i))!=QChar::fromAscii(' ') && while (i<l && ((c=result.at(i))!=QChar::fromLatin1(' ') &&
c!=QChar::fromAscii('\t') && c!=QChar::fromLatin1('\t') &&
c!=QChar::fromAscii('"'))) i++; c!=QChar::fromLatin1('"'))) i++;
if (i<l) // not at the end of the string if (i<l) // not at the end of the string
{ {
if (c==QChar::fromAscii('"')) // word within quotes if (c==QChar::fromLatin1('"')) // word within quotes
{ {
p=i+1; p=i+1;
for (i++;i<l;i++) for (i++;i<l;i++)
{ {
c=result.at(i); c=result.at(i);
if (c==QChar::fromAscii('"')) // end quote if (c==QChar::fromLatin1('"')) // end quote
{ {
out += result.mid(p,i-p); out += result.mid(p,i-p);
p=i+1; p=i+1;
break; break;
} }
else if (c==QChar::fromAscii('\\')) // skip escaped stuff else if (c==QChar::fromLatin1('\\')) // skip escaped stuff
{ {
i++; i++;
} }
} }
} }
else if (c==QChar::fromAscii(' ') || c==QChar::fromAscii('\t')) // separator else if (c==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t')) // separator
{ {
out += result.mid(p,i-p); out += result.mid(p,i-p);
p=i+1; p=i+1;
...@@ -529,7 +538,7 @@ bool parseConfig( ...@@ -529,7 +538,7 @@ bool parseConfig(
void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s) void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
{ {
QChar c; QChar c;
bool needsEscaping=FALSE; bool needsEscaping=false;
// convert the string back to it original encoding // convert the string back to it original encoding
//QByteArray se = codec->fromUnicode(s); //QByteArray se = codec->fromUnicode(s);
t.setCodec(codec); t.setCodec(codec);
...@@ -538,10 +547,10 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s) ...@@ -538,10 +547,10 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
{ {
while (!(c=*p++).isNull() && !needsEscaping) while (!(c=*p++).isNull() && !needsEscaping)
{ {
needsEscaping = (c==QChar::fromAscii(' ') || needsEscaping = (c==QChar::fromLatin1(' ') ||
c==QChar::fromAscii('\n') || c==QChar::fromLatin1('\n') ||
c==QChar::fromAscii('\t') || c==QChar::fromLatin1('\t') ||
c==QChar::fromAscii('"')); c==QChar::fromLatin1('"'));
} }
if (needsEscaping) if (needsEscaping)
{ {
...@@ -549,9 +558,9 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s) ...@@ -549,9 +558,9 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
p=s.data(); p=s.data();
while (!p->isNull()) while (!p->isNull())
{ {
if (*p ==QChar::fromAscii(' ') && if (*p ==QChar::fromLatin1(' ') &&
*(p+1)==QChar::fromAscii('\0')) break; // skip inserted space at the end *(p+1)==QChar::fromLatin1('\0')) break; // skip inserted space at the end
if (*p ==QChar::fromAscii('"')) t << "\\"; // escape quotes if (*p ==QChar::fromLatin1('"')) t << "\\"; // escape quotes
t << *p++; t << *p++;
} }
t << "\""; t << "\"";
......
This diff is collapsed.
...@@ -58,6 +58,8 @@ class MainWindow : public QMainWindow ...@@ -58,6 +58,8 @@ class MainWindow : public QMainWindow
MainWindow(); MainWindow();
void saveConfig(const QString &fileName); void saveConfig(const QString &fileName);
void addRecentFile(const QString &fileName); void addRecentFile(const QString &fileName);
void addRecentFileList(const QString &fileName);
void updateRecentFile(void);
void updateConfigFileName(const QString &fileName); void updateConfigFileName(const QString &fileName);
void setWorkingDir(const QString &dirName); void setWorkingDir(const QString &dirName);
void updateLaunchButtonState(); void updateLaunchButtonState();
......
#include <QtGui>
#include <QtXml>
#include "expert.h" #include "expert.h"
#include "inputbool.h" #include "inputbool.h"
#include "inputstring.h" #include "inputstring.h"
...@@ -11,7 +9,22 @@ ...@@ -11,7 +9,22 @@
#include "configdoc.h" #include "configdoc.h"
#include "settings.h" #include "settings.h"
#define SA(x) QString::fromAscii(x) #include <QTreeWidget>
#include <QStackedWidget>
#include <QTextBrowser>
#include <QSplitter>
#include <QGridLayout>
#include <QPushButton>
#include <QScrollArea>
#include <QFile>
#include <QMessageBox>
#include <QSettings>
#include <QTextStream>
#include <QTextCodec>
#include <QFileInfo>
#define SA(x) QString::fromLatin1(x)
static QString convertToComment(const QString &s) static QString convertToComment(const QString &s)
{ {
...@@ -48,7 +61,7 @@ Expert::Expert() ...@@ -48,7 +61,7 @@ Expert::Expert()
m_treeWidget = new QTreeWidget; m_treeWidget = new QTreeWidget;
m_treeWidget->setColumnCount(1); m_treeWidget->setColumnCount(1);
m_topicStack = new QStackedWidget; m_topicStack = new QStackedWidget;
m_inShowHelp = FALSE; m_inShowHelp = false;
QFile file(SA(":/config.xml")); QFile file(SA(":/config.xml"));
QString err; QString err;
...@@ -69,7 +82,7 @@ Expert::Expert() ...@@ -69,7 +82,7 @@ Expert::Expert()
createTopics(m_rootElement); createTopics(m_rootElement);
m_helper = new QTextBrowser; m_helper = new QTextBrowser;
m_helper->setReadOnly(true); m_helper->setReadOnly(true);
m_helper->setOpenExternalLinks(TRUE); m_helper->setOpenExternalLinks(true);
m_splitter = new QSplitter(Qt::Vertical); m_splitter = new QSplitter(Qt::Vertical);
m_splitter->addWidget(m_treeWidget); m_splitter->addWidget(m_treeWidget);
m_splitter->addWidget(m_helper); m_splitter->addWidget(m_helper);
...@@ -471,7 +484,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem) ...@@ -471,7 +484,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
while (!child.isNull()) while (!child.isNull())
{ {
QString setting = child.attribute(SA("setting")); QString setting = child.attribute(SA("setting"));
if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii())) if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
{ {
QString type = child.attribute(SA("type")); QString type = child.attribute(SA("type"));
QString docs = getDocsForNode(child); QString docs = getDocsForNode(child);
...@@ -634,7 +647,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem) ...@@ -634,7 +647,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
QString dependsOn = child.attribute(SA("depends")); QString dependsOn = child.attribute(SA("depends"));
QString id = child.attribute(SA("id")); QString id = child.attribute(SA("id"));
if (!dependsOn.isEmpty() && if (!dependsOn.isEmpty() &&
(setting.isEmpty() || IS_SUPPORTED(setting.toAscii()))) (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1())))
{ {
Input *parentOption = m_options[dependsOn]; Input *parentOption = m_options[dependsOn];
if (parentOption==0) if (parentOption==0)
...@@ -740,7 +753,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec, ...@@ -740,7 +753,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
QString setting = childElem.attribute(SA("setting")); QString setting = childElem.attribute(SA("setting"));
QString type = childElem.attribute(SA("type")); QString type = childElem.attribute(SA("type"));
QString name = childElem.attribute(SA("id")); QString name = childElem.attribute(SA("id"));
if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii())) if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
{ {
QHash<QString,Input*>::const_iterator i = m_options.find(name); QHash<QString,Input*>::const_iterator i = m_options.find(name);
if (i!=m_options.end()) if (i!=m_options.end())
...@@ -774,10 +787,10 @@ bool Expert::writeConfig(QTextStream &t,bool brief) ...@@ -774,10 +787,10 @@ bool Expert::writeConfig(QTextStream &t,bool brief)
} }
QTextCodec *codec = 0; QTextCodec *codec = 0;
Input *option = m_options[QString::fromAscii("DOXYFILE_ENCODING")]; Input *option = m_options[QString::fromLatin1("DOXYFILE_ENCODING")];
if (option) if (option)
{ {
codec = QTextCodec::codecForName(option->value().toString().toAscii()); codec = QTextCodec::codecForName(option->value().toString().toLatin1());
if (codec==0) // fallback: use UTF-8 if (codec==0) // fallback: use UTF-8
{ {
codec = QTextCodec::codecForName("UTF-8"); codec = QTextCodec::codecForName("UTF-8");
...@@ -809,16 +822,16 @@ void Expert::showHelp(Input *option) ...@@ -809,16 +822,16 @@ void Expert::showHelp(Input *option)
{ {
if (!m_inShowHelp) if (!m_inShowHelp)
{ {
m_inShowHelp = TRUE; m_inShowHelp = true;
m_helper->setText( m_helper->setText(
QString::fromAscii("<qt><b>")+option->id()+ QString::fromLatin1("<qt><b>")+option->id()+
QString::fromAscii("</b><br>")+ QString::fromLatin1("</b><br>")+
QString::fromAscii("<br/>")+ QString::fromLatin1("<br/>")+
option->docs(). option->docs().
replace(QChar::fromAscii('\n'),QChar::fromAscii(' '))+ replace(QChar::fromLatin1('\n'),QChar::fromLatin1(' '))+
QString::fromAscii("</qt>") QString::fromLatin1("</qt>")
); );
m_inShowHelp = FALSE; m_inShowHelp = false;
} }
} }
...@@ -862,7 +875,7 @@ void Expert::resetToDefaults() ...@@ -862,7 +875,7 @@ void Expert::resetToDefaults()
static bool stringVariantToBool(const QVariant &v) static bool stringVariantToBool(const QVariant &v)
{ {
QString s = v.toString().toLower(); QString s = v.toString().toLower();
return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1"); return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
} }
static bool getBoolOption( static bool getBoolOption(
...@@ -884,7 +897,7 @@ static QString getStringOption( ...@@ -884,7 +897,7 @@ static QString getStringOption(
bool Expert::htmlOutputPresent(const QString &workingDir) const bool Expert::htmlOutputPresent(const QString &workingDir) const
{ {
bool generateHtml = getBoolOption(m_options,QString::fromAscii("GENERATE_HTML")); bool generateHtml = getBoolOption(m_options,QString::fromLatin1("GENERATE_HTML"));
if (!generateHtml || workingDir.isEmpty()) return false; if (!generateHtml || workingDir.isEmpty()) return false;
QString indexFile = getHtmlOutputIndex(workingDir); QString indexFile = getHtmlOutputIndex(workingDir);
QFileInfo fi(indexFile); QFileInfo fi(indexFile);
...@@ -893,8 +906,8 @@ bool Expert::htmlOutputPresent(const QString &workingDir) const ...@@ -893,8 +906,8 @@ bool Expert::htmlOutputPresent(const QString &workingDir) const
QString Expert::getHtmlOutputIndex(const QString &workingDir) const QString Expert::getHtmlOutputIndex(const QString &workingDir) const
{ {
QString outputDir = getStringOption(m_options,QString::fromAscii("OUTPUT_DIRECTORY")); QString outputDir = getStringOption(m_options,QString::fromLatin1("OUTPUT_DIRECTORY"));
QString htmlOutputDir = getStringOption(m_options,QString::fromAscii("HTML_OUTPUT")); QString htmlOutputDir = getStringOption(m_options,QString::fromLatin1("HTML_OUTPUT"));
//printf("outputDir=%s\n",qPrintable(outputDir)); //printf("outputDir=%s\n",qPrintable(outputDir));
//printf("htmlOutputDir=%s\n",qPrintable(htmlOutputDir)); //printf("htmlOutputDir=%s\n",qPrintable(htmlOutputDir));
QString indexFile = workingDir; QString indexFile = workingDir;
...@@ -904,7 +917,7 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const ...@@ -904,7 +917,7 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
} }
else // append else // append
{ {
indexFile += QString::fromAscii("/")+outputDir; indexFile += QString::fromLatin1("/")+outputDir;
} }
if (QFileInfo(htmlOutputDir).isAbsolute()) // override if (QFileInfo(htmlOutputDir).isAbsolute()) // override
{ {
...@@ -912,27 +925,27 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const ...@@ -912,27 +925,27 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
} }
else // append else // append
{ {
indexFile += QString::fromAscii("/")+htmlOutputDir; indexFile += QString::fromLatin1("/")+htmlOutputDir;
} }
indexFile+=QString::fromAscii("/index.html"); indexFile+=QString::fromLatin1("/index.html");
return indexFile; return indexFile;
} }
bool Expert::pdfOutputPresent(const QString &workingDir) const bool Expert::pdfOutputPresent(const QString &workingDir) const
{ {
bool generateLatex = getBoolOption(m_options,QString::fromAscii("GENERATE_LATEX")); bool generateLatex = getBoolOption(m_options,QString::fromLatin1("GENERATE_LATEX"));
bool pdfLatex = getBoolOption(m_options,QString::fromAscii("USE_PDFLATEX")); bool pdfLatex = getBoolOption(m_options,QString::fromLatin1("USE_PDFLATEX"));
if (!generateLatex || !pdfLatex) return false; if (!generateLatex || !pdfLatex) return false;
QString latexOutput = getStringOption(m_options,QString::fromAscii("LATEX_OUTPUT")); QString latexOutput = getStringOption(m_options,QString::fromLatin1("LATEX_OUTPUT"));
QString indexFile; QString indexFile;
if (QFileInfo(latexOutput).isAbsolute()) if (QFileInfo(latexOutput).isAbsolute())
{ {
indexFile = latexOutput+QString::fromAscii("/refman.pdf"); indexFile = latexOutput+QString::fromLatin1("/refman.pdf");
} }
else else
{ {
indexFile = workingDir+QString::fromAscii("/")+ indexFile = workingDir+QString::fromLatin1("/")+
latexOutput+QString::fromAscii("/refman.pdf"); latexOutput+QString::fromLatin1("/refman.pdf");
} }
QFileInfo fi(indexFile); QFileInfo fi(indexFile);
return fi.exists() && fi.isFile(); return fi.exists() && fi.isFile();
......
addon/doxywizard/images/add.png

4.22 KB | W: | H:

addon/doxywizard/images/add.png

1.64 KB | W: | H:

addon/doxywizard/images/add.png
addon/doxywizard/images/add.png
addon/doxywizard/images/add.png
addon/doxywizard/images/add.png
  • 2-up
  • Swipe
  • Onion skin
addon/doxywizard/images/del.png

4.13 KB | W: | H:

addon/doxywizard/images/del.png

1.55 KB | W: | H:

addon/doxywizard/images/del.png
addon/doxywizard/images/del.png
addon/doxywizard/images/del.png
addon/doxywizard/images/del.png
  • 2-up
  • Swipe
  • Onion skin
addon/doxywizard/images/file.png

4.28 KB | W: | H:

addon/doxywizard/images/file.png

1.7 KB | W: | H:

addon/doxywizard/images/file.png
addon/doxywizard/images/file.png
addon/doxywizard/images/file.png
addon/doxywizard/images/file.png
  • 2-up
  • Swipe
  • Onion skin
addon/doxywizard/images/folder.png

4.21 KB | W: | H:

addon/doxywizard/images/folder.png

1.63 KB | W: | H:

addon/doxywizard/images/folder.png
addon/doxywizard/images/folder.png
addon/doxywizard/images/folder.png
addon/doxywizard/images/folder.png
  • 2-up
  • Swipe
  • Onion skin
addon/doxywizard/images/refresh.png

4.35 KB | W: | H:

addon/doxywizard/images/refresh.png

1.78 KB | W: | H:

addon/doxywizard/images/refresh.png
addon/doxywizard/images/refresh.png
addon/doxywizard/images/refresh.png
addon/doxywizard/images/refresh.png
  • 2-up
  • Swipe
  • Onion skin
addon/doxywizard/images/tunecolor.png

114 KB | W: | H:

addon/doxywizard/images/tunecolor.png

99.9 KB | W: | H:

addon/doxywizard/images/tunecolor.png
addon/doxywizard/images/tunecolor.png
addon/doxywizard/images/tunecolor.png
addon/doxywizard/images/tunecolor.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -14,7 +14,11 @@ ...@@ -14,7 +14,11 @@
#include "inputbool.h" #include "inputbool.h"
#include "helplabel.h" #include "helplabel.h"
#include <QtGui>
#include <QCheckBox>
#include <QTextStream>
#include <QTextCodec>
#include <QGridLayout>
InputBool::InputBool( QGridLayout *layout, int &row, InputBool::InputBool( QGridLayout *layout, int &row,
const QString &id, bool checked, const QString &id, bool checked,
...@@ -73,11 +77,11 @@ void InputBool::updateDefault() ...@@ -73,11 +77,11 @@ void InputBool::updateDefault()
{ {
if (m_state==m_default || !m_lab->isEnabled()) if (m_state==m_default || !m_lab->isEnabled())
{ {
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt")); m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
} }
else else
{ {
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>")); m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
} }
} }
...@@ -89,9 +93,9 @@ QVariant &InputBool::value() ...@@ -89,9 +93,9 @@ QVariant &InputBool::value()
void InputBool::update() void InputBool::update()
{ {
QString v = m_value.toString().toLower(); QString v = m_value.toString().toLower();
m_state = (v==QString::fromAscii("yes") || m_state = (v==QString::fromLatin1("yes") ||
v==QString::fromAscii("true") || v==QString::fromLatin1("true") ||
v==QString::fromAscii("1")); v==QString::fromLatin1("1"));
m_cb->setChecked( m_state ); m_cb->setChecked( m_state );
updateDefault(); updateDefault();
updateDependencies(); updateDependencies();
...@@ -105,8 +109,8 @@ void InputBool::reset() ...@@ -105,8 +109,8 @@ void InputBool::reset()
void InputBool::writeValue(QTextStream &t,QTextCodec *codec) void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
{ {
if (m_state) if (m_state)
t << codec->fromUnicode(QString::fromAscii("YES")); t << codec->fromUnicode(QString::fromLatin1("YES"));
else else
t << codec->fromUnicode(QString::fromAscii("NO")); t << codec->fromUnicode(QString::fromLatin1("NO"));
} }
...@@ -15,7 +15,10 @@ ...@@ -15,7 +15,10 @@
#include "inputint.h" #include "inputint.h"
#include "helplabel.h" #include "helplabel.h"
#include <QtGui> #include <QSpinBox>
#include <QGridLayout>
#include <QWheelEvent>
#include <QTextStream>
class NoWheelSpinBox : public QSpinBox class NoWheelSpinBox : public QSpinBox
{ {
...@@ -74,11 +77,11 @@ void InputInt::updateDefault() ...@@ -74,11 +77,11 @@ void InputInt::updateDefault()
{ {
if (m_val==m_default || !m_lab->isEnabled()) if (m_val==m_default || !m_lab->isEnabled())
{ {
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt")); m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
} }
else else
{ {
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>")); m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
} }
emit changed(); emit changed();
} }
......
...@@ -17,7 +17,14 @@ ...@@ -17,7 +17,14 @@
#include "doxywizard.h" #include "doxywizard.h"
#include "config.h" #include "config.h"
#include <QtGui> #include <QComboBox>
#include <QLineEdit>
#include <QGridLayout>
#include <QWheelEvent>
#include <QToolBar>
#include <QFileInfo>
#include <QFileDialog>
#include <QTextCodec>
class NoWheelComboBox : public QComboBox class NoWheelComboBox : public QComboBox
{ {
...@@ -34,7 +41,7 @@ InputString::InputString( QGridLayout *layout,int &row, ...@@ -34,7 +41,7 @@ InputString::InputString( QGridLayout *layout,int &row,
StringMode m, const QString &docs, StringMode m, const QString &docs,
const QString &absPath ) const QString &absPath )
: m_default(s), m_sm(m), m_index(0), m_docs(docs), m_id(id), : m_default(s), m_sm(m), m_index(0), m_docs(docs), m_id(id),
m_absPath(absPath==QString::fromAscii("1")) m_absPath(absPath==QString::fromLatin1("1"))
{ {
m_lab = new HelpLabel(id); m_lab = new HelpLabel(id);
if (m==StringFixed) if (m==StringFixed)
...@@ -61,7 +68,7 @@ InputString::InputString( QGridLayout *layout,int &row, ...@@ -61,7 +68,7 @@ InputString::InputString( QGridLayout *layout,int &row,
m_br->setIconSize(QSize(24,24)); m_br->setIconSize(QSize(24,24));
if (m==StringFile || m==StringImage) if (m==StringFile || m==StringImage)
{ {
QAction *file = m_br->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),this,SLOT(browse())); QAction *file = m_br->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),this,SLOT(browse()));
file->setToolTip(tr("Browse to a file")); file->setToolTip(tr("Browse to a file"));
layout->addWidget( m_br,row,2 ); layout->addWidget( m_br,row,2 );
if (m==StringImage) if (m==StringImage)
...@@ -75,7 +82,7 @@ InputString::InputString( QGridLayout *layout,int &row, ...@@ -75,7 +82,7 @@ InputString::InputString( QGridLayout *layout,int &row,
} }
else else
{ {
QAction *dir = m_br->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),this,SLOT(browse())); QAction *dir = m_br->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),this,SLOT(browse()));
dir->setToolTip(tr("Browse to a folder")); dir->setToolTip(tr("Browse to a folder"));
layout->addWidget( m_br,row,2 ); layout->addWidget( m_br,row,2 );
} }
...@@ -94,7 +101,7 @@ InputString::InputString( QGridLayout *layout,int &row, ...@@ -94,7 +101,7 @@ InputString::InputString( QGridLayout *layout,int &row,
this, SLOT(setValue(const QString&)) ); this, SLOT(setValue(const QString&)) );
if (m_com) connect( m_com, SIGNAL(activated(const QString &)), if (m_com) connect( m_com, SIGNAL(activated(const QString &)),
this, SLOT(setValue(const QString &)) ); this, SLOT(setValue(const QString &)) );
m_str = s+QChar::fromAscii('!'); // force update m_str = s+QChar::fromLatin1('!'); // force update
setValue(s); setValue(s);
connect( m_lab, SIGNAL(enter()), SLOT(help()) ); connect( m_lab, SIGNAL(enter()), SLOT(help()) );
connect( m_lab, SIGNAL(reset()), SLOT(reset()) ); connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
...@@ -125,11 +132,11 @@ void InputString::updateDefault() ...@@ -125,11 +132,11 @@ void InputString::updateDefault()
{ {
if (m_str==m_default || !m_lab->isEnabled()) if (m_str==m_default || !m_lab->isEnabled())
{ {
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt")); m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
} }
else else
{ {
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>")); m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
} }
if (m_im) if (m_im)
{ {
...@@ -142,7 +149,7 @@ void InputString::updateDefault() ...@@ -142,7 +149,7 @@ void InputString::updateDefault()
QFile Fout(m_str); QFile Fout(m_str);
if(!Fout.exists()) if(!Fout.exists())
{ {
m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromAscii(");")); m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromLatin1(");"));
} }
else else
{ {
...@@ -153,7 +160,7 @@ void InputString::updateDefault() ...@@ -153,7 +160,7 @@ void InputString::updateDefault()
} }
else else
{ {
m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromAscii(");")); m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromLatin1(");"));
} }
} }
} }
......
...@@ -17,7 +17,14 @@ ...@@ -17,7 +17,14 @@
#include "doxywizard.h" #include "doxywizard.h"
#include "config.h" #include "config.h"
#include <QtGui> #include <QToolBar>
#include <QGridLayout>
#include <QLineEdit>
#include <QListWidget>
#include <QFileInfo>
#include <QFileDialog>
#include <QTextStream>
#include <QTextCodec>
InputStrList::InputStrList( QGridLayout *layout,int &row, InputStrList::InputStrList( QGridLayout *layout,int &row,
const QString & id, const QString & id,
...@@ -32,13 +39,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row, ...@@ -32,13 +39,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
QToolBar *toolBar = new QToolBar; QToolBar *toolBar = new QToolBar;
toolBar->setIconSize(QSize(24,24)); toolBar->setIconSize(QSize(24,24));
m_add = toolBar->addAction(QIcon(QString::fromAscii(":/images/add.png")),QString(), m_add = toolBar->addAction(QIcon(QString::fromLatin1(":/images/add.png")),QString(),
this,SLOT(addString())); this,SLOT(addString()));
m_add->setToolTip(tr("Add item")); m_add->setToolTip(tr("Add item"));
m_del = toolBar->addAction(QIcon(QString::fromAscii(":/images/del.png")),QString(), m_del = toolBar->addAction(QIcon(QString::fromLatin1(":/images/del.png")),QString(),
this,SLOT(delString())); this,SLOT(delString()));
m_del->setToolTip(tr("Delete selected item")); m_del->setToolTip(tr("Delete selected item"));
m_upd = toolBar->addAction(QIcon(QString::fromAscii(":/images/refresh.png")),QString(), m_upd = toolBar->addAction(QIcon(QString::fromLatin1(":/images/refresh.png")),QString(),
this,SLOT(updateString())); this,SLOT(updateString()));
m_upd->setToolTip(tr("Update selected item")); m_upd->setToolTip(tr("Update selected item"));
...@@ -52,13 +59,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row, ...@@ -52,13 +59,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
{ {
if (lm&ListFile) if (lm&ListFile)
{ {
m_brFile = toolBar->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(), m_brFile = toolBar->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),
this,SLOT(browseFiles())); this,SLOT(browseFiles()));
m_brFile->setToolTip(tr("Browse to a file")); m_brFile->setToolTip(tr("Browse to a file"));
} }
if (lm&ListDir) if (lm&ListDir)
{ {
m_brDir = toolBar->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(), m_brDir = toolBar->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),
this,SLOT(browseDir())); this,SLOT(browseDir()));
m_brDir->setToolTip(tr("Browse to a folder")); m_brDir->setToolTip(tr("Browse to a folder"));
} }
...@@ -188,7 +195,7 @@ void InputStrList::browseDir() ...@@ -188,7 +195,7 @@ void InputStrList::browseDir()
} }
if (dirName.isEmpty()) if (dirName.isEmpty())
{ {
dirName=QString::fromAscii("."); dirName=QString::fromLatin1(".");
} }
m_lb->addItem(dirName); m_lb->addItem(dirName);
m_strList.append(dirName); m_strList.append(dirName);
...@@ -225,11 +232,11 @@ void InputStrList::updateDefault() ...@@ -225,11 +232,11 @@ void InputStrList::updateDefault()
{ {
if (m_strList==m_default || !m_lab->isEnabled()) if (m_strList==m_default || !m_lab->isEnabled())
{ {
m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt")); m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
} }
else else
{ {
m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>")); m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
} }
} }
...@@ -240,7 +247,7 @@ void InputStrList::reset() ...@@ -240,7 +247,7 @@ void InputStrList::reset()
void InputStrList::writeValue(QTextStream &t,QTextCodec *codec) void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
{ {
bool first=TRUE; bool first=true;
foreach (QString s, m_strList) foreach (QString s, m_strList)
{ {
if (!first) if (!first)
...@@ -248,7 +255,7 @@ void InputStrList::writeValue(QTextStream &t,QTextCodec *codec) ...@@ -248,7 +255,7 @@ void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
t << " \\" << endl; t << " \\" << endl;
t << " "; t << " ";
} }
first=FALSE; first=false;
writeStringValue(t,codec,s); writeStringValue(t,codec,s);
} }
} }
......
...@@ -3,46 +3,64 @@ ...@@ -3,46 +3,64 @@
#include "doxywizard.h" #include "doxywizard.h"
#include <math.h> #include <math.h>
#include <QtGui>
#include <QGridLayout>
#include <QImage>
#include <QLabel>
#include <QHBoxLayout>
#include <QPushButton>
#include <QPixmap>
#include <QPainter>
#include <QMouseEvent>
#include <QLineEdit>
#include <QCheckBox>
#include <QFileInfo>
#include <QFileDialog>
#include <QButtonGroup>
#include <QGroupBox>
#include <QRadioButton>
#include <QTreeWidget>
#include <QStackedWidget>
#include <qdrawutil.h>
// options configurable via the wizard // options configurable via the wizard
#define STR_PROJECT_NAME QString::fromAscii("PROJECT_NAME") #define STR_PROJECT_NAME QString::fromLatin1("PROJECT_NAME")
#define STR_PROJECT_LOGO QString::fromAscii("PROJECT_LOGO") #define STR_PROJECT_LOGO QString::fromLatin1("PROJECT_LOGO")
#define STR_PROJECT_BRIEF QString::fromAscii("PROJECT_BRIEF") #define STR_PROJECT_BRIEF QString::fromLatin1("PROJECT_BRIEF")
#define STR_INPUT QString::fromAscii("INPUT") #define STR_INPUT QString::fromLatin1("INPUT")
#define STR_OUTPUT_DIRECTORY QString::fromAscii("OUTPUT_DIRECTORY") #define STR_OUTPUT_DIRECTORY QString::fromLatin1("OUTPUT_DIRECTORY")
#define STR_PROJECT_NUMBER QString::fromAscii("PROJECT_NUMBER") #define STR_PROJECT_NUMBER QString::fromLatin1("PROJECT_NUMBER")
#define STR_RECURSIVE QString::fromAscii("RECURSIVE") #define STR_RECURSIVE QString::fromLatin1("RECURSIVE")
#define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromAscii("OPTIMIZE_OUTPUT_FOR_C") #define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromLatin1("OPTIMIZE_OUTPUT_FOR_C")
#define STR_OPTIMIZE_OUTPUT_JAVA QString::fromAscii("OPTIMIZE_OUTPUT_JAVA") #define STR_OPTIMIZE_OUTPUT_JAVA QString::fromLatin1("OPTIMIZE_OUTPUT_JAVA")
#define STR_OPTIMIZE_FOR_FORTRAN QString::fromAscii("OPTIMIZE_FOR_FORTRAN") #define STR_OPTIMIZE_FOR_FORTRAN QString::fromLatin1("OPTIMIZE_FOR_FORTRAN")
#define STR_OPTIMIZE_OUTPUT_VHDL QString::fromAscii("OPTIMIZE_OUTPUT_VHDL") #define STR_OPTIMIZE_OUTPUT_VHDL QString::fromLatin1("OPTIMIZE_OUTPUT_VHDL")
#define STR_CPP_CLI_SUPPORT QString::fromAscii("CPP_CLI_SUPPORT") #define STR_CPP_CLI_SUPPORT QString::fromLatin1("CPP_CLI_SUPPORT")
#define STR_HIDE_SCOPE_NAMES QString::fromAscii("HIDE_SCOPE_NAMES") #define STR_HIDE_SCOPE_NAMES QString::fromLatin1("HIDE_SCOPE_NAMES")
#define STR_EXTRACT_ALL QString::fromAscii("EXTRACT_ALL") #define STR_EXTRACT_ALL QString::fromLatin1("EXTRACT_ALL")
#define STR_SOURCE_BROWSER QString::fromAscii("SOURCE_BROWSER") #define STR_SOURCE_BROWSER QString::fromLatin1("SOURCE_BROWSER")
#define STR_GENERATE_HTML QString::fromAscii("GENERATE_HTML") #define STR_GENERATE_HTML QString::fromLatin1("GENERATE_HTML")
#define STR_GENERATE_LATEX QString::fromAscii("GENERATE_LATEX") #define STR_GENERATE_LATEX QString::fromLatin1("GENERATE_LATEX")
#define STR_GENERATE_MAN QString::fromAscii("GENERATE_MAN") #define STR_GENERATE_MAN QString::fromLatin1("GENERATE_MAN")
#define STR_GENERATE_RTF QString::fromAscii("GENERATE_RTF") #define STR_GENERATE_RTF QString::fromLatin1("GENERATE_RTF")
#define STR_GENERATE_XML QString::fromAscii("GENERATE_XML") #define STR_GENERATE_XML QString::fromLatin1("GENERATE_XML")
#define STR_GENERATE_HTMLHELP QString::fromAscii("GENERATE_HTMLHELP") #define STR_GENERATE_HTMLHELP QString::fromLatin1("GENERATE_HTMLHELP")
#define STR_GENERATE_TREEVIEW QString::fromAscii("GENERATE_TREEVIEW") #define STR_GENERATE_TREEVIEW QString::fromLatin1("GENERATE_TREEVIEW")
#define STR_USE_PDFLATEX QString::fromAscii("USE_PDFLATEX") #define STR_USE_PDFLATEX QString::fromLatin1("USE_PDFLATEX")
#define STR_PDF_HYPERLINKS QString::fromAscii("PDF_HYPERLINKS") #define STR_PDF_HYPERLINKS QString::fromLatin1("PDF_HYPERLINKS")
#define STR_SEARCHENGINE QString::fromAscii("SEARCHENGINE") #define STR_SEARCHENGINE QString::fromLatin1("SEARCHENGINE")
#define STR_HAVE_DOT QString::fromAscii("HAVE_DOT") #define STR_HAVE_DOT QString::fromLatin1("HAVE_DOT")
#define STR_CLASS_DIAGRAMS QString::fromAscii("CLASS_DIAGRAMS") #define STR_CLASS_DIAGRAMS QString::fromLatin1("CLASS_DIAGRAMS")
#define STR_CLASS_GRAPH QString::fromAscii("CLASS_GRAPH") #define STR_CLASS_GRAPH QString::fromLatin1("CLASS_GRAPH")
#define STR_COLLABORATION_GRAPH QString::fromAscii("COLLABORATION_GRAPH") #define STR_COLLABORATION_GRAPH QString::fromLatin1("COLLABORATION_GRAPH")
#define STR_GRAPHICAL_HIERARCHY QString::fromAscii("GRAPHICAL_HIERARCHY") #define STR_GRAPHICAL_HIERARCHY QString::fromLatin1("GRAPHICAL_HIERARCHY")
#define STR_INCLUDE_GRAPH QString::fromAscii("INCLUDE_GRAPH") #define STR_INCLUDE_GRAPH QString::fromLatin1("INCLUDE_GRAPH")
#define STR_INCLUDED_BY_GRAPH QString::fromAscii("INCLUDED_BY_GRAPH") #define STR_INCLUDED_BY_GRAPH QString::fromLatin1("INCLUDED_BY_GRAPH")
#define STR_CALL_GRAPH QString::fromAscii("CALL_GRAPH") #define STR_CALL_GRAPH QString::fromLatin1("CALL_GRAPH")
#define STR_CALLER_GRAPH QString::fromAscii("CALLER_GRAPH") #define STR_CALLER_GRAPH QString::fromLatin1("CALLER_GRAPH")
#define STR_HTML_COLORSTYLE_HUE QString::fromAscii("HTML_COLORSTYLE_HUE") #define STR_HTML_COLORSTYLE_HUE QString::fromLatin1("HTML_COLORSTYLE_HUE")
#define STR_HTML_COLORSTYLE_SAT QString::fromAscii("HTML_COLORSTYLE_SAT") #define STR_HTML_COLORSTYLE_SAT QString::fromLatin1("HTML_COLORSTYLE_SAT")
#define STR_HTML_COLORSTYLE_GAMMA QString::fromAscii("HTML_COLORSTYLE_GAMMA") #define STR_HTML_COLORSTYLE_GAMMA QString::fromLatin1("HTML_COLORSTYLE_GAMMA")
static bool g_optimizeMapping[6][6] = static bool g_optimizeMapping[6][6] =
{ {
...@@ -76,7 +94,7 @@ static QString g_optimizeOptionNames[6] = ...@@ -76,7 +94,7 @@ static QString g_optimizeOptionNames[6] =
static bool stringVariantToBool(const QVariant &v) static bool stringVariantToBool(const QVariant &v)
{ {
QString s = v.toString().toLower(); QString s = v.toString().toLower();
return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1"); return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
} }
static bool getBoolOption( static bool getBoolOption(
...@@ -111,7 +129,7 @@ static void updateBoolOption( ...@@ -111,7 +129,7 @@ static void updateBoolOption(
bool bOld = stringVariantToBool(option->value()); bool bOld = stringVariantToBool(option->value());
if (bOld!=bNew) if (bOld!=bNew)
{ {
option->value()=QString::fromAscii(bNew ? "true" : "false"); option->value()=QString::fromLatin1(bNew ? "true" : "false");
option->update(); option->update();
} }
} }
...@@ -124,7 +142,7 @@ static void updateIntOption( ...@@ -124,7 +142,7 @@ static void updateIntOption(
int iOld = option->value().toInt(); int iOld = option->value().toInt();
if (iOld!=iNew) if (iOld!=iNew)
{ {
option->value()=QString::fromAscii("%1").arg(iNew); option->value()=QString::fromLatin1("%1").arg(iNew);
option->update(); option->update();
} }
} }
...@@ -148,7 +166,7 @@ TuneColorDialog::TuneColorDialog(int hue,int sat,int gamma,QWidget *parent) : QD ...@@ -148,7 +166,7 @@ TuneColorDialog::TuneColorDialog(int hue,int sat,int gamma,QWidget *parent) : QD
{ {
setWindowTitle(tr("Tune the color of the HTML output")); setWindowTitle(tr("Tune the color of the HTML output"));
QGridLayout *layout = new QGridLayout(this); QGridLayout *layout = new QGridLayout(this);
m_image = new QImage(QString::fromAscii(":/images/tunecolor.png")); m_image = new QImage(QString::fromLatin1(":/images/tunecolor.png"));
m_imageLab = new QLabel; m_imageLab = new QLabel;
updateImage(hue,sat,gamma); updateImage(hue,sat,gamma);
layout->addWidget(new QLabel(tr("Example output: use the sliders on the right to adjust the color")),0,0); layout->addWidget(new QLabel(tr("Example output: use the sliders on the right to adjust the color")),0,0);
...@@ -519,7 +537,7 @@ Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(w ...@@ -519,7 +537,7 @@ Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(w
m_recursive = new QCheckBox(this); m_recursive = new QCheckBox(this);
m_recursive->setText(tr("Scan recursively")); m_recursive->setText(tr("Scan recursively"));
m_recursive->setChecked(TRUE); m_recursive->setChecked(true);
layout->addWidget(m_recursive); layout->addWidget(m_recursive);
//--------------------------------------------------- //---------------------------------------------------
...@@ -574,7 +592,7 @@ void Step1::selectProjectIcon() ...@@ -574,7 +592,7 @@ void Step1::selectProjectIcon()
QFile Fout(iconName); QFile Fout(iconName);
if(!Fout.exists()) if(!Fout.exists())
{ {
m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");")); m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
} }
else else
{ {
...@@ -585,7 +603,7 @@ void Step1::selectProjectIcon() ...@@ -585,7 +603,7 @@ void Step1::selectProjectIcon()
} }
else else
{ {
m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");")); m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
} }
} }
} }
...@@ -604,7 +622,7 @@ void Step1::selectSourceDir() ...@@ -604,7 +622,7 @@ void Step1::selectSourceDir()
} }
if (dirName.isEmpty()) if (dirName.isEmpty())
{ {
dirName=QString::fromAscii("."); dirName=QString::fromLatin1(".");
} }
m_sourceDir->setText(dirName); m_sourceDir->setText(dirName);
} }
...@@ -621,7 +639,7 @@ void Step1::selectDestinationDir() ...@@ -621,7 +639,7 @@ void Step1::selectDestinationDir()
} }
if (dirName.isEmpty()) if (dirName.isEmpty())
{ {
dirName=QString::fromAscii("."); dirName=QString::fromLatin1(".");
} }
m_destDir->setText(dirName); m_destDir->setText(dirName);
} }
...@@ -683,7 +701,7 @@ void Step1::init() ...@@ -683,7 +701,7 @@ void Step1::init()
QFile Fout(iconName); QFile Fout(iconName);
if(!Fout.exists()) if(!Fout.exists())
{ {
m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");")); m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
} }
else else
{ {
...@@ -694,7 +712,7 @@ void Step1::init() ...@@ -694,7 +712,7 @@ void Step1::init()
} }
else else
{ {
m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");")); m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
} }
} }
} }
...@@ -1220,7 +1238,7 @@ Wizard::Wizard(const QHash<QString,Input*> &modelData, QWidget *parent) : ...@@ -1220,7 +1238,7 @@ Wizard::Wizard(const QHash<QString,Input*> &modelData, QWidget *parent) :
{ {
m_treeWidget = new QTreeWidget; m_treeWidget = new QTreeWidget;
m_treeWidget->setColumnCount(1); m_treeWidget->setColumnCount(1);
m_treeWidget->setHeaderLabels(QStringList() << QString::fromAscii("Topics")); m_treeWidget->setHeaderLabels(QStringList() << QString::fromLatin1("Topics"));
QList<QTreeWidgetItem*> items; QList<QTreeWidgetItem*> items;
items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Project")))); items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Project"))));
items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Mode")))); items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Mode"))));
......
##### set CPack properties #####
#
# Good doc/tutorial/example:
# - http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
# - http://www.cmake.org/cmake/help/v3.3/module/CPack.html
# - http://sourceforge.net/p/klusters/klusters/ci/master/tree/CMakeLists.txt
#
# This cmake script should generate same packages (deb,rpm) as:
# - http://mirror.debian.ikoula.com/debian/pool/main/d/doxygen
# - http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen (http://old-releases.ubuntu.com/ubuntu/pool/main/d/doxygen)
# - http://rpmfind.net/linux/rpm2html/search.php?query=doxygen
set(CPACK_STRIP_FILES ON)
set(CPACK_PACKAGE_NAME ${PROJECT_NAME} )
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_CONTACT "Dimitri van Heesch")
set(CPACK_PACKAGE_VENDOR "Dimitri van Heesch")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Generate documentation from C, C++, Java, Python and other languages")
set(CPACK_PACKAGE_DESCRIPTION "Doxygen is the de facto standard tool for generating documentation from annotated C++ sources.
But many other popular programming languages are supported:
C, Objective-C, C#, PHP, Java, Python, Fortran, VHDL, Tcl, D (some extent) and IDL (Corba, Microsoft, and UNO/OpenOffice flavors).
.
Three usages:
.
1. Generate documentation from annotated source files to various format:
- On-line documentation (HTML)
- Off-line reference manual (LaTeX, RTF, PostScript, hyperlinked PDF, compressed HTML, Unix man pages)
.
2. Extract the code structure from undocumented source files.
Also generate include dependency graphs, inheritance diagrams, and collaboration diagrams.
Useful to quickly understand code organization in large source distributions.
.
3. Create normal documentation (as the doxygen user manual and web-site http://doxygen.org/)
.
Install the doxygen-latex package to build LaTeX based documents.
Install the libclang1 package to use the 'clang assisted parsing'.")
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
# Variables specific to CPack RPM generator
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
set(CPACK_RPM_PACKAGE_GROUP "Development/Tools")
set(CPACK_RPM_PACKAGE_URL "http://doxygen.org/")
set(CPACK_RPM_PACKAGE_REQUIRES "/sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96")
set(CPACK_RPM_PACKAGE_SUGGESTS "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
# Variables specific to CPack DEB generator
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://doxygen.org/")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS YES) #set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libclang1-3.6, libgcc1, libsqlite3-0, libstdc++6, libxapian22")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "graphviz (<< 1.12)")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Matthias Klose <doko@debian.org>") # Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
# Variables specific to CPack NSIS generator
set(CPACK_NSIS_MUI_ICON ${CMAKE_CURRENT_SOURCE_DIR}/addon/doxywizard/doxywizard.ico)
set(CPACK_NSIS_URL_INFO_ABOUT "http://doxygen.org/")
set(CPACK_NSIS_PACKAGE_NAME ${PROJECT_NAME})
# Variables specific to CPack DragNDrop generator
set(CPACK_DMG_FORMAT "UDBZ") # UDRO=UDIF-Read-Only, UDZO=zlib, UDBZ=bzip2 -- See hdiutil
set(CPACK_DMG_VOLUME_NAME ${PROJECT_NAME})
set(CPACK_DMG_BACKGROUND_IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen_logo.eps)
if(WIN32)
set(CPACK_GENERATOR "ZIP;NSIS")
elseif(APPLE)
set(CPACK_GENERATOR "ZIP;DragNDrop;PackageMaker;Bundle" )
set(CPACK_SYSTEM_NAME "OSX" )
elseif(UNIX)
# Determine distribution and release
execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE distribution OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND lsb_release -sc OUTPUT_VARIABLE release OUTPUT_STRIP_TRAILING_WHITESPACE)
#xecute_process(COMMAND uname -i OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND uname -m OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
if(distribution STREQUAL "Debian" OR distribution STREQUAL "Ubuntu")
set(CPACK_GENERATOR "DEB")
execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE})
elseif(distribution MATCHES "RedHat.*")
# extract the major version from RedHat full version (e.g. 6.7 --> 6)
execute_process(COMMAND lsb_release -sr COMMAND sed s/[.].*// OUTPUT_VARIABLE redhat_version_major OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.el${redhat_version_major}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
elseif(distribution MATCHES "openSUSE.*")
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
elseif(distribution STREQUAL "Fedora")
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.fc${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
elseif(distribution STREQUAL "Scientific")
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
else()
set(CPACK_GENERATOR "RPM;TGZ;STGZ")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
endif()
else()
# other operating system (not Windows/Apple/Unix)
endif()
include(${SOURCE}/cmake/version.cmake)
find_program(PYTHON NAMES python)
execute_process(
COMMAND ${PYTHON} ${CMAKE_SOURCE_DIR}/translator.py
)
file (STRINGS "${SOURCE}/VERSION" VERSION) file (STRINGS "${TOP}/VERSION" VERSION)
set(ENV{VERSION} "${VERSION}") set(ENV{VERSION} "${VERSION}")
This diff is collapsed.
#! /bin/sh
#
# $Id: configure,v 1.1 1999/07/19 17:00:15 root Exp $
#
# Copyright (C) 1997-2014 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.
#
# shell script to configure doxygen (use for binary releases)
f_prefix=/usr/local
f_insttool=NO
while test -n "$1"; do
case $1 in
--prefix)
shift; f_prefix=$1
;;
--install)
shift; f_insttool=$1
;;
-h | -help | --help)
f_help=y
;;
*)
echo $1: unknown argument
f_help=y
f_error=y
;;
esac
shift
done
if test "$f_help" = y; then
cat <<EOF
Usage: $0 [--help] [--prefix dir] [--install name]
Options:
--help Print this help
--prefix dir Installation prefix directory
[default: /usr/local]
--install name Use \`name' as the name of the GNU install tool
[default: install]
EOF
test "$f_error" = y && exit 1
exit 0;
fi
# - check for install ------------------------------------------------------------
echo -n " Checking for GNU install tool... "
if test "$f_insttool" = NO; then
install_names="ginstall install"
install_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs"
install_prog=NO
install_found=NO
for i in $install_names; do
for j in $install_dirs; do
if test -x "$j/$i"; then
if test -n "`$j/$i --version 2>/dev/null | grep utils`"; then
install_found=YES
install_prog="$j/$i"
break 2
fi
fi
done
done
f_insttool="$install_prog"
fi
if test "$f_insttool" = NO; then
if test "$install_found" = YES; then
echo "GNU version of install is required!"
else
echo "not found!";
fi
echo
exit 2
fi
echo "using $f_insttool";
# ----------------------------------------------------------
cat > .makeconfig <<EOF
RM = rm -f
VERSION = `cat VERSION`
INSTALL = $f_prefix
INSTTOOL = $f_insttool
DOXYDOCS = ..
export TMAKEPATH
EOF
for i in Makefile.in ; do
SRC=$i
DST=`echo $i|sed 's%\(.*\).in$%\1%'`
TIME=`date`
cat > $DST <<EOF
#
# This file was generated from `basename $i` on $TIME
#
EOF
cat .makeconfig $SRC >> $DST
echo " Created $DST from $SRC..."
done
This diff is collapsed.
...@@ -16,7 +16,7 @@ PROJECT_NAME = "Doxygen" ...@@ -16,7 +16,7 @@ PROJECT_NAME = "Doxygen"
OUTPUT_DIRECTORY = .. OUTPUT_DIRECTORY = ..
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
QUIET = NO QUIET = YES
WARNINGS = YES WARNINGS = YES
DISABLE_INDEX = YES DISABLE_INDEX = YES
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = YES
...@@ -34,7 +34,7 @@ ENABLE_PREPROCESSING = NO ...@@ -34,7 +34,7 @@ ENABLE_PREPROCESSING = NO
CASE_SENSE_NAMES = NO CASE_SENSE_NAMES = NO
IMAGE_PATH = . IMAGE_PATH = .
INPUT = index.doc install.doc starting.doc docblocks.doc markdown.doc \ INPUT = index.doc install.doc starting.doc docblocks.doc markdown.doc \
lists.doc grouping.doc formulas.doc diagrams.doc preprocessing.doc \ lists.doc grouping.doc formulas.doc tables.doc diagrams.doc preprocessing.doc \
autolink.doc output.doc searching.doc extsearch.doc customize.doc custcmd.doc \ autolink.doc output.doc searching.doc extsearch.doc customize.doc custcmd.doc \
external.doc faq.doc trouble.doc features.doc \ external.doc faq.doc trouble.doc features.doc \
doxygen_usage.doc doxywizard_usage.doc \ doxygen_usage.doc doxywizard_usage.doc \
...@@ -54,3 +54,4 @@ HTML_STYLESHEET = doxygen_manual.css ...@@ -54,3 +54,4 @@ HTML_STYLESHEET = doxygen_manual.css
ALIASES = LaTeX="\f$\mbox{\LaTeX}\f$" ALIASES = LaTeX="\f$\mbox{\LaTeX}\f$"
ALIASES += TeX="\f$\mbox{\TeX}\f$" ALIASES += TeX="\f$\mbox{\TeX}\f$"
LATEX_BATCHMODE = YES LATEX_BATCHMODE = YES
LATEX_EXTRA_STYLESHEET = manual.sty
...@@ -115,7 +115,7 @@ on the tree of entries, built during language parsing. Look at the ...@@ -115,7 +115,7 @@ on the tree of entries, built during language parsing. Look at the
"Gathering information" part of \c parseInput() for details. "Gathering information" part of \c parseInput() for details.
The result of this step is a number of dictionaries, which can be The result of this step is a number of dictionaries, which can be
found in the Doxygen "namespace" defined in \c src/doxygen.h. Most found in the doxygen "namespace" defined in \c src/doxygen.h. Most
elements of these dictionaries are derived from the class \c Definition; elements of these dictionaries are derived from the class \c Definition;
The class \c MemberDef, for instance, holds all information for a member. The class \c MemberDef, for instance, holds all information for a member.
An instance of such a class can be part of a file ( class \c FileDef ), An instance of such a class can be part of a file ( class \c FileDef ),
...@@ -203,49 +203,44 @@ from the correct line in the \c Makefile: ...@@ -203,49 +203,44 @@ from the correct line in the \c Makefile:
$file = shift @ARGV; $file = shift @ARGV;
print "Toggle debugging mode for $file\n"; print "Toggle debugging mode for $file\n";
if (!-e "../src/${file}.l")
# add or remove the -d flex flag in the makefile {
unless (rename "Makefile.libdoxygen","Makefile.libdoxygen.old") { print STDERR "Error: file ../src/${file}.l does not exist!";
print STDERR "Error: cannot rename Makefile.libdoxygen!\n"; exit 1;
}
system("touch ../src/${file}.l");
unless (rename "src/CMakeFiles/_doxygen.dir/build.make","src/CMakefiles/_doxygen.dir/build.make.old") {
print STDERR "Error: cannot rename src/CMakeFiles/_doxygen.dir/build.make!\n";
exit 1; exit 1;
} }
if (open(F,"<Makefile.libdoxygen.old")) { if (open(F,"<src/CMakeFiles/_doxygen.dir/build.make.old")) {
unless (open(G,">Makefile.libdoxygen")) { unless (open(G,">src/CMakefiles/_doxygen.dir/build.make")) {
print STDERR "Error: opening file Makefile.libdoxygen for writing\n"; print STDERR "Error: opening file build.make for writing\n";
exit 1; exit 1;
} }
print "Processing Makefile.libdoxygen...\n"; print "Processing build.make...\n";
while (<F>) { while (<F>) {
if ( s/\(LEX\) (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) -d \1-P\2YY -t $file/g ) { if ( s/flex \$\(LEX_FLAGS\) -P${file}YY/flex \$(LEX_FLAGS) -d -P${file}YY/ ) {
print "Enabling debug info for $file\n"; print "Enabling debug info for $file.l\n";
} }
elsif ( s/\(LEX\) -d (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) \1-P\2YY -t $file/g ) { elsif ( s/flex \$\(LEX_FLAGS\) -d -P${file}YY/flex \$(LEX_FLAGS) -P${file}YY/ ) {
print "Disabling debug info for $file\n"; print "Disabling debug info for $file\n";
} }
print G "$_"; print G "$_";
} }
close F; close F;
unlink "Makefile.libdoxygen.old"; unlink "src/CMakeFiles/_doxygen.dir/build.make.old";
} }
else { else {
print STDERR "Warning file Makefile.libdoxygen.old does not exist!\n"; print STDERR "Warning file src/CMakeFiles/_doxygen.dir/build.make does not exist!\n";
} }
# touch the file # touch the file
$now = time; $now = time;
utime $now, $now, $file utime $now, $now, $file
\endverbatim
Another way to get rules matching / debugging information from the flex code is in the following way:
\verbatim
touch src/<flex code file>.l
make LEX="flex -d"
\endverbatim
to remove the rules / debug information again:
\verbatim
touch src/<flex codefile>.l
make
\endverbatim \endverbatim
Another way to get rules matching / debugging information
from the flex code is setting LEX_FLAGS with cmake.
Note that by running doxygen with `-d lex` you get information about which flex Note that by running doxygen with `-d lex` you get information about which flex
codefile is used. codefile is used.
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
documentation by links (in HTML). To manually specify link text, use the documentation by links (in HTML). To manually specify link text, use the
HTML '<tt>a</tt>' tag: HTML '<tt>a</tt>' tag:
\verbatim <a href="linkURL">link text</a> \endverbatim \verbatim <a href="linkURL">link text</a> \endverbatim
which will be automatically translated to other output formats by Doxygen. which will be automatically translated to other output formats by doxygen.
\section linkclass Links to classes \section linkclass Links to classes
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
'fun(const std::string&,bool)' or '()' to match any prototype. 'fun(const std::string&,bool)' or '()' to match any prototype.
\par Note 2: \par Note 2:
Member function modifiers (like 'const' and 'volatile') Member function modifiers (like 'const' and 'volatile')
are required to identify the target, i.e. 'func(int) const' and 'fun(int)' are required to identify the target, i.e. 'func(int) const' and 'func(int)'
target different member functions. target different member functions.
\par Note 3: \par Note 3:
For JavaDoc compatibility a \# may be used instead of a :: in For JavaDoc compatibility a \# may be used instead of a :: in
...@@ -110,11 +110,15 @@ ...@@ -110,11 +110,15 @@
patterns 3 and 7 in this case. patterns 3 and 7 in this case.
\par Example: \par Example:
\verbinclude autolink.cpp \include autolink.cpp
\htmlonly \htmlonly
Click <a href="examples/autolink/html/index.html">here</a> Click <a href="examples/autolink/html/index.html">here</a>
for the corresponding HTML documentation that is generated by Doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{autolink_example}{Autolink example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
\section resolving typedefs \section resolving typedefs
...@@ -126,11 +130,15 @@ typedef struct StructName TypeName ...@@ -126,11 +130,15 @@ typedef struct StructName TypeName
when either StructName itself or TypeName is encountered. when either StructName itself or TypeName is encountered.
\par Example: \par Example:
\verbinclude restypedef.cpp \include restypedef.cpp
\htmlonly \htmlonly
Click <a href="examples/restypedef/html/restypedef_8cpp.html">here</a> Click <a href="examples/restypedef/html/restypedef_8cpp.html">here</a>
for the corresponding HTML documentation that is generated by Doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{restypedef_8cpp}{Typedef example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
\htmlonly \htmlonly
Go to the <a href="output.html">next</a> section or return to the Go to the <a href="output.html">next</a> section or return to the
......
This diff is collapsed.
This diff is collapsed.
...@@ -127,24 +127,32 @@ Here are a couple of header files that together show the various diagrams ...@@ -127,24 +127,32 @@ Here are a couple of header files that together show the various diagrams
that doxygen can generate: that doxygen can generate:
<code>diagrams_a.h</code> <code>diagrams_a.h</code>
\verbinclude diagrams_a.h \include diagrams_a.h
<code>diagrams_b.h</code> <code>diagrams_b.h</code>
\verbinclude diagrams_b.h \include diagrams_b.h
<code>diagrams_c.h</code> <code>diagrams_c.h</code>
\verbinclude diagrams_c.h \include diagrams_c.h
<code>diagrams_d.h</code> <code>diagrams_d.h</code>
\verbinclude diagrams_d.h \include diagrams_d.h
<code>diagrams_e.h</code> <code>diagrams_e.h</code>
\verbinclude diagrams_e.h \include diagrams_e.h
\htmlonly \htmlonly
</p>
Click <a href="examples/diagrams/html/index.html">here</a> Click <a href="examples/diagrams/html/index.html">here</a>
for the corresponding HTML documentation that is generated by doxygen<br/> for the corresponding HTML documentation that is generated by doxygen<br/>
(<code>EXTRACT_ALL</code> = <code>YES</code> is used here). (<code>EXTRACT_ALL</code> = <code>YES</code> is used here).
\endhtmlonly \endhtmlonly
\latexonly
\IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
{
See \hyperlink{diagrams_example}{Diagrams example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
} {}
\endlatexonly
\htmlonly \htmlonly
<br><br> <br/><br/>
Go to the <a href="preprocessing.html">next</a> section or return to the Go to the <a href="preprocessing.html">next</a> section or return to the
<a href="index.html">index</a>. <a href="index.html">index</a>.
\endhtmlonly \endhtmlonly
......
...@@ -259,9 +259,14 @@ located in front of the block instead of after the block. ...@@ -259,9 +259,14 @@ located in front of the block instead of after the block.
Here is an example of the use of these comment blocks: Here is an example of the use of these comment blocks:
\include afterdoc.h \include afterdoc.h
\htmlonly \htmlonly
</p>
Click <a href="examples/afterdoc/html/class_test.html">here</a> Click <a href="examples/afterdoc/html/class_test.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{afterdoc_example}{After Block example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
\warning These blocks can only be used to document \e members and \e parameters. \warning These blocks can only be used to document \e members and \e parameters.
They cannot be used to document files, classes, unions, structs, They cannot be used to document files, classes, unions, structs,
...@@ -275,9 +280,14 @@ Here is an example of the use of these comment blocks: ...@@ -275,9 +280,14 @@ Here is an example of the use of these comment blocks:
Here is an example of a documented piece of C++ code using the Qt style: Here is an example of a documented piece of C++ code using the Qt style:
\include qtstyle.cpp \include qtstyle.cpp
\htmlonly \htmlonly
</p>
Click <a href="examples/qtstyle/html/class_test.html">here</a> Click <a href="examples/qtstyle/html/class_test.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{qtstyle_example}{QT Style example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
The brief descriptions are included in the member overview of a The brief descriptions are included in the member overview of a
class, namespace or file and are printed using a small italic font class, namespace or file and are printed using a small italic font
...@@ -305,9 +315,14 @@ Here is the same piece of code as shown above, this time documented using the ...@@ -305,9 +315,14 @@ Here is the same piece of code as shown above, this time documented using the
JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES: JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES:
\include jdstyle.cpp \include jdstyle.cpp
\htmlonly \htmlonly
</p>
Click <a href="examples/jdstyle/html/class_test.html">here</a> Click <a href="examples/jdstyle/html/class_test.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{jdstyle_example}{Javadoc Style example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
Similarly, if one wishes the first sentence of a Qt style documentation Similarly, if one wishes the first sentence of a Qt style documentation
block to automatically be treated as a brief description, one may set block to automatically be treated as a brief description, one may set
...@@ -381,9 +396,14 @@ Here is an example of a C header named \c structcmd.h that is documented ...@@ -381,9 +396,14 @@ Here is an example of a C header named \c structcmd.h that is documented
using structural commands: using structural commands:
\include structcmd.h \include structcmd.h
\htmlonly \htmlonly
</p>
Click <a href="examples/structcmd/html/structcmd_8h.html">here</a> Click <a href="examples/structcmd/html/structcmd_8h.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{structcmd_example}{Structural Commands example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
Because each comment block in the example above contains a structural command, all Because each comment block in the example above contains a structural command, all
the comment blocks could be moved to another location or input file the comment blocks could be moved to another location or input file
...@@ -409,7 +429,7 @@ using structural commands: ...@@ -409,7 +429,7 @@ using structural commands:
\endverbatim \endverbatim
Make sure that the script is explicitly listed in the \ref cfg_input "INPUT" or Make sure that the script is explicitly listed in the \ref cfg_input "INPUT" or
that \ref cfg_file_patterns "FILE_PATTERNS" includes the `.sh` extention and the that \ref cfg_file_patterns "FILE_PATTERNS" includes the `.sh` extension and the
the script can be found in the path set via \ref cfg_example_path "EXAMPLE_PATH". the script can be found in the path set via \ref cfg_example_path "EXAMPLE_PATH".
\subsection pythonblocks Comment blocks in Python \subsection pythonblocks Comment blocks in Python
...@@ -421,9 +441,14 @@ and assume they have to be represented in a preformatted way. ...@@ -421,9 +441,14 @@ and assume they have to be represented in a preformatted way.
\include docstring.py \include docstring.py
\htmlonly \htmlonly
</p>
Click <a href="examples/docstring/html/index.html">here</a> Click <a href="examples/docstring/html/index.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{python_example}{Python Docstring example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
Note that in this case none of doxygen's \ref cmd_intro "special commands" Note that in this case none of doxygen's \ref cmd_intro "special commands"
are supported. are supported.
...@@ -437,9 +462,14 @@ Here is the same example again but now using doxygen style comments: ...@@ -437,9 +462,14 @@ Here is the same example again but now using doxygen style comments:
\include pyexample.py \include pyexample.py
\htmlonly \htmlonly
</p>
Click <a href="examples/pyexample/html/index.html">here</a> Click <a href="examples/pyexample/html/index.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{py_example}{Python example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
Since python looks more like Java than like C or C++, you should set Since python looks more like Java than like C or C++, you should set
\ref cfg_optimize_output_java "OPTIMIZE_OUTPUT_JAVA" to \c YES in the \ref cfg_optimize_output_java "OPTIMIZE_OUTPUT_JAVA" to \c YES in the
...@@ -462,9 +492,14 @@ Here is an example VHDL file with doxygen comments: ...@@ -462,9 +492,14 @@ Here is an example VHDL file with doxygen comments:
\include mux.vhdl \include mux.vhdl
\htmlonly \htmlonly
</p>
Click <a href="examples/mux/html/index.html">here</a> Click <a href="examples/mux/html/index.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{vhdl_example}{VHDL example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
To get proper looking output you need to set To get proper looking output you need to set
\ref cfg_optimize_output_vhdl "OPTIMIZE_OUTPUT_VHDL" to \c YES in the \ref cfg_optimize_output_vhdl "OPTIMIZE_OUTPUT_VHDL" to \c YES in the
...@@ -571,9 +606,14 @@ Following is an example using doxygen style comments: ...@@ -571,9 +606,14 @@ Following is an example using doxygen style comments:
\include tclexample.tcl \include tclexample.tcl
\htmlonly \htmlonly
</p>
Click <a href="examples/tclexample/html/index.html">here</a> Click <a href="examples/tclexample/html/index.html">here</a>
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{tcl_example}{TCL example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
\section docstructure Anatomy of a comment block \section docstructure Anatomy of a comment block
...@@ -601,15 +641,15 @@ Markdown is designed to be very easy to read and write. ...@@ -601,15 +641,15 @@ Markdown is designed to be very easy to read and write.
It's formatting is inspired by plain text mail. It's formatting is inspired by plain text mail.
Markdown works great for simple, generic formatting, like an introduction Markdown works great for simple, generic formatting, like an introduction
page for your project. Doxygen also supports reading of markdown files page for your project. Doxygen also supports reading of markdown files
directly. See \ref markdown "here" for more details regards Markdown support. directly. For more details see chapter \ref markdown.
For programming language specific formatting doxygen has two For programming language specific formatting doxygen has two
forms of additional markup on top of Markdown formatting. forms of additional markup on top of Markdown formatting.
1. <a href="http://en.wikipedia.org/wiki/Javadoc">Javadoc</a> like markup. 1. <a href="http://en.wikipedia.org/wiki/Javadoc">Javadoc</a> like markup.
See \ref cmd_intro "here" for a complete overview of all commands supported by doxygen. See \ref commands for a complete overview of all commands supported by doxygen.
2. <a href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)#XML_documentation_system">XML</a> markup 2. <a href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)#XML_documentation_system">XML</a> markup
as specified in the C# standard. See \ref xmlcmds "here" for the XML commands supported by doxygen. as specified in the C# standard. See \ref xmlcmds for the XML commands supported by doxygen.
If this is still not enough doxygen also supports a \ref htmlcmds "subset" of If this is still not enough doxygen also supports a \ref htmlcmds "subset" of
the <a href="http://en.wikipedia.org/wiki/HTML">HTML</a> markup language. the <a href="http://en.wikipedia.org/wiki/HTML">HTML</a> markup language.
......
.TH DOXYGEN "1" "DATE" "doxygen VERSION" "User Commands" .TH DOXYGEN "1" "@DATE@" "doxygen @VERSION@" "User Commands"
.SH NAME .SH NAME
doxygen \- documentation system for various programming languages doxygen \- documentation system for various programming languages
.SH DESCRIPTION .SH DESCRIPTION
...@@ -45,6 +45,6 @@ doxygen \fB\-e\fR rtf extensionsFile ...@@ -45,6 +45,6 @@ doxygen \fB\-e\fR rtf extensionsFile
If \fB\-s\fR is specified the comments in the config file will be omitted. If \fB\-s\fR is specified the comments in the config file will be omitted.
If configName is omitted `Doxyfile' will be used as a default. If configName is omitted `Doxyfile' will be used as a default.
.SH AUTHOR .SH AUTHOR
Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2015 Doxygen version @VERSION@, Copyright Dimitri van Heesch 1997-2015
.SH SEE ALSO .SH SEE ALSO
doxywizard(1). doxywizard(1).
This diff is collapsed.
This diff is collapsed.
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
% Documents produced by Doxygen are derivative works derived from the % Documents produced by Doxygen are derivative works derived from the
% input used in their production; they are not affected by this license. % input used in their production; they are not affected by this license.
\batchmode
\documentclass{book} \documentclass{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry} \usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{makeidx} \usepackage{makeidx}
...@@ -28,6 +29,8 @@ ...@@ -28,6 +29,8 @@
\usepackage{textcomp} \usepackage{textcomp}
\usepackage[nointegrals]{wasysym} \usepackage[nointegrals]{wasysym}
\usepackage{alltt} \usepackage{alltt}
\usepackage{import}
\usepackage[titletoc]{appendix}
\usepackage{ifpdf} \usepackage{ifpdf}
\ifpdf \ifpdf
\usepackage[pdftex, \usepackage[pdftex,
...@@ -53,6 +56,7 @@ ...@@ -53,6 +56,7 @@
\usepackage[titles]{tocloft} \usepackage[titles]{tocloft}
\usepackage{amssymb} \usepackage{amssymb}
\usepackage{doxygen} \usepackage{doxygen}
\usepackage{manual}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left } \lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
\makeindex \makeindex
...@@ -65,19 +69,22 @@ ...@@ -65,19 +69,22 @@
\newcommand{\thisyear}{\the\year} \newcommand{\thisyear}{\the\year}
\hfuzz=15pt \hfuzz=15pt
\setlength{\emergencystretch}{15pt} \setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.2cm}
\hbadness=750 \hbadness=750
\tolerance=750 \tolerance=750
\begin{document} \begin{document}
\pagenumbering{alph}
\begin{titlepage} \begin{titlepage}
\includegraphics[width=\textwidth]{doxygen_logo} \includegraphics[width=\textwidth]{doxygen_logo}
\begin{center} \begin{center}
Manual for version $VERSION\\[2ex] Manual for version @VERSION@\\[2ex]
Written by Dimitri van Heesch\\[2ex] Written by Dimitri van Heesch\\[2ex]
\copyright 1997-\thisyear \copyright 1997-\thisyear
\end{center} \end{center}
\end{titlepage} \end{titlepage}
\pagenumbering{Roman}
\clearemptydoublepage \clearemptydoublepage
\pagenumbering{Roman}
\tableofcontents \tableofcontents
\clearemptydoublepage \clearemptydoublepage
\pagenumbering{arabic} \pagenumbering{arabic}
...@@ -90,6 +97,7 @@ Written by Dimitri van Heesch\\[2ex] ...@@ -90,6 +97,7 @@ Written by Dimitri van Heesch\\[2ex]
\chapter{Lists}\label{lists}\hypertarget{lists}{}\input{lists} \chapter{Lists}\label{lists}\hypertarget{lists}{}\input{lists}
\chapter{Grouping}\label{grouping}\hypertarget{grouping}{}\input{grouping} \chapter{Grouping}\label{grouping}\hypertarget{grouping}{}\input{grouping}
\chapter{Including Formulas}\label{formulas}\hypertarget{formulas}{}\input{formulas} \chapter{Including Formulas}\label{formulas}\hypertarget{formulas}{}\input{formulas}
\chapter{Including Tables}\label{tables}\hypertarget{tables}{}\input{tables}
\chapter{Graphs and diagrams}\label{diagrams}\hypertarget{diagrams}{}\input{diagrams} \chapter{Graphs and diagrams}\label{diagrams}\hypertarget{diagrams}{}\input{diagrams}
\chapter{Preprocessing}\label{preprocessing}\hypertarget{preprocessing}{}\input{preprocessing} \chapter{Preprocessing}\label{preprocessing}\hypertarget{preprocessing}{}\input{preprocessing}
\chapter{Automatic link generation}\label{autolink}\hypertarget{autolink}{}\input{autolink} \chapter{Automatic link generation}\label{autolink}\hypertarget{autolink}{}\input{autolink}
...@@ -112,5 +120,69 @@ Written by Dimitri van Heesch\\[2ex] ...@@ -112,5 +120,69 @@ Written by Dimitri van Heesch\\[2ex]
\chapter{Doxygen's internals}\label{arch}\hypertarget{arch}{}\input{arch} \chapter{Doxygen's internals}\label{arch}\hypertarget{arch}{}\input{arch}
\chapter{Perl Module Output format}\label{perlmod}\hypertarget{perlmod}{}\input{perlmod} \chapter{Perl Module Output format}\label{perlmod}\hypertarget{perlmod}{}\input{perlmod}
\chapter{Internationalization}\label{langhowto}\hypertarget{langhowto}{}\input{langhowto} \chapter{Internationalization}\label{langhowto}\hypertarget{langhowto}{}\input{langhowto}
\renewcommand{\thepart}{}
\part{Appendices}
\appendix
%mean that subinputfrom requires a / at the end of the path
\chapter{Autolink Example}\label{autolink_example}\hypertarget{autolink_example}{}
\subinputfrom{../html/examples/autolink/latex/}{refman_doc}
\chapter{Resolving Typedef Example}\label{restypedef_example}\hypertarget{restypedef_example}{}
\subinputfrom{../html/examples/restypedef/latex/}{refman_doc}
\IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
{
\chapter{Diagrams Example}\label{diagrams_example}\hypertarget{diagrams_example}{}
\subinputfrom{../html/examples/diagrams/latex/}{refman_doc}
}{}
\chapter{Modules Example}\label{modules_example}\hypertarget{modules_example}{}
\subinputfrom{../html/examples/group/latex/}{refman_doc}
\chapter{Member Groups Example}\label{memgrp_example}\hypertarget{memgrp_example}{}
\subinputfrom{../html/examples/memgrp/latex/}{refman_doc}
\chapter{After Block Example}\label{afterdoc_example}\hypertarget{afterdoc_example}{}
\subinputfrom{../html/examples/afterdoc/latex/}{refman_doc}
\chapter{QT Style Example}\label{qtstyle_example}\hypertarget{qtstyle_example}{}
\subinputfrom{../html/examples/qtstyle/latex/}{refman_doc}
\chapter{Javadoc Style Example}\label{jdstyle_example}\hypertarget{jdstyle_example}{}
\subinputfrom{../html/examples/jdstyle/latex/}{refman_doc}
\chapter{Structural Commands Example}\label{structcmd_example}\hypertarget{structcmd_example}{}
\subinputfrom{../html/examples/structcmd/latex/}{refman_doc}
\chapter{Python Docstring Example}\label{python_example}\hypertarget{python_example}{}
\subinputfrom{../html/examples/docstring/latex/}{refman_doc}
\chapter{Python Example}\label{py_example}\hypertarget{py_example}{}
\subinputfrom{../html/examples/pyexample/latex/}{refman_doc}
\chapter{VHDL Example}\label{vhdl_example}\hypertarget{vhdl_example}{}
\subinputfrom{../html/examples/mux/latex/}{refman_doc}
\chapter{Tcl Example}\label{tcl_example}\hypertarget{tcl_example}{}
\subinputfrom{../html/examples/tclexample/latex/}{refman_doc}
\chapter{Class Example}\label{class_example}\hypertarget{class_example}{}
\subinputfrom{../html/examples/class/latex/}{refman_doc}
\chapter{Define Example}\label{define_example}\hypertarget{define_example}{}
\subinputfrom{../html/examples/define/latex/}{refman_doc}
\chapter{Enum Example}\label{enum_example}\hypertarget{enum_example}{}
\subinputfrom{../html/examples/enum/latex/}{refman_doc}
\chapter{Example Example}\label{example_example}\hypertarget{example_example}{}
\subinputfrom{../html/examples/example/latex/}{refman_doc}
\chapter{Extends/Implements Example}\label{extends_example}\hypertarget{extends_example}{}
\subinputfrom{../html/examples/manual/latex/}{refman_doc}
\chapter{File Example}\label{file_example}\hypertarget{file_example}{}
\subinputfrom{../html/examples/file/latex/}{refman_doc}
\chapter{Fn Example}\label{fn_example}\hypertarget{fn_example}{}
\subinputfrom{../html/examples/func/latex/}{refman_doc}
\chapter{Overload Example}\label{overload_example}\hypertarget{overload_example}{}
\subinputfrom{../html/examples/overload/latex/}{refman_doc}
\chapter{Page Example}\label{page_example}\hypertarget{page_example}{}
\subinputfrom{../html/examples/page/latex/}{refman_doc}
\chapter{Relates Example}\label{relates_example}\hypertarget{relates_example}{}
\subinputfrom{../html/examples/relates/latex/}{refman_doc}
\chapter{Author Example}\label{author_example}\hypertarget{author_example}{}
\subinputfrom{../html/examples/author/latex/}{refman_doc}
\chapter{Par Example}\label{par_example}\hypertarget{par_example}{}
\subinputfrom{../html/examples/par/latex/}{refman_doc}
\chapter{Include Example}\label{include_example}\hypertarget{include_example}{}
\subinputfrom{../html/examples/include/latex/}{refman_doc}
\printindex \printindex
\end{document} \end{document}
.TH DOXYINDEXER "1" "DATE" "doxyindexer VERSION" "User Commands" .TH DOXYINDEXER "1" "@DATE@" "doxyindexer @VERSION@" "User Commands"
.SH NAME .SH NAME
doxyindexer \- creates a search index from raw search data doxyindexer \- creates a search index from raw search data
.SH SYNOPSIS .SH SYNOPSIS
......
.TH DOXYSEARCH "1" "DATE" "doxysearch.cgi VERSION" "User Commands" .TH DOXYSEARCH "1" "@DATE@" "doxysearch.cgi @VERSION@" "User Commands"
.SH NAME .SH NAME
doxysearch.cgi \- search engine used for searching in doxygen documentation. doxysearch.cgi \- search engine used for searching in doxygen documentation.
.SH SYNOPSIS .SH SYNOPSIS
......
.TH DOXYWIZARD "1" "DATE" "doxywizard VERSION" "User Commands" .TH DOXYWIZARD "1" "@DATE@" "doxywizard @VERSION@" "User Commands"
.SH NAME .SH NAME
doxywizard \- a tool to configure and run doxygen on your source files doxywizard \- a tool to configure and run doxygen on your source files
.SH SYNOPSIS .SH SYNOPSIS
......
...@@ -116,7 +116,7 @@ You should now get the following message: ...@@ -116,7 +116,7 @@ You should now get the following message:
Test successful. Test successful.
Now you should be enable to search for words and symbols from the HTML output. Now you should be able to search for words and symbols from the HTML output.
\subsection extsearch_multi Multi project index \subsection extsearch_multi Multi project index
......
...@@ -97,12 +97,12 @@ with a \ref cmdcond "\\cond" command at the start and one comment block ...@@ -97,12 +97,12 @@ with a \ref cmdcond "\\cond" command at the start and one comment block
with a \ref cmdendcond "\\endcond" command at the end of the piece of with a \ref cmdendcond "\\endcond" command at the end of the piece of
code that should be ignored. This should be within the same file of course. code that should be ignored. This should be within the same file of course.
But you can also use Doxygen's preprocessor for this: But you can also use doxygen's preprocessor for this:
If you put If you put
\verbatim \verbatim
#ifndef DOXYGEN_SHOULD_SKIP_THIS #ifndef DOXYGEN_SHOULD_SKIP_THIS
/* code that must be skipped by Doxygen */ /* code that must be skipped by doxygen */
#endif /* DOXYGEN_SHOULD_SKIP_THIS */ #endif /* DOXYGEN_SHOULD_SKIP_THIS */
\endverbatim \endverbatim
...@@ -110,7 +110,7 @@ around the blocks that should be hidden and put: ...@@ -110,7 +110,7 @@ around the blocks that should be hidden and put:
\verbatim \verbatim
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
\endverbatim \endverbatim
in the config file then all blocks should be skipped by Doxygen as long in the config file then all blocks should be skipped by doxygen as long
as \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to `YES`. as \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to `YES`.
\section faq_code_inc How can I change what is after the <code>\#include</code> in the class documentation? \section faq_code_inc How can I change what is after the <code>\#include</code> in the class documentation?
......
...@@ -107,7 +107,7 @@ one that is generated by Qt Software. Doxygen understands the C++ extensions ...@@ -107,7 +107,7 @@ one that is generated by Qt Software. Doxygen understands the C++ extensions
used by Qt such as signals and slots and many of the markup commands used in the Qt sources. used by Qt such as signals and slots and many of the markup commands used in the Qt sources.
Doxygen can also automatically generate links to existing documentation Doxygen can also automatically generate links to existing documentation
that was generated with Doxygen or with Qt's non-public class browser that was generated with doxygen or with Qt's non-public class browser
generator. For a Qt based project this means that whenever you refer to generator. For a Qt based project this means that whenever you refer to
members or classes belonging to the Qt toolkit, a link will be generated to members or classes belonging to the Qt toolkit, a link will be generated to
the Qt documentation. This is done independent of where this documentation the Qt documentation. This is done independent of where this documentation
......
...@@ -105,7 +105,7 @@ file <code>formula.repository</code> that is written to the html directory to ...@@ -105,7 +105,7 @@ file <code>formula.repository</code> that is written to the html directory to
get rid of an incorrect formula. get rid of an incorrect formula.
\htmlonly \htmlonly
Go to the <a href="diagrams.html">next</a> section or return to the Go to the <a href="tables.html">next</a> section or return to the
<a href="index.html">index</a>. <a href="index.html">index</a>.
\endhtmlonly \endhtmlonly
......
...@@ -135,12 +135,17 @@ files to define the hierarchy and \ref cmdweakgroup "\\weakgroup" ...@@ -135,12 +135,17 @@ files to define the hierarchy and \ref cmdweakgroup "\\weakgroup"
in .c files without having to duplicate the hierarchy exactly. in .c files without having to duplicate the hierarchy exactly.
\par Example: \par Example:
\verbinclude group.cpp \include group.cpp
\htmlonly \htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/group/html/modules.html">here</a> </p>
for the corresponding HTML documentation that is generated by Doxygen. Click <a href="examples/group/html/modules.html">here</a>
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{modules_example}{Modules example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
\section memgroup Member Groups \section memgroup Member Groups
...@@ -188,12 +193,17 @@ you should put a \ref cmdnosubgrouping "\\nosubgrouping" command inside the ...@@ -188,12 +193,17 @@ you should put a \ref cmdnosubgrouping "\\nosubgrouping" command inside the
documentation of the class. documentation of the class.
\par Example: \par Example:
\verbinclude memgrp.cpp \include memgrp.cpp
\htmlonly \htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/memgrp/html/class_test.html">here</a> </p>
for the corresponding HTML documentation that is generated by Doxygen. Click <a href="examples/memgrp/html/class_test.html">here</a>
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\latexonly
See \hyperlink{memgrp_example}{Member Groups example}
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
\endlatexonly
Here Group1 is displayed as a subsection of the "Public Members". And Here Group1 is displayed as a subsection of the "Public Members". And
Group2 is a separate section because it contains members with Group2 is a separate section because it contains members with
...@@ -216,8 +226,10 @@ two groups GA and GB, where GB is part of GA, page A is put in group GA, ...@@ -216,8 +226,10 @@ two groups GA and GB, where GB is part of GA, page A is put in group GA,
and page B is put in group GB. and page B is put in group GB.
\htmlonly \htmlonly
</p>
Go to the <a href="formulas.html">next</a> section or return to the Go to the <a href="formulas.html">next</a> section or return to the
<a href="index.html">index</a>. <a href="index.html">index</a>.
<p>
\endhtmlonly \endhtmlonly
*/ */
...@@ -78,6 +78,7 @@ Compilation is now done by performing the following steps: ...@@ -78,6 +78,7 @@ Compilation is now done by performing the following steps:
cd doxygen-$VERSION cd doxygen-$VERSION
mkdir build mkdir build
cd build
<li>Run cmake with the makefile generator <li>Run cmake with the makefile generator
...@@ -89,11 +90,11 @@ Compilation is now done by performing the following steps: ...@@ -89,11 +90,11 @@ Compilation is now done by performing the following steps:
If you have Qt-4.3 or higher installed and want to build the GUI If you have Qt-4.3 or higher installed and want to build the GUI
front-end, you should enable it as follows: front-end, you should enable it as follows:
cmake -Dbuild_wizard=YES cmake -Dbuild_wizard=YES ..
For an overview of other configuration options use For an overview of other configuration options use
cmake -L cmake -L ..
<li>Compile the program by running make: <li>Compile the program by running make:
...@@ -182,7 +183,7 @@ cd into the \c doxygen-x.y.z directory, create and cd to a build directory ...@@ -182,7 +183,7 @@ cd into the \c doxygen-x.y.z directory, create and cd to a build directory
\verbatim \verbatim
mkdir build mkdir build
cd build cd build
cmake -G "Visual Studio 12 2013" cmake -G "Visual Studio 12 2013" ..
\endverbatim \endverbatim
Note that compiling Doxywizard currently requires Qt version 4 Note that compiling Doxywizard currently requires Qt version 4
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
% The following one or more lines contain information about % The following one or more lines contain information about
% the maintainer(s) for the language (one line, one maintainer) % the maintainer(s) for the language (one line, one maintainer)
% in the form: <readable name><colon><e-mail> % in the form: <readable name><colon><e-mail>
% If the readable name name starts with '--' it will be displayed in HTML % If the readable name starts with '--' it will be displayed in HTML
% output as a highlighted text notice related to the langluage (usually % output as a highlighted text notice related to the language (usually
% '-- searching for the maintainer --'). % '-- searching for the maintainer --').
% If the <e-mail> is prefixed [some_text] it is not displayed in the table % If the <e-mail> is prefixed [some_text] it is not displayed in the table
% of maintainers in the Doxygen documentation, nor it is used when building % of maintainers in the Doxygen documentation, nor it is used when building
...@@ -81,7 +81,7 @@ TranslatorIndonesian ...@@ -81,7 +81,7 @@ TranslatorIndonesian
Hendy Irawan: ceefour at gauldong dot net Hendy Irawan: ceefour at gauldong dot net
TranslatorItalian TranslatorItalian
Alessandro Falappa: alessandro at falappa dot net Alessandro Falappa: alex dot falappa at gmail dot com
Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk
TranslatorJapanese TranslatorJapanese
......
% Use helvetica font instead of times roman
\RequirePackage{helvet}
\RequirePackage{sectsty}
\RequirePackage{tocloft}
\providecommand{\rmdefault}{phv}
\providecommand{\bfdefault}{bc}
\usepackage[T1]{fontenc}
% Setup fancy headings
\RequirePackage{fancyhdr}
\pagestyle{fancyplain}
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
\fancyhead[CE]{\fancyplain{}{}}
\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
\fancyhead[CO]{\fancyplain{}{}}
\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
\fancyfoot[LE]{\fancyplain{}{}}
\fancyfoot[CE]{\fancyplain{}{}}
\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
\fancyfoot[CO]{\fancyplain{}{}}
\fancyfoot[RO]{\fancyplain{}{}}
% Define caption that is also suitable in a table
\makeatletter
\def\doxyfigcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
...@@ -337,6 +337,8 @@ which will look as follows: ...@@ -337,6 +337,8 @@ which will look as follows:
| 10 | 10 | 10 | | 10 | 10 | 10 |
| 1000 | 1000 | 1000 | | 1000 | 1000 | 1000 |
For more complex tables in doxygen please have a look at: \ref tables
\subsection md_fenced Fenced Code Blocks \subsection md_fenced Fenced Code Blocks
Another feature defined by "Markdown Extra" is support for Another feature defined by "Markdown Extra" is support for
...@@ -437,7 +439,7 @@ details). ...@@ -437,7 +439,7 @@ details).
By default the name and title of the page are derived from the file name. By default the name and title of the page are derived from the file name.
If the file starts with a level 1 header however, it is used as the title If the file starts with a level 1 header however, it is used as the title
of the page. If you specify a label for the of the page. If you specify a label for the
header (as shown \ref md_header_id "here") doxygen will use that as the header (as shown in \ref md_header_id) doxygen will use that as the
page name. page name.
If the label is called `index` or `mainpage` doxygen will put the If the label is called `index` or `mainpage` doxygen will put the
...@@ -509,7 +511,7 @@ is noticeable: ...@@ -509,7 +511,7 @@ is noticeable:
code code
In this case Markdown will put the word code in a code block, In this case Markdown will put the word code in a code block,
whereas Doxygen will treat it as normal text, since although the absolute whereas doxygen will treat it as normal text, since although the absolute
indentation is 4, the indentation with respect to the previous paragraph indentation is 4, the indentation with respect to the previous paragraph
is only 1. is only 1.
......
...@@ -2,19 +2,19 @@ ...@@ -2,19 +2,19 @@
\addindex perlmod \addindex perlmod
<p>Since version 1.2.18, Doxygen can generate a new output format we <p>Since version 1.2.18, doxygen can generate a new output format we
have called the &quot;Perl Module output format&quot;. It has been have called the &quot;Perl Module output format&quot;. It has been
designed as an intermediate format that can be used to generate new designed as an intermediate format that can be used to generate new
and customized output without having to modify the Doxygen source. and customized output without having to modify the doxygen source.
Therefore, its purpose is similar to the XML output format that can be Therefore, its purpose is similar to the XML output format that can be
also generated by Doxygen. The XML output format is more standard, also generated by doxygen. The XML output format is more standard,
but the Perl Module output format is possibly simpler and easier to but the Perl Module output format is possibly simpler and easier to
use. use.
<p>The Perl Module output format is still experimental at the moment <p>The Perl Module output format is still experimental at the moment
and could be changed in incompatible ways in future versions, although and could be changed in incompatible ways in future versions, although
this should not be very probable. It is also lacking some features of this should not be very probable. It is also lacking some features of
other Doxygen backends. However, it can be already used to generate other doxygen backends. However, it can be already used to generate
useful output, as shown by the Perl Module-based \LaTeX generator. useful output, as shown by the Perl Module-based \LaTeX generator.
<p>Please report any bugs or problems you find in the Perl Module <p>Please report any bugs or problems you find in the Perl Module
...@@ -24,7 +24,7 @@ doxygen-develop mailing list. Suggestions are welcome as well. ...@@ -24,7 +24,7 @@ doxygen-develop mailing list. Suggestions are welcome as well.
\section using_perlmod_fmt Usage \section using_perlmod_fmt Usage
<p>When the \ref cfg_generate_perlmod "GENERATE_PERLMOD" tag is enabled in the Doxyfile, <p>When the \ref cfg_generate_perlmod "GENERATE_PERLMOD" tag is enabled in the Doxyfile,
running Doxygen generates a number of files in the `perlmod/` running doxygen generates a number of files in the `perlmod/`
subdirectory of your output directory. These files are the following: subdirectory of your output directory. These files are the following:
<ul> <ul>
...@@ -48,12 +48,12 @@ file is intended to be included by your own Makefile. ...@@ -48,12 +48,12 @@ file is intended to be included by your own Makefile.
</ul> </ul>
<p>To make use of the documentation stored in DoxyDocs.pm you can use <p>To make use of the documentation stored in DoxyDocs.pm you can use
one of the default Perl Module-based generators provided by Doxygen one of the default Perl Module-based generators provided by doxygen
(at the moment this includes the Perl Module-based \LaTeX generator, (at the moment this includes the Perl Module-based \LaTeX generator,
see \ref perlmod_latex "below") or write your own customized see \ref perlmod_latex "below") or write your own customized
generator. This should not be too hard if you have some knowledge of generator. This should not be too hard if you have some knowledge of
Perl and it's the main purpose of including the Perl Module backend in Perl and it's the main purpose of including the Perl Module backend in
Doxygen. See \ref doxydocs_format "below" for details on how doxygen. See \ref doxydocs_format "below" for details on how
to do this. to do this.
<-- want to use \LaTeX but not possible in headings --> <-- want to use \LaTeX but not possible in headings -->
...@@ -114,7 +114,7 @@ packages used by `doxylatex.tex`. ...@@ -114,7 +114,7 @@ packages used by `doxylatex.tex`.
\ref cfg_perlmod_latex "PERLMOD_LATEX" tags to \ref cfg_perlmod_latex "PERLMOD_LATEX" tags to
\c YES in your Doxyfile. \c YES in your Doxyfile.
<li>Run Doxygen on your Doxyfile: <li>Run doxygen on your Doxyfile:
<pre>doxygen Doxyfile</pre> <pre>doxygen Doxyfile</pre>
...@@ -137,7 +137,7 @@ in DVI format. ...@@ -137,7 +137,7 @@ in DVI format.
\section doxydocs_format Documentation format. \section doxydocs_format Documentation format.
<p>The Perl Module documentation generated by Doxygen is stored in <p>The Perl Module documentation generated by doxygen is stored in
`DoxyDocs.pm`. This is a very simple Perl module that contains `DoxyDocs.pm`. This is a very simple Perl module that contains
only two statements: an assignment to the variable `$doxydocs` and only two statements: an assignment to the variable `$doxydocs` and
the customary `1;` statement which usually ends Perl modules. the customary `1;` statement which usually ends Perl modules.
...@@ -183,12 +183,12 @@ present in \ref perlmod_tree "this page". ...@@ -183,12 +183,12 @@ present in \ref perlmod_tree "this page".
<p>You might be interested in processing the documentation contained <p>You might be interested in processing the documentation contained
in `DoxyDocs.pm` without needing to take into account the in `DoxyDocs.pm` without needing to take into account the
semantics of each node of the documentation tree. For this purpose, semantics of each node of the documentation tree. For this purpose,
Doxygen generates a `DoxyModel.pm` file which contains a data doxygen generates a `DoxyModel.pm` file which contains a data
structure describing the type and children of each node in the structure describing the type and children of each node in the
documentation tree. documentation tree.
<p>The rest of this section is to be written yet, but in the meantime <p>The rest of this section is to be written yet, but in the meantime
you can look at the Perl scripts generated by Doxygen (such as you can look at the Perl scripts generated by doxygen (such as
`doxylatex.pl` or `doxytemplate-latex.pl`) to get an idea on `doxylatex.pl` or `doxytemplate-latex.pl`) to get an idea on
how to use `DoxyModel.pm`. how to use `DoxyModel.pm`.
......
...@@ -24,7 +24,7 @@ detailed usage information. ...@@ -24,7 +24,7 @@ detailed usage information.
Optionally, the executable \c doxywizard can be used, which is a Optionally, the executable \c doxywizard can be used, which is a
\ref doxywizard_usage "graphical front-end" for editing the configuration file \ref doxywizard_usage "graphical front-end" for editing the configuration file
that is used by doxygen and for running doxygen in a graphical environment. that is used by doxygen and for running doxygen in a graphical environment.
For Mac OS X doxywizard will be started by clicking on the Doxygen application For Mac OS X doxywizard will be started by clicking on the doxygen application
icon. icon.
The following figure shows the relation between the tools and the flow The following figure shows the relation between the tools and the flow
...@@ -37,7 +37,7 @@ tries to be complete): ...@@ -37,7 +37,7 @@ tries to be complete):
\section step0 Step 0: Check if doxygen supports your programming language \section step0 Step 0: Check if doxygen supports your programming language
First, assure that your programming language has a reasonable chance of being First, assure that your programming language has a reasonable chance of being
recognized by Doxygen. These languages are supported by default: C, C++, C#, recognized by doxygen. These languages are supported by default: C, C++, C#,
Objective-C, IDL, Java, VHDL, PHP, Python, Tcl, Fortran, and D. It Objective-C, IDL, Java, VHDL, PHP, Python, Tcl, Fortran, and D. It
is possible to configure certain file type extensions to use certain parsers: is possible to configure certain file type extensions to use certain parsers:
see the \ref cfg_extension_mapping "Configuration/ExtensionMappings" for details. see the \ref cfg_extension_mapping "Configuration/ExtensionMappings" for details.
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
/*! \page tables Including tables
Doxygen supports two ways to put tables in the documentation.
The easiest is to use the Markdown format as shown in @ref markdown_extra section @ref md_tables.
Although this format is easy to use and read, it is also rather limited.
It supports only a simple grid of cells, while each cell is a
single line of plain text.
For more complex tables the HTML syntax can be used. Doxygen
will process such tables and translate them to the various output formats
(at least for the formats that do support tables such as HTML and \LaTeX).
Here is an example of a complex table:
\verbatim
<table>
<caption id="multi_row">Complex table</caption>
<tr><th>Column 1 <th>Column 2 <th>Column 3
<tr><td rowspan="2">cell row=1+2,col=1<td>cell row=1,col=2<td>cell row=1,col=3
<tr><td rowspan="2">cell row=2+3,col=2 <td>cell row=2,col=3
<tr><td>cell row=3,col=1 <td rowspan="2">cell row=3+4,col=3
<tr><td colspan="2">cell row=4,col=1+2
<tr><td>cell row=5,col=1 <td colspan="2">cell row=5,col=2+3
<tr><td colspan="2" rowspan="2">cell row=6+7,col=1+2 <td>cell row=6,col=3
<tr> <td>cell row=7,col=3
<tr><td>cell row=8,col=1 <td>cell row=8,col=2\n
<table>
<tr><td>Inner cell row=1,col=1<td>Inner cell row=1,col=2
<tr><td>Inner cell row=2,col=1<td>Inner cell row=2,col=2
</table>
<td>cell row=8,col=3
<ul>
<li>Item 1
<li>Item 2
</ul>
</table>
\endverbatim
It has a caption, table heading, various row and column spans,
a nested table as one of the cells, and a item list in another cell.
Note that the end tags (like `</td>`) are left out in the example above.
This is allowed, and in the HTML output doxygen will add the end tags again.
The output will look as follows:
<table>
<caption id="multi_row">Complex table</caption>
<tr><th>Column 1 <th>Column 2 <th>Column 3
<tr><td rowspan="2">cell row=1+2,col=1<td>cell row=1,col=2<td>cell row=1,col=3
<tr><td rowspan="2">cell row=2+3,col=2 <td>cell row=2,col=3
<tr><td>cell row=3,col=1 <td rowspan="2">cell row=3+4,col=3
<tr><td colspan="2">cell row=4,col=1+2
<tr><td>cell row=5,col=1 <td colspan="2">cell row=5,col=2+3
<tr><td colspan="2" rowspan="2">cell row=6+7,col=1+2 <td>cell row=6,col=3
<tr> <td>cell row=7,col=3
<tr><td>cell row=8,col=1 <td>cell row=8,col=2\n
<table>
<tr><td>Inner cell row=1,col=1<td>Inner cell row=1,col=2
<tr><td>Inner cell row=2,col=1<td>Inner cell row=2,col=2
</table>
<td>cell row=8,col=3
<ul>
<li>Item 1
<li>Item 2
</ul>
</table>
One can refer to the caption of the table using \ref cmdref "\\ref" using the caption's
id as the label.
\htmlonly
Go to the <a href="diagrams.html">next</a> section or return to the
<a href="index.html">index</a>.
\endhtmlonly
*/
This diff is collapsed.
...@@ -81,9 +81,9 @@ ...@@ -81,9 +81,9 @@
\section howtohelp How to Help \section howtohelp How to Help
The development of Doxygen highly depends on your input! The development of doxygen highly depends on your input!
If you are trying Doxygen let me know what you think of it (do you If you are trying doxygen let me know what you think of it (do you
miss certain features?). Even if you decide not to use it, please let me miss certain features?). Even if you decide not to use it, please let me
know why. know why.
......
This diff is collapsed.
PROJECT_NAME = "AfterDocs" PROJECT_NAME = "AfterDocs"
OUTPUT_DIRECTORY = ../html/examples/afterdoc OUTPUT_DIRECTORY = ../html/examples/afterdoc
GENERATE_LATEX = NO GENERATE_LATEX = YES
GENERATE_MAN = NO GENERATE_MAN = NO
GENERATE_RTF = NO GENERATE_RTF = NO
CASE_SENSE_NAMES = NO CASE_SENSE_NAMES = NO
INPUT = afterdoc.h INPUT = afterdoc.h
STRIP_CODE_COMMENTS = NO
QUIET = YES QUIET = YES
JAVADOC_AUTOBRIEF = YES JAVADOC_AUTOBRIEF = YES
SEARCHENGINE = NO SEARCHENGINE = NO
COMPACT_LATEX = YES
LATEX_HIDE_INDICES = YES
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
void main() void main()
{ {
Test t; Example_Test t;
t.example(); t.example();
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File mode changed from 100644 to 100755
This diff is collapsed.
This diff is collapsed.
File mode changed from 100644 to 100755
This diff is collapsed.
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
This diff is collapsed.
File mode changed from 100644 to 100755
This diff is collapsed.
This diff is collapsed.
File mode changed from 100644 to 100755
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File mode changed from 100644 to 100755
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment