[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/calligra/2.9] krita: [FEATURE] Create a copy of a currently open image
From: Boudewijn Rempt <boud () valdyas ! org>
Date: 2015-06-02 19:15:34
Message-ID: E1Yzrew-0005r2-Bm () scm ! kde ! org
[Download RAW message or body]
Git commit 5012d8da10496b4494d5ea7415ee093f0d8a8bc2 by Boudewijn Rempt.
Committed on 02/06/2015 at 19:15.
Pushed by rempt into branch 'calligra/2.9'.
[FEATURE] Create a copy of a currently open image
The create copy menu option will create an independent copy of the currently open
image.
BUG:348256
M +3 -1 krita/krita.rc
M +0 -1 krita/ui/KisMainWindow.cpp
M +28 -0 krita/ui/KisViewManager.cpp
M +1 -0 krita/ui/KisViewManager.h
http://commits.kde.org/calligra/5012d8da10496b4494d5ea7415ee093f0d8a8bc2
diff --git a/krita/krita.rc b/krita/krita.rc
index 0df46c7..70abe63 100644
--- a/krita/krita.rc
+++ b/krita/krita.rc
@@ -2,7 +2,7 @@
<kpartgui xmlns="http://www.kde.org/standards/kxmlgui/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Krita"
-version="71"
+version="72"
xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 \
http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd"> <MenuBar>
<Menu name="file" noMerge="1">
@@ -14,6 +14,7 @@ xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 \
http://www.kde.org <Action name="file_save"/>
<Action name="file_save_as"/>
<Action name="file_reload_file"/>
+ <Action name="file_reload_file"/>
<Separator/>
<Action name="file_import_file"/>
<Action name="file_export_file"/>
@@ -22,6 +23,7 @@ xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 \
http://www.kde.org <Action name="save_incremental_version"/>
<Action name="save_incremental_backup"/>
<Action name="create_template"/>
+ <Action name="create_copy"/>
<Separator/>
<Action name="file_print"/>
<Action name="file_print_preview"/>
diff --git a/krita/ui/KisMainWindow.cpp b/krita/ui/KisMainWindow.cpp
index 8b3a784..331aba3 100644
--- a/krita/ui/KisMainWindow.cpp
+++ b/krita/ui/KisMainWindow.cpp
@@ -686,7 +686,6 @@ bool KisMainWindow::openDocumentInternal(const KUrl & url, \
KisDocument *newdoc) KisPart::instance()->addDocument(newdoc);
updateReloadFileAction(newdoc);
-
KFileItem file(url, newdoc->mimeType(), KFileItem::Unknown);
if (!file.isWritable()) {
setReadWrite(false);
diff --git a/krita/ui/KisViewManager.cpp b/krita/ui/KisViewManager.cpp
index e93824a..8f9973f 100644
--- a/krita/ui/KisViewManager.cpp
+++ b/krita/ui/KisViewManager.cpp
@@ -264,6 +264,7 @@ public:
KisFilterManager *filterManager;
KisStatusBar *statusBar;
KisAction *createTemplate;
+ KisAction *createCopy;
KisAction *saveIncremental;
KisAction *saveIncrementalBackup;
KisAction *openResourcesDirectory;
@@ -677,6 +678,11 @@ void KisViewManager::createActions()
actionManager()->addAction("create_template", d->createTemplate);
connect(d->createTemplate, SIGNAL(triggered()), this, \
SLOT(slotCreateTemplate()));
+ d->createCopy = new KisAction( i18n( "&Create Copy From Current Image" ), this);
+ d->createCopy->setActivationFlags(KisAction::ACTIVE_IMAGE);
+ actionManager()->addAction("create_copy", d->createCopy);
+ connect(d->createCopy, SIGNAL(triggered()), this, SLOT(slotCreateCopy()));
+
d->openResourcesDirectory = new KisAction(i18n("Open Resources Folder"), this);
d->openResourcesDirectory->setToolTip(i18n("Opens a file browser at the location \
Krita saves resources such as brushes to."));
d->openResourcesDirectory->setWhatsThis(i18n("Opens a file browser at the \
location Krita saves resources such as brushes to.")); @@ -857,6 +863,28 @@ void \
KisViewManager::slotCreateTemplate()
KisFactory::componentData(), document(), \
mainWindow()); }
+void KisViewManager::slotCreateCopy()
+{
+ if (!document()) return;
+ KisDocument *doc = KisPart::instance()->createDocument();
+
+ QString name = document()->documentInfo()->aboutInfo("name");
+ if (name.isEmpty()) {
+ name = document()->url().toLocalFile();
+ }
+ name = i18n("%1 (Copy)", name);
+ doc->documentInfo()->setAboutInfo("title", name);
+ KisImageWSP image = document()->image();
+ KisImageSP newImage = new KisImage(doc->createUndoStore(), image->width(), \
image->height(), image->colorSpace(), name); + \
newImage->setRootLayer(dynamic_cast<KisGroupLayer*>(image->rootLayer()->clone().data()));
+ doc->setCurrentImage(newImage);
+ KisPart::instance()->addDocument(doc);
+ KisMainWindow *mw = qobject_cast<KisMainWindow*>(d->mainWindow);
+ KisView *view = KisPart::instance()->createView(doc, \
resourceProvider()->resourceManager(), mw->actionCollection(), mw); + \
mw->addView(view); +}
+
+
QMainWindow* KisViewManager::qtMainWindow() const
{
if (d->mainWindow)
diff --git a/krita/ui/KisViewManager.h b/krita/ui/KisViewManager.h
index 7215c62..ba5804e 100644
--- a/krita/ui/KisViewManager.h
+++ b/krita/ui/KisViewManager.h
@@ -225,6 +225,7 @@ private Q_SLOTS:
void slotBlacklistCleanup();
void slotCreateTemplate();
+ void slotCreateCopy();
void slotDocumentSaved();
void slotSaveIncremental();
void slotSaveIncrementalBackup();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic