Enhancement #2003712: URL scheme: 'virtual_library' for show-book.

I will update the documentation in a later commit.
This commit is contained in:
Charles Haley 2023-01-23 19:22:59 +00:00
parent 7aec1cda0d
commit 687b340b1c

View File

@ -675,6 +675,16 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
return bytes.fromhex(x[6:]).decode('utf-8') return bytes.fromhex(x[6:]).decode('utf-8')
return x return x
def get_virtual_library(query):
vl = None
if query.get('encoded_virtual_library'):
vl = bytes.fromhex(query.get('encoded_virtual_library')[0]).decode('utf-8')
elif query.get('virtual_library'):
vl = query.get('virtual_library')[0]
if vl == '-':
vl = None
return vl
if action == 'switch-library': if action == 'switch-library':
library_id = decode_library_id(posixpath.basename(path)) library_id = decode_library_id(posixpath.basename(path))
library_path = self.library_broker.path_for_library_id(library_id) library_path = self.library_broker.path_for_library_id(library_id)
@ -694,8 +704,11 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
library_path = self.library_broker.path_for_library_id(library_id) library_path = self.library_broker.path_for_library_id(library_id)
if library_path is None: if library_path is None:
return return
vl = get_virtual_library(query)
def doit(): def doit():
if vl != '_':
self.apply_virtual_library(vl)
rows = self.library_view.select_rows((book_id,)) rows = self.library_view.select_rows((book_id,))
db = self.current_db db = self.current_db
if not rows and (db.data.get_base_restriction_name() or db.data.get_search_restriction_name()): if not rows and (db.data.get_base_restriction_name() or db.data.get_search_restriction_name()):
@ -743,13 +756,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
if sq: if sq:
sq = sq[0] sq = sq[0]
sq = sq or '' sq = sq or ''
vl = None vl = get_virtual_library(query)
if query.get('encoded_virtual_library'):
vl = bytes.fromhex(query.get('encoded_virtual_library')[0]).decode('utf-8')
elif query.get('virtual_library'):
vl = query.get('virtual_library')[0]
if vl == '-':
vl = None
def doit(): def doit():
if vl != '_': if vl != '_':