Automatic documentation generation for plugins of custom application

In my custom application with custom plugins I managed to make the documentation generation of Paraview work also for my own plugins - mostly! I just followed more or less the example of how it is done with Paraview itself, with a Documentation folder with it’s own CMakeLists.txt, and there I am calling paraview_client_documentation with a list of all the servermanager xml files of the plugins, then paraview_client_generate_help etc - and the result is that I am getting a documentation display like for the Paraview plugins also for my own. So far so good!

Only one plugin does not get it’s documentation included. It is the only “source” in the collection.

So there seem to be some tricky details. Like: how does this system distinguish between “sources” and “readers”? Actually “readers” do not exist as a servermanager “ProxyGroup” - they are all “sources”. And as a first step, a sources.nnn.html file is generated per plugin. And this happens also for all my “sources”, both writers and that single “real source”. But it does not find a place in the Sources.html, so it is ignored!

And then I find both a readers.xsl and a sources.xsl - and to me it looks like there in the XSL code is the distinction:

<xsl:variable name="proxy_name"><xsl:value-of select="label"/></xsl:variable>
<xsl:if test="not(contains(lower-case($proxy_name),'reader'))">

is the line in sources.xsl, while the same line has no “not” in the readers.xsl. Ok, that’s it then: if the label exists and contains the word “reader” in upper or lower case, then it is a reader, otherwise a source!

But - this cannot really be true… Because these are the beginning lines of two server manager XML files:

  1. The “source” that does not appear in the docs:


  1. The “reader” that actually appears:


So obviously the first has no “reader” in the label, so it would qualify as a “source” - right? While the second has no label at all, so it should also not be a “reader”? Or is there some trick already in some other code that inserts a “label” from the “name” in case there is none? If yes, then of course it would become a “reader” - like it actually happens.

Bottom line: it looks like there is still some little thing that I am missing! (And yes: both xml files contain documentation, so that cannot be the point!)

Answering my own: Problem solved!

Actually an entry for that “source” was missing in the “*Sources.xml” file that also needs to be “fed” to the paraview_client_documentation function: …. While at the same time, an entry <ParaViewReaders…> did already exist.

So this is where the decision “source” or “reader” is taken, while the sources.xsl etc. files are feeding the *.wiki files that are also generated in the folder (for a purpose that I do not know yet).

I’m not sure what the .wiki files are for either off-hand. Maybe they went to the ParaView wiki at some point?