aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/imageviewer/imageviewer.cpp
diff options
context:
space:
mode:
authorhjk <[email protected]>2023-11-17 16:42:04 +0100
committerhjk <[email protected]>2023-11-17 16:53:21 +0000
commit65dbc1eaf636b7b9af0fd71d8397658ad0527392 (patch)
treec4387fa29bcaafd8b989ea2c8c687c7b0490636e /src/plugins/imageviewer/imageviewer.cpp
parent3b05a6f58ec5c94ea199ffee82d8c99f9725ab96 (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.cpp74
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