00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00034 #ifndef __vtkQtTreeView_h
00035 #define __vtkQtTreeView_h
00036 
00037 #include "QVTKWin32Header.h"
00038 #include "vtkQtView.h"
00039 
00040 #include <QList>
00041 #include <QPointer>
00042 #include "vtkQtAbstractModelAdapter.h"
00043 #include "vtkSmartPointer.h"
00044 #include "QFilterTreeProxyModel.h"
00045 
00046 class QAbstractItemDelegate;
00047 class QAbstractItemView;
00048 class QColumnView;
00049 class QItemSelection;
00050 class QTreeView;
00051 class vtkApplyColors;
00052 class QVBoxLayout;
00053 class vtkQtTreeModelAdapter;
00054 class QItemSelectionModel;
00055 
00056 class QVTK_EXPORT vtkQtTreeView : public vtkQtView
00057 {
00058 Q_OBJECT
00059 
00060 signals:
00061   void expanded(const QModelIndex&);
00062   void collapsed(const QModelIndex&);
00063   void updatePreviewWidget(const QModelIndex&);
00064 
00065 public:
00066   static vtkQtTreeView *New();
00067   vtkTypeMacro(vtkQtTreeView, vtkQtView);
00068   void PrintSelf(ostream& os, vtkIndent indent);
00069   
00073   virtual QWidget* GetWidget();
00074   
00076   void SetShowHeaders(bool);
00077 
00079   void SetAlternatingRowColors(bool);
00080 
00082   void SetEnableDragDrop(bool);
00083 
00085   void SetShowRootNode(bool);
00086 
00088   void HideColumn(int i);
00089 
00091   void ShowColumn(int i);
00092 
00094   void HideAllButFirstColumn();
00095 
00097   void SetFilterColumn(int i);
00098 
00100   void SetFilterRegExp(const QRegExp& pattern);
00101 
00103   void SetFilterTreeLevel(int level);
00104 
00106   void Collapse( const QModelIndex & index );
00107 
00109   void CollapseAll();
00110 
00112    void Expand ( const QModelIndex & index );
00113 
00116    void ExpandAll ();
00117 
00119    void ExpandToDepth ( int depth );
00120 
00122    void ResizeColumnToContents ( int column );
00123 
00125   void SetUseColumnView(int state);
00126 
00128   virtual void Update();
00129 
00131   void SetItemDelegate(QAbstractItemDelegate* delegate);
00132 
00134 
00135   void SetColorArrayName(const char* name);
00136   const char* GetColorArrayName();
00138   
00140 
00141   void SetColorByArray(bool vis);
00142   bool GetColorByArray();
00143   vtkBooleanMacro(ColorByArray, bool);
00145 
00146   virtual void ApplyViewTheme(vtkViewTheme* theme);
00147 
00148 protected:
00149   vtkQtTreeView();
00150   ~vtkQtTreeView();
00151 
00152   virtual void AddRepresentationInternal(vtkDataRepresentation* rep);
00153   virtual void RemoveRepresentationInternal(vtkDataRepresentation* rep);
00154 
00155 private slots:
00156   void slotQtSelectionChanged(const QItemSelection&,const QItemSelection&);
00157 
00158 private:
00159   void SetVTKSelection();
00160   unsigned long CurrentSelectionMTime;
00161   unsigned long LastInputMTime;
00162   
00163   vtkSetStringMacro(ColorArrayNameInternal);
00164   vtkGetStringMacro(ColorArrayNameInternal);
00165 
00166   QPointer<QTreeView> TreeView;
00167   QPointer<QColumnView> ColumnView;
00168   QPointer<QWidget> Widget;
00169   QPointer<QVBoxLayout> Layout;
00170   QPointer<QItemSelectionModel> SelectionModel;
00171   QList<int> HiddenColumns;
00172   vtkQtTreeModelAdapter* TreeAdapter;
00173   QAbstractItemView* View;
00174   char* ColorArrayNameInternal;
00175   QFilterTreeProxyModel* TreeFilter;
00176   
00177   vtkSmartPointer<vtkApplyColors> ApplyColors;
00178   
00179   vtkQtTreeView(const vtkQtTreeView&);  
00180   void operator=(const vtkQtTreeView&);  
00181   
00182 };
00183 
00184 #endif