36 QMap<KisDocument *, QSharedPointer<KisNameServer>>
nameServers;
50 if (curCanvas && curCanvas->imageView()) {
51 return curCanvas->imageView()->document();
58 if (curCanvas && curCanvas->imageView()) {
59 KisView *view = curCanvas->imageView();
77 : QAbstractListModel()
88 if (parent.isValid()) {
91 return m_d->curDocList.size();
97 if (!index.isValid() || index.row() >=
rowCount(QModelIndex())) {
102 case Qt::DisplayRole:
104 return m_d->curDocList[i].first;
112 if (!index.isValid() || index.row() >=
rowCount(QModelIndex())) {
117 case Qt::DisplayRole:
119 m_d->curDocList[i].first =
value.toString();
120 Q_EMIT dataChanged(index, index);
129 if (!index.isValid()) {
130 return Qt::ItemIsEnabled;
133 return QAbstractListModel::flags(index) | Qt::ItemIsEditable;
138 if (
m_d->curCanvas == canvas) {
142 m_d->curNameServer.reset();
144 if (
m_d->curDocument()) {
145 m_d->documentGroups.insert(
m_d->curDocument(),
m_d->curDocList);
147 Q_FOREACH (
auto const &i,
m_d->curDocList) {
148 delete i.second.data();
152 if (!
m_d->curDocList.isEmpty()) {
153 beginRemoveRows(QModelIndex(), 0,
m_d->curDocList.size() - 1);
154 m_d->curDocList.clear();
157 m_d->curCanvas = canvas;
162 beginInsertRows(QModelIndex(), docList.size(), docList.size());
163 m_d->curDocList = docList;
169 m_d->nameServers.insert(curDoc, nameServer);
171 m_d->curNameServer = nameServer;
178 if (!
m_d->curDocument()) {
183 beginInsertRows(QModelIndex(),
m_d->curDocList.size(),
m_d->curDocList.size());
184 m_d->curDocList << qMakePair(i18nc(
"snapshot names, e.g. \"Snapshot 1\"",
"Snapshot %1",
m_d->curNameServer->number()), clonedDoc);
193 if (!index.isValid() || index.row() >=
m_d->curDocList.size()) {
197 beginRemoveRows(QModelIndex(), i, i);
198 QPair<QString, QPointer<KisDocument> > pair =
m_d->curDocList.takeAt(i);
200 delete pair.second.data();
206 if (!index.isValid() || index.row() >=
m_d->curDocList.size()) {
210 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