36 QMap<KisDocument *, QSharedPointer<KisNameServer>>
nameServers;
50 if (curCanvas && curCanvas->imageView()) {
51 return curCanvas->imageView()->document();
58 if (curCanvas && curCanvas->imageView()) {
76 : QAbstractListModel()
87 if (parent.isValid()) {
90 return m_d->curDocList.size();
96 if (!index.isValid() || index.row() >=
rowCount(QModelIndex())) {
101 case Qt::DisplayRole:
103 return m_d->curDocList[i].first;
111 if (!index.isValid() || index.row() >=
rowCount(QModelIndex())) {
116 case Qt::DisplayRole:
118 m_d->curDocList[i].first =
value.toString();
119 Q_EMIT dataChanged(index, index);
128 if (!index.isValid()) {
129 return Qt::ItemIsEnabled;
132 return QAbstractListModel::flags(index) | Qt::ItemIsEditable;
137 if (
m_d->curCanvas == canvas) {
141 m_d->curNameServer.reset();
143 if (
m_d->curDocument()) {
144 m_d->documentGroups.insert(
m_d->curDocument(),
m_d->curDocList);
146 Q_FOREACH (
auto const &i,
m_d->curDocList) {
147 delete i.second.data();
151 if (!
m_d->curDocList.isEmpty()) {
152 beginRemoveRows(QModelIndex(), 0,
m_d->curDocList.size() - 1);
153 m_d->curDocList.clear();
156 m_d->curCanvas = canvas;
161 beginInsertRows(QModelIndex(), docList.size(), docList.size());
162 m_d->curDocList = docList;
168 m_d->nameServers.insert(curDoc, nameServer);
170 m_d->curNameServer = nameServer;
177 if (!
m_d->curDocument()) {
182 beginInsertRows(QModelIndex(),
m_d->curDocList.size(),
m_d->curDocList.size());
183 m_d->curDocList << qMakePair(i18nc(
"snapshot names, e.g. \"Snapshot 1\"",
"Snapshot %1",
m_d->curNameServer->number()), clonedDoc);
192 if (!index.isValid() || index.row() >=
m_d->curDocList.size()) {
196 beginRemoveRows(QModelIndex(), i, i);
197 QPair<QString, QPointer<KisDocument> > pair =
m_d->curDocList.takeAt(i);
199 delete pair.second.data();
205 if (!index.isValid() || index.row() >=
m_d->curDocList.size()) {
209 return m_d->switchToDocument(
m_d->curDocList[index.row()].second);
float value(const T *src, size_t ch)
void copyFromDocument(const KisDocument &rhs)
KisNodeWSP preActivatedNode
void emitNotification(KisImageSignalType type)
KisImageSignalRouter * signalRouter()
bool slotRemoveSnapshot(const QModelIndex &index)
bool slotSwitchToSnapshot(const QModelIndex &index)
Qt::ItemFlags flags(const QModelIndex &index) const override
QVariant data(const QModelIndex &index, int role) const override
bool slotCreateSnapshot()
int rowCount(const QModelIndex &parent) const override
~KisSnapshotModel() override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
QScopedPointer< Private > m_d
void setCanvas(QPointer< KisCanvas2 > canvas)
bool switchToDocument(QPointer< KisDocument > doc)
QMap< KisDocument *, DocPList > documentGroups
QPointer< KisCanvas2 > curCanvas
QSharedPointer< KisNameServer > curNameServer
QPointer< KisDocument > curDocument()
QMap< KisDocument *, QSharedPointer< KisNameServer > > nameServers