%PDF- %PDF-
Direktori : /lib/calibre/calibre/gui2/ |
Current File : //lib/calibre/calibre/gui2/changes.py |
#!/usr/bin/env python3 # License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net> from calibre.srv.changes import ( BooksAdded, BooksDeleted, FormatsAdded, FormatsRemoved, MetadataChanged, SavedSearchesChanged ) def handle_changes(changes, gui=None): if not changes: return if gui is None: from calibre.gui2.ui import get_gui gui = get_gui() if gui is None: return refresh_ids = set() added, removed = set(), set() ss_changed = False for change in changes: if isinstance(change, (FormatsAdded, FormatsRemoved, MetadataChanged)): refresh_ids |= change.book_ids elif isinstance(change, BooksAdded): added |= change.book_ids elif isinstance(change, BooksDeleted): removed |= change.book_ids elif isinstance(change, SavedSearchesChanged): ss_changed = True if added and removed: gui.refresh_all() return refresh_ids -= added | removed orig = gui.tags_view.disable_recounting, gui.disable_cover_browser_refresh gui.tags_view.disable_recounting = gui.disable_cover_browser_refresh = True position_based_recount = True try: if added: gui.current_db.data.books_added(added) gui.iactions['Add Books'].refresh_gui(len(added), recount=False) position_based_recount = False if removed: next_id = gui.current_view().next_id m = gui.library_view.model() m.ids_deleted(removed) gui.iactions['Remove Books'].library_ids_deleted2(removed, next_id=next_id) if refresh_ids: gui.iactions['Edit Metadata'].refresh_books_after_metadata_edit(refresh_ids) if ss_changed: gui.saved_searches_changed(recount=False) gui.tags_view.disable_recounting = gui.disable_cover_browser_refresh = False (gui.tags_view.recount_with_position_based_index if position_based_recount else gui.tags_view.recount)() gui.refresh_cover_browser() finally: gui.tags_view.disable_recounting, gui.disable_cover_browser_refresh = orig