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

Constructor & Destructor Documentation

◆ Private()

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

Definition at line 110 of file ftvhelp.cpp.

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

References indentNodes, and topLevelIndex.

Member Function Documentation

◆ generateLink()

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

Definition at line 284 of file ftvhelp.cpp.

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

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

Referenced by generateTree().

◆ generateTree()

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

Definition at line 381 of file ftvhelp.cpp.

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

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

◆ indentNodes

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

Definition at line 111 of file ftvhelp.cpp.

Referenced by Private().

◆ topLevelIndex

bool FTVHelp::Private::topLevelIndex

Definition at line 113 of file ftvhelp.cpp.

Referenced by generateLink(), and Private().


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