I am considering adding a new variant of search restriction and would appreciate comments on the idea.
A common need I have is to operate on subsets of my library as "virtual libraries". For example, I want to look at "unread" books as a virtual library, having all operations such as searches see only these books. This is why I originally added search restrictions to calibre way-back-when.
However, from time to time I want to apply a restriction on the virtual library, for example to operate on a particular genre of unread books. Restrictions can to this as well, but it is a bother to create the search (current_restriction AND #genre:foo) and then apply it as the current restriction. Also, some plugins use restrictions, and because they change the restriction it is hard to get them to operate on a restricted set of books.
The new feature I am considering might be called a "base restriction". You would set this restriction somehow, and from that point it would be automatically ANDed with any temporary search restriction entered in the current restriction box. The net effect would be to move the idea of "virtual library" a bit further down into calibre, permitting you to set it then use all of calibre including restrictions without worrying about whether you are still seeing only the virtual library.
The questions:
1) Am I the only one who has this need? If very few people have the need then it is not worth adding visible complexity to calibre to support it.
2) Would it be acceptable to set the "base restriction" in preferences -> behavior, near where the startup restriction is set? I am very leery of taking screen real estate for what is a rather esoteric capability.
3) Should the setting be persistent, surviving calibre restarts? I don't need this, but ...
4) How should the GUI show that a base restriction has been set? Is using the current coloring of the "(N of M)" information sufficient? (It is for me.)
5) Any other comments?
EDIT: The feature has been added and a beta is available. See
this post for the beta.
Post 12 provides an overview of what it looks like.