00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00037 #ifndef __vtkQtTableView_h
00038 #define __vtkQtTableView_h
00039
00040 #include "QVTKWin32Header.h"
00041 #include "vtkQtView.h"
00042
00043 #include <QPointer>
00044 #include <QSortFilterProxyModel>
00045 #include "vtkQtAbstractModelAdapter.h"
00046 #include "vtkSmartPointer.h"
00047
00048 class vtkAddMembershipArray;
00049 class vtkApplyColors;
00050 class vtkDataObjectToTable;
00051 class vtkIdTypeArray;
00052 class QItemSelection;
00053 class QTableView;
00054 class vtkQtTableModelAdapter;
00055
00056 class QVTK_EXPORT vtkQtTableView : public vtkQtView
00057 {
00058 Q_OBJECT
00059
00060 public:
00061 static vtkQtTableView *New();
00062 vtkTypeMacro(vtkQtTableView, vtkQtView);
00063 void PrintSelf(ostream& os, vtkIndent indent);
00064
00068 virtual QWidget* GetWidget();
00069
00071 void SetShowVerticalHeaders(bool);
00072
00074 void SetShowHorizontalHeaders(bool);
00075
00076 enum
00077 {
00078 FIELD_DATA = 0,
00079 POINT_DATA = 1,
00080 CELL_DATA = 2,
00081 VERTEX_DATA = 3,
00082 EDGE_DATA = 4,
00083 ROW_DATA = 5,
00084 };
00085
00087
00089 vtkGetMacro(FieldType, int);
00090 void SetFieldType(int);
00092
00094 void SetEnableDragDrop(bool);
00095
00098 void SetSortingEnabled(bool);
00099
00101
00104 void SetShowAll(bool);
00105 vtkGetMacro(ShowAll, bool);
00107
00109
00111 vtkSetStringMacro(ColumnName);
00112 vtkGetStringMacro(ColumnName);
00114
00115 void SetColumnVisibility(const QString &name, bool status);
00116
00119 void SetSplitMultiComponentColumns(bool value);
00120
00123 bool GetSplitMultiComponentColumns();
00124
00126
00127 void SetSortSelectionToTop(bool value);
00128 vtkGetMacro(SortSelectionToTop, bool);
00130
00132
00134 void SetApplyRowColors(bool value);
00135 vtkGetMacro(ApplyRowColors, bool);
00137
00139 virtual void Update();
00140
00142
00143 void SetColorArrayName(const char* name);
00144 const char* GetColorArrayName();
00146
00148
00149 void SetColorByArray(bool vis);
00150 bool GetColorByArray();
00151 vtkBooleanMacro(ColorByArray, bool);
00153
00155 virtual void ApplyViewTheme(vtkViewTheme* theme);
00156
00157 enum
00158 {
00159 SELECT_ITEMS = 0,
00160 SELECT_ROWS,
00161 SELECT_COLUMNS
00162 };
00163
00165
00170 virtual void SetSelectionBehavior(int type);
00171 virtual int GetSelectionBehavior();
00173
00179 virtual void GetSelectedItems(vtkIdTypeArray* arr);
00180
00181 protected:
00182 vtkQtTableView();
00183 ~vtkQtTableView();
00184
00185 virtual void AddRepresentationInternal(vtkDataRepresentation* rep);
00186 virtual void RemoveRepresentationInternal(vtkDataRepresentation* rep);
00187
00188 private slots:
00189 void slotQtSelectionChanged(const QItemSelection&,const QItemSelection&);
00190
00191 private:
00192 void SetVTKSelection();
00193 unsigned long LastSelectionMTime;
00194 unsigned long LastInputMTime;
00195 unsigned long LastMTime;
00196
00197 vtkSetStringMacro(ColorArrayNameInternal);
00198 vtkGetStringMacro(ColorArrayNameInternal);
00199
00200 QPointer<QTableView> TableView;
00201 vtkQtTableModelAdapter* TableAdapter;
00202 QSortFilterProxyModel* TableSorter;
00203 int FieldType;
00204 bool ShowAll;
00205 char* ColumnName;
00206 bool InSelectionChanged;
00207 bool SortSelectionToTop;
00208 bool ApplyRowColors;
00209 char* ColorArrayNameInternal;
00210
00211 vtkSmartPointer<vtkAddMembershipArray> AddSelectedColumn;
00212 vtkSmartPointer<vtkDataObjectToTable> DataObjectToTable;
00213 vtkSmartPointer<vtkApplyColors> ApplyColors;
00214
00215 vtkQtTableView(const vtkQtTableView&);
00216 void operator=(const vtkQtTableView&);
00217
00218 };
00219
00220 #endif