qMRMLItemHelper.h
Go to the documentation of this file.00001 #ifndef __qMRMLItemHelper_h
00002 #define __qMRMLItemHelper_h
00003
00005 #include <qCTKPimpl.h>
00006
00008 #include <Qt>
00009 #include <QVariant>
00010
00011 #include "qMRMLWidgetsExport.h"
00012
00013
00014 class qMRMLAbstractItemHelper;
00015 class qMRMLAbstractItemHelperPrivate;
00016 class qMRMLAbstractRootItemHelperPrivate;
00017 class qMRMLAbstractSceneItemHelperPrivate;
00018 class qMRMLAbstractNodeItemHelperPrivate;
00019 class qMRMLVariantArrayItemHelperPrivate;
00020 class qMRMLProxyItemHelper;
00021 class qMRMLProxyItemHelperPrivate;
00022 class qMRMLExtraItemsHelper;
00023 class qMRMLExtraItemsHelperPrivate;
00024
00025
00026 class vtkMRMLScene;
00027 class vtkMRMLNode;
00028
00029
00030 class vtkCollection;
00031 class vtkObject;
00032 class vtkStdString;
00033 class vtkVariantArray;
00034
00035
00036 class QMRML_WIDGETS_EXPORT qMRMLAbstractItemHelperFactory
00037 {
00038 public:
00039 virtual qMRMLAbstractItemHelper* createItem(vtkObject* object, int column)const = 0;
00040 virtual qMRMLAbstractItemHelper* createRootItem(vtkMRMLScene* scene)const = 0;
00041 };
00042
00043
00044 class QMRML_WIDGETS_EXPORT qMRMLAbstractItemHelper
00045 {
00046 public:
00047 virtual ~qMRMLAbstractItemHelper(){}
00048 virtual bool canReparent(qMRMLAbstractItemHelper* newParent)const;
00049 virtual qMRMLAbstractItemHelper* child(int row, int column) const;
00050 virtual int childCount() const;
00051 virtual int column() const;
00052 virtual QVariant data(int role = Qt::DisplayRole) const;
00053 virtual Qt::ItemFlags flags() const = 0;
00054 virtual bool hasChildren() const;
00055 virtual qMRMLAbstractItemHelper* parent() const;
00056 virtual bool reparent(qMRMLAbstractItemHelper* newParent);
00057 virtual int row() const;
00058 virtual bool setData(const QVariant &value, int role = Qt::EditRole);
00059 virtual vtkObject* object()const = 0;
00060 virtual bool operator==(const qMRMLAbstractItemHelper& helper)const;
00061 protected:
00062 friend class qMRMLProxyItemHelper;
00063 qMRMLAbstractItemHelper(int column, const qMRMLAbstractItemHelperFactory* factory);
00064
00065 const qMRMLAbstractItemHelperFactory* factory()const;
00067 virtual int childIndex(const qMRMLAbstractItemHelper* child)const;
00068 private:
00069 QCTK_DECLARE_PRIVATE(qMRMLAbstractItemHelper);
00070 };
00071
00072
00073 class QMRML_WIDGETS_EXPORT qMRMLAbstractSceneItemHelper : public qMRMLAbstractItemHelper
00074 {
00075 public:
00076 virtual ~qMRMLAbstractSceneItemHelper(){}
00077 virtual QVariant data(int role = Qt::DisplayRole) const;
00078 virtual Qt::ItemFlags flags() const;
00079 virtual vtkObject* object()const;
00080 virtual vtkMRMLScene* mrmlScene()const;
00081
00082 protected:
00083 qMRMLAbstractSceneItemHelper(vtkMRMLScene* scene, int column, const qMRMLAbstractItemHelperFactory* factory);
00084 private:
00085 QCTK_DECLARE_PRIVATE(qMRMLAbstractSceneItemHelper);
00086 };
00087
00088
00089 class QMRML_WIDGETS_EXPORT qMRMLAbstractNodeItemHelper : public qMRMLAbstractItemHelper
00090 {
00091 public:
00092 virtual ~qMRMLAbstractNodeItemHelper(){}
00093 virtual QVariant data(int role = Qt::DisplayRole) const;
00094 virtual Qt::ItemFlags flags() const;
00095 virtual vtkObject* object() const;
00096 virtual vtkMRMLNode* mrmlNode()const;
00097 virtual qMRMLAbstractItemHelper* parent() const = 0;
00098 virtual bool setData(const QVariant &value, int role = Qt::EditRole);
00099 protected:
00100 qMRMLAbstractNodeItemHelper(vtkMRMLNode* node, int column, const qMRMLAbstractItemHelperFactory* factory);
00101
00102 private:
00103 QCTK_DECLARE_PRIVATE(qMRMLAbstractNodeItemHelper);
00104 };
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136 class QMRML_WIDGETS_EXPORT qMRMLAbstractRootItemHelper : public qMRMLAbstractItemHelper
00137 {
00138 public:
00139 virtual ~qMRMLAbstractRootItemHelper(){}
00140 virtual qMRMLAbstractItemHelper* child(int row, int column) const;
00141 virtual int childCount() const;
00142 virtual QVariant data(int role = Qt::DisplayRole) const;
00143 virtual Qt::ItemFlags flags() const;
00144 virtual bool hasChildren() const;
00145 virtual vtkObject* object()const;
00146 virtual qMRMLAbstractItemHelper* parent() const;
00147 virtual int row() const;
00148
00149 protected:
00150 qMRMLAbstractRootItemHelper(vtkMRMLScene* scene, const qMRMLAbstractItemHelperFactory* factory);
00151
00153 virtual int childIndex(const qMRMLAbstractItemHelper* child)const;
00154 vtkMRMLScene* mrmlScene()const;
00155 private:
00156 QCTK_DECLARE_PRIVATE(qMRMLAbstractRootItemHelper);
00157 };
00158
00159
00160 class QMRML_WIDGETS_EXPORT qMRMLProxyItemHelper : public qMRMLAbstractItemHelper
00161 {
00162 public:
00163 virtual ~qMRMLProxyItemHelper(){}
00164 virtual bool canReparent(qMRMLAbstractItemHelper* newParent)const;
00165 virtual qMRMLAbstractItemHelper* child(int row, int column) const;
00166 virtual int childCount() const;
00167 int column() const;
00168 virtual QVariant data(int role = Qt::DisplayRole) const;
00169 virtual Qt::ItemFlags flags() const;
00170 virtual bool hasChildren() const;
00171 virtual qMRMLAbstractItemHelper* parent() const;
00172 virtual bool reparent(qMRMLAbstractItemHelper* newParent);
00173 int row() const;
00174 virtual bool setData(const QVariant &value, int role = Qt::EditRole);
00175 virtual vtkObject* object()const;
00176 virtual bool operator==(const qMRMLAbstractItemHelper& helper)const;
00177 protected:
00178 qMRMLProxyItemHelper(qMRMLAbstractItemHelper* proxy);
00180 virtual int childIndex(const qMRMLAbstractItemHelper* child)const;
00181 qMRMLAbstractItemHelper* proxy()const;
00182 private:
00183 QCTK_DECLARE_PRIVATE(qMRMLProxyItemHelper);
00184 };
00185
00186
00187 class QMRML_WIDGETS_EXPORT qMRMLVariantArrayItemHelper : public qMRMLAbstractItemHelper
00188 {
00189 public:
00190 qMRMLVariantArrayItemHelper(vtkVariantArray* array, int column, const qMRMLAbstractItemHelperFactory* factory);
00191 virtual QVariant data(int role = Qt::DisplayRole) const;
00192 virtual Qt::ItemFlags flags() const;
00193 virtual qMRMLAbstractItemHelper* parent() const;
00194 virtual bool setData(const QVariant &value, int role = Qt::EditRole);
00195 virtual vtkObject* object()const;
00196 static void createProperties(vtkVariantArray& properties,
00197 vtkObject* parent,
00198 const vtkStdString& title,
00199 Qt::ItemFlags flags = Qt::ItemIsEnabled);
00200 protected:
00201 vtkMRMLScene* mrmlScene()const;
00202
00203 private:
00204 QCTK_DECLARE_PRIVATE(qMRMLVariantArrayItemHelper);
00205 };
00206
00207
00208 class QMRML_WIDGETS_EXPORT qMRMLExtraItemsHelper : public qMRMLProxyItemHelper
00209 {
00210 public:
00211 qMRMLExtraItemsHelper(vtkCollection* preItems, vtkCollection* postItems,qMRMLAbstractItemHelper* proxy);
00212 virtual ~qMRMLExtraItemsHelper();
00213 virtual qMRMLAbstractItemHelper* child(int row, int column) const;
00214 virtual int childCount() const;
00215 virtual bool hasChildren() const;
00216 protected:
00217 virtual int childIndex(const qMRMLAbstractItemHelper* child)const;
00218 private:
00219 QCTK_DECLARE_PRIVATE(qMRMLExtraItemsHelper);
00220 };
00221
00222 #endif