Skip to content

Rolls: folder and virtual rolls, Roll Settings dialog, New Roll workflow - #1109

Draft
PabloRuizCuevas wants to merge 1 commit into
marcinz606:mainfrom
PabloRuizCuevas:feat/pr-rolls-and-roll-settings
Draft

PabloRuizCuevas wants to merge 1 commit into
marcinz606:mainfrom
PabloRuizCuevas:feat/pr-rolls-and-roll-settings

Conversation

@PabloRuizCuevas

Copy link
Copy Markdown
Contributor

Summary

Rolls become the library's organizing concept, with a dialog to tag metadata across a batch and a settings-driven toolbar to match.

  • Roll Settings dialog: tag gear, capture, place, process and scanning metadata for the current frame, a selection, or a whole roll in one dialog, with a Load-preset flow to fill and tick fields.
  • Folder rolls and virtual rolls: a folder you import becomes a roll automatically; Save as Roll… turns any loaded batch (not necessarily from one folder) into a reopenable virtual roll. Rolls, not folders, are now the library's primary listing, with bulk-delete and a live frame count per roll.
  • New Roll workflow: starts with a fresh film strip to drag files into; moved off the toolbar onto the Film Strip section's own header menu once it was clear it didn't belong in the main action row.
  • Toolbar reorganization: no more top-level toolbar — actions live in the row of the section they act on (Library's own corner row, or the Film Strip row next to the loaded frames).

Maintainer feedback addressed

The folder-roll (green) and virtual-roll (blue) icon colors collided with meanings those colors already carry elsewhere in the app (RGB channel indicators, the Slide process-mode chip). Folder rolls now use the same amber as the C-41 process chip; virtual rolls use a coral red, distinct from both the accent and error tokens. The library tree's left-side icon indentation (a leftover branch/twisty gutter with nothing to show, since every roll is a flat top-level item) is also removed.

Testing

make all (ruff check/format, full pytest) passes with only one known unrelated failure (test_load_tooltip_follows_a_rebinding, a macOS key-symbol rendering difference, pre-existing on main).

🤖 Generated with Claude Code

… workflow

Rolls (negpy/services/assets/rolls.py) replace folders as the library's
primary listing: importing a folder recognizes it as a roll; Save as
Roll… turns any loaded batch into a reopenable virtual roll, not
necessarily from one folder. The Library tree lists every roll flat,
color-coded (folder amber, virtual coral, no left-side twisty gutter),
with Rename…, bulk Delete…, and an opt-in "rename the folder on disk"
checkbox that rehomes every loaded path when the renamed roll is the
active one.

Roll Settings dialog tags gear, capture, place, process and scanning
metadata for the current frame, a selection, or the whole roll in one
dialog, with a Load-preset flow to fill and tick fields.

New Roll moves off the toolbar onto the Film Strip section's own
header menu (CollapsibleSection.set_actions_menu), next to Reset Roll
to Defaults — a roll-wide reset (reused _asset_defaults, one frame's
worth of logic applied to every visible one) with its own confirm
dialog. The top-level toolbar is gone: actions live in the row of the
section they act on, Library's own corner row or the Film Strip row
next to the loaded frames. restore_session now recognizes the active
roll on restart too, the same "only when unambiguous" rule an
already-open multi-folder session uses.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant