diff options
author | hjk <[email protected]> | 2023-11-17 16:42:04 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2023-11-17 16:53:21 +0000 |
commit | 65dbc1eaf636b7b9af0fd71d8397658ad0527392 (patch) | |
tree | c4387fa29bcaafd8b989ea2c8c687c7b0490636e /src/plugins/imageviewer/imageviewer.cpp | |
parent | 3b05a6f58ec5c94ea199ffee82d8c99f9725ab96 (diff) |
ImageViewer: Use new plugin setup system
Change-Id: Ie2178c6b38a0b122ab225bae30ea25e1c57b73ad
Reviewed-by: Jarek Kobus <[email protected]>
Diffstat (limited to 'src/plugins/imageviewer/imageviewer.cpp')
-rw-r--r-- | src/plugins/imageviewer/imageviewer.cpp | 74 |
1 files changed, 65 insertions, 9 deletions
diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp index d1893b703ae..d7694e654dc 100644 --- a/src/plugins/imageviewer/imageviewer.cpp +++ b/src/plugins/imageviewer/imageviewer.cpp @@ -9,11 +9,14 @@ #include "imageviewerfile.h" #include "imageviewertr.h" -#include <coreplugin/icore.h> #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/command.h> -#include <coreplugin/coreconstants.h> #include <coreplugin/actionmanager/commandbutton.h> +#include <coreplugin/coreconstants.h> +#include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/editormanager/ieditorfactory.h> +#include <coreplugin/icore.h> +#include <coreplugin/idocument.h> #include <utils/filepath.h> #include <utils/qtcassert.h> @@ -390,15 +393,68 @@ void ImageViewer::updatePauseAction() // Factory -ImageViewerFactory::ImageViewerFactory() +class ImageViewerFactory final : public Core::IEditorFactory { - setId(Constants::IMAGEVIEWER_ID); - setDisplayName(Tr::tr("Image Viewer")); - setEditorCreator([] { return new ImageViewer; }); +public: + ImageViewerFactory() + { + setId(Constants::IMAGEVIEWER_ID); + setDisplayName(Tr::tr("Image Viewer")); + setEditorCreator([] { return new ImageViewer; }); + + const QList<QByteArray> supportedMimeTypes = QImageReader::supportedMimeTypes(); + for (const QByteArray &format : supportedMimeTypes) + addMimeType(QString::fromLatin1(format)); + } +}; + +static void createAction(QObject *guard, Id id, + const std::function<void(ImageViewer *v)> &onTriggered, + const QString &title = {}, + const QKeySequence &key = {}) +{ + ActionBuilder builder(guard, id); + builder.setText(title); + builder.setContext(Context(Constants::IMAGEVIEWER_ID)); + if (!key.isEmpty()) + builder.setDefaultKeySequence(key); + + builder.setOnTriggered(guard, [onTriggered] { + if (auto iv = qobject_cast<ImageViewer *>(EditorManager::currentEditor())) + onTriggered(iv); + }); +} + +void setupImageViewer(QObject *guard) +{ + static ImageViewerFactory theImageViewerFactory; + + createAction(guard, Core::Constants::ZOOM_IN, &ImageViewer::zoomIn); + + createAction(guard, Core::Constants::ZOOM_OUT, &ImageViewer::zoomOut); + + createAction(guard, Core::Constants::ZOOM_RESET, &ImageViewer::resetToOriginalSize); + + createAction(guard, Constants::ACTION_FIT_TO_SCREEN, &ImageViewer::fitToScreen, + Tr::tr("Fit to Screen"), Tr::tr("Ctrl+=")); + + createAction( guard, Constants::ACTION_BACKGROUND, &ImageViewer::switchViewBackground, + Tr::tr("Switch Background"), Tr::tr("Ctrl+[")); + + createAction(guard, Constants::ACTION_OUTLINE, &ImageViewer::switchViewOutline, + Tr::tr("Switch Outline"), Tr::tr("Ctrl+]")); + + createAction(guard, Constants::ACTION_TOGGLE_ANIMATION, &ImageViewer::togglePlay, + Tr::tr("Toggle Animation")); + + createAction(guard, Constants::ACTION_EXPORT_IMAGE, &ImageViewer::exportImage, + Tr::tr("Export Image")); + + createAction(guard, Constants::ACTION_EXPORT_MULTI_IMAGES, &ImageViewer::exportMultiImages, + Tr::tr("Export Multiple Images")); - const QList<QByteArray> supportedMimeTypes = QImageReader::supportedMimeTypes(); - for (const QByteArray &format : supportedMimeTypes) - addMimeType(QString::fromLatin1(format)); + createAction(guard, Constants::ACTION_COPY_DATA_URL, &ImageViewer::copyDataUrl, + Tr::tr("Copy as Data URL")); } } // ImageViewer::Internal |