ServerManager XML Hints: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
m (Improved formatting)
 
Line 206: Line 206:
=== Adding a button to call a method with no argument ===
=== Adding a button to call a method with no argument ===


<Property name="Refresh" command="Modified" panel_widget="command_button"/>
<source lang="xml">
    <Property name="Refresh" command="Modified" panel_widget="command_button"/>
</source>

Latest revision as of 23:44, 5 January 2015

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

The panel_visibility attribute can be used to change the visibility of a property in the properties panel.

Valid values are:

  • "default" - always shown on the panel
  • "advanced" - only shown when the advanced button is clicked
  • "never" - never shown on the panel

For example, the following property will only be shown when the user clicks the advanced button in the properties panel:

<source lang="xml">

 <IntVectorProperty name="PhiResolution" panel_visibility="advanced">
 </IntVectorProperty>

</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 attribute 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"
                      panel_visibility="never">
     <BooleanDomain name="bool" />
     <Documentation>
       This hidden property must always be set to 1 for this proxy to work.
     </Documentation>
   </IntVectorProperty>

</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>

Widget Height

  • If a filter uses a tree widget (ArrayListDomain, ArraySelectionDomain, EnumerationDomain, CompositeTreeDomain), the height of the widget can be set with this hint.

<source lang="xml">

 <IntVectorProperty command="..." name="...">
   <CompositeTreeDomain mode="all" name="tree">
     <RequiredProperties>
       <Property function="Input" name="Input" />
     </RequiredProperties>
   </CompositeTreeDomain>
   <Hints>
     <WidgetHeight number_of_rows="20" />
   </Hints>
 </IntVectorProperty>

</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>
             <ShowInMenu 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>

Disable property for UndoRedo states

Now properties can be escaped from the GetFullState() method that is used for the undo/redo state by providing an extra attribute inside xml proxy definition.

<source lang="xml">

  <Proxy name="ComparativeViewBase">
     <DoubleVectorProperty name="ViewTime"
       command="SetViewTime"
       number_of_elements="1"
       state_ignored="1" <---------------------- NEW FLAG
       default_values="none">
       <DoubleRangeDomain name="range"/>
       <Documentation>
         The pipeline update time for this view.
         This gets passed to all representations added to this view.
       </Documentation>
     </DoubleVectorProperty>
  ...

</source>

ParaView 4.x XML

Adding a button to call a method with no argument

<source lang="xml">

   <Property name="Refresh" command="Modified" panel_widget="command_button"/>

</source>