2016-01-15 14:57:40 +01:00
|
|
|
/****************************************************************************
|
2010-06-18 11:02:48 +02:00
|
|
|
**
|
2016-01-15 14:57:40 +01:00
|
|
|
** Copyright (C) 2016 Denis Mingulov.
|
|
|
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
|
|
|
** Contact: https://www.qt.io/licensing/
|
2010-06-18 11:02:48 +02:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** This file is part of Qt Creator.
|
2010-06-18 11:02:48 +02:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** Commercial License Usage
|
|
|
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
|
|
|
** accordance with the commercial license agreement provided with the
|
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
2016-01-15 14:57:40 +01:00
|
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
|
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
|
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
2010-06-18 11:02:48 +02:00
|
|
|
**
|
2016-01-15 14:57:40 +01:00
|
|
|
** GNU General Public License Usage
|
|
|
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
|
|
|
** General Public License version 3 as published by the Free Software
|
|
|
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
|
|
|
** included in the packaging of this file. Please review the following
|
|
|
|
|
** information to ensure the GNU General Public License requirements will
|
|
|
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
2010-12-17 16:01:08 +01:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
****************************************************************************/
|
2010-06-18 11:02:48 +02:00
|
|
|
|
|
|
|
|
#include "imageviewerplugin.h"
|
2016-03-15 14:18:20 +01:00
|
|
|
#include "imageviewer.h"
|
2010-06-18 11:02:48 +02:00
|
|
|
#include "imageviewerfactory.h"
|
|
|
|
|
#include "imageviewerconstants.h"
|
|
|
|
|
|
2016-03-15 14:18:20 +01:00
|
|
|
#include <QAction>
|
|
|
|
|
#include <QCoreApplication>
|
2012-02-15 10:42:41 +01:00
|
|
|
#include <QDebug>
|
2010-06-18 11:02:48 +02:00
|
|
|
|
|
|
|
|
#include <coreplugin/icore.h>
|
2016-03-15 14:18:20 +01:00
|
|
|
#include <coreplugin/actionmanager/actionmanager.h>
|
|
|
|
|
#include <coreplugin/actionmanager/command.h>
|
|
|
|
|
#include <coreplugin/editormanager/editormanager.h>
|
2011-09-05 16:10:37 +02:00
|
|
|
#include <coreplugin/id.h>
|
2010-06-18 11:02:48 +02:00
|
|
|
#include <extensionsystem/pluginmanager.h>
|
2015-03-18 16:04:10 +01:00
|
|
|
#include <utils/mimetypes/mimedatabase.h>
|
2010-06-18 11:02:48 +02:00
|
|
|
|
|
|
|
|
namespace ImageViewer {
|
|
|
|
|
namespace Internal {
|
|
|
|
|
|
|
|
|
|
///////////////////////////////// ImageViewerPlugin //////////////////////////////////
|
|
|
|
|
|
|
|
|
|
bool ImageViewerPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|
|
|
|
{
|
|
|
|
|
Q_UNUSED(arguments)
|
2015-02-04 09:32:46 +01:00
|
|
|
Q_UNUSED(errorMessage)
|
2010-06-18 11:02:48 +02:00
|
|
|
|
2015-03-18 16:04:10 +01:00
|
|
|
Utils::MimeDatabase::addMimeTypes(QLatin1String(":/imageviewer/ImageViewer.mimetypes.xml"));
|
|
|
|
|
|
2014-02-24 18:29:27 +01:00
|
|
|
m_factory = new ImageViewerFactory(this);
|
|
|
|
|
addAutoReleasedObject(m_factory);
|
2010-06-18 11:02:48 +02:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2016-03-15 14:18:20 +01:00
|
|
|
static inline ImageViewer *currentImageViewer()
|
|
|
|
|
{
|
|
|
|
|
return qobject_cast<ImageViewer *>(Core::EditorManager::currentEditor());
|
|
|
|
|
}
|
|
|
|
|
|
2010-06-18 11:02:48 +02:00
|
|
|
void ImageViewerPlugin::extensionsInitialized()
|
|
|
|
|
{
|
2016-03-15 14:18:20 +01:00
|
|
|
QAction *a = registerNewAction(Constants::ACTION_ZOOM_IN, tr("Zoom In"),
|
|
|
|
|
QKeySequence(tr("Ctrl++")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->zoomIn();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_ZOOM_OUT, tr("Zoom Out"),
|
|
|
|
|
QKeySequence(tr("Ctrl+-")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->zoomOut();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_ORIGINAL_SIZE, tr("Original Size"),
|
|
|
|
|
QKeySequence(Core::UseMacShortcuts ? tr("Meta+0") : tr("Ctrl+0")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->resetToOriginalSize();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_FIT_TO_SCREEN, tr("Fit To Screen"),
|
|
|
|
|
QKeySequence(tr("Ctrl+=")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->fitToScreen();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_BACKGROUND, tr("Switch Background"),
|
|
|
|
|
QKeySequence(tr("Ctrl+[")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->switchViewBackground();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_OUTLINE, tr("Switch Outline"),
|
|
|
|
|
QKeySequence(tr("Ctrl+]")));
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->switchViewOutline();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_TOGGLE_ANIMATION, tr("Toggle Animation"),
|
|
|
|
|
QKeySequence());
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->togglePlay();
|
|
|
|
|
});
|
2016-03-17 16:02:20 +01:00
|
|
|
|
|
|
|
|
a = registerNewAction(Constants::ACTION_EXPORT_IMAGE, tr("Export Image"),
|
|
|
|
|
QKeySequence());
|
|
|
|
|
connect(a, &QAction::triggered, this, [this]() {
|
|
|
|
|
if (ImageViewer *iv = currentImageViewer())
|
|
|
|
|
iv->exportImage();
|
|
|
|
|
});
|
2016-03-15 14:18:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QAction *ImageViewerPlugin::registerNewAction(Core::Id id,
|
|
|
|
|
const QString &title, const QKeySequence &key)
|
|
|
|
|
{
|
|
|
|
|
Core::Context context(Constants::IMAGEVIEWER_ID);
|
|
|
|
|
QAction *action = new QAction(title, this);
|
|
|
|
|
Core::Command *command = Core::ActionManager::registerAction(action, id, context);
|
|
|
|
|
command->setDefaultKeySequence(key);
|
|
|
|
|
return action;
|
2010-06-18 11:02:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace Internal
|
|
|
|
|
} // namespace ImageViewer
|