Badge composite frames on the film strip - #817
Merged
Merged
Conversation
A stitched composite, a merged bracket, an RGB triplet and a half-frame split all looked identical to a plain frame on the contact sheet — the thumbnail grid paints the pixmap only, and the name that carries "(HDR)" or "(Stitch)" is never drawn. The right-click menu was the only way to find out what a frame was. Add a top-left badge, one glyph per kind, plus a tooltip line naming the frame count. The chip is neutral grey rather than the triage red: red already means "you marked this" and "this failed", and what a frame is built from is a fact about the asset, not a state the user set. composite_kind() tests stitch before rgb on purpose — a stitch of triplets also carries the primary part's green/blue pair, so the reverse order badges it as a triplet.
Preference, not a fix. Bottom-left is still free of the other marks, so each corner keeps owning exactly one meaning, and the badge stays clear of the keeper/reject check at both ends of the thumbnail-size slider.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
NegPy builds one frame from several files four ways — RGB triplet, stitch, HDR merge, and the reverse, the half-frame split. None of it shows on the contact sheet. The thumbnail grid paints the pixmap and nothing else, and the display name that carries
(HDR)/(Stitch)/[1]is never drawn. So a merged frame looked exactly like a plain one, and the right-click menu was the only way to find out.What
A badge in the bottom-left corner of the thumbnail, one glyph per kind:
Plus a tooltip line with the count: HDR merge of 5 exposures, Stitched composite of 3 frames.
The chip is neutral grey, not the triage red. Red already means "you marked this" (bottom-right keeper/reject) and "this failed" (top-right decode error) in this delegate; what a frame is built from is a fact about the asset, not a state the user set. Each corner now owns exactly one meaning, and bottom-left stays clear of the keeper check at both ends of the thumbnail-size slider.
The one non-obvious bit
composite_kind()tests stitch before rgb. A stitch built from triplets also carries the primary part'sgreen_path/blue_path—_on_stitch_registeredcopies them so thumbnail decode can find them — so the reverse order badges a stitch as a triplet. There is a test pinning this.Changes
negpy/desktop/session.py—composite_kind()/composite_summary()next to the other asset-dict readers;AssetListModel.dataappends the summary toToolTipRole. Failure tooltips untouched.negpy/desktop/view/sidebar/files.py—_draw_composite_badge()beside the two existing badge painters, same r=9 / inset-4 geometry. Called on the normal paint path and on the failed-decode placeholder card, so a composite whose part went missing still says what it is.docs/USER_GUIDE.md— a "Reading the badges" table under Triage covering all four corners and all four glyphs, plus a clause in the RGB Scan, Half Frame, Stitching and Merging sections.docs/PIPELINE.md— unchanged, no pixels move.Tests
12 new cases in
tests/test_file_browser_widget.py(nothing touched the delegate before):composite_kindper asset shape, the stitch-of-triplets precedence case, the summary strings, the tooltip through the real model, and paint checks that each kind marks the bottom-left corner and that no two kinds draw the same glyph.Verification
make lint,make type,make test: pass. One failure,test_stitch.py::test_stitch_real_rgb_triplet_samples— aPreviewManager.load_linear_preview_rgb()signature mismatch that fails identically on a cleanmain. Pre-existing, unrelated, not fixed here.make runsession against real stitched/merged frames.