Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_canvas_drop.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#include "kis_canvas_drop.h"
8
9#include <KLocalizedString>
10#include <QAction>
11#include <QUrl>
12
26
28 : QMenu(parent)
29 , d(new Private)
30{
31 setObjectName("drop_popup");
32
33 d->insertAsNewLayer = addAction(i18n("Insert as New Layer"));
34 d->insertAsNewFileLayer = addAction(i18n("Insert as New File Layer"));
35 d->openInNewDocument = addAction(i18n("Open in New Document"));
36 d->insertAsReferenceImage = addAction(i18n("Insert as Reference Image"));
37
38 d->insertManyLayers = addAction(i18n("Insert Many Layers"));
39 d->insertManyFileLayers = addAction(i18n("Insert Many File Layers"));
40 d->openManyDocuments = addAction(i18n("Open Many Documents"));
41 d->insertAsReferenceImages = addAction(i18n("Insert as Reference Images"));
42
43 addSeparator();
44
45 d->cancel = addAction(i18n("Cancel"));
46}
47
48KisCanvasDrop::Action KisCanvasDrop::dropAs(const QMimeData &data, QPoint pos)
49{
50 const auto &urls = data.urls();
51
52 d->insertAsNewLayer->setEnabled(data.hasImage() || urls.count() == 1);
53 d->insertAsNewFileLayer->setEnabled(urls.count() == 1);
54 d->openInNewDocument->setEnabled(urls.count() == 1);
55 d->insertAsReferenceImage->setEnabled(data.hasImage() || urls.count() == 1);
56
57 d->insertManyLayers->setEnabled(urls.count() > 1);
58 d->insertManyFileLayers->setEnabled(urls.count() > 1);
59 d->openManyDocuments->setEnabled(urls.count() > 1);
60 d->insertAsReferenceImages->setEnabled(urls.count() > 1);
61
62 const QAction *action = exec(pos);
63
64 if (action == d->insertAsNewLayer) {
66 } else if (action == d->insertAsNewFileLayer) {
68 } else if (action == d->openInNewDocument) {
70 } else if (action == d->insertAsReferenceImage) {
72 } else if (action == d->insertManyLayers) {
74 } else if (action == d->insertManyFileLayers) {
76 } else if (action == d->openManyDocuments) {
78 } else if (action == d->insertAsReferenceImages) {
80 }
81
83}
KisCanvasDrop(QWidget *parent=nullptr)
Action dropAs(const QMimeData &data, QPoint pos)
Private *const d