ServerManager XML Hints

From KitwarePublic
Jump to navigationJump to search

NOTE: This is under development and may not cover all available hints

Proxy Hints

These are hints added to proxies.

Mark proxy as a reader

  • Used to mark a proxy under the "sources" group as a reader.
  • extensions attribute is used to list the supported extensions e.g. "foo foo.bar" for files named as somename.foo or somename.foo.bar.
  • filename_patterns attribute is used to list the filename patterns to match. The format is similar to what one would use for "ls" using wildcards e.g. spcth* to match spcta, spctb etc.

<source lang="xml">

<Hints>
  <ReaderFactory extensions="[space separated extensions w/o leading '.']"
                 filename_patterns="[space separated filename patters (using wildcards)]"
                 file_description="[user-friendly description]" />
</Hints>

</source>

Hide/Show a property

A Property hint with a show attribute can be used to hide or show a property within the automatically generated object inspector panel.

<source lang="xml">

 <Hints>
   <Property name="[property name]" show="0" />
 </Hints>

</source>

Since almost all editable properties are by default shown in the automatically generated object inspector panel, this is most often used to hide the property. The need for this can occur when the property must be declared in the XML so that the default value for the VTK object's ivar is wrong or when the value needs to be changed programmatically, but allowing the user to directly change it is either confusing or could invalidate the state.

One example where this hint is used relatively frequently is for the vtkFileSeriesReader, which is reused for several readers and has a state switch called UseMetaFile that toggles between reading a list of files and reading a single text case file listing the actual files to read. The XML proxy definition must declare a UseMetaFile property to set it to the appropriate state, but you don't want the user to ever change the value because it would invalidate the reader. Thus, you get proxy code like the following.

<source lang="xml">

   <IntVectorProperty name="UseMetaFile"
                      command="SetUseMetaFile"
                      number_of_elements="1"
                      default_values="1">
     <BooleanDomain name="bool" />
     <Documentation>
       This hidden property must always be set to 1 for this proxy to work.
     </Documentation>
   </IntVectorProperty>
 ...
   <Hints>
     <Property name="UseMetaFile" show="0" />
   </Hints>

</source>

A rare but valid use of this hint is to show a property that is normally hidden. An example of a property that is normally hidden is the first property in a reader marked as a FileListDomain. Normally it causes problems to allow the user to change the file name of a reader after it has been created (or rather, it is easier to delete the reader and create a new one). However, there are some rare cases where you really do need to show that property, so you can override this behavior.

<source lang="xml">

   <Hints>
     <Property name="FileName" show="1"/>
   </Hints>

</source>

Default View

  • Used to pick a default view type.
  • Does not support picking a view type for multiple output-ports just yet.

<source lang="xml">

<Hints>
  <View type="XYChartView" />
</Hints>

</source>


Mark Data Plotable

  • ParaView charts can support plotting any type of data, however since plotting is client-side, we don't want the user to accidentally try to plot really large datasets.
  • So we mark certain filters/sources are plot-able.
  • A source/filter producing vtkTable is always plot-able by default.

<source lang="xml">

 <Hints>
   <Plotable />
 </Hints>

</source>

Don't hide input dataset

  • When a filter is applied, ParaView hides the input dataset(s) by default in the active view.
  • In some cases, this is not the expected behavior e.g. Slice filter. In that case, use this hint.
  • Accepted values:
 0 ==> don't replace the input at all
 1 ==> replace the input (default behavior)
 2 ==> replace the input only if it is "Surface" or "Surface With Edges" and is totally opaque.

<source lang="xml">

 <Hints>
   <Visibility replace_input="0" />
 </Hints>

</source>

Property Hints

These are hints added to Properties.

Selection Input

  • If a filter needs to use the "active selection", one can use this hint.
  • Only used by auto-generated Properties panel.
  • Specified on a Input property that can take in a vtkSelection.

<source lang="xml">

 <InputProperty name="Selection"
      command="SetSelectionConnection">
      <DataTypeDomain name="input_type">
        <DataType value="vtkSelection"/>
      </DataTypeDomain>
      <Documentation>
        The input that provides the selection object.
      </Documentation>
      <Hints>
        <SelectionInput />
      </Hints>
 </InputProperty>

</source>

Summary Panel

  • Indicates that the property should be shown in the summary panel.
  • Used by auto-generated Properties panel.

<source lang="xml">

 <DoubleVectorProperty name="Radius"
                       command="SetRadius"
                       number_of_elements="1"
                       animateable="1"
                       default_values="0.5" >
   <DoubleRangeDomain name="range" min="0"/>
   <Documentation>
     This property specifies the radius of the sphere.
   </Documentation>
   <Hints>
     <ShowInSummaryPanel/>
   </Hints>
 </DoubleVectorProperty>

</source>

Grouping Properties

So you can use widget input.

<source lang="xml">

  <PropertyGroup type="Line" label="Elevation Widget">
     <Property function="Point1WorldPosition" name="LowPoint" />
     <Property function="Point2WorldPosition" name="HighPoint" />
  </PropertyGroup>

</source>

ParaView 3.12 XML update

Expose proxy in GUI menu

To show a source proxy or a filter inside the menu of ParaView we use a hint. The category attribute allow to specify in which sub-menu this proxy should be in but it is totally optional.

<source lang="xml">

      <SourceProxy ...>
          <Hints>
             <ShowInGUI category="PersoFilter"/>
          </Hints>
      </SourceProxy>

</source>

TimeSeries readers

Previously we use to have TimeSerieReader proxy, now we can simply deal with regular source proxy and custom server side code. The following code snippet show what should be done now.

<source lang="xml">

  <SourceProxy si_class="vtkSIFileSeriesReaderProxy" [same attrs as before]>
     ...
  </SourceProxy>

</source>

instead of

<source lang="xml">

  <FileSeriesReaderProxy [some params]>
     ...
  </FileSeriesReaderProxy>

</source>