utility: graph export linux

qfiledialog on linux does not add extension of filter to filename
This commit is contained in:
Andreas Stallinger
2016-10-18 13:05:20 +02:00
parent 9ce5cd9c1c
commit b11f583729
+37 -1
View File
@@ -244,9 +244,45 @@ void QtGraphicsView::stopTimer()
m_timer->stop();
}
QString ShowSaveFileDialog(QWidget *parent,
const QString &title,
const QString &directory,
const QString &filter) {
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
return QFileDialog::getSaveFileName(parent,
title,
directory,
filter);
#else
QFileDialog dialog(parent, title, directory, filter);
if (parent) {
dialog.setWindowModality(Qt::WindowModal);
}
QRegExp filter_regex(QLatin1String("(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)"));
QStringList filters = filter.split(QLatin1String(";;"));
if (!filters.isEmpty()) {
dialog.setNameFilters(filters);
}
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted) {
QString file_name = dialog.selectedFiles().first();
QFileInfo info(file_name);
if (info.suffix().isEmpty() && !dialog.selectedNameFilter().isEmpty()) {
if (filter_regex.indexIn(dialog.selectedNameFilter()) != -1) {
QString extension = filter_regex.cap(1);
file_name += QLatin1String(".") + extension;
}
}
return file_name;
} else {
return QString();
}
#endif // Q_WS_MAC || Q_WS_WIN
}
void QtGraphicsView::exportGraph()
{
QString fileName = QFileDialog::getSaveFileName(
QString fileName = ShowSaveFileDialog(
this, "Save image", QDir::homePath(), "PNG (*.png);;JPEG (*.JPEG);;BMP Files (*.bmp)");
if (!fileName.isNull())