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

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

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

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

References addHtmlExtensionIfMissing(), compoundIcon(), 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: