summaryrefslogtreecommitdiffstats
path: root/Doc/library/modules.rst
Commit message (Expand)AuthorAgeFilesLines
* gh-93610: Improve docs for importlib.resources (#93611)Petr Viktorin2022-07-251-0/+1
* bpo-31582: Created a new documentation section describing sys.path initializa...Russel Webber2022-03-231-0/+1
* bpo-46109: Separate out files relating to importlib.resources (GH-30160)Jason R. Coombs2021-12-311-0/+1
* bpo-34632: Add importlib.metadata (GH-12547)Jason R. Coombs2019-05-241-0/+1
* Closes #18959: move optparse and imp to new "superseded modules" chapterGeorg Brandl2014-10-111-1/+0
* Signature documentation style update, modules J, K, L and M.Georg Brandl2009-06-081-1/+0
* Document the (very small) public API for importlib. As time goes on and someBrett Cannon2009-01-201-0/+1
* Remove the imputil module.Brett Cannon2008-05-081-1/+0
* Merge the trunk changes in. Breaks socket.ssl for now.Thomas Wouters2007-08-281-0/+1
* Move the 3k reST doc tree in place.Georg Brandl2007-08-151-0/+20
href='#n155'>155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
/******************************************************************************
 *
 * 
 *
 * Copyright (C) 1997-2002 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby 
 * granted. No representations are made about the suitability of this software 
 * for any purpose. It is provided "as is" without express or implied warranty.
 * See the GNU General Public License for more details.
 *
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
 *
 */

#ifndef HTMLGEN_H
#define HTMLGEN_H

#include "qtbc.h"
#include "outputgen.h"

class QFile;

class HtmlGenerator : public OutputGenerator
{
  public:
    HtmlGenerator();
    virtual ~HtmlGenerator();
    static void init();
    static void writeStyleSheetFile(QFile &f);
    static void writeHeaderFile(QFile &f);
    static void writeFooterFile(QFile &f);
   
    OutputGenerator *copy() { return new HtmlGenerator; }
    //OutputGenerator *clone() { return new HtmlGenerator(*this); }
    void append(const OutputGenerator *o);
    void enable() { active=TRUE; }
    void disable() { active=FALSE; }
    void enableIf(OutputType o)  { if (o==Html) active=TRUE;  }
    void disableIf(OutputType o) { if (o==Html) active=FALSE; }
    void disableIfNot(OutputType o) { if (o!=Html) active=FALSE; }
    bool isEnabled(OutputType o) { return (o==Html && active); } 
    OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; }

    void printDoc(DocNode *);

    
    //void generateExternalIndex();
    void startFile(const char *name,const char *manName,
                   const char *title,bool external);
    void writeFooter(int,bool);
    void endFile();
    void clearBuffer();

    //void writeIndex();
    void startIndexSection(IndexSections) {}
    void endIndexSection(IndexSections) {}
    void startProjectNumber();
    void endProjectNumber();
    void writeStyleInfo(int part);
    void startTitleHead(const char *) { startTitle(); }
    void endTitleHead(const char *,const char *) { endTitle(); }
    void startTitle() { t << "<h1>"; }
    void endTitle() { t << "</h1>"; }
    
    void newParagraph();
    void writeString(const char *text);
    void startIndexList();
    void endIndexList();
    void startIndexKey();
    void endIndexKey();
    void startIndexValue(bool);
    void endIndexValue(const char *,bool);
    void startItemList()  { t << "<ul>"  << endl; }
    void endItemList()    { t << "</ul>" << endl; }
    void startEnumList()  { t << "<ol>"  << endl; }
    void endEnumList()    { t << "</ol>" << endl; }
    void startAlphabeticalIndexList();
    void endAlphabeticalIndexList();
    void writeIndexHeading(const char *s);
    void writeIndexItem(const char *ref,const char *file,const char *name);
    void docify(const char *text);
    void codify(const char *text);
    void writeObjectLink(const char *ref,const char *file,
                         const char *anchor,const char *name);
    void writeCodeLink(const char *ref,const char *file,
                       const char *anchor,const char *name);
    void startTextLink(const char *file,const char *anchor);
    void endTextLink();
    void startHtmlLink(const char *url);
    void endHtmlLink();
    void writeMailLink(const char *url);
    void startTypewriter() { t << "<code>"; }
    void endTypewriter()   { t << "</code>"; }
    void startGroupHeader();
    void endGroupHeader();
    void writeListItem() { t << "<li>"; }

    void startMemberSections();
    void endMemberSections();
    void startMemberHeader();
    void endMemberHeader();
    void startMemberSubtitle();
    void endMemberSubtitle();
    void startMemberList();
    void endMemberList();
    void startMemberItem(int);

    void startMemberGroupHeader(bool);
    void endMemberGroupHeader();
    void startMemberGroupDocs();
    void endMemberGroupDocs();
    void startMemberGroup();
    void endMemberGroup(bool);

    void insertMemberAlign();
    void endMemberItem(bool);
    void startMemberDescription();
    void endMemberDescription();

    void writeRuler()    { t << "<hr>"; }
    void writeAnchor(const char *,const char *name) 
                         { t << "<a name=\"" << name <<"\"></a>"; }
    void startCodeFragment() { t << "<div class=\"fragment\"><pre>"; }
    void endCodeFragment()   { t << "</pre></div>"; } 
    void startPreFragment() { t << "<pre>"; }
    void endPreFragment()   { t << "</pre>"; }
    void startVerbatimFragment() { t << "<div class=\"fragment\"><pre>"; }
    void endVerbatimFragment()   { t << "</pre></div>"; } 
    void writeLineNumber(const char *,const char *,const char *,int);
    void startCodeLine() { col=0; }
    void endCodeLine()   { codify("\n"); }
    //void writeBoldString(const char *text) 
    //                     { t << "<b>"; docify(text); t << "</b>"; }
    void startEmphasis() { t << "<em>";  }
    void endEmphasis()   { t << "</em>"; }
    void startBold()     { t << "<b>"; }
    void endBold()       { t << "</b>"; }
    void startDescription() { t << endl << "<dl compact>" << endl; }
    void endDescription()   { t << endl << "</dl>" << endl; }
    void startDescItem()    { t << "<dt>"; }
    void endDescItem()      { t << "<dd>"; }
    void lineBreak() { t << "<br>" << endl; }
    void writeChar(char c);
    void startMemberDoc(const char *,const char *,const char *,const char *);
    void endMemberDoc(); 
    //void writeDoxyAnchor(const char *fName,const char *clName,
    //                     const char *anchor,const char *name);
    void startDoxyAnchor(const char *fName,const char *manName,
                         const char *anchor,const char *name);
    void endDoxyAnchor(const char *fName,const char *anchor);
    void startCodeAnchor(const char *label) { t << "<a name=\"" << label << "\"></a>"; }
    void endCodeAnchor() { }
    void writeLatexSpacing() {}
    //void writeLatexLabel(const char *,const char *) {}
    void writeStartAnnoItem(const char *type,const char *file,
                            const char *path,const char *name);
    void writeEndAnnoItem(const char *) { t << endl; }
    void startSubsection()    { t << "<h2>"; }
    void endSubsection()      { t << "</h2>" << endl; }
    void startSubsubsection() { t << "<h3>"; }
    void endSubsubsection()   { t << "</h3>" << endl; }
    void startCenter()        { t << "<center>" << endl; }
    void endCenter()          { t << "</center>" << endl; }
    void startSmall()         { t << "<small>" << endl; }
    void endSmall()           { t << "</small>" << endl; }
    void startSubscript()     { t << "<sub>"; }
    void endSubscript()       { t << "</sub>"; }
    void startSuperscript()   { t << "<sup>"; }
    void endSuperscript()     { t << "</sup>"; }
    void startTable(bool,int) 
                              { t << "<table border=1 cellspacing=3 cellpadding=3>"; }
    void endTable(bool hasCaption) 
                              { if (!hasCaption) t << "</tr>"; 
                                t << "</table>" << endl; 
                              }
    void startCaption()       { t << "</tr><caption align=\"bottom\">"; }
    void endCaption()         { t << "</caption>" << endl; }
    void nextTableRow()       { t << "<tr><td>"; }
    void endTableRow()        { t << "</tr>" << endl; }
    void nextTableColumn()    { t << "<td>"; }
    void endTableColumn()     { t << "</td>"; }
    void writeCopyright()     { t << "&copy;"; }
    void writeQuote()         { t << "&quot;"; }
    void writeUmlaut(char c)  { t << "&" << c << "uml;"; }
    void writeAcute(char c)   { t << "&" << c << "acute;"; }
    void writeGrave(char c)   { t << "&" << c << "grave;"; }
    void writeCirc(char c)    { t << "&" << c << "circ;"; }
    void writeTilde(char c)   { t << "&" << c << "tilde;"; } 
    void writeRing(char c)    { t << "&" << c << "ring;"; }
    void writeSharpS()        { t << "&szlig;"; }
    void writeCCedil(char c)  { t << "&" << c << "cedil;"; }
    void startDescList(SectionTypes)      { t << "<dl compact><dt><b>" << endl; }
    void endDescList()        { t << "</dl>"; }
    void startSimpleSect(SectionTypes,const char *,const char *,const char *);
    void endSimpleSect();
    void startParamList(ParamListTypes,const char *);
    void endParamList();
    void endDescTitle()       { t << "</b>"; }
    void writeDescItem()      { t << "<dd>" << endl; }
    void startSection(const char *,const char *,SectionInfo::SectionType);
    void endSection(const char *,SectionInfo::SectionType);
    void writeSectionRef(const char *,const char *,const char *,const char *);
    void writeSectionRefItem(const char *,const char *,const char *);
    //void writeSectionRefAnchor(const char *,const char *,const char *);
    void addIndexItem(const char *,const char *);
    void startIndent();
    void endIndent();
    void writeSynopsis() {}
    void startClassDiagram();
    void endClassDiagram(ClassDiagram &,const char *,const char *);
    //void startColorFont(uchar r,uchar g,uchar b);
    //void endColorFont();
    void startPageRef() {}
    void endPageRef(const char *,const char *) {}
    void startQuickIndexItem(const char *,const char *);
    void endQuickIndexItem();
    void writeFormula(const char *,const char *);
    void writeNonBreakableSpace(int);
    void startImage(const char *,const char *,bool);
    void endImage(bool);
    void startDotFile(const char *,bool);
    void endDotFile(bool);
    
    void startDescTable()
    { t << "<table border=0 cellspacing=2 cellpadding=0>" << endl; }
    void endDescTable()
    { t << "</table>" << endl; }
    void startDescTableTitle()
    { t << "<tr><td valign=top><em>"; }
    void endDescTableTitle()
    { t << "</em>&nbsp;</td>"; }
    void startDescTableData()
    { t << "<td>" << endl; }
    void endDescTableData()
    { t << "</td></tr>" << endl; }
    //static void docifyStatic(QTextStream &t,const char *str);
    
    void startDotGraph();
    void endDotGraph(DotClassGraph &g);
    void startInclDepGraph();
    void endInclDepGraph(DotInclDepGraph &g);
    void writeGraphicalHierarchy(DotGfxHierarchyTable &g);

    void startTextBlock(bool) {}
    void endTextBlock() {}
    void lastIndexPage() {}

    void startMemberDocPrefixItem();
    void endMemberDocPrefixItem();
    void startMemberDocName();
    void endMemberDocName();
    void startParameterType(bool first);
    void endParameterType();
    void startParameterName(bool);
    void endParameterName(bool last,bool emptyList);
    void startParameterList();
    void endParameterList();

    void startFontClass(const char *s) { t << "<span class=\"" << s << "\">"; }
    void endFontClass() { t << "</span>"; }

    void startHtmlOnly()  {}
    void endHtmlOnly()    {}
    void startLatexOnly() {}
    void endLatexOnly()   {}

    void startSectionRefList();
    void endSectionRefList();

    void writeCodeAnchor(const char *anchor) 
    { t << "<a name=\"" << anchor << "\"></a>"; }

  private:
    QCString lastTitle;
    QCString lastFile;

    HtmlGenerator &operator=(const HtmlGenerator &g);
    HtmlGenerator(const HtmlGenerator &g);

    int col;
};

#endif