mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04: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
@ -597,6 +597,7 @@ class DevicePlugin(Plugin):
|
||||
'''
|
||||
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 @@ class DevicePlugin(Plugin):
|
||||
'''
|
||||
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 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
||||
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 @@ class DeviceManager(Thread): # {{{
|
||||
|
||||
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…
x
Reference in New Issue
Block a user