Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_dlg_file_layer.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2013 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
8
9#include <QLineEdit>
10#include <QCheckBox>
11#include <QStandardPaths>
12
13#include <klocalizedstring.h>
14
15#include <KoFileDialog.h>
16#include <KisApplication.h>
19#include <kis_config_widget.h>
20#include <kis_paint_device.h>
21#include <kis_transaction.h>
22#include <kis_node.h>
23#include <kis_file_layer.h>
24#include <kis_filter_strategy.h>
25
26KisDlgFileLayer::KisDlgFileLayer(const QString &basePath, const QString & name, QWidget * parent)
27 : KoDialog(parent)
28 , m_basePath(basePath)
29{
32 QWidget * page = new QWidget(this);
33 dlgWidget.setupUi(page);
35 dlgWidget.wdgUrlRequester->setMimeTypeFilters(mimes);
36 setMainWidget(page);
37
38 //dlgWidget.wdgUrlRequester->setBasePath(m_basePath);
39 dlgWidget.wdgUrlRequester->setStartDir(m_basePath);
40
41 dlgWidget.txtLayerName->setText(name);
42
43 connect(dlgWidget.wdgUrlRequester, SIGNAL(textChanged(QString)),
44 SLOT(slotNameChanged(QString)));
45
46 dlgWidget.cmbFilter->setIDList(KisFilterStrategyRegistry::instance()->listKeys());
47 dlgWidget.cmbFilter->setCurrent("Bicubic");
48 dlgWidget.cmbFilter->setToolTip(i18nc("@info:tooltip",
49 "<p>Select filtering mode:\n"
50 "<ul>"
51 "<li><b>Nearest neighbor</b> for pixel art. Does not produce new color.</li>"
52 "<li><b>Bilinear</b> for areas with uniform color to avoid artifacts.</li>"
53 "<li><b>Bicubic</b> for smoother results.</li>"
54 "<li><b>Lanczos3</b> for sharp results. May produce aerials.</li>"
55 "</ul></p>"));
56 connect(dlgWidget.radioDontScale, SIGNAL(toggled(bool)),
57 this, SLOT(slotMethodChanged(bool)));
58
59 enableButtonOk(false);
60}
61
62void KisDlgFileLayer::slotNameChanged(const QString & text)
63{
64 enableButtonOk(!text.isEmpty());
65}
66
68{
69 dlgWidget.cmbFilter->setDisabled(value);
70}
71
73{
74 return dlgWidget.txtLayerName->text();
75}
76
78{
79 if (dlgWidget.radioDontScale->isChecked()) {
80 return KisFileLayer::None;
81 }
82 else if (dlgWidget.radioScaleToImageSize->isChecked()) {
84 }
85 else {
87 }
88}
89
91{
92 return dlgWidget.cmbFilter->currentItem().id();
93}
94
95void KisDlgFileLayer::setFileName(QString fileName)
96{
97 dlgWidget.wdgUrlRequester->setFileName(fileName);
98}
99
101{
102 dlgWidget.radioDontScale->setChecked(false);
103 dlgWidget.radioScaleToImageSize->setChecked(false);
104 dlgWidget.radioScalePPI->setChecked(false);
105 if (method == KisFileLayer::None) {
106 dlgWidget.radioDontScale->setChecked(true);
107 } else if (method == KisFileLayer::ToImageSize) {
108 dlgWidget.radioScaleToImageSize->setChecked(true);
109 } else {
110 dlgWidget.radioScalePPI->setChecked(true);
111 }
112}
113
115{
116 dlgWidget.cmbFilter->setCurrent(filter);
117}
118
120{
121 QString path = dlgWidget.wdgUrlRequester->fileName();
122 QFileInfo fi(path);
123 if (fi.isSymLink()) {
124 path = fi.symLinkTarget();
125 fi = QFileInfo(path);
126 }
127 if (!m_basePath.isEmpty() && fi.isAbsolute()) {
128 QDir directory(m_basePath);
129 path = directory.relativeFilePath(path);
130 }
131
132 return path;
133}
134
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setScalingFilter(QString filter)
void slotNameChanged(const QString &)
void slotMethodChanged(const bool &)
QString layerName() const
void setFileName(QString fileName)
KisDlgFileLayer(const QString &basePath, const QString &name, QWidget *parent=0)
KisFileLayer::ScalingMethod scaleToImageResolution() const
QString scalingFilter() const
void setScalingMethod(KisFileLayer::ScalingMethod method)
Ui_WdgDlgFileLayer dlgWidget
QString fileName() const
static KisFilterStrategyRegistry * instance()
static QStringList supportedMimeTypes(Direction direction)
A dialog base class with standard buttons and predefined layouts.
Definition KoDialog.h:116
void enableButtonOk(bool state)
Definition KoDialog.cpp:615
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:302
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130