Compare commits

...

27 Commits

Author SHA1 Message Date
nou 974d482d5b Update metainfo 2026-04-12 18:32:15 +02:00
nou d45bf37e50 Update translation 2026-04-12 18:23:48 +02:00
nou 56a8a0e789 Special handling of COUNT aggregate function 2026-04-12 18:23:39 +02:00
nou 27afb2ea5f Add table view to database tree 2026-04-12 13:41:29 +02:00
nou 28016ada8d Improve logging 2026-04-12 10:26:03 +02:00
nou 885a5b4c6d Add support copy to clipboard for table 2026-04-12 10:20:43 +02:00
nou 63149745ed Handle return value of QFile::open 2026-04-12 10:19:40 +02:00
nou ef8b3d7668 Add scriptarg to cli options 2026-04-10 21:55:36 +02:00
nou 8d2a0a28cc Update tranlations 2026-04-10 21:39:37 +02:00
nou 6ba9be41ec Add database tree view 2026-04-08 19:55:26 +02:00
nou 65fca14ac2 Add running script as CLI option 2026-04-08 19:38:52 +02:00
nou 3818fd4625 Update copyright year 2026-03-30 22:31:51 +02:00
nou 3f88e5fe83 Reopen console on windows when started from cmd.exe 2026-03-26 14:46:23 +01:00
nou 6a537642ab Add copy files to database view 2026-03-22 21:10:04 +01:00
nou b7f1a0abc9 Add id_file_key index to database 2026-03-22 09:55:19 +01:00
nou 33c976d3c9 Remember a selected filter keyword in database view 2026-03-22 09:54:57 +01:00
nou a17001cdf9 Trim whitespace string from XISF 2026-03-21 22:21:35 +01:00
nou 305c1d1f55 Deffered SQL query when database is visible 2026-03-21 20:33:47 +01:00
nou 95808b094d Fix buidling query 2026-03-21 20:31:44 +01:00
nou 2b56af27fe Add explicit link to Svg module to solve some issues with SVG icon 2026-03-15 17:47:51 +01:00
nou 8edf746827 Use bindvalue in DatabaseTableView 2026-03-15 17:47:24 +01:00
nou 729a330e6c Add backspace as move to trash shortcut for MacOS 2026-03-15 17:45:01 +01:00
nou 1ac5a4e42a Update metainfo 2026-02-16 22:52:28 +01:00
nou 83d212aa91 Enable sorting of FITS header 2026-02-16 22:29:25 +01:00
nou bd24fba407 Update README 2026-02-11 21:26:33 +01:00
nou 3448f62f31 Try to fix crash in ImageRingList 2026-01-19 20:57:13 +01:00
nou 567e66acb5 Update libXISF 2025-11-02 23:17:10 +01:00
39 changed files with 2111 additions and 654 deletions
+5 -2
View File
@@ -17,7 +17,7 @@ if(SANITIZE_ADDRESS_LEAK)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fsanitize=leak") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fsanitize=leak")
endif(SANITIZE_ADDRESS_LEAK) endif(SANITIZE_ADDRESS_LEAK)
find_package(Qt6 COMPONENTS Widgets Sql OpenGLWidgets Qml Charts REQUIRED) find_package(Qt6 COMPONENTS Widgets Sql OpenGLWidgets Qml Charts Svg REQUIRED)
find_library(EXIF_LIB exif REQUIRED) find_library(EXIF_LIB exif REQUIRED)
find_library(FITS_LIB cfitsio REQUIRED) find_library(FITS_LIB cfitsio REQUIRED)
find_library(RAW_LIB NAMES raw_r REQUIRED) find_library(RAW_LIB NAMES raw_r REQUIRED)
@@ -32,6 +32,8 @@ set(TENMON_SRC
src/batchprocessing.cpp src/batchprocessing.h src/batchprocessing.ui src/batchprocessing.cpp src/batchprocessing.h src/batchprocessing.ui
src/chartgraph.h src/chartgraph.cpp src/chartgraph.h src/chartgraph.cpp
src/database.cpp src/database.h src/database.cpp src/database.h
src/databasetree.cpp src/databasetree.h
src/databasetreekeys.ui
src/databaseview.cpp src/databaseview.h src/databaseview.cpp src/databaseview.h
src/delete.cpp src/delete.cpp
src/filemanager.h src/filemanager.cpp src/filemanager.ui src/filemanager.h src/filemanager.cpp src/filemanager.ui
@@ -92,6 +94,7 @@ if(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB)
if(MXE) if(MXE)
find_library(GSL_LIB gsl REQUIRED) find_library(GSL_LIB gsl REQUIRED)
find_library(GSLCBLAS_LIB gslcblas REQUIRED) find_library(GSLCBLAS_LIB gslcblas REQUIRED)
target_compile_definitions(tenmon PRIVATE "stellarsolver_STATIC")
target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB} ${GSL_LIB} ${GSLCBLAS_LIB} boost_regex-mt-x64) target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB} ${GSL_LIB} ${GSLCBLAS_LIB} boost_regex-mt-x64)
else(MXE) else(MXE)
target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB}) target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB})
@@ -105,7 +108,7 @@ if(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB)
message(STATUS "Found stellarsolver ${STELLARSOLVER_INCLUDE} ${STELLARSOLVER_LIB}") message(STATUS "Found stellarsolver ${STELLARSOLVER_INCLUDE} ${STELLARSOLVER_LIB}")
endif(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB) endif(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB)
target_link_libraries(tenmon PRIVATE Qt6::Widgets Qt6::Sql Qt6::OpenGLWidgets Qt6::Qml Qt6::Charts ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB} ${LCMS2_LIB} XISF) target_link_libraries(tenmon PRIVATE Qt6::Widgets Qt6::Sql Qt6::OpenGLWidgets Qt6::Qml Qt6::Charts Qt6::Svg ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB} ${LCMS2_LIB} XISF)
if(APPLE) if(APPLE)
target_link_libraries(tenmon PRIVATE Qt6::DBus "-framework CoreFoundation") target_link_libraries(tenmon PRIVATE Qt6::DBus "-framework CoreFoundation")
elseif(UNIX) elseif(UNIX)
+5 -1
View File
@@ -2,7 +2,7 @@ FITS/XISF image viewer with multithreaded image loading
To get all dependencies install these packages To get all dependencies install these packages
sudo apt install qt6-base-dev qt6-declarative-dev libqt6opengl6-dev libraw-dev libexif-dev libcfitsio-dev wcslib-dev cmake libzstd-dev libqt6sql6-sqlite sudo apt install qt6-base-dev qt6-declarative-dev qt6-charts-dev libqt6opengl6-dev libraw-dev libexif-dev libcfitsio-dev wcslib-dev cmake libzstd-dev libqt6sql6-sqlite
on OpenSUSE on OpenSUSE
@@ -26,6 +26,10 @@ Then to build run standard cmake sequence
cmake --build build cmake --build build
./build/tenmon ./build/tenmon
To install it to system run this command as root
cmake --install build
For working plate solving you must have compiled and installed StellarSolver https://github.com/rlancaste/stellarsolver For working plate solving you must have compiled and installed StellarSolver https://github.com/rlancaste/stellarsolver
It is important that you compile StellarSolver with Qt6. By default it use Qt5 but when linked with Qt6 program it will It is important that you compile StellarSolver with Qt6. By default it use Qt5 but when linked with Qt6 program it will
crash. crash.
+26
View File
@@ -122,6 +122,13 @@ Pressing Enter or clicking on <i>Filter</i> button will filter out database reco
This example filters for files where: "Bias" is in the file name, the OBJECT property is "M_42" (where the underscore can be any single character), and the DATE property begins with "2022". This example filters for files where: "Bias" is in the file name, the OBJECT property is "M_42" (where the underscore can be any single character), and the DATE property begins with "2022".
</p> </p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3> <h3>Plate Solving</h3>
<p>This module can plate solve images and update FITS header with solution for FITS and XISF images. <p>This module can plate solve images and update FITS header with solution for FITS and XISF images.
<b>Profile</b> this set various parameters that affect star extraction and solving. <b>Profile</b> this set various parameters that affect star extraction and solving.
@@ -153,6 +160,25 @@ file explorer programs that are in system or from file explorer to this program.
In menu you can select which FITS keywords will be showed. Temporarilly disable loading FITS header or copy file paths of selected files as text. In menu you can select which FITS keywords will be showed. Temporarilly disable loading FITS header or copy file paths of selected files as text.
</p> </p>
<h3>Command line options</h3>
<p>
Tenmon can be executed from command line. It support these command line options.
<ul>
<li><i>--thumb, --thumbnail &lt;path&gt;</i> Generate thumbnail and save it to path. It generate it from first file provided as argument.</li>
<li><i>-s, --size <size></i> size of generated thumbnail. Aspect ratio of input image is preserved.</li>
<li><i>--script &lt;script&gt;</i> execute a script from file path same manner as executed from GUI.</li>
<li><i>--scriptarg &lt;arg&gt>;</i> pass this string as variable scriptarg to a running script.</li>
<li><i>--outdir &lt;dir&gt;</i> output dir for script execution. By default current working directory is used.</li>
<li><i>--noexit</i> by default application exit when execution of script specified with --script ends. This prefent that.</li>
<li><i>-h, --help</i> show help end exit.</li>
Any other arguments are taken as input paths. If only one file path is specified then that image is open and image list is populated by directory
containing that image. If directory is specified then it is same as selecting that directory in "Open directory recusivelly". If multiple files are
specified then image list will contain just these speicified images.
When exuecting script with --script then these paths are used as input files and directories as in "Batch processing"
</ul>
</p>
<h3>Batch processing</h3> <h3>Batch processing</h3>
<p>This module allow to write scripts in JavaScript that process image files. Batch Processing window consist from three main parts. On top is list of input files and directories. <p>This module allow to write scripts in JavaScript that process image files. Batch Processing window consist from three main parts. On top is list of input files and directories.
You can add directories or individual files to this list. Directories are scanned recursively to find all files even non image files. This list of files is then passed to script in array named <b>files</b>. You can add directories or individual files to this list. Directories are scanned recursively to find all files even non image files. This list of files is then passed to script in array named <b>files</b>.
+57
View File
@@ -102,6 +102,63 @@ En appuyant sur la touche Enter ou en cliquant sur le bouton <i>Filtre</i>, les
Cet exemple filtre les fichiers où : "Bias" figure dans le nom de fichier, la propriété OBJECT est "M_42" (où le trait de soulignement peut être n'importe quel caractère) et la propriété DATE commence par "2022". Cet exemple filtre les fichiers où : "Bias" figure dans le nom de fichier, la propriété OBJECT est "M_42" (où le trait de soulignement peut être n'importe quel caractère) et la propriété DATE commence par "2022".
</p> </p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3>
<p>This module can plate solve images and update FITS header with solution for FITS and XISF images.
<b>Profile</b> this set various parameters that affect star extraction and solving.
<b>Starting point</b> program will try to automatically determine optimal starting point which helps to speed up solving.
You can leave one or both unchecked then it will attempt to do blind solving. If the position or scale is wrong it can actually
fail to solve.
<b>Solution</b> this section contain resulting solution like RA,DEC coordinates center of image, image field of view, orientation as degrees E of N,
image scale in arcseconds per pixel, number of stars extracted and HFR fitting and eccentricity. Then there is log window for debug information from
solver.
</p>
<p>Then finally there are various action button. Settings button show dialog where you can set path to existing index files or auto download some.
Extract button will just extract stars from image and it will show their count, HFR and eccentricity. This action doesn't need index files.
Solve button will try to find coordinates of images. Abort button will stop extraction or solving. Update FITS header will update FITS fits keywords
with found solution.</p>
<p>In settings dialog you can set path to index files which is by default custom internal one. It also try to locate commonly used path from other
programs like KStars for astrometry.net index files.
</p>
<h3>File Manager</h3>
<p>
This is simple double panel file manager. It can show columns with selected FITS keywords. Each panel have tabs where it easily switch between
multiple directories. You can copy or move files and directories either inside one panel or between two panels by selecting and then dragging.
By default files are copies. To move then press Shift key before start dragging. Double click on file will open it in main window if it is image
or other file it will open default program that is associated with it this file type. You can also drag file to other programs like from default
file explorer programs that are in system or from file explorer to this program.
</p>
<p>
In menu you can select which FITS keywords will be showed. Temporarilly disable loading FITS header or copy file paths of selected files as text.
</p>
<h3>Command line options</h3>
<p>
Tenmon can be executed from command line. It support these command line options.
<ul>
<li><i>--thumb, --thumbnail &lt;path&gt;</i> Generate thumbnail and save it to path. It generate it from first file provided as argument.</li>
<li><i>-s, --size <size></i> size of generated thumbnail. Aspect ratio of input image is preserved.</li>
<li><i>--script &lt;script&gt;</i> execute a script from file path same manner as executed from GUI.</li>
<li><i>--scriptarg &lt;arg&gt>;</i> pass this string as variable scriptarg to a running script.</li>
<li><i>--outdir &lt;dir&gt;</i> output dir for script execution. By default current working directory is used.</li>
<li><i>--noexit</i> by default application exit when execution of script specified with --script ends. This prefent that.</li>
<li><i>-h, --help</i> show help end exit.</li>
Any other arguments are taken as input paths. If only one file path is specified then that image is open and image list is populated by directory
containing that image. If directory is specified then it is same as selecting that directory in "Open directory recusivelly". If multiple files are
specified then image list will contain just these speicified images.
When exuecting script with --script then these paths are used as input files and directories as in "Batch processing"
</ul>
</p>
<h3>Traitement par lot</h3> <h3>Traitement par lot</h3>
Ce module permet d'écrire des scripts en JavaScript qui traitent des fichiers images. La fenêtre de traitement par lots se compose de trois parties principales. En haut se trouve la liste des fichiers et répertoires d'entrée. Ce module permet d'écrire des scripts en JavaScript qui traitent des fichiers images. La fenêtre de traitement par lots se compose de trois parties principales. En haut se trouve la liste des fichiers et répertoires d'entrée.
+26
View File
@@ -105,6 +105,13 @@ V nasledovnom príklade sa vyhľadajú súbory ktoré majú v mene súboru "Bias
zástupný znak za hocijaký reťazec znakov aj žiadny. Znak _ je tiež zástupný znak zastupujúci práve jeden znak. zástupný znak za hocijaký reťazec znakov aj žiadny. Znak _ je tiež zástupný znak zastupujúci práve jeden znak.
Bez použitia zástupných znakov sa vyhľadá iba presný výskyt.</p> Bez použitia zástupných znakov sa vyhľadá iba presný výskyt.</p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3> <h3>Plate Solving</h3>
<p>Tento modul umožnuje vyriešiť obrázok a určiť RA, DEC koordináty a aktualizovať FITS a XISF súbory s WCS dátami. <p>Tento modul umožnuje vyriešiť obrázok a určiť RA, DEC koordináty a aktualizovať FITS a XISF súbory s WCS dátami.
<b>Profil</b> toto nastavuje rôzne parametre ovplivňujúce extrahovanie hviezd a hľadanie koordinátov. <b>Profil</b> toto nastavuje rôzne parametre ovplivňujúce extrahovanie hviezd a hľadanie koordinátov.
@@ -133,6 +140,25 @@ file explorer programs that are in system or from file explorer to this program.
In menu you can select which FITS keywords will be showed. Temporarilly disable loading FITS header or copy file paths of selected files as text. In menu you can select which FITS keywords will be showed. Temporarilly disable loading FITS header or copy file paths of selected files as text.
</p> </p>
<h3>Command line options</h3>
<p>
Tenmon can be executed from command line. It support these command line options.
<ul>
<li><i>--thumb, --thumbnail &lt;path&gt;</i> Generate thumbnail and save it to path. It generate it from first file provided as argument.</li>
<li><i>-s, --size <size></i> size of generated thumbnail. Aspect ratio of input image is preserved.</li>
<li><i>--script &lt;script&gt;</i> execute a script from file path same manner as executed from GUI.</li>
<li><i>--scriptarg &lt;arg&gt>;</i> pass this string as variable scriptarg to a running script.</li>
<li><i>--outdir &lt;dir&gt;</i> output dir for script execution. By default current working directory is used.</li>
<li><i>--noexit</i> by default application exit when execution of script specified with --script ends. This prefent that.</li>
<li><i>-h, --help</i> show help end exit.</li>
Any other arguments are taken as input paths. If only one file path is specified then that image is open and image list is populated by directory
containing that image. If directory is specified then it is same as selecting that directory in "Open directory recusivelly". If multiple files are
specified then image list will contain just these speicified images.
When exuecting script with --script then these paths are used as input files and directories as in "Batch processing"
</ul>
</p>
<h3>Hromadné spracovanie</h3> <h3>Hromadné spracovanie</h3>
Tento modul umožnuje písanie skriptov v JavaScripte ktoré spracujú súbory obrázkov. Okno Hromadného spracovanie pozostáva z troch častí. Navrchu je zoznam vstupných súborov a adresárov. Tento modul umožnuje písanie skriptov v JavaScripte ktoré spracujú súbory obrázkov. Okno Hromadného spracovanie pozostáva z troch častí. Navrchu je zoznam vstupných súborov a adresárov.
+1 -1
View File
@@ -2,7 +2,7 @@
<td style="padding-right:10px"><img src=":/space.nouspiro.tenmon.png"></td> <td style="padding-right:10px"><img src=":/space.nouspiro.tenmon.png"></td>
<td><h3>Tenmon</h3> <td><h3>Tenmon</h3>
Tenmon is FITS/XISF image viewer and converter. It also index FITS keywords.<br> Tenmon is FITS/XISF image viewer and converter. It also index FITS keywords.<br>
v@GITVERSION@ Copyright © 2022 Dušan Poizl<br><br> v@GITVERSION@ Copyright © 2026 Dušan Poizl<br><br>
This program is free software: you can redistribute it and/or modify<br> This program is free software: you can redistribute it and/or modify<br>
it under the terms of the GNU General Public License as published by<br> it under the terms of the GNU General Public License as published by<br>
+1 -1
Submodule libXISF updated: 2e74d94641...7b70b6a081
+20
View File
@@ -47,6 +47,7 @@
</keywords> </keywords>
<url type="homepage">https://nouspiro.space/?page_id=206</url> <url type="homepage">https://nouspiro.space/?page_id=206</url>
<url type="bugtracker">https://github.com/flathub/space.nouspiro.tenmon/issues</url> <url type="bugtracker">https://github.com/flathub/space.nouspiro.tenmon/issues</url>
<url type="vcs-browser">https://gitea.nouspiro.space/nou/tenmon</url>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<caption>Main window with image</caption> <caption>Main window with image</caption>
@@ -59,6 +60,25 @@
</screenshots> </screenshots>
<content_rating type="oars-1.1"/> <content_rating type="oars-1.1"/>
<releases> <releases>
<release version="20260412" date="2026-04-12">
<description>
<ul>
<li>Add database tree to show database entries grouped in tree structure</li>
<li>Add database summary table. This can show total exposure time for OBJECT and FILTER for example</li>
<li>Copy files to clipboard from database view</li>
<li>Copy to clipboard text from database tables so they can be pasted to Excel</li>
<li>Add CLI option to run scripts and generate thumbnails</li>
</ul>
</description>
</release>
<release version="20260217" date="2026-02-17">
<description>
<ul>
<li>Fix potentional crash</li>
<li>Enable sorting of FITS info</li>
</ul>
</description>
</release>
<release version="20251101" date="2025-11-01"> <release version="20251101" date="2025-11-01">
<description> <description>
<ul> <ul>
+9 -7
View File
@@ -15,11 +15,13 @@ About::About(QWidget *parent) : QDialog(parent)
QLabel *label = new QLabel(this); QLabel *label = new QLabel(this);
QFile tenmonText(":/about/tenmon"); QFile tenmonText(":/about/tenmon");
tenmonText.open(QIODevice::ReadOnly); if(tenmonText.open(QIODevice::ReadOnly))
QByteArray text = tenmonText.readAll(); {
text.replace("@GITVERSION@", GITVERSION); QByteArray text = tenmonText.readAll();
label->setText(text); text.replace("@GITVERSION@", GITVERSION);
label->setOpenExternalLinks(true); label->setText(text);
label->setOpenExternalLinks(true);
}
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok);
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
@@ -41,8 +43,8 @@ HelpDialog::HelpDialog(QWidget *parent) : QDialog(parent)
layout->addWidget(helpText); layout->addWidget(helpText);
QFile tenmonText(":/help"); QFile tenmonText(":/help");
tenmonText.open(QIODevice::ReadOnly); if(tenmonText.open(QIODevice::ReadOnly))
helpText->setHtml(tenmonText.readAll()); helpText->setHtml(tenmonText.readAll());
} }
QString getVersion() QString getVersion()
+53 -6
View File
@@ -18,7 +18,6 @@
#include "chartgraph.h" #include "chartgraph.h"
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
#include <QCloseEvent>
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusMessage> #include <QDBusMessage>
#endif #endif
@@ -99,12 +98,12 @@ BatchProcessing::BatchProcessing(Database *database, QWidget *parent) : QDialog(
qWarning() << "Failed to get app data location"; qWarning() << "Failed to get app data location";
} }
connect(_ui->addFilesButton, &QPushButton::released, this, &BatchProcessing::addFiles); connect(_ui->addFilesButton, &QPushButton::released, this, static_cast<void (BatchProcessing::*)()>(&BatchProcessing::addFiles));
connect(_ui->addDirButton, &QPushButton::released, this, &BatchProcessing::addDir); connect(_ui->addDirButton, &QPushButton::released, this, static_cast<void (BatchProcessing::*)()>(&BatchProcessing::addDir));
connect(_ui->addMarkedButton, &QPushButton::released, this, &BatchProcessing::addMarked); connect(_ui->addMarkedButton, &QPushButton::released, this, &BatchProcessing::addMarked);
connect(_ui->removeButton, &QPushButton::released, this, &BatchProcessing::removePath); connect(_ui->removeButton, &QPushButton::released, this, &BatchProcessing::removePath);
connect(_ui->removeAllButton, &QPushButton::released, this, &BatchProcessing::removeAllPaths); connect(_ui->removeAllButton, &QPushButton::released, this, &BatchProcessing::removeAllPaths);
connect(_ui->startButton, &QPushButton::released, this, &BatchProcessing::runScript); connect(_ui->startButton, &QPushButton::released, this, static_cast<void (BatchProcessing::*)()>(&BatchProcessing::runScript));
connect(_ui->stopButton, &QPushButton::released, this, &BatchProcessing::stopScript); connect(_ui->stopButton, &QPushButton::released, this, &BatchProcessing::stopScript);
connect(_ui->browseButton, &QPushButton::released, this, &BatchProcessing::browse); connect(_ui->browseButton, &QPushButton::released, this, &BatchProcessing::browse);
connect(_ui->openScriptsButton, &QPushButton::released, this, &BatchProcessing::openScriptDir); connect(_ui->openScriptsButton, &QPushButton::released, this, &BatchProcessing::openScriptDir);
@@ -148,6 +147,17 @@ BatchProcessing::~BatchProcessing()
delete _ui; delete _ui;
} }
void BatchProcessing::setOutputDir(const QString &output)
{
_ui->outputPath->setText(output);
}
void BatchProcessing::setPaths(const QStringList &paths)
{
_ui->pathsList->addItems(paths);
refreshPaths();
}
void BatchProcessing::closeEvent(QCloseEvent *event) void BatchProcessing::closeEvent(QCloseEvent *event)
{ {
if(_engineThread) if(_engineThread)
@@ -175,7 +185,7 @@ void BatchProcessing::refreshPaths()
for(int i=0; i<_ui->pathsList->count(); i++) for(int i=0; i<_ui->pathsList->count(); i++)
paths.append(_ui->pathsList->item(i)->text()); paths.append(_ui->pathsList->item(i)->text());
_paths = scanDirectories(paths); _paths = scanDirectories(paths);
_engine->setParams("", _paths, _ui->outputPath->text()); _engine->setParams("", _paths, _ui->outputPath->text(), QString());
} }
void BatchProcessing::addFiles() void BatchProcessing::addFiles()
@@ -258,7 +268,7 @@ void BatchProcessing::runScript()
else else
script = ":/scripts/" + script; script = ":/scripts/" + script;
_engineThread->setParams(script, _paths, _ui->outputPath->text()); _engineThread->setParams(script, _paths, _ui->outputPath->text(), QString());
_engineThread->start(); _engineThread->start();
_ui->startButton->setEnabled(false); _ui->startButton->setEnabled(false);
_ui->stopButton->setEnabled(true); _ui->stopButton->setEnabled(true);
@@ -266,6 +276,35 @@ void BatchProcessing::runScript()
else else
{ {
QMessageBox::warning(this, tr("Invalid output directory"), tr("Output directory path doesn't exist or is not writable")); QMessageBox::warning(this, tr("Invalid output directory"), tr("Output directory path doesn't exist or is not writable"));
delete _engineThread;
_engineThread = nullptr;
}
}
}
void BatchProcessing::runScript(const QString &script, const QString &arg, bool exit)
{
_ui->log->clear();
{
_engineThread = new Script::ScriptEngineThread(_database, this);
connect(_engineThread, &Script::ScriptEngineThread::newMessage, this, &BatchProcessing::newMessage);
connect(_engineThread, &Script::ScriptEngineThread::newMessage, this, &BatchProcessing::newMessageCli);
connect(_engineThread, &Script::ScriptEngineThread::finished, this, &BatchProcessing::scriptFinished);
if(exit)connect(_engineThread, &Script::ScriptEngineThread::finished, this, &BatchProcessing::accept);
QFileInfo outDir(_ui->outputPath->text());
if(outDir.exists() && outDir.isWritable())
{
_engineThread->setParams(script, _paths, _ui->outputPath->text(), arg);
_engineThread->start();
_ui->startButton->setEnabled(false);
_ui->stopButton->setEnabled(true);
}
else
{
QMessageBox::warning(this, tr("Invalid output directory"), tr("Output directory path doesn't exist or is not writable"));
delete _engineThread;
_engineThread = nullptr;
} }
} }
} }
@@ -293,6 +332,14 @@ void BatchProcessing::newMessage(const QString &message, bool error)
_ui->log->append(message); _ui->log->append(message);
} }
void BatchProcessing::newMessageCli(const QString &message, bool error)
{
if(error)
qWarning() << message;
else
qDebug() << message;
}
QJSValue BatchProcessing::getString(const QString &label, const QString &text) QJSValue BatchProcessing::getString(const QString &label, const QString &text)
{ {
bool ok = false; bool ok = false;
+4
View File
@@ -30,6 +30,8 @@ private slots:
public: public:
explicit BatchProcessing(Database *database, QWidget *parent = nullptr); explicit BatchProcessing(Database *database, QWidget *parent = nullptr);
~BatchProcessing(); ~BatchProcessing();
void setOutputDir(const QString &output);
void setPaths(const QStringList &paths);
protected: protected:
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
void refreshPaths(); void refreshPaths();
@@ -42,9 +44,11 @@ public slots:
void browse(); void browse();
void openScriptDir(); void openScriptDir();
void runScript(); void runScript();
void runScript(const QString &script, const QString &arg, bool exit);
void stopScript(); void stopScript();
void scriptFinished(); void scriptFinished();
void newMessage(const QString &message, bool error); void newMessage(const QString &message, bool error);
void newMessageCli(const QString &message, bool error);
QJSValue getString(const QString &label, const QString &text); QJSValue getString(const QString &label, const QString &text);
QJSValue getInt(const QString &label, int value); QJSValue getInt(const QString &label, int value);
+22 -10
View File
@@ -35,7 +35,7 @@ bool Database::init(const QLatin1String &connectionName)
} }
else else
{ {
qDebug() << "Could not open NGC database"; qWarning() << "Could not open NGC database";
} }
} }
@@ -61,10 +61,17 @@ bool Database::init(const QLatin1String &connectionName)
query.exec("CREATE INDEX IF NOT EXISTS maxRa_idx ON fits_files(maxRa)"); query.exec("CREATE INDEX IF NOT EXISTS maxRa_idx ON fits_files(maxRa)");
query.exec("CREATE INDEX IF NOT EXISTS minDec_idx ON fits_files(minDec)"); query.exec("CREATE INDEX IF NOT EXISTS minDec_idx ON fits_files(minDec)");
query.exec("CREATE INDEX IF NOT EXISTS maxDec_idx ON fits_files(maxDec)"); query.exec("CREATE INDEX IF NOT EXISTS maxDec_idx ON fits_files(maxDec)");
version = 1;
} }
else if(version > 1) if(version == 1)
{ {
qDebug() << "Database version is too new"; query.exec("CREATE INDEX IF NOT EXISTS id_file_key ON fits_headers(id_file, key)");
query.exec("PRAGMA user_version = 2");
version = 2;
}
if(version > 2)
{
qWarning() << "Database version is too new";
return false; return false;
} }
@@ -93,16 +100,16 @@ bool Database::init(const QLatin1String &connectionName)
m_deleteFile.prepare("DELETE FROM fits_files WHERE id=?"); m_deleteFile.prepare("DELETE FROM fits_files WHERE id=?");
return true; return true;
} }
qDebug() << error.text(); qWarning() << error.text();
} }
else else
{ {
qDebug() << "Failed to open database" << connectionName; qWarning() << "Failed to open database" << connectionName;
} }
} }
else else
{ {
qDebug() << "Database is invalid"; qWarning() << "Database is invalid";
} }
return false; return false;
} }
@@ -168,7 +175,7 @@ bool Database::checkError(QSqlQuery &query)
return true; return true;
else else
{ {
qDebug() << error.text(); qWarning() << error.text();
return false; return false;
} }
} }
@@ -307,6 +314,11 @@ QVector<SkyObject> Database::getObjects(double minRa, double maxRa, double minDe
return objects; return objects;
} }
const QSqlDatabase &Database::db() const
{
return database;
}
bool Database::indexDir2(const QDir &dir, QProgressDialog *progress, QStringList &scannedDirs) bool Database::indexDir2(const QDir &dir, QProgressDialog *progress, QStringList &scannedDirs)
{ {
if(scannedDirs.contains(dir.canonicalPath()))return true; if(scannedDirs.contains(dir.canonicalPath()))return true;
@@ -371,7 +383,7 @@ bool Database::indexFile(const QFileInfo &file)
m_insertFileWcs.bindValue(7, crVal2); m_insertFileWcs.bindValue(7, crVal2);
if(!m_insertFileWcs.exec()) if(!m_insertFileWcs.exec())
{ {
qDebug() << "Database error" << m_insertFileWcs.lastError(); qWarning() << "Database error" << m_insertFileWcs.lastError();
return false; return false;
} }
last_id = m_insertFileWcs.lastInsertId().toLongLong(); last_id = m_insertFileWcs.lastInsertId().toLongLong();
@@ -382,7 +394,7 @@ bool Database::indexFile(const QFileInfo &file)
m_insertFile.bindValue(1, mtime); m_insertFile.bindValue(1, mtime);
if(!m_insertFile.exec()) if(!m_insertFile.exec())
{ {
qDebug() << "Database error" << m_insertFile.lastError(); qWarning() << "Database error" << m_insertFile.lastError();
return false; return false;
} }
last_id = m_insertFile.lastInsertId().toLongLong(); last_id = m_insertFile.lastInsertId().toLongLong();
@@ -403,7 +415,7 @@ bool Database::indexFile(const QFileInfo &file)
m_insertFitsHeader.bindValue(3, comments); m_insertFitsHeader.bindValue(3, comments);
if(!m_insertFitsHeader.execBatch()) if(!m_insertFitsHeader.execBatch())
{ {
qDebug() << "Database error" << m_insertFitsHeader.lastError(); qWarning() << "Database error" << m_insertFitsHeader.lastError();
return false; return false;
} }
} }
+1
View File
@@ -42,6 +42,7 @@ public:
void reindex(QProgressDialog *progress); void reindex(QProgressDialog *progress);
QStringList getFitsKeywords(); QStringList getFitsKeywords();
QVector<SkyObject> getObjects(double minRa, double maxRa, double minDec, double maxDec); QVector<SkyObject> getObjects(double minRa, double maxRa, double minDec, double maxDec);
const QSqlDatabase& db() const;
protected: protected:
bool indexDir2(const QDir &dir, QProgressDialog *progress, QStringList &scannedDirs); bool indexDir2(const QDir &dir, QProgressDialog *progress, QStringList &scannedDirs);
bool indexFile(const QFileInfo &file); bool indexFile(const QFileInfo &file);
+591
View File
@@ -0,0 +1,591 @@
#include "databasetree.h"
#include "database.h"
#include "databaseview.h"
#include <QComboBox>
#include <QDialogButtonBox>
#include <QLabel>
#include <QPushButton>
#include <QSettings>
#include <QSqlError>
#include <QStackedWidget>
#include <QVBoxLayout>
DatabaseTreeSettings::DatabaseTreeSettings(const QStringList &data, QStringList keywords, QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("Add tree grouping"));
QVBoxLayout *vlayout = new QVBoxLayout(this);
setLayout(vlayout);
QStringList key = data[0].split('/');
qsizetype dateobsindex = keywords.indexOf("DATE-OBS");
if(dateobsindex != -1)
{
keywords.insert(dateobsindex + 1, "DATE-OBS_YEAR-MONTH-DAY");
keywords.insert(dateobsindex + 1, "DATE-OBS_YEAR-MONTH");
keywords.insert(dateobsindex + 1, "DATE-OBS_YEAR");
}
for(int i = 0; i < 10; i++)
{
QComboBox *comboxBox = new QComboBox(this);
comboxBox->addItem("");
comboxBox->addItems(keywords);
vlayout->addWidget(comboxBox);
_keywordsSelect.append(comboxBox);
if(i < key.size() && keywords.contains(key[i]))
comboxBox->setCurrentText(key[i]);
}
vlayout->addWidget(new QLabel(tr("Aggregate function"), this));
_aggregateFunction = new QComboBox(this);
_aggregateFunction->addItems({"", "SUM", "COUNT", "AVG", "MIN", "MAX", "MEDIAN"});
vlayout->addWidget(_aggregateFunction);
_aggregateFunction->setToolTip(tr("This aggregate function will be applied to last level of grouping"));
_aggregateFunction->setCurrentText(data[1]);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
connect(buttonBox, &QDialogButtonBox::accepted, this, &DatabaseTreeSettings::acceptButton);
connect(buttonBox, &QDialogButtonBox::rejected, this, &DatabaseTreeSettings::reject);
vlayout->addWidget(buttonBox);
}
QString DatabaseTreeSettings::keywords() const
{
QStringList keywords;
for(QComboBox *box : _keywordsSelect)
{
if(box->currentIndex() > 0)
keywords.append(box->currentText());
}
return keywords.join('/');
}
QString DatabaseTreeSettings::aggregrationFunc() const
{
return _aggregateFunction->currentText();
}
void DatabaseTreeSettings::acceptButton()
{
for(QComboBox *box : _keywordsSelect)
{
if(box->currentIndex() > 0)
{
QDialog::accept();
return;
}
}
QDialog::reject();
}
class TreeNode
{
public:
TreeNode() = default;
TreeNode(TreeNode *parent, const QVariant value, int level)
:_parent(parent)
,_value(value)
,_level(level)
{}
const TreeNode* child(size_t idx) const
{
if(idx >= 0 && idx < _children.size())
return _children[idx].get();
return nullptr;
}
TreeNode* child(size_t idx)
{
if(idx >= 0 && idx < _children.size())
return _children[idx].get();
return nullptr;
}
TreeNode* parent() const
{
return _parent;
}
int row() const
{
if(_parent)
return _parent->indexOf(this);
return 0;
}
int childCount() const
{
if(!_init)return 1;
return _children.size();
}
const QVariant& value() const
{
return _value;
}
void fill(const QVariantList &list)
{
_init = true;
for(auto &item : list)
_children.push_back(std::make_unique<TreeNode>(this, item, _level + 1));
}
bool filled() const
{
return _init;
}
int level() const
{
return _level;
}
private:
int indexOf(const TreeNode *child) const
{
auto f = [child](const std::unique_ptr<TreeNode> &i){ return i.get() == child; };
auto it = std::find_if(_children.begin(), _children.end(), f);
if(it != _children.end())return std::distance(_children.begin(), it);
return -1;
}
TreeNode *_parent = nullptr;
QVariant _value;
std::vector<std::unique_ptr<TreeNode>> _children;
bool _init = false;
int _level = 0;
};
DatabaseTree::DatabaseTree(Database *database, QObject *parent) : QAbstractItemModel(parent)
,_database(database)
{
_italicFont.setItalic(true);
}
void DatabaseTree::setKeys(const QStringList &keys)
{
_keys = keys;
if(!_loaded)return;
beginResetModel();
prepareQueries();
_rootNode = std::make_unique<TreeNode>();
fillNode(_rootNode.get());
endResetModel();
}
QStringList DatabaseTree::keys() const
{
return _keys;
}
QModelIndex DatabaseTree::index(int row, int column, const QModelIndex &parent) const
{
if(!hasIndex(row, column, parent))
return QModelIndex();
TreeNode *node;
if(!parent.isValid())
node = _rootNode.get();
else
node = static_cast<TreeNode*>(parent.internalPointer());
if(node)
{
TreeNode *child = node->child(row);
if(child)return createIndex(row, column, child);
}
return QModelIndex();
}
QModelIndex DatabaseTree::parent(const QModelIndex &index) const
{
if(!index.isValid())
return QModelIndex();
TreeNode *childNode = static_cast<TreeNode*>(index.internalPointer());
const TreeNode *parentNode = childNode->parent();
if (parentNode == _rootNode.get())
return QModelIndex();
return createIndex(parentNode->row(), 0, parentNode);
}
int DatabaseTree::rowCount(const QModelIndex &index) const
{
if(index.column() > 0)return 0;
TreeNode *node;
if(!index.isValid())
node = _rootNode.get();
else
node = static_cast<TreeNode*>(index.internalPointer());
if(node && node->level() <= _keys.size())
return node->childCount();
return 0;
}
int DatabaseTree::columnCount(const QModelIndex &index) const
{
Q_UNUSED(index);
return 1;
}
QVariant DatabaseTree::data(const QModelIndex &index, int role) const
{
if(!index.isValid())
return QVariant();
TreeNode *node = static_cast<TreeNode*>(index.internalPointer());
if(node == nullptr)
return QVariant();
switch(role)
{
case Qt::FontRole:
{
if(node->value().toString().isNull())
return _italicFont;
return QVariant();
}
case Qt::DisplayRole:
{
QString str = node->value().toString();
if(str.isNull())return "NULL";
else return str;
}
default:
return QVariant();
}
}
bool DatabaseTree::canFetchMore(const QModelIndex &parent) const
{
if(!parent.isValid())
return false;
TreeNode *node = static_cast<TreeNode*>(parent.internalPointer());
//qDebug() << "Can Fetch more" << node->value();
if(node)
return !node->filled();
return false;
}
void DatabaseTree::fetchMore(const QModelIndex &parent)
{
if(!parent.isValid())
return;
TreeNode *node = static_cast<TreeNode*>(parent.internalPointer());
//qDebug() << "Fetch more" << node->value();
if(node)
{
fillNode(node);
if(node->childCount() > 0)
{
beginInsertRows(parent, 0, node->childCount() - 1);
endInsertRows();
}
}
}
QVariant DatabaseTree::headerData(int section, Qt::Orientation orientation, int role) const
{
if(orientation == Qt::Horizontal && role == Qt::DisplayRole && section == 0)
return _keys.join('/');
return QVariant();
}
void DatabaseTree::load()
{
if(!_loaded)
{
_loaded = true;
setKeys(_keys);
}
}
QSqlQuery DatabaseTree::getGroupQuery(const QString &aggregateFunc) const
{
QStringList cols;
QString join;
QString sum;
for(int i = 0; i < _keys.size(); i++)
{
join += QString(" LEFT JOIN fits_headers AS h%1 ON f.id = h%1.id_file AND h%1.key = ?").arg(i);
if(_keys[i] == "DATE-OBS_YEAR")
cols.append(QString("STRFTIME('%Y', h%1.value)").arg(i));
else if(_keys[i] == "DATE-OBS_YEAR-MONTH")
cols.append(QString("STRFTIME('%Y-%m', h%1.value)").arg(i));
else if(_keys[i] == "DATE-OBS_YEAR-MONTH-DAY")
cols.append(QString("STRFTIME('%Y-%m-%d', h%1.value)").arg(i));
else
cols.append(QString("h%1.value").arg(i));
if(i == _keys.size() - 1)
{
QString tmp = aggregateFunc + "(" + cols.last() + ")";
if(aggregateFunc == "COUNT")
cols.append("COUNT(*)");
else
cols.last() = tmp;
}
}
QStringList group = cols;
group.removeLast();
QString sql = "SELECT " + cols.join(',') + " FROM fits_files AS f" + join + " GROUP BY " + group.join(',') + " ORDER BY " + cols.join(" NULLS LAST,") + " NULLS LAST";
QSqlQuery query(sql, _database->db());
for(auto &val : _keys)
{
if(val.startsWith("DATE-OBS_"))
query.addBindValue("DATE-OBS");
else
query.addBindValue(val);
}
qDebug() << "Group query" << sql;
if(!query.exec())
qWarning() << "Group query failed" << query.lastError();
return query;
}
void DatabaseTree::prepareQueries()
{
if(!_loaded)return;
_queries.clear();
QString join;
QString where;
for(int i = 0; i < _keys.size(); i++)
join += QString(" LEFT JOIN fits_headers AS h%1 ON f.id = h%1.id_file AND h%1.key = ?").arg(i);
for(int i = 0; i < _keys.size(); i++)
{
QString sql;
QString col = QString("h%1.value").arg(i);
if(_keys[i] == "DATE-OBS_YEAR")
col = QString("STRFTIME('%Y', h%1.value)").arg(i);
else if(_keys[i] == "DATE-OBS_YEAR-MONTH")
col = QString("STRFTIME('%Y-%m', h%1.value)").arg(i);
else if(_keys[i] == "DATE-OBS_YEAR-MONTH-DAY")
col = QString("STRFTIME('%Y-%m-%d', h%1.value)").arg(i);
sql = QString("SELECT %1 FROM fits_files AS f").arg(col) + join + where + QString(" GROUP BY %1 ORDER BY %1 NULLS LAST").arg(col);
qDebug() << "Tree query for" << _keys[i] << sql;
QSqlQuery query(sql, _database->db());
for(auto &val : _keys)
{
if(val.startsWith("DATE-OBS_"))
query.addBindValue("DATE-OBS");
else
query.addBindValue(val);
}
if(where.isEmpty())
where += QString(" WHERE %1 IS ?").arg(col);
else
where += QString(" AND %1 IS ?").arg(col);
_queries.append(std::move(query));
}
QSqlQuery files("SELECT f.file FROM fits_files AS f" + join + where + " GROUP BY f.id ORDER BY f.file", _database->db());
for(auto &val : _keys)
{
if(val.startsWith("DATE-OBS_"))
files.addBindValue("DATE-OBS");
else
files.addBindValue(val);
}
qDebug() << files.lastQuery();
_queries.append(std::move(files));
}
void DatabaseTree::fillNode(TreeNode *node)
{
if(node->filled())
return;
TreeNode *n = node;
QVariantList vals;
while(n->parent())
{
vals.prepend(n->value());
n = n->parent();
}
int level = vals.size();
if(level >= _queries.size())
{
qWarning() << "Level is too deep";
node->fill({});
return;
}
QSqlQuery &q = _queries[level];
for(int i = 0; i < level; i++)
q.bindValue(i + _keys.size(), vals[i]);
if(!q.exec())
{
qWarning() << "Failed to execute query" << q.lastError() << q.lastQuery() << q.boundValues();
node->fill({});
return;
}
QVariantList list;
while(q.next())
list.append(q.value(0));
node->fill(list);
}
DatabaseTreeView::DatabaseTreeView(Database *database, QWidget *parent) : QWidget(parent)
,_database(database)
{
QVBoxLayout *vlayout = new QVBoxLayout(this);
QHBoxLayout *hlayout = new QHBoxLayout(this);
_model = new DatabaseTree(database, this);
_treeView = new QTreeView(this);
_treeView->setModel(_model);
_treeView->setHeaderHidden(true);
_tableView = new CopyTableView(this);
_sqlModel = new QSqlQueryModel(this);
_tableView->setModel(_sqlModel);
QSettings settings;
QStringList filters = settings.value("databasetreeview/filters", QStringList{"OBJECT", "OBJECT/IMAGETYP", "OBJECT/IMAGETYP/FILTER", "OBJECT/IMAGETYP/FILTER/EXPTIME",
"IMAGETYP/OBJECT/IMAGETYP/FILTER/EXPTIME", "IMAGETYP/DATE-OBS_YEAR/EXPTIME"}).toStringList();
QStringList aggrFuncs = settings.value("databasetreeview/aggrFuncs", QStringList{"", "", "", "SUM", "SUM", "SUM"}).toStringList();
int selectedFilter = settings.value("databasetreeview/selectedFilter", 2).toInt();
_filters = new QComboBox(this);
for(int i = 0; i < std::min(filters.size(), aggrFuncs.size()); i++)
{
_filters->addItem(filters[i] + " " + aggrFuncs[i], QStringList{filters[i], aggrFuncs[i]});
}
_filters->setCurrentIndex(selectedFilter);
connect(_filters, &QComboBox::currentIndexChanged, this, &DatabaseTreeView::filterChanged);
filterChanged(_filters->currentIndex());
QStackedWidget *stackedWidget = new QStackedWidget;
stackedWidget->addWidget(_treeView);
stackedWidget->addWidget(_tableView);
QPushButton *addButton = new QPushButton(tr("Add"), this);
QPushButton *removeButton = new QPushButton(tr("Remove"), this);
QPushButton *treeTableButton = new QPushButton(tr("Tree/Table"), this);
treeTableButton->setCheckable(true);
connect(treeTableButton, &QPushButton::clicked, [stackedWidget](bool checked){
stackedWidget->setCurrentIndex(checked ? 1 : 0);
});
hlayout->addWidget(_filters, 1);
hlayout->addWidget(addButton);
hlayout->addWidget(removeButton);
hlayout->addWidget(treeTableButton);
vlayout->addLayout(hlayout);
vlayout->addWidget(stackedWidget);
connect(_treeView, &QTreeView::activated, [this](const QModelIndex &index){
if(!_model->hasChildren(index))
{
QString path = _model->data(index).toString();
emit loadFile(path);
}
});
connect(addButton, &QPushButton::clicked, this, &DatabaseTreeView::addFilter);
connect(removeButton, &QPushButton::clicked, this, &DatabaseTreeView::removeFilter);
}
DatabaseTreeView::~DatabaseTreeView()
{
QStringList filters;
QStringList aggrFuncs;
for(int i = 0; i < _filters->count(); i++)
{
QStringList data = _filters->itemData(i).toStringList();
filters.append(data[0]);
aggrFuncs.append(data[1]);
}
QSettings settings;
settings.setValue("databasetreeview/filters", filters);
settings.setValue("databasetreeview/aggrFuncs", aggrFuncs);
settings.setValue("databasetreeview/selectedFilter", _filters->currentIndex());
}
void DatabaseTreeView::addFilter()
{
QStringList keywords = _database->getFitsKeywords();
QStringList data = _filters->currentData().toStringList();
DatabaseTreeSettings settings(data, keywords, this);
int result = settings.exec();
if(result == QDialog::Accepted)
{
QString keywords = settings.keywords();
QString aggrFunc = settings.aggregrationFunc();
QString text = keywords + " " + aggrFunc;
int idx = _filters->findText(text);
if(idx == -1)
{
_filters->addItem(text, QStringList{keywords, aggrFunc});
_filters->setCurrentText(text);
}
else
{
_filters->setCurrentIndex(idx);
}
}
}
void DatabaseTreeView::removeFilter()
{
if(_filters->count() > 1)
_filters->removeItem(_filters->currentIndex());
}
void DatabaseTreeView::filterChanged(int index)
{
QStringList data = _filters->itemData(index).toStringList();
QStringList keys = data[0].split('/');
_model->setKeys(keys);
setQuery(data[1]);
}
void DatabaseTreeView::visible(bool visible)
{
if(visible && !_loaded)
{
_loaded = true;
_model->load();
QStringList data = _filters->currentData().toStringList();
setQuery(data[1]);
}
}
void DatabaseTreeView::setQuery(const QString &func)
{
QStringList keys = _model->keys();
int i = 0;
_sqlModel->setQuery(_model->getGroupQuery(func));
if(!func.isEmpty())
{
QString tmp = func + "(" + keys.last() + ")";
if(func == "COUNT")
keys.append("COUNT");
else
keys.last() = tmp;
}
for(auto &key : keys)
_sqlModel->setHeaderData(i++, Qt::Horizontal, key);
_tableView->resizeColumnsToContents();
}
+83
View File
@@ -0,0 +1,83 @@
#ifndef DATABASETREE_H
#define DATABASETREE_H
#include <QAbstractItemModel>
#include <QComboBox>
#include <QDialog>
#include <QFont>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QTableView>
#include <QTreeView>
#include <memory>
class Database;
class TreeNode;
class DatabaseTreeSettings : public QDialog
{
Q_OBJECT
public:
explicit DatabaseTreeSettings(const QStringList &data, QStringList keywords, QWidget *parent = nullptr);
QString keywords() const;
QString aggregrationFunc() const;
public slots:
void acceptButton();
private:
QVector<QComboBox*> _keywordsSelect;
QComboBox *_aggregateFunction;
};
class DatabaseTree : public QAbstractItemModel
{
public:
explicit DatabaseTree(Database *database, QObject *parent = nullptr);
void setKeys(const QStringList &keys);
QStringList keys() const;
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
QModelIndex parent(const QModelIndex &index) const override;
int rowCount(const QModelIndex &index) const override;
int columnCount(const QModelIndex &index) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
bool canFetchMore(const QModelIndex &parent) const override;
void fetchMore(const QModelIndex &parent) override;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
void load();
QSqlQuery getGroupQuery(const QString &aggregateFunc) const;
private:
void prepareQueries();
void fillNode(TreeNode *node);
Database *_database = nullptr;
std::unique_ptr<TreeNode> _rootNode;
QVector<QSqlQuery> _queries;
QStringList _keys;
QFont _italicFont;
bool _loaded = false;
};
class DatabaseTreeView : public QWidget
{
Q_OBJECT
public:
explicit DatabaseTreeView(Database *database, QWidget *parent = nullptr);
virtual ~DatabaseTreeView();
public slots:
void addFilter();
void removeFilter();
void filterChanged(int index);
void visible(bool visible);
private:
void setQuery(const QString &func);
signals:
void loadFile(const QString &file);
private:
QComboBox *_filters = nullptr;
QTreeView *_treeView = nullptr;
QTableView *_tableView = nullptr;
DatabaseTree *_model = nullptr;
QSqlQueryModel *_sqlModel = nullptr;
Database *_database = nullptr;
bool _loaded = false;
};
#endif // DATABASETREE_H
+88
View File
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>511</width>
<height>487</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>120</x>
<y>390</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QComboBox" name="comboBox">
<property name="geometry">
<rect>
<x>60</x>
<y>30</y>
<width>86</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>180</x>
<y>30</y>
<width>113</width>
<height>26</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
+123 -10
View File
@@ -9,6 +9,9 @@
#include <QMenu> #include <QMenu>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QRegularExpression> #include <QRegularExpression>
#include <QGuiApplication>
#include <QClipboard>
#include <QMimeData>
#include <iostream> #include <iostream>
#include "batchprocessing.h" #include "batchprocessing.h"
@@ -157,32 +160,67 @@ void FITSFileModel::filesUnmarked(const QModelIndexList &indexes)
} }
} }
void FITSFileModel::load()
{
if(!m_loaded)
{
m_loaded = true;
prepareQuery();
}
}
void FITSFileModel::prepareQuery() void FITSFileModel::prepareQuery()
{ {
if(!m_loaded)return;
QString cols; QString cols;
QString join; QString join;
QStringList where; QStringList where;
QString sql = m_columns.size() ? "SELECT f.file," : "SELECT f.file"; QString sql = m_columns.size() ? "SELECT f.file," : "SELECT f.file";
QVariantList bindValues;
QVariantList bindValuesJoin;
for(int i=0; i<m_value.size(); i++) for(int i=0; i<m_value.size(); i++)
{ {
if(m_key[i] == "file") if(m_key[i] == "file")
where.append(QString(" f.file LIKE '%1' ").arg(m_value[i])); {
where.append(" f.file LIKE ? ");
bindValues.append(m_value[i]);
}
else if(m_key[i] == "RA pos") else if(m_key[i] == "RA pos")
where.append(QString(" %1 BETWEEN f.minRa AND f.maxRa ").arg(RA(m_value[i]))); {
where.append(" ? BETWEEN f.minRa AND f.maxRa ");
bindValues.append(RA(m_value[i]));
}
else if(m_key[i] == "DEC pos") else if(m_key[i] == "DEC pos")
where.append(QString(" %1 BETWEEN f.minDec AND f.maxDec ").arg(DEC(m_value[i]))); {
where.append(" ? BETWEEN f.minDec AND f.maxDec ");
bindValues.append(DEC(m_value[i]));
}
else if(m_key[i] == "RA range") else if(m_key[i] == "RA range")
where.append(QString(" crVal1 BETWEEN %1 AND %2 ").arg(RA(m_value[i])).arg(RA(m_limit[i]))); {
where.append(" crVal1 BETWEEN ? AND ? ");
bindValues.append(RA(m_value[i]));
bindValues.append(RA(m_limit[i]));
}
else if(m_key[i] == "DEC range") else if(m_key[i] == "DEC range")
where.append(QString(" crVal2 BETWEEN %1 AND %2 ").arg(DEC(m_value[i])).arg(DEC(m_limit[i]))); {
where.append(" crVal2 BETWEEN ? AND ? ");
bindValues.append(DEC(m_value[i]));
bindValues.append(DEC(m_limit[i]));
}
else else
join += QString(" JOIN fits_headers AS s%1 ON f.id=s%1.id_file AND s%1.key='%2' AND s%1.value LIKE '%3'").arg(i).arg(m_key[i]).arg(m_value[i]); {
join += QString(" JOIN fits_headers AS s%1 ON f.id=s%1.id_file AND s%1.key=? AND s%1.value LIKE ? ").arg(i);
bindValuesJoin.append(m_key[i]);
bindValuesJoin.append(m_value[i]);
}
} }
int i=0; int i=0;
for(auto &column : m_columns) for(auto &column : m_columns)
{ {
cols += QString("GROUP_CONCAT(h%1.value) AS h%1_value,").arg(i); cols += QString("GROUP_CONCAT(h%1.value) AS h%1_value,").arg(i);
join += QString(" LEFT JOIN fits_headers AS h%1 ON f.id=h%1.id_file AND h%1.key='%2'").arg(i).arg(column); join += QString(" LEFT JOIN fits_headers AS h%1 ON f.id=h%1.id_file AND h%1.key=?").arg(i);
bindValuesJoin.append(column);
i++; i++;
} }
cols.chop(1); cols.chop(1);
@@ -191,7 +229,19 @@ void FITSFileModel::prepareQuery()
sql += join; sql += join;
if(!where.isEmpty())sql += " WHERE " + where.join("AND"); if(!where.isEmpty())sql += " WHERE " + where.join("AND");
sql += " GROUP BY f.id" + m_sort; sql += " GROUP BY f.id" + m_sort;
setQuery(sql);
QSqlQuery query(m_database->db());
query.prepare(sql);
for(auto &val : bindValuesJoin)
query.addBindValue(val);
for(auto &val : bindValues)
query.addBindValue(val);
if(!query.exec())
qWarning() << "Failed to exectute query" << query.lastQuery() << bindValuesJoin << bindValues;
else
setQuery(std::move(query));
setHeaderData(0, Qt::Horizontal, tr("File name")); setHeaderData(0, Qt::Horizontal, tr("File name"));
i = 1; i = 1;
for(auto &column : m_columns) for(auto &column : m_columns)
@@ -206,7 +256,7 @@ void FITSFileModel::prepareQuery()
m_markedFiles = QSet<QString>(list.begin(), list.end()); m_markedFiles = QSet<QString>(list.begin(), list.end());
} }
DatabaseTableView::DatabaseTableView(QWidget *parent) : QTableView(parent) DatabaseTableView::DatabaseTableView(QWidget *parent) : CopyTableView(parent)
{ {
} }
@@ -217,6 +267,7 @@ void DatabaseTableView::contextMenuEvent(QContextMenuEvent *event)
QAction *unmark = menu.addAction(tr("Unmark")); QAction *unmark = menu.addAction(tr("Unmark"));
QAction *open = menu.addAction(tr("Open")); QAction *open = menu.addAction(tr("Open"));
QAction *openDirAction = menu.addAction(tr("Open file location")); QAction *openDirAction = menu.addAction(tr("Open file location"));
QAction *copyPath = menu.addAction(tr("Copy files"));
QAction *a = menu.exec(event->globalPos()); QAction *a = menu.exec(event->globalPos());
if(a == nullptr) if(a == nullptr)
@@ -232,6 +283,22 @@ void DatabaseTableView::contextMenuEvent(QContextMenuEvent *event)
emit openFile(indexes); emit openFile(indexes);
else if(a == openDirAction) else if(a == openDirAction)
emit openDir(indexes); emit openDir(indexes);
else if(a == copyPath)
{
QStringList paths;
QList<QUrl> urls;
for(auto &index : indexes)
{
QString path = index.siblingAtColumn(0).data().toString();
paths.append(path);
urls.append(QUrl::fromLocalFile(path));
}
QMimeData *data = new QMimeData;
data->setUrls(urls);
data->setText(paths.join('\n'));
QClipboard *clipboard = QGuiApplication::clipboard();
clipboard->setMimeData(data);
}
} }
DataBaseView::DataBaseView(Database *database, QWidget *parent) : QWidget(parent) DataBaseView::DataBaseView(Database *database, QWidget *parent) : QWidget(parent)
@@ -300,12 +367,13 @@ DataBaseView::DataBaseView(Database *database, QWidget *parent) : QWidget(parent
}; };
QStringList fitsKeywords = m_database->getFitsKeywords(); QStringList fitsKeywords = m_database->getFitsKeywords();
QStringList filterKey = settings.value("databaseview/filterKey", QStringList{"file", "file", "file"}).toStringList();
for(int i=0; i<3; i++) for(int i=0; i<3; i++)
{ {
m_filterKeyword[i] = new QComboBox(this); m_filterKeyword[i] = new QComboBox(this);
m_filterKeyword[i]->setMaximumWidth(300); m_filterKeyword[i]->setMaximumWidth(300);
addFilterItems(m_filterKeyword[i], fitsKeywords); addFilterItems(m_filterKeyword[i], fitsKeywords);
m_filterKeyword[i]->setCurrentText(filterKey[i]);
m_search[i] = new QLineEdit(this); m_search[i] = new QLineEdit(this);
m_search[i]->setPlaceholderText(tr("Text to search, you can % as wildcard")); m_search[i]->setPlaceholderText(tr("Text to search, you can % as wildcard"));
@@ -339,8 +407,13 @@ DataBaseView::DataBaseView(Database *database, QWidget *parent) : QWidget(parent
DataBaseView::~DataBaseView() DataBaseView::~DataBaseView()
{ {
QStringList filterKey;
for(int i = 0; i < 3; i++)
filterKey.append(m_filterKeyword[i]->currentText());
QSettings settings; QSettings settings;
settings.setValue("databaseview/header", m_tableView->horizontalHeader()->saveState()); settings.setValue("databaseview/header", m_tableView->horizontalHeader()->saveState());
settings.setValue("databaseview/filterKey", filterKey);
} }
void DataBaseView::selectColumns() void DataBaseView::selectColumns()
@@ -392,6 +465,7 @@ bool DataBaseView::exportCSV(const QString &path)
if(!csv.open(QIODevice::WriteOnly | QIODevice::Text)) if(!csv.open(QIODevice::WriteOnly | QIODevice::Text))
return false; return false;
m_model->load();
QSqlQuery sql(m_model->query().lastQuery()); QSqlQuery sql(m_model->query().lastQuery());
int colCount = m_model->columnCount(); int colCount = m_model->columnCount();
QStringList header; QStringList header;
@@ -420,3 +494,42 @@ bool DataBaseView::exportCSV(const QString &path)
} }
return true; return true;
} }
void DataBaseView::visible(bool visible)
{
if(visible)m_model->load();
}
CopyTableView::CopyTableView(QWidget *parent) : QTableView(parent)
{
}
void CopyTableView::keyPressEvent(QKeyEvent *event)
{
if(event->matches(QKeySequence::Copy))
{
QModelIndexList list = selectedIndexes();
QString table;
if(list.size() == 0)return;
int row = list.first().row();
int col = list.first().column();
for(auto &index : list)
{
if(row != index.row())
table.append('\n');
else if(col != index.column())
table.append('\t');
table.append(index.data().toString());
row = index.row();
col = index.column();
}
qApp->clipboard()->setText(table);
event->accept();
}
else
{
QTableView::keyPressEvent(event);
}
}
+12 -1
View File
@@ -30,6 +30,7 @@ class FITSFileModel : public QSqlQueryModel
QStringList m_limit; QStringList m_limit;
QSet<QString> m_markedFiles; QSet<QString> m_markedFiles;
Database *m_database; Database *m_database;
bool m_loaded = false;
public: public:
explicit FITSFileModel(Database *database, QObject *parent = nullptr); explicit FITSFileModel(Database *database, QObject *parent = nullptr);
void sort(int column, Qt::SortOrder order) override; void sort(int column, Qt::SortOrder order) override;
@@ -38,11 +39,20 @@ public:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
void filesMarked(const QModelIndexList &indexes); void filesMarked(const QModelIndexList &indexes);
void filesUnmarked(const QModelIndexList &indexes); void filesUnmarked(const QModelIndexList &indexes);
void load();
protected: protected:
void prepareQuery(); void prepareQuery();
}; };
class DatabaseTableView : public QTableView class CopyTableView : public QTableView
{
Q_OBJECT
public:
explicit CopyTableView(QWidget *parent = nullptr);
void keyPressEvent(QKeyEvent *event);
};
class DatabaseTableView : public CopyTableView
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -74,6 +84,7 @@ public slots:
void itemActivated(const QModelIndex &index); void itemActivated(const QModelIndex &index);
void applyFilter(); void applyFilter();
bool exportCSV(const QString &path); bool exportCSV(const QString &path);
void visible(bool visible);
signals: signals:
void loadFile(QString file); void loadFile(QString file);
}; };
+10 -6
View File
@@ -345,18 +345,22 @@ Download::Download(QNetworkReply *reply, const QString indexPath, QObject *paren
filename.remove(QRegularExpression("\\.zst$")); filename.remove(QRegularExpression("\\.zst$"));
_fw.setFileName(indexPath + "/" + filename); _fw.setFileName(indexPath + "/" + filename);
_fw.open(QIODevice::WriteOnly | QIODevice::Truncate); if(_fw.open(QIODevice::WriteOnly | QIODevice::Truncate))
if(_fw.isOpen())
{ {
qDebug() << "open file" << _fw.fileName(); qDebug() << "open file" << _fw.fileName();
_dstream = ZSTD_createDStream();
}
else
{
qWarning() << "Failed to open file" << _fw.fileName();
abort();
} }
_dstream = ZSTD_createDStream();
} }
Download::~Download() Download::~Download()
{ {
ZSTD_freeDStream(_dstream); if(_dstream)
ZSTD_freeDStream(_dstream);
} }
void Download::abort() void Download::abort()
@@ -402,7 +406,7 @@ void Download::finished()
void Download::decompress(QByteArray &data) void Download::decompress(QByteArray &data)
{ {
if(data.isEmpty())return; if(data.isEmpty() || _dstream == nullptr)return;
_hash.addData(data); _hash.addData(data);
+2 -2
View File
@@ -11,8 +11,8 @@
class Download : public QObject class Download : public QObject
{ {
Q_OBJECT Q_OBJECT
QNetworkReply *_reply; QNetworkReply *_reply = nullptr;
ZSTD_DStream *_dstream; ZSTD_DStream *_dstream = nullptr;
QFile _fw; QFile _fw;
QCryptographicHash _hash; QCryptographicHash _hash;
public: public:
+2
View File
@@ -11,6 +11,8 @@ ImageInfo::ImageInfo(QWidget *parent) : QTreeWidget(parent)
setIndentation(5); setIndentation(5);
QSettings settings; QSettings settings;
header()->restoreState(settings.value("imageinfo/headerstate").toByteArray()); header()->restoreState(settings.value("imageinfo/headerstate").toByteArray());
setSortingEnabled(true);
header()->setSortIndicatorClearable(true);
} }
ImageInfo::~ImageInfo() ImageInfo::~ImageInfo()
+1
View File
@@ -30,6 +30,7 @@ FITSRecord::FITSRecord(const LibXISF::FITSKeyword &record)
string.chop(1); string.chop(1);
string.remove(0, 1); string.remove(0, 1);
} }
string = string.trimmed();
bool isint; bool isint;
bool isdouble; bool isdouble;
double vald = string.toDouble(&isdouble); double vald = string.toDouble(&isdouble);
+24 -20
View File
@@ -111,7 +111,7 @@ void Image::thumbnailLoadFinish(std::shared_ptr<RawImage> rawImage)
emit thumbnailLoaded(this); emit thumbnailLoaded(this);
} }
ImageRingList::ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent) : QAbstractItemModel(parent) ImageRingList::ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent) : QAbstractListModel(parent)
, m_liveMode(false) , m_liveMode(false)
, m_analyzeLevel(None) , m_analyzeLevel(None)
, m_database(database) , m_database(database)
@@ -412,7 +412,7 @@ void ImageRingList::clearThumbnails()
img->clearThumbnail(); img->clearThumbnail();
} }
QModelIndex ImageRingList::index(int row, int column, const QModelIndex &parent) const /*QModelIndex ImageRingList::index(int row, int column, const QModelIndex &parent) const
{ {
Q_UNUSED(parent); Q_UNUSED(parent);
return createIndex(row, column, m_images.at(row).get()); return createIndex(row, column, m_images.at(row).get());
@@ -422,7 +422,7 @@ QModelIndex ImageRingList::parent(const QModelIndex &child) const
{ {
Q_UNUSED(child); Q_UNUSED(child);
return QModelIndex(); return QModelIndex();
} }*/
int ImageRingList::rowCount(const QModelIndex &parent) const int ImageRingList::rowCount(const QModelIndex &parent) const
{ {
@@ -432,31 +432,35 @@ int ImageRingList::rowCount(const QModelIndex &parent) const
return 0; return 0;
} }
int ImageRingList::columnCount(const QModelIndex &parent) const /*int ImageRingList::columnCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent); Q_UNUSED(parent);
return 1; return 1;
} }*/
QVariant ImageRingList::data(const QModelIndex &index, int role) const QVariant ImageRingList::data(const QModelIndex &index, int role) const
{ {
switch(role) if(index.isValid() && index.row() >= 0 && index.row() < m_images.size())
{ {
case Qt::DisplayRole: switch(role)
{ {
QFileInfo info(m_images.at(index.row())->name()); case Qt::DisplayRole:
return info.fileName(); {
} QFileInfo info(m_images.at(index.row())->name());
case Qt::FontRole: return info.fileName();
{ }
bool marked = m_database->isMarked(m_images.at(index.row())->name()); case Qt::FontRole:
QFont font; {
font.setBold(marked); bool marked = m_database->isMarked(m_images.at(index.row())->name());
return font; QFont font;
} font.setBold(marked);
default: return font;
return QVariant(); }
default:
return QVariant();
}
} }
return QVariant();
} }
QVariant ImageRingList::headerData(int section, Qt::Orientation orientation, int role) const QVariant ImageRingList::headerData(int section, Qt::Orientation orientation, int role) const
+4 -4
View File
@@ -51,7 +51,7 @@ typedef std::shared_ptr<Image> ImagePtr;
class Database; class Database;
class ImageRingList : public QAbstractItemModel class ImageRingList : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
int m_width; int m_width;
@@ -93,10 +93,10 @@ public:
void updateMark(); void updateMark();
void clearThumbnails(); void clearThumbnails();
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; //QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
QModelIndex parent(const QModelIndex &child) const override; //QModelIndex parent(const QModelIndex &child) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override; //int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
public slots: public slots:
+6 -6
View File
@@ -154,7 +154,7 @@ void ImageWidgetGL::setImage(std::shared_ptr<RawImage> image, int index)
m_image->bind(); m_image->bind();
f->glPixelStorei(GL_UNPACK_ALIGNMENT, 4); f->glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
f->glGenerateMipmap(GL_TEXTURE_2D); f->glGenerateMipmap(GL_TEXTURE_2D);
qDebug() << "setImage" << timer.elapsed(); qDebug() << "ImageWidgetGL::setImage" << timer.elapsed() << "ms";
m_swPaint = f->glGetError() != GL_NO_ERROR; m_swPaint = f->glGetError() != GL_NO_ERROR;
} }
@@ -721,19 +721,19 @@ void ImageWidgetGL::initializeGL()
logger->startLogging(); logger->startLogging();
connect(logger, &QOpenGLDebugLogger::messageLogged, [](const QOpenGLDebugMessage &message) connect(logger, &QOpenGLDebugLogger::messageLogged, [](const QOpenGLDebugMessage &message)
{ {
qDebug() << message; qDebug() << "OpenGL debug" << message;
}); });
qDebug() << "Vendor:" << (char*)f->glGetString(GL_VENDOR); qDebug() << "OpenGL Vendor:" << (char*)f->glGetString(GL_VENDOR);
qDebug() << "Renderer:" << (char*)f->glGetString(GL_RENDERER); qDebug() << "OpenGL Renderer:" << (char*)f->glGetString(GL_RENDERER);
qDebug() << "Version:" << (char*)f->glGetString(GL_VERSION); qDebug() << "OpenGL Version:" << (char*)f->glGetString(GL_VERSION);
f->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &m_maxTextureSize); f->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &m_maxTextureSize);
f->glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &m_maxArrayLayers); f->glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &m_maxArrayLayers);
qDebug() << "Max texture size:" << m_maxTextureSize << "max layers:" << m_maxArrayLayers; qDebug() << "Max texture size:" << m_maxTextureSize << "max layers:" << m_maxArrayLayers;
//MANUAL_MIPMAP_GEN = QString((const char*)f->glGetString(GL_VENDOR)).startsWith("ATI Technologies Inc", Qt::CaseInsensitive); //MANUAL_MIPMAP_GEN = QString((const char*)f->glGetString(GL_VENDOR)).startsWith("ATI Technologies Inc", Qt::CaseInsensitive);
qDebug() << context()->format(); qDebug() << "OpenGL context format" << context()->format();
// each vertex is x,y 2D position and s,t texture coordinates // each vertex is x,y 2D position and s,t texture coordinates
float vertexs[] = {-1.0f, -1.0f, 0.0f, 1.0f, float vertexs[] = {-1.0f, -1.0f, 0.0f, 1.0f,
+7 -7
View File
@@ -95,7 +95,7 @@ bool loadFITS(const QString path, ImageInfoData &info, std::shared_ptr<RawImage>
char err[100]; char err[100];
fits_get_errstatus(status, err); fits_get_errstatus(status, err);
info.info.append({QObject::tr("Error"), QString(err)}); info.info.append({QObject::tr("Error"), QString(err)});
qDebug() << "Failed to load FITS file" << err; qWarning() << "Failed to load FITS file" << err;
return false; return false;
}; };
@@ -335,7 +335,7 @@ bool loadXISF(const QString &path, ImageInfoData &info, std::shared_ptr<RawImage
catch (LibXISF::Error &err) catch (LibXISF::Error &err)
{ {
info.info.append(QPair<QString, QString>("Error", err.what())); info.info.append(QPair<QString, QString>("Error", err.what()));
qDebug() << "Failed to load XISF" << err.what(); qWarning() << "Failed to load XISF" << err.what();
return false; return false;
} }
info.info.append({QObject::tr("Error"), QObject::tr("Unsupported sample format")}); info.info.append({QObject::tr("Error"), QObject::tr("Unsupported sample format")});
@@ -382,7 +382,7 @@ bool readXISFHeader(const QString &path, ImageInfoData &info)
} }
catch (LibXISF::Error &err) catch (LibXISF::Error &err)
{ {
qDebug() << err.what(); qWarning() << "LibXISF error" << err.what();
return false; return false;
} }
return true; return true;
@@ -455,17 +455,17 @@ bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImag
if(path.endsWith(".CR2", Qt::CaseInsensitive) || path.endsWith(".CR3", Qt::CaseInsensitive) || path.endsWith(".NEF", Qt::CaseInsensitive) || path.endsWith(".DNG", Qt::CaseInsensitive)) if(path.endsWith(".CR2", Qt::CaseInsensitive) || path.endsWith(".CR3", Qt::CaseInsensitive) || path.endsWith(".NEF", Qt::CaseInsensitive) || path.endsWith(".DNG", Qt::CaseInsensitive))
{ {
ret = loadRAW(path, info, rawImage); ret = loadRAW(path, info, rawImage);
qDebug() << "LoadRAW" << timer.elapsed(); qDebug() << "LoadRAW" << timer.elapsed() << "ms";
} }
else if(isFITS(fileInfo.suffix())) else if(isFITS(fileInfo.suffix()))
{ {
ret = loadFITS(path, info, rawImage, planar, index); ret = loadFITS(path, info, rawImage, planar, index);
qDebug() << "LoadFITS" << timer.elapsed(); qDebug() << "LoadFITS" << timer.elapsed() << "ms";
} }
else if(isXISF(fileInfo.suffix())) else if(isXISF(fileInfo.suffix()))
{ {
ret = loadXISF(path, info, rawImage, planar, index); ret = loadXISF(path, info, rawImage, planar, index);
qDebug() << "LoadXISF" << timer.elapsed(); qDebug() << "LoadXISF" << timer.elapsed() << "ms";
} }
else else
{ {
@@ -481,7 +481,7 @@ bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImag
exif_data_free(exif); exif_data_free(exif);
} }
rawImage = std::make_shared<RawImage>(img); rawImage = std::make_shared<RawImage>(img);
qDebug() << "LoadQImage" << timer.elapsed(); qDebug() << "LoadQImage" << timer.elapsed() << "ms";
ret = !img.isNull(); ret = !img.isNull();
} }
return ret; return ret;
+30 -2
View File
@@ -6,6 +6,9 @@
#include <QSettings> #include <QSettings>
#include <stdlib.h> #include <stdlib.h>
#include "../thumbnailer/genthumbnail.h" #include "../thumbnailer/genthumbnail.h"
#ifdef Q_OS_WIN64
#include <windows.h>
#endif
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@@ -19,12 +22,24 @@ int main(int argc, char *argv[])
bool useGLES = true; bool useGLES = true;
#endif #endif
#ifdef Q_OS_WIN64
if(AttachConsole(ATTACH_PARENT_PROCESS))
{
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
}
#endif
QCommandLineParser cmd; QCommandLineParser cmd;
cmd.addOption({"gl", "Use desktop OpenGL. This is default on x86 and MacOS platform."}); cmd.addOption({"gl", "Use desktop OpenGL. This is default on x86 and MacOS platform."});
cmd.addOption({"gles", "Use OpenGL ES. This is default on ARM platform."}); cmd.addOption({"gles", "Use OpenGL ES. This is default on ARM platform."});
cmd.addOption({{"thumb", "thumbnail"}, "Generate thumbnail and save it to path.", "path"}); cmd.addOption({{"thumb", "thumbnail"}, "Generate thumbnail and save it to path.", "path"});
cmd.addOption({{"s", "size"}, "Size of the thumbnails in pixels (default: 128)", "size", "128"}); cmd.addOption({{"s", "size"}, "Size of the thumbnails in pixels (default: 128)", "size", "128"});
cmd.addPositionalArgument("file", "File to open"); cmd.addPositionalArgument("file", "Files or paths to open");
cmd.addOption({"script", "Execute script", "script"});
cmd.addOption({"scriptarg", "String that will be passed to script as variable \"scriparg\"", "arg"});
cmd.addOption({"outdir", "Output dir for script (default: CWD)", "dir", "."});
cmd.addOption({"noexit", "Do not exit application when script finish"});
cmd.addHelpOption(); cmd.addHelpOption();
QStringList cmdArgs; QStringList cmdArgs;
for(int i = 0; i < argc; i++) for(int i = 0; i < argc; i++)
@@ -96,7 +111,7 @@ int main(int argc, char *argv[])
MainWindow w; MainWindow w;
w.show(); w.show();
if(!cmd.positionalArguments().isEmpty()) if(!cmd.positionalArguments().isEmpty() && !cmd.isSet("script"))
{ {
QStringList files = cmd.positionalArguments(); QStringList files = cmd.positionalArguments();
QStringList paths; QStringList paths;
@@ -113,5 +128,18 @@ int main(int argc, char *argv[])
w.loadFiles(paths); w.loadFiles(paths);
} }
if(cmd.isSet("script"))
{
QStringList paths = cmd.positionalArguments();
QString script = cmd.value("script");
QString outdir = cmd.value("outdir");
QString arg = cmd.value("scriptarg");
if(!QDir::isAbsolutePath(script))script = QDir::currentPath() + "/" + script;
if(!QDir::isAbsolutePath(outdir))outdir = QDir::currentPath() + "/" + outdir;
bool noexit = cmd.isSet("noexit");
if(!noexit)w.hide();
w.runScript(script, outdir, paths, arg, !noexit);
}
return a.exec(); return a.exec();
} }
+35 -2
View File
@@ -23,6 +23,7 @@
#include <QDesktopServices> #include <QDesktopServices>
#include <QJsonDocument> #include <QJsonDocument>
#include <QNetworkReply> #include <QNetworkReply>
#include <QTimer>
#include "loadrunable.h" #include "loadrunable.h"
#include "markedfiles.h" #include "markedfiles.h"
#include "about.h" #include "about.h"
@@ -127,6 +128,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
_plateSolving->hide(); _plateSolving->hide();
#endif #endif
_databaseTree = new DatabaseTree(m_database, this);
QToolBar *navigationToolbar = new QToolBar(tr("Navigation toolbar"), this); QToolBar *navigationToolbar = new QToolBar(tr("Navigation toolbar"), this);
navigationToolbar->setObjectName("navigationtoolbar"); navigationToolbar->setObjectName("navigationtoolbar");
navigationToolbar->hide(); navigationToolbar->hide();
@@ -153,6 +156,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
databaseViewDock->setWidget(m_databaseView); databaseViewDock->setWidget(m_databaseView);
databaseViewDock->setObjectName("databaseViewDock"); databaseViewDock->setObjectName("databaseViewDock");
databaseViewDock->hide(); databaseViewDock->hide();
connect(databaseViewDock, &QDockWidget::visibilityChanged, m_databaseView, &DataBaseView::visible);
addDockWidget(Qt::BottomDockWidgetArea, databaseViewDock); addDockWidget(Qt::BottomDockWidgetArea, databaseViewDock);
QDockWidget *filetreeDock = nullptr; QDockWidget *filetreeDock = nullptr;
@@ -171,6 +175,15 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
histogramDock->hide(); histogramDock->hide();
addDockWidget(Qt::LeftDockWidgetArea, histogramDock); addDockWidget(Qt::LeftDockWidgetArea, histogramDock);
DatabaseTreeView *databaseTreeView = new DatabaseTreeView(m_database, this);
QDockWidget *databaseTreeDock = new QDockWidget(tr("Database Tree"), this);
databaseTreeDock->setObjectName("databasetreeDock");
databaseTreeDock->setWidget(databaseTreeView);
databaseTreeDock->hide();
connect(databaseTreeDock, &QDockWidget::visibilityChanged, databaseTreeView, &DatabaseTreeView::visible);
connect(databaseTreeView, &DatabaseTreeView::loadFile, this, static_cast<void (MainWindow::*)(const QString &)>(&MainWindow::loadFile));
addDockWidget(Qt::BottomDockWidgetArea, databaseTreeDock);
setWindowTitle(tr("Tenmon")); setWindowTitle(tr("Tenmon"));
connect(m_ringList, &ImageRingList::pixmapLoaded, m_image, &ImageScrollArea::imageLoaded); connect(m_ringList, &ImageRingList::pixmapLoaded, m_image, &ImageScrollArea::imageLoaded);
@@ -196,7 +209,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
#endif #endif
fileMenu->addAction(tr("Copy marked files"), Qt::Key_F5, this, &MainWindow::copyMarked); fileMenu->addAction(tr("Copy marked files"), Qt::Key_F5, this, &MainWindow::copyMarked);
fileMenu->addAction(tr("Move marked files"), Qt::Key_F6, this, &MainWindow::moveMarked); fileMenu->addAction(tr("Move marked files"), Qt::Key_F6, this, &MainWindow::moveMarked);
fileMenu->addAction(tr("Move marked files to trash"), QKeySequence::Delete, this, &MainWindow::deleteMarked); QAction *deleteAction = fileMenu->addAction(tr("Move marked files to trash"), QKeySequence::Delete, this, &MainWindow::deleteMarked);
#ifdef Q_OS_MACOS
deleteAction->setShortcuts(QList<QKeySequence>({Qt::Key_Backspace, QKeySequence::Delete}));
#else
deleteAction->setShortcuts(QKeySequence::Delete);
#endif
fileMenu->addSeparator(); fileMenu->addSeparator();
fileMenu->addAction(tr("Index directory"), this, static_cast<void (MainWindow::*)()>(&MainWindow::indexDir)); fileMenu->addAction(tr("Index directory"), this, static_cast<void (MainWindow::*)()>(&MainWindow::indexDir));
fileMenu->addAction(tr("Reindex files"), this, &MainWindow::reindex); fileMenu->addAction(tr("Reindex files"), this, &MainWindow::reindex);
@@ -330,6 +348,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
dockMenu->addAction(navigationToolbar->toggleViewAction()); dockMenu->addAction(navigationToolbar->toggleViewAction());
dockMenu->addAction(filesystemDock->toggleViewAction()); dockMenu->addAction(filesystemDock->toggleViewAction());
dockMenu->addAction(databaseViewDock->toggleViewAction()); dockMenu->addAction(databaseViewDock->toggleViewAction());
dockMenu->addAction(databaseTreeDock->toggleViewAction());
if(filetreeDock)dockMenu->addAction(filetreeDock->toggleViewAction()); if(filetreeDock)dockMenu->addAction(filetreeDock->toggleViewAction());
dockMenu->addAction(histogramDock->toggleViewAction()); dockMenu->addAction(histogramDock->toggleViewAction());
#ifdef PLATESOLVER #ifdef PLATESOLVER
@@ -816,7 +835,7 @@ void MainWindow::checkNewVersion()
if(QMessageBox::question(this, tr("Update check"), tr("New version %1 is available. Do you want to download it now?").arg(tag)) == QMessageBox::Yes) if(QMessageBox::question(this, tr("Update check"), tr("New version %1 is available. Do you want to download it now?").arg(tag)) == QMessageBox::Yes)
{ {
QUrl url(json.object().value("html_url").toString()); QUrl url(json.object().value("html_url").toString());
qDebug() << url; qDebug() << "Opening url" << url;
if(url.host() == "gitea.nouspiro.space") if(url.host() == "gitea.nouspiro.space")
QDesktopServices::openUrl(url); QDesktopServices::openUrl(url);
} }
@@ -841,6 +860,20 @@ void MainWindow::openFileManager()
#endif #endif
} }
void MainWindow::runScript(const QString &script, const QString &outdir, const QStringList &paths, const QString &arg, bool exit)
{
BatchProcessing *batchProcessing = new BatchProcessing(m_database, this);
batchProcessing->setOutputDir(outdir);
batchProcessing->setPaths(paths);
if(exit)batchProcessing->hide();
QTimer::singleShot(500, [batchProcessing, script, exit, arg](){
batchProcessing->runScript(script, arg, exit);
batchProcessing->exec();
delete batchProcessing;
if(exit)QCoreApplication::exit();
});
}
void MainWindow::updateWindowTitle() void MainWindow::updateWindowTitle()
{ {
ImagePtr ptr = m_ringList->currentImage(); ImagePtr ptr = m_ringList->currentImage();
+3
View File
@@ -11,6 +11,7 @@
#include "stretchtoolbar.h" #include "stretchtoolbar.h"
#include "databaseview.h" #include "databaseview.h"
#include "platesolving.h" #include "platesolving.h"
#include "databasetree.h"
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
@@ -24,6 +25,7 @@ class MainWindow : public QMainWindow
Filetree *m_filetree; Filetree *m_filetree;
DataBaseView *m_databaseView; DataBaseView *m_databaseView;
PlateSolving *_plateSolving = nullptr; PlateSolving *_plateSolving = nullptr;
DatabaseTree *_databaseTree = nullptr;
static int socketPair[2]; static int socketPair[2];
QSocketNotifier *socketNotifier; QSocketNotifier *socketNotifier;
QString _lastDir; QString _lastDir;
@@ -69,6 +71,7 @@ public slots:
void exportCSV(); void exportCSV();
void checkNewVersion(); void checkNewVersion();
void openFileManager(); void openFileManager();
void runScript(const QString &script, const QString &outdir, const QStringList &paths, const QString &arg, bool exit);
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H
+5 -3
View File
@@ -38,9 +38,11 @@ ScriptEngine::ScriptEngine(Database *database, BatchProcessing *parent)
#endif // PLATESOLVER #endif // PLATESOLVER
} }
void ScriptEngine::setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir) void ScriptEngine::setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir, const QString &arg)
{ {
_scriptPath = scriptPath; _scriptPath = scriptPath;
if(!arg.isNull())
_jsEngine->globalObject().setProperty("scriptarg", arg);
setPaths(paths); setPaths(paths);
_outputDir = outputDir + "/"; _outputDir = outputDir + "/";
} }
@@ -965,9 +967,9 @@ ScriptEngineThread::~ScriptEngineThread()
if(_engine)_engine->interrupt(); if(_engine)_engine->interrupt();
} }
void ScriptEngineThread::setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir) void ScriptEngineThread::setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir, const QString &arg)
{ {
_engine->setParams(scriptPath, paths, outputDir); _engine->setParams(scriptPath, paths, outputDir, arg);
} }
void ScriptEngineThread::start() void ScriptEngineThread::start()
+2 -2
View File
@@ -33,7 +33,7 @@ class ScriptEngine : public QObject
Solver *_solver = nullptr; Solver *_solver = nullptr;
public: public:
explicit ScriptEngine(Database *database, BatchProcessing *parent = nullptr); explicit ScriptEngine(Database *database, BatchProcessing *parent = nullptr);
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir); void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir, const QString &arg);
void reportError(const QString &message); void reportError(const QString &message);
const QString& outputDir() const; const QString& outputDir() const;
void interrupt(); void interrupt();
@@ -82,7 +82,7 @@ class ScriptEngineThread : public QObject
public: public:
ScriptEngineThread(Database *database, BatchProcessing *parent = nullptr); ScriptEngineThread(Database *database, BatchProcessing *parent = nullptr);
~ScriptEngineThread(); ~ScriptEngineThread();
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir); void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir, const QString &arg);
void start(); void start();
void interrupt(); void interrupt();
signals: signals:
Binary file not shown.
+215 -140
View File
@@ -96,52 +96,54 @@
<translation type="vanished">Close</translation> <translation type="vanished">Close</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="159"/> <location filename="../src/batchprocessing.cpp" line="165"/>
<source>Interrupt running script?</source> <source>Interrupt running script?</source>
<translation>Interrupt running script?</translation> <translation>Interrupt running script?</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="188"/> <location filename="../src/batchprocessing.cpp" line="194"/>
<source>Select files</source> <source>Select files</source>
<translation>Select files</translation> <translation>Select files</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="200"/> <location filename="../src/batchprocessing.cpp" line="206"/>
<source>Select directory</source> <source>Select directory</source>
<translation>Select directory</translation> <translation>Select directory</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="236"/> <location filename="../src/batchprocessing.cpp" line="242"/>
<source>Select output directory</source> <source>Select output directory</source>
<translation>Select output directory</translation> <translation>Select output directory</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Invalid output directory</source> <source>Invalid output directory</source>
<translation>Invalid output directory</translation> <translation>Invalid output directory</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Output directory path doesn&apos;t exist or is not writable</source> <source>Output directory path doesn&apos;t exist or is not writable</source>
<translation>Output directory path doesn&apos;t exist or is not writable</translation> <translation>Output directory path doesn&apos;t exist or is not writable</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="303"/> <location filename="../src/batchprocessing.cpp" line="346"/>
<source>Enter text</source> <source>Enter text</source>
<translation>Enter text</translation> <translation>Enter text</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="310"/> <location filename="../src/batchprocessing.cpp" line="353"/>
<source>Enter integer number</source> <source>Enter integer number</source>
<translation>Enter integer number</translation> <translation>Enter integer number</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="317"/> <location filename="../src/batchprocessing.cpp" line="360"/>
<source>Enter float number</source> <source>Enter float number</source>
<translation>Enter real number</translation> <translation>Enter real number</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="324"/> <location filename="../src/batchprocessing.cpp" line="367"/>
<source>Select item</source> <source>Select item</source>
<translation>Select item</translation> <translation>Select item</translation>
</message> </message>
@@ -172,17 +174,17 @@
<context> <context>
<name>DataBaseView</name> <name>DataBaseView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="261"/> <location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Select columns</translation> <translation>Select columns</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="311"/> <location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source> <source>Text to search, you can % as wildcard</source>
<translation>Text to search, you can % as wildcard</translation> <translation>Text to search, you can % as wildcard</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="327"/> <location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source> <source>Filter</source>
<translation>Filter</translation> <translation>Filter</translation>
</message> </message>
@@ -190,30 +192,83 @@
<context> <context>
<name>DatabaseTableView</name> <name>DatabaseTableView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="216"/> <location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source> <source>Mark</source>
<translation>Mark</translation> <translation>Mark</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="217"/> <location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Unmark</translation> <translation>Unmark</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="218"/> <location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source> <source>Open</source>
<translation>Open</translation> <translation>Open</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="219"/> <location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source> <source>Open file location</source>
<translation>Open file location</translation> <translation>Open file location</translation>
</message> </message>
<message>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation>Copy files</translation>
</message>
</context>
<context>
<name>DatabaseTreeSettings</name>
<message>
<source>Add tree filter</source>
<translation type="vanished">Add tree filter</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation>Add tree grouping</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation>Aggregate function</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation>This aggregate function will be applied to last level of grouping</translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation>Add</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation>Remove</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation>Tree/Table</translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../src/databasetreekeys.ui" line="14"/>
<source>Dialog</source>
<translation>Plate Solving Settings</translation>
</message>
</context> </context>
<context> <context>
<name>FITSFileModel</name> <name>FITSFileModel</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="195"/> <location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source> <source>File name</source>
<translation>File name</translation> <translation>File name</translation>
</message> </message>
@@ -277,12 +332,12 @@
<translation>Copy selected files paths</translation> <translation>Copy selected files paths</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation>Overwrite file?</translation> <translation>Overwrite file?</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation>Destination file %1 already exists. Overwrite?</translation> <translation>Destination file %1 already exists. Overwrite?</translation>
</message> </message>
@@ -290,32 +345,32 @@
<context> <context>
<name>FileTransfer</name> <name>FileTransfer</name>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Error</source> <source>Error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Destination directory %1 doesn&apos;t exists</source> <source>Destination directory %1 doesn&apos;t exists</source>
<translation>Destination directory %1 doesn&apos;t exists</translation> <translation>Destination directory %1 doesn&apos;t exists</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Copy failed</source> <source>Copy failed</source>
<translation>Copy failed</translation> <translation>Copy failed</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Failed to copy file %1 to %2</source> <source>Failed to copy file %1 to %2</source>
<translation>Failed to copy file %1 to %2</translation> <translation>Failed to copy file %1 to %2</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Move failed</source> <source>Move failed</source>
<translation>Move failed</translation> <translation>Move failed</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Failed to move file %1 to %2</source> <source>Failed to move file %1 to %2</source>
<translation>Failed to move file %1 to %2</translation> <translation>Failed to move file %1 to %2</translation>
</message> </message>
@@ -395,7 +450,7 @@
<context> <context>
<name>HelpDialog</name> <name>HelpDialog</name>
<message> <message>
<location filename="../src/about.cpp" line="33"/> <location filename="../src/about.cpp" line="35"/>
<source>Help</source> <source>Help</source>
<translation>Help</translation> <translation>Help</translation>
</message> </message>
@@ -426,12 +481,12 @@
<translation>Comment</translation> <translation>Comment</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="27"/> <location filename="../src/imageinfo.cpp" line="29"/>
<source>FITS Header</source> <source>FITS Header</source>
<translation>FITS Header</translation> <translation>FITS Header</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="43"/> <location filename="../src/imageinfo.cpp" line="45"/>
<source>Image info</source> <source>Image info</source>
<translation>Image info</translation> <translation>Image info</translation>
</message> </message>
@@ -439,7 +494,7 @@
<context> <context>
<name>ImageRingList</name> <name>ImageRingList</name>
<message> <message>
<location filename="../src/imageringlist.cpp" line="466"/> <location filename="../src/imageringlist.cpp" line="470"/>
<source>Name</source> <source>Name</source>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
@@ -510,217 +565,232 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="73"/> <location filename="../src/mainwindow.cpp" line="81"/>
<source>Image info</source> <source>Image info</source>
<translation>Image info</translation> <translation>Image info</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open DB</source> <source>Can&apos;t open DB</source>
<translation>Can&apos;t open DB</translation> <translation>Can&apos;t open DB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open SQLITE database</source> <source>Can&apos;t open SQLITE database</source>
<translation>Can&apos;t open SQLITE database</translation> <translation>Can&apos;t open SQLITE database</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="140"/> <location filename="../src/mainwindow.cpp" line="150"/>
<source>Filesystem</source> <source>Filesystem</source>
<translation>File system</translation> <translation>File system</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="167"/> <location filename="../src/mainwindow.cpp" line="187"/>
<source>Tenmon</source> <source>Tenmon</source>
<translation>Tenmon</translation> <translation>Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="182"/> <location filename="../src/mainwindow.cpp" line="202"/>
<source>File</source> <source>File</source>
<translation>File</translation> <translation>File</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="183"/> <location filename="../src/mainwindow.cpp" line="203"/>
<source>Open</source> <source>Open</source>
<translation>Open</translation> <translation>Open</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="190"/> <location filename="../src/mainwindow.cpp" line="210"/>
<source>Copy marked files</source> <source>Copy marked files</source>
<translation>Copy marked files</translation> <translation>Copy marked files</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="185"/> <location filename="../src/mainwindow.cpp" line="205"/>
<location filename="../src/mainwindow.cpp" line="617"/> <location filename="../src/mainwindow.cpp" line="647"/>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="810"/>
<source>Save as</source> <source>Save as</source>
<translation>Save as</translation> <translation>Save as</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="123"/> <location filename="../src/mainwindow.cpp" line="133"/>
<source>Navigation toolbar</source> <source>Navigation toolbar</source>
<translation>Navigation toolbar</translation> <translation>Navigation toolbar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="126"/> <location filename="../src/mainwindow.cpp" line="136"/>
<source>Previous image</source> <source>Previous image</source>
<translation>Previous image</translation> <translation>Previous image</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="128"/> <location filename="../src/mainwindow.cpp" line="138"/>
<source>Next image</source> <source>Next image</source>
<translation>Next image</translation> <translation>Next image</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="130"/> <location filename="../src/mainwindow.cpp" line="140"/>
<source>Prev sub image</source> <source>Prev sub image</source>
<translation>Prev sub image</translation> <translation>Prev sub image</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="131"/> <location filename="../src/mainwindow.cpp" line="141"/>
<source>Next sub image</source> <source>Next sub image</source>
<translation>Next sub image</translation> <translation>Next sub image</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="184"/> <location filename="../src/mainwindow.cpp" line="179"/>
<location filename="../src/mainwindow.cpp" line="579"/> <source>Database Tree</source>
<translation>Database Tree</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="204"/>
<location filename="../src/mainwindow.cpp" line="605"/>
<source>Open directory recursively</source> <source>Open directory recursively</source>
<translation>Open directory recursively</translation> <translation>Open directory recursively</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="188"/> <location filename="../src/mainwindow.cpp" line="208"/>
<source>File manager</source> <source>File manager</source>
<translation>File manager</translation> <translation>File manager</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="197"/> <location filename="../src/mainwindow.cpp" line="222"/>
<source>Batch processing</source> <source>Batch processing</source>
<translation>Batch processing</translation> <translation>Batch processing</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="203"/> <location filename="../src/mainwindow.cpp" line="228"/>
<source>Live mode</source> <source>Live mode</source>
<translation>Live mode</translation> <translation>Live mode</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="205"/> <location filename="../src/mainwindow.cpp" line="230"/>
<source>Exit</source> <source>Exit</source>
<translation>Exit</translation> <translation>Exit</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="213"/> <location filename="../src/mainwindow.cpp" line="238"/>
<source>Navigation</source> <source>Navigation</source>
<translation>Navigation</translation> <translation>Navigation</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="220"/> <location filename="../src/mainwindow.cpp" line="245"/>
<source>View</source> <source>View</source>
<translation>View</translation> <translation>View</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="221"/> <location filename="../src/mainwindow.cpp" line="246"/>
<source>Zoom In</source> <source>Zoom In</source>
<translation>Zoom In</translation> <translation>Zoom In</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="222"/> <location filename="../src/mainwindow.cpp" line="247"/>
<source>Zoom Out</source> <source>Zoom Out</source>
<translation>Zoom Out</translation> <translation>Zoom Out</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="223"/> <location filename="../src/mainwindow.cpp" line="248"/>
<source>Best Fit</source> <source>Best Fit</source>
<translation>Best Fit</translation> <translation>Best Fit</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="224"/> <location filename="../src/mainwindow.cpp" line="249"/>
<source>100%</source> <source>100%</source>
<translation>100%</translation> <translation>100%</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="247"/> <location filename="../src/mainwindow.cpp" line="272"/>
<source>Colormap</source> <source>Colormap</source>
<translation>Colormap</translation> <translation>Colormap</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="254"/> <location filename="../src/mainwindow.cpp" line="279"/>
<source>User %1</source> <source>User %1</source>
<translation>User %1</translation> <translation>User %1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="283"/> <location filename="../src/mainwindow.cpp" line="308"/>
<source>Select</source> <source>Select</source>
<translation>Select</translation> <translation>Select</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="284"/> <location filename="../src/mainwindow.cpp" line="309"/>
<source>Mark</source> <source>Mark</source>
<translation>Mark</translation> <translation>Mark</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="285"/> <location filename="../src/mainwindow.cpp" line="310"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Unmark</translation> <translation>Unmark</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="287"/> <location filename="../src/mainwindow.cpp" line="312"/>
<source>Mark and next</source> <source>Mark and next</source>
<translation>Mark and next</translation> <translation>Mark and next</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="288"/> <location filename="../src/mainwindow.cpp" line="313"/>
<source>Unmark and next</source> <source>Unmark and next</source>
<translation>Unmark and next</translation> <translation>Unmark and next</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="290"/> <location filename="../src/mainwindow.cpp" line="315"/>
<source>Show marked list</source> <source>Show marked list</source>
<translation>Show marked list</translation> <translation>Show marked list</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="291"/> <location filename="../src/mainwindow.cpp" line="316"/>
<source>Open marked</source> <source>Open marked</source>
<translation>Open marked</translation> <translation>Open marked</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation>Overwrite file?</translation> <translation>Overwrite file?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation>Destination file %1 already exists. Overwrite?</translation> <translation>Destination file %1 already exists. Overwrite?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>Missing marked files</source> <source>Missing marked files</source>
<translation>Missing marked files</translation> <translation>Missing marked files</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>%1 marked files were missing. They were skipped.</source> <source>%1 marked files were missing. They were skipped.</source>
<translation>%1 marked files were missing. They were skipped.</translation> <translation>%1 marked files were missing. They were skipped.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="670"/>
<location filename="../src/mainwindow.cpp" line="804"/> <source>Apply stretch?</source>
<location filename="../src/mainwindow.cpp" line="815"/> <translation>Apply stretch?</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="670"/>
<source>Apply current stretch function to image?</source>
<translation>Apply current stretch function to image?</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="832"/>
<location filename="../src/mainwindow.cpp" line="835"/>
<location filename="../src/mainwindow.cpp" line="846"/>
<source>Update check</source> <source>Update check</source>
<translation>Update check</translation> <translation>Update check</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="832"/>
<source>You have newest version</source> <source>You have newest version</source>
<translation>You have newest version</translation> <translation>You have newest version</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="804"/> <location filename="../src/mainwindow.cpp" line="835"/>
<source>New version %1 is available. Do you want to download it now?</source> <source>New version %1 is available. Do you want to download it now?</source>
<translation>New version %1 is available. Do you want to download it now?</translation> <translation>New version %1 is available. Do you want to download it now?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="815"/> <location filename="../src/mainwindow.cpp" line="846"/>
<source>Failed to check version</source> <source>Failed to check version</source>
<translation>Failed to check version</translation> <translation>Failed to check version</translation>
</message> </message>
@@ -737,46 +807,46 @@
<translation type="vanished">Peak finder</translation> <translation type="vanished">Peak finder</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="320"/> <location filename="../src/mainwindow.cpp" line="345"/>
<source>Docks</source> <source>Docks</source>
<translation>Docks</translation> <translation>Docks</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="542"/> <location filename="../src/mainwindow.cpp" line="568"/>
<source>Open file</source> <source>Open file</source>
<translation>Open file</translation> <translation>Open file</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="425"/> <location filename="../src/mainwindow.cpp" line="451"/>
<source>Select destination</source> <source>Select destination</source>
<translation>Select destination</translation> <translation>Select destination</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Copying</source> <source>Copying</source>
<translation>Copying</translation> <translation>Copying</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Cancel</translation> <translation>Cancel</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="191"/> <location filename="../src/mainwindow.cpp" line="211"/>
<source>Move marked files</source> <source>Move marked files</source>
<translation>Move marked files</translation> <translation>Move marked files</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="194"/> <location filename="../src/mainwindow.cpp" line="219"/>
<location filename="../src/mainwindow.cpp" line="592"/> <location filename="../src/mainwindow.cpp" line="618"/>
<source>Index directory</source> <source>Index directory</source>
<translation>Index directory</translation> <translation>Index directory</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="267"/> <location filename="../src/mainwindow.cpp" line="292"/>
<source>Thumbnails</source> <source>Thumbnails</source>
<translation>Thumbnails</translation> <translation>Thumbnails</translation>
</message> </message>
@@ -785,49 +855,49 @@
<translation type="vanished">Show marked</translation> <translation type="vanished">Show marked</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="333"/> <location filename="../src/mainwindow.cpp" line="359"/>
<location filename="../src/mainwindow.cpp" line="334"/> <location filename="../src/mainwindow.cpp" line="360"/>
<source>Help</source> <source>Help</source>
<translation>Help</translation> <translation>Help</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="335"/> <location filename="../src/mainwindow.cpp" line="361"/>
<source>About Tenmon</source> <source>About Tenmon</source>
<translation>About Tenmon</translation> <translation>About Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="336"/> <location filename="../src/mainwindow.cpp" line="362"/>
<source>About Qt</source> <source>About Qt</source>
<translation>About Qt</translation> <translation>About Qt</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="363"/>
<source>Check for update</source> <source>Check for update</source>
<translation>Check for update</translation> <translation>Check for update</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Moving</source> <source>Moving</source>
<translation>Moving</translation> <translation>Moving</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<source>Indexing FITS files</source> <source>Indexing FITS files</source>
<translation>Indexing FITS files</translation> <translation>Indexing FITS files</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="195"/> <location filename="../src/mainwindow.cpp" line="220"/>
<source>Reindex files</source> <source>Reindex files</source>
<translation>Reindex files</translation> <translation>Reindex files</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="145"/> <location filename="../src/mainwindow.cpp" line="155"/>
<source>FITS/XISF files database</source> <source>FITS/XISF files database</source>
<translation>FITS/XISF files database</translation> <translation>FITS/XISF files database</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="153"/> <location filename="../src/mainwindow.cpp" line="164"/>
<source>File tree</source> <source>File tree</source>
<translation>File tree</translation> <translation>File tree</translation>
</message> </message>
@@ -836,122 +906,122 @@
<translation type="vanished">Star finder</translation> <translation type="vanished">Star finder</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="209"/> <location filename="../src/mainwindow.cpp" line="234"/>
<source>Edit</source> <source>Edit</source>
<translation>Edit</translation> <translation>Edit</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="210"/> <location filename="../src/mainwindow.cpp" line="235"/>
<source>Settings</source> <source>Settings</source>
<translation>Settings</translation> <translation>Settings</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="53"/> <location filename="../src/mainwindow.cpp" line="55"/>
<source>Images (</source> <source>Images (</source>
<translation>Images (</translation> <translation>Images (</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="52"/> <location filename="../src/mainwindow.cpp" line="54"/>
<source>FITS (*.fits *.fit);;XISF (*.xisf);;</source> <source>FITS (*.fits *.fit);;XISF (*.xisf);;</source>
<translation>FITS image (*.fits *.fit);;XISF image (*.xisf);;</translation> <translation>FITS image (*.fits *.fit);;XISF image (*.xisf);;</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to copy</source> <source>Failed to copy</source>
<translation>Failed to copy</translation> <translation>Failed to copy</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to move</source> <source>Failed to move</source>
<translation>Failed to move</translation> <translation>Failed to move</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to move from %1 to %2</source> <source>Failed to move from %1 to %2</source>
<translation>Failed to move from %1 to %2</translation> <translation>Failed to move from %1 to %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to copy from %1 to %2</source> <source>Failed to copy from %1 to %2</source>
<translation>Failed to copy from %1 to %2</translation> <translation>Failed to copy from %1 to %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="67"/> <location filename="../src/mainwindow.cpp" line="75"/>
<source>;;All files (*)</source> <source>;;All files (*)</source>
<translation>;;All files (*)</translation> <translation>;;All files (*)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Move files to trash?</source> <source>Move files to trash?</source>
<translation>Move files to trash?</translation> <translation>Move files to trash?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Do you want to move %1 files to trash?</source> <source>Do you want to move %1 files to trash?</source>
<translation>Do you want to move %1 files to trash?</translation> <translation>Do you want to move %1 files to trash?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash</source> <source>Failed to move file to trash</source>
<translation>Failed to move file to trash</translation> <translation>Failed to move file to trash</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash %1</source> <source>Failed to move file to trash %1</source>
<translation>Failed to move file to trash %1</translation> <translation>Failed to move file to trash %1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="192"/> <location filename="../src/mainwindow.cpp" line="212"/>
<source>Move marked files to trash</source> <source>Move marked files to trash</source>
<translation>Move marked files to trash</translation> <translation>Move marked files to trash</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Moving marked files to trash</source> <source>Moving marked files to trash</source>
<translation>Moving marked files to trash</translation> <translation>Moving marked files to trash</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="196"/> <location filename="../src/mainwindow.cpp" line="221"/>
<source>Export database to CSV</source> <source>Export database to CSV</source>
<translation>Export database to CSV file</translation> <translation>Export database to CSV file</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="781"/> <location filename="../src/mainwindow.cpp" line="812"/>
<source>CSV file (*.csv)</source> <source>CSV file (*.csv)</source>
<translation>CSV files (*.csv)</translation> <translation>CSV files (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="161"/> <location filename="../src/mainwindow.cpp" line="172"/>
<source>Histogram</source> <source>Histogram</source>
<translation>Histogram</translation> <translation>Histogram</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="251"/>
<source>Bayer mask</source> <source>Bayer mask</source>
<translation>Bayer mask</translation> <translation>Bayer mask</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="228"/> <location filename="../src/mainwindow.cpp" line="253"/>
<source>RGGB</source> <source>RGGB</source>
<translation>RGGB</translation> <translation>RGGB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="229"/> <location filename="../src/mainwindow.cpp" line="254"/>
<source>GRBG</source> <source>GRBG</source>
<translation>GRBG</translation> <translation>GRBG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="230"/> <location filename="../src/mainwindow.cpp" line="255"/>
<source>GBRG</source> <source>GBRG</source>
<translation>GBRG</translation> <translation>GBRG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="256"/>
<source>BGGR</source> <source>BGGR</source>
<translation>BGGR</translation> <translation>BGGR</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="275"/> <location filename="../src/mainwindow.cpp" line="300"/>
<source>Slideshow</source> <source>Slideshow</source>
<translation>Slideshow</translation> <translation>Slideshow</translation>
</message> </message>
@@ -1383,7 +1453,7 @@
<context> <context>
<name>SelectColumnsDialog</name> <name>SelectColumnsDialog</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="53"/> <location filename="../src/databaseview.cpp" line="56"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Select columns</translation> <translation>Select columns</translation>
</message> </message>
@@ -1406,12 +1476,12 @@
<translation>Thumbnail size in pixels</translation> <translation>Thumbnail size in pixels</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="132"/> <location filename="../src/settingsdialog.cpp" line="150"/>
<source>Image preload count</source> <source>Image preload count</source>
<translation>Image preload count</translation> <translation>Image preload count</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="133"/> <location filename="../src/settingsdialog.cpp" line="151"/>
<source>Thumbnails size</source> <source>Thumbnails size</source>
<translation>Thumbnails size</translation> <translation>Thumbnails size</translation>
</message> </message>
@@ -1428,7 +1498,7 @@ For RAW files you may set 22%</source>
For RAW files you may set 22%</translation> For RAW files you may set 22%</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="134"/> <location filename="../src/settingsdialog.cpp" line="152"/>
<source>Saturation</source> <source>Saturation</source>
<translation>Saturated</translation> <translation>Saturated</translation>
</message> </message>
@@ -1488,57 +1558,62 @@ For RAW files you may set 22%</translation>
<translation>Remove keyword highlight</translation> <translation>Remove keyword highlight</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="135"/> <location filename="../src/settingsdialog.cpp" line="153"/>
<source>Slideshow interval</source> <source>Slideshow interval</source>
<translation>Slideshow interval</translation> <translation>Slideshow interval</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="140"/> <location filename="../src/settingsdialog.cpp" line="155"/>
<source>Language</source>
<translation>Language</translation>
</message>
<message>
<location filename="../src/settingsdialog.cpp" line="159"/>
<source>FITS header highlight</source> <source>FITS header highlight</source>
<translation>FITS header highlight</translation> <translation>FITS header highlight</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="146"/> <location filename="../src/settingsdialog.cpp" line="165"/>
<source>Install</source> <source>Install</source>
<translation>Install</translation> <translation>Install</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="147"/> <location filename="../src/settingsdialog.cpp" line="166"/>
<source>This will install thumnail generation for FITS and XISF files in File Explorer</source> <source>This will install thumnail generation for FITS and XISF files in File Explorer</source>
<translation>This will install thumnail generation for FITS and XISF files in File Explorer</translation> <translation>This will install thumnail generation for FITS and XISF files in File Explorer</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="149"/> <location filename="../src/settingsdialog.cpp" line="168"/>
<source>Install thumbnailer</source> <source>Install thumbnailer</source>
<translation>Install thumbnailer</translation> <translation>Install thumbnailer</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Missing dll</source> <source>Missing dll</source>
<translation>Missing dll</translation> <translation>Missing dll</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Can&apos;t find </source> <source>Can&apos;t find </source>
<translation>Can&apos;t find </translation> <translation>Can&apos;t find </translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail support</source> <source>Thumbnail support</source>
<translation>Thumbnail support</translation> <translation>Thumbnail support</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail generation support sucessufully installed.</source> <source>Thumbnail generation support sucessufully installed.</source>
<translation>Thumbnail generation support sucessufully installed.</translation> <translation>Thumbnail generation support sucessufully installed.</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Error</source> <source>Error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Failed to register thumbnailer. %1</source> <source>Failed to register thumbnailer. %1</source>
<translation>Failed to register thumbnailer. %1</translation> <translation>Failed to register thumbnailer. %1</translation>
</message> </message>
@@ -1547,7 +1622,7 @@ For RAW files you may set 22%</translation>
<translation type="obsolete">Image sampling</translation> <translation type="obsolete">Image sampling</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="136"/> <location filename="../src/settingsdialog.cpp" line="154"/>
<source>Image interpolation</source> <source>Image interpolation</source>
<translation>Image interpolation</translation> <translation>Image interpolation</translation>
</message> </message>
Binary file not shown.
+211 -140
View File
@@ -96,52 +96,54 @@
<translation type="vanished">Fermer</translation> <translation type="vanished">Fermer</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="159"/> <location filename="../src/batchprocessing.cpp" line="165"/>
<source>Interrupt running script?</source> <source>Interrupt running script?</source>
<translation>Interrompre l&apos;execution du script?</translation> <translation>Interrompre l&apos;execution du script?</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="188"/> <location filename="../src/batchprocessing.cpp" line="194"/>
<source>Select files</source> <source>Select files</source>
<translation>Choisir les fichiers</translation> <translation>Choisir les fichiers</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="200"/> <location filename="../src/batchprocessing.cpp" line="206"/>
<source>Select directory</source> <source>Select directory</source>
<translation>Choisir le répertoire</translation> <translation>Choisir le répertoire</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="236"/> <location filename="../src/batchprocessing.cpp" line="242"/>
<source>Select output directory</source> <source>Select output directory</source>
<translation>Choisir le répertoire de sortie</translation> <translation>Choisir le répertoire de sortie</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Invalid output directory</source> <source>Invalid output directory</source>
<translation>Répertoire invalide</translation> <translation>Répertoire invalide</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Output directory path doesn&apos;t exist or is not writable</source> <source>Output directory path doesn&apos;t exist or is not writable</source>
<translation>Le répertoire de sortie n&apos;existe pas ou ne peut pas être écrit</translation> <translation>Le répertoire de sortie n&apos;existe pas ou ne peut pas être écrit</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="303"/> <location filename="../src/batchprocessing.cpp" line="346"/>
<source>Enter text</source> <source>Enter text</source>
<translation>Entrer le texte</translation> <translation>Entrer le texte</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="310"/> <location filename="../src/batchprocessing.cpp" line="353"/>
<source>Enter integer number</source> <source>Enter integer number</source>
<translation>Entrer un nombre entier</translation> <translation>Entrer un nombre entier</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="317"/> <location filename="../src/batchprocessing.cpp" line="360"/>
<source>Enter float number</source> <source>Enter float number</source>
<translation>Entrer un nombre flottant</translation> <translation>Entrer un nombre flottant</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="324"/> <location filename="../src/batchprocessing.cpp" line="367"/>
<source>Select item</source> <source>Select item</source>
<translation>Choisir l&apos;élément</translation> <translation>Choisir l&apos;élément</translation>
</message> </message>
@@ -172,17 +174,17 @@
<context> <context>
<name>DataBaseView</name> <name>DataBaseView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="261"/> <location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Choix des colonnes</translation> <translation>Choix des colonnes</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="311"/> <location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source> <source>Text to search, you can % as wildcard</source>
<translation>Texte à chercher, utilisez % comme caractère générique</translation> <translation>Texte à chercher, utilisez % comme caractère générique</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="327"/> <location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source> <source>Filter</source>
<translation>Filtre</translation> <translation>Filtre</translation>
</message> </message>
@@ -190,30 +192,79 @@
<context> <context>
<name>DatabaseTableView</name> <name>DatabaseTableView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="216"/> <location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source> <source>Mark</source>
<translation>Marquer</translation> <translation>Marquer</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="217"/> <location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Décocher</translation> <translation>Décocher</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="218"/> <location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source> <source>Open</source>
<translation type="unfinished">Ouvrir</translation> <translation type="unfinished">Ouvrir</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="219"/> <location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source> <source>Open file location</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation type="unfinished">Supprimer</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../src/databasetreekeys.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>FITSFileModel</name> <name>FITSFileModel</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="195"/> <location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source> <source>File name</source>
<translation>Nom de fichier</translation> <translation>Nom de fichier</translation>
</message> </message>
@@ -277,12 +328,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -290,32 +341,32 @@
<context> <context>
<name>FileTransfer</name> <name>FileTransfer</name>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished">Erreur</translation> <translation type="unfinished">Erreur</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Destination directory %1 doesn&apos;t exists</source> <source>Destination directory %1 doesn&apos;t exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Copy failed</source> <source>Copy failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Failed to copy file %1 to %2</source> <source>Failed to copy file %1 to %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Move failed</source> <source>Move failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Failed to move file %1 to %2</source> <source>Failed to move file %1 to %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -395,7 +446,7 @@
<context> <context>
<name>HelpDialog</name> <name>HelpDialog</name>
<message> <message>
<location filename="../src/about.cpp" line="33"/> <location filename="../src/about.cpp" line="35"/>
<source>Help</source> <source>Help</source>
<translation>Aide</translation> <translation>Aide</translation>
</message> </message>
@@ -426,12 +477,12 @@
<translation>Commentaire</translation> <translation>Commentaire</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="27"/> <location filename="../src/imageinfo.cpp" line="29"/>
<source>FITS Header</source> <source>FITS Header</source>
<translation>En-tête FITS</translation> <translation>En-tête FITS</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="43"/> <location filename="../src/imageinfo.cpp" line="45"/>
<source>Image info</source> <source>Image info</source>
<translation>Informations sur l&apos;image</translation> <translation>Informations sur l&apos;image</translation>
</message> </message>
@@ -439,7 +490,7 @@
<context> <context>
<name>ImageRingList</name> <name>ImageRingList</name>
<message> <message>
<location filename="../src/imageringlist.cpp" line="466"/> <location filename="../src/imageringlist.cpp" line="470"/>
<source>Name</source> <source>Name</source>
<translation>Nom</translation> <translation>Nom</translation>
</message> </message>
@@ -510,187 +561,202 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="73"/> <location filename="../src/mainwindow.cpp" line="81"/>
<source>Image info</source> <source>Image info</source>
<translation>Information sur l&apos;image</translation> <translation>Information sur l&apos;image</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open DB</source> <source>Can&apos;t open DB</source>
<translation>Ne peut ouvrir la base de donnée</translation> <translation>Ne peut ouvrir la base de donnée</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open SQLITE database</source> <source>Can&apos;t open SQLITE database</source>
<translation>Ne peut ouvrir la base de donnée SQLITE</translation> <translation>Ne peut ouvrir la base de donnée SQLITE</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="140"/> <location filename="../src/mainwindow.cpp" line="150"/>
<source>Filesystem</source> <source>Filesystem</source>
<translation>Système de fichier</translation> <translation>Système de fichier</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="167"/> <location filename="../src/mainwindow.cpp" line="187"/>
<source>Tenmon</source> <source>Tenmon</source>
<translation>Tenmon</translation> <translation>Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="182"/> <location filename="../src/mainwindow.cpp" line="202"/>
<source>File</source> <source>File</source>
<translation>Fichier</translation> <translation>Fichier</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="183"/> <location filename="../src/mainwindow.cpp" line="203"/>
<source>Open</source> <source>Open</source>
<translation>Ouvrir</translation> <translation>Ouvrir</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="190"/> <location filename="../src/mainwindow.cpp" line="210"/>
<source>Copy marked files</source> <source>Copy marked files</source>
<translation>Copier les fichiers marqués</translation> <translation>Copier les fichiers marqués</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="185"/> <location filename="../src/mainwindow.cpp" line="205"/>
<location filename="../src/mainwindow.cpp" line="617"/> <location filename="../src/mainwindow.cpp" line="647"/>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="810"/>
<source>Save as</source> <source>Save as</source>
<translation>Enregistrer sous</translation> <translation>Enregistrer sous</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="123"/> <location filename="../src/mainwindow.cpp" line="133"/>
<source>Navigation toolbar</source> <source>Navigation toolbar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="126"/> <location filename="../src/mainwindow.cpp" line="136"/>
<source>Previous image</source> <source>Previous image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="128"/> <location filename="../src/mainwindow.cpp" line="138"/>
<source>Next image</source> <source>Next image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="130"/> <location filename="../src/mainwindow.cpp" line="140"/>
<source>Prev sub image</source> <source>Prev sub image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="131"/> <location filename="../src/mainwindow.cpp" line="141"/>
<source>Next sub image</source> <source>Next sub image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="184"/> <location filename="../src/mainwindow.cpp" line="179"/>
<location filename="../src/mainwindow.cpp" line="579"/> <source>Database Tree</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="204"/>
<location filename="../src/mainwindow.cpp" line="605"/>
<source>Open directory recursively</source> <source>Open directory recursively</source>
<translation>Ouvrir le répertoire de manière récursive</translation> <translation>Ouvrir le répertoire de manière récursive</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="188"/> <location filename="../src/mainwindow.cpp" line="208"/>
<source>File manager</source> <source>File manager</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="197"/> <location filename="../src/mainwindow.cpp" line="222"/>
<source>Batch processing</source> <source>Batch processing</source>
<translation>Traitement par lot</translation> <translation>Traitement par lot</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="203"/> <location filename="../src/mainwindow.cpp" line="228"/>
<source>Live mode</source> <source>Live mode</source>
<translation>Mode temps réel</translation> <translation>Mode temps réel</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="205"/> <location filename="../src/mainwindow.cpp" line="230"/>
<source>Exit</source> <source>Exit</source>
<translation>Sortir</translation> <translation>Sortir</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="213"/> <location filename="../src/mainwindow.cpp" line="238"/>
<source>Navigation</source> <source>Navigation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="220"/> <location filename="../src/mainwindow.cpp" line="245"/>
<source>View</source> <source>View</source>
<translation>Voir</translation> <translation>Voir</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="221"/> <location filename="../src/mainwindow.cpp" line="246"/>
<source>Zoom In</source> <source>Zoom In</source>
<translation>Zoom avant</translation> <translation>Zoom avant</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="222"/> <location filename="../src/mainwindow.cpp" line="247"/>
<source>Zoom Out</source> <source>Zoom Out</source>
<translation>Zoom arrière</translation> <translation>Zoom arrière</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="223"/> <location filename="../src/mainwindow.cpp" line="248"/>
<source>Best Fit</source> <source>Best Fit</source>
<translation>Meilleur ajustement</translation> <translation>Meilleur ajustement</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="224"/> <location filename="../src/mainwindow.cpp" line="249"/>
<source>100%</source> <source>100%</source>
<translation>100%</translation> <translation>100%</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="247"/> <location filename="../src/mainwindow.cpp" line="272"/>
<source>Colormap</source> <source>Colormap</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="254"/> <location filename="../src/mainwindow.cpp" line="279"/>
<source>User %1</source> <source>User %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="283"/> <location filename="../src/mainwindow.cpp" line="308"/>
<source>Select</source> <source>Select</source>
<translation>Sélectionner</translation> <translation>Sélectionner</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="284"/> <location filename="../src/mainwindow.cpp" line="309"/>
<source>Mark</source> <source>Mark</source>
<translation>Marquer</translation> <translation>Marquer</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="285"/> <location filename="../src/mainwindow.cpp" line="310"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Décocher</translation> <translation>Décocher</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="287"/> <location filename="../src/mainwindow.cpp" line="312"/>
<source>Mark and next</source> <source>Mark and next</source>
<translation>Marquer et suivant</translation> <translation>Marquer et suivant</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="288"/> <location filename="../src/mainwindow.cpp" line="313"/>
<source>Unmark and next</source> <source>Unmark and next</source>
<translation>Décocher et suivant</translation> <translation>Décocher et suivant</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="670"/>
<location filename="../src/mainwindow.cpp" line="804"/> <source>Apply stretch?</source>
<location filename="../src/mainwindow.cpp" line="815"/> <translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="670"/>
<source>Apply current stretch function to image?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="832"/>
<location filename="../src/mainwindow.cpp" line="835"/>
<location filename="../src/mainwindow.cpp" line="846"/>
<source>Update check</source> <source>Update check</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="832"/>
<source>You have newest version</source> <source>You have newest version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="804"/> <location filename="../src/mainwindow.cpp" line="835"/>
<source>New version %1 is available. Do you want to download it now?</source> <source>New version %1 is available. Do you want to download it now?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="815"/> <location filename="../src/mainwindow.cpp" line="846"/>
<source>Failed to check version</source> <source>Failed to check version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -707,46 +773,46 @@
<translation type="vanished">Détecteur de pic</translation> <translation type="vanished">Détecteur de pic</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="320"/> <location filename="../src/mainwindow.cpp" line="345"/>
<source>Docks</source> <source>Docks</source>
<translation>Fenêtres encrables</translation> <translation>Fenêtres encrables</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="542"/> <location filename="../src/mainwindow.cpp" line="568"/>
<source>Open file</source> <source>Open file</source>
<translation>Ouvrir le ficher</translation> <translation>Ouvrir le ficher</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="425"/> <location filename="../src/mainwindow.cpp" line="451"/>
<source>Select destination</source> <source>Select destination</source>
<translation>Choisir la destination</translation> <translation>Choisir la destination</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Copying</source> <source>Copying</source>
<translation>Copier</translation> <translation>Copier</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Abandon</translation> <translation>Abandon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="191"/> <location filename="../src/mainwindow.cpp" line="211"/>
<source>Move marked files</source> <source>Move marked files</source>
<translation>Déplacer les fichiers marqués</translation> <translation>Déplacer les fichiers marqués</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="194"/> <location filename="../src/mainwindow.cpp" line="219"/>
<location filename="../src/mainwindow.cpp" line="592"/> <location filename="../src/mainwindow.cpp" line="618"/>
<source>Index directory</source> <source>Index directory</source>
<translation>Indexer le répertoire</translation> <translation>Indexer le répertoire</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="267"/> <location filename="../src/mainwindow.cpp" line="292"/>
<source>Thumbnails</source> <source>Thumbnails</source>
<translation>Vignettes</translation> <translation>Vignettes</translation>
</message> </message>
@@ -755,54 +821,54 @@
<translation type="vanished">Afficher marqué</translation> <translation type="vanished">Afficher marqué</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="333"/> <location filename="../src/mainwindow.cpp" line="359"/>
<location filename="../src/mainwindow.cpp" line="334"/> <location filename="../src/mainwindow.cpp" line="360"/>
<source>Help</source> <source>Help</source>
<translation>Aide</translation> <translation>Aide</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="335"/> <location filename="../src/mainwindow.cpp" line="361"/>
<source>About Tenmon</source> <source>About Tenmon</source>
<translation>A propos de Tenmon</translation> <translation>A propos de Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="336"/> <location filename="../src/mainwindow.cpp" line="362"/>
<source>About Qt</source> <source>About Qt</source>
<translation>A propos de Qt</translation> <translation>A propos de Qt</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Moving</source> <source>Moving</source>
<translation>Déplacement</translation> <translation>Déplacement</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>Missing marked files</source> <source>Missing marked files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>%1 marked files were missing. They were skipped.</source> <source>%1 marked files were missing. They were skipped.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<source>Indexing FITS files</source> <source>Indexing FITS files</source>
<translation>Indexation des fichiers FITS</translation> <translation>Indexation des fichiers FITS</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="195"/> <location filename="../src/mainwindow.cpp" line="220"/>
<source>Reindex files</source> <source>Reindex files</source>
<translation>-indexer les fichiers</translation> <translation>-indexer les fichiers</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="145"/> <location filename="../src/mainwindow.cpp" line="155"/>
<source>FITS/XISF files database</source> <source>FITS/XISF files database</source>
<translation>Base de donnée FITS/XISF</translation> <translation>Base de donnée FITS/XISF</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="153"/> <location filename="../src/mainwindow.cpp" line="164"/>
<source>File tree</source> <source>File tree</source>
<translation>Arborescence de fichiers</translation> <translation>Arborescence de fichiers</translation>
</message> </message>
@@ -811,147 +877,147 @@
<translation type="vanished">Détecteur d&apos;étoiles</translation> <translation type="vanished">Détecteur d&apos;étoiles</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="209"/> <location filename="../src/mainwindow.cpp" line="234"/>
<source>Edit</source> <source>Edit</source>
<translation>Éditer</translation> <translation>Éditer</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="210"/> <location filename="../src/mainwindow.cpp" line="235"/>
<source>Settings</source> <source>Settings</source>
<translation>Réglages</translation> <translation>Réglages</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="53"/> <location filename="../src/mainwindow.cpp" line="55"/>
<source>Images (</source> <source>Images (</source>
<translation>Images (</translation> <translation>Images (</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="52"/> <location filename="../src/mainwindow.cpp" line="54"/>
<source>FITS (*.fits *.fit);;XISF (*.xisf);;</source> <source>FITS (*.fits *.fit);;XISF (*.xisf);;</source>
<translation>FITS image (*.fits *.fit);;XISF image (*.xisf);;</translation> <translation>FITS image (*.fits *.fit);;XISF image (*.xisf);;</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="290"/> <location filename="../src/mainwindow.cpp" line="315"/>
<source>Show marked list</source> <source>Show marked list</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="291"/> <location filename="../src/mainwindow.cpp" line="316"/>
<source>Open marked</source> <source>Open marked</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="363"/>
<source>Check for update</source> <source>Check for update</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to copy</source> <source>Failed to copy</source>
<translation>Échec de la copie</translation> <translation>Échec de la copie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to move</source> <source>Failed to move</source>
<translation>Échec du déplacement</translation> <translation>Échec du déplacement</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to move from %1 to %2</source> <source>Failed to move from %1 to %2</source>
<translation>Échec du déplacement de %1 vers %2</translation> <translation>Échec du déplacement de %1 vers %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to copy from %1 to %2</source> <source>Failed to copy from %1 to %2</source>
<translation>Échec de la copie de %1 vers %2</translation> <translation>Échec de la copie de %1 vers %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="67"/> <location filename="../src/mainwindow.cpp" line="75"/>
<source>;;All files (*)</source> <source>;;All files (*)</source>
<translation>;;Tout les fichiers (*)</translation> <translation>;;Tout les fichiers (*)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Move files to trash?</source> <source>Move files to trash?</source>
<translation>Déplacer les fichiers dans la corbeille?</translation> <translation>Déplacer les fichiers dans la corbeille?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Do you want to move %1 files to trash?</source> <source>Do you want to move %1 files to trash?</source>
<translation>Voulez-vous déplacer le fichier %1 dans la corbeille?</translation> <translation>Voulez-vous déplacer le fichier %1 dans la corbeille?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash</source> <source>Failed to move file to trash</source>
<translation>Echec du déplacement dans la corbeille</translation> <translation>Echec du déplacement dans la corbeille</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash %1</source> <source>Failed to move file to trash %1</source>
<translation>Echec du déplacement de %1 dans la corbeille</translation> <translation>Echec du déplacement de %1 dans la corbeille</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="192"/> <location filename="../src/mainwindow.cpp" line="212"/>
<source>Move marked files to trash</source> <source>Move marked files to trash</source>
<translation>Déplacer les fichiers marqués dans la corbeille</translation> <translation>Déplacer les fichiers marqués dans la corbeille</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Moving marked files to trash</source> <source>Moving marked files to trash</source>
<translation>Déplacement des fichiers marqués dans la corbeille</translation> <translation>Déplacement des fichiers marqués dans la corbeille</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="196"/> <location filename="../src/mainwindow.cpp" line="221"/>
<source>Export database to CSV</source> <source>Export database to CSV</source>
<translation>Exporter la base de données vers un fichier CSV</translation> <translation>Exporter la base de données vers un fichier CSV</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="781"/> <location filename="../src/mainwindow.cpp" line="812"/>
<source>CSV file (*.csv)</source> <source>CSV file (*.csv)</source>
<translation>Fichiers CSV (*.csv)</translation> <translation>Fichiers CSV (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="161"/> <location filename="../src/mainwindow.cpp" line="172"/>
<source>Histogram</source> <source>Histogram</source>
<translation>Histogramme</translation> <translation>Histogramme</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="251"/>
<source>Bayer mask</source> <source>Bayer mask</source>
<translation>Masque Bayer</translation> <translation>Masque Bayer</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="228"/> <location filename="../src/mainwindow.cpp" line="253"/>
<source>RGGB</source> <source>RGGB</source>
<translation>RGGB</translation> <translation>RGGB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="229"/> <location filename="../src/mainwindow.cpp" line="254"/>
<source>GRBG</source> <source>GRBG</source>
<translation>GRBG</translation> <translation>GRBG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="230"/> <location filename="../src/mainwindow.cpp" line="255"/>
<source>GBRG</source> <source>GBRG</source>
<translation>GBRG</translation> <translation>GBRG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="256"/>
<source>BGGR</source> <source>BGGR</source>
<translation>BGGR</translation> <translation>BGGR</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="275"/> <location filename="../src/mainwindow.cpp" line="300"/>
<source>Slideshow</source> <source>Slideshow</source>
<translation>Diaporama</translation> <translation>Diaporama</translation>
</message> </message>
@@ -1383,7 +1449,7 @@
<context> <context>
<name>SelectColumnsDialog</name> <name>SelectColumnsDialog</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="53"/> <location filename="../src/databaseview.cpp" line="56"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Choix des colonnes</translation> <translation>Choix des colonnes</translation>
</message> </message>
@@ -1406,12 +1472,12 @@
<translation>Taille des vignettes en pixels</translation> <translation>Taille des vignettes en pixels</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="132"/> <location filename="../src/settingsdialog.cpp" line="150"/>
<source>Image preload count</source> <source>Image preload count</source>
<translation>Nombre d&apos;images préchargées</translation> <translation>Nombre d&apos;images préchargées</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="133"/> <location filename="../src/settingsdialog.cpp" line="151"/>
<source>Thumbnails size</source> <source>Thumbnails size</source>
<translation>Taille des vignette</translation> <translation>Taille des vignette</translation>
</message> </message>
@@ -1428,7 +1494,7 @@ For RAW files you may set 22%</source>
Pour les fichiers RAW, vous pouvez définir 22&#xa0;%</translation> Pour les fichiers RAW, vous pouvez définir 22&#xa0;%</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="134"/> <location filename="../src/settingsdialog.cpp" line="152"/>
<source>Saturation</source> <source>Saturation</source>
<translation>Saturé</translation> <translation>Saturé</translation>
</message> </message>
@@ -1488,57 +1554,62 @@ Pour les fichiers RAW, vous pouvez définir 22&#xa0;%</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="135"/> <location filename="../src/settingsdialog.cpp" line="153"/>
<source>Slideshow interval</source> <source>Slideshow interval</source>
<translation>Intervalle du diaporama</translation> <translation>Intervalle du diaporama</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="140"/> <location filename="../src/settingsdialog.cpp" line="155"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/settingsdialog.cpp" line="159"/>
<source>FITS header highlight</source> <source>FITS header highlight</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="146"/> <location filename="../src/settingsdialog.cpp" line="165"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="147"/> <location filename="../src/settingsdialog.cpp" line="166"/>
<source>This will install thumnail generation for FITS and XISF files in File Explorer</source> <source>This will install thumnail generation for FITS and XISF files in File Explorer</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="149"/> <location filename="../src/settingsdialog.cpp" line="168"/>
<source>Install thumbnailer</source> <source>Install thumbnailer</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Missing dll</source> <source>Missing dll</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Can&apos;t find </source> <source>Can&apos;t find </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail support</source> <source>Thumbnail support</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail generation support sucessufully installed.</source> <source>Thumbnail generation support sucessufully installed.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished">Erreur</translation> <translation type="unfinished">Erreur</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Failed to register thumbnailer. %1</source> <source>Failed to register thumbnailer. %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -1547,7 +1618,7 @@ Pour les fichiers RAW, vous pouvez définir 22&#xa0;%</translation>
<translation type="obsolete">Échantillonnage d&apos;images</translation> <translation type="obsolete">Échantillonnage d&apos;images</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="136"/> <location filename="../src/settingsdialog.cpp" line="154"/>
<source>Image interpolation</source> <source>Image interpolation</source>
<translation>Interpolation d&apos;images</translation> <translation>Interpolation d&apos;images</translation>
</message> </message>
Binary file not shown.
+212 -141
View File
@@ -97,52 +97,54 @@
<translation type="vanished">Fechar</translation> <translation type="vanished">Fechar</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="159"/> <location filename="../src/batchprocessing.cpp" line="165"/>
<source>Interrupt running script?</source> <source>Interrupt running script?</source>
<translation>Interromper o script em execução?</translation> <translation>Interromper o script em execução?</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="188"/> <location filename="../src/batchprocessing.cpp" line="194"/>
<source>Select files</source> <source>Select files</source>
<translation>Selecionar arquivos</translation> <translation>Selecionar arquivos</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="200"/> <location filename="../src/batchprocessing.cpp" line="206"/>
<source>Select directory</source> <source>Select directory</source>
<translation>Selecione o diretório</translation> <translation>Selecione o diretório</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="236"/> <location filename="../src/batchprocessing.cpp" line="242"/>
<source>Select output directory</source> <source>Select output directory</source>
<translation>Selecione o diretório de saída</translation> <translation>Selecione o diretório de saída</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Invalid output directory</source> <source>Invalid output directory</source>
<translation>Diretório de saída inválido</translation> <translation>Diretório de saída inválido</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Output directory path doesn&apos;t exist or is not writable</source> <source>Output directory path doesn&apos;t exist or is not writable</source>
<translation>O caminho do diretório de saída não existe ou não é gravável</translation> <translation>O caminho do diretório de saída não existe ou não é gravável</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="303"/> <location filename="../src/batchprocessing.cpp" line="346"/>
<source>Enter text</source> <source>Enter text</source>
<translation>Inserir texto</translation> <translation>Inserir texto</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="310"/> <location filename="../src/batchprocessing.cpp" line="353"/>
<source>Enter integer number</source> <source>Enter integer number</source>
<translation>Insira o número inteiro</translation> <translation>Insira o número inteiro</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="317"/> <location filename="../src/batchprocessing.cpp" line="360"/>
<source>Enter float number</source> <source>Enter float number</source>
<translation>Digite o número real</translation> <translation>Digite o número real</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="324"/> <location filename="../src/batchprocessing.cpp" line="367"/>
<source>Select item</source> <source>Select item</source>
<translation>Selecione o item</translation> <translation>Selecione o item</translation>
</message> </message>
@@ -173,17 +175,17 @@
<context> <context>
<name>DataBaseView</name> <name>DataBaseView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="261"/> <location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Selecionar colunas</translation> <translation>Selecionar colunas</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="311"/> <location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source> <source>Text to search, you can % as wildcard</source>
<translation>Texto a ser pesquisado, você pode % como curinga</translation> <translation>Texto a ser pesquisado, você pode % como curinga</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="327"/> <location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source> <source>Filter</source>
<translation>Filtro</translation> <translation>Filtro</translation>
</message> </message>
@@ -191,30 +193,79 @@
<context> <context>
<name>DatabaseTableView</name> <name>DatabaseTableView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="216"/> <location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source> <source>Mark</source>
<translation>Assinalar</translation> <translation>Assinalar</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="217"/> <location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Desmarcar</translation> <translation>Desmarcar</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="218"/> <location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source> <source>Open</source>
<translation type="unfinished">Abrir</translation> <translation type="unfinished">Abrir</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="219"/> <location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source> <source>Open file location</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation type="unfinished">Add</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation type="unfinished">Retirar</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../src/databasetreekeys.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished">Plate Solving Settings</translation>
</message>
</context> </context>
<context> <context>
<name>FITSFileModel</name> <name>FITSFileModel</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="195"/> <location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source> <source>File name</source>
<translation>Nome do arquivo</translation> <translation>Nome do arquivo</translation>
</message> </message>
@@ -229,7 +280,7 @@
<message> <message>
<location filename="../src/fitskeyword.ui" line="41"/> <location filename="../src/fitskeyword.ui" line="41"/>
<source>Add</source> <source>Add</source>
<translation type="unfinished">Add</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/fitskeyword.ui" line="48"/> <location filename="../src/fitskeyword.ui" line="48"/>
@@ -278,12 +329,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -291,32 +342,32 @@
<context> <context>
<name>FileTransfer</name> <name>FileTransfer</name>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished">Error</translation> <translation type="unfinished">Error</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Destination directory %1 doesn&apos;t exists</source> <source>Destination directory %1 doesn&apos;t exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Copy failed</source> <source>Copy failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Failed to copy file %1 to %2</source> <source>Failed to copy file %1 to %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Move failed</source> <source>Move failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Failed to move file %1 to %2</source> <source>Failed to move file %1 to %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -396,7 +447,7 @@
<context> <context>
<name>HelpDialog</name> <name>HelpDialog</name>
<message> <message>
<location filename="../src/about.cpp" line="33"/> <location filename="../src/about.cpp" line="35"/>
<source>Help</source> <source>Help</source>
<translation>Ajuda</translation> <translation>Ajuda</translation>
</message> </message>
@@ -427,12 +478,12 @@
<translation>Comentário</translation> <translation>Comentário</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="27"/> <location filename="../src/imageinfo.cpp" line="29"/>
<source>FITS Header</source> <source>FITS Header</source>
<translation>Cabeçalho FITS</translation> <translation>Cabeçalho FITS</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="43"/> <location filename="../src/imageinfo.cpp" line="45"/>
<source>Image info</source> <source>Image info</source>
<translation>Imagem de informação</translation> <translation>Imagem de informação</translation>
</message> </message>
@@ -440,7 +491,7 @@
<context> <context>
<name>ImageRingList</name> <name>ImageRingList</name>
<message> <message>
<location filename="../src/imageringlist.cpp" line="466"/> <location filename="../src/imageringlist.cpp" line="470"/>
<source>Name</source> <source>Name</source>
<translation>Nome</translation> <translation>Nome</translation>
</message> </message>
@@ -511,222 +562,237 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="73"/> <location filename="../src/mainwindow.cpp" line="81"/>
<source>Image info</source> <source>Image info</source>
<translation>Imagem de informação</translation> <translation>Imagem de informação</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open DB</source> <source>Can&apos;t open DB</source>
<translation>Não é possível abrir o banco de dados</translation> <translation>Não é possível abrir o banco de dados</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open SQLITE database</source> <source>Can&apos;t open SQLITE database</source>
<translation>Não é possível abrir o banco de dados SQLITE</translation> <translation>Não é possível abrir o banco de dados SQLITE</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="140"/> <location filename="../src/mainwindow.cpp" line="150"/>
<source>Filesystem</source> <source>Filesystem</source>
<translation>Sistema de ficheiros</translation> <translation>Sistema de ficheiros</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="167"/> <location filename="../src/mainwindow.cpp" line="187"/>
<source>Tenmon</source> <source>Tenmon</source>
<translation>astronomia</translation> <translation>astronomia</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="182"/> <location filename="../src/mainwindow.cpp" line="202"/>
<source>File</source> <source>File</source>
<translation>Arquivo</translation> <translation>Arquivo</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="183"/> <location filename="../src/mainwindow.cpp" line="203"/>
<source>Open</source> <source>Open</source>
<translation>Abrir</translation> <translation>Abrir</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="190"/> <location filename="../src/mainwindow.cpp" line="210"/>
<source>Copy marked files</source> <source>Copy marked files</source>
<translation>Copiar arquivos marcados</translation> <translation>Copiar arquivos marcados</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="185"/> <location filename="../src/mainwindow.cpp" line="205"/>
<location filename="../src/mainwindow.cpp" line="617"/> <location filename="../src/mainwindow.cpp" line="647"/>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="810"/>
<source>Save as</source> <source>Save as</source>
<translation>Salvar como</translation> <translation>Salvar como</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="123"/> <location filename="../src/mainwindow.cpp" line="133"/>
<source>Navigation toolbar</source> <source>Navigation toolbar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="126"/> <location filename="../src/mainwindow.cpp" line="136"/>
<source>Previous image</source> <source>Previous image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="128"/> <location filename="../src/mainwindow.cpp" line="138"/>
<source>Next image</source> <source>Next image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="130"/> <location filename="../src/mainwindow.cpp" line="140"/>
<source>Prev sub image</source> <source>Prev sub image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="131"/> <location filename="../src/mainwindow.cpp" line="141"/>
<source>Next sub image</source> <source>Next sub image</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="184"/> <location filename="../src/mainwindow.cpp" line="179"/>
<location filename="../src/mainwindow.cpp" line="579"/> <source>Database Tree</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="204"/>
<location filename="../src/mainwindow.cpp" line="605"/>
<source>Open directory recursively</source> <source>Open directory recursively</source>
<translation>Abra o diretório recursivamente</translation> <translation>Abra o diretório recursivamente</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="188"/> <location filename="../src/mainwindow.cpp" line="208"/>
<source>File manager</source> <source>File manager</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="197"/> <location filename="../src/mainwindow.cpp" line="222"/>
<source>Batch processing</source> <source>Batch processing</source>
<translation>Processamento em lote</translation> <translation>Processamento em lote</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="203"/> <location filename="../src/mainwindow.cpp" line="228"/>
<source>Live mode</source> <source>Live mode</source>
<translation>Modo ao vivo</translation> <translation>Modo ao vivo</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="205"/> <location filename="../src/mainwindow.cpp" line="230"/>
<source>Exit</source> <source>Exit</source>
<translation>Sair</translation> <translation>Sair</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="213"/> <location filename="../src/mainwindow.cpp" line="238"/>
<source>Navigation</source> <source>Navigation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="220"/> <location filename="../src/mainwindow.cpp" line="245"/>
<source>View</source> <source>View</source>
<translation>Vista</translation> <translation>Vista</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="221"/> <location filename="../src/mainwindow.cpp" line="246"/>
<source>Zoom In</source> <source>Zoom In</source>
<translation>Ampliar</translation> <translation>Ampliar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="222"/> <location filename="../src/mainwindow.cpp" line="247"/>
<source>Zoom Out</source> <source>Zoom Out</source>
<translation>Diminuir o zoom</translation> <translation>Diminuir o zoom</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="223"/> <location filename="../src/mainwindow.cpp" line="248"/>
<source>Best Fit</source> <source>Best Fit</source>
<translation>Melhor ajuste</translation> <translation>Melhor ajuste</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="224"/> <location filename="../src/mainwindow.cpp" line="249"/>
<source>100%</source> <source>100%</source>
<translation>100%</translation> <translation>100%</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="228"/> <location filename="../src/mainwindow.cpp" line="253"/>
<source>RGGB</source> <source>RGGB</source>
<translation>RGGB</translation> <translation>RGGB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="247"/> <location filename="../src/mainwindow.cpp" line="272"/>
<source>Colormap</source> <source>Colormap</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="254"/> <location filename="../src/mainwindow.cpp" line="279"/>
<source>User %1</source> <source>User %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="283"/> <location filename="../src/mainwindow.cpp" line="308"/>
<source>Select</source> <source>Select</source>
<translation>Selecionar</translation> <translation>Selecionar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="284"/> <location filename="../src/mainwindow.cpp" line="309"/>
<source>Mark</source> <source>Mark</source>
<translation>Assinalar</translation> <translation>Assinalar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="285"/> <location filename="../src/mainwindow.cpp" line="310"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Desmarcar</translation> <translation>Desmarcar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="287"/> <location filename="../src/mainwindow.cpp" line="312"/>
<source>Mark and next</source> <source>Mark and next</source>
<translation>Marcar e próximo</translation> <translation>Marcar e próximo</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="288"/> <location filename="../src/mainwindow.cpp" line="313"/>
<source>Unmark and next</source> <source>Unmark and next</source>
<translation>Desmarcar e avançar</translation> <translation>Desmarcar e avançar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="290"/> <location filename="../src/mainwindow.cpp" line="315"/>
<source>Show marked list</source> <source>Show marked list</source>
<translation>Mostrar lista marcada</translation> <translation>Mostrar lista marcada</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="291"/> <location filename="../src/mainwindow.cpp" line="316"/>
<source>Open marked</source> <source>Open marked</source>
<translation>Aberto marcado</translation> <translation>Aberto marcado</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>Missing marked files</source> <source>Missing marked files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>%1 marked files were missing. They were skipped.</source> <source>%1 marked files were missing. They were skipped.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="670"/>
<location filename="../src/mainwindow.cpp" line="804"/> <source>Apply stretch?</source>
<location filename="../src/mainwindow.cpp" line="815"/> <translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="670"/>
<source>Apply current stretch function to image?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="832"/>
<location filename="../src/mainwindow.cpp" line="835"/>
<location filename="../src/mainwindow.cpp" line="846"/>
<source>Update check</source> <source>Update check</source>
<translation>Verificação de atualização</translation> <translation>Verificação de atualização</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="832"/>
<source>You have newest version</source> <source>You have newest version</source>
<translation>Você tem a versão mais recente</translation> <translation>Você tem a versão mais recente</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="804"/> <location filename="../src/mainwindow.cpp" line="835"/>
<source>New version %1 is available. Do you want to download it now?</source> <source>New version %1 is available. Do you want to download it now?</source>
<translation>A nova versão %1 está disponível. Deseja baixá-lo agora?</translation> <translation>A nova versão %1 está disponível. Deseja baixá-lo agora?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="815"/> <location filename="../src/mainwindow.cpp" line="846"/>
<source>Failed to check version</source> <source>Failed to check version</source>
<translation>Falha ao verificar a versão</translation> <translation>Falha ao verificar a versão</translation>
</message> </message>
@@ -743,46 +809,46 @@
<translation type="vanished">Peak finder</translation> <translation type="vanished">Peak finder</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="320"/> <location filename="../src/mainwindow.cpp" line="345"/>
<source>Docks</source> <source>Docks</source>
<translation>Docas</translation> <translation>Docas</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="542"/> <location filename="../src/mainwindow.cpp" line="568"/>
<source>Open file</source> <source>Open file</source>
<translation>Abrir arquivo</translation> <translation>Abrir arquivo</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="425"/> <location filename="../src/mainwindow.cpp" line="451"/>
<source>Select destination</source> <source>Select destination</source>
<translation>Selecione o destino</translation> <translation>Selecione o destino</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Copying</source> <source>Copying</source>
<translation>Copiando</translation> <translation>Copiando</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Cancelar</translation> <translation>Cancelar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="191"/> <location filename="../src/mainwindow.cpp" line="211"/>
<source>Move marked files</source> <source>Move marked files</source>
<translation>Mover arquivos marcados</translation> <translation>Mover arquivos marcados</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="194"/> <location filename="../src/mainwindow.cpp" line="219"/>
<location filename="../src/mainwindow.cpp" line="592"/> <location filename="../src/mainwindow.cpp" line="618"/>
<source>Index directory</source> <source>Index directory</source>
<translation>Diretório de índice</translation> <translation>Diretório de índice</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="267"/> <location filename="../src/mainwindow.cpp" line="292"/>
<source>Thumbnails</source> <source>Thumbnails</source>
<translation>Miniaturas</translation> <translation>Miniaturas</translation>
</message> </message>
@@ -791,49 +857,49 @@
<translation type="vanished">Show marked</translation> <translation type="vanished">Show marked</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="333"/> <location filename="../src/mainwindow.cpp" line="359"/>
<location filename="../src/mainwindow.cpp" line="334"/> <location filename="../src/mainwindow.cpp" line="360"/>
<source>Help</source> <source>Help</source>
<translation>Ajuda</translation> <translation>Ajuda</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="335"/> <location filename="../src/mainwindow.cpp" line="361"/>
<source>About Tenmon</source> <source>About Tenmon</source>
<translation>Sobre Tenmon</translation> <translation>Sobre Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="336"/> <location filename="../src/mainwindow.cpp" line="362"/>
<source>About Qt</source> <source>About Qt</source>
<translation>Sobre o Qt</translation> <translation>Sobre o Qt</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="363"/>
<source>Check for update</source> <source>Check for update</source>
<translation>Verificar atualizações</translation> <translation>Verificar atualizações</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Moving</source> <source>Moving</source>
<translation>Movente</translation> <translation>Movente</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<source>Indexing FITS files</source> <source>Indexing FITS files</source>
<translation>Indexação de arquivos FITS</translation> <translation>Indexação de arquivos FITS</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="195"/> <location filename="../src/mainwindow.cpp" line="220"/>
<source>Reindex files</source> <source>Reindex files</source>
<translation>Reindexar arquivos</translation> <translation>Reindexar arquivos</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="145"/> <location filename="../src/mainwindow.cpp" line="155"/>
<source>FITS/XISF files database</source> <source>FITS/XISF files database</source>
<translation>Banco de dados de arquivos FITS/XISF</translation> <translation>Banco de dados de arquivos FITS/XISF</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="153"/> <location filename="../src/mainwindow.cpp" line="164"/>
<source>File tree</source> <source>File tree</source>
<translation>Árvore de arquivos</translation> <translation>Árvore de arquivos</translation>
</message> </message>
@@ -842,117 +908,117 @@
<translation type="vanished">Star finder</translation> <translation type="vanished">Star finder</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="209"/> <location filename="../src/mainwindow.cpp" line="234"/>
<source>Edit</source> <source>Edit</source>
<translation>Editar</translation> <translation>Editar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="210"/> <location filename="../src/mainwindow.cpp" line="235"/>
<source>Settings</source> <source>Settings</source>
<translation>Configurações</translation> <translation>Configurações</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="53"/> <location filename="../src/mainwindow.cpp" line="55"/>
<source>Images (</source> <source>Images (</source>
<translation>Imagens (</translation> <translation>Imagens (</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="52"/> <location filename="../src/mainwindow.cpp" line="54"/>
<source>FITS (*.fits *.fit);;XISF (*.xisf);;</source> <source>FITS (*.fits *.fit);;XISF (*.xisf);;</source>
<translation>Imagem FITS (*.fits *.fit);; Imagem XISF (*.xisf);;</translation> <translation>Imagem FITS (*.fits *.fit);; Imagem XISF (*.xisf);;</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to copy</source> <source>Failed to copy</source>
<translation>Falha ao copiar</translation> <translation>Falha ao copiar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to move</source> <source>Failed to move</source>
<translation>Falha ao mover</translation> <translation>Falha ao mover</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to move from %1 to %2</source> <source>Failed to move from %1 to %2</source>
<translation>Falha ao mover de %1 para %2</translation> <translation>Falha ao mover de %1 para %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to copy from %1 to %2</source> <source>Failed to copy from %1 to %2</source>
<translation>Falha ao copiar de %1 para %2</translation> <translation>Falha ao copiar de %1 para %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="67"/> <location filename="../src/mainwindow.cpp" line="75"/>
<source>;;All files (*)</source> <source>;;All files (*)</source>
<translation>;; Todos os arquivos (*)</translation> <translation>;; Todos os arquivos (*)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Move files to trash?</source> <source>Move files to trash?</source>
<translation>Mover arquivos para a lixeira?</translation> <translation>Mover arquivos para a lixeira?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Do you want to move %1 files to trash?</source> <source>Do you want to move %1 files to trash?</source>
<translation>Deseja mover arquivos %1 para a lixeira?</translation> <translation>Deseja mover arquivos %1 para a lixeira?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash</source> <source>Failed to move file to trash</source>
<translation>Falha ao mover o arquivo para a lixeira</translation> <translation>Falha ao mover o arquivo para a lixeira</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash %1</source> <source>Failed to move file to trash %1</source>
<translation>Falha ao mover o arquivo para a lixeira %1</translation> <translation>Falha ao mover o arquivo para a lixeira %1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="192"/> <location filename="../src/mainwindow.cpp" line="212"/>
<source>Move marked files to trash</source> <source>Move marked files to trash</source>
<translation>Mover arquivos marcados para a lixeira</translation> <translation>Mover arquivos marcados para a lixeira</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Moving marked files to trash</source> <source>Moving marked files to trash</source>
<translation>Movendo arquivos marcados para a lixeira</translation> <translation>Movendo arquivos marcados para a lixeira</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="196"/> <location filename="../src/mainwindow.cpp" line="221"/>
<source>Export database to CSV</source> <source>Export database to CSV</source>
<translation>Exportar banco de dados para arquivo CSV</translation> <translation>Exportar banco de dados para arquivo CSV</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="781"/> <location filename="../src/mainwindow.cpp" line="812"/>
<source>CSV file (*.csv)</source> <source>CSV file (*.csv)</source>
<translation>Arquivos CSV (*.csv)</translation> <translation>Arquivos CSV (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="161"/> <location filename="../src/mainwindow.cpp" line="172"/>
<source>Histogram</source> <source>Histogram</source>
<translation>Histograma</translation> <translation>Histograma</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="251"/>
<source>Bayer mask</source> <source>Bayer mask</source>
<translation>máscara Bayer</translation> <translation>máscara Bayer</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="229"/> <location filename="../src/mainwindow.cpp" line="254"/>
<source>GRBG</source> <source>GRBG</source>
<translation>GRBG</translation> <translation>GRBG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="230"/> <location filename="../src/mainwindow.cpp" line="255"/>
<source>GBRG</source> <source>GBRG</source>
<translation>GBRG</translation> <translation>GBRG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="256"/>
<source>BGGR</source> <source>BGGR</source>
<translation>BGGR</translation> <translation>BGGR</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="275"/> <location filename="../src/mainwindow.cpp" line="300"/>
<source>Slideshow</source> <source>Slideshow</source>
<translation>Apresentação de slides</translation> <translation>Apresentação de slides</translation>
</message> </message>
@@ -1384,7 +1450,7 @@
<context> <context>
<name>SelectColumnsDialog</name> <name>SelectColumnsDialog</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="53"/> <location filename="../src/databaseview.cpp" line="56"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Select columns</translation> <translation>Select columns</translation>
</message> </message>
@@ -1407,12 +1473,12 @@
<translation>Thumbnail size in pixels</translation> <translation>Thumbnail size in pixels</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="132"/> <location filename="../src/settingsdialog.cpp" line="150"/>
<source>Image preload count</source> <source>Image preload count</source>
<translation>Image preload count</translation> <translation>Image preload count</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="133"/> <location filename="../src/settingsdialog.cpp" line="151"/>
<source>Thumbnails size</source> <source>Thumbnails size</source>
<translation>Thumbnails size</translation> <translation>Thumbnails size</translation>
</message> </message>
@@ -1429,7 +1495,7 @@ For RAW files you may set 22%</source>
For RAW files you may set 22%</translation> For RAW files you may set 22%</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="134"/> <location filename="../src/settingsdialog.cpp" line="152"/>
<source>Saturation</source> <source>Saturation</source>
<translation>Saturated</translation> <translation>Saturated</translation>
</message> </message>
@@ -1489,57 +1555,62 @@ For RAW files you may set 22%</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="135"/> <location filename="../src/settingsdialog.cpp" line="153"/>
<source>Slideshow interval</source> <source>Slideshow interval</source>
<translation>Slideshow interval</translation> <translation>Slideshow interval</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="140"/> <location filename="../src/settingsdialog.cpp" line="155"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/settingsdialog.cpp" line="159"/>
<source>FITS header highlight</source> <source>FITS header highlight</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="146"/> <location filename="../src/settingsdialog.cpp" line="165"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="147"/> <location filename="../src/settingsdialog.cpp" line="166"/>
<source>This will install thumnail generation for FITS and XISF files in File Explorer</source> <source>This will install thumnail generation for FITS and XISF files in File Explorer</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="149"/> <location filename="../src/settingsdialog.cpp" line="168"/>
<source>Install thumbnailer</source> <source>Install thumbnailer</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Missing dll</source> <source>Missing dll</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Can&apos;t find </source> <source>Can&apos;t find </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail support</source> <source>Thumbnail support</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail generation support sucessufully installed.</source> <source>Thumbnail generation support sucessufully installed.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished">Error</translation> <translation type="unfinished">Error</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Failed to register thumbnailer. %1</source> <source>Failed to register thumbnailer. %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -1548,7 +1619,7 @@ For RAW files you may set 22%</translation>
<translation type="obsolete">Image sampling</translation> <translation type="obsolete">Image sampling</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="136"/> <location filename="../src/settingsdialog.cpp" line="154"/>
<source>Image interpolation</source> <source>Image interpolation</source>
<translation>Image interpolation</translation> <translation>Image interpolation</translation>
</message> </message>
Binary file not shown.
+215 -140
View File
@@ -96,52 +96,54 @@
<translation type="vanished">Zatvoriť</translation> <translation type="vanished">Zatvoriť</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="159"/> <location filename="../src/batchprocessing.cpp" line="165"/>
<source>Interrupt running script?</source> <source>Interrupt running script?</source>
<translation>Prerušiť bežiaci script?</translation> <translation>Prerušiť bežiaci script?</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="188"/> <location filename="../src/batchprocessing.cpp" line="194"/>
<source>Select files</source> <source>Select files</source>
<translation>Vybrať súbory</translation> <translation>Vybrať súbory</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="200"/> <location filename="../src/batchprocessing.cpp" line="206"/>
<source>Select directory</source> <source>Select directory</source>
<translation>Vybrať adresár</translation> <translation>Vybrať adresár</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="236"/> <location filename="../src/batchprocessing.cpp" line="242"/>
<source>Select output directory</source> <source>Select output directory</source>
<translation>Vybrať výstupný adresár</translation> <translation>Vybrať výstupný adresár</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Invalid output directory</source> <source>Invalid output directory</source>
<translation>Neplatný výstupný adresár</translation> <translation>Neplatný výstupný adresár</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="272"/> <location filename="../src/batchprocessing.cpp" line="278"/>
<location filename="../src/batchprocessing.cpp" line="305"/>
<source>Output directory path doesn&apos;t exist or is not writable</source> <source>Output directory path doesn&apos;t exist or is not writable</source>
<translation>Vystupný adresár neexistuje alebo sa doňho nedá zapisovať</translation> <translation>Vystupný adresár neexistuje alebo sa doňho nedá zapisovať</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="303"/> <location filename="../src/batchprocessing.cpp" line="346"/>
<source>Enter text</source> <source>Enter text</source>
<translation>Zadajte text</translation> <translation>Zadajte text</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="310"/> <location filename="../src/batchprocessing.cpp" line="353"/>
<source>Enter integer number</source> <source>Enter integer number</source>
<translation>Zadajte celé číslo</translation> <translation>Zadajte celé číslo</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="317"/> <location filename="../src/batchprocessing.cpp" line="360"/>
<source>Enter float number</source> <source>Enter float number</source>
<translation>Zadajte reálne číslo</translation> <translation>Zadajte reálne číslo</translation>
</message> </message>
<message> <message>
<location filename="../src/batchprocessing.cpp" line="324"/> <location filename="../src/batchprocessing.cpp" line="367"/>
<source>Select item</source> <source>Select item</source>
<translation>Vyberte položku</translation> <translation>Vyberte položku</translation>
</message> </message>
@@ -172,17 +174,17 @@
<context> <context>
<name>DataBaseView</name> <name>DataBaseView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="261"/> <location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Vyber stĺpce</translation> <translation>Vyber stĺpce</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="311"/> <location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source> <source>Text to search, you can % as wildcard</source>
<translation>Text na vyhľadanie, môžete použit % ako zástupný znak</translation> <translation>Text na vyhľadanie, môžete použit % ako zástupný znak</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="327"/> <location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source> <source>Filter</source>
<translatorcomment>Meno súboru</translatorcomment> <translatorcomment>Meno súboru</translatorcomment>
<translation>Filter</translation> <translation>Filter</translation>
@@ -191,30 +193,83 @@
<context> <context>
<name>DatabaseTableView</name> <name>DatabaseTableView</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="216"/> <location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source> <source>Mark</source>
<translation>Označiť</translation> <translation>Označiť</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="217"/> <location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Odznačiť</translation> <translation>Odznačiť</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="218"/> <location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source> <source>Open</source>
<translation>Otvoriť</translation> <translation>Otvoriť</translation>
</message> </message>
<message> <message>
<location filename="../src/databaseview.cpp" line="219"/> <location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source> <source>Open file location</source>
<translation>Otvoriť umiestnenie súboru</translation> <translation>Otvoriť umiestnenie súboru</translation>
</message> </message>
<message>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation>Skopírovať súbory</translation>
</message>
</context>
<context>
<name>DatabaseTreeSettings</name>
<message>
<source>Add tree filter</source>
<translation type="vanished">Pridať stromový filter</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation>Pridaj stromové zoskupovanie</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation>Agregačná funkcia</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation>Táto agregáčná funkcia bude použitá na poslednú úroveň zoskupovania</translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation>Pridať</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation>Odstrániť</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation>Strom/Tabuľka</translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../src/databasetreekeys.ui" line="14"/>
<source>Dialog</source>
<translation>Nastavenia Plate Solving</translation>
</message>
</context> </context>
<context> <context>
<name>FITSFileModel</name> <name>FITSFileModel</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="195"/> <location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source> <source>File name</source>
<translation>Meno súboru</translation> <translation>Meno súboru</translation>
</message> </message>
@@ -278,12 +333,12 @@
<translation>Skopírovať cestky k vybraným súborom</translation> <translation>Skopírovať cestky k vybraným súborom</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation>Prepísať súbor?</translation> <translation>Prepísať súbor?</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="497"/> <location filename="../src/filemanager.cpp" line="498"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation>Cieľový súbor %1 existuje. Prepísať?</translation> <translation>Cieľový súbor %1 existuje. Prepísať?</translation>
</message> </message>
@@ -291,32 +346,32 @@
<context> <context>
<name>FileTransfer</name> <name>FileTransfer</name>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Error</source> <source>Error</source>
<translation>Chyba</translation> <translation>Chyba</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="77"/> <location filename="../src/filemanager.cpp" line="78"/>
<source>Destination directory %1 doesn&apos;t exists</source> <source>Destination directory %1 doesn&apos;t exists</source>
<translation>Cieľový adresár %1 neexistuje</translation> <translation>Cieľový adresár %1 neexistuje</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Copy failed</source> <source>Copy failed</source>
<translation>Kopírovanie zlyhalo</translation> <translation>Kopírovanie zlyhalo</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="187"/> <location filename="../src/filemanager.cpp" line="188"/>
<source>Failed to copy file %1 to %2</source> <source>Failed to copy file %1 to %2</source>
<translation>Zlyhalo kopýrovanie súboru %1 do %2</translation> <translation>Zlyhalo kopýrovanie súboru %1 do %2</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Move failed</source> <source>Move failed</source>
<translation>Presun zlyhal</translation> <translation>Presun zlyhal</translation>
</message> </message>
<message> <message>
<location filename="../src/filemanager.cpp" line="195"/> <location filename="../src/filemanager.cpp" line="196"/>
<source>Failed to move file %1 to %2</source> <source>Failed to move file %1 to %2</source>
<translation>Zlyhalo kopírovanie súboru z %1 do %2</translation> <translation>Zlyhalo kopírovanie súboru z %1 do %2</translation>
</message> </message>
@@ -396,7 +451,7 @@
<context> <context>
<name>HelpDialog</name> <name>HelpDialog</name>
<message> <message>
<location filename="../src/about.cpp" line="33"/> <location filename="../src/about.cpp" line="35"/>
<source>Help</source> <source>Help</source>
<translation>Pomoc</translation> <translation>Pomoc</translation>
</message> </message>
@@ -427,12 +482,12 @@
<translation>Komentár</translation> <translation>Komentár</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="27"/> <location filename="../src/imageinfo.cpp" line="29"/>
<source>FITS Header</source> <source>FITS Header</source>
<translation>FITS hlavička</translation> <translation>FITS hlavička</translation>
</message> </message>
<message> <message>
<location filename="../src/imageinfo.cpp" line="43"/> <location filename="../src/imageinfo.cpp" line="45"/>
<source>Image info</source> <source>Image info</source>
<translation>Informácie o obrázku</translation> <translation>Informácie o obrázku</translation>
</message> </message>
@@ -440,7 +495,7 @@
<context> <context>
<name>ImageRingList</name> <name>ImageRingList</name>
<message> <message>
<location filename="../src/imageringlist.cpp" line="466"/> <location filename="../src/imageringlist.cpp" line="470"/>
<source>Name</source> <source>Name</source>
<translation>Meno</translation> <translation>Meno</translation>
</message> </message>
@@ -511,212 +566,227 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="73"/> <location filename="../src/mainwindow.cpp" line="81"/>
<source>Image info</source> <source>Image info</source>
<translation>Informácie o obrázku</translation> <translation>Informácie o obrázku</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open DB</source> <source>Can&apos;t open DB</source>
<translation>Nie je možné otvoriť DB</translation> <translation>Nie je možné otvoriť DB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="82"/> <location filename="../src/mainwindow.cpp" line="90"/>
<source>Can&apos;t open SQLITE database</source> <source>Can&apos;t open SQLITE database</source>
<translation>Nie je možné otvoriť SQLITE databázu</translation> <translation>Nie je možné otvoriť SQLITE databázu</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="140"/> <location filename="../src/mainwindow.cpp" line="150"/>
<source>Filesystem</source> <source>Filesystem</source>
<translation>Zoznam súborov</translation> <translation>Zoznam súborov</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="167"/> <location filename="../src/mainwindow.cpp" line="187"/>
<source>Tenmon</source> <source>Tenmon</source>
<translation>Tenmon</translation> <translation>Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="182"/> <location filename="../src/mainwindow.cpp" line="202"/>
<source>File</source> <source>File</source>
<translation>Súbor</translation> <translation>Súbor</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="183"/> <location filename="../src/mainwindow.cpp" line="203"/>
<source>Open</source> <source>Open</source>
<translation>Otvoriť</translation> <translation>Otvoriť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="190"/> <location filename="../src/mainwindow.cpp" line="210"/>
<source>Copy marked files</source> <source>Copy marked files</source>
<translation>Skopírovať označené súbory</translation> <translation>Skopírovať označené súbory</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="185"/> <location filename="../src/mainwindow.cpp" line="205"/>
<location filename="../src/mainwindow.cpp" line="617"/> <location filename="../src/mainwindow.cpp" line="647"/>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="810"/>
<source>Save as</source> <source>Save as</source>
<translation>Uložiť ako</translation> <translation>Uložiť ako</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="123"/> <location filename="../src/mainwindow.cpp" line="133"/>
<source>Navigation toolbar</source> <source>Navigation toolbar</source>
<translation>Navigačný panel</translation> <translation>Navigačný panel</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="126"/> <location filename="../src/mainwindow.cpp" line="136"/>
<source>Previous image</source> <source>Previous image</source>
<translation>Predchádzajúci obrázok</translation> <translation>Predchádzajúci obrázok</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="128"/> <location filename="../src/mainwindow.cpp" line="138"/>
<source>Next image</source> <source>Next image</source>
<translation>Ďalší obrázok</translation> <translation>Ďalší obrázok</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="130"/> <location filename="../src/mainwindow.cpp" line="140"/>
<source>Prev sub image</source> <source>Prev sub image</source>
<translation>Predchádajúci pod obrázok</translation> <translation>Predchádajúci pod obrázok</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="131"/> <location filename="../src/mainwindow.cpp" line="141"/>
<source>Next sub image</source> <source>Next sub image</source>
<translation>Ďaľší pod obrázok</translation> <translation>Ďaľší pod obrázok</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="184"/> <location filename="../src/mainwindow.cpp" line="179"/>
<location filename="../src/mainwindow.cpp" line="579"/> <source>Database Tree</source>
<translation>Databázový strom</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="204"/>
<location filename="../src/mainwindow.cpp" line="605"/>
<source>Open directory recursively</source> <source>Open directory recursively</source>
<translation>Otvoriť adresár rekurzívne</translation> <translation>Otvoriť adresár rekurzívne</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="188"/> <location filename="../src/mainwindow.cpp" line="208"/>
<source>File manager</source> <source>File manager</source>
<translation>Súborový manažér</translation> <translation>Súborový manažér</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="197"/> <location filename="../src/mainwindow.cpp" line="222"/>
<source>Batch processing</source> <source>Batch processing</source>
<translation>Hromadné spracovanie</translation> <translation>Hromadné spracovanie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="205"/> <location filename="../src/mainwindow.cpp" line="230"/>
<source>Exit</source> <source>Exit</source>
<translation>Ukončiť</translation> <translation>Ukončiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="213"/> <location filename="../src/mainwindow.cpp" line="238"/>
<source>Navigation</source> <source>Navigation</source>
<translation>Navigácia</translation> <translation>Navigácia</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="220"/> <location filename="../src/mainwindow.cpp" line="245"/>
<source>View</source> <source>View</source>
<translation>Zobrazenie</translation> <translation>Zobrazenie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="221"/> <location filename="../src/mainwindow.cpp" line="246"/>
<source>Zoom In</source> <source>Zoom In</source>
<translation>Priblížiť</translation> <translation>Priblížiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="222"/> <location filename="../src/mainwindow.cpp" line="247"/>
<source>Zoom Out</source> <source>Zoom Out</source>
<translation>Oddialiť</translation> <translation>Oddialiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="223"/> <location filename="../src/mainwindow.cpp" line="248"/>
<source>Best Fit</source> <source>Best Fit</source>
<translation>Najlepšia veľkosť</translation> <translation>Najlepšia veľkosť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="224"/> <location filename="../src/mainwindow.cpp" line="249"/>
<source>100%</source> <source>100%</source>
<translation>100%</translation> <translation>100%</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="247"/> <location filename="../src/mainwindow.cpp" line="272"/>
<source>Colormap</source> <source>Colormap</source>
<translation>Farebná mapa</translation> <translation>Farebná mapa</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="254"/> <location filename="../src/mainwindow.cpp" line="279"/>
<source>User %1</source> <source>User %1</source>
<translation>Použivaľská %1</translation> <translation>Použivaľská %1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="283"/> <location filename="../src/mainwindow.cpp" line="308"/>
<source>Select</source> <source>Select</source>
<translation>Výber</translation> <translation>Výber</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="284"/> <location filename="../src/mainwindow.cpp" line="309"/>
<source>Mark</source> <source>Mark</source>
<translation>Označiť</translation> <translation>Označiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="285"/> <location filename="../src/mainwindow.cpp" line="310"/>
<source>Unmark</source> <source>Unmark</source>
<translation>Odznačiť</translation> <translation>Odznačiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="287"/> <location filename="../src/mainwindow.cpp" line="312"/>
<source>Mark and next</source> <source>Mark and next</source>
<translation>Označiť a ďaľší</translation> <translation>Označiť a ďaľší</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="288"/> <location filename="../src/mainwindow.cpp" line="313"/>
<source>Unmark and next</source> <source>Unmark and next</source>
<translation>Odznačiť a ďaľší</translation> <translation>Odznačiť a ďaľší</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="290"/> <location filename="../src/mainwindow.cpp" line="315"/>
<source>Show marked list</source> <source>Show marked list</source>
<translation>Ukázať zoznam označených</translation> <translation>Ukázať zoznam označených</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="291"/> <location filename="../src/mainwindow.cpp" line="316"/>
<source>Open marked</source> <source>Open marked</source>
<translation>Otvoriť označené</translation> <translation>Otvoriť označené</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Overwrite file?</source> <source>Overwrite file?</source>
<translation>Prepísať súbor?</translation> <translation>Prepísať súbor?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="469"/> <location filename="../src/mainwindow.cpp" line="495"/>
<source>Destination file %1 already exists. Overwrite?</source> <source>Destination file %1 already exists. Overwrite?</source>
<translation>Cieľový súbor %1 existuje. Prepísať?</translation> <translation>Cieľový súbor %1 existuje. Prepísať?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>Missing marked files</source> <source>Missing marked files</source>
<translation>Chybajúce označené súbory</translation> <translation>Chybajúce označené súbory</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="526"/> <location filename="../src/mainwindow.cpp" line="552"/>
<source>%1 marked files were missing. They were skipped.</source> <source>%1 marked files were missing. They were skipped.</source>
<translation>%1 označených súborov chýbalo. Boly preskočené.</translation> <translation>%1 označených súborov chýbalo. Boly preskočené.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="670"/>
<location filename="../src/mainwindow.cpp" line="804"/> <source>Apply stretch?</source>
<location filename="../src/mainwindow.cpp" line="815"/> <translation>Aplikovať natiahnutie?</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="670"/>
<source>Apply current stretch function to image?</source>
<translation>Aplikovať aktuálny natiahnutie na obrázok?</translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="832"/>
<location filename="../src/mainwindow.cpp" line="835"/>
<location filename="../src/mainwindow.cpp" line="846"/>
<source>Update check</source> <source>Update check</source>
<translation>Kontrola aktualizácie</translation> <translation>Kontrola aktualizácie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="801"/> <location filename="../src/mainwindow.cpp" line="832"/>
<source>You have newest version</source> <source>You have newest version</source>
<translation>Máte najnovšiu verzsiu</translation> <translation>Máte najnovšiu verzsiu</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="804"/> <location filename="../src/mainwindow.cpp" line="835"/>
<source>New version %1 is available. Do you want to download it now?</source> <source>New version %1 is available. Do you want to download it now?</source>
<translation>Nová verzia %1 je k dispozícii. Chcete ju stiahnuť teraz?</translation> <translation>Nová verzia %1 je k dispozícii. Chcete ju stiahnuť teraz?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="815"/> <location filename="../src/mainwindow.cpp" line="846"/>
<source>Failed to check version</source> <source>Failed to check version</source>
<translation>Kontrola novej verzie zlyhala</translation> <translation>Kontrola novej verzie zlyhala</translation>
</message> </message>
@@ -729,51 +799,51 @@
<translation type="vanished">Štatistiky obrázka</translation> <translation type="vanished">Štatistiky obrázka</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="320"/> <location filename="../src/mainwindow.cpp" line="345"/>
<source>Docks</source> <source>Docks</source>
<translation>Dokovacie panely</translation> <translation>Dokovacie panely</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="542"/> <location filename="../src/mainwindow.cpp" line="568"/>
<source>Open file</source> <source>Open file</source>
<translation>Otvoriť súbor</translation> <translation>Otvoriť súbor</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="425"/> <location filename="../src/mainwindow.cpp" line="451"/>
<source>Select destination</source> <source>Select destination</source>
<translation>Vybrať cieľ</translation> <translation>Vybrať cieľ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Copying</source> <source>Copying</source>
<translation>Kopírovanie</translation> <translation>Kopírovanie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Zrušiť</translation> <translation>Zrušiť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="191"/> <location filename="../src/mainwindow.cpp" line="211"/>
<source>Move marked files</source> <source>Move marked files</source>
<translation>Presunúť označené súbory</translation> <translation>Presunúť označené súbory</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="194"/> <location filename="../src/mainwindow.cpp" line="219"/>
<location filename="../src/mainwindow.cpp" line="592"/> <location filename="../src/mainwindow.cpp" line="618"/>
<source>Index directory</source> <source>Index directory</source>
<translation>Indexovať adresár</translation> <translation>Indexovať adresár</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="203"/> <location filename="../src/mainwindow.cpp" line="228"/>
<source>Live mode</source> <source>Live mode</source>
<translation>Živý mód</translation> <translation>Živý mód</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="267"/> <location filename="../src/mainwindow.cpp" line="292"/>
<source>Thumbnails</source> <source>Thumbnails</source>
<translation>Náhľady</translation> <translation>Náhľady</translation>
</message> </message>
@@ -786,44 +856,44 @@
<translation type="vanished">Vyhľadávač vrcholov</translation> <translation type="vanished">Vyhľadávač vrcholov</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="333"/> <location filename="../src/mainwindow.cpp" line="359"/>
<location filename="../src/mainwindow.cpp" line="334"/> <location filename="../src/mainwindow.cpp" line="360"/>
<source>Help</source> <source>Help</source>
<translation>Pomoc</translation> <translation>Pomoc</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="335"/> <location filename="../src/mainwindow.cpp" line="361"/>
<source>About Tenmon</source> <source>About Tenmon</source>
<translation>O Tenmon</translation> <translation>O Tenmon</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="336"/> <location filename="../src/mainwindow.cpp" line="362"/>
<source>About Qt</source> <source>About Qt</source>
<translation>O Qt</translation> <translation>O Qt</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="441"/> <location filename="../src/mainwindow.cpp" line="467"/>
<source>Moving</source> <source>Moving</source>
<translation>Presúvanie</translation> <translation>Presúvanie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="600"/> <location filename="../src/mainwindow.cpp" line="626"/>
<location filename="../src/mainwindow.cpp" line="608"/> <location filename="../src/mainwindow.cpp" line="634"/>
<source>Indexing FITS files</source> <source>Indexing FITS files</source>
<translation>Indexovanie FITS/XISF súborov</translation> <translation>Indexovanie FITS/XISF súborov</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="195"/> <location filename="../src/mainwindow.cpp" line="220"/>
<source>Reindex files</source> <source>Reindex files</source>
<translation>Reindexuj súbory</translation> <translation>Reindexuj súbory</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="145"/> <location filename="../src/mainwindow.cpp" line="155"/>
<source>FITS/XISF files database</source> <source>FITS/XISF files database</source>
<translation>Databáza FITS/XISF súborov</translation> <translation>Databáza FITS/XISF súborov</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="153"/> <location filename="../src/mainwindow.cpp" line="164"/>
<source>File tree</source> <source>File tree</source>
<translation>Strom súborov</translation> <translation>Strom súborov</translation>
</message> </message>
@@ -832,127 +902,127 @@
<translation type="vanished">Vyhľadávač hviezd</translation> <translation type="vanished">Vyhľadávač hviezd</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="209"/> <location filename="../src/mainwindow.cpp" line="234"/>
<source>Edit</source> <source>Edit</source>
<translation>Upraviť</translation> <translation>Upraviť</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="210"/> <location filename="../src/mainwindow.cpp" line="235"/>
<source>Settings</source> <source>Settings</source>
<translation>Nastavenia</translation> <translation>Nastavenia</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="53"/> <location filename="../src/mainwindow.cpp" line="55"/>
<source>Images (</source> <source>Images (</source>
<translation>Obrázky (</translation> <translation>Obrázky (</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="52"/> <location filename="../src/mainwindow.cpp" line="54"/>
<source>FITS (*.fits *.fit);;XISF (*.xisf);;</source> <source>FITS (*.fits *.fit);;XISF (*.xisf);;</source>
<translation>Obrázok FITS (*.fits *.fit);;Obrázok XISF (*.xisf);;</translation> <translation>Obrázok FITS (*.fits *.fit);;Obrázok XISF (*.xisf);;</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="363"/>
<source>Check for update</source> <source>Check for update</source>
<translation>Skontroluj novú verziu</translation> <translation>Skontroluj novú verziu</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to copy</source> <source>Failed to copy</source>
<translation>Zlyhalo kopírovanie</translation> <translation>Zlyhalo kopírovanie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="515"/> <location filename="../src/mainwindow.cpp" line="541"/>
<source>Failed to move</source> <source>Failed to move</source>
<translation>Zlyhalo presúvanie</translation> <translation>Zlyhalo presúvanie</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to move from %1 to %2</source> <source>Failed to move from %1 to %2</source>
<translation>Zlyhalo presúvanie z %1 do %2</translation> <translation>Zlyhalo presúvanie z %1 do %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="516"/> <location filename="../src/mainwindow.cpp" line="542"/>
<source>Failed to copy from %1 to %2</source> <source>Failed to copy from %1 to %2</source>
<translation>Zlyhalo kopírovanie z %1 do %2</translation> <translation>Zlyhalo kopírovanie z %1 do %2</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="67"/> <location filename="../src/mainwindow.cpp" line="75"/>
<source>;;All files (*)</source> <source>;;All files (*)</source>
<translation>;;Všetky súbory (*)</translation> <translation>;;Všetky súbory (*)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Move files to trash?</source> <source>Move files to trash?</source>
<translation>Presunúť súbory do koša?</translation> <translation>Presunúť súbory do koša?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="747"/>
<source>Do you want to move %1 files to trash?</source> <source>Do you want to move %1 files to trash?</source>
<translation>Presunúť %1 súborov do koša?</translation> <translation>Presunúť %1 súborov do koša?</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash</source> <source>Failed to move file to trash</source>
<translation>Zlyhalo presunutie súbora do koša</translation> <translation>Zlyhalo presunutie súbora do koša</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="764"/>
<source>Failed to move file to trash %1</source> <source>Failed to move file to trash %1</source>
<translation>Zlyhalo presunutie súbora do koša %1</translation> <translation>Zlyhalo presunutie súbora do koša %1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="192"/> <location filename="../src/mainwindow.cpp" line="212"/>
<source>Move marked files to trash</source> <source>Move marked files to trash</source>
<translation>Presunúť označené súbory do koša</translation> <translation>Presunúť označené súbory do koša</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="719"/> <location filename="../src/mainwindow.cpp" line="750"/>
<source>Moving marked files to trash</source> <source>Moving marked files to trash</source>
<translation>Presúvanie do koša</translation> <translation>Presúvanie do koša</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="196"/> <location filename="../src/mainwindow.cpp" line="221"/>
<source>Export database to CSV</source> <source>Export database to CSV</source>
<translation>Exportovať databázu do CSV súboru</translation> <translation>Exportovať databázu do CSV súboru</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="781"/> <location filename="../src/mainwindow.cpp" line="812"/>
<source>CSV file (*.csv)</source> <source>CSV file (*.csv)</source>
<translation>Súbory CSV (*.csv)</translation> <translation>Súbory CSV (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="161"/> <location filename="../src/mainwindow.cpp" line="172"/>
<source>Histogram</source> <source>Histogram</source>
<translation>Histogram</translation> <translation>Histogram</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="251"/>
<source>Bayer mask</source> <source>Bayer mask</source>
<translation>Bayerova maska</translation> <translation>Bayerova maska</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="228"/> <location filename="../src/mainwindow.cpp" line="253"/>
<source>RGGB</source> <source>RGGB</source>
<translation>RGGB</translation> <translation>RGGB</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="229"/> <location filename="../src/mainwindow.cpp" line="254"/>
<source>GRBG</source> <source>GRBG</source>
<translation>GRBG</translation> <translation>GRBG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="230"/> <location filename="../src/mainwindow.cpp" line="255"/>
<source>GBRG</source> <source>GBRG</source>
<translation>GBRG</translation> <translation>GBRG</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="256"/>
<source>BGGR</source> <source>BGGR</source>
<translation>BGGR</translation> <translation>BGGR</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="275"/> <location filename="../src/mainwindow.cpp" line="300"/>
<source>Slideshow</source> <source>Slideshow</source>
<translation>Prezentácia</translation> <translation>Prezentácia</translation>
</message> </message>
@@ -1388,7 +1458,7 @@
<context> <context>
<name>SelectColumnsDialog</name> <name>SelectColumnsDialog</name>
<message> <message>
<location filename="../src/databaseview.cpp" line="53"/> <location filename="../src/databaseview.cpp" line="56"/>
<source>Select columns</source> <source>Select columns</source>
<translation>Výber stĺpcov</translation> <translation>Výber stĺpcov</translation>
</message> </message>
@@ -1411,12 +1481,12 @@
<translation>Veľkosť náhľadu v pixeloch</translation> <translation>Veľkosť náhľadu v pixeloch</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="132"/> <location filename="../src/settingsdialog.cpp" line="150"/>
<source>Image preload count</source> <source>Image preload count</source>
<translation>Počet prednačítaných obrázkov</translation> <translation>Počet prednačítaných obrázkov</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="133"/> <location filename="../src/settingsdialog.cpp" line="151"/>
<source>Thumbnails size</source> <source>Thumbnails size</source>
<translation>Veľkosť náhľadu</translation> <translation>Veľkosť náhľadu</translation>
</message> </message>
@@ -1433,7 +1503,7 @@ For RAW files you may set 22%</source>
Pre RAW súbory možno treba nastaviť 22%</translation> Pre RAW súbory možno treba nastaviť 22%</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="134"/> <location filename="../src/settingsdialog.cpp" line="152"/>
<source>Saturation</source> <source>Saturation</source>
<translation>Saturované</translation> <translation>Saturované</translation>
</message> </message>
@@ -1493,62 +1563,67 @@ Pre RAW súbory možno treba nastaviť 22%</translation>
<translation>Odstráň zvyraznenie klúčového slova</translation> <translation>Odstráň zvyraznenie klúčového slova</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="135"/> <location filename="../src/settingsdialog.cpp" line="153"/>
<source>Slideshow interval</source> <source>Slideshow interval</source>
<translation>Interval medzi obrázkami</translation> <translation>Interval medzi obrázkami</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="136"/> <location filename="../src/settingsdialog.cpp" line="154"/>
<source>Image interpolation</source> <source>Image interpolation</source>
<translation>Interpolácia obrázku</translation> <translation>Interpolácia obrázku</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="140"/> <location filename="../src/settingsdialog.cpp" line="155"/>
<source>Language</source>
<translation>Jazyk</translation>
</message>
<message>
<location filename="../src/settingsdialog.cpp" line="159"/>
<source>FITS header highlight</source> <source>FITS header highlight</source>
<translation>Zvýraznenie FITS hlavičky</translation> <translation>Zvýraznenie FITS hlavičky</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="146"/> <location filename="../src/settingsdialog.cpp" line="165"/>
<source>Install</source> <source>Install</source>
<translation>Inštalovať</translation> <translation>Inštalovať</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="147"/> <location filename="../src/settingsdialog.cpp" line="166"/>
<source>This will install thumnail generation for FITS and XISF files in File Explorer</source> <source>This will install thumnail generation for FITS and XISF files in File Explorer</source>
<translation>Nainsťaluje podporu pre generovanie náhľadov FITS a XISF súborov do Prieskumníka</translation> <translation>Nainsťaluje podporu pre generovanie náhľadov FITS a XISF súborov do Prieskumníka</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="149"/> <location filename="../src/settingsdialog.cpp" line="168"/>
<source>Install thumbnailer</source> <source>Install thumbnailer</source>
<translation>Inštaluj generátor náhľadov</translation> <translation>Inštaluj generátor náhľadov</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Missing dll</source> <source>Missing dll</source>
<translation>Chýbajúca dll</translation> <translation>Chýbajúca dll</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="198"/> <location filename="../src/settingsdialog.cpp" line="216"/>
<source>Can&apos;t find </source> <source>Can&apos;t find </source>
<translation>Nemožem nájsť </translation> <translation>Nemožem nájsť </translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail support</source> <source>Thumbnail support</source>
<translation>Podpora náhľadov</translation> <translation>Podpora náhľadov</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="205"/> <location filename="../src/settingsdialog.cpp" line="223"/>
<source>Thumbnail generation support sucessufully installed.</source> <source>Thumbnail generation support sucessufully installed.</source>
<translation>Podpora generovania náhľadov bola úspešne nainštalovaná.</translation> <translation>Podpora generovania náhľadov bola úspešne nainštalovaná.</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Error</source> <source>Error</source>
<translation>Chyba</translation> <translation>Chyba</translation>
</message> </message>
<message> <message>
<location filename="../src/settingsdialog.cpp" line="207"/> <location filename="../src/settingsdialog.cpp" line="225"/>
<source>Failed to register thumbnailer. %1</source> <source>Failed to register thumbnailer. %1</source>
<translation>Zlyhalo registrovanie náhľadov %1</translation> <translation>Zlyhalo registrovanie náhľadov %1</translation>
</message> </message>