diff --git a/imageringlist.cpp b/imageringlist.cpp index 4331945..8db6cea 100644 --- a/imageringlist.cpp +++ b/imageringlist.cpp @@ -98,12 +98,14 @@ void Image::thumbnailLoadFinish(void *rawImage) emit thumbnailLoaded(this); } -ImageRingList::ImageRingList(Database *database, QObject *parent) : QAbstractItemModel(parent) +ImageRingList::ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent) : QAbstractItemModel(parent) , m_liveMode(false) , m_analyzeLevel(None) , m_database(database) + , m_nameFilter(nameFilter) { connect(&m_fileSystemWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(dirChanged(QString))); + m_nameFilter.replaceInStrings(QRegExp("^"), "*."); m_thumbPool = new QThreadPool(this); } @@ -122,10 +124,7 @@ bool ImageRingList::setDir(const QString path, const QString ¤tFile) if(dir.exists()) { - QStringList nameFilter; - nameFilter << "*.jpg" << "*.jpeg" << "*.png" << "*.cr2" << "*.nef" << "*.dng" << "*.fit" << "*.fits" << "*.xisf"; - - QStringList list = dir.entryList(nameFilter, QDir::Files | QDir::Readable, m_liveMode ? QDir::Time : QDir::Name | QDir::IgnoreCase); + QStringList list = dir.entryList(m_nameFilter, QDir::Files | QDir::Readable, m_liveMode ? QDir::Time : QDir::Name | QDir::IgnoreCase); QStringList absolutePaths; foreach(const QString &file, list) { diff --git a/imageringlist.h b/imageringlist.h index 0140547..74197a2 100644 --- a/imageringlist.h +++ b/imageringlist.h @@ -60,8 +60,9 @@ class ImageRingList : public QAbstractItemModel AnalyzeLevel m_analyzeLevel; QThreadPool *m_thumbPool; Database *m_database; + QStringList m_nameFilter; public: - explicit ImageRingList(Database *database, QObject *parent = 0); + explicit ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent = 0); ~ImageRingList() override; bool setDir(const QString path, const QString ¤tFile = QString()); void setFile(const QString &file); diff --git a/mainwindow.cpp b/mainwindow.cpp index 7792933..2ed2d0b 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -26,6 +26,8 @@ #include #include #include +#include +#include #endif int MainWindow::socketPair[2] = {0, 0}; @@ -37,6 +39,24 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) SettingsDialog::loadSettings(); + QStringList nameFilter; + _saveFilter = tr("FITS (*.fits *.fit);;XISF (*.xisf);;"); + _openFilter = tr("Images ("); + QMimeDatabase db; + auto supportedFormats = QImageReader::supportedMimeTypes(); + QStringList filters; + for(auto format : supportedFormats) + { + QMimeType mimeType = db.mimeTypeForName(format); + _saveFilter.append(mimeType.filterString() + ";;"); + _openFilter.append("*."); + _openFilter.append(mimeType.suffixes().join(" *.")); + _openFilter.append(" "); + nameFilter.append(mimeType.suffixes()); + } + _openFilter.append("*.fit *.fits *.xisf *.cr2 *.nef *.dng)"); + nameFilter.append({"fit", "fits", "xisf", "cr2", "nef", "dng"}); + m_info = new ImageInfo(this); QDockWidget *infoDock = new QDockWidget(tr("Image info"), this); infoDock->setWidget(m_info); @@ -62,7 +82,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) connect(m_stretchPanel, &StretchToolbar::invert, m_imageGL->imageWidget(), &ImageWidget::invert); connect(m_stretchPanel, &StretchToolbar::superPixel, m_imageGL->imageWidget(), &ImageWidget::superPixel); - m_ringList = new ImageRingList(m_database, this); + m_ringList = new ImageRingList(m_database, nameFilter, this); m_filesystem = new FilesystemWidget(m_ringList, this); connect(m_filesystem, SIGNAL(fileSelected(int)), this, SLOT(loadFile(int))); @@ -372,7 +392,7 @@ 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)"), + _openFilter, nullptr, QFileDialog::DontUseNativeDialog); loadFile(file); @@ -428,7 +448,7 @@ void MainWindow::saveAs() QString file = QFileDialog::getSaveFileName(this, tr("Save as"), _lastDir, - tr("JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF)"), + _saveFilter, &selectedFilter); auto filterToFormat = [](const QString &file, const QString &filter) -> const char* { diff --git a/mainwindow.h b/mainwindow.h index a70acac..ff85bac 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -28,6 +28,8 @@ class MainWindow : public QMainWindow QSocketNotifier *socketNotifier; QString _lastDir; bool _maximized; + QString _openFilter; + QString _saveFilter; public: MainWindow(QWidget *parent = 0); ~MainWindow() override; diff --git a/translations/tenmon_en.qm b/translations/tenmon_en.qm index d4c1f4b..74122ff 100644 Binary files a/translations/tenmon_en.qm and b/translations/tenmon_en.qm differ diff --git a/translations/tenmon_en.ts b/translations/tenmon_en.ts index 4ba7cbd..6e6875e 100644 --- a/translations/tenmon_en.ts +++ b/translations/tenmon_en.ts @@ -304,7 +304,7 @@ JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) - JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) + JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) Reindex files @@ -324,7 +324,7 @@ Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) - Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) + Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) Edit @@ -332,12 +332,20 @@ FITS header editor - FITS header editor + FITS header editor Settings Settings + + Images ( + Images ( + + + FITS (*.fits *.fit);;XISF (*.xisf);; + FITS image (*.fits *.fit);;XISF image (*.xisf);; + MarkedFiles diff --git a/translations/tenmon_fr.qm b/translations/tenmon_fr.qm index cc1362b..9771758 100644 Binary files a/translations/tenmon_fr.qm and b/translations/tenmon_fr.qm differ diff --git a/translations/tenmon_fr.ts b/translations/tenmon_fr.ts index eaa9dbf..bed7586 100644 --- a/translations/tenmon_fr.ts +++ b/translations/tenmon_fr.ts @@ -304,7 +304,7 @@ JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) - JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) + JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) Reindex files @@ -324,7 +324,7 @@ Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) - Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) + Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) Edit @@ -332,12 +332,20 @@ FITS header editor - Éditeur d'en-tête FITS + Éditeur d'en-tête FITS Settings Réglages + + Images ( + Images ( + + + FITS (*.fits *.fit);;XISF (*.xisf);; + FITS image (*.fits *.fit);;XISF image (*.xisf);; + MarkedFiles diff --git a/translations/tenmon_sk.qm b/translations/tenmon_sk.qm index a31e555..a965078 100644 Binary files a/translations/tenmon_sk.qm and b/translations/tenmon_sk.qm differ diff --git a/translations/tenmon_sk.ts b/translations/tenmon_sk.ts index 5fffd7a..aa9534c 100644 --- a/translations/tenmon_sk.ts +++ b/translations/tenmon_sk.ts @@ -317,7 +317,7 @@ JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) - JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) + JPEG (*.jpg *.JPG);; PNG (*.png *.PNG);;FITS (*.fits *.FITS);;XISF (*.xisf *.XISF) Reindex files @@ -337,7 +337,7 @@ Images (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) - Obrázky (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) + Obrázky (*.jpg *.jpeg *.png *.cr2 *.nef *.dng *.fit *.fits *.xisf *.JPG *.JPEG *.PNG *.CR2 *.NEF *.DNG *.FIT *.FITS *.XISF) Edit @@ -345,12 +345,20 @@ FITS header editor - Editor FITS hlavičky + Editor FITS hlavičky Settings Nastavenia + + Images ( + Obrázky ( + + + FITS (*.fits *.fit);;XISF (*.xisf);; + Obrázok FITS (*.fits *.fit);;Obrázok XISF (*.xisf);; + MarkedFiles