[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/gwenview/app
From: Aurélien Gâteau <aurelien.gateau () free ! fr>
Date: 2008-08-27 11:21:49
Message-ID: 1219836109.003424.12946.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 853153 by gateau:
Do not allow user to edit images which Gwenview can't edit.
M +21 -0 gvcore.cpp
M +7 -0 gvcore.h
M +26 -0 imageopscontextmanageritem.cpp
--- trunk/KDE/kdegraphics/gwenview/app/gvcore.cpp #853152:853153
@@ -22,6 +22,7 @@
#include "gvcore.h"
// Qt
+#include <QApplication>
#include <QFuture>
#include <QFutureWatcher>
#include <QList>
@@ -195,6 +196,9 @@
void GvCore::rotateLeft(const KUrl& url) {
+ if (!ensureDocumentIsEditable(url)) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(ROT_270);
Document::Ptr doc = DocumentFactory::instance()->load(url);
doc->loadFullImage();
@@ -205,6 +209,9 @@
void GvCore::rotateRight(const KUrl& url) {
+ if (!ensureDocumentIsEditable(url)) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(ROT_90);
Document::Ptr doc = DocumentFactory::instance()->load(url);
doc->loadFullImage();
@@ -214,4 +221,18 @@
}
+bool GvCore::ensureDocumentIsEditable(const KUrl& url) {
+ Document::Ptr doc = DocumentFactory::instance()->load(url);
+ if (doc->isEditable()) {
+ return true;
+ }
+
+ KMessageBox::sorry(
+ QApplication::activeWindow(),
+ i18nc("@info", "Gwenview cannot edit this kind of image.")
+ );
+ return false;
+}
+
+
} // namespace
--- trunk/KDE/kdegraphics/gwenview/app/gvcore.h #853152:853153
@@ -49,6 +49,13 @@
void rotateLeft(const KUrl&);
void rotateRight(const KUrl&);
+ /**
+ * Checks if the document referenced by url is editable, shows a sorry
+ * dialog if it's not.
+ * @return true if editable, false if not
+ */
+ static bool ensureDocumentIsEditable(const KUrl& url);
+
private:
GvCorePrivate* const d;
};
--- trunk/KDE/kdegraphics/gwenview/app/imageopscontextmanageritem.cpp #853152:853153
@@ -28,11 +28,13 @@
#include <kdebug.h>
#include <kinputdialog.h>
#include <klocale.h>
+#include <kmessagebox.h>
#include <kactioncollection.h>
// Local
#include "contextmanager.h"
#include "documentpanel.h"
+#include "gvcore.h"
#include "mainwindow.h"
#include "sidebar.h"
#include <lib/cropsidebar.h>
@@ -128,6 +130,12 @@
op->setDocument(doc);
doc->undoStack()->push(op);
}
+
+
+ bool ensureEditable() {
+ KUrl url = that->contextManager()->currentUrl();
+ return GvCore::ensureDocumentIsEditable(url);
+ }
};
@@ -211,30 +219,45 @@
void ImageOpsContextManagerItem::rotateLeft() {
+ if (!d->ensureEditable()) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(ROT_270);
d->applyImageOperation(op);
}
void ImageOpsContextManagerItem::rotateRight() {
+ if (!d->ensureEditable()) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(ROT_90);
d->applyImageOperation(op);
}
void ImageOpsContextManagerItem::mirror() {
+ if (!d->ensureEditable()) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(HFLIP);
d->applyImageOperation(op);
}
void ImageOpsContextManagerItem::flip() {
+ if (!d->ensureEditable()) {
+ return;
+ }
TransformImageOperation* op = new TransformImageOperation(VFLIP);
d->applyImageOperation(op);
}
void ImageOpsContextManagerItem::resizeImage() {
+ if (!d->ensureEditable()) {
+ return;
+ }
Document::Ptr doc = DocumentFactory::instance()->load(contextManager()->currentUrl());
doc->loadFullImage();
doc->waitUntilLoaded();
@@ -259,6 +282,9 @@
void ImageOpsContextManagerItem::showCropSideBar() {
+ if (!d->ensureEditable()) {
+ return;
+ }
ImageView* imageView = d->mMainWindow->documentPanel()->imageView();
if (!imageView) {
kError() << "No ImageView available!";
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic