Correct, cleanup, translate and unify file filters

Correct spelling and typos in file filters.
Unify and translate file filter names.

Don't pass a file filter to a directory open dialog - not needed.

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
This commit is contained in:
Stefan Fuchs 2017-10-27 14:52:27 +02:00 committed by Lubomir I. Ivanov
parent 92ba4b9cc7
commit 8b56dc30d7
9 changed files with 105 additions and 77 deletions

View file

@ -326,7 +326,7 @@ void OstcFirmwareCheck::upgradeFirmware()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append(saveFileName); filename = fi.absolutePath().append(QDir::separator()).append(saveFileName);
storeFirmware = QFileDialog::getSaveFileName(parent, tr("Save the downloaded firmware as"), storeFirmware = QFileDialog::getSaveFileName(parent, tr("Save the downloaded firmware as"),
filename, tr("Firmware files (*.hex *.bin)")); filename, tr("Firmware files") + " (*.hex *.bin)");
if (storeFirmware.isEmpty()) if (storeFirmware.isEmpty())
return; return;
@ -1362,7 +1362,7 @@ void ConfigureDiveComputerDialog::on_backupButton_clicked()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append("Backup.xml"); filename = fi.absolutePath().append(QDir::separator()).append("Backup.xml");
QString backupPath = QFileDialog::getSaveFileName(this, tr("Backup dive computer settings"), QString backupPath = QFileDialog::getSaveFileName(this, tr("Backup dive computer settings"),
filename, tr("Backup files (*.xml)")); filename, tr("Backup files") + " (*.xml)");
if (!backupPath.isEmpty()) { if (!backupPath.isEmpty()) {
populateDeviceDetails(); populateDeviceDetails();
if (!config->saveXMLBackup(backupPath, deviceDetails, &device_data)) { if (!config->saveXMLBackup(backupPath, deviceDetails, &device_data)) {
@ -1383,7 +1383,7 @@ void ConfigureDiveComputerDialog::on_restoreBackupButton_clicked()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append("Backup.xml"); filename = fi.absolutePath().append(QDir::separator()).append("Backup.xml");
QString restorePath = QFileDialog::getOpenFileName(this, tr("Restore dive computer settings"), QString restorePath = QFileDialog::getOpenFileName(this, tr("Restore dive computer settings"),
filename, tr("Backup files (*.xml)")); filename, tr("Backup files") + " (*.xml)");
if (!restorePath.isEmpty()) { if (!restorePath.isEmpty()) {
// Fw update is no longer a option, needs to be done on a untouched device // Fw update is no longer a option, needs to be done on a untouched device
ui.updateFirmwareButton->setEnabled(false); ui.updateFirmwareButton->setEnabled(false);
@ -1405,7 +1405,7 @@ void ConfigureDiveComputerDialog::on_updateFirmwareButton_clicked()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath(); filename = fi.absolutePath();
QString firmwarePath = QFileDialog::getOpenFileName(this, tr("Select firmware file"), QString firmwarePath = QFileDialog::getOpenFileName(this, tr("Select firmware file"),
filename, tr("All files (*.*)")); filename, tr("All files") + " (*.*)");
if (!firmwarePath.isEmpty()) { if (!firmwarePath.isEmpty()) {
ui.progressBar->setValue(0); ui.progressBar->setValue(0);
ui.progressBar->setFormat("%p%"); ui.progressBar->setFormat("%p%");
@ -1466,7 +1466,7 @@ void ConfigureDiveComputerDialog::pickLogFile()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log"); filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log");
logFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer download logfile"), logFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer download logfile"),
filename, tr("Log files (*.log)")); filename, tr("Log files") + " (*.log)");
if (!logFile.isEmpty()) { if (!logFile.isEmpty()) {
free(logfile_name); free(logfile_name);
logfile_name = strdup(logFile.toUtf8().data()); logfile_name = strdup(logFile.toUtf8().data());

View file

@ -138,27 +138,27 @@ void DiveLogExportDialog::on_buttonBox_accepted()
if (ui->exportUDDF->isChecked()) { if (ui->exportUDDF->isChecked()) {
stylesheet = "uddf-export.xslt"; stylesheet = "uddf-export.xslt";
filename = QFileDialog::getSaveFileName(this, tr("Export UDDF file as"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export UDDF file as"), lastDir,
tr("UDDF files (*.uddf *.UDDF)")); tr("UDDF files") + " (*.uddf)");
} else if (ui->exportCSV->isChecked()) { } else if (ui->exportCSV->isChecked()) {
stylesheet = "xml2csv.xslt"; stylesheet = "xml2csv.xslt";
filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir,
tr("CSV files (*.csv *.CSV)")); tr("CSV files") + " (*.csv)");
} else if (ui->exportCSVDetails->isChecked()) { } else if (ui->exportCSVDetails->isChecked()) {
stylesheet = "xml2manualcsv.xslt"; stylesheet = "xml2manualcsv.xslt";
filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir,
tr("CSV files (*.csv *.CSV)")); tr("CSV files") + " (*.csv)");
} else if (ui->exportDivelogs->isChecked()) { } else if (ui->exportDivelogs->isChecked()) {
DivelogsDeWebServices::instance()->prepareDivesForUpload(ui->exportSelected->isChecked()); DivelogsDeWebServices::instance()->prepareDivesForUpload(ui->exportSelected->isChecked());
} else if (ui->exportDiveshare->isChecked()) { } else if (ui->exportDiveshare->isChecked()) {
DiveShareExportDialog::instance()->prepareDivesForUpload(ui->exportSelected->isChecked()); DiveShareExportDialog::instance()->prepareDivesForUpload(ui->exportSelected->isChecked());
} else if (ui->exportWorldMap->isChecked()) { } else if (ui->exportWorldMap->isChecked()) {
filename = QFileDialog::getSaveFileName(this, tr("Export world map"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export world map"), lastDir,
tr("HTML files (*.html)")); tr("HTML files") + " (*.html)");
if (!filename.isNull() && !filename.isEmpty()) if (!filename.isNull() && !filename.isEmpty())
export_worldmap_HTML(filename.toUtf8().data(), ui->exportSelected->isChecked()); export_worldmap_HTML(filename.toUtf8().data(), ui->exportSelected->isChecked());
} else if (ui->exportSubsurfaceXML->isChecked()) { } else if (ui->exportSubsurfaceXML->isChecked()) {
filename = QFileDialog::getSaveFileName(this, tr("Export Subsurface XML"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export Subsurface XML"), lastDir,
tr("XML files (*.xml *.ssrf)")); tr("Subsurface files") + " (*.ssrf *.xml)");
if (!filename.isNull() && !filename.isEmpty()) { if (!filename.isNull() && !filename.isEmpty()) {
if (!filename.contains('.')) if (!filename.contains('.'))
filename.append(".ssrf"); filename.append(".ssrf");
@ -170,14 +170,14 @@ void DiveLogExportDialog::on_buttonBox_accepted()
if (!filename.isNull() && !filename.isEmpty()) if (!filename.isNull() && !filename.isEmpty())
export_depths(filename.toUtf8().data(), ui->exportSelected->isChecked()); export_depths(filename.toUtf8().data(), ui->exportSelected->isChecked());
} else if (ui->exportTeX->isChecked()) { } else if (ui->exportTeX->isChecked()) {
filename = QFileDialog::getSaveFileName(this, tr("Export to TeX file"), lastDir, tr("TeX files (*.tex)")); filename = QFileDialog::getSaveFileName(this, tr("Export to TeX file"), lastDir, tr("TeX files") + " (*.tex)");
if (!filename.isNull() && !filename.isEmpty()) if (!filename.isNull() && !filename.isEmpty())
export_TeX(filename.toUtf8().data(), ui->exportSelected->isChecked()); export_TeX(filename.toUtf8().data(), ui->exportSelected->isChecked());
} }
break; break;
case 1: case 1:
filename = QFileDialog::getSaveFileName(this, tr("Export HTML files as"), lastDir, filename = QFileDialog::getSaveFileName(this, tr("Export HTML files as"), lastDir,
tr("HTML files (*.html)")); tr("HTML files") + " (*.html)");
if (!filename.isNull() && !filename.isEmpty()) if (!filename.isNull() && !filename.isEmpty())
exportHtmlInit(filename); exportHtmlInit(filename);
break; break;

View file

@ -367,7 +367,7 @@ void DownloadFromDCWidget::pickLogFile()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log"); filename = fi.absolutePath().append(QDir::separator()).append("subsurface.log");
QString logFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer download logfile"), QString logFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer download logfile"),
filename, tr("Log files (*.log)")); filename, tr("Log files") + " (*.log)");
if (!logFile.isEmpty()) { if (!logFile.isEmpty()) {
free(logfile_name); free(logfile_name);
logfile_name = copy_string(logFile.toUtf8().data()); logfile_name = copy_string(logFile.toUtf8().data());
@ -393,7 +393,7 @@ void DownloadFromDCWidget::pickDumpFile()
QFileInfo fi(filename); QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin"); filename = fi.absolutePath().append(QDir::separator()).append("subsurface.bin");
QString dumpFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer binary dump file"), QString dumpFile = QFileDialog::getSaveFileName(this, tr("Choose file for dive computer binary dump file"),
filename, tr("Dump files (*.bin)")); filename, tr("Dump files") + " (*.bin)");
if (!dumpFile.isEmpty()) { if (!dumpFile.isEmpty()) {
free(dumpfile_name); free(dumpfile_name);
dumpfile_name = copy_string(dumpFile.toUtf8().data()); dumpfile_name = copy_string(dumpFile.toUtf8().data());

View file

@ -537,7 +537,7 @@ void MainWindow::on_actionOpen_triggered()
// yes, this look wrong to use getSaveFileName() for the open dialog, but we need to be able // yes, this look wrong to use getSaveFileName() for the open dialog, but we need to be able
// to enter file names that don't exist in order to use our git syntax /path/to/dir[branch] // to enter file names that don't exist in order to use our git syntax /path/to/dir[branch]
// with is a potentially valid input, but of course won't exist. So getOpenFileName() wouldn't work // with is a potentially valid input, but of course won't exist. So getOpenFileName() wouldn't work
QFileDialog dialog(this, tr("Open file"), lastUsedDir(), filter()); QFileDialog dialog(this, tr("Open file"), lastUsedDir(), filter_open());
dialog.setFileMode(QFileDialog::AnyFile); dialog.setFileMode(QFileDialog::AnyFile);
dialog.setViewMode(QFileDialog::Detail); dialog.setViewMode(QFileDialog::Detail);
dialog.setLabelText(QFileDialog::Accept, tr("Open")); dialog.setLabelText(QFileDialog::Accept, tr("Open"));
@ -649,7 +649,7 @@ void learnImageDirs(QStringList dirnames)
void MainWindow::on_actionHash_images_triggered() void MainWindow::on_actionHash_images_triggered()
{ {
QFuture<void> future; QFuture<void> future;
QFileDialog dialog(this, tr("Traverse image directories"), lastUsedDir(), filter()); QFileDialog dialog(this, tr("Traverse image directories"), lastUsedDir());
dialog.setFileMode(QFileDialog::Directory); dialog.setFileMode(QFileDialog::Directory);
dialog.setViewMode(QFileDialog::Detail); dialog.setViewMode(QFileDialog::Detail);
dialog.setLabelText(QFileDialog::Accept, tr("Scan")); dialog.setLabelText(QFileDialog::Accept, tr("Scan"));
@ -1259,43 +1259,89 @@ void MainWindow::on_actionUserSurvey_triggered()
survey->show(); survey->show();
} }
QString MainWindow::filter() QString MainWindow::filter_open()
{ {
QString f; QString f;
f += "Dive log files ( *.ssrf "; f += tr("Dive log files");
f += "*.can *.CAN "; f += " (*.ssrf";
f += "*.db *.DB " ; f += " *.xml";
f += "*.sql *.SQL " ; f += " *.can";
f += "*.dld *.DLD "; f += " *.db" ;
f += "*.jlb *.JLB "; f += " *.sql" ;
f += "*.lvd *.LVD "; f += " *.dld";
f += "*.sde *.SDE "; f += " *.jlb";
f += "*.udcf *.UDCF "; f += " *.lvd";
f += "*.uddf *.UDDF "; f += " *.sde";
f += "*.xml *.XML "; f += " *.udcf";
f += "*.dlf *.DLF "; f += " *.uddf";
f += "*.log *.LOG "; f += " *.dlf";
f += "*.txt *.TXT) "; f += " *.log";
f += "*.apd *.APD) "; f += " *.txt";
f += "*.dive *.DIVE "; f += " *.apd";
f += "*.zxu *.zxl *.ZXU *.ZXL "; f += " *.dive";
f += " *.zxu *.zxl";
f += ");;"; f += ");;";
f += "Subsurface (*.ssrf);;"; f += tr("Subsurface files") + " (*.ssrf *.xml);;";
f += "Cochran (*.can *.CAN);;"; f += tr("Cochran") + " (*.can);;";
f += "DiveLogs.de (*.dld *.DLD);;"; f += tr("DiveLogs.de") + " (*.dld);;";
f += "JDiveLog (*.jlb *.JLB);;"; f += tr("JDiveLog") + " (*.jlb);;";
f += "Liquivision (*.lvd *.LVD);;"; f += tr("Liquivision") + " (*.lvd);;";
f += "Suunto (*.sde *.SDE *.db *.DB);;"; f += tr("Suunto") + " (*.sde *.db);;";
f += "UDCF (*.udcf *.UDCF);;"; f += tr("UDCF") + " (*.udcf);;";
f += "UDDF (*.uddf *.UDDF);;"; f += tr("UDDF") + " (*.uddf);;";
f += "XML (*.xml *.XML);;"; f += tr("XML") + " (*.xml);;";
f += "Divesoft (*.dlf *.DLF);;"; f += tr("Divesoft") + " (*.dlf);;";
f += "Datatrak/WLog Files (*.log *.LOG);;"; f += tr("Datatrak/WLog") + " (*.log);;";
f += "MkVI files (*.txt *.TXT);;"; f += tr("MkVI files") + " (*.txt);;";
f += "APD log viewer (*.apd *.APD);;"; f += tr("APD log viewer") + " (*.apd);;";
f += "OSTCtools Files (*.dive *.DIVE);;"; f += tr("OSTCtools") + " (*.dive);;";
f += "DAN DL7 (*.zxu *.zxl *.ZXU *.ZXL)"; f += tr("DAN DL7") + " (*.zxu *.zxl)";
return f;
}
QString MainWindow::filter_import()
{
QString f;
f += tr("Dive log files");
f += " (*.ssrf";
f += " *.xml";
f += " *.can";
f += " *.csv";
f += " *.db" ;
f += " *.sql" ;
f += " *.dld";
f += " *.jlb";
f += " *.lvd";
f += " *.sde";
f += " *.udcf";
f += " *.uddf";
f += " *.dlf";
f += " *.log";
f += " *.txt";
f += " *.apd";
f += " *.dive";
f += " *.zxu *.zxl";
f += ");;";
f += tr("Subsurface files") + " (*.ssrf *.xml);;";
f += tr("Cochran") + " (*.can);;";
f += tr("CSV") + " (*.csv *.CSV);;";
f += tr("DiveLogs.de") + " (*.dld);;";
f += tr("JDiveLog") + " (*.jlb);;";
f += tr("Liquivision") + " (*.lvd);;";
f += tr("Suunto") + " (*.sde *.db);;";
f += tr("UDCF") + " (*.udcf);;";
f += tr("UDDF") + " (*.uddf);;";
f += tr("XML") + " (*.xml);;";
f += tr("Divesoft") + " (*.dlf);;";
f += tr("Datatrak/WLog") + " (*.log);;";
f += tr("MkVI files") + " (*.txt);;";
f += tr("APD log viewer") + " (*.apd);;";
f += tr("OSTCtools") + " (*.dive);;";
f += tr("DAN DL7") + " (*.zxu *.zxl);;";
f += tr("All files") + " (*.*)";
return f; return f;
} }
@ -1635,7 +1681,7 @@ int MainWindow::file_save_as(void)
} }
// create a file dialog that allows us to save to a new file // create a file dialog that allows us to save to a new file
QFileDialog selection_dialog(this, tr("Save file as"), default_filename, QFileDialog selection_dialog(this, tr("Save file as"), default_filename,
tr("Subsurface XML files (*.ssrf *.xml *.XML)")); tr("Subsurface files") + " (*.ssrf *.xml)");
selection_dialog.setAcceptMode(QFileDialog::AcceptSave); selection_dialog.setAcceptMode(QFileDialog::AcceptSave);
selection_dialog.setFileMode(QFileDialog::AnyFile); selection_dialog.setFileMode(QFileDialog::AnyFile);
selection_dialog.setDefaultSuffix(""); selection_dialog.setDefaultSuffix("");
@ -1843,24 +1889,7 @@ void MainWindow::loadFiles(const QStringList fileNames)
void MainWindow::on_actionImportDiveLog_triggered() void MainWindow::on_actionImportDiveLog_triggered()
{ {
QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open dive log file"), lastUsedDir(), QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open dive log file"), lastUsedDir(), filter_import());
tr("Dive log files (*.ssrf *.can *.csv *.db *.sql *.dld *.jlb *.lvd *.sde *.udcf *.uddf *.xml *.txt *.dlf *.apd *.zxu *.zxl"
"*.SSRF *.CAN *.CSV *.DB *.SQL *.DLD *.JLB *.LVD *.SDE *.UDCF *.UDDF *.xml *.TXT *.DLF *.APD *.ZXU *.ZXL);;"
"Cochran files (*.can *.CAN);;"
"CSV files (*.csv *.CSV);;"
"DiveLog.de files (*.dld *.DLD);;"
"JDiveLog files (*.jlb *.JLB);;"
"Liquivision files (*.lvd *.LVD);;"
"MkVI files (*.txt *.TXT);;"
"Suunto files (*.sde *.db *.SDE *.DB);;"
"Divesoft files (*.dlf *.DLF);;"
"UDDF/UDCF files (*.uddf *.udcf *.UDDF *.UDCF);;"
"XML files (*.xml *.XML);;"
"APD log viewer (*.apd *.APD);;"
"Datatrak/WLog Files (*.log *.LOG);;"
"OSTCtools Files (*.dive *.DIVE);;"
"DAN DL7 (*.zxu *.zxl *.ZXU *.ZXL);;"
"All files (*)"));
if (fileNames.isEmpty()) if (fileNames.isEmpty())
return; return;

View file

@ -190,7 +190,8 @@ private:
QAction *actionPreviousDive; QAction *actionPreviousDive;
UserManual *helpView; UserManual *helpView;
CurrentState state; CurrentState state;
QString filter(); QString filter_open();
QString filter_import();
static MainWindow *m_Instance; static MainWindow *m_Instance;
QString displayedFilename(QString fullFilename); QString displayedFilename(QString fullFilename);
bool askSaveChanges(); bool askSaveChanges();

View file

@ -20,7 +20,7 @@ PreferencesDefaults::~PreferencesDefaults()
void PreferencesDefaults::on_chooseFile_clicked() void PreferencesDefaults::on_chooseFile_clicked()
{ {
QFileInfo fi(system_default_filename()); QFileInfo fi(system_default_filename());
QString choosenFileName = QFileDialog::getOpenFileName(this, tr("Open default log file"), fi.absolutePath(), tr("Subsurface XML files (*.ssrf *.xml *.XML)")); QString choosenFileName = QFileDialog::getOpenFileName(this, tr("Open default log file"), fi.absolutePath(), tr("Subsurface files") + " (*.ssrf *.xml)");
if (!choosenFileName.isEmpty()) if (!choosenFileName.isEmpty())
ui->defaultfilename->setText(choosenFileName); ui->defaultfilename->setText(choosenFileName);

View file

@ -129,7 +129,7 @@ void PrintOptions::on_editButton_clicked()
void PrintOptions::on_importButton_clicked() void PrintOptions::on_importButton_clicked()
{ {
QString filename = QFileDialog::getOpenFileName(this, tr("Import template file"), "", QString filename = QFileDialog::getOpenFileName(this, tr("Import template file"), "",
tr("HTML files (*.html)")); tr("HTML files") + " (*.html)");
if (filename.isEmpty()) if (filename.isEmpty())
return; return;
QFileInfo fileInfo(filename); QFileInfo fileInfo(filename);
@ -142,7 +142,7 @@ void PrintOptions::on_importButton_clicked()
void PrintOptions::on_exportButton_clicked() void PrintOptions::on_exportButton_clicked()
{ {
QString filename = QFileDialog::getSaveFileName(this, tr("Export template files as"), "", QString filename = QFileDialog::getSaveFileName(this, tr("Export template files as"), "",
tr("HTML files (*.html)")); tr("HTML files") + " (*.html)");
if (filename.isEmpty()) if (filename.isEmpty())
return; return;
QFile::copy(getPrintingTemplatePathUser() + QDir::separator() + getSelectedTemplate(), filename); QFile::copy(getPrintingTemplatePathUser() + QDir::separator() + getSelectedTemplate(), filename);

View file

@ -310,7 +310,7 @@ void ShiftImageTimesDialog::syncCameraClicked()
QStringList fileNames = QFileDialog::getOpenFileNames(this, QStringList fileNames = QFileDialog::getOpenFileNames(this,
tr("Open image file"), tr("Open image file"),
DiveListView::lastUsedImageDir(), DiveListView::lastUsedImageDir(),
tr("Image files (*.jpg *.jpeg)")); tr("Image files") + " (*.jpg *.jpeg)");
if (fileNames.isEmpty()) if (fileNames.isEmpty())
return; return;

View file

@ -49,8 +49,7 @@ void Smrtk2ssrfcWindow::updateLastUsedDir(const QString &dir)
void Smrtk2ssrfcWindow::on_inputFilesButton_clicked() void Smrtk2ssrfcWindow::on_inputFilesButton_clicked()
{ {
inputFiles = QFileDialog::getOpenFileNames(this, tr("Open SmartTrak files"), lastUsedDir(), inputFiles = QFileDialog::getOpenFileNames(this, tr("Open SmartTrak files"), lastUsedDir(),
tr("SmartTrak files (*.slg *.SLG);;" tr("SmartTrak files") + " (*.slg);;" + tr("All files") + " (*.*)");
"All files (*)"));
if (inputFiles.isEmpty()) if (inputFiles.isEmpty())
return; return;
updateLastUsedDir(QFileInfo(inputFiles[0]).dir().path()); updateLastUsedDir(QFileInfo(inputFiles[0]).dir().path());
@ -61,8 +60,7 @@ void Smrtk2ssrfcWindow::on_inputFilesButton_clicked()
void Smrtk2ssrfcWindow::on_outputFileButton_clicked() void Smrtk2ssrfcWindow::on_outputFileButton_clicked()
{ {
outputFile = QFileDialog::getSaveFileName(this, tr("Open Subsurface files"), lastUsedDir(), outputFile = QFileDialog::getSaveFileName(this, tr("Open Subsurface files"), lastUsedDir(),
tr("Subsurface files (*.ssrf *SSRF *.xml *.XML);;" tr("Subsurface files") + " (*.ssrf *.xml);;" + tr("All files") + " (*.*)");
"All files (*)"));
if (outputFile.isEmpty()) if (outputFile.isEmpty())
return; return;
updateLastUsedDir(QFileInfo(outputFile).dir().path()); updateLastUsedDir(QFileInfo(outputFile).dir().path());