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;
}
ConvertRunable::ConvertRunable(const QString &in, const QString &out) :
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format) :
m_infile(in),
m_outfile(out)
m_outfile(out),
m_format(format)
{
}
@@ -648,7 +649,7 @@ void ConvertRunable::run()
if(rawimage)
{
if(m_outfile.endsWith(".XISF", Qt::CaseInsensitive))
if(m_format == "XISF")
{
pcl::XISFOptions options;
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;
fitsfile *fw;
+2 -1
View File
@@ -25,8 +25,9 @@ class ConvertRunable : public QRunnable
{
QString m_infile;
QString m_outfile;
QString m_format;
public:
ConvertRunable(const QString &in, const QString &out);
ConvertRunable(const QString &in, const QString &out, const QString &format);
void run() override;
};
+20 -15
View File
@@ -429,36 +429,41 @@ void MainWindow::saveAs()
tr("Save as"),
_lastDir,
tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"),
&selectedFilter,
QFileDialog::DontUseNativeDialog);
&selectedFilter);
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())
{
QFileInfo info(file);
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";
}
QString format = filterToFormat(file, selectedFilter);
if(file.endsWith(".fits") || file.endsWith(".xisf"))
if(format == "FITS" || format == "XISF")
{
convert(file);
convert(file, format);
}
else
{
QImage img = m_imageGL->imageWidget()->renderToImage();
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();
QThreadPool::globalInstance()->start(new ConvertRunable(file, outfile));
QThreadPool::globalInstance()->start(new ConvertRunable(file, outfile, format));
}
void MainWindow::markImage()
+1 -1
View File
@@ -50,7 +50,7 @@ protected slots:
void indexDir(const QString &dir);
void reindex();
void saveAs();
void convert(const QString &outfile);
void convert(const QString &outfile, const QString &format);
void markImage();
void unmarkImage();
void markAndNext();