use native OS dialogs by default for load/save

This commit is contained in:
Jan Käberich 2024-11-03 12:54:16 +01:00
parent fc717a8f88
commit 64a7ddc455
25 changed files with 83 additions and 41 deletions

View file

@ -5,6 +5,7 @@
#include "unit.h"
#include "Util/util.h"
#include "LibreCAL/librecaldialog.h"
#include "preferences.h"
#include "Eigen/Dense"
@ -1489,7 +1490,7 @@ bool Calibration::toFile(QString filename)
{
if(filename.isEmpty()) {
QString fn = descriptiveCalName();
filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", fn, "Calibration files (*.cal)", nullptr, QFileDialog::DontUseNativeDialog);
filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", fn, "Calibration files (*.cal)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return false;
@ -1513,7 +1514,7 @@ bool Calibration::toFile(QString filename)
bool Calibration::fromFile(QString filename)
{
if(filename.isEmpty()) {
filename = QFileDialog::getOpenFileName(nullptr, "Load calibration data", "", "Calibration files (*.cal)", nullptr, QFileDialog::DontUseNativeDialog);
filename = QFileDialog::getOpenFileName(nullptr, "Load calibration data", "", "Calibration files (*.cal)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return false;

View file

@ -2,6 +2,7 @@
#include "ui_calkitdialog.h"
#include "CustomWidgets/informationbox.h"
#include "preferences.h"
#include <QPushButton>
#include <QDebug>
@ -88,7 +89,7 @@ CalkitDialog::CalkitDialog(Calkit &c, QWidget *parent) :
accept();
});
connect(ui->buttonBox->button(QDialogButtonBox::Open), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getOpenFileName(this, "Open calibration kit coefficients", "", "Calibration kit files (*.calkit)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(this, "Open calibration kit coefficients", "", "Calibration kit files (*.calkit)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
try {
kit = Calkit::fromFile(filename);
@ -102,7 +103,7 @@ CalkitDialog::CalkitDialog(Calkit &c, QWidget *parent) :
});
connect(ui->buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getSaveFileName(this, "Save calibration kit coefficients", "", "Calibration kit files (*.calkit)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(this, "Save calibration kit coefficients", "", "Calibration kit files (*.calkit)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
parseEntries();
kit.toFile(filename);

View file

@ -1,6 +1,7 @@
#include "csvimport.h"
#include "ui_csvimport.h"
#include "Traces/trace.h"
#include "preferences.h"
#include <QFileDialog>
#include <QDebug>
@ -63,7 +64,7 @@ void CSVImport::selectTrace(unsigned int index)
void CSVImport::on_browse_clicked()
{
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "CSV files (*.csv)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "CSV files (*.csv)", nullptr, Preferences::QFileDialogOptions());
if (filename.length() > 0) {
ui->file->setText(filename);
evaluateFile();

View file

@ -1,6 +1,7 @@
#include "touchstoneimport.h"
#include "ui_touchstoneimport.h"
#include "preferences.h"
#include <QFileDialog>
#include <QDebug>
@ -111,7 +112,7 @@ void TouchstoneImport::setFile(QString filename)
void TouchstoneImport::on_browse_clicked()
{
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p)", nullptr, Preferences::QFileDialogOptions());
if (filename.length() > 0) {
ui->file->setText(filename);
}

View file

@ -44,7 +44,7 @@ AmplitudeCalDialog::AmplitudeCalDialog(LibreVNADriver *dev, QWidget *parent) :
connect(ui->saveFile, &QPushButton::clicked, [=](){
auto fileEnding = pointType() == Protocol::PacketType::SourceCalPoint ? ".srccal" : ".recvcal";
auto fileFilter = QString("Amplitude calibration files (*")+fileEnding+")";
auto filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", "", fileFilter, nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", "", fileFilter, nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;
@ -70,7 +70,7 @@ AmplitudeCalDialog::AmplitudeCalDialog(LibreVNADriver *dev, QWidget *parent) :
connect(ui->loadFile, &QPushButton::clicked, [=](){
auto fileEnding = pointType() == Protocol::PacketType::SourceCalPoint ? ".srccal" : ".recvcal";
auto fileFilter = QString("Amplitude calibration files (*")+fileEnding+")";
auto filename = QFileDialog::getOpenFileName(nullptr, "Save calibration data", "", fileFilter, nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Save calibration data", "", fileFilter, nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -3,6 +3,7 @@
#include "CustomWidgets/informationbox.h"
#include "unit.h"
#include "preferences.h"
#include <fstream>
#include <iomanip>
@ -28,7 +29,7 @@ DevicePacketLogView::DevicePacketLogView(QWidget *parent) :
updateTree();
});
connect(ui->buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [=](){
QString filename = QFileDialog::getSaveFileName(nullptr, "Load LibreVNA log data", "", "LibreVNA log files (*.vnalog)", nullptr, QFileDialog::DontUseNativeDialog);
QString filename = QFileDialog::getSaveFileName(nullptr, "Load LibreVNA log data", "", "LibreVNA log files (*.vnalog)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;
@ -42,7 +43,7 @@ DevicePacketLogView::DevicePacketLogView(QWidget *parent) :
file.close();
});
connect(ui->buttonBox->button(QDialogButtonBox::Open), &QPushButton::clicked, [=](){
QString filename = QFileDialog::getOpenFileName(nullptr, "Load LibreVNA log data", "", "LibreVNA log files (*.vnalog)", nullptr, QFileDialog::DontUseNativeDialog);
QString filename = QFileDialog::getOpenFileName(nullptr, "Load LibreVNA log data", "", "LibreVNA log files (*.vnalog)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -3,6 +3,7 @@
#include "ui_firmwareupdatedialog.h"
#include "../../VNA_embedded/Application/Communication/PacketConstants.h"
#include "CustomWidgets/informationbox.h"
#include "preferences.h"
#include <QFileDialog>
#include <QStyle>
@ -51,7 +52,7 @@ bool FirmwareUpdateDialog::FirmwareUpdate(LibreVNADriver *dev, QString file)
void FirmwareUpdateDialog::on_bFile_clicked()
{
ui->bStart->setEnabled(false);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open firmware file", "", "Firmware file (*.vnafw)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open firmware file", "", "Firmware file (*.vnafw)", nullptr, Preferences::QFileDialogOptions());
if (filename.length() > 0) {
ui->lFile->setText(filename);
reloadFile();

View file

@ -1,6 +1,7 @@
#include "devicelog.h"
#include "ui_devicelog.h"
#include "preferences.h"
#include <QScrollBar>
#include <QFileDialog>
@ -65,7 +66,7 @@ void DeviceLog::clear()
void DeviceLog::on_bToFile_clicked()
{
auto filename = QFileDialog::getSaveFileName(this, "Select file for device log", "", "", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(this, "Select file for device log", "", "", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
// create file
ofstream file;

View file

@ -23,7 +23,7 @@ void TraceWidgetSA::exportDialog()
void TraceWidgetSA::importDialog()
{
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "CSV files (*.csv)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "CSV files (*.csv)", nullptr, Preferences::QFileDialogOptions());
if (!filename.isEmpty()) {
try {
std::vector<Trace*> traces;

View file

@ -396,7 +396,7 @@ void EyeDiagramPlot::updateContextMenu()
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);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -2,7 +2,7 @@
#include "ui_tracecsvexport.h"
#include "csv.h"
#include "preferences.h"
#include "traceaxis.h"
#include <QDialogButtonBox>
@ -72,7 +72,7 @@ void TraceCSVExport::on_buttonBox_accepted()
return;
}
auto filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", "", "CSV files (*.csv)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save calibration data", "", "CSV files (*.csv)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -2,6 +2,7 @@
#include "Marker/marker.h"
#include "Util/util.h"
#include "preferences.h"
#include <QFileDialog>
@ -251,7 +252,7 @@ void TracePolar::updateContextMenu()
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);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -2,6 +2,7 @@
#include "ui_tracetouchstoneexport.h"
#include "touchstone.h"
#include "preferences.h"
#include <QDebug>
#include <QFileDialog>
@ -41,7 +42,7 @@ bool TraceTouchstoneExport::setPortNum(int ports)
void TraceTouchstoneExport::on_buttonBox_accepted()
{
auto filename = QFileDialog::getSaveFileName(this, "Select file for exporting traces", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(this, "Select file for exporting traces", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
auto ports = ui->sbPorts->value();
auto t = Touchstone(ports);

View file

@ -212,7 +212,7 @@ void TraceWaterfall::updateContextMenu()
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);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -349,7 +349,7 @@ void TraceXYPlot::updateContextMenu()
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);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -2,6 +2,7 @@
#include "ui_xyplotaxisdialog.h"
#include "traceaxis.h"
#include "preferences.h"
#include <QFileDialog>
#include <QStandardItemModel>
@ -239,7 +240,7 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
removeLine(index);
});
connect(ui->exportLines, &QPushButton::clicked, this, [=](){
QString filename = QFileDialog::getSaveFileName(nullptr, "Save limit lines", "", "Limit files (*.limits)", nullptr, QFileDialog::DontUseNativeDialog);
QString filename = QFileDialog::getSaveFileName(nullptr, "Save limit lines", "", "Limit files (*.limits)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;
@ -262,7 +263,7 @@ XYplotAxisDialog::XYplotAxisDialog(TraceXYPlot *plot) :
});
connect(ui->importLines, &QPushButton::clicked, [=](){
QString filename = QFileDialog::getOpenFileName(nullptr, "Load limit lines", "", "Limit files (*.limits)", nullptr, QFileDialog::DontUseNativeDialog);
QString filename = QFileDialog::getOpenFileName(nullptr, "Load limit lines", "", "Limit files (*.limits)", nullptr, Preferences::QFileDialogOptions());
ifstream file;
file.open(filename.toStdString());
if(!file.is_open()) {

View file

@ -764,7 +764,7 @@ void MatchingComponent::mouseDoubleClickEvent(QMouseEvent *e)
Q_UNUSED(e);
if(type == Type::DefinedThrough || type == Type::DefinedShunt) {
// select new touchstone file
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s2p)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s2p)", nullptr, Preferences::QFileDialogOptions());
if (!filename.isEmpty()) {
try {
*touchstone = Touchstone::fromFile(filename.toStdString());

View file

@ -56,7 +56,7 @@ void TraceWidgetVNA::exportTouchstone()
void TraceWidgetVNA::importDialog()
{
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p);;CSV files (*.csv)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p);;CSV files (*.csv)", nullptr, Preferences::QFileDialogOptions());
if (!filename.isEmpty()) {
try {
std::vector<Trace*> traces;

View file

@ -228,7 +228,7 @@ VNA::VNA(AppWindow *window, QString name)
if(window->getDevice()) {
auto key = "DefaultCalibration"+window->getDevice()->getSerial();
QSettings settings;
auto filename = QFileDialog::getOpenFileName(nullptr, "Load calibration data", settings.value(key).toString(), "Calibration files (*.cal)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Load calibration data", settings.value(key).toString(), "Calibration files (*.cal)", nullptr, Preferences::QFileDialogOptions());
if(!filename.isEmpty()) {
settings.setValue(key, filename);
removeDefaultCal->setEnabled(true);

View file

@ -229,7 +229,7 @@ void AppWindow::SetupMenu()
connect(ui->actionDisconnect, &QAction::triggered, this, &AppWindow::DisconnectDevice);
connect(ui->actionQuit, &QAction::triggered, this, &AppWindow::close);
connect(ui->actionSave_setup, &QAction::triggered, [=](){
auto filename = QFileDialog::getSaveFileName(nullptr, "Save setup data", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save setup data", "", "Setup files (*.setup)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;
@ -237,7 +237,7 @@ void AppWindow::SetupMenu()
SaveSetup(filename);
});
connect(ui->actionLoad_setup, &QAction::triggered, [=](){
auto filename = QFileDialog::getOpenFileName(nullptr, "Load setup data", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, "Load setup data", "", "Setup files (*.setup)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -141,7 +141,7 @@ Mode::Type Mode::TypeFromName(QString s)
void Mode::saveSreenshot()
{
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(nullptr, "Save plot image", "", "PNG image files (*.png)", nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return;

View file

@ -68,7 +68,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
ui->StartupStack->setCurrentWidget(ui->StartupPageSetupFile);
});
connect(ui->StartupBrowse, &QPushButton::clicked, [=](){
ui->StartupSetupFile->setText(QFileDialog::getOpenFileName(nullptr, "Select startup setup file", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog));
ui->StartupSetupFile->setText(QFileDialog::getOpenFileName(nullptr, "Select startup setup file", "", "Setup files (*.setup)", nullptr, Preferences::QFileDialogOptions()));
});
ui->StartupSweepStart->setUnit("Hz");
ui->StartupSweepStart->setPrefixes(" kMG");
@ -186,7 +186,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
updateFromGUI();
});
connect(ui->buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getSaveFileName(this, "Save preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(this, "Save preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
if(!filename.toLower().endsWith(".vnapref")) {
filename.append(".vnapref");
@ -199,7 +199,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
}
});
connect(ui->buttonBox->button(QDialogButtonBox::Open), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getOpenFileName(this, "Load preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(this, "Load preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
ifstream file;
file.open(filename.toStdString());
@ -334,6 +334,7 @@ void PreferencesDialog::setInitialGUIState()
ui->DebugMaxUSBlogSize->setValue(p->Debug.USBlogSizeLimit);
ui->DebugSaveTraceData->setChecked(p->Debug.saveTraceData);
ui->DebugUseNativeDialogs->setChecked(p->Debug.useNativeDialogs);
QTreeWidgetItem *item = ui->treeWidget->topLevelItem(0);
if (item != nullptr) {
@ -446,6 +447,7 @@ void PreferencesDialog::updateFromGUI()
p->Debug.USBlogSizeLimit = ui->DebugMaxUSBlogSize->value();
p->Debug.saveTraceData = ui->DebugSaveTraceData->isChecked();
p->Debug.useNativeDialogs = ui->DebugUseNativeDialogs->isChecked();
p->nonTrivialWriting();
}
@ -522,6 +524,14 @@ void Preferences::setDefault(std::vector<Savable::SettingDescription> descr)
}
}
QFileDialog::Options Preferences::QFileDialogOptions(QFileDialog::Options option)
{
if(!instance.Debug.useNativeDialogs) {
option = (QFileDialog::Option) ((int) option | QFileDialog::DontUseNativeDialog);
}
return option;
}
void Preferences::fromJSON(nlohmann::json j)
{
parseJSON(j, descr);

View file

@ -7,6 +7,7 @@
#include "Device/LibreVNA/Compound/compounddevice.h"
#include <QDialog>
#include <QFileDialog>
#include <QVariant>
#include <exception>
@ -61,6 +62,8 @@ public:
void manualTCPport() { TCPoverride = true; }
static QFileDialog::Options QFileDialogOptions(QFileDialog::Options option = (QFileDialog::Options) 0x00000000);
struct {
bool ConnectToFirstDevice;
bool RememberSweepSettings;
@ -190,6 +193,7 @@ public:
struct {
double USBlogSizeLimit;
bool saveTraceData;
bool useNativeDialogs;
} Debug;
bool TCPoverride; // in case of manual port specification via command line
@ -310,6 +314,7 @@ private:
{&StreamingServers.SANormalizedData.port, "StreamingServers.SANormalizedData.port", 19101},
{&Debug.USBlogSizeLimit, "Debug.USBlogSizeLimit", 10000000.0},
{&Debug.saveTraceData, "Debug.saveTraceData", false},
{&Debug.useNativeDialogs, "Debug.useNativeDialogs", true},
}};
};

View file

@ -98,7 +98,7 @@
</size>
</property>
<property name="currentIndex">
<number>2</number>
<number>6</number>
</property>
<widget class="QWidget" name="Startup">
<layout class="QHBoxLayout" name="horizontalLayout_4">
@ -112,8 +112,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>424</width>
<height>852</height>
<width>679</width>
<height>836</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
@ -703,8 +703,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>450</width>
<height>416</height>
<width>696</width>
<height>564</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_21">
@ -943,7 +943,7 @@
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<y>-400</y>
<width>679</width>
<height>964</height>
</rect>
@ -2074,8 +2074,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>194</width>
<height>146</height>
<width>696</width>
<height>564</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_19">
@ -2116,6 +2116,22 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_25">
<property name="title">
<string>Load/save dialogs</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_24">
<item>
<widget class="QCheckBox" name="DebugUseNativeDialogs">
<property name="text">
<string>Use native dialogs from OS</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">

View file

@ -1,5 +1,6 @@
#include "savable.h"
#include "CustomWidgets/informationbox.h"
#include "preferences.h"
#include <QFileDialog>
#include <fstream>
@ -9,7 +10,7 @@ using namespace std;
bool Savable::openFromFileDialog(QString title, QString filetype)
{
auto filename = QFileDialog::getOpenFileName(nullptr, title, "", filetype, nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(nullptr, title, "", filetype, nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return false;
@ -36,7 +37,7 @@ bool Savable::openFromFileDialog(QString title, QString filetype)
bool Savable::saveToFileDialog(QString title, QString filetype, QString ending)
{
auto filename = QFileDialog::getSaveFileName(nullptr, title, "", filetype, nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(nullptr, title, "", filetype, nullptr, Preferences::QFileDialogOptions());
if(filename.isEmpty()) {
// aborted selection
return false;