21 #ifndef GRAPHHIERARCHIESMODEL_H
22 #define GRAPHHIERARCHIESMODEL_H
24 #include <tulip/tulipconf.h>
25 #include <tulip/TulipModel.h>
26 #include <tulip/Observable.h>
27 #include <tulip/Graph.h>
34 class GraphNeedsSavingObserver;
38 class TLP_QT_SCOPE GraphHierarchiesModel :
public tlp::TulipModel,
public tlp::Observable {
41 QList<tlp::Graph *> _graphs;
45 QMap<const tlp::Graph *, QModelIndex> _indexCache;
46 QMap<const tlp::Graph *, GraphNeedsSavingObserver *> _saveNeeded;
52 explicit GraphHierarchiesModel(QObject *parent =
nullptr);
53 GraphHierarchiesModel(
const GraphHierarchiesModel &);
54 ~GraphHierarchiesModel()
override;
57 typedef QList<tlp::Graph *>::iterator iterator;
58 typedef QList<tlp::Graph *>::const_iterator const_iterator;
66 return _graphs.size();
70 return _graphs.begin();
75 const_iterator begin()
const {
76 return _graphs.begin();
78 const_iterator end()
const {
82 QList<tlp::Graph *> graphs()
const {
86 return _graphs.isEmpty();
90 QModelIndex index(
int row,
int column,
const QModelIndex &parent = QModelIndex())
const override;
91 QModelIndex parent(
const QModelIndex &child)
const override;
92 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
93 int columnCount(
const QModelIndex &parent = QModelIndex())
const override;
94 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
95 bool setData(
const QModelIndex &index,
const QVariant &value,
int role)
override;
96 Qt::ItemFlags flags(
const QModelIndex &index)
const override;
97 QVariant headerData(
int section, Qt::Orientation orientation,
int role)
const override;
98 QMimeData *mimeData(
const QModelIndexList &indexes)
const override;
100 QModelIndex indexOf(
const Graph *);
101 QModelIndex forceGraphIndex(Graph *);
106 void treatEvents(
const std::vector<tlp::Event> &)
override;
123 QSet<const Graph *> _graphsChanged;
Event is the base class for all events used in the Observation mechanism.
The Observable class is the base of Tulip's observation system.
PluginProcess subclasses are meant to notify about the progress state of some process (typically a pl...