summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cite.cpp15
-rw-r--r--src/classdef.cpp22
-rw-r--r--src/classdef.h2
-rw-r--r--src/config.xml12
-rw-r--r--src/configoptions.cpp12
-rw-r--r--src/definition.cpp6
-rw-r--r--src/definition.h2
-rw-r--r--src/docsets.cpp4
-rw-r--r--src/docsets.h8
-rw-r--r--src/doctokenizer.l7
-rw-r--r--src/dot.cpp3
-rw-r--r--src/doxygen.bst4
-rw-r--r--src/doxygen.cpp88
-rw-r--r--src/doxygen_bst.h4
-rw-r--r--src/eclipsehelp.cpp6
-rw-r--r--src/eclipsehelp.h4
-rw-r--r--src/filedef.cpp155
-rw-r--r--src/filedef.h6
-rw-r--r--src/ftvhelp.cpp598
-rw-r--r--src/ftvhelp.h7
-rw-r--r--src/groupdef.cpp4
-rw-r--r--src/htmldocvisitor.cpp2
-rw-r--r--src/htmlgen.cpp204
-rw-r--r--src/htmlgen.h3
-rw-r--r--src/htmlhelp.cpp11
-rw-r--r--src/htmlhelp.h8
-rw-r--r--src/index.cpp668
-rw-r--r--src/index.h51
-rw-r--r--src/latexgen.cpp4
-rw-r--r--src/latexgen.h1
-rw-r--r--src/layout.cpp25
-rw-r--r--src/layout.h7
-rw-r--r--src/layout_default.h6
-rw-r--r--src/layout_default.xml6
-rw-r--r--src/libdoxygen.t3
-rw-r--r--src/mandocvisitor.cpp2
-rw-r--r--src/mangen.h1
-rw-r--r--src/memberlist.cpp35
-rw-r--r--src/namespacedef.cpp2
-rw-r--r--src/navtree.css6
-rw-r--r--src/navtree.js243
-rw-r--r--src/navtree_css.h6
-rw-r--r--src/navtree_js.h243
-rw-r--r--src/outputgen.h1
-rw-r--r--src/outputlist.h2
-rw-r--r--src/pagedef.cpp2
-rw-r--r--src/perlmodgen.cpp2
-rw-r--r--src/pre.l66
-rw-r--r--src/qhp.cpp3
-rw-r--r--src/qhp.h3
-rw-r--r--src/rtfgen.h1
-rw-r--r--src/svgpan.js19
-rw-r--r--src/svgpan_js.h19
-rw-r--r--src/tagreader.cpp2
-rw-r--r--src/translator_am.h2
-rw-r--r--src/translator_id.h761
-rw-r--r--src/xmlgen.cpp4
57 files changed, 1910 insertions, 1483 deletions
diff --git a/src/cite.cpp b/src/cite.cpp
index 018d9cf..d19dfc1 100644
--- a/src/cite.cpp
+++ b/src/cite.cpp
@@ -75,10 +75,11 @@ bool CiteDict::writeAux()
QFileInfo fi(bibFile); // open file (with .bib extension)
if (fi.exists())
{
- if (!copyFile(bibFile,m_baseFileName+"_"+bibFile))
+ if (!copyFile(bibFile,m_baseFileName+"_"+fi.fileName().data()))
{
return FALSE;
}
+ bibFile = fi.fileName().data();
if (bibFile.right(4)==".bib")
{
bibFile = bibFile.left(bibFile.length()-4);
@@ -300,9 +301,17 @@ void CiteDict::resolve()
{
QCString bibFile = bibdata;
if (!bibFile.isEmpty() && bibFile.right(4)!=".bib") bibFile+=".bib";
- if (!bibFile.isEmpty())
+ QFileInfo fi(bibFile);
+ if (fi.exists())
+ {
+ if (!bibFile.isEmpty())
+ {
+ copyFile(bibFile,latexOutputDir+fi.fileName().data());
+ }
+ }
+ else
{
- copyFile(bibFile,latexOutputDir+bibFile);
+ err("Error: bib file %s not found!\n",bibFile.data());
}
bibdata = citeDataList.next();
}
diff --git a/src/classdef.cpp b/src/classdef.cpp
index c69c300..f868037 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2023,7 +2023,7 @@ void ClassDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
- ol.writeString(md->name());
+ ol.writeString(convertToHtml(md->name()));
ol.writeString("</a>");
}
ol.writeString("</td></tr>\n");
@@ -2080,7 +2080,7 @@ void ClassDef::writeMemberList(OutputList &ol)
{
if (getOuterScope()!=Doxygen::globalScope)
{
- writeNavigationPath(ol);
+ writeNavigationPath(ol,FALSE);
}
ol.endQuickIndices();
}
@@ -3209,26 +3209,18 @@ QCString ClassDef::getOutputFileBase() const
// point to simple struct inside a group
return partOfGroups()->at(0)->getOutputFileBase();
}
- else if (inlineSimpleClasses && m_impl->isSimple && (scope=getOuterScope()) &&
- (
- (scope==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) ||
- scope->isLinkableInProject()
- )
- )
+ else if (inlineSimpleClasses && m_impl->isSimple && (scope=getOuterScope()))
{
- if (scope==Doxygen::globalScope) // simple struct embedded in file
+ if (scope==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) // simple struct embedded in file
{
return getFileDef()->getOutputFileBase();
}
- else // simple struct embedded in other container (namespace/group/class)
+ else if (scope->isLinkableInProject()) // simple struct embedded in other container (namespace/group/class)
{
return getOuterScope()->getOutputFileBase();
}
}
- else
- {
- return getXmlOutputFileBase();
- }
+ return getXmlOutputFileBase();
}
QCString ClassDef::getInstanceOutputFileBase() const
@@ -3754,7 +3746,7 @@ bool ClassDef::isLocal() const
return m_impl->isLocal;
}
-ClassSDict *ClassDef::getInnerClasses()
+ClassSDict *ClassDef::getClassSDict()
{
return m_impl->innerClasses;
}
diff --git a/src/classdef.h b/src/classdef.h
index 9673ec9..f2d5b3a 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -113,7 +113,7 @@ class ClassDef : public Definition
bool isLocal() const;
/*! returns the classes nested into this class */
- ClassSDict *getInnerClasses();
+ ClassSDict *getClassSDict();
/*! returns TRUE if this class has documentation */
bool hasDocumentation() const;
diff --git a/src/config.xml b/src/config.xml
index f9bd11c..8f4d36d 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -1004,9 +1004,11 @@ the directory name containing the HTML and XML files should also have
this name.
' defval='org.doxygen.Project' depends='GENERATE_ECLIPSEHELP'/>
<option type='bool' id='DISABLE_INDEX' docs='
-The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-top of each HTML page. The value NO (the default) enables the index and
-the value YES disables it.
+The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+at top of each HTML page. The value NO (the default) enables the index and
+the value YES disables it. Since the tabs have the same information as the
+navigation tree you can set this option to NO if you already set
+GENERATE_TREEVIEW to YES.
' defval='0' depends='GENERATE_HTML'/>
<option type='int' id='ENUM_VALUES_PER_LINE' docs='
The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
@@ -1021,7 +1023,9 @@ If the tag value is set to YES, a side panel will be generated
containing a tree-like index structure (just like the one that
is generated for HTML Help). For this to work a browser that supports
JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-Windows users are probably better off using the HTML help feature.
+Windows users are probably better off using the HTML help feature.
+Since the tree basically has the same information as the tab index you
+could consider to set DISABLE_INDEX to NO when enabling this option.
' depends='GENERATE_HTML'/>
<option type='bool' id='USE_INLINE_TREES' defval='0' docs='
By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
diff --git a/src/configoptions.cpp b/src/configoptions.cpp
index 61fc635..a632acb 100644
--- a/src/configoptions.cpp
+++ b/src/configoptions.cpp
@@ -1474,9 +1474,11 @@ void addConfigOptions(Config *cfg)
//----
cb = cfg->addBool(
"DISABLE_INDEX",
- "The DISABLE_INDEX tag can be used to turn on/off the condensed index at\n"
- "top of each HTML page. The value NO (the default) enables the index and\n"
- "the value YES disables it.",
+ "The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)\n"
+ "at top of each HTML page. The value NO (the default) enables the index and\n"
+ "the value YES disables it. Since the tabs have the same information as the\n"
+ "navigation tree you can set this option to NO if you already set\n"
+ "GENERATE_TREEVIEW to YES.",
FALSE
);
cb->addDependency("GENERATE_HTML");
@@ -1499,7 +1501,9 @@ void addConfigOptions(Config *cfg)
"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, DHTML, CSS and frames is required (i.e. any modern browser).\n"
- "Windows users are probably better off using the HTML help feature.",
+ "Windows users are probably better off using the HTML help feature.\n"
+ "Since the tree basically has the same information as the tab index you\n"
+ "could consider to set DISABLE_INDEX to NO when enabling this option.",
FALSE
);
cb->addDependency("GENERATE_HTML");
diff --git a/src/definition.cpp b/src/definition.cpp
index 2abd726..911e156 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -1329,7 +1329,7 @@ void Definition::writePathFragment(OutputList &ol) const
ol.writeString(" </li>\n");
}
-void Definition::writeNavigationPath(OutputList &ol) const
+void Definition::writeNavigationPath(OutputList &ol,bool showSearchInfo) const
{
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
@@ -1340,6 +1340,10 @@ void Definition::writeNavigationPath(OutputList &ol) const
{
ol.writeString("</div>\n");
}
+ if (showSearchInfo)
+ {
+ ol.writeSearchInfo();
+ }
ol.writeString(" <div id=\"nav-path\" class=\"navpath\">\n");
ol.writeString(" <ul>\n");
diff --git a/src/definition.h b/src/definition.h
index bf7f38c..a2f00f0 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -311,7 +311,7 @@ class Definition : public DefinitionIntf, public LockableObj
void writeSourceReffedBy(OutputList &ol,const char *scopeName);
void makePartOfGroup(GroupDef *gd);
void writePathFragment(OutputList &ol) const;
- void writeNavigationPath(OutputList &ol) const;
+ void writeNavigationPath(OutputList &ol,bool showSearchInfo=TRUE) const;
virtual void writeQuickMemberLinks(OutputList &,MemberDef *) const {}
virtual void writeSummaryLinks(OutputList &) {}
QCString pathFragment() const;
diff --git a/src/docsets.cpp b/src/docsets.cpp
index 7d7dd2e..fa86dc8 100644
--- a/src/docsets.cpp
+++ b/src/docsets.cpp
@@ -211,7 +211,9 @@ void DocSets::addContentsItem(bool isDir,
const char *name,
const char *ref,
const char *file,
- const char *anchor)
+ const char *anchor,
+ bool /* separateIndex */,
+ bool /* addToNavIndex */)
{
(void)isDir;
if (file && ref==0)
diff --git a/src/docsets.h b/src/docsets.h
index 0b6e9af..4a13d88 100644
--- a/src/docsets.h
+++ b/src/docsets.h
@@ -41,9 +41,11 @@ class DocSets : public IndexIntf
void decContentsDepth();
void addContentsItem(bool isDir,
const char *name,
- const char *ref = 0,
- const char *file = 0,
- const char *anchor = 0
+ const char *ref,
+ const char *file,
+ const char *anchor,
+ bool separateIndex,
+ bool addToNavIndex
);
void addIndexItem(Definition *context,MemberDef *md,const char *title);
void addIndexFile(const char *name);
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index f68fd40..9fb6b2c 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -294,6 +294,7 @@ NONWS [^ \t\r\n]
BLANK [ \t\r]
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
+CITEID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-:/]*
MAILADR [a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
OPTSTARS ("//"{BLANK}*)?"*"*{BLANK}*
LISTITEM {BLANK}*{OPTSTARS}"-"("#")?{WS}
@@ -538,6 +539,10 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
*/
goto find_rule;
}
+<St_Text>({ID}".")+{ID} {
+ g_token->name = yytext;
+ return TK_WORD;
+ }
<St_Para,St_Text>"operator"/{BLANK}*"<"[a-zA-Z_0-9]+">" { // Special case: word "operator" followed by a HTML command
// avoid interpretation as "operator <"
g_token->name = yytext;
@@ -735,7 +740,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
unput(*yytext);
return 0;
}
-<St_Cite>{LABELID} { // label to cite
+<St_Cite>{CITEID} { // label to cite
g_token->name=yytext;
return TK_WORD;
}
diff --git a/src/dot.cpp b/src/dot.cpp
index 27e559f..66ec988 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -609,14 +609,11 @@ static void checkDotResult(const QCString &imgName)
{
if (Config_getEnum("DOT_IMAGE_FORMAT")=="png")
{
- //QFile f(imgName);
FILE *f = fopen(imgName,"rb");
- //if (f.open(IO_ReadOnly))
if (f)
{
char data[4];
if (fread(data,1,4,f)==4)
- //if (f.readBlock(data,4)==4)
{
if (!(data[1]=='P' && data[2]=='N' && data[3]=='G'))
{
diff --git a/src/doxygen.bst b/src/doxygen.bst
index 23479fa..0dd6e28 100644
--- a/src/doxygen.bst
+++ b/src/doxygen.bst
@@ -153,8 +153,8 @@ FUNCTION {output.nonnull.original}
% closeinlinelink to be non-empty.
FUNCTION {possibly.setup.inlinelink}
{ makeinlinelink
- { "\rev CITEREF_" quote$ * url * quote$ * " [" * 'openinlinelink :=
- "]" 'closeinlinelink :=
+ { "<a href=" quote$ * url * quote$ * ">" * 'openinlinelink :=
+ "</a>" 'closeinlinelink :=
#0 'makeinlinelink := }
'skip$
if$ % makeinlinelink
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 240db24..85cb417 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1333,10 +1333,10 @@ void distributeClassGroupRelations()
{
//printf("Checking %s\n",cd->name().data());
// distribute the group to nested classes as well
- if (!cd->visited && cd->partOfGroups()!=0 && cd->getInnerClasses())
+ if (!cd->visited && cd->partOfGroups()!=0 && cd->getClassSDict())
{
//printf(" Candidate for merging\n");
- ClassSDict::Iterator ncli(*cd->getInnerClasses());
+ ClassSDict::Iterator ncli(*cd->getClassSDict());
ClassDef *ncd;
GroupDef *gd = cd->partOfGroups()->at(0);
for (ncli.toFirst();(ncd=ncli.current());++ncli)
@@ -1441,7 +1441,7 @@ static void processTagLessClasses(ClassDef *rootCd,
{
//printf("%d: processTagLessClasses %s\n",count,cd->name().data());
//printf("checking members for %s\n",cd->name().data());
- if (cd->getInnerClasses())
+ if (cd->getClassSDict())
{
MemberList *ml = cd->getMemberList(MemberList::pubAttribs);
if (ml)
@@ -1453,7 +1453,7 @@ static void processTagLessClasses(ClassDef *rootCd,
QCString type = md->typeString();
if (type.find("::@")!=-1) // member of tag less struct/union
{
- ClassSDict::Iterator it(*cd->getInnerClasses());
+ ClassSDict::Iterator it(*cd->getClassSDict());
ClassDef *icd;
for (it.toFirst();(icd=it.current());++it)
{
@@ -1501,9 +1501,9 @@ static void processTagLessClasses(ClassDef *rootCd,
static void findTagLessClasses(ClassDef *cd)
{
- if (cd->getInnerClasses())
+ if (cd->getClassSDict())
{
- ClassSDict::Iterator it(*cd->getInnerClasses());
+ ClassSDict::Iterator it(*cd->getClassSDict());
ClassDef *icd;
for (it.toFirst();(icd=it.current());++it)
{
@@ -7626,25 +7626,17 @@ static void generateClassDocs()
writeInstallScript();
}
- msg("Generating annotated compound index...\n");
- writeAnnotatedIndex(*g_outputList);
+ //msg("Generating annotated compound index...\n");
+ //writeAnnotatedIndex(*g_outputList);
- //if (Config_getBool("ALPHABETICAL_INDEX"))
- //{
- msg("Generating alphabetical compound index...\n");
- writeAlphabeticalIndex(*g_outputList);
- //}
+ //msg("Generating alphabetical compound index...\n");
+ //writeAlphabeticalIndex(*g_outputList);
- msg("Generating hierarchical class index...\n");
- writeHierarchicalIndex(*g_outputList);
+ //msg("Generating hierarchical class index...\n");
+ //writeHierarchicalIndex(*g_outputList);
- msg("Generating member index...\n");
- writeClassMemberIndex(*g_outputList);
-
- if (Doxygen::exampleSDict->count()>0)
- {
- msg("Generating example index...\n");
- }
+ //msg("Generating member index...\n");
+ //writeClassMemberIndex(*g_outputList);
generateClassList(*Doxygen::classSDict);
generateClassList(*Doxygen::hiddenClasses);
@@ -8516,7 +8508,7 @@ static void generateGroupDocs()
static void generateNamespaceDocs()
{
- writeNamespaceIndex(*g_outputList);
+ //writeNamespaceIndex(*g_outputList);
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
NamespaceDef *nd;
@@ -10749,11 +10741,11 @@ void generateOutput()
// count the number of documented elements in the lists we have built.
// If the result is 0 we do not generate the lists and omit the
// corresponding links in the index.
- msg("Generating index page...\n");
- writeIndex(*g_outputList);
+ //msg("Generating index page...\n");
+ //writeIndex(*g_outputList);
- msg("Generating page index...\n");
- writePageIndex(*g_outputList);
+ //msg("Generating page index...\n");
+ //writePageIndex(*g_outputList);
msg("Generating example documentation...\n");
generateExampleDocs();
@@ -10773,23 +10765,23 @@ void generateOutput()
msg("Generating group documentation...\n");
generateGroupDocs();
- msg("Generating group index...\n");
- writeGroupIndex(*g_outputList);
+ //msg("Generating group index...\n");
+ //writeGroupIndex(*g_outputList);
msg("Generating class documentation...\n");
generateClassDocs();
- if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
- {
- msg("Generating graphical class hierarchy...\n");
- writeGraphicalClassHierarchy(*g_outputList);
- }
+ //if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
+ //{
+ // msg("Generating graphical class hierarchy...\n");
+ // writeGraphicalClassHierarchy(*g_outputList);
+ //}
msg("Generating namespace index...\n");
generateNamespaceDocs();
- msg("Generating namespace member index...\n");
- writeNamespaceMemberIndex(*g_outputList);
+ //msg("Generating namespace member index...\n");
+ //writeNamespaceMemberIndex(*g_outputList);
if (Config_getBool("GENERATE_LEGEND"))
{
@@ -10803,20 +10795,20 @@ void generateOutput()
generateDirDocs(*g_outputList);
}
- msg("Generating file index...\n");
- writeFileIndex(*g_outputList);
+ //msg("Generating file index...\n");
+ //writeFileIndex(*g_outputList);
- if (Config_getBool("SHOW_DIRECTORIES"))
- {
- msg("Generating directory index...\n");
- writeDirIndex(*g_outputList);
- }
+ //if (Config_getBool("SHOW_DIRECTORIES"))
+ //{
+ // msg("Generating directory index...\n");
+ // writeDirIndex(*g_outputList);
+ //}
- msg("Generating example index...\n");
- writeExampleIndex(*g_outputList);
+ //msg("Generating example index...\n");
+ //writeExampleIndex(*g_outputList);
- msg("Generating file member index...\n");
- writeFileMemberIndex(*g_outputList);
+ //msg("Generating file member index...\n");
+ //writeFileMemberIndex(*g_outputList);
//writeDirDependencyGraph(Config_getString("HTML_OUTPUT"));
@@ -10837,6 +10829,8 @@ void generateOutput()
// FTVHelp::getInstance()->finalize();
//}
+ writeIndexHierarchy(*g_outputList);
+
msg("finalizing index lists...\n");
Doxygen::indexList.finalize();
diff --git a/src/doxygen_bst.h b/src/doxygen_bst.h
index 7acf63e..6298713 100644
--- a/src/doxygen_bst.h
+++ b/src/doxygen_bst.h
@@ -153,8 +153,8 @@
"% closeinlinelink to be non-empty.\n"
"FUNCTION {possibly.setup.inlinelink}\n"
"{ makeinlinelink\n"
-" { \"\\rev CITEREF_\" quote$ * url * quote$ * \" [\" * 'openinlinelink :=\n"
-" \"]\" 'closeinlinelink :=\n"
+" { \"<a href=\" quote$ * url * quote$ * \">\" * 'openinlinelink :=\n"
+" \"</a>\" 'closeinlinelink :=\n"
" #0 'makeinlinelink := }\n"
" 'skip$\n"
" if$ % makeinlinelink\n"
diff --git a/src/eclipsehelp.cpp b/src/eclipsehelp.cpp
index feea0ba..9f708bc 100644
--- a/src/eclipsehelp.cpp
+++ b/src/eclipsehelp.cpp
@@ -155,13 +155,17 @@ void EclipseHelp::decContentsDepth()
* @param ref URL of the item
* @param file Name of a file which the item is defined in (without extension)
* @param anchor Name of an anchor of the item.
+ * @param separateIndex not used.
+ * @param addToNavIndex not used.
*/
void EclipseHelp::addContentsItem(
bool /* isDir */,
const char *name,
const char * /* ref */,
const char *file,
- const char *anchor)
+ const char *anchor,
+ bool /* separateIndex */,
+ bool /* addToNavIndex */)
{
// -- write the topic tag
closedTag();
diff --git a/src/eclipsehelp.h b/src/eclipsehelp.h
index bfc6d60..7be3502 100644
--- a/src/eclipsehelp.h
+++ b/src/eclipsehelp.h
@@ -49,8 +49,8 @@ class EclipseHelp : public IndexIntf
virtual void finalize();
virtual void incContentsDepth();
virtual void decContentsDepth();
- virtual void addContentsItem(bool isDir, const char *name, const char *ref = 0,
- const char *file = 0, const char *anchor = 0);
+ virtual void addContentsItem(bool isDir, const char *name, const char *ref,
+ const char *file, const char *anchor,bool separateIndex,bool addToNavIndex);
virtual void addIndexItem(Definition *context,MemberDef *md,const char *title);
virtual void addIndexFile(const char *name);
virtual void addImageFile(const char *name);
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 0c482d8..04ec5ae 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -261,71 +261,74 @@ void FileDef::writeIncludeFiles(OutputList &ol)
IncludeInfo *ii;
for (;(ii=ili.current());++ili)
{
- FileDef *fd=ii->fileDef;
- bool isIDLorJava = FALSE;
- if (fd)
+ if (!ii->indirect)
{
- SrcLangExt lang = fd->getLanguage();
- isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
- }
- ol.startTypewriter();
- if (isIDLorJava) // IDL/Java include
- {
- ol.docify("import ");
- }
- else if (ii->imported) // Objective-C include
- {
- ol.docify("#import ");
- }
- else // C/C++ include
- {
- ol.docify("#include ");
- }
- if (ii->local || isIDLorJava)
- ol.docify("\"");
- else
- ol.docify("<");
- ol.disable(OutputGenerator::Html);
- ol.docify(ii->includeName);
- ol.enableAll();
- ol.disableAllBut(OutputGenerator::Html);
-
- // Here we use the include file name as it appears in the file.
- // we could also we the name as it is used within doxygen,
- // then we should have used fd->docName() instead of ii->includeName
- if (fd && fd->isLinkable())
- {
- ol.writeObjectLink(fd->getReference(),
- fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
- 0,ii->includeName);
- if (!Config_getString("GENERATE_TAGFILE").isEmpty() && !fd->isReference())
+ FileDef *fd=ii->fileDef;
+ bool isIDLorJava = FALSE;
+ if (fd)
{
- const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
- const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
- Doxygen::tagFile << " <includes id=\""
- << convertToXML(fd->getOutputFileBase()) << "\" "
- << "name=\"" << convertToXML(fd->name()) << "\" "
- << "local=\"" << locStr << "\" "
- << "imported=\"" << impStr << "\">"
- << convertToXML(ii->includeName)
- << "</includes>"
- << endl;
+ SrcLangExt lang = fd->getLanguage();
+ isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
}
- }
- else
- {
+ ol.startTypewriter();
+ if (isIDLorJava) // IDL/Java include
+ {
+ ol.docify("import ");
+ }
+ else if (ii->imported) // Objective-C include
+ {
+ ol.docify("#import ");
+ }
+ else // C/C++ include
+ {
+ ol.docify("#include ");
+ }
+ if (ii->local || isIDLorJava)
+ ol.docify("\"");
+ else
+ ol.docify("<");
+ ol.disable(OutputGenerator::Html);
ol.docify(ii->includeName);
+ ol.enableAll();
+ ol.disableAllBut(OutputGenerator::Html);
+
+ // Here we use the include file name as it appears in the file.
+ // we could also we the name as it is used within doxygen,
+ // then we should have used fd->docName() instead of ii->includeName
+ if (fd && fd->isLinkable())
+ {
+ ol.writeObjectLink(fd->getReference(),
+ fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
+ 0,ii->includeName);
+ if (!Config_getString("GENERATE_TAGFILE").isEmpty() && !fd->isReference())
+ {
+ const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
+ const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
+ Doxygen::tagFile << " <includes id=\""
+ << convertToXML(fd->getOutputFileBase()) << "\" "
+ << "name=\"" << convertToXML(fd->name()) << "\" "
+ << "local=\"" << locStr << "\" "
+ << "imported=\"" << impStr << "\">"
+ << convertToXML(ii->includeName)
+ << "</includes>"
+ << endl;
+ }
+ }
+ else
+ {
+ ol.docify(ii->includeName);
+ }
+
+ ol.enableAll();
+ if (ii->local || isIDLorJava)
+ ol.docify("\"");
+ else
+ ol.docify(">");
+ if (isIDLorJava)
+ ol.docify(";");
+ ol.endTypewriter();
+ ol.lineBreak();
}
-
- ol.enableAll();
- if (ii->local || isIDLorJava)
- ol.docify("\"");
- else
- ol.docify(">");
- if (isIDLorJava)
- ol.docify(";");
- ol.endTypewriter();
- ol.lineBreak();
}
ol.endTextBlock();
}
@@ -758,7 +761,7 @@ void FileDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
- ol.writeString(md->localName());
+ ol.writeString(convertToHtml(md->localName()));
ol.writeString("</a>");
}
ol.writeString("</td></tr>\n");
@@ -1034,7 +1037,7 @@ void FileDef::addUsingDeclaration(Definition *d)
}
void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local,
- bool imported)
+ bool imported,bool indirect)
{
//printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
QCString iName = fd ? fd->absFilePath().data() : incName;
@@ -1051,6 +1054,7 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local,
ii->includeName = incName;
ii->local = local;
ii->imported = imported;
+ ii->indirect = indirect;
includeList->append(ii);
includeDict->insert(iName,ii);
}
@@ -1148,6 +1152,7 @@ void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,
ii->includeName = incName;
ii->local = local;
ii->imported = imported;
+ ii->indirect = FALSE;
includedByList->append(ii);
includedByDict->insert(iName,ii);
}
@@ -1647,8 +1652,8 @@ bool FileDef::isLinkableInProject() const
bool FileDef::includes(FileDef *incFile,QDict<FileDef> *includedFiles) const
{
- if (incFile==this) return TRUE;
//printf("%s::includes(%s)\n",name().data(),incFile->name().data());
+ if (incFile==this) return TRUE;
includedFiles->insert(absFilePath(),this);
if (includeList)
{
@@ -1656,12 +1661,30 @@ bool FileDef::includes(FileDef *incFile,QDict<FileDef> *includedFiles) const
IncludeInfo *ii;
for (;(ii=ili.current());++ili)
{
- if (ii->fileDef &&
- includedFiles->find(ii->fileDef->absFilePath())==0 &&
- ii->fileDef->includes(incFile,includedFiles)) return TRUE;
+ //printf("ii=%s\n",ii->includeName.data());
+ if ((ii->fileDef &&
+ includedFiles->find(ii->fileDef->absFilePath())==0 &&
+ ii->fileDef->includes(incFile,includedFiles)
+ ) ||
+ incFile->absFilePath()==ii->includeName
+ ) return TRUE;
}
}
return FALSE;
}
+bool FileDef::includesByName(const QCString &fileName) const
+{
+ if (includeList)
+ {
+ QListIterator<IncludeInfo> ili(*includeList);
+ IncludeInfo *ii;
+ for (;(ii=ili.current());++ili)
+ {
+ //printf("ii=%s\n",ii->includeName.data());
+ if (fileName==ii->includeName) return TRUE;
+ }
+ }
+ return FALSE;
+}
diff --git a/src/filedef.h b/src/filedef.h
index 502a957..c34b633 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -42,12 +42,13 @@ class DirDef;
struct IncludeInfo
{
- IncludeInfo() { fileDef=0; local=FALSE; }
+ IncludeInfo() { fileDef=0; local=FALSE; indirect=FALSE; }
~IncludeInfo() {}
FileDef *fileDef;
QCString includeName;
bool local;
bool imported;
+ bool indirect;
};
/*! \class FileDef filedef.h
@@ -155,7 +156,7 @@ class FileDef : public Definition
bool generateSourceFile() const;
void sortMemberLists();
- void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported);
+ void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported,bool indirect);
void addIncludedByDependency(FileDef *fd,const char *incName,bool local,bool imported);
QList<IncludeInfo> *includeFileList() const { return includeList; }
QList<IncludeInfo> *includedByFileList() const { return includedByList; }
@@ -168,6 +169,7 @@ class FileDef : public Definition
void addListReferences();
bool isDocumentationFile() const;
bool includes(FileDef *incFile,QDict<FileDef> *includedFiles) const;
+ bool includesByName(const QCString &name) const;
MemberList *getMemberList(MemberList::ListType lt) const;
const QList<MemberList> &getMemberLists() const { return m_memberLists; }
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 7231ddc..9ed02c9 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -12,7 +12,7 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
- * Contributed by Kenney Wong <kwong@ea.com>
+ * Original version contributed by Kenney Wong <kwong@ea.com>
* Modified by Dimitri van Heesch
*
* Folder Tree View for offline help on browsers that do not support HTML Help.
@@ -47,279 +47,6 @@ static const char navtree_css[]=
#include "navtree_css.h"
;
-
-#if 0
-unsigned char ftv2blank_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x01, 0x00, 0x00, 0x00, 0x01, 0x96, 0xd6, 0x11, 0x47, 0x00, 0x00, 0x00,
- 0x02, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x01, 0x01, 0x94, 0xfd, 0xae, 0x00,
- 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77,
- 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20,
- 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00,
- 0x25, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
- 0x00, 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53,
- 0x6d, 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65,
- 0x72, 0x20, 0x32, 0x2e, 0x30, 0x21, 0xf8, 0xd7, 0x5e, 0x53, 0x00, 0x00,
- 0x00, 0x14, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x38, 0xc0, 0x80,
- 0x80, 0x1f, 0x30, 0xe0, 0x7f, 0x42, 0x90, 0x00, 0x02, 0x00, 0x78, 0x3c,
- 0x32, 0xcb, 0x72, 0x8f, 0x7c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
- 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2doc_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
- 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
- 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xff, 0xb3, 0xbd, 0xfb, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
- 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
- 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
- 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
- 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x76, 0x49, 0x44, 0x41,
- 0x54, 0x78, 0xda, 0x63, 0x60, 0x60, 0x60, 0x60, 0x63, 0x60, 0x60, 0x64,
- 0x00, 0x01, 0x27, 0x30, 0x62, 0x71, 0x01, 0xe2, 0x24, 0x06, 0x38, 0x60,
- 0x71, 0x00, 0xca, 0x27, 0x33, 0x30, 0x30, 0x01, 0x31, 0xa3, 0x32, 0x03,
- 0x0a, 0x70, 0x54, 0x32, 0x01, 0x53, 0x69, 0x60, 0x71, 0x27, 0x08, 0x15,
- 0x1a, 0x1a, 0xca, 0x80, 0x01, 0x5c, 0x5c, 0xc0, 0x94, 0xa2, 0x90, 0x02,
- 0x88, 0x52, 0x4b, 0x52, 0x05, 0x53, 0x69, 0xc8, 0x94, 0x18, 0x84, 0x52,
- 0x52, 0x12, 0xc5, 0x69, 0x0a, 0x36, 0xe0, 0xa4, 0xa4, 0xa4, 0x68, 0x82,
- 0xc4, 0x51, 0x82, 0x6b, 0x04, 0x71, 0x14, 0x4d, 0x61, 0x4e, 0x55, 0x04,
- 0xf2, 0x60, 0x1c, 0x27, 0x45, 0x24, 0x19, 0x90, 0x01, 0x70, 0x19, 0x67,
- 0x63, 0x20, 0x30, 0xc5, 0x6f, 0x23, 0x00, 0xf5, 0xd0, 0x11, 0xe0, 0x55,
- 0x83, 0x47, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
- 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2folderclosed_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
- 0x12, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
- 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x42,
- 0xee, 0x40, 0xe1, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00,
- 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74,
- 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66,
- 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e,
- 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
- 0x8d, 0x8e, 0xc1, 0x0a, 0x84, 0x30, 0x10, 0x43, 0x23, 0x8c, 0x77, 0x0f,
- 0xfb, 0x03, 0x42, 0xbd, 0x2b, 0xf8, 0x01, 0x65, 0x6d, 0xef, 0xa2, 0xcd,
- 0xff, 0xff, 0x8a, 0x33, 0xad, 0xee, 0x5a, 0xf6, 0xb0, 0x06, 0xda, 0xf0,
- 0x86, 0xa6, 0x13, 0x00, 0x88, 0x40, 0x03, 0x53, 0x02, 0x82, 0x9a, 0xd7,
- 0x51, 0x42, 0x25, 0xae, 0x7a, 0x76, 0xa0, 0xed, 0xea, 0x79, 0x79, 0x17,
- 0x49, 0x73, 0xe1, 0xf2, 0x32, 0x14, 0x8f, 0x5f, 0x49, 0xb9, 0xed, 0x23,
- 0x60, 0x20, 0xcd, 0x36, 0x66, 0xe4, 0x40, 0x4b, 0xb4, 0xdb, 0xdb, 0xe5,
- 0x16, 0xee, 0x16, 0x78, 0x20, 0xf9, 0x96, 0x15, 0x6d, 0xc2, 0x8b, 0xa2,
- 0x6e, 0xf9, 0x50, 0x64, 0xa6, 0x70, 0xb6, 0x50, 0x0a, 0xd3, 0x78, 0x86,
- 0x98, 0xa6, 0xde, 0x5d, 0x9d, 0x25, 0xcd, 0xfe, 0xdf, 0xc6, 0x03, 0xa0,
- 0x13, 0x15, 0x98, 0x60, 0xbd, 0x81, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x49,
- 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2folderopen_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
- 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
- 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80,
- 0x00, 0x80, 0x92, 0x32, 0x8c, 0xe5, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
- 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
- 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
- 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
- 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7c, 0x49, 0x44, 0x41,
- 0x54, 0x78, 0xda, 0x85, 0x8d, 0x41, 0x0e, 0x82, 0x30, 0x10, 0x45, 0x5f,
- 0x08, 0xf5, 0x1e, 0x2d, 0x53, 0xd6, 0xc6, 0x18, 0xd7, 0x8d, 0x18, 0xd7,
- 0x06, 0xd2, 0x1e, 0xa0, 0xb1, 0xde, 0xff, 0x08, 0x3a, 0x20, 0x21, 0x10,
- 0xa2, 0x6f, 0xf3, 0xfe, 0xff, 0x8b, 0x19, 0x80, 0x0a, 0x6a, 0x14, 0x81,
- 0x3c, 0x06, 0x2a, 0x61, 0xc5, 0xd3, 0x43, 0x69, 0xc1, 0xb4, 0xab, 0xf9,
- 0x70, 0xac, 0x83, 0xca, 0xbb, 0xfb, 0xa4, 0x8b, 0xae, 0x26, 0x46, 0xb6,
- 0x4c, 0x0f, 0xe8, 0xc3, 0x18, 0xfa, 0xb3, 0x7d, 0xa8, 0x1a, 0xeb, 0x17,
- 0xa5, 0x46, 0x54, 0x46, 0x4e, 0x2a, 0xe2, 0xce, 0x95, 0x3d, 0xba, 0xb0,
- 0x64, 0x93, 0x85, 0x9b, 0x0b, 0x73, 0x71, 0x83, 0x75, 0xd7, 0xf2, 0xa7,
- 0x90, 0xf2, 0x20, 0x9d, 0xfb, 0x16, 0xd2, 0xeb, 0x43, 0xf9, 0xfd, 0xf2,
- 0x0d, 0xa4, 0x29, 0x14, 0xcb, 0xda, 0x47, 0xac, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2lastnode_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
- 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
- 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
- 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
- 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
- 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
- 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
- 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0xc8, 0x33, 0x1e, 0x00, 0x24, 0xa7, 0x00,
- 0x88, 0x10, 0xca, 0x33, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
- 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2link_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00,
- 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x80, 0x00, 0xff,
- 0xff, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x00, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0x9b, 0x08, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
- 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
- 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
- 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
- 0x20, 0x32, 0x2e, 0x30, 0x19, 0x02, 0xd9, 0x09, 0xe5, 0x4a, 0x00, 0x00,
- 0x00, 0x90, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x7d, 0x8c, 0xb1, 0x0a,
- 0xc2, 0x30, 0x14, 0x45, 0x6f, 0x33, 0xb4, 0x63, 0x7e, 0xa1, 0x53, 0x57,
- 0x8b, 0x7e, 0x80, 0x6e, 0xae, 0x16, 0x5a, 0xb2, 0xbe, 0x3a, 0x64, 0x35,
- 0xb8, 0x64, 0xec, 0x2f, 0x07, 0x05, 0x1d, 0x9f, 0x79, 0x8d, 0x21, 0x50,
- 0xd0, 0x03, 0xc9, 0xcd, 0xe1, 0xbe, 0x17, 0x00, 0xa8, 0x00, 0x82, 0xe0,
- 0x81, 0x66, 0x7d, 0xc0, 0x9e, 0x51, 0x70, 0x40, 0x1d, 0xcf, 0xad, 0x07,
- 0x18, 0x1b, 0x74, 0x90, 0xdb, 0x1c, 0x62, 0x0f, 0xe2, 0x20, 0xc1, 0xcc,
- 0x61, 0x3b, 0x06, 0x6a, 0xbb, 0x14, 0x3b, 0xe9, 0x68, 0xba, 0xac, 0x51,
- 0x9d, 0x24, 0xec, 0xdc, 0x4b, 0x68, 0xed, 0xd2, 0x5e, 0x1b, 0x7e, 0xfd,
- 0x92, 0xa8, 0x6d, 0x84, 0xb2, 0x28, 0x28, 0x38, 0xca, 0xd2, 0x4c, 0x46,
- 0x2d, 0x59, 0xcc, 0x38, 0x5c, 0x8b, 0xcc, 0xe3, 0xfe, 0x2b, 0x71, 0xfa,
- 0x79, 0xbc, 0x67, 0x79, 0x85, 0x07, 0x54, 0x69, 0xde, 0xde, 0x2f, 0xf8,
- 0xcf, 0x07, 0x71, 0x95, 0x2b, 0xa1, 0x10, 0x78, 0xd0, 0xff, 0x00, 0x00,
- 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2mlastnode_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00,
- 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00,
- 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
- 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
- 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
- 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
- 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x23, 0x49, 0x44, 0x41,
- 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x20, 0x10, 0x0a,
- 0x60, 0x84, 0x11, 0x8c, 0xa1, 0xa1, 0x20, 0x06, 0x90, 0xc9, 0xa8, 0xb5,
- 0x50, 0x10, 0xca, 0x02, 0x89, 0x61, 0x01, 0x00, 0x6d, 0x17, 0x02, 0xba,
- 0xc0, 0xdc, 0x69, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
- 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2mnode_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
- 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x2a,
- 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06,
- 0x42, 0x74, 0x02, 0xa7, 0x52, 0x54, 0x06, 0xf7, 0x6e, 0x20, 0x80, 0xf1,
- 0xc1, 0x62, 0xdc, 0x4c, 0x4a, 0x4a, 0xdc, 0xdc, 0xdc, 0xc8, 0x22, 0x30,
- 0x35, 0x98, 0xda, 0xd1, 0x19, 0x00, 0xb7, 0x79, 0x07, 0x27, 0xaa, 0xf7,
- 0x96, 0x03, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
- 0x60, 0x82
-};
-
-unsigned char ftv2node_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
- 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
- 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
- 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
- 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
- 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
- 0x00, 0x15, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
- 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0x88, 0x56, 0x8c, 0xc2, 0x00, 0x00, 0x2e,
- 0x52, 0x00, 0xe2, 0xfa, 0x45, 0x3a, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x49,
- 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2plastnode_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00,
- 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00,
- 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52,
- 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74,
- 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00,
- 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e,
- 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x49, 0x44, 0x41,
- 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x30, 0x08, 0x81,
- 0x11, 0x90, 0x81, 0x02, 0x18, 0x61, 0x04, 0x63, 0x68, 0x28, 0x90, 0x60,
- 0x02, 0x32, 0x19, 0xb5, 0x16, 0x0a, 0x42, 0x59, 0x20, 0x31, 0x2c, 0x00,
- 0x00, 0x6e, 0xc1, 0x02, 0xc2, 0xe5, 0xed, 0x75, 0xa7, 0x00, 0x00, 0x00,
- 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2pnode_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
- 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x30,
- 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06,
- 0x42, 0x06, 0x6e, 0x26, 0x38, 0x01, 0xe2, 0xe2, 0x54, 0x8a, 0xca, 0xe0,
- 0xde, 0x0d, 0x04, 0x10, 0x3e, 0x13, 0x44, 0x8c, 0x9b, 0x49, 0x49, 0x89,
- 0x9b, 0x9b, 0x1b, 0x59, 0x04, 0xa6, 0x06, 0x53, 0x3b, 0x3a, 0x03, 0x00,
- 0xba, 0x6b, 0x07, 0x2f, 0xaa, 0xcb, 0x1f, 0x6f, 0x00, 0x00, 0x00, 0x00,
- 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-unsigned char ftv2vertline_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16,
- 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00,
- 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00,
- 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
- 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32,
- 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26,
- 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00,
- 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d,
- 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72,
- 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00,
- 0x00, 0x0f, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30,
- 0xc0, 0x4f, 0x5b, 0x06, 0x00, 0x21, 0x14, 0x00, 0xa6, 0xe5, 0x3c, 0xe8,
- 0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
- 0x82
-};
-#endif
-
-
static unsigned char blank_png[352] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -728,19 +455,24 @@ static ColoredImgDataItem ftv_image_data[] =
{ 0, 0, 0, 0, 0 }
};
+static int folderId=1;
+
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); }
+ FTVNode(bool dir,const char *r,const char *f,const char *a,const char *n,bool sepIndex,bool navIndex)
+ : isLast(TRUE), isDir(dir),ref(r),file(f),anchor(a),name(n), index(0),
+ parent(0), separateIndex(sepIndex), addToNavIndex(navIndex) { children.setAutoDelete(TRUE); }
bool isLast;
bool isDir;
QCString ref;
QCString file;
QCString anchor;
QCString name;
+ int index;
QList<FTVNode> children;
FTVNode *parent;
+ bool separateIndex;
+ bool addToNavIndex;
};
@@ -759,6 +491,7 @@ FTVHelp::FTVHelp(bool TLI)
m_topLevelIndex = TLI;
}
+/*! Destroys the ftv help object. */
FTVHelp::~FTVHelp()
{
delete[] m_indentNodes;
@@ -816,21 +549,27 @@ void FTVHelp::decContentsDepth()
* \param file the file containing the definition of the item
* \param anchor the anchor within the file.
* \param name the name of the item.
+ * \param separateIndex put the entries in a separate index file
+ * \param addToNavIndex add this entry to the quick navigation index
*/
void FTVHelp::addContentsItem(bool isDir,
const char *name,
const char *ref,
const char *file,
- const char *anchor
+ const char *anchor,
+ bool separateIndex,
+ bool addToNavIndex
)
{
+ //printf("addContentsItem(%s,%s,%s,%s)\n",name,ref,file,anchor);
QList<FTVNode> *nl = &m_indentNodes[m_indent];
- FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name);
+ FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name,separateIndex,addToNavIndex);
if (!nl->isEmpty())
{
nl->getLast()->isLast=FALSE;
}
nl->append(newNode);
+ newNode->index = nl->count()-1;
if (m_indent>0)
{
QList<FTVNode> *pnl = &m_indentNodes[m_indent-1];
@@ -839,7 +578,6 @@ void FTVHelp::addContentsItem(bool isDir,
}
-static int folderId=1;
void FTVHelp::generateIndent(FTextStream &t, FTVNode *n,int level)
{
@@ -969,7 +707,33 @@ void FTVHelp::generateTree(FTextStream &t, const QList<FTVNode> &nl,int level)
}
}
-bool FTVHelp::generateJSTree(FTextStream &t, const QList<FTVNode> &nl,int level,bool &first)
+static void writePathToNode(FTextStream &tidx,FTVNode *leaf,FTVNode *n)
+{
+ if (n->parent)
+ {
+ writePathToNode(tidx,leaf,n->parent);
+ }
+ tidx << n->index;
+ if (leaf!=n) tidx << ",";
+}
+
+bool childOfHierarchy(const FTVNode *n)
+{
+ if (n==0) return FALSE;
+ if (n->file=="hierarchy")
+ return TRUE;
+ else
+ return childOfHierarchy(n->parent);
+}
+
+bool dupOfParent(const FTVNode *n)
+{
+ if (n->parent==0) return FALSE;
+ if (n->file==n->parent->file) return TRUE;
+ return FALSE;
+}
+
+bool FTVHelp::generateJSTree(FTextStream &tidx,FTextStream &t, const QList<FTVNode> &nl,int level,bool &first)
{
QCString indentStr;
indentStr.fill(' ',level*2);
@@ -989,45 +753,59 @@ bool FTVHelp::generateJSTree(FTextStream &t, const QList<FTVNode> &nl,int level,
}
found=TRUE;
- bool firstChild=TRUE;
- t << indentStr << " [ ";
- generateJSLink(t,n);
- bool emptySection = !generateJSTree(t,n->children,level+1,firstChild);
- if (emptySection)
- t << "null ]";
- else
- t << endl << indentStr << " ] ]";
- }
- return found;
-}
-
-
-#if 0
-void FTVHelp::generateTreeViewImages()
-{
- static bool done=FALSE;
- if (done) return;
- done=TRUE;
+ //if (!n->file.isEmpty() && !childOfHierarchy(n->parent))
+ if (n->addToNavIndex)
+ {
+ tidx << "," << endl << "\"" << n->file << Doxygen::htmlFileExtension;
+ if (!n->anchor.isEmpty()) tidx << "#" << n->anchor;
+ tidx << "\":[";
+ writePathToNode(tidx,n,n);
+ tidx << "]";
+ }
- // Generate tree view images
- FTVImageInfo *p = image_info;
- while (p->name)
- {
- QCString fileName=Config_getString("HTML_OUTPUT")+"/"+p->name;
- QFile f(fileName);
- if (f.open(IO_WriteOnly))
+ if (n->separateIndex) // store items in a separate file for dynamic loading
{
- f.writeBlock((char *)p->data,p->len);
+ bool firstChild=TRUE;
+ t << indentStr << " [ ";
+ generateJSLink(t,n);
+ if (n->children.count()>0) // write children to separate file for dynamic loading
+ {
+ QCString fileId = n->file;
+ if (dupOfParent(n)) fileId+="_dup";
+ QFile f(Config_getString("HTML_OUTPUT")+"/"+fileId+".js");
+ if (f.open(IO_WriteOnly))
+ {
+ FTextStream tt(&f);
+ QCString varId = fileId;
+ int i=fileId.findRev('/');
+ if (i>=0) varId = varId.mid(i+1);
+ tt << "var " << varId << " =" << endl;
+ generateJSTree(tidx,tt,n->children,1,firstChild);
+ tt << endl << "];";
+ }
+ // write file name without extension as marker
+ t << "\"" << fileId << "\" ]";
+ //if (n->file!="hierarchy") addFilesToIndex(tidx,n);
+ }
+ else // no children
+ {
+ t << "null ]";
+ }
}
- else
+ else // show items in this file
{
- fprintf(stderr,"warning: Cannot open file %s for writing\n",fileName.data());
+ bool firstChild=TRUE;
+ t << indentStr << " [ ";
+ generateJSLink(t,n);
+ bool emptySection = !generateJSTree(tidx,t,n->children,level+1,firstChild);
+ if (emptySection)
+ t << "null ]";
+ else
+ t << endl << indentStr << " ] ]";
}
- f.close();
- p++;
}
-}
-#endif
+ return found;
+}
// new style images
void FTVHelp::generateTreeViewImages()
@@ -1041,9 +819,14 @@ void FTVHelp::generateTreeViewScripts()
{
// generate navtree.js
{
- QFile f(Config_getString("HTML_OUTPUT")+"/navtree.js");
- if (f.open(IO_WriteOnly))
+ QCString htmlOutput = Config_getString("HTML_OUTPUT");
+ QFile f(htmlOutput+"/navtree.js");
+ QFile fidx(htmlOutput+"/navtreeindex.js");
+ if (f.open(IO_WriteOnly) && fidx.open(IO_WriteOnly))
{
+ FTextStream tidx(&fidx);
+ tidx << "var NAVTREEINDEX =" << endl;
+ tidx << "{" << endl;
FTextStream t(&f);
t << "var NAVTREE =" << endl;
t << "[" << endl;
@@ -1060,13 +843,17 @@ void FTVHelp::generateTreeViewScripts()
}
t << "\"index" << Doxygen::htmlFileExtension << "\", ";
+ tidx << "\"index" << Doxygen::htmlFileExtension << "\":[]";
+
bool first=TRUE;
- generateJSTree(t,m_indentNodes[0],1,first);
+ generateJSTree(tidx,t,m_indentNodes[0],1,first);
if (first) t << "]";
t << endl << " ] ]" << endl;
t << "];" << endl;
t << endl << navtree_script;
+
+ tidx << endl << "};" << endl;
}
}
// generate resize.js
@@ -1078,17 +865,6 @@ void FTVHelp::generateTreeViewScripts()
t << resize_script;
}
}
-#if 0
- // generate jquery.js
- {
- QFile f(Config_getString("HTML_OUTPUT")+"/jquery.js");
- if (f.open(IO_WriteOnly))
- {
- FTextStream t(&f);
- t << jquery_script1 << jquery_script2 << jquery_script3;
- }
- }
-#endif
// generate navtree.css
{
QFile f(Config_getString("HTML_OUTPUT")+"/navtree.css");
@@ -1182,171 +958,5 @@ void FTVHelp::generateTreeView()
{
generateTreeViewImages();
generateTreeViewScripts();
-#if 0
- QCString fileName;
- QFile f;
- static bool searchEngine = Config_getBool("SEARCHENGINE");
- static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
-
- fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension;
- f.setName(fileName);
- if (!f.open(IO_WriteOnly))
- {
- err("Cannot open file %s for writing!\n",fileName.data());
- return;
- }
- else
- {
- FTextStream t(&f);
- //t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n";
- t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
- t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n";
- t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n";
- t << "<title>";
- if (Config_getString("PROJECT_NAME").isEmpty())
- {
- t << "Doxygen Documentation";
- }
- else
- {
- t << Config_getString("PROJECT_NAME");
- }
- t << "</title>\n</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 << " <noframes>" << endl;
- t << " <body>" << endl;
- t << " <a href=\"main" << Doxygen::htmlFileExtension << "\">Frames are disabled. Click here to go to the main page.</a>" << endl;
- t << " </body>" << endl;
- t << " </noframes>" << endl;
- t << "</frameset>" << endl;
- t << "</html>" << endl;
- f.close();
- }
-
- // Generate tree view
- 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
- {
- FTextStream t(&f);
-
- //if (searchEngine)
- //{
- // t << "<!-- This comment will put IE 6, 7 and 8 in quirks mode -->" << endl;
- //}
- t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
- 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=UTF-8\"/>\n";
- t << " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n";
- t << " <meta http-equiv=\"Content-Language\" content=\"en\" />\n";
- if (searchEngine)
- {
- t << " <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>" << endl;
- t << " <script type=\"text/javaScript\" src=\"search/search.js\"></script>" << endl;
- }
- 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>TreeView</title>\n";
- generateScript(t);
- t << " </head>\n";
- t << "\n";
- t << " <body class=\"ftvtree\"";
- if (searchEngine && !serverBasedSearch)
- {
- t << " onload='searchBox.OnSelectItem(0);'";
- }
- t << ">\n";
- if (searchEngine)
- {
- t << " <script type=\"text/javascript\"><!--\n";
- t << " var searchBox = new SearchBox(\"searchBox\", \"search\", true, '"
- << theTranslator->trSearch() << "');\n";
- t << " --></script>\n";
- if (!serverBasedSearch)
- {
- t << " <div class=\"tabsearch\">\n";
- t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
- t << " <span class=\"left\">\n";
- t << " <a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\">"
- << "<img id=\"MSearchCloseImg\" border=\"0\" src=\"search/close.png\" alt=\"\"/></a>\n";
- t << " <input type=\"text\" id=\"MSearchField\" value=\""
- << theTranslator->trSearch() << "\" accesskey=\"S\"\n";
- t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
- t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n";
- t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n";
- t << " </span><span class=\"right\">\n";
- t << " <img id=\"MSearchSelect\" src=\"search/mag_sel.png\"\n";
- t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
- t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
- t << " alt=\"\"/>\n";
- t << " </span>\n";
- t << " </div>\n";
- t << " </div>\n";
- HtmlGenerator::writeSearchFooter(t,QCString());
- }
- else
- {
- t << " <div class=\"tabsearch\">\n";
- t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
- t << " <span class=\"left\">\n";
- t << " <form id=\"FSearchBox\" action=\"search.php\" method=\"get\" target=\"basefrm\">\n";
- t << " <img id=\"MSearchSelect\" src=\"search/mag.png\" alt=\"\"/>\n";
- t << " <input type=\"text\" id=\"MSearchField\" name=\"query\" value=\""
- << theTranslator->trSearch() << "\" size=\"20\" accesskey=\"S\" \n";
- t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
- t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n";
- t << " </form>\n";
- t << " </span><span class=\"right\"></span>\n";
- t << " </div>\n";
- t << " </div>\n";
- }
- }
- t << " <div class=\"directory\">\n";
- t << " <h3 class=\"swap\"><span>";
- QCString &projName = Config_getString("PROJECT_NAME");
- if (projName.isEmpty())
- {
- t << "Root";
- }
- else
- {
- t << projName;
- }
- t << "</span></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";
-
- f.close();
- }
-#endif
}
diff --git a/src/ftvhelp.h b/src/ftvhelp.h
index 5ec0d0d..78e8b7b 100644
--- a/src/ftvhelp.h
+++ b/src/ftvhelp.h
@@ -48,7 +48,9 @@ class FTVHelp : public IndexIntf
const char *name,
const char *ref,
const char *file,
- const char *anchor);
+ const char *anchor,
+ bool separateIndex=FALSE,
+ bool addToNavIndex=FALSE);
//void addIndexItem(const char *, const char *,
// const char *, const char *,
// const char *, const MemberDef *) {}
@@ -63,7 +65,8 @@ class FTVHelp : public IndexIntf
private:
void generateScript(FTextStream &t);
void generateTree(FTextStream &t,const QList<FTVNode> &nl,int level);
- bool generateJSTree(FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
+ bool generateJSTree(FTextStream &tidx,FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
+ //bool generateJSTreeTopLevel(FTextStream &tidx,FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
void generateIndent(FTextStream &t,FTVNode *n,int level);
void generateLink(FTextStream &t,FTVNode *n);
void generateJSLink(FTextStream &t,FTVNode *n);
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 12de564..1c4567e 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -887,7 +887,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
{
//static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState();
- startFile(ol,getOutputFileBase(),name(),title);
+ startFile(ol,getOutputFileBase(),name(),title,HLI_None);
ol.startHeaderSection();
writeSummaryLinks(ol);
@@ -1105,7 +1105,7 @@ void GroupDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
- ol.writeString(md->localName());
+ ol.writeString(convertToHtml(md->localName()));
ol.writeString("</a>");
}
ol.writeString("</td></tr>\n");
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 2c5ffb7..8795bb4 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -1657,7 +1657,7 @@ void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,
if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
if (!anchor.isEmpty()) m_t << "#" << anchor;
m_t << "\"";
- if (!tooltip.isEmpty()) m_t << " title=\"" << tooltip << "\"";
+ if (!tooltip.isEmpty()) m_t << " title=\"" << substitute(tooltip,"\"","&quot;") << "\"";
m_t << ">";
}
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index c9ff1f0..0e3a158 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -81,6 +81,10 @@ static const char search_jquery_script3[]=
#include "jquery_ui_js.h"
;
+static const char search_jquery_script4[]=
+#include "jquery_fx_js.h"
+;
+
static const char svgpan_script[]=
#include "svgpan_js.h"
;
@@ -1095,6 +1099,10 @@ void HtmlGenerator::init()
{
FTextStream t(&f);
t << search_jquery_script1 << search_jquery_script2 << search_jquery_script3;
+ if (Config_getBool("GENERATE_TREEVIEW"))
+ {
+ t << search_jquery_script4;
+ }
}
}
@@ -1178,7 +1186,13 @@ void HtmlGenerator::writeSearchData(const char *dir)
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
- t << replaceColorMarkers(search_styleSheet);
+ QCString searchCss = replaceColorMarkers(search_styleSheet);
+ if (Config_getBool("DISABLE_INDEX"))
+ {
+ // move up the search box if there are no tabs
+ searchCss = substitute(searchCss,"margin-top: 8px;","margin-top: 0px;");
+ }
+ t << searchCss;
}
Doxygen::indexList.addStyleSheetFile("search/search.css");
}
@@ -1260,24 +1274,34 @@ void HtmlGenerator::startFile(const char *name,const char *,
m_sectionCount=0;
}
-void HtmlGenerator::writeSearchFooter(FTextStream &t,const QCString &relPath)
+void HtmlGenerator::writeSearchInfo(FTextStream &t,const QCString &relPath)
+{
+ static bool searchEngine = Config_getBool("SEARCHENGINE");
+ static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
+ if (searchEngine && !serverBasedSearch)
+ {
+ (void)relPath;
+ t << "<!-- window showing the filter options -->\n";
+ t << "<div id=\"MSearchSelectWindow\"\n";
+ t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
+ t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
+ t << " onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n";
+ writeSearchCategories(t);
+ t << "</div>\n";
+ t << "\n";
+ t << "<!-- iframe showing the search results (closed by default) -->\n";
+ t << "<div id=\"MSearchResultsWindow\">\n";
+ t << "<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n";
+ t << " name=\"MSearchResults\" id=\"MSearchResults\">\n";
+ t << "</iframe>\n";
+ t << "</div>\n";
+ t << "\n";
+ }
+}
+
+void HtmlGenerator::writeSearchInfo()
{
- (void)relPath;
- t << "<!-- window showing the filter options -->\n";
- t << "<div id=\"MSearchSelectWindow\"\n";
- t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
- t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
- t << " onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n";
- writeSearchCategories(t);
- t << "</div>\n";
- t << "\n";
- t << "<!-- iframe showing the search results (closed by default) -->\n";
- t << "<div id=\"MSearchResultsWindow\">\n";
- t << "<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n";
- t << " name=\"MSearchResults\" id=\"MSearchResults\">\n";
- t << "</iframe>\n";
- t << "</div>\n";
- t << "\n";
+ writeSearchInfo(t,relPath);
}
@@ -1312,13 +1336,6 @@ void HtmlGenerator::writeLogo()
void HtmlGenerator::writePageFooter(FTextStream &t,const QCString &lastTitle,const QCString &relPath)
{
- static bool searchEngine = Config_getBool("SEARCHENGINE");
- static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
- if (searchEngine /*&& !generateTreeView*/ && !serverBasedSearch)
- {
- HtmlGenerator::writeSearchFooter(t,relPath);
- }
-
t << substituteHtmlKeywords(g_footer,convertToHtml(lastTitle),relPath);
}
@@ -2423,15 +2440,10 @@ static void startQuickIndexItem(FTextStream &t,const char *l,
bool hl,bool /*compact*/,
const QCString &relPath)
{
- //static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
t << " <li";
if (hl)
{
t << " class=\"current\"";
- //if (generateTreeView)
- //{
- // t << " onmouseover=\"return navShow('" << l << "')\"";
- //}
}
t << "><a ";
t << "href=\"" << relPath << l << "\">";
@@ -2459,12 +2471,15 @@ static bool quickLinkVisible(LayoutNavEntry::Kind kind)
case LayoutNavEntry::Pages: return indexedPages>0;
case LayoutNavEntry::Modules: return documentedGroups>0;
case LayoutNavEntry::Namespaces: return documentedNamespaces>0;
+ case LayoutNavEntry::NamespaceList: return documentedNamespaces>0;
case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0;
case LayoutNavEntry::Classes: return annotatedClasses>0;
- case LayoutNavEntry::ClassAnnotated: return annotatedClasses>0;
+ case LayoutNavEntry::ClassList: return annotatedClasses>0;
+ case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0;
case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0;
case LayoutNavEntry::Files: return documentedHtmlFiles>0;
+ case LayoutNavEntry::FileList: return documentedHtmlFiles>0;
case LayoutNavEntry::FileGlobals: return documentedFileMembers[FMHL_All]>0;
case LayoutNavEntry::Dirs: return documentedDirs>0;
case LayoutNavEntry::Examples: return Doxygen::exampleSDict->count()>0;
@@ -2494,11 +2509,16 @@ static void renderQuickLinksAsTree(FTextStream &t,const QCString &relPath,Layout
{
url+=Doxygen::htmlFileExtension;
}
- startQuickIndexItem(t,url,FALSE,FALSE,relPath);
+ t << "<li";
+ t << "><a ";
+ t << "href=\"" << relPath << url << "\">";
+ t << "<span>";
t << fixSpaces(entry->title());
+ t << "</span>";
+ t << "</a>\n";
// recursive into child list
renderQuickLinksAsTree(t,relPath,entry);
- endQuickIndexItem(t);
+ t << "</li>";
}
}
endQuickIndexList(t,FALSE);
@@ -2548,7 +2568,7 @@ static void renderQuickLinksAsTabs(FTextStream &t,const QCString &relPath,
endQuickIndexItem(t);
}
}
- if (hlEntry->parent()==LayoutDocManager::instance().rootNavEntry())
+ if (hlEntry->parent()==LayoutDocManager::instance().rootNavEntry()) // first row
{
//static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
static bool searchEngine = Config_getBool("SEARCHENGINE");
@@ -2584,18 +2604,6 @@ static void renderQuickLinksAsTabs(FTextStream &t,const QCString &relPath,
endQuickIndexList(t,TRUE);
}
}
-#if 0
- if (generateTreeView)
- {
- // add empty rows for the dynamic menus (max 4 levels)
- t << " <div id=\"navrow2\" class=\"tabs2\">\n";
- t << " </div>\n";
- t << " <div id=\"navrow3\" class=\"tabs3\">\n";
- t << " </div>\n";
- t << " <div id=\"navrow4\" class=\"tabs3\">\n";
- t << " </div>\n";
- }
-#endif
}
}
@@ -2604,25 +2612,29 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
{
LayoutNavEntry *root = LayoutDocManager::instance().rootNavEntry();
LayoutNavEntry::Kind kind = (LayoutNavEntry::Kind)-1;
+ LayoutNavEntry::Kind altKind = (LayoutNavEntry::Kind)-1; // fall back for the old layout file
bool highlightParent=FALSE;
switch (hli) // map HLI enums to LayoutNavEntry::Kind enums
{
case HLI_Main: kind = LayoutNavEntry::MainPage; break;
case HLI_Modules: kind = LayoutNavEntry::Modules; break;
case HLI_Directories: kind = LayoutNavEntry::Dirs; break;
- case HLI_Namespaces: kind = LayoutNavEntry::Namespaces; break;
+ case HLI_Namespaces: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces; break;
case HLI_Hierarchy: kind = LayoutNavEntry::ClassHierarchy; break;
- case HLI_Classes: kind = LayoutNavEntry::Classes; break;
- case HLI_Annotated: kind = LayoutNavEntry::ClassAnnotated; break;
- case HLI_Files: kind = LayoutNavEntry::Files; break;
+ case HLI_Classes: kind = LayoutNavEntry::ClassIndex; altKind = LayoutNavEntry::Classes; break;
+ case HLI_Annotated: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes; break;
+ case HLI_Files: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files; break;
case HLI_NamespaceMembers: kind = LayoutNavEntry::NamespaceMembers; break;
case HLI_Functions: kind = LayoutNavEntry::ClassMembers; break;
case HLI_Globals: kind = LayoutNavEntry::FileGlobals; break;
case HLI_Pages: kind = LayoutNavEntry::Pages; break;
case HLI_Examples: kind = LayoutNavEntry::Examples; break;
- case HLI_ClassVisible: kind = LayoutNavEntry::Classes; highlightParent = TRUE; break;
- case HLI_NamespaceVisible: kind = LayoutNavEntry::Namespaces; highlightParent = TRUE; break;
- case HLI_FileVisible: kind = LayoutNavEntry::Files; highlightParent = TRUE; break;
+ case HLI_ClassVisible: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes;
+ highlightParent = TRUE; break;
+ case HLI_NamespaceVisible: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces;
+ highlightParent = TRUE; break;
+ case HLI_FileVisible: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files;
+ highlightParent = TRUE; break;
case HLI_None: break;
case HLI_Search: break;
}
@@ -2631,6 +2643,7 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
{
// find highlighted index item
LayoutNavEntry *hlEntry = root->find(kind);
+ if (!hlEntry && altKind!=(LayoutNavEntry::Kind)-1) { hlEntry=root->find(altKind); kind=altKind; }
if (!hlEntry) // highlighted item not found in the index! -> just show the level 1 index...
{
highlightParent=TRUE;
@@ -2784,70 +2797,13 @@ void HtmlGenerator::writeSearchPage()
t << "</div>" << endl;
}
- // OPENSEARCH_PROVIDER {
-#if 0
- t << "\n<script language=\"php\">\n\n";
- t << "function search_results()\n";
- t << "{\n";
- t << " return \"" << theTranslator->trSearchResultsTitle() << "\";\n";
- t << "}\n";
- t << "\n";
- t << "function matches_text($num)\n";
- t << "{\n";
- t << " if ($num==0)\n";
- t << " {\n";
- t << " return \"" << theTranslator->trSearchResults(0) << "\";\n";
- t << " }\n";
- t << " else if ($num==1)\n";
- t << " {\n";
- t << " return \"" << theTranslator->trSearchResults(1) << "\";\n";
- t << " }\n";
- t << " else // $num>1\n";
- t << " {\n";
- t << " return \"" << theTranslator->trSearchResults(2) << "\";\n";
- t << " }\n";
- t << "}\n";
- t << "\n";
- t << "function report_matches()\n";
- t << "{\n";
- t << " return \"" << theTranslator->trSearchMatches() << " \";\n";
- t << "}\n";
- t << "function end_form($value)\n";
- t << "{\n";
- t << " echo \"";
- if (!Config_getBool("DISABLE_INDEX"))
- {
- t << " <input type=\\\"text\\\" id=\\\"MSearchField\\\" name=\\\"query\\\" value=\\\"$value\\\" size=\\\"20\\\" accesskey=\\\"S\\\" "
- << "onfocus=\\\"searchBox.OnSearchFieldFocus(true)\\\" "
- << "onblur=\\\"searchBox.OnSearchFieldFocus(false)\\\"/>\\n"
- << " </form>\\n"
- << " </div><div class=\\\"right\\\"></div>\\n"
- << " </div>\\n"
- << " </li>\\n"
- << " </ul>\\n"
- << " </div>\\n";
- t << "</div>\\n";
- }
- if (generateTreeView)
- {
- t << substitute(substitute(writeSplitBarAsString("",""),
- "\"","\\\""),
- "\n","\\n");
- }
- t << "\";\n";
- t << "}\n";
- t << "\n";
- t << search_script;
- t << "\n";
- t << "</script>\n";
-#endif
- // OPENSEARCH_PROVIDER }
-
t << "<script language=\"php\">\n";
t << "require_once \"search-functions.php\";\n";
t << "main();\n";
t << "</script>\n";
+ writeSearchInfo(t,"");
+
// Write empty navigation path, to make footer connect properly
if (generateTreeView)
{
@@ -2895,30 +2851,6 @@ void HtmlGenerator::writeSearchPage()
}
-#if 0
-void HtmlGenerator::generateSectionImages()
-{
- {
- QCString fileName = Config_getString("HTML_OUTPUT")+"/open.png";
- QFile f(fileName);
- if (f.open(IO_WriteOnly))
- {
- f.writeBlock((char*)open_gif,open_gif_len);
- }
- Doxygen::indexList.addImageFile("open.png");
- }
- {
- QCString fileName = Config_getString("HTML_OUTPUT")+"/closed.png";
- QFile f(fileName);
- if (f.open(IO_WriteOnly))
- {
- f.writeBlock((char*)closed_gif,closed_gif_len);
- }
- Doxygen::indexList.addImageFile("closed.png");
- }
-}
-#endif
-
void HtmlGenerator::startConstraintList(const char *header)
{
t << "<div class=\"typeconstraint\">" << endl;
diff --git a/src/htmlgen.h b/src/htmlgen.h
index aa4c0b1..b31f6e1 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -37,7 +37,7 @@ class HtmlGenerator : public OutputGenerator
static void writeHeaderFile(QFile &f, const char *cssname);
static void writeFooterFile(QFile &f);
static void writeTabData();
- static void writeSearchFooter(FTextStream &t,const QCString &relPath);
+ static void writeSearchInfo(FTextStream &t,const QCString &relPath);
static void writeSearchData(const char *dir);
static void writeSearchPage();
static QCString writeLogoAsString(const char *path);
@@ -58,6 +58,7 @@ class HtmlGenerator : public OutputGenerator
void writeFooter();
void endFile();
void clearBuffer();
+ void writeSearchInfo();
void startIndexSection(IndexSections) {}
void endIndexSection(IndexSections) {}
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 4d16c14..21cdbcc 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -13,9 +13,8 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
- * The code is this file is largely based on a contribution from
- * Harm van der Heijden <H.v.d.Heijden@phys.tue.nl>
- * Please send thanks to him and bug reports to me :-)
+ * The original version of this file is largely based on a contribution from
+ * Harm van der Heijden.
*/
#include <stdio.h>
@@ -629,12 +628,16 @@ QCString HtmlHelp::recode(const QCString &s)
* \param ref the URL of to the item.
* \param file the file in which the item is defined.
* \param anchor the anchor of the item.
+ * \param separateIndex not used.
+ * \param addToNavIndex not used.
*/
void HtmlHelp::addContentsItem(bool isDir,
const char *name,
const char * /*ref*/,
const char *file,
- const char *anchor)
+ const char *anchor,
+ bool /* separateIndex */,
+ bool /* addToNavIndex */)
{
// If we're using a binary toc then folders cannot have links.
if(Config_getBool("BINARY_TOC") && isDir)
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index a600e77..bba4efe 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -71,9 +71,11 @@ class HtmlHelp : public IndexIntf
void decContentsDepth();
void addContentsItem(bool isDir,
const char *name,
- const char *ref = 0,
- const char *file = 0,
- const char *anchor = 0);
+ const char *ref,
+ const char *file,
+ const char *anchor,
+ bool separateIndex,
+ bool addToNavIndex);
//void addIndexItem(const char *level1, const char *level2,
// const char *contRef, const char *memRef,
// const char *anchor,const MemberDef *md);
diff --git a/src/index.cpp b/src/index.cpp
index a72a0c6..f244c47 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -69,17 +69,17 @@ int documentedHtmlFiles;
int documentedPages;
int documentedDirs;
-int countClassHierarchy();
-int countClassMembers(int filter=CMHL_All);
-int countFileMembers(int filter=FMHL_All);
-void countFiles(int &htmlFiles,int &files);
-int countGroups();
-int countDirs();
-int countNamespaces();
-int countAnnotatedClasses(int *cp);
-int countNamespaceMembers(int filter=NMHL_All);
-int countIncludeFiles();
-void countRelatedPages(int &docPages,int &indexPages);
+static int countClassHierarchy();
+//static int countClassMembers(int filter=CMHL_All);
+//static int countFileMembers(int filter=FMHL_All);
+static void countFiles(int &htmlFiles,int &files);
+static int countGroups();
+static int countDirs();
+static int countNamespaces();
+static int countAnnotatedClasses(int *cp);
+//static int countNamespaceMembers(int filter=NMHL_All);
+//static int countIncludeFiles();
+static void countRelatedPages(int &docPages,int &indexPages);
void countDataStructures()
{
@@ -149,7 +149,7 @@ const int maxItemsBeforeQuickIndex = MAX_ITEMS_BEFORE_QUICK_INDEX;
//----------------------------------------------------------------------------
// strips w from s iff s starts with w
-bool stripWord(QCString &s,QCString w)
+static bool stripWord(QCString &s,QCString w)
{
bool success=FALSE;
if (s.left(w.length())==w)
@@ -162,7 +162,7 @@ bool stripWord(QCString &s,QCString w)
//----------------------------------------------------------------------------
// some quasi intelligent brief description abbreviator :^)
-QCString abbreviate(const char *s,const char *name)
+static QCString abbreviate(const char *s,const char *name)
{
QCString scopelessName=name;
int i=scopelessName.findRev("::");
@@ -322,6 +322,7 @@ void endFile(OutputList &ol,bool skipNavIndex)
if (!skipNavIndex)
{
ol.endContents();
+ ol.writeSearchInfo();
if (generateTreeView)
{
ol.writeString("</div>\n");
@@ -334,6 +335,61 @@ void endFile(OutputList &ol,bool skipNavIndex)
ol.endFile();
}
+//----------------------------------------------------------------------
+template<class T> void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,const QCString &name,const QCString &anchor)
+{
+ bool hasMembers = def->getMemberLists().count()>0 || def->getMemberGroupSDict()!=0;
+ Doxygen::indexList.addContentsItem(hasMembers,name,def->getReference(),def->getOutputFileBase(),anchor,hasMembers,TRUE);
+ if (hasMembers)
+ {
+ Doxygen::indexList.incContentsDepth();
+ QListIterator<LayoutDocEntry> eli(LayoutDocManager::instance().docEntries(part));
+ LayoutDocEntry *lde;
+ for (eli.toFirst();(lde=eli.current());++eli)
+ {
+ if (lde->kind()==LayoutDocEntry::MemberDef)
+ {
+ LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
+ MemberList *ml = def->getMemberList(lmd->type);
+ if (ml)
+ {
+ MemberListIterator mi(*ml);
+ MemberDef *md;
+ for (mi.toFirst();(md=mi.current());++mi)
+ {
+ if (md->name().find('@')==-1)
+ {
+ Doxygen::indexList.addContentsItem(FALSE,
+ md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE);
+ }
+ }
+ }
+ }
+ else if (lde->kind()==LayoutDocEntry::NamespaceClasses ||
+ lde->kind()==LayoutDocEntry::FileClasses)
+ {
+ ClassSDict *classes = def->getClassSDict();
+ if (classes)
+ {
+ ClassDef *cd;
+ ClassSDict::Iterator it(*classes);
+ for (;(cd=it.current());++it)
+ {
+ if (cd->getOuterScope()==def)
+ {
+ Doxygen::indexList.addContentsItem(FALSE,
+ cd->localName(),
+ cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE);
+ }
+ }
+ }
+ }
+ }
+
+ Doxygen::indexList.decContentsDepth();
+ }
+}
+
//----------------------------------------------------------------------------
static bool classHasVisibleChildren(ClassDef *cd)
@@ -362,7 +418,7 @@ static bool classHasVisibleChildren(ClassDef *cd)
return FALSE;
}
-void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,FTVHelp* ftv)
+static void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,FTVHelp* ftv)
{
if (bcl==0) return;
BaseClassListIterator bcli(*bcl);
@@ -449,7 +505,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,F
//----------------------------------------------------------------------------
/*! Generates HTML Help tree of classes */
-void writeClassTree(BaseClassList *cl,int level)
+static void writeClassTree(BaseClassList *cl,int level)
{
if (cl==0) return;
BaseClassListIterator cli(*cl);
@@ -484,10 +540,11 @@ void writeClassTree(BaseClassList *cl,int level)
}
}
+#if 0
//----------------------------------------------------------------------------
/*! Generates HTML Help tree of classes */
-void writeClassTreeNode(ClassDef *cd,bool &started,int level)
+static void writeClassTreeNode(ClassDef *cd,bool &started,int level)
{
//printf("writeClassTreeNode(%s) visited=%d\n",cd->name().data(),cd->visited);
if (cd->isVisibleInHierarchy() && !cd->visited)
@@ -517,7 +574,7 @@ void writeClassTreeNode(ClassDef *cd,bool &started,int level)
}
}
-void writeClassTree(ClassList *cl,int level)
+static void writeClassTree(ClassList *cl,int level)
{
if (cl==0) return;
ClassListIterator cli(*cl);
@@ -532,7 +589,7 @@ void writeClassTree(ClassList *cl,int level)
}
}
-void writeClassTree(ClassSDict *d,int level)
+static void writeClassTree(ClassSDict *d,int level)
{
if (d==0) return;
ClassSDict::Iterator cli(*d);
@@ -546,6 +603,7 @@ void writeClassTree(ClassSDict *d,int level)
writeClassTreeNode(cli.current(),started,level);
}
}
+#endif
//----------------------------------------------------------------------------
@@ -601,7 +659,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
ol.docify(" [external]");
ol.endTypewriter();
}
- Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor());
+ Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE);
if (ftv)
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor());
}
@@ -610,7 +668,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
ol.startIndexItem(0,0);
ol.parseText(cd->displayName());
ol.endIndexItem(0,0);
- Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),0,0,0);
+ Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE);
if (ftv)
ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0);
}
@@ -630,7 +688,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
}
}
-void writeClassHierarchy(OutputList &ol, FTVHelp* ftv)
+static void writeClassHierarchy(OutputList &ol, FTVHelp* ftv)
{
initClassHierarchy(Doxygen::classSDict);
initClassHierarchy(Doxygen::hiddenClasses);
@@ -674,7 +732,7 @@ static int countClassesInTreeList(const ClassSDict &cl)
return count;
}
-int countClassHierarchy()
+static int countClassHierarchy()
{
int count=0;
initClassHierarchy(Doxygen::classSDict);
@@ -686,20 +744,20 @@ int countClassHierarchy()
//----------------------------------------------------------------------------
-void writeHierarchicalIndex(OutputList &ol)
+static void writeHierarchicalIndex(OutputList &ol)
{
if (hierarchyClasses==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassHierarchy);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trClassHierarchy();
startFile(ol,"hierarchy",0, title, HLI_Hierarchy);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"hierarchy",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"hierarchy",0,TRUE,TRUE);
if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
{
ol.disable(OutputGenerator::Latex);
@@ -712,7 +770,7 @@ void writeHierarchicalIndex(OutputList &ol)
ol.enable(OutputGenerator::Latex);
ol.enable(OutputGenerator::RTF);
}
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trClassHierarchyDescription());
ol.endTextBlock();
FTVHelp* ftv = 0;
@@ -741,30 +799,23 @@ void writeHierarchicalIndex(OutputList &ol)
//----------------------------------------------------------------------------
-void writeGraphicalClassHierarchy(OutputList &ol)
+static void writeGraphicalClassHierarchy(OutputList &ol)
{
if (hierarchyClasses==0) return;
ol.disableAllBut(OutputGenerator::Html);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassHierarchy);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trClassHierarchy();
startFile(ol,"inherits",0,title,HLI_Hierarchy,FALSE,"hierarchy");
startTitle(ol,0);
- //if (!Config_getString("PROJECT_NAME").isEmpty())
- //{
- // title.prepend(Config_getString("PROJECT_NAME")+" ");
- //}
ol.parseText(title);
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- //Doxygen::indexList.addContentsItem(FALSE,theTranslator->trGraphicalHierarchy(),0,"inherits",0);
ol.startParagraph();
ol.startTextLink("hierarchy",0);
ol.parseText(theTranslator->trGotoTextualHierarchy());
ol.endTextLink();
ol.endParagraph();
- //parseText(ol,theTranslator->trClassHierarchyDescription());
- //ol.newParagraph();
ol.endTextBlock();
DotGfxHierarchyTable g;
ol.writeGraphicalHierarchy(g);
@@ -774,7 +825,7 @@ void writeGraphicalClassHierarchy(OutputList &ol)
//----------------------------------------------------------------------------
-void countFiles(int &htmlFiles,int &files)
+static void countFiles(int &htmlFiles,int &files)
{
htmlFiles=0;
files=0;
@@ -806,14 +857,15 @@ void countFiles(int &htmlFiles,int &files)
//----------------------------------------------------------------------------
-void writeFileIndex(OutputList &ol)
+static void writeFileIndex(OutputList &ol)
{
if (documentedHtmlFiles==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
if (documentedFiles==0) ol.disableAllBut(OutputGenerator::Html);
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files);
- QCString title = lne->title();
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::FileList);
+ if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files); // fall back
+ QCString title = lne ? lne->title() : theTranslator->trFileList();
startFile(ol,"files",0,title,HLI_Files);
startTitle(ol,0);
//if (!Config_getString("PROJECT_NAME").isEmpty())
@@ -824,9 +876,9 @@ void writeFileIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"files",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"files",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trFileListDescription(Config_getBool("EXTRACT_ALL")));
ol.endTextBlock();
OutputNameDict outputNameDict(1009);
@@ -903,7 +955,7 @@ void writeFileIndex(OutputList &ol)
if (doc)
{
ol.writeObjectLink(0,fd->getOutputFileBase(),0,fd->name());
- Doxygen::indexList.addContentsItem(FALSE,fullName,fd->getReference(),fd->getOutputFileBase(),0);
+ addMembersToIndex(fd,LayoutDocManager::File,fullName,QCString());
}
else
{
@@ -964,7 +1016,7 @@ void writeFileIndex(OutputList &ol)
}
//----------------------------------------------------------------------------
-int countNamespaces()
+static int countNamespaces()
{
int count=0;
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
@@ -978,13 +1030,14 @@ int countNamespaces()
//----------------------------------------------------------------------------
-void writeNamespaceIndex(OutputList &ol)
+static void writeNamespaceIndex(OutputList &ol)
{
if (documentedNamespaces==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces);
- QCString title = lne->title();
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::NamespaceList);
+ if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces); // fall back
+ QCString title = lne ? lne->title() : theTranslator->trNamespaceList();
startFile(ol,"namespaces",0,title,HLI_Namespaces);
startTitle(ol,0);
//if (!Config_getString("PROJECT_NAME").isEmpty())
@@ -995,9 +1048,9 @@ void writeNamespaceIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"namespaces",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"namespaces",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trNamespaceListDescription(Config_getBool("EXTRACT_ALL")));
ol.endTextBlock();
bool first=TRUE;
@@ -1036,7 +1089,8 @@ void writeNamespaceIndex(OutputList &ol)
}
ol.endIndexValue(nd->getOutputFileBase(),hasBrief);
//ol.writeEndAnnoItem(nd->getOutputFileBase());
- Doxygen::indexList.addContentsItem(FALSE,nd->displayName(),nd->getReference(),nd->getOutputFileBase(),0);
+ //Doxygen::indexList.addContentsItem(FALSE,nd->displayName(),nd->getReference(),nd->getOutputFileBase(),0);
+ addMembersToIndex(nd,LayoutDocManager::Namespace,nd->displayName(),QCString());
}
}
if (!first) ol.endIndexList();
@@ -1047,7 +1101,7 @@ void writeNamespaceIndex(OutputList &ol)
//----------------------------------------------------------------------------
-int countAnnotatedClasses(int *cp)
+static int countAnnotatedClasses(int *cp)
{
int count=0;
int countPrinted=0;
@@ -1069,9 +1123,7 @@ int countAnnotatedClasses(int *cp)
}
-//----------------------------------------------------------------------
-
-void writeAnnotatedClassList(OutputList &ol)
+static void writeAnnotatedClassList(OutputList &ol)
{
ol.startIndexList();
ClassSDict::Iterator cli(*Doxygen::classSDict);
@@ -1160,8 +1212,8 @@ void writeAnnotatedClassList(OutputList &ol)
);
}
ol.endIndexValue(cd->getOutputFileBase(),hasBrief);
- //ol.writeEndAnnoItem(cd->getOutputFileBase());
- Doxygen::indexList.addContentsItem(FALSE,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor());
+
+ addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(),cd->anchor());
}
ol.popGeneratorState();
}
@@ -1244,7 +1296,7 @@ class AlphaIndexTableColumns : public QList<AlphaIndexTableRows>
};
// write an alphabetical index of all class with a header for each letter
-void writeAlphabeticalClassList(OutputList &ol)
+static void writeAlphabeticalClassList(OutputList &ol)
{
//ol.startAlphabeticalIndexList();
// What starting letters are used
@@ -1478,17 +1530,17 @@ void writeAlphabeticalClassList(OutputList &ol)
//----------------------------------------------------------------------------
-void writeAlphabeticalIndex(OutputList &ol)
+static void writeAlphabeticalIndex(OutputList &ol)
{
if (annotatedClasses==0) return;
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes);
- QCString title = lne->title();
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassIndex);
+ QCString title = lne ? lne->title() : theTranslator->trCompoundIndex();
startFile(ol,"classes",0,title,HLI_Classes);
startTitle(ol,0);
ol.parseText(title);
- Doxygen::indexList.addContentsItem(TRUE,title,0,"classes",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"classes",0,TRUE,TRUE);
//ol.parseText(/*Config_getString("PROJECT_NAME")+" "+*/
// (fortranOpt ? theTranslator->trCompoundIndexFortran() :
// vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
@@ -1503,7 +1555,7 @@ void writeAlphabeticalIndex(OutputList &ol)
//----------------------------------------------------------------------------
-void writeAnnotatedIndex(OutputList &ol)
+static void writeAnnotatedIndex(OutputList &ol)
{
//printf("writeAnnotatedIndex: count=%d printed=%d\n",
// annotatedClasses,annotatedClassesPrinted);
@@ -1516,8 +1568,9 @@ void writeAnnotatedIndex(OutputList &ol)
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
}
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassAnnotated);
- QCString title = lne->title();
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassList);
+ if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes); // fall back
+ QCString title = lne ? lne->title() : theTranslator->trCompoundList();
startFile(ol,"annotated",0,title,HLI_Annotated);
startTitle(ol,0);
//QCString longTitle = title;
@@ -1529,9 +1582,9 @@ void writeAnnotatedIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"annotated",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"annotated",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trCompoundListDescription());
ol.endTextBlock();
writeAnnotatedClassList(ol);
Doxygen::indexList.decContentsDepth();
@@ -1893,7 +1946,7 @@ void addFileMemberNameToIndex(MemberDef *md)
//----------------------------------------------------------------------------
-void writeQuickMemberIndex(OutputList &ol,
+static void writeQuickMemberIndex(OutputList &ol,
MemberIndexList charUsed[MEMBER_INDEX_ENTRIES],int page,
QCString fullName,bool multiPage)
{
@@ -1974,9 +2027,13 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
QCString extension=Doxygen::htmlFileExtension;
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassMembers);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trCompoundMembers();
if (hl!=CMHL_All) title+=(QCString)" - "+getCmhlInfo(hl)->title;
+ Doxygen::indexList.addContentsItem(multiPageIndex,getCmhlInfo(hl)->title,0,
+ getCmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
+ if (multiPageIndex) Doxygen::indexList.incContentsDepth();
+
int page;
bool first=TRUE;
for (page=0;page<numPages;page++)
@@ -1984,9 +2041,16 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
if (!multiPageIndex || g_memberIndexLetterUsed[hl][page].count()>0)
{
QCString fileName = getCmhlInfo(hl)->fname;
- if (multiPageIndex && !first)
+ if (multiPageIndex)
{
- fileName+=QCString().sprintf("_0x%02x",page);
+ if (!first)
+ {
+ fileName+=QCString().sprintf("_0x%02x",page);
+ }
+ char cs[2];
+ cs[0]=page;
+ cs[1]=0;
+ Doxygen::indexList.addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
bool quickIndex = documentedClassMembers[hl]>maxItemsBeforeQuickIndex;
@@ -1995,50 +2059,52 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_Functions);
- }
- startQuickIndexList(ol);
+ startQuickIndexList(ol);
- // index item for global member list
- startQuickIndexItem(ol,
- getCmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getCmhlInfo(0)->title));
- endQuickIndexItem(ol);
+ // index item for global member list
+ startQuickIndexItem(ol,
+ getCmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getCmhlInfo(0)->title));
+ endQuickIndexItem(ol);
- // index items per category member lists
- int i;
- for (i=1;i<CMHL_Total;i++)
- {
- if (documentedClassMembers[i]>0)
+ int i;
+ // index items per category member lists
+ for (i=1;i<CMHL_Total;i++)
{
- startQuickIndexItem(ol,getCmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getCmhlInfo(i)->title));
- //printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
- // multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
- endQuickIndexItem(ol);
+ if (documentedClassMembers[i]>0)
+ {
+ startQuickIndexItem(ol,getCmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getCmhlInfo(i)->title));
+ //printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
+ // multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- // quick alphabetical index
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_memberIndexLetterUsed[hl],page,
- getCmhlInfo(hl)->fname,multiPageIndex);
+ // quick alphabetical index
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_memberIndexLetterUsed[hl],page,
+ getCmhlInfo(hl)->fname,multiPageIndex);
+ }
}
ol.endQuickIndices();
if (generateTreeView)
{
- ol.writeSplitBar(getCmhlInfo(0)->fname);
+ ol.writeSplitBar(fileName);
}
+ //Doxygen::indexList.addContentsItem(FALSE,title,0,fileName,0);
+
ol.startContents();
if (hl==CMHL_All)
{
ol.startTextBlock();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trCompoundMembersDescription(Config_getBool("EXTRACT_ALL")));
ol.endTextBlock();
}
else
@@ -2056,12 +2122,20 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
first=FALSE;
}
}
+
+ if (multiPageIndex) Doxygen::indexList.decContentsDepth();
ol.popGeneratorState();
}
-void writeClassMemberIndex(OutputList &ol)
+static void writeClassMemberIndex(OutputList &ol)
{
+ if (documentedClassMembers[CMHL_All]>0)
+ {
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassMembers);
+ Doxygen::indexList.addContentsItem(TRUE,lne ? lne->title() : theTranslator->trCompoundMembers(),0,"functions",0);
+ Doxygen::indexList.incContentsDepth();
+ }
writeClassMemberIndexFiltered(ol,CMHL_All);
writeClassMemberIndexFiltered(ol,CMHL_Functions);
writeClassMemberIndexFiltered(ol,CMHL_Variables);
@@ -2071,12 +2145,11 @@ void writeClassMemberIndex(OutputList &ol)
writeClassMemberIndexFiltered(ol,CMHL_Properties);
writeClassMemberIndexFiltered(ol,CMHL_Events);
writeClassMemberIndexFiltered(ol,CMHL_Related);
-
if (documentedClassMembers[CMHL_All]>0)
{
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassMembers);
- Doxygen::indexList.addContentsItem(FALSE,lne->title(),0,"functions",0);
+ Doxygen::indexList.decContentsDepth();
}
+
}
//----------------------------------------------------------------------------
@@ -2128,7 +2201,11 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
QCString extension=Doxygen::htmlFileExtension;
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::FileGlobals);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trFileMembers();
+
+ Doxygen::indexList.addContentsItem(multiPageIndex,getFmhlInfo(hl)->title,0,
+ getFmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
+ if (multiPageIndex) Doxygen::indexList.incContentsDepth();
int page;
bool first=TRUE;
@@ -2137,9 +2214,16 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
if (!multiPageIndex || g_fileIndexLetterUsed[hl][page].count()>0)
{
QCString fileName = getFmhlInfo(hl)->fname;
- if (multiPageIndex && !first)
+ if (multiPageIndex)
{
- fileName+=QCString().sprintf("_0x%02x",page);
+ if (!first)
+ {
+ fileName+=QCString().sprintf("_0x%02x",page);
+ }
+ char cs[2];
+ cs[0]=page;
+ cs[1]=0;
+ Doxygen::indexList.addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
bool quickIndex = documentedFileMembers[hl]>maxItemsBeforeQuickIndex;
@@ -2148,40 +2232,40 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_Globals);
- }
- startQuickIndexList(ol);
+ startQuickIndexList(ol);
- // index item for all member lists
- startQuickIndexItem(ol,
- getFmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getFmhlInfo(0)->title));
- endQuickIndexItem(ol);
+ // index item for all file member lists
+ startQuickIndexItem(ol,
+ getFmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getFmhlInfo(0)->title));
+ endQuickIndexItem(ol);
- int i;
- // index items for per category member lists
- for (i=1;i<FMHL_Total;i++)
- {
- if (documentedFileMembers[i]>0)
+ int i;
+ // index items for per category member lists
+ for (i=1;i<FMHL_Total;i++)
{
- startQuickIndexItem(ol,
- getFmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getFmhlInfo(i)->title));
- endQuickIndexItem(ol);
+ if (documentedFileMembers[i]>0)
+ {
+ startQuickIndexItem(ol,
+ getFmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getFmhlInfo(i)->title));
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_fileIndexLetterUsed[hl],page,
- getFmhlInfo(hl)->fname,multiPageIndex);
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_fileIndexLetterUsed[hl],page,
+ getFmhlInfo(hl)->fname,multiPageIndex);
+ }
}
ol.endQuickIndices();
if (generateTreeView)
{
- ol.writeSplitBar(getFmhlInfo(0)->fname);
+ ol.writeSplitBar(fileName);
}
ol.startContents();
@@ -2189,7 +2273,7 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
if (hl==FMHL_All)
{
ol.startTextBlock();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trFileMembersDescription(Config_getBool("EXTRACT_ALL")));
ol.endTextBlock();
}
else
@@ -2208,11 +2292,18 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
first=FALSE;
}
}
+ if (multiPageIndex) Doxygen::indexList.decContentsDepth();
ol.popGeneratorState();
}
-void writeFileMemberIndex(OutputList &ol)
+static void writeFileMemberIndex(OutputList &ol)
{
+ if (documentedFileMembers[FMHL_All]>0)
+ {
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::FileGlobals);
+ Doxygen::indexList.addContentsItem(FALSE,lne ? lne->title() : theTranslator->trFileMembers(),0,"globals",0);
+ Doxygen::indexList.incContentsDepth();
+ }
writeFileMemberIndexFiltered(ol,FMHL_All);
writeFileMemberIndexFiltered(ol,FMHL_Functions);
writeFileMemberIndexFiltered(ol,FMHL_Variables);
@@ -2220,12 +2311,11 @@ void writeFileMemberIndex(OutputList &ol)
writeFileMemberIndexFiltered(ol,FMHL_Enums);
writeFileMemberIndexFiltered(ol,FMHL_EnumValues);
writeFileMemberIndexFiltered(ol,FMHL_Defines);
-
if (documentedFileMembers[FMHL_All]>0)
{
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::FileGlobals);
- Doxygen::indexList.addContentsItem(FALSE,lne->title(),0,"globals",0);
+ Doxygen::indexList.decContentsDepth();
}
+
}
//----------------------------------------------------------------------------
@@ -2279,7 +2369,11 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
QCString extension=Doxygen::htmlFileExtension;
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::NamespaceMembers);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trNamespaceMembers();
+
+ Doxygen::indexList.addContentsItem(multiPageIndex,getNmhlInfo(hl)->title,0,
+ getNmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
+ if (multiPageIndex) Doxygen::indexList.incContentsDepth();
int page;
bool first=TRUE;
@@ -2288,9 +2382,16 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
if (!multiPageIndex || g_namespaceIndexLetterUsed[hl][page].count()>0)
{
QCString fileName = getNmhlInfo(hl)->fname;
- if (multiPageIndex && !first)
+ if (multiPageIndex)
{
- fileName+=QCString().sprintf("_0x%02x",page);
+ if (!first)
+ {
+ fileName+=QCString().sprintf("_0x%02x",page);
+ }
+ char cs[2];
+ cs[0]=page;
+ cs[1]=0;
+ Doxygen::indexList.addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
bool quickIndex = documentedNamespaceMembers[hl]>maxItemsBeforeQuickIndex;
@@ -2299,39 +2400,41 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_NamespaceMembers);
- }
- startQuickIndexList(ol);
+ startQuickIndexList(ol);
- startQuickIndexItem(ol,
- getNmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getNmhlInfo(0)->title));
- endQuickIndexItem(ol);
+ // index item for all namespace member lists
+ startQuickIndexItem(ol,
+ getNmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getNmhlInfo(0)->title));
+ endQuickIndexItem(ol);
- int i;
- for (i=1;i<NMHL_Total;i++)
- {
- if (documentedNamespaceMembers[i]>0)
+ int i;
+ // index items per category member lists
+ for (i=1;i<NMHL_Total;i++)
{
- startQuickIndexItem(ol,
- getNmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getNmhlInfo(i)->title));
- endQuickIndexItem(ol);
+ if (documentedNamespaceMembers[i]>0)
+ {
+ startQuickIndexItem(ol,
+ getNmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getNmhlInfo(i)->title));
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed[hl],page,
- getNmhlInfo(hl)->fname,multiPageIndex);
- }
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed[hl],page,
+ getNmhlInfo(hl)->fname,multiPageIndex);
+ }
+ }
ol.endQuickIndices();
if (generateTreeView)
{
- ol.writeSplitBar(getNmhlInfo(0)->fname);
+ ol.writeSplitBar(fileName);
}
ol.startContents();
@@ -2339,7 +2442,7 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
if (hl==NMHL_All)
{
ol.startTextBlock();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trNamespaceMemberDescription(Config_getBool("EXTRACT_ALL")));
ol.endTextBlock();
}
else
@@ -2358,11 +2461,18 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
endFile(ol);
}
}
+ if (multiPageIndex) Doxygen::indexList.decContentsDepth();
ol.popGeneratorState();
}
-void writeNamespaceMemberIndex(OutputList &ol)
+static void writeNamespaceMemberIndex(OutputList &ol)
{
+ if (documentedNamespaceMembers[NMHL_All]>0)
+ {
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::NamespaceMembers);
+ Doxygen::indexList.addContentsItem(FALSE,lne ? lne->title() : theTranslator->trNamespaceMembers(),0,"namespacemembers",0);
+ Doxygen::indexList.incContentsDepth();
+ }
//bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
writeNamespaceMemberIndexFiltered(ol,NMHL_All);
writeNamespaceMemberIndexFiltered(ol,NMHL_Functions);
@@ -2370,12 +2480,11 @@ void writeNamespaceMemberIndex(OutputList &ol)
writeNamespaceMemberIndexFiltered(ol,NMHL_Typedefs);
writeNamespaceMemberIndexFiltered(ol,NMHL_Enums);
writeNamespaceMemberIndexFiltered(ol,NMHL_EnumValues);
-
if (documentedNamespaceMembers[NMHL_All]>0)
{
- LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::NamespaceMembers);
- Doxygen::indexList.addContentsItem(FALSE,lne->title(),0,"namespacemembers",0);
+ Doxygen::indexList.decContentsDepth();
}
+
}
//----------------------------------------------------------------------------
@@ -3035,22 +3144,22 @@ void writeSearchCategories(FTextStream &t)
//----------------------------------------------------------------------------
-void writeExampleIndex(OutputList &ol)
+static void writeExampleIndex(OutputList &ol)
{
if (Doxygen::exampleSDict->count()==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Examples);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trExamples();
startFile(ol,"examples",0,title,HLI_Examples);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"examples",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"examples",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trExamplesDescription());
ol.endTextBlock();
ol.startItemList();
PageSDict::Iterator pdi(*Doxygen::exampleSDict);
@@ -3062,12 +3171,12 @@ void writeExampleIndex(OutputList &ol)
if (!pd->title().isEmpty())
{
ol.writeObjectLink(0,n,0,pd->title());
- Doxygen::indexList.addContentsItem(FALSE,filterTitle(pd->title()),pd->getReference(),n,0);
+ Doxygen::indexList.addContentsItem(FALSE,filterTitle(pd->title()),pd->getReference(),n,0,FALSE,TRUE);
}
else
{
ol.writeObjectLink(0,n,0,pd->name());
- Doxygen::indexList.addContentsItem(FALSE,pd->name(),pd->getReference(),n,0);
+ Doxygen::indexList.addContentsItem(FALSE,pd->name(),pd->getReference(),n,0,FALSE,TRUE);
}
ol.endItemListItem();
ol.writeString("\n");
@@ -3156,7 +3265,7 @@ bool writeMemberNavIndex(FTextStream &t,
//----------------------------------------------------------------------------
-bool writeFullNavIndex(FTextStream &t, LayoutNavEntry *root,int indent,bool &first)
+static bool writeFullNavIndex(FTextStream &t, LayoutNavEntry *root,int indent,bool &first)
{
static struct NavEntryCountMap
{
@@ -3168,12 +3277,15 @@ bool writeFullNavIndex(FTextStream &t, LayoutNavEntry *root,int indent,bool &fir
{ LayoutNavEntry::Pages, indexedPages>0 },
{ LayoutNavEntry::Modules, documentedGroups>0 },
{ LayoutNavEntry::Namespaces, documentedNamespaces>0 },
+ { LayoutNavEntry::NamespaceList, documentedNamespaces>0 },
{ LayoutNavEntry::NamespaceMembers, documentedNamespaceMembers[NMHL_All]>0 },
{ LayoutNavEntry::Classes, annotatedClasses>0 },
- { LayoutNavEntry::ClassAnnotated, annotatedClasses>0 },
+ { LayoutNavEntry::ClassList, annotatedClasses>0 },
+ { LayoutNavEntry::ClassIndex, annotatedClasses>0 },
{ LayoutNavEntry::ClassHierarchy, hierarchyClasses>0 },
{ LayoutNavEntry::ClassMembers, documentedClassMembers[CMHL_All]>0 },
{ LayoutNavEntry::Files, documentedFiles>0 },
+ { LayoutNavEntry::FileList, documentedFiles>0 },
{ LayoutNavEntry::FileGlobals, documentedFileMembers[FMHL_All]>0 },
{ LayoutNavEntry::Dirs, documentedDirs>0 },
{ LayoutNavEntry::Examples, Doxygen::exampleSDict->count()>0 }
@@ -3237,7 +3349,7 @@ bool writeFullNavIndex(FTextStream &t, LayoutNavEntry *root,int indent,bool &fir
//----------------------------------------------------------------------------
-void countRelatedPages(int &docPages,int &indexPages)
+static void countRelatedPages(int &docPages,int &indexPages)
{
docPages=indexPages=0;
PageSDict::Iterator pdi(*Doxygen::pageSDict);
@@ -3278,7 +3390,7 @@ static void writeSubPages(PageDef *pd)
bool hasSubPages = subPage->hasSubPages();
- Doxygen::indexList.addContentsItem(hasSubPages,pageTitle,subPage->getReference(),subPage->getOutputFileBase(),0);
+ Doxygen::indexList.addContentsItem(hasSubPages,pageTitle,subPage->getReference(),subPage->getOutputFileBase(),0,hasSubPages,TRUE);
writeSubPages(subPage);
}
}
@@ -3286,13 +3398,13 @@ static void writeSubPages(PageDef *pd)
}
-void writePageIndex(OutputList &ol)
+static void writePageIndex(OutputList &ol)
{
if (indexedPages==0) return;
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Pages);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trRelatedPages();
startFile(ol,"pages",0,title,HLI_Pages);
startTitle(ol,0);
//if (!Config_getString("PROJECT_NAME").isEmpty())
@@ -3303,9 +3415,9 @@ void writePageIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"pages",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"pages",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trRelatedPagesDescription());
ol.endTextBlock();
startIndexHierarchy(ol,0);
PageSDict::Iterator pdi(*Doxygen::pageSDict);
@@ -3334,7 +3446,7 @@ void writePageIndex(OutputList &ol)
ol.endTypewriter();
}
ol.writeString("\n");
- Doxygen::indexList.addContentsItem(hasSubPages,filterTitle(pageTitle),pd->getReference(),pd->getOutputFileBase(),0);
+ Doxygen::indexList.addContentsItem(hasSubPages,filterTitle(pageTitle),pd->getReference(),pd->getOutputFileBase(),0,hasSubPages,TRUE);
writeSubPages(pd);
ol.endIndexListItem();
}
@@ -3347,7 +3459,7 @@ void writePageIndex(OutputList &ol)
//----------------------------------------------------------------------------
-int countGroups()
+static int countGroups()
{
int count=0;
GroupSDict::Iterator gli(*Doxygen::groupSDict);
@@ -3365,7 +3477,7 @@ int countGroups()
//----------------------------------------------------------------------------
-int countDirs()
+static int countDirs()
{
int count=0;
SDict<DirDef>::Iterator dli(*Doxygen::directories);
@@ -3413,7 +3525,7 @@ void writeGraphInfo(OutputList &ol)
ol.popGeneratorState();
}
-void writeGroupIndexItem(GroupDef *gd,MemberList *ml,const QCString &title)
+static void writeGroupIndexItem(GroupDef *gd,MemberList *ml,const QCString &title)
{
if (ml && ml->count()>0)
{
@@ -3426,10 +3538,10 @@ void writeGroupIndexItem(GroupDef *gd,MemberList *ml,const QCString &title)
if (first)
{
first=FALSE;
- Doxygen::indexList.addContentsItem(TRUE, convertToHtml(title,TRUE), gd->getReference(), gd->getOutputFileBase(), 0);
+ Doxygen::indexList.addContentsItem(TRUE, convertToHtml(title,TRUE), gd->getReference(), gd->getOutputFileBase(), 0,TRUE,FALSE);
Doxygen::indexList.incContentsDepth();
}
- Doxygen::indexList.addContentsItem(FALSE,md->name(),md->getReference(),md->getOutputFileBase(),md->anchor());
+ Doxygen::indexList.addContentsItem(FALSE,md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE,TRUE);
}
md=ml->next();
}
@@ -3488,7 +3600,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp* ftv)
bool isDir = hasSubGroups || hasSubPages || numSubItems>0;
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
- Doxygen::indexList.addContentsItem(isDir,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0);
+ Doxygen::indexList.addContentsItem(isDir,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0,isDir,TRUE);
Doxygen::indexList.incContentsDepth();
if (ftv)
{
@@ -3524,7 +3636,9 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp* ftv)
convertToHtml(pd->title(),TRUE),
gd->getReference(),
gd->getOutputFileBase(),
- si ? si->label.data() : 0);
+ si ? si->label.data() : 0,
+ FALSE,
+ TRUE); // addToNavIndex
}
// write subgroups
@@ -3643,7 +3757,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp* ftv)
}
}
-void writeGroupHierarchy(OutputList &ol, FTVHelp* ftv)
+static void writeGroupHierarchy(OutputList &ol, FTVHelp* ftv)
{
if (ftv)
{
@@ -3667,7 +3781,7 @@ void writeGroupHierarchy(OutputList &ol, FTVHelp* ftv)
}
//----------------------------------------------------------------------------
-void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv)
+static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv)
{
if (level>20)
{
@@ -3684,7 +3798,7 @@ void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv)
dd->getFiles() && dd->getFiles()->count()>0 // there are files
);
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
- Doxygen::indexList.addContentsItem(isDir,dd->shortName(),dd->getReference(),dd->getOutputFileBase(),0);
+ Doxygen::indexList.addContentsItem(isDir,dd->shortName(),dd->getReference(),dd->getOutputFileBase(),0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
if (ftv)
{
@@ -3725,7 +3839,10 @@ void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv)
FileDef *fd=fileList->first();
while (fd)
{
- Doxygen::indexList.addContentsItem(FALSE, convertToHtml(fd->name(),TRUE),fd->getReference(), fd->getOutputFileBase(), 0);
+ if (fd->isLinkable())
+ {
+ Doxygen::indexList.addContentsItem(FALSE, convertToHtml(fd->name(),TRUE),fd->getReference(), fd->getOutputFileBase(), 0);
+ }
fd=fileList->next();
}
}
@@ -3737,7 +3854,7 @@ void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv)
ftv->decContentsDepth();
}
-void writeDirHierarchy(OutputList &ol, FTVHelp* ftv)
+static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv)
{
if (ftv)
{
@@ -3758,13 +3875,13 @@ void writeDirHierarchy(OutputList &ol, FTVHelp* ftv)
//----------------------------------------------------------------------------
-void writeGroupIndex(OutputList &ol)
+static void writeGroupIndex(OutputList &ol)
{
if (documentedGroups==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Modules);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trModules();
startFile(ol,"modules",0,title,HLI_Modules);
startTitle(ol,0);
//QCString title = theTranslator->trModules();
@@ -3776,9 +3893,9 @@ void writeGroupIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"modules",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"modules",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trModulesDescription());
ol.endTextBlock();
FTVHelp* ftv = 0;
@@ -3808,13 +3925,13 @@ void writeGroupIndex(OutputList &ol)
//----------------------------------------------------------------------------
-void writeDirIndex(OutputList &ol)
+static void writeDirIndex(OutputList &ol)
{
if (documentedDirs==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Dirs);
- QCString title = lne->title();
+ QCString title = lne ? lne->title() : theTranslator->trDirectories();
startFile(ol,"dirs",0,title,HLI_Directories);
startTitle(ol,0);
//if (!Config_getString("PROJECT_NAME").isEmpty())
@@ -3825,9 +3942,9 @@ void writeDirIndex(OutputList &ol)
endTitle(ol,0,0);
ol.startContents();
ol.startTextBlock();
- Doxygen::indexList.addContentsItem(TRUE,title,0,"dirs",0);
+ Doxygen::indexList.addContentsItem(TRUE,title,0,"dirs",0,TRUE,TRUE);
Doxygen::indexList.incContentsDepth();
- ol.parseText(lne->intro());
+ ol.parseText(lne ? lne->intro() : theTranslator->trDirDescription());
ol.endTextBlock();
FTVHelp* ftv = 0;
@@ -3867,7 +3984,7 @@ static bool mainPageHasTitle()
//----------------------------------------------------------------------------
-void writeIndex(OutputList &ol)
+static void writeIndex(OutputList &ol)
{
static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
@@ -3923,7 +4040,7 @@ void writeIndex(OutputList &ol)
if (Doxygen::mainPage)
{
- Doxygen::indexList.addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0);
+ Doxygen::indexList.addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0,Doxygen::mainPage->hasSubPages(),TRUE);
if (Doxygen::mainPage->hasSubPages())
{
@@ -4183,7 +4300,7 @@ void writeIndex(OutputList &ol)
ol.parseText(/*projPrefix+*/(fortranOpt?theTranslator->trModuleDocumentation():theTranslator->trNamespaceDocumentation()));
ol.endIndexSection(isNamespaceDocumentation);
}
- if (annotatedClasses>0)
+ if (annotatedClassesPrinted>0)
{
ol.startIndexSection(isClassDocumentation);
ol.parseText(/*projPrefix+*/(fortranOpt?theTranslator->trTypeDocumentation():theTranslator->trClassDocumentation()));
@@ -4223,5 +4340,160 @@ void writeIndex(OutputList &ol)
ol.popGeneratorState();
}
+static QArray<bool> indexWritten;
+
+static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry> &entries)
+{
+ QListIterator<LayoutNavEntry> li(entries);
+ LayoutNavEntry *lne;
+ for (li.toFirst();(lne=li.current());++li)
+ {
+ LayoutNavEntry::Kind kind = lne->kind();
+ uint index = (uint)kind;
+ if (index>=indexWritten.size())
+ {
+ uint i;
+ uint oldSize = indexWritten.size();
+ uint newSize = index+1;
+ indexWritten.resize(newSize);
+ for (i=oldSize;i<newSize;i++) indexWritten.at(i)=FALSE;
+ }
+ //printf("starting %s kind=%d\n",lne->title().data(),lne->kind());
+ bool needsClosing=FALSE;
+ if (!indexWritten.at(index))
+ {
+ switch(kind)
+ {
+ case LayoutNavEntry::MainPage:
+ msg("Generating index page...\n");
+ writeIndex(ol);
+ break;
+ case LayoutNavEntry::Pages:
+ msg("Generating page index...\n");
+ writePageIndex(ol);
+ break;
+ case LayoutNavEntry::Modules:
+ msg("Generating module index...\n");
+ writeGroupIndex(ol);
+ break;
+ case LayoutNavEntry::Namespaces:
+ {
+ if (documentedNamespaces>0)
+ {
+ Doxygen::indexList.addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList.incContentsDepth();
+ needsClosing=TRUE;
+ }
+ if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces)!=lne) // for backward compatibility with old layout file
+ {
+ msg("Generating namespace index...\n");
+ writeNamespaceIndex(ol);
+ }
+ }
+ break;
+ case LayoutNavEntry::NamespaceList:
+ msg("Generating namespace index...\n");
+ writeNamespaceIndex(ol);
+ break;
+ case LayoutNavEntry::NamespaceMembers:
+ msg("Generating namespace member index...\n");
+ writeNamespaceMemberIndex(ol);
+ break;
+ case LayoutNavEntry::Classes:
+ if (annotatedClasses>0)
+ {
+ Doxygen::indexList.addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList.incContentsDepth();
+ needsClosing=TRUE;
+ }
+ if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes)!=lne) // for backward compatibility with old layout file
+ {
+ msg("Generating annotated compound index...\n");
+ writeAnnotatedIndex(ol);
+ }
+ break;
+ case LayoutNavEntry::ClassList:
+ msg("Generating annotated compound index...\n");
+ writeAnnotatedIndex(ol);
+ break;
+ case LayoutNavEntry::ClassIndex:
+ msg("Generating alphabetical compound index...\n");
+ writeAlphabeticalIndex(ol);
+ break;
+ case LayoutNavEntry::ClassHierarchy:
+ msg("Generating hierarchical class index...\n");
+ writeHierarchicalIndex(ol);
+ if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
+ {
+ msg("Generating graphical class hierarchy...\n");
+ writeGraphicalClassHierarchy(ol);
+ }
+ break;
+ case LayoutNavEntry::ClassMembers:
+ msg("Generating member index...\n");
+ writeClassMemberIndex(ol);
+ break;
+ case LayoutNavEntry::Files:
+ if (documentedHtmlFiles>0)
+ {
+ Doxygen::indexList.addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList.incContentsDepth();
+ needsClosing=TRUE;
+ }
+ if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files)!=lne) // for backward compatibility with old layout file
+ {
+ msg("Generating file index...\n");
+ writeFileIndex(ol);
+ }
+ break;
+ case LayoutNavEntry::FileList:
+ msg("Generating file index...\n");
+ writeFileIndex(ol);
+ break;
+ case LayoutNavEntry::FileGlobals:
+ msg("Generating file member index...\n");
+ writeFileMemberIndex(ol);
+ break;
+ case LayoutNavEntry::Dirs:
+ if (Config_getBool("SHOW_DIRECTORIES"))
+ {
+ msg("Generating directory index...\n");
+ writeDirIndex(ol);
+ }
+ break;
+ case LayoutNavEntry::Examples:
+ msg("Generating example index...\n");
+ writeExampleIndex(ol);
+ break;
+ case LayoutNavEntry::User:
+ break;
+ }
+ indexWritten.at(index)=TRUE;
+ }
+ writeIndexHierarchyEntries(ol,lne->children());
+ if (needsClosing)
+ {
+ switch(kind)
+ {
+ case LayoutNavEntry::Namespaces:
+ case LayoutNavEntry::Classes:
+ case LayoutNavEntry::Files:
+ Doxygen::indexList.decContentsDepth();
+ break;
+ default:
+ break;
+ }
+ }
+ //printf("ending %s kind=%d\n",lne->title().data(),lne->kind());
+ }
+}
+void writeIndexHierarchy(OutputList &ol)
+{
+ LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry();
+ if (lne)
+ {
+ writeIndexHierarchyEntries(ol,lne->children());
+ }
+}
diff --git a/src/index.h b/src/index.h
index 51a31c5..b307dca 100644
--- a/src/index.h
+++ b/src/index.h
@@ -36,8 +36,9 @@ class IndexIntf
virtual void finalize() = 0;
virtual void incContentsDepth() = 0;
virtual void decContentsDepth() = 0;
- virtual void addContentsItem(bool isDir, const char *name, const char *ref = 0,
- const char *file = 0, const char *anchor = 0) = 0;
+ virtual void addContentsItem(bool isDir, const char *name, const char *ref,
+ const char *file, const char *anchor, bool separateIndex,
+ bool addToNavIndex) = 0;
virtual void addIndexItem(Definition *context,MemberDef *md,const char *title) = 0;
virtual void addIndexFile(const char *name) = 0;
virtual void addImageFile(const char *name) = 0;
@@ -90,6 +91,20 @@ class IndexList : public IndexIntf
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5);
}
+ template<typename A1,typename A2,typename A3,typename A4,typename A5,typename A6>
+ void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5,A6),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)
+ {
+ QListIterator<IndexIntf> li(m_intfs);
+ for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5,a6);
+ }
+
+ template<typename A1,typename A2,typename A3,typename A4,typename A5,typename A6,typename A7>
+ void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5,A6,A7),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)
+ {
+ QListIterator<IndexIntf> li(m_intfs);
+ for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5,a6,a7);
+ }
+
public:
/** Creates a list of indexes */
IndexList() { m_intfs.setAutoDelete(TRUE); }
@@ -106,10 +121,10 @@ class IndexList : public IndexIntf
{ foreach(&IndexIntf::incContentsDepth); }
void decContentsDepth()
{ foreach(&IndexIntf::decContentsDepth); }
- void addContentsItem(bool isDir, const char *name, const char *ref = 0,
- const char *file = 0, const char *anchor = 0)
- { foreach<bool,const char *,const char *,const char *,const char*>
- (&IndexIntf::addContentsItem,isDir,name,ref,file,anchor); }
+ void addContentsItem(bool isDir, const char *name, const char *ref,
+ const char *file, const char *anchor,bool separateIndex=FALSE,bool addToNavIndex=FALSE)
+ { foreach<bool,const char *,const char *,const char *,const char*,bool,bool>
+ (&IndexIntf::addContentsItem,isDir,name,ref,file,anchor,separateIndex,addToNavIndex); }
void addIndexItem(Definition *context,MemberDef *md,const char *title=0)
{ foreach<Definition *,MemberDef *>
(&IndexIntf::addIndexItem,context,md,title); }
@@ -219,28 +234,8 @@ enum ClassHighlight
CHL_Total = CHL_Exceptions+1
};
-void writeIndex(OutputList &ol);
-void writeHierarchicalIndex(OutputList &ol);
-void writeAlphabeticalIndex(OutputList &ol);
-void writeClassHierarchy(OutputList &ol);
-void writeAnnotatedIndex(OutputList &ol);
-void writeAnnotatedClassList(OutputList &ol);
-void writeMemberList(OutputList &ol,bool useSections);
-void writeSourceIndex(OutputList &ol);
-void writeHeaderIndex(OutputList &ol);
-void writeHeaderFileList(OutputList &ol);
-void writeExampleIndex(OutputList &ol);
-void writePageIndex(OutputList &ol);
-void writeFileIndex(OutputList &ol);
-void writeNamespaceIndex(OutputList &ol);
-void writeGroupIndex(OutputList &ol);
-void writeDirIndex(OutputList &ol);
-void writePackageIndex(OutputList &ol);
-void writeClassMemberIndex(OutputList &ol);
-void writeFileMemberIndex(OutputList &ol);
-void writeNamespaceMemberIndex(OutputList &ol);
-void writeGraphicalClassHierarchy(OutputList &ol);
void writeGraphInfo(OutputList &ol);
+void writeIndexHierarchy(OutputList &ol);
void countDataStructures();
@@ -253,9 +248,9 @@ extern int indexedPages;
extern int documentedClassMembers[CMHL_Total];
extern int documentedFileMembers[FMHL_Total];
extern int documentedNamespaceMembers[NMHL_Total];
+extern int documentedDirs;
extern int documentedHtmlFiles;
extern int documentedPages;
-extern int documentedDirs;
void startTitle(OutputList &ol,const char *fileName,Definition *def=0);
void endTitle(OutputList &ol,const char *fileName,const char *name);
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index d28f5e0..c3b9c6f 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -1606,7 +1606,7 @@ void LatexGenerator::startTitleHead(const char *fileName)
static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
if (usePDFLatex && pdfHyperlinks && fileName)
{
- t << "\\hypertarget{" << stripPath(fileName) << "}{" << endl;
+ t << "\\hypertarget{" << stripPath(fileName) << "}{";
}
if (Config_getBool("COMPACT_LATEX"))
{
@@ -2514,7 +2514,7 @@ void LatexGenerator::lineBreak(const char *)
void LatexGenerator::startMemberDocSimple()
{
- t << "\\begin{DoxyFields}{" << endl;
+ t << "\\begin{DoxyFields}{";
docify(theTranslator->trCompoundMembers());
t << "}" << endl;
}
diff --git a/src/latexgen.h b/src/latexgen.h
index cfa7375..85c0b3f 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -47,6 +47,7 @@ class LatexGenerator : public OutputGenerator
void printDoc(DocNode *,const char *);
void startFile(const char *name,const char *manName,const char *title);
+ void writeSearchInfo() {}
void writeFooter() {}
void endFile();
void clearBuffer();
diff --git a/src/layout.cpp b/src/layout.cpp
index 011141b..e108046 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -832,6 +832,13 @@ class LayoutParser : public QXmlDefaultHandler
javaOpt ? theTranslator->trPackageListDescription() : fortranOpt ? theTranslator->trModulesListDescription(extractAll) : theTranslator->trNamespaceListDescription(extractAll),
"namespaces"
},
+ { "namespacelist",
+ LayoutNavEntry::NamespaceList,
+ javaOpt ? theTranslator->trPackages() : fortranOpt ? theTranslator->trModulesList() : theTranslator->trNamespaceList(),
+ QCString(),
+ javaOpt ? theTranslator->trPackageListDescription() : fortranOpt ? theTranslator->trModulesListDescription(extractAll) : theTranslator->trNamespaceListDescription(extractAll),
+ "namespaces"
+ },
{ "namespacemembers",
LayoutNavEntry::NamespaceMembers,
javaOpt ? theTranslator->trPackageMembers() : fortranOpt ? theTranslator->trModulesMembers() : theTranslator->trNamespaceMembers(),
@@ -840,19 +847,26 @@ class LayoutParser : public QXmlDefaultHandler
"namespacemembers"
},
{ "classindex",
- LayoutNavEntry::Classes,
+ LayoutNavEntry::ClassIndex,
fortranOpt ? theTranslator->trDataTypes() : vhdlOpt ? VhdlDocGen::trDesignUnits() : theTranslator->trCompoundIndex(),
QCString(),
QCString(),
"classes"
},
{ "classes",
- LayoutNavEntry::ClassAnnotated,
+ LayoutNavEntry::Classes,
fortranOpt ? theTranslator->trCompoundListFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitList() : theTranslator->trClasses(),
theTranslator->trCompoundList(),
fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
"annotated"
},
+ { "classlist",
+ LayoutNavEntry::ClassList,
+ theTranslator->trCompoundList(),
+ QCString(),
+ fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
+ "annotated"
+ },
{ "hierarchy",
LayoutNavEntry::ClassHierarchy,
vhdlOpt ? VhdlDocGen::trDesignUnitHierarchy() : theTranslator->trClassHierarchy(),
@@ -874,6 +888,13 @@ class LayoutParser : public QXmlDefaultHandler
theTranslator->trFileListDescription(extractAll),
"files"
},
+ { "filelist",
+ LayoutNavEntry::FileList,
+ theTranslator->trFileList(),
+ QCString(),
+ theTranslator->trFileListDescription(extractAll),
+ "files"
+ },
{ "globals",
LayoutNavEntry::FileGlobals,
theTranslator->trFileMembers(),
diff --git a/src/layout.h b/src/layout.h
index 47ba5f3..867a058 100644
--- a/src/layout.h
+++ b/src/layout.h
@@ -115,12 +115,15 @@ struct LayoutNavEntry
Pages,
Modules,
Namespaces,
+ NamespaceList,
NamespaceMembers,
- Classes,
- ClassAnnotated,
+ Classes,
+ ClassList,
+ ClassIndex,
ClassHierarchy,
ClassMembers,
Files,
+ FileList,
FileGlobals,
Dirs,
Examples,
diff --git a/src/layout_default.h b/src/layout_default.h
index 06af510..7ed1629 100644
--- a/src/layout_default.h
+++ b/src/layout_default.h
@@ -5,17 +5,17 @@
" <tab type=\"pages\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"modules\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"namespaces\" visible=\"yes\" title=\"\">\n"
-" <tab type=\"namespaces\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
+" <tab type=\"namespacelist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"namespacemembers\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"classes\" visible=\"yes\" title=\"\">\n"
-" <tab type=\"classes\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
+" <tab type=\"classlist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"classindex\" visible=\"$ALPHABETICAL_INDEX\" title=\"\"/> \n"
" <tab type=\"hierarchy\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"classmembers\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"files\" visible=\"yes\" title=\"\">\n"
-" <tab type=\"files\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
+" <tab type=\"filelist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"globals\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"dirs\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
diff --git a/src/layout_default.xml b/src/layout_default.xml
index 8ef0c12..5b60278 100644
--- a/src/layout_default.xml
+++ b/src/layout_default.xml
@@ -5,17 +5,17 @@
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="yes" title="">
- <tab type="namespaces" visible="yes" title="" intro=""/>
+ <tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
- <tab type="classes" visible="yes" title="" intro=""/>
+ <tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
- <tab type="files" visible="yes" title="" intro=""/>
+ <tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="dirs" visible="yes" title="" intro=""/>
diff --git a/src/libdoxygen.t b/src/libdoxygen.t
index cc69203..e2c17b7 100644
--- a/src/libdoxygen.t
+++ b/src/libdoxygen.t
@@ -149,6 +149,9 @@ jquery_js.h: jquery.js
jquery_ui_js.h: jquery_ui.js
cat jquery_ui.js | $(TO_C_CMD) >jquery_ui_js.h
+jquery_fx_js.h: jquery_fx.js
+ cat jquery_fx.js | $(TO_C_CMD) >jquery_fx_js.h
+
sizzle_js.h: sizzle.js
cat sizzle.js | $(TO_C_CMD) >sizzle_js.h
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index ff56f2c..541a5e1 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -965,7 +965,7 @@ void ManDocVisitor::filter(const char *str)
{
switch(c)
{
- case '.': m_t << "'\\&."; break; // see bug652277
+ case '.': m_t << "\\&."; break; // see bug652277
case '\\': m_t << "\\\\"; break;
case '"': c = '\''; // fall through
default: m_t << c; break;
diff --git a/src/mangen.h b/src/mangen.h
index d312ecc..c2c1ba2 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -44,6 +44,7 @@ class ManGenerator : public OutputGenerator
static void init();
void startFile(const char *name,const char *manName,const char *title);
+ void writeSearchInfo() {}
void writeFooter() {}
void endFile();
void clearBuffer();
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 3cca845..1ef623c 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -542,6 +542,7 @@ void MemberList::writeDocumentation(OutputList &ol,
ol.endMemberDocList();
}
+// members in a table
void MemberList::writeSimpleDocumentation(OutputList &ol,
Definition *container)
{
@@ -559,6 +560,7 @@ void MemberList::writeSimpleDocumentation(OutputList &ol,
ol.endMemberDocSimple();
}
+// separate member pages
void MemberList::writeDocumentationPage(OutputList &ol,
const char *scopeName, Definition *container)
{
@@ -573,35 +575,36 @@ void MemberList::writeDocumentationPage(OutputList &ol,
container->getOutputFileBase());
if (!generateTreeView)
{
- container->writeNavigationPath(ol);
+ container->writeNavigationPath(ol,FALSE);
ol.endQuickIndices();
}
ol.startContents();
- ol.writeString("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
- " <tr>\n"
- " <td valign=\"top\">\n");
-
- container->writeQuickMemberLinks(ol,md);
-
- ol.writeString(" </td>\n");
- ol.writeString(" <td valign=\"top\" class=\"mempage\">\n");
-
- md->writeDocumentation(this,ol,scopeName,container,m_inGroup);
-
- ol.writeString(" </td>\n");
- ol.writeString(" </tr>\n");
- ol.writeString("</table>\n");
-
if (generateTreeView)
{
+ md->writeDocumentation(this,ol,scopeName,container,m_inGroup);
ol.endContents();
container->writeNavigationPath(ol);
endFile(ol,TRUE);
}
else
{
+ ol.writeString("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
+ " <tr>\n"
+ " <td valign=\"top\">\n");
+
+ container->writeQuickMemberLinks(ol,md);
+
+ ol.writeString(" </td>\n");
+ ol.writeString(" <td valign=\"top\" class=\"mempage\">\n");
+
+ md->writeDocumentation(this,ol,scopeName,container,m_inGroup);
+
+ ol.writeString(" </td>\n");
+ ol.writeString(" </tr>\n");
+ ol.writeString("</table>\n");
+
endFile(ol);
}
}
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 69e016e..39904f0 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -633,7 +633,7 @@ void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) co
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
- ol.writeString(md->localName());
+ ol.writeString(convertToHtml(md->localName()));
ol.writeString("</a>");
}
ol.writeString("</td></tr>\n");
diff --git a/src/navtree.css b/src/navtree.css
index a87fa62..2166b6f 100644
--- a/src/navtree.css
+++ b/src/navtree.css
@@ -119,5 +119,9 @@
background-color: ##FA;
}
-
+@media print
+{
+ #nav-tree { display: none; }
+ div.ui-resizable-handle { display: none; position: relative; }
+}
diff --git a/src/navtree.js b/src/navtree.js
index 1301083..ed37aa7 100644
--- a/src/navtree.js
+++ b/src/navtree.js
@@ -1,3 +1,29 @@
+function getData(varName)
+{
+ var i = varName.lastIndexOf('/');
+ var n = i>=0 ? varName.substring(i+1) : varName;
+ return eval(n);
+}
+
+function stripPath(uri)
+{
+ return uri.substring(uri.lastIndexOf('/')+1);
+}
+
+function getScript(scriptName,func,show)
+{
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement('script');
+ script.id = scriptName;
+ script.type = 'text/javascript';
+ script.onload = func;
+ script.src = scriptName+'.js';
+ script.onreadystatechange = function() {
+ if (script.readyState == 'complete') { func(); if (show) showRoot(); }
+ };
+ head.appendChild(script);
+}
+
function createIndent(o,domNode,node,level)
{
if (node.parentNode && node.parentNode.parentNode)
@@ -5,6 +31,8 @@ function createIndent(o,domNode,node,level)
createIndent(o,domNode,node.parentNode,level+1);
}
var imgNode = document.createElement("img");
+ imgNode.width = 16;
+ imgNode.height = 22;
if (level==0 && node.childrenData)
{
node.plus_img = imgNode;
@@ -27,7 +55,7 @@ function createIndent(o,domNode,node,level)
}
else
{
- expandNode(o, node, false);
+ expandNode(o, node, false, false);
}
}
node.expandToggle.appendChild(imgNode);
@@ -104,10 +132,38 @@ function newNode(o, po, text, link, childrenData, lastNode)
var a = document.createElement("a");
node.labelSpan.appendChild(a);
node.label = document.createTextNode(text);
+ node.expanded = false;
a.appendChild(node.label);
if (link)
{
- a.href = node.relpath+link;
+ a.className = stripPath(link.replace('#',':'));
+ if (link.indexOf('#')!=-1)
+ {
+ var aname = '#'+link.split('#')[1];
+ var srcPage = stripPath($(location).attr('pathname'));
+ var targetPage = stripPath(link.split('#')[0]);
+ a.href = srcPage!=targetPage ? node.relpath+link : '#';
+ a.onclick = function(){
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ $(a).parent().parent().addClass('selected');
+ $(a).parent().parent().attr('id','selected');
+ var anchor = $(aname);
+ var targetDiv = anchor.next();
+ $(targetDiv).children('.memproto,.memdoc').effect("highlight",{},3000);
+ $("#doc-content").animate({
+ scrollTop: anchor.position().top +
+ $('#doc-content').scrollTop() -
+ $('#doc-content').offset().top
+ },500,function(){
+ $(location).attr('href',aname);
+ });
+ };
+ }
+ else
+ {
+ a.href = node.relpath+link;
+ }
}
else
{
@@ -116,7 +172,6 @@ function newNode(o, po, text, link, childrenData, lastNode)
a.className = "nolink";
a.href = "javascript:void(0)";
a.onclick = node.expandToggle.onclick;
- node.expanded = false;
}
}
@@ -141,34 +196,128 @@ function showRoot()
var headerHeight = $("#top").height();
var footerHeight = $("#nav-path").height();
var windowHeight = $(window).height() - headerHeight - footerHeight;
- navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
+ (function (){ // retry until we can scroll to the selected item
+ try {
+ navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
+ } catch (err) {
+ setTimeout(arguments.callee, 0);
+ }
+ })();
}
-function expandNode(o, node, imm)
+function expandNode(o, node, imm, showRoot)
{
if (node.childrenData && !node.expanded)
{
- if (!node.childrenVisited)
+ if (typeof(node.childrenData)==='string')
{
- getNode(o, node);
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ expandNode(o, node, imm, showRoot);
+ }, showRoot);
}
- if (imm)
- {
- $(node.getChildrenUL()).show();
- }
- else
+ else
{
- $(node.getChildrenUL()).slideDown("fast",showRoot);
+ if (!node.childrenVisited)
+ {
+ getNode(o, node);
+ }
+ if (imm)
+ {
+ $(node.getChildrenUL()).show();
+ }
+ else
+ {
+ $(node.getChildrenUL()).slideDown("fast");
+ }
+ if (node.isLast)
+ {
+ node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+ }
+ else
+ {
+ node.plus_img.src = node.relpath+"ftv2mnode.png";
+ }
+ node.expanded = true;
}
- if (node.isLast)
+ }
+}
+
+function showNode(o, node, index)
+{
+ if (node.childrenData && !node.expanded)
+ {
+ if (typeof(node.childrenData)==='string')
{
- node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ showNode(o,node,index);
+ },true);
}
else
{
- node.plus_img.src = node.relpath+"ftv2mnode.png";
+ if (!node.childrenVisited)
+ {
+ getNode(o, node);
+ }
+ $(node.getChildrenUL()).show();
+ if (node.isLast)
+ {
+ node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+ }
+ else
+ {
+ node.plus_img.src = node.relpath+"ftv2mnode.png";
+ }
+ node.expanded = true;
+ var n = node.children[o.breadcrumbs[index]];
+ if (index+1<o.breadcrumbs.length)
+ {
+ showNode(o,n,index+1);
+ }
+ else
+ {
+ if (typeof(n.childrenData)==='string')
+ {
+ var varName = n.childrenData;
+ getScript(n.relpath+varName,function(){
+ n.childrenData = getData(varName);
+ node.expanded=false;
+ showNode(o,node,index); // retry with child node expanded
+ },true);
+ }
+ else
+ {
+ if (o.toroot=="index.html" || n.childrenData)
+ {
+ expandNode(o, n, true, true);
+ }
+ var a;
+ if ($(location).attr('hash'))
+ {
+ var link=stripPath($(location).attr('pathname'))+':'+
+ $(location).attr('hash').substring(1);
+ a=$('.item a[class*=\""'+link+'"\"]');
+ }
+ if (a && a.length)
+ {
+ a.parent().parent().addClass('selected');
+ a.parent().parent().attr('id','selected');
+ var anchor = $($(location).attr('hash'));
+ var targetDiv = anchor.next();
+ $(targetDiv).children('.memproto,.memdoc').
+ effect("highlight", {}, 3000);
+ }
+ else
+ {
+ $(n.itemDiv).addClass('selected');
+ $(n.itemDiv).attr('id','selected');
+ }
+ }
+ }
}
- node.expanded = true;
}
}
@@ -180,33 +329,10 @@ function getNode(o, po)
{
var nodeData = po.childrenData[i];
po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
- i==l);
+ i==l);
}
}
-function findNavTreePage(url, data)
-{
- var nodes = data;
- var result = null;
- for (var i in nodes)
- {
- var d = nodes[i];
- if (d[1] == url)
- {
- return new Array(i);
- }
- else if (d[2] != null) // array of children
- {
- result = findNavTreePage(url, d[2]);
- if (result != null)
- {
- return (new Array(i).concat(result));
- }
- }
- }
- return null;
-}
-
function initNavTree(toroot,relpath)
{
var o = new Object();
@@ -220,26 +346,23 @@ function initNavTree(toroot,relpath)
o.node.li.appendChild(o.node.childrenUL);
o.node.depth = 0;
o.node.relpath = relpath;
+ o.node.expanded = false;
+ o.node.isLast = true;
+ o.node.plus_img = document.createElement("img");
+ o.node.plus_img.src = relpath+"ftv2pnode.png";
+ o.node.plus_img.width = 16;
+ o.node.plus_img.height = 22;
- getNode(o, o.node);
-
- o.breadcrumbs = findNavTreePage(toroot, NAVTREE);
- if (o.breadcrumbs == null)
- {
- o.breadcrumbs = findNavTreePage("index.html",NAVTREE);
- }
- if (o.breadcrumbs != null && o.breadcrumbs.length>0)
- {
- var p = o.node;
- for (var i in o.breadcrumbs)
- {
- var j = o.breadcrumbs[i];
- p = p.children[j];
- expandNode(o,p,true);
+ getScript(relpath+"navtreeindex",function(){
+ var navTreeIndex = eval('NAVTREEINDEX');
+ if (navTreeIndex) {
+ o.breadcrumbs = navTreeIndex[toroot];
+ if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex["index.html"];
+ o.breadcrumbs.unshift(0);
+ showNode(o, o.node, 0);
}
- p.itemDiv.className = p.itemDiv.className + " selected";
- p.itemDiv.id = "selected";
- $(window).load(showRoot);
- }
+ },true);
+
+ $(window).load(showRoot);
}
diff --git a/src/navtree_css.h b/src/navtree_css.h
index 57f119f..82955e2 100644
--- a/src/navtree_css.h
+++ b/src/navtree_css.h
@@ -119,5 +119,9 @@
" background-color: ##FA;\n"
"}\n"
"\n"
-"\n"
+"@media print\n"
+"{\n"
+" #nav-tree { display: none; }\n"
+" div.ui-resizable-handle { display: none; position: relative; }\n"
+"}\n"
"\n"
diff --git a/src/navtree_js.h b/src/navtree_js.h
index 8e81d55..6456eb6 100644
--- a/src/navtree_js.h
+++ b/src/navtree_js.h
@@ -1,3 +1,29 @@
+"function getData(varName)\n"
+"{\n"
+" var i = varName.lastIndexOf('/');\n"
+" var n = i>=0 ? varName.substring(i+1) : varName;\n"
+" return eval(n);\n"
+"}\n"
+"\n"
+"function stripPath(uri)\n"
+"{\n"
+" return uri.substring(uri.lastIndexOf('/')+1);\n"
+"}\n"
+"\n"
+"function getScript(scriptName,func,show)\n"
+"{\n"
+" var head = document.getElementsByTagName(\"head\")[0]; \n"
+" var script = document.createElement('script');\n"
+" script.id = scriptName;\n"
+" script.type = 'text/javascript';\n"
+" script.onload = func; \n"
+" script.src = scriptName+'.js'; \n"
+" script.onreadystatechange = function() {\n"
+" if (script.readyState == 'complete') { func(); if (show) showRoot(); }\n"
+" };\n"
+" head.appendChild(script); \n"
+"}\n"
+"\n"
"function createIndent(o,domNode,node,level)\n"
"{\n"
" if (node.parentNode && node.parentNode.parentNode)\n"
@@ -5,6 +31,8 @@
" createIndent(o,domNode,node.parentNode,level+1);\n"
" }\n"
" var imgNode = document.createElement(\"img\");\n"
+" imgNode.width = 16;\n"
+" imgNode.height = 22;\n"
" if (level==0 && node.childrenData)\n"
" {\n"
" node.plus_img = imgNode;\n"
@@ -27,7 +55,7 @@
" } \n"
" else \n"
" {\n"
-" expandNode(o, node, false);\n"
+" expandNode(o, node, false, false);\n"
" }\n"
" }\n"
" node.expandToggle.appendChild(imgNode);\n"
@@ -104,10 +132,38 @@
" var a = document.createElement(\"a\");\n"
" node.labelSpan.appendChild(a);\n"
" node.label = document.createTextNode(text);\n"
+" node.expanded = false;\n"
" a.appendChild(node.label);\n"
" if (link) \n"
" {\n"
-" a.href = node.relpath+link;\n"
+" a.className = stripPath(link.replace('#',':'));\n"
+" if (link.indexOf('#')!=-1)\n"
+" {\n"
+" var aname = '#'+link.split('#')[1];\n"
+" var srcPage = stripPath($(location).attr('pathname'));\n"
+" var targetPage = stripPath(link.split('#')[0]);\n"
+" a.href = srcPage!=targetPage ? node.relpath+link : '#';\n"
+" a.onclick = function(){\n"
+" $('.item').removeClass('selected');\n"
+" $('.item').removeAttr('id');\n"
+" $(a).parent().parent().addClass('selected');\n"
+" $(a).parent().parent().attr('id','selected');\n"
+" var anchor = $(aname);\n"
+" var targetDiv = anchor.next();\n"
+" $(targetDiv).children('.memproto,.memdoc').effect(\"highlight\",{},3000);\n"
+" $(\"#doc-content\").animate({\n"
+" scrollTop: anchor.position().top +\n"
+" $('#doc-content').scrollTop() -\n"
+" $('#doc-content').offset().top\n"
+" },500,function(){\n"
+" $(location).attr('href',aname);\n"
+" });\n"
+" };\n"
+" }\n"
+" else\n"
+" {\n"
+" a.href = node.relpath+link;\n"
+" }\n"
" } \n"
" else \n"
" {\n"
@@ -116,7 +172,6 @@
" a.className = \"nolink\";\n"
" a.href = \"javascript:void(0)\";\n"
" a.onclick = node.expandToggle.onclick;\n"
-" node.expanded = false;\n"
" }\n"
" }\n"
"\n"
@@ -141,34 +196,128 @@
" var headerHeight = $(\"#top\").height();\n"
" var footerHeight = $(\"#nav-path\").height();\n"
" var windowHeight = $(window).height() - headerHeight - footerHeight;\n"
-" navtree.scrollTo('#selected',0,{offset:-windowHeight/2});\n"
+" (function (){ // retry until we can scroll to the selected item\n"
+" try {\n"
+" navtree.scrollTo('#selected',0,{offset:-windowHeight/2});\n"
+" } catch (err) {\n"
+" setTimeout(arguments.callee, 0);\n"
+" }\n"
+" })();\n"
"}\n"
"\n"
-"function expandNode(o, node, imm)\n"
+"function expandNode(o, node, imm, showRoot)\n"
"{\n"
" if (node.childrenData && !node.expanded) \n"
" {\n"
-" if (!node.childrenVisited) \n"
+" if (typeof(node.childrenData)==='string')\n"
" {\n"
-" getNode(o, node);\n"
+" var varName = node.childrenData;\n"
+" getScript(node.relpath+varName,function(){\n"
+" node.childrenData = getData(varName);\n"
+" expandNode(o, node, imm, showRoot);\n"
+" }, showRoot);\n"
" }\n"
-" if (imm)\n"
-" {\n"
-" $(node.getChildrenUL()).show();\n"
-" } \n"
-" else \n"
+" else\n"
" {\n"
-" $(node.getChildrenUL()).slideDown(\"fast\",showRoot);\n"
+" if (!node.childrenVisited) \n"
+" {\n"
+" getNode(o, node);\n"
+" }\n"
+" if (imm)\n"
+" {\n"
+" $(node.getChildrenUL()).show();\n"
+" } \n"
+" else \n"
+" {\n"
+" $(node.getChildrenUL()).slideDown(\"fast\");\n"
+" }\n"
+" if (node.isLast)\n"
+" {\n"
+" node.plus_img.src = node.relpath+\"ftv2mlastnode.png\";\n"
+" }\n"
+" else\n"
+" {\n"
+" node.plus_img.src = node.relpath+\"ftv2mnode.png\";\n"
+" }\n"
+" node.expanded = true;\n"
" }\n"
-" if (node.isLast)\n"
+" }\n"
+"}\n"
+"\n"
+"function showNode(o, node, index)\n"
+"{\n"
+" if (node.childrenData && !node.expanded) \n"
+" {\n"
+" if (typeof(node.childrenData)==='string')\n"
" {\n"
-" node.plus_img.src = node.relpath+\"ftv2mlastnode.png\";\n"
+" var varName = node.childrenData;\n"
+" getScript(node.relpath+varName,function(){\n"
+" node.childrenData = getData(varName);\n"
+" showNode(o,node,index);\n"
+" },true);\n"
" }\n"
" else\n"
" {\n"
-" node.plus_img.src = node.relpath+\"ftv2mnode.png\";\n"
+" if (!node.childrenVisited) \n"
+" {\n"
+" getNode(o, node);\n"
+" }\n"
+" $(node.getChildrenUL()).show();\n"
+" if (node.isLast)\n"
+" {\n"
+" node.plus_img.src = node.relpath+\"ftv2mlastnode.png\";\n"
+" }\n"
+" else\n"
+" {\n"
+" node.plus_img.src = node.relpath+\"ftv2mnode.png\";\n"
+" }\n"
+" node.expanded = true;\n"
+" var n = node.children[o.breadcrumbs[index]];\n"
+" if (index+1<o.breadcrumbs.length)\n"
+" {\n"
+" showNode(o,n,index+1);\n"
+" }\n"
+" else\n"
+" {\n"
+" if (typeof(n.childrenData)==='string')\n"
+" {\n"
+" var varName = n.childrenData;\n"
+" getScript(n.relpath+varName,function(){\n"
+" n.childrenData = getData(varName);\n"
+" node.expanded=false;\n"
+" showNode(o,node,index); // retry with child node expanded\n"
+" },true);\n"
+" }\n"
+" else\n"
+" {\n"
+" if (o.toroot==\"index.html\" || n.childrenData)\n"
+" {\n"
+" expandNode(o, n, true, true);\n"
+" }\n"
+" var a;\n"
+" if ($(location).attr('hash'))\n"
+" {\n"
+" var link=stripPath($(location).attr('pathname'))+':'+\n"
+" $(location).attr('hash').substring(1);\n"
+" a=$('.item a[class*=\\\"\"'+link+'\"\\\"]');\n"
+" }\n"
+" if (a && a.length)\n"
+" {\n"
+" a.parent().parent().addClass('selected');\n"
+" a.parent().parent().attr('id','selected');\n"
+" var anchor = $($(location).attr('hash'));\n"
+" var targetDiv = anchor.next();\n"
+" $(targetDiv).children('.memproto,.memdoc').\n"
+" effect(\"highlight\", {}, 3000);\n"
+" }\n"
+" else\n"
+" {\n"
+" $(n.itemDiv).addClass('selected');\n"
+" $(n.itemDiv).attr('id','selected');\n"
+" }\n"
+" }\n"
+" }\n"
" }\n"
-" node.expanded = true;\n"
" }\n"
"}\n"
"\n"
@@ -180,33 +329,10 @@
" {\n"
" var nodeData = po.childrenData[i];\n"
" po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],\n"
-" i==l);\n"
+" i==l);\n"
" }\n"
"}\n"
"\n"
-"function findNavTreePage(url, data)\n"
-"{\n"
-" var nodes = data;\n"
-" var result = null;\n"
-" for (var i in nodes) \n"
-" {\n"
-" var d = nodes[i];\n"
-" if (d[1] == url) \n"
-" {\n"
-" return new Array(i);\n"
-" }\n"
-" else if (d[2] != null) // array of children\n"
-" {\n"
-" result = findNavTreePage(url, d[2]);\n"
-" if (result != null) \n"
-" {\n"
-" return (new Array(i).concat(result));\n"
-" }\n"
-" }\n"
-" }\n"
-" return null;\n"
-"}\n"
-"\n"
"function initNavTree(toroot,relpath)\n"
"{\n"
" var o = new Object();\n"
@@ -220,26 +346,23 @@
" o.node.li.appendChild(o.node.childrenUL);\n"
" o.node.depth = 0;\n"
" o.node.relpath = relpath;\n"
+" o.node.expanded = false;\n"
+" o.node.isLast = true;\n"
+" o.node.plus_img = document.createElement(\"img\");\n"
+" o.node.plus_img.src = relpath+\"ftv2pnode.png\";\n"
+" o.node.plus_img.width = 16;\n"
+" o.node.plus_img.height = 22;\n"
"\n"
-" getNode(o, o.node);\n"
-"\n"
-" o.breadcrumbs = findNavTreePage(toroot, NAVTREE);\n"
-" if (o.breadcrumbs == null)\n"
-" {\n"
-" o.breadcrumbs = findNavTreePage(\"index.html\",NAVTREE);\n"
-" }\n"
-" if (o.breadcrumbs != null && o.breadcrumbs.length>0)\n"
-" {\n"
-" var p = o.node;\n"
-" for (var i in o.breadcrumbs) \n"
-" {\n"
-" var j = o.breadcrumbs[i];\n"
-" p = p.children[j];\n"
-" expandNode(o,p,true);\n"
+" getScript(relpath+\"navtreeindex\",function(){\n"
+" var navTreeIndex = eval('NAVTREEINDEX');\n"
+" if (navTreeIndex) {\n"
+" o.breadcrumbs = navTreeIndex[toroot];\n"
+" if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex[\"index.html\"];\n"
+" o.breadcrumbs.unshift(0);\n"
+" showNode(o, o.node, 0);\n"
" }\n"
-" p.itemDiv.className = p.itemDiv.className + \" selected\";\n"
-" p.itemDiv.id = \"selected\";\n"
-" $(window).load(showRoot);\n"
-" }\n"
+" },true);\n"
+"\n"
+" $(window).load(showRoot);\n"
"}\n"
"\n"
diff --git a/src/outputgen.h b/src/outputgen.h
index acbaef9..740940e 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -301,6 +301,7 @@ class OutputGenerator : public BaseOutputDocInterface
///////////////////////////////////////////////////////////////
virtual void startFile(const char *name,const char *manName,
const char *title) = 0;
+ virtual void writeSearchInfo() = 0;
virtual void writeFooter() = 0;
virtual void endFile() = 0;
virtual void startIndexSection(IndexSections) = 0;
diff --git a/src/outputlist.h b/src/outputlist.h
index debea2e..e832175 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -85,6 +85,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::writeStyleInfo,part); }
void startFile(const char *name,const char *manName,const char *title)
{ forall(&OutputGenerator::startFile,name,manName,title); }
+ void writeSearchInfo()
+ { forall(&OutputGenerator::writeSearchInfo); }
void writeFooter()
{ forall(&OutputGenerator::writeFooter); }
void endFile()
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index dc78179..5786bc1 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -98,7 +98,7 @@ void PageDef::writeDocumentation(OutputList &ol)
{
if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX"))
{
- getOuterScope()->writeNavigationPath(ol);
+ getOuterScope()->writeNavigationPath(ol,FALSE);
}
ol.endQuickIndices();
}
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 443e24b..ebe09e8 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -1703,7 +1703,7 @@ void PerlModGenerator::generatePerlModForClass(ClassDef *cd)
m_output.closeList();
}
- ClassSDict *cl = cd->getInnerClasses();
+ ClassSDict *cl = cd->getClassSDict();
if (cl)
{
m_output.openList("inner");
diff --git a/src/pre.l b/src/pre.l
index d4b5002..b962711 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -205,6 +205,13 @@ static bool macroIsAccessible(Define *def)
// g_inputFileDef->name().data(),def->name.data(),def->fileDef->name().data(),b);
return b;
}
+ if (g_inputFileDef && def && !def->fileName.isEmpty())
+ {
+ bool b = g_inputFileDef->includesByName(def->fileName);
+ //printf("%s: Checking for accessibility of define '%s' (defined in %s): result=%d\n",
+ // g_inputFileDef->name().data(),def->name.data(),def->fileName.data(),b);
+ return b;
+ }
//printf("not accessible!\n");
return FALSE;
}
@@ -215,11 +222,10 @@ static Define *isDefined(const char *name)
if (name)
{
def=g_globalDefineDict->find(name);
- //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef)
- // return def;
if (def && def->undef) def=0;
if (def && !macroIsAccessible(def)) def=0;
}
+ //printf("isDefined(%s)=%p\n",name,def);
return def;
}
@@ -786,20 +792,22 @@ static int getNextId(const QCString &expr,int p,int *l)
}
else if (c=='/') // skip C Comment
{
+ //printf("Found C comment at p=%d\n",p);
char pc=c;
if (p<(int)expr.length())
{
- c=expr.at(++p);
+ c=expr.at(p);
if (c=='*') // Start of C comment
{
+ p++;
while (p<(int)expr.length() && !(pc=='*' && c=='/'))
{
pc=c;
- c=expr.at(++p);
+ c=expr.at(p++);
}
- p++;
}
}
+ //printf("Found end of C comment at p=%d\n",p);
}
}
return -1;
@@ -822,6 +830,7 @@ static void expandExpression(QCString &expr,QCString *rest,int pos)
{
bool replaced=FALSE;
macroName=expr.mid(p,l);
+ //printf("macroName=%s\n",macroName.data());
if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker?
{
if (g_expandedDict->find(macroName)==0) // expand macro
@@ -1138,8 +1147,8 @@ Define *newDefine()
def->fileDef = g_yyFileDef;
def->lineNr = g_yyLineNr;
def->varArgs = g_defVarArgs;
- //printf("newDefine: %s->%s\n",def->name.data(),
- // def->fileDef ? def->fileDef->name().data() : "<none>");
+ //printf("newDefine: %s %s file: %s\n",def->name.data(),def->definition.data(),
+ // def->fileDef ? def->fileDef->name().data() : def->fileName.data());
//printf("newDefine: `%s'->`%s'\n",def->name.data(),def->definition.data());
if (!def->name.isEmpty() && Doxygen::expandAsDefinedDict[def->name])
{
@@ -1218,7 +1227,8 @@ static inline void outputArray(const char *a,int len)
static void readIncludeFile(const QCString &inc)
{
- if (!Config_getBool("SEARCH_INCLUDES")) return; // do not read include files
+ static bool searchIncludes = Config_getBool("SEARCH_INCLUDES");
+ if (!searchIncludes) return; // do not read include files
uint i=0;
// find the start of the include file name
@@ -1250,6 +1260,22 @@ static void readIncludeFile(const QCString &inc)
int oldLineNr = g_yyLineNr;
//printf("Searching for `%s'\n",incFileName.data());
+ // absIncFileName avoids difficulties for incFileName starting with "../" (bug 641336)
+ QCString absIncFileName = incFileName;
+ {
+ QFileInfo fi(g_yyFileName);
+ if (fi.exists())
+ {
+ QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+incFileName;
+ QFileInfo fi2(absName);
+ if (fi2.exists())
+ {
+ absIncFileName=fi2.absFilePath();
+ }
+ //printf( "absIncFileName = %s\n", absIncFileName.data() );
+ }
+ }
+
// findFile will overwrite g_yyFileDef if found
FileState *fs;
bool alreadyIncluded = FALSE;
@@ -1266,9 +1292,9 @@ static void readIncludeFile(const QCString &inc)
{
// add include dependency to the file in which the #include was found
bool ambig;
- // change to local name for bug 641336
- FileDef *incFd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
- oldFileDef->addIncludeDependency(ambig ? 0 : incFd,incFileName,localInclude,g_isImported);
+ // change to absolute name for bug 641336
+ FileDef *incFd = findFileDef(Doxygen::inputNameDict,absIncFileName,ambig);
+ oldFileDef->addIncludeDependency(ambig ? 0 : incFd,incFileName,localInclude,g_isImported,FALSE);
// add included by dependency
if (g_yyFileDef)
{
@@ -1276,6 +1302,10 @@ static void readIncludeFile(const QCString &inc)
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
}
}
+ else if (g_inputFileDef)
+ {
+ g_inputFileDef->addIncludeDependency(0,absIncFileName,localInclude,g_isImported,TRUE);
+ }
fs->bufState = YY_CURRENT_BUFFER;
fs->lineNr = oldLineNr;
fs->fileName = oldFileName;
@@ -1308,11 +1338,11 @@ static void readIncludeFile(const QCString &inc)
// //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data());
//}
- // change to local name for bug 641336
- FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
+ // change to absolute name for bug 641336
+ FileDef *fd = findFileDef(Doxygen::inputNameDict,absIncFileName,ambig);
//printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd);
// add include dependency to the file in which the #include was found
- oldFileDef->addIncludeDependency(ambig ? 0 : fd,incFileName,localInclude,g_isImported);
+ oldFileDef->addIncludeDependency(ambig ? 0 : fd,incFileName,localInclude,g_isImported,FALSE);
// add included by dependency
if (fd)
{
@@ -1320,6 +1350,10 @@ static void readIncludeFile(const QCString &inc)
fd->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
}
}
+ else if (g_inputFileDef)
+ {
+ g_inputFileDef->addIncludeDependency(0,absIncFileName,localInclude,g_isImported,TRUE);
+ }
if (Debug::isFlagSet(Debug::Preprocessor))
{
msg("#include %s: not found or already included! skipping...\n",incFileName.data());
@@ -1957,7 +1991,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defExtraSpacing.resize(0);
BEGIN(DefineArg);
}
-<DefName>{ID}{B}+"1" { // special case: define with 1 -> can be "guard"
+<DefName>{ID}{B}+"1"/[ \r\t\n] { // special case: define with 1 -> can be "guard"
//printf("Define `%s'\n",yytext);
g_argDict = 0;
g_defArgs = -1;
@@ -2340,7 +2374,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(SkipSingleQuote);
}
}
-<SkipDoubleQuote>"//" { g_defText += yytext; g_defLitText+=yytext; }
+<SkipDoubleQuote>"//"[/]? { g_defText += yytext; g_defLitText+=yytext; }
<SkipDoubleQuote>"/*" { g_defText += yytext; g_defLitText+=yytext; }
<SkipDoubleQuote>\" {
g_defText += *yytext; g_defLitText+=yytext;
diff --git a/src/qhp.cpp b/src/qhp.cpp
index 07230d9..bba308a 100644
--- a/src/qhp.cpp
+++ b/src/qhp.cpp
@@ -173,7 +173,8 @@ void Qhp::decContentsDepth()
void Qhp::addContentsItem(bool /*isDir*/, const char * name,
const char * /*ref*/, const char * file,
- const char * /*anchor*/)
+ const char * /*anchor*/,bool /* separateIndex */,
+ bool /* addToNavIndex */)
{
// Backup difference before modification
int diff = m_prevSectionLevel - m_sectionLevel;
diff --git a/src/qhp.h b/src/qhp.h
index e5b4a08..8185803 100644
--- a/src/qhp.h
+++ b/src/qhp.h
@@ -32,7 +32,8 @@ class Qhp : public IndexIntf
void incContentsDepth();
void decContentsDepth();
void addContentsItem(bool isDir, const char * name, const char * ref,
- const char * file, const char * anchor);
+ const char * file, const char * anchor,
+ bool separateIndex,bool addToNavIndex);
void addIndexItem(Definition *context,MemberDef *md,const char *title);
void addIndexFile(const char * name);
void addImageFile(const char * name);
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 406519c..33798d5 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -43,6 +43,7 @@ class RTFGenerator : public OutputGenerator
void printDoc(DocNode *,const char *);
void startFile(const char *name,const char *manName,const char *title);
+ void writeSearchInfo() {}
void writeFooter() {}
void endFile();
void clearBuffer();
diff --git a/src/svgpan.js b/src/svgpan.js
index da381fd..7c0c916 100644
--- a/src/svgpan.js
+++ b/src/svgpan.js
@@ -173,30 +173,15 @@ function handleMouseWheel(evt)
if (state!='pan')
{
-
var delta;
-
- if(evt.wheelDelta)
+ if (evt.wheelDelta)
{
- if (window.opera)
- {
- delta = evt.wheelDelta / 720; // Opera
- }
- else if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 ||
- navigator.appVersion.indexOf("MSIE") != -1)
- {
- delta = evt.wheelDelta / 7200; // Chrome/IE9
- }
- else
- {
- delta = evt.wheelDelta / 72000; // Safari
- }
+ delta = evt.wheelDelta / 7200; // Opera/Chrome/IE9/Safari
}
else
{
delta = evt.detail / -180; // Mozilla
}
-
var svgDoc = evt.target.ownerDocument;
var g = svgDoc.getElementById("viewport");
var p = getEventPoint(evt);
diff --git a/src/svgpan_js.h b/src/svgpan_js.h
index ddc3eac..7cbbdfc 100644
--- a/src/svgpan_js.h
+++ b/src/svgpan_js.h
@@ -173,30 +173,15 @@
"\n"
" if (state!='pan')\n"
" {\n"
-"\n"
" var delta;\n"
-"\n"
-" if(evt.wheelDelta)\n"
+" if (evt.wheelDelta)\n"
" {\n"
-" if (window.opera)\n"
-" {\n"
-" delta = evt.wheelDelta / 720; // Opera\n"
-" }\n"
-" else if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 ||\n"
-" navigator.appVersion.indexOf(\"MSIE\") != -1)\n"
-" {\n"
-" delta = evt.wheelDelta / 7200; // Chrome/IE9\n"
-" }\n"
-" else\n"
-" {\n"
-" delta = evt.wheelDelta / 72000; // Safari\n"
-" }\n"
+" delta = evt.wheelDelta / 7200; // Opera/Chrome/IE9/Safari\n"
" }\n"
" else\n"
" {\n"
" delta = evt.detail / -180; // Mozilla\n"
" }\n"
-"\n"
" var svgDoc = evt.target.ownerDocument;\n"
" var g = svgDoc.getElementById(\"viewport\");\n"
" var p = getEventPoint(evt);\n"
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index 1934903..b7a7b7a 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -1374,7 +1374,7 @@ void TagFileParser::addIncludes()
// ifd->getOutputFileBase().data(),ii->id.data());
if (ifd->getOutputFileBase()==QCString(ii->id))
{
- fd->addIncludeDependency(ifd,ii->text,ii->isLocal,ii->isImported);
+ fd->addIncludeDependency(ifd,ii->text,ii->isLocal,ii->isImported,FALSE);
}
}
}
diff --git a/src/translator_am.h b/src/translator_am.h
index 08217ba..f935c5f 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -22,7 +22,7 @@
#ifndef TRANSLATOR_AM_H
#define TRANSLATOR_AM_H
-class TranslatorArmenian : public TranslatorAdapter_1_7_5
+class TranslatorArmenian : public Translator
{
public:
/*! Used for identification of the language. */
diff --git a/src/translator_id.h b/src/translator_id.h
index b139650..f0d7afc 100644
--- a/src/translator_id.h
+++ b/src/translator_id.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2007 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -18,12 +18,13 @@
#ifndef TRANSLATOR_ID_H
#define TRANSLATOR_ID_H
-/*!
- Indonesian translator based on Doxygen 1.4.2.
-
- \author Hendy Irawan <ceefour@gauldong.net>
+/**
+ * Translasi berikut didasarkan pada versi translator_en.h dalam
+ * Doxygen 1.7.5.1.
+ *
+ * Penterjemah: Adhi Hargo <cadmus_sw at yahoo.com>
*/
-class TranslatorIndonesian : public TranslatorAdapter_1_4_6
+class TranslatorIndonesian : public Translator
{
public:
@@ -54,7 +55,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
*/
virtual QCString latexLanguageSupportCommand()
{
- return "\\usepackage[indonesian]{babel}";
+ return "\\usepackage[bahasa]{babel}";
}
/*! return the language charset. This will be used for the HTML output */
@@ -71,7 +72,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! subscript for the related functions. */
virtual QCString trRelatedSubscript()
- { return "(Catatan: Fungsi-fungsi tersebut bukan fungsi anggota.)"; }
+ { return "(Perhatikan bahwa fungsi-fungsi tersebut bukan fungsi anggota.)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription()
@@ -126,7 +127,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* parameter s is name of the project name.
*/
virtual QCString trGeneratedAutomatically(const char *s)
- { QCString result="Dihasilkan secara otomatis oleh Doxygen";
+ { QCString result="Dibangkitkan secara otomatis oleh Doxygen";
if (s) result+=(QCString)" untuk "+s;
result+=" dari kode sumber.";
return result;
@@ -154,7 +155,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy()
- { return "Struktur Kelas"; }
+ { return "Hierarki Kelas"; }
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
@@ -173,10 +174,6 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trFileList()
{ return "Daftar File"; }
- /*! This is put above each page as a link to the list of all verbatim headers */
- virtual QCString trHeaderFiles()
- { return "File Header"; }
-
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
{
@@ -186,7 +183,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
}
else
{
- return "Daftar Anggota: Kelas";
+ return "Daftar Anggota Kelas";
}
}
@@ -195,11 +192,11 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Daftar Global";
+ return "Daftar Definisi Global";
}
else
{
- return "Daftar File";
+ return "Daftar Anggota File";
}
}
@@ -217,15 +214,16 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
- { return "Struktur kelas ini diurutkan hampir sepenuhnya diurutkan berdasarkan abjad:";
+ { return "Hierarki kelas ini diurutkan kurang-lebih"
+ " berdasarkan abjad:";
}
/*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Berikut ini daftar seluruh file dengan penjelasan singkat";
+ QCString result="Berikut ini daftar seluruh file";
if (!extractAll) result+=" yang didokumentasikan";
- result += ":";
+ result += ", dengan penjelasan singkat:";
return result;
}
@@ -235,11 +233,11 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Berikut ini daftar struktur data beserta penjelasan singkat:";
+ return "Berikut ini daftar struktur data, dengan penjelasan singkat:";
}
else
{
- return "Berikut ini daftar kelas, struktur, gabungan, dan interface beserta penjelasan singkat:";
+ return "Berikut ini daftar kelas, struct, union, dan interface, dengan penjelasan singkat:";
}
}
@@ -249,7 +247,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
QCString result="Berikut ini daftar seluruh ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+="variabel struktur dan gabungan";
+ result+="variabel anggota struct dan union";
}
else
{
@@ -259,27 +257,27 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
{
result+=" yang didokumentasikan";
}
- result+=" dengan link ke ";
+ result+=", dengan tautan ke ";
if (!extractAll)
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+="dokumentasi struktur/gabungan untuk tiap variabel:";
+ result+="dokumentasi struct/union untuk setiap variabel:";
}
else
{
- result+="dokumentasi kelas untuk tiap anggota:";
+ result+="dokumentasi kelas untuk setiap anggota:";
}
}
else
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+="struktur/gabungan induk:";
+ result+="struct/union yang memuatnya:";
}
else
{
- result+="kelas induk:";
+ result+="kelas yang memuatnya:";
}
}
return result;
@@ -292,25 +290,21 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+="fungsi, variabel, konstanta, enumerasi, dan tipe";
+ result+="fungsi, variabel, makro definisi, enumerasi, dan tipe";
}
else
{
result+="file";
}
if (!extractAll) result+=" yang didokumentasikan";
- result+=" dengan link ke ";
+ result+=", dengan tautan ke ";
if (extractAll)
- result+="file induk:";
+ result+="file yang memuatnya:";
else
- result+="dokumentasi:";
+ result+="dokumentasinya:";
return result;
}
- /*! This is an introduction to the page with the list of all header files. */
- virtual QCString trHeaderFilesDescription()
- { return "Berikut ini daftar file header yang melingkupi API (Application Programming Interface) ini:"; }
-
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
{ return "Berikut ini daftar semua contoh:"; }
@@ -323,15 +317,8 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trModulesDescription()
{ return "Berikut ini daftar semua modul:"; }
- /*! This sentences is used in the annotated class/file lists if no brief
- * description is given.
- */
- virtual QCString trNoDescriptionAvailable()
- { return "Tidak ada keterangan tersedia"; }
-
// index titles (the project name is prepended for these)
-
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
{ return "Dokumentasi"; }
@@ -346,7 +333,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* class hierarchy.
*/
virtual QCString trHierarchicalIndex()
- { return "Indeks Struktur Kelas"; }
+ { return "Indeks Hierarki Kelas"; }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
@@ -410,13 +397,13 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
- { return "Dokumentasi Referensi"; }
+ { return "Dokumen Referensi"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
virtual QCString trDefines()
- { return "Konstanta"; }
+ { return "Makro Definisi"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
@@ -458,7 +445,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
- { return "Dokumentasi Konstanta"; }
+ { return "Dokumentasi Makro Definisi"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
@@ -479,12 +466,6 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
{ return "Dokumentasi Tipe Enumerasi"; }
/*! This is used in the documentation of a file/namespace before the list
- * of documentation blocks for enumeration values
- */
- virtual QCString trEnumerationValueDocumentation()
- { return "Dokumentasi Nilai Enumerasi"; }
-
- /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
@@ -516,7 +497,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
*/
virtual QCString trGeneratedAt(const char *date,const char *projName)
{
- QCString result=(QCString)"Dihasilkan pada tanggal "+date;
+ QCString result=(QCString)"Dibangkitkan pada tanggal "+date;
if (projName) result+=(QCString)" untuk "+projName;
result+=(QCString)" oleh";
return result;
@@ -531,25 +512,17 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
- return (QCString)"Diagram struktur kelas untuk "+clName+":";
+ return (QCString)"Diagram hierarki kelas untuk "+clName+":";
}
/*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly()
- { return "Untuk kalangan sendiri."; }
-
- /*! this text is generated when the \\reimp command is used. */
- virtual QCString trReimplementedForInternalReasons()
- { return "Di-reimplementasikan karena alasan internal; API tidak berubah."; }
+ { return "Hanya untuk digunakan secara internal."; }
/*! this text is generated when the \\warning command is used. */
virtual QCString trWarning()
{ return "Peringatan"; }
- /*! this text is generated when the \\bug command is used. */
- virtual QCString trBugsAndLimitations()
- { return "Bug dan keterbatasan"; }
-
/*! this text is generated when the \\version command is used. */
virtual QCString trVersion()
{ return "Versi"; }
@@ -572,15 +545,15 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions()
- { return "Exception"; }
+ { return "Eksepsi"; }
/*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy()
- { return "Dihasilkan oleh"; }
+ { return "Dibangkitkan oleh"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990307
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
@@ -589,9 +562,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{
- QCString result="Berikut ini daftar namespace beserta keterangan singkat";
+ QCString result="Berikut ini daftar namespace";
if (!extractAll) result+=" yang didokumentasikan";
- result+=":";
+ result+=", dengan keterangan singkat:";
return result;
}
@@ -601,9 +574,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trFriends()
{ return "Friend"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990405
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all
* related classes
@@ -611,44 +584,44 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trRelatedFunctionDocumentation()
{ return "Dokumentasi Friend Dan Fungsi Terkait"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990425
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */
virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result=(QCString)clName;
+ QCString result="Referensi";
switch(compType)
{
- case ClassDef::Class: result+=" Kelas"; break;
- case ClassDef::Struct: result+=" Struktur"; break;
- case ClassDef::Union: result+=" Gabungan"; break;
- case ClassDef::Interface: result+=" Interface"; break;
- case ClassDef::Protocol: result+=" Protokol"; break;
- case ClassDef::Category: result+=" Kategori"; break;
- case ClassDef::Exception: result+=" Exception"; break;
+ case ClassDef::Class: result+=" Kelas "; break;
+ case ClassDef::Struct: result+=" Struct "; break;
+ case ClassDef::Union: result+=" Union "; break;
+ case ClassDef::Interface: result+=" Interface "; break;
+ case ClassDef::Protocol: result+=" Protokol "; break;
+ case ClassDef::Category: result+=" Kategori "; break;
+ case ClassDef::Exception: result+=" Eksepsi "; break;
}
- if (isTemplate) result+=" Template";
- result+=" Referensi";
+ if (isTemplate) result+=" Template ";
+ result+=(QCString)clName;
return result;
}
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
- QCString result=fileName;
- result+=" Referensi File";
+ QCString result="Referensi File ";
+ result+=fileName;
return result;
}
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
- QCString result=namespaceName;
- result+=" Referensi Namespace";
+ QCString result="Referensi Namespace ";
+ result+=namespaceName;
return result;
}
@@ -727,7 +700,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
*/
virtual QCString trReimplementedInList(int numEntries)
{
- return "Di-reimplementasikan di "+trWriteList(numEntries)+".";
+ return "Diimplementasikan ulang di "+trWriteList(numEntries)+".";
}
/*! This is put above each page as a link to all members of namespaces. */
@@ -737,13 +710,13 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- QCString result="Berikut ini daftar anggota namespace ";
- if (!extractAll) result+="yang didokumentasikan ";
- result+="dengan link ke ";
+ QCString result="Berikut ini daftar anggota namespace";
+ if (!extractAll) result+=" yang didokumentasikan";
+ result+=", dengan tautan ke ";
if (extractAll)
- result+="dokumentasi namespace untuk tiap anggota:";
+ result+="dokumentasi namespace untuk setiap anggota:";
else
- result+="namespace induk:";
+ result+="namespace yang memuatnya:";
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
@@ -758,9 +731,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trNamespaceDocumentation()
{ return "Dokumentasi Namespace"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990522
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990522
+//////////////////////////////////////////////////////////////////////////
/*! This is used in the documentation before the list of all
* namespaces in a file.
@@ -768,9 +741,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trNamespaces()
{ return "Daftar Namespace"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990728
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990728
+//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
@@ -783,14 +756,14 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
switch(compType)
{
case ClassDef::Class: result+="kelas"; break;
- case ClassDef::Struct: result+="struktur"; break;
- case ClassDef::Union: result+="gabungan"; break;
+ case ClassDef::Struct: result+="struct"; break;
+ case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
case ClassDef::Protocol: result+="protokol"; break;
case ClassDef::Category: result+="kategori"; break;
- case ClassDef::Exception: result+="exception"; break;
+ case ClassDef::Exception: result+="eksepsi"; break;
}
- result+=" ini dihasilkan dari file";
+ result+=" ini dibangkitkan dari file";
result+=single ? "" : "-file";
result+=" berikut:";
return result;
@@ -802,9 +775,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trAlphabeticalList()
{ return "Daftar Berdasarkan Abjad"; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-990901
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990901
+//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
@@ -821,35 +794,31 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trPageAbbreviation()
{ return "hal."; }
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-991003
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991003
+//////////////////////////////////////////////////////////////////////////
- virtual QCString trSources()
- {
- return "Sumber";
- }
virtual QCString trDefinedAtLineInSourceFile()
{
- return "Definisi pada baris @0 di file @1.";
+ return "Definisi pada baris @0 dalam file @1.";
}
virtual QCString trDefinedInSourceFile()
{
- return "Definisi pada baris @0.";
+ return "Definisi dalam file @0.";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 0.49-991205
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991205
+//////////////////////////////////////////////////////////////////////////
virtual QCString trDeprecated()
{
return "Kadaluarsa";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.0.0
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.0.0
+//////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
@@ -859,7 +828,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Diagram ketergantungan untuk "+fName+":";
+ return (QCString)"Bagan kebergantungan pemuatan untuk "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
@@ -889,7 +858,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! Text for the \\invariant command */
virtual QCString trInvariant()
{
- return "Invariant";
+ return "Invarian";
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
@@ -903,24 +872,24 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
}
virtual QCString trGraphicalHierarchy()
{
- return "Struktur Kelas Berbasis Grafis";
+ return "Hierarki Kelas Secara Grafis";
}
virtual QCString trGotoGraphicalHierarchy()
{
- return "Ke struktur kelas berbasis grafis";
+ return "Ke bagan grafis hierarki kelas";
}
virtual QCString trGotoTextualHierarchy()
{
- return "Ke struktur kelas berbasis teks";
+ return "Ke bagan tekstual hierarki kelas";
}
virtual QCString trPageIndex()
{
return "Indeks Halaman";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.1.0
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.0
+//////////////////////////////////////////////////////////////////////////
virtual QCString trNote()
{
@@ -970,9 +939,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Atribut Privat Statis";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.1.3
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.3
+//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \\todo item */
virtual QCString trTodo()
@@ -985,9 +954,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Tugas";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.1.4
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.4
+//////////////////////////////////////////////////////////////////////////
virtual QCString trReferencedBy()
{
@@ -1003,21 +972,23 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
}
virtual QCString trInclByDepGraph()
{
- return "Diagram ini menampilkan file-file yang membutuhkan file ini baik secara langsung maupun tidak langsung:";
+ return "Bagan ini menunjukkan file-file yang memuat"
+ " atau menggunakan file ini baik secara langsung maupun"
+ " tidak langsung:";
}
virtual QCString trSince()
{
return "Sejak";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.1.5
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
/*! title of the graph legend page */
virtual QCString trLegendTitle()
{
- return "Legenda Diagram";
+ return "Keterangan Bagan";
}
/*! page explaining how the dot graph's should be interpreted
* The %A in the text below are to prevent link to classes called "A".
@@ -1025,7 +996,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trLegendDocs()
{
return
- "Halaman ini berisi keterangan cara membaca diagram yang dihasilkan "
+ "Halaman ini berisi keterangan cara membaca bagan yang dibangkitkan "
"oleh doxygen.<p>\n"
"Contoh:\n"
"\\code\n"
@@ -1057,16 +1028,16 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
"};\n"
"\\endcode\n"
"Apabila tag \\c MAX_DOT_GRAPH_HEIGHT di file konfigurasi "
- "diset ke 240 kode di atas akan menghasilkan diagram berikut:"
+ "diset ke 240 kode di atas akan menghasilkan bagan berikut:"
"<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
- "Kotak-kotak pada diagram di atas mempunyai arti sebagai berikut:\n"
+ "Kotak-kotak pada bagan di atas mempunyai arti sebagai berikut:\n"
"<ul>\n"
- "<li>%Kotak hitam merupakan struktur atau kelas yang bersangkutan.\n"
- "<li>%Kotak berbingkai hitam adalah struktur atau kelas yang mempunyai dokumentasi.\n"
- "<li>%Kotak dengan bingkai abu-abu adalah struktur atau kelas tanpa dokumentasi.\n"
- "<li>%Kotak dengan bingkai merah merupakan struktur atau kelas yang didokumentasikan tetapi"
- "tidak semua relasinya ditampilkan. %Sebuah diagram "
+ "<li>%Kotak hitam merupakan struct atau kelas yang bersangkutan.\n"
+ "<li>%Kotak berbingkai hitam adalah struct atau kelas yang mempunyai dokumentasi.\n"
+ "<li>%Kotak dengan bingkai abu-abu adalah struct atau kelas tanpa dokumentasi.\n"
+ "<li>%Kotak dengan bingkai merah merupakan struct atau kelas yang didokumentasikan tetapi"
+ "tidak semua relasinya ditampilkan. %Sebuah bagan "
"akan terpotong apabila lebih besar daripada ukuran yang ditentukan.\n"
"</ul>\n"
"Arti dari tanda-tanda panah adalah sebagai berikut:\n"
@@ -1075,7 +1046,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
"<li>%Panah hijau tua untuk pewarisan diproteksi.\n"
"<li>%Panah merah tua untuk pewarisan privat.\n"
"<li>%Panah ungu putus-putus menandakan kelas tersebut berhubungan dengan kelas lain. "
- "Panah tersebut diberi judul sesuai dengan kelas atau struktur tujuan.\n"
+ "Panah tersebut diberi judul sesuai dengan kelas atau struct tujuan.\n"
"<li>%Panah kuning putus-putus menandakan hubungan antara sebuah template kelas dan "
"instance dari template tersebut. Panah tersebut diberi judul sesuai dengan "
"parameter template yang digunakan.\n"
@@ -1084,12 +1055,12 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! text for the link to the legend page */
virtual QCString trLegend()
{
- return "legenda";
+ return "keterangan";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.0
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */
virtual QCString trTest()
@@ -1102,9 +1073,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Tes";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.1
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
@@ -1112,9 +1083,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Fungsi Anggota: DCOP";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.2
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
@@ -1127,15 +1098,10 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Dokumentasi Property";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.4
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
- /*! Used for Java interfaces in the summary section of Java packages */
- virtual QCString trInterfaces()
- {
- return "Daftar Interface";
- }
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
@@ -1161,27 +1127,22 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return "Berikut ini daftar paket beserta keterangan singkat (apabila tersedia):";
+ return "Berikut ini daftar paket, dengan keterangan singkat (apabila tersedia):";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return "Daftar Paket";
}
- /*! Used as a chapter title for Latex & RTF output */
- virtual QCString trPackageDocumentation()
- {
- return "Dokumentasi Paket";
- }
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
return "Nilai:";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.5
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.5
+//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \\bug item */
virtual QCString trBug()
@@ -1194,9 +1155,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Bug";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.6
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.6
+//////////////////////////////////////////////////////////////////////////
/*! Used as ansicpg for RTF file
*
@@ -1250,7 +1211,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trClass(bool first_capital, bool singular)
{
QCString result((first_capital ? "Kelas" : "kelas"));
- if (!singular) result+="-kelas";
+ if (!singular) result+="-kelas";
return result;
}
@@ -1261,7 +1222,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trFile(bool first_capital, bool singular)
{
QCString result((first_capital ? "File" : "file"));
- if (!singular) result+="-file";
+ if (!singular) result+="-file";
return result;
}
@@ -1272,7 +1233,6 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trNamespace(bool first_capital, bool)
{
QCString result((first_capital ? "Namespace" : "namespace"));
- //if (!singular) result+="s";
return result;
}
@@ -1283,7 +1243,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
virtual QCString trGroup(bool first_capital, bool singular)
{
QCString result((first_capital ? "Kelompok" : "kelompok"));
- if (!singular) result+="-kelompok";
+ if (!singular) result+="-kelompok";
return result;
}
@@ -1291,10 +1251,10 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* be followed by a single name or by a list of names
* of the category.
*/
- virtual QCString trPage(bool first_capital, bool )
+ virtual QCString trPage(bool first_capital, bool singular)
{
QCString result((first_capital ? "Halaman" : "halaman"));
- //if (!singular) result+="s";
+ if (!singular) result+="-halaman";
return result;
}
@@ -1302,21 +1262,10 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* be followed by a single name or by a list of names
* of the category.
*/
- virtual QCString trMember(bool first_capital, bool )
+ virtual QCString trMember(bool first_capital, bool singular)
{
QCString result((first_capital ? "Anggota" : "anggota"));
- //if (!singular) result+="s";
- return result;
- }
-
- /*! This is used for translation of the word that will possibly
- * be followed by a single name or by a list of names
- * of the category.
- */
- virtual QCString trField(bool first_capital, bool)
- {
- QCString result((first_capital ? "Variabel" : "variabel"));
- //if (!singular) result+="s";
+ if (!singular) result+="-anggota";
return result;
}
@@ -1324,16 +1273,17 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
* be followed by a single name or by a list of names
* of the category.
*/
- virtual QCString trGlobal(bool first_capital, bool)
+ virtual QCString trGlobal(bool first_capital, bool singular)
{
- QCString result((first_capital ? "Global" : "global"));
- //if (!singular) result+="s";
+ QCString result((first_capital ? "Definisi" : "definisi"));
+ if (!singular) result+="-definisi";
+ result += " global";
return result;
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.7
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.7
+//////////////////////////////////////////////////////////////////////////
/*! This text is generated when the \\author command is used and
* for the author section in man pages. */
@@ -1344,9 +1294,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return result;
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.11
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.11
+//////////////////////////////////////////////////////////////////////////
/*! This text is put before the list of members referenced by a member
*/
@@ -1355,9 +1305,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Referensi";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.13
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.13
+//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
@@ -1375,9 +1325,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Diimplementasikan di "+trWriteList(numEntries)+".";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.16
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.16
+//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
@@ -1387,9 +1337,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Isi";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.17
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.17
+//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
@@ -1399,9 +1349,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Kadaluarsa";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.2.18
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.18
+//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
@@ -1416,9 +1366,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Dokumentasi Event";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.3
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3
+//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
@@ -1455,9 +1405,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Daftar Atribut Statis Paket";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.3.1
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.1
+//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
@@ -1469,12 +1419,12 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
- return "Berikut ini diagram pemanggilan untuk fungsi ini:";
+ return "Berikut ini bagan fungsi-terpanggil untuk fungsi ini:";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.3.3
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.3
+//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
@@ -1523,9 +1473,9 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Kecocokan:";
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.3.8
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.8
+//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
@@ -1534,15 +1484,15 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return "Kode Sumber:" + filename;
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.3.9
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.3.9
+//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual QCString trDirIndex()
- { return "Struktur Direktori"; }
+ { return "Hierarki Direktori"; }
/*! This is used as the name of the chapter containing the documentation
* of the directories.
@@ -1579,18 +1529,339 @@ class TranslatorIndonesian : public TranslatorAdapter_1_4_6
return result;
}
- //////////////////////////////////////////////////////////////////////////
- // new since 1.4.1
- //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// new since 1.4.1
+//////////////////////////////////////////////////////////////////////////
/*! This text is added to the documentation when the \\overload command
* is used for a overloaded function.
*/
virtual QCString trOverloadText()
{
- return "Ini adalah fungsi yang di-overload. Perbedaannya dengan fungsi di atas hanya pada "
- "parameter-parameter yang diterima.";
+ return "Ini adalah fungsi anggota yang di-overload"
+ " untuk kemudahan. Perbedaannya dengan fungsi di atas"
+ " hanya pada parameter-parameter yang diterima.";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.4.6
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used to introduce a caller (or called-by) graph */
+ virtual QCString trCallerGraph()
+ {
+ return "Berikut ini bagan fungsi-pemanggil untuk fungsi ini:";
+ }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration values
+ */
+ virtual QCString trEnumerationValueDocumentation()
+ { return "Dokumentasi Nilai Enumerasi"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.5.4 (mainly for Fortran)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! header that is put before the list of member subprograms (Fortran). */
+ virtual QCString trMemberFunctionDocumentationFortran()
+ { return "Dokumentasi Fungsi/Subrutin Anggota"; }
+
+ /*! This is put above each page as a link to the list of annotated data types (Fortran). */
+ virtual QCString trCompoundListFortran()
+ { return "Daftar Tipe Data"; }
+
+ /*! This is put above each page as a link to all members of compounds (Fortran). */
+ virtual QCString trCompoundMembersFortran()
+ { return "Variabel Data"; }
+
+ /*! This is an introduction to the annotated compound list (Fortran). */
+ virtual QCString trCompoundListDescriptionFortran()
+ { return "Berikut daftar tipe data, dengan penjelasan singkat:"; }
+
+ /*! This is an introduction to the page with all data types (Fortran). */
+ virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
+ {
+ QCString result="Berikut daftar semua anggota tipe data ";
+ if (!extractAll)
+ {
+ result+="terdokumentasi ";
+ }
+ result+=" dengan tautan ke ";
+ if (!extractAll)
+ {
+ result+="dokumentasi struktur data untuk setiap anggota:";
+ }
+ else
+ {
+ result+="tipe data yang memuatnya:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index (Fortran).
+ */
+ virtual QCString trCompoundIndexFortran()
+ { return "Indeks Tipe Data"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all data types (Fortran).
+ */
+ virtual QCString trTypeDocumentation()
+ { return "Dokumentasi Tipe Data"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) subprograms (Fortran).
+ */
+ virtual QCString trSubprograms()
+ { return "Fungsi/Subrutin"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for subprograms (Fortran)
+ */
+ virtual QCString trSubprogramDocumentation()
+ { return "Dokumentasi Fungsi/Subrutin"; }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds (Fortran)
+ */
+ virtual QCString trDataTypes()
+ { return "Tipe Data"; }
+
+ /*! used as the title of page containing all the index of all modules (Fortran). */
+ virtual QCString trModulesList()
+ { return "Modules List"; }
+
+ /*! used as an introduction to the modules list (Fortran) */
+ virtual QCString trModulesListDescription(bool extractAll)
+ {
+ QCString result="Berikut daftar semua modul";
+ if (!extractAll) result+=" terdokumentasi";
+ result+=", dengan penjelasan singkat:";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a module/type (Fortran) */
+ virtual QCString trCompoundReferenceFortran(const char *clName,
+ ClassDef::CompoundType compType,
+ bool isTemplate)
+ {
+ QCString result="Referensi ";
+ if (isTemplate) result+="Template ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="Modul "; break;
+ case ClassDef::Struct: result+="Tipe "; break;
+ case ClassDef::Union: result+="Union "; break;
+ case ClassDef::Interface: result+="Antarmuka "; break;
+ case ClassDef::Protocol: result+="Protokol "; break;
+ case ClassDef::Category: result+="Kategori "; break;
+ case ClassDef::Exception: result+="Eksepsi "; break;
+ }
+ result+=(QCString)clName;
+ return result;
+ }
+ /*! used as the title of the HTML page of a module (Fortran) */
+ virtual QCString trModuleReference(const char *namespaceName)
+ {
+ QCString result="Referensi Modul ";
+ result+=namespaceName;
+ return result;
+ }
+
+ /*! This is put above each page as a link to all members of modules. (Fortran) */
+ virtual QCString trModulesMembers()
+ { return "Anggota Modul"; }
+
+ /*! This is an introduction to the page with all modules members (Fortran) */
+ virtual QCString trModulesMemberDescription(bool extractAll)
+ {
+ QCString result="Berikut daftar semua anggota modul ";
+ if (!extractAll) result+="terdokumentasi ";
+ result+="dengan tautan ke ";
+ if (extractAll)
+ {
+ result+="dokumentasi modul untuk setiap anggota:";
+ }
+ else
+ {
+ result+="modul yang memuatnya:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all modules (Fortran).
+ */
+ virtual QCString trModulesIndex()
+ { return "Indeks Modul"; }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trModule(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Modul" : "modul"));
+ if (!singular) result+="-modul";
+ return result;
+ }
+ /*! This is put at the bottom of a module documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Module", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Dokumentasi untuk ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="module"; break;
+ case ClassDef::Struct: result+="type"; break;
+ case ClassDef::Union: result+="union"; break;
+ case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
+ case ClassDef::Exception: result+="exception"; break;
+ }
+ result+=" ini dibangkitkan dari file";
+ if (!single) result+="-file ";
+ result+="berikut:";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trType(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Tipe" : "tipe"));
+ if (!singular) result+="-tipe";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trSubprogram(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Subprogram" : "subprogram"));
+ if (!singular) result+="-subprogram";
+ return result;
+ }
+
+ /*! C# Type Constraint list */
+ virtual QCString trTypeConstraints()
+ {
+ return "Batasan Tipe";
}
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.6.0 (mainly for the new search engine)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! directory relation for \a name */
+ virtual QCString trDirRelation(const char *name)
+ {
+ return "Relasi "+QCString(name);
+ }
+
+ /*! Loading message shown when loading search results */
+ virtual QCString trLoading()
+ {
+ return "Memuat...";
+ }
+
+ /*! Label used for search results in the global namespace */
+ virtual QCString trGlobalNamespace()
+ {
+ return "Namespace Global";
+ }
+
+ /*! Message shown while searching */
+ virtual QCString trSearching()
+ {
+ return "Mencari...";
+ }
+
+ /*! Text shown when no search results are found */
+ virtual QCString trNoMatches()
+ {
+ return "Tidak Ditemukan";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.6.3 (missing items for the directory pages)
+//////////////////////////////////////////////////////////////////////////
+
+ /*! introduction text for the directory dependency graph */
+ virtual QCString trDirDependency(const char *name)
+ {
+ return (QCString)"Bagan dependensi direktori untuk "+name;
+ }
+
+ /*! when clicking a directory dependency label, a page with a
+ * table is shown. The heading for the first column mentions the
+ * source file that has a relation to another file.
+ */
+ virtual QCString trFileIn(const char *name)
+ {
+ return (QCString)"File dimuat dalam "+name;
+ }
+
+ /*! when clicking a directory dependency label, a page with a
+ * table is shown. The heading for the second column mentions the
+ * destination file that is included.
+ */
+ virtual QCString trIncludesFileIn(const char *name)
+ {
+ return (QCString)"Memuat file dalam "+name;
+ }
+
+ /** Compiles a date string.
+ * @param year Year in 4 digits
+ * @param month Month of the year: 1=January
+ * @param day Day of the Month: 1..31
+ * @param dayOfWeek Day of the week: 1=Monday..7=Sunday
+ * @param hour Hour of the day: 0..23
+ * @param minutes Minutes in the hour: 0..59
+ * @param seconds Seconds within the minute: 0..59
+ * @param includeTime Include time in the result string?
+ */
+ virtual QCString trDateTime(int year,int month,int day,int dayOfWeek,
+ int hour,int minutes,int seconds,
+ bool includeTime)
+ {
+ static const char *days[] = { "Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu" };
+ static const char *months[] = { "Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember" };
+ QCString sdate;
+ sdate.sprintf("%s %d %s %d",days[dayOfWeek-1],day,months[month-1],year);
+ if (includeTime)
+ {
+ QCString stime;
+ stime.sprintf(" %.2d:%.2d:%.2d",hour,minutes,seconds);
+ sdate+=stime;
+ }
+ return sdate;
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.7.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Header for the page with bibliographic citations */
+ virtual QCString trCiteReferences()
+ { return "Daftar Pustaka"; }
+
+ /*! Text for copyright paragraph */
+ virtual QCString trCopyright()
+ { return "Hak Cipta"; }
+
+ /*! Header for the graph showing the directory dependencies */
+ virtual QCString trDirDepGraph(const char *name)
+ { return QCString("Bagan dependensi directori untuk ")+name+":"; }
+
};
#endif
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index d4e8fef..764ab71 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1092,7 +1092,7 @@ static void writeInnerClasses(const ClassSDict *cl,FTextStream &t)
{
if (!cd->isHidden() && cd->name().find('@')==-1) // skip anonymous scopes
{
- t << " <innerclass refid=\"" << cd->getOutputFileBase()
+ t << " <innerclass refid=\"" << classOutputFileBase(cd)
<< "\" prot=\"";
switch(cd->protection())
{
@@ -1327,7 +1327,7 @@ static void generateXMLForClass(ClassDef *cd,FTextStream &ti)
}
}
- writeInnerClasses(cd->getInnerClasses(),t);
+ writeInnerClasses(cd->getClassSDict(),t);
writeTemplateList(cd,t);
if (cd->getMemberGroupSDict())