OverView Plugins

From ParaQ Wiki
Revision as of 18:48, 1 February 2008 by Tshead (talk | contribs)
Jump to navigationJump to search

Overview

After an extended period of external development, the Titan team is now beginning to integrate infovis components into the mainstream (VTK). Along the same lines, we would like to convert our internal client-server prototype into a widely-available, parallel infovis application, tentatively titled "OverView". This document addresses some of the issues - particularly plugin-related issues - surrounding our goal of building a parallel infovis application atop ParaView.

In particular, we propose that "OverView" be implemented as "ParaView plus plugins" ... in the early stages, this would mean that we would simply be adding a new set of sources, filters, and sinks to ParaView, that could be used in the obvious ways. For example, there might be a "database reader" that produces a graph, a BFS filter that appends data to the graph, and a "graph view" that provides specialized controls and rendering for graphs. Users could instantiate pipelines in the usual ways, but with a wider set of data structures and views than before. This, in-and-of-itself, would go a long way towards realizing our goal of providing a marriage between scivis and infovis. This would also provide an excellent platform for infovis development ... algorithm designers could quickly write and deplay algorithms as plugins, testing them using the full flexibility of the ParaView pipeline.

At the same time, we realize that the ParaView user interface will be inappropriate for many infovis practitioners. For someone who just wants to load and display a graph, the many scivis-specific features of ParaView (think "isosurface button") will be an unacceptable distraction. For this reason, we need to be able to customize the user interface while trying to minimize development overhead and long-term maintenance costs. Based on our current experience, a separate client imposes too heavy a burden, particularly when what we want to do is mainly "subtracting" features from the ParaView UI. As a middle-ground, we are proposing a new type of client plugin, a "user interface" plugin, that can be used to customize the ParaView UI.

Current Progress

Proposed New Plugin Types

AutoStart Plugins

An AutoStart plugin is a client-side plugin implementing API that is called at program start and program shutdown. AutoStart plugins are ideal for usage logging, since they can be created and distributed on a site-by-site basis to meet local needs. Our protoype has just such a plugin, which can replace several sets of platform-specific scripts and helper applications. The proposed new interface for AutoStart plugins is pqAutoStartInterface, which is already implemented in our prototype:

#include <QtPlugin>

/// Abstract interface for plugins that should be notified at program start / program shutdown
class pqAutoStartInterface
{
public:
  virtual ~pqAutoStartInterface() {}

  /// Called once after the program starts
  virtual void Startup() = 0;
  /// Called once before the program shuts down
  virtual void Shutdown() = 0;

protected:
  pqAutoStartInterface() {}
  pqAutoStartInterface(const pqAutoStartInterface&);
  pqAutoStartInterface& operator=(const pqAutoStartInterface&);
};

Q_DECLARE_INTERFACE(pqAutoStartInterface, "com.kitware/paraview/autostart")
  • UserInterface plugins