Commit 5d7d90c3 authored by dimitri's avatar dimitri

Release-1.3-rc2-20030126

parent afb84237
......@@ -107,7 +107,7 @@ BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
......
DOXYGEN Version 1.3-rc2-20030119
DOXYGEN Version 1.3-rc2-20030126
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (19 January 2003)
Dimitri van Heesch (26 January 2003)
DOXYGEN Version 1.3_rc2_20030119
DOXYGEN Version 1.3_rc2_20030126
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (19 January 2003)
Dimitri van Heesch (dimitri@stack.nl) (26 January 2003)
1.3-rc2-20030119
1.3-rc2-20030126
......@@ -33,8 +33,9 @@ class LinkedTextImpl;
class LinkedTextHandler;
class DocHandler;
struct MemberReference : public IMemberReference
class MemberReference : public IMemberReference
{
public:
virtual ~MemberReference() {}
virtual IMember *member() const;
virtual const IString *memberName() const { return &m_name; }
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_rc2_20030119
Version: 1.3_rc2_20030126
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -2195,10 +2195,10 @@ void ClassDef::determineIntfUsageRelation()
}
#endif
PackageDef *ClassDef::packageDef() const
{
return m_fileDef ? m_fileDef->packageDef() : 0;
}
//PackageDef *ClassDef::packageDef() const
//{
// return m_fileDef ? m_fileDef->packageDef() : 0;
//}
QCString ClassDef::compoundTypeString() const
{
......
......@@ -138,7 +138,7 @@ class ClassDef : public Definition
/*! Returns the Java package this class is in or 0 if not applicable.
*/
PackageDef *packageDef() const;
//PackageDef *packageDef() const;
MemberDef *getMemberByName(const QCString &);
......
......@@ -1966,10 +1966,9 @@ void Config::create()
"If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n"
"generated containing a tree-like index structure (just like the one that \n"
"is generated for HTML Help). For this to work a browser that supports \n"
"JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, \n"
"or Internet explorer 4.0+). Note that for large projects the tree generation \n"
"can take a very long time. In such cases it is better to disable this feature. \n"
"Windows users are probably better off using the HTML help feature. \n",
"JavaScript, DHTML, CSS and frames is required (for instance Mozilla, \n"
"Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n"
"probably better off using the HTML help feature. \n",
FALSE
);
cb->addDependency("GENERATE_HTML");
......
......@@ -664,3 +664,16 @@ const QList<ListItemInfo> *Definition::specialListItems() const
return m_specialListItems;
}
QCString Definition::convertNameToFile(const char *name,bool allowDots) const
{
if (!m_ref.isEmpty())
{
return name;
}
else
{
return ::convertNameToFile(name,allowDots);
}
}
......@@ -132,6 +132,7 @@ class Definition
void makePartOfGroup(GroupDef *gd);
GroupList *partOfGroups() const { return m_partOfGroups; }
QCString convertNameToFile(const char *name,bool allowDots=FALSE) const;
protected:
int m_startBodyLine; // line number of the start of the definition
......
......@@ -225,7 +225,7 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type)
return result;
}
/*! Collects the parameters found with @param or @retval commands
/*! Collects the parameters found with \@param or \@retval commands
* in a global list g_paramsFound. If \a isParam is set to TRUE
* and the parameter is not an actual parameter of the current
* member g_memberDef, than a warning is raised (unless warnings
......
......@@ -35,13 +35,18 @@ void FileName::generateDiskNames()
//QCString commonPrefix;
FileDef *fd=first();
int count=0;
while (fd) { if (!fd->isReference()) count++; fd=next(); }
while (fd)
{
if (!fd->isReference()) count++;
fd=next();
}
if (count==1)
{
fd=first();
// skip references
while (fd && fd->isReference()) fd=next();
// name if unique, so diskname is simply the name
//printf("!!!!!!!! Unique disk name=%s for fd=%s\n",name.data(),fd->diskname.data());
fd->diskname=name.copy();
}
else if (count>1) // multiple occurrences of the same file name
......@@ -84,6 +89,7 @@ void FileName::generateDiskNames()
{
QCString prefix = fd->path.right(fd->path.length()-j-1);
fd->setName(prefix+name);
//printf("!!!!!!!! non unique disk name=%s for fd=%s\n",(prefix+name).data(),fd->diskname.data());
fd->diskname=prefix+name;
}
fd=next();
......
/******************************************************************************
* ftvhelp.cpp,v 1.0 2000/09/06 16:09:00
*
* Kenney Wong <kwong@ea.com>
* Contributed by Kenney Wong <kwong@ea.com>
* Modified by Dimitri van Heesch (c) 2003
*
* Folder Tree View for offline help on browsers that do not support HTML Help.
* Uses the FTV structure from:
......@@ -20,10 +21,13 @@
#include "doxygen.h"
#include "language.h"
#define MAX_INDENT 1024
#if 0
const char treeview_data[]=
#include "treeview.h"
;
#endif
unsigned char ftv2blank_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
......@@ -329,6 +333,22 @@ struct ImageInfo
{ 0,0,0 }
};
struct FTVNode
{
FTVNode(bool dir,const char *r,const char *f,const char *a,const char *n)
: isLast(TRUE), isDir(dir),ref(r),file(f),anchor(a),name(n),
parent(0) { children.setAutoDelete(TRUE); }
bool isLast;
bool isDir;
QCString ref;
QCString file;
QCString anchor;
QCString name;
QList<FTVNode> children;
FTVNode *parent;
};
#if 0
static void generateFolderTreeViewData()
{
// Generate tree view script
......@@ -437,6 +457,7 @@ static void generateFolderTreeViewData()
p++;
}
}
#endif
//----------------------------------------------------------------------------
......@@ -449,8 +470,16 @@ FTVHelp *FTVHelp::m_theInstance = 0;
FTVHelp::FTVHelp()
{
/* initial depth */
m_dc = 0;
//m_dc = 0;
m_cf = 0;
m_indentNodes = new QList<FTVNode>[MAX_INDENT];
m_indentNodes[0].setAutoDelete(TRUE);
m_indent=0;
}
FTVHelp::~FTVHelp()
{
delete[] m_indentNodes;
}
/*! return a reference to the one and only instance of this class.
......@@ -501,7 +530,8 @@ void FTVHelp::finalize()
m_cts.unsetDevice();
m_cf->close();
delete m_cf;
generateFolderTreeViewData();
generateTreeView();
//generateFolderTreeViewData();
}
/*! Increase the level of the contents hierarchy.
......@@ -511,7 +541,9 @@ void FTVHelp::finalize()
int FTVHelp::incContentsDepth()
{
//int i; for (i=0;i<m_dc+1;i++) m_cts << " ";
return ++m_dc;
m_indent++;
ASSERT(m_indent<MAX_INDENT);
return m_indent;
}
/*! Decrease the level of the contents hierarchy.
......@@ -521,7 +553,16 @@ int FTVHelp::incContentsDepth()
int FTVHelp::decContentsDepth()
{
//int i; for (i=0;i<m_dc;i++) m_cts << " ";
return --m_dc;
m_indent--;
QList<FTVNode> *nl = &m_indentNodes[m_indent];
FTVNode *parent = nl->getLast();
QList<FTVNode> *children = &m_indentNodes[m_indent+1];
while (!children->isEmpty())
{
parent->children.append(children->take(0));
}
return m_indent;
}
/*! Add a list item to the contents file.
......@@ -538,6 +579,20 @@ void FTVHelp::addContentsItem(bool isDir,
const char *name
)
{
QList<FTVNode> *nl = &m_indentNodes[m_indent];
FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name);
if (!nl->isEmpty())
{
nl->getLast()->isLast=FALSE;
}
nl->append(newNode);
if (m_indent>0)
{
QList<FTVNode> *pnl = &m_indentNodes[m_indent-1];
newNode->parent = pnl->getLast();
}
#if 0
int i; for (i=0;i<m_dc;i++) m_cts << " ";
QCString parent;
QCString tagName = ref;
......@@ -582,5 +637,314 @@ void FTVHelp::addContentsItem(bool isDir,
}
}
m_cts << "\n";
#endif
}
static int folderId=1;
void FTVHelp::generateIndent(QTextStream &t, FTVNode *n,int level)
{
if (n->parent)
{
generateIndent(t,n->parent,level+1);
}
// from the root up to node n do...
if (level==0) // item before a dir or document
{
if (n->isLast)
{
if (n->isDir)
{
t << "<img src=\"ftv2plastnode.png\" onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
}
else
{
t << "<img src=\"ftv2lastnode.png\"/>";
}
}
else
{
if (n->isDir)
{
t << "<img src=\"ftv2pnode.png\" onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
}
else
{
t << "<img src=\"ftv2node.png\"/>";
}
}
}
else // item at another level
{
if (n->isLast)
{
t << "<img src=\"ftv2blank.png\"/>";
}
else
{
t << "<img src=\"ftv2vertline.png\"/>";
}
}
}
void FTVHelp::generateLink(QTextStream &t,FTVNode *n)
{
QCString *dest;
if (!n->ref.isEmpty()) // link to entity imported via tag file
{
t << "<a class=\"elRef\" ";
t << "doxygen=\"" << n->ref << ":";
if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/";
t << "\" ";
}
else // local link
{
t << "<a class=\"el\" ";
}
t << "href=\"";
if (!n->ref.isEmpty())
{
if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/";
}
if (!n->file.isEmpty()) t << n->file << Doxygen::htmlFileExtension;
if (!n->anchor.isEmpty()) t << "#" << n->anchor;
t << "\" target=\"basefrm\">";
t << n->name;
t << "</a>";
if (!n->ref.isEmpty())
{
t << "&nbsp;[external]";
}
}
void FTVHelp::generateTree(QTextStream &t, const QList<FTVNode> &nl,int level)
{
QCString spaces;
spaces.fill(' ',level*2+8);
QListIterator<FTVNode> nli(nl);
FTVNode *n;
for (nli.toFirst();(n=nli.current());++nli)
{
t << spaces << "<p>";
generateIndent(t,n,0);
if (n->isDir)
{
t << "<img src=\"ftv2folderclosed.png\" onclick=\"toggleFolder('folder" << folderId << "', this)\"/>";
generateLink(t,n);
t << "</p>\n";
t << spaces << "<div id=\"folder" << folderId << "\">\n";
folderId++;
generateTree(t,n->children,level+1);
t << spaces << "</div>\n";
}
else
{
t << "<img src=\"ftv2doc.png\"/>";
generateLink(t,n);
t << "</p>\n";
}
}
}
void FTVHelp::generateTreeView()
{
// Generate alternative index.html as a frame
QCString fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension;
QFile f;
f.setName(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
else
{
QTextStream t(&f);
#if QT_VERSION >= 200
t.setEncoding(QTextStream::Latin1);
#endif
t << "<html><head>";
t << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset="
<< theTranslator->idLanguageCharset() << "\">\n";
t << "<title>";
if (Config_getString("PROJECT_NAME").isEmpty())
{
t << "Doxygen Documentation";
}
else
{
t << Config_getString("PROJECT_NAME");
}
t << "</title></head>" << endl;
t << "<frameset cols=\"" << Config_getInt("TREEVIEW_WIDTH") << ",*\">" << endl;
t << " <frame src=\"tree" << Doxygen::htmlFileExtension << "\" name=\"treefrm\">" << endl;
t << " <frame src=\"main" << Doxygen::htmlFileExtension << "\" name=\"basefrm\">" << endl;
t << "</frameset>" << endl;
t << "</html>" << endl;
f.close();
}
// Generate tree view frame
fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension;
f.setName(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
else
{
QTextStream t(&f);
t << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
t << " <head>\n";
t << " <meta http-equiv=\"Content-Type\" content=\"text/xhtml; charset=ISO-8859-1\" />\n";
t << " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n";
t << " <meta http-equiv=\"Content-Language\" content=\"en\" />\n";
t << " <link rel=\"stylesheet\" href=\"";
QCString cssname=Config_getString("HTML_STYLESHEET");
if (cssname.isEmpty())
{
t << "doxygen.css";
}
else
{
QFileInfo cssfi(cssname);
if (!cssfi.exists())
{
err("Error: user specified HTML style sheet file does not exist!\n");
}
t << cssfi.fileName();
}
t << "\">" << endl;
t << " <title>Test</title>\n";
t << " <style type=\"text/css\">\n";
t << " <!--\n";
t << " .directory { font-size: 10pt; font-weight: bold; }\n";
t << " .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }\n";
t << " .directory p { margin: 0px; white-space: nowrap; }\n";
t << " .directory div { display: none; margin: 0px; }\n";
t << " .directory img { vertical-align: middle; }\n";
t << " -->\n";
t << " </style>\n";
t << " <script type=\"text/javascript\">\n";
t << " <!-- // Hide script from old browsers\n";
t << " \n";
t << " function findChildNode(node, name) \n";
t << " {\n";
t << " var temp;\n";
t << " if (node == null) \n";
t << " {\n";
t << " return null;\n";
t << " } \n";
t << " node = node.firstChild;\n";
t << " while (node != null) \n";
t << " {\n";
t << " if (node.nodeName == name) \n";
t << " {\n";
t << " return node;\n";
t << " }\n";
t << " temp = findChildNode(node, name);\n";
t << " if (temp != null) \n";
t << " {\n";
t << " return temp;\n";
t << " }\n";
t << " node = node.nextSibling;\n";
t << " }\n";
t << " return null;\n";
t << " }\n";
t << "\n";
t << " function toggleFolder(id, imageNode) \n";
t << " {\n";
t << " var folder = document.getElementById(id);\n";
t << " var l = 0;\n";
t << " var vl = \"ftv2vertline.png\";\n";
t << " if (imageNode != null && imageNode.nodeName != \"IMG\") \n";
t << " {\n";
t << " imageNode = findChildNode(imageNode, \"IMG\");\n";
t << " if (imageNode!=null) l = imageNode.src.length;\n";
t << " }\n";
t << " if (folder == null) \n";
t << " {\n";
t << " } \n";
t << " else if (folder.style.display == \"block\") \n";
t << " {\n";
t << " while (imageNode != null && \n";
t << " imageNode.src.substring(l-vl.length,l) == vl)\n";
t << " {\n";
t << " imageNode = imageNode.nextSibling;\n";
t << " l = imageNode.src.length;\n";
t << " }\n";
t << " if (imageNode != null) \n";
t << " {\n";
t << " l = imageNode.src.length;\n";
t << " imageNode.nextSibling.src = \"ftv2folderclosed.png\";\n";
t << " if (imageNode.src.substring(l-13,l) == \"ftv2mnode.png\")\n";
t << " {\n";
t << " imageNode.src = \"ftv2pnode.png\";\n";
t << " }\n";
t << " else if (imageNode.src.substring(l-17,l) == \"ftv2mlastnode.png\")\n";
t << " {\n";
t << " imageNode.src = \"ftv2plastnode.png\";\n";
t << " }\n";
t << " }\n";
t << " folder.style.display = \"none\";\n";
t << " } \n";
t << " else \n";
t << " {\n";
t << " while (imageNode != null && \n";
t << " imageNode.src.substring(l-vl.length,l) == vl)\n";
t << " {\n";
t << " imageNode = imageNode.nextSibling;\n";
t << " l = imageNode.src.length;\n";
t << " }\n";
t << " if (imageNode != null) \n";
t << " {\n";
t << " l = imageNode.src.length;\n";
t << " imageNode.nextSibling.src = \"ftv2folderopen.png\";\n";
t << " if (imageNode.src.substring(l-13,l) == \"ftv2pnode.png\")\n";
t << " {\n";
t << " imageNode.src = \"ftv2mnode.png\";\n";
t << " }\n";
t << " else if (imageNode.src.substring(l-17,l) == \"ftv2plastnode.png\")\n";
t << " {\n";
t << " imageNode.src = \"ftv2mlastnode.png\";\n";
t << " }\n";
t << " }\n";
t << " folder.style.display = \"block\";\n";
t << " }\n";
t << " }\n";
t << "\n";
t << " // End script hiding --> \n";
t << " </script>\n";
t << " </head>\n";
t << "\n";
t << " <body bgcolor=\"#ffffff\">\n";
t << " <div class=\"directory\">\n";
t << " <h3>Root</h3>\n";
t << " <div style=\"display: block;\">\n";
generateTree(t,m_indentNodes[0],0);
t << " </div>\n";
t << " </div>\n";
t << " </body>\n";
t << "</html>\n";
}
// Generate tree view images
ImageInfo *p = image_info;
while (p->name)
{
QCString fileName=Config_getString("HTML_OUTPUT")+"/"+p->name;
QFile f(fileName);
if (f.open(IO_WriteOnly))
f.writeBlock((char *)p->data,p->len);
else
{
fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data());
}
f.close();
p++;
}
}
......@@ -13,8 +13,10 @@
#include "qtbc.h"
#include <qtextstream.h>
#include <qlist.h>
class QFile;
struct FTVNode;
/*! A class that generated the FTV Help specific file.
* This file is used in conjunction with additional FTV web browser code
......@@ -30,7 +32,7 @@ class FTVHelp
int incContentsDepth();
int decContentsDepth();
/*! return the current depth of the contents tree */
int contentsDepth() { return m_dc; }
int contentsDepth() const { return m_indent; }
void addContentsItem(bool isDir,
const char *ref,
const char *file,
......@@ -38,11 +40,18 @@ class FTVHelp
const char *name);
private:
void generateTreeView();
void generateTree(QTextStream &t,const QList<FTVNode> &nl,int level);
void generateIndent(QTextStream &t,FTVNode *n,int level);
void generateLink(QTextStream &t,FTVNode *n);
FTVHelp();
~FTVHelp();
QFile *m_cf;
QTextStream m_cts;
int m_dc;
//int m_dc;
static FTVHelp *m_theInstance;
QList<FTVNode> *m_indentNodes;
int m_indent;
};
#endif /* FTVHELP_H */
......
......@@ -597,14 +597,14 @@ void LatexDocVisitor::visitPost(DocHtmlTable *t)
}
else
{
m_t << "\\\\\\hline\n\\end{TabularC}\n";
m_t << "\\end{TabularC}\n";
}
}
void LatexDocVisitor::visitPre(DocHtmlCaption *)
{
if (m_hide) return;
m_t << "\\\\\\hline\n\\end{TabularC}\n\\centering\n\\caption{";
m_t << "\\end{TabularC}\n\\centering\n\\caption{";
}
void LatexDocVisitor::visitPost(DocHtmlCaption *)
......
......@@ -1853,6 +1853,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->reset();
}
}
<FindFields>"[" { // attribute list in IDL
squareCount=1;
lastSquareContext = YY_START;
BEGIN(SkipSquare);
}
/*
<FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); }
*/
......
......@@ -1054,6 +1054,7 @@ void TagFileParser::buildLists(Entry *root)
QString fullName = m_tagName+":"+tfi->path+stripPath(tfi->name);
fe->fileName = fullName;
//printf("new FileDef() filename=%s\n",tfi->filename.data());
FileDef *fd = new FileDef(m_tagName+":"+tfi->path,
tfi->name,m_tagName,
tfi->filename
......
......@@ -41,7 +41,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish
/*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset()
{
#ifdef _WIN32
#ifdef __CYGWIN__
return "Shift_JIS";
#else
return "euc-jp";
......@@ -61,13 +61,13 @@ class TranslatorJapaneseEn : public TranslatorEnglish
}
};
class TranslatorJapanese : public TranslatorAdapter_1_2_18
class TranslatorJapanese : public Translator
{
private:
/*! The decode() can change euc into sjis */
inline QCString decode(const QCString & sInput)
{
#ifdef _WIN32
#ifdef __CYGWIN__
return JapaneseEucToSjis(sInput);
#else
return sInput;
......@@ -83,7 +83,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_18
/*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset()
{
#ifdef _WIN32
#ifdef __CYGWIN__
return "Shift_JIS";
#else
return "euc-jp";
......@@ -1387,5 +1387,23 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_18
{
return "非推奨一覧";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.18
//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual QCString trEvents()
{
return "イベント";
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return "イベントの解説";
}
};
#endif
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