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 // qMRMLWidgets predefs
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 // MRML predefs
00026 class vtkMRMLScene;
00027 class vtkMRMLNode;
00028 
00029 // VTK predefs
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 class QMRML_WIDGETS_EXPORT qMRMLNodeCategoryItemHelper : public qMRMLAbstractItemHelper
00111 {
00112 public:
00113   qMRMLNodeCategoryItemHelper(const QString& category);
00114   virtual ~qMRMLNodeCategoryItemHelper();
00115   
00116   virtual qMRMLAbstractItemHelper* child(int row, int column) const;
00117   virtual int childCount() const;
00118   virtual int column() const;
00119   virtual QVariant data(int role = Qt::DisplayRole) const;
00120   virtual Qt::ItemFlags flags() const;
00121   virtual bool hasChildren() const;
00122   virtual qMRMLAbstractItemHelper* parent() const;
00123   virtual int row() const;
00124   virtual bool setData(const QVariant &value, int role = Qt::EditRole);
00125 protected:
00127   virtual int childIndex(const qMRMLAbstractItemHelper* child)const;
00128 
00129 private:
00130   QCTK_DECLARE_PRIVATE(qMRMLNodeCategoryItemHelper);
00131 };
00132 */
00133 
00134 // FIXME: doesn't need to be derived, does it ?
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

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1