Doxygen
Loading...
Searching...
No Matches
FTVHelp::Private Struct Reference

Public Member Functions

 Private (bool TLI)
void generateTree (TextStream &t, const FTVNodes &nl, int level, int maxLevel, int &index)
void generateLink (TextStream &t, const FTVNodePtr &n)

Public Attributes

std::vector< FTVNodesindentNodes
int indent = 0
bool topLevelIndex

Detailed Description

Definition at line 105 of file ftvhelp.cpp.

Constructor & Destructor Documentation

◆ Private()

FTVHelp::Private::Private ( bool TLI)
inline

Definition at line 107 of file ftvhelp.cpp.

107: topLevelIndex(TLI) { indentNodes.resize(1); }
std::vector< FTVNodes > indentNodes
Definition ftvhelp.cpp:108

References indentNodes, and topLevelIndex.

Member Function Documentation

◆ generateLink()

void FTVHelp::Private::generateLink ( TextStream & t,
const FTVNodePtr & n )

Definition at line 283 of file ftvhelp.cpp.

284{
285 //printf("FTVHelp::generateLink(ref=%s,file=%s,anchor=%s\n",
286 // qPrint(n->ref),qPrint(n->file),qPrint(n->anchor));
287 bool setTarget = FALSE;
288 bool nameAsHtml = !n->nameAsHtml.isEmpty();
289 QCString text = nameAsHtml ? n->nameAsHtml : convertToHtml(n->name);
290 if (n->file.isEmpty()) // no link
291 {
292 t << "<b>" << text << "</b>";
293 }
294 else // link into other frame
295 {
296 if (!n->ref.isEmpty()) // link to entity imported via tag file
297 {
298 t << "<a class=\"elRef\" ";
299 QCString result = externalLinkTarget();
300 if (result != "") setTarget = TRUE;
301 t << result;
302 }
303 else // local link
304 {
305 t << "<a class=\"el\" ";
306 }
307 t << "href=\"";
308 t << externalRef("",n->ref,TRUE);
309 t << node2URL(n);
310 if (!setTarget)
311 {
312 if (topLevelIndex)
313 t << "\" target=\"basefrm\">";
314 else
315 t << "\" target=\"_self\">";
316 }
317 else
318 {
319 t << "\">";
320 }
321 t << text;
322 t << "</a>";
323 if (!n->ref.isEmpty())
324 {
325 t << "&#160;[external]";
326 }
327 }
328}
static QCString node2URL(const FTVNodePtr &n, bool overruleFile=FALSE, bool srcLink=FALSE)
Definition ftvhelp.cpp:216
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34
QCString externalRef(const QCString &relPath, const QCString &ref, bool href)
Definition util.cpp:5756
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:3947
QCString externalLinkTarget(const bool parent)
Definition util.cpp:5708

References convertToHtml(), externalLinkTarget(), externalRef(), FALSE, node2URL(), topLevelIndex, and TRUE.

◆ generateTree()

void FTVHelp::Private::generateTree ( TextStream & t,
const FTVNodes & nl,
int level,
int maxLevel,
int & index )

Definition at line 380 of file ftvhelp.cpp.

381{
382 bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
383 for (const auto &n : nl)
384 {
385 t << "<tr id=\"row_" << generateIndentLabel(n,0) << "\"";
386 if ((index&1)==0) // even row
387 t << " class=\"even\"";
388 else
389 t << " class=\"odd\"";
390 if (level>=maxLevel && dynamicSections) // item invisible by default
391 t << " style=\"display:none;\"";
392 else // item visible by default
393 index++;
394 t << "><td class=\"entry\">";
395 bool nodeOpened = level+1<maxLevel;
396 generateIndent(t,n,nodeOpened);
397 if (n->isDir)
398 {
399 if (n->def && n->def->definitionType()==Definition::TypeGroup)
400 {
401 // no icon
402 }
403 else if (n->def && n->def->definitionType()==Definition::TypePage)
404 {
405 // no icon
406 }
407 else if (n->def && n->def->definitionType()==Definition::TypeNamespace)
408 {
409 if ((n->def->getLanguage() == SrcLangExt::Slice) || (n->def->getLanguage() == SrcLangExt::Fortran))
410 {
411 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
412 }
413 else if ((n->def->getLanguage() == SrcLangExt::Java) || (n->def->getLanguage() == SrcLangExt::VHDL))
414 {
415 t << "<span class=\"icona\"><span class=\"icon\">P</span></span>";
416 }
417 else
418 {
419 t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";
420 }
421 }
422 else if (n->def && n->def->definitionType()==Definition::TypeModule)
423 {
424 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
425 }
426 else if (n->def && n->def->definitionType()==Definition::TypeClass)
427 {
428 char icon=compoundIcon(toClassDef(n->def));
429 t << "<span class=\"icona\"><span class=\"icon\">" << icon << "</span></span>";
430 }
431 else if (dynamicSections)
432 {
433 t << "<span id=\"img_" << generateIndentLabel(n,0) << "\" class=\"iconfolder"
434 << "\" onclick=\"dynsection.toggleFolder('" << generateIndentLabel(n,0)
435 << "')\"><div class=\"folder-icon"
436 << (nodeOpened ? " open" : "")
437 << "\"></div></span>";
438 }
439 generateLink(t,n);
440 t << "</td><td class=\"desc\">";
441 if (n->def)
442 {
443 generateBriefDoc(t,n->def);
444 }
445 t << "</td></tr>\n";
446 folderId++;
447 generateTree(t,n->children,level+1,maxLevel,index);
448 }
449 else // leaf node
450 {
451 const FileDef *srcRef=nullptr;
452 if (n->def && n->def->definitionType()==Definition::TypeFile &&
453 (toFileDef(n->def))->generateSourceFile())
454 {
455 srcRef = toFileDef(n->def);
456 }
457 if (srcRef)
458 {
459 QCString fn=srcRef->getSourceFileBase();
461 t << "<a href=\"" << fn << "\">";
462 }
463 if (n->def && n->def->definitionType()==Definition::TypeGroup)
464 {
465 // no icon
466 }
467 else if (n->def && n->def->definitionType()==Definition::TypePage)
468 {
469 // no icon
470 }
471 else if (n->def && n->def->definitionType()==Definition::TypeNamespace)
472 {
473 if ((n->def->getLanguage() == SrcLangExt::Slice) || (n->def->getLanguage() == SrcLangExt::Fortran))
474 {
475 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
476 }
477 else if ((n->def->getLanguage() == SrcLangExt::Java) || (n->def->getLanguage() == SrcLangExt::VHDL))
478 {
479 t << "<span class=\"icona\"><span class=\"icon\">P</span></span>";
480 }
481 else
482 {
483 t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";
484 }
485 }
486 else if (n->def && n->def->definitionType()==Definition::TypeModule)
487 {
488 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
489 }
490 else if (n->def && n->def->definitionType()==Definition::TypeClass)
491 {
492 char icon=compoundIcon(toClassDef(n->def));
493 t << "<span class=\"icona\"><span class=\"icon\">" << icon << "</span></span>";
494 }
495 else if (n->def && n->def->definitionType()==Definition::TypeConcept)
496 {
497 t << "<span class=\"icona\"><span class=\"icon\">R</span></span>";
498 }
499 else if (n->def && n->def->definitionType()==Definition::TypeDir)
500 {
501 t << "<span class=\"iconfolder\"><div class=\"folder-icon\"></div></span>";
502 }
503 else
504 {
505 t << "<span class=\"icondoc\"><div class=\"doc-icon\"></div></span>";
506 }
507 if (srcRef)
508 {
509 t << "</a>";
510 }
511 generateLink(t,n);
512 t << "</td><td class=\"desc\">";
513 if (n->def)
514 {
515 generateBriefDoc(t,n->def);
516 }
517 t << "</td></tr>\n";
518 }
519 }
520}
virtual QCString getSourceFileBase() const =0
ClassDef * toClassDef(Definition *d)
#define Config_getBool(name)
Definition config.h:33
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1967
static int folderId
Definition ftvhelp.cpp:43
static void generateBriefDoc(TextStream &t, const Definition *def)
Definition ftvhelp.cpp:330
static char compoundIcon(const ClassDef *cd)
Definition ftvhelp.cpp:359
static void generateIndent(TextStream &t, const FTVNodePtr &n, bool opened)
Definition ftvhelp.cpp:260
static QCString generateIndentLabel(const FTVNodePtr &n, int level)
Definition ftvhelp.cpp:248
void generateTree(TextStream &t, const FTVNodes &nl, int level, int maxLevel, int &index)
Definition ftvhelp.cpp:380
void generateLink(TextStream &t, const FTVNodePtr &n)
Definition ftvhelp.cpp:283
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4905

References addHtmlExtensionIfMissing(), compoundIcon(), Config_getBool, folderId, generateBriefDoc(), generateIndent(), generateIndentLabel(), generateLink(), generateTree(), Definition::getSourceFileBase(), toClassDef(), toFileDef(), Definition::TypeClass, Definition::TypeConcept, Definition::TypeDir, Definition::TypeFile, Definition::TypeGroup, Definition::TypeModule, Definition::TypeNamespace, and Definition::TypePage.

Referenced by generateTree().

Member Data Documentation

◆ indent

int FTVHelp::Private::indent = 0

Definition at line 109 of file ftvhelp.cpp.

◆ indentNodes

std::vector<FTVNodes> FTVHelp::Private::indentNodes

Definition at line 108 of file ftvhelp.cpp.

Referenced by Private().

◆ topLevelIndex

bool FTVHelp::Private::topLevelIndex

Definition at line 110 of file ftvhelp.cpp.

Referenced by generateLink(), and Private().


The documentation for this struct was generated from the following file: