Refractor save dialog

This commit is contained in:
2022-11-26 11:02:29 +01:00
parent f8f9ee08b3
commit 223f7cd0ea
4 changed files with 31 additions and 24 deletions
+5 -4
View File
@@ -541,9 +541,10 @@ bool readXISFHeader(const QString &path, ImageInfoData &info)
return true; return true;
} }
ConvertRunable::ConvertRunable(const QString &in, const QString &out) : ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format) :
m_infile(in), m_infile(in),
m_outfile(out) m_outfile(out),
m_format(format)
{ {
} }
@@ -648,7 +649,7 @@ void ConvertRunable::run()
if(rawimage) if(rawimage)
{ {
if(m_outfile.endsWith(".XISF", Qt::CaseInsensitive)) if(m_format == "XISF")
{ {
pcl::XISFOptions options; pcl::XISFOptions options;
pcl::FITSKeywordArray fitskeywords; pcl::FITSKeywordArray fitskeywords;
@@ -675,7 +676,7 @@ void ConvertRunable::run()
} }
if(m_outfile.endsWith(".FITS", Qt::CaseInsensitive) || m_outfile.endsWith(".FIT", Qt::CaseInsensitive)) if(m_format == "FITS")
{ {
int status = 0; int status = 0;
fitsfile *fw; fitsfile *fw;
+2 -1
View File
@@ -25,8 +25,9 @@ class ConvertRunable : public QRunnable
{ {
QString m_infile; QString m_infile;
QString m_outfile; QString m_outfile;
QString m_format;
public: public:
ConvertRunable(const QString &in, const QString &out); ConvertRunable(const QString &in, const QString &out, const QString &format);
void run() override; void run() override;
}; };
+20 -15
View File
@@ -429,36 +429,41 @@ void MainWindow::saveAs()
tr("Save as"), tr("Save as"),
_lastDir, _lastDir,
tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"), tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"),
&selectedFilter, &selectedFilter);
QFileDialog::DontUseNativeDialog); auto filterToFormat = [](const QString &file, const QString &filter) -> const char*
{
QString suffix = QFileInfo(file).suffix();
if(!suffix.compare("jpg", Qt::CaseInsensitive) || !suffix.compare("jpeg", Qt::CaseInsensitive))return "JPEG";
if(!suffix.compare("png", Qt::CaseInsensitive))return "PNG";
if(!suffix.compare("fits", Qt::CaseInsensitive) || !suffix.compare("fit", Qt::CaseInsensitive))return "FITS";
if(!suffix.compare("xisf", Qt::CaseInsensitive))return "XISF";
if(filter.contains("png"))return "PNG";
if(filter.contains("fits"))return "FITS";
if(filter.contains("xisf"))return "XISF";
return "JPEG";
};
if(!file.isEmpty()) if(!file.isEmpty())
{ {
QFileInfo info(file); QString format = filterToFormat(file, selectedFilter);
if(info.suffix().isEmpty())
{
if(selectedFilter.contains("jpg"))file += ".jpg";
if(selectedFilter.contains("png"))file += ".png";
if(selectedFilter.contains("fits"))file += ".fits";
if(selectedFilter.contains("xisf"))file += ".xisf";
}
if(file.endsWith(".fits") || file.endsWith(".xisf")) if(format == "FITS" || format == "XISF")
{ {
convert(file); convert(file, format);
} }
else else
{ {
QImage img = m_imageGL->imageWidget()->renderToImage(); QImage img = m_imageGL->imageWidget()->renderToImage();
if(!img.isNull()) if(!img.isNull())
img.save(file); img.save(file, filterToFormat(file, selectedFilter));
} }
} }
} }
void MainWindow::convert(const QString &outfile) void MainWindow::convert(const QString &outfile, const QString &format)
{ {
QString file = m_ringList->currentImage()->name(); QString file = m_ringList->currentImage()->name();
QThreadPool::globalInstance()->start(new ConvertRunable(file, outfile)); QThreadPool::globalInstance()->start(new ConvertRunable(file, outfile, format));
} }
void MainWindow::markImage() void MainWindow::markImage()
+1 -1
View File
@@ -50,7 +50,7 @@ protected slots:
void indexDir(const QString &dir); void indexDir(const QString &dir);
void reindex(); void reindex();
void saveAs(); void saveAs();
void convert(const QString &outfile); void convert(const QString &outfile, const QString &format);
void markImage(); void markImage();
void unmarkImage(); void unmarkImage();
void markAndNext(); void markAndNext();