Example #1
0
QCString FTVHelp::generateIndentLabel(FTVNode *n,int level)
{
    QCString result;
    if (n->parent)
    {
        result=generateIndentLabel(n->parent,level+1);
    }
    result+=QCString().setNum(n->index)+"_";
    return result;
}
Example #2
0
void FTVHelp::generateIndent(FTextStream &t, FTVNode *n,bool opened)
{
  int indent=0;
  FTVNode *p = n->parent;
  while (p) { indent++; p=p->parent; }
  if (n->isDir)
  {
    QCString dir = opened ? "▼" : "►";
    t << "<span style=\"width:" << (indent*16) << "px;display:inline-block;\">&#160;</span>"
      << "<span id=\"arr_" << generateIndentLabel(n,0) << "\" class=\"arrow\" ";
    t << "onclick=\"toggleFolder('" << generateIndentLabel(n,0) << "')\"";
    t << ">" << dir
      << "</span>";
  }
  else
  {
    t << "<span style=\"width:" << ((indent+1)*16) << "px;display:inline-block;\">&#160;</span>";
  }
}
QString FTVHelp::generateIndentLabel(FTVNode *n, int level)
{
   QString result;

   if (n->parent) {
      result = generateIndentLabel(n->parent, level + 1);
   }

   result += QString::number(n->index) + "_";

   return result;
}
Example #4
0
void FTVHelp::generateTree(FTextStream &t, const QList<FTVNode> &nl,int level,int maxLevel,int &index)
{
    QListIterator<FTVNode> nli(nl);
    FTVNode *n;
    for (nli.toFirst(); (n=nli.current()); ++nli)
    {
        t << "<tr id=\"row_" << generateIndentLabel(n,0) << "\"";
        if ((index&1)==0) // even row
            t << " class=\"even\"";
        if (level>=maxLevel) // item invisible by default
            t << " style=\"display:none;\"";
        else // item visible by default
            index++;
        t << "><td class=\"entry\">";
        bool nodeOpened = level+1<maxLevel;
        generateIndent(t,n,nodeOpened);
        if (n->isDir)
        {
            if (n->def && n->def->definitionType()==Definition::TypeGroup)
            {
                // no icon
            }
            else if (n->def && n->def->definitionType()==Definition::TypePage)
            {
                // no icon
            }
            else if (n->def && n->def->definitionType()==Definition::TypeNamespace)
            {
                t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";
            }
            else if (n->def && n->def->definitionType()==Definition::TypeClass)
            {
                t << "<span class=\"icona\"><span class=\"icon\">C</span></span>";
            }
            else
            {
                t << "<span id=\"img_" << generateIndentLabel(n,0)
                  << "\" class=\"iconf"
                  << (nodeOpened?"open":"closed")
                  << "\" onclick=\"toggleFolder('" << generateIndentLabel(n,0)
                  << "')\">&#160;</span>";
            }
            generateLink(t,n);
            t << "</td><td class=\"desc\">";
            if (n->def)
            {
                generateBriefDoc(t,n->def);
            }
            t << "</td></tr>" << endl;
            folderId++;
            generateTree(t,n->children,level+1,maxLevel,index);
        }
        else // leaf node
        {
            FileDef *srcRef=0;
            if (n->def && n->def->definitionType()==Definition::TypeFile &&
                    ((FileDef*)n->def)->generateSourceFile())
            {
                srcRef = (FileDef*)n->def;
            }
            if (srcRef)
            {
                t << "<a href=\"" << srcRef->getSourceFileBase()
                  << Doxygen::htmlFileExtension
                  << "\">";
            }
            if (n->def && n->def->definitionType()==Definition::TypeGroup)
            {
                // no icon
            }
            else if (n->def && n->def->definitionType()==Definition::TypePage)
            {
                // no icon
            }
            else if (n->def && n->def->definitionType()==Definition::TypeNamespace)
            {
                t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";
            }
            else if (n->def && n->def->definitionType()==Definition::TypeClass)
            {
                t << "<span class=\"icona\"><span class=\"icon\">C</span></span>";
            }
            else
            {
                t << "<span class=\"icondoc\"></span>";
            }
            if (srcRef)
            {
                t << "</a>";
            }
            generateLink(t,n);
            t << "</td><td class=\"desc\">";
            if (n->def)
            {
                generateBriefDoc(t,n->def);
            }
            t << "</td></tr>" << endl;
        }
    }
}
void FTVHelp::generateTree(QTextStream &t, const QList<FTVNode *> &nl, int level, int maxLevel, int &index, enum PageType outputType)
{
   static bool isStyleBB = Config::getBool("bb-style"); 

   for (auto n : nl) {
      t << "<tr id=\"row_" << generateIndentLabel(n, 0) << "\"";

      if ((index & 1) == 0) { 
         // even row
         t << " class=\"even\"";
      }

      if (level >= maxLevel) { 
         // item invisible by default
         t << " style=\"display:none;\"";

      } else { 
         // item visible by default
         index++;

      }

      t << "><td class=\"entry\">";

      bool nodeOpened = level + 1 < maxLevel;
      generateIndent(t, n, nodeOpened);

      if (n->isDir) {
         if (n->def && n->def->definitionType() == Definition::TypeGroup) {
            // no icon

         } else if (n->def && n->def->definitionType() == Definition::TypePage) {
            // no icon

         } else if (n->def && n->def->definitionType() == Definition::TypeNamespace) {
            t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";

         } else if (n->def && n->def->definitionType() == Definition::TypeClass) {
            t << "<span class=\"icona\"><span class=\"icon\">C</span></span>";

         } else {
            t << "<span id=\"img_" << generateIndentLabel(n, 0)
              << "\" class=\"iconf"
              << (nodeOpened ? "open" : "closed")
              << "\" onclick=\"toggleFolder('" << generateIndentLabel(n, 0)
              << "')\">&#160;</span>";
         }

         generateLink(t, n);
         t << "</td>";

         if (isStyleBB && outputType == FTVHelp::Modules) {
            // modules.html only

            QString text = n->def->getDefFileName();
            text = text.mid( text.lastIndexOf('/')+1 ); 

            t << "<td class=\"hint\">";
            t << text;
            t << "</td>";
         }

         // brief description   
         t << "<td class=\"desc\">";

         if (n->def) {
            generateBriefDoc(t, n->def);
         } 
         
         t << "</td></tr>" << endl;

         folderId++;
         generateTree(t, n->children, level + 1, maxLevel, index, outputType);

      } else {   
         // leaf node
         QSharedPointer<FileDef> srcRef;

         if (n->def && n->def->definitionType() == Definition::TypeFile && (n->def.dynamicCast<FileDef>())->generateSourceFile()) {
            srcRef = n->def.dynamicCast<FileDef>();
         }

         if (srcRef) {
            t << "<a href=\"" << srcRef->getSourceFileBase()
              << Doxy_Globals::htmlFileExtension
              << "\">";
         }

         if (n->def && n->def->definitionType() == Definition::TypeGroup) {
            // no icon

         } else if (n->def && n->def->definitionType() == Definition::TypePage) {
            // no icon

         } else if (n->def && n->def->definitionType() == Definition::TypeNamespace) {
            t << "<span class=\"icona\"><span class=\"icon\">N</span></span>";

         } else if (n->def && n->def->definitionType() == Definition::TypeClass) {
            t << "<span class=\"icona\"><span class=\"icon\">C</span></span>";

         } else {
            t << "<span class=\"icondoc\"></span>";
         }

         if (srcRef) {
            t << "</a>";
         }

         generateLink(t, n);
         t << "</td>";

         if (isStyleBB && outputType == FTVHelp::Modules) {
            // modules.html only

            QString text = n->def->getDefFileName();
            text = text.mid( text.lastIndexOf('/')+1 ); 

            t << "<td class=\"hint\">";
            t << text;
            t << "</td>";
         }

         // brief description 
         t << "<td class=\"desc\">";

         if (n->def) {
            generateBriefDoc(t, n->def);
         }

         t << "</td></tr>" << endl;
      }
   }
}