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

Constructor & Destructor Documentation

◆ Private()

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

Definition at line 106 of file ftvhelp.cpp.

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

References indentNodes, and topLevelIndex.

Member Function Documentation

◆ generateLink()

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

Definition at line 279 of file ftvhelp.cpp.

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

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

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

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

◆ indentNodes

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

Definition at line 107 of file ftvhelp.cpp.

Referenced by Private().

◆ topLevelIndex

bool FTVHelp::Private::topLevelIndex

Definition at line 109 of file ftvhelp.cpp.

Referenced by generateLink(), and Private().


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