Commit 92f9c0f6 authored by Jeff Baumes's avatar Jeff Baumes

ENH: Qt view re-architecting.

Use vtkQtView as a base class for all vtkQtXXXViews.

 - Add record and column views types.

 - Update examples that use qt views.

 - Update paraview bar chart to use the new API.

 - Update OverView plugins that use qt views.

 - Update test using qt views.

 - Changing GetChartWidget to GetWidget.

 - Adding stubs for getting chart options for stacked chart and
   statistical box plot.
parent ab6917de
......@@ -50,11 +50,19 @@ EasyView::EasyView()
this->TableView = vtkSmartPointer<vtkQtTableView>::New();
this->ColumnView = vtkSmartPointer<vtkQtTreeView>::New();
// Set widgets for the tree and table views
this->TreeView->SetItemView(this->ui->treeView);
this->TableView->SetItemView(this->ui->tableView);
this->ColumnView->SetItemView(this->ui->columnView);
// Set widgets for the tree and table views
QVBoxLayout *layout1 = new QVBoxLayout;
layout1->addWidget(this->TreeView->GetWidget());
this->ui->treeFrame->setLayout(layout1);
QVBoxLayout *layout2 = new QVBoxLayout;
layout2->addWidget(this->TableView->GetWidget());
this->ui->tableFrame->setLayout(layout2);
QVBoxLayout *layout3 = new QVBoxLayout;
layout3->addWidget(this->ColumnView->GetWidget());
this->ui->columnFrame->setLayout(layout3);
// Graph View needs to get my render window
this->GraphView->SetupRenderWindow(this->ui->vtkGraphViewWidget->GetRenderWindow());
......@@ -144,7 +152,7 @@ void EasyView::slotOpenXMLFile()
// Now hand off tree to the tree view
this->TreeView->SetRepresentationFromInputConnection(this->XMLReader->GetOutputPort());
this->ColumnView->SetRepresentationFromInputConnection(this->XMLReader->GetOutputPort());
this->ui->treeView->expandAll();
this->TreeView->ExpandAll();
// Extract a table and give to table view
VTK_CREATE(vtkDataObjectToTable, toTable);
......
......@@ -69,37 +69,28 @@
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<widget class="QTreeView" name="treeView" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="treeFrame" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QTableView" name="tableView" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="tableFrame" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QColumnView" name="columnView" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="columnFrame" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
</widget>
......@@ -142,7 +133,7 @@
<x>0</x>
<y>0</y>
<width>1002</width>
<height>25</height>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuFile" >
......
......@@ -55,11 +55,23 @@ StatsView::StatsView()
this->TableView4 = vtkSmartPointer<vtkQtTableView>::New();
// Set widgets for the tree and table views
this->TableView1->SetItemView(this->ui->tableView1);
this->TableView2->SetItemView(this->ui->tableView2);
this->TableView3->SetItemView(this->ui->tableView3);
this->TableView4->SetItemView(this->ui->tableView4);
QVBoxLayout *layout1 = new QVBoxLayout;
layout1->addWidget(this->TableView1->GetWidget());
this->ui->tableFrame1->setLayout(layout1);
QVBoxLayout *layout2 = new QVBoxLayout;
layout2->addWidget(this->TableView2->GetWidget());
this->ui->tableFrame2->setLayout(layout2);
QVBoxLayout *layout3 = new QVBoxLayout;
layout3->addWidget(this->TableView3->GetWidget());
this->ui->tableFrame3->setLayout(layout3);
QVBoxLayout *layout4 = new QVBoxLayout;
layout4->addWidget(this->TableView4->GetWidget());
this->ui->tableFrame4->setLayout(layout4);
// Set up action signals and slots
connect(this->ui->actionOpenSQLiteDB, SIGNAL(triggered()), this, SLOT(slotOpenSQLiteDB()));
};
......
......@@ -66,52 +66,37 @@
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<widget class="QTableView" name="tableView1" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="tableFrame1" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QTableView" name="tableView2" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="tableFrame2" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QTableView" name="tableView3" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QFrame" name="tableFrame3" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="alternatingRowColors" >
<bool>true</bool>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
</widget>
<widget class="QTableView" native="1" name="tableView4" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
<widget class="QFrame" name="tableFrame4" >
<property name="frameShape" >
<enum>QFrame::StyledPanel</enum>
</property>
<property name="minimumSize" >
<size>
<width>300</width>
<height>300</height>
</size>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
</widget>
</widget>
......@@ -139,7 +124,7 @@
<x>0</x>
<y>0</y>
<width>1002</width>
<height>25</height>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuFile" >
......@@ -181,13 +166,6 @@
</property>
</action>
</widget>
<customwidgets>
<customwidget>
<class>QVTKWidget</class>
<extends>QWidget</extends>
<header>QVTKWidget.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="Icons/icons.qrc" />
</resources>
......
......@@ -59,14 +59,16 @@ IF(DESIRED_QT_VERSION MATCHES 4)
# add additional files depending on infovis and/or views
IF(VTK_USE_VIEWS)
SET( QVTKLibSrcs ${QVTKLibSrcs}
vtkQtBarChartView.cxx
vtkQtChartRepresentation.cxx
vtkQtChartTableRepresentation.cxx
vtkQtChartView.cxx
vtkQtChartViewBase.cxx
vtkQtBarChartView.cxx
vtkQtLineChartView.cxx
vtkQtColumnView.cxx
vtkQtItemView.cxx
vtkQtLineChartView.cxx
vtkQtListView.cxx
vtkQtRecordView.cxx
vtkQtStackedChartView.cxx
vtkQtStatisticalBoxChartView.cxx
vtkQtTableDataRepresentation.cxx
......@@ -78,9 +80,17 @@ IF(DESIRED_QT_VERSION MATCHES 4)
)
SET_SOURCE_FILES_PROPERTIES(vtkQtView.cxx ABSTRACT )
SET ( QVTKMocHeaders ${QVTKMocHeaders}
vtkQtView.h
vtkQtItemView.h
vtkQtBarChartView.h
vtkQtChartRepresentation.h
vtkQtChartViewBase.h
vtkQtColumnView.h
vtkQtItemView.h
vtkQtLineChartView.h
vtkQtListView.h
vtkQtRecordView.h
vtkQtTableView.h
vtkQtTreeView.h
vtkQtView.h
)
ENDIF(VTK_USE_VIEWS)
......
......@@ -30,14 +30,14 @@
#include "vtkQtChartWidget.h"
//----------------------------------------------------------------------------
vtkCxxRevisionMacro(vtkQtBarChartView, "1.4");
vtkCxxRevisionMacro(vtkQtBarChartView, "1.5");
vtkStandardNewMacro(vtkQtBarChartView);
//----------------------------------------------------------------------------
vtkQtBarChartView::vtkQtBarChartView()
{
// Get the chart widget from the base class.
vtkQtChartWidget* chart = this->GetChartWidget();
vtkQtChartWidget* chart = qobject_cast<vtkQtChartWidget*>(this->GetWidget());
vtkQtChartArea* area = chart->getChartArea();
// Create the bar chart and model. Add them to the chart between the
......@@ -104,6 +104,12 @@ vtkQtChartSeriesModelCollection* vtkQtBarChartView::GetChartSeriesModel()
return this->BarModel;
}
//----------------------------------------------------------------------------
vtkQtChartSeriesOptions* vtkQtBarChartView::GetChartSeriesOptions(int idx)
{
return this->BarChart->getSeriesOptions(idx);
}
//----------------------------------------------------------------------------
void vtkQtBarChartView::PrintSelf(ostream& os, vtkIndent indent)
{
......
......@@ -27,13 +27,17 @@
#ifndef __vtkQtBarChartView_h
#define __vtkQtBarChartView_h
#include "QVTKWin32Header.h"
#include "vtkQtChartViewBase.h"
class vtkQtBarChart;
class vtkQtChartSeriesModelCollection;
class vtkQtChartSeriesOptions;
class QVTK_EXPORT vtkQtBarChartView : public vtkQtChartViewBase
{
Q_OBJECT
public:
static vtkQtBarChartView *New();
vtkTypeRevisionMacro(vtkQtBarChartView, vtkQtChartViewBase);
......@@ -69,11 +73,14 @@ public:
virtual vtkQtChartSeriesModelCollection* GetChartSeriesModel();
//ETX
// Description:
// Gets the series options.
virtual vtkQtChartSeriesOptions* GetChartSeriesOptions(int series);
protected:
vtkQtBarChartView();
~vtkQtBarChartView();
protected:
vtkQtBarChart *BarChart;
vtkQtChartSeriesModelCollection *BarModel;
......
......@@ -103,8 +103,7 @@ private:
};
//----------------------------------------------------------------------------
vtkCxxRevisionMacro(vtkQtChartViewBase, "1.7");
vtkStandardNewMacro(vtkQtChartViewBase);
vtkCxxRevisionMacro(vtkQtChartViewBase, "1.8");
//----------------------------------------------------------------------------
vtkQtChartViewBase::vtkQtChartViewBase()
......@@ -141,7 +140,7 @@ vtkQtChartViewBase::~vtkQtChartViewBase()
//----------------------------------------------------------------------------
void vtkQtChartViewBase::Show()
{
this->GetChartWidget()->show();
this->Internal->Chart->show();
}
//----------------------------------------------------------------------------
......@@ -495,7 +494,7 @@ void vtkQtChartViewBase::AddChartSelectionHandlers(vtkQtChartMouseSelection*)
}
//----------------------------------------------------------------------------
vtkQtChartWidget* vtkQtChartViewBase::GetChartWidget()
QWidget* vtkQtChartViewBase::GetWidget()
{
return this->Internal->Chart;
}
......@@ -503,7 +502,7 @@ vtkQtChartWidget* vtkQtChartViewBase::GetChartWidget()
//----------------------------------------------------------------------------
vtkQtChartArea* vtkQtChartViewBase::GetChartArea()
{
return this->GetChartWidget()->getChartArea();
return this->Internal->Chart->getChartArea();
}
//----------------------------------------------------------------------------
......
......@@ -29,23 +29,32 @@
#define __vtkQtChartViewBase_h
#include "QVTKWin32Header.h"
#include "vtkView.h"
#include "vtkQtView.h"
class vtkQtChartArea;
class vtkQtChartAxis;
class vtkQtChartLegend;
class vtkQtChartMouseSelection;
class vtkQtChartSeriesModelCollection;
class vtkQtChartSeriesOptions;
class vtkQtChartWidget;
class vtkTable;
class QVTK_EXPORT vtkQtChartViewBase : public vtkView
class QVTK_EXPORT vtkQtChartViewBase : public vtkQtView
{
Q_OBJECT
public:
static vtkQtChartViewBase *New();
vtkTypeRevisionMacro(vtkQtChartViewBase, vtkView);
vtkTypeRevisionMacro(vtkQtChartViewBase, vtkQtView);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Get the main container of this view (a QWidget).
// The application typically places the view with a call
// to GetWidget(): something like this
// this->ui->box->layout()->addWidget(this->View->GetWidget());
virtual QWidget* GetWidget();
// Description:
// Updates the view.
virtual void Update();
......@@ -170,10 +179,6 @@ public:
// Adds chart layer selection handlers to the mouse selection.
virtual void AddChartSelectionHandlers(vtkQtChartMouseSelection* selector);
// Description:
// Gets the chart widget, this is the main widget to display.
vtkQtChartWidget* GetChartWidget();
// Description:
// Gets the chart area from the chart widget. This method is equivalent
// to GetChartWidget()->getChartArea().
......@@ -187,6 +192,10 @@ public:
// Gets the chart series model.
virtual vtkQtChartSeriesModelCollection* GetChartSeriesModel();
// Description:
// Gets the series options.
virtual vtkQtChartSeriesOptions* GetChartSeriesOptions(int series) = 0;
// Description:
// Gets the chart legend widget.
vtkQtChartLegend* GetLegend();
......@@ -206,13 +215,13 @@ public:
void SetColorSchemeToCitrus();
protected:
vtkQtChartViewBase();
~vtkQtChartViewBase();
// Description:
// Create a vtkQtChartRepresentation for the given input connection.
virtual vtkDataRepresentation* CreateDefaultRepresentation(vtkAlgorithmOutput* conn);
vtkQtChartViewBase();
~vtkQtChartViewBase();
private:
//BTX
class vtkInternal;
......
/*=========================================================================
Program: Visualization Toolkit
Module: vtkQtColumnView.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
#include "vtkQtColumnView.h"
#include <QItemSelection>
#include <QColumnView>
#include "vtkAlgorithm.h"
#include "vtkAlgorithmOutput.h"
#include "vtkConvertSelection.h"
#include "vtkDataRepresentation.h"
#include "vtkIdTypeArray.h"
#include "vtkInformation.h"
#include "vtkObjectFactory.h"
#include "vtkQtTreeModelAdapter.h"
#include "vtkSelection.h"
#include "vtkSelectionLink.h"
#include "vtkSelectionNode.h"
#include "vtkSmartPointer.h"
#include "vtkTree.h"
vtkCxxRevisionMacro(vtkQtColumnView, "1.2");
vtkStandardNewMacro(vtkQtColumnView);
//----------------------------------------------------------------------------
vtkQtColumnView::vtkQtColumnView()
{
this->ColumnView = new QColumnView();
this->TreeAdapter = new vtkQtTreeModelAdapter();
this->ColumnView->setModel(this->TreeAdapter);
this->ColumnView->setSelectionMode(QAbstractItemView::SingleSelection);
this->Selecting = false;
QObject::connect(this->ColumnView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)),
this,
SLOT(slotSelectionChanged(const QItemSelection&,const QItemSelection&)));
}
//----------------------------------------------------------------------------
vtkQtColumnView::~vtkQtColumnView()
{
if(this->ColumnView)
{
delete this->ColumnView;
}
delete this->TreeAdapter;
}
//----------------------------------------------------------------------------
QWidget* vtkQtColumnView::GetWidget()
{
return this->ColumnView;
}
//----------------------------------------------------------------------------
vtkQtAbstractModelAdapter* vtkQtColumnView::GetItemModelAdapter()
{
return this->TreeAdapter;
}
//----------------------------------------------------------------------------
void vtkQtColumnView::AddInputConnection( int vtkNotUsed(port), int vtkNotUsed(index),
vtkAlgorithmOutput* conn, vtkAlgorithmOutput* vtkNotUsed(selectionConn))
{
// Get a handle to the input data object. Note: For now
// we are enforcing that the input data is a tree.
conn->GetProducer()->Update();
vtkDataObject *d = conn->GetProducer()->GetOutputDataObject(0);
vtkTree *tree = vtkTree::SafeDownCast(d);
// Enforce input
if (!tree)
{
vtkErrorMacro("vtkQtERMView requires a vtkTree as input (for now)");
return;
}
// Give the data object to the Qt Tree Adapters
this->TreeAdapter->SetVTKDataObject(tree);
// Now set the Qt Adapters (qt models) on the views
this->ColumnView->update();
}
//----------------------------------------------------------------------------
void vtkQtColumnView::RemoveInputConnection(int vtkNotUsed(port), int vtkNotUsed(index),
vtkAlgorithmOutput* conn, vtkAlgorithmOutput* vtkNotUsed(selectionConn))
{
// Remove VTK data from the adapter
conn->GetProducer()->Update();
vtkDataObject *d = conn->GetProducer()->GetOutputDataObject(0);
if (this->TreeAdapter->GetVTKDataObject() == d)
{
this->TreeAdapter->SetVTKDataObject(0);
this->ColumnView->update();
}
}
//----------------------------------------------------------------------------
void vtkQtColumnView::slotSelectionChanged(const QItemSelection& vtkNotUsed(s1), const QItemSelection& vtkNotUsed(s2))
{
this->Selecting = true;
// Create index selection
vtkSmartPointer<vtkSelection> selection =
vtkSmartPointer<vtkSelection>::New();
vtkSmartPointer<vtkSelectionNode> node =
vtkSmartPointer<vtkSelectionNode>::New();
node->SetContentType(vtkSelectionNode::INDICES);
node->SetFieldType(vtkSelectionNode::VERTEX);
vtkSmartPointer<vtkIdTypeArray> idarr =
vtkSmartPointer<vtkIdTypeArray>::New();
node->SetSelectionList(idarr);
selection->AddNode(node);
const QModelIndexList list = this->ColumnView->selectionModel()->selectedRows();
// For index selection do this odd little dance with two maps :)
for (int i = 0; i < list.size(); i++)
{
vtkIdType pid = this->TreeAdapter->QModelIndexToPedigree(list.at(i));
idarr->InsertNextValue(this->TreeAdapter->PedigreeToId(pid));
}
// Convert to the correct type of selection
vtkDataObject* data = this->TreeAdapter->GetVTKDataObject();
vtkSmartPointer<vtkSelection> converted;
converted.TakeReference(vtkConvertSelection::ToSelectionType(
selection, data, this->SelectionType, this->SelectionArrayNames));
// Call select on the representation
this->GetRepresentation()->Select(this, converted);
this->Selecting = false;
}
//----------------------------------------------------------------------------
void vtkQtColumnView::Update()
{
vtkDataRepresentation* rep = this->GetRepresentation();
if (!rep)
{
return;
}
// Make the data current
vtkAlgorithm* alg = rep->GetInputConnection()->GetProducer();
alg->Update();
vtkDataObject *d = alg->GetOutputDataObject(0);
this->TreeAdapter->SetVTKDataObject(d);
// Make the selection current
if (this->Selecting)
{
// If we initiated the selection, do nothing.
return;
}
vtkSelection* s = rep->GetSelectionLink()->GetSelection();
vtkSmartPointer<vtkSelection> selection;
selection.TakeReference(vtkConvertSelection::ToIndexSelection(s, d));
QItemSelection list;
vtkSelectionNode* node = selection->GetNode(0);
if (node)
{
vtkIdTypeArray* arr = vtkIdTypeArray::SafeDownCast(node->GetSelectionList());
if (arr)
{
for (vtkIdType i = 0; i < arr->GetNumberOfTuples(); i++)
{
vtkIdType id = arr->GetValue(i);
QModelIndex index =
this->TreeAdapter->PedigreeToQModelIndex(
this->TreeAdapter->IdToPedigree(id));
list.select(index, index);
}
}
}
this->ColumnView->selectionModel()->select(list,
QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
this->ColumnView->update();
}
//----------------------------------------------------------------------------
void vtkQtColumnView::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os,indent);
}
/*=========================================================================
Program: Visualization Toolkit
Module: vtkQtColumnView.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
// .NAME vtkQtColumnView - A VTK view based on a Qt column view.
//
// .SECTION Description
// vtkQtColumnView is a VTK view using an underlying QColumnView.
//
// .SECTION Thanks
// Thanks to Brian Wylie from Sandia National Laboratories for implementing
// this class
#ifndef __vtkQtColumnView_h
#define __vtkQtColumnView_h
#include "QVTKWin32Header.h"
#include "vtkQtView.h"
#include <QPointer>
#include "vtkQtAbstractModelAdapter.h"
class QItemSelection;
class QColumnView;
class vtkQtTreeModelAdapter;
class QVTK_EXPORT vtkQtColumnView : public vtkQtView
{
Q_OBJECT
public:
static vtkQtColumnView *New();
vtkTypeRevisionMacro(vtkQtColumnView, vtkQtView);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Get the main container of this view (a QWidget).
// The application typically places the view with a call
// to GetWidget(): something like this
// this->ui->box->layout()->addWidget(this->View->GetWidget());
virtual QWidget* GetWidget();
// Description:
// Pointer to the internal model adapter used convert the
// vtkDataObject to a QAbstractItemModel.
vtkQtAbstractModelAdapter* GetItemModelAdapter();
// Description:
// Updates the view.
virtual void Update();
protected:
vtkQtColumnView();
~vtkQtColumnView();
// Description:
// Connects the algorithm output to the internal pipeline.
// This view only supports a single representation.
virtual void AddInputConnection( int port, int index,
vtkAlgorithmOutput* conn,
vtkAlgorithmOutput* selectionConn);
// Description:
// Removes the algorithm output from the internal pipeline.
virtual void RemoveInputConnection( int port, int index,
vtkAlgorithmOutput* conn,
vtkAlgorithmOutput* selectionConn);
private slots:
void slotSelectionChanged(const QItemSelection&,const QItemSelection&);
private:
vtkQtColumnView(const vtkQtColumnView&); // Not implemented.