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:6266
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:4476
QCString externalLinkTarget(const bool parent)
Definition util.cpp:6222

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

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

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: