fix file name suffix when exporting charts to files on Linux (QWT)
authorAlexey Chernobaev <achernobaev@dev.rtsoft.ru>
Thu, 22 Mar 2018 23:38:26 +0000 (02:38 +0300)
committerAlexey Chernobaev <achernobaev@dev.rtsoft.ru>
Thu, 22 Mar 2018 23:38:26 +0000 (02:38 +0300)
src/analyze/gui/chartwidget.cpp

index ef9f960..a33f9f0 100644 (file)
 #elif defined(QWT_FOUND)
 #include <QAction>
 #include <QContextMenuEvent>
+#include <QFileDialog>
+#include <QFileInfo>
 #include <QMenu>
 #include <QMessageBox>
-#include <QFileDialog>
+#include <QRegularExpression>
 #endif
 
 #ifdef NO_K_LIB
@@ -530,11 +532,29 @@ void ChartWidget::showHelp()
 
 void ChartWidget::exportChart()
 {
+    QString selectedFilter;
     QString saveFilename = QFileDialog::getSaveFileName(this, "Save Chart As",
         m_plot->model()->headerData(1, Qt::Horizontal).toString(),
-        "PNG (*.png);; TIFF (*.tif *.tiff);; JPEG (*.jpg *.jpeg)");
+        "PNG (*.png);; BMP (*.bmp);; JPEG (*.jpg *.jpeg)", &selectedFilter);
     if (!saveFilename.isEmpty())
     {
+        QFileInfo fi(saveFilename);
+        if (fi.suffix().isEmpty()) // can be on some platforms
+        {
+            int i = selectedFilter.indexOf("*.");
+            if (i >= 0)
+            {
+                static QRegularExpression delimiters("[ )]");
+                i += 2;
+                int j = selectedFilter.indexOf(delimiters, i);
+                if (j > i)
+                {
+                    --i;
+                    QString suffix = selectedFilter.mid(i, j - i);
+                    saveFilename += suffix;
+                }
+            }
+        }
         if (!m_plot->grab().save(saveFilename))
         {
             QMessageBox::warning(this, "Error",