Skip to content

Collection / Directory Reloading #105

@IonoclastBrigham

Description

@IonoclastBrigham

Sometimes, a collection will change on disk while browsing through it with Ivy, e.g. you import your camera contents while browsing through your raw photo dump directory, or you delete some duplicates. It is desirable for the collection to be reloaded without having to go through the hassle of re-selecting all relevant directories and files from one or more system file dialogs.

Logic Rules and Behaviors

When reloading the current collection Ivy MUST...

  • remember how a file came to be in the collection (i.e. as part of a directory vs. individually selected)
  • add/remove any added/removed files in opened directories
  • remove any removed files that were previously explicitly added to the collection

If possible and practical, Ivy SHOULD...

  • maintain stable ordering for unchanged files, relative to each other
  • try to remember the currently-viewed file, and land there again after the collection is rebuilt
  • reload the current file, if it has changed (i.e. external editor, or as a result of file-moving/renaming)
  • update the collection automatically

UX

This feature could be completely manual, triggered on-demand by one or more of a menu item, a toolbar button, and an accelerator key combo. This would be a reasonable enough choice as the user should know when they've made changes to their image collections on disk, but the real value-add is automating the whole thing.

One could periodically poll for changes, but for very large directories this doesn't scale very nicely. The better alternative would be to "watch" the appropriate files and directories, and react to changes in an event-driven manner.

A quick search did not reveal a racket-native (or via FFI) solution that works across platforms, but further research may lead to a suitable open source solution.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions