Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6411b7cd15 | |||
| 223f7cd0ea | |||
| f8f9ee08b3 |
+5
-4
@@ -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
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+35
-17
@@ -293,7 +293,10 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
|||||||
|
|
||||||
void MainWindow::copyOrMove(bool copy)
|
void MainWindow::copyOrMove(bool copy)
|
||||||
{
|
{
|
||||||
QString dest = QFileDialog::getExistingDirectory(this, tr("Select destination"), _lastDir);
|
QString dest = QFileDialog::getExistingDirectory(this,
|
||||||
|
tr("Select destination"),
|
||||||
|
_lastDir,
|
||||||
|
QFileDialog::ShowDirsOnly | QFileDialog::DontUseNativeDialog);
|
||||||
copyOrMove(copy, dest);
|
copyOrMove(copy, dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,7 +369,12 @@ void MainWindow::pixmapLoaded(Image *image)
|
|||||||
|
|
||||||
void MainWindow::loadFile()
|
void MainWindow::loadFile()
|
||||||
{
|
{
|
||||||
QString file = QFileDialog::getOpenFileName(this, tr("Open file"), _lastDir, tr("Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF)"));
|
QString file = QFileDialog::getOpenFileName(this,
|
||||||
|
tr("Open file"),
|
||||||
|
_lastDir,
|
||||||
|
tr("Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF)"),
|
||||||
|
nullptr,
|
||||||
|
QFileDialog::DontUseNativeDialog);
|
||||||
loadFile(file);
|
loadFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +401,7 @@ void MainWindow::loadFile(int row)
|
|||||||
|
|
||||||
void MainWindow::indexDir()
|
void MainWindow::indexDir()
|
||||||
{
|
{
|
||||||
QString dir = QFileDialog::getExistingDirectory(this, tr("Index directory"), _lastDir);
|
QString dir = QFileDialog::getExistingDirectory(this, tr("Index directory"), _lastDir, QFileDialog::ShowDirsOnly | QFileDialog::DontUseNativeDialog);
|
||||||
indexDir(dir);
|
indexDir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,35 +425,45 @@ void MainWindow::reindex()
|
|||||||
void MainWindow::saveAs()
|
void MainWindow::saveAs()
|
||||||
{
|
{
|
||||||
QString selectedFilter;
|
QString selectedFilter;
|
||||||
QString file = QFileDialog::getSaveFileName(this, tr("Save as"), _lastDir, tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"), &selectedFilter);
|
QString file = QFileDialog::getSaveFileName(this,
|
||||||
|
tr("Save as"),
|
||||||
|
_lastDir,
|
||||||
|
tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"),
|
||||||
|
&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())
|
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
@@ -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();
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="20221126" date="2022-11-26"/>
|
||||||
<release version="20221121" date="2022-11-11"/>
|
<release version="20221121" date="2022-11-11"/>
|
||||||
<release version="20221023" date="2022-10-23"/>
|
<release version="20221023" date="2022-10-23"/>
|
||||||
</releases>
|
</releases>
|
||||||
|
|||||||
Reference in New Issue
Block a user