260 | 260 |
self._model.connect('page-changed', handler)
|
261 | 261 |
|
262 | 262 |
def update_toc(self, activity):
|
263 | |
return False
|
|
263 |
if self._validate_min_version(3, 5, 92):
|
|
264 |
# check version because does not work and crash with older evince
|
|
265 |
doc = self._model.get_document()
|
|
266 |
if not doc.has_document_links():
|
|
267 |
logging.error('The pdf file does not have a index')
|
|
268 |
return False
|
|
269 |
else:
|
|
270 |
self._job_links = EvinceView.JobLinks.new(document=doc)
|
|
271 |
self._job_links.connect('finished', self.__index_loaded_cb,
|
|
272 |
activity)
|
|
273 |
EvinceView.Job.scheduler_push_job(self._job_links,
|
|
274 |
EvinceView.JobPriority.PRIORITY_NONE)
|
|
275 |
return True
|
|
276 |
else:
|
|
277 |
return False
|
|
278 |
|
|
279 |
def handle_link(self, link):
|
|
280 |
self._view.handle_link(link)
|
|
281 |
|
|
282 |
def _validate_min_version(self, major, minor, micro):
|
264 | 283 |
"""
|
265 | |
Commented because does not work and crash with old evince
|
266 | |
doc = self._model.get_document()
|
267 | |
if not doc.has_document_links():
|
268 | |
logging.error('The pdf file does not have a index')
|
|
284 |
Check if Evince version is at major or equal than the requested
|
|
285 |
"""
|
|
286 |
return EvinceDocument.MAJOR_VERSION >= major and \
|
|
287 |
EvinceDocument.MINOR_VERSION >= minor and \
|
|
288 |
EvinceDocument.MICRO_VERSION >= micro
|
|
289 |
|
|
290 |
def __index_loaded_cb(self, job, activity):
|
|
291 |
self._index_model = job.get_model()
|
|
292 |
if job.get_model() is None:
|
269 | 293 |
return False
|
270 | |
else:
|
271 | |
self._job_links = EvinceView.JobLinks.new(document=doc)
|
272 | |
self._job_links.connect('finished', self.__index_loaded_cb,
|
273 | |
activity)
|
274 | |
EvinceView.Job.scheduler_push_job(self._job_links,
|
275 | |
EvinceView.JobPriority.PRIORITY_NONE)
|
276 | |
"""
|
277 | |
|
278 | |
def __index_loaded_cb(self, job, activity):
|
279 | |
logging.error('__index_loaded_cb %s %s', job.__class__, dir(job))
|
280 | |
logging.error('job.succeeded %s', job.succeeded())
|
281 | |
logging.error('job.is_finished %s', job.is_finished())
|
282 | |
|
283 | |
self._index_model = job.model
|
284 | |
|
285 | |
logging.error('index_model loaded %s', job.model.__class__)
|
286 | |
if job.model is None:
|
287 | |
return False
|
288 | |
"""
|
289 | |
_iter = job.model.get_iter_first()
|
|
294 |
|
|
295 |
activity.show_navigator_button()
|
|
296 |
activity.set_navigator_model(self._index_model)
|
|
297 |
return True
|
|
298 |
|
|
299 |
def get_current_link(self):
|
|
300 |
_iter = self._index_model.get_iter_first()
|
|
301 |
link_found = ""
|
|
302 |
current_page = self._model.props.page
|
290 | 303 |
while True:
|
291 | |
value = job.model.get_value(_iter, 0)
|
292 | |
logging.error('value %s', value)
|
293 | |
_iter = job.model.iter_next(_iter)
|
294 | |
if _iter is None:
|
|
304 |
value = self._index_model.get_value(_iter, 0)
|
|
305 |
link = self._index_model.get_value(_iter, 1)
|
|
306 |
if self._document.get_link_page(link) > current_page:
|
295 | 307 |
break
|
296 | |
"""
|
297 | |
|
298 | |
activity.show_navigator_button()
|
299 | |
activity.set_navigator_model(self._epub.get_links_model())
|
300 | |
return True
|
|
308 |
else:
|
|
309 |
link_found = link
|
|
310 |
_iter = self._index_model.iter_next(_iter)
|
|
311 |
if _iter is None:
|
|
312 |
break
|
|
313 |
return link_found
|
|
314 |
|
|
315 |
def get_link_iter(self, link):
|
|
316 |
_iter = self._index_model.get_iter_first()
|
|
317 |
while True:
|
|
318 |
value = self._index_model.get_value(_iter, 1)
|
|
319 |
if value == link:
|
|
320 |
break
|
|
321 |
else:
|
|
322 |
_iter = self._index_model.iter_next(_iter)
|
|
323 |
if _iter is None:
|
|
324 |
break
|
|
325 |
return _iter
|
301 | 326 |
|
302 | 327 |
def find_set_highlight_search(self, set_highlight_search):
|
303 | 328 |
self._view.find_set_highlight_search(set_highlight_search)
|