|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#ifndef LAYOUT_H
|
|
Packit |
1c1d7e |
#define LAYOUT_H
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qlist.h>
|
|
Packit |
1c1d7e |
#include "types.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class LayoutParser;
|
|
Packit |
1c1d7e |
class MemberList;
|
|
Packit |
1c1d7e |
class QTextStream;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Base class representing a piece of a documentation page */
|
|
Packit |
1c1d7e |
struct LayoutDocEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
virtual ~LayoutDocEntry() {}
|
|
Packit |
1c1d7e |
enum Kind {
|
|
Packit |
1c1d7e |
// Generic items for all pages
|
|
Packit |
1c1d7e |
MemberGroups,
|
|
Packit |
1c1d7e |
MemberDeclStart, MemberDeclEnd, MemberDecl,
|
|
Packit |
1c1d7e |
MemberDefStart, MemberDefEnd, MemberDef,
|
|
Packit |
1c1d7e |
BriefDesc, DetailedDesc,
|
|
Packit |
1c1d7e |
AuthorSection,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Class specific items
|
|
Packit |
1c1d7e |
ClassIncludes, ClassInlineClasses,
|
|
Packit |
1c1d7e |
ClassInheritanceGraph, ClassNestedClasses,
|
|
Packit |
1c1d7e |
ClassCollaborationGraph, ClassAllMembersLink,
|
|
Packit |
1c1d7e |
ClassUsedFiles,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Namespace specific items
|
|
Packit |
1c1d7e |
NamespaceNestedNamespaces, NamespaceNestedConstantGroups,
|
|
Packit |
1c1d7e |
NamespaceClasses, NamespaceInlineClasses,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// File specific items
|
|
Packit |
1c1d7e |
FileClasses, FileNamespaces, FileConstantGroups,
|
|
Packit |
1c1d7e |
FileIncludes, FileIncludeGraph,
|
|
Packit |
1c1d7e |
FileIncludedByGraph, FileSourceLink,
|
|
Packit |
1c1d7e |
FileInlineClasses,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Group specific items
|
|
Packit |
1c1d7e |
GroupClasses, GroupInlineClasses, GroupNamespaces,
|
|
Packit |
1c1d7e |
GroupDirs, GroupNestedGroups, GroupFiles,
|
|
Packit |
1c1d7e |
GroupGraph, GroupPageDocs,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Directory specific items
|
|
Packit |
1c1d7e |
DirSubDirs, DirFiles, DirGraph
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
virtual Kind kind() const = 0;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Represents of a piece of a documentation page without configurable parts */
|
|
Packit |
1c1d7e |
struct LayoutDocEntrySimple : LayoutDocEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
LayoutDocEntrySimple(Kind k) : m_kind(k) {}
|
|
Packit |
1c1d7e |
Kind kind() const { return m_kind; }
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
Kind m_kind;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
struct LayoutDocEntrySection: public LayoutDocEntrySimple
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection(Kind k,const QCString &tl) :
|
|
Packit |
1c1d7e |
LayoutDocEntrySimple(k), m_title(tl) {}
|
|
Packit |
1c1d7e |
QCString title(SrcLangExt lang) const;
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
QCString m_title;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Represents of a member declaration list with configurable title and subtitle. */
|
|
Packit |
1c1d7e |
struct LayoutDocEntryMemberDecl: public LayoutDocEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDecl(MemberListType tp,
|
|
Packit |
1c1d7e |
const QCString &tl,const QCString &ss)
|
|
Packit |
1c1d7e |
: type(tp), m_title(tl), m_subscript(ss) {}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Kind kind() const { return MemberDecl; }
|
|
Packit |
1c1d7e |
MemberListType type;
|
|
Packit |
1c1d7e |
QCString title(SrcLangExt lang) const;
|
|
Packit |
1c1d7e |
QCString subtitle(SrcLangExt lang) const;
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
QCString m_title;
|
|
Packit |
1c1d7e |
QCString m_subscript;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Represents of a member definition list with configurable title. */
|
|
Packit |
1c1d7e |
struct LayoutDocEntryMemberDef: public LayoutDocEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDef(MemberListType tp,const QCString &tl)
|
|
Packit |
1c1d7e |
: type(tp), m_title(tl) {}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Kind kind() const { return MemberDef; }
|
|
Packit |
1c1d7e |
MemberListType type;
|
|
Packit |
1c1d7e |
QCString title(SrcLangExt lang) const;
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
QCString m_title;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Base class for the layout of a navigation item at the top of the HTML pages. */
|
|
Packit |
1c1d7e |
struct LayoutNavEntry
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
enum Kind {
|
|
Packit |
1c1d7e |
MainPage,
|
|
Packit |
1c1d7e |
Pages,
|
|
Packit |
1c1d7e |
Modules,
|
|
Packit |
1c1d7e |
Namespaces,
|
|
Packit |
1c1d7e |
NamespaceList,
|
|
Packit |
1c1d7e |
NamespaceMembers,
|
|
Packit |
1c1d7e |
Classes,
|
|
Packit |
1c1d7e |
ClassList,
|
|
Packit |
1c1d7e |
ClassIndex,
|
|
Packit |
1c1d7e |
ClassHierarchy,
|
|
Packit |
1c1d7e |
ClassMembers,
|
|
Packit |
1c1d7e |
Files,
|
|
Packit |
1c1d7e |
FileList,
|
|
Packit |
1c1d7e |
FileGlobals,
|
|
Packit |
1c1d7e |
//Dirs,
|
|
Packit |
1c1d7e |
Examples,
|
|
Packit |
1c1d7e |
User,
|
|
Packit |
1c1d7e |
UserGroup
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
LayoutNavEntry(LayoutNavEntry *parent,Kind k,bool vs,const QCString &bf,
|
|
Packit |
1c1d7e |
const QCString &tl,const QCString &intro,bool prepend=FALSE)
|
|
Packit |
1c1d7e |
: m_parent(parent), m_kind(k), m_visible(vs), m_baseFile(bf), m_title(tl), m_intro(intro)
|
|
Packit |
1c1d7e |
{ m_children.setAutoDelete(TRUE);
|
|
Packit |
1c1d7e |
if (parent) { if (prepend) parent->prependChild(this); else parent->addChild(this); }
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
LayoutNavEntry *parent() const { return m_parent; }
|
|
Packit |
1c1d7e |
Kind kind() const { return m_kind; }
|
|
Packit |
1c1d7e |
QCString baseFile() const { return m_baseFile; }
|
|
Packit |
1c1d7e |
QCString title() const { return m_title; }
|
|
Packit |
1c1d7e |
QCString intro() const { return m_intro; }
|
|
Packit |
1c1d7e |
QCString url() const;
|
|
Packit |
1c1d7e |
bool visible() { return m_visible; }
|
|
Packit |
1c1d7e |
void clear() { m_children.clear(); }
|
|
Packit |
1c1d7e |
void addChild(LayoutNavEntry *e) { m_children.append(e); }
|
|
Packit |
1c1d7e |
void prependChild(LayoutNavEntry *e) { m_children.prepend(e); }
|
|
Packit |
1c1d7e |
const QList<LayoutNavEntry> &children() const { return m_children; }
|
|
Packit |
1c1d7e |
LayoutNavEntry *find(LayoutNavEntry::Kind k,const char *file=0) const;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
LayoutNavEntry() : m_parent(0) {}
|
|
Packit |
1c1d7e |
LayoutNavEntry *m_parent;
|
|
Packit |
1c1d7e |
Kind m_kind;
|
|
Packit |
1c1d7e |
bool m_visible;
|
|
Packit |
1c1d7e |
QCString m_baseFile;
|
|
Packit |
1c1d7e |
QCString m_title;
|
|
Packit |
1c1d7e |
QCString m_intro;
|
|
Packit |
1c1d7e |
QList<LayoutNavEntry> m_children;
|
|
Packit |
1c1d7e |
friend class LayoutDocManager;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** @brief Singleton providing access to the (user configurable) layout of the documentation */
|
|
Packit |
1c1d7e |
class LayoutDocManager
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
class Private;
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
enum LayoutPart
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Class, Namespace, File, Group, Directory,
|
|
Packit |
1c1d7e |
NrParts
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
/** Returns a reference to this singleton. */
|
|
Packit |
1c1d7e |
static LayoutDocManager &instance();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** Returns the list of LayoutDocEntry's in representation order for a given page identified by @a part. */
|
|
Packit |
1c1d7e |
const QList<LayoutDocEntry> &docEntries(LayoutPart part) const;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** returns the (invisible) root of the navigation tree. */
|
|
Packit |
1c1d7e |
LayoutNavEntry *rootNavEntry() const;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** Parses a user provided layout */
|
|
Packit |
1c1d7e |
void parse(QTextStream &t,const char *fileName);
|
|
Packit |
1c1d7e |
void init();
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
void addEntry(LayoutPart p,LayoutDocEntry*e);
|
|
Packit |
1c1d7e |
void clear(LayoutPart p);
|
|
Packit |
1c1d7e |
LayoutDocManager();
|
|
Packit |
1c1d7e |
~LayoutDocManager();
|
|
Packit |
1c1d7e |
Private *d;
|
|
Packit |
1c1d7e |
friend class LayoutParser;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void writeDefaultLayoutFile(const char *fileName);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|