Paste P127

Masterwork From Distant Lands
ActivePublic

Authored by dkazakov on Oct 30 2017, 12:38 PM.
diff --git a/libs/ui/kis_layer_manager.cc b/libs/ui/kis_layer_manager.cc
index 2f0c344..fd7470f 100644
--- a/libs/ui/kis_layer_manager.cc
+++ b/libs/ui/kis_layer_manager.cc
@@ -179,9 +179,6 @@ void KisLayerManager::setup(KisActionManager* actionManager)
m_convertGroupAnimated = actionManager->createAction("convert_group_to_animated");
connect(m_convertGroupAnimated, SIGNAL(triggered()), this, SLOT(convertGroupToAnimated()));
- m_convertLayerFileLayer = actionManager->createAction("convert_layer_to_file_layer");
- connect(m_convertLayerFileLayer, SIGNAL(triggered()), this, SLOT(convertLayerToFileLayer()));
-
m_imageResizeToLayer = actionManager->createAction("resizeimagetolayer");
connect(m_imageResizeToLayer, SIGNAL(triggered()), this, SLOT(imageResizeToActiveLayer()));
@@ -438,7 +435,7 @@ void KisLayerManager::convertGroupToAnimated()
m_commandsAdapter->endMacro();
}
-void KisLayerManager::convertLayerToFileLayer()
+void KisLayerManager::convertLayerToFileLayer(KisNodeSP source)
{
KisImageSP image = m_view->image();
if (!image) return;
@@ -458,14 +455,13 @@ void KisLayerManager::convertLayerToFileLayer()
urlRequester->setMimeTypeFilters(listMimeFilter);
urlRequester->setFileName(m_view->document()->url().toLocalFile());
if (m_view->document()->url().isLocalFile()) {
- urlRequester->setStartDir(QFileInfo(m_view->document()->url().toLocalFile()).absolutePath());
QFileInfo location = QFileInfo(m_view->document()->url().toLocalFile()).baseName();
- location.setFile(location.dir(), location.baseName()+"_"+activeLayer()->name()+".kra");
+ location.setFile(location.dir(), location.baseName()+"_"+ source->name()+".kra");
urlRequester->setFileName(location.absoluteFilePath());
} else {
- QFileInfo location = QFileInfo(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
- urlRequester->setStartDir(location.absolutePath());
- urlRequester->setFileName(activeLayer()->name()+".kra");
+ const QFileInfo location = QFileInfo(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
+ const QString proposedFileName = QDir(location.absoluteFilePath()).absoluteFilePath(source->name() + ".kra");
+ urlRequester->setFileName(proposedFileName);
}
layout->addWidget(urlRequester);
@@ -482,20 +478,20 @@ void KisLayerManager::convertLayerToFileLayer()
mimeType = "image/png";
}
- KisNodeSP layer = activeLayer();
+
QScopedPointer<KisDocument> doc(KisPart::instance()->createDocument());
- QRect bounds = activeLayer()->exactBounds();
+ QRect bounds = source->exactBounds();
KisImageSP dst = new KisImage(doc->createUndoStore(),
image->width(),
image->height(),
image->projection()->compositionSourceColorSpace(),
- layer->name());
+ source->name());
dst->setResolution(image->xRes(), image->yRes());
doc->setFileBatchMode(false);
doc->setCurrentImage(dst);
- KisNodeSP node = layer->clone();
+ KisNodeSP node = source->clone();
dst->addNode(node);
dst->initialRefreshGraph();
dst->cropImage(bounds);
@@ -508,12 +504,17 @@ void KisLayerManager::convertLayerToFileLayer()
} else {
QString basePath = QFileInfo(m_view->document()->url().toLocalFile()).absolutePath();
QString relativePath = QDir(basePath).relativeFilePath(path);
- KisFileLayer *fileLayer = new KisFileLayer(image, basePath, relativePath, KisFileLayer::None, layer->name(), OPACITY_OPAQUE_U8);
+ KisFileLayer *fileLayer = new KisFileLayer(image, basePath, relativePath, KisFileLayer::None, source->name(), OPACITY_OPAQUE_U8);
fileLayer->setX(bounds.x());
fileLayer->setY(bounds.y());
+
+ KisNodeSP dstParent = source->parent();
+ KisNodeSP dstAboveThis = source->prevSibling();
+
+
m_commandsAdapter->beginMacro(kundo2_i18n("Convert to a file layer"));
- m_commandsAdapter->addNode(fileLayer, layer->parent(), layer);
- m_commandsAdapter->removeNode(layer);
+ m_commandsAdapter->removeNode(source);
+ m_commandsAdapter->addNode(fileLayer, dstParent, dstAboveThis);
m_commandsAdapter->endMacro();
}
doc->closeUrl(false);
diff --git a/libs/ui/kis_layer_manager.h b/libs/ui/kis_layer_manager.h
index 0349c5f..17f9d9c 100644
--- a/libs/ui/kis_layer_manager.h
+++ b/libs/ui/kis_layer_manager.h
@@ -91,7 +91,7 @@ private Q_SLOTS:
void convertNodeToPaintLayer(KisNodeSP source);
void convertGroupToAnimated();
- void convertLayerToFileLayer();
+ void convertLayerToFileLayer(KisNodeSP source);
KisLayerSP addLayer(KisNodeSP activeNode);
void addGroupLayer(KisNodeSP activeNode);
@@ -125,7 +125,6 @@ private:
KisAction *m_imageResizeToLayer;
KisAction *m_flattenLayer;
KisAction *m_rasterizeLayer;
- KisAction *m_convertLayerFileLayer;
KisNodeCommandsAdapter* m_commandsAdapter;
KisAction *m_layerStyle;
diff --git a/libs/ui/kis_node_manager.cpp b/libs/ui/kis_node_manager.cpp
index 02b93e0..de463e0 100644
--- a/libs/ui/kis_node_manager.cpp
+++ b/libs/ui/kis_node_manager.cpp
@@ -592,6 +592,8 @@ void KisNodeManager::convertNode(const QString &nodeType)
m_d->commandsAdapter.removeNode(activeNode);
m_d->commandsAdapter.endMacro();
+ } else if (nodeType == "KisFileLayer") {
+ m_d->layerManager.convertLayerToFileLayer(activeNode);
} else {
warnKrita << "Unsupported node conversion type:" << nodeType;
}
diff --git a/libs/widgets/kis_file_name_requester.cpp b/libs/widgets/kis_file_name_requester.cpp
index 966cc46..3942e80 100644
--- a/libs/widgets/kis_file_name_requester.cpp
+++ b/libs/widgets/kis_file_name_requester.cpp
@@ -49,6 +49,7 @@ void KisFileNameRequester::setStartDir(const QString &path)
void KisFileNameRequester::setFileName(const QString &path)
{
m_ui->txtFileName->setText(path);
+ m_basePath = path;
emit fileSelected(path);
}
dkazakov edited the content of this paste. (Show Details)Oct 30 2017, 12:38 PM
dkazakov changed the title of this paste from untitled to Masterwork From Distant Lands.
dkazakov updated the paste's language from autodetect to autodetect.