• Utkarsh Ayachit's avatar
    Refactoring 2D chart representations. · 1166c794
    Utkarsh Ayachit authored
    The primary objective of this refactor is to remove custom display panels for
    charting views such as line/bar/scatter-plot-matrix/parallel-coordinates views
    and migrate these panels to the new style as required by the unified Properties
    panel added in ParaView 4.0.
    
    The secondary object is to move logic for setting up defaults etc. to the
    ServerManager layer rather than in VTK or Qt world, so that the representations
    behave consistently in pvpython and ParaView-GUI.
    
    This is achieved as follows:
    
    + New domains are added (vtkSMChartSeriesListDomain and
      vtkSMChartSeriesSelectionDomain) which can be used on properties pertaining to
      series in a plot e.g. SeriesVisibility, SeriesColor etc. These domains
      automatically keep themselves up-to-date when new arrays are added or removed
      due to other state changes. Like other domains in ParaView, these only depend
      on the data-information available on the client-side.
    
    + vtkChartNamedOptions and vtkXYChartNamedOptions are removed. Instead
      vtkChartRepresentation subclasses take over the responsibility of managing
      series parameters. vtkXYChartRepresentation is suitable for vtkChartXY views
      which accept vtkPlot subclasses.
    
    + vtkChartRepresentation is refactored to simplify data-delivery logic. Also
      added a new REQUEST_RENDER pass to vtkPVContextView which allows chart
      representations to update the vtk objects properly thus separating data
      related operations from appearance related operations.
    
    + pqChartSeriesSettingsModel represent the table-widget used for presenting user
      with the available series and changing their properties. Based on properties
      available on the proxy, pqChartSeriesSettingsModel can adapt its UI to show as
      few or as many widgets as needed. pqChartSeriesSettingsModel is used for all
      2D views, thus we no longer need separate pqChartSeriesSettingsModel and
      pqPlotSettingsModel which have been removed.
    
    + vtkPVPlotMatrixRepresentation now respects order specified by the user on the
      SeriesVisibility property. The UI no longer hacks the order changes (which
      were not preserved in state files or undo/redo stacks), instead updates the
      property appropriately. Same can be done for
      vtkPVParallelCoordinatesRepresentation,  but missing API on
      vtkPVParallelCoordinatesRepresentation keeps that from actually working, for
      now.
    
    + Refactored logic for dealing with multiblock-of-tables. The mechanism for
      naming/addressing tables in a multiblock dataset has also changed to make it
      easier to read. vtkChartRepresentation makes it easier for subclasses to work
      with multiblock of tables (e.g. vtkXYChartRepresentation) or a single
      vtkTable (vtkPVParallelCoordinatesRepresentation,
      vtkPVPlotMatrixRepresentation).
    
    A few side effects:
    
    + New arrays that become available are no longer shown automatically. The onus
      falls on the appplication layer to manage their visibility/appearance. Work in
      progress to update UI when new arrays become available.
    
    Change-Id: I6531f85a2167c73d98dbb28edf7aa3cc32031111
    1166c794
vtkSMChartRepresentationProxy.cxx 3.6 KB