Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_PartDataModel.h
1
2 #ifndef XGUI_PartDataModel_H
3 #define XGUI_PartDataModel_H
4
5 #include <QAbstractItemModel>
6
7 class ModelAPI_Feature;
8 class ModelAPI_Document; 
9
10 class XGUI_TopDataModel : public QAbstractItemModel
11 {
12   Q_OBJECT
13 public:
14   XGUI_TopDataModel(QObject* theParent);
15   virtual ~XGUI_TopDataModel();
16  
17   virtual void setDocument(const std::shared_ptr<ModelAPI_Document>& theDoc)
18   {
19     myDocument = theDoc;
20   }
21
22   // Reimplementation from QAbstractItemModel
23   virtual QVariant data(const QModelIndex& theIndex, int theRole) const;
24   virtual QVariant headerData(int section, Qt::Orientation orientation,
25                               int role = Qt::DisplayRole) const;
26
27   virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
28   virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
29
30   virtual QModelIndex index(int theRow, int theColumn, 
31                             const QModelIndex& theParent = QModelIndex()) const;
32
33   virtual QModelIndex parent(const QModelIndex& theIndex) const;
34
35   virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const;
36
37 private:
38   enum DataIds {
39     ParamsFolder,
40     ParamObject,
41     ConstructFolder,
42     ConstructObject
43   };
44
45   std::shared_ptr<ModelAPI_Document> myDocument;
46 };
47
48
49
50 class XGUI_PartDataModel : public QAbstractItemModel
51 {
52   Q_OBJECT
53 public:
54   XGUI_PartDataModel(QObject* theParent);
55   virtual ~XGUI_PartDataModel();
56
57   virtual void setDocument(const std::shared_ptr<ModelAPI_Document>& theDoc, int theId)
58   {
59     myDocument = theDoc;
60     myId = theId;
61   }
62
63   // Reimplementation from QAbstractItemModel
64   virtual QVariant data(const QModelIndex& theIndex, int theRole) const;
65   virtual QVariant headerData(int section, Qt::Orientation orientation,
66                               int role = Qt::DisplayRole) const;
67
68   virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
69   virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
70
71   virtual QModelIndex index(int theRow, int theColumn, 
72                             const QModelIndex& theParent = QModelIndex()) const;
73
74   virtual QModelIndex parent(const QModelIndex& theIndex) const;
75
76   virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const;
77
78 private: 
79   std::shared_ptr<ModelAPI_Document> featureDocument() const;
80
81
82   enum DataIds {
83     MyRoot,
84     ParamsFolder,
85     ParamObject,
86     ConstructFolder,
87     ConstructObject
88   };
89
90   std::shared_ptr<ModelAPI_Document> myDocument;
91   int myId;
92 };
93
94 #endif