mirror of
git://github.com/kovidgoyal/calibre.git
synced 2026-05-09 06:53:25 +02:00
Pass the new ID URL patterns to devices while maintaining compatibility with the old interface.
This commit is contained in:
parent
e5c7274ba7
commit
ee942b9506
3 changed files with 20 additions and 2 deletions
|
|
@ -597,6 +597,7 @@ def specialize_global_preferences(self, device_prefs):
|
|||
'''
|
||||
device_prefs.set_overrides()
|
||||
|
||||
# A driver should implement at most one of the set_library_info methods
|
||||
def set_library_info(self, library_name, library_uuid, field_metadata):
|
||||
'''
|
||||
Implement this method if you want information about the current calibre
|
||||
|
|
@ -605,6 +606,15 @@ def set_library_info(self, library_name, library_uuid, field_metadata):
|
|||
'''
|
||||
pass
|
||||
|
||||
def set_library_info_extended(self, library_name, library_uuid, field_metadata, other_info):
|
||||
'''
|
||||
Implement this method if you want information about the current calibre
|
||||
library. This method is called at startup and when the calibre library
|
||||
changes while connected. The fourth parameter of this method is a dict
|
||||
of other information, currently containing only the identifier patterns
|
||||
'''
|
||||
pass
|
||||
|
||||
# Dynamic control interface.
|
||||
# The following methods are probably called on the GUI thread. Any driver
|
||||
# that implements these methods must take pains to be thread safe, because
|
||||
|
|
|
|||
|
|
@ -1563,13 +1563,14 @@ def set_plugboards(self, plugboards, pb_func):
|
|||
self.plugboard_func = pb_func
|
||||
|
||||
@synchronous('sync_lock')
|
||||
def set_library_info(self, library_name, library_uuid, field_metadata):
|
||||
def set_library_info_extended(self, library_name, library_uuid, field_metadata, other_info):
|
||||
self._debug(library_name, library_uuid)
|
||||
if self.can_accept_library_info:
|
||||
self._call_client('SET_LIBRARY_INFO',
|
||||
{'libraryName' : library_name,
|
||||
'libraryUuid': library_uuid,
|
||||
'fieldMetadata': field_metadata.all_metadata()},
|
||||
'fieldMetadata': field_metadata.all_metadata(),
|
||||
'otherInfo': other_info},
|
||||
print_debug_info=True)
|
||||
|
||||
@synchronous('sync_lock')
|
||||
|
|
|
|||
|
|
@ -477,8 +477,15 @@ def get_device_information(self, done, add_as_step_to_job=None):
|
|||
|
||||
def _set_library_information(self, library_name, library_uuid, field_metadata):
|
||||
'''Give the device the current library information'''
|
||||
# Try both the new and the old API. This helps with device drivers that
|
||||
# are user-installed plugins built around the old Interface class
|
||||
self.device.set_library_info(library_name, library_uuid, field_metadata)
|
||||
|
||||
other_info = {}
|
||||
from calibre.ebooks.metadata.sources.prefs import msprefs
|
||||
other_info['id_link_rules'] = msprefs.get('id_link_rules', {})
|
||||
self.device.set_library_info_extended(library_name, library_uuid, field_metadata, other_info)
|
||||
|
||||
def set_library_information(self, done, library_name, library_uuid,
|
||||
field_metadata, add_as_step_to_job=None):
|
||||
'''Give the device the current library information'''
|
||||
|
|
|
|||
Loading…
Reference in a new issue