Commit Graph

92 Commits

Author SHA1 Message Date
Niklas Haas
2101b846c3 Implement file sorting in thumbnail view (#6449)
* Use mtime as fallback timestamp for files without EXIF data

As suggested in #6449, with date-based sorting it can be useful to have
at least *some* sort of time-relevant information for EXIF-less files,
to prevent them from falling back to getting sorted alphabetically all
the time.

This commit simply defaults the file timestamp to the file's mtime as
returned by g_stat. For annoying reasons, it doesn't suffice to merely
forward the timestamp to the FileData structs - we also need to keep
track of it inside FilesData to cover the case of a file with 0 frames
in it.

* Add DateTime to Thumbnail

Putting it here facilitate easier sorting without having to re-construct
the DateTime on every comparison.

To simplify things moving forwards, use the Glib::DateTime struct right
away. This struct also contains timezone information, but we don't
currently care about timezone - so just use the local timezone as the
best approximation. (Nothing currently depends on getting the timezone
right, anyway)

In addition to the above, this commit also changes the logic to allow
generating datetime strings even for files with missing EXIF (which
makes sense as a result of the previous commit allowing the use of mtime
instead).

* Implement file sorting in thumbnail view

For simplicity, I decided to only implement the attributes that I could
verily easily reach from the existing metadata exported by Thumbnail.
Ideally, I would also like to be able to sort by "last modified" but I'm
not sure of the best way to reach this from this place in the code.

It's worth pointing out that, with the current implementation, the list
will not dynamically re-sort itself until you re-select the sorting
method - even if you make changes to the files that would otherwise
affect the sorting (e.g. changing the rank while sorting by rank). One
might even call this a feature, not a bug, since it prevents thumbnails
from moving around while you're trying to re-label them. You can always
re-select "sort by ..." from the context menu to force a re-sort.

Fixes #3317

Co-authored-by: Thanatomanic <6567747+Thanatomanic@users.noreply.github.com>
2023-01-02 21:27:12 +01:00
Bezierr
784625b5cc Fix so E-Mount lens names are retrieved (#6437) 2022-03-26 12:02:50 +01:00
Bezierr
d86888e93f Add resizing options "long edge" and "short edge" (#6263)
Introduces "long edge" and "short edge" options to resize an image. The GUI is made such that the relevant spinboxes only appear for the selected option. Unrelated values (e.g. for box-mode) are not updated.
2021-06-05 07:37:09 +02:00
Flössie
b311b5b6d2 Validate EXIF UTF-8 strings (fixes #5923) 2020-10-03 10:18:23 +02:00
Flössie
79278875da Use snprintf() instead of sprintf() (#5907) 2020-09-15 14:56:57 +02:00
Ingo Weyrich
beb8fd8f74 Merge branch 'dev' into newlocallab2 2020-06-14 22:03:26 +02:00
Ingo Weyrich
41675913d6 Cleanups and also some speedups for RT 5.9, to be continued 2020-05-31 17:27:44 +02:00
Desmis
e573de78b4 merge with dev 2020-03-19 13:40:11 +01:00
Flössie
1069c890f5 Incorporate FreeBSD fix from @mandree (#5651) plus a little hardening 2020-02-14 11:44:57 +01:00
Ingo Weyrich
033d9fe02a Merge branch 'dev' into newlocallab 2019-11-04 23:01:33 +01:00
Ingo Weyrich
d731e172c2 Further reduction of include dependencies 2019-11-01 16:15:59 +01:00
Ingo Weyrich
cac2eb53ef Further reduction of include dependencies 2019-10-31 20:41:08 +01:00
Flössie
d7ec033829 Reduce dcp.h dependencies 2019-10-30 09:30:21 +01:00
Desmis
0711373021 Merge with dev 2019-09-11 08:35:25 +02:00
Morgan Hardwood
60b2196bce Updated gnu.org links to use HTTPS 2019-09-10 12:34:57 +02:00
Ingo Weyrich
b3e0013e56 Merge branch 'dev' into newlocallab 2019-08-08 16:18:58 +02:00
Ingo Weyrich
4101102ddf cppcheck: further fixes 2019-07-31 20:02:35 +02:00
Desmis
cbeb828609 merge with dev 2019-07-18 13:41:26 +02:00
Eric Jiang
789edc5bd3 Apply code-cleanup patch from @Floessie
See https://github.com/Beep6581/RawTherapee/pull/5325
2019-06-18 13:02:10 -07:00
Eric Jiang
a25655cafd Check that metadata rating is between 0 and 5
Does not handle Rating=-1 meaning Rejected yet.
2019-05-18 15:22:09 -07:00
Eric Jiang
820024972a Use rating from EXIF/XMP where available 2019-05-18 15:22:00 -07:00
lewiatan
105517c561 support rating tag from EXIF/XMP 2019-05-16 17:04:07 -07:00
Desmis
a23c9073b5 merge with dev 2019-04-02 10:56:34 +02:00
Morgan Hardwood
e23fc17ccf Search for DateTimeOriginal if not found in standard location
The DateTimeOriginal and DateTimeDigitized Exif tags should be in the
same group - ExifIFD, but the Leica M8 stores DateTimeOriginal in the
IFD0 group. This patch by Flössie allows to find the tag.
Closes #5251
2019-03-29 09:21:47 +01:00
heckflosse
020204e0cb Merge branch 'dev' into newlocallab 2019-03-12 14:57:17 +01:00
Flössie
86690f1ca0 Fix OOB string access (fixes #5207) 2019-03-11 21:09:57 +01:00
Floessie
17bec0a2e5 Merge pull request #5197 from Beep6581/relax-procparam-dependency
Relax dependency from `procparams.h`
2019-03-11 15:14:00 +01:00
Desmis
040e900c02 merge with dev 2019-03-11 10:08:54 +01:00
Flössie
c2405585cf Work around strange side effects when parsing Exif (#5207) 2019-03-10 14:56:36 +01:00
Flössie
9fe6bcaab1 Merge branch 'dev' into relax-procparam-dependency 2019-03-10 12:54:04 +01:00
Flössie
d89364fcc0 Fix Exif parsing for old Canons (ported by @Beep6581, fixes #4843) 2019-03-10 11:40:05 +01:00
Morgan Hardwood
2c9dc32022 Show more meaningful lens make/model #5157
If the lens make/model from the MakerNotes is vague, and if a lens make
and model are set in Exif (LensMake, LensModel), then prefer Exif over
vague.
2019-03-09 16:17:44 +01:00
Desmis
43bf1f6cd9 merge with dev 2019-03-08 16:22:52 +01:00
Flössie
ca3f84e94f Lens name improvements for Pentax by @Manuel-K (#5157) 2019-03-07 20:29:07 +01:00
Flössie
70475f781a Derive lens name from 0xA434 and 0xA433 if other means fail (#5157)
Implemented for
- Pentax
- Canon
- "Unknown"

Also constified `toString()` methods in `rtexif`.
2019-03-07 19:29:11 +01:00
Flössie
0cbc4923bc Relax dependency from procparams.h 2019-02-28 20:44:50 +01:00
Desmis
22323852a9 merge with dev 2019-02-21 10:37:15 +01:00
Flössie
e39726dbf7 Return first frame in FramesData on OOB access (#4830) 2019-02-20 20:55:07 +01:00
U-PC-BUREAU\jacques
333ac99532 merge with dev 2018-11-11 10:02:38 +01:00
U-PC-BUREAU\jacques
fd720007c2 merge with dev 2018-11-09 18:50:41 +01:00
heckflosse
58e26add76 Fallback to 'UniqueCameraModel' tag if model is 'Unknown' 2018-11-09 15:30:29 +01:00
George Hilliard
6cd50adc54 Revert "ImageData: Use terser emplace_back to add unique_ptr to vector"
This reverts commit b4813273d2.
2018-11-08 09:57:02 -06:00
George Hilliard
b4813273d2 ImageData: Use terser emplace_back to add unique_ptr to vector 2018-11-07 12:16:45 -06:00
George Hilliard
ec814dbf05 FramesData: Don't leak allocated frames, and remove unused functions
Valgrind report:

```
14,960 (11,544 direct, 3,416 indirect) bytes in 37 blocks are definitely lost in loss record 20,483 of 20,540
   at 0x4837DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
   by 0xC06963: rtengine::FramesData::FramesData(Glib::ustring const&, std::unique_ptr<rtengine::RawMetaDataLocation, std::default_delete<rtengine::RawMetaDataLocation> >, bool) (imagedata.cc:1121)
   by 0xBD774F: rtengine::DFManager::addFileInfo(Glib::ustring const&, bool) (dfmanager.cc:380)
   by 0xBD6E90: rtengine::DFManager::init(Glib::ustring) (dfmanager.cc:303)
   by 0xC3EC5D: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:93)
   by 0x897CABD: gomp_thread_start (team.c:120)
   by 0x89B7A9C: start_thread (in /usr/lib/libpthread-2.28.so)
   by 0x8ACCB22: clone (in /usr/lib/libc-2.28.so)
```
2018-11-02 03:07:07 -05:00
Desmis
948ab0baf4 merge with dev 2018-05-07 18:57:05 +02:00
Morgan Hardwood
fde0dccd6a Revised printf file format strings 2018-05-06 21:50:09 +02:00
Hombre
ec2181f7ff Fix #4532, Fix #4533 : Pentax HDR/PEF and 16/24 bits float support 2018-05-06 17:14:44 +02:00
Desmis
df6822178c merge with dev 2018-05-05 09:37:58 +02:00
heckflosse
4a1a10aab0 Pixel Shift: Improve motion mask and further changes 2018-04-14 01:11:01 +02:00
heckflosse
15794cc1ba First steps to extend dynamic profiles for Pixel Shift and HDR images 2018-04-05 14:41:02 +02:00