skye
skye

Reputation: 41

Specify title of a doxygen auto-gen class

Is there any way to specify the title of a class page auto generated by doxygen? So instead of "ClassName Class Reference" at the top of the page I could use my own text?

Or if not my own text I'd settle for just displaying "ClassName" (without the "Class Reference").

The screenshot below shows in green the text I am trying to get rid of ... so on this page I would like the title to simply be "WindSpeedSetting". Or even more ideally I'd like the title to be "WindSpeedSetting Table".

enter image description here

Here is an excerpt from my doxy file:

<navindex>
  <tab type="mainpage" visible="yes" title=""/>
  <tab type="classes" visible="no" title="">
    <tab type="classlist" visible="no" title="" intro=""/>
    <tab type="classindex" visible="no" title=""/>
    <tab type="hierarchy" visible="no" title=""/>
    <tab type="classmembers" visible="no" title=""/>
  </tab>
  <tab type="usergroup" url="[none]" visible="yes" title="Tables">
    <tab type="usergroup" url="[none]" visible="yes" title="SCADA">
      ...
      <tab type="user" title="WindSpeedSetting" url="@ref Radiance::Model::Scada::v12::WindSpeedSetting" />
    </tab>
    ...
  </tab>
</navindex>

<class>
  <briefdescription visible="no"/>
  <detaileddescription title="Description"/>
  <memberdef>
    <inlineclasses title=""/>
    <typedefs title=""/>
    <enums title=""/>
    <constructors title=""/>
    <functions title="" visible="no"/>
    <related title=""/>
    <variables title=""/>
    <properties title="Columns"/>
    <events title=""/>
  </memberdef>
  <allmemberslink visible="no"/>
  <usedfiles visible="no"/>
  <authorsection visible="no"/>
</class>

And then my C# class looks like this:

/// <summary>
/// \class WindSpeedSetting
/// A list of available anemometers in the system.
/// </summary>
public class WindSpeedSetting
{
  /// <summary>
  /// \property AlarmSpeed
  /// \a float <br /><br />
  /// </summary>
  public virtual double AlarmSpeed { get; set; }

  /// <summary>
  /// \property AlarmTime
  /// \a bigint <br /><br />
  /// </summary>
  public virtual TimeSpan AlarmTime { get; set; }
}

Upvotes: 4

Views: 729

Answers (3)

JP Garza
JP Garza

Reputation: 270

To show the class name without the "Class Reference" string after it you can check the tag HIDE_COMPOUND_REFERENCE.

Upvotes: 0

aldr
aldr

Reputation: 848

If you don't have a DoxygenLayout.xml you can create one following the steps described under Changing the layout of pages by the doxygen manual.

At the top of the file, you'll find the <navindex> tag containing the classes tab .

<navindex>
...
<tab type="classes" visible="yes" title="">
  <tab type="classes" visible="no" title="THISISANEXAMPLE"/>
  <tab type="classindex" visible="$ALPHABETICAL_INDEX" title="THISISMYTITLE"/> 
  <tab type="hierarchy" visible="yes" title=""/>
  <tab type="classmembers" visible="yes" title=""/>
</tab>
...

focus on title="THISISANEXAMPLE"andvisible="no"`, to change visibility and/or title and you are finished.

Upvotes: 1

Stephen Quan
Stephen Quan

Reputation: 25956

I grabbed the source code of Doxygen from github and traced the "Class Reference" string to be a routine defined at line 585 of translate_en.h, specifically:

/*! used as the title of the HTML page of a class/struct/union */
virtual QCString trCompoundReference(const char *clName,
                                ClassDef::CompoundType compType,
                                bool isTemplate)
{
  QCString result=(QCString)clName;
  switch(compType)
  {
    case ClassDef::Class:      result+=" Class"; break;
    case ClassDef::Struct:     result+=" Struct"; break;
    case ClassDef::Union:      result+=" Union"; break;
    case ClassDef::Interface:  result+=" Interface"; break;
    case ClassDef::Protocol:   result+=" Protocol"; break;
    case ClassDef::Category:   result+=" Category"; break;
    case ClassDef::Exception:  result+=" Exception"; break;
    default: break;
  }
  if (isTemplate) result+=" Template";
  result+=" Reference";
  return result;
}

Which means the only way to make the "Class Reference" text disappear is either changing the language which will just replace "Class Reference" with a foreign language equivalent or patch the code.

Upvotes: 0

Related Questions