Simple screenshot functionality

This commit is contained in:
Jan Käberich 2021-04-12 20:15:38 +02:00
parent 62939ff882
commit e66fc0131a
6 changed files with 61 additions and 0 deletions

View File

@ -7,6 +7,7 @@
#include "preferences.h"
#include "ui_smithchartdialog.h"
#include "unit.h"
#include "QFileDialog"
using namespace std;
@ -291,6 +292,21 @@ void TraceSmithChart::updateContextMenu()
contextmenu->addAction(action);
}
contextmenu->addSeparator();
auto image = new QAction("Save image...", contextmenu);
contextmenu->addAction(image);
connect(image, &QAction::triggered, [=]() {
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, QFileDialog::DontUseNativeDialog);
if(filename.isEmpty()) {
// aborted selection
return;
}
if(filename.endsWith(".png")) {
filename.chop(4);
}
filename += ".png";
grab().save(filename);
});
contextmenu->addSeparator();
auto close = new QAction("Close", contextmenu);
contextmenu->addAction(close);
connect(close, &QAction::triggered, [=]() {

View File

@ -11,6 +11,7 @@
#include "unit.h"
#include <QDebug>
#include "CustomWidgets/informationbox.h"
#include <QFileDialog>
using namespace std;
@ -255,6 +256,21 @@ void TraceXYPlot::updateContextMenu()
}
}
contextmenu->addSeparator();
auto image = new QAction("Save image...", contextmenu);
contextmenu->addAction(image);
connect(image, &QAction::triggered, [=]() {
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, QFileDialog::DontUseNativeDialog);
if(filename.isEmpty()) {
// aborted selection
return;
}
if(filename.endsWith(".png")) {
filename.chop(4);
}
filename += ".png";
grab().save(filename);
});
contextmenu->addSeparator();
auto close = new QAction("Close", contextmenu);
contextmenu->addAction(close);
connect(close, &QAction::triggered, [=]() {

View File

@ -177,6 +177,9 @@ AppWindow::AppWindow(QWidget *parent)
file.close();
LoadSetup(j);
});
connect(ui->actionSave_image, &QAction::triggered, [=](){
Mode::getActiveMode()->saveSreenshot();
});
connect(ui->actionManual_Control, &QAction::triggered, this, &AppWindow::StartManualControl);
connect(ui->actionFirmware_Update, &QAction::triggered, this, &AppWindow::StartFirmwareUpdateDialog);

View File

@ -29,6 +29,7 @@
</property>
<addaction name="actionSave_setup"/>
<addaction name="actionLoad_setup"/>
<addaction name="actionSave_image"/>
<addaction name="actionQuit"/>
</widget>
<widget class="QMenu" name="menuDevice">
@ -190,6 +191,14 @@
<string>Load setup</string>
</property>
</action>
<action name="actionSave_image">
<property name="icon">
<iconset theme="camera-photo"/>
</property>
<property name="text">
<string>Save image...</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc"/>

View File

@ -4,6 +4,7 @@
#include <QSettings>
#include "ui_main.h"
#include <QDebug>
#include <QFileDialog>
Mode* Mode::activeMode = nullptr;
QWidget* Mode::cornerWidget = nullptr;
@ -127,6 +128,20 @@ Mode *Mode::getActiveMode()
return activeMode;
}
void Mode::saveSreenshot()
{
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, QFileDialog::DontUseNativeDialog);
if(filename.isEmpty()) {
// aborted selection
return;
}
if(filename.endsWith(".png")) {
filename.chop(4);
}
filename += ".png";
central->grab().save(filename);
}
void Mode::finalize(QWidget *centralWidget)
{
central = centralWidget;

View File

@ -24,6 +24,8 @@ public:
virtual void initializeDevice() = 0;
virtual void deviceDisconnected(){};
virtual void saveSreenshot();
protected:
// call once the derived class is fully initialized
void finalize(QWidget *centralWidget);