mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make currently selected text available to the overlay
This commit is contained in:
parent
b480086d00
commit
5503ad9d12
@ -264,6 +264,7 @@ class IframeBoss:
|
|||||||
|
|
||||||
def get_current_cfi(self, data):
|
def get_current_cfi(self, data):
|
||||||
cfi = at_current()
|
cfi = at_current()
|
||||||
|
selected_text = window.getSelection().toString()
|
||||||
if cfi:
|
if cfi:
|
||||||
spine = self.book.manifest.spine
|
spine = self.book.manifest.spine
|
||||||
current_name = current_spine_item().name
|
current_name = current_spine_item().name
|
||||||
@ -272,9 +273,10 @@ class IframeBoss:
|
|||||||
cfi = 'epubcfi(/{}{})'.format(2*(index+1), cfi)
|
cfi = 'epubcfi(/{}{})'.format(2*(index+1), cfi)
|
||||||
self.send_message(
|
self.send_message(
|
||||||
'report_cfi', cfi=cfi, progress_frac=self.calculate_progress_frac(current_name, index),
|
'report_cfi', cfi=cfi, progress_frac=self.calculate_progress_frac(current_name, index),
|
||||||
file_progress_frac=progress_frac(), request_id=data.request_id)
|
file_progress_frac=progress_frac(), request_id=data.request_id, selected_text=selected_text)
|
||||||
return
|
return
|
||||||
self.send_message('report_cfi', cfi=None, progress_frac=0, file_progress_frac=0)
|
self.send_message(
|
||||||
|
'report_cfi', cfi=None, progress_frac=0, file_progress_frac=0, selected_text=selected_text, request_id=data.request_id)
|
||||||
|
|
||||||
def update_cfi(self):
|
def update_cfi(self):
|
||||||
cfi = at_current()
|
cfi = at_current()
|
||||||
@ -286,8 +288,11 @@ class IframeBoss:
|
|||||||
cfi = 'epubcfi(/{}{})'.format(2*(index+1), cfi)
|
cfi = 'epubcfi(/{}{})'.format(2*(index+1), cfi)
|
||||||
if cfi is not self.last_cfi:
|
if cfi is not self.last_cfi:
|
||||||
self.last_cfi = cfi
|
self.last_cfi = cfi
|
||||||
self.send_message('update_cfi', cfi=cfi, replace_history=self.replace_history_on_next_cfi_update,
|
selected_text = window.getSelection().toString()
|
||||||
progress_frac=self.calculate_progress_frac(current_name, index), file_progress_frac=progress_frac())
|
self.send_message(
|
||||||
|
'update_cfi', cfi=cfi, replace_history=self.replace_history_on_next_cfi_update,
|
||||||
|
progress_frac=self.calculate_progress_frac(current_name, index),
|
||||||
|
file_progress_frac=progress_frac(), selected_text=selected_text)
|
||||||
self.replace_history_on_next_cfi_update = True
|
self.replace_history_on_next_cfi_update = True
|
||||||
|
|
||||||
def update_toc_position(self):
|
def update_toc_position(self):
|
||||||
|
@ -259,7 +259,7 @@ class View:
|
|||||||
|
|
||||||
def do_show_chrome(self, request_id, cfi_data):
|
def do_show_chrome(self, request_id, cfi_data):
|
||||||
self.hide_overlays()
|
self.hide_overlays()
|
||||||
self.on_update_cfi(cfi_data)
|
self.update_cfi_data(cfi_data)
|
||||||
self.overlay.show()
|
self.overlay.show()
|
||||||
|
|
||||||
def show_search(self):
|
def show_search(self):
|
||||||
@ -511,10 +511,30 @@ class View:
|
|||||||
self.report_cfi_callbacks[request_id] = callback
|
self.report_cfi_callbacks[request_id] = callback
|
||||||
self.iframe_wrapper.send_message('get_current_cfi', request_id=request_id)
|
self.iframe_wrapper.send_message('get_current_cfi', request_id=request_id)
|
||||||
|
|
||||||
|
def update_cfi_data(self, data):
|
||||||
|
self.currently_showing.bookpos = data.cfi
|
||||||
|
self.currently_showing.selected_text = data.selected_text
|
||||||
|
username = get_interface_data().username
|
||||||
|
unkey = username_key(username)
|
||||||
|
if not self.book.last_read_position:
|
||||||
|
self.book.last_read_position = {}
|
||||||
|
self.book.last_read_position[unkey] = data.cfi
|
||||||
|
self.current_progress_frac = data.progress_frac
|
||||||
|
self.current_file_progress_frac = data.file_progress_frac
|
||||||
|
self.update_header_footer()
|
||||||
|
if ui_operations.update_last_read_time:
|
||||||
|
ui_operations.update_last_read_time(self.book)
|
||||||
|
return username
|
||||||
|
|
||||||
def on_report_cfi(self, data):
|
def on_report_cfi(self, data):
|
||||||
cb = self.report_cfi_callbacks[data.request_id]
|
cb = self.report_cfi_callbacks[data.request_id]
|
||||||
if cb:
|
if cb:
|
||||||
cb(data.request_id, {'cfi': data.cfi, 'progress_frac': data.progress_frac, 'file_progress_frac': data.file_progress_frac})
|
cb(data.request_id, {
|
||||||
|
'cfi': data.cfi,
|
||||||
|
'progress_frac': data.progress_frac,
|
||||||
|
'file_progress_frac': data.file_progress_frac,
|
||||||
|
'selected_text': data.selected_text,
|
||||||
|
})
|
||||||
v'delete self.report_cfi_callbacks[data.request_id]'
|
v'delete self.report_cfi_callbacks[data.request_id]'
|
||||||
|
|
||||||
def on_update_cfi(self, data):
|
def on_update_cfi(self, data):
|
||||||
@ -526,21 +546,11 @@ class View:
|
|||||||
# type anything into text boxes.
|
# type anything into text boxes.
|
||||||
# See https://bugs.chromium.org/p/chromium/issues/detail?id=404315
|
# See https://bugs.chromium.org/p/chromium/issues/detail?id=404315
|
||||||
return
|
return
|
||||||
self.currently_showing.bookpos = data.cfi
|
|
||||||
ui_operations.update_url_state(data.replace_history)
|
ui_operations.update_url_state(data.replace_history)
|
||||||
username = get_interface_data().username
|
username = self.update_cfi_data(data)
|
||||||
unkey = username_key(username)
|
|
||||||
if not self.book.last_read_position:
|
|
||||||
self.book.last_read_position = {}
|
|
||||||
self.book.last_read_position[unkey] = data.cfi
|
|
||||||
if ui_operations.update_last_read_time:
|
|
||||||
ui_operations.update_last_read_time(self.book)
|
|
||||||
lrd = {'device':get_device_uuid(), 'cfi':data.cfi, 'pos_frac':data.progress_frac}
|
|
||||||
self.current_progress_frac = data.progress_frac
|
|
||||||
self.current_file_progress_frac = data.file_progress_frac
|
|
||||||
self.update_header_footer()
|
|
||||||
key = self.book.key
|
|
||||||
if username:
|
if username:
|
||||||
|
key = self.book.key
|
||||||
|
lrd = {'device':get_device_uuid(), 'cfi':data.cfi, 'pos_frac':data.progress_frac}
|
||||||
ajax_send('book-set-last-read-position/{library_id}/{book_id}/{fmt}'.format(
|
ajax_send('book-set-last-read-position/{library_id}/{book_id}/{fmt}'.format(
|
||||||
library_id=key[0], book_id=key[1], fmt=key[2]), lrd, def(end_type, xhr, ev):
|
library_id=key[0], book_id=key[1], fmt=key[2]), lrd, def(end_type, xhr, ev):
|
||||||
if end_type is not 'load':
|
if end_type is not 'load':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user