From 687b340b1c7a0e9ccfc7c30b116ee09a52c00bb0 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Mon, 23 Jan 2023 19:22:59 +0000 Subject: [PATCH] Enhancement #2003712: URL scheme: 'virtual_library' for show-book. I will update the documentation in a later commit. --- src/calibre/gui2/ui.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index c545397146..ec6975259b 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -675,6 +675,16 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ return bytes.fromhex(x[6:]).decode('utf-8') 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': library_id = decode_library_id(posixpath.basename(path)) 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) if library_path is None: return + vl = get_virtual_library(query) def doit(): + if vl != '_': + self.apply_virtual_library(vl) rows = self.library_view.select_rows((book_id,)) db = self.current_db 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: sq = sq[0] sq = sq or '' - 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 + vl = get_virtual_library(query) def doit(): if vl != '_':