You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
5.0 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkQtAbstractModelAdapter.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.
-------------------------------------------------------------------------*/
/**
* @class vtkQtAbstractModelAdapter
* @brief Superclass for Qt model adapters.
*
*
* vtkQtAbstractModelAdapter is the superclass for classes that adapt
* VTK objects to QAbstractItemModel. This class contains API for converting
* between QModelIndex and VTK ids, as well as some additional specialized
* functionality such as setting a column of data to use as the Qt header
* information.
*
* @sa
* vtkQtTableModelAdapter vtkQtTreeModelAdapter
*/
#ifndef vtkQtAbstractModelAdapter_h
#define vtkQtAbstractModelAdapter_h
#include "vtkGUISupportQtModule.h" // For export macro
#include <QAbstractItemModel>
#include <QItemSelection> // Needed for selection methods
class vtkDataObject;
class vtkSelection;
class VTKGUISUPPORTQT_EXPORT vtkQtAbstractModelAdapter : public QAbstractItemModel
{
Q_OBJECT
public:
// The view types.
enum
{
FULL_VIEW,
DATA_VIEW
};
vtkQtAbstractModelAdapter(QObject* p)
: QAbstractItemModel(p)
, ViewType(FULL_VIEW)
, KeyColumn(-1)
, ColorColumn(-1)
, DataStartColumn(-1)
, DataEndColumn(-1)
{
}
//@{
/**
* Set/Get the VTK data object as input to this adapter
*/
virtual void SetVTKDataObject(vtkDataObject* data) = 0;
virtual vtkDataObject* GetVTKDataObject() const = 0;
//@}
//@{
/**
* Selection conversion from VTK land to Qt land
*/
virtual vtkSelection* QModelIndexListToVTKIndexSelection(const QModelIndexList qmil) const = 0;
virtual QItemSelection VTKIndexSelectionToQItemSelection(vtkSelection* vtksel) const = 0;
//@}
/**
* Set/Get the view type.
* FULL_VIEW gives access to all the data.
* DATA_VIEW gives access only to the data columns specified with SetDataColumnRange()
* The default is FULL_VIEW.
*/
virtual void SetViewType(int type) { this->ViewType = type; }
virtual int GetViewType() { return this->ViewType; }
/**
* Set/Get the key column.
* The key column is used as the row headers in a table view,
* and as the first column in a tree view.
* Set to -1 for no key column.
* The default is no key column.
*/
virtual void SetKeyColumn(int col) { this->KeyColumn = col; }
virtual int GetKeyColumn() { return this->KeyColumn; }
virtual void SetKeyColumnName(const char* name) = 0;
/**
* Set/Get the column storing the rgba color values for each row.
* The color column is used as the row headers in a table view,
* and as the first column in a tree view.
* Set to -1 for no key column.
* The default is no key column.
*/
virtual void SetColorColumn(int col) { this->ColorColumn = col; }
virtual int GetColorColumn() { return this->ColorColumn; }
virtual void SetColorColumnName(const char* name) = 0;
/**
* Set the range of columns that specify the main data matrix.
* The data column range should not include the key column.
* The default is no data columns.
*/
virtual void SetDataColumnRange(int c1, int c2)
{
this->DataStartColumn = c1;
this->DataEndColumn = c2;
}
// We make the reset() method public because it isn't always possible for
// an adapter to know when its input has changed, so it must be callable
// by an outside entity.
/// \sa beginResetModel, endResetModel
/// \deprecated
void reset()
{
QAbstractItemModel::beginResetModel();
QAbstractItemModel::endResetModel();
}
// We make the beginResetModel() and endResetModel() methods public because it
// isn't always possible for an adapter to know when its input has changed,
// so it must be callable by an outside entity.
void beginResetModel() { QAbstractItemModel::beginResetModel(); }
void endResetModel() { QAbstractItemModel::endResetModel(); }
signals:
void modelChanged();
protected:
/**
* Map a column index in the QAbstractItemModel to a vtkTable column.
* If the argument is out of range or cannot be mapped then
* this method may return -1.
*/
virtual int ModelColumnToFieldDataColumn(int col) const;
int ViewType;
int KeyColumn;
int ColorColumn;
int DataStartColumn;
int DataEndColumn;
};
#endif
// VTK-HeaderTest-Exclude: vtkQtAbstractModelAdapter.h