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 281 of file ftvhelp.cpp.

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

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 378 of file ftvhelp.cpp.

379{
380 bool dynamicSections = Config_getBool(HTML_DYNAMIC_SECTIONS);
381 for (const auto &n : nl)
382 {
383 t << "<tr id=\"row_" << generateIndentLabel(n,0) << "\"";
384 t << " class=\"";
385 if ((index&1)==0) // even row
386 t << "even";
387 else
388 t << "odd";
389 if (level>=maxLevel && dynamicSections) // item invisible by default
390 t << " hidden";
391 else // item visible by default
392 index++;
393 t << "\"";
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 << "<div class=\"folder-icon"
435 << (nodeOpened ? " open" : "")
436 << "\"></div></span>";
437 }
438 generateLink(t,n);
439 t << "</td><td class=\"desc\">";
440 if (n->def)
441 {
442 generateBriefDoc(t,n->def);
443 }
444 t << "</td></tr>\n";
445 folderId++;
446 generateTree(t,n->children,level+1,maxLevel,index);
447 }
448 else // leaf node
449 {
450 const FileDef *srcRef=nullptr;
451 if (n->def && n->def->definitionType()==Definition::TypeFile &&
452 (toFileDef(n->def))->generateSourceFile())
453 {
454 srcRef = toFileDef(n->def);
455 }
456 if (srcRef)
457 {
458 QCString fn=srcRef->getSourceFileBase();
460 t << "<a href=\"" << fn << "\">";
461 }
462 if (n->def && n->def->definitionType()==Definition::TypeGroup)
463 {
464 // no icon
465 }
466 else if (n->def && n->def->definitionType()==Definition::TypePage)
467 {
468 // no icon
469 }
470 else if (n->def && n->def->definitionType()==Definition::TypeNamespace)
471 {
472 if ((n->def->getLanguage() == SrcLangExt::Slice) || (n->def->getLanguage() == SrcLangExt::Fortran))
473 {
474 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
475 }
476 else if ((n->def->getLanguage() == SrcLangExt::Java) || (n->def->getLanguage() == SrcLangExt::VHDL))
477 {
478 t << "<span class=\"icona\"><span class=\"icon\">P</span></span>";
479 }
480 else
481 {
482 t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";
483 }
484 }
485 else if (n->def && n->def->definitionType()==Definition::TypeModule)
486 {
487 t << "<span class=\"icona\"><span class=\"icon\">M</span></span>";
488 }
489 else if (n->def && n->def->definitionType()==Definition::TypeClass)
490 {
491 char icon=compoundIcon(toClassDef(n->def));
492 t << "<span class=\"icona\"><span class=\"icon\">" << icon << "</span></span>";
493 }
494 else if (n->def && n->def->definitionType()==Definition::TypeConcept)
495 {
496 t << "<span class=\"icona\"><span class=\"icon\">R</span></span>";
497 }
498 else if (n->def && n->def->definitionType()==Definition::TypeDir)
499 {
500 t << "<span class=\"iconfolder\"><div class=\"folder-icon\"></div></span>";
501 }
502 else
503 {
504 t << "<span class=\"icondoc\"><div class=\"doc-icon\"></div></span>";
505 }
506 if (srcRef)
507 {
508 t << "</a>";
509 }
510 generateLink(t,n);
511 t << "</td><td class=\"desc\">";
512 if (n->def)
513 {
514 generateBriefDoc(t,n->def);
515 }
516 t << "</td></tr>\n";
517 }
518 }
519}
virtual QCString getSourceFileBase() const =0
ClassDef * toClassDef(Definition *d)
#define Config_getBool(name)
Definition config.h:33
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1966
static int folderId
Definition ftvhelp.cpp:43
static void generateBriefDoc(TextStream &t, const Definition *def)
Definition ftvhelp.cpp:328
static char compoundIcon(const ClassDef *cd)
Definition ftvhelp.cpp:357
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:378
void generateLink(TextStream &t, const FTVNodePtr &n)
Definition ftvhelp.cpp:281
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4942

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: