forked from qt-creator/qt-creator
Imageviewer: add button to copy image as data url
Change-Id: Ia30751ebb9b567b22de9d1256bb59aa2116366ba Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
#include "exportdialog.h"
|
||||
#include "multiexportdialog.h"
|
||||
#include "imageviewerfile.h"
|
||||
#include "utils/mimeutils.h"
|
||||
|
||||
#include <coreplugin/messagemanager.h>
|
||||
|
||||
@@ -43,6 +44,8 @@
|
||||
#include <QImage>
|
||||
#include <QPainter>
|
||||
#include <QPixmap>
|
||||
#include <QClipboard>
|
||||
#include <QGuiApplication>
|
||||
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
@@ -250,6 +253,16 @@ void ImageView::exportMultiImages()
|
||||
#endif // !QT_NO_SVG
|
||||
}
|
||||
|
||||
void ImageView::copyDataUrl()
|
||||
{
|
||||
Utils::MimeType mimeType = Utils::mimeTypeForFile(m_file->filePath());
|
||||
QByteArray data = m_file->filePath().fileContents();
|
||||
const auto url = QStringLiteral("data:%1;base64,%2")
|
||||
.arg(mimeType.name())
|
||||
.arg(QString::fromLatin1(data.toBase64()));
|
||||
QGuiApplication::clipboard()->setText(url);
|
||||
}
|
||||
|
||||
void ImageView::setViewBackground(bool enable)
|
||||
{
|
||||
m_showBackground = enable;
|
||||
|
@@ -53,6 +53,7 @@ public:
|
||||
|
||||
void exportImage();
|
||||
void exportMultiImages();
|
||||
void copyDataUrl();
|
||||
void setViewBackground(bool enable);
|
||||
void setViewOutline(bool enable);
|
||||
void zoomIn();
|
||||
|
@@ -102,6 +102,7 @@ void ImageViewer::ctor()
|
||||
d->ui_toolbar.setupUi(d->toolbar);
|
||||
d->ui_toolbar.toolButtonExportImage->setIcon(Utils::Icons::EXPORTFILE_TOOLBAR.icon());
|
||||
d->ui_toolbar.toolButtonMultiExportImages->setIcon(Utils::Icons::MULTIEXPORTFILE_TOOLBAR.icon());
|
||||
d->ui_toolbar.toolButtonCopyDataUrl->setIcon(Utils::Icons::COPY_TOOLBAR.icon());
|
||||
const Utils::Icon backgroundIcon({
|
||||
{":/utils/images/desktopdevicesmall.png", Utils::Theme::IconsBaseColor}});
|
||||
d->ui_toolbar.toolButtonBackground->setIcon(backgroundIcon.icon());
|
||||
@@ -123,6 +124,7 @@ void ImageViewer::ctor()
|
||||
|
||||
d->ui_toolbar.toolButtonExportImage->setCommandId(Constants::ACTION_EXPORT_IMAGE);
|
||||
d->ui_toolbar.toolButtonMultiExportImages->setCommandId(Constants::ACTION_EXPORT_MULTI_IMAGES);
|
||||
d->ui_toolbar.toolButtonCopyDataUrl->setCommandId(Constants::ACTION_COPY_DATA_URL);
|
||||
d->ui_toolbar.toolButtonZoomIn->setCommandId(Core::Constants::ZOOM_IN);
|
||||
d->ui_toolbar.toolButtonZoomOut->setCommandId(Core::Constants::ZOOM_OUT);
|
||||
d->ui_toolbar.toolButtonOriginalSize->setCommandId(Core::Constants::ZOOM_RESET);
|
||||
@@ -136,6 +138,8 @@ void ImageViewer::ctor()
|
||||
d->imageView, &ImageView::exportImage);
|
||||
connect(d->ui_toolbar.toolButtonMultiExportImages, &QAbstractButton::clicked,
|
||||
d->imageView, &ImageView::exportMultiImages);
|
||||
connect(d->ui_toolbar.toolButtonCopyDataUrl, &QAbstractButton::clicked,
|
||||
d->imageView, &ImageView::copyDataUrl);
|
||||
connect(d->ui_toolbar.toolButtonZoomIn, &QAbstractButton::clicked,
|
||||
d->imageView, &ImageView::zoomIn);
|
||||
connect(d->ui_toolbar.toolButtonZoomOut, &QAbstractButton::clicked,
|
||||
@@ -207,6 +211,11 @@ void ImageViewer::exportMultiImages()
|
||||
d->ui_toolbar.toolButtonMultiExportImages->click();
|
||||
}
|
||||
|
||||
void ImageViewer::copyDataUrl()
|
||||
{
|
||||
d->ui_toolbar.toolButtonCopyDataUrl->click();
|
||||
}
|
||||
|
||||
void ImageViewer::imageSizeUpdated(const QSize &size)
|
||||
{
|
||||
QString imageSizeText;
|
||||
|
@@ -56,6 +56,7 @@ public:
|
||||
|
||||
void exportImage();
|
||||
void exportMultiImages();
|
||||
void copyDataUrl();
|
||||
void imageSizeUpdated(const QSize &size);
|
||||
void scaleFactorUpdate(qreal factor);
|
||||
|
||||
|
@@ -36,6 +36,7 @@ const char IMAGEVIEWER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "
|
||||
|
||||
const char ACTION_EXPORT_IMAGE[] = "ImageViewer.ExportImage";
|
||||
const char ACTION_EXPORT_MULTI_IMAGES[] = "ImageViewer.ExportMultiImages";
|
||||
const char ACTION_COPY_DATA_URL[] = "ImageViewer.CopyDataUrl";
|
||||
const char ACTION_FIT_TO_SCREEN[] = "ImageViewer.FitToScreen";
|
||||
const char ACTION_BACKGROUND[] = "ImageViewer.Background";
|
||||
const char ACTION_OUTLINE[] = "ImageViewer.Outline";
|
||||
|
@@ -125,6 +125,12 @@ public:
|
||||
&ImageViewer::exportMultiImages,
|
||||
tr("Export Multiple Images"),
|
||||
};
|
||||
|
||||
ImageViewerAction copyDataUrlAction {
|
||||
Constants::ACTION_COPY_DATA_URL,
|
||||
&ImageViewer::copyDataUrl,
|
||||
tr("Copy as Data URL"),
|
||||
};
|
||||
};
|
||||
|
||||
ImageViewerPlugin::~ImageViewerPlugin()
|
||||
|
@@ -31,11 +31,12 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Core::CommandButton" name="toolButtonCopyDataUrl">
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Core::CommandButton" name="toolButtonBackground">
|
||||
<property name="toolTipBase">
|
||||
<string>Show Background</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
|
Reference in New Issue
Block a user